From c776c41f115ce88bbb402eb8b8c155599b6830e2 Mon Sep 17 00:00:00 2001 From: Thomas Boerger Date: Thu, 29 Dec 2016 16:22:54 +0100 Subject: [PATCH] Dropped vendor libraries from public folder --- .../css/font-awesome.min.css | 4 - .../font-awesome-4.6.3/fonts/FontAwesome.otf | Bin 124988 -> 0 bytes .../fonts/fontawesome-webfont.eot | Bin 76518 -> 0 bytes .../fonts/fontawesome-webfont.svg | 685 - .../fonts/fontawesome-webfont.ttf | Bin 152796 -> 0 bytes .../fonts/fontawesome-webfont.woff | Bin 90412 -> 0 bytes .../fonts/fontawesome-webfont.woff2 | Bin 71896 -> 0 bytes public/assets/octicons-4.3.0/octicons.eot | Bin 44098 -> 0 bytes public/assets/octicons-4.3.0/octicons.min.css | 1 - public/assets/octicons-4.3.0/octicons.svg | 429 - public/assets/octicons-4.3.0/octicons.ttf | Bin 43920 -> 0 bytes public/assets/octicons-4.3.0/octicons.woff | Bin 24004 -> 0 bytes public/assets/octicons-4.3.0/octicons.woff2 | Bin 20248 -> 0 bytes public/css/semantic-2.2.1.min.css | 11 - public/img/emoji/+1.png | Bin 5075 -> 0 bytes public/img/emoji/-1.png | Bin 5070 -> 0 bytes public/img/emoji/100.png | Bin 3251 -> 0 bytes public/img/emoji/1234.png | Bin 4751 -> 0 bytes public/img/emoji/8ball.png | Bin 4141 -> 0 bytes public/img/emoji/a.png | Bin 3154 -> 0 bytes public/img/emoji/ab.png | Bin 3859 -> 0 bytes public/img/emoji/abc.png | Bin 4247 -> 0 bytes public/img/emoji/abcd.png | Bin 4471 -> 0 bytes public/img/emoji/accept.png | Bin 4729 -> 0 bytes public/img/emoji/aerial_tramway.png | Bin 3489 -> 0 bytes public/img/emoji/airplane.png | Bin 4740 -> 0 bytes public/img/emoji/alarm_clock.png | Bin 7062 -> 0 bytes public/img/emoji/alien.png | Bin 5457 -> 0 bytes public/img/emoji/ambulance.png | Bin 3708 -> 0 bytes public/img/emoji/anchor.png | Bin 4479 -> 0 bytes public/img/emoji/angel.png | Bin 6672 -> 0 bytes public/img/emoji/anger.png | Bin 3079 -> 0 bytes public/img/emoji/angry.png | Bin 5037 -> 0 bytes public/img/emoji/anguished.png | Bin 5091 -> 0 bytes public/img/emoji/ant.png | Bin 2851 -> 0 bytes public/img/emoji/apple.png | Bin 5630 -> 0 bytes public/img/emoji/aquarius.png | Bin 5096 -> 0 bytes public/img/emoji/aries.png | Bin 4343 -> 0 bytes public/img/emoji/arrow_backward.png | Bin 3180 -> 0 bytes public/img/emoji/arrow_double_down.png | Bin 3179 -> 0 bytes public/img/emoji/arrow_double_up.png | Bin 3611 -> 0 bytes public/img/emoji/arrow_down.png | Bin 3006 -> 0 bytes public/img/emoji/arrow_down_small.png | Bin 2889 -> 0 bytes public/img/emoji/arrow_forward.png | Bin 3201 -> 0 bytes public/img/emoji/arrow_heading_down.png | Bin 3521 -> 0 bytes public/img/emoji/arrow_heading_up.png | Bin 3520 -> 0 bytes public/img/emoji/arrow_left.png | Bin 3041 -> 0 bytes public/img/emoji/arrow_lower_left.png | Bin 3342 -> 0 bytes public/img/emoji/arrow_lower_right.png | Bin 3334 -> 0 bytes public/img/emoji/arrow_right.png | Bin 3022 -> 0 bytes public/img/emoji/arrow_right_hook.png | Bin 3712 -> 0 bytes public/img/emoji/arrow_up.png | Bin 3073 -> 0 bytes public/img/emoji/arrow_up_down.png | Bin 3542 -> 0 bytes public/img/emoji/arrow_up_small.png | Bin 3185 -> 0 bytes public/img/emoji/arrow_upper_left.png | Bin 3227 -> 0 bytes public/img/emoji/arrow_upper_right.png | Bin 3235 -> 0 bytes public/img/emoji/arrows_clockwise.png | Bin 1399 -> 0 bytes public/img/emoji/arrows_counterclockwise.png | Bin 4816 -> 0 bytes public/img/emoji/art.png | Bin 6744 -> 0 bytes public/img/emoji/articulated_lorry.png | Bin 2938 -> 0 bytes public/img/emoji/astonished.png | Bin 6043 -> 0 bytes public/img/emoji/atm.png | Bin 4072 -> 0 bytes public/img/emoji/b.png | Bin 3025 -> 0 bytes public/img/emoji/baby.png | Bin 5921 -> 0 bytes public/img/emoji/baby_bottle.png | Bin 4461 -> 0 bytes public/img/emoji/baby_chick.png | Bin 3961 -> 0 bytes public/img/emoji/baby_symbol.png | Bin 2967 -> 0 bytes public/img/emoji/back.png | Bin 4061 -> 0 bytes public/img/emoji/baggage_claim.png | Bin 3502 -> 0 bytes public/img/emoji/balloon.png | Bin 2300 -> 0 bytes public/img/emoji/ballot_box_with_check.png | Bin 1829 -> 0 bytes public/img/emoji/bamboo.png | Bin 4672 -> 0 bytes public/img/emoji/banana.png | Bin 3915 -> 0 bytes public/img/emoji/bangbang.png | Bin 1387 -> 0 bytes public/img/emoji/bank.png | Bin 5583 -> 0 bytes public/img/emoji/bar_chart.png | Bin 2449 -> 0 bytes public/img/emoji/barber.png | Bin 4252 -> 0 bytes public/img/emoji/baseball.png | Bin 6032 -> 0 bytes public/img/emoji/basketball.png | Bin 6386 -> 0 bytes public/img/emoji/bath.png | Bin 3210 -> 0 bytes public/img/emoji/bathtub.png | Bin 2784 -> 0 bytes public/img/emoji/battery.png | Bin 3812 -> 0 bytes public/img/emoji/bear.png | Bin 5561 -> 0 bytes public/img/emoji/bee.png | Bin 5851 -> 0 bytes public/img/emoji/beer.png | Bin 6097 -> 0 bytes public/img/emoji/beers.png | Bin 6591 -> 0 bytes public/img/emoji/beetle.png | Bin 5255 -> 0 bytes public/img/emoji/beginner.png | Bin 2761 -> 0 bytes public/img/emoji/bell.png | Bin 4859 -> 0 bytes public/img/emoji/bento.png | Bin 5730 -> 0 bytes public/img/emoji/bicyclist.png | Bin 6472 -> 0 bytes public/img/emoji/bike.png | Bin 4722 -> 0 bytes public/img/emoji/bikini.png | Bin 3890 -> 0 bytes public/img/emoji/bird.png | Bin 4878 -> 0 bytes public/img/emoji/birthday.png | Bin 5404 -> 0 bytes public/img/emoji/black_circle.png | Bin 2369 -> 0 bytes public/img/emoji/black_joker.png | Bin 3877 -> 0 bytes .../img/emoji/black_medium_small_square.png | Bin 3258 -> 0 bytes public/img/emoji/black_medium_square.png | Bin 3622 -> 0 bytes public/img/emoji/black_nib.png | Bin 2352 -> 0 bytes public/img/emoji/black_small_square.png | Bin 3061 -> 0 bytes public/img/emoji/black_square.png | Bin 1332 -> 0 bytes public/img/emoji/black_square_button.png | Bin 1337 -> 0 bytes public/img/emoji/blossom.png | Bin 4232 -> 0 bytes public/img/emoji/blowfish.png | Bin 3737 -> 0 bytes public/img/emoji/blue_book.png | Bin 5092 -> 0 bytes public/img/emoji/blue_car.png | Bin 4081 -> 0 bytes public/img/emoji/blue_heart.png | Bin 4094 -> 0 bytes public/img/emoji/blush.png | Bin 5188 -> 0 bytes public/img/emoji/boar.png | Bin 4840 -> 0 bytes public/img/emoji/boat.png | Bin 3833 -> 0 bytes public/img/emoji/bomb.png | Bin 5208 -> 0 bytes public/img/emoji/book.png | Bin 6050 -> 0 bytes public/img/emoji/bookmark.png | Bin 4649 -> 0 bytes public/img/emoji/bookmark_tabs.png | Bin 3150 -> 0 bytes public/img/emoji/books.png | Bin 6539 -> 0 bytes public/img/emoji/boom.png | Bin 3772 -> 0 bytes public/img/emoji/boot.png | Bin 3327 -> 0 bytes public/img/emoji/bouquet.png | Bin 6915 -> 0 bytes public/img/emoji/bow.png | Bin 5143 -> 0 bytes public/img/emoji/bowling.png | Bin 4184 -> 0 bytes public/img/emoji/bowtie.png | Bin 6478 -> 0 bytes public/img/emoji/boy.png | Bin 5946 -> 0 bytes public/img/emoji/bread.png | Bin 6214 -> 0 bytes public/img/emoji/bride_with_veil.png | Bin 8515 -> 0 bytes public/img/emoji/bridge_at_night.png | Bin 5137 -> 0 bytes public/img/emoji/briefcase.png | Bin 2698 -> 0 bytes public/img/emoji/broken_heart.png | Bin 4118 -> 0 bytes public/img/emoji/bug.png | Bin 5945 -> 0 bytes public/img/emoji/bulb.png | Bin 4490 -> 0 bytes public/img/emoji/bullettrain_front.png | Bin 4992 -> 0 bytes public/img/emoji/bullettrain_side.png | Bin 3842 -> 0 bytes public/img/emoji/bus.png | Bin 4065 -> 0 bytes public/img/emoji/busstop.png | Bin 1676 -> 0 bytes public/img/emoji/bust_in_silhouette.png | Bin 2005 -> 0 bytes public/img/emoji/busts_in_silhouette.png | Bin 3021 -> 0 bytes public/img/emoji/cactus.png | Bin 4509 -> 0 bytes public/img/emoji/cake.png | Bin 6129 -> 0 bytes public/img/emoji/calendar.png | Bin 2920 -> 0 bytes public/img/emoji/calling.png | Bin 4037 -> 0 bytes public/img/emoji/camel.png | Bin 4485 -> 0 bytes public/img/emoji/camera.png | Bin 4661 -> 0 bytes public/img/emoji/cancer.png | Bin 5384 -> 0 bytes public/img/emoji/candy.png | Bin 4502 -> 0 bytes public/img/emoji/capital_abcd.png | Bin 5136 -> 0 bytes public/img/emoji/capricorn.png | Bin 4670 -> 0 bytes public/img/emoji/car.png | Bin 4278 -> 0 bytes public/img/emoji/card_index.png | Bin 3749 -> 0 bytes public/img/emoji/carousel_horse.png | Bin 5893 -> 0 bytes public/img/emoji/cat.png | Bin 5987 -> 0 bytes public/img/emoji/cat2.png | Bin 5644 -> 0 bytes public/img/emoji/cd.png | Bin 6718 -> 0 bytes public/img/emoji/chart.png | Bin 4331 -> 0 bytes .../img/emoji/chart_with_downwards_trend.png | Bin 2897 -> 0 bytes public/img/emoji/chart_with_upwards_trend.png | Bin 2930 -> 0 bytes public/img/emoji/checkered_flag.png | Bin 1675 -> 0 bytes public/img/emoji/cherries.png | Bin 5604 -> 0 bytes public/img/emoji/cherry_blossom.png | Bin 7174 -> 0 bytes public/img/emoji/chestnut.png | Bin 5875 -> 0 bytes public/img/emoji/chicken.png | Bin 3988 -> 0 bytes public/img/emoji/children_crossing.png | Bin 3460 -> 0 bytes public/img/emoji/chocolate_bar.png | Bin 5249 -> 0 bytes public/img/emoji/christmas_tree.png | Bin 4721 -> 0 bytes public/img/emoji/church.png | Bin 4653 -> 0 bytes public/img/emoji/cinema.png | Bin 3573 -> 0 bytes public/img/emoji/circus_tent.png | Bin 4683 -> 0 bytes public/img/emoji/city_sunrise.png | Bin 4312 -> 0 bytes public/img/emoji/city_sunset.png | Bin 3841 -> 0 bytes public/img/emoji/cl.png | Bin 3493 -> 0 bytes public/img/emoji/clap.png | Bin 7110 -> 0 bytes public/img/emoji/clapper.png | Bin 4192 -> 0 bytes public/img/emoji/clipboard.png | Bin 4663 -> 0 bytes public/img/emoji/clock1.png | Bin 2590 -> 0 bytes public/img/emoji/clock10.png | Bin 2590 -> 0 bytes public/img/emoji/clock1030.png | Bin 2817 -> 0 bytes public/img/emoji/clock11.png | Bin 2587 -> 0 bytes public/img/emoji/clock1130.png | Bin 2854 -> 0 bytes public/img/emoji/clock12.png | Bin 2504 -> 0 bytes public/img/emoji/clock1230.png | Bin 2797 -> 0 bytes public/img/emoji/clock130.png | Bin 2837 -> 0 bytes public/img/emoji/clock2.png | Bin 2595 -> 0 bytes public/img/emoji/clock230.png | Bin 2853 -> 0 bytes public/img/emoji/clock3.png | Bin 2492 -> 0 bytes public/img/emoji/clock330.png | Bin 2739 -> 0 bytes public/img/emoji/clock4.png | Bin 2619 -> 0 bytes public/img/emoji/clock430.png | Bin 2803 -> 0 bytes public/img/emoji/clock5.png | Bin 2624 -> 0 bytes public/img/emoji/clock530.png | Bin 2832 -> 0 bytes public/img/emoji/clock6.png | Bin 2577 -> 0 bytes public/img/emoji/clock630.png | Bin 2730 -> 0 bytes public/img/emoji/clock7.png | Bin 2615 -> 0 bytes public/img/emoji/clock730.png | Bin 2794 -> 0 bytes public/img/emoji/clock8.png | Bin 2603 -> 0 bytes public/img/emoji/clock830.png | Bin 2792 -> 0 bytes public/img/emoji/clock9.png | Bin 2486 -> 0 bytes public/img/emoji/clock930.png | Bin 2746 -> 0 bytes public/img/emoji/closed_book.png | Bin 4847 -> 0 bytes public/img/emoji/closed_lock_with_key.png | Bin 5701 -> 0 bytes public/img/emoji/closed_umbrella.png | Bin 3868 -> 0 bytes public/img/emoji/cloud.png | Bin 3860 -> 0 bytes public/img/emoji/clubs.png | Bin 1685 -> 0 bytes public/img/emoji/cn.png | Bin 3634 -> 0 bytes public/img/emoji/cocktail.png | Bin 2949 -> 0 bytes public/img/emoji/coffee.png | Bin 4306 -> 0 bytes public/img/emoji/cold_sweat.png | Bin 5972 -> 0 bytes public/img/emoji/collision.png | Bin 3772 -> 0 bytes public/img/emoji/computer.png | Bin 1705 -> 0 bytes public/img/emoji/confetti_ball.png | Bin 5521 -> 0 bytes public/img/emoji/confounded.png | Bin 5857 -> 0 bytes public/img/emoji/confused.png | Bin 4633 -> 0 bytes public/img/emoji/congratulations.png | Bin 4881 -> 0 bytes public/img/emoji/construction.png | Bin 3700 -> 0 bytes public/img/emoji/construction_worker.png | Bin 6193 -> 0 bytes public/img/emoji/convenience_store.png | Bin 4073 -> 0 bytes public/img/emoji/cookie.png | Bin 8149 -> 0 bytes public/img/emoji/cool.png | Bin 4182 -> 0 bytes public/img/emoji/cop.png | Bin 7141 -> 0 bytes public/img/emoji/copyright.png | Bin 1579 -> 0 bytes public/img/emoji/corn.png | Bin 6694 -> 0 bytes public/img/emoji/couple.png | Bin 7615 -> 0 bytes public/img/emoji/couple_with_heart.png | Bin 7370 -> 0 bytes public/img/emoji/couplekiss.png | Bin 7219 -> 0 bytes public/img/emoji/cow.png | Bin 5745 -> 0 bytes public/img/emoji/cow2.png | Bin 5303 -> 0 bytes public/img/emoji/credit_card.png | Bin 2648 -> 0 bytes public/img/emoji/crescent_moon.png | Bin 3541 -> 0 bytes public/img/emoji/crocodile.png | Bin 6125 -> 0 bytes public/img/emoji/crossed_flags.png | Bin 4015 -> 0 bytes public/img/emoji/crown.png | Bin 5655 -> 0 bytes public/img/emoji/cry.png | Bin 5699 -> 0 bytes public/img/emoji/crying_cat_face.png | Bin 6682 -> 0 bytes public/img/emoji/crystal_ball.png | Bin 6236 -> 0 bytes public/img/emoji/cupid.png | Bin 5413 -> 0 bytes public/img/emoji/curly_loop.png | Bin 1129 -> 0 bytes public/img/emoji/currency_exchange.png | Bin 1959 -> 0 bytes public/img/emoji/curry.png | Bin 5336 -> 0 bytes public/img/emoji/custard.png | Bin 5810 -> 0 bytes public/img/emoji/customs.png | Bin 3899 -> 0 bytes public/img/emoji/cyclone.png | Bin 4890 -> 0 bytes public/img/emoji/dancer.png | Bin 3726 -> 0 bytes public/img/emoji/dancers.png | Bin 7918 -> 0 bytes public/img/emoji/dango.png | Bin 4449 -> 0 bytes public/img/emoji/dart.png | Bin 5437 -> 0 bytes public/img/emoji/dash.png | Bin 5448 -> 0 bytes public/img/emoji/date.png | Bin 2977 -> 0 bytes public/img/emoji/de.png | Bin 2640 -> 0 bytes public/img/emoji/deciduous_tree.png | Bin 7263 -> 0 bytes public/img/emoji/department_store.png | Bin 5159 -> 0 bytes .../emoji/diamond_shape_with_a_dot_inside.png | Bin 5698 -> 0 bytes public/img/emoji/diamonds.png | Bin 2785 -> 0 bytes public/img/emoji/disappointed.png | Bin 4764 -> 0 bytes public/img/emoji/disappointed_relieved.png | Bin 5648 -> 0 bytes public/img/emoji/dizzy.png | Bin 2990 -> 0 bytes public/img/emoji/dizzy_face.png | Bin 6278 -> 0 bytes public/img/emoji/do_not_litter.png | Bin 5277 -> 0 bytes public/img/emoji/dog.png | Bin 5945 -> 0 bytes public/img/emoji/dog2.png | Bin 5931 -> 0 bytes public/img/emoji/dollar.png | Bin 4622 -> 0 bytes public/img/emoji/dolls.png | Bin 7138 -> 0 bytes public/img/emoji/dolphin.png | Bin 4343 -> 0 bytes public/img/emoji/donut.png | Bin 5209 -> 0 bytes public/img/emoji/door.png | Bin 3310 -> 0 bytes public/img/emoji/doughnut.png | Bin 5209 -> 0 bytes public/img/emoji/dragon.png | Bin 7749 -> 0 bytes public/img/emoji/dragon_face.png | Bin 6737 -> 0 bytes public/img/emoji/dress.png | Bin 3631 -> 0 bytes public/img/emoji/dromedary_camel.png | Bin 5139 -> 0 bytes public/img/emoji/droplet.png | Bin 3139 -> 0 bytes public/img/emoji/dvd.png | Bin 6993 -> 0 bytes public/img/emoji/e-mail.png | Bin 2128 -> 0 bytes public/img/emoji/ear.png | Bin 4335 -> 0 bytes public/img/emoji/ear_of_rice.png | Bin 4758 -> 0 bytes public/img/emoji/earth_africa.png | Bin 7164 -> 0 bytes public/img/emoji/earth_americas.png | Bin 7039 -> 0 bytes public/img/emoji/earth_asia.png | Bin 7303 -> 0 bytes public/img/emoji/egg.png | Bin 5211 -> 0 bytes public/img/emoji/eggplant.png | Bin 4672 -> 0 bytes public/img/emoji/eight.png | Bin 3844 -> 0 bytes public/img/emoji/eight_pointed_black_star.png | Bin 3271 -> 0 bytes public/img/emoji/eight_spoked_asterisk.png | Bin 4012 -> 0 bytes public/img/emoji/electric_plug.png | Bin 2758 -> 0 bytes public/img/emoji/elephant.png | Bin 5086 -> 0 bytes public/img/emoji/email.png | Bin 2697 -> 0 bytes public/img/emoji/end.png | Bin 1134 -> 0 bytes public/img/emoji/envelope.png | Bin 1655 -> 0 bytes public/img/emoji/es.png | Bin 4302 -> 0 bytes public/img/emoji/euro.png | Bin 3942 -> 0 bytes public/img/emoji/european_castle.png | Bin 5427 -> 0 bytes public/img/emoji/european_post_office.png | Bin 4816 -> 0 bytes public/img/emoji/evergreen_tree.png | Bin 4924 -> 0 bytes public/img/emoji/exclamation.png | Bin 1175 -> 0 bytes public/img/emoji/expressionless.png | Bin 4022 -> 0 bytes public/img/emoji/eyeglasses.png | Bin 4929 -> 0 bytes public/img/emoji/eyes.png | Bin 4367 -> 0 bytes public/img/emoji/facepunch.png | Bin 4833 -> 0 bytes public/img/emoji/factory.png | Bin 5558 -> 0 bytes public/img/emoji/fallen_leaf.png | Bin 4890 -> 0 bytes public/img/emoji/family.png | Bin 7211 -> 0 bytes public/img/emoji/fast_forward.png | Bin 3105 -> 0 bytes public/img/emoji/fax.png | Bin 4650 -> 0 bytes public/img/emoji/fearful.png | Bin 5600 -> 0 bytes public/img/emoji/feelsgood.png | Bin 1150 -> 0 bytes public/img/emoji/feet.png | Bin 1529 -> 0 bytes public/img/emoji/ferris_wheel.png | Bin 6213 -> 0 bytes public/img/emoji/file_folder.png | Bin 4013 -> 0 bytes public/img/emoji/finnadie.png | Bin 1186 -> 0 bytes public/img/emoji/fire.png | Bin 3886 -> 0 bytes public/img/emoji/fire_engine.png | Bin 4862 -> 0 bytes public/img/emoji/fireworks.png | Bin 6269 -> 0 bytes public/img/emoji/first_quarter_moon.png | Bin 5967 -> 0 bytes .../emoji/first_quarter_moon_with_face.png | Bin 4280 -> 0 bytes public/img/emoji/fish.png | Bin 4721 -> 0 bytes public/img/emoji/fish_cake.png | Bin 5818 -> 0 bytes public/img/emoji/fishing_pole_and_fish.png | Bin 4470 -> 0 bytes public/img/emoji/fist.png | Bin 5880 -> 0 bytes public/img/emoji/five.png | Bin 3593 -> 0 bytes public/img/emoji/flags.png | Bin 6124 -> 0 bytes public/img/emoji/flashlight.png | Bin 5024 -> 0 bytes public/img/emoji/floppy_disk.png | Bin 3215 -> 0 bytes public/img/emoji/flower_playing_cards.png | Bin 3434 -> 0 bytes public/img/emoji/flushed.png | Bin 5845 -> 0 bytes public/img/emoji/foggy.png | Bin 4623 -> 0 bytes public/img/emoji/football.png | Bin 6712 -> 0 bytes public/img/emoji/fork_and_knife.png | Bin 3608 -> 0 bytes public/img/emoji/fountain.png | Bin 5087 -> 0 bytes public/img/emoji/four.png | Bin 3176 -> 0 bytes public/img/emoji/four_leaf_clover.png | Bin 5995 -> 0 bytes public/img/emoji/fr.png | Bin 3398 -> 0 bytes public/img/emoji/free.png | Bin 3605 -> 0 bytes public/img/emoji/fried_shrimp.png | Bin 7550 -> 0 bytes public/img/emoji/fries.png | Bin 6405 -> 0 bytes public/img/emoji/frog.png | Bin 4823 -> 0 bytes public/img/emoji/frowning.png | Bin 4733 -> 0 bytes public/img/emoji/fu.png | Bin 4687 -> 0 bytes public/img/emoji/fuelpump.png | Bin 4296 -> 0 bytes public/img/emoji/full_moon.png | Bin 6458 -> 0 bytes public/img/emoji/full_moon_with_face.png | Bin 7165 -> 0 bytes public/img/emoji/game_die.png | Bin 2956 -> 0 bytes public/img/emoji/gb.png | Bin 5894 -> 0 bytes public/img/emoji/gem.png | Bin 4855 -> 0 bytes public/img/emoji/gemini.png | Bin 4296 -> 0 bytes public/img/emoji/ghost.png | Bin 4513 -> 0 bytes public/img/emoji/gift.png | Bin 6712 -> 0 bytes public/img/emoji/gift_heart.png | Bin 6013 -> 0 bytes public/img/emoji/girl.png | Bin 6314 -> 0 bytes public/img/emoji/globe_with_meridians.png | Bin 5837 -> 0 bytes public/img/emoji/goat.png | Bin 4889 -> 0 bytes public/img/emoji/goberserk.png | Bin 1334 -> 0 bytes public/img/emoji/godmode.png | Bin 1042 -> 0 bytes public/img/emoji/golf.png | Bin 3548 -> 0 bytes public/img/emoji/grapes.png | Bin 5423 -> 0 bytes public/img/emoji/green_apple.png | Bin 6205 -> 0 bytes public/img/emoji/green_book.png | Bin 5090 -> 0 bytes public/img/emoji/green_heart.png | Bin 4432 -> 0 bytes public/img/emoji/grey_exclamation.png | Bin 790 -> 0 bytes public/img/emoji/grey_question.png | Bin 1057 -> 0 bytes public/img/emoji/grimacing.png | Bin 5327 -> 0 bytes public/img/emoji/grin.png | Bin 5721 -> 0 bytes public/img/emoji/grinning.png | Bin 5550 -> 0 bytes public/img/emoji/guardsman.png | Bin 3587 -> 0 bytes public/img/emoji/guitar.png | Bin 4382 -> 0 bytes public/img/emoji/gun.png | Bin 3161 -> 0 bytes public/img/emoji/haircut.png | Bin 7100 -> 0 bytes public/img/emoji/hamburger.png | Bin 5706 -> 0 bytes public/img/emoji/hammer.png | Bin 3670 -> 0 bytes public/img/emoji/hamster.png | Bin 7221 -> 0 bytes public/img/emoji/hand.png | Bin 4161 -> 0 bytes public/img/emoji/handbag.png | Bin 5449 -> 0 bytes public/img/emoji/hankey.png | Bin 4754 -> 0 bytes public/img/emoji/hash.png | Bin 3742 -> 0 bytes public/img/emoji/hatched_chick.png | Bin 5646 -> 0 bytes public/img/emoji/hatching_chick.png | Bin 5928 -> 0 bytes public/img/emoji/headphones.png | Bin 1910 -> 0 bytes public/img/emoji/hear_no_evil.png | Bin 6550 -> 0 bytes public/img/emoji/heart.png | Bin 3302 -> 0 bytes public/img/emoji/heart_decoration.png | Bin 3507 -> 0 bytes public/img/emoji/heart_eyes.png | Bin 5758 -> 0 bytes public/img/emoji/heart_eyes_cat.png | Bin 6176 -> 0 bytes public/img/emoji/heartbeat.png | Bin 4052 -> 0 bytes public/img/emoji/heartpulse.png | Bin 6269 -> 0 bytes public/img/emoji/hearts.png | Bin 2925 -> 0 bytes public/img/emoji/heavy_check_mark.png | Bin 924 -> 0 bytes public/img/emoji/heavy_division_sign.png | Bin 264 -> 0 bytes public/img/emoji/heavy_dollar_sign.png | Bin 1150 -> 0 bytes public/img/emoji/heavy_exclamation_mark.png | Bin 1315 -> 0 bytes public/img/emoji/heavy_minus_sign.png | Bin 176 -> 0 bytes public/img/emoji/heavy_multiplication_x.png | Bin 591 -> 0 bytes public/img/emoji/heavy_plus_sign.png | Bin 264 -> 0 bytes public/img/emoji/helicopter.png | Bin 4100 -> 0 bytes public/img/emoji/herb.png | Bin 5889 -> 0 bytes public/img/emoji/hibiscus.png | Bin 8322 -> 0 bytes public/img/emoji/high_brightness.png | Bin 4060 -> 0 bytes public/img/emoji/high_heel.png | Bin 4557 -> 0 bytes public/img/emoji/hocho.png | Bin 2455 -> 0 bytes public/img/emoji/honey_pot.png | Bin 5830 -> 0 bytes public/img/emoji/honeybee.png | Bin 5851 -> 0 bytes public/img/emoji/horse.png | Bin 4582 -> 0 bytes public/img/emoji/horse_racing.png | Bin 5905 -> 0 bytes public/img/emoji/hospital.png | Bin 4887 -> 0 bytes public/img/emoji/hotel.png | Bin 5123 -> 0 bytes public/img/emoji/hotsprings.png | Bin 3538 -> 0 bytes public/img/emoji/hourglass.png | Bin 4492 -> 0 bytes public/img/emoji/hourglass_flowing_sand.png | Bin 4291 -> 0 bytes public/img/emoji/house.png | Bin 3510 -> 0 bytes public/img/emoji/house_with_garden.png | Bin 6089 -> 0 bytes public/img/emoji/hurtrealbad.png | Bin 1456 -> 0 bytes public/img/emoji/hushed.png | Bin 4941 -> 0 bytes public/img/emoji/ice_cream.png | Bin 5469 -> 0 bytes public/img/emoji/icecream.png | Bin 4603 -> 0 bytes public/img/emoji/id.png | Bin 3905 -> 0 bytes public/img/emoji/ideograph_advantage.png | Bin 3088 -> 0 bytes public/img/emoji/imp.png | Bin 6621 -> 0 bytes public/img/emoji/inbox_tray.png | Bin 3700 -> 0 bytes public/img/emoji/incoming_envelope.png | Bin 2206 -> 0 bytes public/img/emoji/information_desk_person.png | Bin 6605 -> 0 bytes public/img/emoji/information_source.png | Bin 3670 -> 0 bytes public/img/emoji/innocent.png | Bin 7000 -> 0 bytes public/img/emoji/interrobang.png | Bin 2875 -> 0 bytes public/img/emoji/iphone.png | Bin 3499 -> 0 bytes public/img/emoji/it.png | Bin 3495 -> 0 bytes public/img/emoji/izakaya_lantern.png | Bin 4064 -> 0 bytes public/img/emoji/jack_o_lantern.png | Bin 5633 -> 0 bytes public/img/emoji/japan.png | Bin 4085 -> 0 bytes public/img/emoji/japanese_castle.png | Bin 4939 -> 0 bytes public/img/emoji/japanese_goblin.png | Bin 5159 -> 0 bytes public/img/emoji/japanese_ogre.png | Bin 7147 -> 0 bytes public/img/emoji/jeans.png | Bin 3470 -> 0 bytes public/img/emoji/joy.png | Bin 6339 -> 0 bytes public/img/emoji/joy_cat.png | Bin 7190 -> 0 bytes public/img/emoji/jp.png | Bin 2827 -> 0 bytes public/img/emoji/key.png | Bin 3452 -> 0 bytes public/img/emoji/keycap_ten.png | Bin 4095 -> 0 bytes public/img/emoji/kimono.png | Bin 4938 -> 0 bytes public/img/emoji/kiss.png | Bin 6276 -> 0 bytes public/img/emoji/kissing.png | Bin 4790 -> 0 bytes public/img/emoji/kissing_cat.png | Bin 6801 -> 0 bytes public/img/emoji/kissing_closed_eyes.png | Bin 5563 -> 0 bytes public/img/emoji/kissing_face.png | Bin 5563 -> 0 bytes public/img/emoji/kissing_heart.png | Bin 5767 -> 0 bytes public/img/emoji/kissing_smiling_eyes.png | Bin 4999 -> 0 bytes public/img/emoji/koala.png | Bin 5687 -> 0 bytes public/img/emoji/koko.png | Bin 2854 -> 0 bytes public/img/emoji/kr.png | Bin 5105 -> 0 bytes public/img/emoji/large_blue_circle.png | Bin 4637 -> 0 bytes public/img/emoji/large_blue_diamond.png | Bin 3790 -> 0 bytes public/img/emoji/large_orange_diamond.png | Bin 3849 -> 0 bytes public/img/emoji/last_quarter_moon.png | Bin 6149 -> 0 bytes .../img/emoji/last_quarter_moon_with_face.png | Bin 4328 -> 0 bytes public/img/emoji/laughing.png | Bin 6347 -> 0 bytes public/img/emoji/leaves.png | Bin 5571 -> 0 bytes public/img/emoji/ledger.png | Bin 5921 -> 0 bytes public/img/emoji/left_luggage.png | Bin 4025 -> 0 bytes public/img/emoji/left_right_arrow.png | Bin 3413 -> 0 bytes .../img/emoji/leftwards_arrow_with_hook.png | Bin 3775 -> 0 bytes public/img/emoji/lemon.png | Bin 6055 -> 0 bytes public/img/emoji/leo.png | Bin 4913 -> 0 bytes public/img/emoji/leopard.png | Bin 5348 -> 0 bytes public/img/emoji/libra.png | Bin 4218 -> 0 bytes public/img/emoji/light_rail.png | Bin 3792 -> 0 bytes public/img/emoji/link.png | Bin 2619 -> 0 bytes public/img/emoji/lips.png | Bin 3738 -> 0 bytes public/img/emoji/lipstick.png | Bin 3384 -> 0 bytes public/img/emoji/lock.png | Bin 3676 -> 0 bytes public/img/emoji/lock_with_ink_pen.png | Bin 4967 -> 0 bytes public/img/emoji/lollipop.png | Bin 5771 -> 0 bytes public/img/emoji/loop.png | Bin 3417 -> 0 bytes public/img/emoji/loudspeaker.png | Bin 6001 -> 0 bytes public/img/emoji/love_hotel.png | Bin 5941 -> 0 bytes public/img/emoji/love_letter.png | Bin 2467 -> 0 bytes public/img/emoji/low_brightness.png | Bin 2498 -> 0 bytes public/img/emoji/m.png | Bin 4734 -> 0 bytes public/img/emoji/mag.png | Bin 3040 -> 0 bytes public/img/emoji/mag_right.png | Bin 3629 -> 0 bytes public/img/emoji/mahjong.png | Bin 3309 -> 0 bytes public/img/emoji/mailbox.png | Bin 4196 -> 0 bytes public/img/emoji/mailbox_closed.png | Bin 4360 -> 0 bytes public/img/emoji/mailbox_with_mail.png | Bin 4581 -> 0 bytes public/img/emoji/mailbox_with_no_mail.png | Bin 3101 -> 0 bytes public/img/emoji/man.png | Bin 6023 -> 0 bytes public/img/emoji/man_with_gua_pi_mao.png | Bin 5324 -> 0 bytes public/img/emoji/man_with_turban.png | Bin 6528 -> 0 bytes public/img/emoji/mans_shoe.png | Bin 4749 -> 0 bytes public/img/emoji/maple_leaf.png | Bin 4450 -> 0 bytes public/img/emoji/mask.png | Bin 5235 -> 0 bytes public/img/emoji/massage.png | Bin 6036 -> 0 bytes public/img/emoji/meat_on_bone.png | Bin 5425 -> 0 bytes public/img/emoji/mega.png | Bin 4680 -> 0 bytes public/img/emoji/melon.png | Bin 8233 -> 0 bytes public/img/emoji/memo.png | Bin 4945 -> 0 bytes public/img/emoji/mens.png | Bin 3368 -> 0 bytes public/img/emoji/metal.png | Bin 3098 -> 0 bytes public/img/emoji/metro.png | Bin 3402 -> 0 bytes public/img/emoji/microphone.png | Bin 3680 -> 0 bytes public/img/emoji/microscope.png | Bin 4130 -> 0 bytes public/img/emoji/milky_way.png | Bin 5878 -> 0 bytes public/img/emoji/minibus.png | Bin 3113 -> 0 bytes public/img/emoji/minidisc.png | Bin 5594 -> 0 bytes public/img/emoji/mobile_phone_off.png | Bin 3521 -> 0 bytes public/img/emoji/money_with_wings.png | Bin 7584 -> 0 bytes public/img/emoji/moneybag.png | Bin 5500 -> 0 bytes public/img/emoji/monkey.png | Bin 4973 -> 0 bytes public/img/emoji/monkey_face.png | Bin 5348 -> 0 bytes public/img/emoji/monorail.png | Bin 4311 -> 0 bytes public/img/emoji/mortar_board.png | Bin 4164 -> 0 bytes public/img/emoji/mount_fuji.png | Bin 5004 -> 0 bytes public/img/emoji/mountain_bicyclist.png | Bin 9511 -> 0 bytes public/img/emoji/mountain_cableway.png | Bin 4405 -> 0 bytes public/img/emoji/mountain_railway.png | Bin 7448 -> 0 bytes public/img/emoji/mouse.png | Bin 6625 -> 0 bytes public/img/emoji/mouse2.png | Bin 4087 -> 0 bytes public/img/emoji/movie_camera.png | Bin 4081 -> 0 bytes public/img/emoji/moyai.png | Bin 2166 -> 0 bytes public/img/emoji/muscle.png | Bin 4672 -> 0 bytes public/img/emoji/mushroom.png | Bin 4887 -> 0 bytes public/img/emoji/musical_keyboard.png | Bin 1944 -> 0 bytes public/img/emoji/musical_note.png | Bin 3188 -> 0 bytes public/img/emoji/musical_score.png | Bin 1497 -> 0 bytes public/img/emoji/mute.png | Bin 6635 -> 0 bytes public/img/emoji/nail_care.png | Bin 5814 -> 0 bytes public/img/emoji/name_badge.png | Bin 3985 -> 0 bytes public/img/emoji/neckbeard.png | Bin 6247 -> 0 bytes public/img/emoji/necktie.png | Bin 6116 -> 0 bytes .../img/emoji/negative_squared_cross_mark.png | Bin 3853 -> 0 bytes public/img/emoji/neutral_face.png | Bin 4843 -> 0 bytes public/img/emoji/new.png | Bin 3927 -> 0 bytes public/img/emoji/new_moon.png | Bin 5276 -> 0 bytes public/img/emoji/new_moon_with_face.png | Bin 6708 -> 0 bytes public/img/emoji/newspaper.png | Bin 5180 -> 0 bytes public/img/emoji/ng.png | Bin 4201 -> 0 bytes public/img/emoji/nine.png | Bin 3776 -> 0 bytes public/img/emoji/no_bell.png | Bin 5944 -> 0 bytes public/img/emoji/no_bicycles.png | Bin 5661 -> 0 bytes public/img/emoji/no_entry.png | Bin 3514 -> 0 bytes public/img/emoji/no_entry_sign.png | Bin 3287 -> 0 bytes public/img/emoji/no_good.png | Bin 7034 -> 0 bytes public/img/emoji/no_mobile_phones.png | Bin 5083 -> 0 bytes public/img/emoji/no_mouth.png | Bin 4632 -> 0 bytes public/img/emoji/no_pedestrians.png | Bin 5485 -> 0 bytes public/img/emoji/no_smoking.png | Bin 4212 -> 0 bytes public/img/emoji/non-potable_water.png | Bin 5202 -> 0 bytes public/img/emoji/nose.png | Bin 3703 -> 0 bytes public/img/emoji/notebook.png | Bin 6001 -> 0 bytes .../emoji/notebook_with_decorative_cover.png | Bin 5329 -> 0 bytes public/img/emoji/notes.png | Bin 1536 -> 0 bytes public/img/emoji/nut_and_bolt.png | Bin 2169 -> 0 bytes public/img/emoji/o.png | Bin 2538 -> 0 bytes public/img/emoji/o2.png | Bin 3498 -> 0 bytes public/img/emoji/ocean.png | Bin 5777 -> 0 bytes public/img/emoji/octocat.png | Bin 3738 -> 0 bytes public/img/emoji/octopus.png | Bin 5779 -> 0 bytes public/img/emoji/oden.png | Bin 5543 -> 0 bytes public/img/emoji/office.png | Bin 5156 -> 0 bytes public/img/emoji/ok.png | Bin 4158 -> 0 bytes public/img/emoji/ok_hand.png | Bin 4598 -> 0 bytes public/img/emoji/ok_woman.png | Bin 7527 -> 0 bytes public/img/emoji/older_man.png | Bin 6733 -> 0 bytes public/img/emoji/older_woman.png | Bin 5977 -> 0 bytes public/img/emoji/on.png | Bin 1472 -> 0 bytes public/img/emoji/oncoming_automobile.png | Bin 7469 -> 0 bytes public/img/emoji/oncoming_bus.png | Bin 5305 -> 0 bytes public/img/emoji/oncoming_police_car.png | Bin 5683 -> 0 bytes public/img/emoji/oncoming_taxi.png | Bin 6287 -> 0 bytes public/img/emoji/one.png | Bin 2825 -> 0 bytes public/img/emoji/open_file_folder.png | Bin 4292 -> 0 bytes public/img/emoji/open_hands.png | Bin 4950 -> 0 bytes public/img/emoji/open_mouth.png | Bin 4519 -> 0 bytes public/img/emoji/ophiuchus.png | Bin 4434 -> 0 bytes public/img/emoji/orange_book.png | Bin 5085 -> 0 bytes public/img/emoji/outbox_tray.png | Bin 3683 -> 0 bytes public/img/emoji/ox.png | Bin 5935 -> 0 bytes public/img/emoji/package.png | Bin 7581 -> 0 bytes public/img/emoji/page_facing_up.png | Bin 2178 -> 0 bytes public/img/emoji/page_with_curl.png | Bin 3715 -> 0 bytes public/img/emoji/pager.png | Bin 4022 -> 0 bytes public/img/emoji/palm_tree.png | Bin 3663 -> 0 bytes public/img/emoji/panda_face.png | Bin 4814 -> 0 bytes public/img/emoji/paperclip.png | Bin 2478 -> 0 bytes public/img/emoji/parking.png | Bin 3083 -> 0 bytes public/img/emoji/part_alternation_mark.png | Bin 2681 -> 0 bytes public/img/emoji/partly_sunny.png | Bin 5169 -> 0 bytes public/img/emoji/passport_control.png | Bin 4018 -> 0 bytes public/img/emoji/paw_prints.png | Bin 2471 -> 0 bytes public/img/emoji/peach.png | Bin 5920 -> 0 bytes public/img/emoji/pear.png | Bin 6936 -> 0 bytes public/img/emoji/pencil.png | Bin 4945 -> 0 bytes public/img/emoji/pencil2.png | Bin 4348 -> 0 bytes public/img/emoji/penguin.png | Bin 4746 -> 0 bytes public/img/emoji/pensive.png | Bin 5062 -> 0 bytes public/img/emoji/performing_arts.png | Bin 6287 -> 0 bytes public/img/emoji/persevere.png | Bin 5519 -> 0 bytes public/img/emoji/person_frowning.png | Bin 4826 -> 0 bytes public/img/emoji/person_with_blond_hair.png | Bin 6622 -> 0 bytes public/img/emoji/person_with_pouting_face.png | Bin 5428 -> 0 bytes public/img/emoji/phone.png | Bin 5495 -> 0 bytes public/img/emoji/pig.png | Bin 5996 -> 0 bytes public/img/emoji/pig2.png | Bin 4797 -> 0 bytes public/img/emoji/pig_nose.png | Bin 4761 -> 0 bytes public/img/emoji/pill.png | Bin 5022 -> 0 bytes public/img/emoji/pineapple.png | Bin 5634 -> 0 bytes public/img/emoji/pisces.png | Bin 4441 -> 0 bytes public/img/emoji/pizza.png | Bin 5273 -> 0 bytes public/img/emoji/plus1.png | Bin 5075 -> 0 bytes public/img/emoji/point_down.png | Bin 3225 -> 0 bytes public/img/emoji/point_left.png | Bin 3085 -> 0 bytes public/img/emoji/point_right.png | Bin 3079 -> 0 bytes public/img/emoji/point_up.png | Bin 3431 -> 0 bytes public/img/emoji/point_up_2.png | Bin 3181 -> 0 bytes public/img/emoji/police_car.png | Bin 3349 -> 0 bytes public/img/emoji/poodle.png | Bin 6852 -> 0 bytes public/img/emoji/poop.png | Bin 4754 -> 0 bytes public/img/emoji/post_office.png | Bin 5136 -> 0 bytes public/img/emoji/postal_horn.png | Bin 4735 -> 0 bytes public/img/emoji/postbox.png | Bin 3388 -> 0 bytes public/img/emoji/potable_water.png | Bin 3934 -> 0 bytes public/img/emoji/pouch.png | Bin 4642 -> 0 bytes public/img/emoji/poultry_leg.png | Bin 4200 -> 0 bytes public/img/emoji/pound.png | Bin 4235 -> 0 bytes public/img/emoji/pouting_cat.png | Bin 4918 -> 0 bytes public/img/emoji/pray.png | Bin 6203 -> 0 bytes public/img/emoji/princess.png | Bin 7920 -> 0 bytes public/img/emoji/punch.png | Bin 4833 -> 0 bytes public/img/emoji/purple_heart.png | Bin 4295 -> 0 bytes public/img/emoji/purse.png | Bin 5033 -> 0 bytes public/img/emoji/pushpin.png | Bin 3793 -> 0 bytes public/img/emoji/put_litter_in_its_place.png | Bin 4091 -> 0 bytes public/img/emoji/question.png | Bin 1711 -> 0 bytes public/img/emoji/rabbit.png | Bin 5677 -> 0 bytes public/img/emoji/rabbit2.png | Bin 4425 -> 0 bytes public/img/emoji/racehorse.png | Bin 4735 -> 0 bytes public/img/emoji/radio.png | Bin 6150 -> 0 bytes public/img/emoji/radio_button.png | Bin 2198 -> 0 bytes public/img/emoji/rage.png | Bin 5410 -> 0 bytes public/img/emoji/rage1.png | Bin 1086 -> 0 bytes public/img/emoji/rage2.png | Bin 1098 -> 0 bytes public/img/emoji/rage3.png | Bin 1119 -> 0 bytes public/img/emoji/rage4.png | Bin 1270 -> 0 bytes public/img/emoji/railway_car.png | Bin 3648 -> 0 bytes public/img/emoji/rainbow.png | Bin 5314 -> 0 bytes public/img/emoji/raised_hand.png | Bin 4161 -> 0 bytes public/img/emoji/raised_hands.png | Bin 5375 -> 0 bytes public/img/emoji/raising_hand.png | Bin 6177 -> 0 bytes public/img/emoji/ram.png | Bin 6531 -> 0 bytes public/img/emoji/ramen.png | Bin 6574 -> 0 bytes public/img/emoji/rat.png | Bin 5434 -> 0 bytes public/img/emoji/recycle.png | Bin 3704 -> 0 bytes public/img/emoji/red_car.png | Bin 4278 -> 0 bytes public/img/emoji/red_circle.png | Bin 3946 -> 0 bytes public/img/emoji/registered.png | Bin 1613 -> 0 bytes public/img/emoji/relaxed.png | Bin 5455 -> 0 bytes public/img/emoji/relieved.png | Bin 5364 -> 0 bytes public/img/emoji/repeat.png | Bin 4009 -> 0 bytes public/img/emoji/repeat_one.png | Bin 4287 -> 0 bytes public/img/emoji/restroom.png | Bin 4142 -> 0 bytes public/img/emoji/revolving_hearts.png | Bin 5472 -> 0 bytes public/img/emoji/rewind.png | Bin 3056 -> 0 bytes public/img/emoji/ribbon.png | Bin 5581 -> 0 bytes public/img/emoji/rice.png | Bin 4645 -> 0 bytes public/img/emoji/rice_ball.png | Bin 5371 -> 0 bytes public/img/emoji/rice_cracker.png | Bin 7787 -> 0 bytes public/img/emoji/rice_scene.png | Bin 6261 -> 0 bytes public/img/emoji/ring.png | Bin 5232 -> 0 bytes public/img/emoji/rocket.png | Bin 5388 -> 0 bytes public/img/emoji/roller_coaster.png | Bin 5148 -> 0 bytes public/img/emoji/rooster.png | Bin 6168 -> 0 bytes public/img/emoji/rose.png | Bin 4202 -> 0 bytes public/img/emoji/rotating_light.png | Bin 6620 -> 0 bytes public/img/emoji/round_pushpin.png | Bin 1936 -> 0 bytes public/img/emoji/rowboat.png | Bin 5357 -> 0 bytes public/img/emoji/ru.png | Bin 3920 -> 0 bytes public/img/emoji/rugby_football.png | Bin 7781 -> 0 bytes public/img/emoji/runner.png | Bin 3137 -> 0 bytes public/img/emoji/running.png | Bin 3137 -> 0 bytes public/img/emoji/running_shirt_with_sash.png | Bin 5701 -> 0 bytes public/img/emoji/sa.png | Bin 3556 -> 0 bytes public/img/emoji/sagittarius.png | Bin 4505 -> 0 bytes public/img/emoji/sailboat.png | Bin 3833 -> 0 bytes public/img/emoji/sake.png | Bin 5073 -> 0 bytes public/img/emoji/sandal.png | Bin 3974 -> 0 bytes public/img/emoji/santa.png | Bin 6271 -> 0 bytes public/img/emoji/satellite.png | Bin 4867 -> 0 bytes public/img/emoji/satisfied.png | Bin 6347 -> 0 bytes public/img/emoji/saxophone.png | Bin 4252 -> 0 bytes public/img/emoji/school.png | Bin 5446 -> 0 bytes public/img/emoji/school_satchel.png | Bin 5741 -> 0 bytes public/img/emoji/scissors.png | Bin 3837 -> 0 bytes public/img/emoji/scorpius.png | Bin 4566 -> 0 bytes public/img/emoji/scream.png | Bin 6482 -> 0 bytes public/img/emoji/scream_cat.png | Bin 6844 -> 0 bytes public/img/emoji/scroll.png | Bin 6749 -> 0 bytes public/img/emoji/seat.png | Bin 6059 -> 0 bytes public/img/emoji/secret.png | Bin 5364 -> 0 bytes public/img/emoji/see_no_evil.png | Bin 6828 -> 0 bytes public/img/emoji/seedling.png | Bin 2190 -> 0 bytes public/img/emoji/seven.png | Bin 3055 -> 0 bytes public/img/emoji/shaved_ice.png | Bin 5908 -> 0 bytes public/img/emoji/sheep.png | Bin 4732 -> 0 bytes public/img/emoji/shell.png | Bin 5115 -> 0 bytes public/img/emoji/ship.png | Bin 4233 -> 0 bytes public/img/emoji/shipit.png | Bin 9351 -> 0 bytes public/img/emoji/shirt.png | Bin 4676 -> 0 bytes public/img/emoji/shit.png | Bin 4754 -> 0 bytes public/img/emoji/shoe.png | Bin 4799 -> 0 bytes public/img/emoji/shower.png | Bin 7520 -> 0 bytes public/img/emoji/signal_strength.png | Bin 3231 -> 0 bytes public/img/emoji/six.png | Bin 3791 -> 0 bytes public/img/emoji/six_pointed_star.png | Bin 4854 -> 0 bytes public/img/emoji/ski.png | Bin 4167 -> 0 bytes public/img/emoji/skull.png | Bin 2428 -> 0 bytes public/img/emoji/sleeping.png | Bin 5409 -> 0 bytes public/img/emoji/sleepy.png | Bin 5837 -> 0 bytes public/img/emoji/slot_machine.png | Bin 4605 -> 0 bytes public/img/emoji/small_blue_diamond.png | Bin 1817 -> 0 bytes public/img/emoji/small_orange_diamond.png | Bin 1944 -> 0 bytes public/img/emoji/small_red_triangle.png | Bin 2054 -> 0 bytes public/img/emoji/small_red_triangle_down.png | Bin 2157 -> 0 bytes public/img/emoji/smile.png | Bin 5890 -> 0 bytes public/img/emoji/smile_cat.png | Bin 6117 -> 0 bytes public/img/emoji/smiley.png | Bin 5794 -> 0 bytes public/img/emoji/smiley_cat.png | Bin 6083 -> 0 bytes public/img/emoji/smiling_imp.png | Bin 7189 -> 0 bytes public/img/emoji/smirk.png | Bin 5307 -> 0 bytes public/img/emoji/smirk_cat.png | Bin 6062 -> 0 bytes public/img/emoji/smoking.png | Bin 2875 -> 0 bytes public/img/emoji/snail.png | Bin 6657 -> 0 bytes public/img/emoji/snake.png | Bin 4069 -> 0 bytes public/img/emoji/snowboarder.png | Bin 5356 -> 0 bytes public/img/emoji/snowflake.png | Bin 5637 -> 0 bytes public/img/emoji/snowman.png | Bin 4658 -> 0 bytes public/img/emoji/sob.png | Bin 5709 -> 0 bytes public/img/emoji/soccer.png | Bin 4878 -> 0 bytes public/img/emoji/soon.png | Bin 1551 -> 0 bytes public/img/emoji/sos.png | Bin 4262 -> 0 bytes public/img/emoji/sound.png | Bin 5024 -> 0 bytes public/img/emoji/space_invader.png | Bin 4353 -> 0 bytes public/img/emoji/spades.png | Bin 1719 -> 0 bytes public/img/emoji/spaghetti.png | Bin 6955 -> 0 bytes public/img/emoji/sparkle.png | Bin 8080 -> 0 bytes public/img/emoji/sparkler.png | Bin 5696 -> 0 bytes public/img/emoji/sparkles.png | Bin 2209 -> 0 bytes public/img/emoji/sparkling_heart.png | Bin 5357 -> 0 bytes public/img/emoji/speak_no_evil.png | Bin 5977 -> 0 bytes public/img/emoji/speaker.png | Bin 5173 -> 0 bytes public/img/emoji/speech_balloon.png | Bin 2130 -> 0 bytes public/img/emoji/speedboat.png | Bin 3512 -> 0 bytes public/img/emoji/squirrel.png | Bin 9351 -> 0 bytes public/img/emoji/star.png | Bin 3628 -> 0 bytes public/img/emoji/star2.png | Bin 4068 -> 0 bytes public/img/emoji/stars.png | Bin 4366 -> 0 bytes public/img/emoji/station.png | Bin 4836 -> 0 bytes public/img/emoji/statue_of_liberty.png | Bin 6075 -> 0 bytes public/img/emoji/steam_locomotive.png | Bin 5159 -> 0 bytes public/img/emoji/stew.png | Bin 5365 -> 0 bytes public/img/emoji/straight_ruler.png | Bin 3797 -> 0 bytes public/img/emoji/strawberry.png | Bin 5477 -> 0 bytes public/img/emoji/stuck_out_tongue.png | Bin 5215 -> 0 bytes .../emoji/stuck_out_tongue_closed_eyes.png | Bin 5785 -> 0 bytes .../emoji/stuck_out_tongue_winking_eye.png | Bin 6007 -> 0 bytes public/img/emoji/sun_with_face.png | Bin 7958 -> 0 bytes public/img/emoji/sunflower.png | Bin 6567 -> 0 bytes public/img/emoji/sunglasses.png | Bin 5730 -> 0 bytes public/img/emoji/sunny.png | Bin 3802 -> 0 bytes public/img/emoji/sunrise.png | Bin 3914 -> 0 bytes public/img/emoji/sunrise_over_mountains.png | Bin 6594 -> 0 bytes public/img/emoji/surfer.png | Bin 6259 -> 0 bytes public/img/emoji/sushi.png | Bin 5257 -> 0 bytes public/img/emoji/suspect.png | Bin 1016 -> 0 bytes public/img/emoji/suspension_railway.png | Bin 3937 -> 0 bytes public/img/emoji/sweat.png | Bin 5576 -> 0 bytes public/img/emoji/sweat_drops.png | Bin 4782 -> 0 bytes public/img/emoji/sweat_smile.png | Bin 6519 -> 0 bytes public/img/emoji/sweet_potato.png | Bin 5551 -> 0 bytes public/img/emoji/swimmer.png | Bin 4378 -> 0 bytes public/img/emoji/symbols.png | Bin 5434 -> 0 bytes public/img/emoji/syringe.png | Bin 3027 -> 0 bytes public/img/emoji/tada.png | Bin 5945 -> 0 bytes public/img/emoji/tanabata_tree.png | Bin 4296 -> 0 bytes public/img/emoji/tangerine.png | Bin 6645 -> 0 bytes public/img/emoji/taurus.png | Bin 4733 -> 0 bytes public/img/emoji/taxi.png | Bin 3744 -> 0 bytes public/img/emoji/tea.png | Bin 5954 -> 0 bytes public/img/emoji/telephone.png | Bin 5495 -> 0 bytes public/img/emoji/telephone_receiver.png | Bin 2001 -> 0 bytes public/img/emoji/telescope.png | Bin 3252 -> 0 bytes public/img/emoji/tennis.png | Bin 5976 -> 0 bytes public/img/emoji/tent.png | Bin 4482 -> 0 bytes public/img/emoji/thought_balloon.png | Bin 2521 -> 0 bytes public/img/emoji/three.png | Bin 3758 -> 0 bytes public/img/emoji/thumbsdown.png | Bin 5070 -> 0 bytes public/img/emoji/thumbsup.png | Bin 5075 -> 0 bytes public/img/emoji/ticket.png | Bin 3091 -> 0 bytes public/img/emoji/tiger.png | Bin 6051 -> 0 bytes public/img/emoji/tiger2.png | Bin 5744 -> 0 bytes public/img/emoji/tired_face.png | Bin 6174 -> 0 bytes public/img/emoji/tm.png | Bin 842 -> 0 bytes public/img/emoji/toilet.png | Bin 1733 -> 0 bytes public/img/emoji/tokyo_tower.png | Bin 4802 -> 0 bytes public/img/emoji/tomato.png | Bin 5748 -> 0 bytes public/img/emoji/tongue.png | Bin 3662 -> 0 bytes public/img/emoji/top.png | Bin 3785 -> 0 bytes public/img/emoji/tophat.png | Bin 3009 -> 0 bytes public/img/emoji/tractor.png | Bin 5671 -> 0 bytes public/img/emoji/traffic_light.png | Bin 3535 -> 0 bytes public/img/emoji/train.png | Bin 3905 -> 0 bytes public/img/emoji/train2.png | Bin 4817 -> 0 bytes public/img/emoji/tram.png | Bin 4869 -> 0 bytes public/img/emoji/triangular_flag_on_post.png | Bin 1399 -> 0 bytes public/img/emoji/triangular_ruler.png | Bin 2706 -> 0 bytes public/img/emoji/trident.png | Bin 4833 -> 0 bytes public/img/emoji/triumph.png | Bin 6164 -> 0 bytes public/img/emoji/trolleybus.png | Bin 4431 -> 0 bytes public/img/emoji/trollface.png | Bin 4901 -> 0 bytes public/img/emoji/trophy.png | Bin 5520 -> 0 bytes public/img/emoji/tropical_drink.png | Bin 4189 -> 0 bytes public/img/emoji/tropical_fish.png | Bin 5846 -> 0 bytes public/img/emoji/truck.png | Bin 3721 -> 0 bytes public/img/emoji/trumpet.png | Bin 4373 -> 0 bytes public/img/emoji/tshirt.png | Bin 4676 -> 0 bytes public/img/emoji/tulip.png | Bin 6065 -> 0 bytes public/img/emoji/turtle.png | Bin 5336 -> 0 bytes public/img/emoji/tv.png | Bin 5242 -> 0 bytes .../img/emoji/twisted_rightwards_arrows.png | Bin 4313 -> 0 bytes public/img/emoji/two.png | Bin 3518 -> 0 bytes public/img/emoji/two_hearts.png | Bin 3565 -> 0 bytes public/img/emoji/two_men_holding_hands.png | Bin 6994 -> 0 bytes public/img/emoji/two_women_holding_hands.png | Bin 7633 -> 0 bytes public/img/emoji/u5272.png | Bin 4533 -> 0 bytes public/img/emoji/u5408.png | Bin 3890 -> 0 bytes public/img/emoji/u55b6.png | Bin 3411 -> 0 bytes public/img/emoji/u6307.png | Bin 4103 -> 0 bytes public/img/emoji/u6708.png | Bin 3011 -> 0 bytes public/img/emoji/u6709.png | Bin 3198 -> 0 bytes public/img/emoji/u6e80.png | Bin 4419 -> 0 bytes public/img/emoji/u7121.png | Bin 3942 -> 0 bytes public/img/emoji/u7533.png | Bin 3048 -> 0 bytes public/img/emoji/u7981.png | Bin 5175 -> 0 bytes public/img/emoji/u7a7a.png | Bin 4180 -> 0 bytes public/img/emoji/uk.png | Bin 5894 -> 0 bytes public/img/emoji/umbrella.png | Bin 4745 -> 0 bytes public/img/emoji/unamused.png | Bin 5315 -> 0 bytes public/img/emoji/underage.png | Bin 5722 -> 0 bytes public/img/emoji/unlock.png | Bin 3551 -> 0 bytes public/img/emoji/up.png | Bin 3721 -> 0 bytes public/img/emoji/us.png | Bin 6285 -> 0 bytes public/img/emoji/v.png | Bin 4669 -> 0 bytes public/img/emoji/vertical_traffic_light.png | Bin 3422 -> 0 bytes public/img/emoji/vhs.png | Bin 3145 -> 0 bytes public/img/emoji/vibration_mode.png | Bin 3906 -> 0 bytes public/img/emoji/video_camera.png | Bin 5090 -> 0 bytes public/img/emoji/video_game.png | Bin 4947 -> 0 bytes public/img/emoji/violin.png | Bin 4915 -> 0 bytes public/img/emoji/virgo.png | Bin 4869 -> 0 bytes public/img/emoji/volcano.png | Bin 6167 -> 0 bytes public/img/emoji/vs.png | Bin 3424 -> 0 bytes public/img/emoji/walking.png | Bin 2468 -> 0 bytes public/img/emoji/waning_crescent_moon.png | Bin 5885 -> 0 bytes public/img/emoji/waning_gibbous_moon.png | Bin 6443 -> 0 bytes public/img/emoji/warning.png | Bin 3173 -> 0 bytes public/img/emoji/watch.png | Bin 5189 -> 0 bytes public/img/emoji/water_buffalo.png | Bin 4774 -> 0 bytes public/img/emoji/watermelon.png | Bin 5501 -> 0 bytes public/img/emoji/wave.png | Bin 5046 -> 0 bytes public/img/emoji/wavy_dash.png | Bin 696 -> 0 bytes public/img/emoji/waxing_crescent_moon.png | Bin 6198 -> 0 bytes public/img/emoji/waxing_gibbous_moon.png | Bin 6357 -> 0 bytes public/img/emoji/wc.png | Bin 4088 -> 0 bytes public/img/emoji/weary.png | Bin 6279 -> 0 bytes public/img/emoji/wedding.png | Bin 5847 -> 0 bytes public/img/emoji/whale.png | Bin 4940 -> 0 bytes public/img/emoji/whale2.png | Bin 5944 -> 0 bytes public/img/emoji/wheelchair.png | Bin 4224 -> 0 bytes public/img/emoji/white_check_mark.png | Bin 3445 -> 0 bytes public/img/emoji/white_circle.png | Bin 2477 -> 0 bytes public/img/emoji/white_flower.png | Bin 4391 -> 0 bytes public/img/emoji/white_large_square.png | Bin 1411 -> 0 bytes .../img/emoji/white_medium_small_square.png | Bin 3183 -> 0 bytes public/img/emoji/white_medium_square.png | Bin 3530 -> 0 bytes public/img/emoji/white_small_square.png | Bin 2882 -> 0 bytes public/img/emoji/white_square_button.png | Bin 1725 -> 0 bytes public/img/emoji/wind_chime.png | Bin 3487 -> 0 bytes public/img/emoji/wine_glass.png | Bin 3151 -> 0 bytes public/img/emoji/wink.png | Bin 5253 -> 0 bytes public/img/emoji/wolf.png | Bin 4845 -> 0 bytes public/img/emoji/woman.png | Bin 6895 -> 0 bytes public/img/emoji/womans_clothes.png | Bin 4075 -> 0 bytes public/img/emoji/womans_hat.png | Bin 8101 -> 0 bytes public/img/emoji/womens.png | Bin 3892 -> 0 bytes public/img/emoji/worried.png | Bin 5152 -> 0 bytes public/img/emoji/wrench.png | Bin 2775 -> 0 bytes public/img/emoji/x.png | Bin 2044 -> 0 bytes public/img/emoji/yellow_heart.png | Bin 4414 -> 0 bytes public/img/emoji/yen.png | Bin 4989 -> 0 bytes public/img/emoji/yum.png | Bin 5886 -> 0 bytes public/img/emoji/zap.png | Bin 2233 -> 0 bytes public/img/emoji/zero.png | Bin 3590 -> 0 bytes public/img/emoji/zzz.png | Bin 2027 -> 0 bytes public/js/jquery-1.11.3.min.js | 5 - public/js/libs/clipboard-1.5.9.min.js | 7 - public/js/libs/emojify-1.1.0.min.js | 4 - public/js/libs/gitgraph.js | 399 - public/js/libs/jquery.are-you-sure.js | 192 - public/js/semantic-2.2.1.min.js | 19 - .../plugins/codemirror-5.17.0/.gitattributes | 8 - public/plugins/codemirror-5.17.0/.gitignore | 8 - public/plugins/codemirror-5.17.0/.npmignore | 10 - public/plugins/codemirror-5.17.0/.travis.yml | 4 - .../codemirror-5.17.0/addon/mode/loadmode.js | 64 - .../codemirror-5.17.0/addon/mode/multiplex.js | 123 - .../addon/mode/multiplex_test.js | 33 - .../codemirror-5.17.0/addon/mode/overlay.js | 85 - .../codemirror-5.17.0/addon/mode/simple.js | 213 - .../plugins/codemirror-5.17.0/mode/apl/apl.js | 174 - .../codemirror-5.17.0/mode/apl/index.html | 72 - .../mode/asciiarmor/asciiarmor.js | 73 - .../mode/asciiarmor/index.html | 46 - .../codemirror-5.17.0/mode/asn.1/asn.1.js | 204 - .../codemirror-5.17.0/mode/asn.1/index.html | 77 - .../mode/asterisk/asterisk.js | 196 - .../mode/asterisk/index.html | 154 - .../mode/brainfuck/brainfuck.js | 85 - .../mode/brainfuck/index.html | 85 - .../codemirror-5.17.0/mode/clike/clike.js | 786 - .../codemirror-5.17.0/mode/clike/index.html | 360 - .../codemirror-5.17.0/mode/clike/scala.html | 767 - .../codemirror-5.17.0/mode/clike/test.js | 55 - .../codemirror-5.17.0/mode/clojure/clojure.js | 306 - .../codemirror-5.17.0/mode/clojure/index.html | 91 - .../codemirror-5.17.0/mode/cmake/cmake.js | 97 - .../codemirror-5.17.0/mode/cmake/index.html | 129 - .../codemirror-5.17.0/mode/cobol/cobol.js | 255 - .../codemirror-5.17.0/mode/cobol/index.html | 210 - .../mode/coffeescript/coffeescript.js | 355 - .../mode/coffeescript/index.html | 740 - .../mode/commonlisp/commonlisp.js | 123 - .../mode/commonlisp/index.html | 177 - .../codemirror-5.17.0/mode/crystal/crystal.js | 391 - .../codemirror-5.17.0/mode/crystal/index.html | 119 - .../plugins/codemirror-5.17.0/mode/css/css.js | 825 - .../codemirror-5.17.0/mode/css/gss.html | 103 - .../codemirror-5.17.0/mode/css/gss_test.js | 17 - .../codemirror-5.17.0/mode/css/index.html | 75 - .../codemirror-5.17.0/mode/css/less.html | 152 - .../codemirror-5.17.0/mode/css/less_test.js | 54 - .../codemirror-5.17.0/mode/css/scss.html | 157 - .../codemirror-5.17.0/mode/css/scss_test.js | 110 - .../codemirror-5.17.0/mode/css/test.js | 200 - .../codemirror-5.17.0/mode/cypher/cypher.js | 146 - .../codemirror-5.17.0/mode/cypher/index.html | 63 - public/plugins/codemirror-5.17.0/mode/d/d.js | 218 - .../codemirror-5.17.0/mode/d/index.html | 273 - .../codemirror-5.17.0/mode/dart/dart.js | 157 - .../codemirror-5.17.0/mode/dart/index.html | 71 - .../codemirror-5.17.0/mode/diff/diff.js | 47 - .../codemirror-5.17.0/mode/diff/index.html | 117 - .../codemirror-5.17.0/mode/django/django.js | 356 - .../codemirror-5.17.0/mode/django/index.html | 73 - .../mode/dockerfile/dockerfile.js | 79 - .../mode/dockerfile/index.html | 73 - .../plugins/codemirror-5.17.0/mode/dtd/dtd.js | 142 - .../codemirror-5.17.0/mode/dtd/index.html | 89 - .../codemirror-5.17.0/mode/dylan/dylan.js | 344 - .../codemirror-5.17.0/mode/dylan/index.html | 407 - .../codemirror-5.17.0/mode/dylan/test.js | 88 - .../codemirror-5.17.0/mode/ebnf/ebnf.js | 195 - .../codemirror-5.17.0/mode/ebnf/index.html | 102 - .../plugins/codemirror-5.17.0/mode/ecl/ecl.js | 206 - .../codemirror-5.17.0/mode/ecl/index.html | 52 - .../codemirror-5.17.0/mode/eiffel/eiffel.js | 160 - .../codemirror-5.17.0/mode/eiffel/index.html | 429 - .../plugins/codemirror-5.17.0/mode/elm/elm.js | 205 - .../codemirror-5.17.0/mode/elm/index.html | 61 - .../codemirror-5.17.0/mode/erlang/erlang.js | 618 - .../codemirror-5.17.0/mode/erlang/index.html | 76 - .../codemirror-5.17.0/mode/factor/factor.js | 83 - .../codemirror-5.17.0/mode/factor/index.html | 77 - .../plugins/codemirror-5.17.0/mode/fcl/fcl.js | 173 - .../codemirror-5.17.0/mode/fcl/index.html | 108 - .../codemirror-5.17.0/mode/forth/forth.js | 180 - .../codemirror-5.17.0/mode/forth/index.html | 75 - .../codemirror-5.17.0/mode/fortran/fortran.js | 188 - .../codemirror-5.17.0/mode/fortran/index.html | 81 - .../plugins/codemirror-5.17.0/mode/gas/gas.js | 345 - .../codemirror-5.17.0/mode/gas/index.html | 68 - .../plugins/codemirror-5.17.0/mode/gfm/gfm.js | 130 - .../codemirror-5.17.0/mode/gfm/index.html | 93 - .../codemirror-5.17.0/mode/gfm/test.js | 236 - .../codemirror-5.17.0/mode/gherkin/gherkin.js | 178 - .../codemirror-5.17.0/mode/gherkin/index.html | 48 - .../plugins/codemirror-5.17.0/mode/go/go.js | 185 - .../codemirror-5.17.0/mode/go/index.html | 85 - .../codemirror-5.17.0/mode/groovy/groovy.js | 230 - .../codemirror-5.17.0/mode/groovy/index.html | 84 - .../codemirror-5.17.0/mode/haml/haml.js | 161 - .../codemirror-5.17.0/mode/haml/index.html | 79 - .../codemirror-5.17.0/mode/haml/test.js | 97 - .../mode/handlebars/handlebars.js | 62 - .../mode/handlebars/index.html | 79 - .../mode/haskell-literate/haskell-literate.js | 43 - .../mode/haskell-literate/index.html | 282 - .../codemirror-5.17.0/mode/haskell/haskell.js | 267 - .../codemirror-5.17.0/mode/haskell/index.html | 73 - .../codemirror-5.17.0/mode/haxe/haxe.js | 515 - .../codemirror-5.17.0/mode/haxe/index.html | 124 - .../mode/htmlembedded/htmlembedded.js | 28 - .../mode/htmlembedded/index.html | 60 - .../mode/htmlmixed/htmlmixed.js | 152 - .../mode/htmlmixed/index.html | 89 - .../codemirror-5.17.0/mode/http/http.js | 113 - .../codemirror-5.17.0/mode/http/index.html | 45 - .../plugins/codemirror-5.17.0/mode/idl/idl.js | 290 - .../codemirror-5.17.0/mode/idl/index.html | 64 - .../plugins/codemirror-5.17.0/mode/index.html | 164 - .../codemirror-5.17.0/mode/jade/index.html | 70 - .../codemirror-5.17.0/mode/jade/jade.js | 590 - .../mode/javascript/index.html | 114 - .../mode/javascript/javascript.js | 743 - .../mode/javascript/json-ld.html | 72 - .../codemirror-5.17.0/mode/javascript/test.js | 207 - .../mode/javascript/typescript.html | 61 - .../codemirror-5.17.0/mode/jinja2/index.html | 54 - .../codemirror-5.17.0/mode/jinja2/jinja2.js | 142 - .../codemirror-5.17.0/mode/jsx/index.html | 89 - .../plugins/codemirror-5.17.0/mode/jsx/jsx.js | 147 - .../codemirror-5.17.0/mode/jsx/test.js | 69 - .../codemirror-5.17.0/mode/julia/index.html | 195 - .../codemirror-5.17.0/mode/julia/julia.js | 392 - .../mode/livescript/index.html | 459 - .../mode/livescript/livescript.js | 280 - .../codemirror-5.17.0/mode/lua/index.html | 85 - .../plugins/codemirror-5.17.0/mode/lua/lua.js | 159 - .../mode/markdown/index.html | 361 - .../mode/markdown/markdown.js | 819 - .../codemirror-5.17.0/mode/markdown/test.js | 990 - .../mode/mathematica/index.html | 72 - .../mode/mathematica/mathematica.js | 176 - .../codemirror-5.17.0/mode/mbox/index.html | 44 - .../codemirror-5.17.0/mode/mbox/mbox.js | 129 - public/plugins/codemirror-5.17.0/mode/meta.js | 208 - .../codemirror-5.17.0/mode/mirc/index.html | 160 - .../codemirror-5.17.0/mode/mirc/mirc.js | 193 - .../codemirror-5.17.0/mode/mllike/index.html | 179 - .../codemirror-5.17.0/mode/mllike/mllike.js | 205 - .../mode/modelica/index.html | 67 - .../mode/modelica/modelica.js | 245 - .../codemirror-5.17.0/mode/mscgen/index.html | 151 - .../codemirror-5.17.0/mode/mscgen/mscgen.js | 169 - .../mode/mscgen/mscgen_test.js | 75 - .../mode/mscgen/msgenny_test.js | 71 - .../codemirror-5.17.0/mode/mscgen/xu_test.js | 75 - .../codemirror-5.17.0/mode/mumps/index.html | 85 - .../codemirror-5.17.0/mode/mumps/mumps.js | 148 - .../codemirror-5.17.0/mode/nginx/index.html | 181 - .../codemirror-5.17.0/mode/nginx/nginx.js | 178 - .../codemirror-5.17.0/mode/nsis/index.html | 80 - .../codemirror-5.17.0/mode/nsis/nsis.js | 95 - .../mode/ntriples/index.html | 45 - .../mode/ntriples/ntriples.js | 186 - .../codemirror-5.17.0/mode/octave/index.html | 83 - .../codemirror-5.17.0/mode/octave/octave.js | 135 - .../codemirror-5.17.0/mode/oz/index.html | 59 - .../plugins/codemirror-5.17.0/mode/oz/oz.js | 252 - .../codemirror-5.17.0/mode/pascal/index.html | 61 - .../codemirror-5.17.0/mode/pascal/pascal.js | 109 - .../codemirror-5.17.0/mode/pegjs/index.html | 66 - .../codemirror-5.17.0/mode/pegjs/pegjs.js | 114 - .../codemirror-5.17.0/mode/perl/index.html | 75 - .../codemirror-5.17.0/mode/perl/perl.js | 837 - .../codemirror-5.17.0/mode/php/index.html | 64 - .../plugins/codemirror-5.17.0/mode/php/php.js | 234 - .../codemirror-5.17.0/mode/php/test.js | 154 - .../codemirror-5.17.0/mode/pig/index.html | 53 - .../plugins/codemirror-5.17.0/mode/pig/pig.js | 178 - .../mode/powershell/index.html | 204 - .../mode/powershell/powershell.js | 396 - .../codemirror-5.17.0/mode/powershell/test.js | 72 - .../mode/properties/index.html | 53 - .../mode/properties/properties.js | 78 - .../mode/protobuf/index.html | 64 - .../mode/protobuf/protobuf.js | 68 - .../codemirror-5.17.0/mode/puppet/index.html | 121 - .../codemirror-5.17.0/mode/puppet/puppet.js | 220 - .../codemirror-5.17.0/mode/python/index.html | 198 - .../codemirror-5.17.0/mode/python/python.js | 340 - .../codemirror-5.17.0/mode/python/test.js | 30 - .../codemirror-5.17.0/mode/q/index.html | 144 - public/plugins/codemirror-5.17.0/mode/q/q.js | 139 - .../codemirror-5.17.0/mode/r/index.html | 85 - public/plugins/codemirror-5.17.0/mode/r/r.js | 164 - .../mode/rpm/changes/index.html | 66 - .../codemirror-5.17.0/mode/rpm/index.html | 149 - .../plugins/codemirror-5.17.0/mode/rpm/rpm.js | 109 - .../codemirror-5.17.0/mode/rst/index.html | 535 - .../plugins/codemirror-5.17.0/mode/rst/rst.js | 557 - .../codemirror-5.17.0/mode/ruby/index.html | 183 - .../codemirror-5.17.0/mode/ruby/ruby.js | 285 - .../codemirror-5.17.0/mode/ruby/test.js | 14 - .../codemirror-5.17.0/mode/rust/index.html | 64 - .../codemirror-5.17.0/mode/rust/rust.js | 71 - .../codemirror-5.17.0/mode/rust/test.js | 39 - .../codemirror-5.17.0/mode/sas/index.html | 81 - .../plugins/codemirror-5.17.0/mode/sas/sas.js | 315 - .../codemirror-5.17.0/mode/sass/index.html | 66 - .../codemirror-5.17.0/mode/sass/sass.js | 414 - .../codemirror-5.17.0/mode/scheme/index.html | 77 - .../codemirror-5.17.0/mode/scheme/scheme.js | 249 - .../codemirror-5.17.0/mode/shell/index.html | 66 - .../codemirror-5.17.0/mode/shell/shell.js | 139 - .../codemirror-5.17.0/mode/shell/test.js | 58 - .../codemirror-5.17.0/mode/sieve/index.html | 93 - .../codemirror-5.17.0/mode/sieve/sieve.js | 193 - .../codemirror-5.17.0/mode/slim/index.html | 96 - .../codemirror-5.17.0/mode/slim/slim.js | 575 - .../codemirror-5.17.0/mode/slim/test.js | 96 - .../mode/smalltalk/index.html | 68 - .../mode/smalltalk/smalltalk.js | 168 - .../codemirror-5.17.0/mode/smarty/index.html | 138 - .../codemirror-5.17.0/mode/smarty/smarty.js | 225 - .../codemirror-5.17.0/mode/solr/index.html | 57 - .../codemirror-5.17.0/mode/solr/solr.js | 104 - .../codemirror-5.17.0/mode/soy/index.html | 68 - .../plugins/codemirror-5.17.0/mode/soy/soy.js | 199 - .../codemirror-5.17.0/mode/sparql/index.html | 61 - .../codemirror-5.17.0/mode/sparql/sparql.js | 180 - .../mode/spreadsheet/index.html | 42 - .../mode/spreadsheet/spreadsheet.js | 112 - .../codemirror-5.17.0/mode/sql/index.html | 86 - .../plugins/codemirror-5.17.0/mode/sql/sql.js | 413 - .../codemirror-5.17.0/mode/stex/index.html | 110 - .../codemirror-5.17.0/mode/stex/stex.js | 251 - .../codemirror-5.17.0/mode/stex/test.js | 123 - .../codemirror-5.17.0/mode/stylus/index.html | 106 - .../codemirror-5.17.0/mode/stylus/stylus.js | 769 - .../codemirror-5.17.0/mode/swift/index.html | 88 - .../codemirror-5.17.0/mode/swift/swift.js | 202 - .../codemirror-5.17.0/mode/tcl/index.html | 142 - .../plugins/codemirror-5.17.0/mode/tcl/tcl.js | 139 - .../codemirror-5.17.0/mode/textile/index.html | 191 - .../codemirror-5.17.0/mode/textile/test.js | 417 - .../codemirror-5.17.0/mode/textile/textile.js | 469 - .../mode/tiddlywiki/index.html | 154 - .../mode/tiddlywiki/tiddlywiki.css | 14 - .../mode/tiddlywiki/tiddlywiki.js | 308 - .../codemirror-5.17.0/mode/tiki/index.html | 95 - .../codemirror-5.17.0/mode/tiki/tiki.css | 26 - .../codemirror-5.17.0/mode/tiki/tiki.js | 312 - .../codemirror-5.17.0/mode/toml/index.html | 73 - .../codemirror-5.17.0/mode/toml/toml.js | 88 - .../codemirror-5.17.0/mode/tornado/index.html | 63 - .../codemirror-5.17.0/mode/tornado/tornado.js | 68 - .../codemirror-5.17.0/mode/troff/index.html | 146 - .../codemirror-5.17.0/mode/troff/troff.js | 84 - .../mode/ttcn-cfg/index.html | 115 - .../mode/ttcn-cfg/ttcn-cfg.js | 214 - .../codemirror-5.17.0/mode/ttcn/index.html | 118 - .../codemirror-5.17.0/mode/ttcn/ttcn.js | 283 - .../codemirror-5.17.0/mode/turtle/index.html | 50 - .../codemirror-5.17.0/mode/turtle/turtle.js | 162 - .../codemirror-5.17.0/mode/twig/index.html | 45 - .../codemirror-5.17.0/mode/twig/twig.js | 141 - .../codemirror-5.17.0/mode/vb/index.html | 102 - .../plugins/codemirror-5.17.0/mode/vb/vb.js | 276 - .../mode/vbscript/index.html | 55 - .../mode/vbscript/vbscript.js | 350 - .../mode/velocity/index.html | 120 - .../mode/velocity/velocity.js | 201 - .../codemirror-5.17.0/mode/verilog/index.html | 120 - .../codemirror-5.17.0/mode/verilog/test.js | 273 - .../codemirror-5.17.0/mode/verilog/verilog.js | 537 - .../codemirror-5.17.0/mode/vhdl/index.html | 95 - .../codemirror-5.17.0/mode/vhdl/vhdl.js | 189 - .../codemirror-5.17.0/mode/vue/index.html | 69 - .../plugins/codemirror-5.17.0/mode/vue/vue.js | 69 - .../codemirror-5.17.0/mode/webidl/index.html | 71 - .../codemirror-5.17.0/mode/webidl/webidl.js | 195 - .../codemirror-5.17.0/mode/xml/index.html | 61 - .../codemirror-5.17.0/mode/xml/test.js | 51 - .../plugins/codemirror-5.17.0/mode/xml/xml.js | 394 - .../codemirror-5.17.0/mode/xquery/index.html | 210 - .../codemirror-5.17.0/mode/xquery/test.js | 67 - .../codemirror-5.17.0/mode/xquery/xquery.js | 437 - .../codemirror-5.17.0/mode/yacas/index.html | 87 - .../codemirror-5.17.0/mode/yacas/yacas.js | 204 - .../mode/yaml-frontmatter/index.html | 121 - .../mode/yaml-frontmatter/yaml-frontmatter.js | 68 - .../codemirror-5.17.0/mode/yaml/index.html | 80 - .../codemirror-5.17.0/mode/yaml/yaml.js | 117 - .../codemirror-5.17.0/mode/z80/index.html | 53 - .../plugins/codemirror-5.17.0/mode/z80/z80.js | 116 - public/plugins/dropzone-4.2.0/dropzone.css | 388 - public/plugins/dropzone-4.2.0/dropzone.js | 1752 - public/plugins/highlight-9.6.0/default.css | 99 - public/plugins/highlight-9.6.0/github.css | 99 - .../plugins/highlight-9.6.0/highlight.pack.js | 3 - .../jquery.datetimepicker.css | 545 - .../jquery.datetimepicker.js | 2073 - .../jquery.minicolors.css | 323 - .../jquery.minicolors.min.js | 11 - .../jquery.minicolors.png | Bin 68627 -> 0 bytes public/plugins/pdfjs-1.4.20/LICENSE | 177 - public/plugins/pdfjs-1.4.20/build/pdf.js | 10375 ---- .../plugins/pdfjs-1.4.20/build/pdf.worker.js | 42034 ---------------- .../plugins/pdfjs-1.4.20/web/compatibility.js | 593 - public/plugins/pdfjs-1.4.20/web/debugger.js | 618 - .../web/images/annotation-check.svg | 11 - .../web/images/annotation-comment.svg | 16 - .../web/images/annotation-help.svg | 26 - .../web/images/annotation-insert.svg | 10 - .../web/images/annotation-key.svg | 11 - .../web/images/annotation-newparagraph.svg | 11 - .../web/images/annotation-noicon.svg | 7 - .../web/images/annotation-note.svg | 42 - .../web/images/annotation-paragraph.svg | 16 - .../web/images/findbarButton-next-rtl.png | Bin 199 -> 0 bytes .../web/images/findbarButton-next-rtl@2x.png | Bin 304 -> 0 bytes .../web/images/findbarButton-next.png | Bin 193 -> 0 bytes .../web/images/findbarButton-next@2x.png | Bin 296 -> 0 bytes .../web/images/findbarButton-previous-rtl.png | Bin 193 -> 0 bytes .../images/findbarButton-previous-rtl@2x.png | Bin 296 -> 0 bytes .../web/images/findbarButton-previous.png | Bin 199 -> 0 bytes .../web/images/findbarButton-previous@2x.png | Bin 304 -> 0 bytes .../plugins/pdfjs-1.4.20/web/images/grab.cur | Bin 326 -> 0 bytes .../pdfjs-1.4.20/web/images/grabbing.cur | Bin 326 -> 0 bytes .../pdfjs-1.4.20/web/images/loading-icon.gif | Bin 2545 -> 0 bytes .../pdfjs-1.4.20/web/images/loading-small.png | Bin 7402 -> 0 bytes .../web/images/loading-small@2x.png | Bin 16131 -> 0 bytes ...ondaryToolbarButton-documentProperties.png | Bin 403 -> 0 bytes ...aryToolbarButton-documentProperties@2x.png | Bin 933 -> 0 bytes .../secondaryToolbarButton-firstPage.png | Bin 179 -> 0 bytes .../secondaryToolbarButton-firstPage@2x.png | Bin 266 -> 0 bytes .../secondaryToolbarButton-handTool.png | Bin 301 -> 0 bytes .../secondaryToolbarButton-handTool@2x.png | Bin 583 -> 0 bytes .../secondaryToolbarButton-lastPage.png | Bin 175 -> 0 bytes .../secondaryToolbarButton-lastPage@2x.png | Bin 276 -> 0 bytes .../secondaryToolbarButton-rotateCcw.png | Bin 360 -> 0 bytes .../secondaryToolbarButton-rotateCcw@2x.png | Bin 731 -> 0 bytes .../secondaryToolbarButton-rotateCw.png | Bin 359 -> 0 bytes .../secondaryToolbarButton-rotateCw@2x.png | Bin 714 -> 0 bytes .../pdfjs-1.4.20/web/images/shadow.png | Bin 290 -> 0 bytes .../pdfjs-1.4.20/web/images/texture.png | Bin 2418 -> 0 bytes .../web/images/toolbarButton-bookmark.png | Bin 174 -> 0 bytes .../web/images/toolbarButton-bookmark@2x.png | Bin 260 -> 0 bytes .../web/images/toolbarButton-download.png | Bin 259 -> 0 bytes .../web/images/toolbarButton-download@2x.png | Bin 425 -> 0 bytes .../web/images/toolbarButton-menuArrows.png | Bin 108 -> 0 bytes .../images/toolbarButton-menuArrows@2x.png | Bin 152 -> 0 bytes .../web/images/toolbarButton-openFile.png | Bin 295 -> 0 bytes .../web/images/toolbarButton-openFile@2x.png | Bin 550 -> 0 bytes .../web/images/toolbarButton-pageDown-rtl.png | Bin 242 -> 0 bytes .../images/toolbarButton-pageDown-rtl@2x.png | Bin 398 -> 0 bytes .../web/images/toolbarButton-pageDown.png | Bin 238 -> 0 bytes .../web/images/toolbarButton-pageDown@2x.png | Bin 396 -> 0 bytes .../web/images/toolbarButton-pageUp-rtl.png | Bin 245 -> 0 bytes .../images/toolbarButton-pageUp-rtl@2x.png | Bin 405 -> 0 bytes .../web/images/toolbarButton-pageUp.png | Bin 246 -> 0 bytes .../web/images/toolbarButton-pageUp@2x.png | Bin 403 -> 0 bytes .../images/toolbarButton-presentationMode.png | Bin 321 -> 0 bytes .../toolbarButton-presentationMode@2x.png | Bin 586 -> 0 bytes .../web/images/toolbarButton-print.png | Bin 257 -> 0 bytes .../web/images/toolbarButton-print@2x.png | Bin 464 -> 0 bytes .../web/images/toolbarButton-search.png | Bin 309 -> 0 bytes .../web/images/toolbarButton-search@2x.png | Bin 653 -> 0 bytes ...olbarButton-secondaryToolbarToggle-rtl.png | Bin 246 -> 0 bytes ...arButton-secondaryToolbarToggle-rtl@2x.png | Bin 456 -> 0 bytes .../toolbarButton-secondaryToolbarToggle.png | Bin 243 -> 0 bytes ...oolbarButton-secondaryToolbarToggle@2x.png | Bin 458 -> 0 bytes .../toolbarButton-sidebarToggle-rtl.png | Bin 225 -> 0 bytes .../toolbarButton-sidebarToggle-rtl@2x.png | Bin 344 -> 0 bytes .../images/toolbarButton-sidebarToggle.png | Bin 225 -> 0 bytes .../images/toolbarButton-sidebarToggle@2x.png | Bin 331 -> 0 bytes .../images/toolbarButton-viewAttachments.png | Bin 384 -> 0 bytes .../toolbarButton-viewAttachments@2x.png | Bin 871 -> 0 bytes .../images/toolbarButton-viewOutline-rtl.png | Bin 177 -> 0 bytes .../toolbarButton-viewOutline-rtl@2x.png | Bin 394 -> 0 bytes .../web/images/toolbarButton-viewOutline.png | Bin 178 -> 0 bytes .../images/toolbarButton-viewOutline@2x.png | Bin 331 -> 0 bytes .../images/toolbarButton-viewThumbnail.png | Bin 185 -> 0 bytes .../images/toolbarButton-viewThumbnail@2x.png | Bin 220 -> 0 bytes .../web/images/toolbarButton-zoomIn.png | Bin 136 -> 0 bytes .../web/images/toolbarButton-zoomIn@2x.png | Bin 160 -> 0 bytes .../web/images/toolbarButton-zoomOut.png | Bin 88 -> 0 bytes .../web/images/toolbarButton-zoomOut@2x.png | Bin 109 -> 0 bytes .../web/images/treeitem-collapsed-rtl.png | Bin 183 -> 0 bytes .../web/images/treeitem-collapsed-rtl@2x.png | Bin 205 -> 0 bytes .../web/images/treeitem-collapsed.png | Bin 128 -> 0 bytes .../web/images/treeitem-collapsed@2x.png | Bin 149 -> 0 bytes .../web/images/treeitem-expanded.png | Bin 125 -> 0 bytes .../web/images/treeitem-expanded@2x.png | Bin 172 -> 0 bytes public/plugins/pdfjs-1.4.20/web/viewer.css | 2122 - public/plugins/pdfjs-1.4.20/web/viewer.html | 422 - public/plugins/pdfjs-1.4.20/web/viewer.js | 7952 --- .../simplemde-1.10.1/simplemde.min.css | 7 - .../plugins/simplemde-1.10.1/simplemde.min.js | 14 - 1291 files changed, 121192 deletions(-) delete mode 100644 public/assets/font-awesome-4.6.3/css/font-awesome.min.css delete mode 100644 public/assets/font-awesome-4.6.3/fonts/FontAwesome.otf delete mode 100644 public/assets/font-awesome-4.6.3/fonts/fontawesome-webfont.eot delete mode 100644 public/assets/font-awesome-4.6.3/fonts/fontawesome-webfont.svg delete mode 100644 public/assets/font-awesome-4.6.3/fonts/fontawesome-webfont.ttf delete mode 100644 public/assets/font-awesome-4.6.3/fonts/fontawesome-webfont.woff delete mode 100644 public/assets/font-awesome-4.6.3/fonts/fontawesome-webfont.woff2 delete mode 100755 public/assets/octicons-4.3.0/octicons.eot delete mode 100755 public/assets/octicons-4.3.0/octicons.min.css delete mode 100755 public/assets/octicons-4.3.0/octicons.svg delete mode 100755 public/assets/octicons-4.3.0/octicons.ttf delete mode 100755 public/assets/octicons-4.3.0/octicons.woff delete mode 100755 public/assets/octicons-4.3.0/octicons.woff2 delete mode 100755 public/css/semantic-2.2.1.min.css delete mode 100644 public/img/emoji/+1.png delete mode 100644 public/img/emoji/-1.png delete mode 100644 public/img/emoji/100.png delete mode 100644 public/img/emoji/1234.png delete mode 100644 public/img/emoji/8ball.png delete mode 100644 public/img/emoji/a.png delete mode 100644 public/img/emoji/ab.png delete mode 100644 public/img/emoji/abc.png delete mode 100644 public/img/emoji/abcd.png delete mode 100644 public/img/emoji/accept.png delete mode 100644 public/img/emoji/aerial_tramway.png delete mode 100644 public/img/emoji/airplane.png delete mode 100644 public/img/emoji/alarm_clock.png delete mode 100644 public/img/emoji/alien.png delete mode 100644 public/img/emoji/ambulance.png delete mode 100644 public/img/emoji/anchor.png delete mode 100644 public/img/emoji/angel.png delete mode 100644 public/img/emoji/anger.png delete mode 100644 public/img/emoji/angry.png delete mode 100644 public/img/emoji/anguished.png delete mode 100644 public/img/emoji/ant.png delete mode 100644 public/img/emoji/apple.png delete mode 100644 public/img/emoji/aquarius.png delete mode 100644 public/img/emoji/aries.png delete mode 100644 public/img/emoji/arrow_backward.png delete mode 100644 public/img/emoji/arrow_double_down.png delete mode 100644 public/img/emoji/arrow_double_up.png delete mode 100644 public/img/emoji/arrow_down.png delete mode 100644 public/img/emoji/arrow_down_small.png delete mode 100644 public/img/emoji/arrow_forward.png delete mode 100644 public/img/emoji/arrow_heading_down.png delete mode 100644 public/img/emoji/arrow_heading_up.png delete mode 100644 public/img/emoji/arrow_left.png delete mode 100644 public/img/emoji/arrow_lower_left.png delete mode 100644 public/img/emoji/arrow_lower_right.png delete mode 100644 public/img/emoji/arrow_right.png delete mode 100644 public/img/emoji/arrow_right_hook.png delete mode 100644 public/img/emoji/arrow_up.png delete mode 100644 public/img/emoji/arrow_up_down.png delete mode 100644 public/img/emoji/arrow_up_small.png delete mode 100644 public/img/emoji/arrow_upper_left.png delete mode 100644 public/img/emoji/arrow_upper_right.png delete mode 100644 public/img/emoji/arrows_clockwise.png delete mode 100644 public/img/emoji/arrows_counterclockwise.png delete mode 100644 public/img/emoji/art.png delete mode 100644 public/img/emoji/articulated_lorry.png delete mode 100644 public/img/emoji/astonished.png delete mode 100644 public/img/emoji/atm.png delete mode 100644 public/img/emoji/b.png delete mode 100644 public/img/emoji/baby.png delete mode 100644 public/img/emoji/baby_bottle.png delete mode 100644 public/img/emoji/baby_chick.png delete mode 100644 public/img/emoji/baby_symbol.png delete mode 100644 public/img/emoji/back.png delete mode 100644 public/img/emoji/baggage_claim.png delete mode 100644 public/img/emoji/balloon.png delete mode 100644 public/img/emoji/ballot_box_with_check.png delete mode 100644 public/img/emoji/bamboo.png delete mode 100644 public/img/emoji/banana.png delete mode 100644 public/img/emoji/bangbang.png delete mode 100644 public/img/emoji/bank.png delete mode 100644 public/img/emoji/bar_chart.png delete mode 100644 public/img/emoji/barber.png delete mode 100644 public/img/emoji/baseball.png delete mode 100644 public/img/emoji/basketball.png delete mode 100644 public/img/emoji/bath.png delete mode 100644 public/img/emoji/bathtub.png delete mode 100644 public/img/emoji/battery.png delete mode 100644 public/img/emoji/bear.png delete mode 100644 public/img/emoji/bee.png delete mode 100644 public/img/emoji/beer.png delete mode 100644 public/img/emoji/beers.png delete mode 100644 public/img/emoji/beetle.png delete mode 100644 public/img/emoji/beginner.png delete mode 100644 public/img/emoji/bell.png delete mode 100644 public/img/emoji/bento.png delete mode 100644 public/img/emoji/bicyclist.png delete mode 100644 public/img/emoji/bike.png delete mode 100644 public/img/emoji/bikini.png delete mode 100644 public/img/emoji/bird.png delete mode 100644 public/img/emoji/birthday.png delete mode 100644 public/img/emoji/black_circle.png delete mode 100644 public/img/emoji/black_joker.png delete mode 100644 public/img/emoji/black_medium_small_square.png delete mode 100644 public/img/emoji/black_medium_square.png delete mode 100644 public/img/emoji/black_nib.png delete mode 100644 public/img/emoji/black_small_square.png delete mode 100644 public/img/emoji/black_square.png delete mode 100644 public/img/emoji/black_square_button.png delete mode 100644 public/img/emoji/blossom.png delete mode 100644 public/img/emoji/blowfish.png delete mode 100644 public/img/emoji/blue_book.png delete mode 100644 public/img/emoji/blue_car.png delete mode 100644 public/img/emoji/blue_heart.png delete mode 100644 public/img/emoji/blush.png delete mode 100644 public/img/emoji/boar.png delete mode 100644 public/img/emoji/boat.png delete mode 100644 public/img/emoji/bomb.png delete mode 100644 public/img/emoji/book.png delete mode 100644 public/img/emoji/bookmark.png delete mode 100644 public/img/emoji/bookmark_tabs.png delete mode 100644 public/img/emoji/books.png delete mode 100644 public/img/emoji/boom.png delete mode 100644 public/img/emoji/boot.png delete mode 100644 public/img/emoji/bouquet.png delete mode 100644 public/img/emoji/bow.png delete mode 100644 public/img/emoji/bowling.png delete mode 100644 public/img/emoji/bowtie.png delete mode 100644 public/img/emoji/boy.png delete mode 100644 public/img/emoji/bread.png delete mode 100644 public/img/emoji/bride_with_veil.png delete mode 100644 public/img/emoji/bridge_at_night.png delete mode 100644 public/img/emoji/briefcase.png delete mode 100644 public/img/emoji/broken_heart.png delete mode 100644 public/img/emoji/bug.png delete mode 100644 public/img/emoji/bulb.png delete mode 100644 public/img/emoji/bullettrain_front.png delete mode 100644 public/img/emoji/bullettrain_side.png delete mode 100644 public/img/emoji/bus.png delete mode 100644 public/img/emoji/busstop.png delete mode 100644 public/img/emoji/bust_in_silhouette.png delete mode 100644 public/img/emoji/busts_in_silhouette.png delete mode 100644 public/img/emoji/cactus.png delete mode 100644 public/img/emoji/cake.png delete mode 100644 public/img/emoji/calendar.png delete mode 100644 public/img/emoji/calling.png delete mode 100644 public/img/emoji/camel.png delete mode 100644 public/img/emoji/camera.png delete mode 100644 public/img/emoji/cancer.png delete mode 100644 public/img/emoji/candy.png delete mode 100644 public/img/emoji/capital_abcd.png delete mode 100644 public/img/emoji/capricorn.png delete mode 100644 public/img/emoji/car.png delete mode 100644 public/img/emoji/card_index.png delete mode 100644 public/img/emoji/carousel_horse.png delete mode 100644 public/img/emoji/cat.png delete mode 100644 public/img/emoji/cat2.png delete mode 100644 public/img/emoji/cd.png delete mode 100644 public/img/emoji/chart.png delete mode 100644 public/img/emoji/chart_with_downwards_trend.png delete mode 100644 public/img/emoji/chart_with_upwards_trend.png delete mode 100644 public/img/emoji/checkered_flag.png delete mode 100644 public/img/emoji/cherries.png delete mode 100644 public/img/emoji/cherry_blossom.png delete mode 100644 public/img/emoji/chestnut.png delete mode 100644 public/img/emoji/chicken.png delete mode 100644 public/img/emoji/children_crossing.png delete mode 100644 public/img/emoji/chocolate_bar.png delete mode 100644 public/img/emoji/christmas_tree.png delete mode 100644 public/img/emoji/church.png delete mode 100644 public/img/emoji/cinema.png delete mode 100644 public/img/emoji/circus_tent.png delete mode 100644 public/img/emoji/city_sunrise.png delete mode 100644 public/img/emoji/city_sunset.png delete mode 100644 public/img/emoji/cl.png delete mode 100644 public/img/emoji/clap.png delete mode 100644 public/img/emoji/clapper.png delete mode 100644 public/img/emoji/clipboard.png delete mode 100644 public/img/emoji/clock1.png delete mode 100644 public/img/emoji/clock10.png delete mode 100644 public/img/emoji/clock1030.png delete mode 100644 public/img/emoji/clock11.png delete mode 100644 public/img/emoji/clock1130.png delete mode 100644 public/img/emoji/clock12.png delete mode 100644 public/img/emoji/clock1230.png delete mode 100644 public/img/emoji/clock130.png delete mode 100644 public/img/emoji/clock2.png delete mode 100644 public/img/emoji/clock230.png delete mode 100644 public/img/emoji/clock3.png delete mode 100644 public/img/emoji/clock330.png delete mode 100644 public/img/emoji/clock4.png delete mode 100644 public/img/emoji/clock430.png delete mode 100644 public/img/emoji/clock5.png delete mode 100644 public/img/emoji/clock530.png delete mode 100644 public/img/emoji/clock6.png delete mode 100644 public/img/emoji/clock630.png delete mode 100644 public/img/emoji/clock7.png delete mode 100644 public/img/emoji/clock730.png delete mode 100644 public/img/emoji/clock8.png delete mode 100644 public/img/emoji/clock830.png delete mode 100644 public/img/emoji/clock9.png delete mode 100644 public/img/emoji/clock930.png delete mode 100644 public/img/emoji/closed_book.png delete mode 100644 public/img/emoji/closed_lock_with_key.png delete mode 100644 public/img/emoji/closed_umbrella.png delete mode 100644 public/img/emoji/cloud.png delete mode 100644 public/img/emoji/clubs.png delete mode 100644 public/img/emoji/cn.png delete mode 100644 public/img/emoji/cocktail.png delete mode 100644 public/img/emoji/coffee.png delete mode 100644 public/img/emoji/cold_sweat.png delete mode 100644 public/img/emoji/collision.png delete mode 100644 public/img/emoji/computer.png delete mode 100644 public/img/emoji/confetti_ball.png delete mode 100644 public/img/emoji/confounded.png delete mode 100644 public/img/emoji/confused.png delete mode 100644 public/img/emoji/congratulations.png delete mode 100644 public/img/emoji/construction.png delete mode 100644 public/img/emoji/construction_worker.png delete mode 100644 public/img/emoji/convenience_store.png delete mode 100644 public/img/emoji/cookie.png delete mode 100644 public/img/emoji/cool.png delete mode 100644 public/img/emoji/cop.png delete mode 100644 public/img/emoji/copyright.png delete mode 100644 public/img/emoji/corn.png delete mode 100644 public/img/emoji/couple.png delete mode 100644 public/img/emoji/couple_with_heart.png delete mode 100644 public/img/emoji/couplekiss.png delete mode 100644 public/img/emoji/cow.png delete mode 100644 public/img/emoji/cow2.png delete mode 100644 public/img/emoji/credit_card.png delete mode 100644 public/img/emoji/crescent_moon.png delete mode 100644 public/img/emoji/crocodile.png delete mode 100644 public/img/emoji/crossed_flags.png delete mode 100644 public/img/emoji/crown.png delete mode 100644 public/img/emoji/cry.png delete mode 100644 public/img/emoji/crying_cat_face.png delete mode 100644 public/img/emoji/crystal_ball.png delete mode 100644 public/img/emoji/cupid.png delete mode 100644 public/img/emoji/curly_loop.png delete mode 100644 public/img/emoji/currency_exchange.png delete mode 100644 public/img/emoji/curry.png delete mode 100644 public/img/emoji/custard.png delete mode 100644 public/img/emoji/customs.png delete mode 100644 public/img/emoji/cyclone.png delete mode 100644 public/img/emoji/dancer.png delete mode 100644 public/img/emoji/dancers.png delete mode 100644 public/img/emoji/dango.png delete mode 100644 public/img/emoji/dart.png delete mode 100644 public/img/emoji/dash.png delete mode 100644 public/img/emoji/date.png delete mode 100644 public/img/emoji/de.png delete mode 100644 public/img/emoji/deciduous_tree.png delete mode 100644 public/img/emoji/department_store.png delete mode 100644 public/img/emoji/diamond_shape_with_a_dot_inside.png delete mode 100644 public/img/emoji/diamonds.png delete mode 100644 public/img/emoji/disappointed.png delete mode 100644 public/img/emoji/disappointed_relieved.png delete mode 100644 public/img/emoji/dizzy.png delete mode 100644 public/img/emoji/dizzy_face.png delete mode 100644 public/img/emoji/do_not_litter.png delete mode 100644 public/img/emoji/dog.png delete mode 100644 public/img/emoji/dog2.png delete mode 100644 public/img/emoji/dollar.png delete mode 100644 public/img/emoji/dolls.png delete mode 100644 public/img/emoji/dolphin.png delete mode 100644 public/img/emoji/donut.png delete mode 100644 public/img/emoji/door.png delete mode 100644 public/img/emoji/doughnut.png delete mode 100644 public/img/emoji/dragon.png delete mode 100644 public/img/emoji/dragon_face.png delete mode 100644 public/img/emoji/dress.png delete mode 100644 public/img/emoji/dromedary_camel.png delete mode 100644 public/img/emoji/droplet.png delete mode 100644 public/img/emoji/dvd.png delete mode 100644 public/img/emoji/e-mail.png delete mode 100644 public/img/emoji/ear.png delete mode 100644 public/img/emoji/ear_of_rice.png delete mode 100644 public/img/emoji/earth_africa.png delete mode 100644 public/img/emoji/earth_americas.png delete mode 100644 public/img/emoji/earth_asia.png delete mode 100644 public/img/emoji/egg.png delete mode 100644 public/img/emoji/eggplant.png delete mode 100644 public/img/emoji/eight.png delete mode 100644 public/img/emoji/eight_pointed_black_star.png delete mode 100644 public/img/emoji/eight_spoked_asterisk.png delete mode 100644 public/img/emoji/electric_plug.png delete mode 100644 public/img/emoji/elephant.png delete mode 100644 public/img/emoji/email.png delete mode 100644 public/img/emoji/end.png delete mode 100644 public/img/emoji/envelope.png delete mode 100644 public/img/emoji/es.png delete mode 100644 public/img/emoji/euro.png delete mode 100644 public/img/emoji/european_castle.png delete mode 100644 public/img/emoji/european_post_office.png delete mode 100644 public/img/emoji/evergreen_tree.png delete mode 100644 public/img/emoji/exclamation.png delete mode 100644 public/img/emoji/expressionless.png delete mode 100644 public/img/emoji/eyeglasses.png delete mode 100644 public/img/emoji/eyes.png delete mode 100644 public/img/emoji/facepunch.png delete mode 100644 public/img/emoji/factory.png delete mode 100644 public/img/emoji/fallen_leaf.png delete mode 100644 public/img/emoji/family.png delete mode 100644 public/img/emoji/fast_forward.png delete mode 100644 public/img/emoji/fax.png delete mode 100644 public/img/emoji/fearful.png delete mode 100644 public/img/emoji/feelsgood.png delete mode 100644 public/img/emoji/feet.png delete mode 100644 public/img/emoji/ferris_wheel.png delete mode 100644 public/img/emoji/file_folder.png delete mode 100644 public/img/emoji/finnadie.png delete mode 100644 public/img/emoji/fire.png delete mode 100644 public/img/emoji/fire_engine.png delete mode 100644 public/img/emoji/fireworks.png delete mode 100644 public/img/emoji/first_quarter_moon.png delete mode 100644 public/img/emoji/first_quarter_moon_with_face.png delete mode 100644 public/img/emoji/fish.png delete mode 100644 public/img/emoji/fish_cake.png delete mode 100644 public/img/emoji/fishing_pole_and_fish.png delete mode 100644 public/img/emoji/fist.png delete mode 100644 public/img/emoji/five.png delete mode 100644 public/img/emoji/flags.png delete mode 100644 public/img/emoji/flashlight.png delete mode 100644 public/img/emoji/floppy_disk.png delete mode 100644 public/img/emoji/flower_playing_cards.png delete mode 100644 public/img/emoji/flushed.png delete mode 100644 public/img/emoji/foggy.png delete mode 100644 public/img/emoji/football.png delete mode 100644 public/img/emoji/fork_and_knife.png delete mode 100644 public/img/emoji/fountain.png delete mode 100644 public/img/emoji/four.png delete mode 100644 public/img/emoji/four_leaf_clover.png delete mode 100644 public/img/emoji/fr.png delete mode 100644 public/img/emoji/free.png delete mode 100644 public/img/emoji/fried_shrimp.png delete mode 100644 public/img/emoji/fries.png delete mode 100644 public/img/emoji/frog.png delete mode 100644 public/img/emoji/frowning.png delete mode 100644 public/img/emoji/fu.png delete mode 100644 public/img/emoji/fuelpump.png delete mode 100644 public/img/emoji/full_moon.png delete mode 100644 public/img/emoji/full_moon_with_face.png delete mode 100644 public/img/emoji/game_die.png delete mode 100644 public/img/emoji/gb.png delete mode 100644 public/img/emoji/gem.png delete mode 100644 public/img/emoji/gemini.png delete mode 100644 public/img/emoji/ghost.png delete mode 100644 public/img/emoji/gift.png delete mode 100644 public/img/emoji/gift_heart.png delete mode 100644 public/img/emoji/girl.png delete mode 100644 public/img/emoji/globe_with_meridians.png delete mode 100644 public/img/emoji/goat.png delete mode 100644 public/img/emoji/goberserk.png delete mode 100644 public/img/emoji/godmode.png delete mode 100644 public/img/emoji/golf.png delete mode 100644 public/img/emoji/grapes.png delete mode 100644 public/img/emoji/green_apple.png delete mode 100644 public/img/emoji/green_book.png delete mode 100644 public/img/emoji/green_heart.png delete mode 100644 public/img/emoji/grey_exclamation.png delete mode 100644 public/img/emoji/grey_question.png delete mode 100644 public/img/emoji/grimacing.png delete mode 100644 public/img/emoji/grin.png delete mode 100644 public/img/emoji/grinning.png delete mode 100644 public/img/emoji/guardsman.png delete mode 100644 public/img/emoji/guitar.png delete mode 100644 public/img/emoji/gun.png delete mode 100644 public/img/emoji/haircut.png delete mode 100644 public/img/emoji/hamburger.png delete mode 100644 public/img/emoji/hammer.png delete mode 100644 public/img/emoji/hamster.png delete mode 100644 public/img/emoji/hand.png delete mode 100644 public/img/emoji/handbag.png delete mode 100644 public/img/emoji/hankey.png delete mode 100644 public/img/emoji/hash.png delete mode 100644 public/img/emoji/hatched_chick.png delete mode 100644 public/img/emoji/hatching_chick.png delete mode 100644 public/img/emoji/headphones.png delete mode 100644 public/img/emoji/hear_no_evil.png delete mode 100644 public/img/emoji/heart.png delete mode 100644 public/img/emoji/heart_decoration.png delete mode 100644 public/img/emoji/heart_eyes.png delete mode 100644 public/img/emoji/heart_eyes_cat.png delete mode 100644 public/img/emoji/heartbeat.png delete mode 100644 public/img/emoji/heartpulse.png delete mode 100644 public/img/emoji/hearts.png delete mode 100644 public/img/emoji/heavy_check_mark.png delete mode 100644 public/img/emoji/heavy_division_sign.png delete mode 100644 public/img/emoji/heavy_dollar_sign.png delete mode 100644 public/img/emoji/heavy_exclamation_mark.png delete mode 100644 public/img/emoji/heavy_minus_sign.png delete mode 100644 public/img/emoji/heavy_multiplication_x.png delete mode 100644 public/img/emoji/heavy_plus_sign.png delete mode 100644 public/img/emoji/helicopter.png delete mode 100644 public/img/emoji/herb.png delete mode 100644 public/img/emoji/hibiscus.png delete mode 100644 public/img/emoji/high_brightness.png delete mode 100644 public/img/emoji/high_heel.png delete mode 100644 public/img/emoji/hocho.png delete mode 100644 public/img/emoji/honey_pot.png delete mode 100644 public/img/emoji/honeybee.png delete mode 100644 public/img/emoji/horse.png delete mode 100644 public/img/emoji/horse_racing.png delete mode 100644 public/img/emoji/hospital.png delete mode 100644 public/img/emoji/hotel.png delete mode 100644 public/img/emoji/hotsprings.png delete mode 100644 public/img/emoji/hourglass.png delete mode 100644 public/img/emoji/hourglass_flowing_sand.png delete mode 100644 public/img/emoji/house.png delete mode 100644 public/img/emoji/house_with_garden.png delete mode 100644 public/img/emoji/hurtrealbad.png delete mode 100644 public/img/emoji/hushed.png delete mode 100644 public/img/emoji/ice_cream.png delete mode 100644 public/img/emoji/icecream.png delete mode 100644 public/img/emoji/id.png delete mode 100644 public/img/emoji/ideograph_advantage.png delete mode 100644 public/img/emoji/imp.png delete mode 100644 public/img/emoji/inbox_tray.png delete mode 100644 public/img/emoji/incoming_envelope.png delete mode 100644 public/img/emoji/information_desk_person.png delete mode 100644 public/img/emoji/information_source.png delete mode 100644 public/img/emoji/innocent.png delete mode 100644 public/img/emoji/interrobang.png delete mode 100644 public/img/emoji/iphone.png delete mode 100644 public/img/emoji/it.png delete mode 100644 public/img/emoji/izakaya_lantern.png delete mode 100644 public/img/emoji/jack_o_lantern.png delete mode 100644 public/img/emoji/japan.png delete mode 100644 public/img/emoji/japanese_castle.png delete mode 100644 public/img/emoji/japanese_goblin.png delete mode 100644 public/img/emoji/japanese_ogre.png delete mode 100644 public/img/emoji/jeans.png delete mode 100644 public/img/emoji/joy.png delete mode 100644 public/img/emoji/joy_cat.png delete mode 100644 public/img/emoji/jp.png delete mode 100644 public/img/emoji/key.png delete mode 100644 public/img/emoji/keycap_ten.png delete mode 100644 public/img/emoji/kimono.png delete mode 100644 public/img/emoji/kiss.png delete mode 100644 public/img/emoji/kissing.png delete mode 100644 public/img/emoji/kissing_cat.png delete mode 100644 public/img/emoji/kissing_closed_eyes.png delete mode 100644 public/img/emoji/kissing_face.png delete mode 100644 public/img/emoji/kissing_heart.png delete mode 100644 public/img/emoji/kissing_smiling_eyes.png delete mode 100644 public/img/emoji/koala.png delete mode 100644 public/img/emoji/koko.png delete mode 100644 public/img/emoji/kr.png delete mode 100644 public/img/emoji/large_blue_circle.png delete mode 100644 public/img/emoji/large_blue_diamond.png delete mode 100644 public/img/emoji/large_orange_diamond.png delete mode 100644 public/img/emoji/last_quarter_moon.png delete mode 100644 public/img/emoji/last_quarter_moon_with_face.png delete mode 100644 public/img/emoji/laughing.png delete mode 100644 public/img/emoji/leaves.png delete mode 100644 public/img/emoji/ledger.png delete mode 100644 public/img/emoji/left_luggage.png delete mode 100644 public/img/emoji/left_right_arrow.png delete mode 100644 public/img/emoji/leftwards_arrow_with_hook.png delete mode 100644 public/img/emoji/lemon.png delete mode 100644 public/img/emoji/leo.png delete mode 100644 public/img/emoji/leopard.png delete mode 100644 public/img/emoji/libra.png delete mode 100644 public/img/emoji/light_rail.png delete mode 100644 public/img/emoji/link.png delete mode 100644 public/img/emoji/lips.png delete mode 100644 public/img/emoji/lipstick.png delete mode 100644 public/img/emoji/lock.png delete mode 100644 public/img/emoji/lock_with_ink_pen.png delete mode 100644 public/img/emoji/lollipop.png delete mode 100644 public/img/emoji/loop.png delete mode 100644 public/img/emoji/loudspeaker.png delete mode 100644 public/img/emoji/love_hotel.png delete mode 100644 public/img/emoji/love_letter.png delete mode 100644 public/img/emoji/low_brightness.png delete mode 100644 public/img/emoji/m.png delete mode 100644 public/img/emoji/mag.png delete mode 100644 public/img/emoji/mag_right.png delete mode 100644 public/img/emoji/mahjong.png delete mode 100644 public/img/emoji/mailbox.png delete mode 100644 public/img/emoji/mailbox_closed.png delete mode 100644 public/img/emoji/mailbox_with_mail.png delete mode 100644 public/img/emoji/mailbox_with_no_mail.png delete mode 100644 public/img/emoji/man.png delete mode 100644 public/img/emoji/man_with_gua_pi_mao.png delete mode 100644 public/img/emoji/man_with_turban.png delete mode 100644 public/img/emoji/mans_shoe.png delete mode 100644 public/img/emoji/maple_leaf.png delete mode 100644 public/img/emoji/mask.png delete mode 100644 public/img/emoji/massage.png delete mode 100644 public/img/emoji/meat_on_bone.png delete mode 100644 public/img/emoji/mega.png delete mode 100644 public/img/emoji/melon.png delete mode 100644 public/img/emoji/memo.png delete mode 100644 public/img/emoji/mens.png delete mode 100644 public/img/emoji/metal.png delete mode 100644 public/img/emoji/metro.png delete mode 100644 public/img/emoji/microphone.png delete mode 100644 public/img/emoji/microscope.png delete mode 100644 public/img/emoji/milky_way.png delete mode 100644 public/img/emoji/minibus.png delete mode 100644 public/img/emoji/minidisc.png delete mode 100644 public/img/emoji/mobile_phone_off.png delete mode 100644 public/img/emoji/money_with_wings.png delete mode 100644 public/img/emoji/moneybag.png delete mode 100644 public/img/emoji/monkey.png delete mode 100644 public/img/emoji/monkey_face.png delete mode 100644 public/img/emoji/monorail.png delete mode 100644 public/img/emoji/mortar_board.png delete mode 100644 public/img/emoji/mount_fuji.png delete mode 100644 public/img/emoji/mountain_bicyclist.png delete mode 100644 public/img/emoji/mountain_cableway.png delete mode 100644 public/img/emoji/mountain_railway.png delete mode 100644 public/img/emoji/mouse.png delete mode 100644 public/img/emoji/mouse2.png delete mode 100644 public/img/emoji/movie_camera.png delete mode 100644 public/img/emoji/moyai.png delete mode 100644 public/img/emoji/muscle.png delete mode 100644 public/img/emoji/mushroom.png delete mode 100644 public/img/emoji/musical_keyboard.png delete mode 100644 public/img/emoji/musical_note.png delete mode 100644 public/img/emoji/musical_score.png delete mode 100644 public/img/emoji/mute.png delete mode 100644 public/img/emoji/nail_care.png delete mode 100644 public/img/emoji/name_badge.png delete mode 100644 public/img/emoji/neckbeard.png delete mode 100644 public/img/emoji/necktie.png delete mode 100644 public/img/emoji/negative_squared_cross_mark.png delete mode 100644 public/img/emoji/neutral_face.png delete mode 100644 public/img/emoji/new.png delete mode 100644 public/img/emoji/new_moon.png delete mode 100644 public/img/emoji/new_moon_with_face.png delete mode 100644 public/img/emoji/newspaper.png delete mode 100644 public/img/emoji/ng.png delete mode 100644 public/img/emoji/nine.png delete mode 100644 public/img/emoji/no_bell.png delete mode 100644 public/img/emoji/no_bicycles.png delete mode 100644 public/img/emoji/no_entry.png delete mode 100644 public/img/emoji/no_entry_sign.png delete mode 100644 public/img/emoji/no_good.png delete mode 100644 public/img/emoji/no_mobile_phones.png delete mode 100644 public/img/emoji/no_mouth.png delete mode 100644 public/img/emoji/no_pedestrians.png delete mode 100644 public/img/emoji/no_smoking.png delete mode 100644 public/img/emoji/non-potable_water.png delete mode 100644 public/img/emoji/nose.png delete mode 100644 public/img/emoji/notebook.png delete mode 100644 public/img/emoji/notebook_with_decorative_cover.png delete mode 100644 public/img/emoji/notes.png delete mode 100644 public/img/emoji/nut_and_bolt.png delete mode 100644 public/img/emoji/o.png delete mode 100644 public/img/emoji/o2.png delete mode 100644 public/img/emoji/ocean.png delete mode 100644 public/img/emoji/octocat.png delete mode 100644 public/img/emoji/octopus.png delete mode 100644 public/img/emoji/oden.png delete mode 100644 public/img/emoji/office.png delete mode 100644 public/img/emoji/ok.png delete mode 100644 public/img/emoji/ok_hand.png delete mode 100644 public/img/emoji/ok_woman.png delete mode 100644 public/img/emoji/older_man.png delete mode 100644 public/img/emoji/older_woman.png delete mode 100644 public/img/emoji/on.png delete mode 100644 public/img/emoji/oncoming_automobile.png delete mode 100644 public/img/emoji/oncoming_bus.png delete mode 100644 public/img/emoji/oncoming_police_car.png delete mode 100644 public/img/emoji/oncoming_taxi.png delete mode 100644 public/img/emoji/one.png delete mode 100644 public/img/emoji/open_file_folder.png delete mode 100644 public/img/emoji/open_hands.png delete mode 100644 public/img/emoji/open_mouth.png delete mode 100644 public/img/emoji/ophiuchus.png delete mode 100644 public/img/emoji/orange_book.png delete mode 100644 public/img/emoji/outbox_tray.png delete mode 100644 public/img/emoji/ox.png delete mode 100644 public/img/emoji/package.png delete mode 100644 public/img/emoji/page_facing_up.png delete mode 100644 public/img/emoji/page_with_curl.png delete mode 100644 public/img/emoji/pager.png delete mode 100644 public/img/emoji/palm_tree.png delete mode 100644 public/img/emoji/panda_face.png delete mode 100644 public/img/emoji/paperclip.png delete mode 100644 public/img/emoji/parking.png delete mode 100644 public/img/emoji/part_alternation_mark.png delete mode 100644 public/img/emoji/partly_sunny.png delete mode 100644 public/img/emoji/passport_control.png delete mode 100644 public/img/emoji/paw_prints.png delete mode 100644 public/img/emoji/peach.png delete mode 100644 public/img/emoji/pear.png delete mode 100644 public/img/emoji/pencil.png delete mode 100644 public/img/emoji/pencil2.png delete mode 100644 public/img/emoji/penguin.png delete mode 100644 public/img/emoji/pensive.png delete mode 100644 public/img/emoji/performing_arts.png delete mode 100644 public/img/emoji/persevere.png delete mode 100644 public/img/emoji/person_frowning.png delete mode 100644 public/img/emoji/person_with_blond_hair.png delete mode 100644 public/img/emoji/person_with_pouting_face.png delete mode 100644 public/img/emoji/phone.png delete mode 100644 public/img/emoji/pig.png delete mode 100644 public/img/emoji/pig2.png delete mode 100644 public/img/emoji/pig_nose.png delete mode 100644 public/img/emoji/pill.png delete mode 100644 public/img/emoji/pineapple.png delete mode 100644 public/img/emoji/pisces.png delete mode 100644 public/img/emoji/pizza.png delete mode 100644 public/img/emoji/plus1.png delete mode 100644 public/img/emoji/point_down.png delete mode 100644 public/img/emoji/point_left.png delete mode 100644 public/img/emoji/point_right.png delete mode 100644 public/img/emoji/point_up.png delete mode 100644 public/img/emoji/point_up_2.png delete mode 100644 public/img/emoji/police_car.png delete mode 100644 public/img/emoji/poodle.png delete mode 100644 public/img/emoji/poop.png delete mode 100644 public/img/emoji/post_office.png delete mode 100644 public/img/emoji/postal_horn.png delete mode 100644 public/img/emoji/postbox.png delete mode 100644 public/img/emoji/potable_water.png delete mode 100644 public/img/emoji/pouch.png delete mode 100644 public/img/emoji/poultry_leg.png delete mode 100644 public/img/emoji/pound.png delete mode 100644 public/img/emoji/pouting_cat.png delete mode 100644 public/img/emoji/pray.png delete mode 100644 public/img/emoji/princess.png delete mode 100644 public/img/emoji/punch.png delete mode 100644 public/img/emoji/purple_heart.png delete mode 100644 public/img/emoji/purse.png delete mode 100644 public/img/emoji/pushpin.png delete mode 100644 public/img/emoji/put_litter_in_its_place.png delete mode 100644 public/img/emoji/question.png delete mode 100644 public/img/emoji/rabbit.png delete mode 100644 public/img/emoji/rabbit2.png delete mode 100644 public/img/emoji/racehorse.png delete mode 100644 public/img/emoji/radio.png delete mode 100644 public/img/emoji/radio_button.png delete mode 100644 public/img/emoji/rage.png delete mode 100644 public/img/emoji/rage1.png delete mode 100644 public/img/emoji/rage2.png delete mode 100644 public/img/emoji/rage3.png delete mode 100644 public/img/emoji/rage4.png delete mode 100644 public/img/emoji/railway_car.png delete mode 100644 public/img/emoji/rainbow.png delete mode 100644 public/img/emoji/raised_hand.png delete mode 100644 public/img/emoji/raised_hands.png delete mode 100644 public/img/emoji/raising_hand.png delete mode 100644 public/img/emoji/ram.png delete mode 100644 public/img/emoji/ramen.png delete mode 100644 public/img/emoji/rat.png delete mode 100644 public/img/emoji/recycle.png delete mode 100644 public/img/emoji/red_car.png delete mode 100644 public/img/emoji/red_circle.png delete mode 100644 public/img/emoji/registered.png delete mode 100644 public/img/emoji/relaxed.png delete mode 100644 public/img/emoji/relieved.png delete mode 100644 public/img/emoji/repeat.png delete mode 100644 public/img/emoji/repeat_one.png delete mode 100644 public/img/emoji/restroom.png delete mode 100644 public/img/emoji/revolving_hearts.png delete mode 100644 public/img/emoji/rewind.png delete mode 100644 public/img/emoji/ribbon.png delete mode 100644 public/img/emoji/rice.png delete mode 100644 public/img/emoji/rice_ball.png delete mode 100644 public/img/emoji/rice_cracker.png delete mode 100644 public/img/emoji/rice_scene.png delete mode 100644 public/img/emoji/ring.png delete mode 100644 public/img/emoji/rocket.png delete mode 100644 public/img/emoji/roller_coaster.png delete mode 100644 public/img/emoji/rooster.png delete mode 100644 public/img/emoji/rose.png delete mode 100644 public/img/emoji/rotating_light.png delete mode 100644 public/img/emoji/round_pushpin.png delete mode 100644 public/img/emoji/rowboat.png delete mode 100644 public/img/emoji/ru.png delete mode 100644 public/img/emoji/rugby_football.png delete mode 100644 public/img/emoji/runner.png delete mode 100644 public/img/emoji/running.png delete mode 100644 public/img/emoji/running_shirt_with_sash.png delete mode 100644 public/img/emoji/sa.png delete mode 100644 public/img/emoji/sagittarius.png delete mode 100644 public/img/emoji/sailboat.png delete mode 100644 public/img/emoji/sake.png delete mode 100644 public/img/emoji/sandal.png delete mode 100644 public/img/emoji/santa.png delete mode 100644 public/img/emoji/satellite.png delete mode 100644 public/img/emoji/satisfied.png delete mode 100644 public/img/emoji/saxophone.png delete mode 100644 public/img/emoji/school.png delete mode 100644 public/img/emoji/school_satchel.png delete mode 100644 public/img/emoji/scissors.png delete mode 100644 public/img/emoji/scorpius.png delete mode 100644 public/img/emoji/scream.png delete mode 100644 public/img/emoji/scream_cat.png delete mode 100644 public/img/emoji/scroll.png delete mode 100644 public/img/emoji/seat.png delete mode 100644 public/img/emoji/secret.png delete mode 100644 public/img/emoji/see_no_evil.png delete mode 100644 public/img/emoji/seedling.png delete mode 100644 public/img/emoji/seven.png delete mode 100644 public/img/emoji/shaved_ice.png delete mode 100644 public/img/emoji/sheep.png delete mode 100644 public/img/emoji/shell.png delete mode 100644 public/img/emoji/ship.png delete mode 100644 public/img/emoji/shipit.png delete mode 100644 public/img/emoji/shirt.png delete mode 100644 public/img/emoji/shit.png delete mode 100644 public/img/emoji/shoe.png delete mode 100644 public/img/emoji/shower.png delete mode 100644 public/img/emoji/signal_strength.png delete mode 100644 public/img/emoji/six.png delete mode 100644 public/img/emoji/six_pointed_star.png delete mode 100644 public/img/emoji/ski.png delete mode 100644 public/img/emoji/skull.png delete mode 100644 public/img/emoji/sleeping.png delete mode 100644 public/img/emoji/sleepy.png delete mode 100644 public/img/emoji/slot_machine.png delete mode 100644 public/img/emoji/small_blue_diamond.png delete mode 100644 public/img/emoji/small_orange_diamond.png delete mode 100644 public/img/emoji/small_red_triangle.png delete mode 100644 public/img/emoji/small_red_triangle_down.png delete mode 100644 public/img/emoji/smile.png delete mode 100644 public/img/emoji/smile_cat.png delete mode 100644 public/img/emoji/smiley.png delete mode 100644 public/img/emoji/smiley_cat.png delete mode 100644 public/img/emoji/smiling_imp.png delete mode 100644 public/img/emoji/smirk.png delete mode 100644 public/img/emoji/smirk_cat.png delete mode 100644 public/img/emoji/smoking.png delete mode 100644 public/img/emoji/snail.png delete mode 100644 public/img/emoji/snake.png delete mode 100644 public/img/emoji/snowboarder.png delete mode 100644 public/img/emoji/snowflake.png delete mode 100644 public/img/emoji/snowman.png delete mode 100644 public/img/emoji/sob.png delete mode 100644 public/img/emoji/soccer.png delete mode 100644 public/img/emoji/soon.png delete mode 100644 public/img/emoji/sos.png delete mode 100644 public/img/emoji/sound.png delete mode 100644 public/img/emoji/space_invader.png delete mode 100644 public/img/emoji/spades.png delete mode 100644 public/img/emoji/spaghetti.png delete mode 100644 public/img/emoji/sparkle.png delete mode 100644 public/img/emoji/sparkler.png delete mode 100644 public/img/emoji/sparkles.png delete mode 100644 public/img/emoji/sparkling_heart.png delete mode 100644 public/img/emoji/speak_no_evil.png delete mode 100644 public/img/emoji/speaker.png delete mode 100644 public/img/emoji/speech_balloon.png delete mode 100644 public/img/emoji/speedboat.png delete mode 100644 public/img/emoji/squirrel.png delete mode 100644 public/img/emoji/star.png delete mode 100644 public/img/emoji/star2.png delete mode 100644 public/img/emoji/stars.png delete mode 100644 public/img/emoji/station.png delete mode 100644 public/img/emoji/statue_of_liberty.png delete mode 100644 public/img/emoji/steam_locomotive.png delete mode 100644 public/img/emoji/stew.png delete mode 100644 public/img/emoji/straight_ruler.png delete mode 100644 public/img/emoji/strawberry.png delete mode 100644 public/img/emoji/stuck_out_tongue.png delete mode 100644 public/img/emoji/stuck_out_tongue_closed_eyes.png delete mode 100644 public/img/emoji/stuck_out_tongue_winking_eye.png delete mode 100644 public/img/emoji/sun_with_face.png delete mode 100644 public/img/emoji/sunflower.png delete mode 100644 public/img/emoji/sunglasses.png delete mode 100644 public/img/emoji/sunny.png delete mode 100644 public/img/emoji/sunrise.png delete mode 100644 public/img/emoji/sunrise_over_mountains.png delete mode 100644 public/img/emoji/surfer.png delete mode 100644 public/img/emoji/sushi.png delete mode 100644 public/img/emoji/suspect.png delete mode 100644 public/img/emoji/suspension_railway.png delete mode 100644 public/img/emoji/sweat.png delete mode 100644 public/img/emoji/sweat_drops.png delete mode 100644 public/img/emoji/sweat_smile.png delete mode 100644 public/img/emoji/sweet_potato.png delete mode 100644 public/img/emoji/swimmer.png delete mode 100644 public/img/emoji/symbols.png delete mode 100644 public/img/emoji/syringe.png delete mode 100644 public/img/emoji/tada.png delete mode 100644 public/img/emoji/tanabata_tree.png delete mode 100644 public/img/emoji/tangerine.png delete mode 100644 public/img/emoji/taurus.png delete mode 100644 public/img/emoji/taxi.png delete mode 100644 public/img/emoji/tea.png delete mode 100644 public/img/emoji/telephone.png delete mode 100644 public/img/emoji/telephone_receiver.png delete mode 100644 public/img/emoji/telescope.png delete mode 100644 public/img/emoji/tennis.png delete mode 100644 public/img/emoji/tent.png delete mode 100644 public/img/emoji/thought_balloon.png delete mode 100644 public/img/emoji/three.png delete mode 100644 public/img/emoji/thumbsdown.png delete mode 100644 public/img/emoji/thumbsup.png delete mode 100644 public/img/emoji/ticket.png delete mode 100644 public/img/emoji/tiger.png delete mode 100644 public/img/emoji/tiger2.png delete mode 100644 public/img/emoji/tired_face.png delete mode 100644 public/img/emoji/tm.png delete mode 100644 public/img/emoji/toilet.png delete mode 100644 public/img/emoji/tokyo_tower.png delete mode 100644 public/img/emoji/tomato.png delete mode 100644 public/img/emoji/tongue.png delete mode 100644 public/img/emoji/top.png delete mode 100644 public/img/emoji/tophat.png delete mode 100644 public/img/emoji/tractor.png delete mode 100644 public/img/emoji/traffic_light.png delete mode 100644 public/img/emoji/train.png delete mode 100644 public/img/emoji/train2.png delete mode 100644 public/img/emoji/tram.png delete mode 100644 public/img/emoji/triangular_flag_on_post.png delete mode 100644 public/img/emoji/triangular_ruler.png delete mode 100644 public/img/emoji/trident.png delete mode 100644 public/img/emoji/triumph.png delete mode 100644 public/img/emoji/trolleybus.png delete mode 100644 public/img/emoji/trollface.png delete mode 100644 public/img/emoji/trophy.png delete mode 100644 public/img/emoji/tropical_drink.png delete mode 100644 public/img/emoji/tropical_fish.png delete mode 100644 public/img/emoji/truck.png delete mode 100644 public/img/emoji/trumpet.png delete mode 100644 public/img/emoji/tshirt.png delete mode 100644 public/img/emoji/tulip.png delete mode 100644 public/img/emoji/turtle.png delete mode 100644 public/img/emoji/tv.png delete mode 100644 public/img/emoji/twisted_rightwards_arrows.png delete mode 100644 public/img/emoji/two.png delete mode 100644 public/img/emoji/two_hearts.png delete mode 100644 public/img/emoji/two_men_holding_hands.png delete mode 100644 public/img/emoji/two_women_holding_hands.png delete mode 100644 public/img/emoji/u5272.png delete mode 100644 public/img/emoji/u5408.png delete mode 100644 public/img/emoji/u55b6.png delete mode 100644 public/img/emoji/u6307.png delete mode 100644 public/img/emoji/u6708.png delete mode 100644 public/img/emoji/u6709.png delete mode 100644 public/img/emoji/u6e80.png delete mode 100644 public/img/emoji/u7121.png delete mode 100644 public/img/emoji/u7533.png delete mode 100644 public/img/emoji/u7981.png delete mode 100644 public/img/emoji/u7a7a.png delete mode 100644 public/img/emoji/uk.png delete mode 100644 public/img/emoji/umbrella.png delete mode 100644 public/img/emoji/unamused.png delete mode 100644 public/img/emoji/underage.png delete mode 100644 public/img/emoji/unlock.png delete mode 100644 public/img/emoji/up.png delete mode 100644 public/img/emoji/us.png delete mode 100644 public/img/emoji/v.png delete mode 100644 public/img/emoji/vertical_traffic_light.png delete mode 100644 public/img/emoji/vhs.png delete mode 100644 public/img/emoji/vibration_mode.png delete mode 100644 public/img/emoji/video_camera.png delete mode 100644 public/img/emoji/video_game.png delete mode 100644 public/img/emoji/violin.png delete mode 100644 public/img/emoji/virgo.png delete mode 100644 public/img/emoji/volcano.png delete mode 100644 public/img/emoji/vs.png delete mode 100644 public/img/emoji/walking.png delete mode 100644 public/img/emoji/waning_crescent_moon.png delete mode 100644 public/img/emoji/waning_gibbous_moon.png delete mode 100644 public/img/emoji/warning.png delete mode 100644 public/img/emoji/watch.png delete mode 100644 public/img/emoji/water_buffalo.png delete mode 100644 public/img/emoji/watermelon.png delete mode 100644 public/img/emoji/wave.png delete mode 100644 public/img/emoji/wavy_dash.png delete mode 100644 public/img/emoji/waxing_crescent_moon.png delete mode 100644 public/img/emoji/waxing_gibbous_moon.png delete mode 100644 public/img/emoji/wc.png delete mode 100644 public/img/emoji/weary.png delete mode 100644 public/img/emoji/wedding.png delete mode 100644 public/img/emoji/whale.png delete mode 100644 public/img/emoji/whale2.png delete mode 100644 public/img/emoji/wheelchair.png delete mode 100644 public/img/emoji/white_check_mark.png delete mode 100644 public/img/emoji/white_circle.png delete mode 100644 public/img/emoji/white_flower.png delete mode 100644 public/img/emoji/white_large_square.png delete mode 100644 public/img/emoji/white_medium_small_square.png delete mode 100644 public/img/emoji/white_medium_square.png delete mode 100644 public/img/emoji/white_small_square.png delete mode 100644 public/img/emoji/white_square_button.png delete mode 100644 public/img/emoji/wind_chime.png delete mode 100644 public/img/emoji/wine_glass.png delete mode 100644 public/img/emoji/wink.png delete mode 100644 public/img/emoji/wolf.png delete mode 100644 public/img/emoji/woman.png delete mode 100644 public/img/emoji/womans_clothes.png delete mode 100644 public/img/emoji/womans_hat.png delete mode 100644 public/img/emoji/womens.png delete mode 100644 public/img/emoji/worried.png delete mode 100644 public/img/emoji/wrench.png delete mode 100644 public/img/emoji/x.png delete mode 100644 public/img/emoji/yellow_heart.png delete mode 100644 public/img/emoji/yen.png delete mode 100644 public/img/emoji/yum.png delete mode 100644 public/img/emoji/zap.png delete mode 100644 public/img/emoji/zero.png delete mode 100644 public/img/emoji/zzz.png delete mode 100644 public/js/jquery-1.11.3.min.js delete mode 100755 public/js/libs/clipboard-1.5.9.min.js delete mode 100644 public/js/libs/emojify-1.1.0.min.js delete mode 100644 public/js/libs/gitgraph.js delete mode 100644 public/js/libs/jquery.are-you-sure.js delete mode 100755 public/js/semantic-2.2.1.min.js delete mode 100644 public/plugins/codemirror-5.17.0/.gitattributes delete mode 100644 public/plugins/codemirror-5.17.0/.gitignore delete mode 100644 public/plugins/codemirror-5.17.0/.npmignore delete mode 100644 public/plugins/codemirror-5.17.0/.travis.yml delete mode 100644 public/plugins/codemirror-5.17.0/addon/mode/loadmode.js delete mode 100644 public/plugins/codemirror-5.17.0/addon/mode/multiplex.js delete mode 100644 public/plugins/codemirror-5.17.0/addon/mode/multiplex_test.js delete mode 100644 public/plugins/codemirror-5.17.0/addon/mode/overlay.js delete mode 100644 public/plugins/codemirror-5.17.0/addon/mode/simple.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/apl/apl.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/apl/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/asciiarmor/asciiarmor.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/asciiarmor/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/asn.1/asn.1.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/asn.1/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/asterisk/asterisk.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/asterisk/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/brainfuck/brainfuck.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/brainfuck/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/clike/clike.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/clike/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/clike/scala.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/clike/test.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/clojure/clojure.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/clojure/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/cmake/cmake.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/cmake/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/cobol/cobol.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/cobol/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/coffeescript/coffeescript.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/coffeescript/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/commonlisp/commonlisp.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/commonlisp/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/crystal/crystal.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/crystal/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/css/css.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/css/gss.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/css/gss_test.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/css/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/css/less.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/css/less_test.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/css/scss.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/css/scss_test.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/css/test.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/cypher/cypher.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/cypher/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/d/d.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/d/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/dart/dart.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/dart/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/diff/diff.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/diff/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/django/django.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/django/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/dockerfile/dockerfile.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/dockerfile/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/dtd/dtd.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/dtd/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/dylan/dylan.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/dylan/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/dylan/test.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/ebnf/ebnf.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/ebnf/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/ecl/ecl.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/ecl/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/eiffel/eiffel.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/eiffel/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/elm/elm.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/elm/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/erlang/erlang.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/erlang/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/factor/factor.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/factor/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/fcl/fcl.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/fcl/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/forth/forth.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/forth/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/fortran/fortran.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/fortran/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/gas/gas.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/gas/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/gfm/gfm.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/gfm/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/gfm/test.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/gherkin/gherkin.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/gherkin/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/go/go.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/go/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/groovy/groovy.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/groovy/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/haml/haml.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/haml/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/haml/test.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/handlebars/handlebars.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/handlebars/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/haskell-literate/haskell-literate.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/haskell-literate/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/haskell/haskell.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/haskell/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/haxe/haxe.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/haxe/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/htmlembedded/htmlembedded.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/htmlembedded/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/htmlmixed/htmlmixed.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/htmlmixed/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/http/http.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/http/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/idl/idl.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/idl/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/jade/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/jade/jade.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/javascript/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/javascript/javascript.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/javascript/json-ld.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/javascript/test.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/javascript/typescript.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/jinja2/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/jinja2/jinja2.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/jsx/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/jsx/jsx.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/jsx/test.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/julia/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/julia/julia.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/livescript/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/livescript/livescript.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/lua/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/lua/lua.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/markdown/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/markdown/markdown.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/markdown/test.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/mathematica/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/mathematica/mathematica.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/mbox/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/mbox/mbox.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/meta.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/mirc/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/mirc/mirc.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/mllike/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/mllike/mllike.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/modelica/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/modelica/modelica.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/mscgen/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/mscgen/mscgen.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/mscgen/mscgen_test.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/mscgen/msgenny_test.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/mscgen/xu_test.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/mumps/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/mumps/mumps.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/nginx/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/nginx/nginx.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/nsis/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/nsis/nsis.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/ntriples/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/ntriples/ntriples.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/octave/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/octave/octave.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/oz/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/oz/oz.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/pascal/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/pascal/pascal.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/pegjs/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/pegjs/pegjs.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/perl/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/perl/perl.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/php/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/php/php.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/php/test.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/pig/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/pig/pig.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/powershell/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/powershell/powershell.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/powershell/test.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/properties/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/properties/properties.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/protobuf/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/protobuf/protobuf.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/puppet/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/puppet/puppet.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/python/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/python/python.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/python/test.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/q/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/q/q.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/r/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/r/r.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/rpm/changes/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/rpm/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/rpm/rpm.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/rst/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/rst/rst.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/ruby/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/ruby/ruby.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/ruby/test.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/rust/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/rust/rust.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/rust/test.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/sas/index.html delete mode 100755 public/plugins/codemirror-5.17.0/mode/sas/sas.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/sass/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/sass/sass.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/scheme/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/scheme/scheme.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/shell/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/shell/shell.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/shell/test.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/sieve/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/sieve/sieve.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/slim/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/slim/slim.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/slim/test.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/smalltalk/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/smalltalk/smalltalk.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/smarty/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/smarty/smarty.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/solr/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/solr/solr.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/soy/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/soy/soy.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/sparql/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/sparql/sparql.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/spreadsheet/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/spreadsheet/spreadsheet.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/sql/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/sql/sql.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/stex/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/stex/stex.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/stex/test.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/stylus/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/stylus/stylus.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/swift/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/swift/swift.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/tcl/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/tcl/tcl.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/textile/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/textile/test.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/textile/textile.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/tiddlywiki/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/tiddlywiki/tiddlywiki.css delete mode 100644 public/plugins/codemirror-5.17.0/mode/tiddlywiki/tiddlywiki.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/tiki/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/tiki/tiki.css delete mode 100644 public/plugins/codemirror-5.17.0/mode/tiki/tiki.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/toml/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/toml/toml.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/tornado/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/tornado/tornado.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/troff/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/troff/troff.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/ttcn-cfg/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/ttcn-cfg/ttcn-cfg.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/ttcn/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/ttcn/ttcn.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/turtle/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/turtle/turtle.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/twig/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/twig/twig.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/vb/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/vb/vb.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/vbscript/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/vbscript/vbscript.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/velocity/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/velocity/velocity.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/verilog/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/verilog/test.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/verilog/verilog.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/vhdl/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/vhdl/vhdl.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/vue/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/vue/vue.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/webidl/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/webidl/webidl.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/xml/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/xml/test.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/xml/xml.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/xquery/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/xquery/test.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/xquery/xquery.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/yacas/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/yacas/yacas.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/yaml-frontmatter/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/yaml-frontmatter/yaml-frontmatter.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/yaml/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/yaml/yaml.js delete mode 100644 public/plugins/codemirror-5.17.0/mode/z80/index.html delete mode 100644 public/plugins/codemirror-5.17.0/mode/z80/z80.js delete mode 100644 public/plugins/dropzone-4.2.0/dropzone.css delete mode 100644 public/plugins/dropzone-4.2.0/dropzone.js delete mode 100644 public/plugins/highlight-9.6.0/default.css delete mode 100644 public/plugins/highlight-9.6.0/github.css delete mode 100644 public/plugins/highlight-9.6.0/highlight.pack.js delete mode 100644 public/plugins/jquery.datetimepicker-2.4.5/jquery.datetimepicker.css delete mode 100644 public/plugins/jquery.datetimepicker-2.4.5/jquery.datetimepicker.js delete mode 100644 public/plugins/jquery.minicolors-2.2.3/jquery.minicolors.css delete mode 100644 public/plugins/jquery.minicolors-2.2.3/jquery.minicolors.min.js delete mode 100644 public/plugins/jquery.minicolors-2.2.3/jquery.minicolors.png delete mode 100644 public/plugins/pdfjs-1.4.20/LICENSE delete mode 100644 public/plugins/pdfjs-1.4.20/build/pdf.js delete mode 100644 public/plugins/pdfjs-1.4.20/build/pdf.worker.js delete mode 100644 public/plugins/pdfjs-1.4.20/web/compatibility.js delete mode 100644 public/plugins/pdfjs-1.4.20/web/debugger.js delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/annotation-check.svg delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/annotation-comment.svg delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/annotation-help.svg delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/annotation-insert.svg delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/annotation-key.svg delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/annotation-newparagraph.svg delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/annotation-noicon.svg delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/annotation-note.svg delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/annotation-paragraph.svg delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/findbarButton-next-rtl.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/findbarButton-next-rtl@2x.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/findbarButton-next.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/findbarButton-next@2x.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/findbarButton-previous-rtl.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/findbarButton-previous-rtl@2x.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/findbarButton-previous.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/findbarButton-previous@2x.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/grab.cur delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/grabbing.cur delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/loading-icon.gif delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/loading-small.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/loading-small@2x.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/secondaryToolbarButton-documentProperties.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/secondaryToolbarButton-documentProperties@2x.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/secondaryToolbarButton-firstPage.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/secondaryToolbarButton-firstPage@2x.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/secondaryToolbarButton-handTool.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/secondaryToolbarButton-handTool@2x.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/secondaryToolbarButton-lastPage.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/secondaryToolbarButton-lastPage@2x.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/secondaryToolbarButton-rotateCcw.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/secondaryToolbarButton-rotateCcw@2x.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/secondaryToolbarButton-rotateCw.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/secondaryToolbarButton-rotateCw@2x.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/shadow.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/texture.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/toolbarButton-bookmark.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/toolbarButton-bookmark@2x.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/toolbarButton-download.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/toolbarButton-download@2x.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/toolbarButton-menuArrows.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/toolbarButton-menuArrows@2x.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/toolbarButton-openFile.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/toolbarButton-openFile@2x.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/toolbarButton-pageDown-rtl.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/toolbarButton-pageDown-rtl@2x.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/toolbarButton-pageDown.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/toolbarButton-pageDown@2x.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/toolbarButton-pageUp-rtl.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/toolbarButton-pageUp-rtl@2x.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/toolbarButton-pageUp.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/toolbarButton-pageUp@2x.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/toolbarButton-presentationMode.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/toolbarButton-presentationMode@2x.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/toolbarButton-print.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/toolbarButton-print@2x.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/toolbarButton-search.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/toolbarButton-search@2x.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/toolbarButton-secondaryToolbarToggle-rtl.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/toolbarButton-secondaryToolbarToggle-rtl@2x.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/toolbarButton-secondaryToolbarToggle.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/toolbarButton-secondaryToolbarToggle@2x.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/toolbarButton-sidebarToggle-rtl.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/toolbarButton-sidebarToggle-rtl@2x.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/toolbarButton-sidebarToggle.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/toolbarButton-sidebarToggle@2x.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/toolbarButton-viewAttachments.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/toolbarButton-viewAttachments@2x.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/toolbarButton-viewOutline-rtl.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/toolbarButton-viewOutline-rtl@2x.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/toolbarButton-viewOutline.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/toolbarButton-viewOutline@2x.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/toolbarButton-viewThumbnail.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/toolbarButton-viewThumbnail@2x.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/toolbarButton-zoomIn.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/toolbarButton-zoomIn@2x.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/toolbarButton-zoomOut.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/toolbarButton-zoomOut@2x.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/treeitem-collapsed-rtl.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/treeitem-collapsed-rtl@2x.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/treeitem-collapsed.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/treeitem-collapsed@2x.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/treeitem-expanded.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/images/treeitem-expanded@2x.png delete mode 100644 public/plugins/pdfjs-1.4.20/web/viewer.css delete mode 100644 public/plugins/pdfjs-1.4.20/web/viewer.html delete mode 100644 public/plugins/pdfjs-1.4.20/web/viewer.js delete mode 100644 public/plugins/simplemde-1.10.1/simplemde.min.css delete mode 100644 public/plugins/simplemde-1.10.1/simplemde.min.js diff --git a/public/assets/font-awesome-4.6.3/css/font-awesome.min.css b/public/assets/font-awesome-4.6.3/css/font-awesome.min.css deleted file mode 100644 index 9b27f8ea8..000000000 --- a/public/assets/font-awesome-4.6.3/css/font-awesome.min.css +++ /dev/null @@ -1,4 +0,0 @@ -/*! - * Font Awesome 4.6.3 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.6.3');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.6.3') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.6.3') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.6.3') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.6.3') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.6.3#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto} diff --git a/public/assets/font-awesome-4.6.3/fonts/FontAwesome.otf b/public/assets/font-awesome-4.6.3/fonts/FontAwesome.otf deleted file mode 100644 index d4de13e832d567ff29c5b4e9561b8c370348cc9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 124988 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ÐT?>-5aYhU|+1c>&YMpPK5x#-mbV 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'NS^o{z1ZKlHsAybrl=JE7AP369ntV%vB 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 CDx5C> diff --git a/public/assets/font-awesome-4.6.3/fonts/fontawesome-webfont.eot b/public/assets/font-awesome-4.6.3/fonts/fontawesome-webfont.eot deleted file mode 100644 index c7b00d2ba8896fd29de846b19f89fcf0d56ad152..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76518 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%0DyT{kunD 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⋙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 z - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/public/assets/font-awesome-4.6.3/fonts/fontawesome-webfont.ttf b/public/assets/font-awesome-4.6.3/fonts/fontawesome-webfont.ttf deleted file mode 100644 index f221e50a2ef60738ba30932d834530cdfe55cb3e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 152796 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

=v_rA!CPE#mM^4@)}X7qf;At+v)G*FZd&; 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 ALjV8( diff --git a/public/assets/font-awesome-4.6.3/fonts/fontawesome-webfont.woff b/public/assets/font-awesome-4.6.3/fonts/fontawesome-webfont.woff deleted file mode 100644 index 6e7483cf61b490c08ed644d6ef802c69472eb247..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90412 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%0Ded40&XED0GYFoIh+AV*?9!MR5pBW?X_8Bp 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 IH>08b4`|GD*#H0l diff --git a/public/assets/font-awesome-4.6.3/fonts/fontawesome-webfont.woff2 b/public/assets/font-awesome-4.6.3/fonts/fontawesome-webfont.woff2 deleted file mode 100644 index 7eb74fd127ee5eddf3b95fee6a20dc1684b0963b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 71896 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≠dR0E9ICQ{-tcR;@{R^I5P#1GUH!p=-{c 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 diff --git a/public/assets/octicons-4.3.0/octicons.eot b/public/assets/octicons-4.3.0/octicons.eot deleted file mode 100755 index b4c7a989ae645fe4dcab1dea34cfffa8487b28c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44098 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 - - - -Created by FontForge 20150913 at Mon Jul 11 12:02:11 2016 - By Aaron Shekey - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/assets/octicons-4.3.0/octicons.ttf b/public/assets/octicons-4.3.0/octicons.ttf deleted file mode 100755 index ff0dda18470bed62d7090c8dd6762dba05e098c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43920 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 diff --git a/public/assets/octicons-4.3.0/octicons.woff2 b/public/assets/octicons-4.3.0/octicons.woff2 deleted file mode 100755 index 69e7b2a4044aab1229fb72eee8379df10f82e4cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20248 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 diff --git a/public/css/semantic-2.2.1.min.css b/public/css/semantic-2.2.1.min.css deleted file mode 100755 index 6f913e14a..000000000 --- a/public/css/semantic-2.2.1.min.css +++ /dev/null @@ -1,11 +0,0 @@ - /* - * # Semantic UI - 2.2.1 - * https://github.com/Semantic-Org/Semantic-UI - * http://www.semantic-ui.com/ - * - * Copyright 2014 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */ -*,:after,:before{box-sizing:inherit}html{box-sizing:border-box;font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}input[type=text],input[type=email],input[type=search],input[type=password]{-webkit-appearance:none;-moz-appearance:none}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:0 0;color:#4183C4;text-decoration:none}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,optgroup,strong{font-weight:700}dfn{font-style:italic}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0}pre,textarea{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}body,html{height:100%}html{font-size:14px}body{margin:0;padding:0;overflow-x:hidden;min-width:320px;background:#FFF;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-size:14px;line-height:1.4285em;color:rgba(0,0,0,.87);font-smoothing:antialiased}h1,h2,h3,h4,h5{font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;line-height:1.2857em;margin:calc(2rem - .14285em) 0 1rem;font-weight:700;padding:0}h1{min-height:1rem;font-size:2rem}h2{font-size:1.714rem}h3{font-size:1.28rem}h4{font-size:1.071rem}h5{font-size:1rem}h1:first-child,h2:first-child,h3:first-child,h4:first-child,h5:first-child,p:first-child{margin-top:0}h1:last-child,h2:last-child,h3:last-child,h4:last-child,h5:last-child,p:last-child{margin-bottom:0}p{margin:0 0 1em;line-height:1.4285em}a:hover{color:#1e70bf;text-decoration:none}::-webkit-selection{background-color:#CCE2FF;color:rgba(0,0,0,.87)}::-moz-selection{background-color:#CCE2FF;color:rgba(0,0,0,.87)}::selection{background-color:#CCE2FF;color:rgba(0,0,0,.87)}input::-webkit-selection,textarea::-webkit-selection{background-color:rgba(100,100,100,.4);color:rgba(0,0,0,.87)}input::-moz-selection,textarea::-moz-selection{background-color:rgba(100,100,100,.4);color:rgba(0,0,0,.87)}input::selection,textarea::selection{background-color:rgba(100,100,100,.4);color:rgba(0,0,0,.87)}.ui.button{cursor:pointer;display:inline-block;min-height:1em;outline:0;border:none;vertical-align:baseline;background:#E0E1E2;color:rgba(0,0,0,.6);font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;margin:0 .25em 0 0;padding:.78571429em 1.5em;text-transform:none;text-shadow:none;font-weight:700;line-height:1em;font-style:normal;text-align:center;text-decoration:none;border-radius:.28571429rem;box-shadow:0 0 0 1px transparent inset,0 0 0 0 rgba(34,36,38,.15) inset;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:opacity .1s ease,background-color .1s ease,color .1s ease,box-shadow .1s ease,background .1s ease;transition:opacity .1s ease,background-color .1s ease,color .1s ease,box-shadow .1s ease,background .1s ease;will-change:'';-webkit-tap-highlight-color:transparent}.ui.button:hover{background-color:#CACBCD;background-image:none;box-shadow:0 0 0 1px transparent inset,0 0 0 0 rgba(34,36,38,.15) inset;color:rgba(0,0,0,.8)}.ui.button:hover .icon{opacity:.85}.ui.button:focus{background-color:#CACBCD;color:rgba(0,0,0,.8);background-image:''!important;box-shadow:''!important}.ui.button:focus .icon{opacity:.85}.ui.active.button:active,.ui.button:active{background-color:#BABBBC;background-image:'';color:rgba(0,0,0,.9);box-shadow:0 0 0 1px transparent inset,none}.ui.active.button{background-color:#C0C1C2;background-image:none;box-shadow:0 0 0 1px transparent inset;color:rgba(0,0,0,.95)}.ui.active.button:hover{background-color:#C0C1C2;background-image:none;color:rgba(0,0,0,.95)}.ui.active.button:active{background-color:#C0C1C2;background-image:none}.ui.loading.loading.loading.loading.loading.loading.button{position:relative;cursor:default;text-shadow:none!important;color:transparent!important;opacity:1;pointer-events:auto;-webkit-transition:all 0s linear,opacity .1s ease;transition:all 0s linear,opacity .1s ease}.ui.loading.button:before{position:absolute;content:'';top:50%;left:50%;margin:-.64285714em 0 0 -.64285714em;width:1.28571429em;height:1.28571429em;border-radius:500rem;border:.2em solid rgba(0,0,0,.15)}.ui.loading.button:after{position:absolute;content:'';top:50%;left:50%;margin:-.64285714em 0 0 -.64285714em;width:1.28571429em;height:1.28571429em;-webkit-animation:button-spin .6s linear;animation:button-spin .6s linear;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;border-radius:500rem;border-color:#FFF transparent transparent;border-style:solid;border-width:.2em;box-shadow:0 0 0 1px transparent}.ui.labeled.icon.loading.button .icon{background-color:transparent;box-shadow:none}@-webkit-keyframes button-spin{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes button-spin{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.ui.basic.loading.button:not(.inverted):before{border-color:rgba(0,0,0,.1)}.ui.basic.loading.button:not(.inverted):after{border-top-color:#767676}.ui.button:disabled,.ui.buttons .disabled.button,.ui.disabled.active.button,.ui.disabled.button,.ui.disabled.button:hover{cursor:default;opacity:.45!important;background-image:none!important;box-shadow:none!important;pointer-events:none!important}.ui.basic.buttons .ui.disabled.button{border-color:rgba(34,36,38,.5)}.ui.animated.button{position:relative;overflow:hidden;padding-right:0!important;vertical-align:middle;z-index:1}.ui.animated.button .content{will-change:transform,opacity}.ui.animated.button .visible.content{position:relative;margin-right:1.5em;left:auto;right:0}.ui.animated.button .hidden.content{position:absolute;width:100%;top:50%;left:auto;right:-100%;margin-top:-.5em}.ui.animated.button .hidden.content,.ui.animated.button .visible.content{-webkit-transition:right .3s ease 0s;transition:right .3s ease 0s}.ui.animated.button:focus .visible.content,.ui.animated.button:hover .visible.content{left:auto;right:200%}.ui.animated.button:focus .hidden.content,.ui.animated.button:hover .hidden.content{left:auto;right:0}.ui.vertical.animated.button .hidden.content,.ui.vertical.animated.button .visible.content{-webkit-transition:top .3s ease,-webkit-transform .3s ease;transition:top .3s ease,-webkit-transform .3s ease;transition:top .3s ease,transform .3s ease;transition:top .3s ease,transform .3s ease,-webkit-transform .3s ease}.ui.vertical.animated.button .visible.content{-webkit-transform:translateY(0);transform:translateY(0);right:auto}.ui.vertical.animated.button .hidden.content{top:-50%;left:0;right:auto}.ui.vertical.animated.button:focus .visible.content,.ui.vertical.animated.button:hover .visible.content{-webkit-transform:translateY(200%);transform:translateY(200%);right:auto}.ui.vertical.animated.button:focus .hidden.content,.ui.vertical.animated.button:hover .hidden.content{top:50%;right:auto}.ui.fade.animated.button .hidden.content,.ui.fade.animated.button .visible.content{-webkit-transition:opacity .3s ease,-webkit-transform .3s ease;transition:opacity .3s ease,-webkit-transform .3s ease;transition:opacity .3s ease,transform .3s ease;transition:opacity .3s ease,transform .3s ease,-webkit-transform .3s ease}.ui.fade.animated.button .visible.content{left:auto;right:auto;opacity:1;-webkit-transform:scale(1);transform:scale(1)}.ui.fade.animated.button .hidden.content{opacity:0;left:0;right:auto;-webkit-transform:scale(1.5);transform:scale(1.5)}.ui.fade.animated.button:focus .visible.content,.ui.fade.animated.button:hover .visible.content{left:auto;right:auto;opacity:0;-webkit-transform:scale(.75);transform:scale(.75)}.ui.fade.animated.button:focus .hidden.content,.ui.fade.animated.button:hover .hidden.content{left:0;right:auto;opacity:1;-webkit-transform:scale(1);transform:scale(1)}.ui.inverted.button{box-shadow:0 0 0 2px #FFF inset!important;background:0 0;color:#FFF;text-shadow:none!important}.ui.inverted.buttons .button{margin:0 0 0 -2px}.ui.inverted.buttons .button:first-child{margin-left:0}.ui.inverted.vertical.buttons .button{margin:0 0 -2px}.ui.inverted.vertical.buttons .button:first-child{margin-top:0}.ui.inverted.button.active,.ui.inverted.button:focus,.ui.inverted.button:hover{background:#FFF;box-shadow:0 0 0 2px #FFF inset!important;color:rgba(0,0,0,.8)}.ui.inverted.button.active:focus{background:#DCDDDE;box-shadow:0 0 0 2px #DCDDDE inset!important;color:rgba(0,0,0,.8)}.ui.labeled.button:not(.icon){display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;background:0 0!important;padding:0!important;border:none!important;box-shadow:none!important}.ui.labeled.button>.button{margin:0}.ui.labeled.button>.label{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;margin:0 0 0 -1px!important;padding:'';font-size:1em;border-color:rgba(34,36,38,.15)}.ui.labeled.button>.tag.label:before{width:1.85em;height:1.85em}.ui.labeled.button:not([class*="left labeled"])>.button{border-top-right-radius:0;border-bottom-right-radius:0}.ui.labeled.button:not([class*="left labeled"])>.label,.ui[class*="left labeled"].button>.button{border-top-left-radius:0;border-bottom-left-radius:0}.ui[class*="left labeled"].button>.label{border-top-right-radius:0;border-bottom-right-radius:0}.ui.facebook.button{background-color:#3B5998;color:#FFF;text-shadow:none;background-image:none;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.facebook.button:hover{background-color:#304d8a;color:#FFF;text-shadow:none}.ui.facebook.button:active{background-color:#2d4373;color:#FFF;text-shadow:none}.ui.twitter.button{background-color:#0084B4;color:#FFF;text-shadow:none;background-image:none;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.twitter.button:hover{background-color:#00719b;color:#FFF;text-shadow:none}.ui.twitter.button:active{background-color:#005f81;color:#FFF;text-shadow:none}.ui.google.plus.button{background-color:#DC4A38;color:#FFF;text-shadow:none;background-image:none;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.google.plus.button:hover{background-color:#de321d;color:#FFF;text-shadow:none}.ui.google.plus.button:active{background-color:#bf3322;color:#FFF;text-shadow:none}.ui.linkedin.button{background-color:#1F88BE;color:#FFF;text-shadow:none}.ui.linkedin.button:hover{background-color:#147baf;color:#FFF;text-shadow:none}.ui.linkedin.button:active{background-color:#186992;color:#FFF;text-shadow:none}.ui.youtube.button{background-color:#CC181E;color:#FFF;text-shadow:none;background-image:none;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.youtube.button:hover{background-color:#bd0d13;color:#FFF;text-shadow:none}.ui.youtube.button:active{background-color:#9e1317;color:#FFF;text-shadow:none}.ui.instagram.button{background-color:#49769C;color:#FFF;text-shadow:none;background-image:none;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.instagram.button:hover{background-color:#3d698e;color:#FFF;text-shadow:none}.ui.instagram.button:active{background-color:#395c79;color:#FFF;text-shadow:none}.ui.pinterest.button{background-color:#00ACED;color:#FFF;text-shadow:none;background-image:none;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.pinterest.button:hover{background-color:#0099d4;color:#FFF;text-shadow:none}.ui.pinterest.button:active{background-color:#0087ba;color:#FFF;text-shadow:none}.ui.vk.button{background-color:#4D7198;color:#FFF;background-image:none;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.vk.button:hover{background-color:#41648a;color:#FFF}.ui.vk.button:active{background-color:#3c5876;color:#FFF}.ui.button>.icon:not(.button){height:.85714286em;opacity:.8;margin:0 .42857143em 0 -.21428571em;-webkit-transition:opacity .1s ease;transition:opacity .1s ease;vertical-align:'';color:''}.ui.button:not(.icon)>.icon:not(.button){margin:0 .42857143em 0 -.21428571em}.ui.button:not(.icon)>.right.icon:not(.button){margin:0 -.21428571em 0 .42857143em}.ui[class*="left floated"].button,.ui[class*="left floated"].buttons{float:left;margin-left:0;margin-right:.25em}.ui[class*="right floated"].button,.ui[class*="right floated"].buttons{float:right;margin-right:0;margin-left:.25em}.ui.compact.button,.ui.compact.buttons .button{padding:.58928571em 1.125em}.ui.compact.icon.button,.ui.compact.icon.buttons .button{padding:.58928571em}.ui.compact.labeled.icon.button,.ui.compact.labeled.icon.buttons .button{padding:.58928571em 3.69642857em}.ui.mini.button,.ui.mini.buttons .button,.ui.mini.buttons .or{font-size:.78571429rem}.ui.tiny.button,.ui.tiny.buttons .button,.ui.tiny.buttons .or{font-size:.85714286rem}.ui.small.button,.ui.small.buttons .button,.ui.small.buttons .or{font-size:.92857143rem}.ui.button,.ui.buttons .button,.ui.buttons .or{font-size:1rem}.ui.large.button,.ui.large.buttons .button,.ui.large.buttons .or{font-size:1.14285714rem}.ui.big.button,.ui.big.buttons .button,.ui.big.buttons .or{font-size:1.28571429rem}.ui.huge.button,.ui.huge.buttons .button,.ui.huge.buttons .or{font-size:1.42857143rem}.ui.massive.button,.ui.massive.buttons .button,.ui.massive.buttons .or{font-size:1.71428571rem}.ui.icon.button,.ui.icon.buttons .button{padding:.78571429em}.ui.icon.button>.icon,.ui.icon.buttons .button>.icon{opacity:.9;margin:0;vertical-align:top}.ui.basic.button,.ui.basic.buttons .button{background:0 0!important;color:rgba(0,0,0,.6)!important;font-weight:400;border-radius:.28571429rem;text-transform:none;text-shadow:none!important;box-shadow:0 0 0 1px rgba(34,36,38,.15) inset}.ui.basic.buttons{box-shadow:none;border:1px solid rgba(34,36,38,.15);border-radius:.28571429rem}.ui.basic.button:focus,.ui.basic.button:hover,.ui.basic.buttons .button:focus,.ui.basic.buttons .button:hover{background:#FFF!important;color:rgba(0,0,0,.8)!important;box-shadow:0 0 0 1px rgba(34,36,38,.35) inset,0 0 0 0 rgba(34,36,38,.15) inset}.ui.basic.button:active,.ui.basic.buttons .button:active{background:#F8F8F8!important;color:rgba(0,0,0,.9)!important;box-shadow:0 0 0 1px rgba(0,0,0,.15) inset,0 1px 4px 0 rgba(34,36,38,.15) inset}.ui.basic.active.button,.ui.basic.buttons .active.button{background:rgba(0,0,0,.05)!important;box-shadow:''!important;color:rgba(0,0,0,.95)}.ui.basic.active.button:hover,.ui.basic.buttons .active.button:hover{background-color:rgba(0,0,0,.05)}.ui.basic.buttons .button:hover{box-shadow:0 0 0 1px rgba(34,36,38,.35) inset,0 0 0 0 rgba(34,36,38,.15) inset inset}.ui.basic.buttons .button:active{box-shadow:0 0 0 1px rgba(0,0,0,.15) inset,0 1px 4px 0 rgba(34,36,38,.15) inset inset}.ui.basic.buttons .active.button{box-shadow:rgba(34,36,38,.35) inset}.ui.basic.inverted.button,.ui.basic.inverted.buttons .button{background-color:transparent!important;color:#F9FAFB!important;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important}.ui.basic.inverted.button:focus,.ui.basic.inverted.button:hover,.ui.basic.inverted.buttons .button:focus,.ui.basic.inverted.buttons .button:hover{color:#FFF!important;box-shadow:0 0 0 2px #fff inset!important}.ui.basic.inverted.button:active,.ui.basic.inverted.buttons .button:active{background-color:rgba(255,255,255,.08)!important;color:#FFF!important;box-shadow:0 0 0 2px rgba(255,255,255,.9) inset!important}.ui.basic.inverted.active.button,.ui.basic.inverted.buttons .active.button{background-color:rgba(255,255,255,.08);color:#FFF;text-shadow:none;box-shadow:0 0 0 2px rgba(255,255,255,.7) inset}.ui.basic.inverted.active.button:hover,.ui.basic.inverted.buttons .active.button:hover{background-color:rgba(255,255,255,.15);box-shadow:0 0 0 2px #fff inset!important}.ui.basic.buttons .button{border-radius:0;border-left:1px solid rgba(34,36,38,.15);box-shadow:none}.ui.basic.vertical.buttons .button{border-left:none;border-left-width:0;border-top:1px solid rgba(34,36,38,.15)}.ui.basic.vertical.buttons .button:first-child{border-top-width:0}.ui.labeled.icon.button,.ui.labeled.icon.buttons .button{position:relative;padding-left:4.07142857em!important;padding-right:1.5em!important}.ui.labeled.icon.button>.icon,.ui.labeled.icon.buttons>.button>.icon{position:absolute;height:100%;line-height:1;border-radius:0;border-top-left-radius:inherit;border-bottom-left-radius:inherit;text-align:center;margin:0;width:2.57142857em;background-color:rgba(0,0,0,.05);color:'';box-shadow:-1px 0 0 0 transparent inset;top:0;left:0}.ui[class*="right labeled"].icon.button{padding-right:4.07142857em!important;padding-left:1.5em!important}.ui[class*="right labeled"].icon.button>.icon{left:auto;right:0;border-radius:0;border-top-right-radius:inherit;border-bottom-right-radius:inherit;box-shadow:1px 0 0 0 transparent inset}.ui.labeled.icon.button>.icon:after,.ui.labeled.icon.button>.icon:before,.ui.labeled.icon.buttons>.button>.icon:after,.ui.labeled.icon.buttons>.button>.icon:before{display:block;position:absolute;width:100%;top:50%;text-align:center;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.ui.labeled.icon.buttons .button>.icon{border-radius:0}.ui.labeled.icon.buttons .button:first-child>.icon{border-top-left-radius:.28571429rem;border-bottom-left-radius:.28571429rem}.ui.labeled.icon.buttons .button:last-child>.icon{border-top-right-radius:.28571429rem;border-bottom-right-radius:.28571429rem}.ui.vertical.labeled.icon.buttons .button:first-child>.icon{border-radius:.28571429rem 0 0}.ui.vertical.labeled.icon.buttons .button:last-child>.icon{border-radius:0 0 0 .28571429rem}.ui.fluid[class*="left labeled"].icon.button,.ui.fluid[class*="right labeled"].icon.button{padding-left:1.5em!important;padding-right:1.5em!important}.ui.button.toggle.active,.ui.buttons .button.toggle.active,.ui.toggle.buttons .active.button{background-color:#21BA45!important;box-shadow:none!important;text-shadow:none;color:#FFF!important}.ui.button.toggle.active:hover{background-color:#16ab39!important;text-shadow:none;color:#FFF!important}.ui.circular.button{border-radius:10em}.ui.circular.button>.icon{width:1em;vertical-align:baseline}.ui.buttons .or{position:relative;width:.3em;height:2.57142857em;z-index:3}.ui.buttons .or:before{position:absolute;text-align:center;border-radius:500rem;content:'or';top:50%;left:50%;background-color:#FFF;text-shadow:none;margin-top:-.89285714em;margin-left:-.89285714em;width:1.78571429em;height:1.78571429em;line-height:1.78571429em;color:rgba(0,0,0,.4);font-style:normal;font-weight:700;box-shadow:0 0 0 1px transparent inset}.ui.buttons .or[data-text]:before{content:attr(data-text)}.ui.fluid.buttons .or{width:0!important}.ui.fluid.buttons .or:after{display:none}.ui.attached.button{position:relative;display:block;margin:0;border-radius:0;box-shadow:0 0 0 1px rgba(34,36,38,.15)!important}.ui.attached.top.button{border-radius:.28571429rem .28571429rem 0 0}.ui.attached.bottom.button{border-radius:0 0 .28571429rem .28571429rem}.ui.left.attached.button{display:inline-block;border-left:none;text-align:right;padding-right:.75em;border-radius:.28571429rem 0 0 .28571429rem}.ui.right.attached.button{display:inline-block;text-align:left;padding-left:.75em;border-radius:0 .28571429rem .28571429rem 0}.ui.attached.buttons{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;border-radius:0;width:auto!important;z-index:2;margin-left:-1px;margin-right:-1px}.ui.attached.buttons .button{margin:0}.ui.attached.buttons .button:first-child,.ui.attached.buttons .button:last-child{border-radius:0}.ui[class*="top attached"].buttons{margin-bottom:-1px;border-radius:.28571429rem .28571429rem 0 0}.ui[class*="top attached"].buttons .button:first-child{border-radius:.28571429rem 0 0}.ui[class*="top attached"].buttons .button:last-child{border-radius:0 .28571429rem 0 0}.ui[class*="bottom attached"].buttons{margin-top:-1px;border-radius:0 0 .28571429rem .28571429rem}.ui[class*="bottom attached"].buttons .button:first-child{border-radius:0 0 0 .28571429rem}.ui[class*="bottom attached"].buttons .button:last-child{border-radius:0 0 .28571429rem}.ui[class*="left attached"].buttons{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;margin-right:0;margin-left:-1px;border-radius:0 .28571429rem .28571429rem 0}.ui[class*="left attached"].buttons .button:first-child{margin-left:-1px;border-radius:0 .28571429rem 0 0}.ui[class*="left attached"].buttons .button:last-child{margin-left:-1px;border-radius:0 0 .28571429rem}.ui[class*="right attached"].buttons{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;margin-left:0;margin-right:-1px;border-radius:.28571429rem 0 0 .28571429rem}.ui[class*="right attached"].buttons .button:first-child{margin-left:-1px;border-radius:.28571429rem 0 0}.ui[class*="right attached"].buttons .button:last-child{margin-left:-1px;border-radius:0 0 0 .28571429rem}.ui.fluid.button,.ui.fluid.buttons{width:100%}.ui.fluid.button{display:block}.ui.two.buttons{width:100%}.ui.two.buttons>.button{width:50%}.ui.three.buttons{width:100%}.ui.three.buttons>.button{width:33.333%}.ui.four.buttons{width:100%}.ui.four.buttons>.button{width:25%}.ui.five.buttons{width:100%}.ui.five.buttons>.button{width:20%}.ui.six.buttons{width:100%}.ui.six.buttons>.button{width:16.666%}.ui.seven.buttons{width:100%}.ui.seven.buttons>.button{width:14.285%}.ui.eight.buttons{width:100%}.ui.eight.buttons>.button{width:12.5%}.ui.nine.buttons{width:100%}.ui.nine.buttons>.button{width:11.11%}.ui.ten.buttons{width:100%}.ui.ten.buttons>.button{width:10%}.ui.eleven.buttons{width:100%}.ui.eleven.buttons>.button{width:9.09%}.ui.twelve.buttons{width:100%}.ui.twelve.buttons>.button{width:8.3333%}.ui.fluid.vertical.buttons,.ui.fluid.vertical.buttons>.button{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:auto}.ui.two.vertical.buttons>.button{height:50%}.ui.three.vertical.buttons>.button{height:33.333%}.ui.four.vertical.buttons>.button{height:25%}.ui.five.vertical.buttons>.button{height:20%}.ui.six.vertical.buttons>.button{height:16.666%}.ui.seven.vertical.buttons>.button{height:14.285%}.ui.eight.vertical.buttons>.button{height:12.5%}.ui.nine.vertical.buttons>.button{height:11.11%}.ui.ten.vertical.buttons>.button{height:10%}.ui.eleven.vertical.buttons>.button{height:9.09%}.ui.twelve.vertical.buttons>.button{height:8.3333%}.ui.black.button,.ui.black.buttons .button{background-color:#1B1C1D;color:#FFF;text-shadow:none;background-image:none}.ui.black.button{box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.black.button:hover,.ui.black.buttons .button:hover{background-color:#27292a;color:#FFF;text-shadow:none}.ui.black.button:focus,.ui.black.buttons .button:focus{background-color:#2f3032;color:#FFF;text-shadow:none}.ui.black.button:active,.ui.black.buttons .button:active{background-color:#343637;color:#FFF;text-shadow:none}.ui.black.active.button,.ui.black.button .active.button:active,.ui.black.buttons .active.button,.ui.black.buttons .active.button:active{background-color:#0f0f10;color:#FFF;text-shadow:none}.ui.basic.black.button,.ui.basic.black.buttons .button{box-shadow:0 0 0 1px #1B1C1D inset!important;color:#1B1C1D!important}.ui.basic.black.button:hover,.ui.basic.black.buttons .button:hover{background:0 0!important;box-shadow:0 0 0 1px #27292a inset!important;color:#27292a!important}.ui.basic.black.button:focus,.ui.basic.black.buttons .button:focus{background:0 0!important;box-shadow:0 0 0 1px #2f3032 inset!important;color:#27292a!important}.ui.basic.black.active.button,.ui.basic.black.buttons .active.button{background:0 0!important;box-shadow:0 0 0 1px #0f0f10 inset!important;color:#343637!important}.ui.basic.black.button:active,.ui.basic.black.buttons .button:active{box-shadow:0 0 0 1px #343637 inset!important;color:#343637!important}.ui.buttons:not(.vertical)>.basic.black.button:not(:first-child){margin-left:-1px}.ui.inverted.black.button,.ui.inverted.black.buttons .button{background-color:transparent;box-shadow:0 0 0 2px #D4D4D5 inset!important;color:#FFF}.ui.inverted.black.button.active,.ui.inverted.black.button:active,.ui.inverted.black.button:focus,.ui.inverted.black.button:hover,.ui.inverted.black.buttons .button.active,.ui.inverted.black.buttons .button:active,.ui.inverted.black.buttons .button:focus,.ui.inverted.black.buttons .button:hover{box-shadow:none!important;color:#FFF}.ui.inverted.black.active.button,.ui.inverted.black.button:active,.ui.inverted.black.button:focus,.ui.inverted.black.button:hover,.ui.inverted.black.buttons .active.button,.ui.inverted.black.buttons .button:active,.ui.inverted.black.buttons .button:focus,.ui.inverted.black.buttons .button:hover{background-color:#000}.ui.inverted.black.basic.button,.ui.inverted.black.basic.buttons .button,.ui.inverted.black.buttons .basic.button{background-color:transparent;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;color:#FFF!important}.ui.inverted.black.basic.button:hover,.ui.inverted.black.basic.buttons .button:hover,.ui.inverted.black.buttons .basic.button:hover{box-shadow:0 0 0 2px #000 inset!important;color:#FFF!important}.ui.inverted.black.basic.button:focus,.ui.inverted.black.basic.buttons .button:focus{box-shadow:0 0 0 2px #000 inset!important;color:#545454!important}.ui.inverted.black.basic.active.button,.ui.inverted.black.basic.button:active,.ui.inverted.black.basic.buttons .active.button,.ui.inverted.black.basic.buttons .button:active,.ui.inverted.black.buttons .basic.active.button,.ui.inverted.black.buttons .basic.button:active{box-shadow:0 0 0 2px #000 inset!important;color:#FFF!important}.ui.grey.button,.ui.grey.buttons .button{background-color:#767676;color:#FFF;text-shadow:none;background-image:none}.ui.grey.button{box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.grey.button:hover,.ui.grey.buttons .button:hover{background-color:#838383;color:#FFF;text-shadow:none}.ui.grey.button:focus,.ui.grey.buttons .button:focus{background-color:#8a8a8a;color:#FFF;text-shadow:none}.ui.grey.button:active,.ui.grey.buttons .button:active{background-color:#909090;color:#FFF;text-shadow:none}.ui.grey.active.button,.ui.grey.button .active.button:active,.ui.grey.buttons .active.button,.ui.grey.buttons .active.button:active{background-color:#696969;color:#FFF;text-shadow:none}.ui.basic.grey.button,.ui.basic.grey.buttons .button{box-shadow:0 0 0 1px #767676 inset!important;color:#767676!important}.ui.basic.grey.button:hover,.ui.basic.grey.buttons .button:hover{background:0 0!important;box-shadow:0 0 0 1px #838383 inset!important;color:#838383!important}.ui.basic.grey.button:focus,.ui.basic.grey.buttons .button:focus{background:0 0!important;box-shadow:0 0 0 1px #8a8a8a inset!important;color:#838383!important}.ui.basic.grey.active.button,.ui.basic.grey.buttons .active.button{background:0 0!important;box-shadow:0 0 0 1px #696969 inset!important;color:#909090!important}.ui.basic.grey.button:active,.ui.basic.grey.buttons .button:active{box-shadow:0 0 0 1px #909090 inset!important;color:#909090!important}.ui.buttons:not(.vertical)>.basic.grey.button:not(:first-child){margin-left:-1px}.ui.inverted.grey.button,.ui.inverted.grey.buttons .button{background-color:transparent;box-shadow:0 0 0 2px #D4D4D5 inset!important;color:#FFF}.ui.inverted.grey.button.active,.ui.inverted.grey.button:active,.ui.inverted.grey.button:focus,.ui.inverted.grey.button:hover,.ui.inverted.grey.buttons .button.active,.ui.inverted.grey.buttons .button:active,.ui.inverted.grey.buttons .button:focus,.ui.inverted.grey.buttons .button:hover{box-shadow:none!important;color:rgba(0,0,0,.6)}.ui.inverted.grey.button:hover,.ui.inverted.grey.buttons .button:hover{background-color:#cfd0d2}.ui.inverted.grey.button:focus,.ui.inverted.grey.buttons .button:focus{background-color:#c7c9cb}.ui.inverted.grey.active.button,.ui.inverted.grey.buttons .active.button{background-color:#cfd0d2}.ui.inverted.grey.button:active,.ui.inverted.grey.buttons .button:active{background-color:#c2c4c5}.ui.inverted.grey.basic.button,.ui.inverted.grey.basic.buttons .button,.ui.inverted.grey.buttons .basic.button{background-color:transparent;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;color:#FFF!important}.ui.inverted.grey.basic.button:hover,.ui.inverted.grey.basic.buttons .button:hover,.ui.inverted.grey.buttons .basic.button:hover{box-shadow:0 0 0 2px #cfd0d2 inset!important;color:#FFF!important}.ui.inverted.grey.basic.button:focus,.ui.inverted.grey.basic.buttons .button:focus{box-shadow:0 0 0 2px #c7c9cb inset!important;color:#DCDDDE!important}.ui.inverted.grey.basic.active.button,.ui.inverted.grey.basic.buttons .active.button,.ui.inverted.grey.buttons .basic.active.button{box-shadow:0 0 0 2px #cfd0d2 inset!important;color:#FFF!important}.ui.inverted.grey.basic.button:active,.ui.inverted.grey.basic.buttons .button:active,.ui.inverted.grey.buttons .basic.button:active{box-shadow:0 0 0 2px #c2c4c5 inset!important;color:#FFF!important}.ui.brown.button,.ui.brown.buttons .button{background-color:#A5673F;color:#FFF;text-shadow:none;background-image:none}.ui.brown.button{box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.brown.button:hover,.ui.brown.buttons .button:hover{background-color:#975b33;color:#FFF;text-shadow:none}.ui.brown.button:focus,.ui.brown.buttons .button:focus{background-color:#90532b;color:#FFF;text-shadow:none}.ui.brown.button:active,.ui.brown.buttons .button:active{background-color:#805031;color:#FFF;text-shadow:none}.ui.brown.active.button,.ui.brown.button .active.button:active,.ui.brown.buttons .active.button,.ui.brown.buttons .active.button:active{background-color:#995a31;color:#FFF;text-shadow:none}.ui.basic.brown.button,.ui.basic.brown.buttons .button{box-shadow:0 0 0 1px #A5673F inset!important;color:#A5673F!important}.ui.basic.brown.button:hover,.ui.basic.brown.buttons .button:hover{background:0 0!important;box-shadow:0 0 0 1px #975b33 inset!important;color:#975b33!important}.ui.basic.brown.button:focus,.ui.basic.brown.buttons .button:focus{background:0 0!important;box-shadow:0 0 0 1px #90532b inset!important;color:#975b33!important}.ui.basic.brown.active.button,.ui.basic.brown.buttons .active.button{background:0 0!important;box-shadow:0 0 0 1px #995a31 inset!important;color:#805031!important}.ui.basic.brown.button:active,.ui.basic.brown.buttons .button:active{box-shadow:0 0 0 1px #805031 inset!important;color:#805031!important}.ui.buttons:not(.vertical)>.basic.brown.button:not(:first-child){margin-left:-1px}.ui.inverted.brown.button,.ui.inverted.brown.buttons .button{background-color:transparent;box-shadow:0 0 0 2px #D67C1C inset!important;color:#D67C1C}.ui.inverted.brown.button.active,.ui.inverted.brown.button:active,.ui.inverted.brown.button:focus,.ui.inverted.brown.button:hover,.ui.inverted.brown.buttons .button.active,.ui.inverted.brown.buttons .button:active,.ui.inverted.brown.buttons .button:focus,.ui.inverted.brown.buttons .button:hover{box-shadow:none!important;color:#FFF}.ui.inverted.brown.button:hover,.ui.inverted.brown.buttons .button:hover{background-color:#c86f11}.ui.inverted.brown.button:focus,.ui.inverted.brown.buttons .button:focus{background-color:#c16808}.ui.inverted.brown.active.button,.ui.inverted.brown.buttons .active.button{background-color:#cc6f0d}.ui.inverted.brown.button:active,.ui.inverted.brown.buttons .button:active{background-color:#a96216}.ui.inverted.brown.basic.button,.ui.inverted.brown.basic.buttons .button,.ui.inverted.brown.buttons .basic.button{background-color:transparent;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;color:#FFF!important}.ui.inverted.brown.basic.button:hover,.ui.inverted.brown.basic.buttons .button:hover,.ui.inverted.brown.buttons .basic.button:hover{box-shadow:0 0 0 2px #c86f11 inset!important;color:#D67C1C!important}.ui.inverted.brown.basic.button:focus,.ui.inverted.brown.basic.buttons .button:focus{box-shadow:0 0 0 2px #c16808 inset!important;color:#D67C1C!important}.ui.inverted.brown.basic.active.button,.ui.inverted.brown.basic.buttons .active.button,.ui.inverted.brown.buttons .basic.active.button{box-shadow:0 0 0 2px #cc6f0d inset!important;color:#D67C1C!important}.ui.inverted.brown.basic.button:active,.ui.inverted.brown.basic.buttons .button:active,.ui.inverted.brown.buttons .basic.button:active{box-shadow:0 0 0 2px #a96216 inset!important;color:#D67C1C!important}.ui.blue.button,.ui.blue.buttons .button{background-color:#2185D0;color:#FFF;text-shadow:none;background-image:none}.ui.blue.button{box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.blue.button:hover,.ui.blue.buttons .button:hover{background-color:#1678c2;color:#FFF;text-shadow:none}.ui.blue.button:focus,.ui.blue.buttons .button:focus{background-color:#0d71bb;color:#FFF;text-shadow:none}.ui.blue.button:active,.ui.blue.buttons .button:active{background-color:#1a69a4;color:#FFF;text-shadow:none}.ui.blue.active.button,.ui.blue.button .active.button:active,.ui.blue.buttons .active.button,.ui.blue.buttons .active.button:active{background-color:#1279c6;color:#FFF;text-shadow:none}.ui.basic.blue.button,.ui.basic.blue.buttons .button{box-shadow:0 0 0 1px #2185D0 inset!important;color:#2185D0!important}.ui.basic.blue.button:hover,.ui.basic.blue.buttons .button:hover{background:0 0!important;box-shadow:0 0 0 1px #1678c2 inset!important;color:#1678c2!important}.ui.basic.blue.button:focus,.ui.basic.blue.buttons .button:focus{background:0 0!important;box-shadow:0 0 0 1px #0d71bb inset!important;color:#1678c2!important}.ui.basic.blue.active.button,.ui.basic.blue.buttons .active.button{background:0 0!important;box-shadow:0 0 0 1px #1279c6 inset!important;color:#1a69a4!important}.ui.basic.blue.button:active,.ui.basic.blue.buttons .button:active{box-shadow:0 0 0 1px #1a69a4 inset!important;color:#1a69a4!important}.ui.buttons:not(.vertical)>.basic.blue.button:not(:first-child){margin-left:-1px}.ui.inverted.blue.button,.ui.inverted.blue.buttons .button{background-color:transparent;box-shadow:0 0 0 2px #54C8FF inset!important;color:#54C8FF}.ui.inverted.blue.button.active,.ui.inverted.blue.button:active,.ui.inverted.blue.button:focus,.ui.inverted.blue.button:hover,.ui.inverted.blue.buttons .button.active,.ui.inverted.blue.buttons .button:active,.ui.inverted.blue.buttons .button:focus,.ui.inverted.blue.buttons .button:hover{box-shadow:none!important;color:#FFF}.ui.inverted.blue.button:hover,.ui.inverted.blue.buttons .button:hover{background-color:#3ac0ff}.ui.inverted.blue.button:focus,.ui.inverted.blue.buttons .button:focus{background-color:#2bbbff}.ui.inverted.blue.active.button,.ui.inverted.blue.buttons .active.button{background-color:#3ac0ff}.ui.inverted.blue.button:active,.ui.inverted.blue.buttons .button:active{background-color:#21b8ff}.ui.inverted.blue.basic.button,.ui.inverted.blue.basic.buttons .button,.ui.inverted.blue.buttons .basic.button{background-color:transparent;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;color:#FFF!important}.ui.inverted.blue.basic.button:hover,.ui.inverted.blue.basic.buttons .button:hover,.ui.inverted.blue.buttons .basic.button:hover{box-shadow:0 0 0 2px #3ac0ff inset!important;color:#54C8FF!important}.ui.inverted.blue.basic.button:focus,.ui.inverted.blue.basic.buttons .button:focus{box-shadow:0 0 0 2px #2bbbff inset!important;color:#54C8FF!important}.ui.inverted.blue.basic.active.button,.ui.inverted.blue.basic.buttons .active.button,.ui.inverted.blue.buttons .basic.active.button{box-shadow:0 0 0 2px #3ac0ff inset!important;color:#54C8FF!important}.ui.inverted.blue.basic.button:active,.ui.inverted.blue.basic.buttons .button:active,.ui.inverted.blue.buttons .basic.button:active{box-shadow:0 0 0 2px #21b8ff inset!important;color:#54C8FF!important}.ui.green.button,.ui.green.buttons .button{background-color:#21BA45;color:#FFF;text-shadow:none;background-image:none}.ui.green.button{box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.green.button:hover,.ui.green.buttons .button:hover{background-color:#16ab39;color:#FFF;text-shadow:none}.ui.green.button:focus,.ui.green.buttons .button:focus{background-color:#0ea432;color:#FFF;text-shadow:none}.ui.green.button:active,.ui.green.buttons .button:active{background-color:#198f35;color:#FFF;text-shadow:none}.ui.green.active.button,.ui.green.button .active.button:active,.ui.green.buttons .active.button,.ui.green.buttons .active.button:active{background-color:#13ae38;color:#FFF;text-shadow:none}.ui.basic.green.button,.ui.basic.green.buttons .button{box-shadow:0 0 0 1px #21BA45 inset!important;color:#21BA45!important}.ui.basic.green.button:hover,.ui.basic.green.buttons .button:hover{background:0 0!important;box-shadow:0 0 0 1px #16ab39 inset!important;color:#16ab39!important}.ui.basic.green.button:focus,.ui.basic.green.buttons .button:focus{background:0 0!important;box-shadow:0 0 0 1px #0ea432 inset!important;color:#16ab39!important}.ui.basic.green.active.button,.ui.basic.green.buttons .active.button{background:0 0!important;box-shadow:0 0 0 1px #13ae38 inset!important;color:#198f35!important}.ui.basic.green.button:active,.ui.basic.green.buttons .button:active{box-shadow:0 0 0 1px #198f35 inset!important;color:#198f35!important}.ui.buttons:not(.vertical)>.basic.green.button:not(:first-child){margin-left:-1px}.ui.inverted.green.button,.ui.inverted.green.buttons .button{background-color:transparent;box-shadow:0 0 0 2px #2ECC40 inset!important;color:#2ECC40}.ui.inverted.green.button.active,.ui.inverted.green.button:active,.ui.inverted.green.button:focus,.ui.inverted.green.button:hover,.ui.inverted.green.buttons .button.active,.ui.inverted.green.buttons .button:active,.ui.inverted.green.buttons .button:focus,.ui.inverted.green.buttons .button:hover{box-shadow:none!important;color:#FFF}.ui.inverted.green.button:hover,.ui.inverted.green.buttons .button:hover{background-color:#22be34}.ui.inverted.green.button:focus,.ui.inverted.green.buttons .button:focus{background-color:#19b82b}.ui.inverted.green.active.button,.ui.inverted.green.buttons .active.button{background-color:#1fc231}.ui.inverted.green.button:active,.ui.inverted.green.buttons .button:active{background-color:#25a233}.ui.inverted.green.basic.button,.ui.inverted.green.basic.buttons .button,.ui.inverted.green.buttons .basic.button{background-color:transparent;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;color:#FFF!important}.ui.inverted.green.basic.button:hover,.ui.inverted.green.basic.buttons .button:hover,.ui.inverted.green.buttons .basic.button:hover{box-shadow:0 0 0 2px #22be34 inset!important;color:#2ECC40!important}.ui.inverted.green.basic.button:focus,.ui.inverted.green.basic.buttons .button:focus{box-shadow:0 0 0 2px #19b82b inset!important;color:#2ECC40!important}.ui.inverted.green.basic.active.button,.ui.inverted.green.basic.buttons .active.button,.ui.inverted.green.buttons .basic.active.button{box-shadow:0 0 0 2px #1fc231 inset!important;color:#2ECC40!important}.ui.inverted.green.basic.button:active,.ui.inverted.green.basic.buttons .button:active,.ui.inverted.green.buttons .basic.button:active{box-shadow:0 0 0 2px #25a233 inset!important;color:#2ECC40!important}.ui.orange.button,.ui.orange.buttons .button{background-color:#F2711C;color:#FFF;text-shadow:none;background-image:none}.ui.orange.button{box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.orange.button:hover,.ui.orange.buttons .button:hover{background-color:#f26202;color:#FFF;text-shadow:none}.ui.orange.button:focus,.ui.orange.buttons .button:focus{background-color:#e55b00;color:#FFF;text-shadow:none}.ui.orange.button:active,.ui.orange.buttons .button:active{background-color:#cf590c;color:#FFF;text-shadow:none}.ui.orange.active.button,.ui.orange.button .active.button:active,.ui.orange.buttons .active.button,.ui.orange.buttons .active.button:active{background-color:#f56100;color:#FFF;text-shadow:none}.ui.basic.orange.button,.ui.basic.orange.buttons .button{box-shadow:0 0 0 1px #F2711C inset!important;color:#F2711C!important}.ui.basic.orange.button:hover,.ui.basic.orange.buttons .button:hover{background:0 0!important;box-shadow:0 0 0 1px #f26202 inset!important;color:#f26202!important}.ui.basic.orange.button:focus,.ui.basic.orange.buttons .button:focus{background:0 0!important;box-shadow:0 0 0 1px #e55b00 inset!important;color:#f26202!important}.ui.basic.orange.active.button,.ui.basic.orange.buttons .active.button{background:0 0!important;box-shadow:0 0 0 1px #f56100 inset!important;color:#cf590c!important}.ui.basic.orange.button:active,.ui.basic.orange.buttons .button:active{box-shadow:0 0 0 1px #cf590c inset!important;color:#cf590c!important}.ui.buttons:not(.vertical)>.basic.orange.button:not(:first-child){margin-left:-1px}.ui.inverted.orange.button,.ui.inverted.orange.buttons .button{background-color:transparent;box-shadow:0 0 0 2px #FF851B inset!important;color:#FF851B}.ui.inverted.orange.button.active,.ui.inverted.orange.button:active,.ui.inverted.orange.button:focus,.ui.inverted.orange.button:hover,.ui.inverted.orange.buttons .button.active,.ui.inverted.orange.buttons .button:active,.ui.inverted.orange.buttons .button:focus,.ui.inverted.orange.buttons .button:hover{box-shadow:none!important;color:#FFF}.ui.inverted.orange.button:hover,.ui.inverted.orange.buttons .button:hover{background-color:#ff7701}.ui.inverted.orange.button:focus,.ui.inverted.orange.buttons .button:focus{background-color:#f17000}.ui.inverted.orange.active.button,.ui.inverted.orange.buttons .active.button{background-color:#ff7701}.ui.inverted.orange.button:active,.ui.inverted.orange.buttons .button:active{background-color:#e76b00}.ui.inverted.orange.basic.button,.ui.inverted.orange.basic.buttons .button,.ui.inverted.orange.buttons .basic.button{background-color:transparent;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;color:#FFF!important}.ui.inverted.orange.basic.button:hover,.ui.inverted.orange.basic.buttons .button:hover,.ui.inverted.orange.buttons .basic.button:hover{box-shadow:0 0 0 2px #ff7701 inset!important;color:#FF851B!important}.ui.inverted.orange.basic.button:focus,.ui.inverted.orange.basic.buttons .button:focus{box-shadow:0 0 0 2px #f17000 inset!important;color:#FF851B!important}.ui.inverted.orange.basic.active.button,.ui.inverted.orange.basic.buttons .active.button,.ui.inverted.orange.buttons .basic.active.button{box-shadow:0 0 0 2px #ff7701 inset!important;color:#FF851B!important}.ui.inverted.orange.basic.button:active,.ui.inverted.orange.basic.buttons .button:active,.ui.inverted.orange.buttons .basic.button:active{box-shadow:0 0 0 2px #e76b00 inset!important;color:#FF851B!important}.ui.pink.button,.ui.pink.buttons .button{background-color:#E03997;color:#FFF;text-shadow:none;background-image:none}.ui.pink.button{box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.pink.button:hover,.ui.pink.buttons .button:hover{background-color:#e61a8d;color:#FFF;text-shadow:none}.ui.pink.button:focus,.ui.pink.buttons .button:focus{background-color:#e10f85;color:#FFF;text-shadow:none}.ui.pink.button:active,.ui.pink.buttons .button:active{background-color:#c71f7e;color:#FFF;text-shadow:none}.ui.pink.active.button,.ui.pink.button .active.button:active,.ui.pink.buttons .active.button,.ui.pink.buttons .active.button:active{background-color:#ea158d;color:#FFF;text-shadow:none}.ui.basic.pink.button,.ui.basic.pink.buttons .button{box-shadow:0 0 0 1px #E03997 inset!important;color:#E03997!important}.ui.basic.pink.button:hover,.ui.basic.pink.buttons .button:hover{background:0 0!important;box-shadow:0 0 0 1px #e61a8d inset!important;color:#e61a8d!important}.ui.basic.pink.button:focus,.ui.basic.pink.buttons .button:focus{background:0 0!important;box-shadow:0 0 0 1px #e10f85 inset!important;color:#e61a8d!important}.ui.basic.pink.active.button,.ui.basic.pink.buttons .active.button{background:0 0!important;box-shadow:0 0 0 1px #ea158d inset!important;color:#c71f7e!important}.ui.basic.pink.button:active,.ui.basic.pink.buttons .button:active{box-shadow:0 0 0 1px #c71f7e inset!important;color:#c71f7e!important}.ui.buttons:not(.vertical)>.basic.pink.button:not(:first-child){margin-left:-1px}.ui.inverted.pink.button,.ui.inverted.pink.buttons .button{background-color:transparent;box-shadow:0 0 0 2px #FF8EDF inset!important;color:#FF8EDF}.ui.inverted.pink.button.active,.ui.inverted.pink.button:active,.ui.inverted.pink.button:focus,.ui.inverted.pink.button:hover,.ui.inverted.pink.buttons .button.active,.ui.inverted.pink.buttons .button:active,.ui.inverted.pink.buttons .button:focus,.ui.inverted.pink.buttons .button:hover{box-shadow:none!important;color:#FFF}.ui.inverted.pink.button:hover,.ui.inverted.pink.buttons .button:hover{background-color:#ff74d8}.ui.inverted.pink.button:focus,.ui.inverted.pink.buttons .button:focus{background-color:#ff65d3}.ui.inverted.pink.active.button,.ui.inverted.pink.buttons .active.button{background-color:#ff74d8}.ui.inverted.pink.button:active,.ui.inverted.pink.buttons .button:active{background-color:#ff5bd1}.ui.inverted.pink.basic.button,.ui.inverted.pink.basic.buttons .button,.ui.inverted.pink.buttons .basic.button{background-color:transparent;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;color:#FFF!important}.ui.inverted.pink.basic.button:hover,.ui.inverted.pink.basic.buttons .button:hover,.ui.inverted.pink.buttons .basic.button:hover{box-shadow:0 0 0 2px #ff74d8 inset!important;color:#FF8EDF!important}.ui.inverted.pink.basic.button:focus,.ui.inverted.pink.basic.buttons .button:focus{box-shadow:0 0 0 2px #ff65d3 inset!important;color:#FF8EDF!important}.ui.inverted.pink.basic.active.button,.ui.inverted.pink.basic.buttons .active.button,.ui.inverted.pink.buttons .basic.active.button{box-shadow:0 0 0 2px #ff74d8 inset!important;color:#FF8EDF!important}.ui.inverted.pink.basic.button:active,.ui.inverted.pink.basic.buttons .button:active,.ui.inverted.pink.buttons .basic.button:active{box-shadow:0 0 0 2px #ff5bd1 inset!important;color:#FF8EDF!important}.ui.violet.button,.ui.violet.buttons .button{background-color:#6435C9;color:#FFF;text-shadow:none;background-image:none}.ui.violet.button{box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.violet.button:hover,.ui.violet.buttons .button:hover{background-color:#5829bb;color:#FFF;text-shadow:none}.ui.violet.button:focus,.ui.violet.buttons .button:focus{background-color:#4f20b5;color:#FFF;text-shadow:none}.ui.violet.button:active,.ui.violet.buttons .button:active{background-color:#502aa1;color:#FFF;text-shadow:none}.ui.violet.active.button,.ui.violet.button .active.button:active,.ui.violet.buttons .active.button,.ui.violet.buttons .active.button:active{background-color:#5626bf;color:#FFF;text-shadow:none}.ui.basic.violet.button,.ui.basic.violet.buttons .button{box-shadow:0 0 0 1px #6435C9 inset!important;color:#6435C9!important}.ui.basic.violet.button:hover,.ui.basic.violet.buttons .button:hover{background:0 0!important;box-shadow:0 0 0 1px #5829bb inset!important;color:#5829bb!important}.ui.basic.violet.button:focus,.ui.basic.violet.buttons .button:focus{background:0 0!important;box-shadow:0 0 0 1px #4f20b5 inset!important;color:#5829bb!important}.ui.basic.violet.active.button,.ui.basic.violet.buttons .active.button{background:0 0!important;box-shadow:0 0 0 1px #5626bf inset!important;color:#502aa1!important}.ui.basic.violet.button:active,.ui.basic.violet.buttons .button:active{box-shadow:0 0 0 1px #502aa1 inset!important;color:#502aa1!important}.ui.buttons:not(.vertical)>.basic.violet.button:not(:first-child){margin-left:-1px}.ui.inverted.violet.button,.ui.inverted.violet.buttons .button{background-color:transparent;box-shadow:0 0 0 2px #A291FB inset!important;color:#A291FB}.ui.inverted.violet.button.active,.ui.inverted.violet.button:active,.ui.inverted.violet.button:focus,.ui.inverted.violet.button:hover,.ui.inverted.violet.buttons .button.active,.ui.inverted.violet.buttons .button:active,.ui.inverted.violet.buttons .button:focus,.ui.inverted.violet.buttons .button:hover{box-shadow:none!important;color:#FFF}.ui.inverted.violet.button:hover,.ui.inverted.violet.buttons .button:hover{background-color:#8a73ff}.ui.inverted.violet.button:focus,.ui.inverted.violet.buttons .button:focus{background-color:#7d64ff}.ui.inverted.violet.active.button,.ui.inverted.violet.buttons .active.button{background-color:#8a73ff}.ui.inverted.violet.button:active,.ui.inverted.violet.buttons .button:active{background-color:#7860f9}.ui.inverted.violet.basic.button,.ui.inverted.violet.basic.buttons .button,.ui.inverted.violet.buttons .basic.button{background-color:transparent;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;color:#FFF!important}.ui.inverted.violet.basic.button:hover,.ui.inverted.violet.basic.buttons .button:hover,.ui.inverted.violet.buttons .basic.button:hover{box-shadow:0 0 0 2px #8a73ff inset!important;color:#A291FB!important}.ui.inverted.violet.basic.button:focus,.ui.inverted.violet.basic.buttons .button:focus{box-shadow:0 0 0 2px #7d64ff inset!important;color:#A291FB!important}.ui.inverted.violet.basic.active.button,.ui.inverted.violet.basic.buttons .active.button,.ui.inverted.violet.buttons .basic.active.button{box-shadow:0 0 0 2px #8a73ff inset!important;color:#A291FB!important}.ui.inverted.violet.basic.button:active,.ui.inverted.violet.basic.buttons .button:active,.ui.inverted.violet.buttons .basic.button:active{box-shadow:0 0 0 2px #7860f9 inset!important;color:#A291FB!important}.ui.purple.button,.ui.purple.buttons .button{background-color:#A333C8;color:#FFF;text-shadow:none;background-image:none}.ui.purple.button{box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.purple.button:hover,.ui.purple.buttons .button:hover{background-color:#9627ba;color:#FFF;text-shadow:none}.ui.purple.button:focus,.ui.purple.buttons .button:focus{background-color:#8f1eb4;color:#FFF;text-shadow:none}.ui.purple.button:active,.ui.purple.buttons .button:active{background-color:#82299f;color:#FFF;text-shadow:none}.ui.purple.active.button,.ui.purple.button .active.button:active,.ui.purple.buttons .active.button,.ui.purple.buttons .active.button:active{background-color:#9724be;color:#FFF;text-shadow:none}.ui.basic.purple.button,.ui.basic.purple.buttons .button{box-shadow:0 0 0 1px #A333C8 inset!important;color:#A333C8!important}.ui.basic.purple.button:hover,.ui.basic.purple.buttons .button:hover{background:0 0!important;box-shadow:0 0 0 1px #9627ba inset!important;color:#9627ba!important}.ui.basic.purple.button:focus,.ui.basic.purple.buttons .button:focus{background:0 0!important;box-shadow:0 0 0 1px #8f1eb4 inset!important;color:#9627ba!important}.ui.basic.purple.active.button,.ui.basic.purple.buttons .active.button{background:0 0!important;box-shadow:0 0 0 1px #9724be inset!important;color:#82299f!important}.ui.basic.purple.button:active,.ui.basic.purple.buttons .button:active{box-shadow:0 0 0 1px #82299f inset!important;color:#82299f!important}.ui.buttons:not(.vertical)>.basic.purple.button:not(:first-child){margin-left:-1px}.ui.inverted.purple.button,.ui.inverted.purple.buttons .button{background-color:transparent;box-shadow:0 0 0 2px #DC73FF inset!important;color:#DC73FF}.ui.inverted.purple.button.active,.ui.inverted.purple.button:active,.ui.inverted.purple.button:focus,.ui.inverted.purple.button:hover,.ui.inverted.purple.buttons .button.active,.ui.inverted.purple.buttons .button:active,.ui.inverted.purple.buttons .button:focus,.ui.inverted.purple.buttons .button:hover{box-shadow:none!important;color:#FFF}.ui.inverted.purple.button:hover,.ui.inverted.purple.buttons .button:hover{background-color:#d65aff}.ui.inverted.purple.button:focus,.ui.inverted.purple.buttons .button:focus{background-color:#d24aff}.ui.inverted.purple.active.button,.ui.inverted.purple.buttons .active.button{background-color:#d65aff}.ui.inverted.purple.button:active,.ui.inverted.purple.buttons .button:active{background-color:#cf40ff}.ui.inverted.purple.basic.button,.ui.inverted.purple.basic.buttons .button,.ui.inverted.purple.buttons .basic.button{background-color:transparent;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;color:#FFF!important}.ui.inverted.purple.basic.button:hover,.ui.inverted.purple.basic.buttons .button:hover,.ui.inverted.purple.buttons .basic.button:hover{box-shadow:0 0 0 2px #d65aff inset!important;color:#DC73FF!important}.ui.inverted.purple.basic.button:focus,.ui.inverted.purple.basic.buttons .button:focus{box-shadow:0 0 0 2px #d24aff inset!important;color:#DC73FF!important}.ui.inverted.purple.basic.active.button,.ui.inverted.purple.basic.buttons .active.button,.ui.inverted.purple.buttons .basic.active.button{box-shadow:0 0 0 2px #d65aff inset!important;color:#DC73FF!important}.ui.inverted.purple.basic.button:active,.ui.inverted.purple.basic.buttons .button:active,.ui.inverted.purple.buttons .basic.button:active{box-shadow:0 0 0 2px #cf40ff inset!important;color:#DC73FF!important}.ui.red.button,.ui.red.buttons .button{background-color:#DB2828;color:#FFF;text-shadow:none;background-image:none}.ui.red.button{box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.red.button:hover,.ui.red.buttons .button:hover{background-color:#d01919;color:#FFF;text-shadow:none}.ui.red.button:focus,.ui.red.buttons .button:focus{background-color:#ca1010;color:#FFF;text-shadow:none}.ui.red.button:active,.ui.red.buttons .button:active{background-color:#b21e1e;color:#FFF;text-shadow:none}.ui.red.active.button,.ui.red.button .active.button:active,.ui.red.buttons .active.button,.ui.red.buttons .active.button:active{background-color:#d41515;color:#FFF;text-shadow:none}.ui.basic.red.button,.ui.basic.red.buttons .button{box-shadow:0 0 0 1px #DB2828 inset!important;color:#DB2828!important}.ui.basic.red.button:hover,.ui.basic.red.buttons .button:hover{background:0 0!important;box-shadow:0 0 0 1px #d01919 inset!important;color:#d01919!important}.ui.basic.red.button:focus,.ui.basic.red.buttons .button:focus{background:0 0!important;box-shadow:0 0 0 1px #ca1010 inset!important;color:#d01919!important}.ui.basic.red.active.button,.ui.basic.red.buttons .active.button{background:0 0!important;box-shadow:0 0 0 1px #d41515 inset!important;color:#b21e1e!important}.ui.basic.red.button:active,.ui.basic.red.buttons .button:active{box-shadow:0 0 0 1px #b21e1e inset!important;color:#b21e1e!important}.ui.buttons:not(.vertical)>.basic.red.button:not(:first-child){margin-left:-1px}.ui.inverted.red.button,.ui.inverted.red.buttons .button{background-color:transparent;box-shadow:0 0 0 2px #FF695E inset!important;color:#FF695E}.ui.inverted.red.button.active,.ui.inverted.red.button:active,.ui.inverted.red.button:focus,.ui.inverted.red.button:hover,.ui.inverted.red.buttons .button.active,.ui.inverted.red.buttons .button:active,.ui.inverted.red.buttons .button:focus,.ui.inverted.red.buttons .button:hover{box-shadow:none!important;color:#FFF}.ui.inverted.red.button:hover,.ui.inverted.red.buttons .button:hover{background-color:#ff5144}.ui.inverted.red.button:focus,.ui.inverted.red.buttons .button:focus{background-color:#ff4335}.ui.inverted.red.active.button,.ui.inverted.red.buttons .active.button{background-color:#ff5144}.ui.inverted.red.button:active,.ui.inverted.red.buttons .button:active{background-color:#ff392b}.ui.inverted.red.basic.button,.ui.inverted.red.basic.buttons .button,.ui.inverted.red.buttons .basic.button{background-color:transparent;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;color:#FFF!important}.ui.inverted.red.basic.button:hover,.ui.inverted.red.basic.buttons .button:hover,.ui.inverted.red.buttons .basic.button:hover{box-shadow:0 0 0 2px #ff5144 inset!important;color:#FF695E!important}.ui.inverted.red.basic.button:focus,.ui.inverted.red.basic.buttons .button:focus{box-shadow:0 0 0 2px #ff4335 inset!important;color:#FF695E!important}.ui.inverted.red.basic.active.button,.ui.inverted.red.basic.buttons .active.button,.ui.inverted.red.buttons .basic.active.button{box-shadow:0 0 0 2px #ff5144 inset!important;color:#FF695E!important}.ui.inverted.red.basic.button:active,.ui.inverted.red.basic.buttons .button:active,.ui.inverted.red.buttons .basic.button:active{box-shadow:0 0 0 2px #ff392b inset!important;color:#FF695E!important}.ui.teal.button,.ui.teal.buttons .button{background-color:#00B5AD;color:#FFF;text-shadow:none;background-image:none}.ui.teal.button{box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.teal.button:hover,.ui.teal.buttons .button:hover{background-color:#009c95;color:#FFF;text-shadow:none}.ui.teal.button:focus,.ui.teal.buttons .button:focus{background-color:#008c86;color:#FFF;text-shadow:none}.ui.teal.button:active,.ui.teal.buttons .button:active{background-color:#00827c;color:#FFF;text-shadow:none}.ui.teal.active.button,.ui.teal.button .active.button:active,.ui.teal.buttons .active.button,.ui.teal.buttons .active.button:active{background-color:#009c95;color:#FFF;text-shadow:none}.ui.basic.teal.button,.ui.basic.teal.buttons .button{box-shadow:0 0 0 1px #00B5AD inset!important;color:#00B5AD!important}.ui.basic.teal.button:hover,.ui.basic.teal.buttons .button:hover{background:0 0!important;box-shadow:0 0 0 1px #009c95 inset!important;color:#009c95!important}.ui.basic.teal.button:focus,.ui.basic.teal.buttons .button:focus{background:0 0!important;box-shadow:0 0 0 1px #008c86 inset!important;color:#009c95!important}.ui.basic.teal.active.button,.ui.basic.teal.buttons .active.button{background:0 0!important;box-shadow:0 0 0 1px #009c95 inset!important;color:#00827c!important}.ui.basic.teal.button:active,.ui.basic.teal.buttons .button:active{box-shadow:0 0 0 1px #00827c inset!important;color:#00827c!important}.ui.buttons:not(.vertical)>.basic.teal.button:not(:first-child){margin-left:-1px}.ui.inverted.teal.button,.ui.inverted.teal.buttons .button{background-color:transparent;box-shadow:0 0 0 2px #6DFFFF inset!important;color:#6DFFFF}.ui.inverted.teal.button.active,.ui.inverted.teal.button:active,.ui.inverted.teal.button:focus,.ui.inverted.teal.button:hover,.ui.inverted.teal.buttons .button.active,.ui.inverted.teal.buttons .button:active,.ui.inverted.teal.buttons .button:focus,.ui.inverted.teal.buttons .button:hover{box-shadow:none!important;color:rgba(0,0,0,.6)}.ui.inverted.teal.button:hover,.ui.inverted.teal.buttons .button:hover{background-color:#54ffff}.ui.inverted.teal.button:focus,.ui.inverted.teal.buttons .button:focus{background-color:#4ff}.ui.inverted.teal.active.button,.ui.inverted.teal.buttons .active.button{background-color:#54ffff}.ui.inverted.teal.button:active,.ui.inverted.teal.buttons .button:active{background-color:#3affff}.ui.inverted.teal.basic.button,.ui.inverted.teal.basic.buttons .button,.ui.inverted.teal.buttons .basic.button{background-color:transparent;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;color:#FFF!important}.ui.inverted.teal.basic.button:hover,.ui.inverted.teal.basic.buttons .button:hover,.ui.inverted.teal.buttons .basic.button:hover{box-shadow:0 0 0 2px #54ffff inset!important;color:#6DFFFF!important}.ui.inverted.teal.basic.button:focus,.ui.inverted.teal.basic.buttons .button:focus{box-shadow:0 0 0 2px #4ff inset!important;color:#6DFFFF!important}.ui.inverted.teal.basic.active.button,.ui.inverted.teal.basic.buttons .active.button,.ui.inverted.teal.buttons .basic.active.button{box-shadow:0 0 0 2px #54ffff inset!important;color:#6DFFFF!important}.ui.inverted.teal.basic.button:active,.ui.inverted.teal.basic.buttons .button:active,.ui.inverted.teal.buttons .basic.button:active{box-shadow:0 0 0 2px #3affff inset!important;color:#6DFFFF!important}.ui.olive.button,.ui.olive.buttons .button{background-color:#B5CC18;color:#FFF;text-shadow:none;background-image:none}.ui.olive.button{box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.olive.button:hover,.ui.olive.buttons .button:hover{background-color:#a7bd0d;color:#FFF;text-shadow:none}.ui.olive.button:focus,.ui.olive.buttons .button:focus{background-color:#a0b605;color:#FFF;text-shadow:none}.ui.olive.button:active,.ui.olive.buttons .button:active{background-color:#8d9e13;color:#FFF;text-shadow:none}.ui.olive.active.button,.ui.olive.button .active.button:active,.ui.olive.buttons .active.button,.ui.olive.buttons .active.button:active{background-color:#aac109;color:#FFF;text-shadow:none}.ui.basic.olive.button,.ui.basic.olive.buttons .button{box-shadow:0 0 0 1px #B5CC18 inset!important;color:#B5CC18!important}.ui.basic.olive.button:hover,.ui.basic.olive.buttons .button:hover{background:0 0!important;box-shadow:0 0 0 1px #a7bd0d inset!important;color:#a7bd0d!important}.ui.basic.olive.button:focus,.ui.basic.olive.buttons .button:focus{background:0 0!important;box-shadow:0 0 0 1px #a0b605 inset!important;color:#a7bd0d!important}.ui.basic.olive.active.button,.ui.basic.olive.buttons .active.button{background:0 0!important;box-shadow:0 0 0 1px #aac109 inset!important;color:#8d9e13!important}.ui.basic.olive.button:active,.ui.basic.olive.buttons .button:active{box-shadow:0 0 0 1px #8d9e13 inset!important;color:#8d9e13!important}.ui.buttons:not(.vertical)>.basic.olive.button:not(:first-child){margin-left:-1px}.ui.inverted.olive.button,.ui.inverted.olive.buttons .button{background-color:transparent;box-shadow:0 0 0 2px #D9E778 inset!important;color:#D9E778}.ui.inverted.olive.button.active,.ui.inverted.olive.button:active,.ui.inverted.olive.button:focus,.ui.inverted.olive.button:hover,.ui.inverted.olive.buttons .button.active,.ui.inverted.olive.buttons .button:active,.ui.inverted.olive.buttons .button:focus,.ui.inverted.olive.buttons .button:hover{box-shadow:none!important;color:rgba(0,0,0,.6)}.ui.inverted.olive.button:hover,.ui.inverted.olive.buttons .button:hover{background-color:#d8ea5c}.ui.inverted.olive.button:focus,.ui.inverted.olive.buttons .button:focus{background-color:#daef47}.ui.inverted.olive.active.button,.ui.inverted.olive.buttons .active.button{background-color:#daed59}.ui.inverted.olive.button:active,.ui.inverted.olive.buttons .button:active{background-color:#cddf4d}.ui.inverted.olive.basic.button,.ui.inverted.olive.basic.buttons .button,.ui.inverted.olive.buttons .basic.button{background-color:transparent;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;color:#FFF!important}.ui.inverted.olive.basic.button:hover,.ui.inverted.olive.basic.buttons .button:hover,.ui.inverted.olive.buttons .basic.button:hover{box-shadow:0 0 0 2px #d8ea5c inset!important;color:#D9E778!important}.ui.inverted.olive.basic.button:focus,.ui.inverted.olive.basic.buttons .button:focus{box-shadow:0 0 0 2px #daef47 inset!important;color:#D9E778!important}.ui.inverted.olive.basic.active.button,.ui.inverted.olive.basic.buttons .active.button,.ui.inverted.olive.buttons .basic.active.button{box-shadow:0 0 0 2px #daed59 inset!important;color:#D9E778!important}.ui.inverted.olive.basic.button:active,.ui.inverted.olive.basic.buttons .button:active,.ui.inverted.olive.buttons .basic.button:active{box-shadow:0 0 0 2px #cddf4d inset!important;color:#D9E778!important}.ui.yellow.button,.ui.yellow.buttons .button{background-color:#FBBD08;color:#FFF;text-shadow:none;background-image:none}.ui.yellow.button{box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.yellow.button:hover,.ui.yellow.buttons .button:hover{background-color:#eaae00;color:#FFF;text-shadow:none}.ui.yellow.button:focus,.ui.yellow.buttons .button:focus{background-color:#daa300;color:#FFF;text-shadow:none}.ui.yellow.button:active,.ui.yellow.buttons .button:active{background-color:#cd9903;color:#FFF;text-shadow:none}.ui.yellow.active.button,.ui.yellow.button .active.button:active,.ui.yellow.buttons .active.button,.ui.yellow.buttons .active.button:active{background-color:#eaae00;color:#FFF;text-shadow:none}.ui.basic.yellow.button,.ui.basic.yellow.buttons .button{box-shadow:0 0 0 1px #FBBD08 inset!important;color:#FBBD08!important}.ui.basic.yellow.button:hover,.ui.basic.yellow.buttons .button:hover{background:0 0!important;box-shadow:0 0 0 1px #eaae00 inset!important;color:#eaae00!important}.ui.basic.yellow.button:focus,.ui.basic.yellow.buttons .button:focus{background:0 0!important;box-shadow:0 0 0 1px #daa300 inset!important;color:#eaae00!important}.ui.basic.yellow.active.button,.ui.basic.yellow.buttons .active.button{background:0 0!important;box-shadow:0 0 0 1px #eaae00 inset!important;color:#cd9903!important}.ui.basic.yellow.button:active,.ui.basic.yellow.buttons .button:active{box-shadow:0 0 0 1px #cd9903 inset!important;color:#cd9903!important}.ui.buttons:not(.vertical)>.basic.yellow.button:not(:first-child){margin-left:-1px}.ui.inverted.yellow.button,.ui.inverted.yellow.buttons .button{background-color:transparent;box-shadow:0 0 0 2px #FFE21F inset!important;color:#FFE21F}.ui.inverted.yellow.button.active,.ui.inverted.yellow.button:active,.ui.inverted.yellow.button:focus,.ui.inverted.yellow.button:hover,.ui.inverted.yellow.buttons .button.active,.ui.inverted.yellow.buttons .button:active,.ui.inverted.yellow.buttons .button:focus,.ui.inverted.yellow.buttons .button:hover{box-shadow:none!important;color:rgba(0,0,0,.6)}.ui.inverted.yellow.button:hover,.ui.inverted.yellow.buttons .button:hover{background-color:#ffdf05}.ui.inverted.yellow.button:focus,.ui.inverted.yellow.buttons .button:focus{background-color:#f5d500}.ui.inverted.yellow.active.button,.ui.inverted.yellow.buttons .active.button{background-color:#ffdf05}.ui.inverted.yellow.button:active,.ui.inverted.yellow.buttons .button:active{background-color:#ebcd00}.ui.inverted.yellow.basic.button,.ui.inverted.yellow.basic.buttons .button,.ui.inverted.yellow.buttons .basic.button{background-color:transparent;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;color:#FFF!important}.ui.inverted.yellow.basic.button:hover,.ui.inverted.yellow.basic.buttons .button:hover,.ui.inverted.yellow.buttons .basic.button:hover{box-shadow:0 0 0 2px #ffdf05 inset!important;color:#FFE21F!important}.ui.inverted.yellow.basic.button:focus,.ui.inverted.yellow.basic.buttons .button:focus{box-shadow:0 0 0 2px #f5d500 inset!important;color:#FFE21F!important}.ui.inverted.yellow.basic.active.button,.ui.inverted.yellow.basic.buttons .active.button,.ui.inverted.yellow.buttons .basic.active.button{box-shadow:0 0 0 2px #ffdf05 inset!important;color:#FFE21F!important}.ui.inverted.yellow.basic.button:active,.ui.inverted.yellow.basic.buttons .button:active,.ui.inverted.yellow.buttons .basic.button:active{box-shadow:0 0 0 2px #ebcd00 inset!important;color:#FFE21F!important}.ui.primary.button,.ui.primary.buttons .button{background-color:#2185D0;color:#FFF;text-shadow:none;background-image:none}.ui.primary.button{box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.primary.button:hover,.ui.primary.buttons .button:hover{background-color:#1678c2;color:#FFF;text-shadow:none}.ui.primary.button:focus,.ui.primary.buttons .button:focus{background-color:#0d71bb;color:#FFF;text-shadow:none}.ui.primary.button:active,.ui.primary.buttons .button:active{background-color:#1a69a4;color:#FFF;text-shadow:none}.ui.primary.active.button,.ui.primary.button .active.button:active,.ui.primary.buttons .active.button,.ui.primary.buttons .active.button:active{background-color:#1279c6;color:#FFF;text-shadow:none}.ui.basic.primary.button,.ui.basic.primary.buttons .button{box-shadow:0 0 0 1px #2185D0 inset!important;color:#2185D0!important}.ui.basic.primary.button:hover,.ui.basic.primary.buttons .button:hover{background:0 0!important;box-shadow:0 0 0 1px #1678c2 inset!important;color:#1678c2!important}.ui.basic.primary.button:focus,.ui.basic.primary.buttons .button:focus{background:0 0!important;box-shadow:0 0 0 1px #0d71bb inset!important;color:#1678c2!important}.ui.basic.primary.active.button,.ui.basic.primary.buttons .active.button{background:0 0!important;box-shadow:0 0 0 1px #1279c6 inset!important;color:#1a69a4!important}.ui.basic.primary.button:active,.ui.basic.primary.buttons .button:active{box-shadow:0 0 0 1px #1a69a4 inset!important;color:#1a69a4!important}.ui.secondary.button,.ui.secondary.buttons .button{background-color:#1B1C1D;color:#FFF;text-shadow:none;background-image:none}.ui.secondary.button{box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.secondary.button:hover,.ui.secondary.buttons .button:hover{background-color:#27292a;color:#FFF;text-shadow:none}.ui.secondary.button:focus,.ui.secondary.buttons .button:focus{background-color:#2e3032;color:#FFF;text-shadow:none}.ui.secondary.button:active,.ui.secondary.buttons .button:active{background-color:#343637;color:#FFF;text-shadow:none}.ui.secondary.active.button,.ui.secondary.button .active.button:active,.ui.secondary.buttons .active.button,.ui.secondary.buttons .active.button:active{background-color:#27292a;color:#FFF;text-shadow:none}.ui.basic.secondary.button,.ui.basic.secondary.buttons .button{box-shadow:0 0 0 1px #1B1C1D inset!important;color:#1B1C1D!important}.ui.basic.secondary.button:hover,.ui.basic.secondary.buttons .button:hover{background:0 0!important;box-shadow:0 0 0 1px #27292a inset!important;color:#27292a!important}.ui.basic.secondary.button:focus,.ui.basic.secondary.buttons .button:focus{background:0 0!important;box-shadow:0 0 0 1px #2e3032 inset!important;color:#27292a!important}.ui.basic.secondary.active.button,.ui.basic.secondary.buttons .active.button{background:0 0!important;box-shadow:0 0 0 1px #27292a inset!important;color:#343637!important}.ui.basic.secondary.button:active,.ui.basic.secondary.buttons .button:active{box-shadow:0 0 0 1px #343637 inset!important;color:#343637!important}.ui.positive.button,.ui.positive.buttons .button{background-color:#21BA45;color:#FFF;text-shadow:none;background-image:none}.ui.positive.button{box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.positive.button:hover,.ui.positive.buttons .button:hover{background-color:#16ab39;color:#FFF;text-shadow:none}.ui.positive.button:focus,.ui.positive.buttons .button:focus{background-color:#0ea432;color:#FFF;text-shadow:none}.ui.positive.button:active,.ui.positive.buttons .button:active{background-color:#198f35;color:#FFF;text-shadow:none}.ui.positive.active.button,.ui.positive.button .active.button:active,.ui.positive.buttons .active.button,.ui.positive.buttons .active.button:active{background-color:#13ae38;color:#FFF;text-shadow:none}.ui.basic.positive.button,.ui.basic.positive.buttons .button{box-shadow:0 0 0 1px #21BA45 inset!important;color:#21BA45!important}.ui.basic.positive.button:hover,.ui.basic.positive.buttons .button:hover{background:0 0!important;box-shadow:0 0 0 1px #16ab39 inset!important;color:#16ab39!important}.ui.basic.positive.button:focus,.ui.basic.positive.buttons .button:focus{background:0 0!important;box-shadow:0 0 0 1px #0ea432 inset!important;color:#16ab39!important}.ui.basic.positive.active.button,.ui.basic.positive.buttons .active.button{background:0 0!important;box-shadow:0 0 0 1px #13ae38 inset!important;color:#198f35!important}.ui.basic.positive.button:active,.ui.basic.positive.buttons .button:active{box-shadow:0 0 0 1px #198f35 inset!important;color:#198f35!important}.ui.negative.button,.ui.negative.buttons .button{background-color:#DB2828;color:#FFF;text-shadow:none;background-image:none}.ui.negative.button{box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.negative.button:hover,.ui.negative.buttons .button:hover{background-color:#d01919;color:#FFF;text-shadow:none}.ui.negative.button:focus,.ui.negative.buttons .button:focus{background-color:#ca1010;color:#FFF;text-shadow:none}.ui.negative.button:active,.ui.negative.buttons .button:active{background-color:#b21e1e;color:#FFF;text-shadow:none}.ui.negative.active.button,.ui.negative.button .active.button:active,.ui.negative.buttons .active.button,.ui.negative.buttons .active.button:active{background-color:#d41515;color:#FFF;text-shadow:none}.ui.basic.negative.button,.ui.basic.negative.buttons .button{box-shadow:0 0 0 1px #DB2828 inset!important;color:#DB2828!important}.ui.basic.negative.button:hover,.ui.basic.negative.buttons .button:hover{background:0 0!important;box-shadow:0 0 0 1px #d01919 inset!important;color:#d01919!important}.ui.basic.negative.button:focus,.ui.basic.negative.buttons .button:focus{background:0 0!important;box-shadow:0 0 0 1px #ca1010 inset!important;color:#d01919!important}.ui.basic.negative.active.button,.ui.basic.negative.buttons .active.button{background:0 0!important;box-shadow:0 0 0 1px #d41515 inset!important;color:#b21e1e!important}.ui.basic.negative.button:active,.ui.basic.negative.buttons .button:active{box-shadow:0 0 0 1px #b21e1e inset!important;color:#b21e1e!important}.ui.buttons:not(.vertical)>.basic.primary.button:not(:first-child){margin-left:-1px}.ui.buttons{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;font-size:0;vertical-align:baseline;margin:0 .25em 0 0}.ui.buttons:not(.basic):not(.inverted){box-shadow:none}.ui.buttons:after{content:".";display:block;height:0;clear:both;visibility:hidden}.ui.buttons .button{-webkit-box-flex:1;-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;border-radius:0;margin:0}.ui.buttons:not(.basic):not(.inverted)>.button,.ui.buttons>.ui.button:not(.basic):not(.inverted){box-shadow:0 0 0 1px transparent inset,0 0 0 0 rgba(34,36,38,.15) inset}.ui.buttons .button:first-child{border-left:none;margin-left:0;border-top-left-radius:.28571429rem;border-bottom-left-radius:.28571429rem}.ui.buttons .button:last-child{border-top-right-radius:.28571429rem;border-bottom-right-radius:.28571429rem}.ui.vertical.buttons{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.ui.vertical.buttons .button{display:block;float:none;width:100%;margin:0;box-shadow:none}.ui.vertical.buttons .button:first-child,.ui.vertical.buttons .huge.button:first-child,.ui.vertical.buttons .massive.button:first-child,.ui.vertical.buttons .mini.button:first-child,.ui.vertical.buttons .small.button:first-child,.ui.vertical.buttons .tiny.button:first-child{border-radius:.28571429rem .28571429rem 0 0}.ui.vertical.buttons .button:last-child,.ui.vertical.buttons .gigantic.button:last-child,.ui.vertical.buttons .huge.button:last-child,.ui.vertical.buttons .massive.button:last-child,.ui.vertical.buttons .mini.button:last-child,.ui.vertical.buttons .small.button:last-child,.ui.vertical.buttons .tiny.button:last-child{margin-bottom:0;border-radius:0 0 .28571429rem .28571429rem}.ui.container{display:block;max-width:100%!important}@media only screen and (max-width:767px){.ui.container{width:auto!important;margin-left:1em!important;margin-right:1em!important}.ui.grid.container,.ui.relaxed.grid.container,.ui.very.relaxed.grid.container{width:auto!important}}@media only screen and (min-width:768px) and (max-width:991px){.ui.container{width:723px;margin-left:auto!important;margin-right:auto!important}.ui.grid.container{width:calc(723px + 2rem)!important}.ui.relaxed.grid.container{width:calc(723px + 3rem)!important}.ui.very.relaxed.grid.container{width:calc(723px + 5rem)!important}}@media only screen and (min-width:992px) and (max-width:1199px){.ui.container{width:933px;margin-left:auto!important;margin-right:auto!important}.ui.grid.container{width:calc(933px + 2rem)!important}.ui.relaxed.grid.container{width:calc(933px + 3rem)!important}.ui.very.relaxed.grid.container{width:calc(933px + 5rem)!important}}@media only screen and (min-width:1200px){.ui.container{width:1127px;margin-left:auto!important;margin-right:auto!important}.ui.grid.container{width:calc(1127px + 2rem)!important}.ui.relaxed.grid.container{width:calc(1127px + 3rem)!important}.ui.very.relaxed.grid.container{width:calc(1127px + 5rem)!important}}.ui.text.container{font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;max-width:700px!important;line-height:1.5;font-size:1.14285714rem}.ui.fluid.container{width:100%}.ui[class*="left aligned"].container{text-align:left}.ui[class*="center aligned"].container{text-align:center}.ui[class*="right aligned"].container{text-align:right}.ui.justified.container{text-align:justify;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto}.ui.divider{margin:1rem 0;line-height:1;height:0;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:rgba(0,0,0,.85);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;font-size:1rem}.ui.divider:not(.vertical):not(.horizontal){border-top:1px solid rgba(34,36,38,.15);border-bottom:1px solid rgba(255,255,255,.1)}.ui.grid>.column+.divider,.ui.grid>.row>.column+.divider{left:auto}.ui.horizontal.divider{display:table;white-space:nowrap;height:auto;margin:'';line-height:1;text-align:center}.ui.horizontal.divider:after,.ui.horizontal.divider:before{content:'';display:table-cell;position:relative;top:50%;width:50%;background-repeat:no-repeat;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABaAAAAACCAYAAACuTHuKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyFpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1OThBRDY4OUNDMTYxMUU0OUE3NUVGOEJDMzMzMjE2NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1OThBRDY4QUNDMTYxMUU0OUE3NUVGOEJDMzMzMjE2NyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU5OEFENjg3Q0MxNjExRTQ5QTc1RUY4QkMzMzMyMTY3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU5OEFENjg4Q0MxNjExRTQ5QTc1RUY4QkMzMzMyMTY3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+VU513gAAADVJREFUeNrs0DENACAQBDBIWLGBJQby/mUcJn5sJXQmOQMAAAAAAJqt+2prAAAAAACg2xdgANk6BEVuJgyMAAAAAElFTkSuQmCC)}.ui.horizontal.divider:before{background-position:right 1em top 50%}.ui.horizontal.divider:after{background-position:left 1em top 50%}.ui.vertical.divider{position:absolute;z-index:2;top:50%;left:50%;margin:0;padding:0;width:auto;height:50%;line-height:0;text-align:center;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.ui.vertical.divider:after,.ui.vertical.divider:before{position:absolute;left:50%;content:'';z-index:3;border-left:1px solid rgba(34,36,38,.15);border-right:1px solid rgba(255,255,255,.1);width:0;height:calc(100% - 1rem)}.ui.vertical.divider:before{top:-100%}.ui.vertical.divider:after{top:auto;bottom:0}@media only screen and (max-width:767px){.ui.grid .stackable.row .ui.vertical.divider,.ui.stackable.grid .ui.vertical.divider{display:table;white-space:nowrap;height:auto;margin:'';overflow:hidden;line-height:1;text-align:center;position:static;top:0;left:0;-webkit-transform:none;transform:none}.ui.grid .stackable.row .ui.vertical.divider:after,.ui.grid .stackable.row .ui.vertical.divider:before,.ui.stackable.grid .ui.vertical.divider:after,.ui.stackable.grid .ui.vertical.divider:before{left:0;border-left:none;border-right:none;content:'';display:table-cell;position:relative;top:50%;width:50%;background-repeat:no-repeat;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABaAAAAACCAYAAACuTHuKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyFpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1OThBRDY4OUNDMTYxMUU0OUE3NUVGOEJDMzMzMjE2NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1OThBRDY4QUNDMTYxMUU0OUE3NUVGOEJDMzMzMjE2NyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU5OEFENjg3Q0MxNjExRTQ5QTc1RUY4QkMzMzMyMTY3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU5OEFENjg4Q0MxNjExRTQ5QTc1RUY4QkMzMzMyMTY3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+VU513gAAADVJREFUeNrs0DENACAQBDBIWLGBJQby/mUcJn5sJXQmOQMAAAAAAJqt+2prAAAAAACg2xdgANk6BEVuJgyMAAAAAElFTkSuQmCC)}.ui.grid .stackable.row .ui.vertical.divider:before,.ui.stackable.grid .ui.vertical.divider:before{background-position:right 1em top 50%}.ui.grid .stackable.row .ui.vertical.divider:after,.ui.stackable.grid .ui.vertical.divider:after{background-position:left 1em top 50%}}.ui.divider>.icon{margin:0;font-size:1rem;height:1em;vertical-align:middle}.ui.hidden.divider{border-color:transparent!important}.ui.hidden.divider:after,.ui.hidden.divider:before{display:none}.ui.divider.inverted,.ui.horizontal.inverted.divider,.ui.vertical.inverted.divider{color:#FFF}.ui.divider.inverted,.ui.divider.inverted:after,.ui.divider.inverted:before{border-top-color:rgba(34,36,38,.15)!important;border-left-color:rgba(34,36,38,.15)!important;border-bottom-color:rgba(255,255,255,.15)!important;border-right-color:rgba(255,255,255,.15)!important}.ui.fitted.divider{margin:0}.ui.clearing.divider{clear:both}.ui.section.divider{margin-top:2rem;margin-bottom:2rem}i.flag:not(.icon){display:inline-block;width:16px;height:11px;line-height:11px;vertical-align:baseline;margin:0 .5em 0 0;text-decoration:inherit;speak:none;font-smoothing:antialiased;-webkit-backface-visibility:hidden;backface-visibility:hidden}i.flag:not(.icon):before{display:inline-block;content:'';background:url(themes/default/assets/images/flags.png) -108px -1976px no-repeat;width:16px;height:11px}i.flag.ad:before,i.flag.andorra:before{background-position:0 0}i.flag.ae:before,i.flag.uae:before,i.flag.united.arab.emirates:before{background-position:0 -26px}i.flag.af:before,i.flag.afghanistan:before{background-position:0 -52px}i.flag.ag:before,i.flag.antigua:before{background-position:0 -78px}i.flag.ai:before,i.flag.anguilla:before{background-position:0 -104px}i.flag.al:before,i.flag.albania:before{background-position:0 -130px}i.flag.am:before,i.flag.armenia:before{background-position:0 -156px}i.flag.an:before,i.flag.netherlands.antilles:before{background-position:0 -182px}i.flag.angola:before,i.flag.ao:before{background-position:0 -208px}i.flag.ar:before,i.flag.argentina:before{background-position:0 -234px}i.flag.american.samoa:before,i.flag.as:before{background-position:0 -260px}i.flag.at:before,i.flag.austria:before{background-position:0 -286px}i.flag.au:before,i.flag.australia:before{background-position:0 -312px}i.flag.aruba:before,i.flag.aw:before{background-position:0 -338px}i.flag.aland.islands:before,i.flag.ax:before{background-position:0 -364px}i.flag.az:before,i.flag.azerbaijan:before{background-position:0 -390px}i.flag.ba:before,i.flag.bosnia:before{background-position:0 -416px}i.flag.barbados:before,i.flag.bb:before{background-position:0 -442px}i.flag.bangladesh:before,i.flag.bd:before{background-position:0 -468px}i.flag.be:before,i.flag.belgium:before{background-position:0 -494px}i.flag.bf:before,i.flag.burkina.faso:before{background-position:0 -520px}i.flag.bg:before,i.flag.bulgaria:before{background-position:0 -546px}i.flag.bahrain:before,i.flag.bh:before{background-position:0 -572px}i.flag.bi:before,i.flag.burundi:before{background-position:0 -598px}i.flag.benin:before,i.flag.bj:before{background-position:0 -624px}i.flag.bermuda:before,i.flag.bm:before{background-position:0 -650px}i.flag.bn:before,i.flag.brunei:before{background-position:0 -676px}i.flag.bo:before,i.flag.bolivia:before{background-position:0 -702px}i.flag.br:before,i.flag.brazil:before{background-position:0 -728px}i.flag.bahamas:before,i.flag.bs:before{background-position:0 -754px}i.flag.bhutan:before,i.flag.bt:before{background-position:0 -780px}i.flag.bouvet.island:before,i.flag.bv:before{background-position:0 -806px}i.flag.botswana:before,i.flag.bw:before{background-position:0 -832px}i.flag.belarus:before,i.flag.by:before{background-position:0 -858px}i.flag.belize:before,i.flag.bz:before{background-position:0 -884px}i.flag.ca:before,i.flag.canada:before{background-position:0 -910px}i.flag.cc:before,i.flag.cocos.islands:before{background-position:0 -962px}i.flag.cd:before,i.flag.congo:before{background-position:0 -988px}i.flag.central.african.republic:before,i.flag.cf:before{background-position:0 -1014px}i.flag.cg:before,i.flag.congo.brazzaville:before{background-position:0 -1040px}i.flag.ch:before,i.flag.switzerland:before{background-position:0 -1066px}i.flag.ci:before,i.flag.cote.divoire:before{background-position:0 -1092px}i.flag.ck:before,i.flag.cook.islands:before{background-position:0 -1118px}i.flag.chile:before,i.flag.cl:before{background-position:0 -1144px}i.flag.cameroon:before,i.flag.cm:before{background-position:0 -1170px}i.flag.china:before,i.flag.cn:before{background-position:0 -1196px}i.flag.co:before,i.flag.colombia:before{background-position:0 -1222px}i.flag.costa.rica:before,i.flag.cr:before{background-position:0 -1248px}i.flag.cs:before,i.flag.serbia:before{background-position:0 -1274px}i.flag.cu:before,i.flag.cuba:before{background-position:0 -1300px}i.flag.cape.verde:before,i.flag.cv:before{background-position:0 -1326px}i.flag.christmas.island:before,i.flag.cx:before{background-position:0 -1352px}i.flag.cy:before,i.flag.cyprus:before{background-position:0 -1378px}i.flag.cz:before,i.flag.czech.republic:before{background-position:0 -1404px}i.flag.de:before,i.flag.germany:before{background-position:0 -1430px}i.flag.dj:before,i.flag.djibouti:before{background-position:0 -1456px}i.flag.denmark:before,i.flag.dk:before{background-position:0 -1482px}i.flag.dm:before,i.flag.dominica:before{background-position:0 -1508px}i.flag.do:before,i.flag.dominican.republic:before{background-position:0 -1534px}i.flag.algeria:before,i.flag.dz:before{background-position:0 -1560px}i.flag.ec:before,i.flag.ecuador:before{background-position:0 -1586px}i.flag.ee:before,i.flag.estonia:before{background-position:0 -1612px}i.flag.eg:before,i.flag.egypt:before{background-position:0 -1638px}i.flag.eh:before,i.flag.western.sahara:before{background-position:0 -1664px}i.flag.er:before,i.flag.eritrea:before{background-position:0 -1716px}i.flag.es:before,i.flag.spain:before{background-position:0 -1742px}i.flag.et:before,i.flag.ethiopia:before{background-position:0 -1768px}i.flag.eu:before,i.flag.european.union:before{background-position:0 -1794px}i.flag.fi:before,i.flag.finland:before{background-position:0 -1846px}i.flag.fiji:before,i.flag.fj:before{background-position:0 -1872px}i.flag.falkland.islands:before,i.flag.fk:before{background-position:0 -1898px}i.flag.fm:before,i.flag.micronesia:before{background-position:0 -1924px}i.flag.faroe.islands:before,i.flag.fo:before{background-position:0 -1950px}i.flag.fr:before,i.flag.france:before{background-position:0 -1976px}i.flag.ga:before,i.flag.gabon:before{background-position:-36px 0}i.flag.gb:before,i.flag.united.kingdom:before{background-position:-36px -26px}i.flag.gd:before,i.flag.grenada:before{background-position:-36px -52px}i.flag.ge:before,i.flag.georgia:before{background-position:-36px -78px}i.flag.french.guiana:before,i.flag.gf:before{background-position:-36px -104px}i.flag.gh:before,i.flag.ghana:before{background-position:-36px -130px}i.flag.gi:before,i.flag.gibraltar:before{background-position:-36px -156px}i.flag.gl:before,i.flag.greenland:before{background-position:-36px -182px}i.flag.gambia:before,i.flag.gm:before{background-position:-36px -208px}i.flag.gn:before,i.flag.guinea:before{background-position:-36px -234px}i.flag.gp:before,i.flag.guadeloupe:before{background-position:-36px -260px}i.flag.equatorial.guinea:before,i.flag.gq:before{background-position:-36px -286px}i.flag.gr:before,i.flag.greece:before{background-position:-36px -312px}i.flag.gs:before,i.flag.sandwich.islands:before{background-position:-36px -338px}i.flag.gt:before,i.flag.guatemala:before{background-position:-36px -364px}i.flag.gu:before,i.flag.guam:before{background-position:-36px -390px}i.flag.guinea-bissau:before,i.flag.gw:before{background-position:-36px -416px}i.flag.guyana:before,i.flag.gy:before{background-position:-36px -442px}i.flag.hk:before,i.flag.hong.kong:before{background-position:-36px -468px}i.flag.heard.island:before,i.flag.hm:before{background-position:-36px -494px}i.flag.hn:before,i.flag.honduras:before{background-position:-36px -520px}i.flag.croatia:before,i.flag.hr:before{background-position:-36px -546px}i.flag.haiti:before,i.flag.ht:before{background-position:-36px -572px}i.flag.hu:before,i.flag.hungary:before{background-position:-36px -598px}i.flag.id:before,i.flag.indonesia:before{background-position:-36px -624px}i.flag.ie:before,i.flag.ireland:before{background-position:-36px -650px}i.flag.il:before,i.flag.israel:before{background-position:-36px -676px}i.flag.in:before,i.flag.india:before{background-position:-36px -702px}i.flag.indian.ocean.territory:before,i.flag.io:before{background-position:-36px -728px}i.flag.iq:before,i.flag.iraq:before{background-position:-36px -754px}i.flag.ir:before,i.flag.iran:before{background-position:-36px -780px}i.flag.iceland:before,i.flag.is:before{background-position:-36px -806px}i.flag.it:before,i.flag.italy:before{background-position:-36px -832px}i.flag.jamaica:before,i.flag.jm:before{background-position:-36px -858px}i.flag.jo:before,i.flag.jordan:before{background-position:-36px -884px}i.flag.japan:before,i.flag.jp:before{background-position:-36px -910px}i.flag.ke:before,i.flag.kenya:before{background-position:-36px -936px}i.flag.kg:before,i.flag.kyrgyzstan:before{background-position:-36px -962px}i.flag.cambodia:before,i.flag.kh:before{background-position:-36px -988px}i.flag.ki:before,i.flag.kiribati:before{background-position:-36px -1014px}i.flag.comoros:before,i.flag.km:before{background-position:-36px -1040px}i.flag.kn:before,i.flag.saint.kitts.and.nevis:before{background-position:-36px -1066px}i.flag.kp:before,i.flag.north.korea:before{background-position:-36px -1092px}i.flag.kr:before,i.flag.south.korea:before{background-position:-36px -1118px}i.flag.kuwait:before,i.flag.kw:before{background-position:-36px -1144px}i.flag.cayman.islands:before,i.flag.ky:before{background-position:-36px -1170px}i.flag.kazakhstan:before,i.flag.kz:before{background-position:-36px -1196px}i.flag.la:before,i.flag.laos:before{background-position:-36px -1222px}i.flag.lb:before,i.flag.lebanon:before{background-position:-36px -1248px}i.flag.lc:before,i.flag.saint.lucia:before{background-position:-36px -1274px}i.flag.li:before,i.flag.liechtenstein:before{background-position:-36px -1300px}i.flag.lk:before,i.flag.sri.lanka:before{background-position:-36px -1326px}i.flag.liberia:before,i.flag.lr:before{background-position:-36px -1352px}i.flag.lesotho:before,i.flag.ls:before{background-position:-36px -1378px}i.flag.lithuania:before,i.flag.lt:before{background-position:-36px -1404px}i.flag.lu:before,i.flag.luxembourg:before{background-position:-36px -1430px}i.flag.latvia:before,i.flag.lv:before{background-position:-36px -1456px}i.flag.libya:before,i.flag.ly:before{background-position:-36px -1482px}i.flag.ma:before,i.flag.morocco:before{background-position:-36px -1508px}i.flag.mc:before,i.flag.monaco:before{background-position:-36px -1534px}i.flag.md:before,i.flag.moldova:before{background-position:-36px -1560px}i.flag.me:before,i.flag.montenegro:before{background-position:-36px -1586px}i.flag.madagascar:before,i.flag.mg:before{background-position:-36px -1613px}i.flag.marshall.islands:before,i.flag.mh:before{background-position:-36px -1639px}i.flag.macedonia:before,i.flag.mk:before{background-position:-36px -1665px}i.flag.mali:before,i.flag.ml:before{background-position:-36px -1691px}i.flag.burma:before,i.flag.mm:before,i.flag.myanmar:before{background-position:-36px -1717px}i.flag.mn:before,i.flag.mongolia:before{background-position:-36px -1743px}i.flag.macau:before,i.flag.mo:before{background-position:-36px -1769px}i.flag.mp:before,i.flag.northern.mariana.islands:before{background-position:-36px -1795px}i.flag.martinique:before,i.flag.mq:before{background-position:-36px -1821px}i.flag.mauritania:before,i.flag.mr:before{background-position:-36px -1847px}i.flag.montserrat:before,i.flag.ms:before{background-position:-36px -1873px}i.flag.malta:before,i.flag.mt:before{background-position:-36px -1899px}i.flag.mauritius:before,i.flag.mu:before{background-position:-36px -1925px}i.flag.maldives:before,i.flag.mv:before{background-position:-36px -1951px}i.flag.malawi:before,i.flag.mw:before{background-position:-36px -1977px}i.flag.mexico:before,i.flag.mx:before{background-position:-72px 0}i.flag.malaysia:before,i.flag.my:before{background-position:-72px -26px}i.flag.mozambique:before,i.flag.mz:before{background-position:-72px -52px}i.flag.na:before,i.flag.namibia:before{background-position:-72px -78px}i.flag.nc:before,i.flag.new.caledonia:before{background-position:-72px -104px}i.flag.ne:before,i.flag.niger:before{background-position:-72px -130px}i.flag.nf:before,i.flag.norfolk.island:before{background-position:-72px -156px}i.flag.ng:before,i.flag.nigeria:before{background-position:-72px -182px}i.flag.ni:before,i.flag.nicaragua:before{background-position:-72px -208px}i.flag.netherlands:before,i.flag.nl:before{background-position:-72px -234px}i.flag.no:before,i.flag.norway:before{background-position:-72px -260px}i.flag.nepal:before,i.flag.np:before{background-position:-72px -286px}i.flag.nauru:before,i.flag.nr:before{background-position:-72px -312px}i.flag.niue:before,i.flag.nu:before{background-position:-72px -338px}i.flag.new.zealand:before,i.flag.nz:before{background-position:-72px -364px}i.flag.om:before,i.flag.oman:before{background-position:-72px -390px}i.flag.pa:before,i.flag.panama:before{background-position:-72px -416px}i.flag.pe:before,i.flag.peru:before{background-position:-72px -442px}i.flag.french.polynesia:before,i.flag.pf:before{background-position:-72px -468px}i.flag.new.guinea:before,i.flag.pg:before{background-position:-72px -494px}i.flag.ph:before,i.flag.philippines:before{background-position:-72px -520px}i.flag.pakistan:before,i.flag.pk:before{background-position:-72px -546px}i.flag.pl:before,i.flag.poland:before{background-position:-72px -572px}i.flag.pm:before,i.flag.saint.pierre:before{background-position:-72px -598px}i.flag.pitcairn.islands:before,i.flag.pn:before{background-position:-72px -624px}i.flag.pr:before,i.flag.puerto.rico:before{background-position:-72px -650px}i.flag.palestine:before,i.flag.ps:before{background-position:-72px -676px}i.flag.portugal:before,i.flag.pt:before{background-position:-72px -702px}i.flag.palau:before,i.flag.pw:before{background-position:-72px -728px}i.flag.paraguay:before,i.flag.py:before{background-position:-72px -754px}i.flag.qa:before,i.flag.qatar:before{background-position:-72px -780px}i.flag.re:before,i.flag.reunion:before{background-position:-72px -806px}i.flag.ro:before,i.flag.romania:before{background-position:-72px -832px}i.flag.rs:before,i.flag.serbia:before{background-position:-72px -858px}i.flag.ru:before,i.flag.russia:before{background-position:-72px -884px}i.flag.rw:before,i.flag.rwanda:before{background-position:-72px -910px}i.flag.sa:before,i.flag.saudi.arabia:before{background-position:-72px -936px}i.flag.sb:before,i.flag.solomon.islands:before{background-position:-72px -962px}i.flag.sc:before,i.flag.seychelles:before{background-position:-72px -988px}i.flag.gb.sct:before,i.flag.scotland:before{background-position:-72px -1014px}i.flag.sd:before,i.flag.sudan:before{background-position:-72px -1040px}i.flag.se:before,i.flag.sweden:before{background-position:-72px -1066px}i.flag.sg:before,i.flag.singapore:before{background-position:-72px -1092px}i.flag.saint.helena:before,i.flag.sh:before{background-position:-72px -1118px}i.flag.si:before,i.flag.slovenia:before{background-position:-72px -1144px}i.flag.jan.mayen:before,i.flag.sj:before,i.flag.svalbard:before{background-position:-72px -1170px}i.flag.sk:before,i.flag.slovakia:before{background-position:-72px -1196px}i.flag.sierra.leone:before,i.flag.sl:before{background-position:-72px -1222px}i.flag.san.marino:before,i.flag.sm:before{background-position:-72px -1248px}i.flag.senegal:before,i.flag.sn:before{background-position:-72px -1274px}i.flag.so:before,i.flag.somalia:before{background-position:-72px -1300px}i.flag.sr:before,i.flag.suriname:before{background-position:-72px -1326px}i.flag.sao.tome:before,i.flag.st:before{background-position:-72px -1352px}i.flag.el.salvador:before,i.flag.sv:before{background-position:-72px -1378px}i.flag.sy:before,i.flag.syria:before{background-position:-72px -1404px}i.flag.swaziland:before,i.flag.sz:before{background-position:-72px -1430px}i.flag.caicos.islands:before,i.flag.tc:before{background-position:-72px -1456px}i.flag.chad:before,i.flag.td:before{background-position:-72px -1482px}i.flag.french.territories:before,i.flag.tf:before{background-position:-72px -1508px}i.flag.tg:before,i.flag.togo:before{background-position:-72px -1534px}i.flag.th:before,i.flag.thailand:before{background-position:-72px -1560px}i.flag.tajikistan:before,i.flag.tj:before{background-position:-72px -1586px}i.flag.tk:before,i.flag.tokelau:before{background-position:-72px -1612px}i.flag.timorleste:before,i.flag.tl:before{background-position:-72px -1638px}i.flag.tm:before,i.flag.turkmenistan:before{background-position:-72px -1664px}i.flag.tn:before,i.flag.tunisia:before{background-position:-72px -1690px}i.flag.to:before,i.flag.tonga:before{background-position:-72px -1716px}i.flag.tr:before,i.flag.turkey:before{background-position:-72px -1742px}i.flag.trinidad:before,i.flag.tt:before{background-position:-72px -1768px}i.flag.tuvalu:before,i.flag.tv:before{background-position:-72px -1794px}i.flag.taiwan:before,i.flag.tw:before{background-position:-72px -1820px}i.flag.tanzania:before,i.flag.tz:before{background-position:-72px -1846px}i.flag.ua:before,i.flag.ukraine:before{background-position:-72px -1872px}i.flag.ug:before,i.flag.uganda:before{background-position:-72px -1898px}i.flag.um:before,i.flag.us.minor.islands:before{background-position:-72px -1924px}i.flag.america:before,i.flag.united.states:before,i.flag.us:before{background-position:-72px -1950px}i.flag.uruguay:before,i.flag.uy:before{background-position:-72px -1976px}i.flag.uz:before,i.flag.uzbekistan:before{background-position:-108px 0}i.flag.va:before,i.flag.vatican.city:before{background-position:-108px -26px}i.flag.saint.vincent:before,i.flag.vc:before{background-position:-108px -52px}i.flag.ve:before,i.flag.venezuela:before{background-position:-108px -78px}i.flag.british.virgin.islands:before,i.flag.vg:before{background-position:-108px -104px}i.flag.us.virgin.islands:before,i.flag.vi:before{background-position:-108px -130px}i.flag.vietnam:before,i.flag.vn:before{background-position:-108px -156px}i.flag.vanuatu:before,i.flag.vu:before{background-position:-108px -182px}i.flag.gb.wls:before,i.flag.wales:before{background-position:-108px -208px}i.flag.wallis.and.futuna:before,i.flag.wf:before{background-position:-108px -234px}i.flag.samoa:before,i.flag.ws:before{background-position:-108px -260px}i.flag.ye:before,i.flag.yemen:before{background-position:-108px -286px}i.flag.mayotte:before,i.flag.yt:before{background-position:-108px -312px}i.flag.south.africa:before,i.flag.za:before{background-position:-108px -338px}i.flag.zambia:before,i.flag.zm:before{background-position:-108px -364px}i.flag.zimbabwe:before,i.flag.zw:before{background-position:-108px -390px}.ui.header{border:none;margin:calc(2rem - .14285em) 0 1rem;padding:0;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-weight:700;line-height:1.2857em;text-transform:none;color:rgba(0,0,0,.87)}.ui.header:first-child{margin-top:-.14285em}.ui.header:last-child{margin-bottom:0}.ui.header .sub.header{display:block;font-weight:400;padding:0;margin:0;line-height:1.2em;color:rgba(0,0,0,.6)}.ui.header>.icon{display:table-cell;opacity:1;font-size:1.5em;padding-top:.14285em;vertical-align:middle}.ui.header .icon:only-child{display:inline-block;padding:0;margin-right:.75rem}.ui.header>.image,.ui.header>img{display:inline-block;margin-top:.14285em;width:2.5em;height:auto;vertical-align:middle}.ui.header>.image:only-child,.ui.header>img:only-child{margin-right:.75rem}.ui.header .content{display:inline-block;vertical-align:top}.ui.header>.image+.content,.ui.header>img+.content{padding-left:.75rem;vertical-align:middle}.ui.header>.icon+.content{padding-left:.75rem;display:table-cell;vertical-align:middle}.ui.header .ui.label{font-size:'';margin-left:.5rem;vertical-align:middle}.ui.header+p{margin-top:0}h1.ui.header{font-size:2rem}h2.ui.header{font-size:1.714rem}h3.ui.header{font-size:1.28rem}h4.ui.header{font-size:1.071rem}h5.ui.header{font-size:1rem}h1.ui.header .sub.header,h2.ui.header .sub.header{font-size:1.14285714rem}h3.ui.header .sub.header,h4.ui.header .sub.header{font-size:1rem}h5.ui.header .sub.header{font-size:.92857143rem}.ui.huge.header{min-height:1em;font-size:2em}.ui.large.header{font-size:1.714em}.ui.medium.header{font-size:1.28em}.ui.small.header{font-size:1.071em}.ui.tiny.header{font-size:1em}.ui.huge.header .sub.header,.ui.large.header .sub.header{font-size:1.14285714rem}.ui.header .sub.header,.ui.small.header .sub.header{font-size:1rem}.ui.tiny.header .sub.header{font-size:.92857143rem}.ui.small.sub.header{font-size:.78571429em}.ui.sub.header{padding:0;margin-bottom:.14285714rem;font-weight:700;text-transform:uppercase;color:'';font-size:.85714286em}.ui.large.sub.header{font-size:.92857143em}.ui.huge.sub.header{font-size:1em}.ui.icon.header{display:inline-block;text-align:center;margin:2rem 0 1rem}.ui.icon.header:after{content:'';display:block;height:0;clear:both;visibility:hidden}.ui.icon.header:first-child{margin-top:0}.ui.icon.header .icon{float:none;display:block;width:auto;height:auto;line-height:1;padding:0;font-size:3em;margin:0 auto .5rem;opacity:1}.ui.icon.header .content{display:block;padding:0}.ui.icon.header .circular.icon,.ui.icon.header .square.icon{font-size:2em}.ui.block.icon.header .icon{margin-bottom:0}.ui.icon.header.aligned{margin-left:auto;margin-right:auto;display:block}.ui.disabled.header{opacity:.45}.ui.inverted.header{color:#FFF}.ui.inverted.header .sub.header{color:rgba(255,255,255,.8)}.ui.inverted.attached.header{background:-webkit-linear-gradient(transparent,rgba(0,0,0,.05)) #545454;background:linear-gradient(transparent,rgba(0,0,0,.05)) #545454;box-shadow:none;border-color:transparent}.ui.inverted.block.header{background:-webkit-linear-gradient(transparent,rgba(0,0,0,.05)) #545454;background:linear-gradient(transparent,rgba(0,0,0,.05)) #545454;box-shadow:none;border-bottom:none}.ui.red.header{color:#DB2828!important}a.ui.red.header:hover{color:#d01919!important}.ui.red.dividing.header{border-bottom:2px solid #DB2828}.ui.inverted.red.header{color:#FF695E!important}a.ui.inverted.red.header:hover{color:#ff5144!important}.ui.orange.header{color:#F2711C!important}a.ui.orange.header:hover{color:#f26202!important}.ui.orange.dividing.header{border-bottom:2px solid #F2711C}.ui.inverted.orange.header{color:#FF851B!important}a.ui.inverted.orange.header:hover{color:#ff7701!important}.ui.olive.header{color:#B5CC18!important}a.ui.olive.header:hover{color:#a7bd0d!important}.ui.olive.dividing.header{border-bottom:2px solid #B5CC18}.ui.inverted.olive.header{color:#D9E778!important}a.ui.inverted.olive.header:hover{color:#d8ea5c!important}.ui.yellow.header{color:#FBBD08!important}a.ui.yellow.header:hover{color:#eaae00!important}.ui.yellow.dividing.header{border-bottom:2px solid #FBBD08}.ui.inverted.yellow.header{color:#FFE21F!important}a.ui.inverted.yellow.header:hover{color:#ffdf05!important}.ui.green.header{color:#21BA45!important}a.ui.green.header:hover{color:#16ab39!important}.ui.green.dividing.header{border-bottom:2px solid #21BA45}.ui.inverted.green.header{color:#2ECC40!important}a.ui.inverted.green.header:hover{color:#22be34!important}.ui.teal.header{color:#00B5AD!important}a.ui.teal.header:hover{color:#009c95!important}.ui.teal.dividing.header{border-bottom:2px solid #00B5AD}.ui.inverted.teal.header{color:#6DFFFF!important}a.ui.inverted.teal.header:hover{color:#54ffff!important}.ui.blue.header{color:#2185D0!important}a.ui.blue.header:hover{color:#1678c2!important}.ui.blue.dividing.header{border-bottom:2px solid #2185D0}.ui.inverted.blue.header{color:#54C8FF!important}a.ui.inverted.blue.header:hover{color:#3ac0ff!important}.ui.violet.header{color:#6435C9!important}a.ui.violet.header:hover{color:#5829bb!important}.ui.violet.dividing.header{border-bottom:2px solid #6435C9}.ui.inverted.violet.header{color:#A291FB!important}a.ui.inverted.violet.header:hover{color:#8a73ff!important}.ui.purple.header{color:#A333C8!important}a.ui.purple.header:hover{color:#9627ba!important}.ui.purple.dividing.header{border-bottom:2px solid #A333C8}.ui.inverted.purple.header{color:#DC73FF!important}a.ui.inverted.purple.header:hover{color:#d65aff!important}.ui.pink.header{color:#E03997!important}a.ui.pink.header:hover{color:#e61a8d!important}.ui.pink.dividing.header{border-bottom:2px solid #E03997}.ui.inverted.pink.header{color:#FF8EDF!important}a.ui.inverted.pink.header:hover{color:#ff74d8!important}.ui.brown.header{color:#A5673F!important}a.ui.brown.header:hover{color:#975b33!important}.ui.brown.dividing.header{border-bottom:2px solid #A5673F}.ui.inverted.brown.header{color:#D67C1C!important}a.ui.inverted.brown.header:hover{color:#c86f11!important}.ui.grey.header{color:#767676!important}a.ui.grey.header:hover{color:#838383!important}.ui.grey.dividing.header{border-bottom:2px solid #767676}.ui.inverted.grey.header{color:#DCDDDE!important}a.ui.inverted.grey.header:hover{color:#cfd0d2!important}.ui.left.aligned.header{text-align:left}.ui.right.aligned.header{text-align:right}.ui.center.aligned.header,.ui.centered.header{text-align:center}.ui.justified.header{text-align:justify}.ui.justified.header:after{display:inline-block;content:'';width:100%}.ui.floated.header,.ui[class*="left floated"].header{float:left;margin-top:0;margin-right:.5em}.ui[class*="right floated"].header{float:right;margin-top:0;margin-left:.5em}.ui.fitted.header{padding:0}.ui.dividing.header{padding-bottom:.21428571rem;border-bottom:1px solid rgba(34,36,38,.15)}.ui.dividing.header .sub.header{padding-bottom:.21428571rem}.ui.dividing.header .icon{margin-bottom:0}.ui.inverted.dividing.header{border-bottom-color:rgba(255,255,255,.1)}.ui.block.header{background:#F3F4F5;padding:.78571429rem 1rem;box-shadow:none;border:1px solid #D4D4D5;border-radius:.28571429rem}.ui.tiny.block.header{font-size:.85714286rem}.ui.small.block.header{font-size:.92857143rem}.ui.block.header:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6){font-size:1rem}.ui.large.block.header{font-size:1.14285714rem}.ui.huge.block.header{font-size:1.42857143rem}.ui.attached.header{background:#FFF;padding:.78571429rem 1rem;margin-left:-1px;margin-right:-1px;box-shadow:none;border:1px solid #D4D4D5}.ui.attached.block.header{background:#F3F4F5}.ui.attached:not(.top):not(.bottom).header{margin-top:0;margin-bottom:0;border-top:none;border-radius:0}.ui.top.attached.header{margin-bottom:0;border-radius:.28571429rem .28571429rem 0 0}.ui.bottom.attached.header{margin-top:0;border-top:none;border-radius:0 0 .28571429rem .28571429rem}.ui.tiny.attached.header{font-size:.85714286em}.ui.small.attached.header{font-size:.92857143em}.ui.attached.header:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6){font-size:1em}.ui.large.attached.header{font-size:1.14285714em}.ui.huge.attached.header{font-size:1.42857143em}.ui.header:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6){font-size:1.28em}@font-face{font-family:Icons;src:url(themes/default/assets/fonts/icons.eot);src:url(themes/default/assets/fonts/icons.eot?#iefix) format('embedded-opentype'),url(themes/default/assets/fonts/icons.woff2) format('woff2'),url(themes/default/assets/fonts/icons.woff) format('woff'),url(themes/default/assets/fonts/icons.ttf) format('truetype'),url(themes/default/assets/fonts/icons.svg#icons) format('svg');font-style:normal;font-weight:400;font-variant:normal;text-decoration:inherit;text-transform:none}i.icon{display:inline-block;opacity:1;margin:0 .25rem 0 0;width:1.18em;height:1em;font-family:Icons;font-style:normal;font-weight:400;text-decoration:inherit;text-align:center;speak:none;font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;-webkit-backface-visibility:hidden;backface-visibility:hidden}i.icon:before{background:0 0!important}i.icon.loading{height:1em;line-height:1;-webkit-animation:icon-loading 2s linear infinite;animation:icon-loading 2s linear infinite}@-webkit-keyframes icon-loading{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes icon-loading{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}i.emphasized.icon,i.icon.active,i.icon.hover{opacity:1!important}i.disabled.icon{opacity:.45!important}i.fitted.icon{width:auto;margin:0}i.link.icon{cursor:pointer;opacity:.8;-webkit-transition:opacity .1s ease;transition:opacity .1s ease}i.link.icon:hover{opacity:1!important}i.circular.icon{border-radius:500em!important;line-height:1!important;padding:.5em!important;box-shadow:0 0 0 .1em rgba(0,0,0,.1) inset;width:2em!important;height:2em!important}i.circular.inverted.icon{border:none;box-shadow:none}i.flipped.icon,i.horizontally.flipped.icon{-webkit-transform:scale(-1,1);transform:scale(-1,1)}i.vertically.flipped.icon{-webkit-transform:scale(1,-1);transform:scale(1,-1)}i.clockwise.rotated.icon,i.right.rotated.icon,i.rotated.icon{-webkit-transform:rotate(90deg);transform:rotate(90deg)}i.counterclockwise.rotated.icon,i.left.rotated.icon{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}i.bordered.icon{line-height:1;vertical-align:baseline;width:2em;height:2em;padding:.5em .41em!important;box-shadow:0 0 0 .1em rgba(0,0,0,.1) inset}i.bordered.inverted.icon{border:none;box-shadow:none}i.inverted.bordered.icon,i.inverted.circular.icon{background-color:#1B1C1D!important;color:#FFF!important}i.inverted.icon{color:#FFF}i.red.icon{color:#DB2828!important}i.inverted.red.icon{color:#FF695E!important}i.inverted.bordered.red.icon,i.inverted.circular.red.icon{background-color:#DB2828!important;color:#FFF!important}i.orange.icon{color:#F2711C!important}i.inverted.orange.icon{color:#FF851B!important}i.inverted.bordered.orange.icon,i.inverted.circular.orange.icon{background-color:#F2711C!important;color:#FFF!important}i.yellow.icon{color:#FBBD08!important}i.inverted.yellow.icon{color:#FFE21F!important}i.inverted.bordered.yellow.icon,i.inverted.circular.yellow.icon{background-color:#FBBD08!important;color:#FFF!important}i.olive.icon{color:#B5CC18!important}i.inverted.olive.icon{color:#D9E778!important}i.inverted.bordered.olive.icon,i.inverted.circular.olive.icon{background-color:#B5CC18!important;color:#FFF!important}i.green.icon{color:#21BA45!important}i.inverted.green.icon{color:#2ECC40!important}i.inverted.bordered.green.icon,i.inverted.circular.green.icon{background-color:#21BA45!important;color:#FFF!important}i.teal.icon{color:#00B5AD!important}i.inverted.teal.icon{color:#6DFFFF!important}i.inverted.bordered.teal.icon,i.inverted.circular.teal.icon{background-color:#00B5AD!important;color:#FFF!important}i.blue.icon{color:#2185D0!important}i.inverted.blue.icon{color:#54C8FF!important}i.inverted.bordered.blue.icon,i.inverted.circular.blue.icon{background-color:#2185D0!important;color:#FFF!important}i.violet.icon{color:#6435C9!important}i.inverted.violet.icon{color:#A291FB!important}i.inverted.bordered.violet.icon,i.inverted.circular.violet.icon{background-color:#6435C9!important;color:#FFF!important}i.purple.icon{color:#A333C8!important}i.inverted.purple.icon{color:#DC73FF!important}i.inverted.bordered.purple.icon,i.inverted.circular.purple.icon{background-color:#A333C8!important;color:#FFF!important}i.pink.icon{color:#E03997!important}i.inverted.pink.icon{color:#FF8EDF!important}i.inverted.bordered.pink.icon,i.inverted.circular.pink.icon{background-color:#E03997!important;color:#FFF!important}i.brown.icon{color:#A5673F!important}i.inverted.brown.icon{color:#D67C1C!important}i.inverted.bordered.brown.icon,i.inverted.circular.brown.icon{background-color:#A5673F!important;color:#FFF!important}i.grey.icon{color:#767676!important}i.inverted.grey.icon{color:#DCDDDE!important}i.inverted.bordered.grey.icon,i.inverted.circular.grey.icon{background-color:#767676!important;color:#FFF!important}i.black.icon{color:#1B1C1D!important}i.inverted.black.icon{color:#545454!important}i.inverted.bordered.black.icon,i.inverted.circular.black.icon{background-color:#1B1C1D!important;color:#FFF!important}i.mini.icon,i.mini.icons{line-height:1;font-size:.4em}i.tiny.icon,i.tiny.icons{line-height:1;font-size:.5em}i.small.icon,i.small.icons{line-height:1;font-size:.75em}i.icon,i.icons{font-size:1em}i.large.icon,i.large.icons{line-height:1;vertical-align:middle;font-size:1.5em}i.big.icon,i.big.icons{line-height:1;vertical-align:middle;font-size:2em}i.huge.icon,i.huge.icons{line-height:1;vertical-align:middle;font-size:4em}i.massive.icon,i.massive.icons{line-height:1;vertical-align:middle;font-size:8em}i.icons{display:inline-block;position:relative;line-height:1}i.icons .icon{position:absolute;top:50%;left:50%;-webkit-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%);margin:0}i.icons .icon:first-child{position:static;width:auto;height:auto;vertical-align:top;-webkit-transform:none;transform:none;margin-right:.25rem}i.icons .corner.icon{top:auto;left:auto;right:0;bottom:0;-webkit-transform:none;transform:none;font-size:.45em;text-shadow:-1px -1px 0 #FFF,1px -1px 0 #FFF,-1px 1px 0 #FFF,1px 1px 0 #FFF}i.icons .inverted.corner.icon{text-shadow:-1px -1px 0 #1B1C1D,1px -1px 0 #1B1C1D,-1px 1px 0 #1B1C1D,1px 1px 0 #1B1C1D}i.icon.search:before{content:"\f002"}i.icon.mail.outline:before{content:"\f003"}i.icon.signal:before{content:"\f012"}i.icon.setting:before{content:"\f013"}i.icon.home:before{content:"\f015"}i.icon.inbox:before{content:"\f01c"}i.icon.browser:before{content:"\f022"}i.icon.tag:before{content:"\f02b"}i.icon.tags:before{content:"\f02c"}i.icon.image:before{content:"\f03e"}i.icon.calendar:before{content:"\f073"}i.icon.comment:before{content:"\f075"}i.icon.shop:before{content:"\f07a"}i.icon.privacy:before{content:"\f084"}i.icon.settings:before{content:"\f085"}i.icon.comments:before{content:"\f086"}i.icon.external:before{content:"\f08e"}i.icon.trophy:before{content:"\f091"}i.icon.payment:before{content:"\f09d"}i.icon.feed:before{content:"\f09e"}i.icon.alarm.outline:before{content:"\f0a2"}i.icon.tasks:before{content:"\f0ae"}i.icon.cloud:before{content:"\f0c2"}i.icon.lab:before{content:"\f0c3"}i.icon.mail:before{content:"\f0e0"}i.icon.dashboard:before{content:"\f0e4"}i.icon.comment.outline:before{content:"\f0e5"}i.icon.comments.outline:before{content:"\f0e6"}i.icon.sitemap:before{content:"\f0e8"}i.icon.idea:before{content:"\f0eb"}i.icon.alarm:before{content:"\f0f3"}i.icon.terminal:before{content:"\f120"}i.icon.code:before{content:"\f121"}i.icon.protect:before{content:"\f132"}i.icon.calendar.outline:before{content:"\f133"}i.icon.ticket:before{content:"\f145"}i.icon.external.square:before{content:"\f14c"}i.icon.bug:before{content:"\f188"}i.icon.mail.square:before{content:"\f199"}i.icon.history:before{content:"\f1da"}i.icon.options:before{content:"\f1de"}i.icon.text.telephone:before{content:"\f1e4"}i.icon.find:before{content:"\f1e5"}i.icon.wifi:before{content:"\f1eb"}i.icon.alarm.mute:before{content:"\f1f6"}i.icon.alarm.mute.outline:before{content:"\f1f7"}i.icon.copyright:before{content:"\f1f9"}i.icon.at:before{content:"\f1fa"}i.icon.eyedropper:before{content:"\f1fb"}i.icon.paint.brush:before{content:"\f1fc"}i.icon.heartbeat:before{content:"\f21e"}i.icon.mouse.pointer:before{content:"\f245"}i.icon.hourglass.empty:before{content:"\f250"}i.icon.hourglass.start:before{content:"\f251"}i.icon.hourglass.half:before{content:"\f252"}i.icon.hourglass.end:before{content:"\f253"}i.icon.hourglass.full:before{content:"\f254"}i.icon.hand.pointer:before{content:"\f25a"}i.icon.trademark:before{content:"\f25c"}i.icon.registered:before{content:"\f25d"}i.icon.creative.commons:before{content:"\f25e"}i.icon.add.to.calendar:before{content:"\f271"}i.icon.remove.from.calendar:before{content:"\f272"}i.icon.delete.calendar:before{content:"\f273"}i.icon.checked.calendar:before{content:"\f274"}i.icon.industry:before{content:"\f275"}i.icon.shopping.bag:before{content:"\f290"}i.icon.shopping.basket:before{content:"\f291"}i.icon.hashtag:before{content:"\f292"}i.icon.percent:before{content:"\f295"}i.icon.wait:before{content:"\f017"}i.icon.download:before{content:"\f019"}i.icon.repeat:before{content:"\f01e"}i.icon.refresh:before{content:"\f021"}i.icon.lock:before{content:"\f023"}i.icon.bookmark:before{content:"\f02e"}i.icon.print:before{content:"\f02f"}i.icon.write:before{content:"\f040"}i.icon.adjust:before{content:"\f042"}i.icon.theme:before{content:"\f043"}i.icon.edit:before{content:"\f044"}i.icon.external.share:before{content:"\f045"}i.icon.ban:before{content:"\f05e"}i.icon.mail.forward:before,i.icon.share:before{content:"\f064"}i.icon.expand:before{content:"\f065"}i.icon.compress:before{content:"\f066"}i.icon.unhide:before{content:"\f06e"}i.icon.hide:before{content:"\f070"}i.icon.random:before{content:"\f074"}i.icon.retweet:before{content:"\f079"}i.icon.sign.out:before{content:"\f08b"}i.icon.pin:before{content:"\f08d"}i.icon.sign.in:before{content:"\f090"}i.icon.upload:before{content:"\f093"}i.icon.call:before{content:"\f095"}i.icon.remove.bookmark:before{content:"\f097"}i.icon.call.square:before{content:"\f098"}i.icon.unlock:before{content:"\f09c"}i.icon.configure:before{content:"\f0ad"}i.icon.filter:before{content:"\f0b0"}i.icon.wizard:before{content:"\f0d0"}i.icon.undo:before{content:"\f0e2"}i.icon.exchange:before{content:"\f0ec"}i.icon.cloud.download:before{content:"\f0ed"}i.icon.cloud.upload:before{content:"\f0ee"}i.icon.reply:before{content:"\f112"}i.icon.reply.all:before{content:"\f122"}i.icon.erase:before{content:"\f12d"}i.icon.unlock.alternate:before{content:"\f13e"}i.icon.write.square:before{content:"\f14b"}i.icon.share.square:before{content:"\f14d"}i.icon.archive:before{content:"\f187"}i.icon.translate:before{content:"\f1ab"}i.icon.recycle:before{content:"\f1b8"}i.icon.send:before{content:"\f1d8"}i.icon.send.outline:before{content:"\f1d9"}i.icon.share.alternate:before{content:"\f1e0"}i.icon.share.alternate.square:before{content:"\f1e1"}i.icon.add.to.cart:before{content:"\f217"}i.icon.in.cart:before{content:"\f218"}i.icon.add.user:before{content:"\f234"}i.icon.remove.user:before{content:"\f235"}i.icon.object.group:before{content:"\f247"}i.icon.object.ungroup:before{content:"\f248"}i.icon.clone:before{content:"\f24d"}i.icon.talk.outline:before{content:"\f27b"}i.icon.help.circle:before{content:"\f059"}i.icon.info.circle:before{content:"\f05a"}i.icon.warning.circle:before{content:"\f06a"}i.icon.warning.sign:before{content:"\f071"}i.icon.announcement:before{content:"\f0a1"}i.icon.help:before{content:"\f128"}i.icon.info:before{content:"\f129"}i.icon.warning:before{content:"\f12a"}i.icon.birthday:before{content:"\f1fd"}i.icon.help.circle.outline:before{content:"\f29c"}i.icon.user:before{content:"\f007"}i.icon.users:before{content:"\f0c0"}i.icon.doctor:before{content:"\f0f0"}i.icon.handicap:before{content:"\f193"}i.icon.student:before{content:"\f19d"}i.icon.child:before{content:"\f1ae"}i.icon.spy:before{content:"\f21b"}i.icon.female:before{content:"\f182"}i.icon.male:before{content:"\f183"}i.icon.woman:before{content:"\f221"}i.icon.man:before{content:"\f222"}i.icon.non.binary.transgender:before{content:"\f223"}i.icon.intergender:before{content:"\f224"}i.icon.transgender:before{content:"\f225"}i.icon.lesbian:before{content:"\f226"}i.icon.gay:before{content:"\f227"}i.icon.heterosexual:before{content:"\f228"}i.icon.other.gender:before{content:"\f229"}i.icon.other.gender.vertical:before{content:"\f22a"}i.icon.other.gender.horizontal:before{content:"\f22b"}i.icon.neuter:before{content:"\f22c"}i.icon.genderless:before{content:"\f22d"}i.icon.universal.access:before{content:"\f29a"}i.icon.wheelchair:before{content:"\f29b"}i.icon.blind:before{content:"\f29d"}i.icon.audio.description:before{content:"\f29e"}i.icon.volume.control.phone:before{content:"\f2a0"}i.icon.braille:before{content:"\f2a1"}i.icon.asl:before{content:"\f2a3"}i.icon.assistive.listening.systems:before{content:"\f2a2"}i.icon.deafness:before{content:"\f2a4"}i.icon.sign.language:before{content:"\f2a7"}i.icon.low.vision:before{content:"\f2a8"}i.icon.block.layout:before{content:"\f009"}i.icon.grid.layout:before{content:"\f00a"}i.icon.list.layout:before{content:"\f00b"}i.icon.zoom:before{content:"\f00e"}i.icon.zoom.out:before{content:"\f010"}i.icon.resize.vertical:before{content:"\f07d"}i.icon.resize.horizontal:before{content:"\f07e"}i.icon.maximize:before{content:"\f0b2"}i.icon.crop:before{content:"\f125"}i.icon.cocktail:before{content:"\f000"}i.icon.road:before{content:"\f018"}i.icon.flag:before{content:"\f024"}i.icon.book:before{content:"\f02d"}i.icon.gift:before{content:"\f06b"}i.icon.leaf:before{content:"\f06c"}i.icon.fire:before{content:"\f06d"}i.icon.plane:before{content:"\f072"}i.icon.magnet:before{content:"\f076"}i.icon.lemon:before{content:"\f094"}i.icon.world:before{content:"\f0ac"}i.icon.travel:before{content:"\f0b1"}i.icon.shipping:before{content:"\f0d1"}i.icon.money:before{content:"\f0d6"}i.icon.legal:before{content:"\f0e3"}i.icon.lightning:before{content:"\f0e7"}i.icon.umbrella:before{content:"\f0e9"}i.icon.treatment:before{content:"\f0f1"}i.icon.suitcase:before{content:"\f0f2"}i.icon.bar:before{content:"\f0fc"}i.icon.flag.outline:before{content:"\f11d"}i.icon.flag.checkered:before{content:"\f11e"}i.icon.puzzle:before{content:"\f12e"}i.icon.fire.extinguisher:before{content:"\f134"}i.icon.rocket:before{content:"\f135"}i.icon.anchor:before{content:"\f13d"}i.icon.bullseye:before{content:"\f140"}i.icon.sun:before{content:"\f185"}i.icon.moon:before{content:"\f186"}i.icon.fax:before{content:"\f1ac"}i.icon.life.ring:before{content:"\f1cd"}i.icon.bomb:before{content:"\f1e2"}i.icon.soccer:before{content:"\f1e3"}i.icon.calculator:before{content:"\f1ec"}i.icon.diamond:before{content:"\f219"}i.icon.sticky.note:before{content:"\f249"}i.icon.sticky.note.outline:before{content:"\f24a"}i.icon.law:before{content:"\f24e"}i.icon.hand.peace:before{content:"\f25b"}i.icon.hand.rock:before{content:"\f255"}i.icon.hand.paper:before{content:"\f256"}i.icon.hand.scissors:before{content:"\f257"}i.icon.hand.lizard:before{content:"\f258"}i.icon.hand.spock:before{content:"\f259"}i.icon.tv:before{content:"\f26c"}i.icon.crosshairs:before{content:"\f05b"}i.icon.asterisk:before{content:"\f069"}i.icon.square.outline:before{content:"\f096"}i.icon.certificate:before{content:"\f0a3"}i.icon.square:before{content:"\f0c8"}i.icon.quote.left:before{content:"\f10d"}i.icon.quote.right:before{content:"\f10e"}i.icon.spinner:before{content:"\f110"}i.icon.circle:before{content:"\f111"}i.icon.ellipsis.horizontal:before{content:"\f141"}i.icon.ellipsis.vertical:before{content:"\f142"}i.icon.cube:before{content:"\f1b2"}i.icon.cubes:before{content:"\f1b3"}i.icon.circle.notched:before{content:"\f1ce"}i.icon.circle.thin:before{content:"\f1db"}i.icon.checkmark:before{content:"\f00c"}i.icon.remove:before{content:"\f00d"}i.icon.checkmark.box:before{content:"\f046"}i.icon.move:before{content:"\f047"}i.icon.add.circle:before{content:"\f055"}i.icon.minus.circle:before{content:"\f056"}i.icon.remove.circle:before{content:"\f057"}i.icon.check.circle:before{content:"\f058"}i.icon.remove.circle.outline:before{content:"\f05c"}i.icon.check.circle.outline:before{content:"\f05d"}i.icon.plus:before{content:"\f067"}i.icon.minus:before{content:"\f068"}i.icon.add.square:before{content:"\f0fe"}i.icon.radio:before{content:"\f10c"}i.icon.minus.square:before{content:"\f146"}i.icon.minus.square.outline:before{content:"\f147"}i.icon.check.square:before{content:"\f14a"}i.icon.selected.radio:before{content:"\f192"}i.icon.plus.square.outline:before{content:"\f196"}i.icon.toggle.off:before{content:"\f204"}i.icon.toggle.on:before{content:"\f205"}i.icon.film:before{content:"\f008"}i.icon.sound:before{content:"\f025"}i.icon.photo:before{content:"\f030"}i.icon.bar.chart:before{content:"\f080"}i.icon.camera.retro:before{content:"\f083"}i.icon.newspaper:before{content:"\f1ea"}i.icon.area.chart:before{content:"\f1fe"}i.icon.pie.chart:before{content:"\f200"}i.icon.line.chart:before{content:"\f201"}i.icon.arrow.circle.outline.down:before{content:"\f01a"}i.icon.arrow.circle.outline.up:before{content:"\f01b"}i.icon.chevron.left:before{content:"\f053"}i.icon.chevron.right:before{content:"\f054"}i.icon.arrow.left:before{content:"\f060"}i.icon.arrow.right:before{content:"\f061"}i.icon.arrow.up:before{content:"\f062"}i.icon.arrow.down:before{content:"\f063"}i.icon.chevron.up:before{content:"\f077"}i.icon.chevron.down:before{content:"\f078"}i.icon.pointing.right:before{content:"\f0a4"}i.icon.pointing.left:before{content:"\f0a5"}i.icon.pointing.up:before{content:"\f0a6"}i.icon.pointing.down:before{content:"\f0a7"}i.icon.arrow.circle.left:before{content:"\f0a8"}i.icon.arrow.circle.right:before{content:"\f0a9"}i.icon.arrow.circle.up:before{content:"\f0aa"}i.icon.arrow.circle.down:before{content:"\f0ab"}i.icon.caret.down:before{content:"\f0d7"}i.icon.caret.up:before{content:"\f0d8"}i.icon.caret.left:before{content:"\f0d9"}i.icon.caret.right:before{content:"\f0da"}i.icon.angle.double.left:before{content:"\f100"}i.icon.angle.double.right:before{content:"\f101"}i.icon.angle.double.up:before{content:"\f102"}i.icon.angle.double.down:before{content:"\f103"}i.icon.angle.left:before{content:"\f104"}i.icon.angle.right:before{content:"\f105"}i.icon.angle.up:before{content:"\f106"}i.icon.angle.down:before{content:"\f107"}i.icon.chevron.circle.left:before{content:"\f137"}i.icon.chevron.circle.right:before{content:"\f138"}i.icon.chevron.circle.up:before{content:"\f139"}i.icon.chevron.circle.down:before{content:"\f13a"}i.icon.toggle.down:before{content:"\f150"}i.icon.toggle.up:before{content:"\f151"}i.icon.toggle.right:before{content:"\f152"}i.icon.long.arrow.down:before{content:"\f175"}i.icon.long.arrow.up:before{content:"\f176"}i.icon.long.arrow.left:before{content:"\f177"}i.icon.long.arrow.right:before{content:"\f178"}i.icon.arrow.circle.outline.right:before{content:"\f18e"}i.icon.arrow.circle.outline.left:before{content:"\f190"}i.icon.toggle.left:before{content:"\f191"}i.icon.tablet:before{content:"\f10a"}i.icon.mobile:before{content:"\f10b"}i.icon.battery.full:before{content:"\f240"}i.icon.battery.high:before{content:"\f241"}i.icon.battery.medium:before{content:"\f242"}i.icon.battery.low:before{content:"\f243"}i.icon.battery.empty:before{content:"\f244"}i.icon.power:before{content:"\f011"}i.icon.trash.outline:before{content:"\f014"}i.icon.disk.outline:before{content:"\f0a0"}i.icon.desktop:before{content:"\f108"}i.icon.laptop:before{content:"\f109"}i.icon.game:before{content:"\f11b"}i.icon.keyboard:before{content:"\f11c"}i.icon.plug:before{content:"\f1e6"}i.icon.trash:before{content:"\f1f8"}i.icon.file.outline:before{content:"\f016"}i.icon.folder:before{content:"\f07b"}i.icon.folder.open:before{content:"\f07c"}i.icon.file.text.outline:before{content:"\f0f6"}i.icon.folder.outline:before{content:"\f114"}i.icon.folder.open.outline:before{content:"\f115"}i.icon.level.up:before{content:"\f148"}i.icon.level.down:before{content:"\f149"}i.icon.file:before{content:"\f15b"}i.icon.file.text:before{content:"\f15c"}i.icon.file.pdf.outline:before{content:"\f1c1"}i.icon.file.word.outline:before{content:"\f1c2"}i.icon.file.excel.outline:before{content:"\f1c3"}i.icon.file.powerpoint.outline:before{content:"\f1c4"}i.icon.file.image.outline:before{content:"\f1c5"}i.icon.file.archive.outline:before{content:"\f1c6"}i.icon.file.audio.outline:before{content:"\f1c7"}i.icon.file.video.outline:before{content:"\f1c8"}i.icon.file.code.outline:before{content:"\f1c9"}i.icon.qrcode:before{content:"\f029"}i.icon.barcode:before{content:"\f02a"}i.icon.rss:before{content:"\f09e"}i.icon.fork:before{content:"\f126"}i.icon.html5:before{content:"\f13b"}i.icon.css3:before{content:"\f13c"}i.icon.rss.square:before{content:"\f143"}i.icon.openid:before{content:"\f19b"}i.icon.database:before{content:"\f1c0"}i.icon.server:before{content:"\f233"}i.icon.usb:before{content:"\f287"}i.icon.bluetooth:before{content:"\f293"}i.icon.bluetooth.alternative:before{content:"\f294"}i.icon.heart:before{content:"\f004"}i.icon.star:before{content:"\f005"}i.icon.empty.star:before{content:"\f006"}i.icon.thumbs.outline.up:before{content:"\f087"}i.icon.thumbs.outline.down:before{content:"\f088"}i.icon.star.half:before{content:"\f089"}i.icon.empty.heart:before{content:"\f08a"}i.icon.smile:before{content:"\f118"}i.icon.frown:before{content:"\f119"}i.icon.meh:before{content:"\f11a"}i.icon.star.half.empty:before{content:"\f123"}i.icon.thumbs.up:before{content:"\f164"}i.icon.thumbs.down:before{content:"\f165"}i.icon.music:before{content:"\f001"}i.icon.video.play.outline:before{content:"\f01d"}i.icon.volume.off:before{content:"\f026"}i.icon.volume.down:before{content:"\f027"}i.icon.volume.up:before{content:"\f028"}i.icon.record:before{content:"\f03d"}i.icon.step.backward:before{content:"\f048"}i.icon.fast.backward:before{content:"\f049"}i.icon.backward:before{content:"\f04a"}i.icon.play:before{content:"\f04b"}i.icon.pause:before{content:"\f04c"}i.icon.stop:before{content:"\f04d"}i.icon.forward:before{content:"\f04e"}i.icon.fast.forward:before{content:"\f050"}i.icon.step.forward:before{content:"\f051"}i.icon.eject:before{content:"\f052"}i.icon.unmute:before{content:"\f130"}i.icon.mute:before{content:"\f131"}i.icon.video.play:before{content:"\f144"}i.icon.closed.captioning:before{content:"\f20a"}i.icon.pause.circle:before{content:"\f28b"}i.icon.pause.circle.outline:before{content:"\f28c"}i.icon.stop.circle:before{content:"\f28d"}i.icon.stop.circle.outline:before{content:"\f28e"}i.icon.marker:before{content:"\f041"}i.icon.coffee:before{content:"\f0f4"}i.icon.food:before{content:"\f0f5"}i.icon.building.outline:before{content:"\f0f7"}i.icon.hospital:before{content:"\f0f8"}i.icon.emergency:before{content:"\f0f9"}i.icon.first.aid:before{content:"\f0fa"}i.icon.military:before{content:"\f0fb"}i.icon.h:before{content:"\f0fd"}i.icon.location.arrow:before{content:"\f124"}i.icon.compass:before{content:"\f14e"}i.icon.space.shuttle:before{content:"\f197"}i.icon.university:before{content:"\f19c"}i.icon.building:before{content:"\f1ad"}i.icon.paw:before{content:"\f1b0"}i.icon.spoon:before{content:"\f1b1"}i.icon.car:before{content:"\f1b9"}i.icon.taxi:before{content:"\f1ba"}i.icon.tree:before{content:"\f1bb"}i.icon.bicycle:before{content:"\f206"}i.icon.bus:before{content:"\f207"}i.icon.ship:before{content:"\f21a"}i.icon.motorcycle:before{content:"\f21c"}i.icon.street.view:before{content:"\f21d"}i.icon.hotel:before{content:"\f236"}i.icon.train:before{content:"\f238"}i.icon.subway:before{content:"\f239"}i.icon.map.pin:before{content:"\f276"}i.icon.map.signs:before{content:"\f277"}i.icon.map.outline:before{content:"\f278"}i.icon.map:before{content:"\f279"}i.icon.table:before{content:"\f0ce"}i.icon.columns:before{content:"\f0db"}i.icon.sort:before{content:"\f0dc"}i.icon.sort.descending:before{content:"\f0dd"}i.icon.sort.ascending:before{content:"\f0de"}i.icon.sort.alphabet.ascending:before{content:"\f15d"}i.icon.sort.alphabet.descending:before{content:"\f15e"}i.icon.sort.content.ascending:before{content:"\f160"}i.icon.sort.content.descending:before{content:"\f161"}i.icon.sort.numeric.ascending:before{content:"\f162"}i.icon.sort.numeric.descending:before{content:"\f163"}i.icon.font:before{content:"\f031"}i.icon.bold:before{content:"\f032"}i.icon.italic:before{content:"\f033"}i.icon.text.height:before{content:"\f034"}i.icon.text.width:before{content:"\f035"}i.icon.align.left:before{content:"\f036"}i.icon.align.center:before{content:"\f037"}i.icon.align.right:before{content:"\f038"}i.icon.align.justify:before{content:"\f039"}i.icon.list:before{content:"\f03a"}i.icon.outdent:before{content:"\f03b"}i.icon.indent:before{content:"\f03c"}i.icon.cut:before{content:"\f0c4"}i.icon.copy:before{content:"\f0c5"}i.icon.attach:before{content:"\f0c6"}i.icon.save:before{content:"\f0c7"}i.icon.content:before{content:"\f0c9"}i.icon.unordered.list:before{content:"\f0ca"}i.icon.ordered.list:before{content:"\f0cb"}i.icon.strikethrough:before{content:"\f0cc"}i.icon.underline:before{content:"\f0cd"}i.icon.paste:before{content:"\f0ea"}i.icon.unlinkify:before{content:"\f127"}i.icon.superscript:before{content:"\f12b"}i.icon.subscript:before{content:"\f12c"}i.icon.header:before{content:"\f1dc"}i.icon.paragraph:before{content:"\f1dd"}i.icon.text.cursor:before{content:"\f246"}i.icon.euro:before{content:"\f153"}i.icon.pound:before{content:"\f154"}i.icon.dollar:before{content:"\f155"}i.icon.rupee:before{content:"\f156"}i.icon.yen:before{content:"\f157"}i.icon.ruble:before{content:"\f158"}i.icon.won:before{content:"\f159"}i.icon.bitcoin:before{content:"\f15a"}i.icon.lira:before{content:"\f195"}i.icon.shekel:before{content:"\f20b"}i.icon.paypal:before{content:"\f1ed"}i.icon.google.wallet:before{content:"\f1ee"}i.icon.visa:before{content:"\f1f0"}i.icon.mastercard:before{content:"\f1f1"}i.icon.discover:before{content:"\f1f2"}i.icon.american.express:before{content:"\f1f3"}i.icon.paypal.card:before{content:"\f1f4"}i.icon.stripe:before{content:"\f1f5"}i.icon.japan.credit.bureau:before{content:"\f24b"}i.icon.diners.club:before{content:"\f24c"}i.icon.credit.card.alternative:before{content:"\f283"}i.icon.twitter.square:before{content:"\f081"}i.icon.facebook.square:before{content:"\f082"}i.icon.linkedin.square:before{content:"\f08c"}i.icon.github.square:before{content:"\f092"}i.icon.twitter:before{content:"\f099"}i.icon.facebook.f:before{content:"\f09a"}i.icon.github:before{content:"\f09b"}i.icon.pinterest.square:before{content:"\f0d3"}i.icon.google.plus.square:before{content:"\f0d4"}i.icon.google.plus:before{content:"\f0d5"}i.icon.linkedin:before{content:"\f0e1"}i.icon.github.alternate:before{content:"\f113"}i.icon.maxcdn:before{content:"\f136"}i.icon.youtube.square:before{content:"\f166"}i.icon.youtube:before{content:"\f167"}i.icon.xing:before{content:"\f168"}i.icon.xing.square:before{content:"\f169"}i.icon.youtube.play:before{content:"\f16a"}i.icon.dropbox:before{content:"\f16b"}i.icon.stack.overflow:before{content:"\f16c"}i.icon.instagram:before{content:"\f16d"}i.icon.flickr:before{content:"\f16e"}i.icon.adn:before{content:"\f170"}i.icon.bitbucket:before{content:"\f171"}i.icon.bitbucket.square:before{content:"\f172"}i.icon.tumblr:before{content:"\f173"}i.icon.tumblr.square:before{content:"\f174"}i.icon.apple:before{content:"\f179"}i.icon.windows:before{content:"\f17a"}i.icon.android:before{content:"\f17b"}i.icon.linux:before{content:"\f17c"}i.icon.dribble:before{content:"\f17d"}i.icon.skype:before{content:"\f17e"}i.icon.foursquare:before{content:"\f180"}i.icon.trello:before{content:"\f181"}i.icon.gittip:before{content:"\f184"}i.icon.vk:before{content:"\f189"}i.icon.weibo:before{content:"\f18a"}i.icon.renren:before{content:"\f18b"}i.icon.pagelines:before{content:"\f18c"}i.icon.stack.exchange:before{content:"\f18d"}i.icon.vimeo.square:before{content:"\f194"}i.icon.slack:before{content:"\f198"}i.icon.wordpress:before{content:"\f19a"}i.icon.yahoo:before{content:"\f19e"}i.icon.google:before{content:"\f1a0"}i.icon.reddit:before{content:"\f1a1"}i.icon.reddit.square:before{content:"\f1a2"}i.icon.stumbleupon.circle:before{content:"\f1a3"}i.icon.stumbleupon:before{content:"\f1a4"}i.icon.delicious:before{content:"\f1a5"}i.icon.digg:before{content:"\f1a6"}i.icon.pied.piper:before{content:"\f1a7"}i.icon.pied.piper.alternate:before{content:"\f1a8"}i.icon.drupal:before{content:"\f1a9"}i.icon.joomla:before{content:"\f1aa"}i.icon.behance:before{content:"\f1b4"}i.icon.behance.square:before{content:"\f1b5"}i.icon.steam:before{content:"\f1b6"}i.icon.steam.square:before{content:"\f1b7"}i.icon.spotify:before{content:"\f1bc"}i.icon.deviantart:before{content:"\f1bd"}i.icon.soundcloud:before{content:"\f1be"}i.icon.vine:before{content:"\f1ca"}i.icon.codepen:before{content:"\f1cb"}i.icon.jsfiddle:before{content:"\f1cc"}i.icon.rebel:before{content:"\f1d0"}i.icon.empire:before{content:"\f1d1"}i.icon.git.square:before{content:"\f1d2"}i.icon.git:before{content:"\f1d3"}i.icon.hacker.news:before{content:"\f1d4"}i.icon.tencent.weibo:before{content:"\f1d5"}i.icon.qq:before{content:"\f1d6"}i.icon.wechat:before{content:"\f1d7"}i.icon.slideshare:before{content:"\f1e7"}i.icon.twitch:before{content:"\f1e8"}i.icon.yelp:before{content:"\f1e9"}i.icon.lastfm:before{content:"\f202"}i.icon.lastfm.square:before{content:"\f203"}i.icon.ioxhost:before{content:"\f208"}i.icon.angellist:before{content:"\f209"}i.icon.meanpath:before{content:"\f20c"}i.icon.buysellads:before{content:"\f20d"}i.icon.connectdevelop:before{content:"\f20e"}i.icon.dashcube:before{content:"\f210"}i.icon.forumbee:before{content:"\f211"}i.icon.leanpub:before{content:"\f212"}i.icon.sellsy:before{content:"\f213"}i.icon.shirtsinbulk:before{content:"\f214"}i.icon.simplybuilt:before{content:"\f215"}i.icon.skyatlas:before{content:"\f216"}i.icon.facebook:before{content:"\f230"}i.icon.pinterest:before{content:"\f231"}i.icon.whatsapp:before{content:"\f232"}i.icon.viacoin:before{content:"\f237"}i.icon.medium:before{content:"\f23a"}i.icon.y.combinator:before{content:"\f23b"}i.icon.optinmonster:before{content:"\f23c"}i.icon.opencart:before{content:"\f23d"}i.icon.expeditedssl:before{content:"\f23e"}i.icon.gg:before{content:"\f260"}i.icon.gg.circle:before{content:"\f261"}i.icon.tripadvisor:before{content:"\f262"}i.icon.odnoklassniki:before{content:"\f263"}i.icon.odnoklassniki.square:before{content:"\f264"}i.icon.pocket:before{content:"\f265"}i.icon.wikipedia:before{content:"\f266"}i.icon.safari:before{content:"\f267"}i.icon.chrome:before{content:"\f268"}i.icon.firefox:before{content:"\f269"}i.icon.opera:before{content:"\f26a"}i.icon.internet.explorer:before{content:"\f26b"}i.icon.contao:before{content:"\f26d"}i.icon.\35 00px:before{content:"\f26e"}i.icon.amazon:before{content:"\f270"}i.icon.houzz:before{content:"\f27c"}i.icon.vimeo:before{content:"\f27d"}i.icon.black.tie:before{content:"\f27e"}i.icon.fonticons:before{content:"\f280"}i.icon.reddit.alien:before{content:"\f281"}i.icon.microsoft.edge:before{content:"\f282"}i.icon.codiepie:before{content:"\f284"}i.icon.modx:before{content:"\f285"}i.icon.fort.awesome:before{content:"\f286"}i.icon.product.hunt:before{content:"\f288"}i.icon.mixcloud:before{content:"\f289"}i.icon.scribd:before{content:"\f28a"}i.icon.gitlab:before{content:"\f296"}i.icon.wpbeginner:before{content:"\f297"}i.icon.wpforms:before{content:"\f298"}i.icon.envira.gallery:before{content:"\f299"}i.icon.glide:before{content:"\f2a5"}i.icon.glide.g:before{content:"\f2a6"}i.icon.viadeo:before{content:"\f2a9"}i.icon.viadeo.square:before{content:"\f2aa"}i.icon.snapchat:before{content:"\f2ab"}i.icon.snapchat.ghost:before{content:"\f2ac"}i.icon.snapchat.square:before{content:"\f2ad"}i.icon.pied.piper.hat:before{content:"\f2ae"}i.icon.first.order:before{content:"\f2b0"}i.icon.yoast:before{content:"\f2b1"}i.icon.themeisle:before{content:"\f2b2"}i.icon.google.plus.circle:before{content:"\f2b3"}i.icon.font.awesome:before{content:"\f2b4"}i.icon.like:before{content:"\f004"}i.icon.favorite:before{content:"\f005"}i.icon.video:before{content:"\f008"}i.icon.check:before{content:"\f00c"}i.icon.cancel:before,i.icon.close:before,i.icon.delete:before,i.icon.x:before{content:"\f00d"}i.icon.magnify:before,i.icon.zoom.in:before{content:"\f00e"}i.icon.shutdown:before{content:"\f011"}i.icon.clock:before,i.icon.time:before{content:"\f017"}i.icon.play.circle.outline:before{content:"\f01d"}i.icon.headphone:before{content:"\f025"}i.icon.camera:before{content:"\f030"}i.icon.video.camera:before{content:"\f03d"}i.icon.picture:before{content:"\f03e"}i.icon.compose:before,i.icon.pencil:before{content:"\f040"}i.icon.point:before{content:"\f041"}i.icon.tint:before{content:"\f043"}i.icon.signup:before{content:"\f044"}i.icon.plus.circle:before{content:"\f055"}i.icon.question.circle:before{content:"\f059"}i.icon.dont:before{content:"\f05e"}i.icon.minimize:before{content:"\f066"}i.icon.add:before{content:"\f067"}i.icon.attention:before,i.icon.exclamation.circle:before{content:"\f06a"}i.icon.eye:before{content:"\f06e"}i.icon.exclamation.triangle:before{content:"\f071"}i.icon.shuffle:before{content:"\f074"}i.icon.chat:before,i.icon.talk:before{content:"\f075"}i.icon.cart:before,i.icon.shopping.cart:before{content:"\f07a"}i.icon.bar.graph:before{content:"\f080"}i.icon.key:before{content:"\f084"}i.icon.cogs:before{content:"\f085"}i.icon.discussions:before{content:"\f086"}i.icon.like.outline:before{content:"\f087"}i.icon.dislike.outline:before{content:"\f088"}i.icon.heart.outline:before{content:"\f08a"}i.icon.log.out:before{content:"\f08b"}i.icon.thumb.tack:before{content:"\f08d"}i.icon.winner:before{content:"\f091"}i.icon.phone:before{content:"\f095"}i.icon.bookmark.outline:before{content:"\f097"}i.icon.phone.square:before{content:"\f098"}i.icon.credit.card:before{content:"\f09d"}i.icon.hdd.outline:before{content:"\f0a0"}i.icon.bullhorn:before{content:"\f0a1"}i.icon.bell.outline:before{content:"\f0a2"}i.icon.hand.outline.right:before{content:"\f0a4"}i.icon.hand.outline.left:before{content:"\f0a5"}i.icon.hand.outline.up:before{content:"\f0a6"}i.icon.hand.outline.down:before{content:"\f0a7"}i.icon.globe:before{content:"\f0ac"}i.icon.wrench:before{content:"\f0ad"}i.icon.briefcase:before{content:"\f0b1"}i.icon.group:before{content:"\f0c0"}i.icon.chain:before,i.icon.linkify:before{content:"\f0c1"}i.icon.flask:before{content:"\f0c3"}i.icon.bars:before,i.icon.sidebar:before{content:"\f0c9"}i.icon.list.ul:before{content:"\f0ca"}i.icon.list.ol:before,i.icon.numbered.list:before{content:"\f0cb"}i.icon.magic:before{content:"\f0d0"}i.icon.truck:before{content:"\f0d1"}i.icon.currency:before{content:"\f0d6"}i.icon.dropdown:before,i.icon.triangle.down:before{content:"\f0d7"}i.icon.triangle.up:before{content:"\f0d8"}i.icon.triangle.left:before{content:"\f0d9"}i.icon.triangle.right:before{content:"\f0da"}i.icon.envelope:before{content:"\f0e0"}i.icon.conversation:before{content:"\f0e6"}i.icon.rain:before{content:"\f0e9"}i.icon.clipboard:before{content:"\f0ea"}i.icon.lightbulb:before{content:"\f0eb"}i.icon.bell:before{content:"\f0f3"}i.icon.ambulance:before{content:"\f0f9"}i.icon.medkit:before{content:"\f0fa"}i.icon.fighter.jet:before{content:"\f0fb"}i.icon.beer:before{content:"\f0fc"}i.icon.plus.square:before{content:"\f0fe"}i.icon.computer:before{content:"\f108"}i.icon.gamepad:before{content:"\f11b"}i.icon.star.half.full:before{content:"\f123"}i.icon.broken.chain:before{content:"\f127"}i.icon.question:before{content:"\f128"}i.icon.exclamation:before{content:"\f12a"}i.icon.eraser:before{content:"\f12d"}i.icon.microphone:before{content:"\f130"}i.icon.microphone.slash:before{content:"\f131"}i.icon.shield:before{content:"\f132"}i.icon.target:before{content:"\f140"}i.icon.play.circle:before{content:"\f144"}i.icon.pencil.square:before{content:"\f14b"}i.icon.eur:before{content:"\f153"}i.icon.gbp:before{content:"\f154"}i.icon.usd:before{content:"\f155"}i.icon.inr:before{content:"\f156"}i.icon.cny:before,i.icon.jpy:before,i.icon.rmb:before{content:"\f157"}i.icon.rouble:before,i.icon.rub:before{content:"\f158"}i.icon.krw:before{content:"\f159"}i.icon.btc:before{content:"\f15a"}i.icon.gratipay:before{content:"\f184"}i.icon.zip:before{content:"\f187"}i.icon.dot.circle.outline:before{content:"\f192"}i.icon.try:before{content:"\f195"}i.icon.graduation:before{content:"\f19d"}i.icon.circle.outline:before{content:"\f1db"}i.icon.sliders:before{content:"\f1de"}i.icon.weixin:before{content:"\f1d7"}i.icon.teletype:before,i.icon.tty:before{content:"\f1e4"}i.icon.binoculars:before{content:"\f1e5"}i.icon.power.cord:before{content:"\f1e6"}i.icon.wi-fi:before{content:"\f1eb"}i.icon.visa.card:before{content:"\f1f0"}i.icon.mastercard.card:before{content:"\f1f1"}i.icon.discover.card:before{content:"\f1f2"}i.icon.american.express.card:before,i.icon.amex:before{content:"\f1f3"}i.icon.stripe.card:before{content:"\f1f5"}i.icon.bell.slash:before{content:"\f1f6"}i.icon.bell.slash.outline:before{content:"\f1f7"}i.icon.area.graph:before{content:"\f1fe"}i.icon.pie.graph:before{content:"\f200"}i.icon.line.graph:before{content:"\f201"}i.icon.cc:before{content:"\f20a"}i.icon.ils:before,i.icon.sheqel:before{content:"\f20b"}i.icon.plus.cart:before{content:"\f217"}i.icon.arrow.down.cart:before{content:"\f218"}i.icon.detective:before{content:"\f21b"}i.icon.venus:before{content:"\f221"}i.icon.mars:before{content:"\f222"}i.icon.mercury:before{content:"\f223"}i.icon.intersex:before{content:"\f224"}i.icon.female.homosexual:before,i.icon.venus.double:before{content:"\f226"}i.icon.male.homosexual:before,i.icon.mars.double:before{content:"\f227"}i.icon.venus.mars:before{content:"\f228"}i.icon.mars.alternate:before,i.icon.mars.stroke:before{content:"\f229"}i.icon.mars.stroke.vertical:before,i.icon.mars.vertical:before{content:"\f22a"}i.icon.mars.horizontal:before,i.icon.mars.stroke.horizontal:before{content:"\f22b"}i.icon.asexual:before{content:"\f22d"}i.icon.facebook.official:before{content:"\f230"}i.icon.user.plus:before{content:"\f234"}i.icon.user.cancel:before,i.icon.user.close:before,i.icon.user.delete:before,i.icon.user.times:before,i.icon.user.x:before{content:"\f235"}i.icon.bed:before{content:"\f236"}i.icon.yc:before,i.icon.ycombinator:before{content:"\f23b"}i.icon.battery.four:before{content:"\f240"}i.icon.battery.three.quarters:before,i.icon.battery.three:before{content:"\f241"}i.icon.battery.half:before,i.icon.battery.two:before{content:"\f242"}i.icon.battery.one:before,i.icon.battery.quarter:before{content:"\f243"}i.icon.battery.zero:before{content:"\f244"}i.icon.i.cursor:before{content:"\f246"}i.icon.japan.credit.bureau.card:before,i.icon.jcb:before{content:"\f24b"}i.icon.diners.club.card:before{content:"\f24c"}i.icon.balance:before{content:"\f24e"}i.icon.hourglass.outline:before,i.icon.hourglass.zero:before{content:"\f250"}i.icon.hourglass.one:before{content:"\f251"}i.icon.hourglass.two:before{content:"\f252"}i.icon.hourglass.three:before{content:"\f253"}i.icon.hourglass.four:before{content:"\f254"}i.icon.grab{content:"\f255"}i.icon.hand.victory:before{content:"\f25b"}i.icon.tm:before{content:"\f25c"}i.icon.r.circle:before{content:"\f25d"}i.icon.television{content:"\f26c"}i.icon.five.hundred.pixels:before{content:"\f26e"}i.icon.calendar.plus:before{content:"\f271"}i.icon.calendar.minus:before{content:"\f272"}i.icon.calendar.times:before{content:"\f273"}i.icon.calendar.check:before{content:"\f274"}i.icon.factory:before{content:"\f275"}i.icon.commenting:before{content:"\f27a"}i.icon.commenting.outline:before{content:"\f27b"}i.icon.edge:before,i.icon.ms.edge:before{content:"\f282"}i.icon.wordpress.beginner:before{content:"\f297"}i.icon.wordpress.forms:before{content:"\f298"}i.icon.envira:before{content:"\f299"}i.icon.question.circle.outline:before{content:"\f29c"}i.icon.ald:before,i.icon.als:before,i.icon.assistive.listening.devices:before{content:"\f2a2"}i.icon.asl.interpreting:before{content:"\f2a3"}i.icon.deaf:before{content:"\f2a4"}i.icon.american.sign.language.interpreting:before{content:"\f2a3"}i.icon.hard.of.hearing:before{content:"\f2a4"}i.icon.signing:before{content:"\f2a7"}i.icon.new.pied.piper:before{content:"\f2ae"}i.icon.theme.isle:before{content:"\f2b2"}i.icon.google.plus.official:before{content:"\f2b3"}i.icon.fa:before{content:"\f2b4"}.ui.image{position:relative;display:inline-block;vertical-align:middle;max-width:100%;background-color:transparent}img.ui.image{display:block}.ui.image img,.ui.image svg{display:block;max-width:100%;height:auto}.ui.hidden.image,.ui.hidden.images{display:none}.ui.hidden.transition.image,.ui.hidden.transition.images{display:block;visibility:hidden}.ui.disabled.image,.ui.disabled.images{cursor:default;opacity:.45}.ui.inline.image,.ui.inline.image img,.ui.inline.image svg{display:inline-block}.ui.top.aligned.image,.ui.top.aligned.image img,.ui.top.aligned.image svg,.ui.top.aligned.images .image{display:inline-block;vertical-align:top}.ui.middle.aligned.image,.ui.middle.aligned.image img,.ui.middle.aligned.image svg,.ui.middle.aligned.images .image{display:inline-block;vertical-align:middle}.ui.bottom.aligned.image,.ui.bottom.aligned.image img,.ui.bottom.aligned.image svg,.ui.bottom.aligned.images .image{display:inline-block;vertical-align:bottom}.ui.rounded.image,.ui.rounded.image>*,.ui.rounded.images .image,.ui.rounded.images .image>*{border-radius:.3125em}.ui.bordered.image img,.ui.bordered.image svg,.ui.bordered.images .image,.ui.bordered.images img,.ui.bordered.images svg,img.ui.bordered.image{border:1px solid rgba(0,0,0,.1)}.ui.circular.image,.ui.circular.images{overflow:hidden}.ui.circular.image,.ui.circular.image>*,.ui.circular.images .image,.ui.circular.images .image>*{border-radius:500rem}.ui.fluid.image,.ui.fluid.image img,.ui.fluid.image svg,.ui.fluid.images,.ui.fluid.images img,.ui.fluid.images svg{display:block;width:100%;height:auto}.ui.avatar.image,.ui.avatar.image img,.ui.avatar.image svg,.ui.avatar.images .image,.ui.avatar.images img,.ui.avatar.images svg{margin-right:.25em;display:inline-block;width:2em;height:2em;border-radius:500rem}.ui.spaced.image{display:inline-block!important;margin-left:.5em;margin-right:.5em}.ui[class*="left spaced"].image{margin-left:.5em;margin-right:0}.ui[class*="right spaced"].image{margin-left:0;margin-right:.5em}.ui.floated.image,.ui.floated.images{float:left;margin-right:1em;margin-bottom:1em}.ui.right.floated.image,.ui.right.floated.images{float:right;margin-right:0;margin-bottom:1em;margin-left:1em}.ui.floated.image:last-child,.ui.floated.images:last-child{margin-bottom:0}.ui.centered.image,.ui.centered.images{margin-left:auto;margin-right:auto}.ui.mini.image,.ui.mini.images .image,.ui.mini.images img,.ui.mini.images svg{width:35px;height:auto;font-size:.78571429rem}.ui.tiny.image,.ui.tiny.images .image,.ui.tiny.images img,.ui.tiny.images svg{width:80px;height:auto;font-size:.85714286rem}.ui.small.image,.ui.small.images .image,.ui.small.images img,.ui.small.images svg{width:150px;height:auto;font-size:.92857143rem}.ui.medium.image,.ui.medium.images .image,.ui.medium.images img,.ui.medium.images svg{width:300px;height:auto;font-size:1rem}.ui.large.image,.ui.large.images .image,.ui.large.images img,.ui.large.images svg{width:450px;height:auto;font-size:1.14285714rem}.ui.big.image,.ui.big.images .image,.ui.big.images img,.ui.big.images svg{width:600px;height:auto;font-size:1.28571429rem}.ui.huge.image,.ui.huge.images .image,.ui.huge.images img,.ui.huge.images svg{width:800px;height:auto;font-size:1.42857143rem}.ui.massive.image,.ui.massive.images .image,.ui.massive.images img,.ui.massive.images svg{width:960px;height:auto;font-size:1.71428571rem}.ui.images{font-size:0;margin:0 -.25rem}.ui.images .image,.ui.images img,.ui.images svg{display:inline-block;margin:0 .25rem .5rem}.ui.input{position:relative;font-weight:400;font-style:normal;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;color:rgba(0,0,0,.87)}.ui.input input{margin:0;max-width:100%;-webkit-box-flex:1;-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;outline:0;-webkit-tap-highlight-color:rgba(255,255,255,0);text-align:left;line-height:1.2142em;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;padding:.67861429em 1em;background:#FFF;border:1px solid rgba(34,36,38,.15);color:rgba(0,0,0,.87);border-radius:.28571429rem;-webkit-transition:box-shadow .1s ease,border-color .1s ease;transition:box-shadow .1s ease,border-color .1s ease;box-shadow:none}.ui.input input::-webkit-input-placeholder{color:rgba(191,191,191,.87)}.ui.input input::-moz-placeholder{color:rgba(191,191,191,.87)}.ui.input input:-ms-input-placeholder{color:rgba(191,191,191,.87)}.ui.disabled.input,.ui.input input[disabled]{opacity:.45}.ui.disabled.input input,.ui.input input[disabled]{pointer-events:none}.ui.input input:active,.ui.input.down input{border-color:rgba(0,0,0,.3);background:#FAFAFA;color:rgba(0,0,0,.87);box-shadow:none}.ui.loading.loading.input>i.icon:before{position:absolute;content:'';top:50%;left:50%;margin:-.64285714em 0 0 -.64285714em;width:1.28571429em;height:1.28571429em;border-radius:500rem;border:.2em solid rgba(0,0,0,.1)}.ui.loading.loading.input>i.icon:after{position:absolute;content:'';top:50%;left:50%;margin:-.64285714em 0 0 -.64285714em;width:1.28571429em;height:1.28571429em;-webkit-animation:button-spin .6s linear;animation:button-spin .6s linear;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;border-radius:500rem;border-color:#767676 transparent transparent;border-style:solid;border-width:.2em;box-shadow:0 0 0 1px transparent}.ui.input input:focus,.ui.input.focus input{border-color:#85B7D9;background:#FFF;color:rgba(0,0,0,.8);box-shadow:none}.ui.input input:focus::-webkit-input-placeholder,.ui.input.focus input::-webkit-input-placeholder{color:rgba(115,115,115,.87)}.ui.input input:focus::-moz-placeholder,.ui.input.focus input::-moz-placeholder{color:rgba(115,115,115,.87)}.ui.input input:focus:-ms-input-placeholder,.ui.input.focus input:-ms-input-placeholder{color:rgba(115,115,115,.87)}.ui.input.error input{background-color:#FFF6F6;border-color:#E0B4B4;color:#9F3A38;box-shadow:none}.ui.input.error input::-webkit-input-placeholder{color:#e7bdbc}.ui.input.error input::-moz-placeholder{color:#e7bdbc}.ui.input.error input:-ms-input-placeholder{color:#e7bdbc!important}.ui.input.error input:focus::-webkit-input-placeholder{color:#da9796}.ui.input.error input:focus::-moz-placeholder{color:#da9796}.ui.input.error input:focus:-ms-input-placeholder{color:#da9796!important}.ui.transparent.input input{border-color:transparent!important;background-color:transparent!important;padding:0!important;box-shadow:none!important}.ui.transparent.icon.input>i.icon{width:1.1em}.ui.transparent.icon.input>input{padding-left:0!important;padding-right:2em!important}.ui.transparent[class*="left icon"].input>input{padding-left:2em!important;padding-right:0!important}.ui.transparent.inverted.input{color:#FFF}.ui.transparent.inverted.input input{color:inherit}.ui.transparent.inverted.input input::-webkit-input-placeholder{color:rgba(255,255,255,.5)}.ui.transparent.inverted.input input::-moz-placeholder{color:rgba(255,255,255,.5)}.ui.transparent.inverted.input input:-ms-input-placeholder{color:rgba(255,255,255,.5)}.ui.icon.input>i.icon{cursor:default;position:absolute;line-height:1;text-align:center;top:0;right:0;margin:0;height:100%;width:2.67142857em;opacity:.5;border-radius:0 .28571429rem .28571429rem 0;-webkit-transition:opacity .3s ease;transition:opacity .3s ease}.ui.icon.input>i.icon:not(.link){pointer-events:none}.ui.icon.input input{padding-right:2.67142857em!important}.ui.icon.input>i.icon:after,.ui.icon.input>i.icon:before{left:0;position:absolute;text-align:center;top:50%;width:100%;margin-top:-.5em}.ui.icon.input>i.link.icon{cursor:pointer}.ui.icon.input>i.circular.icon{top:.35em;right:.5em}.ui[class*="left icon"].input>i.icon{right:auto;left:1px;border-radius:.28571429rem 0 0 .28571429rem}.ui[class*="left icon"].input>i.circular.icon{right:auto;left:.5em}.ui[class*="left icon"].input>input{padding-left:2.67142857em!important;padding-right:1em!important}.ui.icon.input>input:focus~i.icon{opacity:1}.ui.labeled.input>.label{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;margin:0;font-size:1em}.ui.labeled.input>.label:not(.corner){padding-top:.78571429em;padding-bottom:.78571429em}.ui.labeled.input:not([class*="corner labeled"]) .label:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.ui.labeled.input:not([class*="corner labeled"]) .label:first-child+input{border-top-left-radius:0;border-bottom-left-radius:0;border-left-color:transparent}.ui.labeled.input:not([class*="corner labeled"]) .label:first-child+input:focus{border-left-color:#85B7D9}.ui[class*="right labeled"].input input{border-top-right-radius:0!important;border-bottom-right-radius:0!important;border-right-color:transparent!important}.ui[class*="right labeled"].input input+.label{border-top-left-radius:0;border-bottom-left-radius:0}.ui[class*="right labeled"].input input:focus{border-right-color:#85B7D9!important}.ui.labeled.input .corner.label{top:1px;right:1px;font-size:.64285714em;border-radius:0 .28571429rem 0 0}.ui[class*="corner labeled"]:not([class*="left corner labeled"]).labeled.input input{padding-right:2.5em!important}.ui[class*="corner labeled"].icon.input:not([class*="left corner labeled"])>input{padding-right:3.25em!important}.ui[class*="corner labeled"].icon.input:not([class*="left corner labeled"])>.icon{margin-right:1.25em}.ui[class*="left corner labeled"].labeled.input input{padding-left:2.5em!important}.ui[class*="left corner labeled"].icon.input>input{padding-left:3.25em!important}.ui[class*="left corner labeled"].icon.input>.icon{margin-left:1.25em}.ui.input>.ui.corner.label{top:1px;right:1px}.ui.input>.ui.left.corner.label{right:auto;left:1px}.ui.action.input>.button,.ui.action.input>.buttons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.ui.action.input>.button,.ui.action.input>.buttons>.button{padding-top:.78571429em;padding-bottom:.78571429em;margin:0}.ui.action.input:not([class*="left action"])>input{border-top-right-radius:0!important;border-bottom-right-radius:0!important;border-right-color:transparent!important}.ui.action.input:not([class*="left action"])>.button:not(:first-child),.ui.action.input:not([class*="left action"])>.buttons:not(:first-child)>.button,.ui.action.input:not([class*="left action"])>.dropdown:not(:first-child){border-radius:0}.ui.action.input:not([class*="left action"])>.button:last-child,.ui.action.input:not([class*="left action"])>.buttons:last-child>.button,.ui.action.input:not([class*="left action"])>.dropdown:last-child{border-radius:0 .28571429rem .28571429rem 0}.ui.action.input:not([class*="left action"]) input:focus{border-right-color:#85B7D9!important}.ui[class*="left action"].input>input{border-top-left-radius:0!important;border-bottom-left-radius:0!important;border-left-color:transparent!important}.ui[class*="left action"].input>.button,.ui[class*="left action"].input>.buttons>.button,.ui[class*="left action"].input>.dropdown{border-radius:0}.ui[class*="left action"].input>.button:first-child,.ui[class*="left action"].input>.buttons:first-child>.button,.ui[class*="left action"].input>.dropdown:first-child{border-radius:.28571429rem 0 0 .28571429rem}.ui[class*="left action"].input>input:focus{border-left-color:#85B7D9!important}.ui.inverted.input input{border:none}.ui.fluid.input{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.ui.fluid.input>input{width:0!important}.ui.mini.input{font-size:.78571429em}.ui.small.input{font-size:.92857143em}.ui.input{font-size:1em}.ui.large.input{font-size:1.14285714em}.ui.big.input{font-size:1.28571429em}.ui.huge.input{font-size:1.42857143em}.ui.massive.input{font-size:1.71428571em}.ui.label{display:inline-block;line-height:1;vertical-align:baseline;margin:0 .14285714em;background-color:#E8E8E8;background-image:none;padding:.5833em .833em;color:rgba(0,0,0,.6);text-transform:none;font-weight:700;border:0 solid transparent;border-radius:.28571429rem;-webkit-transition:background .1s ease;transition:background .1s ease}.ui.label:first-child{margin-left:0}.ui.label:last-child{margin-right:0}a.ui.label{cursor:pointer}.ui.label>a{cursor:pointer;color:inherit;opacity:.5;-webkit-transition:.1s opacity ease;transition:.1s opacity ease}.ui.label>a:hover{opacity:1}.ui.label>img{width:auto!important;vertical-align:middle;height:2.1666em!important}.ui.label>.icon{width:auto;margin:0 .75em 0 0}.ui.label>.detail{display:inline-block;vertical-align:top;font-weight:700;margin-left:1em;opacity:.8}.ui.label>.detail .icon{margin:0 .25em 0 0}.ui.label>.close.icon,.ui.label>.delete.icon{cursor:pointer;margin-right:0;margin-left:.5em;font-size:.92857143em;opacity:.5;-webkit-transition:background .1s ease;transition:background .1s ease}.ui.label>.delete.icon:hover{opacity:1}.ui.labels>.label{margin:0 .5em .5em 0}.ui.header>.ui.label{margin-top:-.29165em}.ui.attached.segment>.ui.top.left.attached.label,.ui.bottom.attached.segment>.ui.top.left.attached.label{border-top-left-radius:0}.ui.attached.segment>.ui.top.right.attached.label,.ui.bottom.attached.segment>.ui.top.right.attached.label{border-top-right-radius:0}.ui.top.attached.segment>.ui.bottom.left.attached.label{border-bottom-left-radius:0}.ui.top.attached.segment>.ui.bottom.right.attached.label{border-bottom-right-radius:0}.ui.top.attached.label+[class*="right floated"]+*,.ui.top.attached.label:first-child+:not(.attached){margin-top:2rem!important}.ui.bottom.attached.label:first-child~:last-child:not(.attached){margin-top:0;margin-bottom:2rem!important}.ui.image.label{width:auto!important;margin-top:0;margin-bottom:0;max-width:9999px;vertical-align:baseline;text-transform:none;background:#E8E8E8;padding:.5833em .833em .5833em .5em;border-radius:.28571429rem;box-shadow:none}.ui.image.label img{display:inline-block;vertical-align:top;height:2.1666em;margin:-.5833em .5em -.5833em -.5em;border-radius:.28571429rem 0 0 .28571429rem}.ui.image.label .detail{background:rgba(0,0,0,.1);margin:-.5833em -.833em -.5833em .5em;padding:.5833em .833em;border-radius:0 .28571429rem .28571429rem 0}.ui.tag.label,.ui.tag.labels .label{margin-left:1em;position:relative;padding-left:1.5em;padding-right:1.5em;border-radius:0 .28571429rem .28571429rem 0;-webkit-transition:none;transition:none}.ui.tag.label:before,.ui.tag.labels .label:before{position:absolute;-webkit-transform:translateY(-50%) translateX(50%) rotate(-45deg);transform:translateY(-50%) translateX(50%) rotate(-45deg);top:50%;right:100%;content:'';background-color:inherit;background-image:none;width:1.56em;height:1.56em;-webkit-transition:none;transition:none}.ui.tag.label:after,.ui.tag.labels .label:after{position:absolute;content:'';top:50%;left:-.25em;margin-top:-.25em;background-color:#FFF!important;width:.5em;height:.5em;box-shadow:0 -1px 1px 0 rgba(0,0,0,.3);border-radius:500rem}.ui.corner.label{position:absolute;top:0;right:0;margin:0;padding:0;text-align:center;border-color:#E8E8E8;width:4em;height:4em;z-index:1;-webkit-transition:border-color .1s ease;transition:border-color .1s ease;background-color:transparent!important}.ui.corner.label:after{position:absolute;content:"";right:0;top:0;z-index:-1;width:0;height:0;background-color:transparent!important;border-top:0 solid transparent;border-right:4em solid transparent;border-bottom:4em solid transparent;border-left:0 solid transparent;border-right-color:inherit;-webkit-transition:border-color .1s ease;transition:border-color .1s ease}.ui.corner.label .icon{cursor:default;position:relative;top:.64285714em;left:.78571429em;font-size:1.14285714em;margin:0}.ui.left.corner.label,.ui.left.corner.label:after{right:auto;left:0}.ui.left.corner.label:after{border-top:4em solid transparent;border-right:4em solid transparent;border-bottom:0 solid transparent;border-left:0 solid transparent;border-top-color:inherit}.ui.left.corner.label .icon{left:-.78571429em}.ui.segment>.ui.corner.label{top:-1px;right:-1px}.ui.segment>.ui.left.corner.label{right:auto;left:-1px}.ui.ribbon.label{position:relative;margin:0;min-width:-webkit-max-content;min-width:-moz-max-content;min-width:max-content;border-radius:0 .28571429rem .28571429rem 0;border-color:rgba(0,0,0,.15)}.ui.ribbon.label:after{position:absolute;content:'';top:100%;left:0;background-color:transparent!important;border-style:solid;border-width:0 1.2em 1.2em 0;border-color:transparent;border-right-color:inherit;width:0;height:0}.ui.ribbon.label{left:calc(-1rem - 1.2em);margin-right:-1.2em;padding-left:calc(1rem + 1.2em);padding-right:1.2em}.ui[class*="right ribbon"].label{left:calc(100% + 1rem + 1.2em);padding-left:1.2em;padding-right:calc(1rem + 1.2em);text-align:left;-webkit-transform:translateX(-100%);transform:translateX(-100%);border-radius:.28571429rem 0 0 .28571429rem}.ui[class*="right ribbon"].label:after{left:auto;right:0;border-style:solid;border-width:1.2em 1.2em 0 0;border-color:transparent;border-top-color:inherit}.ui.card .image>.ribbon.label,.ui.image>.ribbon.label{position:absolute;top:1rem}.ui.card .image>.ui.ribbon.label,.ui.image>.ui.ribbon.label{left:calc(.05rem - 1.2em)}.ui.card .image>.ui[class*="right ribbon"].label,.ui.image>.ui[class*="right ribbon"].label{left:calc(100% + -.05rem + 1.2em);padding-left:.833em}.ui.table td>.ui.ribbon.label{left:calc(-.78571429em - 1.2em)}.ui.table td>.ui[class*="right ribbon"].label{left:calc(100% + .78571429em + 1.2em);padding-left:.833em}.ui.attached.label,.ui[class*="top attached"].label{width:100%;position:absolute;margin:0;top:0;left:0;padding:.75em 1em;border-radius:.21428571rem .21428571rem 0 0}.ui[class*="bottom attached"].label{top:auto;bottom:0;border-radius:0 0 .21428571rem .21428571rem}.ui[class*="top left attached"].label{width:auto;margin-top:0!important;border-radius:.21428571rem 0 .28571429rem}.ui[class*="top right attached"].label{width:auto;left:auto;right:0;border-radius:0 .21428571rem 0 .28571429rem}.ui[class*="bottom left attached"].label{width:auto;top:auto;bottom:0;border-radius:0 .28571429rem 0 .21428571rem}.ui[class*="bottom right attached"].label{top:auto;bottom:0;left:auto;right:0;width:auto;border-radius:.28571429rem 0 .21428571rem}.ui.label.disabled{opacity:.5}a.ui.label:hover,a.ui.labels .label:hover{background-color:#E0E0E0;border-color:#E0E0E0;background-image:none;color:rgba(0,0,0,.8)}.ui.labels a.label:hover:before,a.ui.label:hover:before{color:rgba(0,0,0,.8)}.ui.active.label{background-color:#D0D0D0;border-color:#D0D0D0;background-image:none;color:rgba(0,0,0,.95)}.ui.active.label:before{background-color:#D0D0D0;background-image:none;color:rgba(0,0,0,.95)}a.ui.active.label:hover,a.ui.labels .active.label:hover{background-color:#C8C8C8;border-color:#C8C8C8;background-image:none;color:rgba(0,0,0,.95)}.ui.labels a.active.label:ActiveHover:before,a.ui.active.label:ActiveHover:before{background-color:#C8C8C8;background-image:none;color:rgba(0,0,0,.95)}.ui.label.visible,.ui.labels.visible .label{display:inline-block!important}.ui.label.hidden,.ui.labels.hidden .label{display:none!important}.ui.red.label,.ui.red.labels .label{background-color:#DB2828!important;border-color:#DB2828!important;color:#FFF!important}.ui.red.labels .label:hover,a.ui.red.label:hover{background-color:#d01919!important;border-color:#d01919!important;color:#FFF!important}.ui.red.corner.label,.ui.red.corner.label:hover{background-color:transparent!important}.ui.red.ribbon.label{border-color:#b21e1e!important}.ui.basic.red.label{background-color:#FFF!important;color:#DB2828!important;border-color:#DB2828!important}.ui.basic.red.labels a.label:hover,a.ui.basic.red.label:hover{background-color:#FFF!important;color:#d01919!important;border-color:#d01919!important}.ui.orange.label,.ui.orange.labels .label{background-color:#F2711C!important;border-color:#F2711C!important;color:#FFF!important}.ui.orange.labels .label:hover,a.ui.orange.label:hover{background-color:#f26202!important;border-color:#f26202!important;color:#FFF!important}.ui.orange.corner.label,.ui.orange.corner.label:hover{background-color:transparent!important}.ui.orange.ribbon.label{border-color:#cf590c!important}.ui.basic.orange.label{background-color:#FFF!important;color:#F2711C!important;border-color:#F2711C!important}.ui.basic.orange.labels a.label:hover,a.ui.basic.orange.label:hover{background-color:#FFF!important;color:#f26202!important;border-color:#f26202!important}.ui.yellow.label,.ui.yellow.labels .label{background-color:#FBBD08!important;border-color:#FBBD08!important;color:#FFF!important}.ui.yellow.labels .label:hover,a.ui.yellow.label:hover{background-color:#eaae00!important;border-color:#eaae00!important;color:#FFF!important}.ui.yellow.corner.label,.ui.yellow.corner.label:hover{background-color:transparent!important}.ui.yellow.ribbon.label{border-color:#cd9903!important}.ui.basic.yellow.label{background-color:#FFF!important;color:#FBBD08!important;border-color:#FBBD08!important}.ui.basic.yellow.labels a.label:hover,a.ui.basic.yellow.label:hover{background-color:#FFF!important;color:#eaae00!important;border-color:#eaae00!important}.ui.olive.label,.ui.olive.labels .label{background-color:#B5CC18!important;border-color:#B5CC18!important;color:#FFF!important}.ui.olive.labels .label:hover,a.ui.olive.label:hover{background-color:#a7bd0d!important;border-color:#a7bd0d!important;color:#FFF!important}.ui.olive.corner.label,.ui.olive.corner.label:hover{background-color:transparent!important}.ui.olive.ribbon.label{border-color:#198f35!important}.ui.basic.olive.label{background-color:#FFF!important;color:#B5CC18!important;border-color:#B5CC18!important}.ui.basic.olive.labels a.label:hover,a.ui.basic.olive.label:hover{background-color:#FFF!important;color:#a7bd0d!important;border-color:#a7bd0d!important}.ui.green.label,.ui.green.labels .label{background-color:#21BA45!important;border-color:#21BA45!important;color:#FFF!important}.ui.green.labels .label:hover,a.ui.green.label:hover{background-color:#16ab39!important;border-color:#16ab39!important;color:#FFF!important}.ui.green.corner.label,.ui.green.corner.label:hover{background-color:transparent!important}.ui.green.ribbon.label{border-color:#198f35!important}.ui.basic.green.label{background-color:#FFF!important;color:#21BA45!important;border-color:#21BA45!important}.ui.basic.green.labels a.label:hover,a.ui.basic.green.label:hover{background-color:#FFF!important;color:#16ab39!important;border-color:#16ab39!important}.ui.teal.label,.ui.teal.labels .label{background-color:#00B5AD!important;border-color:#00B5AD!important;color:#FFF!important}.ui.teal.labels .label:hover,a.ui.teal.label:hover{background-color:#009c95!important;border-color:#009c95!important;color:#FFF!important}.ui.teal.corner.label,.ui.teal.corner.label:hover{background-color:transparent!important}.ui.teal.ribbon.label{border-color:#00827c!important}.ui.basic.teal.label{background-color:#FFF!important;color:#00B5AD!important;border-color:#00B5AD!important}.ui.basic.teal.labels a.label:hover,a.ui.basic.teal.label:hover{background-color:#FFF!important;color:#009c95!important;border-color:#009c95!important}.ui.blue.label,.ui.blue.labels .label{background-color:#2185D0!important;border-color:#2185D0!important;color:#FFF!important}.ui.blue.labels .label:hover,a.ui.blue.label:hover{background-color:#1678c2!important;border-color:#1678c2!important;color:#FFF!important}.ui.blue.corner.label,.ui.blue.corner.label:hover{background-color:transparent!important}.ui.blue.ribbon.label{border-color:#1a69a4!important}.ui.basic.blue.label{background-color:#FFF!important;color:#2185D0!important;border-color:#2185D0!important}.ui.basic.blue.labels a.label:hover,a.ui.basic.blue.label:hover{background-color:#FFF!important;color:#1678c2!important;border-color:#1678c2!important}.ui.violet.label,.ui.violet.labels .label{background-color:#6435C9!important;border-color:#6435C9!important;color:#FFF!important}.ui.violet.labels .label:hover,a.ui.violet.label:hover{background-color:#5829bb!important;border-color:#5829bb!important;color:#FFF!important}.ui.violet.corner.label,.ui.violet.corner.label:hover{background-color:transparent!important}.ui.violet.ribbon.label{border-color:#502aa1!important}.ui.basic.violet.label{background-color:#FFF!important;color:#6435C9!important;border-color:#6435C9!important}.ui.basic.violet.labels a.label:hover,a.ui.basic.violet.label:hover{background-color:#FFF!important;color:#5829bb!important;border-color:#5829bb!important}.ui.purple.label,.ui.purple.labels .label{background-color:#A333C8!important;border-color:#A333C8!important;color:#FFF!important}.ui.purple.labels .label:hover,a.ui.purple.label:hover{background-color:#9627ba!important;border-color:#9627ba!important;color:#FFF!important}.ui.purple.corner.label,.ui.purple.corner.label:hover{background-color:transparent!important}.ui.purple.ribbon.label{border-color:#82299f!important}.ui.basic.purple.label{background-color:#FFF!important;color:#A333C8!important;border-color:#A333C8!important}.ui.basic.purple.labels a.label:hover,a.ui.basic.purple.label:hover{background-color:#FFF!important;color:#9627ba!important;border-color:#9627ba!important}.ui.pink.label,.ui.pink.labels .label{background-color:#E03997!important;border-color:#E03997!important;color:#FFF!important}.ui.pink.labels .label:hover,a.ui.pink.label:hover{background-color:#e61a8d!important;border-color:#e61a8d!important;color:#FFF!important}.ui.pink.corner.label,.ui.pink.corner.label:hover{background-color:transparent!important}.ui.pink.ribbon.label{border-color:#c71f7e!important}.ui.basic.pink.label{background-color:#FFF!important;color:#E03997!important;border-color:#E03997!important}.ui.basic.pink.labels a.label:hover,a.ui.basic.pink.label:hover{background-color:#FFF!important;color:#e61a8d!important;border-color:#e61a8d!important}.ui.brown.label,.ui.brown.labels .label{background-color:#A5673F!important;border-color:#A5673F!important;color:#FFF!important}.ui.brown.labels .label:hover,a.ui.brown.label:hover{background-color:#975b33!important;border-color:#975b33!important;color:#FFF!important}.ui.brown.corner.label,.ui.brown.corner.label:hover{background-color:transparent!important}.ui.brown.ribbon.label{border-color:#805031!important}.ui.basic.brown.label{background-color:#FFF!important;color:#A5673F!important;border-color:#A5673F!important}.ui.basic.brown.labels a.label:hover,a.ui.basic.brown.label:hover{background-color:#FFF!important;color:#975b33!important;border-color:#975b33!important}.ui.grey.label,.ui.grey.labels .label{background-color:#767676!important;border-color:#767676!important;color:#FFF!important}.ui.grey.labels .label:hover,a.ui.grey.label:hover{background-color:#838383!important;border-color:#838383!important;color:#FFF!important}.ui.grey.corner.label,.ui.grey.corner.label:hover{background-color:transparent!important}.ui.grey.ribbon.label{border-color:#805031!important}.ui.basic.grey.label{background-color:#FFF!important;color:#767676!important;border-color:#767676!important}.ui.basic.grey.labels a.label:hover,a.ui.basic.grey.label:hover{background-color:#FFF!important;color:#838383!important;border-color:#838383!important}.ui.black.label,.ui.black.labels .label{background-color:#1B1C1D!important;border-color:#1B1C1D!important;color:#FFF!important}.ui.black.labels .label:hover,a.ui.black.label:hover{background-color:#27292a!important;border-color:#27292a!important;color:#FFF!important}.ui.black.corner.label,.ui.black.corner.label:hover{background-color:transparent!important}.ui.black.ribbon.label{border-color:#805031!important}.ui.basic.black.label{background-color:#FFF!important;color:#1B1C1D!important;border-color:#1B1C1D!important}.ui.basic.black.labels a.label:hover,a.ui.basic.black.label:hover{background-color:#FFF!important;color:#27292a!important;border-color:#27292a!important}.ui.basic.label{background:#FFF;border:1px solid rgba(34,36,38,.15);color:rgba(0,0,0,.87);box-shadow:none}a.ui.basic.label:hover{text-decoration:none;background:#FFF;color:#1e70bf;box-shadow:1px solid rgba(34,36,38,.15);box-shadow:none}.ui.basic.pointing.label:before{border-color:inherit}.ui.fluid.labels>.label,.ui.label.fluid{width:100%;box-sizing:border-box}.ui.inverted.label,.ui.inverted.labels .label{color:rgba(255,255,255,.9)!important}.ui.horizontal.label,.ui.horizontal.labels .label{margin:0 .5em 0 0;padding:.4em .833em;min-width:3em;text-align:center}.ui.circular.label,.ui.circular.labels .label{min-width:2em;min-height:2em;padding:.5em!important;line-height:1em;text-align:center;border-radius:500rem}.ui.empty.circular.label,.ui.empty.circular.labels .label{min-width:0;min-height:0;overflow:hidden;width:.5em;height:.5em;vertical-align:baseline}.ui.pointing.label{position:relative}.ui.attached.pointing.label{position:absolute}.ui.pointing.label:before{background-color:inherit;border-style:solid;border-color:inherit;position:absolute;content:'';-webkit-transform:rotate(45deg);transform:rotate(45deg);background-image:none;z-index:2;width:.6666em;height:.6666em;-webkit-transition:background .1s ease;transition:background .1s ease}.ui.pointing.label,.ui[class*="pointing above"].label{margin-top:1em}.ui.pointing.label:before,.ui[class*="pointing above"].label:before{border-width:1px 0 0 1px;-webkit-transform:translateX(-50%) translateY(-50%) rotate(45deg);transform:translateX(-50%) translateY(-50%) rotate(45deg);top:0;left:50%}.ui[class*="bottom pointing"].label,.ui[class*="pointing below"].label{margin-top:0;margin-bottom:1em}.ui[class*="bottom pointing"].label:before,.ui[class*="pointing below"].label:before{border-width:0 1px 1px 0;right:auto;-webkit-transform:translateX(-50%) translateY(-50%) rotate(45deg);transform:translateX(-50%) translateY(-50%) rotate(45deg);top:100%;left:50%}.ui[class*="left pointing"].label{margin-top:0;margin-left:.6666em}.ui[class*="left pointing"].label:before{border-width:0 0 1px 1px;-webkit-transform:translateX(-50%) translateY(-50%) rotate(45deg);transform:translateX(-50%) translateY(-50%) rotate(45deg);bottom:auto;right:auto;top:50%;left:0}.ui[class*="right pointing"].label{margin-top:0;margin-right:.6666em}.ui[class*="right pointing"].label:before{border-width:1px 1px 0 0;-webkit-transform:translateX(50%) translateY(-50%) rotate(45deg);transform:translateX(50%) translateY(-50%) rotate(45deg);top:50%;right:0;bottom:auto;left:auto}.ui.basic.pointing.label:before,.ui.basic[class*="pointing above"].label:before{margin-top:-1px}.ui.basic[class*="bottom pointing"].label:before,.ui.basic[class*="pointing below"].label:before{bottom:auto;top:100%;margin-top:1px}.ui.basic[class*="left pointing"].label:before{top:50%;left:-1px}.ui.basic[class*="right pointing"].label:before{top:50%;right:-1px}.ui.floating.label{position:absolute;z-index:100;top:-1em;left:100%;margin:0 0 0 -1.5em!important}.ui.mini.label,.ui.mini.labels .label{font-size:.64285714rem}.ui.tiny.label,.ui.tiny.labels .label{font-size:.71428571rem}.ui.small.label,.ui.small.labels .label{font-size:.78571429rem}.ui.label,.ui.labels .label{font-size:.85714286rem}.ui.large.label,.ui.large.labels .label{font-size:1rem}.ui.big.label,.ui.big.labels .label{font-size:1.28571429rem}.ui.huge.label,.ui.huge.labels .label{font-size:1.42857143rem}.ui.massive.label,.ui.massive.labels .label{font-size:1.71428571rem}.ui.list,ol.ui.list,ul.ui.list{list-style-type:none;margin:1em 0;padding:0}.ui.list:first-child,ol.ui.list:first-child,ul.ui.list:first-child{margin-top:0;padding-top:0}.ui.list:last-child,ol.ui.list:last-child,ul.ui.list:last-child{margin-bottom:0;padding-bottom:0}.ui.list .list>.item,.ui.list>.item,ol.ui.list li,ul.ui.list li{display:list-item;table-layout:fixed;list-style-type:none;list-style-position:outside;padding:.21428571em 0;line-height:1.14285714em}.ui.list>.item:after,.ui.list>.list>.item,ol.ui.list>li:first-child:after,ul.ui.list>li:first-child:after{content:'';display:block;height:0;clear:both;visibility:hidden}.ui.list .list>.item:first-child,.ui.list>.item:first-child,ol.ui.list li:first-child,ul.ui.list li:first-child{padding-top:0}.ui.list .list>.item:last-child,.ui.list>.item:last-child,ol.ui.list li:last-child,ul.ui.list li:last-child{padding-bottom:0}.ui.list .list,ol.ui.list ol,ul.ui.list ul{clear:both;margin:0;padding:.75em 0 .25em .5em}.ui.list .list>.item,ol.ui.list ol li,ul.ui.list ul li{padding:.14285714em 0;line-height:inherit}.ui.list .list>.item>i.icon,.ui.list>.item>i.icon{display:table-cell;margin:0;padding-top:.07142857em;padding-right:.28571429em;vertical-align:top;-webkit-transition:color .1s ease;transition:color .1s ease}.ui.list .list>.item>i.icon:only-child,.ui.list>.item>i.icon:only-child{display:inline-block;vertical-align:top}.ui.list .list>.item>.image,.ui.list>.item>.image{display:table-cell;background-color:transparent;margin:0;vertical-align:top}.ui.list .list>.item>.image:not(:only-child):not(img),.ui.list>.item>.image:not(:only-child):not(img){padding-right:.5em}.ui.list .list>.item>.image img,.ui.list>.item>.image img{vertical-align:top}.ui.list .list>.item>.image:only-child,.ui.list .list>.item>img.image,.ui.list>.item>.image:only-child,.ui.list>.item>img.image{display:inline-block}.ui.list .list>.item>.content,.ui.list>.item>.content{line-height:1.14285714em}.ui.list .list>.item>.icon+.content,.ui.list .list>.item>.image+.content,.ui.list>.item>.icon+.content,.ui.list>.item>.image+.content{display:table-cell;padding:0 0 0 .5em;vertical-align:top}.ui.list .list>.item>img.image+.content,.ui.list>.item>img.image+.content{display:inline-block}.ui.list .list>.item>.content>.list,.ui.list>.item>.content>.list{margin-left:0;padding-left:0}.ui.list .list>.item .header,.ui.list>.item .header{display:block;margin:0;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-weight:700;color:rgba(0,0,0,.87)}.ui.list .list>.item .description,.ui.list>.item .description{display:block;color:rgba(0,0,0,.7)}.ui.list .list>.item a,.ui.list>.item a{cursor:pointer}.ui.list .list>a.item,.ui.list>a.item{cursor:pointer;color:#4183C4}.ui.list .list>a.item:hover,.ui.list>a.item:hover{color:#1e70bf}.ui.list .list>a.item i.icon,.ui.list>a.item i.icon{color:rgba(0,0,0,.4)}.ui.list .list>.item a.header,.ui.list>.item a.header{cursor:pointer;color:#4183C4!important}.ui.list .list>.item a.header:hover,.ui.list>.item a.header:hover{color:#1e70bf!important}.ui[class*="left floated"].list{float:left}.ui[class*="right floated"].list{float:right}.ui.list .list>.item [class*="left floated"],.ui.list>.item [class*="left floated"]{float:left;margin:0 1em 0 0}.ui.list .list>.item [class*="right floated"],.ui.list>.item [class*="right floated"]{float:right;margin:0 0 0 1em}.ui.menu .ui.list .list>.item,.ui.menu .ui.list>.item{display:list-item;table-layout:fixed;background-color:transparent;list-style-type:none;list-style-position:outside;padding:.21428571em 0;line-height:1.14285714em}.ui.menu .ui.list .list>.item:before,.ui.menu .ui.list>.item:before{border:none;background:0 0}.ui.menu .ui.list .list>.item:first-child,.ui.menu .ui.list>.item:first-child{padding-top:0}.ui.menu .ui.list .list>.item:last-child,.ui.menu .ui.list>.item:last-child{padding-bottom:0}.ui.horizontal.list{display:inline-block;font-size:0}.ui.horizontal.list>.item{display:inline-block;margin-left:1em;font-size:1rem}.ui.horizontal.list:not(.celled)>.item:first-child{margin-left:0!important;padding-left:0!important}.ui.horizontal.list .list{padding-left:0;padding-bottom:0}.ui.horizontal.list .list>.item>.content,.ui.horizontal.list .list>.item>.icon,.ui.horizontal.list .list>.item>.image,.ui.horizontal.list>.item>.content,.ui.horizontal.list>.item>.icon,.ui.horizontal.list>.item>.image{vertical-align:middle}.ui.horizontal.list>.item:first-child,.ui.horizontal.list>.item:last-child{padding-top:.21428571em;padding-bottom:.21428571em}.ui.horizontal.list>.item>i.icon{margin:0;padding:0 .25em 0 0}.ui.horizontal.list>.item>.icon,.ui.horizontal.list>.item>.icon+.content{float:none;display:inline-block}.ui.list .list>.disabled.item,.ui.list>.disabled.item{pointer-events:none;color:rgba(40,40,40,.3)!important}.ui.inverted.list .list>.disabled.item,.ui.inverted.list>.disabled.item{color:rgba(225,225,225,.3)!important}.ui.list .list>a.item:hover .icon,.ui.list>a.item:hover .icon{color:rgba(0,0,0,.87)}.ui.inverted.list .list>a.item>.icon,.ui.inverted.list>a.item>.icon{color:rgba(255,255,255,.7)}.ui.inverted.list .list>.item .header,.ui.inverted.list>.item .header{color:rgba(255,255,255,.9)}.ui.inverted.list .list>.item .description,.ui.inverted.list>.item .description{color:rgba(255,255,255,.7)}.ui.inverted.list .list>a.item,.ui.inverted.list>a.item{cursor:pointer;color:rgba(255,255,255,.9)}.ui.inverted.list .list>a.item:hover,.ui.inverted.list>a.item:hover{color:#1e70bf}.ui.inverted.list .item a:not(.ui){color:rgba(255,255,255,.9)!important}.ui.inverted.list .item a:not(.ui):hover{color:#1e70bf!important}.ui.list [class*="top aligned"],.ui.list[class*="top aligned"] .content,.ui.list[class*="top aligned"] .image{vertical-align:top!important}.ui.list [class*="middle aligned"],.ui.list[class*="middle aligned"] .content,.ui.list[class*="middle aligned"] .image{vertical-align:middle!important}.ui.list [class*="bottom aligned"],.ui.list[class*="bottom aligned"] .content,.ui.list[class*="bottom aligned"] .image{vertical-align:bottom!important}.ui.link.list .item,.ui.link.list .item a:not(.ui),.ui.link.list a.item{color:rgba(0,0,0,.4);-webkit-transition:.1s color ease;transition:.1s color ease}.ui.link.list .item a:not(.ui):hover,.ui.link.list a.item:hover{color:rgba(0,0,0,.8)}.ui.link.list .item a:not(.ui):active,.ui.link.list a.item:active{color:rgba(0,0,0,.9)}.ui.link.list .active.item,.ui.link.list .active.item a:not(.ui){color:rgba(0,0,0,.95)}.ui.inverted.link.list .item,.ui.inverted.link.list .item a:not(.ui),.ui.inverted.link.list a.item{color:rgba(255,255,255,.5)}.ui.inverted.link.list .active.item a:not(.ui),.ui.inverted.link.list .item a:not(.ui):active,.ui.inverted.link.list .item a:not(.ui):hover,.ui.inverted.link.list a.active.item,.ui.inverted.link.list a.item:active,.ui.inverted.link.list a.item:hover{color:#fff}.ui.selection.list .list>.item,.ui.selection.list>.item{cursor:pointer;background:0 0;padding:.5em;margin:0;color:rgba(0,0,0,.4);border-radius:.5em;-webkit-transition:.1s color ease,.1s padding-left ease,.1s background-color ease;transition:.1s color ease,.1s padding-left ease,.1s background-color ease}.ui.selection.list .list>.item:last-child,.ui.selection.list>.item:last-child{margin-bottom:0}.ui.selection.list.list>.item:hover,.ui.selection.list>.item:hover{background:rgba(0,0,0,.03);color:rgba(0,0,0,.8)}.ui.selection.list .list>.item:active,.ui.selection.list>.item:active{background:rgba(0,0,0,.05);color:rgba(0,0,0,.9)}.ui.selection.list .list>.item.active,.ui.selection.list>.item.active{background:rgba(0,0,0,.05);color:rgba(0,0,0,.95)}.ui.inverted.selection.list>.item{background:0 0;color:rgba(255,255,255,.5)}.ui.inverted.selection.list>.item:hover{background:rgba(255,255,255,.02);color:#fff}.ui.inverted.selection.list>.item.active,.ui.inverted.selection.list>.item:active{background:rgba(255,255,255,.08);color:#fff}.ui.celled.selection.list .list>.item,.ui.celled.selection.list>.item,.ui.divided.selection.list .list>.item,.ui.divided.selection.list>.item{border-radius:0}.ui.animated.list>.item{-webkit-transition:.25s color ease .1s,.25s padding-left ease .1s,.25s background-color ease .1s;transition:.25s color ease .1s,.25s padding-left ease .1s,.25s background-color ease .1s}.ui.animated.list:not(.horizontal)>.item:hover{padding-left:1em}.ui.fitted.list:not(.selection) .list>.item,.ui.fitted.list:not(.selection)>.item{padding-left:0;padding-right:0}.ui.fitted.selection.list .list>.item,.ui.fitted.selection.list>.item{margin-left:-.5em;margin-right:-.5em}.ui.bulleted.list,ul.ui.list{margin-left:1.25rem}.ui.bulleted.list .list>.item,.ui.bulleted.list>.item,ul.ui.list li{position:relative}.ui.bulleted.list .list>.item:before,.ui.bulleted.list>.item:before,ul.ui.list li:before{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none;position:absolute;top:auto;left:auto;font-weight:400;margin-left:-1.25rem;content:'•';opacity:1;color:inherit;vertical-align:top}.ui.bulleted.list .list>a.item:before,.ui.bulleted.list>a.item:before,ul.ui.list li:before{color:rgba(0,0,0,.87)}.ui.bulleted.list .list,ul.ui.list ul{padding-left:1.25rem}.ui.horizontal.bulleted.list,ul.ui.horizontal.bulleted.list{margin-left:0}.ui.horizontal.bulleted.list>.item,ul.ui.horizontal.bulleted.list li{margin-left:1.75rem}.ui.horizontal.bulleted.list>.item:first-child,ul.ui.horizontal.bulleted.list li:first-child{margin-left:0}.ui.horizontal.bulleted.list>.item::before,ul.ui.horizontal.bulleted.list li::before{color:rgba(0,0,0,.87)}.ui.horizontal.bulleted.list>.item:first-child::before,ul.ui.horizontal.bulleted.list li:first-child::before{display:none}.ui.ordered.list,.ui.ordered.list .list,ol.ui.list,ol.ui.list ol{counter-reset:ordered;margin-left:1.25rem;list-style-type:none}.ui.ordered.list .list>.item,.ui.ordered.list>.item,ol.ui.list li{list-style-type:none;position:relative}.ui.ordered.list .list>.item:before,.ui.ordered.list>.item:before,ol.ui.list li:before{position:absolute;top:auto;left:auto;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none;margin-left:-1.25rem;counter-increment:ordered;content:counters(ordered,".") " ";text-align:right;color:rgba(0,0,0,.87);vertical-align:middle;opacity:.8}.ui.ordered.inverted.list .list>.item:before,.ui.ordered.inverted.list>.item:before,ol.ui.inverted.list li:before{color:rgba(255,255,255,.7)}.ui.ordered.list>.item[data-value],.ui.ordered.list>.list>.item[data-value]{content:attr(data-value)}ol.ui.list li[value]:before{content:attr(value)}.ui.ordered.list .list,ol.ui.list ol{margin-left:1em}.ui.ordered.list .list>.item:before,ol.ui.list ol li:before{margin-left:-2em}.ui.ordered.horizontal.list,ol.ui.horizontal.list{margin-left:0}.ui.ordered.horizontal.list .list>.item:before,.ui.ordered.horizontal.list>.item:before,ol.ui.horizontal.list li:before{position:static;margin:0 .5em 0 0}.ui.divided.list>.item{border-top:1px solid rgba(34,36,38,.15)}.ui.divided.list .item .list>.item,.ui.divided.list .list>.item,.ui.divided.list .list>.item:first-child,.ui.divided.list>.item:first-child{border-top:none}.ui.divided.list:not(.horizontal) .list>.item:first-child{border-top-width:1px}.ui.divided.bulleted.list .list,.ui.divided.bulleted.list:not(.horizontal){margin-left:0;padding-left:0}.ui.divided.bulleted.list>.item:not(.horizontal){padding-left:1.25rem}.ui.divided.ordered.list{margin-left:0}.ui.divided.ordered.list .list>.item,.ui.divided.ordered.list>.item{padding-left:1.25rem}.ui.divided.ordered.list .item .list{margin-left:0;margin-right:0;padding-bottom:.21428571em}.ui.divided.ordered.list .item .list>.item{padding-left:1em}.ui.divided.selection.list .list>.item,.ui.divided.selection.list>.item{margin:0;border-radius:0}.ui.divided.horizontal.list{margin-left:0}.ui.divided.horizontal.list>.item:not(:first-child){padding-left:.5em}.ui.divided.horizontal.list>.item:not(:last-child){padding-right:.5em}.ui.divided.horizontal.list>.item{border-top:none;border-left:1px solid rgba(34,36,38,.15);margin:0;line-height:.6}.ui.horizontal.divided.list>.item:first-child{border-left:none}.ui.divided.inverted.horizontal.list>.item,.ui.divided.inverted.list>.item,.ui.divided.inverted.list>.list{border-color:rgba(255,255,255,.1)}.ui.celled.list>.item,.ui.celled.list>.list{border-top:1px solid rgba(34,36,38,.15);padding-left:.5em;padding-right:.5em}.ui.celled.list>.item:last-child{border-bottom:1px solid rgba(34,36,38,.15)}.ui.celled.list>.item:first-child,.ui.celled.list>.item:last-child{padding-top:.21428571em;padding-bottom:.21428571em}.ui.celled.list .item .list>.item{border-width:0}.ui.celled.list .list>.item:first-child{border-top-width:0}.ui.celled.bulleted.list{margin-left:0}.ui.celled.bulleted.list .list>.item,.ui.celled.bulleted.list>.item{padding-left:1.25rem}.ui.celled.bulleted.list .item .list{margin-left:-1.25rem;margin-right:-1.25rem;padding-bottom:.21428571em}.ui.celled.ordered.list{margin-left:0}.ui.celled.ordered.list .list>.item,.ui.celled.ordered.list>.item{padding-left:1.25rem}.ui.celled.ordered.list .item .list{margin-left:0;margin-right:0;padding-bottom:.21428571em}.ui.celled.ordered.list .list>.item{padding-left:1em}.ui.horizontal.celled.list{margin-left:0}.ui.horizontal.celled.list .list>.item,.ui.horizontal.celled.list>.item{border-top:none;border-left:1px solid rgba(34,36,38,.15);margin:0;padding-left:.5em;padding-right:.5em;line-height:.6}.ui.horizontal.celled.list .list>.item:last-child,.ui.horizontal.celled.list>.item:last-child{border-bottom:none;border-right:1px solid rgba(34,36,38,.15)}.ui.celled.inverted.horizontal.list .list>.item,.ui.celled.inverted.horizontal.list>.item,.ui.celled.inverted.list>.item,.ui.celled.inverted.list>.list{border-color:1px solid rgba(255,255,255,.1)}.ui.relaxed.list:not(.horizontal)>.item:not(:first-child){padding-top:.42857143em}.ui.relaxed.list:not(.horizontal)>.item:not(:last-child){padding-bottom:.42857143em}.ui.horizontal.relaxed.list .list>.item:not(:first-child),.ui.horizontal.relaxed.list>.item:not(:first-child){padding-left:1rem}.ui.horizontal.relaxed.list .list>.item:not(:last-child),.ui.horizontal.relaxed.list>.item:not(:last-child){padding-right:1rem}.ui[class*="very relaxed"].list:not(.horizontal)>.item:not(:first-child){padding-top:.85714286em}.ui[class*="very relaxed"].list:not(.horizontal)>.item:not(:last-child){padding-bottom:.85714286em}.ui.horizontal[class*="very relaxed"].list .list>.item:not(:first-child),.ui.horizontal[class*="very relaxed"].list>.item:not(:first-child){padding-left:1.5rem}.ui.horizontal[class*="very relaxed"].list .list>.item:not(:last-child),.ui.horizontal[class*="very relaxed"].list>.item:not(:last-child){padding-right:1.5rem}.ui.mini.list{font-size:.78571429em}.ui.tiny.list{font-size:.85714286em}.ui.small.list{font-size:.92857143em}.ui.list{font-size:1em}.ui.large.list{font-size:1.14285714em}.ui.big.list{font-size:1.28571429em}.ui.huge.list{font-size:1.42857143em}.ui.massive.list{font-size:1.71428571em}.ui.mini.horizontal.list .list>.item,.ui.mini.horizontal.list>.item{font-size:.78571429rem}.ui.tiny.horizontal.list .list>.item,.ui.tiny.horizontal.list>.item{font-size:.85714286rem}.ui.small.horizontal.list .list>.item,.ui.small.horizontal.list>.item{font-size:.92857143rem}.ui.horizontal.list .list>.item,.ui.horizontal.list>.item{font-size:1rem}.ui.large.horizontal.list .list>.item,.ui.large.horizontal.list>.item{font-size:1.14285714rem}.ui.big.horizontal.list .list>.item,.ui.big.horizontal.list>.item{font-size:1.28571429rem}.ui.huge.horizontal.list .list>.item,.ui.huge.horizontal.list>.item{font-size:1.42857143rem}.ui.massive.horizontal.list .list>.item,.ui.massive.horizontal.list>.item{font-size:1.71428571rem}.ui.loader{display:none;position:absolute;top:50%;left:50%;margin:0;text-align:center;z-index:1000;-webkit-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.ui.loader:before{position:absolute;content:'';top:0;left:50%;border-radius:500rem;border:.2em solid rgba(0,0,0,.1)}.ui.loader:after{position:absolute;content:'';top:0;left:50%;-webkit-animation:loader .6s linear;animation:loader .6s linear;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;border-radius:500rem;border-color:#767676 transparent transparent;border-style:solid;border-width:.2em;box-shadow:0 0 0 1px transparent}@-webkit-keyframes loader{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes loader{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.ui.mini.loader:after,.ui.mini.loader:before{width:1rem;height:1rem;margin:0 0 0 -.5rem}.ui.tiny.loader:after,.ui.tiny.loader:before{width:1.14285714rem;height:1.14285714rem;margin:0 0 0 -.57142857rem}.ui.small.loader:after,.ui.small.loader:before{width:1.71428571rem;height:1.71428571rem;margin:0 0 0 -.85714286rem}.ui.loader:after,.ui.loader:before{width:2.28571429rem;height:2.28571429rem;margin:0 0 0 -1.14285714rem}.ui.large.loader:after,.ui.large.loader:before{width:3.42857143rem;height:3.42857143rem;margin:0 0 0 -1.71428571rem}.ui.big.loader:after,.ui.big.loader:before{width:3.71428571rem;height:3.71428571rem;margin:0 0 0 -1.85714286rem}.ui.huge.loader:after,.ui.huge.loader:before{width:4.14285714rem;height:4.14285714rem;margin:0 0 0 -2.07142857rem}.ui.massive.loader:after,.ui.massive.loader:before{width:4.57142857rem;height:4.57142857rem;margin:0 0 0 -2.28571429rem}.ui.dimmer .loader{display:block}.ui.dimmer .ui.loader{color:rgba(255,255,255,.9)}.ui.dimmer .ui.loader:before{border-color:rgba(255,255,255,.15)}.ui.dimmer .ui.loader:after{border-color:#FFF transparent transparent}.ui.inverted.dimmer .ui.loader{color:rgba(0,0,0,.87)}.ui.inverted.dimmer .ui.loader:before{border-color:rgba(0,0,0,.1)}.ui.inverted.dimmer .ui.loader:after{border-color:#767676 transparent transparent}.ui.text.loader{width:auto!important;height:auto!important;text-align:center;font-style:normal}.ui.indeterminate.loader:after{-webkit-animation-direction:reverse;animation-direction:reverse;-webkit-animation-duration:1.2s;animation-duration:1.2s}.ui.loader.active,.ui.loader.visible{display:block}.ui.loader.disabled,.ui.loader.hidden{display:none}.ui.inverted.dimmer .ui.mini.loader,.ui.mini.loader{width:1rem;height:1rem;font-size:.78571429em}.ui.inverted.dimmer .ui.tiny.loader,.ui.tiny.loader{width:1.14285714rem;height:1.14285714rem;font-size:.85714286em}.ui.inverted.dimmer .ui.small.loader,.ui.small.loader{width:1.71428571rem;height:1.71428571rem;font-size:.92857143em}.ui.inverted.dimmer .ui.loader,.ui.loader{width:2.28571429rem;height:2.28571429rem;font-size:1em}.ui.inverted.dimmer .ui.large.loader,.ui.large.loader{width:3.42857143rem;height:3.42857143rem;font-size:1.14285714em}.ui.big.loader,.ui.inverted.dimmer .ui.big.loader{width:3.71428571rem;height:3.71428571rem;font-size:1.28571429em}.ui.huge.loader,.ui.inverted.dimmer .ui.huge.loader{width:4.14285714rem;height:4.14285714rem;font-size:1.42857143em}.ui.inverted.dimmer .ui.massive.loader,.ui.massive.loader{width:4.57142857rem;height:4.57142857rem;font-size:1.71428571em}.ui.mini.text.loader{min-width:1rem;padding-top:1.78571429rem}.ui.tiny.text.loader{min-width:1.14285714rem;padding-top:1.92857143rem}.ui.small.text.loader{min-width:1.71428571rem;padding-top:2.5rem}.ui.text.loader{min-width:2.28571429rem;padding-top:3.07142857rem}.ui.large.text.loader{min-width:3.42857143rem;padding-top:4.21428571rem}.ui.big.text.loader{min-width:3.71428571rem;padding-top:4.5rem}.ui.huge.text.loader{min-width:4.14285714rem;padding-top:4.92857143rem}.ui.massive.text.loader{min-width:4.57142857rem;padding-top:5.35714286rem}.ui.inverted.loader{color:rgba(255,255,255,.9)}.ui.inverted.loader:before{border-color:rgba(255,255,255,.15)}.ui.inverted.loader:after{border-top-color:#FFF}.ui.inline.loader{position:relative;vertical-align:middle;margin:0;left:0;top:0;-webkit-transform:none;transform:none}.ui.inline.loader.active,.ui.inline.loader.visible{display:inline-block}.ui.centered.inline.loader.active,.ui.centered.inline.loader.visible{display:block;margin-left:auto;margin-right:auto}.ui.rail{position:absolute;top:0;width:300px;height:100%}.ui.left.rail{left:auto;right:100%;padding:0 2rem 0 0;margin:0 2rem 0 0}.ui.right.rail{left:100%;right:auto;padding:0 0 0 2rem;margin:0 0 0 2rem}.ui.left.internal.rail{left:0;right:auto;padding:0 0 0 2rem;margin:0 0 0 2rem}.ui.right.internal.rail{left:auto;right:0;padding:0 2rem 0 0;margin:0 2rem 0 0}.ui.dividing.rail{width:302.5px}.ui.left.dividing.rail{padding:0 2.5rem 0 0;margin:0 2.5rem 0 0;border-right:1px solid rgba(34,36,38,.15)}.ui.right.dividing.rail{border-left:1px solid rgba(34,36,38,.15);padding:0 0 0 2.5rem;margin:0 0 0 2.5rem}.ui.close.rail{width:calc(300px + 1em)}.ui.close.left.rail{padding:0 1em 0 0;margin:0 1em 0 0}.ui.close.right.rail{padding:0 0 0 1em;margin:0 0 0 1em}.ui.very.close.rail{width:calc(300px + .5em)}.ui.very.close.left.rail{padding:0 .5em 0 0;margin:0 .5em 0 0}.ui.very.close.right.rail{padding:0 0 0 .5em;margin:0 0 0 .5em}.ui.attached.left.rail,.ui.attached.right.rail{padding:0;margin:0}.ui.mini.rail{font-size:.78571429rem}.ui.tiny.rail{font-size:.85714286rem}.ui.small.rail{font-size:.92857143rem}.ui.rail{font-size:1rem}.ui.large.rail{font-size:1.14285714rem}.ui.big.rail{font-size:1.28571429rem}.ui.huge.rail{font-size:1.42857143rem}.ui.massive.rail{font-size:1.71428571rem}.ui.reveal{display:inherit;position:relative!important;font-size:0!important}.ui.reveal>.visible.content{position:absolute!important;top:0!important;left:0!important;z-index:3!important;-webkit-transition:all .5s ease .1s;transition:all .5s ease .1s}.ui.reveal>.hidden.content{position:relative!important;z-index:2!important}.ui.active.reveal .visible.content,.ui.reveal:hover .visible.content{z-index:4!important}.ui.slide.reveal{position:relative!important;overflow:hidden!important;white-space:nowrap}.ui.slide.reveal>.content{display:block;width:100%;float:left;margin:0;-webkit-transition:-webkit-transform .5s ease .1s;transition:-webkit-transform .5s ease .1s;transition:transform .5s ease .1s;transition:transform .5s ease .1s,-webkit-transform .5s ease .1s}.ui.slide.reveal>.visible.content{position:relative!important}.ui.slide.reveal>.hidden.content{position:absolute!important;left:0!important;width:100%!important;-webkit-transform:translateX(100%)!important;transform:translateX(100%)!important}.ui.slide.active.reveal>.visible.content,.ui.slide.reveal:hover>.visible.content{-webkit-transform:translateX(-100%)!important;transform:translateX(-100%)!important}.ui.slide.active.reveal>.hidden.content,.ui.slide.reveal:hover>.hidden.content,.ui.slide.right.reveal>.visible.content{-webkit-transform:translateX(0)!important;transform:translateX(0)!important}.ui.slide.right.reveal>.hidden.content{-webkit-transform:translateX(-100%)!important;transform:translateX(-100%)!important}.ui.slide.right.active.reveal>.visible.content,.ui.slide.right.reveal:hover>.visible.content{-webkit-transform:translateX(100%)!important;transform:translateX(100%)!important}.ui.slide.right.active.reveal>.hidden.content,.ui.slide.right.reveal:hover>.hidden.content{-webkit-transform:translateX(0)!important;transform:translateX(0)!important}.ui.slide.up.reveal>.hidden.content{-webkit-transform:translateY(100%)!important;transform:translateY(100%)!important}.ui.slide.up.active.reveal>.visible.content,.ui.slide.up.reveal:hover>.visible.content{-webkit-transform:translateY(-100%)!important;transform:translateY(-100%)!important}.ui.slide.up.active.reveal>.hidden.content,.ui.slide.up.reveal:hover>.hidden.content{-webkit-transform:translateY(0)!important;transform:translateY(0)!important}.ui.slide.down.reveal>.hidden.content{-webkit-transform:translateY(-100%)!important;transform:translateY(-100%)!important}.ui.slide.down.active.reveal>.visible.content,.ui.slide.down.reveal:hover>.visible.content{-webkit-transform:translateY(100%)!important;transform:translateY(100%)!important}.ui.slide.down.active.reveal>.hidden.content,.ui.slide.down.reveal:hover>.hidden.content{-webkit-transform:translateY(0)!important;transform:translateY(0)!important}.ui.fade.reveal>.visible.content{opacity:1}.ui.fade.active.reveal>.visible.content,.ui.fade.reveal:hover>.visible.content{opacity:0}.ui.move.reveal{position:relative!important;overflow:hidden!important;white-space:nowrap}.ui.move.reveal>.content{display:block;float:left;margin:0;-webkit-transition:-webkit-transform .5s cubic-bezier(.175,.885,.32,1) .1s;transition:-webkit-transform .5s cubic-bezier(.175,.885,.32,1) .1s;transition:transform .5s cubic-bezier(.175,.885,.32,1) .1s;transition:transform .5s cubic-bezier(.175,.885,.32,1) .1s,-webkit-transform .5s cubic-bezier(.175,.885,.32,1) .1s}.ui.move.reveal>.visible.content{position:relative!important}.ui.move.reveal>.hidden.content{position:absolute!important;left:0!important;width:100%!important}.ui.move.active.reveal>.visible.content,.ui.move.reveal:hover>.visible.content{-webkit-transform:translateX(-100%)!important;transform:translateX(-100%)!important}.ui.move.right.active.reveal>.visible.content,.ui.move.right.reveal:hover>.visible.content{-webkit-transform:translateX(100%)!important;transform:translateX(100%)!important}.ui.move.up.active.reveal>.visible.content,.ui.move.up.reveal:hover>.visible.content{-webkit-transform:translateY(-100%)!important;transform:translateY(-100%)!important}.ui.move.down.active.reveal>.visible.content,.ui.move.down.reveal:hover>.visible.content{-webkit-transform:translateY(100%)!important;transform:translateY(100%)!important}.ui.rotate.reveal>.visible.content{-webkit-transition-duration:.5s;transition-duration:.5s;-webkit-transform:rotate(0);transform:rotate(0)}.ui.rotate.reveal>.visible.content,.ui.rotate.right.reveal>.visible.content{-webkit-transform-origin:bottom right;transform-origin:bottom right}.ui.rotate.active.reveal>.visible.content,.ui.rotate.reveal:hover>.visible.content,.ui.rotate.right.active.reveal>.visible.content,.ui.rotate.right.reveal:hover>.visible.content{-webkit-transform:rotate(110deg);transform:rotate(110deg)}.ui.rotate.left.reveal>.visible.content{-webkit-transform-origin:bottom left;transform-origin:bottom left}.ui.rotate.left.active.reveal>.visible.content,.ui.rotate.left.reveal:hover>.visible.content{-webkit-transform:rotate(-110deg);transform:rotate(-110deg)}.ui.disabled.reveal:hover>.visible.visible.content{position:static!important;display:block!important;opacity:1!important;top:0!important;left:0!important;right:auto!important;bottom:auto!important;-webkit-transform:none!important;transform:none!important}.ui.disabled.reveal:hover>.hidden.hidden.content{display:none!important}.ui.visible.reveal{overflow:visible}.ui.instant.reveal>.content{-webkit-transition-delay:0s!important;transition-delay:0s!important}.ui.reveal>.content{font-size:1rem!important}.ui.segment{position:relative;background:#FFF;box-shadow:0 1px 2px 0 rgba(34,36,38,.15);margin:1rem 0;padding:1em;border-radius:.28571429rem;border:1px solid rgba(34,36,38,.15)}.ui.segment:first-child{margin-top:0}.ui.segment:last-child{margin-bottom:0}.ui.vertical.segment{margin:0;padding-left:0;padding-right:0;background:none;border-radius:0;box-shadow:none;border:none;border-bottom:1px solid rgba(34,36,38,.15)}.ui.vertical.segment:last-child{border-bottom:none}.ui.inverted.segment>.ui.header{color:#FFF}.ui[class*="bottom attached"].segment>[class*="top attached"].label{border-top-left-radius:0;border-top-right-radius:0}.ui[class*="top attached"].segment>[class*="bottom attached"].label{border-bottom-left-radius:0;border-bottom-right-radius:0}.ui.attached.segment:not(.top):not(.bottom)>[class*="top attached"].label{border-top-left-radius:0;border-top-right-radius:0}.ui.attached.segment:not(.top):not(.bottom)>[class*="bottom attached"].label{border-bottom-left-radius:0;border-bottom-right-radius:0}.ui.grid>.row>.ui.segment.column,.ui.grid>.ui.segment.column,.ui.page.grid.segment{padding-top:2em;padding-bottom:2em}.ui.grid.segment{margin:1rem 0;border-radius:.28571429rem}.ui.basic.table.segment{background:#FFF;border:1px solid rgba(34,36,38,.15);box-shadow:0 1px 2px 0 rgba(34,36,38,.15)}.ui[class*="very basic"].table.segment{padding:1em}.ui.piled.segment,.ui.piled.segments{margin:3em 0;box-shadow:'';z-index:auto}.ui.piled.segment:first-child{margin-top:0}.ui.piled.segment:last-child{margin-bottom:0}.ui.piled.segment:after,.ui.piled.segment:before,.ui.piled.segments:after,.ui.piled.segments:before{background-color:#FFF;visibility:visible;content:'';display:block;height:100%;left:0;position:absolute;width:100%;border:1px solid rgba(34,36,38,.15);box-shadow:''}.ui.piled.segment:before,.ui.piled.segments:before{-webkit-transform:rotate(-1.2deg);transform:rotate(-1.2deg);top:0;z-index:-2}.ui.piled.segment:after,.ui.piled.segments:after{-webkit-transform:rotate(1.2deg);transform:rotate(1.2deg);top:0;z-index:-1}.ui[class*="top attached"].piled.segment{margin-top:3em;margin-bottom:0}.ui.piled.segment[class*="top attached"]:first-child{margin-top:0}.ui.piled.segment[class*="bottom attached"]{margin-top:0;margin-bottom:3em}.ui.piled.segment[class*="bottom attached"]:last-child{margin-bottom:0}.ui.stacked.segment{padding-bottom:1.4em}.ui.stacked.segment:after,.ui.stacked.segment:before,.ui.stacked.segments:after,.ui.stacked.segments:before{content:'';position:absolute;bottom:-3px;left:0;border-top:1px solid rgba(34,36,38,.15);background:rgba(0,0,0,.03);width:100%;height:6px;visibility:visible}.ui.stacked.segment:before,.ui.stacked.segments:before{display:none}.ui.tall.stacked.segment:before,.ui.tall.stacked.segments:before{display:block;bottom:0}.ui.stacked.inverted.segment:after,.ui.stacked.inverted.segment:before,.ui.stacked.inverted.segments:after,.ui.stacked.inverted.segments:before{background-color:rgba(0,0,0,.03);border-top:1px solid rgba(34,36,38,.35)}.ui.padded.segment{padding:1.5em}.ui[class*="very padded"].segment{padding:3em}.ui.compact.segment{display:table}.ui.compact.segments{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex}.ui.compact.segments .segment,.ui.segments .compact.segment{display:block;-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto}.ui.circular.segment{display:table-cell;padding:2em;text-align:center;vertical-align:middle;border-radius:500em}.ui.raised.segment,.ui.raised.segments{box-shadow:0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.15)}.ui.segments{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;position:relative;margin:1rem 0;border:1px solid rgba(34,36,38,.15);box-shadow:0 1px 2px 0 rgba(34,36,38,.15);border-radius:.28571429rem}.ui.segments:first-child{margin-top:0}.ui.segments:last-child{margin-bottom:0}.ui.segments>.segment{top:0;bottom:0;border-radius:0;margin:0;width:auto;box-shadow:none;border:none;border-top:1px solid rgba(34,36,38,.15)}.ui.segments:not(.horizontal)>.segment:first-child{border-top:none;margin-top:0;bottom:0;margin-bottom:0;top:0;border-radius:.28571429rem .28571429rem 0 0}.ui.segments:not(.horizontal)>.segment:last-child{top:0;bottom:0;margin-top:0;margin-bottom:0;box-shadow:0 1px 2px 0 rgba(34,36,38,.15),none;border-radius:0 0 .28571429rem .28571429rem}.ui.segments:not(.horizontal)>.segment:only-child{border-radius:.28571429rem}.ui.segments>.ui.segments{border-top:1px solid rgba(34,36,38,.15);margin:1rem}.ui.segments>.segments:first-child{border-top:none}.ui.segments>.segment+.segments:not(.horizontal){margin-top:0}.ui.horizontal.segments{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;padding:0;background-color:#FFF;box-shadow:0 1px 2px 0 rgba(34,36,38,.15);margin:1rem 0;border-radius:.28571429rem;border:1px solid rgba(34,36,38,.15)}.ui.segments>.horizontal.segments{margin:0;background-color:transparent;border-radius:0;border:none;box-shadow:none;border-top:1px solid rgba(34,36,38,.15)}.ui.horizontal.segments>.segment{-webkit-box-flex:1;-webkit-flex:1 1 auto;flex:1 1 auto;-ms-flex:1 1 0px;margin:0;min-width:0;background-color:transparent;border-radius:0;border:none;box-shadow:none;border-left:1px solid rgba(34,36,38,.15)}.ui.segments>.horizontal.segments:first-child{border-top:none}.ui.horizontal.segments>.segment:first-child{border-left:none}.ui.disabled.segment{opacity:.45;color:rgba(40,40,40,.3)}.ui.loading.segment{position:relative;cursor:default;point-events:none;text-shadow:none!important;color:transparent!important;-webkit-transition:all 0s linear;transition:all 0s linear}.ui.loading.segment:before{position:absolute;content:'';top:0;left:0;background:rgba(255,255,255,.8);width:100%;height:100%;border-radius:.28571429rem;z-index:100}.ui.loading.segment:after{position:absolute;content:'';top:50%;left:50%;margin:-1.5em 0 0 -1.5em;width:3em;height:3em;-webkit-animation:segment-spin .6s linear;animation:segment-spin .6s linear;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;border-radius:500rem;border-color:#767676 rgba(0,0,0,.1) rgba(0,0,0,.1);border-style:solid;border-width:.2em;box-shadow:0 0 0 1px transparent;visibility:visible;z-index:101}@-webkit-keyframes segment-spin{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes segment-spin{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.ui.basic.segment{background:none;box-shadow:none;border:none;border-radius:0}.ui.clearing.segment:after{content:".";display:block;height:0;clear:both;visibility:hidden}.ui.red.segment:not(.inverted){border-top:2px solid #DB2828}.ui.inverted.red.segment{background-color:#DB2828!important;color:#FFF!important}.ui.orange.segment:not(.inverted){border-top:2px solid #F2711C}.ui.inverted.orange.segment{background-color:#F2711C!important;color:#FFF!important}.ui.yellow.segment:not(.inverted){border-top:2px solid #FBBD08}.ui.inverted.yellow.segment{background-color:#FBBD08!important;color:#FFF!important}.ui.olive.segment:not(.inverted){border-top:2px solid #B5CC18}.ui.inverted.olive.segment{background-color:#B5CC18!important;color:#FFF!important}.ui.green.segment:not(.inverted){border-top:2px solid #21BA45}.ui.inverted.green.segment{background-color:#21BA45!important;color:#FFF!important}.ui.teal.segment:not(.inverted){border-top:2px solid #00B5AD}.ui.inverted.teal.segment{background-color:#00B5AD!important;color:#FFF!important}.ui.blue.segment:not(.inverted){border-top:2px solid #2185D0}.ui.inverted.blue.segment{background-color:#2185D0!important;color:#FFF!important}.ui.violet.segment:not(.inverted){border-top:2px solid #6435C9}.ui.inverted.violet.segment{background-color:#6435C9!important;color:#FFF!important}.ui.purple.segment:not(.inverted){border-top:2px solid #A333C8}.ui.inverted.purple.segment{background-color:#A333C8!important;color:#FFF!important}.ui.pink.segment:not(.inverted){border-top:2px solid #E03997}.ui.inverted.pink.segment{background-color:#E03997!important;color:#FFF!important}.ui.brown.segment:not(.inverted){border-top:2px solid #A5673F}.ui.inverted.brown.segment{background-color:#A5673F!important;color:#FFF!important}.ui.grey.segment:not(.inverted){border-top:2px solid #767676}.ui.inverted.grey.segment{background-color:#767676!important;color:#FFF!important}.ui.black.segment:not(.inverted){border-top:2px solid #1B1C1D}.ui.inverted.black.segment{background-color:#1B1C1D!important;color:#FFF!important}.ui[class*="left aligned"].segment{text-align:left}.ui[class*="right aligned"].segment{text-align:right}.ui[class*="center aligned"].segment{text-align:center}.ui.floated.segment,.ui[class*="left floated"].segment{float:left;margin-right:1em}.ui[class*="right floated"].segment{float:right;margin-left:1em}.ui.inverted.segment{border:none;box-shadow:none}.ui.inverted.segment,.ui.primary.inverted.segment{background:#1B1C1D;color:rgba(255,255,255,.9)}.ui.inverted.segment .segment{color:rgba(0,0,0,.87)}.ui.inverted.segment .inverted.segment{color:rgba(255,255,255,.9)}.ui.inverted.attached.segment{border-color:#555}.ui.secondary.segment{background:#F3F4F5;color:rgba(0,0,0,.6)}.ui.secondary.inverted.segment{background:-webkit-linear-gradient(rgba(255,255,255,.2) 0,rgba(255,255,255,.2) 100%) #4c4f52;background:linear-gradient(rgba(255,255,255,.2) 0,rgba(255,255,255,.2) 100%) #4c4f52;color:rgba(255,255,255,.8)}.ui.tertiary.segment{background:#DCDDDE;color:rgba(0,0,0,.6)}.ui.tertiary.inverted.segment{background:-webkit-linear-gradient(rgba(255,255,255,.35) 0,rgba(255,255,255,.35) 100%) #717579;background:linear-gradient(rgba(255,255,255,.35) 0,rgba(255,255,255,.35) 100%) #717579;color:rgba(255,255,255,.8)}.ui.attached.segment{top:0;bottom:0;border-radius:0;margin:0 -1px;width:calc(100% + 2px);max-width:calc(100% + 2px);box-shadow:none;border:1px solid #D4D4D5}.ui.attached:not(.message)+.ui.attached.segment:not(.top){border-top:none}.ui[class*="top attached"].segment{bottom:0;margin-bottom:0;top:0;margin-top:1rem;border-radius:.28571429rem .28571429rem 0 0}.ui.segment[class*="top attached"]:first-child{margin-top:0}.ui.segment[class*="bottom attached"]{bottom:0;margin-top:0;top:0;margin-bottom:1rem;box-shadow:0 1px 2px 0 rgba(34,36,38,.15),none;border-radius:0 0 .28571429rem .28571429rem}.ui.segment[class*="bottom attached"]:last-child{margin-bottom:0}.ui.mini.segment,.ui.mini.segments .segment{font-size:.78571429rem}.ui.tiny.segment,.ui.tiny.segments .segment{font-size:.85714286rem}.ui.small.segment,.ui.small.segments .segment{font-size:.92857143rem}.ui.segment,.ui.segments .segment{font-size:1rem}.ui.large.segment,.ui.large.segments .segment{font-size:1.14285714rem}.ui.big.segment,.ui.big.segments .segment{font-size:1.28571429rem}.ui.huge.segment,.ui.huge.segments .segment{font-size:1.42857143rem}.ui.massive.segment,.ui.massive.segments .segment{font-size:1.71428571rem}.ui.steps{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;margin:1em 0;background:0 0;box-shadow:none;line-height:1.14285714em;border-radius:.28571429rem;border:1px solid rgba(34,36,38,.15)}.ui.steps:first-child{margin-top:0}.ui.steps:last-child{margin-bottom:0}.ui.steps .step{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;vertical-align:middle;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;margin:0;padding:1.14285714em 2em;background:#FFF;color:rgba(0,0,0,.87);box-shadow:none;border-radius:0;border:none;border-right:1px solid rgba(34,36,38,.15);-webkit-transition:background-color .1s ease,opacity .1s ease,color .1s ease,box-shadow .1s ease;transition:background-color .1s ease,opacity .1s ease,color .1s ease,box-shadow .1s ease}.ui.steps .step:after{position:absolute;z-index:2;content:'';top:50%;right:0;border:solid;background-color:#FFF;width:1.14285714em;height:1.14285714em;border-color:rgba(34,36,38,.15);border-width:0 1px 1px 0;-webkit-transition:background-color .1s ease,opacity .1s ease,color .1s ease,box-shadow .1s ease;transition:background-color .1s ease,opacity .1s ease,color .1s ease,box-shadow .1s ease;-webkit-transform:translateY(-50%) translateX(50%) rotate(-45deg);transform:translateY(-50%) translateX(50%) rotate(-45deg)}.ui.steps .step:first-child{padding-left:2em;border-radius:.28571429rem 0 0 .28571429rem}.ui.steps .step:last-child{border-radius:0 .28571429rem .28571429rem 0;border-right:none;margin-right:0}.ui.steps .step:only-child{border-radius:.28571429rem}.ui.steps .step .title{font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-size:1.14285714em;font-weight:700}.ui.steps .step>.title{width:100%}.ui.steps .step .description{font-weight:400;font-size:.92857143em;color:rgba(0,0,0,.87)}.ui.steps .step>.description{width:100%}.ui.steps .step .title~.description{margin-top:.25em}.ui.steps .step>.icon{line-height:1;font-size:2.5em;margin:0 1rem 0 0}.ui.steps .step>.icon,.ui.steps .step>.icon~.content{display:block;-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto;-webkit-align-self:middle;-ms-flex-item-align:middle;align-self:middle}.ui.steps .step>.icon~.content{-webkit-box-flex:1 0 auto;-webkit-flex-grow:1 0 auto;-ms-flex-positive:1 0 auto;flex-grow:1 0 auto}.ui.steps:not(.vertical) .step>.icon{width:auto}.ui.steps .link.step,.ui.steps a.step{cursor:pointer}.ui.ordered.steps{counter-reset:ordered}.ui.ordered.steps .step:before{display:block;position:static;text-align:center;content:counters(ordered,".");-webkit-align-self:middle;-ms-flex-item-align:middle;align-self:middle;margin-right:1rem;font-size:2.5em;counter-increment:ordered;font-family:inherit;font-weight:700}.ui.ordered.steps .step>*{display:block;-webkit-align-self:middle;-ms-flex-item-align:middle;align-self:middle}.ui.vertical.steps{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;overflow:visible}.ui.vertical.steps .step{-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start;border-radius:0;padding:1.14285714em 2em;border-right:none;border-bottom:1px solid rgba(34,36,38,.15)}.ui.vertical.steps .step:first-child{padding:1.14285714em 2em;border-radius:.28571429rem .28571429rem 0 0}.ui.vertical.steps .step:last-child{border-bottom:none;border-radius:0 0 .28571429rem .28571429rem}.ui.vertical.steps .step:only-child{border-radius:.28571429rem}.ui.vertical.steps .step:after{top:50%;right:0;border-width:0 1px 1px 0;display:none}.ui.vertical.steps .active.step:after{display:block}.ui.vertical.steps .step:last-child:after{display:none}.ui.vertical.steps .active.step:last-child:after{display:block}@media only screen and (max-width:767px){.ui.steps{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;overflow:visible;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.ui.steps .step{width:100%!important;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;border-radius:0;padding:1.14285714em 2em}.ui.steps .step:first-child{padding:1.14285714em 2em;border-radius:.28571429rem .28571429rem 0 0}.ui.steps .step:last-child{border-radius:0 0 .28571429rem .28571429rem}.ui.steps .step:after{display:none!important}.ui.steps .step .content{text-align:center}.ui.ordered.steps .step:before,.ui.steps .step>.icon{margin:0 0 1rem}}.ui.steps .link.step:hover,.ui.steps .link.step:hover::after,.ui.steps a.step:hover,.ui.steps a.step:hover::after{background:#F9FAFB;color:rgba(0,0,0,.8)}.ui.steps .link.step:active,.ui.steps .link.step:active::after,.ui.steps a.step:active,.ui.steps a.step:active::after{background:#F3F4F5;color:rgba(0,0,0,.9)}.ui.steps .step.active{cursor:auto;background:#F3F4F5}.ui.steps .step.active:after{background:#F3F4F5}.ui.steps .step.active .title{color:#4183C4}.ui.ordered.steps .step.active:before,.ui.steps .active.step .icon{color:rgba(0,0,0,.85)}.ui.steps .active.step:after,.ui.steps .step:after{display:block}.ui.steps .active.step:last-child:after,.ui.steps .step:last-child:after{display:none}.ui.steps .link.active.step:hover,.ui.steps .link.active.step:hover::after,.ui.steps a.active.step:hover,.ui.steps a.active.step:hover::after{cursor:pointer;background:#DCDDDE;color:rgba(0,0,0,.87)}.ui.ordered.steps .step.completed:before,.ui.steps .step.completed>.icon:before{color:#21BA45;font-family:Step;content:'\e800'}.ui.steps .disabled.step{cursor:auto;background:#FFF;pointer-events:none}.ui.steps .disabled.step,.ui.steps .disabled.step .description,.ui.steps .disabled.step .title{color:rgba(40,40,40,.3)}.ui.steps .disabled.step:after{background:#FFF}@media only screen and (max-width:991px){.ui[class*="tablet stackable"].steps{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;overflow:visible;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.ui[class*="tablet stackable"].steps .step{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;border-radius:0;padding:1.14285714em 2em}.ui[class*="tablet stackable"].steps .step:first-child{padding:1.14285714em 2em;border-radius:.28571429rem .28571429rem 0 0}.ui[class*="tablet stackable"].steps .step:last-child{border-radius:0 0 .28571429rem .28571429rem}.ui[class*="tablet stackable"].steps .step:after{display:none!important}.ui[class*="tablet stackable"].steps .step .content{text-align:center}.ui[class*="tablet stackable"].ordered.steps .step:before,.ui[class*="tablet stackable"].steps .step>.icon{margin:0 0 1rem}}.ui.fluid.steps{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%}.ui.attached.steps{width:calc(100% + 2px)!important;margin:0 -1px;max-width:calc(100% + 2px);border-radius:.28571429rem .28571429rem 0 0}.ui.attached.steps .step:first-child{border-radius:.28571429rem 0 0}.ui.attached.steps .step:last-child{border-radius:0 .28571429rem 0 0}.ui.bottom.attached.steps{margin:0 -1px;border-radius:0 0 .28571429rem .28571429rem}.ui.bottom.attached.steps .step:first-child{border-radius:0 0 0 .28571429rem}.ui.bottom.attached.steps .step:last-child{border-radius:0 0 .28571429rem}.ui.eight.steps,.ui.five.steps,.ui.four.steps,.ui.one.steps,.ui.seven.steps,.ui.six.steps,.ui.three.steps,.ui.two.steps{width:100%}.ui.eight.steps>.step,.ui.five.steps>.step,.ui.four.steps>.step,.ui.one.steps>.step,.ui.seven.steps>.step,.ui.six.steps>.step,.ui.three.steps>.step,.ui.two.steps>.step{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.ui.one.steps>.step{width:100%}.ui.two.steps>.step{width:50%}.ui.three.steps>.step{width:33.333%}.ui.four.steps>.step{width:25%}.ui.five.steps>.step{width:20%}.ui.six.steps>.step{width:16.666%}.ui.seven.steps>.step{width:14.285%}.ui.eight.steps>.step{width:12.5%}.ui.mini.step,.ui.mini.steps .step{font-size:.78571429rem}.ui.tiny.step,.ui.tiny.steps .step{font-size:.85714286rem}.ui.small.step,.ui.small.steps .step{font-size:.92857143rem}.ui.step,.ui.steps .step{font-size:1rem}.ui.large.step,.ui.large.steps .step{font-size:1.14285714rem}.ui.big.step,.ui.big.steps .step{font-size:1.28571429rem}.ui.huge.step,.ui.huge.steps .step{font-size:1.42857143rem}.ui.massive.step,.ui.massive.steps .step{font-size:1.71428571rem}@font-face{font-family:Step;src:url(data:application/x-font-ttf;charset=utf-8;;base64,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) format('truetype'),url(data:application/font-woff;charset=utf-8;base64,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) format('woff')}.ui.breadcrumb{line-height:1;display:inline-block;margin:0;vertical-align:middle}.ui.breadcrumb:first-child{margin-top:0}.ui.breadcrumb:last-child{margin-bottom:0}.ui.breadcrumb .divider{display:inline-block;opacity:.7;margin:0 .21428571rem;font-size:.92857143em;color:rgba(0,0,0,.4);vertical-align:baseline}.ui.breadcrumb a{color:#4183C4}.ui.breadcrumb a:hover{color:#1e70bf}.ui.breadcrumb .icon.divider{font-size:.85714286em;vertical-align:baseline}.ui.breadcrumb a.section{cursor:pointer}.ui.breadcrumb .section{display:inline-block;margin:0;padding:0}.ui.breadcrumb.segment{display:inline-block;padding:.78571429em 1em}.ui.breadcrumb .active.section{font-weight:700}.ui.mini.breadcrumb{font-size:.78571429rem}.ui.tiny.breadcrumb{font-size:.85714286rem}.ui.small.breadcrumb{font-size:.92857143rem}.ui.breadcrumb{font-size:1rem}.ui.large.breadcrumb{font-size:1.14285714rem}.ui.big.breadcrumb{font-size:1.28571429rem}.ui.huge.breadcrumb{font-size:1.42857143rem}.ui.massive.breadcrumb{font-size:1.71428571rem}.ui.form{position:relative;max-width:100%}.ui.form>p{margin:1em 0}.ui.form .field{clear:both;margin:0 0 1em}.ui.form .field:last-child,.ui.form .fields:last-child .field{margin-bottom:0}.ui.form .fields .field{clear:both;margin:0}.ui.form .field>label{display:block;margin:0 0 .28571429rem;color:rgba(0,0,0,.87);font-size:.92857143em;font-weight:700;text-transform:none}.ui.form input:not([type]),.ui.form input[type=text],.ui.form input[type=email],.ui.form input[type=search],.ui.form input[type=password],.ui.form input[type=date],.ui.form input[type=datetime-local],.ui.form input[type=tel],.ui.form input[type=time],.ui.form input[type=url],.ui.form input[type=number],.ui.form textarea{width:100%;vertical-align:top}.ui.form ::-webkit-datetime-edit,.ui.form ::-webkit-inner-spin-button{height:1.2142em}.ui.form input:not([type]),.ui.form input[type=text],.ui.form input[type=email],.ui.form input[type=search],.ui.form input[type=password],.ui.form input[type=date],.ui.form input[type=datetime-local],.ui.form input[type=tel],.ui.form input[type=time],.ui.form input[type=url],.ui.form input[type=number]{font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;margin:0;outline:0;-webkit-appearance:none;tap-highlight-color:rgba(255,255,255,0);line-height:1.2142em;padding:.67861429em 1em;font-size:1em;background:#FFF;border:1px solid rgba(34,36,38,.15);color:rgba(0,0,0,.87);border-radius:.28571429rem;box-shadow:0 0 0 0 transparent inset;-webkit-transition:color .1s ease,border-color .1s ease;transition:color .1s ease,border-color .1s ease}.ui.form textarea{margin:0;-webkit-appearance:none;tap-highlight-color:rgba(255,255,255,0);padding:.78571429em 1em;background:#FFF;border:1px solid rgba(34,36,38,.15);outline:0;color:rgba(0,0,0,.87);border-radius:.28571429rem;box-shadow:0 0 0 0 transparent inset;-webkit-transition:color .1s ease,border-color .1s ease;transition:color .1s ease,border-color .1s ease;font-size:1em;line-height:1.2857;resize:vertical}.ui.form textarea:not([rows]){height:12em;min-height:8em;max-height:24em}.ui.form input[type=checkbox],.ui.form textarea{vertical-align:top}.ui.form input.attached{width:auto}.ui.form select{display:block;height:auto;width:100%;background:#FFF;border:1px solid rgba(34,36,38,.15);border-radius:.28571429rem;box-shadow:0 0 0 0 transparent inset;padding:.62em 1em;color:rgba(0,0,0,.87);-webkit-transition:color .1s ease,border-color .1s ease;transition:color .1s ease,border-color .1s ease}.ui.form .field>.selection.dropdown{width:100%}.ui.form .field>.selection.dropdown>.dropdown.icon{float:right}.ui.form .inline.field>.selection.dropdown,.ui.form .inline.fields .field>.selection.dropdown{width:auto}.ui.form .inline.field>.selection.dropdown>.dropdown.icon,.ui.form .inline.fields .field>.selection.dropdown>.dropdown.icon{float:none}.ui.form .field .ui.input,.ui.form .fields .field .ui.input,.ui.form .wide.field .ui.input{width:100%}.ui.form .inline.field:not(.wide) .ui.input,.ui.form .inline.fields .field:not(.wide) .ui.input{width:auto;vertical-align:middle}.ui.form .field .ui.input input,.ui.form .fields .field .ui.input input{width:auto}.ui.form .eight.fields .ui.input input,.ui.form .five.fields .ui.input input,.ui.form .four.fields .ui.input input,.ui.form .nine.fields .ui.input input,.ui.form .seven.fields .ui.input input,.ui.form .six.fields .ui.input input,.ui.form .ten.fields .ui.input input,.ui.form .three.fields .ui.input input,.ui.form .two.fields .ui.input input,.ui.form .wide.field .ui.input input{-webkit-box-flex:1;-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;width:0}.ui.form .error.message,.ui.form .success.message,.ui.form .warning.message{display:none}.ui.form .message:first-child{margin-top:0}.ui.form .field .prompt.label{white-space:normal;background:#FFF!important;border:1px solid #E0B4B4!important;color:#9F3A38!important}.ui.form .inline.field .prompt,.ui.form .inline.fields .field .prompt{vertical-align:top;margin:-.25em 0 -.5em .5em}.ui.form .inline.field .prompt:before,.ui.form .inline.fields .field .prompt:before{border-width:0 0 1px 1px;bottom:auto;right:auto;top:50%;left:0}.ui.form .field.field input:-webkit-autofill{box-shadow:0 0 0 100px ivory inset!important;border-color:#E5DFA1!important}.ui.form .field.field input:-webkit-autofill:focus{box-shadow:0 0 0 100px ivory inset!important;border-color:#D5C315!important}.ui.form .error.error input:-webkit-autofill{box-shadow:0 0 0 100px #FFFAF0 inset!important;border-color:#E0B4B4!important}.ui.form ::-webkit-input-placeholder{color:rgba(191,191,191,.87)}.ui.form :-ms-input-placeholder{color:rgba(191,191,191,.87)}.ui.form ::-moz-placeholder{color:rgba(191,191,191,.87)}.ui.form :focus::-webkit-input-placeholder{color:rgba(115,115,115,.87)}.ui.form :focus:-ms-input-placeholder{color:rgba(115,115,115,.87)}.ui.form :focus::-moz-placeholder{color:rgba(115,115,115,.87)}.ui.form .error ::-webkit-input-placeholder{color:#e7bdbc}.ui.form .error :-ms-input-placeholder{color:#e7bdbc!important}.ui.form .error ::-moz-placeholder{color:#e7bdbc}.ui.form .error :focus::-webkit-input-placeholder{color:#da9796}.ui.form .error :focus:-ms-input-placeholder{color:#da9796!important}.ui.form .error :focus::-moz-placeholder{color:#da9796}.ui.form input:not([type]):focus,.ui.form input[type=text]:focus,.ui.form input[type=email]:focus,.ui.form input[type=search]:focus,.ui.form input[type=password]:focus,.ui.form input[type=date]:focus,.ui.form input[type=datetime-local]:focus,.ui.form input[type=tel]:focus,.ui.form input[type=time]:focus,.ui.form input[type=url]:focus,.ui.form input[type=number]:focus{color:rgba(0,0,0,.95);border-color:#85B7D9;border-radius:.28571429rem;background:#FFF;box-shadow:0 0 0 0 rgba(34,36,38,.35) inset}.ui.form textarea:focus{color:rgba(0,0,0,.95);border-color:#85B7D9;border-radius:.28571429rem;background:#FFF;box-shadow:0 0 0 0 rgba(34,36,38,.35) inset;-webkit-appearance:none}.ui.form.success .success.message:not(:empty){display:block}.ui.form.success .compact.success.message:not(:empty){display:inline-block}.ui.form.success .icon.success.message:not(:empty){display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.ui.form.warning .warning.message:not(:empty){display:block}.ui.form.warning .compact.warning.message:not(:empty){display:inline-block}.ui.form.warning .icon.warning.message:not(:empty){display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.ui.form.error .error.message:not(:empty){display:block}.ui.form.error .compact.error.message:not(:empty){display:inline-block}.ui.form.error .icon.error.message:not(:empty){display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.ui.form .field.error .input,.ui.form .field.error label,.ui.form .fields.error .field .input,.ui.form .fields.error .field label{color:#9F3A38}.ui.form .field.error .corner.label,.ui.form .fields.error .field .corner.label{border-color:#9F3A38;color:#FFF}.ui.form .field.error input:not([type]),.ui.form .field.error input[type=text],.ui.form .field.error input[type=email],.ui.form .field.error input[type=search],.ui.form .field.error input[type=password],.ui.form .field.error input[type=date],.ui.form .field.error input[type=datetime-local],.ui.form .field.error input[type=tel],.ui.form .field.error input[type=time],.ui.form .field.error input[type=url],.ui.form .field.error input[type=number],.ui.form .field.error select,.ui.form .field.error textarea,.ui.form .fields.error .field input:not([type]),.ui.form .fields.error .field input[type=text],.ui.form .fields.error .field input[type=email],.ui.form .fields.error .field input[type=search],.ui.form .fields.error .field input[type=password],.ui.form .fields.error .field input[type=date],.ui.form .fields.error .field input[type=datetime-local],.ui.form .fields.error .field input[type=tel],.ui.form .fields.error .field input[type=time],.ui.form .fields.error .field input[type=url],.ui.form .fields.error .field input[type=number],.ui.form .fields.error .field select,.ui.form .fields.error .field textarea{background:#FFF6F6;border-color:#E0B4B4;color:#9F3A38;border-radius:'';box-shadow:none}.ui.form .field.error input:not([type]):focus,.ui.form .field.error input[type=text]:focus,.ui.form .field.error input[type=email]:focus,.ui.form .field.error input[type=search]:focus,.ui.form .field.error input[type=password]:focus,.ui.form .field.error input[type=date]:focus,.ui.form .field.error input[type=datetime-local]:focus,.ui.form .field.error input[type=tel]:focus,.ui.form .field.error input[type=time]:focus,.ui.form .field.error input[type=url]:focus,.ui.form .field.error input[type=number]:focus,.ui.form .field.error select:focus,.ui.form .field.error textarea:focus{background:#FFF6F6;border-color:#E0B4B4;color:#9F3A38;-webkit-appearance:none;box-shadow:none}.ui.form .field.error select{-webkit-appearance:menulist-button}.ui.form .field.error .ui.dropdown,.ui.form .field.error .ui.dropdown .item,.ui.form .field.error .ui.dropdown .text,.ui.form .fields.error .field .ui.dropdown,.ui.form .fields.error .field .ui.dropdown .item{background:#FFF6F6;color:#9F3A38}.ui.form .field.error .ui.dropdown,.ui.form .field.error .ui.dropdown:hover,.ui.form .fields.error .field .ui.dropdown,.ui.form .fields.error .field .ui.dropdown:hover{border-color:#E0B4B4!important}.ui.form .field.error .ui.dropdown:hover .menu,.ui.form .fields.error .field .ui.dropdown:hover .menu{border-color:#E0B4B4}.ui.form .field.error .ui.multiple.selection.dropdown>.label,.ui.form .fields.error .field .ui.multiple.selection.dropdown>.label{background-color:#EACBCB;color:#9F3A38}.ui.form .field.error .ui.dropdown .menu .item:hover,.ui.form .field.error .ui.dropdown .menu .selected.item,.ui.form .fields.error .field .ui.dropdown .menu .item:hover,.ui.form .fields.error .field .ui.dropdown .menu .selected.item{background-color:#FBE7E7}.ui.form .field.error .ui.dropdown .menu .active.item,.ui.form .fields.error .field .ui.dropdown .menu .active.item{background-color:#FDCFCF!important}.ui.form .field.error .checkbox:not(.toggle):not(.slider) .box,.ui.form .field.error .checkbox:not(.toggle):not(.slider) label,.ui.form .fields.error .field .checkbox:not(.toggle):not(.slider) .box,.ui.form .fields.error .field .checkbox:not(.toggle):not(.slider) label{color:#9F3A38}.ui.form .field.error .checkbox:not(.toggle):not(.slider) .box:before,.ui.form .field.error .checkbox:not(.toggle):not(.slider) label:before,.ui.form .fields.error .field .checkbox:not(.toggle):not(.slider) .box:before,.ui.form .fields.error .field .checkbox:not(.toggle):not(.slider) label:before{background:#FFF6F6;border-color:#E0B4B4}.ui.form .field.error .checkbox .box:after,.ui.form .field.error .checkbox label:after,.ui.form .fields.error .field .checkbox .box:after,.ui.form .fields.error .field .checkbox label:after{color:#9F3A38}.ui.form .disabled.field,.ui.form .disabled.fields .field,.ui.form .field :disabled{pointer-events:none;opacity:.45}.ui.form .field.disabled label{opacity:.45}.ui.form .field.disabled :disabled{opacity:1}.ui.loading.form{position:relative;cursor:default;point-events:none}.ui.loading.form:before{position:absolute;content:'';top:0;left:0;background:rgba(255,255,255,.8);width:100%;height:100%;z-index:100}.ui.loading.form:after{position:absolute;content:'';top:50%;left:50%;margin:-1.5em 0 0 -1.5em;width:3em;height:3em;-webkit-animation:form-spin .6s linear;animation:form-spin .6s linear;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;border-radius:500rem;border-color:#767676 rgba(0,0,0,.1) rgba(0,0,0,.1);border-style:solid;border-width:.2em;box-shadow:0 0 0 1px transparent;visibility:visible;z-index:101}@-webkit-keyframes form-spin{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes form-spin{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.ui.form .required.field>.checkbox:after,.ui.form .required.field>label:after,.ui.form .required.fields.grouped>label:after,.ui.form .required.fields:not(.grouped)>.field>.checkbox:after,.ui.form .required.fields:not(.grouped)>.field>label:after{margin:-.2em 0 0 .2em;content:'*';color:#DB2828}.ui.form .required.field>label:after,.ui.form .required.fields.grouped>label:after,.ui.form .required.fields:not(.grouped)>.field>label:after{display:inline-block;vertical-align:top}.ui.form .required.field>.checkbox:after,.ui.form .required.fields:not(.grouped)>.field>.checkbox:after{position:absolute;top:0;left:100%}.ui.form .inverted.segment .ui.checkbox .box,.ui.form .inverted.segment .ui.checkbox label,.ui.form .inverted.segment label,.ui.inverted.form .inline.field>label,.ui.inverted.form .inline.field>p,.ui.inverted.form .inline.fields .field>label,.ui.inverted.form .inline.fields .field>p,.ui.inverted.form .inline.fields>label,.ui.inverted.form .ui.checkbox .box,.ui.inverted.form .ui.checkbox label,.ui.inverted.form label{color:rgba(255,255,255,.9)}.ui.inverted.form input:not([type]),.ui.inverted.form input[type=text],.ui.inverted.form input[type=email],.ui.inverted.form input[type=search],.ui.inverted.form input[type=password],.ui.inverted.form input[type=date],.ui.inverted.form input[type=datetime-local],.ui.inverted.form input[type=tel],.ui.inverted.form input[type=time],.ui.inverted.form input[type=url],.ui.inverted.form input[type=number]{background:#FFF;border-color:rgba(255,255,255,.1);color:rgba(0,0,0,.87);box-shadow:none}.ui.form .grouped.fields{display:block;margin:0 0 1em}.ui.form .grouped.fields:last-child{margin-bottom:0}.ui.form .grouped.fields>label{margin:0 0 .28571429rem;color:rgba(0,0,0,.87);font-size:.92857143em;font-weight:700;text-transform:none}.ui.form .grouped.fields .field,.ui.form .grouped.inline.fields .field{display:block;margin:.5em 0;padding:0}.ui.form .fields{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;margin:0 -.5em 1em}.ui.form .fields>.field{-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto;padding-left:.5em;padding-right:.5em}.ui.form .fields>.field:first-child{border-left:none;box-shadow:none}.ui.form .two.fields>.field,.ui.form .two.fields>.fields{width:50%}.ui.form .three.fields>.field,.ui.form .three.fields>.fields{width:33.33333333%}.ui.form .four.fields>.field,.ui.form .four.fields>.fields{width:25%}.ui.form .five.fields>.field,.ui.form .five.fields>.fields{width:20%}.ui.form .six.fields>.field,.ui.form .six.fields>.fields{width:16.66666667%}.ui.form .seven.fields>.field,.ui.form .seven.fields>.fields{width:14.28571429%}.ui.form .eight.fields>.field,.ui.form .eight.fields>.fields{width:12.5%}.ui.form .nine.fields>.field,.ui.form .nine.fields>.fields{width:11.11111111%}.ui.form .ten.fields>.field,.ui.form .ten.fields>.fields{width:10%}@media only screen and (max-width:767px){.ui.form .fields{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.ui.form .eight.fields>.field,.ui.form .eight.fields>.fields,.ui.form .five.fields>.field,.ui.form .five.fields>.fields,.ui.form .four.fields>.field,.ui.form .four.fields>.fields,.ui.form .nine.fields>.field,.ui.form .nine.fields>.fields,.ui.form .seven.fields>.field,.ui.form .seven.fields>.fields,.ui.form .six.fields>.field,.ui.form .six.fields>.fields,.ui.form .ten.fields>.field,.ui.form .ten.fields>.fields,.ui.form .three.fields>.field,.ui.form .three.fields>.fields,.ui.form .two.fields>.field,.ui.form .two.fields>.fields,.ui.form [class*="equal width"].fields>.field,.ui[class*="equal width"].form .fields>.field{width:100%!important;margin:0 0 1em}}.ui.form .fields .wide.field{width:6.25%;padding-left:.5em;padding-right:.5em}.ui.form .one.wide.field{width:6.25%!important}.ui.form .two.wide.field{width:12.5%!important}.ui.form .three.wide.field{width:18.75%!important}.ui.form .four.wide.field{width:25%!important}.ui.form .five.wide.field{width:31.25%!important}.ui.form .six.wide.field{width:37.5%!important}.ui.form .seven.wide.field{width:43.75%!important}.ui.form .eight.wide.field{width:50%!important}.ui.form .nine.wide.field{width:56.25%!important}.ui.form .ten.wide.field{width:62.5%!important}.ui.form .eleven.wide.field{width:68.75%!important}.ui.form .twelve.wide.field{width:75%!important}.ui.form .thirteen.wide.field{width:81.25%!important}.ui.form .fourteen.wide.field{width:87.5%!important}.ui.form .fifteen.wide.field{width:93.75%!important}.ui.form .sixteen.wide.field{width:100%!important}@media only screen and (max-width:767px){.ui.form .fields>.eight.wide.field,.ui.form .fields>.eleven.wide.field,.ui.form .fields>.fifteen.wide.field,.ui.form .fields>.five.wide.field,.ui.form .fields>.four.wide.field,.ui.form .fields>.fourteen.wide.field,.ui.form .fields>.nine.wide.field,.ui.form .fields>.seven.wide.field,.ui.form .fields>.six.wide.field,.ui.form .fields>.sixteen.wide.field,.ui.form .fields>.ten.wide.field,.ui.form .fields>.thirteen.wide.field,.ui.form .fields>.three.wide.field,.ui.form .fields>.twelve.wide.field,.ui.form .fields>.two.wide.field,.ui.form .five.fields>.field,.ui.form .five.fields>.fields,.ui.form .four.fields>.field,.ui.form .four.fields>.fields,.ui.form .three.fields>.field,.ui.form .three.fields>.fields,.ui.form .two.fields>.field,.ui.form .two.fields>.fields{width:100%!important}.ui.form .fields{margin-bottom:0}}.ui.form [class*="equal width"].fields>.field,.ui[class*="equal width"].form .fields>.field{width:100%;-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto}.ui.form .inline.fields{margin:0 0 1em;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;-ms-grid-row-align:center;align-items:center}.ui.form .inline.fields .field{margin:0;padding:0 1em 0 0}.ui.form .inline.field>label,.ui.form .inline.field>p,.ui.form .inline.fields .field>label,.ui.form .inline.fields .field>p,.ui.form .inline.fields>label{display:inline-block;width:auto;margin-top:0;margin-bottom:0;vertical-align:baseline;font-size:.92857143em;font-weight:700;color:rgba(0,0,0,.87);text-transform:none}.ui.form .inline.fields>label{margin:.035714em 1em 0 0}.ui.form .inline.field>input,.ui.form .inline.field>select,.ui.form .inline.fields .field>input,.ui.form .inline.fields .field>select{display:inline-block;width:auto;margin-top:0;margin-bottom:0;vertical-align:middle;font-size:1em}.ui.form .inline.field>:first-child,.ui.form .inline.fields .field>:first-child{margin:0 .85714286em 0 0}.ui.form .inline.field>:only-child,.ui.form .inline.fields .field>:only-child{margin:0}.ui.form .inline.fields .wide.field{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.ui.form .inline.fields .wide.field>input,.ui.form .inline.fields .wide.field>select{width:100%}.ui.mini.form{font-size:.78571429rem}.ui.tiny.form{font-size:.85714286rem}.ui.small.form{font-size:.92857143rem}.ui.form{font-size:1rem}.ui.large.form{font-size:1.14285714rem}.ui.big.form{font-size:1.28571429rem}.ui.huge.form{font-size:1.42857143rem}.ui.massive.form{font-size:1.71428571rem}.ui.grid{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;padding:0;margin:-1rem}.ui.relaxed.grid{margin-left:-1.5rem;margin-right:-1.5rem}.ui[class*="very relaxed"].grid{margin-left:-2.5rem;margin-right:-2.5rem}.ui.grid+.grid{margin-top:1rem}.ui.grid>.column:not(.row),.ui.grid>.row>.column{position:relative;display:inline-block;width:6.25%;padding-left:1rem;padding-right:1rem;vertical-align:top}.ui.grid>*{padding-left:1rem;padding-right:1rem}.ui.grid>.row{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:inherit;-webkit-justify-content:inherit;-ms-flex-pack:inherit;justify-content:inherit;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;width:100%!important;padding:1rem 0}.ui.grid>.column:not(.row){padding-top:1rem;padding-bottom:1rem}.ui.grid>.row>.column{margin-top:0;margin-bottom:0}.ui.grid>.row>.column>img,.ui.grid>.row>img{max-width:100%}.ui.grid>.ui.grid:first-child{margin-top:0}.ui.grid>.ui.grid:last-child{margin-bottom:0}.ui.aligned.grid .column>.segment:not(.compact):not(.attached),.ui.grid .aligned.row>.column>.segment:not(.compact):not(.attached){width:100%}.ui.grid .row+.ui.divider{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;margin:1rem}.ui.grid .column+.ui.vertical.divider{height:calc(50% - 1rem)}.ui.grid>.column:last-child>.horizontal.segment,.ui.grid>.row>.column:last-child>.horizontal.segment{box-shadow:none}@media only screen and (max-width:767px){.ui.page.grid{width:auto;padding-left:0;padding-right:0;margin-left:0;margin-right:0}}@media only screen and (min-width:768px) and (max-width:991px){.ui.page.grid{width:auto;margin-left:0;margin-right:0;padding-left:2em;padding-right:2em}}@media only screen and (min-width:992px) and (max-width:1199px){.ui.page.grid{width:auto;margin-left:0;margin-right:0;padding-left:3%;padding-right:3%}}@media only screen and (min-width:1200px) and (max-width:1919px){.ui.page.grid{width:auto;margin-left:0;margin-right:0;padding-left:15%;padding-right:15%}}@media only screen and (min-width:1920px){.ui.page.grid{width:auto;margin-left:0;margin-right:0;padding-left:23%;padding-right:23%}}.ui.grid>.column:only-child,.ui.grid>.row>.column:only-child,.ui[class*="one column"].grid>.column:not(.row),.ui[class*="one column"].grid>.row>.column{width:100%}.ui[class*="two column"].grid>.column:not(.row),.ui[class*="two column"].grid>.row>.column{width:50%}.ui[class*="three column"].grid>.column:not(.row),.ui[class*="three column"].grid>.row>.column{width:33.33333333%}.ui[class*="four column"].grid>.column:not(.row),.ui[class*="four column"].grid>.row>.column{width:25%}.ui[class*="five column"].grid>.column:not(.row),.ui[class*="five column"].grid>.row>.column{width:20%}.ui[class*="six column"].grid>.column:not(.row),.ui[class*="six column"].grid>.row>.column{width:16.66666667%}.ui[class*="seven column"].grid>.column:not(.row),.ui[class*="seven column"].grid>.row>.column{width:14.28571429%}.ui[class*="eight column"].grid>.column:not(.row),.ui[class*="eight column"].grid>.row>.column{width:12.5%}.ui[class*="nine column"].grid>.column:not(.row),.ui[class*="nine column"].grid>.row>.column{width:11.11111111%}.ui[class*="ten column"].grid>.column:not(.row),.ui[class*="ten column"].grid>.row>.column{width:10%}.ui[class*="eleven column"].grid>.column:not(.row),.ui[class*="eleven column"].grid>.row>.column{width:9.09090909%}.ui[class*="twelve column"].grid>.column:not(.row),.ui[class*="twelve column"].grid>.row>.column{width:8.33333333%}.ui[class*="thirteen column"].grid>.column:not(.row),.ui[class*="thirteen column"].grid>.row>.column{width:7.69230769%}.ui[class*="fourteen column"].grid>.column:not(.row),.ui[class*="fourteen column"].grid>.row>.column{width:7.14285714%}.ui[class*="fifteen column"].grid>.column:not(.row),.ui[class*="fifteen column"].grid>.row>.column{width:6.66666667%}.ui[class*="sixteen column"].grid>.column:not(.row),.ui[class*="sixteen column"].grid>.row>.column{width:6.25%}.ui.grid>[class*="one column"].row>.column{width:100%!important}.ui.grid>[class*="two column"].row>.column{width:50%!important}.ui.grid>[class*="three column"].row>.column{width:33.33333333%!important}.ui.grid>[class*="four column"].row>.column{width:25%!important}.ui.grid>[class*="five column"].row>.column{width:20%!important}.ui.grid>[class*="six column"].row>.column{width:16.66666667%!important}.ui.grid>[class*="seven column"].row>.column{width:14.28571429%!important}.ui.grid>[class*="eight column"].row>.column{width:12.5%!important}.ui.grid>[class*="nine column"].row>.column{width:11.11111111%!important}.ui.grid>[class*="ten column"].row>.column{width:10%!important}.ui.grid>[class*="eleven column"].row>.column{width:9.09090909%!important}.ui.grid>[class*="twelve column"].row>.column{width:8.33333333%!important}.ui.grid>[class*="thirteen column"].row>.column{width:7.69230769%!important}.ui.grid>[class*="fourteen column"].row>.column{width:7.14285714%!important}.ui.grid>[class*="fifteen column"].row>.column{width:6.66666667%!important}.ui.grid>[class*="sixteen column"].row>.column{width:6.25%!important}.ui.celled.page.grid{box-shadow:none}.ui.column.grid>[class*="one wide"].column,.ui.grid>.column.row>[class*="one wide"].column,.ui.grid>.row>[class*="one wide"].column,.ui.grid>[class*="one wide"].column{width:6.25%!important}.ui.column.grid>[class*="two wide"].column,.ui.grid>.column.row>[class*="two wide"].column,.ui.grid>.row>[class*="two wide"].column,.ui.grid>[class*="two wide"].column{width:12.5%!important}.ui.column.grid>[class*="three wide"].column,.ui.grid>.column.row>[class*="three wide"].column,.ui.grid>.row>[class*="three wide"].column,.ui.grid>[class*="three wide"].column{width:18.75%!important}.ui.column.grid>[class*="four wide"].column,.ui.grid>.column.row>[class*="four wide"].column,.ui.grid>.row>[class*="four wide"].column,.ui.grid>[class*="four wide"].column{width:25%!important}.ui.column.grid>[class*="five wide"].column,.ui.grid>.column.row>[class*="five wide"].column,.ui.grid>.row>[class*="five wide"].column,.ui.grid>[class*="five wide"].column{width:31.25%!important}.ui.column.grid>[class*="six wide"].column,.ui.grid>.column.row>[class*="six wide"].column,.ui.grid>.row>[class*="six wide"].column,.ui.grid>[class*="six wide"].column{width:37.5%!important}.ui.column.grid>[class*="seven wide"].column,.ui.grid>.column.row>[class*="seven wide"].column,.ui.grid>.row>[class*="seven wide"].column,.ui.grid>[class*="seven wide"].column{width:43.75%!important}.ui.column.grid>[class*="eight wide"].column,.ui.grid>.column.row>[class*="eight wide"].column,.ui.grid>.row>[class*="eight wide"].column,.ui.grid>[class*="eight wide"].column{width:50%!important}.ui.column.grid>[class*="nine wide"].column,.ui.grid>.column.row>[class*="nine wide"].column,.ui.grid>.row>[class*="nine wide"].column,.ui.grid>[class*="nine wide"].column{width:56.25%!important}.ui.column.grid>[class*="ten wide"].column,.ui.grid>.column.row>[class*="ten wide"].column,.ui.grid>.row>[class*="ten wide"].column,.ui.grid>[class*="ten wide"].column{width:62.5%!important}.ui.column.grid>[class*="eleven wide"].column,.ui.grid>.column.row>[class*="eleven wide"].column,.ui.grid>.row>[class*="eleven wide"].column,.ui.grid>[class*="eleven wide"].column{width:68.75%!important}.ui.column.grid>[class*="twelve wide"].column,.ui.grid>.column.row>[class*="twelve wide"].column,.ui.grid>.row>[class*="twelve wide"].column,.ui.grid>[class*="twelve wide"].column{width:75%!important}.ui.column.grid>[class*="thirteen wide"].column,.ui.grid>.column.row>[class*="thirteen wide"].column,.ui.grid>.row>[class*="thirteen wide"].column,.ui.grid>[class*="thirteen wide"].column{width:81.25%!important}.ui.column.grid>[class*="fourteen wide"].column,.ui.grid>.column.row>[class*="fourteen wide"].column,.ui.grid>.row>[class*="fourteen wide"].column,.ui.grid>[class*="fourteen wide"].column{width:87.5%!important}.ui.column.grid>[class*="fifteen wide"].column,.ui.grid>.column.row>[class*="fifteen wide"].column,.ui.grid>.row>[class*="fifteen wide"].column,.ui.grid>[class*="fifteen wide"].column{width:93.75%!important}.ui.column.grid>[class*="sixteen wide"].column,.ui.grid>.column.row>[class*="sixteen wide"].column,.ui.grid>.row>[class*="sixteen wide"].column,.ui.grid>[class*="sixteen wide"].column{width:100%!important}@media only screen and (min-width:320px) and (max-width:767px){.ui.column.grid>[class*="one wide mobile"].column,.ui.grid>.column.row>[class*="one wide mobile"].column,.ui.grid>.row>[class*="one wide mobile"].column,.ui.grid>[class*="one wide mobile"].column{width:6.25%!important}.ui.column.grid>[class*="two wide mobile"].column,.ui.grid>.column.row>[class*="two wide mobile"].column,.ui.grid>.row>[class*="two wide mobile"].column,.ui.grid>[class*="two wide mobile"].column{width:12.5%!important}.ui.column.grid>[class*="three wide mobile"].column,.ui.grid>.column.row>[class*="three wide mobile"].column,.ui.grid>.row>[class*="three wide mobile"].column,.ui.grid>[class*="three wide mobile"].column{width:18.75%!important}.ui.column.grid>[class*="four wide mobile"].column,.ui.grid>.column.row>[class*="four wide mobile"].column,.ui.grid>.row>[class*="four wide mobile"].column,.ui.grid>[class*="four wide mobile"].column{width:25%!important}.ui.column.grid>[class*="five wide mobile"].column,.ui.grid>.column.row>[class*="five wide mobile"].column,.ui.grid>.row>[class*="five wide mobile"].column,.ui.grid>[class*="five wide mobile"].column{width:31.25%!important}.ui.column.grid>[class*="six wide mobile"].column,.ui.grid>.column.row>[class*="six wide mobile"].column,.ui.grid>.row>[class*="six wide mobile"].column,.ui.grid>[class*="six wide mobile"].column{width:37.5%!important}.ui.column.grid>[class*="seven wide mobile"].column,.ui.grid>.column.row>[class*="seven wide mobile"].column,.ui.grid>.row>[class*="seven wide mobile"].column,.ui.grid>[class*="seven wide mobile"].column{width:43.75%!important}.ui.column.grid>[class*="eight wide mobile"].column,.ui.grid>.column.row>[class*="eight wide mobile"].column,.ui.grid>.row>[class*="eight wide mobile"].column,.ui.grid>[class*="eight wide mobile"].column{width:50%!important}.ui.column.grid>[class*="nine wide mobile"].column,.ui.grid>.column.row>[class*="nine wide mobile"].column,.ui.grid>.row>[class*="nine wide mobile"].column,.ui.grid>[class*="nine wide mobile"].column{width:56.25%!important}.ui.column.grid>[class*="ten wide mobile"].column,.ui.grid>.column.row>[class*="ten wide mobile"].column,.ui.grid>.row>[class*="ten wide mobile"].column,.ui.grid>[class*="ten wide mobile"].column{width:62.5%!important}.ui.column.grid>[class*="eleven wide mobile"].column,.ui.grid>.column.row>[class*="eleven wide mobile"].column,.ui.grid>.row>[class*="eleven wide mobile"].column,.ui.grid>[class*="eleven wide mobile"].column{width:68.75%!important}.ui.column.grid>[class*="twelve wide mobile"].column,.ui.grid>.column.row>[class*="twelve wide mobile"].column,.ui.grid>.row>[class*="twelve wide mobile"].column,.ui.grid>[class*="twelve wide mobile"].column{width:75%!important}.ui.column.grid>[class*="thirteen wide mobile"].column,.ui.grid>.column.row>[class*="thirteen wide mobile"].column,.ui.grid>.row>[class*="thirteen wide mobile"].column,.ui.grid>[class*="thirteen wide mobile"].column{width:81.25%!important}.ui.column.grid>[class*="fourteen wide mobile"].column,.ui.grid>.column.row>[class*="fourteen wide mobile"].column,.ui.grid>.row>[class*="fourteen wide mobile"].column,.ui.grid>[class*="fourteen wide mobile"].column{width:87.5%!important}.ui.column.grid>[class*="fifteen wide mobile"].column,.ui.grid>.column.row>[class*="fifteen wide mobile"].column,.ui.grid>.row>[class*="fifteen wide mobile"].column,.ui.grid>[class*="fifteen wide mobile"].column{width:93.75%!important}.ui.column.grid>[class*="sixteen wide mobile"].column,.ui.grid>.column.row>[class*="sixteen wide mobile"].column,.ui.grid>.row>[class*="sixteen wide mobile"].column,.ui.grid>[class*="sixteen wide mobile"].column{width:100%!important}}@media only screen and (min-width:768px) and (max-width:991px){.ui.column.grid>[class*="one wide tablet"].column,.ui.grid>.column.row>[class*="one wide tablet"].column,.ui.grid>.row>[class*="one wide tablet"].column,.ui.grid>[class*="one wide tablet"].column{width:6.25%!important}.ui.column.grid>[class*="two wide tablet"].column,.ui.grid>.column.row>[class*="two wide tablet"].column,.ui.grid>.row>[class*="two wide tablet"].column,.ui.grid>[class*="two wide tablet"].column{width:12.5%!important}.ui.column.grid>[class*="three wide tablet"].column,.ui.grid>.column.row>[class*="three wide tablet"].column,.ui.grid>.row>[class*="three wide tablet"].column,.ui.grid>[class*="three wide tablet"].column{width:18.75%!important}.ui.column.grid>[class*="four wide tablet"].column,.ui.grid>.column.row>[class*="four wide tablet"].column,.ui.grid>.row>[class*="four wide tablet"].column,.ui.grid>[class*="four wide tablet"].column{width:25%!important}.ui.column.grid>[class*="five wide tablet"].column,.ui.grid>.column.row>[class*="five wide tablet"].column,.ui.grid>.row>[class*="five wide tablet"].column,.ui.grid>[class*="five wide tablet"].column{width:31.25%!important}.ui.column.grid>[class*="six wide tablet"].column,.ui.grid>.column.row>[class*="six wide tablet"].column,.ui.grid>.row>[class*="six wide tablet"].column,.ui.grid>[class*="six wide tablet"].column{width:37.5%!important}.ui.column.grid>[class*="seven wide tablet"].column,.ui.grid>.column.row>[class*="seven wide tablet"].column,.ui.grid>.row>[class*="seven wide tablet"].column,.ui.grid>[class*="seven wide tablet"].column{width:43.75%!important}.ui.column.grid>[class*="eight wide tablet"].column,.ui.grid>.column.row>[class*="eight wide tablet"].column,.ui.grid>.row>[class*="eight wide tablet"].column,.ui.grid>[class*="eight wide tablet"].column{width:50%!important}.ui.column.grid>[class*="nine wide tablet"].column,.ui.grid>.column.row>[class*="nine wide tablet"].column,.ui.grid>.row>[class*="nine wide tablet"].column,.ui.grid>[class*="nine wide tablet"].column{width:56.25%!important}.ui.column.grid>[class*="ten wide tablet"].column,.ui.grid>.column.row>[class*="ten wide tablet"].column,.ui.grid>.row>[class*="ten wide tablet"].column,.ui.grid>[class*="ten wide tablet"].column{width:62.5%!important}.ui.column.grid>[class*="eleven wide tablet"].column,.ui.grid>.column.row>[class*="eleven wide tablet"].column,.ui.grid>.row>[class*="eleven wide tablet"].column,.ui.grid>[class*="eleven wide tablet"].column{width:68.75%!important}.ui.column.grid>[class*="twelve wide tablet"].column,.ui.grid>.column.row>[class*="twelve wide tablet"].column,.ui.grid>.row>[class*="twelve wide tablet"].column,.ui.grid>[class*="twelve wide tablet"].column{width:75%!important}.ui.column.grid>[class*="thirteen wide tablet"].column,.ui.grid>.column.row>[class*="thirteen wide tablet"].column,.ui.grid>.row>[class*="thirteen wide tablet"].column,.ui.grid>[class*="thirteen wide tablet"].column{width:81.25%!important}.ui.column.grid>[class*="fourteen wide tablet"].column,.ui.grid>.column.row>[class*="fourteen wide tablet"].column,.ui.grid>.row>[class*="fourteen wide tablet"].column,.ui.grid>[class*="fourteen wide tablet"].column{width:87.5%!important}.ui.column.grid>[class*="fifteen wide tablet"].column,.ui.grid>.column.row>[class*="fifteen wide tablet"].column,.ui.grid>.row>[class*="fifteen wide tablet"].column,.ui.grid>[class*="fifteen wide tablet"].column{width:93.75%!important}.ui.column.grid>[class*="sixteen wide tablet"].column,.ui.grid>.column.row>[class*="sixteen wide tablet"].column,.ui.grid>.row>[class*="sixteen wide tablet"].column,.ui.grid>[class*="sixteen wide tablet"].column{width:100%!important}}@media only screen and (min-width:992px){.ui.column.grid>[class*="one wide computer"].column,.ui.grid>.column.row>[class*="one wide computer"].column,.ui.grid>.row>[class*="one wide computer"].column,.ui.grid>[class*="one wide computer"].column{width:6.25%!important}.ui.column.grid>[class*="two wide computer"].column,.ui.grid>.column.row>[class*="two wide computer"].column,.ui.grid>.row>[class*="two wide computer"].column,.ui.grid>[class*="two wide computer"].column{width:12.5%!important}.ui.column.grid>[class*="three wide computer"].column,.ui.grid>.column.row>[class*="three wide computer"].column,.ui.grid>.row>[class*="three wide computer"].column,.ui.grid>[class*="three wide computer"].column{width:18.75%!important}.ui.column.grid>[class*="four wide computer"].column,.ui.grid>.column.row>[class*="four wide computer"].column,.ui.grid>.row>[class*="four wide computer"].column,.ui.grid>[class*="four wide computer"].column{width:25%!important}.ui.column.grid>[class*="five wide computer"].column,.ui.grid>.column.row>[class*="five wide computer"].column,.ui.grid>.row>[class*="five wide computer"].column,.ui.grid>[class*="five wide computer"].column{width:31.25%!important}.ui.column.grid>[class*="six wide computer"].column,.ui.grid>.column.row>[class*="six wide computer"].column,.ui.grid>.row>[class*="six wide computer"].column,.ui.grid>[class*="six wide computer"].column{width:37.5%!important}.ui.column.grid>[class*="seven wide computer"].column,.ui.grid>.column.row>[class*="seven wide computer"].column,.ui.grid>.row>[class*="seven wide computer"].column,.ui.grid>[class*="seven wide computer"].column{width:43.75%!important}.ui.column.grid>[class*="eight wide computer"].column,.ui.grid>.column.row>[class*="eight wide computer"].column,.ui.grid>.row>[class*="eight wide computer"].column,.ui.grid>[class*="eight wide computer"].column{width:50%!important}.ui.column.grid>[class*="nine wide computer"].column,.ui.grid>.column.row>[class*="nine wide computer"].column,.ui.grid>.row>[class*="nine wide computer"].column,.ui.grid>[class*="nine wide computer"].column{width:56.25%!important}.ui.column.grid>[class*="ten wide computer"].column,.ui.grid>.column.row>[class*="ten wide computer"].column,.ui.grid>.row>[class*="ten wide computer"].column,.ui.grid>[class*="ten wide computer"].column{width:62.5%!important}.ui.column.grid>[class*="eleven wide computer"].column,.ui.grid>.column.row>[class*="eleven wide computer"].column,.ui.grid>.row>[class*="eleven wide computer"].column,.ui.grid>[class*="eleven wide computer"].column{width:68.75%!important}.ui.column.grid>[class*="twelve wide computer"].column,.ui.grid>.column.row>[class*="twelve wide computer"].column,.ui.grid>.row>[class*="twelve wide computer"].column,.ui.grid>[class*="twelve wide computer"].column{width:75%!important}.ui.column.grid>[class*="thirteen wide computer"].column,.ui.grid>.column.row>[class*="thirteen wide computer"].column,.ui.grid>.row>[class*="thirteen wide computer"].column,.ui.grid>[class*="thirteen wide computer"].column{width:81.25%!important}.ui.column.grid>[class*="fourteen wide computer"].column,.ui.grid>.column.row>[class*="fourteen wide computer"].column,.ui.grid>.row>[class*="fourteen wide computer"].column,.ui.grid>[class*="fourteen wide computer"].column{width:87.5%!important}.ui.column.grid>[class*="fifteen wide computer"].column,.ui.grid>.column.row>[class*="fifteen wide computer"].column,.ui.grid>.row>[class*="fifteen wide computer"].column,.ui.grid>[class*="fifteen wide computer"].column{width:93.75%!important}.ui.column.grid>[class*="sixteen wide computer"].column,.ui.grid>.column.row>[class*="sixteen wide computer"].column,.ui.grid>.row>[class*="sixteen wide computer"].column,.ui.grid>[class*="sixteen wide computer"].column{width:100%!important}}@media only screen and (min-width:1200px) and (max-width:1919px){.ui.column.grid>[class*="one wide large screen"].column,.ui.grid>.column.row>[class*="one wide large screen"].column,.ui.grid>.row>[class*="one wide large screen"].column,.ui.grid>[class*="one wide large screen"].column{width:6.25%!important}.ui.column.grid>[class*="two wide large screen"].column,.ui.grid>.column.row>[class*="two wide large screen"].column,.ui.grid>.row>[class*="two wide large screen"].column,.ui.grid>[class*="two wide large screen"].column{width:12.5%!important}.ui.column.grid>[class*="three wide large screen"].column,.ui.grid>.column.row>[class*="three wide large screen"].column,.ui.grid>.row>[class*="three wide large screen"].column,.ui.grid>[class*="three wide large screen"].column{width:18.75%!important}.ui.column.grid>[class*="four wide large screen"].column,.ui.grid>.column.row>[class*="four wide large screen"].column,.ui.grid>.row>[class*="four wide large screen"].column,.ui.grid>[class*="four wide large screen"].column{width:25%!important}.ui.column.grid>[class*="five wide large screen"].column,.ui.grid>.column.row>[class*="five wide large screen"].column,.ui.grid>.row>[class*="five wide large screen"].column,.ui.grid>[class*="five wide large screen"].column{width:31.25%!important}.ui.column.grid>[class*="six wide large screen"].column,.ui.grid>.column.row>[class*="six wide large screen"].column,.ui.grid>.row>[class*="six wide large screen"].column,.ui.grid>[class*="six wide large screen"].column{width:37.5%!important}.ui.column.grid>[class*="seven wide large screen"].column,.ui.grid>.column.row>[class*="seven wide large screen"].column,.ui.grid>.row>[class*="seven wide large screen"].column,.ui.grid>[class*="seven wide large screen"].column{width:43.75%!important}.ui.column.grid>[class*="eight wide large screen"].column,.ui.grid>.column.row>[class*="eight wide large screen"].column,.ui.grid>.row>[class*="eight wide large screen"].column,.ui.grid>[class*="eight wide large screen"].column{width:50%!important}.ui.column.grid>[class*="nine wide large screen"].column,.ui.grid>.column.row>[class*="nine wide large screen"].column,.ui.grid>.row>[class*="nine wide large screen"].column,.ui.grid>[class*="nine wide large screen"].column{width:56.25%!important}.ui.column.grid>[class*="ten wide large screen"].column,.ui.grid>.column.row>[class*="ten wide large screen"].column,.ui.grid>.row>[class*="ten wide large screen"].column,.ui.grid>[class*="ten wide large screen"].column{width:62.5%!important}.ui.column.grid>[class*="eleven wide large screen"].column,.ui.grid>.column.row>[class*="eleven wide large screen"].column,.ui.grid>.row>[class*="eleven wide large screen"].column,.ui.grid>[class*="eleven wide large screen"].column{width:68.75%!important}.ui.column.grid>[class*="twelve wide large screen"].column,.ui.grid>.column.row>[class*="twelve wide large screen"].column,.ui.grid>.row>[class*="twelve wide large screen"].column,.ui.grid>[class*="twelve wide large screen"].column{width:75%!important}.ui.column.grid>[class*="thirteen wide large screen"].column,.ui.grid>.column.row>[class*="thirteen wide large screen"].column,.ui.grid>.row>[class*="thirteen wide large screen"].column,.ui.grid>[class*="thirteen wide large screen"].column{width:81.25%!important}.ui.column.grid>[class*="fourteen wide large screen"].column,.ui.grid>.column.row>[class*="fourteen wide large screen"].column,.ui.grid>.row>[class*="fourteen wide large screen"].column,.ui.grid>[class*="fourteen wide large screen"].column{width:87.5%!important}.ui.column.grid>[class*="fifteen wide large screen"].column,.ui.grid>.column.row>[class*="fifteen wide large screen"].column,.ui.grid>.row>[class*="fifteen wide large screen"].column,.ui.grid>[class*="fifteen wide large screen"].column{width:93.75%!important}.ui.column.grid>[class*="sixteen wide large screen"].column,.ui.grid>.column.row>[class*="sixteen wide large screen"].column,.ui.grid>.row>[class*="sixteen wide large screen"].column,.ui.grid>[class*="sixteen wide large screen"].column{width:100%!important}}@media only screen and (min-width:1920px){.ui.column.grid>[class*="one wide widescreen"].column,.ui.grid>.column.row>[class*="one wide widescreen"].column,.ui.grid>.row>[class*="one wide widescreen"].column,.ui.grid>[class*="one wide widescreen"].column{width:6.25%!important}.ui.column.grid>[class*="two wide widescreen"].column,.ui.grid>.column.row>[class*="two wide widescreen"].column,.ui.grid>.row>[class*="two wide widescreen"].column,.ui.grid>[class*="two wide widescreen"].column{width:12.5%!important}.ui.column.grid>[class*="three wide widescreen"].column,.ui.grid>.column.row>[class*="three wide widescreen"].column,.ui.grid>.row>[class*="three wide widescreen"].column,.ui.grid>[class*="three wide widescreen"].column{width:18.75%!important}.ui.column.grid>[class*="four wide widescreen"].column,.ui.grid>.column.row>[class*="four wide widescreen"].column,.ui.grid>.row>[class*="four wide widescreen"].column,.ui.grid>[class*="four wide widescreen"].column{width:25%!important}.ui.column.grid>[class*="five wide widescreen"].column,.ui.grid>.column.row>[class*="five wide widescreen"].column,.ui.grid>.row>[class*="five wide widescreen"].column,.ui.grid>[class*="five wide widescreen"].column{width:31.25%!important}.ui.column.grid>[class*="six wide widescreen"].column,.ui.grid>.column.row>[class*="six wide widescreen"].column,.ui.grid>.row>[class*="six wide widescreen"].column,.ui.grid>[class*="six wide widescreen"].column{width:37.5%!important}.ui.column.grid>[class*="seven wide widescreen"].column,.ui.grid>.column.row>[class*="seven wide widescreen"].column,.ui.grid>.row>[class*="seven wide widescreen"].column,.ui.grid>[class*="seven wide widescreen"].column{width:43.75%!important}.ui.column.grid>[class*="eight wide widescreen"].column,.ui.grid>.column.row>[class*="eight wide widescreen"].column,.ui.grid>.row>[class*="eight wide widescreen"].column,.ui.grid>[class*="eight wide widescreen"].column{width:50%!important}.ui.column.grid>[class*="nine wide widescreen"].column,.ui.grid>.column.row>[class*="nine wide widescreen"].column,.ui.grid>.row>[class*="nine wide widescreen"].column,.ui.grid>[class*="nine wide widescreen"].column{width:56.25%!important}.ui.column.grid>[class*="ten wide widescreen"].column,.ui.grid>.column.row>[class*="ten wide widescreen"].column,.ui.grid>.row>[class*="ten wide widescreen"].column,.ui.grid>[class*="ten wide widescreen"].column{width:62.5%!important}.ui.column.grid>[class*="eleven wide widescreen"].column,.ui.grid>.column.row>[class*="eleven wide widescreen"].column,.ui.grid>.row>[class*="eleven wide widescreen"].column,.ui.grid>[class*="eleven wide widescreen"].column{width:68.75%!important}.ui.column.grid>[class*="twelve wide widescreen"].column,.ui.grid>.column.row>[class*="twelve wide widescreen"].column,.ui.grid>.row>[class*="twelve wide widescreen"].column,.ui.grid>[class*="twelve wide widescreen"].column{width:75%!important}.ui.column.grid>[class*="thirteen wide widescreen"].column,.ui.grid>.column.row>[class*="thirteen wide widescreen"].column,.ui.grid>.row>[class*="thirteen wide widescreen"].column,.ui.grid>[class*="thirteen wide widescreen"].column{width:81.25%!important}.ui.column.grid>[class*="fourteen wide widescreen"].column,.ui.grid>.column.row>[class*="fourteen wide widescreen"].column,.ui.grid>.row>[class*="fourteen wide widescreen"].column,.ui.grid>[class*="fourteen wide widescreen"].column{width:87.5%!important}.ui.column.grid>[class*="fifteen wide widescreen"].column,.ui.grid>.column.row>[class*="fifteen wide widescreen"].column,.ui.grid>.row>[class*="fifteen wide widescreen"].column,.ui.grid>[class*="fifteen wide widescreen"].column{width:93.75%!important}.ui.column.grid>[class*="sixteen wide widescreen"].column,.ui.grid>.column.row>[class*="sixteen wide widescreen"].column,.ui.grid>.row>[class*="sixteen wide widescreen"].column,.ui.grid>[class*="sixteen wide widescreen"].column{width:100%!important}}.ui.centered.grid,.ui.centered.grid>.row,.ui.grid>.centered.row{text-align:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.ui.centered.grid>.column:not(.aligned):not(:justified):not(.row),.ui.centered.grid>.row>.column:not(.aligned):not(:justified),.ui.grid .centered.row>.column:not(.aligned):not(:justified){text-align:left}.ui.grid>.centered.column,.ui.grid>.row>.centered.column{display:block;margin-left:auto;margin-right:auto}.ui.grid>.relaxed.row>.column,.ui.relaxed.grid>.column:not(.row),.ui.relaxed.grid>.row>.column{padding-left:1.5rem;padding-right:1.5rem}.ui.grid>[class*="very relaxed"].row>.column,.ui[class*="very relaxed"].grid>.column:not(.row),.ui[class*="very relaxed"].grid>.row>.column{padding-left:2.5rem;padding-right:2.5rem}.ui.grid .relaxed.row+.ui.divider,.ui.relaxed.grid .row+.ui.divider{margin-left:1.5rem;margin-right:1.5rem}.ui.grid [class*="very relaxed"].row+.ui.divider,.ui[class*="very relaxed"].grid .row+.ui.divider{margin-left:2.5rem;margin-right:2.5rem}.ui.padded.grid:not(.vertically):not(.horizontally){margin:0!important}[class*="horizontally padded"].ui.grid{margin-left:0!important;margin-right:0!important}[class*="vertically padded"].ui.grid{margin-top:0!important;margin-bottom:0!important}.ui.grid [class*="left floated"].column{margin-right:auto}.ui.grid [class*="right floated"].column{margin-left:auto}.ui.divided.grid:not([class*="vertically divided"])>.column:not(.row),.ui.divided.grid:not([class*="vertically divided"])>.row>.column{box-shadow:-1px 0 0 0 rgba(34,36,38,.15)}.ui[class*="vertically divided"].grid>.column:not(.row),.ui[class*="vertically divided"].grid>.row>.column{margin-top:1rem;margin-bottom:1rem;padding-top:0;padding-bottom:0}.ui[class*="vertically divided"].grid>.row{margin-top:0;margin-bottom:0;position:relative}.ui.divided.grid:not([class*="vertically divided"])>.column:first-child,.ui.divided.grid:not([class*="vertically divided"])>.row>.column:first-child{box-shadow:none}.ui[class*="vertically divided"].grid>.row:first-child>.column{margin-top:0}.ui.grid>.divided.row>.column{box-shadow:-1px 0 0 0 rgba(34,36,38,.15)}.ui.grid>.divided.row>.column:first-child{box-shadow:none}.ui[class*="vertically divided"].grid>.row:before{position:absolute;content:"";top:0;left:0;width:calc(100% - 2rem);height:1px;margin:0 1rem;box-shadow:0 -1px 0 0 rgba(34,36,38,.15)}.ui.padded.divided.grid:not(.vertically):not(.horizontally),[class*="horizontally padded"].ui.divided.grid{width:100%}.ui[class*="vertically divided"].grid>.row:first-child:before{box-shadow:none}.ui.inverted.divided.grid:not([class*="vertically divided"])>.column:not(.row),.ui.inverted.divided.grid:not([class*="vertically divided"])>.row>.column{box-shadow:-1px 0 0 0 rgba(255,255,255,.1)}.ui.inverted.divided.grid:not([class*="vertically divided"])>.column:not(.row):first-child,.ui.inverted.divided.grid:not([class*="vertically divided"])>.row>.column:first-child{box-shadow:none}.ui.inverted[class*="vertically divided"].grid>.row:before{box-shadow:0 -1px 0 0 rgba(255,255,255,.1)}.ui.relaxed[class*="vertically divided"].grid>.row:before{margin-left:1.5rem;margin-right:1.5rem;width:calc(100% - 3rem)}.ui[class*="very relaxed"][class*="vertically divided"].grid>.row:before{margin-left:5rem;margin-right:5rem;width:calc(100% - 5rem)}.ui.celled.grid{width:100%;margin:1em 0;box-shadow:0 0 0 1px #D4D4D5}.ui.celled.grid>.row{width:100%!important;margin:0;padding:0;box-shadow:0 -1px 0 0 #D4D4D5}.ui.celled.grid>.column:not(.row),.ui.celled.grid>.row>.column{box-shadow:-1px 0 0 0 #D4D4D5;padding:1em}.ui.celled.grid>.column:first-child,.ui.celled.grid>.row>.column:first-child{box-shadow:none}.ui.relaxed.celled.grid>.column:not(.row),.ui.relaxed.celled.grid>.row>.column{padding:1.5em}.ui[class*="very relaxed"].celled.grid>.column:not(.row),.ui[class*="very relaxed"].celled.grid>.row>.column{padding:2em}.ui[class*="internally celled"].grid{box-shadow:none;margin:0}.ui[class*="internally celled"].grid>.row:first-child,.ui[class*="internally celled"].grid>.row>.column:first-child{box-shadow:none}.ui.grid>.row>[class*="top aligned"].column,.ui.grid>[class*="top aligned"].column:not(.row),.ui.grid>[class*="top aligned"].row>.column,.ui[class*="top aligned"].grid>.column:not(.row),.ui[class*="top aligned"].grid>.row>.column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;vertical-align:top;-webkit-align-self:flex-start!important;-ms-flex-item-align:start!important;align-self:flex-start!important}.ui.grid>.row>[class*="middle aligned"].column,.ui.grid>[class*="middle aligned"].column:not(.row),.ui.grid>[class*="middle aligned"].row>.column,.ui[class*="middle aligned"].grid>.column:not(.row),.ui[class*="middle aligned"].grid>.row>.column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;vertical-align:middle;-webkit-align-self:center!important;-ms-flex-item-align:center!important;align-self:center!important}.ui.grid>.row>[class*="bottom aligned"].column,.ui.grid>[class*="bottom aligned"].column:not(.row),.ui.grid>[class*="bottom aligned"].row>.column,.ui[class*="bottom aligned"].grid>.column:not(.row),.ui[class*="bottom aligned"].grid>.row>.column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;vertical-align:bottom;-webkit-align-self:flex-end!important;-ms-flex-item-align:end!important;align-self:flex-end!important}.ui.grid>.row>.stretched.column,.ui.grid>.stretched.column:not(.row),.ui.grid>.stretched.row>.column,.ui.stretched.grid>.column,.ui.stretched.grid>.row>.column{display:-webkit-inline-box!important;display:-webkit-inline-flex!important;display:-ms-inline-flexbox!important;display:inline-flex!important;-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.ui.grid>.row>.stretched.column>*,.ui.grid>.stretched.column:not(.row)>*,.ui.grid>.stretched.row>.column>*,.ui.stretched.grid>.column>*,.ui.stretched.grid>.row>.column>*{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.ui.grid>.row>[class*="left aligned"].column,.ui.grid>[class*="left aligned"].column.column,.ui.grid>[class*="left aligned"].row>.column,.ui[class*="left aligned"].grid>.column,.ui[class*="left aligned"].grid>.row>.column{text-align:left;-webkit-align-self:inherit;-ms-flex-item-align:inherit;align-self:inherit}.ui.grid>.row>[class*="center aligned"].column,.ui.grid>[class*="center aligned"].column.column,.ui.grid>[class*="center aligned"].row>.column,.ui[class*="center aligned"].grid>.column,.ui[class*="center aligned"].grid>.row>.column{text-align:center;-webkit-align-self:inherit;-ms-flex-item-align:inherit;align-self:inherit}.ui[class*="center aligned"].grid{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.ui.grid>.row>[class*="right aligned"].column,.ui.grid>[class*="right aligned"].column.column,.ui.grid>[class*="right aligned"].row>.column,.ui[class*="right aligned"].grid>.column,.ui[class*="right aligned"].grid>.row>.column{text-align:right;-webkit-align-self:inherit;-ms-flex-item-align:inherit;align-self:inherit}.ui.grid>.justified.column.column,.ui.grid>.justified.row>.column,.ui.grid>.row>.justified.column,.ui.justified.grid>.column,.ui.justified.grid>.row>.column{text-align:justify;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto}.ui.grid>.row>.black.column,.ui.grid>.row>.blue.column,.ui.grid>.row>.brown.column,.ui.grid>.row>.green.column,.ui.grid>.row>.grey.column,.ui.grid>.row>.olive.column,.ui.grid>.row>.orange.column,.ui.grid>.row>.pink.column,.ui.grid>.row>.purple.column,.ui.grid>.row>.red.column,.ui.grid>.row>.teal.column,.ui.grid>.row>.violet.column,.ui.grid>.row>.yellow.column{margin-top:-1rem;margin-bottom:-1rem;padding-top:1rem;padding-bottom:1rem}.ui.grid>.red.column,.ui.grid>.red.row,.ui.grid>.row>.red.column{background-color:#DB2828!important;color:#FFF}.ui.grid>.orange.column,.ui.grid>.orange.row,.ui.grid>.row>.orange.column{background-color:#F2711C!important;color:#FFF}.ui.grid>.row>.yellow.column,.ui.grid>.yellow.column,.ui.grid>.yellow.row{background-color:#FBBD08!important;color:#FFF}.ui.grid>.olive.column,.ui.grid>.olive.row,.ui.grid>.row>.olive.column{background-color:#B5CC18!important;color:#FFF}.ui.grid>.green.column,.ui.grid>.green.row,.ui.grid>.row>.green.column{background-color:#21BA45!important;color:#FFF}.ui.grid>.row>.teal.column,.ui.grid>.teal.column,.ui.grid>.teal.row{background-color:#00B5AD!important;color:#FFF}.ui.grid>.blue.column,.ui.grid>.blue.row,.ui.grid>.row>.blue.column{background-color:#2185D0!important;color:#FFF}.ui.grid>.row>.violet.column,.ui.grid>.violet.column,.ui.grid>.violet.row{background-color:#6435C9!important;color:#FFF}.ui.grid>.purple.column,.ui.grid>.purple.row,.ui.grid>.row>.purple.column{background-color:#A333C8!important;color:#FFF}.ui.grid>.pink.column,.ui.grid>.pink.row,.ui.grid>.row>.pink.column{background-color:#E03997!important;color:#FFF}.ui.grid>.brown.column,.ui.grid>.brown.row,.ui.grid>.row>.brown.column{background-color:#A5673F!important;color:#FFF}.ui.grid>.grey.column,.ui.grid>.grey.row,.ui.grid>.row>.grey.column{background-color:#767676!important;color:#FFF}.ui.grid>.black.column,.ui.grid>.black.row,.ui.grid>.row>.black.column{background-color:#1B1C1D!important;color:#FFF}.ui.grid>[class*="equal width"].row>.column,.ui[class*="equal width"].grid>.column:not(.row),.ui[class*="equal width"].grid>.row>.column{display:inline-block;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.ui.grid>[class*="equal width"].row>.wide.column,.ui[class*="equal width"].grid>.row>.wide.column,.ui[class*="equal width"].grid>.wide.column{-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0}@media only screen and (max-width:767px){.ui.grid>[class*="mobile reversed"].row,.ui[class*="mobile reversed"].grid,.ui[class*="mobile reversed"].grid>.row{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.ui.stackable[class*="mobile reversed"],.ui[class*="mobile vertically reversed"].grid{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.ui[class*="mobile reversed"].divided.grid:not([class*="vertically divided"])>.column:first-child,.ui[class*="mobile reversed"].divided.grid:not([class*="vertically divided"])>.row>.column:first-child{box-shadow:-1px 0 0 0 rgba(34,36,38,.15)}.ui[class*="mobile reversed"].divided.grid:not([class*="vertically divided"])>.column:last-child,.ui[class*="mobile reversed"].divided.grid:not([class*="vertically divided"])>.row>.column:last-child{box-shadow:none}.ui.grid[class*="vertically divided"][class*="mobile vertically reversed"]>.row:first-child:before{box-shadow:0 -1px 0 0 rgba(34,36,38,.15)}.ui.grid[class*="vertically divided"][class*="mobile vertically reversed"]>.row:last-child:before{box-shadow:none}.ui[class*="mobile reversed"].celled.grid>.row>.column:first-child{box-shadow:-1px 0 0 0 #D4D4D5}.ui[class*="mobile reversed"].celled.grid>.row>.column:last-child{box-shadow:none}}@media only screen and (min-width:768px) and (max-width:991px){.ui.grid>[class*="tablet reversed"].row,.ui[class*="tablet reversed"].grid,.ui[class*="tablet reversed"].grid>.row{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.ui[class*="tablet vertically reversed"].grid{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.ui[class*="tablet reversed"].divided.grid:not([class*="vertically divided"])>.column:first-child,.ui[class*="tablet reversed"].divided.grid:not([class*="vertically divided"])>.row>.column:first-child{box-shadow:-1px 0 0 0 rgba(34,36,38,.15)}.ui[class*="tablet reversed"].divided.grid:not([class*="vertically divided"])>.column:last-child,.ui[class*="tablet reversed"].divided.grid:not([class*="vertically divided"])>.row>.column:last-child{box-shadow:none}.ui.grid[class*="vertically divided"][class*="tablet vertically reversed"]>.row:first-child:before{box-shadow:0 -1px 0 0 rgba(34,36,38,.15)}.ui.grid[class*="vertically divided"][class*="tablet vertically reversed"]>.row:last-child:before{box-shadow:none}.ui[class*="tablet reversed"].celled.grid>.row>.column:first-child{box-shadow:-1px 0 0 0 #D4D4D5}.ui[class*="tablet reversed"].celled.grid>.row>.column:last-child{box-shadow:none}}@media only screen and (min-width:992px){.ui.grid>[class*="computer reversed"].row,.ui[class*="computer reversed"].grid,.ui[class*="computer reversed"].grid>.row{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.ui[class*="computer vertically reversed"].grid{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.ui[class*="computer reversed"].divided.grid:not([class*="vertically divided"])>.column:first-child,.ui[class*="computer reversed"].divided.grid:not([class*="vertically divided"])>.row>.column:first-child{box-shadow:-1px 0 0 0 rgba(34,36,38,.15)}.ui[class*="computer reversed"].divided.grid:not([class*="vertically divided"])>.column:last-child,.ui[class*="computer reversed"].divided.grid:not([class*="vertically divided"])>.row>.column:last-child{box-shadow:none}.ui.grid[class*="vertically divided"][class*="computer vertically reversed"]>.row:first-child:before{box-shadow:0 -1px 0 0 rgba(34,36,38,.15)}.ui.grid[class*="vertically divided"][class*="computer vertically reversed"]>.row:last-child:before{box-shadow:none}.ui[class*="computer reversed"].celled.grid>.row>.column:first-child{box-shadow:-1px 0 0 0 #D4D4D5}.ui[class*="computer reversed"].celled.grid>.row>.column:last-child{box-shadow:none}}@media only screen and (min-width:768px) and (max-width:991px){.ui.doubling.grid{width:auto}.ui.doubling.grid>.row,.ui.grid>.doubling.row{margin:0!important;padding:0!important}.ui.doubling.grid>.row>.column,.ui.grid>.doubling.row>.column{display:inline-block!important;padding-top:1rem!important;padding-bottom:1rem!important;box-shadow:none!important;margin:0}.ui.grid>[class*="two column"].doubling.row.row>.column,.ui[class*="two column"].doubling.grid>.column:not(.row),.ui[class*="two column"].doubling.grid>.row>.column{width:100%!important}.ui.grid>[class*="three column"].doubling.row.row>.column,.ui.grid>[class*="four column"].doubling.row.row>.column,.ui[class*="three column"].doubling.grid>.column:not(.row),.ui[class*="three column"].doubling.grid>.row>.column,.ui[class*="four column"].doubling.grid>.column:not(.row),.ui[class*="four column"].doubling.grid>.row>.column{width:50%!important}.ui.grid>[class*="five column"].doubling.row.row>.column,.ui.grid>[class*="six column"].doubling.row.row>.column,.ui.grid>[class*="seven column"].doubling.row.row>.column,.ui[class*="five column"].doubling.grid>.column:not(.row),.ui[class*="five column"].doubling.grid>.row>.column,.ui[class*="six column"].doubling.grid>.column:not(.row),.ui[class*="six column"].doubling.grid>.row>.column,.ui[class*="seven column"].doubling.grid>.column:not(.row),.ui[class*="seven column"].doubling.grid>.row>.column{width:33.33333333%!important}.ui.grid>[class*="eight column"].doubling.row.row>.column,.ui.grid>[class*="nine column"].doubling.row.row>.column,.ui[class*="eight column"].doubling.grid>.column:not(.row),.ui[class*="eight column"].doubling.grid>.row>.column,.ui[class*="nine column"].doubling.grid>.column:not(.row),.ui[class*="nine column"].doubling.grid>.row>.column{width:25%!important}.ui.grid>[class*="ten column"].doubling.row.row>.column,.ui.grid>[class*="eleven column"].doubling.row.row>.column,.ui[class*="ten column"].doubling.grid>.column:not(.row),.ui[class*="ten column"].doubling.grid>.row>.column,.ui[class*="eleven column"].doubling.grid>.column:not(.row),.ui[class*="eleven column"].doubling.grid>.row>.column{width:20%!important}.ui.grid>[class*="twelve column"].doubling.row.row>.column,.ui.grid>[class*="thirteen column"].doubling.row.row>.column,.ui[class*="twelve column"].doubling.grid>.column:not(.row),.ui[class*="twelve column"].doubling.grid>.row>.column,.ui[class*="thirteen column"].doubling.grid>.column:not(.row),.ui[class*="thirteen column"].doubling.grid>.row>.column{width:16.66666667%!important}.ui.grid>[class*="fourteen column"].doubling.row.row>.column,.ui.grid>[class*="fifteen column"].doubling.row.row>.column,.ui[class*="fourteen column"].doubling.grid>.column:not(.row),.ui[class*="fourteen column"].doubling.grid>.row>.column,.ui[class*="fifteen column"].doubling.grid>.column:not(.row),.ui[class*="fifteen column"].doubling.grid>.row>.column{width:14.28571429%!important}.ui.grid>[class*="sixteen column"].doubling.row.row>.column,.ui[class*="sixteen column"].doubling.grid>.column:not(.row),.ui[class*="sixteen column"].doubling.grid>.row>.column{width:12.5%!important}.ui.grid.grid.grid>.row>[class*="computer only"].column:not(.tablet),.ui.grid.grid.grid>.row>[class*="large screen only"].column:not(.mobile),.ui.grid.grid.grid>.row>[class*="widescreen only"].column:not(.mobile),.ui.grid.grid.grid>.row>[class*="mobile only"].column:not(.tablet),.ui.grid.grid.grid>[class*="computer only"].column:not(.tablet),.ui.grid.grid.grid>[class*="computer only"].row:not(.tablet),.ui.grid.grid.grid>[class*="large screen only"].column:not(.mobile),.ui.grid.grid.grid>[class*="large screen only"].row:not(.mobile),.ui.grid.grid.grid>[class*="widescreen only"].column:not(.mobile),.ui.grid.grid.grid>[class*="widescreen only"].row:not(.mobile),.ui.grid.grid.grid>[class*="mobile only"].column:not(.tablet),.ui.grid.grid.grid>[class*="mobile only"].row:not(.tablet),.ui[class*="computer only"].grid.grid.grid:not(.tablet),.ui[class*="large screen only"].grid.grid.grid:not(.mobile),.ui[class*="widescreen only"].grid.grid.grid:not(.mobile),.ui[class*="mobile only"].grid.grid.grid:not(.tablet){display:none!important}}@media only screen and (max-width:767px){.ui.doubling.grid>.row,.ui.grid>.doubling.row{margin:0!important;padding:0!important}.ui.doubling.grid>.row>.column,.ui.grid>.doubling.row>.column{padding-top:1rem!important;padding-bottom:1rem!important;margin:0!important;box-shadow:none!important}.ui.grid>[class*="two column"].doubling:not(.stackable).row.row>.column,.ui[class*="two column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="two column"].doubling:not(.stackable).grid>.row>.column{width:100%!important}.ui.grid>[class*="three column"].doubling:not(.stackable).row.row>.column,.ui.grid>[class*="four column"].doubling:not(.stackable).row.row>.column,.ui.grid>[class*="five column"].doubling:not(.stackable).row.row>.column,.ui.grid>[class*="six column"].doubling:not(.stackable).row.row>.column,.ui.grid>[class*="seven column"].doubling:not(.stackable).row.row>.column,.ui.grid>[class*="eight column"].doubling:not(.stackable).row.row>.column,.ui[class*="three column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="three column"].doubling:not(.stackable).grid>.row>.column,.ui[class*="four column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="four column"].doubling:not(.stackable).grid>.row>.column,.ui[class*="five column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="five column"].doubling:not(.stackable).grid>.row>.column,.ui[class*="six column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="six column"].doubling:not(.stackable).grid>.row>.column,.ui[class*="seven column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="seven column"].doubling:not(.stackable).grid>.row>.column,.ui[class*="eight column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="eight column"].doubling:not(.stackable).grid>.row>.column{width:50%!important}.ui.grid>[class*="nine column"].doubling:not(.stackable).row.row>.column,.ui.grid>[class*="ten column"].doubling:not(.stackable).row.row>.column,.ui.grid>[class*="eleven column"].doubling:not(.stackable).row.row>.column,.ui.grid>[class*="twelve column"].doubling:not(.stackable).row.row>.column,.ui.grid>[class*="thirteen column"].doubling:not(.stackable).row.row>.column,.ui[class*="nine column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="nine column"].doubling:not(.stackable).grid>.row>.column,.ui[class*="ten column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="ten column"].doubling:not(.stackable).grid>.row>.column,.ui[class*="eleven column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="eleven column"].doubling:not(.stackable).grid>.row>.column,.ui[class*="twelve column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="twelve column"].doubling:not(.stackable).grid>.row>.column,.ui[class*="thirteen column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="thirteen column"].doubling:not(.stackable).grid>.row>.column{width:33.33333333%!important}.ui.grid>[class*="fourteen column"].doubling:not(.stackable).row.row>.column,.ui.grid>[class*="fifteen column"].doubling:not(.stackable).row.row>.column,.ui.grid>[class*="sixteen column"].doubling:not(.stackable).row.row>.column,.ui[class*="fourteen column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="fourteen column"].doubling:not(.stackable).grid>.row>.column,.ui[class*="fifteen column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="fifteen column"].doubling:not(.stackable).grid>.row>.column,.ui[class*="sixteen column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="sixteen column"].doubling:not(.stackable).grid>.row>.column{width:25%!important}.ui.stackable.grid{width:auto;margin-left:0!important;margin-right:0!important}.ui.grid>.stackable.stackable.row>.column,.ui.stackable.grid>.column.grid>.column,.ui.stackable.grid>.column.row>.column,.ui.stackable.grid>.column:not(.row),.ui.stackable.grid>.row>.column,.ui.stackable.grid>.row>.wide.column,.ui.stackable.grid>.wide.column{width:100%!important;margin:0!important;box-shadow:none!important;padding:1rem!important}.ui.stackable.grid:not(.vertically)>.row{margin:0;padding:0}.ui.container>.ui.stackable.grid>.column,.ui.container>.ui.stackable.grid>.row>.column{padding-left:0!important;padding-right:0!important}.ui.grid .ui.stackable.grid,.ui.segment:not(.vertical) .ui.stackable.page.grid{margin-left:-1rem!important;margin-right:-1rem!important}.ui.stackable.celled.grid>.column:not(.row):first-child,.ui.stackable.celled.grid>.row:first-child>.column:first-child,.ui.stackable.divided.grid>.column:not(.row):first-child,.ui.stackable.divided.grid>.row:first-child>.column:first-child{border-top:none!important}.ui.inverted.stackable.celled.grid>.column:not(.row),.ui.inverted.stackable.celled.grid>.row>.column,.ui.inverted.stackable.divided.grid>.column:not(.row),.ui.inverted.stackable.divided.grid>.row>.column{border-top:1px solid rgba(255,255,255,.1)}.ui.stackable.celled.grid>.column:not(.row),.ui.stackable.celled.grid>.row>.column,.ui.stackable.divided:not(.vertically).grid>.column:not(.row),.ui.stackable.divided:not(.vertically).grid>.row>.column{border-top:1px solid rgba(34,36,38,.15);box-shadow:none!important;padding-top:2rem!important;padding-bottom:2rem!important}.ui.stackable.celled.grid>.row{box-shadow:none!important}.ui.stackable.divided:not(.vertically).grid>.column:not(.row),.ui.stackable.divided:not(.vertically).grid>.row>.column{padding-left:0!important;padding-right:0!important}.ui.grid.grid.grid>.row>[class*="tablet only"].column:not(.mobile),.ui.grid.grid.grid>.row>[class*="computer only"].column:not(.mobile),.ui.grid.grid.grid>.row>[class*="large screen only"].column:not(.mobile),.ui.grid.grid.grid>.row>[class*="widescreen only"].column:not(.mobile),.ui.grid.grid.grid>[class*="tablet only"].column:not(.mobile),.ui.grid.grid.grid>[class*="tablet only"].row:not(.mobile),.ui.grid.grid.grid>[class*="computer only"].column:not(.mobile),.ui.grid.grid.grid>[class*="computer only"].row:not(.mobile),.ui.grid.grid.grid>[class*="large screen only"].column:not(.mobile),.ui.grid.grid.grid>[class*="large screen only"].row:not(.mobile),.ui.grid.grid.grid>[class*="widescreen only"].column:not(.mobile),.ui.grid.grid.grid>[class*="widescreen only"].row:not(.mobile),.ui[class*="tablet only"].grid.grid.grid:not(.mobile),.ui[class*="computer only"].grid.grid.grid:not(.mobile),.ui[class*="large screen only"].grid.grid.grid:not(.mobile),.ui[class*="widescreen only"].grid.grid.grid:not(.mobile){display:none!important}}@media only screen and (min-width:992px) and (max-width:1199px){.ui.grid.grid.grid>.row>[class*="tablet only"].column:not(.computer),.ui.grid.grid.grid>.row>[class*="large screen only"].column:not(.mobile),.ui.grid.grid.grid>.row>[class*="widescreen only"].column:not(.mobile),.ui.grid.grid.grid>.row>[class*="mobile only"].column:not(.computer),.ui.grid.grid.grid>[class*="tablet only"].column:not(.computer),.ui.grid.grid.grid>[class*="tablet only"].row:not(.computer),.ui.grid.grid.grid>[class*="large screen only"].column:not(.mobile),.ui.grid.grid.grid>[class*="large screen only"].row:not(.mobile),.ui.grid.grid.grid>[class*="widescreen only"].column:not(.mobile),.ui.grid.grid.grid>[class*="widescreen only"].row:not(.mobile),.ui.grid.grid.grid>[class*="mobile only"].column:not(.computer),.ui.grid.grid.grid>[class*="mobile only"].row:not(.computer),.ui[class*="tablet only"].grid.grid.grid:not(.computer),.ui[class*="large screen only"].grid.grid.grid:not(.mobile),.ui[class*="widescreen only"].grid.grid.grid:not(.mobile),.ui[class*="mobile only"].grid.grid.grid:not(.computer){display:none!important}}@media only screen and (min-width:1200px) and (max-width:1919px){.ui.grid.grid.grid>.row>[class*="tablet only"].column:not(.computer),.ui.grid.grid.grid>.row>[class*="widescreen only"].column:not(.mobile),.ui.grid.grid.grid>.row>[class*="mobile only"].column:not(.computer),.ui.grid.grid.grid>[class*="tablet only"].column:not(.computer),.ui.grid.grid.grid>[class*="tablet only"].row:not(.computer),.ui.grid.grid.grid>[class*="widescreen only"].column:not(.mobile),.ui.grid.grid.grid>[class*="widescreen only"].row:not(.mobile),.ui.grid.grid.grid>[class*="mobile only"].column:not(.computer),.ui.grid.grid.grid>[class*="mobile only"].row:not(.computer),.ui[class*="tablet only"].grid.grid.grid:not(.computer),.ui[class*="widescreen only"].grid.grid.grid:not(.mobile),.ui[class*="mobile only"].grid.grid.grid:not(.computer){display:none!important}}@media only screen and (min-width:1920px){.ui.grid.grid.grid>.row>[class*="tablet only"].column:not(.computer),.ui.grid.grid.grid>.row>[class*="mobile only"].column:not(.computer),.ui.grid.grid.grid>[class*="tablet only"].column:not(.computer),.ui.grid.grid.grid>[class*="tablet only"].row:not(.computer),.ui.grid.grid.grid>[class*="mobile only"].column:not(.computer),.ui.grid.grid.grid>[class*="mobile only"].row:not(.computer),.ui[class*="tablet only"].grid.grid.grid:not(.computer),.ui[class*="mobile only"].grid.grid.grid:not(.computer){display:none!important}}.ui.menu{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin:1rem 0;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;background:#FFF;font-weight:400;border:1px solid rgba(34,36,38,.15);box-shadow:0 1px 2px 0 rgba(34,36,38,.15);border-radius:.28571429rem;min-height:2.85714286em}.ui.menu:after{content:'';display:block;height:0;clear:both;visibility:hidden}.ui.menu:first-child{margin-top:0}.ui.menu:last-child{margin-bottom:0}.ui.menu .menu{margin:0}.ui.menu:not(.vertical)>.menu{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.ui.menu:not(.vertical) .item{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.ui.menu .item{position:relative;vertical-align:middle;line-height:1;text-decoration:none;-webkit-tap-highlight-color:transparent;-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background:0 0;padding:.92857143em 1.14285714em;text-transform:none;color:rgba(0,0,0,.87);font-weight:400;-webkit-transition:background .1s ease,box-shadow .1s ease,color .1s ease;transition:background .1s ease,box-shadow .1s ease,color .1s ease}.ui.menu>.item:first-child{border-radius:.28571429rem 0 0 .28571429rem}.ui.menu .item:before{position:absolute;content:'';top:0;right:0;height:100%;width:1px;background:rgba(34,36,38,.1)}.ui.menu .item>a:not(.ui),.ui.menu .item>p:only-child,.ui.menu .text.item>*{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;line-height:1.3}.ui.menu .item>p:first-child{margin-top:0}.ui.menu .item>p:last-child{margin-bottom:0}.ui.menu .item>i.icon{opacity:.9;float:none;margin:0 .35714286em 0 0}.ui.menu:not(.vertical) .item>.button{position:relative;top:0;margin:-.5em 0;padding-bottom:.78571429em;padding-top:.78571429em;font-size:1em}.ui.menu>.container,.ui.menu>.grid{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:inherit;-webkit-align-items:inherit;-ms-flex-align:inherit;align-items:inherit;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:inherit;-ms-flex-direction:inherit;flex-direction:inherit}.ui.menu .item>.input{width:100%}.ui.menu:not(.vertical) .item>.input{position:relative;top:0;margin:-.5em 0}.ui.menu .item>.input input{font-size:1em;padding-top:.57142857em;padding-bottom:.57142857em}.ui.menu .header.item,.ui.vertical.menu .header.item{margin:0;background:0 0;text-transform:normal;font-weight:700}.ui.vertical.menu .item>.header:not(.ui){margin:0 0 .5em;font-size:1em;font-weight:700}.ui.menu .ui.popup{display:none}.ui.menu .ui.visible.popup{display:block}.ui.menu .item>i.dropdown.icon{padding:0;float:right;margin:0 0 0 1em}.ui.menu .dropdown.item .menu{left:0;min-width:calc(100% - 1px);border-radius:0 0 .28571429rem .28571429rem;background:#FFF;margin:0;box-shadow:0 1px 3px 0 rgba(0,0,0,.08);-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-webkit-flex-direction:column!important;-ms-flex-direction:column!important;flex-direction:column!important}.ui.menu .ui.dropdown .menu>.item{margin:0;text-align:left;font-size:1em!important;padding:.78571429em 1.14285714em!important;background:0 0!important;color:rgba(0,0,0,.87)!important;text-transform:none!important;font-weight:400!important;box-shadow:none!important;-webkit-transition:none!important;transition:none!important}.ui.menu .ui.dropdown .menu>.item:hover,.ui.menu .ui.dropdown .menu>.selected.item{background:rgba(0,0,0,.05)!important;color:rgba(0,0,0,.95)!important}.ui.menu .ui.dropdown .menu>.active.item{background:rgba(0,0,0,.03)!important;font-weight:700!important;color:rgba(0,0,0,.95)!important}.ui.menu .ui.dropdown.item .menu .item:not(.filtered){display:block}.ui.menu .ui.dropdown .menu>.item .icon:not(.dropdown){display:inline-block;font-size:1em!important;float:none;margin:0 .75em 0 0}.ui.secondary.menu .dropdown.item>.menu,.ui.text.menu .dropdown.item>.menu{border-radius:.28571429rem;margin-top:.35714286em}.ui.menu .pointing.dropdown.item .menu{margin-top:.75em}.ui.inverted.menu .search.dropdown.item>.search,.ui.inverted.menu .search.dropdown.item>.text{color:rgba(255,255,255,.9)}.ui.vertical.menu .dropdown.item>.icon{float:right;content:"\f0da";margin-left:1em}.ui.vertical.menu .dropdown.item .menu{top:0!important;left:100%;min-width:0;margin:0;box-shadow:0 1px 3px 0 rgba(0,0,0,.08);border-radius:0 .28571429rem .28571429rem}.ui.vertical.menu .active.dropdown.item{border-top-right-radius:0;border-bottom-right-radius:0}.ui.vertical.menu .dropdown.active.item{box-shadow:none}.ui.item.menu .dropdown .menu .item{width:100%}.ui.menu .item>.label{background:#999;color:#FFF;margin-left:1em;padding:.3em .78571429em}.ui.vertical.menu .item>.label{background:#999;color:#FFF;margin-top:-.15em;margin-bottom:-.15em;padding:.3em .78571429em;float:right;text-align:center}.ui.menu .item>.floating.label{padding:.3em .78571429em}.ui.menu .item>img:not(.ui){display:inline-block;vertical-align:middle;margin:-.3em 0;width:2.5em}.ui.vertical.menu .item>img:not(.ui):only-child{display:block;max-width:100%;width:auto}.ui.vertical.sidebar.menu>.item:first-child:before{display:block!important}.ui.vertical.sidebar.menu>.item::before{top:auto;bottom:0}@media only screen and (max-width:767px){.ui.menu>.ui.container{width:100%!important;margin-left:0!important;margin-right:0!important}}@media only screen and (min-width:768px){.ui.menu:not(.secondary):not(.text):not(.tabular):not(.borderless)>.container>.item:not(.right):not(.borderless):first-child{border-left:1px solid rgba(34,36,38,.1)}}.ui.link.menu .item:hover,.ui.menu .dropdown.item:hover,.ui.menu .link.item:hover,.ui.menu a.item:hover{cursor:pointer;background:rgba(0,0,0,.03);color:rgba(0,0,0,.95)}.ui.link.menu .item:active,.ui.menu .link.item:active,.ui.menu a.item:active{background:rgba(0,0,0,.03);color:rgba(0,0,0,.95)}.ui.menu .active.item{background:rgba(0,0,0,.05);color:rgba(0,0,0,.95);font-weight:400;box-shadow:none}.ui.menu .active.item>i.icon{opacity:1}.ui.menu .active.item:hover,.ui.vertical.menu .active.item:hover{background-color:rgba(0,0,0,.05);color:rgba(0,0,0,.95)}.ui.menu .item.disabled,.ui.menu .item.disabled:hover{cursor:default;background-color:transparent!important;color:rgba(40,40,40,.3)}.ui.menu:not(.vertical) .left.item,.ui.menu:not(.vertical) .left.menu{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-right:auto!important}.ui.menu:not(.vertical) .right.item,.ui.menu:not(.vertical) .right.menu{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-left:auto!important}.ui.menu .right.item::before,.ui.menu .right.menu>.item::before{right:auto;left:0}.ui.vertical.menu{display:block;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;background:#FFF;box-shadow:0 1px 2px 0 rgba(34,36,38,.15)}.ui.vertical.menu .item{display:block;background:0 0;border-top:none;border-right:none}.ui.vertical.menu>.item:first-child{border-radius:.28571429rem .28571429rem 0 0}.ui.vertical.menu>.item:last-child{border-radius:0 0 .28571429rem .28571429rem}.ui.vertical.menu .item>i.icon{width:1.18em;float:right;margin:0 0 0 .5em}.ui.vertical.menu .item>.label+i.icon{float:none;margin:0 .5em 0 0}.ui.vertical.menu .item:before{position:absolute;content:'';top:0;left:0;width:100%;height:1px;background:rgba(34,36,38,.1)}.ui.vertical.menu .item:first-child:before{display:none!important}.ui.vertical.menu .item>.menu{margin:.5em -1.14285714em 0}.ui.vertical.menu .menu .item{background:0 0;padding:.5em 1.33333333em;font-size:.85714286em;color:rgba(0,0,0,.5)}.ui.vertical.menu .item .menu .link.item:hover,.ui.vertical.menu .item .menu a.item:hover{color:rgba(0,0,0,.85)}.ui.vertical.menu .menu .item:before{display:none}.ui.vertical.menu .active.item{background:rgba(0,0,0,.05);border-radius:0;box-shadow:none}.ui.vertical.menu>.active.item:first-child{border-radius:.28571429rem .28571429rem 0 0}.ui.vertical.menu>.active.item:last-child{border-radius:0 0 .28571429rem .28571429rem}.ui.vertical.menu>.active.item:only-child{border-radius:.28571429rem}.ui.vertical.menu .active.item .menu .active.item{border-left:none}.ui.vertical.menu .item .menu .active.item{background-color:transparent;font-weight:700;color:rgba(0,0,0,.95)}.ui.tabular.menu{border-radius:0;box-shadow:none!important;border:none;background:none;border-bottom:1px solid #D4D4D5}.ui.tabular.fluid.menu{width:calc(100% + 2px)!important}.ui.tabular.menu .item{background:0 0;border-bottom:none;border-left:1px solid transparent;border-right:1px solid transparent;border-top:2px solid transparent;padding:.92857143em 1.42857143em;color:rgba(0,0,0,.87)}.ui.tabular.menu .item:before{display:none}.ui.tabular.menu .item:hover{background-color:transparent;color:rgba(0,0,0,.8)}.ui.tabular.menu .active.item{background:#FFF;color:rgba(0,0,0,.95);border-top-width:1px;border-color:#D4D4D5;font-weight:700;margin-bottom:-1px;box-shadow:none;border-radius:.28571429rem .28571429rem 0 0!important}.ui.tabular.menu+.attached:not(.top).segment,.ui.tabular.menu+.attached:not(.top).segment+.attached:not(.top).segment{border-top:none;margin-left:0;margin-top:0;margin-right:0;width:100%}.top.attached.segment+.ui.bottom.tabular.menu{position:relative;width:calc(100% + 2px);left:-1px}.ui.bottom.tabular.menu{background:none;border-radius:0;box-shadow:none!important;border-bottom:none;border-top:1px solid #D4D4D5}.ui.bottom.tabular.menu .item{background:0 0;border-left:1px solid transparent;border-right:1px solid transparent;border-bottom:1px solid transparent;border-top:none}.ui.bottom.tabular.menu .active.item{background:#FFF;color:rgba(0,0,0,.95);border-color:#D4D4D5;margin:-1px 0 0;border-radius:0 0 .28571429rem .28571429rem!important}.ui.vertical.tabular.menu{background:none;border-radius:0;box-shadow:none!important;border-bottom:none;border-right:1px solid #D4D4D5}.ui.vertical.tabular.menu .item{background:0 0;border-left:1px solid transparent;border-bottom:1px solid transparent;border-top:1px solid transparent;border-right:none}.ui.vertical.tabular.menu .active.item{background:#FFF;color:rgba(0,0,0,.95);border-color:#D4D4D5;margin:0 -1px 0 0;border-radius:.28571429rem 0 0 .28571429rem!important}.ui.vertical.right.tabular.menu{background:none;border-radius:0;box-shadow:none!important;border-bottom:none;border-right:none;border-left:1px solid #D4D4D5}.ui.vertical.right.tabular.menu .item{background:0 0;border-right:1px solid transparent;border-bottom:1px solid transparent;border-top:1px solid transparent;border-left:none}.ui.vertical.right.tabular.menu .active.item{background:#FFF;color:rgba(0,0,0,.95);border-color:#D4D4D5;margin:0 0 0 -1px;border-radius:0 .28571429rem .28571429rem 0!important}.ui.tabular.menu .active.dropdown.item{margin-bottom:0;border-left:1px solid transparent;border-right:1px solid transparent;border-top:2px solid transparent;border-bottom:none}.ui.pagination.menu{margin:0;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.ui.pagination.menu .item:last-child{border-radius:0 .28571429rem .28571429rem 0}.ui.pagination.menu .item:last-child:before{display:none}.ui.pagination.menu .item{min-width:3em;text-align:center}.ui.pagination.menu .icon.item i.icon{vertical-align:top}.ui.pagination.menu .active.item{border-top:none;padding-top:.92857143em;background-color:rgba(0,0,0,.05);color:rgba(0,0,0,.95);box-shadow:none}.ui.secondary.menu{background:0 0;margin-left:-.35714286em;margin-right:-.35714286em;border-radius:0;border:none;box-shadow:none}.ui.secondary.menu .item{-webkit-align-self:center;-ms-flex-item-align:center;align-self:center;box-shadow:none;border:none;padding:.78571429em .92857143em;margin:0 .35714286em;background:0 0;-webkit-transition:color .1s ease;transition:color .1s ease;border-radius:.28571429rem}.ui.secondary.menu .item:before{display:none!important}.ui.secondary.menu .header.item{border-radius:0;border-right:none;background:none}.ui.secondary.menu .item>img:not(.ui){margin:0}.ui.secondary.menu .dropdown.item:hover,.ui.secondary.menu .link.item:hover,.ui.secondary.menu a.item:hover{background:rgba(0,0,0,.05);color:rgba(0,0,0,.95)}.ui.secondary.menu .active.item{box-shadow:none;background:rgba(0,0,0,.05);color:rgba(0,0,0,.95);border-radius:.28571429rem}.ui.secondary.menu .active.item:hover{box-shadow:none;background:rgba(0,0,0,.05);color:rgba(0,0,0,.95)}.ui.secondary.inverted.menu .link.item,.ui.secondary.inverted.menu a.item{color:rgba(255,255,255,.7)!important}.ui.secondary.inverted.menu .dropdown.item:hover,.ui.secondary.inverted.menu .link.item:hover,.ui.secondary.inverted.menu a.item:hover{background:rgba(255,255,255,.08);color:#fff!important}.ui.secondary.inverted.menu .active.item{background:rgba(255,255,255,.15);color:#fff!important}.ui.secondary.item.menu{margin-left:0;margin-right:0}.ui.secondary.item.menu .item:last-child{margin-right:0}.ui.secondary.attached.menu{box-shadow:none}.ui.vertical.secondary.menu .item:not(.dropdown)>.menu{margin:0 -.92857143em}.ui.vertical.secondary.menu .item:not(.dropdown)>.menu>.item{margin:0;padding:.5em 1.33333333em}.ui.secondary.vertical.menu>.item{border:none;margin:0 0 .35714286em;border-radius:.28571429rem!important}.ui.secondary.vertical.menu>.header.item{border-radius:0}.ui.secondary.inverted.menu,.ui.vertical.secondary.menu .item>.menu .item{background-color:transparent}.ui.secondary.pointing.menu{margin-left:0;margin-right:0;border-bottom:2px solid rgba(34,36,38,.15)}.ui.secondary.pointing.menu .item{border-bottom-color:transparent;border-bottom-style:solid;border-radius:0;-webkit-align-self:flex-end;-ms-flex-item-align:end;align-self:flex-end;margin:0 0 -2px;padding:.85714286em 1.14285714em;border-bottom-width:2px;-webkit-transition:color .1s ease;transition:color .1s ease}.ui.secondary.pointing.menu .header.item{color:rgba(0,0,0,.85)!important}.ui.secondary.pointing.menu .text.item{box-shadow:none!important}.ui.secondary.pointing.menu .item:after{display:none}.ui.secondary.pointing.menu .dropdown.item:hover,.ui.secondary.pointing.menu .link.item:hover,.ui.secondary.pointing.menu a.item:hover{background-color:transparent;color:rgba(0,0,0,.87)}.ui.secondary.pointing.menu .dropdown.item:active,.ui.secondary.pointing.menu .link.item:active,.ui.secondary.pointing.menu a.item:active{background-color:transparent;border-color:rgba(34,36,38,.15)}.ui.secondary.pointing.menu .active.item{background-color:transparent;box-shadow:none;border-color:#1B1C1D;font-weight:700;color:rgba(0,0,0,.95)}.ui.secondary.pointing.menu .active.item:hover{border-color:#1B1C1D;color:rgba(0,0,0,.95)}.ui.secondary.pointing.menu .active.dropdown.item{border-color:transparent}.ui.secondary.vertical.pointing.menu{border-bottom-width:0;border-right-width:2px;border-right-style:solid;border-right-color:rgba(34,36,38,.15)}.ui.secondary.vertical.pointing.menu .item{border-bottom:none;border-right-style:solid;border-right-color:transparent;border-radius:0!important;margin:0 -2px 0 0;border-right-width:2px}.ui.secondary.vertical.pointing.menu .active.item{border-color:#1B1C1D}.ui.secondary.inverted.pointing.menu{border-width:2px;border-color:rgba(34,36,38,.15)}.ui.secondary.inverted.pointing.menu .item{color:rgba(255,255,255,.9)}.ui.secondary.inverted.pointing.menu .header.item{color:#FFF!important}.ui.secondary.inverted.pointing.menu .link.item:hover,.ui.secondary.inverted.pointing.menu a.item:hover{color:rgba(0,0,0,.95)}.ui.secondary.inverted.pointing.menu .active.item{border-color:#FFF;color:#fff}.ui.text.menu{background:none;border-radius:0;box-shadow:none;border:none;margin:1em -.5em}.ui.text.menu .item{border-radius:0;box-shadow:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center;margin:0;padding:.35714286em .5em;font-weight:400;color:rgba(0,0,0,.6);-webkit-transition:opacity .1s ease;transition:opacity .1s ease}.ui.text.menu .item:before,.ui.text.menu .menu .item:before{display:none!important}.ui.text.menu .header.item{background-color:transparent;opacity:1;color:rgba(0,0,0,.85);font-size:.92857143em;text-transform:uppercase;font-weight:700}.ui.text.item.menu .item,.ui.text.menu .item>img:not(.ui){margin:0}.ui.vertical.text.menu{margin:1em 0}.ui.vertical.text.menu:first-child{margin-top:0}.ui.vertical.text.menu:last-child{margin-bottom:0}.ui.vertical.text.menu .item{margin:.57142857em 0;padding-left:0;padding-right:0}.ui.vertical.text.menu .item>i.icon{float:none;margin:0 .35714286em 0 0}.ui.vertical.text.menu .header.item{margin:.57142857em 0 .71428571em}.ui.vertical.text.menu .item:not(.dropdown)>.menu{margin:0}.ui.vertical.text.menu .item:not(.dropdown)>.menu>.item{margin:0;padding:.5em 0}.ui.text.menu .item:hover{opacity:1;background-color:transparent}.ui.text.menu .active.item{background-color:transparent;border:none;box-shadow:none;font-weight:400;color:rgba(0,0,0,.95)}.ui.text.menu .active.item:hover{background-color:transparent}.ui.text.attached.menu,.ui.text.pointing.menu .active.item:after{box-shadow:none}.ui.inverted.text.menu,.ui.inverted.text.menu .active.item,.ui.inverted.text.menu .item,.ui.inverted.text.menu .item:hover{background-color:transparent!important}.ui.fluid.text.menu{margin-left:0;margin-right:0}.ui.vertical.icon.menu{display:inline-block;width:auto}.ui.icon.menu .item{height:auto;text-align:center;color:#1B1C1D}.ui.icon.menu .item>.icon:not(.dropdown){margin:0;opacity:1}.ui.icon.menu .icon:before{opacity:1}.ui.menu .icon.item>.icon{width:auto;margin:0 auto}.ui.vertical.icon.menu .item>.icon:not(.dropdown){display:block;opacity:1;margin:0 auto;float:none}.ui.inverted.icon.menu .item{color:#FFF}.ui.labeled.icon.menu{text-align:center}.ui.labeled.icon.menu .item{min-width:6em;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.ui.labeled.icon.menu .item>.icon:not(.dropdown){height:1em;display:block;font-size:1.71428571em!important;margin:0 auto .5rem!important}.ui.fluid.labeled.icon.menu>.item{min-width:0}@media only screen and (max-width:767px){.ui.stackable.menu{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.ui.stackable.menu .item{width:100%!important}.ui.stackable.menu .item:before{position:absolute;content:'';top:auto;bottom:0;left:0;width:100%;height:1px;background:rgba(34,36,38,.1)}.ui.stackable.menu .left.item,.ui.stackable.menu .left.menu{margin-right:0!important}.ui.stackable.menu .right.item,.ui.stackable.menu .right.menu{margin-left:0!important}}.ui.menu .red.active.item,.ui.red.menu .active.item{border-color:#DB2828!important;color:#DB2828!important}.ui.menu .orange.active.item,.ui.orange.menu .active.item{border-color:#F2711C!important;color:#F2711C!important}.ui.menu .yellow.active.item,.ui.yellow.menu .active.item{border-color:#FBBD08!important;color:#FBBD08!important}.ui.menu .olive.active.item,.ui.olive.menu .active.item{border-color:#B5CC18!important;color:#B5CC18!important}.ui.green.menu .active.item,.ui.menu .green.active.item{border-color:#21BA45!important;color:#21BA45!important}.ui.menu .teal.active.item,.ui.teal.menu .active.item{border-color:#00B5AD!important;color:#00B5AD!important}.ui.blue.menu .active.item,.ui.menu .blue.active.item{border-color:#2185D0!important;color:#2185D0!important}.ui.menu .violet.active.item,.ui.violet.menu .active.item{border-color:#6435C9!important;color:#6435C9!important}.ui.menu .purple.active.item,.ui.purple.menu .active.item{border-color:#A333C8!important;color:#A333C8!important}.ui.menu .pink.active.item,.ui.pink.menu .active.item{border-color:#E03997!important;color:#E03997!important}.ui.brown.menu .active.item,.ui.menu .brown.active.item{border-color:#A5673F!important;color:#A5673F!important}.ui.grey.menu .active.item,.ui.menu .grey.active.item{border-color:#767676!important;color:#767676!important}.ui.inverted.menu{border:0 solid transparent;background:#1B1C1D;box-shadow:none}.ui.inverted.menu .item,.ui.inverted.menu .item>a:not(.ui){background:0 0;color:rgba(255,255,255,.9)}.ui.inverted.menu .item.menu{background:0 0}.ui.inverted.menu .item:before,.ui.vertical.inverted.menu .item:before{background:rgba(255,255,255,.08)}.ui.vertical.inverted.menu .menu .item,.ui.vertical.inverted.menu .menu .item a:not(.ui){color:rgba(255,255,255,.5)}.ui.inverted.menu .header.item{margin:0;background:0 0;box-shadow:none}.ui.inverted.menu .item.disabled,.ui.inverted.menu .item.disabled:hover{color:rgba(225,225,225,.3)}.ui.inverted.menu .dropdown.item:hover,.ui.inverted.menu .link.item:hover,.ui.inverted.menu a.item:hover,.ui.link.inverted.menu .item:hover{background:rgba(255,255,255,.08);color:#fff}.ui.vertical.inverted.menu .item .menu .link.item:hover,.ui.vertical.inverted.menu .item .menu a.item:hover{background:0 0;color:#fff}.ui.inverted.menu .link.item:active,.ui.inverted.menu a.item:active{background:rgba(255,255,255,.08);color:#fff}.ui.inverted.menu .active.item{background:rgba(255,255,255,.15);color:#fff!important}.ui.inverted.vertical.menu .item .menu .active.item{background:0 0;color:#FFF}.ui.inverted.pointing.menu .active.item:after{background:#3D3E3F!important;margin:0!important;box-shadow:none!important;border:none!important}.ui.inverted.menu .active.item:hover{background:rgba(255,255,255,.15);color:#FFF!important}.ui.inverted.pointing.menu .active.item:hover:after{background:#3D3E3F!important}.ui.floated.menu{float:left;margin:0 .5rem 0 0}.ui.floated.menu .item:last-child:before{display:none}.ui.right.floated.menu{float:right;margin:0 0 0 .5rem}.ui.inverted.menu .red.active.item,.ui.inverted.red.menu{background-color:#DB2828}.ui.inverted.red.menu .item:before{background-color:rgba(34,36,38,.1)}.ui.inverted.red.menu .active.item{background-color:rgba(0,0,0,.1)!important}.ui.inverted.menu .orange.active.item,.ui.inverted.orange.menu{background-color:#F2711C}.ui.inverted.orange.menu .item:before{background-color:rgba(34,36,38,.1)}.ui.inverted.orange.menu .active.item{background-color:rgba(0,0,0,.1)!important}.ui.inverted.menu .yellow.active.item,.ui.inverted.yellow.menu{background-color:#FBBD08}.ui.inverted.yellow.menu .item:before{background-color:rgba(34,36,38,.1)}.ui.inverted.yellow.menu .active.item{background-color:rgba(0,0,0,.1)!important}.ui.inverted.menu .olive.active.item,.ui.inverted.olive.menu{background-color:#B5CC18}.ui.inverted.olive.menu .item:before{background-color:rgba(34,36,38,.1)}.ui.inverted.olive.menu .active.item{background-color:rgba(0,0,0,.1)!important}.ui.inverted.green.menu,.ui.inverted.menu .green.active.item{background-color:#21BA45}.ui.inverted.green.menu .item:before{background-color:rgba(34,36,38,.1)}.ui.inverted.green.menu .active.item{background-color:rgba(0,0,0,.1)!important}.ui.inverted.menu .teal.active.item,.ui.inverted.teal.menu{background-color:#00B5AD}.ui.inverted.teal.menu .item:before{background-color:rgba(34,36,38,.1)}.ui.inverted.teal.menu .active.item{background-color:rgba(0,0,0,.1)!important}.ui.inverted.blue.menu,.ui.inverted.menu .blue.active.item{background-color:#2185D0}.ui.inverted.blue.menu .item:before{background-color:rgba(34,36,38,.1)}.ui.inverted.blue.menu .active.item{background-color:rgba(0,0,0,.1)!important}.ui.inverted.menu .violet.active.item,.ui.inverted.violet.menu{background-color:#6435C9}.ui.inverted.violet.menu .item:before{background-color:rgba(34,36,38,.1)}.ui.inverted.violet.menu .active.item{background-color:rgba(0,0,0,.1)!important}.ui.inverted.menu .purple.active.item,.ui.inverted.purple.menu{background-color:#A333C8}.ui.inverted.purple.menu .item:before{background-color:rgba(34,36,38,.1)}.ui.inverted.purple.menu .active.item{background-color:rgba(0,0,0,.1)!important}.ui.inverted.menu .pink.active.item,.ui.inverted.pink.menu{background-color:#E03997}.ui.inverted.pink.menu .item:before{background-color:rgba(34,36,38,.1)}.ui.inverted.pink.menu .active.item{background-color:rgba(0,0,0,.1)!important}.ui.inverted.brown.menu,.ui.inverted.menu .brown.active.item{background-color:#A5673F}.ui.inverted.brown.menu .item:before{background-color:rgba(34,36,38,.1)}.ui.inverted.brown.menu .active.item{background-color:rgba(0,0,0,.1)!important}.ui.inverted.grey.menu,.ui.inverted.menu .grey.active.item{background-color:#767676}.ui.inverted.grey.menu .item:before{background-color:rgba(34,36,38,.1)}.ui.inverted.grey.menu .active.item{background-color:rgba(0,0,0,.1)!important}.ui.fitted.menu .item,.ui.fitted.menu .item .menu .item,.ui.menu .fitted.item{padding:0}.ui.horizontally.fitted.menu .item,.ui.horizontally.fitted.menu .item .menu .item,.ui.menu .horizontally.fitted.item{padding-top:.92857143em;padding-bottom:.92857143em}.ui.menu .vertically.fitted.item,.ui.vertically.fitted.menu .item,.ui.vertically.fitted.menu .item .menu .item{padding-left:1.14285714em;padding-right:1.14285714em}.ui.borderless.menu .item .menu .item:before,.ui.borderless.menu .item:before,.ui.menu .borderless.item:before{background:0 0!important}.ui.compact.menu{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;margin:0;vertical-align:middle}.ui.compact.vertical.menu{display:inline-block;width:auto!important}.ui.compact.menu .item:last-child{border-radius:0 .28571429rem .28571429rem 0}.ui.compact.menu .item:last-child:before{display:none}.ui.compact.vertical.menu .item:last-child::before{display:block}.ui.menu.fluid,.ui.vertical.menu.fluid{width:100%!important}.ui.item.menu,.ui.item.menu .item{width:100%;padding-left:0!important;padding-right:0!important;margin-left:0!important;margin-right:0!important;text-align:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.ui.item.menu .item:last-child:before{display:none}.ui.menu.two.item .item{width:50%}.ui.menu.three.item .item{width:33.333%}.ui.menu.four.item .item{width:25%}.ui.menu.five.item .item{width:20%}.ui.menu.six.item .item{width:16.666%}.ui.menu.seven.item .item{width:14.285%}.ui.menu.eight.item .item{width:12.5%}.ui.menu.nine.item .item{width:11.11%}.ui.menu.ten.item .item{width:10%}.ui.menu.eleven.item .item{width:9.09%}.ui.menu.twelve.item .item{width:8.333%}.ui.menu.fixed{position:fixed;z-index:101;margin:0;width:100%}.ui.menu.fixed,.ui.menu.fixed .item:first-child,.ui.menu.fixed .item:last-child{border-radius:0!important}.ui.fixed.menu,.ui[class*="top fixed"].menu{top:0;left:0;right:auto;bottom:auto}.ui[class*="top fixed"].menu{border-top:none;border-left:none;border-right:none}.ui[class*="right fixed"].menu{border-top:none;border-bottom:none;border-right:none;top:0;right:0;left:auto;bottom:auto;width:auto;height:100%}.ui[class*="bottom fixed"].menu{border-bottom:none;border-left:none;border-right:none;bottom:0;left:0;top:auto;right:auto}.ui[class*="left fixed"].menu{border-top:none;border-bottom:none;border-left:none;top:0;left:0;right:auto;bottom:auto;width:auto;height:100%}.ui.fixed.menu+.ui.grid{padding-top:2.75rem}.ui.pointing.menu .item:after{visibility:hidden;position:absolute;content:'';top:100%;left:50%;-webkit-transform:translateX(-50%) translateY(-50%) rotate(45deg);transform:translateX(-50%) translateY(-50%) rotate(45deg);background:0 0;margin:.5px 0 0;width:.57142857em;height:.57142857em;border:none;border-bottom:1px solid #D4D4D5;border-right:1px solid #D4D4D5;z-index:2;-webkit-transition:background .1s ease;transition:background .1s ease}.ui.vertical.pointing.menu .item:after{position:absolute;top:50%;right:0;bottom:auto;left:auto;-webkit-transform:translateX(50%) translateY(-50%) rotate(45deg);transform:translateX(50%) translateY(-50%) rotate(45deg);margin:0 -.5px 0 0;border:none;border-top:1px solid #D4D4D5;border-right:1px solid #D4D4D5}.ui.pointing.menu .active.item:after{visibility:visible}.ui.pointing.menu .active.dropdown.item:after{visibility:hidden}.ui.pointing.menu .active.item .menu .active.item:after,.ui.pointing.menu .dropdown.active.item:after{display:none}.ui.pointing.menu .active.item:after,.ui.pointing.menu .active.item:hover:after,.ui.vertical.pointing.menu .active.item:after,.ui.vertical.pointing.menu .active.item:hover:after{background-color:#F2F2F2}.ui.vertical.pointing.menu .menu .active.item:after{background-color:#FFF}.ui.attached.menu{top:0;bottom:0;border-radius:0;margin:0 -1px;width:calc(100% + 2px);max-width:calc(100% + 2px);box-shadow:none}.ui.attached+.ui.attached.menu:not(.top){border-top:none}.ui[class*="top attached"].menu{bottom:0;margin-bottom:0;top:0;margin-top:1rem;border-radius:.28571429rem .28571429rem 0 0}.ui.menu[class*="top attached"]:first-child{margin-top:0}.ui[class*="bottom attached"].menu{bottom:0;margin-top:0;top:0;margin-bottom:1rem;box-shadow:0 1px 2px 0 rgba(34,36,38,.15),none;border-radius:0 0 .28571429rem .28571429rem}.ui[class*="bottom attached"].menu:last-child{margin-bottom:0}.ui.top.attached.menu>.item:first-child{border-radius:.28571429rem 0 0}.ui.bottom.attached.menu>.item:first-child{border-radius:0 0 0 .28571429rem}.ui.attached.menu:not(.tabular){border:1px solid #D4D4D5}.ui.attached.inverted.menu{border:none}.ui.attached.tabular.menu{margin-left:0;margin-right:0;width:100%}.ui.mini.menu{font-size:.78571429rem}.ui.mini.vertical.menu{width:9rem}.ui.tiny.menu{font-size:.85714286rem}.ui.tiny.vertical.menu{width:11rem}.ui.small.menu{font-size:.92857143rem}.ui.small.vertical.menu{width:13rem}.ui.menu{font-size:1rem}.ui.vertical.menu{width:15rem}.ui.large.menu{font-size:1.07142857rem}.ui.large.vertical.menu{width:18rem}.ui.huge.menu{font-size:1.14285714rem}.ui.huge.vertical.menu{width:20rem}.ui.big.menu{font-size:1.21428571rem}.ui.big.vertical.menu{width:22rem}.ui.massive.menu{font-size:1.28571429rem}.ui.massive.vertical.menu{width:25rem}.ui.message{position:relative;min-height:1em;margin:1em 0;background:#F8F8F9;padding:1em 1.5em;line-height:1.4285em;color:rgba(0,0,0,.87);-webkit-transition:opacity .1s ease,color .1s ease,background .1s ease,box-shadow .1s ease;transition:opacity .1s ease,color .1s ease,background .1s ease,box-shadow .1s ease;border-radius:.28571429rem;box-shadow:0 0 0 1px rgba(34,36,38,.22) inset,0 0 0 0 transparent}.ui.message:first-child{margin-top:0}.ui.message:last-child{margin-bottom:0}.ui.message .header{display:block;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-weight:700;margin:-.14285em 0 0}.ui.message .header:not(.ui){font-size:1.14285714em}.ui.message p{opacity:.85;margin:.75em 0}.ui.message p:first-child{margin-top:0}.ui.message p:last-child{margin-bottom:0}.ui.message .header+p{margin-top:.25em}.ui.message .list:not(.ui){text-align:left;padding:0;opacity:.85;list-style-position:inside;margin:.5em 0 0}.ui.message .list:not(.ui):first-child{margin-top:0}.ui.message .list:not(.ui):last-child{margin-bottom:0}.ui.message .list:not(.ui) li{position:relative;list-style-type:none;margin:0 0 .3em 1em;padding:0}.ui.message .list:not(.ui) li:before{position:absolute;content:'•';left:-1em;height:100%;vertical-align:baseline}.ui.message .list:not(.ui) li:last-child{margin-bottom:0}.ui.message>.icon{margin-right:.6em}.ui.message>.close.icon{cursor:pointer;position:absolute;margin:0;top:.78575em;right:.5em;opacity:.7;-webkit-transition:opacity .1s ease;transition:opacity .1s ease}.ui.message>.close.icon:hover{opacity:1}.ui.message>:first-child{margin-top:0}.ui.message>:last-child{margin-bottom:0}.ui.dropdown .menu>.message{margin:0 -1px}.ui.visible.visible.visible.visible.message{display:block}.ui.icon.visible.visible.visible.visible.message{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.ui.hidden.hidden.hidden.hidden.message{display:none}.ui.compact.message{display:inline-block}.ui.attached.message{margin-bottom:-1px;border-radius:.28571429rem .28571429rem 0 0;box-shadow:0 0 0 1px rgba(34,36,38,.15) inset;margin-left:-1px;margin-right:-1px}.ui.attached+.ui.attached.message:not(.top):not(.bottom){margin-top:-1px;border-radius:0}.ui.bottom.attached.message{margin-top:-1px;border-radius:0 0 .28571429rem .28571429rem;box-shadow:0 0 0 1px rgba(34,36,38,.15) inset,0 1px 2px 0 rgba(34,36,38,.15)}.ui.bottom.attached.message:not(:last-child){margin-bottom:1em}.ui.attached.icon.message{width:auto}.ui.icon.message{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.ui.icon.message>.icon:not(.close){display:block;-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;line-height:1;vertical-align:middle;font-size:3em;opacity:.8}.ui.icon.message>.content{display:block;-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;vertical-align:middle}.ui.icon.message .icon:not(.close)+.content{padding-left:0}.ui.icon.message .circular.icon{width:1em}.ui.floating.message{box-shadow:0 0 0 1px rgba(34,36,38,.22) inset,0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.15)}.ui.positive.message{background-color:#FCFFF5;color:#2C662D}.ui.attached.positive.message,.ui.positive.message{box-shadow:0 0 0 1px #A3C293 inset,0 0 0 0 transparent}.ui.positive.message .header{color:#1A531B}.ui.negative.message{background-color:#FFF6F6;color:#9F3A38}.ui.attached.negative.message,.ui.negative.message{box-shadow:0 0 0 1px #E0B4B4 inset,0 0 0 0 transparent}.ui.negative.message .header{color:#912D2B}.ui.info.message{background-color:#F8FFFF;color:#276F86}.ui.attached.info.message,.ui.info.message{box-shadow:0 0 0 1px #A9D5DE inset,0 0 0 0 transparent}.ui.info.message .header{color:#0E566C}.ui.warning.message{background-color:#FFFAF3;color:#573A08}.ui.attached.warning.message,.ui.warning.message{box-shadow:0 0 0 1px #C9BA9B inset,0 0 0 0 transparent}.ui.warning.message .header{color:#794B02}.ui.error.message{background-color:#FFF6F6;color:#9F3A38}.ui.attached.error.message,.ui.error.message{box-shadow:0 0 0 1px #E0B4B4 inset,0 0 0 0 transparent}.ui.error.message .header{color:#912D2B}.ui.success.message{background-color:#FCFFF5;color:#2C662D}.ui.attached.success.message,.ui.success.message{box-shadow:0 0 0 1px #A3C293 inset,0 0 0 0 transparent}.ui.success.message .header{color:#1A531B}.ui.black.message,.ui.inverted.message{background-color:#1B1C1D;color:rgba(255,255,255,.9)}.ui.red.message{background-color:#FFE8E6;color:#DB2828;box-shadow:0 0 0 1px #DB2828 inset,0 0 0 0 transparent}.ui.red.message .header{color:#c82121}.ui.orange.message{background-color:#FFEDDE;color:#F2711C;box-shadow:0 0 0 1px #F2711C inset,0 0 0 0 transparent}.ui.orange.message .header{color:#e7640d}.ui.yellow.message{background-color:#FFF8DB;color:#B58105;box-shadow:0 0 0 1px #B58105 inset,0 0 0 0 transparent}.ui.yellow.message .header{color:#9c6f04}.ui.olive.message{background-color:#FBFDEF;color:#8ABC1E;box-shadow:0 0 0 1px #8ABC1E inset,0 0 0 0 transparent}.ui.olive.message .header{color:#7aa61a}.ui.green.message{background-color:#E5F9E7;color:#1EBC30;box-shadow:0 0 0 1px #1EBC30 inset,0 0 0 0 transparent}.ui.green.message .header{color:#1aa62a}.ui.teal.message{background-color:#E1F7F7;color:#10A3A3;box-shadow:0 0 0 1px #10A3A3 inset,0 0 0 0 transparent}.ui.teal.message .header{color:#0e8c8c}.ui.blue.message{background-color:#DFF0FF;color:#2185D0;box-shadow:0 0 0 1px #2185D0 inset,0 0 0 0 transparent}.ui.blue.message .header{color:#1e77ba}.ui.violet.message{background-color:#EAE7FF;color:#6435C9;box-shadow:0 0 0 1px #6435C9 inset,0 0 0 0 transparent}.ui.violet.message .header{color:#5a30b5}.ui.purple.message{background-color:#F6E7FF;color:#A333C8;box-shadow:0 0 0 1px #A333C8 inset,0 0 0 0 transparent}.ui.purple.message .header{color:#922eb4}.ui.pink.message{background-color:#FFE3FB;color:#E03997;box-shadow:0 0 0 1px #E03997 inset,0 0 0 0 transparent}.ui.pink.message .header{color:#dd238b}.ui.brown.message{background-color:#F1E2D3;color:#A5673F;box-shadow:0 0 0 1px #A5673F inset,0 0 0 0 transparent}.ui.brown.message .header{color:#935b38}.ui.mini.message{font-size:.78571429em}.ui.tiny.message{font-size:.85714286em}.ui.small.message{font-size:.92857143em}.ui.message{font-size:1em}.ui.large.message{font-size:1.14285714em}.ui.big.message{font-size:1.28571429em}.ui.huge.message{font-size:1.42857143em}.ui.massive.message{font-size:1.71428571em}.ui.table{width:100%;background:#FFF;margin:1em 0;border:1px solid rgba(34,36,38,.15);box-shadow:none;border-radius:.28571429rem;text-align:left;color:rgba(0,0,0,.87);border-collapse:separate;border-spacing:0}.ui.table:first-child{margin-top:0}.ui.table:last-child{margin-bottom:0}.ui.table td,.ui.table th{-webkit-transition:background .1s ease,color .1s ease;transition:background .1s ease,color .1s ease}.ui.table thead{box-shadow:none}.ui.table thead th{cursor:auto;background:#F9FAFB;text-align:inherit;color:rgba(0,0,0,.87);padding:.92857143em .78571429em;vertical-align:inherit;font-style:none;font-weight:700;text-transform:none;border-bottom:1px solid rgba(34,36,38,.1);border-left:none}.ui.table thead tr>th:first-child{border-left:none}.ui.table thead tr:first-child>th:first-child{border-radius:.28571429rem 0 0}.ui.table thead tr:first-child>th:last-child{border-radius:0 .28571429rem 0 0}.ui.table thead tr:first-child>th:only-child{border-radius:.28571429rem .28571429rem 0 0}.ui.table tfoot{box-shadow:none}.ui.table tfoot th{cursor:auto;border-top:1px solid rgba(34,36,38,.15);background:#F9FAFB;text-align:inherit;color:rgba(0,0,0,.87);padding:.78571429em;vertical-align:middle;font-style:normal;font-weight:400;text-transform:none}.ui.table tfoot tr>th:first-child{border-left:none}.ui.table tfoot tr:first-child>th:first-child{border-radius:0 0 0 .28571429rem}.ui.table tfoot tr:first-child>th:last-child{border-radius:0 0 .28571429rem}.ui.table tfoot tr:first-child>th:only-child{border-radius:0 0 .28571429rem .28571429rem}.ui.table tr td{border-top:1px solid rgba(34,36,38,.1)}.ui.table tr:first-child td{border-top:none}.ui.table td{padding:.78571429em;text-align:inherit}.ui.table>.icon{vertical-align:baseline}.ui.table>.icon:only-child{margin:0}.ui.table.segment{padding:0}.ui.table.segment:after{display:none}.ui.table.segment.stacked:after{display:block}@media only screen and (max-width:767px){.ui.table:not(.unstackable){width:100%;padding:0}.ui.table:not(.unstackable) tbody,.ui.table:not(.unstackable) tr,.ui.table:not(.unstackable) tr>td,.ui.table:not(.unstackable) tr>th{width:auto!important;display:block!important}.ui.table:not(.unstackable) tfoot,.ui.table:not(.unstackable) thead{display:block}.ui.table:not(.unstackable) tr{padding-top:1em;padding-bottom:1em;box-shadow:0 -1px 0 0 rgba(0,0,0,.1) inset!important}.ui.table:not(.unstackable) tr>td,.ui.table:not(.unstackable) tr>th{background:0 0;border:none!important;padding:.25em .75em!important;box-shadow:none!important}.ui.table:not(.unstackable) td:first-child,.ui.table:not(.unstackable) th:first-child{font-weight:700}.ui.definition.table:not(.unstackable) thead th:first-child{box-shadow:none!important}}.ui.table td .image,.ui.table td .image img,.ui.table th .image,.ui.table th .image img{max-width:none}.ui.structured.table{border-collapse:collapse}.ui.structured.table thead th{border-left:none;border-right:none}.ui.structured.sortable.table thead th{border-left:1px solid rgba(34,36,38,.15);border-right:1px solid rgba(34,36,38,.15)}.ui.structured.basic.table th{border-left:none;border-right:none}.ui.structured.celled.table tr td,.ui.structured.celled.table tr th{border-left:1px solid rgba(34,36,38,.1);border-right:1px solid rgba(34,36,38,.1)}.ui.definition.table thead:not(.full-width) th:first-child{pointer-events:none;background:0 0;font-weight:400;color:rgba(0,0,0,.4);box-shadow:-1px -1px 0 1px #FFF}.ui.definition.table tfoot:not(.full-width) th:first-child{pointer-events:none;background:0 0;font-weight:rgba(0,0,0,.4);color:normal;box-shadow:1px 1px 0 1px #FFF}.ui.celled.definition.table thead:not(.full-width) th:first-child{box-shadow:0 -1px 0 1px #FFF}.ui.celled.definition.table tfoot:not(.full-width) th:first-child{box-shadow:0 1px 0 1px #FFF}.ui.definition.table tr td.definition,.ui.definition.table tr td:first-child:not(.ignored){background:rgba(0,0,0,.03);font-weight:700;color:rgba(0,0,0,.95);text-transform:'';box-shadow:'';text-align:'';font-size:1em;padding-left:'';padding-right:''}.ui.definition.table td:nth-child(2),.ui.definition.table tfoot:not(.full-width) th:nth-child(2),.ui.definition.table thead:not(.full-width) th:nth-child(2){border-left:1px solid rgba(34,36,38,.15)}.ui.table td.positive,.ui.table tr.positive{box-shadow:0 0 0 #A3C293 inset;background:#FCFFF5!important;color:#2C662D!important}.ui.table td.negative,.ui.table tr.negative{box-shadow:0 0 0 #E0B4B4 inset;background:#FFF6F6!important;color:#9F3A38!important}.ui.table td.error,.ui.table tr.error{box-shadow:0 0 0 #E0B4B4 inset;background:#FFF6F6!important;color:#9F3A38!important}.ui.table td.warning,.ui.table tr.warning{box-shadow:0 0 0 #C9BA9B inset;background:#FFFAF3!important;color:#573A08!important}.ui.table td.active,.ui.table tr.active{box-shadow:0 0 0 rgba(0,0,0,.87) inset;background:#E0E0E0!important;color:rgba(0,0,0,.87)!important}.ui.table tr td.disabled,.ui.table tr.disabled td,.ui.table tr.disabled:hover,.ui.table tr:hover td.disabled{pointer-events:none;color:rgba(40,40,40,.3)}@media only screen and (max-width:991px){.ui[class*="tablet stackable"].table,.ui[class*="tablet stackable"].table tbody,.ui[class*="tablet stackable"].table tr,.ui[class*="tablet stackable"].table tr>td,.ui[class*="tablet stackable"].table tr>th{width:100%!important;display:block!important}.ui[class*="tablet stackable"].table{padding:0}.ui[class*="tablet stackable"].table tfoot,.ui[class*="tablet stackable"].table thead{display:block}.ui[class*="tablet stackable"].table tr{padding-top:1em;padding-bottom:1em;box-shadow:0 -1px 0 0 rgba(0,0,0,.1) inset!important}.ui[class*="tablet stackable"].table tr>td,.ui[class*="tablet stackable"].table tr>th{background:0 0;border:none!important;padding:.25em .75em;box-shadow:none!important}.ui.definition[class*="tablet stackable"].table thead th:first-child{box-shadow:none!important}}.ui.table [class*="left aligned"],.ui.table[class*="left aligned"]{text-align:left}.ui.table [class*="center aligned"],.ui.table[class*="center aligned"]{text-align:center}.ui.table [class*="right aligned"],.ui.table[class*="right aligned"]{text-align:right}.ui.table [class*="top aligned"],.ui.table[class*="top aligned"]{vertical-align:top}.ui.table [class*="middle aligned"],.ui.table[class*="middle aligned"]{vertical-align:middle}.ui.table [class*="bottom aligned"],.ui.table[class*="bottom aligned"]{vertical-align:bottom}.ui.table td.collapsing,.ui.table th.collapsing{width:1px;white-space:nowrap}.ui.fixed.table{table-layout:fixed}.ui.fixed.table td,.ui.fixed.table th{overflow:hidden;text-overflow:ellipsis}.ui.selectable.table tbody tr:hover,.ui.table tbody tr td.selectable:hover{background:rgba(0,0,0,.05)!important;color:rgba(0,0,0,.95)!important}.ui.inverted.table tbody tr td.selectable:hover,.ui.selectable.inverted.table tbody tr:hover{background:rgba(255,255,255,.08)!important;color:#fff!important}.ui.table tbody tr td.selectable{padding:0}.ui.table tbody tr td.selectable>a:not(.ui){display:block;color:inherit;padding:.78571429em}.ui.selectable.table tr.error:hover,.ui.selectable.table tr:hover td.error,.ui.table tr td.selectable.error:hover{background:#ffe7e7!important;color:#943634!important}.ui.selectable.table tr.warning:hover,.ui.selectable.table tr:hover td.warning,.ui.table tr td.selectable.warning:hover{background:#fff4e4!important;color:#493107!important}.ui.selectable.table tr.active:hover,.ui.selectable.table tr:hover td.active,.ui.table tr td.selectable.active:hover{background:#E0E0E0!important;color:rgba(0,0,0,.87)!important}.ui.selectable.table tr.positive:hover,.ui.selectable.table tr:hover td.positive,.ui.table tr td.selectable.positive:hover{background:#f7ffe6!important;color:#275b28!important}.ui.selectable.table tr.negative:hover,.ui.selectable.table tr:hover td.negative,.ui.table tr td.selectable.negative:hover{background:#ffe7e7!important;color:#943634!important}.ui.attached.table{top:0;bottom:0;border-radius:0;margin:0 -1px;width:calc(100% + 2px);max-width:calc(100% + 2px);box-shadow:none;border:1px solid #D4D4D5}.ui.attached+.ui.attached.table:not(.top){border-top:none}.ui[class*="top attached"].table{bottom:0;margin-bottom:0;top:0;margin-top:1em;border-radius:.28571429rem .28571429rem 0 0}.ui.table[class*="top attached"]:first-child{margin-top:0}.ui[class*="bottom attached"].table{bottom:0;margin-top:0;top:0;margin-bottom:1em;box-shadow:none,none;border-radius:0 0 .28571429rem .28571429rem}.ui[class*="bottom attached"].table:last-child{margin-bottom:0}.ui.striped.table tbody tr:nth-child(2n),.ui.striped.table>tr:nth-child(2n){background-color:rgba(0,0,50,.02)}.ui.inverted.striped.table tbody tr:nth-child(2n),.ui.inverted.striped.table>tr:nth-child(2n){background-color:rgba(255,255,255,.05)}.ui.striped.selectable.selectable.selectable.table tbody tr.active:hover{background:#EFEFEF!important;color:rgba(0,0,0,.95)!important}.ui.table [class*="single line"],.ui.table[class*="single line"]{white-space:nowrap}.ui.red.table{border-top:.2em solid #DB2828}.ui.inverted.red.table{background-color:#DB2828!important;color:#FFF!important}.ui.orange.table{border-top:.2em solid #F2711C}.ui.inverted.orange.table{background-color:#F2711C!important;color:#FFF!important}.ui.yellow.table{border-top:.2em solid #FBBD08}.ui.inverted.yellow.table{background-color:#FBBD08!important;color:#FFF!important}.ui.olive.table{border-top:.2em solid #B5CC18}.ui.inverted.olive.table{background-color:#B5CC18!important;color:#FFF!important}.ui.green.table{border-top:.2em solid #21BA45}.ui.inverted.green.table{background-color:#21BA45!important;color:#FFF!important}.ui.teal.table{border-top:.2em solid #00B5AD}.ui.inverted.teal.table{background-color:#00B5AD!important;color:#FFF!important}.ui.blue.table{border-top:.2em solid #2185D0}.ui.inverted.blue.table{background-color:#2185D0!important;color:#FFF!important}.ui.violet.table{border-top:.2em solid #6435C9}.ui.inverted.violet.table{background-color:#6435C9!important;color:#FFF!important}.ui.purple.table{border-top:.2em solid #A333C8}.ui.inverted.purple.table{background-color:#A333C8!important;color:#FFF!important}.ui.pink.table{border-top:.2em solid #E03997}.ui.inverted.pink.table{background-color:#E03997!important;color:#FFF!important}.ui.brown.table{border-top:.2em solid #A5673F}.ui.inverted.brown.table{background-color:#A5673F!important;color:#FFF!important}.ui.grey.table{border-top:.2em solid #767676}.ui.inverted.grey.table{background-color:#767676!important;color:#FFF!important}.ui.black.table{border-top:.2em solid #1B1C1D}.ui.inverted.black.table{background-color:#1B1C1D!important;color:#FFF!important}.ui.one.column.table td{width:100%}.ui.two.column.table td{width:50%}.ui.three.column.table td{width:33.33333333%}.ui.four.column.table td{width:25%}.ui.five.column.table td{width:20%}.ui.six.column.table td{width:16.66666667%}.ui.seven.column.table td{width:14.28571429%}.ui.eight.column.table td{width:12.5%}.ui.nine.column.table td{width:11.11111111%}.ui.ten.column.table td{width:10%}.ui.eleven.column.table td{width:9.09090909%}.ui.twelve.column.table td{width:8.33333333%}.ui.thirteen.column.table td{width:7.69230769%}.ui.fourteen.column.table td{width:7.14285714%}.ui.fifteen.column.table td{width:6.66666667%}.ui.sixteen.column.table td,.ui.table td.one.wide,.ui.table th.one.wide{width:6.25%}.ui.table td.two.wide,.ui.table th.two.wide{width:12.5%}.ui.table td.three.wide,.ui.table th.three.wide{width:18.75%}.ui.table td.four.wide,.ui.table th.four.wide{width:25%}.ui.table td.five.wide,.ui.table th.five.wide{width:31.25%}.ui.table td.six.wide,.ui.table th.six.wide{width:37.5%}.ui.table td.seven.wide,.ui.table th.seven.wide{width:43.75%}.ui.table td.eight.wide,.ui.table th.eight.wide{width:50%}.ui.table td.nine.wide,.ui.table th.nine.wide{width:56.25%}.ui.table td.ten.wide,.ui.table th.ten.wide{width:62.5%}.ui.table td.eleven.wide,.ui.table th.eleven.wide{width:68.75%}.ui.table td.twelve.wide,.ui.table th.twelve.wide{width:75%}.ui.table td.thirteen.wide,.ui.table th.thirteen.wide{width:81.25%}.ui.table td.fourteen.wide,.ui.table th.fourteen.wide{width:87.5%}.ui.table td.fifteen.wide,.ui.table th.fifteen.wide{width:93.75%}.ui.table td.sixteen.wide,.ui.table th.sixteen.wide{width:100%}.ui.sortable.table thead th{cursor:pointer;white-space:nowrap;border-left:1px solid rgba(34,36,38,.15);color:rgba(0,0,0,.87)}.ui.sortable.table thead th:first-child{border-left:none}.ui.sortable.table thead th.sorted,.ui.sortable.table thead th.sorted:hover{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ui.sortable.table thead th:after{display:none;font-style:normal;font-weight:400;text-decoration:inherit;content:'';height:1em;width:auto;opacity:.8;margin:0 0 0 .5em;font-family:Icons}.ui.sortable.table thead th.ascending:after{content:'\f0d8'}.ui.sortable.table thead th.descending:after{content:'\f0d7'}.ui.sortable.table th.disabled:hover{cursor:auto;color:rgba(40,40,40,.3)}.ui.sortable.table thead th:hover{background:rgba(0,0,0,.05);color:rgba(0,0,0,.8)}.ui.sortable.table thead th.sorted{background:rgba(0,0,0,.05);color:rgba(0,0,0,.95)}.ui.sortable.table thead th.sorted:after{display:inline-block}.ui.sortable.table thead th.sorted:hover{background:rgba(0,0,0,.05);color:rgba(0,0,0,.95)}.ui.inverted.sortable.table thead th.sorted{background:-webkit-linear-gradient(transparent,rgba(0,0,0,.05)) rgba(255,255,255,.15);background:linear-gradient(transparent,rgba(0,0,0,.05)) rgba(255,255,255,.15);color:#fff}.ui.inverted.sortable.table thead th:hover{background:-webkit-linear-gradient(transparent,rgba(0,0,0,.05)) rgba(255,255,255,.08);background:linear-gradient(transparent,rgba(0,0,0,.05)) rgba(255,255,255,.08);color:#fff}.ui.inverted.sortable.table thead th{border-left-color:transparent;border-right-color:transparent}.ui.inverted.table{background:#333;color:rgba(255,255,255,.9);border:none}.ui.inverted.table th{background-color:rgba(0,0,0,.15);border-color:rgba(255,255,255,.1)!important;color:rgba(255,255,255,.9)}.ui.inverted.table tr td{border-color:rgba(255,255,255,.1)!important}.ui.inverted.table tr td.disabled,.ui.inverted.table tr.disabled td,.ui.inverted.table tr.disabled:hover td,.ui.inverted.table tr:hover td.disabled{pointer-events:none;color:rgba(225,225,225,.3)}.ui.inverted.definition.table tfoot:not(.full-width) th:first-child,.ui.inverted.definition.table thead:not(.full-width) th:first-child{background:#FFF}.ui.inverted.definition.table tr td:first-child{background:rgba(255,255,255,.02);color:#fff}.ui.collapsing.table{width:auto}.ui.basic.table{background:0 0;border:1px solid rgba(34,36,38,.15);box-shadow:none}.ui.basic.table tfoot,.ui.basic.table thead{box-shadow:none}.ui.basic.table th{background:0 0;border-left:none}.ui.basic.table tbody tr{border-bottom:1px solid rgba(0,0,0,.1)}.ui.basic.table td{background:0 0}.ui.basic.striped.table tbody tr:nth-child(2n){background-color:rgba(0,0,0,.05)!important}.ui[class*="very basic"].table{border:none}.ui[class*="very basic"].table:not(.sortable):not(.striped) td,.ui[class*="very basic"].table:not(.sortable):not(.striped) th{padding:''}.ui[class*="very basic"].table:not(.sortable):not(.striped) td:first-child,.ui[class*="very basic"].table:not(.sortable):not(.striped) th:first-child{padding-left:0}.ui[class*="very basic"].table:not(.sortable):not(.striped) td:last-child,.ui[class*="very basic"].table:not(.sortable):not(.striped) th:last-child{padding-right:0}.ui[class*="very basic"].table:not(.sortable):not(.striped) thead tr:first-child th{padding-top:0}.ui.celled.table tr td,.ui.celled.table tr th{border-left:1px solid rgba(34,36,38,.1)}.ui.celled.table tr td:first-child,.ui.celled.table tr th:first-child{border-left:none}.ui.padded.table th{padding-left:1em;padding-right:1em}.ui.padded.table td,.ui.padded.table th{padding:1em}.ui[class*="very padded"].table th{padding-left:1.5em;padding-right:1.5em}.ui[class*="very padded"].table td{padding:1.5em}.ui.compact.table th{padding-left:.7em;padding-right:.7em}.ui.compact.table td{padding:.5em .7em}.ui[class*="very compact"].table th{padding-left:.6em;padding-right:.6em}.ui[class*="very compact"].table td{padding:.4em .6em}.ui.small.table{font-size:.9em}.ui.table{font-size:1em}.ui.large.table{font-size:1.1em}.ui.ad{display:block;overflow:hidden;margin:1em 0}.ui.ad:first-child,.ui.ad:last-child{margin:0}.ui.ad iframe{margin:0;padding:0;border:none;overflow:hidden}.ui.leaderboard.ad{width:728px;height:90px}.ui[class*="medium rectangle"].ad{width:300px;height:250px}.ui[class*="large rectangle"].ad{width:336px;height:280px}.ui[class*="half page"].ad{width:300px;height:600px}.ui.square.ad{width:250px;height:250px}.ui[class*="small square"].ad{width:200px;height:200px}.ui[class*="small rectangle"].ad{width:180px;height:150px}.ui[class*="vertical rectangle"].ad{width:240px;height:400px}.ui.button.ad{width:120px;height:90px}.ui[class*="square button"].ad{width:125px;height:125px}.ui[class*="small button"].ad{width:120px;height:60px}.ui.skyscraper.ad{width:120px;height:600px}.ui[class*="wide skyscraper"].ad{width:160px}.ui.banner.ad{width:468px;height:60px}.ui[class*="vertical banner"].ad{width:120px;height:240px}.ui[class*="top banner"].ad{width:930px;height:180px}.ui[class*="half banner"].ad{width:234px;height:60px}.ui[class*="large leaderboard"].ad{width:970px;height:90px}.ui.billboard.ad{width:970px;height:250px}.ui.panorama.ad{width:980px;height:120px}.ui.netboard.ad{width:580px;height:400px}.ui[class*="large mobile banner"].ad{width:320px;height:100px}.ui[class*="mobile leaderboard"].ad{width:320px;height:50px}.ui.mobile.ad{display:none}@media only screen and (max-width:767px){.ui.mobile.ad{display:block}}.ui.centered.ad{margin-left:auto;margin-right:auto}.ui.test.ad{position:relative;background:#545454}.ui.test.ad:after{position:absolute;top:50%;left:50%;width:100%;text-align:center;-webkit-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%);content:'Ad';color:#FFF;font-size:1em;font-weight:700}.ui.mobile.test.ad:after{font-size:.85714286em}.ui.test.ad[data-text]:after{content:attr(data-text)}.ui.card,.ui.cards>.card{max-width:100%;position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;width:290px;min-height:0;background:#FFF;padding:0;border:none;border-radius:.28571429rem;box-shadow:0 1px 3px 0 #D4D4D5,0 0 0 1px #D4D4D5;-webkit-transition:box-shadow .1s ease,-webkit-transform .1s ease;transition:box-shadow .1s ease,-webkit-transform .1s ease;transition:box-shadow .1s ease,transform .1s ease;transition:box-shadow .1s ease,transform .1s ease,-webkit-transform .1s ease;z-index:''}.ui.card{margin:1em 0}.ui.card a,.ui.cards>.card a{cursor:pointer}.ui.card:first-child{margin-top:0}.ui.card:last-child{margin-bottom:0}.ui.cards{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin:-.875em -.5em;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.ui.cards>.card{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin:.875em .5em;float:none}.ui.card:after,.ui.cards:after{display:block;content:' ';height:0;clear:both;overflow:hidden;visibility:hidden}.ui.cards~.ui.cards{margin-top:.875em}.ui.card>:first-child,.ui.cards>.card>:first-child{border-radius:.28571429rem .28571429rem 0 0!important;border-top:none!important}.ui.card>:last-child,.ui.cards>.card>:last-child{border-radius:0 0 .28571429rem .28571429rem!important}.ui.card>:only-child,.ui.cards>.card>:only-child{border-radius:.28571429rem!important}.ui.card>.image,.ui.cards>.card>.image{position:relative;display:block;-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;padding:0;background:rgba(0,0,0,.05)}.ui.card>.image>img,.ui.cards>.card>.image>img{display:block;width:100%;height:auto;border-radius:inherit}.ui.card>.image:not(.ui)>img,.ui.cards>.card>.image:not(.ui)>img{border:none}.ui.card>.content,.ui.cards>.card>.content{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;border:none;border-top:1px solid rgba(34,36,38,.1);background:0 0;margin:0;padding:1em;box-shadow:none;font-size:1em;border-radius:0}.ui.card>.content:after,.ui.cards>.card>.content:after{display:block;content:' ';height:0;clear:both;overflow:hidden;visibility:hidden}.ui.card>.content>.header,.ui.cards>.card>.content>.header{display:block;margin:'';font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;color:rgba(0,0,0,.85)}.ui.card>.content>.header:not(.ui),.ui.cards>.card>.content>.header:not(.ui){font-weight:700;font-size:1.28571429em;margin-top:-.21425em;line-height:1.2857em}.ui.card>.content>.header+.description,.ui.card>.content>.meta+.description,.ui.cards>.card>.content>.header+.description,.ui.cards>.card>.content>.meta+.description{margin-top:.5em}.ui.card [class*="left floated"],.ui.cards>.card [class*="left floated"]{float:left}.ui.card [class*="right floated"],.ui.cards>.card [class*="right floated"]{float:right}.ui.card [class*="left aligned"],.ui.cards>.card [class*="left aligned"]{text-align:left}.ui.card [class*="center aligned"],.ui.cards>.card [class*="center aligned"]{text-align:center}.ui.card [class*="right aligned"],.ui.cards>.card [class*="right aligned"]{text-align:right}.ui.card .content img,.ui.cards>.card .content img{display:inline-block;vertical-align:middle;width:''}.ui.card .avatar img,.ui.card img.avatar,.ui.cards>.card .avatar img,.ui.cards>.card img.avatar{width:2em;height:2em;border-radius:500rem}.ui.card>.content>.description,.ui.cards>.card>.content>.description{clear:both;color:rgba(0,0,0,.68)}.ui.card>.content p,.ui.cards>.card>.content p{margin:0 0 .5em}.ui.card>.content p:last-child,.ui.cards>.card>.content p:last-child{margin-bottom:0}.ui.card .meta,.ui.cards>.card .meta{font-size:1em;color:rgba(0,0,0,.4)}.ui.card .meta *,.ui.cards>.card .meta *{margin-right:.3em}.ui.card .meta :last-child,.ui.cards>.card .meta :last-child{margin-right:0}.ui.card .meta [class*="right floated"],.ui.cards>.card .meta [class*="right floated"]{margin-right:0;margin-left:.3em}.ui.card>.content a:not(.ui),.ui.cards>.card>.content a:not(.ui){color:'';-webkit-transition:color .1s ease;transition:color .1s ease}.ui.card>.content a:not(.ui):hover,.ui.cards>.card>.content a:not(.ui):hover{color:''}.ui.card>.content>a.header,.ui.cards>.card>.content>a.header{color:rgba(0,0,0,.85)}.ui.card>.content>a.header:hover,.ui.cards>.card>.content>a.header:hover{color:#1e70bf}.ui.card .meta>a:not(.ui),.ui.cards>.card .meta>a:not(.ui){color:rgba(0,0,0,.4)}.ui.card .meta>a:not(.ui):hover,.ui.cards>.card .meta>a:not(.ui):hover{color:rgba(0,0,0,.87)}.ui.card>.button,.ui.card>.buttons,.ui.cards>.card>.button,.ui.cards>.card>.buttons{margin:0 -1px;width:calc(100% + 2px)}.ui.card .dimmer,.ui.cards>.card .dimmer{background-color:'';z-index:10}.ui.card>.content .star.icon,.ui.cards>.card>.content .star.icon{cursor:pointer;opacity:.75;-webkit-transition:color .1s ease;transition:color .1s ease}.ui.card>.content .star.icon:hover,.ui.cards>.card>.content .star.icon:hover{opacity:1;color:#FFB70A}.ui.card>.content .active.star.icon,.ui.cards>.card>.content .active.star.icon{color:#FFE623}.ui.card>.content .like.icon,.ui.cards>.card>.content .like.icon{cursor:pointer;opacity:.75;-webkit-transition:color .1s ease;transition:color .1s ease}.ui.card>.content .like.icon:hover,.ui.cards>.card>.content .like.icon:hover{opacity:1;color:#FF2733}.ui.card>.content .active.like.icon,.ui.cards>.card>.content .active.like.icon{color:#FF2733}.ui.card>.extra,.ui.cards>.card>.extra{max-width:100%;min-height:0!important;-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;border-top:1px solid rgba(0,0,0,.05)!important;position:static;background:0 0;width:auto;margin:0;padding:.75em 1em;top:0;left:0;color:rgba(0,0,0,.4);box-shadow:none;-webkit-transition:color .1s ease;transition:color .1s ease}.ui.card>.extra a:not(.ui),.ui.cards>.card>.extra a:not(.ui){color:rgba(0,0,0,.4)}.ui.card>.extra a:not(.ui):hover,.ui.cards>.card>.extra a:not(.ui):hover{color:#1e70bf}.ui.link.cards .raised.card:hover,.ui.link.raised.card:hover,.ui.raised.cards a.card:hover,a.ui.raised.card:hover{box-shadow:0 0 0 1px #D4D4D5,0 2px 4px 0 rgba(34,36,38,.15),0 2px 10px 0 rgba(34,36,38,.25)}.ui.raised.card,.ui.raised.cards>.card{box-shadow:0 0 0 1px #D4D4D5,0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.15)}.ui.centered.cards{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.ui.centered.card{margin-left:auto;margin-right:auto}.ui.fluid.card{width:100%;max-width:9999px}.ui.cards a.card,.ui.link.card,.ui.link.cards .card,a.ui.card{-webkit-transform:none;transform:none}.ui.cards a.card:hover,.ui.link.card:hover,.ui.link.cards .card:hover,a.ui.card:hover{cursor:pointer;z-index:5;background:#FFF;border:none;box-shadow:0 1px 3px 0 #BCBDBD,0 0 0 1px #D4D4D5;-webkit-transform:translateY(-3px);transform:translateY(-3px)}.ui.cards>.red.card,.ui.red.card,.ui.red.cards>.card{box-shadow:0 0 0 1px #D4D4D5,0 2px 0 0 #DB2828,0 1px 3px 0 #D4D4D5}.ui.cards>.red.card:hover,.ui.red.card:hover,.ui.red.cards>.card:hover{box-shadow:0 0 0 1px #D4D4D5,0 2px 0 0 #d01919,0 1px 3px 0 #BCBDBD}.ui.cards>.orange.card,.ui.orange.card,.ui.orange.cards>.card{box-shadow:0 0 0 1px #D4D4D5,0 2px 0 0 #F2711C,0 1px 3px 0 #D4D4D5}.ui.cards>.orange.card:hover,.ui.orange.card:hover,.ui.orange.cards>.card:hover{box-shadow:0 0 0 1px #D4D4D5,0 2px 0 0 #f26202,0 1px 3px 0 #BCBDBD}.ui.cards>.yellow.card,.ui.yellow.card,.ui.yellow.cards>.card{box-shadow:0 0 0 1px #D4D4D5,0 2px 0 0 #FBBD08,0 1px 3px 0 #D4D4D5}.ui.cards>.yellow.card:hover,.ui.yellow.card:hover,.ui.yellow.cards>.card:hover{box-shadow:0 0 0 1px #D4D4D5,0 2px 0 0 #eaae00,0 1px 3px 0 #BCBDBD}.ui.cards>.olive.card,.ui.olive.card,.ui.olive.cards>.card{box-shadow:0 0 0 1px #D4D4D5,0 2px 0 0 #B5CC18,0 1px 3px 0 #D4D4D5}.ui.cards>.olive.card:hover,.ui.olive.card:hover,.ui.olive.cards>.card:hover{box-shadow:0 0 0 1px #D4D4D5,0 2px 0 0 #a7bd0d,0 1px 3px 0 #BCBDBD}.ui.cards>.green.card,.ui.green.card,.ui.green.cards>.card{box-shadow:0 0 0 1px #D4D4D5,0 2px 0 0 #21BA45,0 1px 3px 0 #D4D4D5}.ui.cards>.green.card:hover,.ui.green.card:hover,.ui.green.cards>.card:hover{box-shadow:0 0 0 1px #D4D4D5,0 2px 0 0 #16ab39,0 1px 3px 0 #BCBDBD}.ui.cards>.teal.card,.ui.teal.card,.ui.teal.cards>.card{box-shadow:0 0 0 1px #D4D4D5,0 2px 0 0 #00B5AD,0 1px 3px 0 #D4D4D5}.ui.cards>.teal.card:hover,.ui.teal.card:hover,.ui.teal.cards>.card:hover{box-shadow:0 0 0 1px #D4D4D5,0 2px 0 0 #009c95,0 1px 3px 0 #BCBDBD}.ui.blue.card,.ui.blue.cards>.card,.ui.cards>.blue.card{box-shadow:0 0 0 1px #D4D4D5,0 2px 0 0 #2185D0,0 1px 3px 0 #D4D4D5}.ui.blue.card:hover,.ui.blue.cards>.card:hover,.ui.cards>.blue.card:hover{box-shadow:0 0 0 1px #D4D4D5,0 2px 0 0 #1678c2,0 1px 3px 0 #BCBDBD}.ui.cards>.violet.card,.ui.violet.card,.ui.violet.cards>.card{box-shadow:0 0 0 1px #D4D4D5,0 2px 0 0 #6435C9,0 1px 3px 0 #D4D4D5}.ui.cards>.violet.card:hover,.ui.violet.card:hover,.ui.violet.cards>.card:hover{box-shadow:0 0 0 1px #D4D4D5,0 2px 0 0 #5829bb,0 1px 3px 0 #BCBDBD}.ui.cards>.purple.card,.ui.purple.card,.ui.purple.cards>.card{box-shadow:0 0 0 1px #D4D4D5,0 2px 0 0 #A333C8,0 1px 3px 0 #D4D4D5}.ui.cards>.purple.card:hover,.ui.purple.card:hover,.ui.purple.cards>.card:hover{box-shadow:0 0 0 1px #D4D4D5,0 2px 0 0 #9627ba,0 1px 3px 0 #BCBDBD}.ui.cards>.pink.card,.ui.pink.card,.ui.pink.cards>.card{box-shadow:0 0 0 1px #D4D4D5,0 2px 0 0 #E03997,0 1px 3px 0 #D4D4D5}.ui.cards>.pink.card:hover,.ui.pink.card:hover,.ui.pink.cards>.card:hover{box-shadow:0 0 0 1px #D4D4D5,0 2px 0 0 #e61a8d,0 1px 3px 0 #BCBDBD}.ui.brown.card,.ui.brown.cards>.card,.ui.cards>.brown.card{box-shadow:0 0 0 1px #D4D4D5,0 2px 0 0 #A5673F,0 1px 3px 0 #D4D4D5}.ui.brown.card:hover,.ui.brown.cards>.card:hover,.ui.cards>.brown.card:hover{box-shadow:0 0 0 1px #D4D4D5,0 2px 0 0 #975b33,0 1px 3px 0 #BCBDBD}.ui.cards>.grey.card,.ui.grey.card,.ui.grey.cards>.card{box-shadow:0 0 0 1px #D4D4D5,0 2px 0 0 #767676,0 1px 3px 0 #D4D4D5}.ui.cards>.grey.card:hover,.ui.grey.card:hover,.ui.grey.cards>.card:hover{box-shadow:0 0 0 1px #D4D4D5,0 2px 0 0 #838383,0 1px 3px 0 #BCBDBD}.ui.black.card,.ui.black.cards>.card,.ui.cards>.black.card{box-shadow:0 0 0 1px #D4D4D5,0 2px 0 0 #1B1C1D,0 1px 3px 0 #D4D4D5}.ui.black.card:hover,.ui.black.cards>.card:hover,.ui.cards>.black.card:hover{box-shadow:0 0 0 1px #D4D4D5,0 2px 0 0 #27292a,0 1px 3px 0 #BCBDBD}.ui.one.cards{margin-left:0;margin-right:0}.ui.one.cards>.card{width:100%}.ui.two.cards{margin-left:-1em;margin-right:-1em}.ui.two.cards>.card{width:calc(50% - 2em);margin-left:1em;margin-right:1em}.ui.three.cards{margin-left:-1em;margin-right:-1em}.ui.three.cards>.card{width:calc(33.33333333% - 2em);margin-left:1em;margin-right:1em}.ui.four.cards{margin-left:-.75em;margin-right:-.75em}.ui.four.cards>.card{width:calc(25% - 1.5em);margin-left:.75em;margin-right:.75em}.ui.five.cards{margin-left:-.75em;margin-right:-.75em}.ui.five.cards>.card{width:calc(20% - 1.5em);margin-left:.75em;margin-right:.75em}.ui.six.cards{margin-left:-.75em;margin-right:-.75em}.ui.six.cards>.card{width:calc(16.66666667% - 1.5em);margin-left:.75em;margin-right:.75em}.ui.seven.cards{margin-left:-.5em;margin-right:-.5em}.ui.seven.cards>.card{width:calc(14.28571429% - 1em);margin-left:.5em;margin-right:.5em}.ui.eight.cards{margin-left:-.5em;margin-right:-.5em}.ui.eight.cards>.card{width:calc(12.5% - 1em);margin-left:.5em;margin-right:.5em;font-size:11px}.ui.nine.cards{margin-left:-.5em;margin-right:-.5em}.ui.nine.cards>.card{width:calc(11.11111111% - 1em);margin-left:.5em;margin-right:.5em;font-size:10px}.ui.ten.cards{margin-left:-.5em;margin-right:-.5em}.ui.ten.cards>.card{width:calc(10% - 1em);margin-left:.5em;margin-right:.5em}@media only screen and (max-width:767px){.ui.two.doubling.cards{margin-left:0;margin-right:0}.ui.two.doubling.cards .card{width:100%;margin-left:0;margin-right:0}.ui.three.doubling.cards{margin-left:-1em;margin-right:-1em}.ui.three.doubling.cards .card{width:calc(50% - 2em);margin-left:1em;margin-right:1em}.ui.four.doubling.cards{margin-left:-1em;margin-right:-1em}.ui.four.doubling.cards .card{width:calc(50% - 2em);margin-left:1em;margin-right:1em}.ui.five.doubling.cards{margin-left:-1em;margin-right:-1em}.ui.five.doubling.cards .card{width:calc(50% - 2em);margin-left:1em;margin-right:1em}.ui.six.doubling.cards{margin-left:-1em;margin-right:-1em}.ui.six.doubling.cards .card{width:calc(50% - 2em);margin-left:1em;margin-right:1em}.ui.seven.doubling.cards{margin-left:-1em;margin-right:-1em}.ui.seven.doubling.cards .card{width:calc(33.33333333% - 2em);margin-left:1em;margin-right:1em}.ui.eight.doubling.cards{margin-left:-1em;margin-right:-1em}.ui.eight.doubling.cards .card{width:calc(33.33333333% - 2em);margin-left:1em;margin-right:1em}.ui.nine.doubling.cards{margin-left:-1em;margin-right:-1em}.ui.nine.doubling.cards .card{width:calc(33.33333333% - 2em);margin-left:1em;margin-right:1em}.ui.ten.doubling.cards{margin-left:-1em;margin-right:-1em}.ui.ten.doubling.cards .card{width:calc(33.33333333% - 2em);margin-left:1em;margin-right:1em}}@media only screen and (min-width:768px) and (max-width:991px){.ui.two.doubling.cards{margin-left:0;margin-right:0}.ui.two.doubling.cards .card{width:100%;margin-left:0;margin-right:0}.ui.three.doubling.cards{margin-left:-1em;margin-right:-1em}.ui.three.doubling.cards .card{width:calc(50% - 2em);margin-left:1em;margin-right:1em}.ui.four.doubling.cards{margin-left:-1em;margin-right:-1em}.ui.four.doubling.cards .card{width:calc(50% - 2em);margin-left:1em;margin-right:1em}.ui.five.doubling.cards{margin-left:-1em;margin-right:-1em}.ui.five.doubling.cards .card{width:calc(33.33333333% - 2em);margin-left:1em;margin-right:1em}.ui.six.doubling.cards{margin-left:-1em;margin-right:-1em}.ui.six.doubling.cards .card{width:calc(33.33333333% - 2em);margin-left:1em;margin-right:1em}.ui.eight.doubling.cards{margin-left:-.75em;margin-right:-.75em}.ui.eight.doubling.cards .card{width:calc(25% - 1.5em);margin-left:.75em;margin-right:.75em}.ui.nine.doubling.cards{margin-left:-.75em;margin-right:-.75em}.ui.nine.doubling.cards .card{width:calc(25% - 1.5em);margin-left:.75em;margin-right:.75em}.ui.ten.doubling.cards{margin-left:-.75em;margin-right:-.75em}.ui.ten.doubling.cards .card{width:calc(20% - 1.5em);margin-left:.75em;margin-right:.75em}}@media only screen and (max-width:767px){.ui.stackable.cards{display:block!important}.ui.stackable.cards .card:first-child{margin-top:0!important}.ui.stackable.cards>.card{display:block!important;height:auto!important;margin:1em;padding:0!important;width:calc(100% - 2em)!important}}.ui.cards>.card{font-size:1em}.ui.comments{margin:1.5em 0;max-width:650px}.ui.comments:first-child{margin-top:0}.ui.comments:last-child{margin-bottom:0}.ui.comments .comment{position:relative;background:0 0;margin:.5em 0 0;padding:.5em 0 0;border:none;border-top:none;line-height:1.2}.ui.comments .comment:first-child{margin-top:0;padding-top:0}.ui.comments .comment .comments{margin:0 0 .5em .5em;padding:1em 0 1em 1em}.ui.comments .comment .comments:before{position:absolute;top:0;left:0}.ui.comments .comment .comments .comment{border:none;border-top:none;background:0 0}.ui.comments .comment .avatar{display:block;width:2.5em;height:auto;float:left;margin:.2em 0 0}.ui.comments .comment .avatar img,.ui.comments .comment img.avatar{display:block;margin:0 auto;width:100%;height:100%;border-radius:.25rem}.ui.comments .comment>.content{display:block}.ui.comments .comment>.avatar~.content{margin-left:3.5em}.ui.comments .comment .author{font-size:1em;color:rgba(0,0,0,.87);font-weight:700}.ui.comments .comment a.author{cursor:pointer}.ui.comments .comment a.author:hover{color:#1e70bf}.ui.comments .comment .metadata{display:inline-block;margin-left:.5em;color:rgba(0,0,0,.4);font-size:.875em}.ui.comments .comment .metadata>*{display:inline-block;margin:0 .5em 0 0}.ui.comments .comment .metadata>:last-child{margin-right:0}.ui.comments .comment .text{margin:.25em 0 .5em;font-size:1em;word-wrap:break-word;color:rgba(0,0,0,.87);line-height:1.3}.ui.comments .comment .actions{font-size:.875em}.ui.comments .comment .actions a{cursor:pointer;display:inline-block;margin:0 .75em 0 0;color:rgba(0,0,0,.4)}.ui.comments .comment .actions a:last-child{margin-right:0}.ui.comments .comment .actions a.active,.ui.comments .comment .actions a:hover{color:rgba(0,0,0,.8)}.ui.comments>.reply.form{margin-top:1em}.ui.comments .comment .reply.form{width:100%;margin-top:1em}.ui.comments .reply.form textarea{font-size:1em;height:12em}.ui.collapsed.comments,.ui.comments .collapsed.comment,.ui.comments .collapsed.comments{display:none}.ui.threaded.comments .comment .comments{margin:-1.5em 0 -1em 1.25em;padding:3em 0 2em 2.25em;box-shadow:-1px 0 0 rgba(34,36,38,.15)}.ui.minimal.comments .comment .actions{opacity:0;position:absolute;top:0;right:0;left:auto;-webkit-transition:opacity .2s ease;transition:opacity .2s ease;-webkit-transition-delay:.1s;transition-delay:.1s}.ui.minimal.comments .comment>.content:hover>.actions{opacity:1}.ui.small.comments{font-size:.9em}.ui.comments{font-size:1em}.ui.large.comments{font-size:1.1em}.ui.huge.comments{font-size:1.2em}.ui.feed{margin:1em 0}.ui.feed:first-child{margin-top:0}.ui.feed:last-child{margin-bottom:0}.ui.feed>.event{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;width:100%;padding:.21428571rem 0;margin:0;background:0 0;border-top:none}.ui.feed>.event:first-child{border-top:0;padding-top:0}.ui.feed>.event:last-child{padding-bottom:0}.ui.feed>.event>.label{display:block;-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:2.5em;height:auto;-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch;text-align:left}.ui.feed>.event>.label .icon{opacity:1;font-size:1.5em;width:100%;padding:.25em;background:0 0;border:none;border-radius:none;color:rgba(0,0,0,.6)}.ui.feed>.event>.label img{width:100%;height:auto;border-radius:500rem}.ui.feed>.event>.label+.content{margin:.5em 0 .35714286em 1.14285714em}.ui.feed>.event>.content{display:block;-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch;text-align:left;word-wrap:break-word}.ui.feed>.event:last-child>.content{padding-bottom:0}.ui.feed>.event>.content a{cursor:pointer}.ui.feed>.event>.content .date{margin:-.5rem 0 0;padding:0;font-weight:400;font-size:1em;font-style:normal;color:rgba(0,0,0,.4)}.ui.feed>.event>.content .summary{margin:0;font-size:1em;font-weight:700;color:rgba(0,0,0,.87)}.ui.feed>.event>.content .summary img{display:inline-block;width:auto;height:10em;margin:-.25em .25em 0 0;border-radius:.25em;vertical-align:middle}.ui.feed>.event>.content .user{display:inline-block;font-weight:700;margin-right:0;vertical-align:baseline}.ui.feed>.event>.content .user img{margin:-.25em .25em 0 0;width:auto;height:10em;vertical-align:middle}.ui.feed>.event>.content .summary>.date{display:inline-block;float:none;font-weight:400;font-size:.85714286em;font-style:normal;margin:0 0 0 .5em;padding:0;color:rgba(0,0,0,.4)}.ui.feed>.event>.content .extra{margin:.5em 0 0;background:0 0;padding:0;color:rgba(0,0,0,.87)}.ui.feed>.event>.content .extra.images img{display:inline-block;margin:0 .25em 0 0;width:6em}.ui.feed>.event>.content .extra.text{padding:0;border-left:none;font-size:1em;max-width:500px;line-height:1.4285em}.ui.feed>.event>.content .meta{display:inline-block;font-size:.85714286em;margin:.5em 0 0;background:0 0;border:none;border-radius:0;box-shadow:none;padding:0;color:rgba(0,0,0,.6)}.ui.feed>.event>.content .meta>*{position:relative;margin-left:.75em}.ui.feed>.event>.content .meta>:after{content:'';color:rgba(0,0,0,.2);top:0;left:-1em;opacity:1;position:absolute;vertical-align:top}.ui.feed>.event>.content .meta .like{color:'';-webkit-transition:.2s color ease;transition:.2s color ease}.ui.feed>.event>.content .meta .like:hover .icon{color:#FF2733}.ui.feed>.event>.content .meta .active.like .icon{color:#EF404A}.ui.feed>.event>.content .meta>:first-child{margin-left:0}.ui.feed>.event>.content .meta>:first-child::after{display:none}.ui.feed>.event>.content .meta a,.ui.feed>.event>.content .meta>.icon{cursor:pointer;opacity:1;color:rgba(0,0,0,.5);-webkit-transition:color .1s ease;transition:color .1s ease}.ui.feed>.event>.content .meta a:hover,.ui.feed>.event>.content .meta a:hover .icon,.ui.feed>.event>.content .meta>.icon:hover{color:rgba(0,0,0,.95)}.ui.small.feed{font-size:.92857143rem}.ui.feed{font-size:1rem}.ui.large.feed{font-size:1.14285714rem}.ui.items>.item{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin:1em 0;width:100%;min-height:0;background:0 0;padding:0;border:none;border-radius:0;box-shadow:none;-webkit-transition:box-shadow .1s ease;transition:box-shadow .1s ease;z-index:''}.ui.items>.item a{cursor:pointer}.ui.items{margin:1.5em 0}.ui.items:first-child{margin-top:0!important}.ui.items:last-child{margin-bottom:0!important}.ui.items>.item:after{display:block;content:' ';height:0;clear:both;overflow:hidden;visibility:hidden}.ui.items>.item:first-child{margin-top:0}.ui.items>.item:last-child{margin-bottom:0}.ui.items>.item>.image{position:relative;-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;display:block;float:none;margin:0;padding:0;max-height:'';-webkit-align-self:top;-ms-flex-item-align:top;align-self:top}.ui.items>.item>.image>img{display:block;width:100%;height:auto;border-radius:.125rem;border:none}.ui.items>.item>.image:only-child>img{border-radius:0}.ui.items>.item>.content{display:block;-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;background:0 0;margin:0;padding:0;box-shadow:none;font-size:1em;border:none;border-radius:0}.ui.items>.item>.content:after{display:block;content:' ';height:0;clear:both;overflow:hidden;visibility:hidden}.ui.items>.item>.image+.content{min-width:0;width:auto;display:block;margin-left:0;-webkit-align-self:top;-ms-flex-item-align:top;align-self:top;padding-left:1.5em}.ui.items>.item>.content>.header{display:inline-block;margin:-.21425em 0 0;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-weight:700;color:rgba(0,0,0,.85)}.ui.items>.item>.content>.header:not(.ui){font-size:1.28571429em}.ui.items>.item [class*="left floated"]{float:left}.ui.items>.item [class*="right floated"]{float:right}.ui.items>.item .content img{-webkit-align-self:middle;-ms-flex-item-align:middle;align-self:middle;width:''}.ui.items>.item .avatar img,.ui.items>.item img.avatar{width:'';height:'';border-radius:500rem}.ui.items>.item>.content>.description{margin-top:.6em;max-width:auto;font-size:1em;line-height:1.4285em;color:rgba(0,0,0,.87)}.ui.items>.item>.content p{margin:0 0 .5em}.ui.items>.item>.content p:last-child{margin-bottom:0}.ui.items>.item .meta{margin:.5em 0;font-size:1em;line-height:1em;color:rgba(0,0,0,.6)}.ui.items>.item .meta *{margin-right:.3em}.ui.items>.item .meta :last-child{margin-right:0}.ui.items>.item .meta [class*="right floated"]{margin-right:0;margin-left:.3em}.ui.items>.item>.content a:not(.ui){color:'';-webkit-transition:color .1s ease;transition:color .1s ease}.ui.items>.item>.content a:not(.ui):hover{color:''}.ui.items>.item>.content>a.header{color:rgba(0,0,0,.85)}.ui.items>.item>.content>a.header:hover{color:#1e70bf}.ui.items>.item .meta>a:not(.ui){color:rgba(0,0,0,.4)}.ui.items>.item .meta>a:not(.ui):hover{color:rgba(0,0,0,.87)}.ui.items>.item>.content .favorite.icon{cursor:pointer;opacity:.75;-webkit-transition:color .1s ease;transition:color .1s ease}.ui.items>.item>.content .favorite.icon:hover{opacity:1;color:#FFB70A}.ui.items>.item>.content .active.favorite.icon{color:#FFE623}.ui.items>.item>.content .like.icon{cursor:pointer;opacity:.75;-webkit-transition:color .1s ease;transition:color .1s ease}.ui.items>.item>.content .like.icon:hover{opacity:1;color:#FF2733}.ui.items>.item>.content .active.like.icon{color:#FF2733}.ui.items>.item .extra{display:block;position:relative;background:0 0;margin:.5rem 0 0;width:100%;padding:0;top:0;left:0;color:rgba(0,0,0,.4);box-shadow:none;-webkit-transition:color .1s ease;transition:color .1s ease;border-top:none}.ui.items>.item .extra>*{margin:.25rem .5rem .25rem 0}.ui.items>.item .extra>[class*="right floated"]{margin:.25rem 0 .25rem .5rem}.ui.items>.item .extra:after{display:block;content:' ';height:0;clear:both;overflow:hidden;visibility:hidden}.ui.items>.item>.image:not(.ui){width:175px}@media only screen and (min-width:768px) and (max-width:991px){.ui.items>.item{margin:1em 0}.ui.items>.item>.image:not(.ui){width:150px}.ui.items>.item>.image+.content{display:block;padding:0 0 0 1em}}@media only screen and (max-width:767px){.ui.items>.item{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;margin:2em 0}.ui.items>.item>.image{display:block;margin-left:auto;margin-right:auto}.ui.items>.item>.image,.ui.items>.item>.image>img{max-width:100%!important;width:auto!important;max-height:250px!important}.ui.items>.item>.image+.content{display:block;padding:1.5em 0 0}}.ui.items>.item>.image+[class*="top aligned"].content{-webkit-align-self:flex-start;-ms-flex-item-align:start;align-self:flex-start}.ui.items>.item>.image+[class*="middle aligned"].content{-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.ui.items>.item>.image+[class*="bottom aligned"].content{-webkit-align-self:flex-end;-ms-flex-item-align:end;align-self:flex-end}.ui.relaxed.items>.item{margin:1.5em 0}.ui[class*="very relaxed"].items>.item{margin:2em 0}.ui.divided.items>.item{border-top:1px solid rgba(34,36,38,.15);margin:0;padding:1em 0}.ui.divided.items>.item:first-child{border-top:none;margin-top:0!important;padding-top:0!important}.ui.divided.items>.item:last-child{margin-bottom:0!important;padding-bottom:0!important}.ui.relaxed.divided.items>.item{margin:0;padding:1.5em 0}.ui[class*="very relaxed"].divided.items>.item{margin:0;padding:2em 0}.ui.items a.item:hover,.ui.link.items>.item:hover{cursor:pointer}.ui.items a.item:hover .content .header,.ui.link.items>.item:hover .content .header{color:#1e70bf}.ui.items>.item{font-size:1em}.ui.statistic{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;margin:1em 0;max-width:auto}.ui.statistic+.ui.statistic{margin:0 0 0 1.5em}.ui.statistic:first-child{margin-top:0}.ui.statistic:last-child{margin-bottom:0}.ui.statistics{-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.ui.statistics>.statistic{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;margin:0 1.5em 2em;max-width:auto}.ui.statistics{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin:1em -1.5em -2em}.ui.statistics:after{display:block;content:' ';height:0;clear:both;overflow:hidden;visibility:hidden}.ui.statistics:first-child{margin-top:0}.ui.statistics:last-child{margin-bottom:0}.ui.statistic>.value,.ui.statistics .statistic>.value{font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-weight:400;line-height:1em;color:#1B1C1D;text-transform:uppercase;text-align:center}.ui.statistic>.label,.ui.statistics .statistic>.label{font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-size:1em;font-weight:700;color:rgba(0,0,0,.87);text-transform:uppercase;text-align:center}.ui.statistic>.label~.value,.ui.statistic>.value~.label,.ui.statistics .statistic>.label~.value,.ui.statistics .statistic>.value~.label{margin-top:0}.ui.statistic>.value .icon,.ui.statistics .statistic>.value .icon{opacity:1;width:auto;margin:0}.ui.statistic>.text.value,.ui.statistics .statistic>.text.value{line-height:1em;min-height:2em;font-weight:700;text-align:center}.ui.statistic>.text.value+.label,.ui.statistics .statistic>.text.value+.label{text-align:center}.ui.statistic>.value img,.ui.statistics .statistic>.value img{max-height:3rem;vertical-align:baseline}.ui.ten.statistics{margin:0 0 -2em}.ui.ten.statistics .statistic{min-width:10%;margin:0 0 2em}.ui.nine.statistics{margin:0 0 -2em}.ui.nine.statistics .statistic{min-width:11.11111111%;margin:0 0 2em}.ui.eight.statistics{margin:0 0 -2em}.ui.eight.statistics .statistic{min-width:12.5%;margin:0 0 2em}.ui.seven.statistics{margin:0 0 -2em}.ui.seven.statistics .statistic{min-width:14.28571429%;margin:0 0 2em}.ui.six.statistics{margin:0 0 -2em}.ui.six.statistics .statistic{min-width:16.66666667%;margin:0 0 2em}.ui.five.statistics{margin:0 0 -2em}.ui.five.statistics .statistic{min-width:20%;margin:0 0 2em}.ui.four.statistics{margin:0 0 -2em}.ui.four.statistics .statistic{min-width:25%;margin:0 0 2em}.ui.three.statistics{margin:0 0 -2em}.ui.three.statistics .statistic{min-width:33.33333333%;margin:0 0 2em}.ui.two.statistics{margin:0 0 -2em}.ui.two.statistics .statistic{min-width:50%;margin:0 0 2em}.ui.one.statistics{margin:0 0 -2em}.ui.one.statistics .statistic{min-width:100%;margin:0 0 2em}.ui.horizontal.statistic{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;-ms-grid-row-align:center;align-items:center}.ui.horizontal.statistics{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;margin:0;max-width:none}.ui.horizontal.statistics .statistic{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;-ms-grid-row-align:center;align-items:center;max-width:none;margin:1em 0}.ui.horizontal.statistic>.text.value,.ui.horizontal.statistics>.statistic>.text.value{min-height:0!important}.ui.horizontal.statistic>.value .icon,.ui.horizontal.statistics .statistic>.value .icon{width:1.18em}.ui.horizontal.statistic>.label,.ui.horizontal.statistics .statistic>.label{display:inline-block;vertical-align:middle;margin:0 0 0 .75em}.ui.red.statistic>.value,.ui.red.statistics .statistic>.value,.ui.statistics .red.statistic>.value{color:#DB2828}.ui.orange.statistic>.value,.ui.orange.statistics .statistic>.value,.ui.statistics .orange.statistic>.value{color:#F2711C}.ui.statistics .yellow.statistic>.value,.ui.yellow.statistic>.value,.ui.yellow.statistics .statistic>.value{color:#FBBD08}.ui.olive.statistic>.value,.ui.olive.statistics .statistic>.value,.ui.statistics .olive.statistic>.value{color:#B5CC18}.ui.green.statistic>.value,.ui.green.statistics .statistic>.value,.ui.statistics .green.statistic>.value{color:#21BA45}.ui.statistics .teal.statistic>.value,.ui.teal.statistic>.value,.ui.teal.statistics .statistic>.value{color:#00B5AD}.ui.blue.statistic>.value,.ui.blue.statistics .statistic>.value,.ui.statistics .blue.statistic>.value{color:#2185D0}.ui.statistics .violet.statistic>.value,.ui.violet.statistic>.value,.ui.violet.statistics .statistic>.value{color:#6435C9}.ui.purple.statistic>.value,.ui.purple.statistics .statistic>.value,.ui.statistics .purple.statistic>.value{color:#A333C8}.ui.pink.statistic>.value,.ui.pink.statistics .statistic>.value,.ui.statistics .pink.statistic>.value{color:#E03997}.ui.brown.statistic>.value,.ui.brown.statistics .statistic>.value,.ui.statistics .brown.statistic>.value{color:#A5673F}.ui.grey.statistic>.value,.ui.grey.statistics .statistic>.value,.ui.statistics .grey.statistic>.value{color:#767676}.ui.inverted.statistic .value,.ui.inverted.statistics .statistic>.value{color:#FFF}.ui.inverted.statistic .label,.ui.inverted.statistics .statistic>.label{color:rgba(255,255,255,.9)}.ui.inverted.red.statistic>.value,.ui.inverted.red.statistics .statistic>.value,.ui.statistics .inverted.red.statistic>.value{color:#FF695E}.ui.inverted.orange.statistic>.value,.ui.inverted.orange.statistics .statistic>.value,.ui.statistics .inverted.orange.statistic>.value{color:#FF851B}.ui.inverted.yellow.statistic>.value,.ui.inverted.yellow.statistics .statistic>.value,.ui.statistics .inverted.yellow.statistic>.value{color:#FFE21F}.ui.inverted.olive.statistic>.value,.ui.inverted.olive.statistics .statistic>.value,.ui.statistics .inverted.olive.statistic>.value{color:#D9E778}.ui.inverted.green.statistic>.value,.ui.inverted.green.statistics .statistic>.value,.ui.statistics .inverted.green.statistic>.value{color:#2ECC40}.ui.inverted.teal.statistic>.value,.ui.inverted.teal.statistics .statistic>.value,.ui.statistics .inverted.teal.statistic>.value{color:#6DFFFF}.ui.inverted.blue.statistic>.value,.ui.inverted.blue.statistics .statistic>.value,.ui.statistics .inverted.blue.statistic>.value{color:#54C8FF}.ui.inverted.violet.statistic>.value,.ui.inverted.violet.statistics .statistic>.value,.ui.statistics .inverted.violet.statistic>.value{color:#A291FB}.ui.inverted.purple.statistic>.value,.ui.inverted.purple.statistics .statistic>.value,.ui.statistics .inverted.purple.statistic>.value{color:#DC73FF}.ui.inverted.pink.statistic>.value,.ui.inverted.pink.statistics .statistic>.value,.ui.statistics .inverted.pink.statistic>.value{color:#FF8EDF}.ui.inverted.brown.statistic>.value,.ui.inverted.brown.statistics .statistic>.value,.ui.statistics .inverted.brown.statistic>.value{color:#D67C1C}.ui.inverted.grey.statistic>.value,.ui.inverted.grey.statistics .statistic>.value,.ui.statistics .inverted.grey.statistic>.value{color:#DCDDDE}.ui[class*="left floated"].statistic{float:left;margin:0 2em 1em 0}.ui[class*="right floated"].statistic{float:right;margin:0 0 1em 2em}.ui.floated.statistic:last-child{margin-bottom:0}.ui.mini.horizontal.statistic>.value,.ui.mini.horizontal.statistics .statistic>.value,.ui.mini.statistic>.value,.ui.mini.statistics .statistic>.value{font-size:1.5rem!important}.ui.mini.statistic>.text.value,.ui.mini.statistics .statistic>.text.value{font-size:1rem!important}.ui.tiny.horizontal.statistic>.value,.ui.tiny.horizontal.statistics .statistic>.value,.ui.tiny.statistic>.value,.ui.tiny.statistics .statistic>.value{font-size:2rem!important}.ui.tiny.statistic>.text.value,.ui.tiny.statistics .statistic>.text.value{font-size:1rem!important}.ui.small.statistic>.value,.ui.small.statistics .statistic>.value{font-size:3rem!important}.ui.small.horizontal.statistic>.value,.ui.small.horizontal.statistics .statistic>.value{font-size:2rem!important}.ui.small.statistic>.text.value,.ui.small.statistics .statistic>.text.value{font-size:1rem!important}.ui.statistic>.value,.ui.statistics .statistic>.value{font-size:4rem!important}.ui.horizontal.statistic>.value,.ui.horizontal.statistics .statistic>.value{display:inline-block;vertical-align:middle;font-size:3rem!important}.ui.statistic>.text.value,.ui.statistics .statistic>.text.value{font-size:2rem!important}.ui.large.statistic>.value,.ui.large.statistics .statistic>.value{font-size:5rem!important}.ui.large.horizontal.statistic>.value,.ui.large.horizontal.statistics .statistic>.value{font-size:4rem!important}.ui.large.statistic>.text.value,.ui.large.statistics .statistic>.text.value{font-size:2.5rem!important}.ui.huge.statistic>.value,.ui.huge.statistics .statistic>.value{font-size:6rem!important}.ui.huge.horizontal.statistic>.value,.ui.huge.horizontal.statistics .statistic>.value{font-size:5rem!important}.ui.huge.statistic>.text.value,.ui.huge.statistics .statistic>.text.value{font-size:2.5rem!important}.ui.accordion,.ui.accordion .accordion{max-width:100%}.ui.accordion .accordion{margin:1em 0 0;padding:0}.ui.accordion .accordion .title,.ui.accordion .title{cursor:pointer}.ui.accordion .title:not(.ui){padding:.5em 0;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-size:1em;color:rgba(0,0,0,.87)}.ui.accordion .accordion .title~.content,.ui.accordion .title~.content{display:none}.ui.accordion:not(.styled) .accordion .title~.content:not(.ui),.ui.accordion:not(.styled) .title~.content:not(.ui){margin:'';padding:.5em 0 1em}.ui.accordion:not(.styled) .title~.content:not(.ui):last-child{padding-bottom:0}.ui.accordion .accordion .title .dropdown.icon,.ui.accordion .title .dropdown.icon{display:inline-block;float:none;opacity:1;width:1.25em;height:1em;margin:0 .25rem 0 0;padding:0;font-size:1em;-webkit-transition:opacity .1s ease,-webkit-transform .1s ease;transition:opacity .1s ease,-webkit-transform .1s ease;transition:transform .1s ease,opacity .1s ease;transition:transform .1s ease,opacity .1s ease,-webkit-transform .1s ease;vertical-align:baseline;-webkit-transform:none;transform:none}.ui.accordion.menu .item .title{display:block;padding:0}.ui.accordion.menu .item .title>.dropdown.icon{float:right;margin:.21425em 0 0 1em;-webkit-transform:rotate(180deg);transform:rotate(180deg)}.ui.accordion .ui.header .dropdown.icon{font-size:1em;margin:0 .25rem 0 0}.ui.accordion .accordion .active.title .dropdown.icon,.ui.accordion .active.title .dropdown.icon,.ui.accordion.menu .item .active.title>.dropdown.icon{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.ui.styled.accordion{width:600px}.ui.styled.accordion,.ui.styled.accordion .accordion{border-radius:.28571429rem;background:#FFF;box-shadow:0 1px 2px 0 rgba(34,36,38,.15),0 0 0 1px rgba(34,36,38,.15)}.ui.styled.accordion .accordion .title,.ui.styled.accordion .title{margin:0;padding:.75em 1em;color:rgba(0,0,0,.4);font-weight:700;border-top:1px solid rgba(34,36,38,.15);-webkit-transition:background .1s ease,color .1s ease;transition:background .1s ease,color .1s ease}.ui.styled.accordion .accordion .title:first-child,.ui.styled.accordion>.title:first-child{border-top:none}.ui.styled.accordion .accordion .content,.ui.styled.accordion .content{margin:0;padding:.5em 1em 1.5em}.ui.styled.accordion .accordion .content{padding:.5em 1em 1.5em}.ui.styled.accordion .accordion .active.title,.ui.styled.accordion .accordion .title:hover,.ui.styled.accordion .active.title,.ui.styled.accordion .title:hover{background:0 0;color:rgba(0,0,0,.87)}.ui.styled.accordion .accordion .active.title,.ui.styled.accordion .active.title{background:0 0;color:rgba(0,0,0,.95)}.ui.accordion .accordion .active.content,.ui.accordion .active.content{display:block}.ui.fluid.accordion,.ui.fluid.accordion .accordion{width:100%}.ui.inverted.accordion .title:not(.ui){color:rgba(255,255,255,.9)}@font-face{font-family:Accordion;src:url(data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMggjB5AAAAC8AAAAYGNtYXAPfOIKAAABHAAAAExnYXNwAAAAEAAAAWgAAAAIZ2x5Zryj6HgAAAFwAAAAyGhlYWT/0IhHAAACOAAAADZoaGVhApkB5wAAAnAAAAAkaG10eAJuABIAAAKUAAAAGGxvY2EAjABWAAACrAAAAA5tYXhwAAgAFgAAArwAAAAgbmFtZfC1n04AAALcAAABPHBvc3QAAwAAAAAEGAAAACAAAwIAAZAABQAAAUwBZgAAAEcBTAFmAAAA9QAZAIQAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADw2gHg/+D/4AHgACAAAAABAAAAAAAAAAAAAAAgAAAAAAACAAAAAwAAABQAAwABAAAAFAAEADgAAAAKAAgAAgACAAEAIPDa//3//wAAAAAAIPDZ//3//wAB/+MPKwADAAEAAAAAAAAAAAAAAAEAAf//AA8AAQAAAAAAAAAAAAIAADc5AQAAAAABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQASAEkAtwFuABMAADc0PwE2FzYXFh0BFAcGJwYvASY1EgaABQgHBQYGBQcIBYAG2wcGfwcBAQcECf8IBAcBAQd/BgYAAAAAAQAAAEkApQFuABMAADcRNDc2MzIfARYVFA8BBiMiJyY1AAUGBwgFgAYGgAUIBwYFWwEACAUGBoAFCAcFgAYGBQcAAAABAAAAAQAAqWYls18PPPUACwIAAAAAAM/9o+4AAAAAz/2j7gAAAAAAtwFuAAAACAACAAAAAAAAAAEAAAHg/+AAAAIAAAAAAAC3AAEAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAQAAAAC3ABIAtwAAAAAAAAAKABQAHgBCAGQAAAABAAAABgAUAAEAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAADgCuAAEAAAAAAAEADAAAAAEAAAAAAAIADgBAAAEAAAAAAAMADAAiAAEAAAAAAAQADABOAAEAAAAAAAUAFgAMAAEAAAAAAAYABgAuAAEAAAAAAAoANABaAAMAAQQJAAEADAAAAAMAAQQJAAIADgBAAAMAAQQJAAMADAAiAAMAAQQJAAQADABOAAMAAQQJAAUAFgAMAAMAAQQJAAYADAA0AAMAAQQJAAoANABaAHIAYQB0AGkAbgBnAFYAZQByAHMAaQBvAG4AIAAxAC4AMAByAGEAdABpAG4AZ3JhdGluZwByAGEAdABpAG4AZwBSAGUAZwB1AGwAYQByAHIAYQB0AGkAbgBnAEYAbwBuAHQAIABnAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAEkAYwBvAE0AbwBvAG4ALgADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA) format('truetype'),url(data:application/font-woff;charset=utf-8;base64,d09GRk9UVE8AAASwAAoAAAAABGgAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABDRkYgAAAA9AAAAS0AAAEtFpovuE9TLzIAAAIkAAAAYAAAAGAIIweQY21hcAAAAoQAAABMAAAATA984gpnYXNwAAAC0AAAAAgAAAAIAAAAEGhlYWQAAALYAAAANgAAADb/0IhHaGhlYQAAAxAAAAAkAAAAJAKZAedobXR4AAADNAAAABgAAAAYAm4AEm1heHAAAANMAAAABgAAAAYABlAAbmFtZQAAA1QAAAE8AAABPPC1n05wb3N0AAAEkAAAACAAAAAgAAMAAAEABAQAAQEBB3JhdGluZwABAgABADr4HAL4GwP4GAQeCgAZU/+Lix4KABlT/4uLDAeLa/iU+HQFHQAAAHkPHQAAAH4RHQAAAAkdAAABJBIABwEBBw0PERQZHnJhdGluZ3JhdGluZ3UwdTF1MjB1RjBEOXVGMERBAAACAYkABAAGAQEEBwoNVp38lA78lA78lA77lA773Z33bxWLkI2Qj44I9xT3FAWOj5CNkIuQi4+JjoePiI2Gi4YIi/uUBYuGiYeHiIiHh4mGi4aLho2Ijwj7FPcUBYeOiY+LkAgO+92L5hWL95QFi5CNkI6Oj4+PjZCLkIuQiY6HCPcU+xQFj4iNhouGi4aJh4eICPsU+xQFiIeGiYaLhouHjYePiI6Jj4uQCA74lBT4lBWLDAoAAAAAAwIAAZAABQAAAUwBZgAAAEcBTAFmAAAA9QAZAIQAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADw2gHg/+D/4AHgACAAAAABAAAAAAAAAAAAAAAgAAAAAAACAAAAAwAAABQAAwABAAAAFAAEADgAAAAKAAgAAgACAAEAIPDa//3//wAAAAAAIPDZ//3//wAB/+MPKwADAAEAAAAAAAAAAAAAAAEAAf//AA8AAQAAAAEAADfYOJZfDzz1AAsCAAAAAADP/aPuAAAAAM/9o+4AAAAAALcBbgAAAAgAAgAAAAAAAAABAAAB4P/gAAACAAAAAAAAtwABAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAEAAAAAtwASALcAAAAAUAAABgAAAAAADgCuAAEAAAAAAAEADAAAAAEAAAAAAAIADgBAAAEAAAAAAAMADAAiAAEAAAAAAAQADABOAAEAAAAAAAUAFgAMAAEAAAAAAAYABgAuAAEAAAAAAAoANABaAAMAAQQJAAEADAAAAAMAAQQJAAIADgBAAAMAAQQJAAMADAAiAAMAAQQJAAQADABOAAMAAQQJAAUAFgAMAAMAAQQJAAYADAA0AAMAAQQJAAoANABaAHIAYQB0AGkAbgBnAFYAZQByAHMAaQBvAG4AIAAxAC4AMAByAGEAdABpAG4AZ3JhdGluZwByAGEAdABpAG4AZwBSAGUAZwB1AGwAYQByAHIAYQB0AGkAbgBnAEYAbwBuAHQAIABnAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAEkAYwBvAE0AbwBvAG4ALgADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA) format('woff');font-weight:400;font-style:normal}.ui.accordion .accordion .title .dropdown.icon,.ui.accordion .title .dropdown.icon{font-family:Accordion;line-height:1;-webkit-backface-visibility:hidden;backface-visibility:hidden;font-weight:400;font-style:normal;text-align:center}.ui.accordion .accordion .title .dropdown.icon:before,.ui.accordion .title .dropdown.icon:before{content:'\f0da'}.ui.checkbox{position:relative;display:inline-block;-webkit-backface-visibility:hidden;backface-visibility:hidden;outline:0;vertical-align:baseline;font-style:normal;min-height:17px;font-size:1rem;line-height:17px;min-width:17px}.ui.checkbox input[type=checkbox],.ui.checkbox input[type=radio]{cursor:pointer;position:absolute;top:0;left:0;opacity:0!important;outline:0;z-index:3;width:17px;height:17px}.ui.checkbox .box,.ui.checkbox label{cursor:auto;position:relative;display:block;padding-left:1.85714em;outline:0;font-size:1em}.ui.checkbox .box:before,.ui.checkbox label:before{position:absolute;top:0;left:0;width:17px;height:17px;content:'';background:#FFF;border-radius:.21428571rem;-webkit-transition:border .1s ease,opacity .1s ease,box-shadow .1s ease,-webkit-transform .1s ease;transition:border .1s ease,opacity .1s ease,box-shadow .1s ease,-webkit-transform .1s ease;transition:border .1s ease,opacity .1s ease,transform .1s ease,box-shadow .1s ease;transition:border .1s ease,opacity .1s ease,transform .1s ease,box-shadow .1s ease,-webkit-transform .1s ease;border:1px solid #D4D4D5}.ui.checkbox .box:after,.ui.checkbox label:after{position:absolute;font-size:14px;top:0;left:0;width:17px;height:17px;text-align:center;opacity:0;color:rgba(0,0,0,.87);-webkit-transition:border .1s ease,opacity .1s ease,box-shadow .1s ease,-webkit-transform .1s ease;transition:border .1s ease,opacity .1s ease,box-shadow .1s ease,-webkit-transform .1s ease;transition:border .1s ease,opacity .1s ease,transform .1s ease,box-shadow .1s ease;transition:border .1s ease,opacity .1s ease,transform .1s ease,box-shadow .1s ease,-webkit-transform .1s ease;font-family:Checkbox}.ui.checkbox label,.ui.checkbox+label{color:rgba(0,0,0,.87);-webkit-transition:color .1s ease;transition:color .1s ease}.ui.checkbox+label{vertical-align:middle}.ui.checkbox .box:hover::before,.ui.checkbox label:hover::before{background:#FFF;border-color:rgba(34,36,38,.35)}.ui.checkbox label:hover,.ui.checkbox+label:hover{color:rgba(0,0,0,.8)}.ui.checkbox .box:active::before,.ui.checkbox label:active::before{background:#F9FAFB;border-color:rgba(34,36,38,.35)}.ui.checkbox .box:active::after,.ui.checkbox input:active~label,.ui.checkbox label:active::after{color:rgba(0,0,0,.95)}.ui.checkbox input:focus~.box:before,.ui.checkbox input:focus~label:before{background:#FFF;border-color:#96C8DA}.ui.checkbox input:focus~.box:after,.ui.checkbox input:focus~label,.ui.checkbox input:focus~label:after{color:rgba(0,0,0,.95)}.ui.checkbox input:checked~.box:before,.ui.checkbox input:checked~label:before{background:#FFF;border-color:rgba(34,36,38,.35)}.ui.checkbox input:checked~.box:after,.ui.checkbox input:checked~label:after{opacity:1;color:rgba(0,0,0,.95)}.ui.checkbox input:not([type=radio]):indeterminate~.box:before,.ui.checkbox input:not([type=radio]):indeterminate~label:before{background:#FFF;border-color:rgba(34,36,38,.35)}.ui.checkbox input:not([type=radio]):indeterminate~.box:after,.ui.checkbox input:not([type=radio]):indeterminate~label:after{opacity:1;color:rgba(0,0,0,.95)}.ui.checkbox input:checked:focus~.box:before,.ui.checkbox input:checked:focus~label:before,.ui.checkbox input:not([type=radio]):indeterminate:focus~.box:before,.ui.checkbox input:not([type=radio]):indeterminate:focus~label:before{background:#FFF;border-color:#96C8DA}.ui.checkbox input:checked:focus~.box:after,.ui.checkbox input:checked:focus~label:after,.ui.checkbox input:not([type=radio]):indeterminate:focus~.box:after,.ui.checkbox input:not([type=radio]):indeterminate:focus~label:after{color:rgba(0,0,0,.95)}.ui.read-only.checkbox,.ui.read-only.checkbox label{cursor:default}.ui.checkbox input[disabled]~.box:after,.ui.checkbox input[disabled]~label,.ui.disabled.checkbox .box:after,.ui.disabled.checkbox label{cursor:default!important;opacity:.5;color:#000}.ui.checkbox input.hidden{z-index:-1}.ui.checkbox input.hidden+label{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ui.radio.checkbox{min-height:15px}.ui.radio.checkbox .box,.ui.radio.checkbox label{padding-left:1.85714em}.ui.radio.checkbox .box:before,.ui.radio.checkbox label:before{content:'';-webkit-transform:none;transform:none;width:15px;height:15px;border-radius:500rem;top:1px;left:0}.ui.radio.checkbox .box:after,.ui.radio.checkbox label:after{border:none;content:''!important;line-height:15px;top:1px;left:0;width:15px;height:15px;border-radius:500rem;-webkit-transform:scale(.46666667);transform:scale(.46666667);background-color:rgba(0,0,0,.87)}.ui.radio.checkbox input:focus~.box:before,.ui.radio.checkbox input:focus~label:before{background-color:#FFF}.ui.radio.checkbox input:focus~.box:after,.ui.radio.checkbox input:focus~label:after{background-color:rgba(0,0,0,.95)}.ui.radio.checkbox input:indeterminate~.box:after,.ui.radio.checkbox input:indeterminate~label:after{opacity:0}.ui.radio.checkbox input:checked~.box:before,.ui.radio.checkbox input:checked~label:before{background-color:#FFF}.ui.radio.checkbox input:checked~.box:after,.ui.radio.checkbox input:checked~label:after{background-color:rgba(0,0,0,.95)}.ui.radio.checkbox input:focus:checked~.box:before,.ui.radio.checkbox input:focus:checked~label:before{background-color:#FFF}.ui.radio.checkbox input:focus:checked~.box:after,.ui.radio.checkbox input:focus:checked~label:after{background-color:rgba(0,0,0,.95)}.ui.slider.checkbox{min-height:1.25rem}.ui.slider.checkbox input{width:3.5rem;height:1.25rem}.ui.slider.checkbox .box,.ui.slider.checkbox label{padding-left:4.5rem;line-height:1rem;color:rgba(0,0,0,.4)}.ui.slider.checkbox .box:before,.ui.slider.checkbox label:before{display:block;position:absolute;content:'';border:none!important;left:0;z-index:1;top:.4rem;background-color:rgba(0,0,0,.05);width:3.5rem;height:.21428571rem;-webkit-transform:none;transform:none;border-radius:500rem;-webkit-transition:background .3s ease;transition:background .3s ease}.ui.slider.checkbox .box:after,.ui.slider.checkbox label:after{background:-webkit-linear-gradient(transparent,rgba(0,0,0,.05)) #FFF;background:linear-gradient(transparent,rgba(0,0,0,.05)) #FFF;position:absolute;content:''!important;opacity:1;z-index:2;border:none;box-shadow:0 1px 2px 0 rgba(34,36,38,.15),0 0 0 1px rgba(34,36,38,.15) inset;width:1.5rem;height:1.5rem;top:-.25rem;left:0;-webkit-transform:none;transform:none;border-radius:500rem;-webkit-transition:left .3s ease;transition:left .3s ease}.ui.slider.checkbox input:focus~.box:before,.ui.slider.checkbox input:focus~label:before{background-color:rgba(0,0,0,.15);border:none}.ui.slider.checkbox .box:hover,.ui.slider.checkbox label:hover{color:rgba(0,0,0,.8)}.ui.slider.checkbox .box:hover::before,.ui.slider.checkbox label:hover::before{background:rgba(0,0,0,.15)}.ui.slider.checkbox input:checked~.box,.ui.slider.checkbox input:checked~label{color:rgba(0,0,0,.95)!important}.ui.slider.checkbox input:checked~.box:before,.ui.slider.checkbox input:checked~label:before{background-color:#545454!important}.ui.slider.checkbox input:checked~.box:after,.ui.slider.checkbox input:checked~label:after{left:2rem}.ui.slider.checkbox input:focus:checked~.box,.ui.slider.checkbox input:focus:checked~label{color:rgba(0,0,0,.95)!important}.ui.slider.checkbox input:focus:checked~.box:before,.ui.slider.checkbox input:focus:checked~label:before{background-color:#000!important}.ui.toggle.checkbox{min-height:1.5rem}.ui.toggle.checkbox input{width:3.5rem;height:1.5rem}.ui.toggle.checkbox .box,.ui.toggle.checkbox label{min-height:1.5rem;padding-left:4.5rem;color:rgba(0,0,0,.87)}.ui.toggle.checkbox label{padding-top:.15em}.ui.toggle.checkbox .box:before,.ui.toggle.checkbox label:before{display:block;position:absolute;content:'';z-index:1;-webkit-transform:none;transform:none;border:none;top:0;background:rgba(0,0,0,.05);width:3.5rem;height:1.5rem;border-radius:500rem}.ui.toggle.checkbox .box:after,.ui.toggle.checkbox label:after{background:-webkit-linear-gradient(transparent,rgba(0,0,0,.05)) #FFF;background:linear-gradient(transparent,rgba(0,0,0,.05)) #FFF;position:absolute;content:''!important;opacity:1;z-index:2;border:none;box-shadow:0 1px 2px 0 rgba(34,36,38,.15),0 0 0 1px rgba(34,36,38,.15) inset;width:1.5rem;height:1.5rem;top:0;left:0;border-radius:500rem;-webkit-transition:background .3s ease,left .3s ease;transition:background .3s ease,left .3s ease}.ui.toggle.checkbox input~.box:after,.ui.toggle.checkbox input~label:after{left:-.05rem}.ui.toggle.checkbox .box:hover::before,.ui.toggle.checkbox input:focus~.box:before,.ui.toggle.checkbox input:focus~label:before,.ui.toggle.checkbox label:hover::before{background-color:rgba(0,0,0,.15);border:none}.ui.toggle.checkbox input:checked~.box,.ui.toggle.checkbox input:checked~label{color:rgba(0,0,0,.95)!important}.ui.toggle.checkbox input:checked~.box:before,.ui.toggle.checkbox input:checked~label:before{background-color:#2185D0!important}.ui.toggle.checkbox input:checked~.box:after,.ui.toggle.checkbox input:checked~label:after{left:2.15rem}.ui.toggle.checkbox input:focus:checked~.box,.ui.toggle.checkbox input:focus:checked~label{color:rgba(0,0,0,.95)!important}.ui.toggle.checkbox input:focus:checked~.box:before,.ui.toggle.checkbox input:focus:checked~label:before{background-color:#0d71bb!important}.ui.fitted.checkbox .box,.ui.fitted.checkbox label{padding-left:0!important}.ui.fitted.slider.checkbox,.ui.fitted.toggle.checkbox{width:3.5rem}@font-face{font-family:Checkbox;src:url(data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMg8SBD8AAAC8AAAAYGNtYXAYVtCJAAABHAAAAFRnYXNwAAAAEAAAAXAAAAAIZ2x5Zn4huwUAAAF4AAABYGhlYWQGPe1ZAAAC2AAAADZoaGVhB30DyAAAAxAAAAAkaG10eBBKAEUAAAM0AAAAHGxvY2EAmgESAAADUAAAABBtYXhwAAkALwAAA2AAAAAgbmFtZSC8IugAAAOAAAABknBvc3QAAwAAAAAFFAAAACAAAwMTAZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADoAgPA/8AAQAPAAEAAAAABAAAAAAAAAAAAAAAgAAAAAAADAAAAAwAAABwAAQADAAAAHAADAAEAAAAcAAQAOAAAAAoACAACAAIAAQAg6AL//f//AAAAAAAg6AD//f//AAH/4xgEAAMAAQAAAAAAAAAAAAAAAQAB//8ADwABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAABAEUAUQO7AvgAGgAAARQHAQYjIicBJjU0PwE2MzIfAQE2MzIfARYVA7sQ/hQQFhcQ/uMQEE4QFxcQqAF2EBcXEE4QAnMWEP4UEBABHRAXFhBOEBCoAXcQEE4QFwAAAAABAAABbgMlAkkAFAAAARUUBwYjISInJj0BNDc2MyEyFxYVAyUQEBf9SRcQEBAQFwK3FxAQAhJtFxAQEBAXbRcQEBAQFwAAAAABAAAASQMlA24ALAAAARUUBwYrARUUBwYrASInJj0BIyInJj0BNDc2OwE1NDc2OwEyFxYdATMyFxYVAyUQEBfuEBAXbhYQEO4XEBAQEBfuEBAWbhcQEO4XEBACEm0XEBDuFxAQEBAX7hAQF20XEBDuFxAQEBAX7hAQFwAAAQAAAAIAAHRSzT9fDzz1AAsEAAAAAADRsdR3AAAAANGx1HcAAAAAA7sDbgAAAAgAAgAAAAAAAAABAAADwP/AAAAEAAAAAAADuwABAAAAAAAAAAAAAAAAAAAABwQAAAAAAAAAAAAAAAIAAAAEAABFAyUAAAMlAAAAAAAAAAoAFAAeAE4AcgCwAAEAAAAHAC0AAQAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAOAK4AAQAAAAAAAQAIAAAAAQAAAAAAAgAHAGkAAQAAAAAAAwAIADkAAQAAAAAABAAIAH4AAQAAAAAABQALABgAAQAAAAAABgAIAFEAAQAAAAAACgAaAJYAAwABBAkAAQAQAAgAAwABBAkAAgAOAHAAAwABBAkAAwAQAEEAAwABBAkABAAQAIYAAwABBAkABQAWACMAAwABBAkABgAQAFkAAwABBAkACgA0ALBDaGVja2JveABDAGgAZQBjAGsAYgBvAHhWZXJzaW9uIDIuMABWAGUAcgBzAGkAbwBuACAAMgAuADBDaGVja2JveABDAGgAZQBjAGsAYgBvAHhDaGVja2JveABDAGgAZQBjAGsAYgBvAHhSZWd1bGFyAFIAZQBnAHUAbABhAHJDaGVja2JveABDAGgAZQBjAGsAYgBvAHhGb250IGdlbmVyYXRlZCBieSBJY29Nb29uLgBGAG8AbgB0ACAAZwBlAG4AZQByAGEAdABlAGQAIABiAHkAIABJAGMAbwBNAG8AbwBuAC4AAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA) format('truetype')}.ui.checkbox input:checked~.box:after,.ui.checkbox input:checked~label:after{content:'\e800'}.ui.checkbox input:indeterminate~.box:after,.ui.checkbox input:indeterminate~label:after{font-size:12px;content:'\e801'}.dimmable:not(.body){position:relative}.ui.dimmer{display:none;position:absolute;top:0!important;left:0!important;width:100%;height:100%;text-align:center;vertical-align:middle;background-color:rgba(0,0,0,.85);opacity:0;line-height:1;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.5s;animation-duration:.5s;-webkit-transition:background-color .5s linear;transition:background-color .5s linear;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;will-change:opacity;z-index:1000}.ui.dimmer>.content{width:100%;height:100%;display:table;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.ui.dimmer>.content>*{display:table-cell;vertical-align:middle;color:#FFF}.ui.segment>.ui.dimmer{border-radius:inherit!important}.animating.dimmable:not(body),.dimmed.dimmable:not(body){overflow:hidden}.dimmed.dimmable>.ui.animating.dimmer,.dimmed.dimmable>.ui.visible.dimmer,.ui.active.dimmer{display:block;opacity:1}.ui.disabled.dimmer{width:0!important;height:0!important}.ui.page.dimmer{position:fixed;-webkit-transform-style:'';transform-style:'';-webkit-perspective:2000px;perspective:2000px;-webkit-transform-origin:center center;transform-origin:center center}body.animating.in.dimmable,body.dimmed.dimmable{overflow:hidden}body.dimmable>.dimmer{position:fixed}.blurring.dimmable>:not(.dimmer){-webkit-filter:blur(0) grayscale(0);filter:blur(0) grayscale(0);-webkit-transition:.8s filter ease;transition:.8s filter ease}.blurring.dimmed.dimmable>:not(.dimmer){-webkit-filter:blur(5px) grayscale(.7);filter:blur(5px) grayscale(.7)}.blurring.dimmable>.dimmer{background-color:rgba(0,0,0,.6)}.blurring.dimmable>.inverted.dimmer{background-color:rgba(255,255,255,.6)}.ui.dimmer>.top.aligned.content>*{vertical-align:top}.ui.dimmer>.bottom.aligned.content>*{vertical-align:bottom}.ui.inverted.dimmer{background-color:rgba(255,255,255,.85)}.ui.inverted.dimmer>.content>*{color:#FFF}.ui.simple.dimmer{display:block;overflow:hidden;opacity:1;width:0;height:0%;z-index:-100;background-color:rgba(0,0,0,0)}.dimmed.dimmable>.ui.simple.dimmer{overflow:visible;opacity:1;width:100%;height:100%;background-color:rgba(0,0,0,.85);z-index:1}.ui.simple.inverted.dimmer{background-color:rgba(255,255,255,0)}.dimmed.dimmable>.ui.simple.inverted.dimmer{background-color:rgba(255,255,255,.85)}.ui.dropdown{cursor:pointer;position:relative;display:inline-block;outline:0;text-align:left;-webkit-transition:box-shadow .1s ease,width .1s ease;transition:box-shadow .1s ease,width .1s ease;-webkit-tap-highlight-color:transparent}.ui.dropdown .menu{cursor:auto;position:absolute;display:none;outline:0;top:100%;min-width:-webkit-max-content;min-width:-moz-max-content;min-width:max-content;margin:0;padding:0;background:#FFF;font-size:1em;text-shadow:none;text-align:left;box-shadow:0 2px 3px 0 rgba(34,36,38,.15);border:1px solid rgba(34,36,38,.15);border-radius:.28571429rem;-webkit-transition:opacity .1s ease;transition:opacity .1s ease;z-index:11;will-change:transform,opacity}.ui.dropdown .menu>*{white-space:nowrap}.ui.dropdown>input:not(.search):first-child,.ui.dropdown>select{display:none!important}.ui.dropdown>.dropdown.icon{position:relative;font-size:.85714286em;margin:0 0 0 1em}.ui.dropdown .menu>.item .dropdown.icon{width:auto;float:right;margin:0 0 0 1em}.ui.dropdown .menu>.item .dropdown.icon+.text{margin-right:1em}.ui.dropdown>.text{display:inline-block;-webkit-transition:none;transition:none}.ui.dropdown .menu>.item{position:relative;cursor:pointer;display:block;border:none;height:auto;text-align:left;border-top:none;line-height:1em;color:rgba(0,0,0,.87);padding:.78571429rem 1.14285714rem!important;font-size:1rem;text-transform:none;font-weight:400;box-shadow:none;-webkit-touch-callout:none}.ui.dropdown .menu>.item:first-child{border-top-width:0}.ui.dropdown .menu .item>[class*="right floated"],.ui.dropdown>.text>[class*="right floated"]{float:right!important;margin-right:0!important;margin-left:1em!important}.ui.dropdown .menu .item>[class*="left floated"],.ui.dropdown>.text>[class*="left floated"]{float:left!important;margin-left:0!important;margin-right:1em!important}.ui.dropdown .menu .item>.flag.floated,.ui.dropdown .menu .item>.icon.floated,.ui.dropdown .menu .item>.image.floated,.ui.dropdown .menu .item>img.floated{margin-top:0}.ui.dropdown .menu>.header{margin:1rem 0 .75rem;padding:0 1.14285714rem;color:rgba(0,0,0,.85);font-size:.78571429em;font-weight:700;text-transform:uppercase}.ui.dropdown .menu>.divider{border-top:1px solid rgba(34,36,38,.1);height:0;margin:.5em 0}.ui.dropdown .menu>.input{width:auto;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin:1.14285714rem .78571429rem;min-width:10rem}.ui.dropdown .menu>.header+.input{margin-top:0}.ui.dropdown .menu>.input:not(.transparent) input{padding:.5em 1em}.ui.dropdown .menu>.input:not(.transparent) .button,.ui.dropdown .menu>.input:not(.transparent) .icon,.ui.dropdown .menu>.input:not(.transparent) .label{padding-top:.5em;padding-bottom:.5em}.ui.dropdown .menu>.item>.description,.ui.dropdown>.text>.description{float:right;margin:0 0 0 1em;color:rgba(0,0,0,.4)}.ui.dropdown .menu>.message{padding:.78571429rem 1.14285714rem;font-weight:400}.ui.dropdown .menu>.message:not(.ui){color:rgba(0,0,0,.4)}.ui.dropdown .menu .menu{top:0!important;left:100%!important;right:auto!important;margin:0 0 0 -.5em!important;border-radius:.28571429rem!important;z-index:21!important}.ui.dropdown .menu .menu:after{display:none}.ui.dropdown .menu>.item>.flag,.ui.dropdown .menu>.item>.icon,.ui.dropdown .menu>.item>.image,.ui.dropdown .menu>.item>.label,.ui.dropdown .menu>.item>img,.ui.dropdown>.text>.flag,.ui.dropdown>.text>.icon,.ui.dropdown>.text>.image,.ui.dropdown>.text>.label,.ui.dropdown>.text>img{margin-top:0;margin-left:0;float:none;margin-right:.78571429rem}.ui.dropdown .menu>.item>.image,.ui.dropdown .menu>.item>img,.ui.dropdown>.text>.image,.ui.dropdown>.text>img{display:inline-block;vertical-align:middle;width:auto;max-height:2em}.ui.dropdown .ui.menu>.item:before,.ui.menu .ui.dropdown .menu>.item:before{display:none}.ui.menu .ui.dropdown .menu .active.item{border-left:none}.ui.buttons>.ui.dropdown:last-child .menu,.ui.menu .right.dropdown.item .menu,.ui.menu .right.menu .dropdown:last-child .menu{left:auto;right:0}.ui.label.dropdown .menu{min-width:100%}.ui.dropdown.icon.button>.dropdown.icon{margin:0}.ui.button.dropdown .menu{min-width:100%}.ui.selection.dropdown{cursor:pointer;word-wrap:break-word;line-height:1em;white-space:normal;outline:0;-webkit-transform:rotateZ(0);transform:rotateZ(0);min-width:14em;min-height:2.7142em;background:#FFF;display:inline-block;padding:.78571429em 2.1em .78571429em 1em;color:rgba(0,0,0,.87);box-shadow:none;border:1px solid rgba(34,36,38,.15);border-radius:.28571429rem;-webkit-transition:box-shadow .1s ease,width .1s ease;transition:box-shadow .1s ease,width .1s ease}.ui.selection.dropdown.active,.ui.selection.dropdown.visible{z-index:10}select.ui.dropdown{height:38px;padding:.5em;border:1px solid rgba(34,36,38,.15);visibility:visible}.ui.selection.dropdown>.delete.icon,.ui.selection.dropdown>.dropdown.icon,.ui.selection.dropdown>.search.icon{cursor:pointer;position:absolute;width:auto;height:auto;line-height:1.2142em;top:.78571429em;right:1em;z-index:3;margin:-.78571429em;padding:.78571429em;opacity:.8;-webkit-transition:opacity .1s ease;transition:opacity .1s ease}.ui.compact.selection.dropdown{min-width:0}.ui.selection.dropdown .menu{overflow-x:hidden;overflow-y:auto;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-overflow-scrolling:touch;border-top-width:0!important;outline:0;margin:0 -1px;min-width:calc(100% + 2px);width:calc(100% + 2px);border-radius:0 0 .28571429rem .28571429rem;box-shadow:0 2px 3px 0 rgba(34,36,38,.15);-webkit-transition:opacity .1s ease;transition:opacity .1s ease}.ui.selection.dropdown .menu:after,.ui.selection.dropdown .menu:before{display:none}.ui.selection.dropdown .menu>.message{padding:.78571429rem 1.14285714rem}@media only screen and (max-width:767px){.ui.selection.dropdown .menu{max-height:8.01428571rem}}@media only screen and (min-width:768px){.ui.selection.dropdown .menu{max-height:10.68571429rem}}@media only screen and (min-width:992px){.ui.selection.dropdown .menu{max-height:16.02857143rem}}@media only screen and (min-width:1920px){.ui.selection.dropdown .menu{max-height:21.37142857rem}}.ui.selection.dropdown .menu>.item{border-top:1px solid #FAFAFA;padding:.78571429rem 1.14285714rem!important;white-space:normal;word-wrap:normal}.ui.selection.dropdown .menu>.hidden.addition.item{display:none}.ui.selection.dropdown:hover{border-color:rgba(34,36,38,.35);box-shadow:none}.ui.selection.active.dropdown,.ui.selection.active.dropdown .menu{border-color:#96C8DA;box-shadow:0 2px 3px 0 rgba(34,36,38,.15)}.ui.selection.dropdown:focus{border-color:#96C8DA;box-shadow:none}.ui.selection.dropdown:focus .menu{border-color:#96C8DA;box-shadow:0 2px 3px 0 rgba(34,36,38,.15)}.ui.selection.visible.dropdown>.text:not(.default){font-weight:400;color:rgba(0,0,0,.8)}.ui.selection.active.dropdown:hover,.ui.selection.active.dropdown:hover .menu{border-color:#96C8DA;box-shadow:0 2px 3px 0 rgba(34,36,38,.15)}.ui.active.selection.dropdown>.dropdown.icon,.ui.visible.selection.dropdown>.dropdown.icon{opacity:1;z-index:3}.ui.active.selection.dropdown{border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}.ui.active.empty.selection.dropdown{border-radius:.28571429rem!important;box-shadow:none!important}.ui.active.empty.selection.dropdown .menu{border:none!important;box-shadow:none!important}.ui.search.dropdown{min-width:''}.ui.search.dropdown>input.search{background:none!important;border:none!important;box-shadow:none!important;cursor:pointer;top:0;left:0;width:100%;outline:0;-webkit-tap-highlight-color:rgba(255,255,255,0);padding:inherit;position:absolute;z-index:2}.ui.search.dropdown>.text{cursor:text;position:relative;left:1px;z-index:3}.ui.search.selection.dropdown>input.search{line-height:1.2142em;padding:.67861429em 2.1em .67861429em 1em}.ui.search.selection.dropdown>span.sizer{line-height:1.2142em;padding:.67861429em 2.1em .67861429em 1em;display:none;white-space:pre}.ui.search.dropdown.active>input.search,.ui.search.dropdown.visible>input.search{cursor:auto}.ui.search.dropdown.active>.text,.ui.search.dropdown.visible>.text{pointer-events:none}.ui.active.search.dropdown input.search:focus+.text .flag,.ui.active.search.dropdown input.search:focus+.text .icon{opacity:.45}.ui.active.search.dropdown input.search:focus+.text{color:rgba(115,115,115,.87)!important}.ui.search.dropdown .menu{overflow-x:hidden;overflow-y:auto;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-overflow-scrolling:touch}@media only screen and (max-width:767px){.ui.search.dropdown .menu{max-height:8.01428571rem}}@media only screen and (min-width:768px){.ui.search.dropdown .menu{max-height:10.68571429rem}}@media only screen and (min-width:992px){.ui.search.dropdown .menu{max-height:16.02857143rem}}@media only screen and (min-width:1920px){.ui.search.dropdown .menu{max-height:21.37142857rem}}.ui.multiple.dropdown{padding:.22620476em 2.1em .22620476em .35714286em}.ui.multiple.dropdown .menu{cursor:auto}.ui.multiple.search.dropdown,.ui.multiple.search.dropdown>input.search{cursor:text}.ui.multiple.dropdown>.label{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:inline-block;vertical-align:top;white-space:normal;font-size:1em;padding:.35714286em .78571429em;margin:.14285714rem .28571429rem .14285714rem 0;box-shadow:0 0 0 1px rgba(34,36,38,.15) inset}.ui.multiple.dropdown .dropdown.icon{margin:'';padding:''}.ui.multiple.dropdown>.text{position:static;padding:0;max-width:100%;margin:.45240952em 0 .45240952em .64285714em;line-height:1.21428571em}.ui.multiple.dropdown>.label~input.search{margin-left:.14285714em!important}.ui.multiple.dropdown>.label~.text{display:none}.ui.multiple.search.dropdown>.text{display:inline-block;position:absolute;top:0;left:0;padding:inherit;margin:.45240952em 0 .45240952em .64285714em;line-height:1.21428571em}.ui.multiple.search.dropdown>.label~.text{display:none}.ui.multiple.search.dropdown>input.search{position:static;padding:0;max-width:100%;margin:.45240952em 0 .45240952em .64285714em;width:2.2em;line-height:1.21428571em}.ui.inline.dropdown{cursor:pointer;display:inline-block;color:inherit}.ui.inline.dropdown .dropdown.icon{margin:0 .5em 0 .21428571em;vertical-align:baseline}.ui.inline.dropdown>.text{font-weight:700}.ui.inline.dropdown .menu{cursor:auto;margin-top:.21428571em;border-radius:.28571429rem}.ui.dropdown .menu .active.item{background:0 0;font-weight:700;color:rgba(0,0,0,.95);box-shadow:none;z-index:12}.ui.dropdown .menu>.item:hover{background:rgba(0,0,0,.05);color:rgba(0,0,0,.95);z-index:13}.ui.loading.dropdown>i.icon{height:1em!important;padding:1.14285714em 1.07142857em!important}.ui.loading.dropdown>i.icon:before{position:absolute;content:'';top:50%;left:50%;margin:-.64285714em 0 0 -.64285714em;width:1.28571429em;height:1.28571429em;border-radius:500rem;border:.2em solid rgba(0,0,0,.1)}.ui.loading.dropdown>i.icon:after{position:absolute;content:'';top:50%;left:50%;box-shadow:0 0 0 1px transparent;margin:-.64285714em 0 0 -.64285714em;width:1.28571429em;height:1.28571429em;-webkit-animation:dropdown-spin .6s linear;animation:dropdown-spin .6s linear;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;border-radius:500rem;border-color:#767676 transparent transparent;border-style:solid;border-width:.2em}.ui.loading.dropdown.button>i.icon:after,.ui.loading.dropdown.button>i.icon:before{display:none}@-webkit-keyframes dropdown-spin{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes dropdown-spin{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.ui.default.dropdown:not(.button)>.text,.ui.dropdown:not(.button)>.default.text{color:rgba(191,191,191,.87)}.ui.default.dropdown:not(.button)>input:focus+.text,.ui.dropdown:not(.button)>input:focus+.default.text{color:rgba(115,115,115,.87)}.ui.loading.dropdown>.text{-webkit-transition:none;transition:none}.ui.dropdown .loading.menu{display:block;visibility:hidden;z-index:-1}.ui.dropdown .menu .selected.item,.ui.dropdown.selected{background:rgba(0,0,0,.03);color:rgba(0,0,0,.95)}.ui.dropdown>.filtered.text{visibility:hidden}.ui.dropdown .filtered.item{display:none!important}.ui.dropdown.error,.ui.dropdown.error>.default.text,.ui.dropdown.error>.text{color:#9F3A38}.ui.selection.dropdown.error{background:#FFF6F6;border-color:#E0B4B4}.ui.dropdown.error>.menu,.ui.dropdown.error>.menu .menu,.ui.selection.dropdown.error:hover{border-color:#E0B4B4}.ui.dropdown.error>.menu>.item{color:#9F3A38}.ui.multiple.selection.error.dropdown>.label{border-color:#E0B4B4}.ui.dropdown.error>.menu>.item:hover{background-color:#FFF2F2}.ui.dropdown.error>.menu .active.item{background-color:#FDCFCF}.ui.disabled.dropdown,.ui.dropdown .menu>.disabled.item{cursor:default;pointer-events:none;opacity:.45}.ui.dropdown .menu{left:0}.ui.dropdown .menu .right.menu,.ui.dropdown .right.menu>.menu{left:100%!important;right:auto!important;border-radius:.28571429rem!important}.ui.dropdown .menu .left.menu,.ui.dropdown>.left.menu .menu{left:auto!important;right:100%!important;border-radius:.28571429rem!important}.ui.dropdown .item .left.dropdown.icon,.ui.dropdown .left.menu .item .dropdown.icon{width:auto;float:left;margin:0 .78571429rem 0 0}.ui.dropdown .item .left.dropdown.icon+.text,.ui.dropdown .left.menu .item .dropdown.icon+.text{margin-left:1em}.ui.upward.dropdown>.menu{top:auto;bottom:100%;box-shadow:0 0 3px 0 rgba(0,0,0,.08);border-radius:.28571429rem .28571429rem 0 0}.ui.dropdown .upward.menu{top:auto!important;bottom:0!important}.ui.simple.upward.active.dropdown,.ui.simple.upward.dropdown:hover{border-radius:.28571429rem .28571429rem 0 0!important}.ui.upward.dropdown.button:not(.pointing):not(.floating).active{border-radius:.28571429rem .28571429rem 0 0}.ui.upward.selection.dropdown .menu{border-top-width:1px!important;border-bottom-width:0!important;box-shadow:0 -2px 3px 0 rgba(0,0,0,.08)}.ui.upward.selection.dropdown:hover{box-shadow:0 0 2px 0 rgba(0,0,0,.05)}.ui.active.upward.selection.dropdown{border-radius:0 0 .28571429rem .28571429rem!important}.ui.upward.selection.dropdown.visible{box-shadow:0 0 3px 0 rgba(0,0,0,.08);border-radius:0 0 .28571429rem .28571429rem!important}.ui.upward.active.selection.dropdown:hover{box-shadow:0 0 3px 0 rgba(0,0,0,.05)}.ui.upward.active.selection.dropdown:hover .menu{box-shadow:0 -2px 3px 0 rgba(0,0,0,.08)}.ui.dropdown .scrolling.menu,.ui.scrolling.dropdown .menu{overflow-x:hidden;overflow-y:auto}.ui.scrolling.dropdown .menu{overflow-x:hidden;overflow-y:auto;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-overflow-scrolling:touch;min-width:100%!important;width:auto!important}.ui.dropdown .scrolling.menu{position:static;overflow-y:auto;border:none;box-shadow:none!important;border-radius:0!important;margin:0!important;min-width:100%!important;width:auto!important;border-top:1px solid rgba(34,36,38,.15)}.ui.dropdown .scrolling.menu>.item.item.item,.ui.scrolling.dropdown .menu .item.item.item{border-top:none;padding-right:calc(1.14285714rem + 17px)!important}.ui.dropdown .scrolling.menu .item:first-child,.ui.scrolling.dropdown .menu .item:first-child{border-top:none}.ui.dropdown>.animating.menu .scrolling.menu,.ui.dropdown>.visible.menu .scrolling.menu{display:block}@media all and (-ms-high-contrast:none){.ui.dropdown .scrolling.menu,.ui.scrolling.dropdown .menu{min-width:calc(100% - 17px)}}@media only screen and (max-width:767px){.ui.dropdown .scrolling.menu,.ui.scrolling.dropdown .menu{max-height:10.28571429rem}}.ui.simple.dropdown .menu:after,.ui.simple.dropdown .menu:before{display:none}.ui.simple.dropdown .menu{position:absolute;display:block;overflow:hidden;top:-9999px!important;opacity:0;width:0;height:0;-webkit-transition:opacity .1s ease;transition:opacity .1s ease}.ui.simple.active.dropdown,.ui.simple.dropdown:hover{border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}.ui.simple.active.dropdown>.menu,.ui.simple.dropdown:hover>.menu{overflow:visible;width:auto;height:auto;top:100%!important;opacity:1}.ui.simple.dropdown:hover>.menu>.item:hover>.menu,.ui.simple.dropdown>.menu>.item:active>.menu{overflow:visible;width:auto;height:auto;top:0!important;left:100%!important;opacity:1}.ui.simple.disabled.dropdown:hover .menu{display:none;height:0;width:0;overflow:hidden}.ui.simple.visible.dropdown>.menu{display:block}.ui.fluid.dropdown{display:block;width:100%;min-width:0}.ui.fluid.dropdown>.dropdown.icon{float:right}.ui.floating.dropdown .menu{left:0;right:auto;box-shadow:0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.15)!important;border-radius:.28571429rem!important}.ui.floating.dropdown>.menu{margin-top:.5em!important;border-radius:.28571429rem!important}.ui.pointing.dropdown>.menu{top:100%;margin-top:.78571429rem;border-radius:.28571429rem}.ui.pointing.dropdown>.menu:after{display:block;position:absolute;pointer-events:none;content:'';visibility:visible;-webkit-transform:rotate(45deg);transform:rotate(45deg);width:.5em;height:.5em;box-shadow:-1px -1px 0 1px rgba(34,36,38,.15);background:#FFF;z-index:2;top:-.25em;left:50%;margin:0 0 0 -.25em}.ui.top.left.pointing.dropdown>.menu{top:100%;bottom:auto;left:0;right:auto;margin:1em 0 0}.ui.top.left.pointing.dropdown>.menu:after{top:-.25em;left:1em;right:auto;margin:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.ui.top.right.pointing.dropdown>.menu{top:100%;bottom:auto;right:0;left:auto;margin:1em 0 0}.ui.top.right.pointing.dropdown>.menu:after{top:-.25em;left:auto;right:1em;margin:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.ui.left.pointing.dropdown>.menu{top:0;left:100%;right:auto;margin:0 0 0 1em}.ui.left.pointing.dropdown>.menu:after{top:1em;left:-.25em;margin:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.ui.right.pointing.dropdown>.menu{top:0;left:auto;right:100%;margin:0 1em 0 0}.ui.right.pointing.dropdown>.menu:after{top:1em;left:auto;right:-.25em;margin:0;-webkit-transform:rotate(135deg);transform:rotate(135deg)}.ui.bottom.pointing.dropdown>.menu{top:auto;bottom:100%;left:0;right:auto;margin:0 0 1em}.ui.bottom.pointing.dropdown>.menu:after{top:auto;bottom:-.25em;right:auto;margin:0;-webkit-transform:rotate(-135deg);transform:rotate(-135deg)}.ui.bottom.pointing.dropdown>.menu .menu{top:auto!important;bottom:0!important}.ui.bottom.left.pointing.dropdown>.menu{left:0;right:auto}.ui.bottom.left.pointing.dropdown>.menu:after{left:1em;right:auto}.ui.bottom.right.pointing.dropdown>.menu{right:0;left:auto}.ui.bottom.right.pointing.dropdown>.menu:after{left:auto;right:1em}.ui.upward.pointing.dropdown>.menu,.ui.upward.top.pointing.dropdown>.menu{top:auto;bottom:100%;margin:0 0 .78571429rem;border-radius:.28571429rem}.ui.upward.pointing.dropdown>.menu:after,.ui.upward.top.pointing.dropdown>.menu:after{top:100%;bottom:auto;box-shadow:1px 1px 0 1px rgba(34,36,38,.15);margin:-.25em 0 0}@font-face{font-family:Dropdown;src:url(data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMggjB5AAAAC8AAAAYGNtYXAPfuIIAAABHAAAAExnYXNwAAAAEAAAAWgAAAAIZ2x5Zjo82LgAAAFwAAABVGhlYWQAQ88bAAACxAAAADZoaGVhAwcB6QAAAvwAAAAkaG10eAS4ABIAAAMgAAAAIGxvY2EBNgDeAAADQAAAABJtYXhwAAoAFgAAA1QAAAAgbmFtZVcZpu4AAAN0AAABRXBvc3QAAwAAAAAEvAAAACAAAwIAAZAABQAAAUwBZgAAAEcBTAFmAAAA9QAZAIQAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADw2gHg/+D/4AHgACAAAAABAAAAAAAAAAAAAAAgAAAAAAACAAAAAwAAABQAAwABAAAAFAAEADgAAAAKAAgAAgACAAEAIPDa//3//wAAAAAAIPDX//3//wAB/+MPLQADAAEAAAAAAAAAAAAAAAEAAf//AA8AAQAAAAAAAAAAAAIAADc5AQAAAAABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAIABJQElABMAABM0NzY3BTYXFhUUDwEGJwYvASY1AAUGBwEACAUGBoAFCAcGgAUBEgcGBQEBAQcECQYHfwYBAQZ/BwYAAQAAAG4BJQESABMAADc0PwE2MzIfARYVFAcGIyEiJyY1AAWABgcIBYAGBgUI/wAHBgWABwaABQWABgcHBgUFBgcAAAABABIASQC3AW4AEwAANzQ/ATYXNhcWHQEUBwYnBi8BJjUSBoAFCAcFBgYFBwgFgAbbBwZ/BwEBBwQJ/wgEBwEBB38GBgAAAAABAAAASQClAW4AEwAANxE0NzYzMh8BFhUUDwEGIyInJjUABQYHCAWABgaABQgHBgVbAQAIBQYGgAUIBwWABgYFBwAAAAEAAAABAADZuaKOXw889QALAgAAAAAA0ABHWAAAAADQAEdYAAAAAAElAW4AAAAIAAIAAAAAAAAAAQAAAeD/4AAAAgAAAAAAASUAAQAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAABAAAAASUAAAElAAAAtwASALcAAAAAAAAACgAUAB4AQgBkAIgAqgAAAAEAAAAIABQAAQAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAOAK4AAQAAAAAAAQAOAAAAAQAAAAAAAgAOAEcAAQAAAAAAAwAOACQAAQAAAAAABAAOAFUAAQAAAAAABQAWAA4AAQAAAAAABgAHADIAAQAAAAAACgA0AGMAAwABBAkAAQAOAAAAAwABBAkAAgAOAEcAAwABBAkAAwAOACQAAwABBAkABAAOAFUAAwABBAkABQAWAA4AAwABBAkABgAOADkAAwABBAkACgA0AGMAaQBjAG8AbQBvAG8AbgBWAGUAcgBzAGkAbwBuACAAMQAuADAAaQBjAG8AbQBvAG8Abmljb21vb24AaQBjAG8AbQBvAG8AbgBSAGUAZwB1AGwAYQByAGkAYwBvAG0AbwBvAG4ARgBvAG4AdAAgAGcAZQBuAGUAcgBhAHQAZQBkACAAYgB5ACAASQBjAG8ATQBvAG8AbgAuAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=) format('truetype'),url(data:application/font-woff;charset=utf-8;base64,d09GRk9UVE8AAAVwAAoAAAAABSgAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABDRkYgAAAA9AAAAdkAAAHZLDXE/09TLzIAAALQAAAAYAAAAGAIIweQY21hcAAAAzAAAABMAAAATA9+4ghnYXNwAAADfAAAAAgAAAAIAAAAEGhlYWQAAAOEAAAANgAAADYAQ88baGhlYQAAA7wAAAAkAAAAJAMHAelobXR4AAAD4AAAACAAAAAgBLgAEm1heHAAAAQAAAAABgAAAAYACFAAbmFtZQAABAgAAAFFAAABRVcZpu5wb3N0AAAFUAAAACAAAAAgAAMAAAEABAQAAQEBCGljb21vb24AAQIAAQA6+BwC+BsD+BgEHgoAGVP/i4seCgAZU/+LiwwHi2v4lPh0BR0AAACIDx0AAACNER0AAAAJHQAAAdASAAkBAQgPERMWGyAlKmljb21vb25pY29tb29udTB1MXUyMHVGMEQ3dUYwRDh1RjBEOXVGMERBAAACAYkABgAIAgABAAQABwAKAA0AVgCfAOgBL/yUDvyUDvyUDvuUDvtvi/emFYuQjZCOjo+Pj42Qiwj3lIsFkIuQiY6Hj4iNhouGi4aJh4eHCPsU+xQFiIiGiYaLhouHjYeOCPsU9xQFiI+Jj4uQCA77b4v3FBWLkI2Pjo8I9xT3FAWPjo+NkIuQi5CJjogI9xT7FAWPh42Hi4aLhomHh4eIiIaJhosI+5SLBYaLh42HjoiPiY+LkAgO+92d928Vi5CNkI+OCPcU9xQFjo+QjZCLkIuPiY6Hj4iNhouGCIv7lAWLhomHh4iIh4eJhouGi4aNiI8I+xT3FAWHjomPi5AIDvvdi+YVi/eUBYuQjZCOjo+Pj42Qi5CLkImOhwj3FPsUBY+IjYaLhouGiYeHiAj7FPsUBYiHhomGi4aLh42Hj4iOiY+LkAgO+JQU+JQViwwKAAAAAAMCAAGQAAUAAAFMAWYAAABHAUwBZgAAAPUAGQCEAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAQAAA8NoB4P/g/+AB4AAgAAAAAQAAAAAAAAAAAAAAIAAAAAAAAgAAAAMAAAAUAAMAAQAAABQABAA4AAAACgAIAAIAAgABACDw2v/9//8AAAAAACDw1//9//8AAf/jDy0AAwABAAAAAAAAAAAAAAABAAH//wAPAAEAAAABAAA5emozXw889QALAgAAAAAA0ABHWAAAAADQAEdYAAAAAAElAW4AAAAIAAIAAAAAAAAAAQAAAeD/4AAAAgAAAAAAASUAAQAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAABAAAAASUAAAElAAAAtwASALcAAAAAUAAACAAAAAAADgCuAAEAAAAAAAEADgAAAAEAAAAAAAIADgBHAAEAAAAAAAMADgAkAAEAAAAAAAQADgBVAAEAAAAAAAUAFgAOAAEAAAAAAAYABwAyAAEAAAAAAAoANABjAAMAAQQJAAEADgAAAAMAAQQJAAIADgBHAAMAAQQJAAMADgAkAAMAAQQJAAQADgBVAAMAAQQJAAUAFgAOAAMAAQQJAAYADgA5AAMAAQQJAAoANABjAGkAYwBvAG0AbwBvAG4AVgBlAHIAcwBpAG8AbgAgADEALgAwAGkAYwBvAG0AbwBvAG5pY29tb29uAGkAYwBvAG0AbwBvAG4AUgBlAGcAdQBsAGEAcgBpAGMAbwBtAG8AbwBuAEYAbwBuAHQAIABnAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAEkAYwBvAE0AbwBvAG4ALgAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA) format('woff');font-weight:400;font-style:normal}.ui.dropdown>.dropdown.icon{font-family:Dropdown;line-height:1;height:1em;-webkit-backface-visibility:hidden;backface-visibility:hidden;font-weight:400;font-style:normal;text-align:center;width:auto}.ui.dropdown>.dropdown.icon:before{content:'\f0d7'}.ui.dropdown .menu .item .dropdown.icon:before{content:'\f0da'}.ui.dropdown .item .left.dropdown.icon:before,.ui.dropdown .left.menu .item .dropdown.icon:before{content:"\f0d9"}.ui.vertical.menu .dropdown.item>.dropdown.icon:before{content:"\f0da"}.ui.embed{position:relative;max-width:100%;height:0;overflow:hidden;background:#DCDDDE;padding-bottom:56.25%}.ui.embed embed,.ui.embed iframe,.ui.embed object{position:absolute;border:none;width:100%;height:100%;top:0;left:0;margin:0;padding:0}.ui.embed>.embed{display:none}.ui.embed>.placeholder{position:absolute;cursor:pointer;top:0;left:0;display:block;width:100%;height:100%;background-color:radial-gradient(transparent 45%,rgba(0,0,0,.3))}.ui.embed>.icon{cursor:pointer;position:absolute;top:0;left:0;width:100%;height:100%;z-index:2}.ui.embed>.icon:after{position:absolute;top:0;left:0;width:100%;height:100%;z-index:3;content:'';background:-webkit-radial-gradient(transparent 45%,rgba(0,0,0,.3));background:radial-gradient(transparent 45%,rgba(0,0,0,.3));opacity:.5;-webkit-transition:opacity .5s ease;transition:opacity .5s ease}.ui.embed>.icon:before{position:absolute;top:50%;left:50%;-webkit-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%);color:#FFF;font-size:6rem;text-shadow:0 2px 10px rgba(34,36,38,.2);-webkit-transition:opacity .5s ease,color .5s ease;transition:opacity .5s ease,color .5s ease;z-index:10}.ui.embed .icon:hover:after{background:-webkit-radial-gradient(transparent 45%,rgba(0,0,0,.3));background:radial-gradient(transparent 45%,rgba(0,0,0,.3));opacity:1}.ui.embed .icon:hover:before{color:#FFF}.ui.active.embed>.icon,.ui.active.embed>.placeholder{display:none}.ui.active.embed>.embed{display:block}.ui.square.embed{padding-bottom:100%}.ui[class*="4:3"].embed{padding-bottom:75%}.ui[class*="16:9"].embed{padding-bottom:56.25%}.ui[class*="21:9"].embed{padding-bottom:42.85714286%}.ui.modal{display:none;position:fixed;z-index:1001;top:50%;left:50%;text-align:left;background:#FFF;border:none;box-shadow:1px 3px 3px 0 rgba(0,0,0,.2),1px 3px 15px 2px rgba(0,0,0,.2);-webkit-transform-origin:50% 25%;transform-origin:50% 25%;border-radius:.28571429rem;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;will-change:top,left,margin,transform,opacity}.ui.modal>.icon:first-child+*,.ui.modal>:first-child:not(.icon){border-top-left-radius:.28571429rem;border-top-right-radius:.28571429rem}.ui.modal>:last-child{border-bottom-left-radius:.28571429rem;border-bottom-right-radius:.28571429rem}.ui.modal>.close{cursor:pointer;position:absolute;top:-2.5rem;right:-2.5rem;z-index:1;opacity:.8;font-size:1.25em;color:#FFF;width:2.25rem;height:2.25rem;padding:.625rem 0 0}.ui.modal>.close:hover{opacity:1}.ui.modal>.header{display:block;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;background:#FFF;margin:0;padding:1.25rem 1.5rem;box-shadow:none;color:rgba(0,0,0,.85);border-bottom:1px solid rgba(34,36,38,.15)}.ui.modal>.header:not(.ui){font-size:1.42857143rem;line-height:1.2857em;font-weight:700}.ui.modal>.content{display:block;width:100%;font-size:1em;line-height:1.4;padding:1.5rem;background:#FFF}.ui.modal>.image.content{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.ui.modal>.content>.image{display:block;-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto;width:'';-webkit-align-self:top;-ms-flex-item-align:top;align-self:top}.ui.modal>[class*="top aligned"]{-webkit-align-self:top;-ms-flex-item-align:top;align-self:top}.ui.modal>[class*="middle aligned"]{-webkit-align-self:middle;-ms-flex-item-align:middle;align-self:middle}.ui.modal>[class*=stretched]{-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch}.ui.modal>.content>.description{display:block;-webkit-box-flex:1;-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;min-width:0;-webkit-align-self:top;-ms-flex-item-align:top;align-self:top}.ui.modal>.content>.icon+.description,.ui.modal>.content>.image+.description{-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto;min-width:'';width:auto;padding-left:2em}.ui.modal>.content>.image>i.icon{margin:0;opacity:1;width:auto;line-height:1;font-size:8rem}.ui.modal>.actions{background:#F9FAFB;padding:1rem;border-top:1px solid rgba(34,36,38,.15);text-align:right}.ui.modal .actions>.button{margin-left:.75em}@media only screen and (max-width:767px){.ui.modal{width:95%;margin:0 0 0 -47.5%}}@media only screen and (min-width:768px){.ui.dropdown .scrolling.menu,.ui.scrolling.dropdown .menu{max-height:15.42857143rem}.ui.modal{width:88%;margin:0 0 0 -44%}}@media only screen and (min-width:992px){.ui.dropdown .scrolling.menu,.ui.scrolling.dropdown .menu{max-height:20.57142857rem}.ui.modal{width:850px;margin:0 0 0 -425px}}@media only screen and (min-width:1200px){.ui.modal{width:900px;margin:0 0 0 -450px}}@media only screen and (min-width:1920px){.ui.dropdown .scrolling.menu,.ui.scrolling.dropdown .menu{max-height:20.57142857rem}.ui.modal{width:950px;margin:0 0 0 -475px}}@media only screen and (max-width:991px){.ui.modal>.header{padding-right:2.25rem}.ui.modal>.close{top:1.0535rem;right:1rem;color:rgba(0,0,0,.87)}}@media only screen and (max-width:767px){.ui.modal>.header{padding:.75rem 2.25rem .75rem 1rem!important}.ui.modal>.content{display:block;padding:1rem!important}.ui.modal>.close{top:.5rem!important;right:.5rem!important}.ui.modal .image.content{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.ui.modal .content>.image{display:block;max-width:100%;margin:0 auto!important;text-align:center;padding:0 0 1rem!important}.ui.modal>.content>.image>i.icon{font-size:5rem;text-align:center}.ui.modal .content>.description{display:block;width:100%!important;margin:0!important;padding:1rem 0!important;box-shadow:none}.ui.modal>.actions{padding:1rem 1rem 0!important}.ui.modal .actions>.button,.ui.modal .actions>.buttons{margin-bottom:1rem}}.ui.inverted.dimmer>.ui.modal{box-shadow:1px 3px 10px 2px rgba(0,0,0,.2)}.ui.basic.modal{background-color:transparent;border:none;border-radius:0;box-shadow:none!important;color:#FFF}.ui.basic.modal>.actions,.ui.basic.modal>.content,.ui.basic.modal>.header{background-color:transparent}.ui.basic.modal>.header{color:#FFF}.ui.basic.modal>.close{top:1rem;right:1.5rem}.ui.inverted.dimmer>.basic.modal{color:rgba(0,0,0,.87)}.ui.inverted.dimmer>.ui.basic.modal>.header{color:rgba(0,0,0,.85)}.ui.active.modal{display:block}.scrolling.dimmable.dimmed{overflow:hidden}.scrolling.dimmable.dimmed>.dimmer{overflow:auto;-webkit-overflow-scrolling:touch}.scrolling.dimmable>.dimmer{position:fixed}.modals.dimmer .ui.scrolling.modal{position:static!important;margin:3.5rem auto!important}.scrolling.undetached.dimmable.dimmed{overflow:auto;-webkit-overflow-scrolling:touch}.scrolling.undetached.dimmable.dimmed>.dimmer{overflow:hidden}.scrolling.undetached.dimmable .ui.scrolling.modal{position:absolute;left:50%;margin-top:3.5rem!important}.undetached.dimmable.dimmed>.pusher{z-index:auto}@media only screen and (max-width:991px){.ui.basic.modal>.close{color:#FFF}.modals.dimmer .ui.scrolling.modal{margin-top:1rem!important;margin-bottom:1rem!important}}.ui.fullscreen.modal{width:95%!important;left:2.5%!important;margin:1em auto}.ui.fullscreen.scrolling.modal{left:0!important}.ui.fullscreen.modal>.header{padding-right:2.25rem}.ui.fullscreen.modal>.close{top:1.0535rem;right:1rem;color:rgba(0,0,0,.87)}.ui.modal{font-size:1rem}.ui.small.modal>.header:not(.ui){font-size:1.3em}@media only screen and (max-width:767px){.ui.small.modal{width:95%;margin:0 0 0 -47.5%}}@media only screen and (min-width:768px){.ui.small.modal{width:70.4%;margin:0 0 0 -35.2%}}@media only screen and (min-width:992px){.ui.small.modal{width:680px;margin:0 0 0 -340px}}@media only screen and (min-width:1200px){.ui.small.modal{width:720px;margin:0 0 0 -360px}}@media only screen and (min-width:1920px){.ui.small.modal{width:760px;margin:0 0 0 -380px}}.ui.large.modal>.header{font-size:1.6em}@media only screen and (max-width:767px){.ui.large.modal{width:95%;margin:0 0 0 -47.5%}}@media only screen and (min-width:768px){.ui.large.modal{width:88%;margin:0 0 0 -44%}}@media only screen and (min-width:992px){.ui.large.modal{width:1020px;margin:0 0 0 -510px}}@media only screen and (min-width:1200px){.ui.large.modal{width:1080px;margin:0 0 0 -540px}}@media only screen and (min-width:1920px){.ui.large.modal{width:1140px;margin:0 0 0 -570px}}.ui.nag{display:none;opacity:.95;position:relative;top:0;left:0;z-index:999;min-height:0;width:100%;margin:0;padding:.75em 1em;background:#555;box-shadow:0 1px 2px 0 rgba(0,0,0,.2);font-size:1rem;text-align:center;color:rgba(0,0,0,.87);border-radius:0 0 .28571429rem .28571429rem;-webkit-transition:.2s background ease;transition:.2s background ease}a.ui.nag{cursor:pointer}.ui.nag>.title{display:inline-block;margin:0 .5em;color:#FFF}.ui.nag>.close.icon{cursor:pointer;opacity:.4;position:absolute;top:50%;right:1em;font-size:1em;margin:-.5em 0 0;color:#FFF;-webkit-transition:opacity .2s ease;transition:opacity .2s ease}.ui.nag:hover{background:#555;opacity:1}.ui.nag .close:hover{opacity:1}.ui.overlay.nag{position:absolute;display:block}.ui.fixed.nag{position:fixed}.ui.bottom.nag,.ui.bottom.nags{border-radius:.28571429rem .28571429rem 0 0;top:auto;bottom:0}.ui.inverted.nag,.ui.inverted.nags .nag{background-color:#F3F4F5;color:rgba(0,0,0,.85)}.ui.inverted.nag .close,.ui.inverted.nag .title,.ui.inverted.nags .nag .close,.ui.inverted.nags .nag .title{color:rgba(0,0,0,.4)}.ui.nags .nag{border-radius:0!important}.ui.nags .nag:last-child{border-radius:0 0 .28571429rem .28571429rem}.ui.bottom.nags .nag:last-child{border-radius:.28571429rem .28571429rem 0 0}.ui.popup{display:none;position:absolute;top:0;right:0;min-width:-webkit-min-content;min-width:-moz-min-content;min-width:min-content;z-index:1900;border:1px solid #D4D4D5;line-height:1.4285em;max-width:250px;background:#FFF;padding:.833em 1em;font-weight:400;font-style:normal;color:rgba(0,0,0,.87);border-radius:.28571429rem;box-shadow:0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.15)}.ui.popup>.header{padding:0;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-size:1.14285714em;line-height:1.2;font-weight:700}.ui.popup>.header+.content{padding-top:.5em}.ui.popup:before{position:absolute;content:'';width:.71428571em;height:.71428571em;background:#FFF;-webkit-transform:rotate(45deg);transform:rotate(45deg);z-index:2;box-shadow:1px 1px 0 0 #bababc}[data-tooltip]{position:relative}[data-tooltip]:not([data-position]):before{top:auto;right:auto;bottom:100%;left:50%;background:#FFF;margin-left:-.07142857rem;margin-bottom:.14285714rem}[data-tooltip]:not([data-position]):after{left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);bottom:100%;margin-bottom:.5em}[data-tooltip]:after,[data-tooltip]:before{pointer-events:none;visibility:hidden}[data-tooltip]:before{position:absolute;content:'';font-size:1rem;width:.71428571em;height:.71428571em;background:#FFF;z-index:2;box-shadow:1px 1px 0 0 #bababc;opacity:0;-webkit-transform:rotate(45deg) scale(0)!important;transform:rotate(45deg) scale(0)!important;-webkit-transform-origin:center top;transform-origin:center top;-webkit-transition:all .1s ease;transition:all .1s ease}[data-tooltip]:after{content:attr(data-tooltip);position:absolute;text-transform:none;text-align:left;white-space:nowrap;font-size:1rem;border:1px solid #D4D4D5;line-height:1.4285em;max-width:none;background:#FFF;padding:.833em 1em;font-weight:400;font-style:normal;color:rgba(0,0,0,.87);border-radius:.28571429rem;box-shadow:0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.15);z-index:1;opacity:1;-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-transition:all .1s ease;transition:all .1s ease}[data-tooltip]:hover:after,[data-tooltip]:hover:before{visibility:visible;pointer-events:auto}[data-tooltip]:hover:before{-webkit-transform:rotate(45deg) scale(1)!important;transform:rotate(45deg) scale(1)!important;opacity:1}[data-tooltip]:after,[data-tooltip][data-position="top center"]:after,[data-tooltip][data-position="bottom center"]:after{-webkit-transform:translateX(-50%) scale(0)!important;transform:translateX(-50%) scale(0)!important}[data-tooltip]:hover:after,[data-tooltip][data-position="bottom center"]:hover:after{-webkit-transform:translateX(-50%) scale(1)!important;transform:translateX(-50%) scale(1)!important}[data-tooltip][data-position="left center"]:after,[data-tooltip][data-position="right center"]:after{-webkit-transform:translateY(-50%) scale(0)!important;transform:translateY(-50%) scale(0)!important}[data-tooltip][data-position="left center"]:hover:after,[data-tooltip][data-position="right center"]:hover:after{-webkit-transform:translateY(-50%) scale(1)!important;transform:translateY(-50%) scale(1)!important}[data-tooltip][data-position="top left"]:after,[data-tooltip][data-position="top right"]:after,[data-tooltip][data-position="bottom left"]:after,[data-tooltip][data-position="bottom right"]:after{-webkit-transform:scale(0)!important;transform:scale(0)!important}[data-tooltip][data-position="top left"]:hover:after,[data-tooltip][data-position="top right"]:hover:after,[data-tooltip][data-position="bottom left"]:hover:after,[data-tooltip][data-position="bottom right"]:hover:after{-webkit-transform:scale(1)!important;transform:scale(1)!important}[data-tooltip][data-inverted]:before{box-shadow:none!important;background:#1B1C1D}[data-tooltip][data-inverted]:after{background:#1B1C1D;color:#FFF;border:none;box-shadow:none}[data-tooltip][data-inverted]:after .header{background-color:none;color:#FFF}[data-position="top center"][data-tooltip]:after{top:auto;right:auto;left:50%;bottom:100%;-webkit-transform:translateX(-50%);transform:translateX(-50%);margin-bottom:.5em}[data-position="top center"][data-tooltip]:before{top:auto;right:auto;bottom:100%;left:50%;background:#FFF;margin-left:-.07142857rem;margin-bottom:.14285714rem}[data-position="top left"][data-tooltip]:after{top:auto;right:auto;left:0;bottom:100%;margin-bottom:.5em}[data-position="top left"][data-tooltip]:before{top:auto;right:auto;bottom:100%;left:1em;margin-left:-.07142857rem;margin-bottom:.14285714rem}[data-position="top right"][data-tooltip]:after{top:auto;left:auto;right:0;bottom:100%;margin-bottom:.5em}[data-position="top right"][data-tooltip]:before{top:auto;left:auto;bottom:100%;right:1em;margin-left:-.07142857rem;margin-bottom:.14285714rem}[data-position="bottom center"][data-tooltip]:after{bottom:auto;right:auto;left:50%;top:100%;-webkit-transform:translateX(-50%);transform:translateX(-50%);margin-top:.5em}[data-position="bottom center"][data-tooltip]:before{bottom:auto;right:auto;top:100%;left:50%;margin-left:-.07142857rem;margin-top:.14285714rem}[data-position="bottom left"][data-tooltip]:after{left:0;top:100%;margin-top:.5em}[data-position="bottom left"][data-tooltip]:before{bottom:auto;right:auto;top:100%;left:1em;margin-left:-.07142857rem;margin-top:.14285714rem}[data-position="bottom right"][data-tooltip]:after{right:0;top:100%;margin-top:.5em}[data-position="bottom right"][data-tooltip]:before{bottom:auto;left:auto;top:100%;right:1em;margin-left:-.14285714rem;margin-top:.07142857rem}[data-position="left center"][data-tooltip]:after{right:100%;top:50%;margin-right:.5em;-webkit-transform:translateY(-50%);transform:translateY(-50%)}[data-position="right center"][data-tooltip]:after{left:100%;top:50%;margin-left:.5em;-webkit-transform:translateY(-50%);transform:translateY(-50%)}[data-position~=bottom][data-tooltip]:before{background:#FFF;box-shadow:-1px -1px 0 0 #bababc;-webkit-transform-origin:center bottom;transform-origin:center bottom}[data-position="left center"][data-tooltip]:before{right:100%;top:50%;margin-top:-.14285714rem;margin-right:-.07142857rem;background:#FFF;box-shadow:1px -1px 0 0 #bababc}[data-position="right center"][data-tooltip]:before{left:100%;top:50%;margin-top:-.07142857rem;margin-left:.14285714rem;background:#FFF;box-shadow:-1px 1px 0 0 #bababc}[data-position~=top][data-tooltip]:before{background:#FFF}[data-inverted][data-position~=bottom][data-tooltip]:before{background:#1B1C1D;box-shadow:-1px -1px 0 0 #bababc}[data-inverted][data-position="left center"][data-tooltip]:before{background:#1B1C1D;box-shadow:1px -1px 0 0 #bababc}[data-inverted][data-position="right center"][data-tooltip]:before{background:#1B1C1D;box-shadow:-1px 1px 0 0 #bababc}[data-inverted][data-position~=top][data-tooltip]:before{background:#1B1C1D}[data-position~=bottom][data-tooltip]:after{-webkit-transform-origin:center top;transform-origin:center top}[data-position="left center"][data-tooltip]:before{-webkit-transform-origin:top center;transform-origin:top center}[data-position="left center"][data-tooltip]:after,[data-position="right center"][data-tooltip]:before{-webkit-transform-origin:right center;transform-origin:right center}[data-position="right center"][data-tooltip]:after{-webkit-transform-origin:left center;transform-origin:left center}.ui.popup{margin:0}.ui.top.popup{margin:0 0 .71428571em}.ui.top.left.popup{-webkit-transform-origin:left bottom;transform-origin:left bottom}.ui.top.center.popup{-webkit-transform-origin:center bottom;transform-origin:center bottom}.ui.top.right.popup{-webkit-transform-origin:right bottom;transform-origin:right bottom}.ui.left.center.popup{margin:0 .71428571em 0 0;-webkit-transform-origin:right 50%;transform-origin:right 50%}.ui.right.center.popup{margin:0 0 0 .71428571em;-webkit-transform-origin:left 50%;transform-origin:left 50%}.ui.bottom.popup{margin:.71428571em 0 0}.ui.bottom.left.popup{-webkit-transform-origin:left top;transform-origin:left top}.ui.bottom.center.popup{-webkit-transform-origin:center top;transform-origin:center top}.ui.bottom.right.popup{-webkit-transform-origin:right top;transform-origin:right top;margin-right:0}.ui.bottom.center.popup:before{margin-left:-.30714286em;top:-.30714286em;left:50%;right:auto;bottom:auto;box-shadow:-1px -1px 0 0 #bababc}.ui.bottom.left.popup{margin-left:0}.ui.bottom.left.popup:before{top:-.30714286em;left:1em;right:auto;bottom:auto;margin-left:0;box-shadow:-1px -1px 0 0 #bababc}.ui.bottom.right.popup:before{top:-.30714286em;right:1em;bottom:auto;left:auto;margin-left:0;box-shadow:-1px -1px 0 0 #bababc}.ui.top.center.popup:before{top:auto;right:auto;bottom:-.30714286em;left:50%;margin-left:-.30714286em}.ui.top.left.popup{margin-left:0}.ui.top.left.popup:before{bottom:-.30714286em;left:1em;top:auto;right:auto;margin-left:0}.ui.top.right.popup{margin-right:0}.ui.top.right.popup:before{bottom:-.30714286em;right:1em;top:auto;left:auto;margin-left:0}.ui.left.center.popup:before{top:50%;right:-.30714286em;bottom:auto;left:auto;margin-top:-.30714286em;box-shadow:1px -1px 0 0 #bababc}.ui.right.center.popup:before{top:50%;left:-.30714286em;bottom:auto;right:auto;margin-top:-.30714286em;box-shadow:-1px 1px 0 0 #bababc}.ui.bottom.popup:before,.ui.left.center.popup:before,.ui.right.center.popup:before,.ui.top.popup:before{background:#FFF}.ui.inverted.bottom.popup:before,.ui.inverted.left.center.popup:before,.ui.inverted.right.center.popup:before,.ui.inverted.top.popup:before{background:#1B1C1D}.ui.popup>.ui.grid:not(.padded){width:calc(100% + 1.75rem);margin:-.7rem -.875rem}.ui.loading.popup{display:block;visibility:hidden;z-index:-1}.ui.animating.popup,.ui.visible.popup{display:block}.ui.visible.popup{-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.ui.basic.popup:before{display:none}.ui.wide.popup{max-width:350px}.ui[class*="very wide"].popup{max-width:550px}@media only screen and (max-width:767px){.ui.wide.popup,.ui[class*="very wide"].popup{max-width:250px}}.ui.fluid.popup{width:100%;max-width:none}.ui.inverted.popup{background:#1B1C1D;color:#FFF;border:none;box-shadow:none}.ui.inverted.popup .header{background-color:none;color:#FFF}.ui.inverted.popup:before{background-color:#1B1C1D;box-shadow:none!important}.ui.flowing.popup{max-width:none}.ui.mini.popup{font-size:.78571429rem}.ui.tiny.popup{font-size:.85714286rem}.ui.small.popup{font-size:.92857143rem}.ui.popup{font-size:1rem}.ui.large.popup{font-size:1.14285714rem}.ui.huge.popup{font-size:1.42857143rem}.ui.progress{position:relative;display:block;max-width:100%;border:none;margin:1em 0 2.5em;box-shadow:none;background:rgba(0,0,0,.1);padding:0;border-radius:.28571429rem}.ui.progress:first-child{margin:0 0 2.5em}.ui.progress:last-child{margin:0 0 1.5em}.ui.progress .bar{display:block;line-height:1;position:relative;width:0;min-width:2em;background:#888;border-radius:.28571429rem;-webkit-transition:width .1s ease,background-color .1s ease;transition:width .1s ease,background-color .1s ease}.ui.progress .bar>.progress{white-space:nowrap;position:absolute;width:auto;font-size:.92857143em;top:50%;right:.5em;left:auto;bottom:auto;color:rgba(255,255,255,.7);text-shadow:none;margin-top:-.5em;font-weight:700;text-align:left}.ui.progress>.label{position:absolute;width:100%;font-size:1em;top:100%;right:auto;left:0;bottom:auto;color:rgba(0,0,0,.87);font-weight:700;text-shadow:none;margin-top:.2em;text-align:center;-webkit-transition:color .4s ease;transition:color .4s ease}.ui.indicating.progress[data-percent^="1"] .bar,.ui.indicating.progress[data-percent^="2"] .bar{background-color:#D95C5C}.ui.indicating.progress[data-percent^="3"] .bar{background-color:#EFBC72}.ui.indicating.progress[data-percent^="4"] .bar,.ui.indicating.progress[data-percent^="5"] .bar{background-color:#E6BB48}.ui.indicating.progress[data-percent^="6"] .bar{background-color:#DDC928}.ui.indicating.progress[data-percent^="7"] .bar,.ui.indicating.progress[data-percent^="8"] .bar{background-color:#B4D95C}.ui.indicating.progress[data-percent^="9"] .bar,.ui.indicating.progress[data-percent^="100"] .bar{background-color:#66DA81}.ui.indicating.progress[data-percent^="1"] .label,.ui.indicating.progress[data-percent^="2"] .label,.ui.indicating.progress[data-percent^="3"] .label,.ui.indicating.progress[data-percent^="4"] .label,.ui.indicating.progress[data-percent^="5"] .label,.ui.indicating.progress[data-percent^="6"] .label,.ui.indicating.progress[data-percent^="7"] .label,.ui.indicating.progress[data-percent^="8"] .label,.ui.indicating.progress[data-percent^="9"] .label,.ui.indicating.progress[data-percent^="100"] .label{color:rgba(0,0,0,.87)}.ui.indicating.progress[data-percent="1"] .bar,.ui.indicating.progress[data-percent="2"] .bar,.ui.indicating.progress[data-percent="3"] .bar,.ui.indicating.progress[data-percent="4"] .bar,.ui.indicating.progress[data-percent="5"] .bar,.ui.indicating.progress[data-percent="6"] .bar,.ui.indicating.progress[data-percent="7"] .bar,.ui.indicating.progress[data-percent="8"] .bar,.ui.indicating.progress[data-percent="9"] .bar{background-color:#D95C5C}.ui.indicating.progress[data-percent="1"] .label,.ui.indicating.progress[data-percent="2"] .label,.ui.indicating.progress[data-percent="3"] .label,.ui.indicating.progress[data-percent="4"] .label,.ui.indicating.progress[data-percent="5"] .label,.ui.indicating.progress[data-percent="6"] .label,.ui.indicating.progress[data-percent="7"] .label,.ui.indicating.progress[data-percent="8"] .label,.ui.indicating.progress[data-percent="9"] .label{color:rgba(0,0,0,.87)}.ui.indicating.progress.success .label{color:#1A531B}.ui.progress.success .bar{background-color:#21BA45!important}.ui.progress.success .bar,.ui.progress.success .bar::after{-webkit-animation:none!important;animation:none!important}.ui.progress.success>.label{color:#1A531B}.ui.progress.warning .bar{background-color:#F2C037!important}.ui.progress.warning .bar,.ui.progress.warning .bar::after{-webkit-animation:none!important;animation:none!important}.ui.progress.warning>.label{color:#794B02}.ui.progress.error .bar{background-color:#DB2828!important}.ui.progress.error .bar,.ui.progress.error .bar::after{-webkit-animation:none!important;animation:none!important}.ui.progress.error>.label{color:#912D2B}.ui.active.progress .bar{position:relative;min-width:2em}.ui.active.progress .bar::after{content:'';opacity:0;position:absolute;top:0;left:0;right:0;bottom:0;background:#FFF;border-radius:.28571429rem;-webkit-animation:progress-active 2s ease infinite;animation:progress-active 2s ease infinite}@-webkit-keyframes progress-active{0%{opacity:.3;width:0}100%{opacity:0;width:100%}}@keyframes progress-active{0%{opacity:.3;width:0}100%{opacity:0;width:100%}}.ui.disabled.progress{opacity:.35}.ui.disabled.progress .bar,.ui.disabled.progress .bar::after{-webkit-animation:none!important;animation:none!important}.ui.inverted.progress{background:rgba(255,255,255,.08);border:none}.ui.inverted.progress .bar{background:#888}.ui.inverted.progress .bar>.progress{color:#F9FAFB}.ui.inverted.progress>.label{color:#FFF}.ui.inverted.progress.success>.label{color:#21BA45}.ui.inverted.progress.warning>.label{color:#F2C037}.ui.inverted.progress.error>.label{color:#DB2828}.ui.progress.attached{background:0 0;position:relative;border:none;margin:0}.ui.progress.attached,.ui.progress.attached .bar{display:block;height:.2rem;padding:0;overflow:hidden;border-radius:0 0 .28571429rem .28571429rem}.ui.progress.attached .bar{border-radius:0}.ui.progress.top.attached,.ui.progress.top.attached .bar{top:0;border-radius:.28571429rem .28571429rem 0 0}.ui.progress.top.attached .bar{border-radius:0}.ui.card>.ui.attached.progress,.ui.segment>.ui.attached.progress{position:absolute;top:auto;left:0;bottom:100%;width:100%}.ui.card>.ui.bottom.attached.progress,.ui.segment>.ui.bottom.attached.progress{top:100%;bottom:auto}.ui.red.progress .bar{background-color:#DB2828}.ui.red.inverted.progress .bar{background-color:#FF695E}.ui.orange.progress .bar{background-color:#F2711C}.ui.orange.inverted.progress .bar{background-color:#FF851B}.ui.yellow.progress .bar{background-color:#FBBD08}.ui.yellow.inverted.progress .bar{background-color:#FFE21F}.ui.olive.progress .bar{background-color:#B5CC18}.ui.olive.inverted.progress .bar{background-color:#D9E778}.ui.green.progress .bar{background-color:#21BA45}.ui.green.inverted.progress .bar{background-color:#2ECC40}.ui.teal.progress .bar{background-color:#00B5AD}.ui.teal.inverted.progress .bar{background-color:#6DFFFF}.ui.blue.progress .bar{background-color:#2185D0}.ui.blue.inverted.progress .bar{background-color:#54C8FF}.ui.violet.progress .bar{background-color:#6435C9}.ui.violet.inverted.progress .bar{background-color:#A291FB}.ui.purple.progress .bar{background-color:#A333C8}.ui.purple.inverted.progress .bar{background-color:#DC73FF}.ui.pink.progress .bar{background-color:#E03997}.ui.pink.inverted.progress .bar{background-color:#FF8EDF}.ui.brown.progress .bar{background-color:#A5673F}.ui.brown.inverted.progress .bar{background-color:#D67C1C}.ui.grey.progress .bar{background-color:#767676}.ui.grey.inverted.progress .bar{background-color:#DCDDDE}.ui.black.progress .bar{background-color:#1B1C1D}.ui.black.inverted.progress .bar{background-color:#545454}.ui.tiny.progress{font-size:.85714286rem}.ui.tiny.progress .bar{height:.5em}.ui.small.progress{font-size:.92857143rem}.ui.small.progress .bar{height:1em}.ui.progress{font-size:1rem}.ui.progress .bar{height:1.75em}.ui.large.progress{font-size:1.14285714rem}.ui.large.progress .bar{height:2.5em}.ui.big.progress{font-size:1.28571429rem}.ui.big.progress .bar{height:3.5em}.ui.rating:last-child{margin-right:0}.ui.rating .icon{padding:0;margin:0;-webkit-box-flex:1;-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;cursor:pointer;width:1.25em;height:auto;-webkit-transition:opacity .1s ease,background .1s ease,text-shadow .1s ease,color .1s ease;transition:opacity .1s ease,background .1s ease,text-shadow .1s ease,color .1s ease;background:0 0;color:rgba(0,0,0,.15);font-family:Rating;line-height:1;-webkit-backface-visibility:hidden;backface-visibility:hidden;font-weight:400;font-style:normal;text-align:center}.ui.rating .active.icon{background:0 0;color:rgba(0,0,0,.85)}.ui.rating .icon.selected,.ui.rating .icon.selected.active{background:0 0;color:rgba(0,0,0,.87)}.ui.star.rating .icon{width:1.25em;height:auto;background:0 0;color:rgba(0,0,0,.15);text-shadow:none}.ui.star.rating .active.icon{background:0 0!important;color:#FFE623!important;text-shadow:0 -1px 0 #DDC507,-1px 0 0 #DDC507,0 1px 0 #DDC507,1px 0 0 #DDC507!important}.ui.star.rating .icon.selected,.ui.star.rating .icon.selected.active{background:0 0!important;color:#FC0!important;text-shadow:0 -1px 0 #E6A200,-1px 0 0 #E6A200,0 1px 0 #E6A200,1px 0 0 #E6A200!important}.ui.heart.rating .icon{width:1.4em;height:auto;background:0 0;color:rgba(0,0,0,.15);text-shadow:none!important}.ui.heart.rating .active.icon{background:0 0!important;color:#FF6D75!important;text-shadow:0 -1px 0 #CD0707,-1px 0 0 #CD0707,0 1px 0 #CD0707,1px 0 0 #CD0707!important}.ui.heart.rating .icon.selected,.ui.heart.rating .icon.selected.active{background:0 0!important;color:#FF3000!important;text-shadow:0 -1px 0 #AA0101,-1px 0 0 #AA0101,0 1px 0 #AA0101,1px 0 0 #AA0101!important}.ui.disabled.rating .icon{cursor:default}.ui.rating .icon.selected,.ui.rating.selected .active.icon,.ui.rating.selected .icon.selected{opacity:1}.ui.mini.rating{font-size:.78571429rem}.ui.tiny.rating{font-size:.85714286rem}.ui.small.rating{font-size:.92857143rem}.ui.rating{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;white-space:nowrap;vertical-align:baseline;font-size:1rem}.ui.large.rating{font-size:1.14285714rem}.ui.huge.rating{font-size:1.42857143rem}.ui.massive.rating{font-size:2rem}@font-face{font-family:Rating;src:url(data:application/x-font-ttf;charset=utf-8;base64,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) format('truetype'),url(data:application/font-woff;charset=utf-8;base64,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kIiRi5MI5vdUFfcni4vCBYufhJx8mn2ZepJ3i3aLeoR9fX18g3qLdwiLVAUO+yaLshWL+AQFi5GNkY+RjpCQj5KNj42PjI+LCPfAiwWPi4+Kj4mRiZCHj4aPhY2Fi4UIi/wEBYuEiYWHhoeGhoeFiIiKhoqHi4GLhI6EkQj7EvcN+xL7DQWEhYOIgouHi4eLh42EjoaPiJCHkImRi5IIDov3XRWLko2Rj5Kltq+vuKW4pbuZvYu9i7t9uHG4ca9npWCPhI2Fi4SLhYmEh4RxYGdoXnAIXnFbflmLWYtbmF6lXqZnrnG2h5KJkouRCLCLFaRkq2yxdLF0tH+4i7iLtJexorGiq6qksm64Z61goZZ3kXaLdItnfm1ycnJybX9oiwhoi22XcqRypH6pi6+LopGglp9gdWdpbl4I9xiwFYuHjIiOiI6IjoqPi4+LjoyOjo2OjY6Lj4ubkJmXl5eWmZGbi4+LjoyOjo2OjY6LjwiLj4mOiY6IjYiNh4tzi3eCenp6eoJ3i3MIDov3XRWLko2Sj5GouK+utqW3pbqYvouci5yJnIgIm6cFjY6NjI+LjIuNi42JjYqOio+JjomOiY6KjomOiY6JjoqNioyKjomMiYuHi4qLiouLCHdnbVVjQ2NDbVV3Zwh9cgWJiIiJiIuJi36SdJiIjYmOi46LjY+UlJlvl3KcdJ90oHeie6WHkYmSi5IIsIsVqlq0Z711CKGzBXqXfpqCnoKdhp6LoIuikaCWn2B1Z2luXgj3GLAVi4eMiI6IjoiOio+Lj4uOjI6OjY6NjouPi5uQmZeXl5aZkZuLj4uOjI6OjY6NjouPCIuPiY6JjoiNiI2Hi3OLd4J6enp6gneLcwji+10VoLAFtI+wmK2hrqKnqKKvdq1wp2uhCJ2rBZ1/nHycepx6mHqWeY+EjYWLhIuEiYWHhIR/gH1+fG9qaXJmeWV5Y4Jhiwi53BXb9yQFjIKMg4uEi3CDc3x1fHV3fHOBCA6L1BWL90sFi5WPlJKSkpKTj5aLCNmLBZKPmJqepJaZlZeVlY+Qj5ONl42WjpeOmI+YkZWTk5OSk46Vi5uLmYiYhZiFlIGSfgiSfo55i3WLeYd5gXgIvosFn4uchJl8mn2Seot3i3qGfIJ9jYSLhYuEi3yIfoR+i4eLh4uHi3eGen99i3CDdnt8CHt8dYNwiwhmiwV5i3mNeY95kHeRc5N1k36Ph4sIOYsFgIuDjoSShJKHlIuVCLCdFYuGjIePiI+Hj4mQi5CLj42Pj46OjY+LkIuQiZCIjoePh42Gi4aLh4mHh4eIioaLhgjUeRWUiwWNi46Lj4qOi4+KjYqOi4+Kj4mQio6KjYqNio+Kj4mQio6KjIqzfquEpIsIrosFr4uemouri5CKkYqQkY6QkI6SjpKNkouSi5KJkoiRlZWQlouYi5CKkImRiZGJj4iOCJGMkI+PlI+UjZKLkouViJODk4SSgo+CiwgmiwWLlpCalJ6UnpCbi5aLnoiYhJSFlH+QeYuGhoeDiYCJf4h/h3+IfoWBg4KHh4SCgH4Ii4qIiYiGh4aIh4mIiIiIh4eGh4aHh4eHiIiHiIeHiIiHiIeKh4mIioiLCIKLi/tLBQ6L90sVi/dLBYuVj5OSk5KSk46WiwjdiwWPi5iPoZOkk6CRnZCdj56Nn4sIq4sFpougg5x8m3yTd4txCIuJBZd8kHuLd4uHi4eLh5J+jn6LfIuEi4SJhZR9kHyLeot3hHp8fH19eoR3iwhYiwWVeI95i3mLdIh6hH6EfoKBfoV+hX2He4uBi4OPg5KFkYaTh5SHlYiTipOKk4qTiJMIiZSIkYiPgZSBl4CaeKR+moSPCD2LBYCLg4+EkoSSh5SLlQiw9zgVi4aMh4+Ij4ePiZCLkIuPjY+Pjo6Nj4uQi5CJkIiOh4+HjYaLhouHiYeHh4iKhouGCNT7OBWUiwWOi46Kj4mPio+IjoiPh4+IjoePiI+Hj4aPho6HjoiNiI6Hj4aOho6Ii4qWfpKDj4YIk4ORgY5+j36OgI1/jYCPg5CGnYuXj5GUkpSOmYuei5aGmoKfgp6GmouWCPCLBZSLlI+SkpOTjpOLlYuSiZKHlIeUho+Fi46PjY+NkY2RjJCLkIuYhpaBlY6RjZKLkgiLkomSiJKIkoaQhY6MkIyRi5CLm4aXgpOBkn6Pe4sIZosFcotrhGN9iouIioaJh4qHiomKiYqIioaKh4mHioiKiYuHioiLh4qIi4mLCIKLi/tLBQ77lIv3txWLkpCPlo0I9yOgzPcWBY6SkI+RiwiL/BL7FUcFh4mHioiLh4uIjImOiY6KjouPi4yLjYyOCKP3IyPwBYaQiZCLjwgOi/fFFYu1l6yjoqOjrZe2i5aLl4mYh5eHloWWhJaElIWShZOE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) format('woff');font-weight:400;font-style:normal}.ui.rating .active.icon:before,.ui.rating .icon:before,.ui.star.rating .active.icon:before,.ui.star.rating .icon:before{content:'\f005'}.ui.star.rating .partial.icon:before{content:'\f006'}.ui.star.rating .partial.icon{content:'\f005'}.ui.heart.rating .active.icon:before,.ui.heart.rating .icon:before{content:'\f004'}.ui.search{position:relative}.ui.search>.prompt{margin:0;outline:0;-webkit-appearance:none;-webkit-tap-highlight-color:rgba(255,255,255,0);text-shadow:none;font-style:normal;font-weight:400;line-height:1.2142em;padding:.67861429em 1em;font-size:1em;background:#FFF;border:1px solid rgba(34,36,38,.15);color:rgba(0,0,0,.87);box-shadow:0 0 0 0 transparent inset;-webkit-transition:background-color .1s ease,color .1s ease,box-shadow .1s ease,border-color .1s ease;transition:background-color .1s ease,color .1s ease,box-shadow .1s ease,border-color .1s ease}.ui.search .prompt{border-radius:500rem}.ui.search .prompt~.search.icon{cursor:pointer}.ui.search>.results{display:none;position:absolute;top:100%;left:0;-webkit-transform-origin:center top;transform-origin:center top;white-space:normal;background:#FFF;margin-top:.5em;width:18em;border-radius:.28571429rem;box-shadow:0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.15);border:1px solid #D4D4D5;z-index:998}.ui.search>.results>:first-child{border-radius:.28571429rem .28571429rem 0 0}.ui.search>.results>:last-child{border-radius:0 0 .28571429rem .28571429rem}.ui.search>.results .result{cursor:pointer;display:block;overflow:hidden;font-size:1em;padding:.85714286em 1.14285714em;color:rgba(0,0,0,.87);line-height:1.33;border-bottom:1px solid rgba(34,36,38,.1)}.ui.search>.results .result:last-child{border-bottom:none!important}.ui.search>.results .result .image{float:right;overflow:hidden;background:0 0;width:5em;height:3em;border-radius:.25em}.ui.search>.results .result .image img{display:block;width:auto;height:100%}.ui.search>.results .result .image+.content{margin:0 6em 0 0}.ui.search>.results .result .title{margin:-.14285em 0 0;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-weight:700;font-size:1em;color:rgba(0,0,0,.85)}.ui.search>.results .result .description{margin-top:0;font-size:.92857143em;color:rgba(0,0,0,.4)}.ui.search>.results .result .price{float:right;color:#21BA45}.ui.search>.results>.message{padding:1em}.ui.search>.results>.message .header{font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-size:1rem;font-weight:700;color:rgba(0,0,0,.87)}.ui.search>.results>.message .description{margin-top:.25rem;font-size:1em;color:rgba(0,0,0,.87)}.ui.search>.results>.action{display:block;border-top:none;background:#F3F4F5;padding:.92857143em 1em;color:rgba(0,0,0,.87);font-weight:700;text-align:center}.ui.search>.prompt:focus{border-color:rgba(34,36,38,.35);background:#FFF;color:rgba(0,0,0,.95)}.ui.loading.search .input>i.icon:before{position:absolute;content:'';top:50%;left:50%;margin:-.64285714em 0 0 -.64285714em;width:1.28571429em;height:1.28571429em;border-radius:500rem;border:.2em solid rgba(0,0,0,.1)}.ui.loading.search .input>i.icon:after{position:absolute;content:'';top:50%;left:50%;margin:-.64285714em 0 0 -.64285714em;width:1.28571429em;height:1.28571429em;-webkit-animation:button-spin .6s linear;animation:button-spin .6s linear;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;border-radius:500rem;border-color:#767676 transparent transparent;border-style:solid;border-width:.2em;box-shadow:0 0 0 1px transparent}.ui.category.search>.results .category .result:hover,.ui.search>.results .result:hover{background:#F9FAFB}.ui.search .action:hover{background:#E0E0E0}.ui.category.search>.results .category.active{background:#F3F4F5}.ui.category.search>.results .category.active>.name{color:rgba(0,0,0,.87)}.ui.category.search>.results .category .result.active,.ui.search>.results .result.active{position:relative;border-left-color:rgba(34,36,38,.1);background:#F3F4F5;box-shadow:none}.ui.search>.results .result.active .description,.ui.search>.results .result.active .title{color:rgba(0,0,0,.85)}.ui.search.selection .prompt{border-radius:.28571429rem}.ui.search.selection>.icon.input>.remove.icon{pointer-events:none;position:absolute;left:auto;opacity:0;color:'';top:0;right:0;-webkit-transition:color .1s ease,opacity .1s ease;transition:color .1s ease,opacity .1s ease}.ui.search.selection>.icon.input>.active.remove.icon{cursor:pointer;opacity:.8;pointer-events:auto}.ui.search.selection>.icon.input:not([class*="left icon"])>.icon~.remove.icon{right:1.85714em}.ui.search.selection>.icon.input>.remove.icon:hover{opacity:1;color:#DB2828}.ui.category.search .results{width:28em}.ui.category.search>.results .category{background:#F3F4F5;box-shadow:none;border-bottom:1px solid rgba(34,36,38,.1);-webkit-transition:background .1s ease,border-color .1s ease;transition:background .1s ease,border-color .1s ease}.ui.category.search>.results .category:last-child{border-bottom:none}.ui.category.search>.results .category:first-child .name+.result{border-radius:0 .28571429rem 0 0}.ui.category.search>.results .category .result{background:#FFF;margin-left:100px;border-left:1px solid rgba(34,36,38,.15);border-bottom:1px solid rgba(34,36,38,.1);-webkit-transition:background .1s ease,border-color .1s ease;transition:background .1s ease,border-color .1s ease;padding:.85714286em 1.14285714em}.ui.category.search>.results .category:last-child .result:last-child{border-radius:0 0 .28571429rem;border-bottom:none}.ui.category.search>.results .category>.name{width:100px;background:0 0;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-size:1em;float:1em;float:left;padding:.4em 1em;font-weight:700;color:rgba(0,0,0,.4)}.ui[class*="left aligned"].search>.results{right:auto;left:0}.ui[class*="right aligned"].search>.results{right:0;left:auto}.ui.fluid.search .results{width:100%}.ui.mini.search{font-size:.78571429em}.ui.small.search{font-size:.92857143em}.ui.search{font-size:1em}.ui.large.search{font-size:1.14285714em}.ui.big.search{font-size:1.28571429em}.ui.huge.search{font-size:1.42857143em}.ui.massive.search{font-size:1.71428571em}.ui.shape{position:relative;vertical-align:top;display:inline-block;-webkit-perspective:2000px;perspective:2000px;-webkit-transition:left .6s ease-in-out,width .6s ease-in-out,height .6s ease-in-out,-webkit-transform .6s ease-in-out;transition:left .6s ease-in-out,width .6s ease-in-out,height .6s ease-in-out,-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out,left .6s ease-in-out,width .6s ease-in-out,height .6s ease-in-out;transition:transform .6s ease-in-out,left .6s ease-in-out,width .6s ease-in-out,height .6s ease-in-out,-webkit-transform .6s ease-in-out}.ui.shape .sides{-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.ui.shape .side{opacity:1;width:100%;margin:0!important;-webkit-backface-visibility:hidden;backface-visibility:hidden;display:none}.ui.shape .side *{-webkit-backface-visibility:visible!important;backface-visibility:visible!important}.ui.cube.shape .side{min-width:15em;height:15em;padding:2em;background-color:#E6E6E6;color:rgba(0,0,0,.87);box-shadow:0 0 2px rgba(0,0,0,.3)}.ui.cube.shape .side>.content{width:100%;height:100%;display:table;text-align:center;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.ui.cube.shape .side>.content>div{display:table-cell;vertical-align:middle;font-size:2em}.ui.text.shape.animating .sides{position:static}.ui.text.shape .side{white-space:nowrap}.ui.text.shape .side>*{white-space:normal}.ui.loading.shape{position:absolute;top:-9999px;left:-9999px}.ui.shape .animating.side{position:absolute;top:0;left:0;display:block;z-index:100}.ui.shape .hidden.side{opacity:.6}.ui.shape.animating .sides{position:absolute;-webkit-transition:left .6s ease-in-out,width .6s ease-in-out,height .6s ease-in-out,-webkit-transform .6s ease-in-out;transition:left .6s ease-in-out,width .6s ease-in-out,height .6s ease-in-out,-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out,left .6s ease-in-out,width .6s ease-in-out,height .6s ease-in-out;transition:transform .6s ease-in-out,left .6s ease-in-out,width .6s ease-in-out,height .6s ease-in-out,-webkit-transform .6s ease-in-out}.ui.shape.animating .side{-webkit-transition:opacity .6s ease-in-out;transition:opacity .6s ease-in-out}.ui.shape .active.side{display:block}.ui.sidebar{position:fixed;top:0;left:0;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transition:none;transition:none;will-change:transform;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);visibility:hidden;-webkit-overflow-scrolling:touch;height:100%!important;max-height:100%;border-radius:0!important;margin:0!important;overflow-y:auto!important;z-index:102}.ui.sidebar>*{-webkit-backface-visibility:hidden;backface-visibility:hidden}.ui.left.sidebar{right:auto;left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.ui.right.sidebar{right:0!important;left:auto!important;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.ui.bottom.sidebar,.ui.top.sidebar{width:100%!important;height:auto!important}.ui.top.sidebar{top:0!important;bottom:auto!important;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}.ui.bottom.sidebar{top:auto!important;bottom:0!important;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}.pushable{height:100%;overflow-x:hidden;padding:0!important}body.pushable{background:#545454!important}.pushable:not(body){-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.pushable:not(body)>.fixed,.pushable:not(body)>.pusher:after,.pushable:not(body)>.ui.sidebar{position:absolute}.pushable>.fixed{position:fixed;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transition:-webkit-transform .5s ease;transition:-webkit-transform .5s ease;transition:transform .5s ease;transition:transform .5s ease,-webkit-transform .5s ease;will-change:transform;z-index:101}body.pushable>.pusher{background:#FFF}.pushable>.pusher{position:relative;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;min-height:100%;-webkit-transition:-webkit-transform .5s ease;transition:-webkit-transform .5s ease;transition:transform .5s ease;transition:transform .5s ease,-webkit-transform .5s ease;z-index:2;background:inherit}.pushable>.pusher:after{position:fixed;top:0;right:0;content:'';background-color:rgba(0,0,0,.4);overflow:hidden;opacity:0;-webkit-transition:opacity .5s;transition:opacity .5s;will-change:opacity;z-index:1000}.ui.sidebar.menu .item{border-radius:0!important}.pushable>.pusher.dimmed:after{width:100%!important;height:100%!important;opacity:1!important}.ui.animating.sidebar{visibility:visible}.ui.visible.sidebar{visibility:visible;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.ui.bottom.visible.sidebar,.ui.left.visible.sidebar,.ui.right.visible.sidebar,.ui.top.visible.sidebar{box-shadow:0 0 20px rgba(34,36,38,.15)}.ui.visible.left.sidebar~.fixed,.ui.visible.left.sidebar~.pusher{-webkit-transform:translate3d(260px,0,0);transform:translate3d(260px,0,0)}.ui.visible.right.sidebar~.fixed,.ui.visible.right.sidebar~.pusher{-webkit-transform:translate3d(-260px,0,0);transform:translate3d(-260px,0,0)}.ui.visible.top.sidebar~.fixed,.ui.visible.top.sidebar~.pusher{-webkit-transform:translate3d(0,36px,0);transform:translate3d(0,36px,0)}.ui.visible.bottom.sidebar~.fixed,.ui.visible.bottom.sidebar~.pusher{-webkit-transform:translate3d(0,-36px,0);transform:translate3d(0,-36px,0)}.ui.visible.left.sidebar~.ui.visible.right.sidebar~.fixed,.ui.visible.left.sidebar~.ui.visible.right.sidebar~.pusher,.ui.visible.right.sidebar~.ui.visible.left.sidebar~.fixed,.ui.visible.right.sidebar~.ui.visible.left.sidebar~.pusher{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}html.ios{overflow-x:hidden;-webkit-overflow-scrolling:touch}html.ios,html.ios body{height:initial!important}.ui.thin.left.sidebar,.ui.thin.right.sidebar{width:150px}.ui[class*="very thin"].left.sidebar,.ui[class*="very thin"].right.sidebar{width:60px}.ui.left.sidebar,.ui.right.sidebar{width:260px}.ui.wide.left.sidebar,.ui.wide.right.sidebar{width:350px}.ui[class*="very wide"].left.sidebar,.ui[class*="very wide"].right.sidebar{width:475px}.ui.visible.thin.left.sidebar~.fixed,.ui.visible.thin.left.sidebar~.pusher{-webkit-transform:translate3d(150px,0,0);transform:translate3d(150px,0,0)}.ui.visible[class*="very thin"].left.sidebar~.fixed,.ui.visible[class*="very thin"].left.sidebar~.pusher{-webkit-transform:translate3d(60px,0,0);transform:translate3d(60px,0,0)}.ui.visible.wide.left.sidebar~.fixed,.ui.visible.wide.left.sidebar~.pusher{-webkit-transform:translate3d(350px,0,0);transform:translate3d(350px,0,0)}.ui.visible[class*="very wide"].left.sidebar~.fixed,.ui.visible[class*="very wide"].left.sidebar~.pusher{-webkit-transform:translate3d(475px,0,0);transform:translate3d(475px,0,0)}.ui.visible.thin.right.sidebar~.fixed,.ui.visible.thin.right.sidebar~.pusher{-webkit-transform:translate3d(-150px,0,0);transform:translate3d(-150px,0,0)}.ui.visible[class*="very thin"].right.sidebar~.fixed,.ui.visible[class*="very thin"].right.sidebar~.pusher{-webkit-transform:translate3d(-60px,0,0);transform:translate3d(-60px,0,0)}.ui.visible.wide.right.sidebar~.fixed,.ui.visible.wide.right.sidebar~.pusher{-webkit-transform:translate3d(-350px,0,0);transform:translate3d(-350px,0,0)}.ui.visible[class*="very wide"].right.sidebar~.fixed,.ui.visible[class*="very wide"].right.sidebar~.pusher{-webkit-transform:translate3d(-475px,0,0);transform:translate3d(-475px,0,0)}.ui.overlay.sidebar{z-index:102}.ui.left.overlay.sidebar{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.ui.right.overlay.sidebar{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.ui.top.overlay.sidebar{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}.ui.bottom.overlay.sidebar{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}.animating.ui.overlay.sidebar,.ui.visible.overlay.sidebar{-webkit-transition:-webkit-transform .5s ease;transition:-webkit-transform .5s ease;transition:transform .5s ease;transition:transform .5s ease,-webkit-transform .5s ease}.ui.visible.bottom.overlay.sidebar,.ui.visible.left.overlay.sidebar,.ui.visible.right.overlay.sidebar,.ui.visible.top.overlay.sidebar{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.ui.visible.overlay.sidebar~.fixed,.ui.visible.overlay.sidebar~.pusher{-webkit-transform:none!important;transform:none!important}.ui.push.sidebar{-webkit-transition:-webkit-transform .5s ease;transition:-webkit-transform .5s ease;transition:transform .5s ease;transition:transform .5s ease,-webkit-transform .5s ease;z-index:102}.ui.left.push.sidebar{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.ui.right.push.sidebar{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.ui.top.push.sidebar{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}.ui.bottom.push.sidebar{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}.ui.visible.push.sidebar{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.ui.uncover.sidebar{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);z-index:1}.ui.visible.uncover.sidebar{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-webkit-transition:-webkit-transform .5s ease;transition:-webkit-transform .5s ease;transition:transform .5s ease;transition:transform .5s ease,-webkit-transform .5s ease}.ui.slide.along.sidebar{z-index:1}.ui.left.slide.along.sidebar{-webkit-transform:translate3d(-50%,0,0);transform:translate3d(-50%,0,0)}.ui.right.slide.along.sidebar{-webkit-transform:translate3d(50%,0,0);transform:translate3d(50%,0,0)}.ui.top.slide.along.sidebar{-webkit-transform:translate3d(0,-50%,0);transform:translate3d(0,-50%,0)}.ui.bottom.slide.along.sidebar{-webkit-transform:translate3d(0,50%,0);transform:translate3d(0,50%,0)}.ui.animating.slide.along.sidebar{-webkit-transition:-webkit-transform .5s ease;transition:-webkit-transform .5s ease;transition:transform .5s ease;transition:transform .5s ease,-webkit-transform .5s ease}.ui.visible.slide.along.sidebar{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.ui.slide.out.sidebar{z-index:1}.ui.left.slide.out.sidebar{-webkit-transform:translate3d(50%,0,0);transform:translate3d(50%,0,0)}.ui.right.slide.out.sidebar{-webkit-transform:translate3d(-50%,0,0);transform:translate3d(-50%,0,0)}.ui.top.slide.out.sidebar{-webkit-transform:translate3d(0,50%,0);transform:translate3d(0,50%,0)}.ui.bottom.slide.out.sidebar{-webkit-transform:translate3d(0,-50%,0);transform:translate3d(0,-50%,0)}.ui.animating.slide.out.sidebar{-webkit-transition:-webkit-transform .5s ease;transition:-webkit-transform .5s ease;transition:transform .5s ease;transition:transform .5s ease,-webkit-transform .5s ease}.ui.visible.slide.out.sidebar{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.ui.scale.down.sidebar{-webkit-transition:-webkit-transform .5s ease;transition:-webkit-transform .5s ease;transition:transform .5s ease;transition:transform .5s ease,-webkit-transform .5s ease;z-index:102}.ui.left.scale.down.sidebar{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.ui.right.scale.down.sidebar{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.ui.top.scale.down.sidebar{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}.ui.bottom.scale.down.sidebar{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}.ui.scale.down.left.sidebar~.pusher{-webkit-transform-origin:75% 50%;transform-origin:75% 50%}.ui.scale.down.right.sidebar~.pusher{-webkit-transform-origin:25% 50%;transform-origin:25% 50%}.ui.scale.down.top.sidebar~.pusher{-webkit-transform-origin:50% 75%;transform-origin:50% 75%}.ui.scale.down.bottom.sidebar~.pusher{-webkit-transform-origin:50% 25%;transform-origin:50% 25%}.ui.animating.scale.down>.visible.ui.sidebar{-webkit-transition:-webkit-transform .5s ease;transition:-webkit-transform .5s ease;transition:transform .5s ease;transition:transform .5s ease,-webkit-transform .5s ease}.ui.animating.scale.down.sidebar~.pusher,.ui.visible.scale.down.sidebar~.pusher{display:block!important;width:100%;height:100%;overflow:hidden!important}.ui.visible.scale.down.sidebar{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.ui.visible.scale.down.sidebar~.pusher{-webkit-transform:scale(.75);transform:scale(.75)}.ui.sticky{position:static;-webkit-transition:none;transition:none;z-index:800}.ui.sticky.bound{position:absolute;left:auto;right:auto}.ui.sticky.fixed{position:fixed;left:auto;right:auto}.ui.sticky.bound.top,.ui.sticky.fixed.top{top:0;bottom:auto}.ui.sticky.bound.bottom,.ui.sticky.fixed.bottom{top:auto;bottom:0}.ui.native.sticky{position:-webkit-sticky;position:-moz-sticky;position:-ms-sticky;position:-o-sticky;position:sticky}.ui.tab{display:none}.ui.tab.active,.ui.tab.open{display:block}.ui.tab.loading{position:relative;overflow:hidden;display:block;min-height:250px}.ui.tab.loading *{position:relative!important;left:-10000px!important}.ui.tab.loading.segment:before,.ui.tab.loading:before{position:absolute;content:'';top:100px;left:50%;margin:-1.25em 0 0 -1.25em;width:2.5em;height:2.5em;border-radius:500rem;border:.2em solid rgba(0,0,0,.1)}.ui.tab.loading.segment:after,.ui.tab.loading:after{position:absolute;content:'';top:100px;left:50%;margin:-1.25em 0 0 -1.25em;width:2.5em;height:2.5em;-webkit-animation:button-spin .6s linear;animation:button-spin .6s linear;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;border-radius:500rem;border-color:#767676 transparent transparent;border-style:solid;border-width:.2em;box-shadow:0 0 0 1px transparent}.transition{-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:ease;animation-timing-function:ease;-webkit-animation-fill-mode:both;animation-fill-mode:both}.animating.transition{-webkit-backface-visibility:hidden;backface-visibility:hidden;visibility:visible!important}.loading.transition{position:absolute;top:-99999px;left:-99999px}.hidden.transition{display:none;visibility:hidden}.visible.transition{display:block!important;visibility:visible!important}.disabled.transition{-webkit-animation-play-state:paused;animation-play-state:paused}.looping.transition{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.transition.browse{-webkit-animation-duration:.5s;animation-duration:.5s}.transition.browse.in{-webkit-animation-name:browseIn;animation-name:browseIn}.transition.browse.left.out,.transition.browse.out{-webkit-animation-name:browseOutLeft;animation-name:browseOutLeft}.transition.browse.right.out{-webkit-animation-name:browseOutRight;animation-name:browseOutRight}@-webkit-keyframes browseIn{0%{-webkit-transform:scale(.8) translateZ(0);transform:scale(.8) translateZ(0);z-index:-1}10%{-webkit-transform:scale(.8) translateZ(0);transform:scale(.8) translateZ(0);z-index:-1;opacity:.7}80%{-webkit-transform:scale(1.05) translateZ(0);transform:scale(1.05) translateZ(0);opacity:1;z-index:999}100%{-webkit-transform:scale(1) translateZ(0);transform:scale(1) translateZ(0);z-index:999}}@keyframes browseIn{0%{-webkit-transform:scale(.8) translateZ(0);transform:scale(.8) translateZ(0);z-index:-1}10%{-webkit-transform:scale(.8) translateZ(0);transform:scale(.8) translateZ(0);z-index:-1;opacity:.7}80%{-webkit-transform:scale(1.05) translateZ(0);transform:scale(1.05) translateZ(0);opacity:1;z-index:999}100%{-webkit-transform:scale(1) translateZ(0);transform:scale(1) translateZ(0);z-index:999}}@-webkit-keyframes browseOutLeft{0%{z-index:999;-webkit-transform:translateX(0) rotateY(0) rotateX(0);transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:-1;-webkit-transform:translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px);transform:translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}100%{z-index:-1;-webkit-transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}@keyframes browseOutLeft{0%{z-index:999;-webkit-transform:translateX(0) rotateY(0) rotateX(0);transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:-1;-webkit-transform:translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px);transform:translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}100%{z-index:-1;-webkit-transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}@-webkit-keyframes browseOutRight{0%{z-index:999;-webkit-transform:translateX(0) rotateY(0) rotateX(0);transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:1;-webkit-transform:translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px);transform:translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}100%{z-index:1;-webkit-transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}@keyframes browseOutRight{0%{z-index:999;-webkit-transform:translateX(0) rotateY(0) rotateX(0);transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:1;-webkit-transform:translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px);transform:translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}100%{z-index:1;-webkit-transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}.drop.transition{-webkit-transform-origin:top center;transform-origin:top center;-webkit-animation-duration:.4s;animation-duration:.4s;-webkit-animation-timing-function:cubic-bezier(.34,1.61,.7,1);animation-timing-function:cubic-bezier(.34,1.61,.7,1)}.drop.transition.in{-webkit-animation-name:dropIn;animation-name:dropIn}.drop.transition.out{-webkit-animation-name:dropOut;animation-name:dropOut}@-webkit-keyframes dropIn{0%{opacity:0;-webkit-transform:scale(0);transform:scale(0)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes dropIn{0%{opacity:0;-webkit-transform:scale(0);transform:scale(0)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes dropOut{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}100%{opacity:0;-webkit-transform:scale(0);transform:scale(0)}}@keyframes dropOut{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}100%{opacity:0;-webkit-transform:scale(0);transform:scale(0)}}.transition.fade.in{-webkit-animation-name:fadeIn;animation-name:fadeIn}.transition[class*="fade up"].in{-webkit-animation-name:fadeInUp;animation-name:fadeInUp}.transition[class*="fade down"].in{-webkit-animation-name:fadeInDown;animation-name:fadeInDown}.transition[class*="fade left"].in{-webkit-animation-name:fadeInLeft;animation-name:fadeInLeft}.transition[class*="fade right"].in{-webkit-animation-name:fadeInRight;animation-name:fadeInRight}.transition.fade.out{-webkit-animation-name:fadeOut;animation-name:fadeOut}.transition[class*="fade up"].out{-webkit-animation-name:fadeOutUp;animation-name:fadeOutUp}.transition[class*="fade down"].out{-webkit-animation-name:fadeOutDown;animation-name:fadeOutDown}.transition[class*="fade left"].out{-webkit-animation-name:fadeOutLeft;animation-name:fadeOutLeft}.transition[class*="fade right"].out{-webkit-animation-name:fadeOutRight;animation-name:fadeOutRight}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translateY(10%);transform:translateY(10%)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes fadeInUp{0%{opacity:0;-webkit-transform:translateY(10%);transform:translateY(10%)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes fadeInDown{0%{opacity:0;-webkit-transform:translateY(-10%);transform:translateY(-10%)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;-webkit-transform:translateY(-10%);transform:translateY(-10%)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translateX(10%);transform:translateX(10%)}100%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translateX(10%);transform:translateX(10%)}100%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes fadeInRight{0%{opacity:0;-webkit-transform:translateX(-10%);transform:translateX(-10%)}100%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;-webkit-transform:translateX(-10%);transform:translateX(-10%)}100%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@-webkit-keyframes fadeOutUp{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(5%);transform:translateY(5%)}}@keyframes fadeOutUp{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(5%);transform:translateY(5%)}}@-webkit-keyframes fadeOutDown{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(-5%);transform:translateY(-5%)}}@keyframes fadeOutDown{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(-5%);transform:translateY(-5%)}}@-webkit-keyframes fadeOutLeft{0%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(5%);transform:translateX(5%)}}@keyframes fadeOutLeft{0%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(5%);transform:translateX(5%)}}@-webkit-keyframes fadeOutRight{0%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(-5%);transform:translateX(-5%)}}@keyframes fadeOutRight{0%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(-5%);transform:translateX(-5%)}}.flip.transition.in,.flip.transition.out{-webkit-animation-duration:.6s;animation-duration:.6s}.horizontal.flip.transition.in{-webkit-animation-name:horizontalFlipIn;animation-name:horizontalFlipIn}.horizontal.flip.transition.out{-webkit-animation-name:horizontalFlipOut;animation-name:horizontalFlipOut}.vertical.flip.transition.in{-webkit-animation-name:verticalFlipIn;animation-name:verticalFlipIn}.vertical.flip.transition.out{-webkit-animation-name:verticalFlipOut;animation-name:verticalFlipOut}@-webkit-keyframes horizontalFlipIn{0%{-webkit-transform:perspective(2000px) rotateY(-90deg);transform:perspective(2000px) rotateY(-90deg);opacity:0}100%{-webkit-transform:perspective(2000px) rotateY(0);transform:perspective(2000px) rotateY(0);opacity:1}}@keyframes horizontalFlipIn{0%{-webkit-transform:perspective(2000px) rotateY(-90deg);transform:perspective(2000px) rotateY(-90deg);opacity:0}100%{-webkit-transform:perspective(2000px) rotateY(0);transform:perspective(2000px) rotateY(0);opacity:1}}@-webkit-keyframes verticalFlipIn{0%{-webkit-transform:perspective(2000px) rotateX(-90deg);transform:perspective(2000px) rotateX(-90deg);opacity:0}100%{-webkit-transform:perspective(2000px) rotateX(0);transform:perspective(2000px) rotateX(0);opacity:1}}@keyframes verticalFlipIn{0%{-webkit-transform:perspective(2000px) rotateX(-90deg);transform:perspective(2000px) rotateX(-90deg);opacity:0}100%{-webkit-transform:perspective(2000px) rotateX(0);transform:perspective(2000px) rotateX(0);opacity:1}}@-webkit-keyframes horizontalFlipOut{0%{-webkit-transform:perspective(2000px) rotateY(0);transform:perspective(2000px) rotateY(0);opacity:1}100%{-webkit-transform:perspective(2000px) rotateY(90deg);transform:perspective(2000px) rotateY(90deg);opacity:0}}@keyframes horizontalFlipOut{0%{-webkit-transform:perspective(2000px) rotateY(0);transform:perspective(2000px) rotateY(0);opacity:1}100%{-webkit-transform:perspective(2000px) rotateY(90deg);transform:perspective(2000px) rotateY(90deg);opacity:0}}@-webkit-keyframes verticalFlipOut{0%{-webkit-transform:perspective(2000px) rotateX(0);transform:perspective(2000px) rotateX(0);opacity:1}100%{-webkit-transform:perspective(2000px) rotateX(-90deg);transform:perspective(2000px) rotateX(-90deg);opacity:0}}@keyframes verticalFlipOut{0%{-webkit-transform:perspective(2000px) rotateX(0);transform:perspective(2000px) rotateX(0);opacity:1}100%{-webkit-transform:perspective(2000px) rotateX(-90deg);transform:perspective(2000px) rotateX(-90deg);opacity:0}}.scale.transition.in{-webkit-animation-name:scaleIn;animation-name:scaleIn}.scale.transition.out{-webkit-animation-name:scaleOut;animation-name:scaleOut}@-webkit-keyframes scaleIn{0%{opacity:0;-webkit-transform:scale(.8);transform:scale(.8)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes scaleIn{0%{opacity:0;-webkit-transform:scale(.8);transform:scale(.8)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes scaleOut{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}100%{opacity:0;-webkit-transform:scale(.9);transform:scale(.9)}}@keyframes scaleOut{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}100%{opacity:0;-webkit-transform:scale(.9);transform:scale(.9)}}.transition.fly{-webkit-animation-duration:.6s;animation-duration:.6s;-webkit-transition-timing-function:cubic-bezier(.215,.61,.355,1);transition-timing-function:cubic-bezier(.215,.61,.355,1)}.transition.fly.in{-webkit-animation-name:flyIn;animation-name:flyIn}.transition[class*="fly up"].in{-webkit-animation-name:flyInUp;animation-name:flyInUp}.transition[class*="fly down"].in{-webkit-animation-name:flyInDown;animation-name:flyInDown}.transition[class*="fly left"].in{-webkit-animation-name:flyInLeft;animation-name:flyInLeft}.transition[class*="fly right"].in{-webkit-animation-name:flyInRight;animation-name:flyInRight}.transition.fly.out{-webkit-animation-name:flyOut;animation-name:flyOut}.transition[class*="fly up"].out{-webkit-animation-name:flyOutUp;animation-name:flyOutUp}.transition[class*="fly down"].out{-webkit-animation-name:flyOutDown;animation-name:flyOutDown}.transition[class*="fly left"].out{-webkit-animation-name:flyOutLeft;animation-name:flyOutLeft}.transition[class*="fly right"].out{-webkit-animation-name:flyOutRight;animation-name:flyOutRight}@-webkit-keyframes flyIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}100%{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes flyIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}100%{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@-webkit-keyframes flyInUp{0%{opacity:0;-webkit-transform:translate3d(0,1500px,0);transform:translate3d(0,1500px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes flyInUp{0%{opacity:0;-webkit-transform:translate3d(0,1500px,0);transform:translate3d(0,1500px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@-webkit-keyframes flyInDown{0%{opacity:0;-webkit-transform:translate3d(0,-1500px,0);transform:translate3d(0,-1500px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}100%{-webkit-transform:none;transform:none}}@keyframes flyInDown{0%{opacity:0;-webkit-transform:translate3d(0,-1500px,0);transform:translate3d(0,-1500px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}100%{-webkit-transform:none;transform:none}}@-webkit-keyframes flyInLeft{0%{opacity:0;-webkit-transform:translate3d(1500px,0,0);transform:translate3d(1500px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}100%{-webkit-transform:none;transform:none}}@keyframes flyInLeft{0%{opacity:0;-webkit-transform:translate3d(1500px,0,0);transform:translate3d(1500px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}100%{-webkit-transform:none;transform:none}}@-webkit-keyframes flyInRight{0%{opacity:0;-webkit-transform:translate3d(-1500px,0,0);transform:translate3d(-1500px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}100%{-webkit-transform:none;transform:none}}@keyframes flyInRight{0%{opacity:0;-webkit-transform:translate3d(-1500px,0,0);transform:translate3d(-1500px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}100%{-webkit-transform:none;transform:none}}@-webkit-keyframes flyOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}100%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}@keyframes flyOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}100%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}@-webkit-keyframes flyOutUp{20%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes flyOutUp{20%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@-webkit-keyframes flyOutDown{20%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes flyOutDown{20%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@-webkit-keyframes flyOutRight{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes flyOutRight{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@-webkit-keyframes flyOutLeft{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes flyOutLeft{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.transition.slide.in,.transition[class*="slide down"].in{-webkit-animation-name:slideInY;animation-name:slideInY;-webkit-transform-origin:top center;transform-origin:top center}.transition[class*="slide up"].in{-webkit-animation-name:slideInY;animation-name:slideInY;-webkit-transform-origin:bottom center;transform-origin:bottom center}.transition[class*="slide left"].in{-webkit-animation-name:slideInX;animation-name:slideInX;-webkit-transform-origin:center right;transform-origin:center right}.transition[class*="slide right"].in{-webkit-animation-name:slideInX;animation-name:slideInX;-webkit-transform-origin:center left;transform-origin:center left}.transition.slide.out,.transition[class*="slide down"].out{-webkit-animation-name:slideOutY;animation-name:slideOutY;-webkit-transform-origin:top center;transform-origin:top center}.transition[class*="slide up"].out{-webkit-animation-name:slideOutY;animation-name:slideOutY;-webkit-transform-origin:bottom center;transform-origin:bottom center}.transition[class*="slide left"].out{-webkit-animation-name:slideOutX;animation-name:slideOutX;-webkit-transform-origin:center right;transform-origin:center right}.transition[class*="slide right"].out{-webkit-animation-name:slideOutX;animation-name:slideOutX;-webkit-transform-origin:center left;transform-origin:center left}@-webkit-keyframes slideInY{0%{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}100%{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1)}}@keyframes slideInY{0%{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}100%{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1)}}@-webkit-keyframes slideInX{0%{opacity:0;-webkit-transform:scaleX(0);transform:scaleX(0)}100%{opacity:1;-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes slideInX{0%{opacity:0;-webkit-transform:scaleX(0);transform:scaleX(0)}100%{opacity:1;-webkit-transform:scaleX(1);transform:scaleX(1)}}@-webkit-keyframes slideOutY{0%{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1)}100%{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}}@keyframes slideOutY{0%{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1)}100%{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}}@-webkit-keyframes slideOutX{0%{opacity:1;-webkit-transform:scaleX(1);transform:scaleX(1)}100%{opacity:0;-webkit-transform:scaleX(0);transform:scaleX(0)}}@keyframes slideOutX{0%{opacity:1;-webkit-transform:scaleX(1);transform:scaleX(1)}100%{opacity:0;-webkit-transform:scaleX(0);transform:scaleX(0)}}.transition.swing{-webkit-animation-duration:.8s;animation-duration:.8s}.transition[class*="swing down"].in{-webkit-animation-name:swingInX;animation-name:swingInX;-webkit-transform-origin:top center;transform-origin:top center}.transition[class*="swing up"].in{-webkit-animation-name:swingInX;animation-name:swingInX;-webkit-transform-origin:bottom center;transform-origin:bottom center}.transition[class*="swing left"].in{-webkit-animation-name:swingInY;animation-name:swingInY;-webkit-transform-origin:center right;transform-origin:center right}.transition[class*="swing right"].in{-webkit-animation-name:swingInY;animation-name:swingInY;-webkit-transform-origin:center left;transform-origin:center left}.transition.swing.out,.transition[class*="swing down"].out{-webkit-animation-name:swingOutX;animation-name:swingOutX;-webkit-transform-origin:top center;transform-origin:top center}.transition[class*="swing up"].out{-webkit-animation-name:swingOutX;animation-name:swingOutX;-webkit-transform-origin:bottom center;transform-origin:bottom center}.transition[class*="swing left"].out{-webkit-animation-name:swingOutY;animation-name:swingOutY;-webkit-transform-origin:center right;transform-origin:center right}.transition[class*="swing right"].out{-webkit-animation-name:swingOutY;animation-name:swingOutY;-webkit-transform-origin:center left;transform-origin:center left}@-webkit-keyframes swingInX{0%{-webkit-transform:perspective(1000px) rotateX(90deg);transform:perspective(1000px) rotateX(90deg);opacity:0}40%{-webkit-transform:perspective(1000px) rotateX(-30deg);transform:perspective(1000px) rotateX(-30deg);opacity:1}60%{-webkit-transform:perspective(1000px) rotateX(15deg);transform:perspective(1000px) rotateX(15deg)}80%{-webkit-transform:perspective(1000px) rotateX(-7.5deg);transform:perspective(1000px) rotateX(-7.5deg)}100%{-webkit-transform:perspective(1000px) rotateX(0);transform:perspective(1000px) rotateX(0)}}@keyframes swingInX{0%{-webkit-transform:perspective(1000px) rotateX(90deg);transform:perspective(1000px) rotateX(90deg);opacity:0}40%{-webkit-transform:perspective(1000px) rotateX(-30deg);transform:perspective(1000px) rotateX(-30deg);opacity:1}60%{-webkit-transform:perspective(1000px) rotateX(15deg);transform:perspective(1000px) rotateX(15deg)}80%{-webkit-transform:perspective(1000px) rotateX(-7.5deg);transform:perspective(1000px) rotateX(-7.5deg)}100%{-webkit-transform:perspective(1000px) rotateX(0);transform:perspective(1000px) rotateX(0)}}@-webkit-keyframes swingInY{0%{-webkit-transform:perspective(1000px) rotateY(-90deg);transform:perspective(1000px) rotateY(-90deg);opacity:0}40%{-webkit-transform:perspective(1000px) rotateY(30deg);transform:perspective(1000px) rotateY(30deg);opacity:1}60%{-webkit-transform:perspective(1000px) rotateY(-17.5deg);transform:perspective(1000px) rotateY(-17.5deg)}80%{-webkit-transform:perspective(1000px) rotateY(7.5deg);transform:perspective(1000px) rotateY(7.5deg)}100%{-webkit-transform:perspective(1000px) rotateY(0);transform:perspective(1000px) rotateY(0)}}@keyframes swingInY{0%{-webkit-transform:perspective(1000px) rotateY(-90deg);transform:perspective(1000px) rotateY(-90deg);opacity:0}40%{-webkit-transform:perspective(1000px) rotateY(30deg);transform:perspective(1000px) rotateY(30deg);opacity:1}60%{-webkit-transform:perspective(1000px) rotateY(-17.5deg);transform:perspective(1000px) rotateY(-17.5deg)}80%{-webkit-transform:perspective(1000px) rotateY(7.5deg);transform:perspective(1000px) rotateY(7.5deg)}100%{-webkit-transform:perspective(1000px) rotateY(0);transform:perspective(1000px) rotateY(0)}}@-webkit-keyframes swingOutX{0%{-webkit-transform:perspective(1000px) rotateX(0);transform:perspective(1000px) rotateX(0)}40%{-webkit-transform:perspective(1000px) rotateX(-7.5deg);transform:perspective(1000px) rotateX(-7.5deg)}60%{-webkit-transform:perspective(1000px) rotateX(17.5deg);transform:perspective(1000px) rotateX(17.5deg)}80%{-webkit-transform:perspective(1000px) rotateX(-30deg);transform:perspective(1000px) rotateX(-30deg);opacity:1}100%{-webkit-transform:perspective(1000px) rotateX(90deg);transform:perspective(1000px) rotateX(90deg);opacity:0}}@keyframes swingOutX{0%{-webkit-transform:perspective(1000px) rotateX(0);transform:perspective(1000px) rotateX(0)}40%{-webkit-transform:perspective(1000px) rotateX(-7.5deg);transform:perspective(1000px) rotateX(-7.5deg)}60%{-webkit-transform:perspective(1000px) rotateX(17.5deg);transform:perspective(1000px) rotateX(17.5deg)}80%{-webkit-transform:perspective(1000px) rotateX(-30deg);transform:perspective(1000px) rotateX(-30deg);opacity:1}100%{-webkit-transform:perspective(1000px) rotateX(90deg);transform:perspective(1000px) rotateX(90deg);opacity:0}}@-webkit-keyframes swingOutY{0%{-webkit-transform:perspective(1000px) rotateY(0);transform:perspective(1000px) rotateY(0)}40%{-webkit-transform:perspective(1000px) rotateY(7.5deg);transform:perspective(1000px) rotateY(7.5deg)}60%{-webkit-transform:perspective(1000px) rotateY(-10deg);transform:perspective(1000px) rotateY(-10deg)}80%{-webkit-transform:perspective(1000px) rotateY(30deg);transform:perspective(1000px) rotateY(30deg);opacity:1}100%{-webkit-transform:perspective(1000px) rotateY(-90deg);transform:perspective(1000px) rotateY(-90deg);opacity:0}}@keyframes swingOutY{0%{-webkit-transform:perspective(1000px) rotateY(0);transform:perspective(1000px) rotateY(0)}40%{-webkit-transform:perspective(1000px) rotateY(7.5deg);transform:perspective(1000px) rotateY(7.5deg)}60%{-webkit-transform:perspective(1000px) rotateY(-10deg);transform:perspective(1000px) rotateY(-10deg)}80%{-webkit-transform:perspective(1000px) rotateY(30deg);transform:perspective(1000px) rotateY(30deg);opacity:1}100%{-webkit-transform:perspective(1000px) rotateY(-90deg);transform:perspective(1000px) rotateY(-90deg);opacity:0}}.flash.transition{-webkit-animation-duration:750ms;animation-duration:750ms;-webkit-animation-name:flash;animation-name:flash}.shake.transition{-webkit-animation-duration:750ms;animation-duration:750ms;-webkit-animation-name:shake;animation-name:shake}.bounce.transition{-webkit-animation-duration:750ms;animation-duration:750ms;-webkit-animation-name:bounce;animation-name:bounce}.tada.transition{-webkit-animation-duration:750ms;animation-duration:750ms;-webkit-animation-name:tada;animation-name:tada}.pulse.transition{-webkit-animation-duration:.5s;animation-duration:.5s;-webkit-animation-name:pulse;animation-name:pulse}.jiggle.transition{-webkit-animation-duration:750ms;animation-duration:750ms;-webkit-animation-name:jiggle;animation-name:jiggle}@-webkit-keyframes flash{0%,100%,50%{opacity:1}25%,75%{opacity:0}}@keyframes flash{0%,100%,50%{opacity:1}25%,75%{opacity:0}}@-webkit-keyframes shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);transform:translateX(10px)}}@keyframes shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);transform:translateX(10px)}}@-webkit-keyframes bounce{0%,100%,20%,50%,80%{-webkit-transform:translateY(0);transform:translateY(0)}40%{-webkit-transform:translateY(-30px);transform:translateY(-30px)}60%{-webkit-transform:translateY(-15px);transform:translateY(-15px)}}@keyframes bounce{0%,100%,20%,50%,80%{-webkit-transform:translateY(0);transform:translateY(0)}40%{-webkit-transform:translateY(-30px);transform:translateY(-30px)}60%{-webkit-transform:translateY(-15px);transform:translateY(-15px)}}@-webkit-keyframes tada{0%{-webkit-transform:scale(1);transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg);transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.1) rotate(3deg);transform:scale(1.1) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.1) rotate(-3deg);transform:scale(1.1) rotate(-3deg)}100%{-webkit-transform:scale(1) rotate(0);transform:scale(1) rotate(0)}}@keyframes tada{0%{-webkit-transform:scale(1);transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg);transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.1) rotate(3deg);transform:scale(1.1) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.1) rotate(-3deg);transform:scale(1.1) rotate(-3deg)}100%{-webkit-transform:scale(1) rotate(0);transform:scale(1) rotate(0)}}@-webkit-keyframes pulse{0%,100%{-webkit-transform:scale(1);transform:scale(1);opacity:1}50%{-webkit-transform:scale(.9);transform:scale(.9);opacity:.7}}@keyframes pulse{0%,100%{-webkit-transform:scale(1);transform:scale(1);opacity:1}50%{-webkit-transform:scale(.9);transform:scale(.9);opacity:.7}}@-webkit-keyframes jiggle{0%,100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(.75,1.25,1);transform:scale3d(.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}}@keyframes jiggle{0%,100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(.75,1.25,1);transform:scale3d(.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}} \ No newline at end of file diff --git a/public/img/emoji/+1.png b/public/img/emoji/+1.png deleted file mode 100644 index 81786c1d8f5ed810fd8351f74996f9b64dbf5ffb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5075 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 diff --git a/public/img/emoji/-1.png b/public/img/emoji/-1.png deleted file mode 100644 index 41c6b825d6a6abf736a1b882c951c1eb942afabf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5070 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 diff --git a/public/img/emoji/100.png b/public/img/emoji/100.png deleted file mode 100644 index ca3bb9bcf6304ded9679998f00959e1732d5a960..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3251 zcmV;k3{3NhP)tl#&(J#$aSgd~`o8>~2!=i!`l z&iQq=hb6mNVw!?qv0a?sVqMPWSqvH@wU&mXwz70HZ*1|_f_FCQi6&hgcytR5^fWkf1^XN|Kq$C)ln*w!y~X^9 zKr3*d&EA}ab>7>ex8PCKoJQ^i^c4Lqt{LU#$SX^piu@Cv(y^Ikb^fr$hw3bjCKZ9P zz~PKa!P^s;l-!Fi=-5ftU{R9~)wrY0Y?OhmfsGX&$@$-mtj-N>#v9Bs1-Tc%954Q8(imYM zHx<0EL7$GmSjOGsd@N)C9Lhy3-^T?7vlBCP43Leotl-0K`V#_ee7?dr@1&t)7hx~e zh(tBg`v$_jB)>rJENrFH;-UucukrpCGZR5q%GlMzp$7BDxxU5ay4u({!Y3N+xs_7K z09Ph1ED0HXIwJEb+&0Qf6FE}gCmHu(ucIQfXRvOZ5NPL=Imv0{&dwV~`B0tp1^vl$ z1%8IXVScOR#x}W*!1jz!M|Rvw>8Lgr1r`T}D;(4@#-ftniS+3RjFtS`I1g_iI;zf+ z#DjE8WtSlH6`}S#MgQlbP9no(9)Gknt|jra#K{0 z5=XEzFemYN;;vcTmvM88Ki1X6_xc!XvY}vAG${ritMVPEka4)eSVW1yS}Z9|iWvtB zz7-jB3I*pCT&OFx*xI1(G;&jvXe9ojhXVx*>)gGbN49az2ybmu(KTA|xy0cHH$;|3 zR2UCzx{9q%?UIZ+x|�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 sm~u* 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 diff --git a/public/img/emoji/abcd.png b/public/img/emoji/abcd.png deleted file mode 100644 index 5218470b63c93b4074c814b879f5c7c542c3b855..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4471 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 JPDHLkV1i%gPt^bb diff --git a/public/img/emoji/accept.png b/public/img/emoji/accept.png deleted file mode 100644 index 2d200903188ccc0c59156798e3a939c2dc88ab7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4729 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 diff --git a/public/img/emoji/airplane.png b/public/img/emoji/airplane.png deleted file mode 100644 index 8407cb6757565f0561b470f63a0d2a101fcb50f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4740 zcmV-~5_|25P)eWTd4A4%H|gH1-LfTY*;=gCvcbFYj%5dI*Wi#g4bX-TOxlt#(gsX} z3ky#a7Z=}83k3xQ2#3RvWf`VvVsvyAL>?C}Ui_Ab8w^{wZoRL*zCN~d=g#{NA3luZ z$B*OCp+lg1Y}~jJjg5_<_gJ-R75skx{W5MK?Ao>KpVqHm|1d4o)YO2{*4Bo+ygZbb zm%Gq;O@ky!c<{jo zamO8Za2UAHDEu|?1|k30%{Slt?QPq(VeQ(rC@LyKR#p}see_Yh`R1E=>7|#jWy=;k z@x&A8>FGf#mBQ@oEHatQ@aJBDy?gh5XTydKf46z_W_ELryt{I8azL3MB_$<#)8pg)PFf%g)!!XW%u0vq=?%m%c%RkQKD=I47Y)>T*KA(?W-d!Go!63@Y$}m1Y z&K|%5a45VaevZjMM9J>N?;}rjACr@loD8`NxE?YxGUA3nZ*TAOizdLHJ$s_GzCo({ z7ZA%|q&Tks1mquBw{G2!sN{L%*}@+oZ&?;%v6vh8?d|QH^jtBfrlwec=N!VK2|$fV zE0vvprg}Rm2!ezwgX{G->Hj|)iA2tmrM_^5Qg>fNL&Hx!%P(8Dj4gjf@|~TX7#JA9 z#KZ)X=P=+Z@Yf(LiU9ZCdv7}>p<-E*Ai@qcRF|*A6>#_6cRvt~Mov&;0!b7hSo+sL z#;d+WmVa_yw)ZU0HQgi6vF(!Y?(TNU4-E~0T3>#~?$09pq_3~9dr<^9e)zx{M^9I3 zbJIw~#*j#)9{r%T^L=~_4ma&Q?i0+P8mT#?;uA>5W4-U3J%0!v!hyZJjx;tjJVWHU z&a>sONWQD93zsfk!tn60N1lJP81K;YuXzN#SpazzTS|iA@GoRvK$cY15?wWA2(Cl| zK=%Rw8v+=7byz<^pjR>=E0$szs{=myCQ(*kI}QxfvJENlf+NTw%SieJ%Mu*R0^k6m zj7Aa~V8?rw@q!b85M5HT8jEG;s zvTO+fMM6-O>A47-$%`^^S0G44LJg2b{7^^$(+zt8K1WB!(2>>**rowVwBa}cEQny@ zqT+)ovS4&Clc=^0J(D3VEVo@9?QX>ia}e9MZo}&G3b&o*P*GL&vgDaKFCKW<@*MLV z|K#$o68Zi35QONe#%LfM9t}iteUcJ@NMt0HlvVr?X^}TTQs`dwL#AucuOb}u(^3!) z_@K~xKUu;b@FPH1pP%kk1qunJl5he9gk%RY5hr$#z@jl(35q1Kc>J540j@JTwp+R! zRYdc97tnY14Q$%74P_No+}O;w`h4=7-RE1L>pVYm$@lm7zeMD3$7LYoty$lz27)UE zS+!xAk2?aY1yQc25LiJXWQjhPyeoo80!j26Bn*WLMAf~g6>#qrUkIxE|9y~L@tB+p zpCYp;Y%TX*CBiD*s|vqkp%hvIWWh#A5#S5jn4|cec;_TGk>#sv>Uf-WJ2_Dlz2%YT ztj_MuF+bn(Oq|zq)C1g!kAaZ8s@4$%5vGMT@xJrjn1`IQ^-)oFR)~Vqps2nEVo)iG zQWX)ekbFMX^$ZrnAB5!d(;^|%;QtBY-G?C3dzr+M0wGr<(Z}8tfS{;w!;Hg45CFOw zDy{xb)DJ$3+jj3nWpypWk%%iEl~b3v2VK|M${%)n4h6P6uV;w-AK?lR!pql~mLT1n z7;OIl3qV1^+HB-Ssw7!17a&wq=&X}uwN{kXVj>@My~fX85rh&9!36eAzkhM+*>$6e5sIE0Rz5 z`S68uAVil#i1ndv@ZYif)@>-ST}N*3S{@$eS)Q93wmQc>4>wGnpLuTo6WZIS(-a`$q1@#N<}QPrUxuJ)W3zDvdv{QWSGOLKXpWmK=fR74 zCd^i6@=TiDp08|mUOyu8-vD7L1z5NkjeCy?YS#T?cHXVjHV2PXsJLy<4pi1QA~!eh zvX*DJ=Y+>ZIq5O!IA#0TgewSod%Awm($@L6SOBj1rs&o^hgNNCT-)=7ru|r3-^fi4 zXL}auBW}-@XX5PUOrE#4VzCMIc6Q+WKzyY8{M*a1K!~`8XliN-ZEYxjn>Q?1maj!L z8ojLLHBI9T&sJvZyIDS&N+C|J-`~}V_Lz>8FW1DUfQ)Mc9&EB`R32))d1JV2%^Gt1 z9PSY=>-O_4&+(p2rZ6)-g`SQ!Oglj+B{c|4jfkHY0eFn{(a77oY15`~RaF(cJ-4=Q zji2xO>2%s7&!x>JpGqY!V=J`C{y5^CV zdw#Fc;pLI%+RmAt-JUzUL?VHisTjIDTG4G6qH_CTR8W@~%q`;PYvi7L?kWGXul~vO zfrAI1y>10KcI;RWjkLvlIKi8h+1c6NVB>XpY-Ju@J@RaMmwbGRy1w=nbQ<}{s&B%Y zwY4ZHUI8dU)ecXV{H<-HEi^@dBG z?RdX$8YozUg3>j}E+~cK55lo{bhaRfHY`1Zps?rUyte&M>w0Y{D;IYYa*>)7&q zAjva5Cq2*YSparf-mziwobkEaWAa=9x;n}22PZaX0=X^WoIC_0`4CkVwq?L{EVu$# z7Tn1&p4{-k2Os?AdZ_|@4)-Qy`;ByR!{j~7UyeMx{YNa%!_M$P&zAP)b7y?Pte4<8 zu*?i>Lw9$5)4B!6G)Vvrh9ma0w6vVPZpz^8x8MFMx&3w`&oS>=o@3r4&wKM8d2VvJ z!{emKdB7WSH?(y0oCd*6%=|nv6N5&})RM4?ctSH_ng(E6v~=})=>ypE|3#MHOUG7x z9K|QK9(ga@GkGRG-}2tJHHQIvz&d*8SrkL>{`z8adMuWXkHbjK!nQIn4HJ%I18_hO za9s#+@ZiCd)a5nJBk#rhhspD1hS%iq^2#44!%FG_&f`PSW@Aq#W249lZZo(79pXla1=n6WH^F&O+A3m>%LB>HV<6R?U}seI85}zmgj`WhZRiTA`wdI zeHT6kBh7ELre|W~`dkc_mPW>~ArWyF*AgV*nhC&PV%65x{*b=Va4nyopYI-Ac;s!{ zW}+P1^AjEm!0yg&pQL2CoGd?tD}xi@(;9hznMuR39XF)-5J!hN4Z{6@df(sBHv_wt zOaOBEGCHdIwfAWX?e5G^cwDZ$J$tV69(fkT%l5OB0B@rBAIB$vrKe9D$vIdgfJwp% zq6~*tR=_7c{Ln+ss6O96(AmN3G;7?p6asLGd)FgB|FDwF-1+n8J@;nIbID`!y!bhj zkCD|&Xiec0BBN<7rZxxL)R59mm=563iiZ4aNrNw?H4Pdqng#A$umF*|ZMj$g=rgoe zDCTpktE=Z9R&t_qKS_D=$tS%-N+!%XV7}Xrkr$MZ_2;kvP$KLzw6q%nmT3Z(Lt=9! z00}!q<`R$x$Q3#F;R6d>(nu1^pK;Tv$Vi(Zm8V)%EU7RnvVM z3E=1c-*#jOjsR2FF%%oZIOchmho5=pbo0qy zqG6>1p8-U^-_E2e4I=|hS4jX9hMvaQ=+M8td;a3xSODZmY2Bt!Zr*8sHkGZMLSz+` zxW`u{0&FA0e>k6#&RrzJT}CE_y01LaUsqC`#pF5Tdk2=Uzy3PToH@g@JCo&7$k+L2 z^PB+BP`|zzpAoj9wNVnR)U*u6x&pz_TAv=OHvW-I(^eheF8c81z@nX&z(ExCOXqJ-NeURU0j}60E%%=e!PA`2Nqw! zRRFnuGa2J3RRri6A8ZZ<+e+h8K%O3G`*BWL^^3C;eJ={4SjROR4#$On0C|NP2tkx& z&_94*g8g0}T^%A9hhbRUzIvaW@kfbV3E2IaICpnUoUQ*|N`#N&YQeIac_1>m8PbDD z8$1yj@~3Wvr+eCZ0n`^&Z+pbhQjc0%0%j%&yJ#f>D1sUcL-mJ}ce?;o7uVnVy-Z@}?=y*MM3Uw3=M+Or&qB6s za`8eI!1aQcUw)ZAfZJiD5_9P8?Plwryl|oA7#0a!3M+5>;|z)5n@k$892)|ht2+#h zT=?Dh;v+p(;~i%^M_S&(Fs<>fR+OzNM<^@g#{S9Yo^#LU>TA|wZh8_eZEfi3AN;aQ zevx5iGMBgym`r3~nhqSnx%%VqMBC{O0F`+)JHIalhQ4)6)iQJWvgM(!?jF4G!V8$8 z5?51Khv8Tf!&5UDo7K#z_O_?71hDi}r>&=JZPS1Q8^nL{#^G4&8;`8c(*Jz9k_k1p zw&Q32`b+c-Pa&{+Jtjis=(VCqsJZa_1M-SZP1~>pupPUV61KZP=-4(KXAw6VO%lMe zAYk!4fHQkwGCuVO|MT0|k3tE4H+X1^dxF6mHSF@m(zFt^WPs96z|ZrryCiwrJ>G#01061YPp zoTU@M>FLp|jCL$FJqB%N5@u=+j&4F!RH(rSBsq8(O90!@hAloMF$}<3LID^<=ifLv zGt&DX(*y089Up+9&A8o|r20q*rD;h7u6<@37C3Xz9zfE>G;_G>4A%g4_w0BSRXV#xk)FGvwGcj zEHWIRjrSs ze@LfANW?~=B~yps;aYqrSX8xflw!Zg$Y{Ts?0o+?77&V!L~&qVGsf&L6S~F$T(C|sp*bq+Izomf9tG!t7@67B#8g?JIS~9Ik(O} z-|w5hz3;g~YmNWPhjo|}{=WhqdE}AV4?gtJRp0-?55D`|yY716wma^)f5C!p-TKvA zZ~f%FdGk6xXuuCY{II)Z$&ynaT(szhd;aGS@4n;CyB_%VcW(c|{BM2hX2Nj(wYT0{ ze>e;dDFp7g;|{00yZf?KDt(>O`V=W+FNz{WQ4Bu_Q1Q#~%RZg^eNyUQE1`dM&z*O^ z`BxUaQ8>=EnN;Qq&vTEHacl))h&YZD96rjW5-OF-mME4_3N0VH`|i89zi$PQwoi0i z_kmn4cXo4A3$ob^0L_epD1=`zjLRq#3Mdqd1fXmH`Ic?{OWO0kbMwtNSMa_L#&Cfj zhWEIRJ2RKfqM@+?b#-;HgavK>DUB$O2}=d}LLUA71IP~#_miQ%bK7mV{pg58;IYRZ zyTJ3j=Uc~(JNu}~lQCgJCt6yX(a^vEP@k(qLw!9O3DCH4Eof_NWtuR)Gu<_D;{0?v z{Y&zmCLG}*gs^X!H}CdzF8hm==go9%3yx!h53P|(rI>$HQzKf5|HO$CFs-KtCmeqq zX3UsAuBBz%gZJKh-;Xc7^iumkJe&hDU$$)7`L63e+1A#U?&#kR z3D@(WwKgLI+O%;aUVr5ktb1qOM+Sxl&sex{;csvRM|*qw?BDUCoi6w-rC@$XKRfU zgwivFQ0-b-4NxkbXw(;$%4==y)0WsE1lAP1@;hI7vy@ssjPqS7i}pUr`Ov93&&?xv_hSL zvYa9#g;;9nSU~}hih0AfjB)|XxVSB7z6E6Lt=h9!eRF5!!@nJlr|b_TR1~8=o5A0m zb}BydiBDi$Yby&$9>7Fct9X6iH(trKXU`t&?(H3vQFP+mxpTK4L;;*_k0a~9F?sT2 zx1+t?Se=EmZJQHK7zCi~YZSnruYKz+JhpfVwvn4!u7_zk2bVV5_*6!qO)5lXiJ?fM z6l;{VLZ|_02tdLaA|Y1*9#K|U$T`%v*Tg3;z8J^M zo(%}W)~7^`I--nGg4SH21c0*dW6OK*VQ6sh-WzYcasEMbK&eu>yd{-($?e&~LYTzE zmPf_+5f}C?EI~@Gq(80q4F1GdU$I``%aqju&ow_{nXAPSAo+;h)8-<>~ye&K)$sFcg+Q%X0k!k$GL|F%x<07yu1d_c8y^+G?z`|WQ z52trJxNFG9%dfr8?ta?2=OS&46!?gYqP6DS6+|H$AR;WqLg9piDu9H{n1>aMC8W|R zD8o3PCzl>%rM$Z0MZCJ|O&r^p!Vl{truZS&l_Ts=TwR0B4Hbll1|k|+9UKBaNEjl& z-b0)sU|KQHl(1k|Vq{ApJVZznIixT#09Yv(Zi`E!hfr7;keb3&qc8OFiL8rR%`R>! zrm*_Y??6}LBS$^ZlR3&eZy!PDk5w0&7KHWCL*s$afPV>*d1#!QiPsJ z;pbToH(3tWtXt2$$mE`BBy0qw0mppcL!qZF8-q&W zoj{{oYusO_aU)V#_n#Z!q|#{Z=->*LPGzWb&5;5sNfHl>2W^EbK~N}^3T9Ekt}{&T zKS=JsX3bi3$_RJ4Bz!)=rXWU9D#Y9vNd!Z5KM5Z}U?x*2zKg-3K{DJBjRRb@0zY75#xmM+Pz6A%cQ^r(@KGGXk0NZ}x)o7=2=h}Ra^-+5 zuZXcG0Dz1nf`KyP;gH?^-RVc6@2C!(@##zO#YdK)nJf_#b0sAwq8e%Jqn5ev-A&vO zarh|7_i^S915B85H2!hPQk;6>h1fT#jh{_Cm>2P6-h_d%5GKYp-wS|J5&QP^nqyd43!_f9^r~~-f#DjS$;u+*Cj6nj7iLf!o&$t2l`}#~tM?k`dLC7BGy6*b&{{5>D zq5#gi|I4=Ryh<|kR*L<}m0|q%$j266qM#DXD}}J^Ll=zj8Eida63tD)l@gBUV#7-- z@#eoig>gO8k*cp_g=(dFo{|c!w7P8X?m>G`51Q#bmI{%{BZlG_u363c` zk8Z!|=C3XimbJi?ll|MaV6HBs=tme#7-?w4ro0V?sKCS4*%M*A4qT;>td}^;KmXwU z5CAHL0(X?LX0L)l@QLsI6DA*j0`uImW;K3(&DC(Vg0?N1D^T3ukDp(41zSisHl$X7 z2IvgRwTWjJy8pZl8Nv_~Zzt^$Ho+Kkg!NLZgdYv{BMNz81R?DAkjwq-ke0(L^#9pQ zc^}`lYxjq`hxcNdA7Fc=5E>WOfR1CxeLetztw(o2dme0=R0EiMG7%by0t|S`Z zW~s-gkSz^hV7P#;iCx-N;>-6fTsU+{8zPGqEh-j-_}tzto8O*O8P-FgL`Adf!-PiU zN3fucCV~-yl>pmf@G&ofxMDy-qar1IPO_3iqeAEO8UIbOl9{+d zD3d>uc{0frT1nVJh%)is-O^;RFeb%3z*r6DIprZ;-oLLmcD=97n|IT14r@o~yYuF) z|LnH6zupyudcV>LRRWFxi@|`iac^4#W#~`g^lPu>_>V)AY!tLq3|49;jtQHsN&qDb z!EI?21qh>%C_-#Svq zjSX0(Sy)LF#F9o0T`hNt%d8)SL7zT;Kw+p zEHw+SxPJ#*#2f?JGz2$8oSC`qQ!I0-vw#G2ZFwsdj|^5PiH;Qz1XTsZ#?6I-P@L*H zVcIN<0KnHoTxQ`UjS?qHXrmm$L<&HjF$$wZ^9-S3WXMKh&S5JclsF-*)_o>eQX|MY zC^;^Kl2Ek?e9mq!M#q*KvEbKy6NdoeWLpgYpMw*fU?Hu9p)_+6WwH?j_-`?o8S~Id zek$4yW3wcxxD0k9L!hkV4=V(g94*oWdEIns0u1;@VE>M7pfoZk` zlF;Bh!rfUWTZi`cHco84^$on}QUY*I?Kl5)E&kaHjWL8EVjPf3!i^NXEN-Q%2+N8I8$qkIRufe zodVzn=)&u+#RZps+AL0Z!sLk)QP})0{^Q3#Mkd8~vUh1cDuGrNA^~1t)i*aA3~Z3$ zd=b8FF-Gn=MZ|#;FHcQTT6?k>8cO%!=)c$&-R^o>U(z@)A6Dwm3H|{ zOG^-0Ruw1B=20cjs6;V#?%Rtkv{w)ZK8Ju(imQQ}&7!w|5Fxl593{TisFqK`%W;X) zp1t_D@81h&-c5~7wd zA|Kqu!`Y+k@3pfQ7Nq~&eQ;xG&B%c zZf(JW!gfbHt4flgr5Idwd-|M9FUH@~n&E|)U&c!-UcfnX=Dtx+AKiZq9Tg05OEpzE$#Gcork58>oXK7;-}d-x5G?rGD|O4Z}HPd|;H zQWjrw|NYoN!nZmO>bykw8r3|ZO3VwAcrtH*v5fO9WG%rMtMfIxEo|rwMyA7B4cfq) zqAa14h9~hR_JV0?x5~s=S$hH#rgigLKtZ$c$DKO|S5aMWntU|+cI_~3&2yhw`Y4|I z@lTM;=h5T3=q8%tdAu8B0ac-t0Q4B)Ik+qv6OWk*JL4EdRPURfauG|-7!$mVon&BH z4tq5yfInK$P_g7aIUxiyD=CGkX$MWVjiErIv!@$pU4A)cPw%N9L^!JRwN;R1ESa^YE@P{;?!47rh~WX7jVwp>me^9^-n$q0 znrKMDPI=XsG49&tSa_sw7Otp3Cl6MucHIg_$Rxf_1Ckf-V#>&UKIx zqcV6+*y{DcKT~0Z7{K@`lV}vsyL)j>TO;aPQ}JH2-itfGGp< ze>~`$E0x%`2s}4JFkzt4qJh6}uEXQ+ZDpm{o?9zP0!RxJlL6MPSb>ZK)Ojwvk(oSk z@v%x6Yjrh73&LY-qj&2L7WVTUE#@A^BvCa#;!2DRAX5-e9Pw*%m+0_~9I#wR5+fU_ z2pW5(#B|TW+06}zokSpA8!ZK-BcKI9qhQdZ?m_i>B#p{=ylPZYlzcY&{>TCICJc-v zs;Q2#8q5Z}k>P#4Dw_rFbpXg=0;43ekwj&su{)IbSbZ9^(>eG$8WqPO0iQ?-a`vgG zz_y*l;!L$RRn#asYJaCWGw5Zgu486!Gd1$45U=BiC-F8I7>h)rHzgUXlVE?}?+Rb0 zqZb>uRUjsX(#Lh_K3bM-QnwpS-i*58;+Da;o>sGFW1&8lV zhz}V@IQt71FLn9grczYW_b>D3_U9S%!oRLZ4wuz0HL@U1MAA20b`2v(H z##*`BtS|v%$;{!mO<#QCNp$u0@-yk#%!7C_&kQSqVU&RCtR3MjE)OtpT@>ABVFV>yfbqe_!XTh+Q^Lgx*WrV0$-hN?x3dSSWIH zB8{wV@!W;%Oml&v0f~>VW|+sNr88uk+Cc^5sjxg$E92xo3c?y*Lz}x z?L0@<;=LM1F~Xscg>L}XHX#1!^;+-yAQiy$un?06;5?lNPVyj-s`ub{4j{xR*K#d^ zoDgU=g4q`8Z2?;YMI!#TSTS#YKR68wSpi6*g4Ea}74|EIlIHDlsL^|Nh{G5`!B`$> z0$y%L{Mor$ZwG)6S^-S=H#avGr29&tFgVi#kait7^)77NP6~T%*Txor0}|2#(h$6C zbwQNqE7C;JT+e+FDR4YXJ$64(v&+YY2!0ep0%+;!f$W)b(KnVae+B^lW(v6Nd*7SU z-PQGS^B-SqdHvC42%(TM-jH>9scKnPRS|0BwxT8)v#*mlHWV=C-kRY2C21u_P>xth zHUvI&*{3mU!L3-n;>Fk3?dv;x@xq1v-$Vg|jw`Rca@h@E`qF0`+S;)Ckw@^}BTG@- zy$b?h>w0FRG;Q-M@IqKMOD6o(fwFNDMuKnUZ-^255}_X%(ib#NJ4ignk(D5da^!0@(UJJw4KO-J#c3t?C*W8say&cF~sC`lGs_i}?pWvgy6m z1&Fym^eGicTlfUs2W$u?i~osH3=}kxf`n#@YMY%h1@T%7^paJX%<}b}9Z$tOcAVm+ z)BLlT-Me>VK267wgaA(-y9Y7CLj{jauxHJhbuImt=sx;c4JW=rp@6;n z_Ps~H7rHE;&j$d!Gl65L0cX|0Io^SuE+FdlU)b;*`>4Q;-jjdF*x{o46(38PBOY9 zC^K!^w5#bCWdA@3FKd3Uw{z#tr-p`x$^aUO>XR`?R7WQiBxq>_>ghb=0j`~Rpaf(H zLL zDK(v&qpEpjiJ)-eDaeB$%o~)jWo;$DCVZo}3cEoM)5# zePrmM@NM&e{lN#D0*HGVVHzPT9shIh$#}HIyuh zUl9xrj)~3?#V5Eb$as6s?5$<-v`J-cGxb&Q;(W`QT-NJ(D* zJ(5u?CHctT5bk##nSRQeVkj>DVPWvYXe7C^x+>7XJ~cNt|KY;F$QAssFT%5(qsp^2 zt|k%|{qfxHpxivCK`i#o?NSLz5O^YG0nP*Ewk!HcQmF-^>G|TiXmcDBZoU8FB{ok6 ztwgqU6uAWnu`vvV6|qS^8j{NxRcEMy&4~TjQ;zGhAa6-TW>nLZ!ZhIUy4<{i2q0ft zRvOPQjZEH&fi#}avrU@LEo+>HI}urZf81BFdbFnON#5uL1Uq%(TH%r{Qw zPalz*}C42b)78ep1 zc_k_7KwZgb=P2e#nl51z?qgzfY~<-YIN(S|!e7^K?J;3ob_NpP+8Vls6f>$derkCq zx|5wI7~?&*TbKxu5&t3HhmsJ?d*5)F-ay+<5=xRG`yCTY%!`qC>>ecqy-1Bu`00TT zuJlS_;A@plK&EihUUcx*@3f~tJ;icIXk!IrpZoZngdNn1+@PnzfmS@9*aC&S)eQ-cl*mRp@ttMkPJ70C@`bMl>iWWmx(1~MjsI3Ws(>0Bo$SE_`b z0j_rnTur=TBsQj&{Mek5z++aMqeip zoTtda)HpBBRj868u?HYPV2J!>o+sD53ho&r;XX5iJOu95d8lg;6)X-(w^t zq-V>6Wy&SIeL^f^@J??vWLt5E-^ zc4c=9CK=(uvnd|!)^7JIh|)#7pE&A5rV<$WxvGsimxGYkCFnORr&#~MYIh2{FIZG* z`4Tx=n#?v$-HK0tVH33V%m4xO%FoHQ@5`EA(U_cZjq-Plrnz~s040Oq0}dJnM!Aip zk6!{tWSJ~H>lv#}9N)@ole)c@j2GXIBUwF4%6hA~Y1jmr^LNh})z$4e?@}z9tW}*e zZB*PO{Svxm^zindKOdqqGR(MidC+Wk#`6H{Mu5LGr;t{oPJYlzd3h%>tE0(?491?| z^d5XHfDQ~>e-+AOQvyWByQ8Ra?u`S{S^5c{Elu9Fr$fc%g;hE?Z!HJYn#D3n!h2F5 zJ6LlLYnw@aejWOrrZ>cMjvCxh0^#lLjN*n=HKyjhj>M_O{AGIwT92KEpIDydyd<*^ zFx+^r>A?(JL6&QXx5m|ZqOnki)^P*EZ;2tlXZr-qO4C!P!y|q4>#TSMJKQXvP`{pi z$c#Qqd?@O$@Azgv#n$@#^hn6>)GG!2IW2i;G4?4o(sTH?%a8xBLz zGBB@${J{}xOn(VE^j_lEdN|(b&ElVlmOUMzu1bJ#uHCw_seJ-;g+-yakXu~wFmn{2onfZdN+ID~{ zrkgDxAz}FI*N+>XFgVr_$XO_!MJq_fBM6ifkG&<1{Lac`QTts(Z|)f}PZbYOyob~AeZk)zbzqF}vX3%s7 zr+8>Bmp%4+o!Hk;Y1V7*MQE2MLPB%y_$9jtqomkrg z<8}qgVM9^{fp;^Yay-mx8}@~HMO95Es|sw2(eYX=Lt;95dU+eVi?&RTm85hU7X23G zY>H5hmyPg!^ZH4}y`+>ED{FRJp!(6ON6!Mj|!x!BZo`{nrj zd`{xC}k1Z+aJrm zL7P2}0p4Y5b6E7j#bIRY{Bc(eKGOazzdZ}<(xIbMxMi`*L4cxILtdVOILp1LhaZ}b z_pUYmB;XGReqln9vXE5f7Z%A+0(p5qv?@Lm>bXG`rTHRe-H&k>=1q6!PA}L_v&}+t zP17oq5KvlCP^0V1gnyW03~Ln*8aj-&fs7Y+%yn&-IktsZMht>TUONc+l(V=ZOro3p9$2452da!RD!?kGXh zArg|~(4wp)S#z&SI)3+oC0J;pbddo&objA2lwQdv+s~dy#tUpl1t<)0s=u;n7@JIG zNA|NZK71vycj)-^rqfK?Bk4uS#kuSi*HAa|Kisyfmaira3{kUl;M}mNtMw65+4Y6; z!deG_{O*E~oBN*-UN4 zz+F*e&TJ;z8(Br35`z`deP6S|;{7>24y2PXaKZh{BmFWSGkC7Tzdb}^p0}3b?FHzf;J7!fl^Hy zM&%>&GbIxhzeXv|L^z>oB32>oSXi1Hfmp06U3$|%R2CDK5X}dJom`W?=(-`TuJ8%j zOmmai$9ic#gZ-DO%ezB?eY>_*ViTVNszMSwk~9>UlbqB=+($Nd9O_rFL-?!!;fp#? z&qRUk7#sc|f|JAW*DcufiNJs9fI-}^nCQ#GNOQ~4k#m*|rJ^i!0s;D|!Zb3d8XIbB zUEdj6ug{_A5vY-5de1R@t)PRhrAwcoN=YN;>^)1?b_OL{?`BzOqG5rmr~j1zVWELO zsN**;XulK@8i1vz8cU)qq@x=%^?Ajg&LUWv?jhvkItVJBX5UvH8i>O=o8_i2Y;Eeh zK4>e7+?FNfhnt2X0}8o&9!RZ*oR0h7tShHqgTcRne7ih(M?MuiejL1R@jOFOHjnRL zG*OLjSBm8?7?CSM`5oKL{B_j)$@F(CIl3^neo#k~7t;0x@52uc&R?`r1%C;_y?OhK6VZ=@U^j-UpjE^b>uZN}myzV4lt1-V@OC97Gv9_M4}Al6`HVn;rjyn=$X1gLWR}HI0d6-15|5FTZmufmMrdB<`sLl zldAWlddcizh|FzBGec@6?Blk`iN#3^5lleG9ng;;`!SU}&Q1 zeK@ple?y-eg}t6q@{zj!=}fiH=SVTj+?h(pl=X&m=!xySkU~$cj;fN5hEchH)WVyi zXO<_dDepRf1Fh|aLm!_bu%<*XV zU9AB&0n8@Yaj)0yfQ@I#e6vYMgBh&xwsc#7N8Sk6MfIm4jRyNRMv9aBhPGTyI-Y^% zsUo&th__FoM3re&;XgL%Ae1 z4r{4xZf+{eIdy(*^~z zTZ@K-Kf0r9SF8u(o#*8JzbV&DjZI|>uopZbL07aZm0;8^^-(=L;9vv-G1xaqi1*br z&^rpEy+y^`mA6jzTS96mL5ESUhzaM$5AjNUPsA6wJsED>KbsQDz;K_4@~RtOYN8yC z_59n@IqK7Os{ws$Wh2aYu6m&8ZwLP8d#>@Bi;A)q6Th-#49pGd>uUX&n;12j*+2Ey z(0T1iw4w~G(Q0|D8^edv1;fxjaOBB3ls89vuUDYU;~6u|_|KlwmDIuv6RVZ7yoki0 z8qqJ@#eSA|xZ>ORAMzgU#XVm?&~KUzS8Cqo_Y6gThrawDtf|j&y6w2Su|4ehPOI#dxxy6odfIJlf0AOM9LvkD`$8yO@2HgHvxT$u(aL{y>R(9C9qFjIn$bN$ zHQLKTPRxFXTVsvz(mxhQ)8k`^C#*RdUPVPpwozz=87v&PPJAmC0qaS7)XWw0W3dZ0 z&)3}@HIeJpr(e|W(G|n!KXsVWw0-K|Yeg~h=)!d#z0-Sq;BuYcc*V@K^!PkW^W9)h z9IMuq0Yc(C#F|9c-t*ILVi%S{S-{g*yX{l4p^xvV_8SS9xTYt`syzui*@C~P68FI`bec|-X@J&WXK#si`^AE>7ph9-All8HPHqZPyj~ zvNGcItj4zv5Tv(~I#rXfe5%fI3mqXp99;@(tSFG}Kg8f0DQ@#S%WmA`*L-m6aisS( z!5B7IudVF|wIP2oMz!WzzrAIbk6x+p&}4A7#VBmf9(NvlCh5lCEiaozOPbAp<-)HH zwz(+byNMg#Ylk@PlIaX3oy2zW`*;M;cy}|ooeVcFvF4&be+sp>gj7UITzrZ~2gL){ zQB$=%a#!w20{hv4yp4^+wWfR7M}(kU@Eq^<@pvM{t!FEyuG> zqVgEP%{6QI&*!j?RD<&T-uY!~_W(-vXAKG8MW)V-jMUI!S_6Jh(Bb$vP?UEmnvPAh2fs!Qz z3GZ$s1SC;NMB-hP-Dm-Y4N)XWoRw{i7m^4PUjq0N+Zc~8_*O zZ`q({mwiX-D|(7UgH9R#D&F~<|ESNo)HDbD)bo~j(yp|mMnkI`HkntO$d0>CY6nEu0p+^mg@3Sy19%d$xj*dgK?DuVrc;}g#z3W zqOgbD(VlGHigl3+TL6qZp0oW~`pRIEY-#^oq*B$m`?xN5j!xNPVz4M~G`R=i@c zJ7F(GpqajLH3|$!zm=8#(vB^IQtTOM;9^*i3MZw0l3*lx5buQwy+0inqrlp=YwxeG zufI2w$;`}Vv-3b*U0r=TomLP8N~KcreIJP8c^;^o*P>vDJA%lF9vB!RtE0!pQlhK7dJ z*Vm_W=g#Ty;lny|1+D*>Du9ggL?0Soe!${Go zNPR~SsKfhD{q@7YqcKn*fY3wSFT)n@7%d_b>!?7{YP)RI@hdK zrm0!juc)MwJVmkO*XK0x>>iTPSP27^fC?C?P{P^~<$&eOmp@<$?+@!VfFuZ3d}0C?ELhNH3GbELZo5sb zZEbqy=ZDp@dZV%?r9hz>Ecp-+i~kI=Yj!L}V?hBp!GYnB(FzsREnd8M?z`{4duUh! zX3UuJ=AuQ581D4I{dzLB6e_I;?{NnM&aX^P3-Dh)%)$4*aj-pBL& zQ%R+fC;;OvL+jy(rH?+6u{#=bH@_)u*Z>jLc>u!+0hb7W{ILYwdFP#9F`4}C zym|9&lmBIz4G9|j0ZFnheN1fWI4b*qZeL~`fBusykv=V z|NYXXOVuMmbt3Hk*c>ox)~u`<|Ek5ma!q;tXva}?uKu#p*_^yMGQ?%kBQK7Q08iMg z5F$pP03JfNt*x~q07X$}6uD`!3k8fv1+%d8dIT`T+hQ3%HEGf${llB@Yr?|ysxu-| zrJ^V?FB`El-i2Lk@C=NIk(1rXr0aRL%zh5lZ=mD>-VbU z1lSxuKY#xGA2HMG4P))TP_Ncyv*o1%dpImt>|St^WFs?_A;n?n^1(>FRXh2E{{Cwe z0GP4*nT))lA!TiZNM$lhuOT3xpYX%!Gv?TM-=WQKys!Myjq=kO#ZeLGVmxtvgV#@T zfH587{o=@SK%pSbpD%k~WfXwnPd@}Q3YdpAFpyM$VjBUjJo%*B4j)#wtEjyrZ!Qc&>r-OZ;8CGBnPNJjtzu@AVAUx6aZ0V>*t@BGMU=U z15nf1v)4GN`9^x6iu{+{HE-&Eoww|d!QL}!&Nny(jD&=n`)X{6i$(Q?q5N`t6#|;Fg_XBWxvHP8 z`X}u>c&8?<`8#F(D|lX?wxEEqQc7j-M@B%w3{PRdU8@k#o-1@sY>@mRDJ%@(am7I6 zqd4^v24^furX@&;D+IJQ49&;{(&e+#VDl2CZs|}d3WgPR-sQ}7^=>Q zxL`BfBYXBJGA&d!1W)ff9`DT=l41L^cuY3Yg63UykZhA+nrb%q%R z4-%-@kTo>&c?=N%hRXfD#n3k}kc9xHGO48pK9UOm>S@J$v3v~S`Y;vp@U4b}o~J>H z=M);I7}KqidLd?=}MRhLor) zmT{@`3^`*g1fp`7lKo|{ga`p*?%v)W#;VsKM$0Se6LlW%UIta{dS#?Ijx7Q}^0N;C z^22Z@C#5Q;{7-0rmpD35m&Tw1Kv*F|sbFzF-_kyLayrxAF2Au+9>2-?K2WUjQ(}PZ zqllL!-Un1TbEY>qozG`GZH+I}-7Rm%3`MqbQmU_4lum2h6!$VzEGn`guyo;q{C)e> zw|)D?Am{rtvrGwld*#^;*ikmCIF(9HC9hdzps?yX1_~3LxR5i~GjsBFmC?6=C8@28CjAHqJvLc17FFB`01&IYd0FW`O( zcLY>B5eOgprU199>%QbrEEZWzWNm;&Q5u05uG5eTg@R6>KCP1{PqO|_W8A;lQfB7| zZSmu+_}!A#9*lLHA~62arAs<~{5VI~uZr;;%OxGygHx*s02l|GtODEi7b>+ihO6wg zp>giJwRbuIIcz+D3>v%X#A(-#!MJRc(16oC`|z#L`&{{4FK#TT`E_ikOV zM2Y9w9I?SxUN&yr2)nvyi3P%FoSj+JS<8aw*@wiw1f-2I82-vDuW0Mmt%M=p!C94hS6_WqPe1)M4^a_0frsgY zo_p>&8rLI_Ji@xWt!jP5+MCN0HT6EEqcRjn-L(Js>NC$g!*wlNwhV#@fkgEYuNAugA3&GYTTUZjiHi6b@?@_E~~Z5UJW zK3Sed=?Ik_Ja`Z$xyN_3W5*61IB)=hkSCx%2ptt%9gs{P_Sp>X_19mo^b4c7hDRwp zL)+XV?jg-KN8(_vyE?I#O_X~B+d}#c^VnXCjaDwYbu-&MAPVv#sX@l%$&(rKV7yWh zTV`OJ1_&8c0Wo|BjItzGb|IgRv%>2VHT|V;^wk*(L6wkx=bd+W4zJTU?2*}h9@_(} z?4+bNlhT(hPNrEyC6n2JdGhzH;dL0n!!+);!=VDQy^%&txycXe`K}SrW8SzKZ^N+} z6q#bDN&23PXB1$4cf&FcfG9|EvqMz*3sdZ~b}dWX+cP~jcer+w6c-ZvY9M2sF~&I= z6N6o1BbM+A9dL<{(D{D(*~DA&4bPK^tIw0yVk=ht_h=VjAjYCl6ye5tO1bYG|K-r3 zLobeWyZm;%Z>m7{$caRQj9ld;8ya`<*JF(}q1Y;eD`{yp(UfWeFy2oX?=anP z2&ofez|P$`Pa`l-jc-W$PLz`%rR_%43~}FJ42bs7YyHZ2H(K@zQc_|U>E|DM34*_#gM!sz{wt? zHyVymS2Cwm@=0>G1{vJA4k^EG_zlA%L!V)%;U|Xu$+#aT{)Z!=tBvKB-NB8ZaDCadw!&b)tG?s aUw#RY(8Vg7bP<;T0000)T(amvkrHAt3<_g2*!C=ui~aOsP|rVXANeMa7Jy0YMTHA%vyvgphyitW-};kt`q$Ubxpb3r&cz#?CH-sb z7p%JFC#~0Tl%eA&;fA}ucIvNw^Wq~g^9$$B>qMV!KtKXgfDnmBD$f4ZuKj19bI}dE zPIe{o>Pe=JhUIJiiBeEHF`XF;;1E%Ex#ufSyR4IIjym z3+66(@|l;PzVfCm=e;EaSiOGu%;$HGY(44JMY^e(*fUngZ+7g)uebje+n;;}+n?Hw zXMgb=p8eg+*gH{&DJ(2r+^0YL;-0OmHr;dPj2GbN&+UAC{=#`$;4-|lcLFcI@FGTb zzJNx3Jk~X_OE>r~*PVz*cfO1lcKjYYN5>GR919jM)V4o6^7xFd0iRy6c5SJvrv#~C z-`Et!_w7f$vR}@dH}BD(Zu`l+)X+7%4TY}m(kEBmxc2L} zU3bHbbin>N)?-%!E-0b0-X&0qKp&-GBLx~Mq`?3{u9Q{K`U zn*tHb&WTeA&kYepDTtx5iX1s$Kov2vlxiA_qXeE4AmtJvGv>@l0X}=>#zoXLNZ|X3 z(ioCb6pE!+e!Fd3f&-xSTCSL%5EO``7@-$}=oV>x*NhV&)nsSndx-o1TyW^N0ZFuj z3r=-P4I3N;evp6#5u}uzGfn`?k{!NRhwmrg93Z-ZRJXg||EVu@;Q(m87Sl|ZnaO~2 zj+T3T-+@4~W5x;a)jJ02I$=Q+#7J2Rjq0$=Wm-w?pW*;OJxc|k;DmN--m`Y zXnog=EP};M<`<#wA`TKHQ4AdvD0MGB{S!C7^xlhZ?!~KU{e0?q122i<>=RAXLJ}m1 zS~bA;P{`WP%-FL)`>fm*vELA(=RyVKc`ywMI;(r({=ghL@%&BE;`28~qpmiBSv?E0 zg)HLGM-&DKeIH5Sh|XEr&(Bx^{&{%)uX^Y9JmI^O2pUe4b$FEukcKFC6_K4i+sb!! zTeEuFp-UjBRp3@C2pbKA?iA+s_WVohJMaeLsI;|9x!Tl%nba($Oawibh#^6u2#wya7 zAq^9_ljHC!;|S~Hh`mYlba(ws1%DK9RGXrId%@Ko9(iTr%P`xzN_;gbo^m=mNS)Ky|>hC`xT5*rvJK zO$mIFz|?e@f`d278U#yMZLZJlD%`y8s(;w>PT#GU)9nVs1HuIc+Ao%USf6^O)aT zKN0yGYO4S5Yi$6(V*TBNkAk3YGLO~yH)|X?@cKHAqM=qi=g2Fnx+n#(B`NS zNWsy9kVFZSi^~vmO~?fBsxCsO0+uom#z74YAQW6kP$2*as7J|A%3Fmutpj>{dbf>^ z{&JO&0#X2yh$hvHLOnqw2n-myjgIcw=qzVJq(tIscx9>qmPSe_0zgs%(xPCHl7mnK zRMT+M3CI4&QLh0T@A>A(Fb&+X_R=pbUVQxHQQ*tKYanoZ_>DS(dIes+2CvpY;MQR0 z^5D=Rr9cZt#)e^=2;2&MuL{p=y>|+3wF2L*BlH8+9O>)p-Z_gHpTRV6^YFI!zAg?J zyluFnd;Ws2ufO}@zq$6Z^OxZuc;NP{KGfeoY;-NuJ_yYMM+}W~02(-e{S(#G_lz~J z12}lXKx`d^09G!GzdrlSb?v3XFTph^sDUF0`B@#E#s9qS((}HJX<*a+-(H`e)qdsR z;BfoEz_Q?o1V}+Q>zS-k=xqD!z@`VkH+c1h-@`#LG_))Q@EBeLAN=$hCM8utOA0V4 zK_r7@60eL;J~gy{`4jlRcns6T;GGYgS?uh)+B7Xq7U^vOE;;NJST%TChn_8d#ILvz z(jalhdidI#hI?>CU?8eS5C}p65C|qAqyUc-90~ddhqH;6dmK_|PSpd~>P+fJj0xKqdl25*&#F zt2Yd-r&F*GCj`gkGW+EY+$53P~mcJiOvC>H%Yb5EKj&QU_qPC_o{h9ai2CW+wyo zLugd5jMdQ?ufd;cAaoM=PK4MC;KEWanD$wq+M4}r(e#`e;y49M1bE89XpA(Dk%$b6 zZG~K;?zif}iHExM5{U#f2`Qyo8495RQUm9QE`bR1KTh(plvD$FRS!uJfDj1?!1sNm zk|2{S*s`RnGr~a~(BGVWH#E=nod7}IMdbR3{Qx3PkR%*_5F(gL;7r8`nYDP?>P?4M z4;TO;lnA`ZgmI)oLO|kBap~$!gN>NH$8!YSDF;dDsC@_L94rhFdQJKQaX`=rOyz=u zI>4WB?qsBBMztE^h=DVP7C0!VkdRy=>{1qEF8$2sSKsm2of}ttZ@La3l0v?^ z4xng}0F)e34Y+L0t?wGEku@|=;Z+@oAVQiZkRYIts;)@J)P6$5fRQ!qj4hQ54k$qX zs=djbN0fl?g;hFX^kl7gi%f-r(^=g9Mud%o4b;--Z|cdQwkjsrNC z5CTd85GYXv7t`LEv}SU**Z4lwd-SyGAYq=Gbr1sOeaX~7C{f4B;ut2+V9X0!E?7A< zG!VR|0F_$pPR=Yd^&K$gLkI~19h6W=ok2>eNC6PSAXo|`<oPkTC;#U$#fHo7yWRC`JLSm*9aA5DQ7w)Q6sWk}Ox1Cn*X-BrLbzC;AOddwI1l`IbTk1;8QqQI% z?gxB#XefBw$;UrIGd8GZfm%)K8bBB{(?Ds?Z1}0Y=E}k0k54mxmH!M-n;?}EnuJj8 z-{~oE<+{5+9;Uf9?epfSmYbwP=|@csR5L&g6UUvf=!x&DbbK8eA`5yKEVGSF3Q!2f zA$f{43XukZI!zWjI_bFYK6K5-`T-bs^4 zB2E}s6hewrISZ1&HtlrLg3e{HTSw^Dfn`(2Ek5R3JdM<8MFk%v2>bv})rT9#$hURr zBQ^it)wg_Y4Gsn&Ak$PeNyY!179|Hi*qZ;A2iJ^LoO^Q}-MZ(es7*ECR%_~>f;8k{ z34`DX-hT4izIE%s%Bk12Enep1ON+CLRmK?7w8aRK7s9VNaBBhFC`Gn8E2A~{#+5hS z`<=nf50($K8J2=VQUkCk1ON~MDG3gQ6@w3!SFXG7JA13{jhRxJI(~$D!-3ygtOXvD zFjDA^?OXft2ha(X$^=j?a&Sm+CRH2!wJfma)~)^Z(AhKLVTqY5l1AjCI#z>I zsUiwpq;a5J$(w{^@*Ss~bg}A4y%85ihBjRB$UDzC?LNs;urx)Qgh;uMIB*b5)zKKK zqCORXm=J!$BOoNRj|)7(xlaQ=EL-JMX*a#>*agL)+s2 zc=wwA_kUvf>APRrb2^I&AUGg_SW30Z69S0h2!(P9`Emgc!`mh%om;hHvVQp&ho367 zm&dem50D%}0)(r!IjBz2(bf6ME7lHQ?PP;@)hog>EE`tILfv=ZPSlXN3`yib3C}|C zq{)`_m;8G%vJ;YuFr=CHs zl!uYaK+6`b{ZV*U=+uxeXH)^?9H2VDsX)F^z(gZF&ogqMZDkOR!gB+-<5Ni723Xw6 za{-=2;Ax1YIm$GK6dXNs=l*_vF?{#Yx-g>ZL9+q*P7v|)kv)4)lmGJwx}Ak?>X1SM_d`fSq6NtXcoYLH0xP${X#@}n15Xnqe#_oXCNTu(s?bT6 zfHx_a3LbsOEO>s=No{{IG%%3iQnlZ0MQ++M=$yJ^&#q|D_ZVO@czT z$q6x>jfm4o*l``qt#Y<>B~ zm;MS81fZaX1*$5(38HDBlmbKmAfVC!DAey#Nc9mAsjM!!1YTX)NkUZ6XbB*=Ty(n7IRGdTI8^)s041`!XYQUkb9#Q%*FJCk=8ent&eZz^RqHx*tdF{`f12Yo zPG@OSbRDM~%J`a!I9tfPVwtwv*4FWhOfLV+OtG|WNL|=`WAW$z9>(aP)4_kG^_ zegCKkA@JvXsrd80J_5jn3w$ZcoB&WY1JI`dMlIkU4^UI%~q3T4cl#qdM`cQN1!0-6UTIH0(Q;9P>q zWFP=52bf799|dwTDB*vJBHg^--XbWFDT(DQxKd8 z_{yN@AqQjA1dI%ji&L8g%#72DJmjUh0o4oWJ|b#8VdvhZN_2z~2Qqy?vK1oU)PzLS ze*wLZ39+O9{}cczxO>9GO6j6om9duqp>crf1567@#({XZWE$yqh+NYU%y=6_s!@S) z%7&Q*{JoG@x?F|JE1+KlB`_VX@C3y(B?5mnB$(kUY6F0-0agY`oP+2&3ems+C&;(m z%Rv0e0Z_D0e+}bTe%&>33Dlyou%H2nBt&m3&_~S04#yOu<24)cUjW)ZA$E6tIB=H` zn%2ivgg-6xsx?Z{{4mO91LYH;go4mu!H)I7Y~2lXZ2P*fe(`VkV=e;VLlJP958=Ok z-*wquQM|ril-v>(?(4dRI(M(oBHs|2cI~Uc;^o|TGzqwTnWkL(DzBl=-z(hLcgwXS z!~^rfJTY${cHR%k#4I<;{;4PM$wo2p-mIAPrL+iqrb{R_n}thXw~GXy%Ka`R@ft4A zx?Q{`uRZDS(_#|w!aSk;E4|F)hnVlfxqwo%;r;McU!GsRa58kw#=yB0&h6U|`@j#s zYKfN~{Pq41UE`bNhPql&v^A=Ri(Hyop{NKslMyi!K-RXEeqq}kwk29^A@;$t516S; z{r$T|0>9(ZlpFq4UHI1zR4!hGF=GQTEEVksni1di?L#8^qXnZL0~F=zJ3Nd3apSaW zuS7|y4$CyrRM(B}mmm4D==s)$k$oRt9ay7i+BbBsI$PIOXhf=}5CN*H&|Jz$7ldt7 zYg5Z)3Yy!7$*my{S%$sYRE%fueB7C zYtVIDic>P92Hhts?+5V2sFuQNc=9EoN-qLI8~zX^2xZeE&?{%&2LRt(9r`=B$I~7v z_FNt)b|X;YhQEaRM|_g}#eVp?jZj-GiSMZ&xBTpbkH42NdEg&IW2p_&JaWE>d!{d> zKmFY`;jV{Pht>n2wQKGxpBiCah$j{PfQ?XP0BUIR#iL#cDyjm_r9smL+(fDesGbo< zZut$j&A$Avm)%j}uJ#2rcmpnY{4VG|9lF=$Xy5IEs;QC`HUXOJ{Kc9Vw&Mbpv;t}^ z#|`o(kqw<%BWpn?a(S)FRLb5ock$hiT)h0B%E#A)5%4R34P;${c!XSM)B&*5?cJGJ zszL}KT$+H_ufpfk;9fNmofH4P`agEALru>{teScZQ;Sn1JOMz0Yi^x^lcX>Js>56% z3<#SD0$}sEEyoQkb^{YGlYq!uFmiP7HPG1`!rQ&II2HH;Caj-VUR6_sa2QZHlBNkb z1|gAwmG0~tbpS-P?WeIb&G#iP8G~?%iGZq;j|1MIf^caOs%n>Epmi~xu0My&p?XYk z*I`D=sKJkG;yRWflOx-#<2|SY!-TM5FRB86$Svi z;9#(!BPSv-JS9-QUbrbHcuRr^%m|^V#D%H|;0pkL51_LbvAeLwb3|Da@i@?Vd;sy| zFWNTodO=EIMZf9_Pwn;ZOkH~mrp}F^v`j@&7zBU{T?aHxfzYHvVG>yaFqlk-ETX&t zNTpkj1wb3Vmnjm^U4Y9?ZQ))4Gk&9xH-xjBe~MhgOG|~Z z^W6)w9p;Izshxaa=S%iNGrbPRf^o3MDX@i&pkIMY13UzRHY|)Nq&y}SuqEOjyt7B9 zA_2&z@Lc#PoG~^7r~rl`kRwWD1Y$7-eO(rs-am)dx1Pf)@kr~-M(ev5Y%}zwWudG5 zK5a)@3*wpPtDwx>fJrOnVBC}tA`u`M5(xVMuSbDf2Xx&5Lk50O>lz`H_G{n@3?p>j zLS#_0s5ML>Ehn23NM_`o3xk6y&NZdbwEYlp{4v}-c_+Mf0?DL#M(AlS=C#qm50YnovQfVRmG%t%AN0Wdf zAZ&+(;k32|*~iEM86qAVO9~9df!?SycUzl^Q*~L?y>Jvq9{(YhrT+n6zj_bGm0ECl zWTtuOf}99_@iN~eZ;^M7=H}{7gX(tS+C^Ec@ji>KhhM|ir!GZvthp^+_A{>5gKJ>CVD4sMCp$TIVEDy;_&+S*GYiLBOELao(QuB_F8;Ugb zeA-4jnnkiNjznuWVlC~+_t#-owp$oj3qR-GQ;SuC&R>TiI)9ix^v zL=JcoOfZQ*aA4#7lgZc+7L!vk+FT|Z77<|B4o^1oCKZDjqhAUu%2+Y%tCsET)=bT! zdz*!kKJ9gB*!Wy0s>iyqd{HR`RO!pM7&cE;m4sj06606H!Ed}jzgOV31lI?)6h4g6efQp+yQu^y6zgtH+=e8VsR5WKF9UGMebss+W+0OWHPy<@VO zH-|@Y0kVL>)fbUrP@A_nx61-3;8ig&ki+J8hmc8?;laC>qO_z4FTHyLZ|y&gS9kYf z@;G4jR39df_oJA=U@I_fM_8MPt*3J^k7H+&STNI%vJ&c}XtLTf_Fj^*SJD+Ie1p(az;f&;xWBI7IdLcYoFow>Al1xosuZ zUNIZ17R|!Heerty=$~)Hh8sVHV0aF;9Q5OR&&2S^&pPnR&U0uu*^lTz99A|7#mpe6 zWpJWN!S^?%@csYpz#F?dNzei0Qb}l51{(EI@>v*}3~pT&Ab`Ahoj_MaUb;fguw-z| zo03waZULrgx0CQwvw6qg10EIc9ZTbl0}9qHzYL#UF&7t2sDN8{%b-+RT!gaH5?nf` z1~;!+f|i~EG&FXh{&YJ|oNY%#TR-yY1bm(x!hQ?W$NO;Gni_;kF2(!DTX49c5&KW{ z!L23`3EC(Q2owcXxLrU=*o&15#^UAOaWuBXQC8&UOyq!IN*8S#bpUAodNTj1Yz4d{ z>m{?_StoGkwTp4{)$=fx%$_$xCT!`mwrN096zFabs>hXLLUjce&!2@Afvd+DT`B}Z9}DxoCrL+4qu5IC6TZ! zY)s3P0t#VqzJ*)Upoa-GpAMKoSos`s*({RT9CQtsJ8dGlOgjQz3#1?kLOyD|H0l6s zs~0_2&-Kmqjj@AuZD!W)6S_m!-g^+HeU5m;h32wh(DCV~afG4nagyaRON9BJIHo z_V)oh>vJ!zp6BaK=S7v*?RJ8lZ9A2ruwZi(wlXm2UCuNd(^oYpL|%UghCc|u2*B$J zK!pxfvCbD+Hk&>Po=zu_NhOiZ#HF<;mJN~}Znw@O;ALx)W4I_Y$9(2&_9teEc0`wL-NFo;a4xs%;d1V6SO+gbx? zh!vq^<_dg!(*YFCU57J$2Ku|ZkT){Kc#eZ1le{-b`~AJ0)W<~8>`&v{KR-ZYSE3;r z#d!xb6OC;=hR5<8JQvM*JX%)$>FK9}p2KiS_1X*zcIr?N<= za znH&Sa)fWOqA-K+NMYi=2<}SJ%z40t!X$!tc85Uo;5=Zv!#6RSrJ zAwSA{cH`cq5nNppL`|uMFW@sGZrg@&MFEcNGM@`3Gb`^EVPjl4z1n|{_5q^C+HKa%TZh! zLNFMD+o!{=x!~0mcyt%908LS03l)mn2hcZ_h!_KyoW&rBYyt+B0byjIDzc>IPjZ`^ z;WF29c7E|>0`Y+aT3Y(Bv$4%+w#KxFLZK~TLiV94a zFagu2PY0O_$ZSC7#3Y}|Yzidb&7M6Q3zx1!W7^OiuhwE|b%vmPBr+53wq*JhkE&CeAaBDjAWof=NfuBuf$@)?xKopHh z8sa^@0&(E8vf81qH1$@ug`RqbkeKf*WK= zn2NG7c<;F%An2j~y5^`e=y%K-!)JMX9%!q4gic@$;iX-_B&&0ylzg7AK@upD%A^O`5zJBhCVghUxz2k3L!wIMs`@j52jI>Ug&!jSv z272Q-(cO=QpSc?~bLO$o?52_m!Yd=r9G#uL(C-4Q5QKlIH+U z4DyoyhGBDgok@S7`Me=Dm&=g(C)1?)I2tl@Sa{_s=8xxNo(dLP;Gf4akF3Z- zEZ}bi3zjk$VgNsE;lP&7W?5jKPzrqd^l3ct#1nY($tUsFTW=v2i-G&?+qVy|z4jX3 zc;gKjP$H2CuDWI|mfUe4j<)rpt8)lLg9#*JNhH~9lPRfzY>p_Kfej!KDn?mFrKCWx znBUR2H20ytX#$7GWsr=g5Tm&|I)+f!*28P?T5`>SfdOpUvIVcc`YQJ9*~6yI*$LaW zZIe82+_(|Pjva%p>kJOd#xk-DEc06h0QkeRLqkJmK|t%XXv}J8Zt11kK8oZ}97*=^7zxC6Ln2A{^e)DM zlPJl*=*EzU%YNL40i*BKFB(H%_Ylsu_MtK7!X4jylGl*&s;Q|7FTeaU0FVWiNJYH( z;)~d{X_GYb#ful?>Z`A2YhZbpqzo)0%Sz9i&I7Q2|NbL1Xgedy9SV7pqp6Jc3m4*+ zTW-Pn_3N>2-8$TU`|Vh>W({t-=_cHK^UZkw{r4r}Pe1)M_U?ZV*Zs}c5V>+K>YBRI z($t5(u0hgblqgO@C5VzTjYUbb(E*}C0%(Y=g}>3eA&T(5WJNrd=O|ga7JqTi13Wjc zA=lcwcQ0@^ag4w-xx4_lp)S!X=kn!dajYw54n;Bg@J%j|_sW@o)C@^sMGA zz=*O&*~i%5*?d^rlO|1K_h3Jg1VFx9wQ3bwTU%u$ra7>E`*uv8JQ*8)@C$5x@u#TY zw;e^@QAC1X_ycaZbuNY!nHBhQB0dK^6X{eQL&+>+ss|H3z7ltT>Q?-6-+nfAnaVD@ z=pyM(RaI47!AeCHuFA?vwp!M9fk*Dk#6qLLzn}S&vi`O|mS%I`bk9Bah({lNRJ{4- zo1(6+PLQdIbLY+pGBH8uiNV1^K_>JoM92#AJ#OXmnKNg^!w)|!$Rx$Vg9pVcue>52 zdhn~_uJxZ3w=SQZyJy9$?)z8G%KY=Svjr31^E>{=eYh`=;jv`q;yd5@j-Yt-Th|&% z%p3E_yfV+sJIlbbuuLo)%Q#Zzk-I@g?7o(kmL*hCRTb(0+o{6X8VafAH-6XSK81dT z__1KY0<^WYf#ySJXD52dw0pCzhL~M)>(e`S)Zw>W%a$#hTa$8P2FP$vo@7xXU*s-I7(7l~Bm^n)fF!LQ9 z9c(tzd-U@8pB2VCu{}k7HR_CYFt5{Jq=Zx8HtyJ56@o@#DukiI{OTHa2q9 zm6Nr%w=<$lyZ~#tplM!2_UCa&j~)e?AJcZ~_lehEfBo~cct8HY#eKLhfw-E-63Mv= zyzm;lR$*P{p}-IG#^0D%=DENN%fd3TZ2z0{0M7Z_3Dqkpy**0|q=|Uv#F{J+=hp(U zruaJ(3(Q%ejoQaah^sbl-n^3Pg*Wjbuea#pu{;OQH9Tiw9bR)J45usDKM*w^T a!2bXTD3|!(0FmDS0000aX%3-MC{_-kQj=qjGeX`m z8s;$M(DphcBF2VTNWN3=+xz?d@jTBT_x*hC>%Q*$x~@;6gWU-cL1{q%03c#xZFQFW zJ+|}k^K#$CsNgXGK&Z#Y%G@!WzL4#IO>$a_Qrr2#bcWf?FOYi3!dd|=VRTGcI6SsE zSNoH#n)!uCy2mTpr0JrMEglA!*4&fa8?smDx%srH!fvvxMP2)8E1>zq`}`M>bck@& zP}A17@0yXZEfp4zGnJF}{XyAo_4%Fm1ceWUZvMq+ zdJDr0oc_#M9PMsvSkx7{d^sb1^^4w%8XRR8#AN9G>FCr2 z2fb=p@D2qeC)Z3?2QnOjvy_?pN$d2%CPeCozW_DcxAUjwP<+r5e5j4p{M6?IXtY$U8? zE^fqEj^by@P~Vimjf77mAk_j`d%={)_JjTX{d4rIqk?JsJk2$T7%Xe-l?{1`7AN-P z!EIrfyQ`atR#xAqlyf@d&~CxQ!SR=D=mT%|b&fyVIk@smCfZ~>(J2c%XyphU56WCL znyw~$4YX^P6}G!IZeAV0OO8JY|Nf1UkZ{~d58G8$zilS|VY}+keCVqbUAc$x_C?Cc zv!{f;_i$mkCG)_Yy>4$2t{(zl$Gi)^U7*kRT}M2^C-3$L`63tc3YBqHZ`^ONCX@uI zE`08JscLTf9g$*}0{?6Jh$GAuXmXU`1Vk+uhVe_in4J}mTKSZ;aKbg0yYbKAhIj?VxA`U zY_gb;?LT;Ty&=pRd@JxHcsKRD^E&@ksGMJgfIU-Nx^WArchqsZd*W6-*aByn7aLTR z#`m_y@Jd?W2QBw53P!r5qeBW;G{x2NzD)6(6)nP%7ZA648x|A0i)Vw2=Mxzc>a~w^ zk8G)*1CeBSoyFa_ETHM>Edww65>LGa*;NbE&L|%@O*05t?5aUXg)E0pitN%5(Aw{n z01E_#cUD!6zkf(qS5(WPof)ka6MA8wUZOJ#oJcejj#A$5m3!4iwjTjtfvi^$BCnOt zf6FZBy|h;JbjXbMBcqXl_@iY<@z!h-uVN`GTKcAz^lO)byj4~B)09KGvB?|JSCw?t z3V{<``JT9G!sXJRF2oKoGKqSFK;3Z+R?dw#^J>n+me()-{ai3+7!fhKfQ;o*H*hgV zis-)FRQ4LHyKd_%AiFlSu;Ny$`m0pbz7fxO=$0ZW7&C~GkSA-&-*%5HYgn%w`M|Bh zRraQfXWX740(ioOI@frtIU>B-D39E4w-DKY-K1VYTl%Y%M;~qGLf_K(g~=h%#RXIP z{f6T3(=PENN<1$qGpqv8H5Jm1A+A;LZ145im>Yk_AaiKuC_c^@KuFu;V)zc)gUmX7mYUM|;LgaoJ!XNR z%=`=?f5|#?%cObHg>-`sKhg2o0An^-;s4z#+G?2hiK|*dPvw%sFt~AopT19dE1R1{ zyTM5nEjj7H!n9pZY7=&-hT>$GmyQshZldptKqNE&&oONhP~w-6huvd_kA(d_kePub z>NJ|*0(G-`!E|e-Pvvc1F(75`o+N!o%1Z#zELxs-@e3)JVlCW=UVA(_)>ELEsnMm783xYc>mT zorlJ)ie6rp=5S`c!u$}U%=3>kMC?0fQ}=qnx|w}G?_Ccc7FoS9h7z4auNLK5cBjf) zc6n{7O;t~NqX|xspTS`Fg>&p@?4{ltR?MRr{n{sIdL|p@Ua#+Vj^|=~cW$j^2Wwc{ z`<6>d3`UFs4T67IYsW(zBERl$D8x@OuqS7&T(V$zRv2Ryh?CPV6T5TRrt*97%G$uc z3HYB8?|Re4eE%i+ks$llylDC04I(f0nzKTtAs$uCbY__S5TdHp&smm#~=9x9;LX@9AD#m+! zSo?BEzcKCnc9xdATDqUnv-gG@Z#O)b@_Je@C|ue{OhDql0W|SAiO+YWq|xn>gal`f z8)turf*t8$tL+Yj#kza%6@2Y}j-EM@;op7`qMWuAjFk#pAAZ z30_j%KjLS$WQ%-VTD5OgG~m`ryaC_#ocvN++LBN|c!0(V9@25kPj0G)>z)FY7U+@h zEvUL@;Gj0=ZEO(|!!8iqoo9)2%>)mw`=;<{9 diff --git a/public/img/emoji/angry.png b/public/img/emoji/angry.png deleted file mode 100644 index f95bfa897ed9a5bf105a66a3e962eb11d6ccd1a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5037 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񉏠NkvXXu0mjf DY7tX_ diff --git a/public/img/emoji/anguished.png b/public/img/emoji/anguished.png deleted file mode 100644 index c62594726df27dc216ed753173b576578522efd2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5091 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%0DKs)geLg#mZgYb2=M=+#wT+G)M zgXQ<7VOWX`CjV#IUb^gt#aBVSJxH^v@N}kpSF1U4e>uSQY-efmuMYZ3kfCOp}#WS*?7FS?Si%c;|r*dnzMwf5uB;a@6CE!2wGd|)LGdbdfZzYNe0UCBSGU=%y6xSG}?qIqHn z;XgeXa0&c%^CrJ2+&)Ybjy41!JeOOFeLY6mPgpem5OJl8Dzv2cRs2W5+~{jD73WpsT2 z$>=HH#734O-Y>I5>_(rvZrc@5Jdx2v{Z3lW7y_a7d1v+P59E*=m5$Fqa2y27S+5dE zI%m81$IQ{O1BS|QuS@I>Tts5zn7nqXd8vNxau@87(72JawI!`Q1=cuI+uWfQ>7GY` zvrh=a;&}K^2cUrK;SzJEh!!h3$ERGB-`O~;mcJ9v6-P<_WRsSqDJho0%8=$i& z6&OIZofD8_UFmt0v&{32mwieDARlyFEa+{u@vru3`O5{O4Fy|aU8!rT3Fndk+vvt|1-ineJMNy*KLRUxf(F}{eh*3`6N}^|BCoF0yB`z9 zr-4qoH=OA#1bi&9J@-kx9pwAS#0*DT$2|kK7RX=7D4VZjlcx!>4<`>jsiK0sb=q#U zo-KzqL%1>So_c6rj{fA~Xf#^Bcluo*&5=F>Pgu^F?%P5fzJd7~GmFB>oB6UAq_XIp zT1wYn<4@r5g_6pv##_}6O%g=6+%e{G)jNS^a(%0UtI6!W?(JBYsJMb%hO{K%QSKtw z^@cv|AL>OO-%Z^HebULmwfWS&W}TaIE(Y+Z;iOmiK+;frKsVN(ZRQ*y6z#9gCvo9K~TRu1%k-Z^YEco15UC*Om<@6B(M zfg-%ROF2!&oO2#lsfW|b%XAXY!=>bYZBI43r{)Zw*LjZ%z7$KlB?}x{XyLIwLw8vM zL0l-#Z>#m{h|#`8q=-M3M>dv^vKtpuV}>&ch%0PkWUf7~=Y2f)>UwMW zjU1?-dvR0;)UVd|C0JicO+q$_F5lDRhNx|iTZOPPM|s`#xK?h4#2C?Zx4d6Am#0q2 zXfIG5EDZE+&~o1UZdnsrGY|nZ38|3peIF3-)d>HXLkd3CKm8c6<DnTwfIJ+pT(D7TT2f%}qR7Z)dGXw( z?bYE6aCG0frTRFyU10HfEUYH~XZt!3lyT`tQglW~^jSa#slM1`g}$oal|uN>x~TUu xBj~{vM2Rk^M4ja)3-RY!!xyH(X7rb&B-}zKjEx_Uek|_*Pvlf(D`d<={|ncC=hXlJ diff --git a/public/img/emoji/ant.png b/public/img/emoji/ant.png deleted file mode 100644 index b92d1cc14bde3bd6bb43ba03416719cec806d803..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2851 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 Y3w;ooYW65K8~^|S07*qoM6N<$f{_iVPyhe` diff --git a/public/img/emoji/aquarius.png b/public/img/emoji/aquarius.png deleted file mode 100644 index cbff66edcf3c5308ad51cd25a8168158934747ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5096 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 KMNUMnLSTYE$H1ll diff --git a/public/img/emoji/aries.png b/public/img/emoji/aries.png deleted file mode 100644 index aab5e8809f5bc85e0a9af9615a12c3945d464f8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4343 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 S%9gYM00007 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 Ksl8UQ4gU`%ogsbz diff --git a/public/img/emoji/arrow_double_up.png b/public/img/emoji/arrow_double_up.png deleted file mode 100644 index 2bd6659b142ecf5dba7ba843e762639fcefd28fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3611 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 diff --git a/public/img/emoji/arrow_down.png b/public/img/emoji/arrow_down.png deleted file mode 100644 index e6702f02baeebbf7d31c6da3a59e52002a574935..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3006 zcmZXWXHXN`7KIamNQ=@tN)ZI<21P}hBp|&v0f_`d=v6Fqq97gVCejH_1R{hY5=x{A z(veUEr8iL_5r}|K?sew9nfK$I^Y5EIXRp2XiZwOX1v3jU0{{T9-c6|apI7tvFoOQv z6>fgB007GqJ*bxDgQ>6BUp`zD+}(qlq}vAoG#IILDqGhK29@HXce}xjvApR8Eds^T zk14xl3|Yqt6x6%pj(`~>lu{|_LcNq!Yq@e5=L@Y-PzA=3fOA8-^D}I2)83Lx7h%D_Hdr${ml}iH2P`%1^{!xagDN-~CD20WROcpqdCKPdL4YF)ZV_ z23TiadbLAy^8qo#a^6AzN&I^hwL<^V!51*)V9SfLohwYimIe*^?1o~)8p4CX>R$v| z;XqDu8>6)%T38^z(-g2Z_rvq9S#RMkuZ{I9g_ph~Z&Nw^GZjh>lf%%b)SD86!aamT z4~Z8qyvWkM)72{&H-duyKZpTy5gcJ|=@3}f|8TD2$$*55j8w@ztG-p-`TC*Ed&cW$ z1d2vqg$8arpB=v~TpXRGI!2bR^vE>Yd+eha!C(ld6Sr+=4MIimp!Cy)N*O+5lUr&U zT<`%CQ4)94SEPyw8B3Iz`zk3ae7Iz6a5PHLD@wTe0tgFqWB+aII{BHC*bd-P zj07jZ86e~W;H`Y7DRU5fXL;poQpY^H^Db^tO15yn6GmAiZJ^o~N@*{(7fn?5ZRx7n94KH#Xf6MmvvRXG8a#OCCBxgcOr#m-$ZHkGDg{g0sksyN8^<9raTu+BW*5tDu1!bwY z5~itqrG4e6oH*Mh*K-xjjFJ$~pUCR~R2s|N5J2w7lsP>hASH8!#29fME$aahjBwbC z2BG-#&KGyN08>bg&+^QyGVE-ZCNb{U04OXW{7)n22{^{KcjP-2x$jrgnyGS<25K5_3e@ zbxG9Y(QdS^6SFtCT~;|(nb2#3oaZ>EC3@VdgE5UNOM(Finna;QGFd41)$^W68doOW zZ+|XDFGD{g#JXLC2c4vVSwJ9oTed_iH%$m2XU@G+?g~7^((+&*CVVE=U0lnm7IF-| z`km#Epfkxe`e}5M1J!hR+g5nVg1kJ zpv9O*ddn)pr8VAvgk#o7gpkI^#3Lw|2x4M$~%|u1jLIXXPjm( z3T+PMD|#tt8$?{E=H?sn_}eh|>B;kQqy&@XG>^kTWROz&o4In>v&(j*i;h-g!+$P&}D8OYbz2^Q_v?> z9mkaS{X=&B6y3i@BBR`rZftk5$G~dt>*B(_S|om;qhqa1<6PA%ktQ8Fid{Eb%l+3m zM-NNlXH_TEKDZA!lqM0`k70F2W2F>{kPa2TwiA*yiFtKo<2#0p#Ndh&2Uh$TOFWrM zcQPA!V_x>)AXu>c3*qc≶kvzD;f}l3J~%-Aeny^A~eIr2Tvd8Yufd{kd#8sB6>+ z%{j_YYT3?ak1C{2eiU3}0=fCQiOSthZ_|%2D-#*?1q^|_ICt%&LOU8haO6QaY(4Kn zZa*tw()83mmsSo6_C7MrK04462S0jS8)R~pcx*2zlXX`L%FQxhs13GRa!y|?LN*ys2vAk zi_kO*L*DhG#P;$>W6Jk5D~0)|6a5w^%kV8(6@#}icz|VIlWb^PRzZ%aej|Unr#8LS zl{8#Y!H7jR$s2cC@Y<@U!To{GqQPW=DQTxY5wxc{%bJ0+e)D<0X`%4|o#?KmXqjHs zhH$lekyRAdWy9;V8+qGFHG1{2*r(TxByP%j(}u)c-$8G4WZ0#j3Lnx$Zw(8%9GFe= z(x7uX51mzWFeQPiH!P}yFE(&`a29(%!_Dp4sO_H+9i0yaDs{%G5Ao8J2@u24jjXy~ zz=fiSwS^CluR=44vl@mzK~!)bvESeKvYo~Hji=>l%YB>PCVrSK*V4hN znZlw{1-?^l!=rLzzDp&W;`T{vy=fT-OA#AhPu~QzwJRdrg`;&BerL+ z{>5ulk=T+%z65KWy_(y7seWwK3z65m&F9ri>$j%YAYr>AE#gUpSk*V%pof`93xw}K z{2yG-d3~pE9U^~-WGNJ7M{5K9ucsla=QK|j!tJ0rJY)n)omV~ZUbZ%$5?+ytf1Cyq z;b5M{Z*fdu~GZ(jm28kJ#Wbnx96JlA{?S9mY66nJvz4S zM}sj@>VEm;qfFO1GCGc5aNC4L;01 z`%+)yL@z49aaAh^?{cmW0h_*a7m`iM|7W!x+dLoRgO;jDl|#fC=6HMkMr0#Vrg#RS zLmN8@9y(z(1WGJtF3_Cld?PSu>hsEHQJ&!th+nEq()gZ@)m=umQ@%oKwCU4b_B$qpckK(2I=fXUokFGs&LmNITwKni}kHIEY&_;08!h8vl&v>A;4A{!igW z_xrzckX#K7p8-hNdU|0hoL*cj;`DoMQC*y4Ia-Laq!| z<4wTMdg=Wbnp^)uLBy)^xm3M#LR_Qzwyb!CSf>Bxh&wgEE@l?0JKF2S7l@`aR1vEp z<6SFGQ|>9ZTzRlF1sl{no5%_tE$cHX@_uGH&&`UU%dDcvbh~Ec4%dDU*$$ z=2S_zQ@(-lE*s-9NtGqRQv%p2L5+|i>gKT1<(x+=<-fy1Tuc_2$k+fE-JcOaS@;P- zz6G8`bw}-IOXOKeI)>{r~^~ diff --git a/public/img/emoji/arrow_down_small.png b/public/img/emoji/arrow_down_small.png deleted file mode 100644 index 22d383a9205ca11e50fb302316d4f2415f1e78ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2889 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 diff --git a/public/img/emoji/arrow_heading_up.png b/public/img/emoji/arrow_heading_up.png deleted file mode 100644 index c8f670a1ef0d6507b478c10aef33805db936a958..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3520 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 diff --git a/public/img/emoji/arrow_lower_right.png b/public/img/emoji/arrow_lower_right.png deleted file mode 100644 index da8fb8294d91d46426752555c1b32e9543f6f4f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3334 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 diff --git a/public/img/emoji/arrow_right.png b/public/img/emoji/arrow_right.png deleted file mode 100644 index 6d483b5144f38155564201bb77b7de0921c23de7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3022 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 F>R*r%&l~^% diff --git a/public/img/emoji/arrow_up_down.png b/public/img/emoji/arrow_up_down.png deleted file mode 100644 index be423de78020a7f0eb436173dac2b2b63b5a2dee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3542 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 diff --git a/public/img/emoji/arrow_up_small.png b/public/img/emoji/arrow_up_small.png deleted file mode 100644 index 3f40bfb89b2619f143d3bcaf30b9f0acc42961f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3185 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 H4UPK`T6ZUK diff --git a/public/img/emoji/arrow_upper_right.png b/public/img/emoji/arrow_upper_right.png deleted file mode 100644 index e23790ba18d5c2cf1efad64293af7c131b2ff7c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3235 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 diff --git a/public/img/emoji/arrows_clockwise.png b/public/img/emoji/arrows_clockwise.png deleted file mode 100644 index 5f84d7e72b79e1ada173447a15f44444dcc1b5e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1399 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 diff --git a/public/img/emoji/art.png b/public/img/emoji/art.png deleted file mode 100644 index d45212b0340418f08b4c2dc74bbcc9a837af917f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6744 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 k<6{#~hgysHq)$ diff --git a/public/img/emoji/astonished.png b/public/img/emoji/astonished.png deleted file mode 100644 index 858a83484a8d7dcacf867dff9f7513f4b4a668af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6043 zcmV;M7i8#(P)EY7j?K_=&?wR&p>w9nSvp0 zR5wBi07czdnGo0^!g?IPjuq=}xrLXm6mh(PPWorh+54LjpId&bJn`lW;OF^E=W$t~q^`>KgdL_kBq%v_DIgeJi8=5z^uV!D?Dgbg zz=7`%1qgFID?oz^Kmm<0+{hEy&G!=TT!*X2#C46Gh-i;T)6KeEx#U)^5fORg1@Oe5 zJcrJKBG(lv=KQcfN6=+3MN2SmIcC|}=y}IOPylIzSd`NI{}d7Dqa_D%6Sr$McKwft zcfE*h7~)Aww7X4n%HA^4;NwUCkg6Br4G_SSUwbC=dwaRH)D@f*4(13dil97GFFhT- z=xkKJ8(b3wvlE@#SLV!4kN~=Xv?g$yW<=O<4{@zcJS9Xs+terH2gb%Y@5sB@{(3|R zUN8CnUhXXPg~#Lv@|X$)Jv{`6d;qiHBrpQH4cg!xhuA_C0|KvaY#?x@{wyHonZ(tvjezYlLCQ;9x%oEnm!nB@4j0RE&KpfdQ@Ax?wZFeQ_f@ckU*N zB04+EELbqaqQ(2uxBrQlN*{XdH))$u@+J>(Oh3_WGrs(9zk=ibD_PJ!hWE;qSN@^XyGD)EIe}2Pdlz zmiQaMhm=xoZzAY@A^+m}TvqHf=Y{ifm~KO9Sllj|kJ-`<}_eGw5WHqKSL0lOL_>}sV_?Y;b_zY;z;q^v9M*h)rII3JyS0>p$?8;H-GK>Vv`NG#8V8gR7G1LQt z2hQh!T!r1KC? zJNsDv`-c~D@QOjOFT>PBu(JxzdctZBqRNB4!wN*z*}{l;febylPEI`GKu-LfEBO8M zFQG9xjCB4IJ-!taD}o+NaoVoB;@$TB-@ldbdnIMB5#UGPeD+wnK6aRTq+?-zMQ*4- z*cD)U2GIMRit1SiN}#p_Tnx%&q~Da{#SjZRfbtNCLdJ)2+wQ}Tj}T49w0AU_9&Wwx z&1dDEUw(o~z>0|MEdn%PKCq0l^POfz&>5hMGstUHc>!pFiS>R!wI^=D%HEcfecKBt z00pv_hT7Y+5ln0V0dy|)QP)RPpA+Bno$-nfEQ`;c5#W1(0CsKxve8$^^^&g?)Wt!k zL3ae0f=1=@s6rRYH2?>Ab4Ek#vRcg^EQ|stpgb|h-0d`;yl-n|?skFiE2(YfixLZk zuGCi(wQwDY2!=}4UVL1y{NV91Y{D^%0tn{N-+W~iM;1%!Xj2Z*1%u9MRIZ590oVp8 z|9&Ch-upIi_XC^w{ADN5*;9nJ1;}6&aV&iK+STkozrsZyd^=bRZmymUH{JXU+jma$ z**`lDqt)!l${8ld8eDbFW4!0&MV$KXrO=GM2rBV0^;PGh)c1r#u@oKsl~r=&yYA#M zzyYr+fCkK9S)Un}O?sJOat0M>2=YJ-5`h4D!=u00%-64f6l;Yqef=Rm_sQew?8;{% z1Umih?`~MjBadt(ve1!toO|}cS(}U)x8J^wfBe7e2m`pTAbjFajzDV#vBS5aI$q<; zUti6$>vr+nbK58v;Di(QgO<&d4DyN3sqeOANVp7^ITPFyfF+ZkV9%v*Ne^MMAn#J? zO^!i@8WkwC3Ba|ociW1grSn*R$Pl%y+ZldogscDdF+Tl?BdB!dzzJ~#e}B_Do>)E1 z0lgY2RapG?MX4R!9s)R%ez#=N7F2zT#~#~=QI?Nhd>BRnMo}GWbM@b?<>gJIEbM{G zf*}T%4*Dfl005o(>H?Meo^mJ|iiP-H3AdNViL+?{de5cr%A;74FQ^r!XizzWP6RLp zu&Lu%k5-)}3xq4acsh%g&!?{_Y}q(EtbTl$d1Xy^e~C|Bbu!1i zJ%rjQL=zB=drTysCEq1&lD6qPkFDO4+CbV&P1N|>b!!;jG)8YxShQk3SNyNjSu)?H zzIeap!S06xa7-8$?ac-Cy^{&p4HETy0=rEMJLoU308O!@O!sZFk8j#sZVDnZEp5M(S zpIOFt|Kig2TZ7#hYx+FJbC;% zQ~=lZC%2Xt00;x@XvBTD4by5k0*pZ{W#8-6f~a{|V{BMK3G4I<)u0Z*5NQ^E}hGZM1}&{|PQ2OhjJ|KLT);6Q_Q zj&I(wo5$AFsN_jE9%o&;g!g}H8J!DC6tu8$bCavTy^Cr!f)K#XjgX{G(l&jkV1%yy zOPu?urJVJ##h6l%_VMVN8rR>to7g(gq`u(&A_cw%k!;tVaGQG-$Ue|Yfsh%&lSQ&r zfJmxnyD%1c1|Iab>`U`mt4MpfyG72A^hq$4SxJk4e}O@1?^!h^Fe-k*1_uc>7frXSCXuLdgo&{n@Rh&a?j9BHv z$n9}T6Ql*JPAjsd*~3#aB3yWRKg;{;$c~nu>mUlfjB?PIq z80-$X?5Z-Q5Xy}jhyyb_|8>PNfBMM+jR@wsB#L4%DvM7;D)7PmIX-uF4}%2=M`}1E zi)!)x3y2fMSi zCN0X7Qa)jz1yLZihC+49Y zDyrJ@+BLjR#~xU_qRZ-@K04?&d33>e>B@%6N*0FEZB!v;|_21PvkKG##akTC=A>mIx!D@o&TK;pGeU zML|=vZG$cdh{{L;%pxwJ=c<7`{Qb?sj>b|x@!89G+hHr&Z)lL7o*v>jMk_esznzMp z_}+C_bJ~M7PCi9JJtLYSyEB|c+6Si-zzQ}7X$o;uT*3)x08zsA)qWatK>eCu^8DDO zJZtL?X**mb;Ih$8;gcIWtv%-WEQHD3!o80ePCfH|?0>+4bahtf=;$Dy&(EMhxm>2Z zv%;Z=AH(6tpTg}w^~BBGwlQ;jru?zpkG_iqX*q1ek#I>k0d>!j*Ak#njc7c*P41MM zOBM99266a~@aOG}F#b7nIt%~d?J!Z*R4PUCVMs2YC(PwhN)d*^4D#f1GYA8^Ity&s z3iT;GQ8KYjR%5&mzE(c@;Q;GHza_|&BjJ*8f)sAF-Cms_NZ z3S9)1(_jR=(wTFRoxA|Vw-GSVXlwE+;{G39!TT$u&@T8q5XtHO-gA{(pu1KS{;jmMV$#J(S;Q~~F#=iV85(85kCYgF{ zSZ+R}+x@la(6}P#JP`U3(611{L&(-+$&S=o80b*s!y1i|=b6|FQ4HP{jD|3PQXYni z&{0rG7F{4@bKa%TUX&ClvS*3FHNn;dJK;z;BwQdxJoi?3b`;criI3jTgRAGeweu_X zNL5Os03B*D3gt)Ji{UXlNumWED7p&5{GKG_!Ac5WJRfgrx(@9yBahD3d&qK7w(fi4 z31aZ`o_Nx-bGKWYZ~!KN+Uxmov;|B|HtD+IX}SJ0o%VWF)CHASgn>gF4FRak^GpB$ zge*})kP~ttbQPhqkX;MP9$Li?b~%_fV7v$^1b|tj5e3#?f>>}(M>H+OlaA(?Z6>}? zHmQ06S^#?&Ad7-3FnaBiY&dD5x@lF>UTX3R7iv`CAW)Y!y|d>UZ@N~5(x2Yx_&lEU!H-}D8DU}%A6zs17zR!5Hp0-MwesAwLFodk$@Y*C9Zb z3%r5i2Y({}=gza;yg_5%fr3zjG8%iBo8+ArFM00>1+2ObBXl%rT0W|1jjyJK8v>sFWelK1gC1 zpM=Q>&i#0vp?Lz6DkCqvV$_Kg(gN3T>By(#cP8ZRbBT{LzU}~a0TT%aUZa@LfBy5l zR+;%ezUr#09Ke<;>gk<4byB}9>CiIYFGVQH<|+8($R63d4Tl^ZP?{gGd9!15w@|AK zQ+24e6-1ZP#68Tou&R{$pQMbaKK=CG(kn7IuyE~Ag@q?KRpKE6#^~L zXQ*4vrj5er4u=V0Xn)Ot`zuV_!lVPq!krkz`jKx7t|>@Oi2XVrjab%iargbvzsQa2 z(~(axA|m4e|B(VHpa&QL27%5Wy-)w%iA&|8VxK7leFoF1FlCJ@fJ#Kj;e`OShw?W< zWu4XlG#yM!c2!|hAP%4C{I<3McG_X9LOf<^jN0a-8`M9X{m<@aeyQ6DjQG%(H{x%F zHP8k0dm(!N^e7g8D2_?8l6N!QO^KWn85$i6aa?V7oud@9>1*Nud&iB z-}Lj{ukm)wv3-YId&3&}?l;!(5-{e8j{=h-;@;4|76&RopGQy8P`UmLPCRL`dS7?H zUTnHFrlQd$g(@mc4#=rg3=G*JN@e76f;hl>0a}7>gERzJ7i`U8Cmj>J-Npwt%0FLv zH;*gg;AQ zvK^uG#1S9rKICoPrR3w9lhH9*_t?vF&tE>klUr-l!0+&2+>d(gP5&PwN~ye$hEAZ{ zKbL{v&yQyDdk@k_FYb|}%M}*oiaM|J3c_?Mpo3RNfQto*0e^+nZn#!$icK5G)ssK{ zt$Xs?C)o(ZKnK{cp9jC@*Xs@`Tk}LFk6Vg3(?_G z^1>8=oQLsnSq*>&EWY+=do+QDCqJFQ6OZ4L|8LL>kp~JMMIg6_2-??VzydBK?*R>< z>Cu`+{4FKG?A0RN1A(u-09h8u1Rw(9v?haOj`G$OVDGsi+Y-&a6L22Z&+Rw7{6EIp V_SY1Np;!O_002ovPDHLkV1lkuqwfF! diff --git a/public/img/emoji/atm.png b/public/img/emoji/atm.png deleted file mode 100644 index c2846e792183b0957c0821eb27ae38c4dedf4c66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4072 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

FaiGu2c{r}tl%wD00000NkvXXu0mjf D$EH4e diff --git a/public/img/emoji/baby_bottle.png b/public/img/emoji/baby_bottle.png deleted file mode 100644 index 1b2cfe5e30142e5d17119050a1ea452a33130e7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4461 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 diff --git a/public/img/emoji/baby_chick.png b/public/img/emoji/baby_chick.png deleted file mode 100644 index 9be8d2930062b1e0c798fa553fb8818aa6615465..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3961 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 TgT8U(00000NkvXXu0mjfnE9w= diff --git a/public/img/emoji/baby_symbol.png b/public/img/emoji/baby_symbol.png deleted file mode 100644 index 2e58725cf56563837391f3e9e0f2203582095a1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2967 zcmV;I3uyF-P) zeT-byeaGSF+&eQnvuk_3w!w~H0FwX?kN|ZYprHoRhys-eNfSbvDp8|W)M^?&^cMP%uS8lTV-HtTgeCV(P3?$>M}k znmDXvIXSgj&9-`GU6%XFH4j)9n;fzLuKvyNu4~@zlRceQ%K1erJapUN^@(=XEn{2IV59gknlsPK2}| zBnbk+t3!k+=DCMIY#9nJ^#G! z8FbHNR;PFN?(&AF%lp3gU|c`t4!HWQVac)Ge!g^}6X(yPyUeV)v(3KXb1HAXilj(m zA0vI#2Fb>VxmT5tkake&rfU&}PV&0Z$8Rw3^DlUD_kh7FJ6>RGzb!ilUGU`xV{h9I z2u-fLz>P~^=fs7_&{JXd(o^+ZahFh;FK+#j*nbbBeL_|v%Lq}7xmR-ygpd#eX)2~A zDvN}LD^<=|rF`hr^X^uI$=^Wv?r{!~~ zj=Ffi8*ZL-30(D-P+UIO{ihsn`J(ys%r5Hr-~*D8ZQ^5J7m8gJ$_S23B8{q89}&*{ zq`Ygfz5jTQy#sZ9JJ|S~M;_Vj+#4Q_^#gXmDJ3iB&a`~?47yTgEWb)p9}(C6g;1JB zQY4Rvj#!cop_pinS#tKZnht6||CXkc{cfiWS%Lcw7(gL);s42(DbFe?ExlNL;#)#m zA*96IQ9($Bw4yn7rDY#fe)L9NwVI}z{-U=}8o-PWXLgn-7bqQjx-htzk$yU69X;{@ zX-OFAr|D3df4cI(qnd8Iiq4pH6D$`jDi=u;($0D8dYrUGo;xZ@OPUVS$~ri+$W%W={GLL@;F2#tLd zW)LGH0L2oOIy<+p<{5TIidbCYt;^_M$Z#ZUI3mb%O&3WZL5NHmfFJ~ffZ8yn3V99) zR7%u(x&BGk6*==gyy-U>9OR)#_}+hU$>UtHf?5yt2BO1C$TVGqK!6~$zY9dvt7LWZ z41vxPyB^~U&vVgg{^^U%N&tYZd-&)oR^P^_-$-E*wVK0Az2y?8dmWA$A~B~}V&EyR zd7dw=;rB0cK$gzoj$8TCd3^Jue4;=y_b@MqNX#&u03sr?3;}!iZZDs@y(Qm{&-@t! zecb*vE`J*hhw&KAh^E*9`MA71YgHj*-DAA*5BSh!rp!0K%DaC+|9W~(CCeNhS{~zG z2MZvM7l=9a7uk;0*O@kd_;uD^$@0bl+AtvvIge_Gh8FV+?mYnL4_*n8KRd*Mphs9(!K*g ztdEgrRI9xHR4<9n633pv*cgQprG!eA_0RAhV{AdFko1t%NczyndAMXD-3u6wFRvqF z(sD7?4v2^t8=!G4p+HyBOQy3zV}uTjZRh&!^e^B;ALoWESav)`z}_lrALPax_}CBl zKtFF^#z>JY_mYUQzv78oSh<>$E~RHF)gg91#)g~u)lEDw#E%Nx z`wXWZ=a6v4N4WV;7T2id)N3@VtybPBNi+y8y-u2mnYi3%j=S{g2Rr66&a8 z1|GuN4j$Qf=;Yx|=kPb!);BJajtdJ26Qm(d^qS6P2qFL=pwucE>PRpT|Bbslcxn@; z971`RGn@G{DGX6W0Ra#I8FFNk_)Pm4j1EjdKAyf#`~-J*vS|Y+9b$P%a-JSyBZ>$U zD#0S0fHJCxU^>U(gq8^oPDCeuil0?@`j@=n(946-5%!(Oz8Xmi0E9r6@$j<@@8G>S z6{8b;rg#}@-vJO&!jrhClZ~&SJj|NOLu<9=mb>`i<-EVfiKtDO*fys?`#k_4Aj3WQ z$-SI>oFjrOFJaz&eE2OKH{mEW)#m{jG6yHc4xG1=m1k4#;cAr;;m8Wz6-Q(h>{5)Wqdq8~JLD{;Nzr27> zth=9o`BQ%HZ@uE=&roXblsFLi6sw3Qe#}t+Br|^xUt39zPITknzs+r{yrK;D^W+*z z$i^Ljg9Q+gPoq+d;kp&<+6Vyr;x?{3ALv9xz)alncYO8D{OUo6oLx`1##2Rl0EamJ zyTIf`l+oAE=a+Hvx%4cd_Yt;iri=;z0#fu~(-VB*Y)(9x1*cJ}kY@zbM<8I&uXyS{ zGISw_>D&b(vhkWS6*Tbp{p8Imq7w-+KmZu;1R1t&V)G_)FP{`;AVR9!405lrvG14kR zaMTk5<4)vtwMjdmR<|>6kY~gknb!m{Z#m@+YMI@W2C%noL%r_Oyg|%}j{Yu)k=T+~ zuQO1ye$oK?#@stP<`az?d5IVZ$!lZw8#S74dYg`u25{4}9(`N4^$TV?t=>T?As{$9 ziO6#5b*f|R9~G- zfxA8OoO;IC7=t4`H=y_CKC7Be+p#A$Y5U4d2w@Sr-ZRg_Kc4TiC-k_myOVO6LfWd3 z5F8mq#GFRfs%n+NeLTC@&;EXgFaGlj`Y{q?>|<)T!5vt#|A)=`lW!jHqUE#w(Xn05 zsB};&kS2uCs>43>ku0ayV04U~BYyG7fbV?lIsXZ$W5={!n+qXyU?GZ7B3Zq}S<5O` z%qv>fnVMfn6%vP+9F0t4UuMS(bx%Dt>Y=anT2~_n)X^Vf9GiLo;~^9b=bU}M-~RUg_IJ+utrKT#s6|7`N(le}jgGda>DgWF z{3Itmy8^fBEdYS@va5!Mv5tlY%-9F*?CRkJ0P+{2E#}eF<_s!vXww2FRTxq$CjKqX z!pyp!jkTf+tdml>rOQ;fF(Gt$86g)}%0@Q5@w&_?I6@A5LZmiH0?}5wL<4pRo;+x+ z(J_k=D$~&pUhjll;@bjQEH?T(@SAns-2c(1Ft4ztxMn-8sch%^Ducx$Hm$red+_q( zlwzjTX9n>j_%S__vGNT=(T9Eg7sc8b4+lOka>SGOZ9V+*%kY4wB`9HLIF8$>)svAU zl;w!pn>LZilLUdKKRbd>yKB!n2tWwKZLC=@fdre$YW!7vA&0|gIz6;l};yZK23 zvolu@@AH06@8OXr_}#gPFMx(`TOQR+IIce|=`nL%uwQ7?4J~_Wm*H)>8a3O8zwz`v zF;DXCmg4^9aI$dKnu<3ip#BkroKzmuH@)lbo|UCnrYbY6OsIZJK2@|$?h!;aK5kFt z>Z5J&f6mg!q}w&T!53EH9CYWx)C8#U8FcDF&g{r02Fx5dq51{^Uj?&I+l-kyyv}dc zTG!O%F=P^T_)w~=SYZ52GPSemnyeD9WKUFdN1wd}x6#N&kJ&(lD z{&u1kDiCWjFuBe8qd)oAy^Jb7;XNLsAqi>gEqWLky^EjRh)S`$yXq#bQZKmiXke?^ z-5qn{y?cK)0o5&A<=OSR{b&MLEqa17C04u@6rc9IcgMe-0?Wgpe3NLDm*z8i!D?vA zbgDYP@YDB*As)Uq)gG1iBlU|zWxw)%m3o%gl|aYl72Tp(6pJp03WW;)6bR)Hh5yu# z$5=IR|GaGTxcQ+NNTG4NDTj9=7-wfsKO1l3^1(evhTqJvH+UJkl6vyyg-;UBCdV*=E(Mlud0Y-|5pmVI0CVN64B@Fky^?|cw1iG zqr_wm_1oM9&(r4Vl>3j%_A*|d#FgO$DMEVdByB!u#W40uGY+l@$OhCkwI}3XZjR(m zTE8-P+I;z{x;gdNeqkfI^SdfB`o4BL^)yXVOW%hr!NAl z%>8=?;w(Og;oPv_Q!wtz+(-jsmZAtuSKLJ5PxlzeVGBTO}~{Xsu_Qs#ES zV7w4;ctAjaSb&rm+UE{jLP0?RE-nd|loUP75cLi8#Mom+J$-rpS>#`JG@X1MeO$dT zu4qr#d0l%4v>!&9oBO=cpT{3MQC@#G^7Q>+rL!3k8a__; z7_^T$8ttKS#S!h}3G;XI@jY)PB_^c=|9i?GJ(b|+LjEG`_o>fo{tf^C1Y=yC|832G zC_Z2LZ^`E>cRzOs0Z9auMA3c$<2ofN*ONbv+aAaRoy6v zPi0akzZEkyg-Us3Oq z6$6}_0Z7aHvSIyoM4J5lBDO$A1Bb8^p$xhjDF5!zzO2Q4D}Z(8@2bT1cf$AW#(1Itz5p^xQlZWbA=-jy00B z_Px7Nx<=?FAr`-87KMC$-K@4Z&YMK7P{4Q!ypl)y1t*vfQp4FM5j$0n2oQZ$$)FC2 zQR&75eHKC=5UwYHv5bqYQ)Vi=P(J(Ps9>4MldNP%58}QaJE%42fdmD%>mZu6@8x6x z?+FXhPEnj1*KvTlh*8$1vEA@UzC<#h3_J(lVhHM@0U8W$Bkk$uyORBAs4MTOH`eKU zSVHcv)h;r~REFKT*^*Sf>9W{y3ONZQW|%Br?Xol%!@mfz@-VT`nUURNh)Vy&TfOqQ zPbkgOK#C9241N8U>B-NM5cCFI*jD)TniICl*(1=y@S5Oi$&K)9Le0{8^`KmNW(4ce zd*-Uvl^%ZH$`Nj(R7vk-!i7JwU z=RazIx}!EaTq@M@hu#=F(ILXFU|#YMwy#o>SBnet-wLrl(MyHU$%o#Q8Imd9L7NDC zaXi)4OCg@2=-?V_+7DqJ7-~mz-e}bTMDCbP@Qh!&)co!+oubuEQC`hoitNZjUlCNW zx)72IMZKN?I|WbvsOtYl?{DmKX)SaR;=)N4bDzdXjwY7#NA6|nVCuJ3LuvrAb1qk| zw$inB_k)7k9tPRvfLyPbs_fER8H=P(_Rt-}?0yshk-!+ubIbl}$wCo_T9fHI(K&33 zbB1Ci?jXzIIqUZejZ3Tbtl(A}e(CnEu}9&DG3vx%yA}VqdY3|<`&bIftS327Ft0g_ zl%6-U4DxcCJi8q<6aH!079UkDB0Fg7f>)p%%evdIvYHi=zJ1kg%roQ@`F(9_UnaHU zyCO$->{4cQisNM6a2LgQO-fJ;X5!ffQ;s4X=$Np=w>(5w2cd*fSN0)}rM}w3x&aR-`d-2Yiki75Nh4Q2iOgk+ z{amUDzzo>SxSdL7%bKxTfSebRQgpx)$B`d9c!Xj_(~B_;B+d)th~U;~Fcg#K^QG!B z#MWM&P6T>tsK&dr0qs#q=3)Mp>+DTb;m3)=4;9z5w&vpOV(!2So7gHlUw%+f7oO=5 zp0V^GZY>e;ouXN1(-lRp5e`T^8tKEOw)7iDJX>qO+p<=ZPlA_qTUEjhTKQ7I)ezof z^w%aBRETX|g*?FG1(gc)?!c~15sMc8>TI~tO~bv`6895NJ>+}QY|cQLBe$=@!;Hqe z3|Z`TBS)?w3FU7=!dfbvf-Fqo8)UHg>-~-bQziH1-xM`0=Ll!LNl??#m!hcGKtU@n zC>y4m7Fk($zUOJUr1smi`zz?H)>>NwZNg)wZT~LPaQ}$8<(-sQ&ia|ZF7_^w1M;~) z*d7Y!e9x%orMR2SaFMogSa(PVT%x!D#F>abgO+UEW=s6M@+o0cz|i+yX8!=z>aGMy zcn(7cQtUhF91#?2O$!Fn!P1})IYe=EEo)%fa689n1S3}e8&v2NZ;o@rFW;J zpiSTuvMcJzF}Vf|_!BDCK~@pEB3`lzLuu@bMJDK6ops+Se2Klz=n)?|Rf5%186^F! zPM$BgIs`|R6lFIFFAuTt){Ul9(NntuS;^>18~!?lcB2`(xBG&4+P;^G!?E+ZuBFa? zrNM<#6i#N}T28DJUJHa32HD>n`Dr~Y3wX8n3T*@s@cCt&wt#p}DWhSk?>*PkO+WC%CmfmiNx=fa(Yr3)(3d+Ik_~!0l~2S2$sbgo5|5fsrHp&YM4$gq>s&R|tW>}C+dlx!HZ`pP diff --git a/public/img/emoji/baggage_claim.png b/public/img/emoji/baggage_claim.png deleted file mode 100644 index 59ae044a45e8849549f93a241794c0d3daf5540d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3502 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 diff --git a/public/img/emoji/balloon.png b/public/img/emoji/balloon.png deleted file mode 100644 index 0344897025624a967bb3efcf1d2abfa469eb6f7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2300 zcmV=F?0|eZ| z=1Q*IdDokDu&zA057zR!@Fs8aCO0wlA>MNvpSXiB{4S6D4qv^K2X5uA5AyRjv(4*F zc#Zi0S8V6b?c6xcrQ0;NC>jOys#VpJK4*App0CaExrcf3tPXH9JGS!4^Z4z(nu%$X zwomP}b?0sq(>n~t#z4C^vO0Il((H`+`IpRCaa^}}oO|c^)K@rl)&=+g2hZh^eaim5 zWy<+)J!sc~{iZJ1V>q$Zpcw$D+3QBFwWURi$A4_*sUJCZ_+|S!&*~qaf1fo0 zKExI0^6i7l#3kpx&4t(gob4B0XgFvz5=E4T2r?zIcCznvwQ5JJP8~hw$m5TD?)X!F zsD1t@H$B96yap7nBJbmzU3~LO&BWyguC@P$UvSQz^Ne>RP1gYtXKaE}M1+WF%lg8-mJXlgY%7`pK4pCrQQ2mgNQiuPXo66%Hw@IgLw3D;eA{uTCIdB|{WRg8}- zHASr=LiCjgq!2(PHR&t0Qqw?yEy>>fmsy>kvvBOm_undi?TdVABL;}weD;!Nr@e=+ zFwu5~O(XhVLf(wUeK?o`=7| zs#l4|tH7^v4BwFIa6==rAX*tN@Gb(K*s+m5xCQOnwh)sc8vt7~HAj8<0V z>AAN4U(3tWsI`8trt6H4dehU>&KpeG!7Z?10^G!&9lUqf)Gp&CG;Pbex&H9$0p!}+ z=>Yk^uAO;stE;SEw>Gk_7_Fa-w%7E%i88Qra@rKv{W|Atm>n?5bvub|6Wa{Bo}|f^ ziY95Qj9!#N2^j@Mkc!NTB#~9tO0BZ*>ATZL+Z)ts>-dD7$^}Q&L-^)K3GlPq42%zk zO52LQ>bq11RWxI==@~RK21JPHB_slXO!9Pqp8ky4cXU1V%sv<^Lt70DjW$kzF)p4o z6nzzKCreUNO`=-``qZy)_ozuG6^TF-l#orsX+xr_)+318Ycfq3+G6w;*bo5*>}+B{ z+lkSLG9)|t71>uR5+#I?f*=G^!U$4ArYtD&ic#r0+D=o7rf#4eP#6mZDVJAdX~{xU zD23qwMMRtyKp=?#Br;`I;mpjglUdK$w+citV0^;_KvyMEWN9dc)3Z?(O({enAOMH} z05U;jBePP`prWQMMU9YBWo^R*SmC)*cDhV85J3Q?kP!kRBq9P3NB{&NC6u5d$Owt9 zrcv#!a&*H4SmIw6jBX#by>61)ghrthwG?Ij=!>#G0Ro8tGRc&x$fBgUoN305H!zM{@qQy(`PMZW%YMjXIzNDF{S}2!sd#2q02s$chYt463x2)%?nm zWBp>g#OF8M8=)`rgBN)8#L`L2?MN$Sh8_Tr5F|1}LLf*G1Sw@wF{;(VsC9DXl%x88 zc!2-dZ~8_duP%FW>7*CbPd~_a zH*5fy=i^UWI&os=xTSVvlvRR6q9R2g0D(vX){|vgtG&f`&GEUDo~jG~`3!#n8#=&4 z^w0C&@3+UCn4PuUwz}HuBlQv_GD&2R*3HzTX4PhIv1^^2JLT!M6Dvo!^HG*I`deY} zWuDk3Kelb**}one8`GRKZEFpKrs$<2!7Brq>S?P{R*P-xrG+`qEFSfY{*NBy+h^UU zv5)YDci498zVj}#Yx`DP2jd1MG^J665&>!^QeUgC_LfGgPAo2X`lZAEt6%u+XZSs@ zAp@@w_wk$K7T?;OeCC}|_AwPE4P{ay^g$qV{n*!Pxm$B`ana$K7d+7~eDw)FdRBiO zzMjF=eCzFH`ll~G_Yym&wwf3W3>5@HW@@vy)V5|87aX2B;)!ndpO5n^4>EsN2Y_oB zUdK1Cj;ZV3y7MRO*uKr=U}z8l+S*%cJ1;HHd;Zi>-|grB=?J$x#2lRU0pMoFc60xs z82{iU+xFTyHEqjq2$tK{%)%+pE*|&8T>1QA{_txo!y6_5!0mi|zw&374tGxOoR|hL zEzf$oo1HtX-hD5B<&DlAT=nOC@qSy@{??Y&PjUb4Txm0L7gyb9xbioKOMlAc{vRn` zXKrA8ocqQGJGP7uc1#Yq?|KHCCcs7f$@XUZJI1%|FnrmGX6jx0_~T6x;Fo##nE2#a z*`jG0(N|eR@TvE6tv5RF}$sJkioxwj2k}8jlakhHW7CtaW8DDB?w4B zyIBJq1#I7}0lo(~V3V>P$FPcvZBp(<;x3z%pF)RY*khCOIV2uJu?aaBKSJU&2%C_f z!7LJA!KF4K*W*PbPU0S1X_Ijfk0Oy6;V-e@CgT=-2Z_WS?#7fiuk_mN0EhC?

V*8X@{OLAwdNK!Gb`Gs6iWy!5HL5O;l)6@+&nVDF~<(p@P~< zAQlt|axg&=E(j0_#$zZ@DC#fqLeo%`L!r=irtO?(AJ${i%+1Qqat@uw3w`fD;PYOe z_5D82N_L3;vn2l81&VT6wXFSPacy$4CA!Rw@i<^ld@lU<#XWM!nSpax7dD2q7MmC1 zs2%YqJD-}Nz^cXVTf%xp^UagB>t5MCt-zXd!UIloT!`<+ukCy~e+aSq6en!BW`HPPRUF13qLx!#Nv@;BdvN#VY z0?DaCn5Xz5r@0Fw8WKnJ_@#}0qgMey;FOF&SZtmIM)bK410qtX0gK$_yMC@q8Gycw zfU0>Q7*p^geFmjcK;oco-?q&CnhF4wtU#ELS5PG^;qZkb}NEF$O<@i zfu;1n)LN-ki2*)fC9rhVlIc!2xmZHVBddLa{5Xcjld;BW588$46 z*)}cph^=~+guDilV-y&+!X0W3NkIgVTIM<5(5XjBB7h)~ZNRZGu40=7_G*gRW-Ru) zuL}B96rr^N@+G2iR0R3d)NOI9H`PU1x{SNrVJoKM1FbUvB&{K$BUUST-hy0()ToU< z=?yhaSt=^N>{TbKDoaH21%l8zSk818zTnjyh16k}Sm$k%8nTr2xz-Dot12sGN3(Se z2`yWFwjUZ5Y_-7w-Ly93Je#~@NL>N|5{upGG5xxEcDxD zvkr??6}1v1ISow3U+6|hj>adV345LHn{F|wA|jZ;^_JUfQkGP&cU&XtS5<=P8z7N@ zrcrBMXV8GUC`FX|ht;ljyMi{NbEPDW?X3b(s|t_hWtWwf%V=p zqAmb{qF&$kycIgNOGG*34`G{KZn0U@ge*0O1(!MKHJc1Lq9$Y_f<8a~12kxKFoqC}g;{;0zy2Q*p~4yY&^ zYmuYZ-)x&&y@CMDyn!HqM7sr|XLP&5dz!M;)wDvlK{sn!szb?iB>5*{kO*jcOpi;w z+j7CSLc3^-LssZi7EDJVZwLuWs`^Af)#XC_rSgHY4!3&Mi54hHfZ4r*AdvtF+OSCK zZk^7uKYyM@MGM{UWh?Y(M=(99!gSYhn*{H=-DW2l6m!d5=m}5hw_s}ZWo_Ru z!ahH+*%C)`;(P7#h+cgvN(iQ5=AY$3JJ@Th&8mhavZNMz&E2Y&s44?<6Cg-rA*x`x zy|%eQ)u=3;hHaNxs#BXpgt@(f7$LNJPARy)Nc3Kps6MxDyq2GKb@#sWmfSJ#fgkSV<62Ppn@u*KYQ3^4r?H>&|`L4u17_2 z*72$4{)|BL?+vMfRtQQuMNK<&y3`@jLVxhAehXEV%$BIG`S*-K`f^<}_Y?~fU5K95 z=_0AWdQ`7I9m*h>IjM$*^p)%@*jan8)?Zf4o#e7^q@K|0BoC?R*QIQ>1Pyhy!P*WW zM8F02bY9t|lCOZ8A^W7NhAr2vU6^%z)3{;7Kilz@OanCUp1izRE+|O;Z40SElTOgB zDu}a;Pt}YWZ`8JvZ2%wH-oCLT|62}0YQmVPqFr$g@e@Xk7=Pe}^<*1Bdeg+(@PUA~ zsUBJb3M$G{#aV5B5TsM`V`{Ivfz}4F=A7cM%L}Ti+7%_O6(bQrkj^+hN;QtgkDDBs z{PfE^as*g&QQ^_jf{Hd3B?XCsXzm0}QA6Ft(O-R}{>7b7lPkdLbCU;4r<9bHl&5+K z=0==)_PUyyhWZ}sp5H;f062e1*c`4Xv=tN;BocEcm1=5eYSiO{li&H%KBg6b)vJ;# z!^O$6%=6E=gZOUxOuYBST`-+Mwu$r7v%&`~2^Di=!hXBczoa`~dQT4j`}h1`sxMnw TDJv=S00000NkvXXu0mjfZi93t diff --git a/public/img/emoji/bamboo.png b/public/img/emoji/bamboo.png deleted file mode 100644 index fc858d0fc2c2431826a012572b7c565585fe4ade..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4672 zcmV-G62I+4sXZM{y<3}!GJW;hsPun+*T5g-Y!i%2S=C=#?3Qk2X{rX)H_ij>M_iA+&S ziB4=sisF={SavFjV!Le1ro78iv_}iY4H5wgAb`ODgW0F2dwP5QUcdcacfY^*Z=#gY z#C`Quoxb;+^WFaH-hOwf7E($sN4fQun|^oSzTJ=@7S_y^vz?e^Pl`O+0Fz~;@Hd+xaX)~BZ?2g#*eQfh#q`lJnyiLoBue(&8+ z?A$rA<%$(xe0=oLBZu~9Gn$K{L_~x{aeyX5bkSnpwL2*k1|H^@STuf#Wy_W=cMlHq zAaGGcjErLtpehmtkKRIxv9a-6f&X$v3NW>G>t0oa$jApYkP?6xiHrgi2@~TJyRO(N zP$=Y$D0J{$2Pp+W0)!w6y*6A5y?Nt`6`*c5Ln#$nEgLCg1WNLVShnjNR7IuHXvSCU zZ@}rZXT3)sx`(D^;ktcfvpN8t>tR|ZYG#a?ix;lk*WiW4c}u8Sq|_-DS8yE<&-E#l z)(G4H!zgfZdEv?xV6|3uU-|iIwr)Gb($W(1a~GMPzsTbJCB`TBbLP?_E7j7KBfu@U z92&dx&Kt)85~TF_PrvbZ6#Azb8l7fg@e=cw=IH6)!qE5u{`l{o$H=DM`T}%Ta}PcA z!10G3Jht+{eeYQM(BuE|%-+3w^My>NdS+vRr@!!7uGw=R2lwC0o;`Q4Xa6xi|409W za&w8X!9L#73!#ybk=(Hd-*M`_?|Z0!q!)-Kcins2HMhNX^yF_m_gghBpXY0{ud@7~ zp5t9N+>Wm3eEIvIr`}rS$e!)|^o6r;?Gdnh_s-8h`krI`Q-dmf`G7($U^MS>|AX(? z_UN%=*O}{821kb|j=_H~y}_*dc7XU+2|xjtqTzjX!Jx^?RILLr5~1As_^ zlt>xlxfVkB+;HGJTDFt4X}X4*($G>mLecQ!2*-a5kASNtwrp2opEz_7#2_RfL4fbu zL~ZQez8z_p<>%MaTKE{3Y|x`ZOgKWV}+IV zBAcei89Ta%iML(HRrlV=)o;I<;e$KTdeZE^X6OEY`-zYJ`|I~jFy0@trB8DB+HwBX zum9RRZ@m8SGhO`_ICb`{t7s3>Y}(j%i$ZS(RDor+u$oPTmgeOXuhH~fmTDzxJuzBF zM>btrE6doGG9UiZ0vO z8k&}4ZFK>dKq!LZ>MAly5s4f>ed7d$begQD(y!~}H3J2o71LqI$RrQm_s_sCA`~AP zwGo4%s%_ZZc=$l-Ti^Wl!@!rjatc&z)BD~_FSB#kQPzsqfr+ z@^NNYml(-qnMfJz%B0zqHW-xs4E??OFlS=`{6p$P=IW6kmMmX>Pk^GkzElrAB$~ z3%^4q=dfdRn6TO;j3rJO5=bbuJT^R^p~20#P6N-i(eqh=1Tr}?^NE6(-u}K^_wEH^ z$?%pD<_b3N`-4yOr60b;U%v8le)rElhtg+qbl(oL0?K~GLd)Z{IF3H zX7cuE*)5O~P*4CQxQ>$;p6A6~y&IIFWMpz2tvAh!VUbOm%H)wr`a(%_p-dD@8eYJv z?UA!xVkCADf>1dA+6nHtX)jINrr+>I;goH$hFpiLM+yEE_Sg1Qi6~uhK`m=fhs^kEG41i6GaflF+zZp5*bN=WZtI~6*Hys z#jpG^fAiVj7+66UPys{NF@(y{@MeBAf0Ez((?91Uzw#KbAOBl|DB#*d5AfCh z{as$a@H55+`np$u{z5-nhPN=-J4iN@M>RA60@cUU1HzooO0dA(!UAeRBa$JCjIozC zs4cIO-#W(FfoVSf;`3Z8FY@lAccKb~Km4n|;^gd0+^}yOufH1zSEmhzGHEnTN6`d96ti0LI5oS@kAHjy*YsE|H<{YKg;L!nQ%GaE z9(ojDE*6PINILKkx`F^AFT~w2u~y5tjb`@>5Op8~W*nnMA+46nO0hw4y^6J7W9H-n z?|SGa?tkD2t-xVZZx4%?s{HC~G!;wMCp+M@{Jnz;|3CFGi_57(U%A zKqH8F`P>Q{vBYeJ^yM>5j}EdjyTB)(y_*X&(~L~?F+8c#uq3BWo<+~(cl{}{jXAHPmnZ!vUe8(Lb& zZdl1GG2QYpf+nuh>fYVpk^Nia4?S@QRc)PxN)fB5;P;3fmS>3-pHjnz`3$|A zR4&d`shc)sv&```r|2C?@!QY+3x4w29Hmz-V59KZy@y#ZRtSaU)tM4oM+Sqg6X0FH zddHE0{@g=XU(<8+m6>9Gzv16Do{mqYYG8ObVjT-c@ytu4;W$q~q^b=LXImgt;fXgGm{+lP? zJuuk!v9WD^X5DTSmd=z2WK3$*12x97ZI+fQ4D|QVlTWc+)JXSA9Lr;AxrUL|**!Ig zZF`t&5svFoD!VkRE~#({SFJF+xI~a|KwuE8>qsNS2-1uXM5rkv{LwehtX;M#5CzH$ zipEzRr^WiZi4`?Tc6d&NiX=xKO;;h3M1BWQpN+}pb$T*7rKJ#6xWvTxri3si5>eY$ z*tAb2BA~uu6PO{o5#swAapZ@K!1b>DjA(yOK7Fa1Qwi~TX%izsh+ zcy5SS7X)_HwmpjHT^24@s4cmyE}9fqP09-nPRpfMY;xko6?!+NNb4$V^EED>ui)A~ z_F7CT1#u+USaqmxwAfg)*_exPE8v&YNMEJ4;k9{PY&Tf8Ole=15irnLy)e>?-&FDy zyA_WbhM-yVDVBY9>$v2+xQ5F#tOXDXfU_9#@fXeTQ}#pV|bMB zUtEQCiM!cCgliPbHJoC|b(15Ut<;GDp$pJbWD!h>7AGU;`Sa&CnwLd@;WU|?WB+3| zlR8?~H8yO69B}K%ARoTvFrWM3PZ-S)^6U5AM02A-Dx;v1VRflU+V`2CTjHHtr#W=h zR=ldkI}hz)#jNswW|#4*0n^4H*WWtK(W}RKeRhfeb$St1H~gKcl(Mg&Yd>8yzjxxq z#^3V`l>aaP7TM}>+~c`wHmsb=GZ;=FgrhsW7jbK409JR z5@z*e{@=A@JGIc@r$2v#Yj;eOQ*5%iUPQK!lP69yKA6XsDrYau5r}|10jFj*2txn6 zYx9fue`8j9m;F@u&wf;Vk7fGa-J`wSxnmMfPho~ClcSTUMxKVq;;A`2ks?zVz=;KY zeZw5yu@_s*5o!fOsiNctu|*nN>t|@o4wP&GPtRe+3c|>-Z(@`%gr$v^|3AO8a8L5( zyX9ECSZh6JTR!s7mr=BK;vUZ7EL{{DKyq0x$x4Njxw<3+L!Xa%%w1t*9=O%p3R z5*5pfuw5TFkVsVr%}9K_xZ|6|;)Q~S?V)F~G+QC%Ml0d!Iss-Y(scc(*mOO@NZn@<6*tmACaCPO) zkQ>T+7;97;CPLBhf(V34Bn75v5=udYh95?FUX%zGL<(LQCUp@yVXRF@aQQnl0j3U^^aYsf42|1-S8=&DUj9sXl~?ykD-l}mihdX+eevFsKSkqCrP>2P$ox=w(6M*qXUO?^nACQIQs zl-Ra|j3pbTWn?T6!k|&FBP0Z#jZ}0bdSVL+NgGDuyHQ#~#$ekvahNQxliY2NgsZCr z*fZJx znIr}oB{|x;IysZv9gYrHhqEgLm>%i5YhtYT3!8c~WKtRC=jTxbSY{o|vZ$7eR7z{4 zQaWa}LZw{7w;MQ?i`TLewC$v>-In;IbUle_$98fgxfDSscf!%(>Tq_rFRK7kBiS2= zH}`z6kcPgVJj*LZmWyRVEw7C+_4tJ*yoxc16SNih*8rw&-k53F3a`!~mKQz@- zy?uB8=_AvH=f`^0N5&!ZX5Z;y{euUma+eNHW&ZP<>!*eoKD;gSl@2=go7+0RotRGS zo9jEdI~>>q>x diff --git a/public/img/emoji/banana.png b/public/img/emoji/banana.png deleted file mode 100644 index a0563afb9584524209bf7616ddfa7ecf751feb96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3915 zcmV-R547-!P)wE0ISI^n!%RQsD43IW*nY+&Y zpLO@W=Q}g&_x;!2Yd$Q*f)=!(1wBta@xY&-w)Nq^`oQ)L-}vN?&HwbNom;>6sb@BS z_wsEUZ#e_=EEvx-9{$m1R*2Y-L+s5!{zanfW+K}We~Gzr%~Kn`{+cHrzlAYRLg6{a z{ong2efYiSEQ(6y>saGG%ox=XAu@o{3?Pn0)N&vnB+4JW`lD}YedX&vdFePnsVD;R zg-m#xI2jV}K}1lR5XBZI&Y-of0;NkJcoU#YFPRp&>swcXC@L#u-tC+pwbr7OAtE5+ z9)yxd6bqCtRYCkd5axB>t{DTUAuv4=Ls5aKrq zXaxx7B>}*cbPU27;$_(8mYlWl&O^Ka6aax4(AsxF5bN>)v0MnE5xmGlKPLdj!~o9l zUW~IY6z#o-^gRM*f@pz`JhV32TXjzE_*MY>=e+}zBGb{SA`*F#P`q~z(#hQ*>b)@o zN_nu3m^ga1*3rv0KmJ)Y?*TxdA$XaHDDeW{Q8xnuNLM`o#DLPiBPQZ_l!#7aKQJ`^ z0T8K_QtTRR)nh zm!Ow#d+aZ09y@@$a?A`?6r3Q3iZ1|!R)7Z%ZG@49HZhpvlS##A321oU0`Sgy?_3=O zp`r)82%NRBc^b;zrbql-5^cGD<|*tPddBU?6oe&xnTuRDM9rW?+B`k9*+y(j@Btt82F`-pg- z5+OK%nE>AdkR@3s=K+X_N6`pi_Ru;-6i0~6(6Ca~x3b6w*4}f~#rNF)zN^;%;Qkvn z-1DC|JhA5I*KPcdpI^Um%|oBN?*|{gY{UA`p75dq&~7A|_p-s|b`L<|H0Y{m59D0{ zX%1(LHYjFfA_Nyi#=?}U&}QT$pX2J;-TS_p=J z_J3k}e9!g!w?1?APk;Q8^R{gH%gT!az`H;BUGIRsNt*tQfR<7UN-Gdk7>3d`>$VB< z%>L3$z+eSvlc7}6FmctelUL}ZaaLpZ&e7K1aVXnB)i}f|gKN&9d0^j3t;vaxWwSG% zpWgY@Z?Avk`k@!aGePI9Z8Va*1ehYCq74`j341`&PLL&OaDmL7h=m)FfOQgb+{w$A zk6`8NPr}lpD;OP77#`6W9gDGeX=lC2Kuc5G`ovpovv#9vOug;l2R>POQ21FE!Pg)JMW)2{!?L*d>MAojsHugg0dojFt z3AED4TXl32j8PqFn36`RY!F2NlV8G2rzowrK-{h?K6sw{=HIP7;!lKvyz^2jMbq_} z`W?fIhEHNe$A^K36^I!`K%OL+Jva$a@6I#%+Q*a>i7#KSmO2cL3-=04;*<1=1o ze^$_(9`EP?T5JQP(UBNhButG6ci4b*98QU`W0xW70Gu4(fi!7CAc%+{%1mfAyY^FH6R{IvxauF4eJ0C5m*(UAq2q-(pHX% z{dG9!v1suCj24Ki!L|~x9t4|e5UB_*nT5~VVT_I|%aFAbMerAJ^zzB^wJV>=+6QJ{ zdBG3c|L*`Awb_uB;<>_$$73Bal+u7WWUW@X%X6bJ6G(T(1p$FLLDtGJvCkvV92PGf zM7d-@lE7yfylsM`DoB^W@n8=`+JM+unAk+1>eT}IE${r@QM~x>UH5^ZFTIRjc2vLs70*k1EopNKGZ!8NlZZHz6dVxU?AYl8P}_&hBRDuxIF)C28ZizS^k0FRL>zm9bE zH5`q;-w5sTE?W=aUXcC?4=$cqciTDc%=bKacmRk3fE=K?QCCDD6siMx0mQ>v$xMWY zw81yv>3W;FbCXsct4Ie(QKZ16L5d)7fa_l4;Tjpz)S@w)VrZlsRIS8NI?#u=0`D<5 zcX(f9my%?y2$+fldJr5h29=jXRW5`XSgi))n_a#B5P%Y4M zz}EnJ2SiFzocsMZ3OP?(_1gaJw-L!FuDEGi>&qWM;WQ9dlj7ftj6OLo8<+YB zcK6+f)dFB{65&UR=^_Yv0E#vU2nq(;$1%9{sSD)VawX0t_<*eJ5i@eiY zcV61g7VGegP(eqkI9UoWNNBMhh|HnY%t13rfEC3G#&oaK9UZ!kdhiACBEb#L39>Z7 z%w!8w6GF(*C$PEQDT2#x{LY^H4+lWdkH2+k+f&4{Xhf#z%AFESWX)L^)8o-y~rwJdO0yKCB;T*?hj6&x$lGbeYX`^K)pP7=h2ae z&3pimr8algZ?9DJx638bn6_ z0O>3Ae<9b+HXOr=wSJ0#O{S#&ajIeO{PMT=)cQ_`ykG|qftDXP%zu3O%CV!D9d*4a znbk_ErE>)qYR=a3hwokg;N9z{u6=N8bD}tDsGs`}d$cBV{E~QN#R-*@j~dgbR}H^9 zQhc0Z3=_jpfcFar4b7Rsi}xbVdpHrX;(Y@|Pdf0Ly%YKO?|-7cd+$`1b=ee!=K$Ob z0YGyM2)t}bg|A$F+LG6-IQkC;2CA1uQFIK5G!fwP9D8<*CqKJ))0%%kjn`VJHQO%9t)$W`+7^Yk0c3{-;E;}8T2ZUt_NtLHPFei+N~QEc z6Gvx4d^ELh%0Ibb$My|RPTh3h*4Cr7L|iDg4}glS`w)T*fVi8PV6-BmH7U(RiXqJ8 zn2w4R*T znr)v_pKUd!ChBW8jJJQfemqOEp5geHAol;(7yl3SLkhV;W%a zt5=dp`<1bv1ubYn3tG^E7PO#+ Z_;2dELdAmhdVc@_002ovPDHLkV1hsUJ68Yz diff --git a/public/img/emoji/bangbang.png b/public/img/emoji/bangbang.png deleted file mode 100644 index 7270f0afe6e66920a0cc4059ef29d04e50dc1eb5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1387 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 AwEzGB diff --git a/public/img/emoji/bath.png b/public/img/emoji/bath.png deleted file mode 100644 index 8f75d1d2499e46ef31b25c735c76eae87f01c2ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3210 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 diff --git a/public/img/emoji/bathtub.png b/public/img/emoji/bathtub.png deleted file mode 100644 index 1c3f844ab262b2ad6c00b61bcafeea1cc13ab861..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2784 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 Hu0mjfT4S&8 diff --git a/public/img/emoji/bee.png b/public/img/emoji/bee.png deleted file mode 100644 index f53733953afad79cb582a1e7edc8d847b8767f1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5851 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 N002ovPDHLkV1hXN92o!r diff --git a/public/img/emoji/beginner.png b/public/img/emoji/beginner.png deleted file mode 100644 index 1f022d175dac777aacc371be6ea0b56ffd398ba8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2761 zcmV;)3O4nLP)5EotEQ!);MGZ=+Mw9wSlP1PgK;3n>fD5zk8$0)&bDo|#x%I}A8HYPDcTLKZ zd~+^$nc4Y%p6_$c-OUCf!vAuGG*~A9oB(hFzzG2D?d_`U_T6>;e{76H8o|;4)NxjLktYO?O?1~vxc+J zKKr-!|7{|zhCwe}xbRo2R;{8~EHX4S#PGl%Z@uvbaU63|Umx@5&;PcCv@$0EuG5=O zJMA=z#U`ewHG^*-WaOO#95`^8Qt221tXQ#vv(7r}uCA`GZv!+4db2gZ!Nwk~HM(48 zWMF^;2ZtFRe4Fyb6th}du%Crlvu16{34ojZm9{e&Q((Y$|MvA`{Qkjqu3!6(g>Zne zcQwWceYQL2oO8}bJExf;Sa5frd+xb+E?Tt6jh0MJyYYHw<;Ar2e}nPMS26VVAcY{n zLayu)EAj&1=C4o)nV5=bZyn{5%epAG6uJ7Ex!iw`u_N&>Mn^ROc1$Wsa1b(@@3(sl zg)l^qPxAV}n{eY==3cRemX>C^miIAQ42h9~>Z9x0db;7E>N6QJ$Q_h@b`H zsEimx7&c^uCK@OKHGdfP$vHb5XTCo zDhUukfdJw`n7}5XgP(0H@s-=&B91E%1UugqqZ{YUnNt#xCTspqD*)8kI71`v5Pof) zi+yA}@0&*iLC{*uZDqmR+usUUzL2nYZ@X3f7_g8#eO#(p7D=_u4PC4vF8Hbh3D0?B&>5&%(% zQQ8}U8W6@S<8Ttc`NgD#Fv#%m$;_EuprbI28XKcj2q@mMp0?hF$;<-*wEWf>m(a3c-uq)OADlvM zG_f`)3lGTu6o}#qc?Cp3a9j{%9Of=4aL2dWnL09$YhJyT;qGq2i4x_}Q4s2vxD;Zv zCXNk}&N%@hLb)6fm%)euRDA$xdWk2Y*sPhDh};h}$CRSkL}V#3#*IK!j)|MX{7(Uw zf=Ia)6e58Y8A_vdY^6}rLYU#j=`rY%hz^?a2M|S(l|d^7#6ZS5bkH2uTW21T&O?Sll%zkN`4yP>7Y*xDJL{ z6Cehy4RI8s!u$ca=tq%|>;Ysi2LLw$#t>L#-UN+ujZlHiKmy{JXj)?=jeq755H|vi zB>;nVr$8A~$Ta0P#QW05h3}d2vRO1d5?gIkif_|0%;3HVz&o~ zRb&-p>jEfE0HD;&{7MW!X-Myru?*T6NFYd707j8?1Rx&(zJkPb6hW3I%nBingg|Ss z!ssj=@J-Jg01-feQrQ5gf|Ul*s&N4FQ2-DCaf1MqAliUcCVB#B^U+CwQ4nVY5EnqJ z0BLjtlyd7w0)SEw$6zEIfLIA=11ckcP(W#5<^d1};F_qir7{XZX@Le4;1q;251>?n zv2h3sFdadVX%C>WJ)ls4>1mjpnlS*!fRg}@l;FM}z~+9K8iH75*#iU-1?D&tAc^_T zc6eY1OiYp%<9Pyj5V(n?w*DA;y5W`^Vd&pr%<&~4))2S^sN(|=gwWj%J9oho&*Ies zc>=g21>nS;ce^oQ-4|i_AZUGj$6$I2nEJ8r?t~|I!$XhZl?J|<=cDjg5CoS1dr6B8 z8$rkLrR(6|34|b^YH4Mq1JI`aCKv?J)df%OhCl42O05);iF^R05dLN%d>VLyw7BaY z=ZWjT00$3&QdF%NKLNUS?0Y)l>F43mKT)MF7m=4{W7 zV^3u;pYxx}`VfFC@#@~K@X#YLyC;2YPLzy*yGUgOI@@6Piy6%43Lra#`?tZvkHX14 zpaqnM*h(uv4Cq86(9s6Zz2wgN4CeC&kR8I-?eNGS9fULqE&-`|+S}o;FTY1(3z4zxoROHPPk3gZS~dx|6*}&!M#E?^LO^z|(+9B>tMn)Cc54 z@d4B}?;9mG=Tt~dQt;H2u1=Q$Kjir8HeffP0R?FPI*|di4<-eWUe^N9RKs{J0AUTo z#l&PWQFBG!zyAen0s8Bh-wf;nJ`O}c?5~MbvU)%gr6s8~KMnOyfxwp!AnmX-*^=m_ zL~TGj&;fJ;uK_=zc5O>QbpjoU+JIJIR{H)lr^&)K!AqtulGST;{YPQ(U`R^WtwBm0 z<$W^&@V;IIUH}dzF`tJkhJo#_^GRpDj+g!JSLwKTT^H|OrahqEh8KE!K()E|RjAP| zybVpKLU~H>`LRzWo=8^2R($~3VfawO8VdZF`f2l|0jX}#H|wkRv6uxw-P57&nhNh; z&GHTS#=L8484hfD#6x*6Fdl3in|P5IHWP3##KfR1&JSRe5CjSd5>W&{ z@+VTF`~sBZ`}h-?MUfpv1Z6=4P(V@QfD^C`V}qUXGWK}ZUZ(r*XUS7<9lM3Z7RzoM z&(3RP@1Xr@p*!`NG%cuDtkYw7hh=hqry7fA-oXmAqsH*l~5|!G$XizJ8Fk@XdQq z;7kAffQQ(=&p*3lSLfJEQh?iDk$rOa!JSLJ{si~@>qGdr`_3G@_mPbcczE0Q^#&98 zF@EfJ#bvj{$z{7#_UirJ_iL;0(1WM(z>~etoZ2kzz}C+v_jc^3_dIa=Hiz<8a zLXNY;K34nriPs%SmggcYk4iNI0I{yluZ*hiua5MI2Tt}c9*+x|^O6x@F2-T>hiK*s z*UaeU*ysnt8>ojOfKH;Yrzo-6?_*_L$()~g0d87|f2|dpKf9=7_ja5@W))&v!6JuI zIVvGvLa{9>>BWd5_3{eq6ZOY$y{K{Y!m#+mubmiu_GhXFT&h&``o-i+a}D#k#Z2#A zXlg7p3mljp;qZdStFKzbRX1OQYi_xTc%9hn<1>W=-4PaA1^gU8cUNXUPlMO)Q|XjT9@(AgIRd*IITjCgap;yi zu=_Q)Bc9p^r4&>-k+iP}pb}f+FizUx`UyPspLgNmf4CEm9bdtzzQf60iIe^E?D}}P z`0ppG!Hcp6G;Q+LT_nG^sWIQ0;G(OJVEOhBqqXlBV5$-ruR~i$M1a;%N&^b0$_gk8 zRCy0YF@cNPn7`pD+WTLP?5;nDyZ3%*S?`h^( zzWNHh@;5$;#_R&r@I3jBV2vhu68Ei#HYDb41?9nKhOJg3sKE-d9ZR_6j*nsank!^Y zFYHeG@V;JD0$ik2+;;jexcdyS#L^`PaPXFQldOdrZ<1gM@&t4R8e%I|f3EF18{~u1 zmCV6t1Ce!H>%CZd?yQ$IL%woD7quGj(pL+eZy>v;o?8Od73`G?V(O2x-?rZJNm<$b^4w?M<{qwQFulLDRT2GUl7vVR_vbq%eC zlFCZXy+#FtQp?>7RaU5U?Y=C8Xe9!X^r(-DyIu{>qu6{3#o9@(c@{}4MQ19*R4)g8 zif;ga^@0iTh68GDzL8xqof$M!i$*(vwFbsnXp|`P9?Ib=lreIyD-k;Sq-5p1$gKZ zfDVPR@EFM$Ausa^DUwj|>k=9+vf?WvnsFg9ykG)kR$bTfXE6=}*vLQ$`}&@*sz9J7 zSQ1)M1nByefC8!d2!z5%GmHg6BfKgTfZ})s=QNVoh)?>K7+#QD;Fg2Q#aU!p4F-{t zcoJzj|5_UfR0KdJAUndRJW+Z~0%5l7lU8hjjFCCYLj(xvZ;XMak2o^o)BE-@_*k}G z0ISrE8A+!x14;~xGj)&(x_;GDC_@$iLP$^+H9?{b&uJ6I)^k(=sx~#A5x{5-N564w z#J7)uE?>Lt0yv|t_mw}5tfZu~1}dD>0Ii|4CD@7>L{Q=f-~0kuxf*NEL?v_N`ZOl2 zp=Dk1;VgYNLKbAHL1OfE+b%%EnJY7Y{u7Nju~M8uibhfggt)OH1ep+Qq!l4*8?`XC zEeOOxXl-N-}B*qPUCrvUPe53BGi{0_vamHXMmgsQ^MTMJ0w zPw!v=Bpd3TR7L=;q}3{j2I86VGB*fG0R)^1K!+Y+*)mZM5V$$uqn&>`a=O&qKb(LR5=2A>(It`(MMHD5u|U4!N(FieeJen zz%MVV>1L`IGdfOFe+2xFcw&zHEKHID%mS@^JxEDBl3nKmXqT`r>@wI7O<1vsu;a#g zu@adhb8Ql?#k?nLn<$d(F!V{^5`&MWndn6y+w(3!v)Q_#`T&*1wV$J16O%+p*;XR}g6v~wKd;p>3JAh9qeiS2n8 zfED+h?bINn<0N%*CmTmd`V&zClkKWWhBHqxTjYhL6Od4SG(4jE+0%kNJ=TgKra2$P zu-=ywpHYZGVqr`Y+w-3RslBz8Svs|J9!WK}k(Hg1H^8(@@(pOY!bsi|u{EiX>NVMb zx?g}TTOfjJ55Im2-I%Sf#Ng9fhgbx#XlFhP?AxDL0p4{<=PljLHrq{yMiwDTeE|#= z8`eN28FVsLUwK<;4qd1BGZ{f>Z(BjIYk}B?@wE_E=7e$SG}mu>U*gkI{5T1*w20}< zHr{n<`>oHL04#nV>1GZhKpF{oNk@4JA|jFxJ6{uWA%%sw5UFh|{ef&f#zPZfuGk2o z)Tl*>r#UflT>x?!5++gU8d#|ioREiZ18OC0Qa zN9!FAL4=vrTuSkM%hhV9KdK z-Pv}S>O{yWLM&(Bh00HaR5ehhCS?K{t?JiWfd&T#z-$4&--J2Z1j2$J%oaKS3ZbTW zA#A8YaU5dmv>bLaz7Au3P6c?|;r8;5X7r93FF=#d8vYKBf&iApob1ll+1GOANgs3! zC_;$WI}aOLBM4_6EM*w1HbrPf@A%c__TlGD zfSJsEZfDzKrX8V8g&Ryan?^8c98xlBkY}5*cgV9tZazh)0Nnvh3$SgX6QF4uLJ?>M zD8hL7aZMQ~w)AymE$!N}wu;)&gozt434JpTn}(P=odn%Z3?FN|X+Ha${Pp%3zrTaI`3^cW9mJg$qO=X0O*4RLz$2aoqApvKcb-57b`rMM+WwT9kBO4V zgI)I6Tp-qf(F(B&49_F)pF`eT#dxrR(fS6~&#mM1$#p#X=sJ!)wu$eb9)9rd@2-F1 zS$`?|_9Kmb`@7l4_syr6+uy?M{w}8X%%IWkAWE9hQHCN11Lz|kR2cW4z-Z7zKAsRj zJ{qAchbSk+cmq(LRK?F@l%rnw+8d~=dm3svHRY99n^e-=IxTO0aYo^j2CVKu zYeTKOaE$~mOQBmaipXGq5*vAm-lY6EIeh-}_xDdcD*<*-H}5&P)WCs*E$o_a!B~aW zQ|mbM=sEP(2bfH96r%yEd_v^1YnD)oBufgyAc_ho%J9v8SyfPMY100|OweAO5~yT8 zplKOR(2lGoS)k&a95jef2OJEAbIu~`u#KI>xNC0s{$sZlzonHrWQj#H@;jhOW`d{Ib3A^2fD@}@ ztoI9|MBisZDf!B8RR^fQDk2^kPt$&MN&0&q?UzO0B6A{M7&l9vK&HRtOf zm!Biq0i@2N)6j&&zG;hvnH0M_mZCYXQ(|+>%^Bv{987R-bM(be|HsOkf2;s+IMSSJ zI`_piahJCnmTDXHxq}a%8R2^;2ROSqW?BQ}gv1%dkzx=Gj<6)C0Fns*TOH&WGl1AX zH;^&3Ycfj4YhX(NlAnlZ6$TSeoFcLv5q|D;(;|34ohjk@fIfy}Kc^7i)&e_P5tetQ zIJ7fHBi78y0vDK>gW=@c)nxKZe}Dhx=^t7HbY<`Cjn(Cph5r?}_xJ|B^W;z>%o2kx zMM=mec1q5rGi;r20j-p5PEl5b5;8+nXmVZ}>+lV3Bxx(6B_f7U3cF1LeG=-8i4id@ zM11ZZg*N_vmy9t+NjwF?#PgXZSu&8|8{=FG5gj{EkWfey z**V$4MnpJ+gm!A#)?+wF$WsF!6a(nV*r}L1NYZmtF?Ny2&MAjZ+oIVBf6+1UDZ0TT zx;{aAVGIieR3aux0DER)?CHkPDu@hEenQeYcYLHJ{Ral<>H0QNka`m58lBV$mz7=- z3UN`q=SK?goyU9MJiH^D@7v-pnc}zZ=|*zS6unv%(mo+#B9b&V6vj{tE7=jQD<$KT zG{$46`x30R5CPkM_ep+scN4PdDReUp z6hcg{S4+}h)|4R|MEHa@!xeFiQj)c-Wg^;IfAR&BtM@&4wtw=+z6U&bw&w@DZN94( zj7^Rj;C4D(ULRC)z7;I2A!%h0MV2BEiA95mQv=677>$|8;rLk|qvPkXqwN@=@PSEU zv@g0G&BaR*w`Sy>0o_%M-FKM*-=GLXcy2jyVRM4ROH(*>sEZ-)#aJ-BLRW6Ws_@Z_$;y+D2-z z8M#KYVKAM=OzjBWPKr(^#uU@M)6LN8_`(C+b=QBP8jqR6Ddu;?SU$WDM{d3yjj1^b z(1ijp+E~Hh!WkU<%H4SQ*a=>fHHQt?d_K#i4}UQeXOnzu)aFP`h^izh%;*= ztZt04IV@PeCjER|Jyxpf9zgw*DaK!WYNI;)y!@)HQc8Cc>}R?iDWQ*`!jjf%ud{lA zX}6fhE=^O1Ry)C%D#Vi^=B5+OQG~^PQ@G;hw_?|!tKib6ILHT^IP*XE;#*(-0v>;S z4W~%bqpxGQ#9?!Tc7MXcnh%EK@-bHZ$IG&M0t%04sQaBR?q46`QF1A_>34;HvOoa3 z#1zrm*L9aKc9T!FS^9U*B-pz!g9Ddch3>8c04ly-AII_gzKN43R&eG#cX@MEJbrF+ z^wE{!w*hPrYsAX4Ah=xu{A66ZPjw@ceWIPkzusxZXm=d4EcW~{=#Q|$R9@o^aG^K; z+%Vt#z;{kmE87v*w*TAV%l0<*y2RWT8T&?~%^|IUNnSjh7v;ZdK%`Iqls z&$)(WS@<+x4t&b5&j9!gfX@KhP;-m_X4qVe&`7?S#wuf2TyXDh@C>vK$|pruo9s($cZ3S!=9U1`S@{{$f+8)fam% zlS&b`UU#WNswrjDL8UDOoEBOdJlNbGLWe((pMI1_srqpj zG-__?s)1Xfa@9-lF#b?xd!2(!Yk>U6+}zy$PXxfT_b2w2E#rv4p%Ff>2ct8~_{m2l zOc$JJ3^);UyWyk>ts3KxT@_lTOd*^mx*{dq&XnubFx@!hN*Z05F);pUn zzqPBgp}ng)PJs$|>AzRdIJAlZs{*gb0XhVn1i+|CV&p1oN+f(}x-o)=E(iR6z#DHt zp7yDf7m-O9G5)(EjI$X&slq5!Wae6+I7rupIiCwp#bU^k_TR3q;`(wKnRVpU6RL_b z|I2es6Rda1@O`HfPOh;Oa;Evr!otFLt~m#M^TnC5Xrg8IPt%3=zjDl>vo(glzqbV+ z`cg;@<&a3PxuEl+Oj_O$#_|>yT(d=ZV|n=84TwhLSS{vIo>@fcd=b@id9=^uP{~wn z1+o!0%+0L?tpVm-8otAm7$^b0SR9KU4=j2@OD+e`I?7)FfP*+AoXw(335wwTJ{-1{ zqkNC^_MK0Z1YL%)@#QfGPAyjPcdg@S>5sr@YDR9a3&m_1Er+r;0ogtKXPt07)(h9< zJmy}ULg9P`%i|TiZLA=h%;FzTp0{awYJgEkEIzUe4fo%Gu!QwmDCd{4G&~FQ`){Es zTg0T_hb*lcB>>eL*v3UeiWh7507s@qchB-Nj)p=g(G%zbO`oU=L?V%RFc=Ie)|ayt zOubFZA5CMv%|hen`(WL<7nz?Ofqy6k|F`!e8yJCeZXAvN3g++c#_69-c{IlS@P;EuPbLu=^kMujH^BX$GcZgG%Zz`wt)zkE zU<+2aHX>hKMQM2z33^w1a{|uQ0u~ORfulKw=3o#@Z=OM*QbCbxnNvd2C6!7oT@wIq zx4Xqoa1H|r!$g?R3MC5*ToH*g?iV~*+?PPx6Q9RQW(K9n8RRm{NEH@w`1L%(ADQqp zw;>R4pet2Cfutt?`euZ0YDds#qBE66e(V&y8^f?lE-X%avAPt5RrSIbUx7P54+qV; zNV{jr)ALXa9RqGmo*zXfF^Ihnd>QV52jgQ?m_C<8Im?`??z$lTtcF)7eOh_09gl!_I& zX?^irU>Tj;9fNOk1iA4A-1+bWz>Zr{dF$8641IvtKUje?-i!wy*oMU){|avmEh0Y{ zL1@gpP^IVv1N?g8ngHOUK`k~|mV(TvBd}s2U2&s%up7brG|J5WRjwPINFt#HmWgU5i}9nQ za80M-?F=L1GB6$p!sXtA!LQwlGxWx@KYbaw#U)(tbmN=*m{sVWCl0=b1E-2uaMJA? zEcl&kxuyod;5FxfIsocN3|eG{&pJQXh#T+gg!i-`Cr^EZp1u-%#ZgSf+YxOVz=n-g zeEDxoocpI~Wb+0xDo5;gLNO1Vs_)J)aycg!CQ@*j8AKyF%un(jWKR&{TxS58f)`Vx z1%#Lc-CVOuh0e{S@W9S~Odfp)$#cVKYl-5X_9B+%OpM?4HT>x1A>7^9f>4|lC6j}j zmBSiI!cqNS0Kluq_JFE^FnfU5O+E}fz8fuG{&rU|JvV?iKRk__1`6;lClT-1#cW?j z-{uBbUt$G2`6WFnVl0n5&!voDHs@OTDrLv9tr z3q?D5hF^P?4rS4U4S~>i%>Zywk0tb2XX2d|v_5nl0?}JhDh#tboX5_cyKwM851^IwAWd6h{^?KQoI+Gxq?VB8LYv$rOBL2fDZTNz;V0 z5<=A~!tbk~Z<_~^O)(ggCdvfBvYbeLZSQf3*~hQ)5vx;_yAihm#Dw7?=ea^egv_Y&Nd6iX{Jf@2Z>U~E~sSJ(_4MWVrE8Jt3%o!+u5f-2DuupPaXG=KHZ5?)N7#GdO} zw_Ogre>Q~%W~xZO6K>wELYgJeg;Ji?Ay+_dVih67jU^hPST@ib^<(nvFfe->_qvMM zy0HVpr(VZBEoB4_y@)WMBYIqpD=3G`mh z>E`(5iB){Sq4sq`o!wL#EswCq$D(k!na!;#lV$-kr_Lk(UJA`!QOq+0QfbmyNTO>; zBMzLd;)eu%7lC@|RW?8?Mcmv|#qO?Yr2cCR$7X4DhE)GK6S0;s0q|U`(}!2J8ES29 z{esu){e{6@Uz8SXV=KB;aj>jOYNx$<@o`-v;cIZLwWITl3bToB@2Vom>|727*vbac zR4L(}REmv|0d60#Y^q(g_%Sfc{-C)(gjmF9XKRU4VJVy&&!BC&gpouHa|EV6lO>%D zju#Ee;6xL9h6axTuh-4csIW7vFn=g)X*BlbC2q=koK@sPeyp&HSS;hkV)2W!v$Mav zDgZh7TU?Ef9nP@AmnHMIo!zdV#g~0M(0KschNJLY3LaK}9^ATcHcD5HzJC zd-rJX1q^!&D>7wT%Pdzf&{58Ed!3A3?j#AmlQc@CQRYf+jch(TU#Qv|Yd7k!OLbih zr$Z&&u=^Gl!@#E=hWARP^5oRi)W2M960~~&3ExHn&7|()ri3R#aA+8IX<7d)V4YKu z%gzd1Vfk7{z5)x&9#w{ra51HDv50xz=cq$X&cUlrg7qe-%*A(2Pvc%5G&Il?!t?|$ zpLzM8t9Al&6%hQtURKQuD+Hie8>>`2MZ>+ya{J?sjx|{?(F|S61Ns%~I_yvzoF_qd zW$mz|RNI2q&jF096!Mc^##I7fUL;#i8#kQ`$a8D$ysgtUctApKr_E2eTwebesy3{3 zj+v_$32*$764iC)IWC+BU0TV@@mUWj{TI?sP~a$RrPI|Mi$|l;7~MZ=$<;F%`&s?a zp~}6s?q(o>61y#-TyAVch512qOuAdq=ds(ToqX+HX>DDjLz=~l z=3hKYHU1Tb;m7#!2&__DYw{3;CCpCFI*XI?J|3xAYxycF-LB{X?0=f=1jx8gP|1By zK8bQVjjns{LDTNtm>U{G+xG2PqGv3;_a1s~xrGhU96UUZ3UA(wV}}o;zm4Yr1m?`M z&%%*RvLl;E&~4RTUdZKHinJ+_Tk)t14#Y+=V*B12^hcm z4O}dr){Y%mSz1EZSH8lAs09Z=ggO*#gR(b(RO2`VW*>B&h1;&GHB5hQ13us}KkG)jPc^OP~z z)rD~Zzik^5q&;!y5M1;a=|+;LFAD(6$>#bCj}|g9S5^?waTXb6sXz+_cdQ&I9&E6h+l%l5lOAXJL&&W_KQ30i{ux;R!jr$l2^Y3(M4mdav~bGsNW zhbUi7Cmu@RmCNRU+UbeCfG&d^1=6u|EE+{$Umu#t?A*C?=pxEZbU!JcB@iK6W|@kF z8ye6_MWzK9y@=fxPEvWz=ZgxQIdcX)rba6*TB3rT-QC<9aKl1jC+H1f(h-j=6%suG zlpq)}p7dt;EWmh|Y&_?)^QK(rG){m=g128#!tHh;;d-x12p z7b3Q7+yvQkYX>8JS4@JOY;PSsM4s(178e)M#<*Rjpfj|p2niS|B&OZn-S)a9ExnC# zC}A~Ef=F>GBLO9lHdou3OAa4Ah%-+;h1}7jDA9sGf)Ri0F>LzkSCJU!WL$5 zaL^VYM|WpWZ4;DodW|J;ni%H=x}xG#fXPKQjvYH@yP!g3^VY36^8E97pNX}Fq0+$w z<)EM|^qMo@`WC!=wv|AX$Wv?Td?bT_mqqI#prJXZPoK6eJj?_vqsVXr0|WM4fv$O4 zBaqfR7x;q^VB!j?_Yq+!t;JGEAz)jO&jo^;fP&iRfSN2~d0JFnpxBZ%ylQwzSlI~u8o0Mi^j6J!0BfU4msz2Q+4#dSI6l%krHdXqz*da)^bjTC%@ib)ZJ z&tzHU9LXk{q8B2a29-gE&8I_i zuez-{Dv1kR+w|arIL_uO!RPWojWPk0byZeHOK~m3$jbzfyij4NWTz@puMh%FiCcGh zVEq+(EewV(l>;tR0J)E{c-@uc`eGyo5=g%VP+cI+6El@M-OFo-5VmEMNM#MJ+wth5 zI6=iu|KJDk3Rr%(s7%-X{petaSfzJJae0u|%GJeRG(=DQ1ctm&?k{8Le_33XmV86( zRt1d0PsWo0E;{$8(bupGuny=(1kQ53MQr9^O zDKFBYL^sRYin=(uW%GBx%VTjKXVW^H_UwU!>q1OmK?*K@S|j@6Bk#HtALR(mQ@+{E zQd)O)@z-|KFZkCw)#%Cw`ZB@CFF(;8*D{7DY%EBGf$7{Ah_e~DI7KB>wKi>mH5c3)OXZ- z6)7wlhuHqAB51wBQpvCul7p87Ky|Y20b-`)qTd2S#1u={v5w0+^^j0q7Gc$T38(Ku z|16czyxVWTy}rx5kiZlkQc%`Y>pID-t~{du>U_4bj~DGL@ex@1Pki)DvPx-rta5@v zMWECgp^v>Jas1IfAZw#S7kc~cw{6twB~K{px3aMWlxxZ}#NdD0H+Pi=f+!3}w6KYd zg)frEN3gIF3*&Prc?QupNG~=PHi}xA6k;Q!3y7q!v$e4C_J5Q4*J0T;n}E1r28P|8 zIdeJxoXgyni3%ftd%_053=ln!EPQ4I_dqeX)> zV4Y*cwf7zx!;4S{9UH=7oC?hCLIA|XhD7IldAxKCoy78ka9Pp%doBUJ zJ%*>FALGkQ8AGJGJah!lH;Ck+0)WapX<-98w&i+Y5Gh23tSW#^S?VK=vKqX$RN|y` zTU>@mn>?#asqg&!zIxWMiU5$s%5?6e_02oB$zmjXrgsdf8#?md#}}KjZ|CuJy33dz z5Zu3%#_f`aL?E3~#WhLXbLm<@s9uP06TL#*L3eSyrrqG$l}X+=-J8@y~=J2IO} zO8(nGq`>6!(lSUfDuxY`1U#k87XqL{S1PoLo+AZbk@1ZIbj4->raf9Iqd&z)!Tmyy znmeDqm&FvIG-6{sIT{X!q3(CWsXV$_D7SLsg*40{!-^72UU5XdrJU0wBUyxxx_> z1{n6FgG%jM>Kr_YgJ}SO2j1BY77wFJ2O}zQX8;hPs2W*imCgkJ;+QOY902e>Mgl;; z^2v}2TuOv?a4$yFuB7e(du4BA@sA$jY?|xxO}W3Y+sOn5qX->pU=L7N34n3DS2){< zE6E7Vit=A7NdSaGv7<^3sN^jkj2g{42M?5uY4iY{BIbX*E*~XfPe2^zCoFY0f@yy> zX#08|P5r+>x=EtPuHt&U>|OUiEf?Z>>aF6j_eNkl@ zc~Fyip2kz#Z6K2SPC(G6)%HNqc(k?$Sc*p!k0q^wkQgvR05O1oNCZS~2uC;&p%Gz4 zkXsG~6qH$%X>6@_Y*A-uU3IWwY>#ex)>&$v{Uy}8Q?t6We{A<=+*CdFzLm=Rt303Y z^ZmZRyrBU2f35%3#U5W2xsP;;T1MN2Paie#@T8IZ&1eh1>$_%&rlyAS!FvnfN&lQF z!(Ed86R83eCJFGnivs*Gz(HZG6<&4GF?x!D2PY=>KCH2$y>|efUS2%&{(0NSDg_G{ zYXlg(V~e|;Jb0|9<9fL@er%)RQL!~19%tb9jnj|5R{$RNDQJ(n><3e#IT*R&fIr=y zgxA+4=sv;2A6jU5agKrEYBomersAuz<+xs{@_erVj9i`@G0wu=d)o`%>! zDlQZXG1}yak(SSp9y|{-rU+qWWrd6|PuY6~;C`FKnSbeGpfQUHuT3nZh1jAxVKxrz znvLZP93d3&!DKSQVY4uMvatTW8-mZemLD#RaQZ34YaX_(m0{(QIdEArA0BHzgO_|c z)_*z!GiOZ4t~K+qedWx13%58syR@c>9nWXT1l>8yB)vH@$;AvAr6!L0cRK|2%Js&k z%wP;u9)WK6KSDNd4%&em@NV;<&>CJ=m zpN)|GDjVWU8U4bJq{E_Cz0=_;=HbePXZ$Xyo?YrS1zzgq@w znm72R`@t&=hA3)1X2&drq?DXDra|11JKhqP^USS4AP|{SVM@m_NG_3?(UnM269++c z_;q%g_ezWWEfBACmFvA$)W_{wnOUw=*aD#FNQ+2gJjR68hlq(Rh?bZJd*;pUWvWI z4AkaZp|jEoU$t0c@FER8mpE|g+F=4kqW>lhCI|!y0nnaAQWOtSy&k+=HKuwlEwE?+ zitK>tf|Frnq8r8mkeCZkCxa8OhHURNWTev3{)H8;)LG+Nvo&tETjO`#H01RJbC&M(|5wzzy+$jmJtb1Ga!2qr#+A1tN>> z&{JiFUl9=3&XP2ow?Z?-id*8IONgE~#J^cm)SA&v)Gk>Z-Y0>8f?NSP`CJNBe*ir^cKtH#*6^9*ZVZFjYXoLPrW#&7OdkNH(683egiI{MsS`gu2T{qeI-W z^yqHblIbs~hy^z#0A68UGymf=3_rOqBSbM`g22|Rz)$u?Oo14UWI$FWQxP$phcqP} zmt(C^vS$KTIZeRY`4b^uKu58Lie){%4nRe;*R^lka`9dFG2A+nh`J;{glv)h*>~+M?pwbIndWq*TZhd~ z7uaq71aUhjqCrQ+*O@jLE)(H#i3s}7*;qH9Zq^2(fdm1bWb@GzCAwfS089p}Az|B?ZTZl zBc5Na!1sOScz8Y+*D7PtkfK3$(8kyLolBzLwx%&?vr~PdUw=)45~aQ@WP8%duoL3t zDJh;;*dk#E7wgSEPeiJ|o&YGSr@D#7UG5%Hxn6wC`s5=xIyz$Vw(Gy^p_n*TaFIt`xN*hWD#y>3h^M9ONQJ;V%mmOo`}T0M9oD< zC=ZQV_G2N7+Av|lgj*ke_~9_o8Die{mzn{x`JYUF-cuA#DxZvdO=-AUa}+&AVW^5% zB5bexk8xhh{^mbF<##J=hCod z&P3#Tvd|sIL0b@Wq)%)0@&D-~v1mVcQ97PI5Z9S;qgdgo#OLFAT?{^Z6JiZFHBwZB6w-z#0J}*V1tFFdOY!`X3v7Xp1c2 znczRP<{uEJ2gv2qCQIW`t=YZh))#-TpZ7um|$FlvNw_K?*8pjZR|0Mx(S7m)ejMECLY;3TAg zo1OoIq_}i!QflTQhF^e&q4ayJ)&;A6^LeN*Hmg0*cRZ2|&_aw{D8%FT9Nei*LN95n z%IF=C@0NoV9aq5EAO6}#rE;<~0B^+5Xxo{gk@u|B>gfz!_#>|V@GXH>D}L8HHAj7H z8&U(GX9jO2yTl{Je37~O_s?cxpzIK;V|QVn=Za^Xz`#C=Lh%7(Z$LkN&)#0sxy1pn zQK-a>VBMIFkJ@~{xAyj)LiZ1Tz}Tl7$rvToAMP-k`@btE z7+D&(F}pzjS2jN5f2Z4cs+<|xePa`qy90i40H&CeP0&_yzbzmejw(AlyW8Y=jckdJ zk@w;mn>HI5fgxiwh0hzaG#?*(h9+=`85ADB@j<(ZysH7di5iY@};MOZ9|x={fYL{YgQAX6CTXPDsv za*;czsCdunQ8#B>B9;}Km>!cDn>495IqoIv9(MN}b7F0=cDK8&)t-7hl4TbpvTLMr znR)v>+?iV0;IkllbDJ`~`|VepngKUZNc|Xh2S-cR%98r}Yo71I3_nxFmRrW+^1o*; zi0xs1f?UWcA|k@gkzCd1!_+`6|0e_JDjE+Vm_$cMkLKp)N@;27h@vQc`T6;hot^zf zQBlz!GD}NcrkX|xiisKJyXb{mAh+Tx6O>R>dG!rbZBvh_wl>mNuI@9hT`&^U1L&G9Y%r7MEM&Y9zL9!nkr>wWiE07r{9C8(`vQ; z4$sJy=L9z|YN4jDH2`0JaO^`iij0gLbvPWZtgNi7adB~L`Ez^@*tTt(6rAci6Bx{x=-HvE$*In1CFPQ1wcbliOx(X{(c`1A z&1O4SU0pq>#U*EQrv_?KJLvn==+gjvO~hR4;)}7dv0_Dn<;$0U%kyPV12{j8o2&Z# zZH_knjAYOgF4pKAesJ9EF?<94ODnG%t7`lFtE!fI#{7BbwsZe|@wnT79$cGWKYLI< z_;#_J*jFRhu3eL|+?S=j-aQ)G>n(;F^>KWjt6yR33N+v0aduV55WY{qD#)^xJT_8GwVfO%YZ;6Kq z)BOueyG`X=2K>vuGU3wky7t@Xc^dE=oFxAZ_Xi&ztB^MiH_H2OwaFga3<;kUkhjT))-DFZ+>5yNY2;lhPu7K`O`4CmbX z`ueegf`Tp%F<%B4l)?*!f|9Fhk_`g^?oXAswuMM?TnJ8m^8_&ku`Lu+ zS64S=vf4j0?>FMb!KbeKh9FFy$ z{&maH-5<1b4Zu0z6}iyXEX~Ryi3$spIWWLsw~u)7T2fO})3?lCG>Em}%SmQ)gr@=Q zFsxx8Z{508&?%n96Ae5|t<+5IG~f_cN5PyIxaNIj&1B!D37a-;`c6(x&a^#y_DF!$ z*5{v<^LG@Eqyr@6-HvABw#LcWetv$TK25L|T*6cux^VGg|NZ;-<=(w}GB`LWH*emQ zt7q-Pwum9#9YeTBUVZ)03`_na|7=SaI^rAzyA5E6v7<1G4|=zwMvM%1Y-;D?*9A95 z;Na(a#R3AJVZg21w;#7RHi;pxK=K=#Z`XqWiTG**m!r@Nf^|S}mtf^HUnaa18FjOw zqC#9Qm+)(BY)pE4du4aWww>Ki{IXT6-%O3l zZr&wpY{jx7HC^f&8-Imq;Ij=;US96xtugKm+I6qn7A*=k%?o$-{++&jYNmFs0d51ZPu|mOP+MEuorN+uDq)Q*RZ1l)EnAi(t(WS$`sW&eq3z^tGA>PY z4G4%|>-fg%lslt?*Z#%RfcE3ZZ?Y}oJN4o-cVS)Ke=JzDUKXaCA9IUOlub&0FBVB% zUerp>)IJWq(}N*6g1!Bx&l}EV6&2^AS0~E6*i{k+B>#C1>+R=WQ(***VZRll(WpBG zro<$6cK&5zx9gJ#5!dJw1KJKX-JUfwKp@2Vyd2;VpJuU)krTNsTD?X}%FEw)UK?sf zu{KKW<3O&9PQcB(dJVAH9BFB3ksYnAA6C>iNLfwoKOH!5pod!^iYA|j9Ml3)C_*^@ zxeHkJVjEvx*3)dA`RI!eX3OV4E|D`QTBXSzE9YuwNaCVt!WfLDGnbce>pOh-a8G4@ z!!Jv!YlgP9w0y`#kXyK3PHLrQY9D7X7!KhZ!B)pIc)AbqwG4<;;03Js(|7OQ&0gtb za=jXWzz*;p>ToAw``iYJgS*0$Pw$y6mIR~ZC79$Fe-R{i+JoiM=~?o-L#qNc?A*C?2uVgKPoDftA;dqO8M?HrWAu}7r>kqe^uIe> zc9^Hix@doSvtqjJ$(kw|F@g7|nEb9V24i{G_n2NRi63a&FgR+35Jmc-5W5WSV?3jH zw#9pAsg;_k-Te@M%+Q5i8r`>V-&k^Ta*!&1BWq~X;N29?XPN;#3wW56s+|M0!xKi! z_YlX0xH5kHc(W&ghd*4FG4i9xKe&E0SDZfp&d-)dZ_Sb)?g$iftVy<5S3UU7o{FFS z?dwMp*_JWzD=-&hY8f-d8I_u&cESNh()dtGpM6mc&#Oe2Uj1T67URQb&dn&eE5nN22caFP?O5b_l1boJHQ1% zcw{_w?3fE@fGao>uk|(n@B9gVJ3AR`#D0+KN7*ZwSM2#mB&-@b37D+LHK_3Sg3;@< z_MV^Gc9I&an6a4yi>@#ybK}{cl8a^lzb996CUzaOY%hav&FQ`h9C_s}mf5bL!No5v&=!(A9(wQxmljPwQ15 z(n%HLfeAo3@U~_I0ry8yKeN2m0&Dm!a99T zPXJ~$!Jnx;_AS+fIAE1Zehsh=*r1w`sv?c>_?)7?v(7{KDmB(}HFmU`>zius6Dk*S zx~_60SDVUxBDE0I=WT%A6wn(LFEOCUy!Ho7z!YGbnlKOu0%ifTfw}6G2v z3w#!#z7wXlnXAT_rN#_Ya|Eb4O)3XJkG0|@-QEWN-~UaHL3B*=WtN7CDki-kG$9%$ i==7qeI31DC$NvI^I*_@5ExS_y0000PNP)NklojvuQ&~5&&Q#RcarAhnB+H)rd;aJ9n9olrE9d07gXjGG`2PQQd7j_zMjs-NqRbc zdU|@xb#--v@J#z(h5&6tOJ^ffOENV!0u0I2)D$oyV`JlQ3=9lj1^TtMwU_JY=-B-~ zwSX9P{eWdZ7zVE-T{G7J9W{|q!Z0*6eEFdYErgnxnc1XAA_kZz zww<$HdWej|EB(iE5m>-XSU}iMtz%(fk!WXUcfi)xwt4d8$;&J)E#vU>R4XehM<{EJ zXAXFlVsCH%jGLR=$doBl$jQm+ZOn`RO$jiGtu3(0K1`;wTett3b)d*j2L}gob#;~C z;o(70k}>+Tudgpnn>LMtgM%dm1_l!5Fw=U!838)MC3cpJ_K-zt-SiySqzpadDAIa&~rR7yIBhPlKi@TR$~V-$RCx zYn&f;kW#Y?y{T#DMjDzLq{YzE8ilH=>K8bD``?@Zd}ku>nlBi{>X%<6eZEAtFl z7hE8Ntdl=zCqMDJUh>vI>&))GtOM(KQ0ON0y{D7Ze@Qpv@b_U=XUI5h?+x{&9i$Of zxAT!EK*SEbBbHns=d$0Cf8{w6VU2mecrC|VBl~6h$-8KfL{MeA2wk^SEv}Emv@+{Q zf`EvKh)Hwi%&|&LOf(r?WY*3jdw(N(<|f6NlHpG&&ldjEpq?MFc=`)6~?|L(7&eqr$?%&#~FF3l=P>PESu?3S?wuWtEkel?^<;squa5 z#m|zM^D3=ak+)k~)W5O7VDU-vC>$i!psM}{CLp5y4_+lhq#oV*&VBEKH@+`|JO4B* zVQzdyY2jC_Y(qoC-*a+ujxJodu!dz?ym)a64yzD~Z>y-Nc(0|Ug=%VQ2(tG5Yywbf zYQfy&Lqb9ppbpPMQ__qs?~u8<`9%{Gle30~#!pz97_GFjb&M9t=WdGBbKh>-(n|w9 z&6F{3p0Ds-o1vBRJh|i@Cbi&oyM8+Fm&~?Ue2}b`93bId5_w;-6|j7&2zi{+^J}TD zvgoDh)2GLy?T$pVRe*bl9q2w!qU$`5dx?YU>go;nOn?pnAf*`=!iUJE^JQym>v!?_ zE_#R$q08X70%1{WC_I2#`vy8OLT5(k#3W!cIXa?ou`!}aUg;zjeneXSW#Ov-X0Q8D?OCoXJllY&&kfXWbHh)L`0q-WA8L_b1+3a z>?n1LQ>RX4#Tb%&o}QkPf>4}WW)=zJ$92CP6wxbecO75)!HrCkXE2a~}a< z>NKCajg1Yn$cpnqR}e|7u$X&zc(}#Zty^hzY5p#A?-+d%aqPC3aRCA(P~6Oj(H0fG zJ;4&9D%P%jtvG+#pQMfKN@u8qY$xN)K~fKGIyI`ib7iG|+ViBFxPye%3Uj6OX3NUM z`pV$1o17-QC@6o#v1=3bOA5F+TuoA)~H= zb@m`=J`Jm?xrYESvVl(>L4q$H__QfBG_*naM7H%mMipynnuSYixCncbbOO4z#YP1N z#Lk@gH=ZNAsbT-Sg-eTQ2u7J1v%{p#EK8@WOzS7zbXY=Y(~z*t))Rrfw+u3mBJkDR z7pZYly-;Wi*7_2{!`$5|B|em#!^&?8-{bd`$g5VB9N)ZoGbuhpptQuHoo2a$f`UkX zxIiz`=s8%6wmjek@e5Yo%gc)p{qL+>w~orn%1$XR=F*>3BR4UG?Nhgpn85-Te!-(bII zxj06!Tp;ugh~>1tMDF)*G6Br;j2SZsCl?OEm-P1b5(=O*iUjN&=%%Es_OFHO83@qX z78n?3xNV@1+S=Ma#oTbX%uNu;S%V2+YudDA$>I<1@p;R9C*j=tiAwkoX{J3#!eMo_ zvfwc>j@pPt?H1-1(y74>DK0MhP-;w|*^>h;H%jZCAYuO`3ClWXDN7Wt7*ZwxsqYQA zEFa7QSo1!%1SXOX8an?s^t2PWS#d#*XTO!qBq}Ouw}KBg_4M=*a_Q6ZXZ?L$WEp`v z-R9U0SHHQ_`umzk+FIN0$}29+FGdhzSKxri>z+qJbr$7w&^;vBb#7OgjcPGu!$;$# zMk9Uks_kTB^6_-0)T9~1^5;zYuKv2e`pkh9nDt3F&b5^*kMuwG4;MgLe2QhqzN`2< z;(#73=zrlBB-dBK9{C=wp1-hZu$jO#?rA#UEB$NCfPM5&hnSdff93HYvJ+{EO_w*}jB*O)=sej~xjOI(Ktd~!)B+EY zX7CQu4BDoE?W7iZoKzz&k_dkdR`T!YE6!uz(`d4e;}gXB;WOkci2yuzZ5Rr z&3VFNQ?{nb{Fii%Bgw*kK1~hD``FB_Hd)tUW3sM&Yl;Miu4F@}js#&>`IdcZH|^fL zpN<|rNGV0I3g@!B~5$DlRU*zJC4szo6S2M%gH#v#sH? z_>AgnIsq;8(hJYf(D5Vm%9*3o-m?oERTJv$PZ}HQhj|V%$1s|d&(^M8JB$b`#R1gi zT#W2e`i05!YSsay5mEKGaj(dAM6aQ)K(%R2s|uFf?%mY#CU9v}SA&GdHn&{b+|%@i zaIYTe?%Pcl&mE%|jt$b;6VD(uH&OiJs;{~_8a`vW7-*b6M|1Qs+UD;Or}*@_FuKMm z@H!wx|MK$kYZ&;cG64x`RoAuM8|lTNgY?4j=jp<^Bh=Knjf6#&M8J9(0ccH!@trsQ z426b7fQpI=TfpGh7b(5RMReEYv3n7%-E2Kv>LQKZL67lqYirYReSQ5GjP~}X;r8~n zPlQD+wQbl*ue@|rlI_%q1Ek~DKrAx|z+p%P@Vw!srlzat9`A6hgU*a=oCQAA(9j@e z1<^WtTo({Ucaj%wroq9dX~&M;Wa88cAD+Kwtg#3_?n{?0<${POvIXoLcio_lDw+G73?6d%W>zoBxvu;I%b1H9rve z?<@<+DG-55mI9TVkvVnc70tZxb)iv>&$4eF+*W_r(p>v>SeT#97|lyD>IV)qOaNz? z-0_JOs={Z(h?u(No<2ZLO)VL}_>k7XsomzPO?fVS*|Dv)e#G9Td_;(fJ3_67WxQFj zrj-^goU=xGJo*4V+-r<*ykohr$7vQ|Js_n8y!>K}NhO?5i;8ld;qMh7VrFdK4qx9$ zx$!gUL@Hu?+3z6X2&tOmXTh}S}1Pg9)3 zHGfS__4l2f&Fm(V=FQE0uC%0u_+3fy$`hL*Gh{DRoCB*&N0Y|7%H?VhXdm6=f^w?H zfYA$0RCS9sY}mj)_#g6Tn>KaeI;?V+>;wY%W(MWvHNHUMX9WcX-e`w8t;#p~;{)9W znbuDcYNqlzoIzF~QlG-lycU<`m*itnW$GY4UFRDg6gFN`C0LwyqPMqOB0wg`TP!S5SI$=8BTf#ru+J00 zd0*kOlv`o>CQ^j|H2?|!BX?1ddkc6QR>w6Y)Kb+59Zhy{OuV4V6CH}M8kWl&Rq`gl+pry39t zFjc-Dug!a)#ePb8e_Y-w6CiJhD%lDU{T1cfDu1t>dR~(c!l@EYm2Y1gUS0ME4sYyo?~0dNGIl;9|PXD=ITEt_kBqNPl} zF7JU;Wgp1z3F85X{a zgNgDL+-D+Kj%V6S@B_DB?~T7U?wXiQ!)ui22y_lDYCJNJXf~H3|$uOWk`3|fG;3_3poZ3Sp4 z%-3KjWeHW~6Mf|VR+xoS{{A3P9zXHN(*H#KA1cKt!O$v5F8}}l07*qoM6N<$f?RqZ A!vFvP diff --git a/public/img/emoji/bikini.png b/public/img/emoji/bikini.png deleted file mode 100644 index 4ff63b40f8868b49a803bfcc642c229622f17f39..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3890 zcmV-256$q2P)&Bu2?1A`G|^f*^~m z0*VoksGy)I2wVXXQCSQq2n@`^Ff(Viv-kF1p!{eBnLFT2#i#54<R(lVc;9Xz zrQ|=E!Wr>>fbRp$7Y`RN5u?kG&;GgMq3Vg^H+OOxCX3(AnlDCGED?`>^@B zv|oh&@I-h2syp!a+C!Ma6A@Ny788Ttd4R2A%2i=<@A4AGJ$n-Rfc<#JY$VukGf@g> z(E|JzZF=7K>^9tk58#^pH$3DJIyt#(zViTKLMwsV*nufTyM>5q!6NB%bR* z^RY`T{cX6hPo4+R0A<&CXehYx5FvEwHu3ClzOw*Z#nc%=0wEnY3Q4&CQN#`75f{$E zz4tPFSmY8~Ni%H_C4n$j74Yl5_kb zFhUbP6rlhH5)J2#U%<{wQ84hJlSAaZePZ51nxTj;+x+;^F%i2j#a?j}4jK+=gaA#r z@rWQ^BL6(=0bF<%>C%Icex%IB!HYu{hZ-E}01&jpMG-;T-M&Z6naXMSLcF*o#5uj( zbU>gWX~3ZxNfsL)j?4k+MwdD+;UBP4lw5t*0?ZW;UZ^Pg6%KyvU<~VqWf+~l!orP( z#71DDBClMF+HV~m!h~q|z)rF76;9z*F*C4R%>N=l-lf{5>!IKKIOv#wEhGkRtP|I| zaVb_HhK&bBxKYp+oV5TM%#o&}W8jdPJ%-F{Pmx`FH`zcH1}Y{2%wNBTwc%mxjemh( zy@5&rULrSd^p)%=DG@Hd!F=~^eLCW=aZ}t=yJ0nQ%UG<9ekq>2$Z#>s2_ z^GUJ`M`Pe%I09Qy+D{Q9uHiIkG(%EkJ13<XWQK$wjnnH`zqa;Eo*wFnD3LpWe zdl@z=4jQ`0bwQtt*jH5%+MTNh&NWR7Uqp)C2kJKjlm~|^XjrIZx>aC1pei7{mI4l7 zAtN!IycA9yWII%lBtZg`6ebzW3xQQequzZww65#Bk>Q z9IfyeE>(fq*8}ySn8@;u$OrGi9JrbE+-pf<6W1DPaFQfQuj4c|>*eT3@rxeq)%<;( zDJE)nAV3f|8ZIS`u1P>a7#?hVNNfxeSW1$VG)PE=CM*hGcnZC9BTh;~i>7IOqc^d? z-9;FKfTH1XLbwQ_qoR^QxH2dRY)ip*d>A+# z?{*Sb1W9fB2|13yt7q{N$0ZdsML}_Na0F7bacIJDY!YN?w38eYbyO>jf2J8UnyJoC z4D)E!Wr|d>g(NF&+?F3z&!U(v92{&{22)yOOi7Xy^)yiLI{cSl?_IBE_qjDSl@@$W zbu4N0`PfKq>Nc^7;4gE{2thrIM{%PYUKBv67ShnL^fVb^ku)u8)EX*f)#o#S5J3$$C`f}{C3vwww^aFZrW+*3{Lnx!Oq)5ncixQB6Gxj`g`K( zJ64KkcK8Wz8nHa|_ZABvj*GTaUk=ysX z*(GM&yhA*{<|6tU0SXp)>2`saB65T7kzZ^Io!cS-4t#Y;^ALEuUD(PD~E!_1G ztJ?2nQFIHFy<4{6-M$^)fdhmO`X4Dcz_QKmUfbRStUPVncT>0^36N?$`{ulCqIsSduDsNcSFA1y(VY$zq>z; zQ%E(c@0NY(a4cm%c_dys&9B5CPt|jG`<-CrR$vnceE1M(mmNU|)O?_a;i0tP5*z0d zrzjUEA0*%ebCBfV!y$(#gcL+?2P6nrAxbg=1Q9*_C_zq+dRZ2^IR}Y~om)+|2Ur%Q zyOxoli3Z}tki^V#YPYg9wV$zCC_69{SEuC_E04ebqHp1V+fo&$y%>7+spz^ylO$H{ z419QgdM#rCxM%dOFO5m;2+r%U>FU7-87xdBF62WGqpH(T_I5>mZwLxmG$ita8)4EO zoC`~l&x`~VzzYQ7p;0hq2`ui1sQ)35LBWA#BM<{?0Fd+U!y%1{iBWkD>EXjj4BSY= zv)52hf+~(sjXKlX5gjvj@zFW};LGRk3Vqtppl^+3W*XWha3v<6UK{@0AQ0$42mnDANP=*XQUSs!sDMP$2*N^< z3K9?CM*=o+OcG>;MN(QcqS8Q;8fvKI%hEa;2ThO*_VW!U-YtTmP^45o&mOZ-wc1B1i!N`02aIDU;xfE;zT1 z$BG9rFh~SyX`1jjb)h4aJ@Yfl_7(kgqMY$`t6U6C5cj@W$Pb1T+`f$Ps7(YS;F*36 zuBZQuih<}-ir8@v!Uk&G(Cc-ODgr<9jl19{`*3t{ZX88s)zzd(5%2dVv64BI?SUh2 z8)Z-yw{!BeNW`PQ=>epLK^O>saSRG{V)ZtO}x zb?_=KRMU&1nTWy~I9!Cl2HiqhDo7o>V>xD%mrTM>Lan2LCMxVE4sc+}WclK+0op=< zuOo~&(3MW-6sSSM!i!IMa0wON@B%uDVt{4?AOXh~Shj{qmXsE!UL>e;j&Z;)+w-)1 zu{URc#u;>!iVHo$X>d866;%dN@S$L%xY7u+NU0zUFOn0J!Pb))YKpWpXtGUWj!ii! zd63K{ZE{0ozFZNnlnp~_WfM)8zD;V_3uJR^FboYFiEX;DyMKlJ<8+)$wqcnXhGUbo zEgH2tsxDd1u`d5Rc$r+5XtO&)Gv$)E%cDCN*Zt2@62smib?;)bsAMdM?1^LiRI${Gl{kJTdb?B3K+WeN-;#4IPnW<07I{?~z0C`;P>lgg4ZuVs~&cB)_8cAp=l32vY-A!WFPf0v> zFOBs98r2xJlyhuX$D28YHn%H0O8lX|GvP=`b93TQg@Q1>IC!v0lUC|z5cQPG@=u?$ zmt4eIpm7$}a_CR05}lKjVLZ4{q(G<&4iX!i6j@@jo_Z%WoMvbf?*(oZ*X{D+_Il85 z1pxvaz`+(73^j?l^A%_1O>HDV+o$lK?fU@#2YXoohf#ewu>b%707*qoM6N<$fI zMW4K*B6)~ul8UXqsLdeM_$1aUrN-I}lewJpU0i$bIq9q5OcQD5@SnB5k8?QR|F`yD zYaiCOE#Aw2{5|ab4uCrV?f|$0;0^$Js|?J{%tK0UQFJC-=>HiAA%+8?Fboqtv-qt-}YHqG`Z2r*~ldSkv z-W@+s_P3)Pn?Ttojg6xmA4A#eqwMxk^tvcIJ(L}a-QGq{u}AOeZiw=N-rMPP$I~qT z&e0PKe?4^M_=j#w05fy*kLO`}t?2Y;itaXa#-&TO}Xq9~E)1=2i6nq^4S90|oF zr93mrQRD^kf>f5s2~5`O890=i*fp^3PO|u=>Dk%mZYu!OC+44t()9az*+Wj1%lmz6 zrYJke$Z(dG)^MC;h~pTcQ5YkN5=3!=Ffxkan>5}967P@xirboW_cf3*@uOYli{+oCSo!bg#j515%>XoKP1KQDA%4x@~!+R zwD*D_AUGkSFhWY8k~BtUV34vdnJ2JWmLtit56sM+{0C#lQrH&ALcU zW%3+RoRZndnNu1|m1gpdM43vk9D zI0xqpjJ4ZljxYTMz+JZlKhC(#W`Ip_kF5a89&eRgEH1z1c1>}Sw46xzw@W5<8{>&ur8y{lW`=*bU%n;KXU zXU2GjI7tvh5rQy4V3xH{(i%#6kkW&oTzWo5lJdc&h7gK!K~X>p31K7^m=HFX(n%== z4z`S;s8>)Hbsq z4&ixb=96jVSu;{YII|ZrvfOt}9f7 z!ACyx#1qeM=@!_tfB(Z-(VYroG9JfdJc929WL`sg8bV6DtU2?r`u6Kc*fs2V@GiW6 z?>_9>y$|=jZx?p%-iv+vc4N=ZNhJI_man}|CO80gvq?JJ%;qC84sgNU)=*}GXn3A) zdyXH5W|B-!9X|ZoEd#(9n@FPMLX>89mPh7Gb>NP;T0z=<>>h4q>7VFCL+mEg-CiGB zOE6b8TTh`q6uoim*|Qgu9f6hWuK`S8RCWiU8CBmguz(miHxL+zOles3#@e*ECdpFAcU|D(yj!pO|%e#gNF`&a?=3_ z!Oz`${|=F49r#4tH=|CwA2-q%=K`Ed^F9o3yorgio;A%F&>tJatFQhEU;6wP@Z!Zw zn4oK=m91>m)G$DI5Uh~jz+i3JjY!k%NPr!aR?Jxc(>|1zlnW?h+*E=Y2~?|ZVXW72`_c1o{rVC<{fST6q?Tvj-svQ_`w`+v(!_Rb zukFoxcWuv{b7qEb{`rq*rAoO}ZWDbvXO2d;zVE-EvFk4J?-Js%2oTDXeGnLUMU*VL zVu}a}Ae~O$T`U$`Rz(2B-fx>)vO#HnjuvZ6q_igEc^rfZcmVlHZb(SisL)-2`T<)G z!wMQ9hY2gC==}NfR4$h(pUd$%4?=hcZ?g!#@wt!aDRhvp7VsRf+XtRz;(>SrpM}qX z^$`9UK)@ncxTzHb3`?6`ZdrKS0MTMD_)HD_{2PKz`#`3@~DFCzrF7XYyqf&$3i z3%Cerm=P^4F4CU8yXgmboSU0NZs?|^rO<;E?cH}jdD^fS1VIR2szN|Ud*nFF zgj&mC;<3fK-Q~T{tKk(M5uE|p*}j286Nf|Z+XHs(8hmNfrp;d-7}$tX*2Bc+=jW;E ztqXMi?f-Hc+|#>;^0?_qXFN&<4sL)pMuUx~xvj0%YxMEakI}yU`{>l`r)XwoCUjx` zd0+g}LsY3$K+L*slF3)A6&f46L?+ovX^=Ob0uLRL4iSW;We*tHb5itu29b!Gpn*FU zVC&XR8+&_uF6`Vn(mgcvQIKED2jTdrYvTEgp_h&O$~BU%o`!hWLX3jhJiBy z!lbckBuwG91whQCA9!H&(ym=QXk=suh^|K~nWK?hX}Y?%G|a9eSJM=Iy-wZdy%wYC24b; zAxzZb68Rv|!Z$yg``6Ro{{C;O+^A3)R$WF?L}}wOIE!Y}}Ev@b9(+$md%Q;fi|K z*|Qfy%cEgANRFe~_3dDiOqx&-zJluS@59w}j>@6+fO@@-Yw!+YnF6l=ARUgpd?^}r zyI#Px8>No3b|QtEPx!gU!?Uuk9uqVT0)ULMmgg1Emb?-2;i~yuz$MbTr2ugK*52Ok zpN3Y?!bM+w^(6ZECOUHDFvn-TzQ}}-q#;0(>v=B*ne89xr!)V!#$hlwi`l=>O^Iw+ zwBjtB@S>IfbC#C9AIGUB?yp$f2egztCM1>@0UBU*LtgOt{YVI7ugUzmTXupS9k~!P81x8dGCO_LLoG+UZRva6EPE}4Ky zamLncNrAOYNJc(@YQPwQw(lw?#W4I%MBcaVZb)-pusH!MptU9~A!4fra>2EmdO%xS zVr?eV`4!CLVl}oNMChc`r~gW`vvc&!Gf(i>oJwT@0;PZ^{>sz8X*2D_#Ch&t6I4Qd zuhp0MYfvh*LR62XLz6a_SIN$@24Xeq3B2dzhP{x86QPl~w_lO5+B04w;UT1WLip_e z=N2K5IRWdkf{x>|`=wGENOB1~ckWGk{P8F0>8HPoc^!4TRtIV<#zJionI0pkuXr%( z?I}=mI>DBco?Xb>ePAcJCr>Q) z!R5X^dk{+P{H}cKZ}b2w29seSZ0qXzLR6jupRF%dK;98Sge=~XqzAAk0AhLTB`g4d z|F7LtfKsXYg}%N*pEBzETAPQ{uzVgfd?zwGas%pqHoDXE0*caG5+ovTnVy=VD`R7{ z@6!*`z`y`se;cisD8o)~K|~I0$at|JaUbssc@e}4V4u0Ji`5x8i_4^Sd%ysmkZ13h zn;e_GNe&Q9Ow3PU`8pEZp~1nvZ_Sp=hr7|#7Ybd-1s#~r+bN%I;V(SK7$!ekD$&Ka zFVLoKBQ!F)o9eX+6pzS*1qEa+EJF+v$0`)Jf_;((AFaPfgOgG1-emQpbdk=G`jym zau#b$UT!udX~}RRv1{X<$Cc-Zrql2!Tv&j4Eb{RV=bg|xcb z6AKG@Bi7bR@wrmi1Flk!uKKsZIP=Yn=KtoewQoZ5MAmn)I?CNY{q8j1!GBN!hzO6q@a%KPK81ST7l`%6-EDGX zq6&LU+Fw~^h_Nouh^IiHq3sm`ZN^uI$s1RT#aG-OP@kQ?I{l{)?Jqsh|7|z4D@(c|MHDfB#KOwX4H!5912=$)3ovj7 zPQb#B5T~G^233LqR%kI#dhZc#Kq@^i&YE9VZ0G;{@2v1-XL4?4XM@U2)u72OX2>KV zBp@+Um`sdJjCsaj(nN@EQOYB36gB40#e4W|cG5o1uX_heH`~pzC{I;%Uk3&icK%_) z-5^AI?S#$!j^glWl5}ft-tprH^(|D%#mm$DviG!j-PHBahDQP%its?pMw#jm3c$ZC zkmmwOzMpqpAVhe+@r7Tt&+YBX-3#OxZ;YF&(p@aMNyVO1wgg;v_?iPFIxTdS4}z~j zgsH_KZE_@pxleNZ3?JAz?{?v;sqnn}!f@1E^`GMnY8xn}|sX zSZxY{h`2^7(AXitlvH6CG(xn12rUG{Vj65?1GZ=JZ125!?{4Szyem90rQ;C5s8T=a z)0sQp{k{8r|MT5*&J}5z^8eY44+GzFi?BO7u=fLv2Ewuk)~+Q;m3`FQx^=>+R&k0& zw5chi=V8pu5RZ=1y5^cR<^!1aK_Hcgwt2HCxGtqMB_~>x#S8`vDw5e7%bCu3QCO9qD7S3@sC9Sp=@vvKM3$0hkUDrq|PO2jXwtf z3Ro0QJB?zy;1A0I+<2pK)0Dgs;R}J~3Hr2QHfkDvTS&veS6*&+)*%<*_S>=BGhkVG zNrJ7$1)`R}Otf-eFiooMq!JZVaerU{_rr4SjwlpxZK*hmykb-8`qxCPt%a*6kowRLKn`8idN^dQj+Q_mZmsyjQ3%=Q%}XtI2%XT zF|3s3BIv&mRllhF7q!JS$-2O9nYev@Scgi0Y&Pr=LrP4;K+`meBIrEVtM=oS2M{yf zp9+EXj_bOP)n`J z_$I!A+m7ivGeLlCGpVuzIbU%F#T5$%#Zr!9-om$;<=P@W_81bNz1_91!;oRiqF%5S zn~y0JJqjfo-_Sc$d`wCvLVc=&|B*|ulx9f9!hTMv>CAHraU zUE^QbP_LhORS*!xF_Ucu;QsrWl#--TJL%ioM=rV}(sSg42gpYcVbWmd*aaJ!&5Vmi zN143)?lb{-{BfE}gs~`Car&+|&wpTV_~~Qw@so;u7+?N^y)&nryL->7AB8hrYFlJ< z`*s3;2m3%L!RxPI^MFi-KHuFPQSOk;cV5F1HHM=hCTk`3?ep+Tzr63F3pStmt{r6a z1zYO-KC!y9vyPvSs2Z$iMX4$YyFImrHqY6^bdT$|EphZ?mXltLB}c%l}aVboe714gLIb>YC45* z2HOoO6bl%IfkA+CMBgTh^w=D&7f#x6=}F6mx-jvu9UaU;LNp3d6W5QZEXcFxm6a!7 zD9T$J! zDR)%puJlpqSU|PZK}88t?Oee8`OD~D)W_@pnhakox^7%xndkMJ?otP1^~9c5XLVj5 zJ@b~(Rq3Ux+(EVc4mWQpm9E81j7FUf?&^NiSz599(w9Yb{qv80;w`V_(9^S=O6NkV z9aXaDl`C{~E~2wzF>xI7Z_j)#`dGdNk|aqd#wS&=Llg^D{Gy9441y?Tda}mu;kO9l z=y(f0Q ziHQ-q3QJY73vpZ(*EE74AZ422z1wNjCjpC(r2~u@Vdn%gZJ-+wdCwxBx3P=_A?jFW zLcy~w9}O!_F=9!I#Pu9(BO#G>#f9&14yGOfb!^4Cu8Tp8E+sl(AqlqaI@vF{2wDg+ zgXb9Jiyn?`pldBO5#ag`>G-~xLoUEMLY!^|$x6#}u}uSAmp}+e!ZD3g@=o$eL ziAWJrk`iH>+00@ZI+~Uoz{QHwF;rYroFqYyB|>Bz&5==T$H{(IS8*XiG=gl@4Nb*t zoI;M;y-$7ekP2|!b=RF&r2A)}u-Nm|!n;>L7qrFqa8Q z#y2wQ_AtdHgP&W?iu2AQo~pm+IZ6-=BkMR^&x7%4*AL{Tn>YMmYdhx;Ex_fMU*3Q1 zwbwq`+tc%4-;)02M!iLgCXQ!g>IO#E%I_^mMiI8_aL%3IKzqmJBRk zuwcQ1>(;G%vR%Um+6At-;)>NB9UWULl}eUCF6ZNxibz1n6w5HtG<~)M4m6pj$S|T{ zTKxV=Cm;+BLpONxv40_s6Xr4%%VzZ0RewY*Ba%4A)l9}xft2ZizyV#LXN;N
R9 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 diff --git a/public/img/emoji/black_joker.png b/public/img/emoji/black_joker.png deleted file mode 100644 index 4c78f3614d798dd3fd8a1c0331c2c340b85785e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3877 zcmV+=58CjFP)Pmj3R0ud1kG6L3ROQ2`Z15o3&d>x^qmG@EV2&Pn1j8l%Q+CiWPkCbrR0Gd*c1 zV-l0NOq)rJNjt_ZN>nr;Vh}+E6%+wM_O+mv_s>25sXB+55tnp;%E^b{se`=t{{P

{}R3L%`h58Ss45RnETAS^5_ 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≪XEsrNQM5y@0dI0&hr9J*MWd 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 diff --git a/public/img/emoji/black_nib.png b/public/img/emoji/black_nib.png deleted file mode 100644 index 29f6994c11a79dcdf0ec9790fc33e79a0d24adbe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2352 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 TjDK0*IcQCf5%48P-G2NxUft(^)L~S{jY1FbpLm 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 D_+3bg diff --git a/public/img/emoji/blue_book.png b/public/img/emoji/blue_book.png deleted file mode 100644 index e2b9e8c797ab05460602c8ce06abb2702412eadb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5092 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 O00003$#!Q6_Hv> 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 diff --git a/public/img/emoji/bookmark.png b/public/img/emoji/bookmark.png deleted file mode 100644 index 6fc4ed90230d812bbb0e7459292a59072068b48a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4649 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 diff --git a/public/img/emoji/bookmark_tabs.png b/public/img/emoji/bookmark_tabs.png deleted file mode 100644 index 83782ff0c600647b8209754828babf82f4fb3eae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3150 zcmV-U46*ZxP){6Iiao$h$dAC-xO>Xc5LIH6<5 zj_L5>!#aBOs4iT%Ajqgwr_Kj%>?a{1(h2y{tXZ>mUA%aag@gg#z@m@F`QKX!GXH;vOyi5MdQ+5R4!+>*xU1PS^hsgam0uaJU zlP1Y~u=`i8T+#XS=XK-84M;#M&;|d3i7I7F023pEm2;=FH(5 zA6LhY9a#Y3j(!aoFhIkG4Uety1R9EmXM)vH%N z$x^8aK&1gDjDQUqG>CJ}n>SCrd-n!Rlzz?$dD^gH1J7vg+_@S*emu%Am$Wb`7Od8- zTPra!k;SS$fb_6gG3SCk_92UW35lb>kTw&R= zWh6kFIB_C6LLR^(A(Gw4MbH&=gi@Mx8&@!4H4sY4MzJtMcnBblZ``;MojO(S?GTe?(uf~s&U2_c z6Be%G-X00}p~hf$$qNXJkipoH$7bX&U!h5}bCi(OQgxELD!$&A8lOFv@yRZOBLEWw zFb*(dE0C-Y<+f`ph-kS+rFZPuAr^v&F+p|}@(@d00>1|25rA_Ri2$9N<-71dylViR)||LJ6%?Kxu#l;S%N!-eL)p^@0Th zk|z=$A_-(cFq$$td!eG=%2&+i(zC6kmpV(eGo_l%7Ark-D5UcDf+2vU1UA_@5)e$% zTKaegz(g@mE0gI5_6*Mhe4T;^6J|lU2FVp~iddw-0jSUh3K-69OPT7y?L5DN_kGm?c7lpV~_f`q?e+aSgb(d-S_; z>>gx61`DDx#7)dqinJJj&@EcDNEUwo{MQscRx3^A>Q7MBCWBQy;Y+>yc_$@z>5k6e zHq1F#0s;oR8ZvN0$RvTnqR<9N#EQ@r!YEb*p)B5_Lm(mu0VpcINoYc_$mlRtS}%Bp zes;^Qz4riC;2j6h$KUuqFb4?0z0d^Q$PymzBaB!U;}DK>xL^B{364(T^D=-2`D#8R*{eM2g z958=Er$4%I;0pdC4AKH8fcTBi(ORGP9wx~-ExTgZ)>p*h880LP$OBM!OMy)vyaZr@ zffGPkia(LaP}BgjI>Hw@J1rR;=k$~5@x1pLJLewYd8-HkV_Hi;e#{sK=0J)}(L}gK z4@^usD3GieV1LfwS``a_{Yv zx9F*rdPc9l-(O^d#CzsPQbi)fScV`8K!t%7L6{pw3H1P}DfK+}0MCU4CTQObS>Df% z0{XCkx*ugII&p(yKKQ4e{zIYSKmJ;k-kqp768}Q|z;h75e3%!RB0?E90?4*t+JFer zLImg5hD-pv&X}k;?*LeY0o8x^Pid-@kglJ;(@(Fw-ChYvEtHWtkPMP=hpAg8XeBh` z*&Ko+038Sitk6Qxa4!Um900ID2u0cPcPda)VDb^}WB#}b2d~)t^+PxausWaDQY0hv zS^dv7{hZUs>x*>eWFW{e^ciiPnEq+}ffWwL^79TDG?kSi9=8xX^ zBMAqj`0EFV3ygqB0Od6zhf6_(i75y7&<3=`Lg@oX0I$~}fRN`6w;X(-VuctaJdgws z8qpKKK5&o|_zNh=NlQ!nhg-)p4iAG85ugY;i~wAK5a=abtg zG(}Qz{g^zT-w>4Ob9RoId#^1M#N^2)pMPtJVm`cJ1(d2K-_px1H#!S=FW1feCl2KT zC!lZNz9d4tuEIo_AjuKew1A2Y)1_wTn&cuLgH77`(@jsk5{ajfi;JP06*9z+Tz}~{^Edx_ldY58qnm6 zG&TG@Lm#%y)SJI)vhShjC%*XZH$-nZJn!&$U<5?UK_W!)gnLngpc%Byn>SzM=3C35 zDpAcL1`#aP{|v!kQc_X}Mb3d+STSV96!idaiwT45dNlL42vAxA9% zbB})dO!c`22qXQR+iwjS8w>M}Wo<+ez=Un`v@DjE1zYPqw_Pan{l7Q#j8`?ttKahW#yqDk~K09>ikWK6_O9G-G!J#tA o$2~^8Lo8uCcmf_Q{6N5e0I0{_Ex}V>jQ{`u07*qoM6N<$g1gnb00000 diff --git a/public/img/emoji/books.png b/public/img/emoji/books.png deleted file mode 100644 index dca06a1ad99323ebebd02ee97a07c8e12a07e307..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6539 zcmV;68Fc1}P)nCl0s?{h#GUD*7cZJ1R~~oF1Z8<^cd8T!Gjb+NNo{u z7$IoHXPn6Ycv0Di9E<$x{m@(fwNo-%w~Xu2CEvi zD3D46)TWt+p?iZ;8dHzCc~^lp#A_l5lq*Q>5+KmyG)TauL=we_Tj}FoQvTFm|N8eH z|LG85K(p6UItX_z2vMGy_~O}pm*_CudIbmkQ&VC?;4Bg^UB z?4FzV93CI-dy`B7<}g^k(Y8z_sKb;Q8_?W*EGX363@rvA2O~3z%^XA%qStdW%v$~) z$$l!^?<;pmg|-+Tr$|MLD2khC&_A=6yw5!RsY6Sz7y&)+?zuDeRv)8|kFnPcKe2cF z#Em=_jy7wD>Xen6s^rGp4L~D=WW><+GR&HZ2{z4qBKLnos%bet1cU+LFhpy{U<49^ ztCX1_Nw|s;i&o%#E_l}cqeEXi6#m~6@N?yV6}gQ+qD4=ebH_l($r}&u8WN%GB8-@z zWwg z$r&g1Klz>Cd{PI>mrX$DJBy!6Y3tLpY=bZhk`s9S{-s-Q-UAVcAq9pKfY<~;n+UB_ z4OD|L>jV&5yX!55K#vR_V+D+~%{_ml!5epzi7<<*vkZxO3IzqyBt;sfNWyqc_&@k@ z$Gwkz{O=!sc?8^A{7hPEeUg*_;=2H+AVmVpwwpKIc+H$`*}HkjwJB3-0GTGCsNsOL zgBh_@4~RtMnPq)$&9o^LU=1WseIyH}BH|zx)1Y&J5UMklC3zM=Y4$i3nwUK8a!o{x zs1b&U*jLzc?`IDE!J(y15zv1}|Md;Abd(kV_%Ocf+2(_!VuWJb))5SkbRrF;)-q+f zoYm$EAoJsOA5V;{7!BvknOo?8nUz=s)Mi@qd4NO?jArj8T)!iDmOdG4C)F&LNFsG$ zPV$S>&!^0Hwk_BL)CWYBa@?8L3AGbX$|=2_x-wioBVMl4!uDsw7zvWm9OX@}es> zZjtg7Nh>+yrNvMF;CG(g7%0I${pnBZ!CEhW|1UoONZL%_4aiO~fVhB+1psb7nggvM zK(!H|udl4NmByJ#Gi|Qzyibv*Kp-PVN)tpy$W0)G)|l?WG6qbVHP2*L2LNr$pb8vU zzHi1^AVvl{2Tv&hwV25`3_Y#1_1@tdd$#}T+wOTtVf{ar!lk#C2KZ9^ce0SYo^=3l z0OA3f5T?});u1KHi@m$Hf-%K5Kw0KC%$RdKtSgc2F=^Ka>(}%0IL{XAf1jsBs9pgg zMECi|idr;tEsBf{GbbisHZF&_a%$tYxnJW%hCIvKlS7H0{cnPW7fB&m;Ma( z0a7x|gBXys=t4>gyJ%zg#28$Uf+rHprJ0H5Zh;>yjybGN?Su4BE6ciFx&@ z-qF2zZp~Ntogipa-UCgYH4aU?(wnnrT4FLV| z#*Nwm(~R4@#x^N{aS_9&*1DcYl@u#8jkzl)SGuBR;ExQBrxSe>?r3=&q9v9uT(~fJ z=+L3`s8M%pw{-SQa-F`)CHXaE== zhD7F{MER^5x6>)nYX)PUCV?!-QbSrSQ8^c2^;`qXvnwbTOV~NO3uE157%q*#_X=xk zMZKA8Hk&{A>}NlF$ICtscwHZvKeq?N#LnUY1)#<@j1Lw)KoE5IbYg6*7fB`2`v=RX z0B!qpJMZVpT$eIIOs|6%%}7CeT>!yyiq+{RmS-x6!xUqKW7sw@iSdqcboyNyaG_8@ zXJ@CDQmLfLTv%9m;DaCh;QR5vH&_6EoCVMuZo7Bn;Iego_*go8_y8bNqXc9kIUs5w zh;L(Mv4Sv+v3=VBcq|Y%QqauIt)c}8C}4UHzOL+bjkV-t@PzAOS_f(uTByu6v3Py~ zJ>C7-F}wrU@4rQBx!@Nx;Es+Cba!`az~ypT&GowDI7pHNxsrb(0bBRnd++dI*Aw+d zWemLdfopI4gWFrRrdKPEV^8HgdZ%1Gx;=t)QjjE5oRujlNB~QsRc+$b%pA6l4{I<< zi-S1?X+s!mP-0BGT?|EvRb%SGB1dJWiIwwJy`LBx8pDC1*I{(m7`h7G3YeCjo*o5O zX;j}kkvh68 zz^zRS_Dd3vOaiHw0u)AEWKliU77;gNoSvJ!-_6=1Ff%Q2B2iO9-dirP$! z)!8~$E-$0MZxGvuCUNt@F^qPMD-a6YdJX61tpF=+E5KUIxz>dcV2mmM*F-q3bKB(4 zPyWWtqci`dT?lO;AYN+R1;D8WL3N;aptIRrfnD@LIDstnfGq=~iA0guuulPha}7c4 zBv~*tF+s)vVJT#kB89-&)@6(i^r2X=b#R0wfS4k@%u$IZxoL z+ad&h0+{*;@Uool7-|W%0gGX%*bl$xKyr@rPc5P77O`VwC&s%cFkBu{Ae1H*Pz6{4 z&rMm)l_-D;j9SajBK2HKnS<8jT)zL@_wm&6C-KB{Kg8^XbBM#JT3x8rWkefq+`sdN zL-!wV{Adi|VFwT+sWox>{EWSGbPO?x5JoL9uUjj*35iZ2G0qtJCB;3{1Ya7XsFWjP z1&IMKc}50JbcwutvW9Ja+qCcBb;GR~@0wU|%Guax-gRBIrnIX7Y8N1cXn>3{4UTiJ ztRWxk_fF4G;oFD5jUz7}!SSgVl<$k69$u_1tQMHGtL6UUqvKmg|1RpqcMpB-c!;c7 zB(odO-Wwwc0ED=7ao!pp7;L(ZR}7*mBD)hbC&0B(X$f>lz#$YLJ@4Sl!@#9-1nL1Y z$!dkj1W9HygtZ7azW!#6j*Ozezh8sx?d?_CQ~+~-R-p7e*KqFJX_~6%`ALu_XQjS^ z$6t6HPagXRJbmH_mRFV$)S8v*a;=qAQ{U@y5BCrDJ~%Qy_Pyu7{`}mJ34&T|%A$)% zLI42}hBz~Gw)lqKyAeeVG$aEBK@%KQ0z?S7gkaoZ@EF5KE&_kPh2nHi0FrH@AWd9g zp@U*~0fPgB*t&HqMn^|g1Xth`VAX5Q0?@z!D3JOY0F}maZEL_sr;g(3<417j{FE-K zgXKCZD>eAky6E(kzq)n%_+uv?oH~L{HY+pM5<&BX8J2;#fa>Zp7HTzgc|O9BLcl_V z1Th!zED8pqeuOmU*v%Mz#B!?gj! zWYxl8B+*Gy^iT#@P<5TQWoM=Tp96T{Y6%bkNSdb7acbX+bQuF> zAA#+mD~ZrZB+4GpO3ilDp+Khs!v!d1_=SL=dzRqQ(HMf6L%@`4lhzu~qjnz9j?Es! z6UTpuqc1*7(_-+2M9ES_0=(11 z@?!7{FNc5xK%j*4#XHPSOTlmQ4Ix3E=9^EQYk_7p(M~{ zGq^;8MZle*jpBKN2S*5`FR`?;sI@-7G>=R5OPIPmg=bzmieuBq&}=pk)mo@6*0fnq zNEdHt66~n@=;RW;glktTTMQk9z-1H`5%4L6>oUX<2ZcGgimJ_bJTNxa^S%ogR9DLHdoB%FIUYtP^ggvAiS!d7|_L-i$if?%|4ApwCyvWk{uM^VZ;T#5n+dJ}?y zI>U3t1W_x&RAUN%^|#-|0}uUo9DVu;oP6;FuFNfMgS%NCqG`}fCRB(mR{QV@lR|z2vYM?L^{g>^(d-**GB!6 znFc@|wr1OTuoDyPD%XrsE@avjo}f3PD)Uc0^N+E#0ZKUu!)6YW{WaP z;5+T(ahF(-kPwhMMhHsaTNV;2OaPO{5-7FdRgxPYo*dbI*V*|~nWArHLXpu;X0h;_l*)idKm&Ur`dbREKHL8qoK(VLXiRh#`;n&5XLb? z7-7fQmS1|;iPK--lnW>;AcP12={hT@OIrC$p!+tUSU^%h%eHZ{T7~t_x8sTVd5F~t z1TiPEuXYn4Xh{pT25k=eD?ga%ADP~K3}}17<7ohZJ*nRkQ)N8h(;0@@-rW`u-S9t5gy2a3HF$3>BO z7#tkL*w~n^?-^s704e3GPJsKu1Ng_NAI$4{OFd!#3BX6M`j4atAq;?Hc17p`u*G+K z?+&8LkA9#(#(-bN#K(RUyLRnTn;Tu?a?W3E0`xb$c+bDa7a9kE;y6-n!L_0f9sc3R zzP5P_FtRZgG=gaPdklSdT}k|{{hryUuiw)PAzpO?q9}sL6Kr2Nf|>2(@N5^YR{F

DttxZVT7RuI@AZ2zhz1JF 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 JPDHLkV1iV8h?)QZ diff --git a/public/img/emoji/bow.png b/public/img/emoji/bow.png deleted file mode 100644 index 024cb610492b005e11d41c368fdf0519c0ecba1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5143 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 diff --git a/public/img/emoji/boy.png b/public/img/emoji/boy.png deleted file mode 100644 index f79f1f29807f76432586afa2304b475ee3abdb6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5946 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 diff --git a/public/img/emoji/bread.png b/public/img/emoji/bread.png deleted file mode 100644 index 7e7c63753d3b1f8b94a4a96569339ec15c487e88..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6214 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 diff --git a/public/img/emoji/bridge_at_night.png b/public/img/emoji/bridge_at_night.png deleted file mode 100644 index 495b06c3dfe7cb55791cf54a934d1453acf54da1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5137 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 diff --git a/public/img/emoji/briefcase.png b/public/img/emoji/briefcase.png deleted file mode 100644 index 46e82b0010c7d7056986d6651f6f26871e38117a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2698 zcmV;53U&2~P)6xIrrYG>T;Ctc6WW=^YPO6)m3*-$*sQQZh?#Vk&dn{ zRh>G&=RWUyPSsV5s`5pa;|s2*20S(33$CXIJT>5pt)~VQoTEg<0UjvYA)JpCi0w$K znmH$ls-7o&_3ZlkiyL~vZ2`5J@PsA6 z1EZgR`AgsW>Z`BZcwzGzf&=Aj5>PU?wtx7-KfM1>-+Jr44_*OwfhW#@>Oxgry*wJ- z*tj^NP$lKSd8lxXX3l2r<}=21Jq5xOV}Kk8C>N@0-ODyy#F5`|KYrj-vjnB43=Xc?RrK#d%NF$^=H2HyPMB#P&jYN zh%wR34e0-h0dko{%RbC7`R z{az0dA;w5EcZBdbYdoo87E8dcHKn?-v2kHSXUYEl{%}xLoAddMz5NMQK8%zbGz+MLz(?r1dXcTK|(;~N7t z5P@ulEG57J{a^ltpZk@om#@5W@#6Y$xVDBXJY6JUcRi)_s5HGOPQDpqqKk^cTlp;C zv{$h$@o!^{DBYA}Vltib@ZsL%^9T2T>zxn2`**+`NXrHk!1}d~t8f1FPrW3YFTTL& z;zh(c1f{dYaik15Oq%(zByM?*AA24}(45(S_>k?bTSNDsKX?<^1mdF%sDO)$dMR?R9cB%n6Ci}*= z2y>iMMBIueAhQSyW6B*$p#2t?$RQJ421%^6RLH@YjO}y-Vxn#m5Ch@`2Pms40Wvf! z#+14>!9-}vAOu7NVYQ{uuozQJ9ZMj_Y}2@iX9T5Y71V38r2FX2@qsC!gMQ-qHv7&r_ARI ze&V_3@WshTYedK~^V!|I_MVHQp+&b#%$E&N0F&2 z?9L_x%?!&5?;OrM5ZZ|qX^mJe4LSaAOr)H+fBylW+}dLI!7hSwk_CbQ!o%qlah`rv zSq&e70(uNrf7Ak1ZPy^6kdrk&CZT3BpBdY!1~~7jQ>LCw*p;clR?blsp0X^cyvI3@ zw8^kI%OU>JRUCz2zX@vLdF2!YDC+d`}>(?<+=Zvb_XxUCTpkI~r`+bVSldT~|79lcT)Wqo=1PT!|q;dsC>8V7( zd&J0WLCj`T?tH$(?eT;!zx=a&T+r5}42DryC%MJ=g13 zJ)DQs?w>J6LTVh2=I|m$CUrn(ifHqbRoXkqIp zio(j*7ml1@E(;d(#pwos;s7sL)P0FLp38!qvyIe@mi!0AQixWrbJcE8oSrleU zDS|J&0lRiMQ8NeeNKVEC9d-c&Op&A|niM&f3@3t_A`bNheUw<1WVJ49#spRB`JC;y zS=>PoXn|=zN3lU9s~S`8auUqij-*Sc*L3(l6=`ED7O?_3d=i8z{p;8Ht3ZXw5(5osyIR}1YX}P)>aC|7|p+dxV0tJMQI!hBinW?J*dN|HQsRjDK zQp?iO02^wxstBtuS{6m=WPmJ1X61FngPd*vlFTtsG9WANf{H+!Xe4!eGL(x%Oa-2V zMH{CmT&K*1mt7!*za)nS1|>l9ZIV&{GZSN53MD`AOv*>(f|Me07*qoM6N<$ Ef(IKLPXGV_ diff --git a/public/img/emoji/broken_heart.png b/public/img/emoji/broken_heart.png deleted file mode 100644 index a1bc850ecb4cfcdf75f8668bd0c668537a764223..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4118 zcmV+x5b5uUP)bCYlJw0Krk3$q;ok{y`;~5S4t0 zn&==SXi-*5jL`u<6&=TMf{fCGp(sHcCQLxWSDJ>VyI;Ti+q2HS@6_qOpAu$>Uv|~5 z)BXDL&RJ{kz0N+DdzFablWYz?(RPS{Lj;ttpEg~o!2^J^BH&a97zto7J)mzDV08p6 z|B1+Y{Ep8C42edpSvKRYd?=VYiSLEU-WP-KNHz{ zfCN~kZv?(w0&XYpVJ-kyBnB=y9`zkteBhe7A}u%wc9T+n;Q&8%fw6{shwj!#Ri8JY z8#Iwph(xvo!1sP6^3MlE0NEbc1k5ifby*2OneK?hlQlIpVeqI?7I|(*s&-L7yu+h10qligmCP7_g!p$4ZaNW;%N4{tvFFjn1nA3As~2^~LDWCvK9 zg&A<0QdbiEg2p;{O~RO|Q*qj?S!g=^aC9-vJAeOs)OPPiMBpM4dq@Hzk(h{pktp-p zK_{Gm64SMXB&>Yo5%?lMAqh8PKaA^mh`^_5@<(5A0X{!x4jh7PU$X`Qvx=I8lHN;`tTlY#KHU15Z3L&XU%}i?RHUJFus{9f4AM9TVC<1F=y&APGTOhshflY@EAb0bGJ?d;N8UjC#3L zf}*FlL4r5i5Bw-foRd}QibA=C;MY9%7FS>hU&&zOO?o_b0X0H5)mE%HO70Xq7J zH3FAc>ZyMi+57DD>2Lw;qM$@fpAu70ky&~id9lp*A)}O(LhKDnA>=|d02i^jRp34V z7vzcFOkiFE;LtIOVy8sV!^k%fxc**O&z*|Ao!kEGio~ViQKQul!mSUr~y4}l{BiObLB{Ip7Leh;#su_X?pQIHW zx{jDn!R(-Dxd3|TUz$1de&pB;;O`0i)DnQ<6ulwbX=>D*imrE(>2Q7%d2qDAvli8Z zqQQAApS^Fsi2=lO>^bLP@6%5s1V#@8P6p6o38-&*4UU6Pop~mz@4SO51y73&7)1j% zOtEf9+YA|^v@*9bgLEV!P3&hrbN_|2XD>m@ZdK|}o0u7z{6S3h5nui?6qVa0XxF5? z1#jnou`C%PVzL4L)~)bZ2A?|R6#UQ9r3k~&34t?u6EK<%m)>vCAXNJGL+4v>0X;ns z*NuTW78oQq18gfA(G|aAAHQSgZ+?Sv^4a$3t*!r%x8>adJXHZ)ecgz0 z+CE|@#ej=H7ePcKyBW|%3UYt;FI6^84lpXgo`4$a)(I$c8wtq1V$_@;j13BWLRmq&i?a{$Z66^VBnSnwHeN+c_SIX|l~ zgs*F#L20D8IwYWeh(Zabr#4Pdz7{=Qb0(TFX6sMV6C2lyX6^5I?m1MuyWu9p{CuX! z%A6kmxPeODqXn)%i5`C8g>YDI%JY)c4?|6|N#{Zhf=Dh2k#>^>o`--QZ=ngMrkDT= zD;^vvMW&P(PeRGuo~exdu7b5BRkP-w5Csc5b@- zgqf!_=)|*nlL%ba3`yCHv<+JlR6{_mcL{jPfUDIK0yJO|3%+jVIrcz^@l$u$tx7$N?vqIon zbQQtVY?qnpHO!hI(wB(TXJWx4OxA)>JLjn5*k%ZT0P9TJ1k3=RkzgyC^w_5B$|1lQ z!E3PbeqYl93h2r9O%a)b9BTw#GRN#j0&b!(Y4B#RH+3KN&Nz{D^s}jN%OnAx@_^v| zefx~IwHgB80Ba13x=w0T$%bQ(MHGf6U5uJT_0|FcSFVeYgmtf9j~bQVtuszLY`#*b zG6Q~#l)1pam4FF!xFk7Zo9*hY&+}~R7lXCwUR?i%z}Q3Wt{ZQE9?LrdA{Thu5P&MM zx+JoTlMe;0XU7gSQIJXmCtRRwg(KOT7&V9>B%1-rs_{NRV6L$QX@3d8kj&O6a@ky^ z{)!qf*bzZDPk956JTk6-(8Y?KZF&sI{U9N#Ul;Z!fNSpDxDiou-5-egEkgiiiR|Qp zS|Z>}tX<7g+&J{-*;>{603(V#2FJi7?$rUcLQGUGaAR-?@TW@6zg}co&V7f!ae!qU z;V}a`dD$a5ip(3 zieMY41r)^ih^bgZ5y^p8YFiR^vD#C81*6~D4Sd^L?X8~`p=o4SR zPk%ZgK_rv*Mw7&hy+7+Kd{&4Vz$#ney}Vr)^4c(2?@}8GTW`;VB0mTjHA8~WMh5hf z1r?7f6YVT`H(}TO+a&;wK+32O&5M-!8aSsCK^I$RlAYY=tJPAeou369t@zaegHDq4 z`r~_ros7I6hB0_z+}Z`am?7Y1kw4t4)RF+W!qiTz#@QA#cUN%ek^{a>uP8NS4x`O1 zn2MAIEQJVIW|Y55Jt&=ga@>-O=K<-)Ck0r8RrRb84U$>P5{^%SHI}NUft&k+dIX+i z`tM2;V8H!TATo&;mkbF}3Oq7Vx8_&^V&H)u>+UOc6-jtBT?$w7_s5i4P~qQAdiU_| zuERUNE*mRJgt70|D`E~g2t6+@%aGCbS+are8=&+glg-b>R`r4Tg*QbhRxLkM>e&Fe zIIvMfR0uv>2ClhFY{8>qy2XN0n8eI@N~udCW{L(GF^WB{t?^AxhZ^M6cO3}=fB^O1 z!@5VQK#46;L;EwXx_0R|B`N)?~`v%SAfd%B;D4-(tj{e3>*A3c%nF>|Re#(rdhO6h?i z!xd@&j){KOUP4is5qyz}^RqTx5vU3@$66M=9)rHMf75LuZG{Bnk^n69MV9#XOL7Fqn!E?QBC;^=WcZ*`=PJy`1>ilp&v_ZpClB}m388twwKZl#kRn0SUQnBn8AWza7P+cm0ZWY5IK`3A zet#heHuXJ`bsfOX2mXYJZCBs%f$5$|Xfq*?2xIy6Nc#$MjAA=qH%YNRq+AuJe{u9J zc+@2BCBJ1-{{RWFHeKWyANW2Uz5!oALX-pE7g;bqC-vENenFoTDgdsLfpAje##Cg(+-Zb27D-Flb>zrhD4-7K>2;1XaDF6(?? zq9@Xs)LAhBp;E^zR%%S{q$2-fPmD#Wp9OEr%X(nJw+FyC7^qEu)aL~MR^&f=fT<)Q zu$f@MXF9Pfkl#2hu<35RaI3TA7DT>Bq^Aaa^IIY<@5_UdBw=w4xZbO?9~76wMC4er z$g>cMlp&$0v&(q4<~od*=(ECI zz%?Y{@pPwXZ;;?JMMKIa1J48^k}02DEum+@KfW2b?gM{VdYXve30&ogJZFH2bwo=2 z$^F1dd1s9fSdu0#$bz=ut?0e53z#~K{C%(lSQ5JR{_Be@>stpgG8)d@f9FH}!UQv6V-FWf64o0M zpp+Aln1V7`SOi{sPZIg<9*HIR){n#+BY!9I-z4E;pJYT9>$vYJRYA%&C%ZvtL0hjS z8Pe_pUuSl`@sWCEX1d7RLJ|mWb6pTe^#jg8%BbXC0Q@>t`{s65XGrkPY`;H}?+h^$ zR%-zy3ELv2R8(+N)B}Ez5kQe{514qR$crE8m!_^3Ss4PC>idGiF|P~);9m*2!-oYQ z0FxN`r5}s8#=ax+p8+sF0){Ez{G8kH@A|;Y7CgQ|@K1lNUYomB(+US`cF+-y?V9! z_~TE`dHnImuX^yIZ(jGn0}m{^@4ox0|DQA9i6@>YFY5Nk9((NHTU%Rq1G`Pr+ zDwU>CC;)P_7<64ncR0~B*EQLE^^BXYzxvL}(`SD7;Nj4+zMgIZfdH9I79(dB6qSOa zXfB8IqzOO?QaqwMCI^9MIm1wd5bEB&dvARI{rB0oZy&uqy@Vq}2ZF)C4~7HL`-Xy% zpY#m|hl7D(ti%A#o>0eE=0vuhEp{zCu={=X>^(^Lv4NpzIQ}>8>fyGQ*~hOE?!n83 zhC(k64}}Q^B7`F$h6eIZ#t=m~L(rs@RzqFOdeh22STL<!)#na^i_3UKw^!n1ri7LY%q)&Q@=+bJ~}&SWxujPb~|;xEsw@_oi5MUJW_`B% z)8g|6EnA+WOG;^9PY}nf3Ck|NmZ?)_QB_q% z)=VsJtZjXK(Y%YDjIm_3D5>*vA&?l~5kd&%b2Y$`;uhUQjk5%FCs=97hYFbC9`e}4 z+wNi5D5q;M&5Iv68ID=#?gFZvrz9A~5E)YW6rD59!?J90hCw2e;G7xr^o0wSZ20SM zF8}Ab3%w0x)m*Kp3>7;f!5B-{3fHn*ai8`aFwTAPmrkxy6wsU?9AE*N2&j1oKtBOY)(v-RctON_B%g>ZTsnUwC~$miApE9c=ZQU%k3OcG*;j`6}z ze#|dk+s-T7yE)bqphg`b6&oU(k70&`6!K9T8!NF2ajL6I>FMvHVCC^w*O4{SAT)&K z^T&FtzBPGr{ZnGT&;e**nN=XWb*n6VE>Rd@g%G}K=$ceUZDTuB*MYkfR0S}=qrfXi zVf}t6NVt7A+;To--Jq8Mj&hEjJBbTAuR^ok7={AUiLa!FZ9BJ;%7p1Z>}JawyAfJ} zbTWfpnt!8iTJR0Cz|qam$~Px=glY?v?G8RM%u)GbP zy$qhe6jszhcNc_uAQdPo86#_EiKoJhM7sIqYcF9Gg5=Bq$y|U7&bx?kFoV;pf2d_$S1&Tk!+(v`vAn$7L=lIUKbh8iGU&QpuABVXc=@i5UPnrDak3RZ<{=sgRE}l-_9wwgd=9(1?$)=JV?LL90EREBxqNyIT zfd)#osk1L$dj8Xlapj$&wWf;M;TS1dWYmn$>gk{{fsDn52(0uZz%c?s1+NW?1}GpT zAi)+O1y~vs@?iFW-2pBRQ`=O6Q}bfTFa^VlDk_Plv%I>Yo2)!RnMXmUYH&Cbm^mj) zmUhz6RJrDd&#ww@-2U=r)532GHhuJ(%q+V@G?dq3Nhvd@#Q@#UhD3t_SLoPj*Ts2azxcCzQ3pqYuF5 zHy~@67=<`S-XJodar@fK={%>2H{Sd=G}X!39kZ#gYfwBc#}9l}WzQ50_D&2+OK+p% zwCo9P-78-lSRdbAUOg?0_+rsIP5(KdTKy70Ub;W5<_4s@Y8>Uu5DmO zAY*`VqzH_}SiE!wx81amU%dVt$9fJksihsEsQ60D7>V^enrqvxnAJA3k1-bBAxb@h zIk5vLqq8XTnePh!LCQB{urOWD+Nj2B0ZD(%Bp-`GxEJ~dVapWQ)dDgM0?>7E=pa4t z@(*C(V@@K+j7dtS&vo73Lq2oBh! zV<0s!!+-!3pa8A2Ag97T-|({Pnic4>nT?xwuwdQ{eBLsgt}>2w5Ayq+A9CaMw;~it zI5I+CUr*75Lv$TKeq+{5y{9THEePJ(yq@mmH`9o<2gOPq3MG9M95?IM!iM<(CRV4$15pB(1U z(ZhUv;A1QT42*R1@~gkY?KMyog=El4KBHc{=vwthLZNcgdUj6i%F{LlWD&sn_9Exm zv0-~gE-xu}DYVuJ+HLjCBWLFxi5O(k37*>Z9t&DKptcce>LH#7b2y3Hl_Z~m@^bKc z%DCYCW_pf~kWAUs)N0tIS-hkjUxnbq_Y&CBrm9{FfwDFow5Q7=jB(Y?qGIu4l0f0K z9*&kL)#U{tTuxiy@j`P>Gm;gBClU$+E)Vs^;vSC-^K>!{i5SF^5C}ss4t+zgWg{Hv zg@H(%6TyR2)#PaJ@DYv2K{aS-^pZ1k^d3p$@=BzwU_|}Skz0{#|A6(An~pT{O&+K108(bQ6GOQ1Mm-}@;>f=NpK21dFBk5-CM_--*5 z94{%OsZe0+ThGfdz-4PhOQVZ0V0`8s&|x{-q#_4vboF6JvwfxQ%XY5Yk>8NbVxi!S z#MyM|8c{WC+LtE#9Ov7i5M;ApnvlZS^L`IpP&@*8||#aAli+ON%**WGxQyzaIJ`M{$W z#0fM6Bs;v1<3lzH>erIavw?{-|Lszu>XhX+sbCbp@B!kfR6 z@w^|sbK3IwM>~2K$&7`WhinEiX~-63go*}$99uR75lGx#fudT} zRy9$;z~NL_e#LA$rj$5KOIKo>A*0gd8RvwpIQ0;fn((KclE2g}B>5BH7Rh_G?42J*| zo0jB0(xWd;ibnIc=g5!G44P=ut)+eCd;I|~;#a@Sv6$h^*JB$BDoX@IXx#a$}!l-g(|u|`)# z;%CCFd`wHv_}=m_H~y{H<6AUqR-5W9Wr0z^ltn&0dzi5bopEUVnUQDD{4iP+C zQSF&h4SZ5CcfDhqrQUMpS$RGl?8n*A$nrxU!QsPT#(*ji0&D{+T=gir%9KvY!lezw z;&JkM14Xgv=?QS)P!F?a*5RvADJeH_IlSn0mDeoG+?ujdT-dpc=DOA||NHNr4Pf#0 zvCWincMVksp6B?dnPLC0r157r;M;#pKfO+f^~|Q)XJUQlkPMFIzf?n9OhYcPQQ?7x_|1Vrm0gWH_d$MJO6#b-zXMJR%Mrz(jMJtZFCU_{;UQ} zd`bkyAB5s1vGrLQyXvdrLdC&{)s?Jv=)7N);?be$ESS>?oeQA4`UIAdK;R>pE@k`g zgG`=WOKWQ-3m3LyOM^r*gW`~Q%M`M*2bbcdM461DJ1DF4QR$xsLgm#hFU;|}%QrVv z`)~c}{u+#Zc=Rw9LlS+GDzqM;0*bcKG=I#UfKLh0-+#trk{tutidrfJoMmocR4(^O<;3|%>bvx09gc(Vzp40xyZipyzE+W zyJ$xtCpGS>tL4LrYD#Py!a*o6hg_~Gv#30zayFid3|adqGFM4BP(q=gQ(Nyw)4*FQ zs48j1rMpR+S#(zpp(j~+`SlbG1!+tA2YT7DYs+-gG*=YUdU?@x=+RIR&n`F8dsRgKO z$`ebDU>2enMuHQe-E{Zu0wsziBV>#b3_DC^xr1zi&bm3md&;N4X`K#Bgy!ntl8)&! z|Mf^$PySI$S=5snucLZBeIQ^IF&2B{OG3 zStTS>W8c07x)W@m+z-hFNEKp9kP0XQ%5B*A8|XU((O?p%2g)1waRvB1ng!!(dUCINvS z@OJc3Oz>YvJ3p;-cIH9cr z>T2M;i(zO4qypz$2)PUdgD@}*Ck7!N26RH7>(Aw<_Lj`AN$4*oOgSfM+qgZFdPBjA zLEs>yBGB7+@&gZ@7(0qfgQEnnK-ZzN3AztLItH$KD45VO6LKcR;*dz4G%px|KoGJC zP$kGL@v0{Fe69w3drxYcAz54DpsT^HQZ5u0lxQrea!~8TI=+k4vHcv4j=+&a(0}4& z>*n%c6+l;D*AD1DcCx)S;H&9UzO` z|HssG*=%;c&u?8j-KG6)bCvk!l*QKVGtOg;*Tam3i+IqEk?VdBj_!wnUI+&vTGZRG z!JhZPwm}-uG6km3hj0v{MMa`x-~Lch{m|V7{RiO0evEQIPioC98VzI=|%!DTG$@8+y*7Jq98?AZwoQ=zsA_8)-O>EQN) zw85o;#|1-S$fh6`gnSqps=-yxi=Vv5t>e3JG@0^iY>hJjyMSdw!Q-RU%#j~FMt^-f z4OW4Cu$QN%oy+Cj2be?w|Ii^+j{_8-|1h9|ssKP;EkuG49RzYffdgTce_Xtn;r1D{ zY+O&@_+)yj93UrjfE+gpK#se|gnJ5L0~TNc#@MKjDL<||oMX~Im8Ov$?xjc3kd@Wc z9ofwmA&5$NH*HkvPS)7!%5v7#r2`<2Y%6IwpPGv>Cfb{dClvI0|{p+BW_e=L@}R zI*!rzky9CPDkC`68gVLPCYYy;yQfYxaKitE%Z1i3jjHb51c1V%xl~05NyLW90M@9^ zxfp*cN$lvyBmg;47pbd&!6hzsaHCR~U>30GvL3P_C=X<%pEg2+H3~`hv}JTK=dohl=LeRF5>FdHf3n&QRl&m4BOTR ztJY^#7H(Lr(Mz7+EA*IO@JxjMI(okFH)T`dzbu=c{*zQ^>^^VCvszIKtc{D`>yJ7P z9Xh0N16aw>XTKYQ}`J%Phd8QcgH0O6MyztlOPnDrOh zl*YD3N5fmk)WLfnX?ye4slUzU)F;;0m1FC!1~fKrKvmraILrNTxV&IYfo<#1bF)ZC zClDPQ#@JvOL!$|(CL7s*pYPeWhibl`lnot2!0VUaHcBnATnrH6``$R@*meMN5WuzX zhdy`iOyt?t<{D+sy|3e_Z$j&D z?WXEYdl@{N0agdHJPSkjAufZW!a?O!VnLTK~zGja65J zDafy!IINXSxWxv1^{WpkfBcZ&;r3N1-+8v(0dgS4)Xt`$(TunPbtPy}8pz;rd zf=Q)qF@i{J8UW&)Ak5hTgs)$>FQ4j>t_?)fPk(OXgWH-aufIK>Wsg1fw*HG6p#0+E zne=$u6VA0K4y!L0_Wqq-(4TtZiEY@jZx>waT0wR_2vuOL29QW(UE;_n1>+FFNSNRP zQ8hp&6rUGOcl#t)nbS7tYUO{vGVy~y{qp9I?WiuFeu2+70E}B>fDpe8+Z8lS8D}>h z{M7id@RvUEa0_m`vxS^%TbNDt0ILLJRYJ57D=MI51{P$WL}z#a)PUdsJPPXWB(22uOG5gRPWG%S?jK>>?!2FN-rFzA`>YG38eQw{*dTiRU zo*Zj7GRUg|RD-cq^J17h-{U0{gkZK{Dj<-k1V#$L%0V^*$O2qzvAVUD-7}rUk+-@Y zy!7LlPiOpVU!K12Q3ZgtH#jCF(1In z0LWnCADGOMN)#Ux@O_3N^ZRh{!8>0GR1LXi4c4_bqph_O7f(gMv}c`GyQ8AO<|=W? z4Jf|pHlRVTXbN;CKEHEo9qOCwNv^5~!3Us9WFDN7aFOZ-FoB4Y5n|f`Ry5HElKk*A ztwGDqCX~6Q4SnZkpNx9jjkz{tJeJe|;Gh%;^qGVG@sGKk@UP$GCs%zfBZqIk=b2ZO zy%19pDn`La8Sz2IK)j9@pejgZKGZhVp=I+b1g@t(?Z-h+4t{CL=YWQW3`0koJUE$u za9wQ$s_UvCmDd#emZ1WGQ>$l#H4;OWx7-ccs*xbcGMusmi>R!kVl7KFxM@jOf$iJD z(gll5A~42^0D}Lm%yZqa2Ywfrc^*i95x_8KoKrt99%lgUE1(;n0Y#7gA9*535(A01 z(lpDi&v;1dO-V~;0H1N`ejJ36H}aZhYo>0&HY@=4JY+5EWl|?$M^1y{U4YXPqMA5< z&Nj}wfMUWL|1KzgWPx51ugf?VhxlN@woGIS1|%7&%kc?{uW}LNv1H5OAYTTx0XxRU z&t|iQM$&ZvCO{l!EpFwihahkKGN45OdCz>gv*Q3(i&k&~<^zx$ZLl?8`Os=fLc9tF z1Aqxj)sReTDD%m|iK+SWU$QxXcrT1REgY=$t&r&cQBZF**|C;;o5bOdU2Azw}Id(Jd@l1%&xB z*xbC9P)6sXi2}xkroqz!h8&2p02zR7fygfT%m>@C5oAU|b|s(%0ow-U<3)|O>;jyA zk@cc*fmIX_WI=WTMk0|Ss~sO{mZd9k_!YG zO!guZ_y?P1jTnhJRAQItZW^0 zH3u-KFii*Xv6y+%KnTM$XVCfHb&TH#LwB3s_(6NHyXkg+ZZ7)(Xz2|QeEsXg#(H0Q z@<@C5CY9UIjNXXgT6+)F^cWbX=4Wy;iWwyim|e`iWveKw+YfL3{ZL%B#deXTIRmtk z31kCEa)KDT8o)^B81jaC=6FZs)!K?Gb#HDWBdYP%7$Dx5tg=vQLxWrY-n*f9n8$dj zziR^B=Q=^w2pFk=Z7;~E0h2jk=qhaHghdAIx#!6Nk|fy0o-eK-921~%BtoMIobN+) zCNa@9o%;KDTGd>Y)(l_zMD}m-#nJY5*sfGMBr#?my)yND&d}cNIX{HRNH<6diZ$Kf zX!99{10V~`;R8$^hMtGb%Gk(5Nz1?7{UWLFw`AF#-Ts=`jN@5YPXUvE6c|qCgNprd0d!)o{3b-Q|XSK zcz-&abE^M5&^v=re;-I16uKmi4ha%sW0#SO4HT<9HQ5QvFu)iCk^etBIGg#ESsWw3DsJQAL?VjI9|>6Wjw}(2)+Eq>E>-Nt01SQ`3b^ zsxN5+E5!goyBKFRcjwOAZ!4(!Drab@Z&57NPN*T=du#&*an@kU9Si?+7bsXYho!zZ8o9eML@J7m}zg(gQ(DCC*qaKPjC zpt9NzkGJN7mP{t&?AWm%B6H-wW^tvP`ubq4s2e2(HV2_l(0=iyZ@a$rt#2cr&*18{ zPWH-oUSt3I|G$B+f8zzb^6INNb>@c>@NL&3|LVHh>XFq zQiWuyAZ4;PvN;o(Ir1`+1qrFFgm^~bBSS&8pxc0E0hx@3f<`cP(=KIxrL}+{7DMEY zJJ2P3pWCY{mlkj>xNG4OzG)*Oo-YuEAVk%%U z`CKx2t@9dsx_dAai6IyYA<#d7odRGo??lU)$8 zq7Be>>z~RiDzJIWW<2n~LG0hV7kBR2g9H2b;lP2ruzhV^iiwe7;=pLh~Z zkN2_K+WLD|ya7aH`Tf4H-MM=g6h%g$x0hEz1esI{(P#uCqa*0=pCf?&KrgObx{RZ5 z9>&Dj%@eWM%samp6%Y&tU;ggv|AFgWJy4uZgr{dPcw+#QlR*?z9ln|>G;i93?X9iY zvUMBw>^p$E`nm%R4GkMt@E=T+sH>~d}9H?KSk@7{cydy8*_aYC2pl7dK-S@BMoCYkjCJ z_oAb#4_7WPcYlm)9TzYjW@;gUe%I5{nxJm+4{zd0NZ#>*VC zETOj6k5noNRn?9G_zI_*6XrxYD#zql3%?f-kL5fGE)?$OREu#JN9Mf24S0}Gf)%nX z+oox9tN{S;3xl#kG&o6)`k}in>=p5KScuSs2!oU2G;yN&eE!D(yc|h9mlL8RBJ(+c zCLSljGHrpyZNP*$h^$LOKsl#jfk`q%2*J}Fwy@*{#KUAfh{v)vK$sxJLlPp{g0Wn{ zPzp^{h%JO$A2NX!UJhF+Er11rB(W_Cp=q%Vfek diff --git a/public/img/emoji/bullettrain_front.png b/public/img/emoji/bullettrain_front.png deleted file mode 100644 index 16651acff8ebb8c7359f15db2e1eb9654ceb37be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4992 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 Ef^`{Nt^fc4 diff --git a/public/img/emoji/bus.png b/public/img/emoji/bus.png deleted file mode 100644 index 823aa39e49d233729f3f3f1572f982c5c53fe36c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4065 zcmV<74<7J|P)b9L#5i!`B3y?n(3mz35u+2)*N

O}A0* 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ÖDhS}xPxzg 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 PUk2oU$lICg6qfl9-`Xc_ diff --git a/public/img/emoji/bust_in_silhouette.png b/public/img/emoji/bust_in_silhouette.png deleted file mode 100644 index dd7defe28655db13dd9733fe755db06d4c8f4f87..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2005 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 P00000NkvXXu0mjfIRUxz diff --git a/public/img/emoji/cactus.png b/public/img/emoji/cactus.png deleted file mode 100644 index 5a2c3cc725e393a3a9836280a8efd8fe414906a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4509 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 diff --git a/public/img/emoji/cake.png b/public/img/emoji/cake.png deleted file mode 100644 index efeb9b4b2145398db357367573993a03da9c30e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6129 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 Szc&p40000=S+nFAciwsD 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 X%^GA7sNl0300000NkvXXu0mjfI7n*& diff --git a/public/img/emoji/camera.png b/public/img/emoji/camera.png deleted file mode 100644 index 397d03b39351adf90023aa3ed00cee36a4ff1d61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4661 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 diff --git a/public/img/emoji/cancer.png b/public/img/emoji/cancer.png deleted file mode 100644 index ea43a4a2a048ab575c02240833133f1456652898..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5384 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 diff --git a/public/img/emoji/capital_abcd.png b/public/img/emoji/capital_abcd.png deleted file mode 100644 index ffc0cba4b4362c1c3a11affb2d6534cb211525bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5136 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 Y1rl@nE(@(IKmY&$07*qoM6N<$f=uQ5EC2ui diff --git a/public/img/emoji/card_index.png b/public/img/emoji/card_index.png deleted file mode 100644 index 374e94e9e8466c0891b05f22af3929a016960034..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3749 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 UP;JnL^Z)<=07*qoM6N<$f-NfCM*si- diff --git a/public/img/emoji/chart.png b/public/img/emoji/chart.png deleted file mode 100644 index ac2c4bb093e395db35ce002e96aebf82ea362a0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4331 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 Z`9Jr$w~gsRZWI6j002ovPDHLkV1jX6^IiY| diff --git a/public/img/emoji/chart_with_downwards_trend.png b/public/img/emoji/chart_with_downwards_trend.png deleted file mode 100644 index cb0d2a113c70eb01e78006d76eb123f4c07006a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2897 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 diff --git a/public/img/emoji/chart_with_upwards_trend.png b/public/img/emoji/chart_with_upwards_trend.png deleted file mode 100644 index 7c66745c9875d3e8ae73a183194e54d8921805c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2930 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 diff --git a/public/img/emoji/checkered_flag.png b/public/img/emoji/checkered_flag.png deleted file mode 100644 index ead4a68dd37d2d8d817e8452f2430e85b9ab6211..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1675 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 IM6N<$f=Vcy%m4rY diff --git a/public/img/emoji/chestnut.png b/public/img/emoji/chestnut.png deleted file mode 100644 index 066fb6bf6df4880c20715dc3809f1c367ff9a4d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5875 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 diff --git a/public/img/emoji/church.png b/public/img/emoji/church.png deleted file mode 100644 index 4c07c6b9ea5beb5b036c498ef4516bc4de7dacbc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4653 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 j5czpFho5ize*pgr{PJzNs))a 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 diff --git a/public/img/emoji/circus_tent.png b/public/img/emoji/circus_tent.png deleted file mode 100644 index 4af8719aa0313843fa3393e5f224d980efa9fb99..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4683 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 N002ovPDHLkV1i>@(}Ms2 diff --git a/public/img/emoji/city_sunrise.png b/public/img/emoji/city_sunrise.png deleted file mode 100644 index 91ca2a40b69fa81434a2f48447eb193bec5a1637..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4312 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 TAhG?z00000NkvXXu0mjff@6JX diff --git a/public/img/emoji/clap.png b/public/img/emoji/clap.png deleted file mode 100644 index d01c982a75acf2968d07cbaccd4d601e9660eadb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7110 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 diff --git a/public/img/emoji/clapper.png b/public/img/emoji/clapper.png deleted file mode 100644 index 4e1dc111d76018cfd2c1986f039d930bf3a7818a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4192 zcmV-m5TEafP)zclFS+#6OFx)8b?Ox4feYse8XFs{ z%gf9EHV_E>rn!sDz)xk7PY~Q{eAAb1ZJOID@e{BGzR3(5}Y`>|fsJM2?k|mRCYiluj^k|Sc zYHDggLtx~{k>GV{$z&3PgM-+*b?Y4D!8w}-N!SPA8nzqQ7P3u-4LtG06L|5(7m>+i z;P?AM*N5Bfh7E`ZeEs#;c=z3Rv0=l8OO72ocI2G(0M2F^XKZGFfB($@7O-800$8zP z1zvjTCGdOs72e?h^*}tNtgP%;0FIn9SwJb}nlx$BwT$Ig8Nd4$ELad-ym;{!0RB

a{PD-HeB_Zw@W2BP;Ep@)z`}(KF>BT= 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 diff --git a/public/img/emoji/clock1.png b/public/img/emoji/clock1.png deleted file mode 100644 index 9174d4e0bc027c423e65853819207b256b63a334..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2590 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 diff --git a/public/img/emoji/clock1130.png b/public/img/emoji/clock1130.png deleted file mode 100644 index 415999ec838cd611aa6d68a71f53684a3ffba11c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2854 zcmV+>3)%FEP)p+$l&gwj+{+K12+?H?_o@YE-vw1~E- zDy2~MMLb%B)J@PzrKJmvD5WV)pg;-A>fjK^o_P1zaWweCp1p?l^e+L$}<0^G!E( z-CXnkOyI`WPyWa4Pc=sjG9nBxMw}*=QzKR_BRM9pv4l1z=qF2&I+md^z<_#TsOS5q9y_c4O9Z-CG=6*S zbv!!jo5qi^c;@3Qy3)W7H`xVEeH>5Vt8tz1W# z*Rk2lZkkCFao}xd?Oq>bA|zSC9`<7K8ZzrxlkWO>>(8&dYLOb)wY}qi*R;2Wnt6vD zTUbfVQMbQH<=;4zO7!sx)wFP)UgOm1^LIS|%7O`WZ|L}GXKSaN;UsZ(Q-Ol%tlSEy z&vJTJ;90_Cnm<#dlR-{fC(rckfAP%)5!lkw_RRXOPI(E(X<{o0Oc&BdV*cWdu?aED zQL8lQRuiMNNQFdXJPfVC8eomfi*g^?A=o!AgXx(oW z6#j%xnpZjU#+jYRX39-K?I)J6Z6d}b>k(=f;#b#OWJ&S@6GZTpIgH|&&SC?T#AssK zl@-^QYXB+y;X~K#+D3s&b~x(`N}OJvU>Req;Zu~bSa?y0@G^N)9O0!yzrW750vhPN zx@l8Aai;kI#vFmB(#%>0spL)05oIyOM5lv1aq3yRebbsU6U1()OJpceO*O`xyPd>G z#QrbyYb2CKQmCbx88Xx*!`BB0NTKRIwNx|3a+oL4Xw?sT-VMnEx6rUi5=Wzws+xfg20aa+T$zwks8k?hp;JP2UY65P z*+d7UBzT@tVsot4pKMi1=)#9mA}u8(eVz9fNmkkt#3+)+z`_Yi7-)d)GoX&RRrq{B4p$2hB3Oa^UP416ftd60?34r>pTJ=g_1V1nAq@9a3;hM016>dWlU1+=TT~TgC07>iY;_8 z(sVa*iSnWd6p&Ls0=5L8c)Pu~rGWd5iHhx5Hp(_0XAqMj(?S;(1Ym7%b8_a9Tofc< z80wlStZ!gpx`#}hU=)4#*#azNG}d8a2!(5i--znKiavoOt3VJKhUyUjTbtI<0o~Dn z3E+K#@7Z*w3bTSNngePE#+&88LO~Zj4Qerw{M2jXt8>&cPRhS#|4LkV!|`SjRsziS5w?&-_2}3rjFDiRF$za)&3_`& zihmrmhlr3z2dvAAEm~8E=r2HYrin1bpl$rR>`+>@y7PsdD|Z7amY{RF5=P}aR5QwF zX=8@Vmk^^AfIoA%cW^_mFAo4ygSp>l|MLP@Fh=bH;#$Ojvwr3sFS$`LK^?~#ApeYj z_Y(N9YtnuB6FQSBHZC;`Jr^i#(OZ*%_Q_#?I%AmHg>_=i1TtzidIhFw>5Z+Sr< zaJ)c7gzrWe@BpFyC?+T9VdA?3=jOZ}QyBPRvb(xF%@&53AdTssaV_xq08S>f%JQHU zxHT)}C{oXBoT2~F(Brl>Cjr}*`Y(PX^`m4%1#8Iyl^AoV-*ol>K>;iH-UASszljr^ z;OxM}e~ss1P6A--(#x?2!{3Uf6gtRaQ8i~yFwul!jd`}?Fq7nI;ta<)IX!f5-&-&* z0iZDP%Sc1$UMU==jf<$%zpI<+#E3CKluGn>Cm?KZvVya`!CU(91KO|bGKDG!@RtMp z_e|+5N^zs6D6B$boESr?6Ss&Fd5Tn#;R44v%{$q_15;1u@{9bpT#{3@Ro%5; zY1-OO8=cgUV-lGJG33CZQ*ph&NKrU$4WpdmEIkbVCI7YJ(d;ZNk^o2&$*R^RpRc>6 zvA&g6v{H-CB(s1_n2-x>I!6;okS4+eXE{eN*^%6nxr0MlTZaV_5U}9YaIB$fW6l1$ zJ(1(;i(rdfBiVL zbp#m+1%+h1sb)iJZ`HQiC3R$|6_O-Igb-k$QKCSOF~%8Xgo)wF!-Z!j|4|r2#l#Xq zFlpMhL%@S~3CMtgjN(vGNX6@uEvZe34V7&b^(i??k|+^p`&H4HVTOX0ADQkc{(a_e zg}&JdN|-{Nqk~HUr$y*P^vX%d$ROZF6-Ez7Dx)>wOtL-F5?&Fh4_C&Yadp)JawRA>dshoRwQa@Hw1Nl3Xg~CXrD{MB|}&C@M#l5E8azo4R?4gfUwx z3YFXLO1)1!*m573UpzuVKf!73fMUHC7izvJcz?@30mNT^EQ~zWtpET307*qoM6N<$ Ef@CIS2LJ#7 diff --git a/public/img/emoji/clock12.png b/public/img/emoji/clock12.png deleted file mode 100644 index 87b132878b701dfe1bc24596fce80766f8dbda9a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2504 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 S2Z{m!0000Q;rS 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 diff --git a/public/img/emoji/clock130.png b/public/img/emoji/clock130.png deleted file mode 100644 index 90ea5b91449c2974d3664227492f7bf2cc0b73af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2837 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 diff --git a/public/img/emoji/clock2.png b/public/img/emoji/clock2.png deleted file mode 100644 index 65b3b3af0e1a2833dde63772070f1f26438374c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2595 zcmV+;3f%RHP)>!6C7L zxPOiN0sp`x0s_1j#YZq?K6=+W{9|s;RV6A;zeM zL55CFJa_nYiiV3K(b3xZPU~wM+c$GN&0OOHj&PL_+jy9L?6ua6wbhO@}1NZN*`)#DWiDooDXPjo*xdnx}BgZ99a+zw@;^s1a^u&jsJbdu~ z6wqE;`@+gcBdj3AX@=Rz7D_1|(|pXQ)Ul2z7wDn;4+XGJez+1QOSi@@0)5TtP33@Y+ z=m78W0!f&GJ;uW>_R__9RlEO9arHedG;xfjbOMGTa6%@B3mKfxF_G}_ z1OCP_wxE)|r|U)bU6+8nejM4`!U|3hW*49qXcW_ipqul#j)zX(58|W5{0s_D!C%WMk&JrQc#Isxfef-S)0%ZU5kwAnfarTP| zM70YD&{5GbL1ZBb3g6=(Q6fwQrkOYy0kxUM{!{+sgb;g=yw1*3m$w=w4-@p%&le$k4z#zM`2h{-@f?3OW$# zT+$N8Ak8*%7&d*O`ht$?>;dOEQHX8)5rZ&STH>9&G`9nC=?|CCKrb8cqEb9mGz-#o zjr6jCUK&_}Z$I*!4&1T6Vq=}CY#V97bTpu|2{lxQ11@BAjJ!@r)5d8G>Zsgw$NK+# z=5zqhcNe>A7$ZUn2F1fJL0;8Mk%{9)cJxaL5yq%tu}j$nP62N3j%tET5g`l3fn=9p zhTLbNn}a;Zn<$QBCQF1Vf>h(}!0ixl+cIBEB`OL*RA>JeUIn(r3O*+IGk+n&Vm>B? zlsAh?5CxS=N>*)Zb_npSFZYH>P=iDk9SOOZ19k}{pcI3@^Ba1pBE>~E%{riDF*b`t z4GBV&mndr;O(?Go;3r8P8oC8Hij@*ZL3#-d6O{mP!lF;G7?mFC*-sleOeDaCiAD|$ z(5T`fegd$DLwN#R5g!T}LZYuFVXlHA)SH+EN&p_d;xoFa!cQM1bg~1;ia8{kJZI0L z5+Xw-KIE184#;wif=BeKZqq@A95M3V8cxeg=@sn&*lrzQ|B`Jgxt)SXcX71`~8j4W78XGBv`}*8GZVUL%`^T z@Ze}zMI(vg@Ze_ren_IBGD@m{=sb4F*r9tX*80BDK!6MtXh<^?+?4w3xEVku#%YEQ z_a8#f>j5&cqtRXcY-E_Fm^Z}(o7{%ZICY#OO6oAG!vUn}TxEwZ)C8FLF&rM;NdFti zjFH3Szw}+c@GH%^50FzQC*K|XQ7`RWp$c(|&2m6m82K!E6Nv#DImsaLL+MFy3Q$Q5 zzFob$yK*^x2C27CGXW5g7DPW|zk!EA{KV*Ha$@K;GTKF27N}qq`|gBfYd>f}<6sg_th@61_BXiEhR&U4DrK z6mS5;P|TS3PSw?nmvJi5=4`3L4BYe)K<6Va>3z?{J|$lGC6$Xh!Yh8dtaBar zF@&2X=t#J12a0=O&Jto^A~T3aJ^$o1eSbawORkVDEqGdX+|w(#623o~MmL5>VIykfBN45H630A%WD2(DT2>-w7Y>|lx^n&vzmq7Ok#o)a>46f z2GeBn%WS{iI2pV^oJN-8X3|2694250QVpFf38EGZYFUQLG5$rjWqtqe`d>9h3eXo_ z)FmvoP@ybp*jagRMW}-1tf3hn)1*i+%}kUMpo~(|T;>aUnPMtBd3fN>+z4Z$9ZXob z0Ps-BA}jr+b+z||z8R?V6J#l2>ImVZ1R2oDkS5A7{ahtRlEiTI!_oIs1H>5T8tEJP zmyLvSCf#jgcWqoGGHD^Y*BDXq>e6 z_HQ2rUi<_prwkun6l4o7dz6V`L9?KeW|{;s;-t~BZzC44(;>w@n>vryg@7Q_h@q0f zj}HYeZe%e+kO=ZD8Ky~EnMKAYWa$_JwiJgWj?G=N;hG^Auw__qqX@Wh3y}yKot%JX z)7ptXON0*>{{f{!ttQn&%7Fj?002ovPDHLk FV1m#o#Bl%s diff --git a/public/img/emoji/clock230.png b/public/img/emoji/clock230.png deleted file mode 100644 index f12c6912af7f530416329acf7e3022ff31ecf4ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2853 zcmV+=3)=LFP){ys)8s;{efC4 z)S@GLJ4Yg_pivN2C7@D6xwNDz3X~*J2pDWa3=Xj~6W?d-@z`_Ow^pCFW^0e8jzfCH zpYtv4y+4n?wb#4W`sV%C_l;!o$u^lwZvPKpe`Ig(zI_MozU86Y4u1Ra?T2qWc*{cv z?%uz5Z}0xd|1p3)ZD0P@Er%P9c0Jqs$maX|?zrL`ef#?M{p)_m=KFgOc0Jp0^qYtF z-nyraOK5JE)pq%+uB+PDwmnu|<*V>k$RWHaC`f>bib|e&=Ib(Db9<&zH~&5T^xV;x zax9}s=EaS>t8R?l*3efQih66LY7`d9vOpFS9guM2BZ!{>Dk)~n>D)|a^v&5vXO6t2 zT{eLKx-xpts;e6+>y;Jwm}80z5&^0R5X23r0?ZtXn1qN?MUHXC3*+gJ{xq*|L24J z#{#gUrRl#rKfkha6%pc0u!1$zq2NZQd^6Bcnc_Vrh|x@n5k}^Qo=~}c~_HRm>3(W#%q~20jYQwQ2;=)VB|^hCR41z&oJk5@1IKC@#p?a;(@ESwLY=F zuhZK}oR8SbwbbKBwgT=1VM#F^5`OCWEZZ0+PA8qd^_y2dv3tuU0NByjeyFRn%iY2N za3k&bG0=;~4NFY0J{Nz9Cx8z4Y3ED804;R8JG)yB?dn-(3bwSiKee%Utz63hjcmn_ zhQxB49UU2oEGI~?j!6cM{x{CXH?fi?rJ^#f;Nh=*ME*FbDOA~qC;?=(neo+upxy7jAYi-+`i7?1^LKK|76#E8} zxXYHe4iNVE;uz2fv4!Jw)6D9f$$dOgHUg`wHoUTP{btg*xdv5WxBak&J3cM_4-QhY z^$^tk5*n4f&WTfJcJ?on;enc)R&_VxCqjU8O0&_oZlH1sSS|pk0QaeoWrx0)C`Y2t=qRLmknea(xK^$z8RphA?xi z#Qd24OZf5fF2ChD9%mFU&ZcA1!Ymck5ZYY=plxNOyAn4ABIJ>{^ya}wg2NmkLltA3 zM=k{@-mc;!Oy#F{);oB>+g%l|q#)|LJTeNhBMwW`jT?mp{=z$epG7XPigl>=7$gh| z7zFTBpptMTzJ@V70=PC*NR{NNK*m5NM}FyWI|A?FWgg}@CI$&|+`#RG(Cr|TCx9+JVM>HN!URbxjq@CnlZSjryUxN!kSiRUg9rg)OK1&}0pdf7`IepDnY zk{SgkU5OL~@uE29fUH!zkpT}{39skHr1apzZPmf1<-Nkw{0U8DeVjH9&`C&`HAKb> zA|S1H?#~0_(&CyNM`i40{=}HLW*cO=SbnFhq>BybS=%!n}$Os1{1y zzKVAoeFGH_EnE;FG@BnBnvORJXeywhQkZi9(57=_QOGTqh{ZTn7&p*uor`EoEaE~V zhc;;g09{RF$x%s$TC0))>_7sP^i69crlUDW+C8VHrL~BUG+Fc!2Y}q^dD28!6tA`Y z&};(2w5vg@TGXvsV_+6XN@xzUvWqy-kSzdnr~@_tOtWP$l}~xwnMcKhG9fKf7gfvLPqZd|o;A4tfG$$38 z&8mqe#923&iv3?VllaJxVCro4SP1}_8%w(ZjCl?Nt*_@ij z)WFn{k2p(+Sqef8kzuTFyvViHx5PGX(XU~R)*YJ?6Ud2j^eiJJe}8tk{N6A=x1<#{N9mw zE`C~`N&dl8uiPssZrT_lPps@_RmF>s^LVHb5X*Z%fldn_@+R-96F({Z(bSf4OeabH zrslhv?_95JWGyKch@qfU+Pr+gNxIlXz6<~tDpLfhW{^|7tB(D2{Nb7OvJNUuGn*Lw z)yU8L7f*1K01Zr&L_#W|-3PvC^@o_kV!I40|8EQg8qfXk1qT|m|yN$u_XH& zYWFwZ(^}t2kJ!`B;->-t!!ACNF@@OvNa!q(B}|wR`Z>ed#MqDKo)qSn4M0E$)r5D{ z{Gjp5b~@-HN{U%z0{D2vnLaaaESmwk_d*|YHy7m zXpF6vNhedArX-oB1At|eqESn% zy_$=lzcJDm+8y3nQyZg}8lqGaA|Rpw8U?W_n`N3ACYd5RG5bp9$n0C0Y4XLj3k>J6 zn`v4AZ1Y6`vURlQvLLt!`D4M>(566NMSEo|BnJuN#REbL6v(hZ#z;@j4`u(ca6B`z zm?VcT#9B;?5U}n7gq4C)5Xi_N%!>;d1;tb8jVN`&4o|Dn;)%H{Tz~*=3FeOu0^@5(&7IRq< zapL2#wGl*RiWxgIm{|v0c&VYvPK78F zHbxjdGyTUC$0!;uibPji_Zw|5@95aYw`k!8?{bpsRIrx^ILr|nhk1a#RB)Y>yvq$* z?8;s2=xBSn`;D%)6*_SDk-9&G%bRII=QE~gp@VOruyCkc z|EGYC(lyU){85+5z1&(F*)Tfptr{ukQzZ)790 zd_+43@BmPbA8KU-9}(gppcNPtD+@ul;B^BJ-Mq?2>>|V5A?@6$ zqeTVmX#QS)FOM;v|;2NFbmKF zr15bdFS3Vb#&6sA;QKEW+=lIC{>MYK@Fm-5B<-MgiqO%D-{nZt$Tq&Dg%JM7+sg_% zP|@Ac8p0&SUQ|p3eZl@BTHu@kXPt%0UjB+nh-i#w3JmZF_=nAB0V^Oo)Z`PAtE zp6{=A)iOz#5=@Flt_4dAlM=#AQp;+WauA#X+}`~)1eqmFhNXm*ZNX9_Lzr2D)Zp#H z?GSMDI$vuQ8VW%)$NU%H1;zJ*Mi2#!DoQr(Y;g$iY%lj#5T_Q23u&^TLbt>P=}6T!;NC6gjtYYLdQZc;+0F(sG?4%nk)DTz!r|@32=pd zD5R+nb1eyT6%?V~vO$5np^jAeSdk@HvukKnkfsVB^2U4zWVu$sBWBge(WOz5QScyx z<3J*zVxr;(ybH=pie{R)umlXTzdR_&wGIKUN?G*Xg()0Bq$Qk?@Cdk&v)_V@g+e`E zjv-?>$US_QO7yH03q*<)u(LW}fXng$c$|v?CTSaz5a1T+veTlRN)%$4&dxJ{%pp|3 z%B6u!_GDS=Z~#}93`5upBJ&OyTF!o%61=>FAFDv`??=a+Cm>e|QoaDm$mm#zp%SIi zB752rl@h<=l2Gmpohq7%JIHlRA%^u5Tyhm;99-_Gu;~{ z!fK*4Vjwx1urdJxxQU{0gD6H%z5pY6F>OrCEli3*am_p5uZTV;z(gm`DyB&ra~B)} zCN76YCPErI2^6OXEC2mK0v(MBl0&1H$c9Wd3~%LD-!~fxkfstHX~FC+v%}JsMW74G2ifqR-iniH8yVMCoN_dh}(|;A{a{nq1;{-|S`+!;~XC zthbg=F8~>aXy9WmGVd-;{j_3%V-%(3m@fbl{WNivUM8;& zJWm`7IDly?R@8f|=4!#q6jkU8j#OcCQ85oDZUzZp@IF_K!6&1i5G(wW%0(Ta4Zm2| zy^XsV#Z3bS60WQR#XYd*2{Eyd89}F>e{qh%zhC+-*T@ud04#Kr*cETPx<+Fg(Z#7koNMi;kX*${_Vr@-}A~ zow)ML*-yAm3W^B;FAdZO+rIIe`n8+*4gq>7rxwd`P$_)ykeDFGX5zfdMaG7%J{hr1 zAiA^{l^MpFi1ze7G4%O)j?qgeW%MxvfKdbhGxSkLC%qiwJl8JtJr+63II$(asAP^Y zq$C%gOg)^sXIkoKFP&WHDn5dgfaBOII*vt}C@E^`~yiANH*5hWzMiLbZFa@cOL54UH8zyU5hsFoIL$7W9(4U50GRF(h z7v0n)thQ09tZF<^b!TNoCF|Kj3qIyZ5@!x_C?!A{rKA|(bNZQOHZpT!_*HeBNihx< zEMEY4sA83!{?fWNcT{{kQ0FJeT0+!OfsYboz#vVE2xAO!ohS+7W0ChJ-cAk^Wr`c5 zR`QpPgr6F!D5q2|ufC~rr+;&4jY0_u_9qgE&a0^6b8afp6Zv@RtT9WRS*D4g7a=Hm zMZ!%`NbpmJ;t2$r%UZl4&nkDhr&RJtlBsHQdQ6+l3?;9`2el|^62zD#LMrbbwFr%q zRstje7ZP6l1SzKsA6^t>;I)e-gY&U^Dq+w zQUBq4bk4o^%(?UX{$A&vb2Pzw3!P=-uLSN(93D7w>jfq@1HEG$fNnV_p3jH zKwogvr#5|j&C2dz7eP|Y5~hnD5>jg&O}Rke;^L5Dlrf65(M_2YDf8Oo@V75Kd&&Hh z2<%_o{ngF)tZiCDf)rD9u$6WU{7Xizi;cw;7n!7kZZeE8vM~IE(I|jfL=RfxT&prLiByjt_buaY~ zZVqlF#bs{cZ%GnHQ-U>wYN@EG{xC`IVjq`Dv6;=G9edWkbmz^>aKZk;E&sKxcZ=S^ zdBWVm3Vb++c7kh~y zaFyoEgO38I8D~4woO92fxq9UFYYiu&?XkXZZQHp?ieJkfg4lQv0Lu7y_tj8TZ6e&p zuNh)HmTvAUd}H?q&lDP1;Lb1Xd!j$Ek@FdLyNPo1h1-^51$Aeq-m83X;fy?qyKUIa&w3W9=Vv}v3ed~d9 zHCdn;?>l+t?R&}7#I2MN{AHmL;umCzahji={NX*qt#ZM(on1Gz6CulHYy^L42y8a9 zNSJn3?Yn79O$>zozAdtf90?NG+z8ktXdy=jZBgUzst9QQ_`w9t%(EJS;6^|o=wY4~ zT8SO1BG9`gv9$$1770u=ZUi(;TCwocOjG}XWW~22xV5>ti85g#nCKYjxMQ}$4IvNH=UL!$a ziRrh@+iWFRGpYHN>o7Sl{)VByvwVA87`s(CKLlY&-} zhE~~;y4$i{63UY{piyQ6E(`3Wy;@HxwjV*c;ypk~aIj5}0EqIUg#%a!L`@!h+3tA# zI0Q&C!L4kdKs5xe_esM+^9N z%r1M{BLI#yR-{0a3@O($o2r19oU-*|qKu7$O$BOp3G%84gve6F8L1#py0A!A#UN3m%IgnWLdx(@(3Wr>T`4ET(FNtEZo|iU)`&a zzO)q)g?ej857K2Z=9o8~^A%Yzda);!*-%0!N7M^7Z#P);S2B{ZQFKwdSG^^`>yiJi zQzFB{l?%g_3zF=@nKW}mNTXFQvsH1SYEPiyP{zVlqdc93?7>^0sxcaABFvE{cUqJy z36zUJnh=u&$YKHRbrwe!ah;4AHBwQW@$yx2m(i006@?fE*aVwB1QHUDZY{b zrP=SKJ}?qrOPFa^s^x>M75R_KZ~@p@Y8DWfFH3G$C?~FqX-`P-kZ(+?k=7 zS4X%k)5HYS{zqwx7a8(d#emwtIVvxNDk$5aVgyX)SixmR$o%)!EA`I@vJ)qo4|Q~O z(Z(q2(CW+s9$a-m=~PWc_2&SMQQDa1D({S^zagBu1ca*%O+A0-u2LXt~8AKl-wzlB}QkRgskEtIz<1q(;r$=P=*eC*ul2%82mU+53#}JoNna`xNup|Kx zmiCL#)5e#BF+ZC~;nKXMBOJ;EDP!X<87T&HEYig=XF0z(`S{42jZe#SnePRX{>L># zV>9EJwAZzQO^^^{7&NI&sD;544r{o;?|9RidaC?=Vb@sbIF&fg=kldX_=>wNpO5vF zNfXA8TjPcR-RRuKM#^;v_^_EEL_0&A;jA_BrKx8p^VfA!DnxPY+BZj@Ia@f*8-(a& zmJE8$iKxkXjSB+4zd3WMy+rf^e9=hov zNfQnZ1x#sfWE&)cj*mqqxkidnrn2cDWuMEO&1Wh?1R*p{hzbHqC@7(*A|2|(M>O1( z7>pfizNK|#8yzHQr-c|H0{8)&G9~h)Wtm}`%+&nrxmV|Zmz%}(R<5{}N2)?70$N2( zDbe7QDoG0Xh=tpu>tZ)W23Pbowa4@*5lKLTGA4QQc`vZ$p4 ziUO!sl29(FA)%{fyiZjf10&EBOc))}je&K>>Oi}(LJ#``V3(buowaAIcgk1tZ<{~cdeG-bLukUWoOemsg;Ehyic^|;S7mnU t#y}$|LbY*%YDJY{y%tYYgDiOO@COH)P&DrbMMD4p002ovPDHLkV1l0bFD?K8 diff --git a/public/img/emoji/clock4.png b/public/img/emoji/clock4.png deleted file mode 100644 index 948ed1a380cc8523f6cdbd6ae16d5b58f9198c9a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2619 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 ix^tJR#$ND;mEQmuV@zK=-E<280000w3R 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 diff --git a/public/img/emoji/clock7.png b/public/img/emoji/clock7.png deleted file mode 100644 index d48f645d8350f54f0e83dc24184599c363df32b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2615 zcmV-73dr?|P)dzmOVOxcy--ML(p#D~Y0_M5$9JFGj$R$f;@FPe!AJg& z{#N4ip7(jq^Z&njUpssg-{9JDSNpd9dmkOx{ovk*4n1_l!l4KE4(z`7(QW;AwR6oO zLFKr+$9<3g&brlsT0b>-a3cdc8Y)Q=#ADG<6K`t&IPlrmE}+k|=({yL7u~WzX`O`fp5{pRo>wsm#AYi_p_5-7Itz!o2lax2YH99 zbnz`Vu)eSRm4W^J-CxmxyLYwxJ{;_%3yn{iri(tVL!o%&IL}co(8OxoTwsLZxhsz! zc;WvP&{w_a+2ub8vy3{9bA|P6q?+=P;zK^Bg*8Mu!!SdCp7{CE)HMsZt0N0uoB^)NmV|WC$(>jwR zVMd7JcU(0Ai4c$R5+AY&8FS;YJzMU3FHxZY?{lkeUqL7DvzP(Ez@%8n&zl zT~@%R-bGI@CCng=Y{x`}lJo|;1*3!jFv*E-c$q=M%rW!yrVkFEoL_+KePcbX~4`sf5|4)P|G-AUn5N~$1!N3;ij9{{^ye- z4tTz|(ACToVX82wAnX!U76w&>nWCA6E@gYM61crvo2Vs1m@JiqWS5}Q$Py+(Elqg) zaTf@mur7?VQ-G#WXFp8)i**WrLG z>_Z_#9V&*nDM=a)30KMK4b;-h(7sb6O;SiTP^lw>f)9DQ(*ap-R`7^k)iFUJLk<}Q z4>A-SNF;K?SQC&O-T>(2#0UcyrhqQimj?y8xj=xcUKVwCVOWqrq$%1=!Xw~9w%yT2?1`AE<8lIo(`&zZCV2j zU8EosPMDBSbY$$4Wp#lAxNI_X+eDF$1BQxSU4rbzLjus4LbXlKw^hDig4|I+B&PsL z&x%Gt6S_^LdDgT^6@v`Z#wa(_NZfIiJRIbj-Qaq*P{5pq1+plDKJP*yWOUx9hA2KZ zki-NhwNrqAL=H{Bh&lzJ&L+v?5otJz;6#wajMK^(Kfq0zQsFFs%VtQT&Nu~_*)dB1 zRmAXPGG8b}_%}f&>7a)=X2k*^MioN9MW+BGGZZ7rLSnR|Bb6+Igpd71SwNirvb&*8 zZo^Fsg{#ES2b}`+$tg$OpN1<9~j+>?&twBu|v`Aqpar&i!qCO;3ml)yv)$b zCSiXi4QKj?jK4w#3QGW{ zDp&d4H@aELWrE1g3fo(4HQCDP1t7~PZ5-hgV}Ba|CkZHY05ZfbycXO#)ET0Kv#h{` zf>t!ppi=V%K;kSNoM(us^A}zu4kaAGFcdT9y+w6(;boczw4yClnmkXOx8KbO0d(Hu zygu?&>|^Fie@W${h0wBJEE!nCU5w+V4c%@=Y#%_X=r133^T~{%(aOI#&dA?R|AvcX zOE~~08p_-`Z*Ojq${J=!Qj396xUvhW9nWu|+w>|O9O49*j}1R*j1h;@4uC`hp_-K| zo^B7V<2FXoSu6-0z2H18IR)BxTtX(qK|bN~#oCzE4@R_b|+V~kIp`(@-~E|G?E0>Dcft+n0P{knDWO70-QAVHcj9S4>9 z4jvMd%(03%?{JDMqvxNBS|$*y?2F1Q6HLYiho2n%>;$he#5!siW)=Xw3;<>sriOJ4 z@hT^{cyjph=rJaktN4pbQd~hwa_Xt{L+N{Fq_b>h9hW$dk6Nn0d2F>SZjvEJnr7B< zmDd<#%A9y(i-3 z7%XB5D(~|)LzeZU&yVggCQ8tkUDQ=9v{0`sXy4XwXMJ5gOX;BtA1RW=Ns*6g0@P4V znhSi!St3NDvj;A}o||Aww1WxPE&x0%JXm@l(rULbOna&;C@TlOau% zD~xi97zyH6qVG<=mAp)hX|9s~D*v*P@Y6&CL8|3o;|=vU`BzmpDO90gy&{3Ae2$!W zO-&~TqerHX=@H^Ym?4T*hM?>f2{*Muf}a``Pax1))8!3$7Py0+YRMx>Movv>bLv!f zGTUWDz&mu0vq7tW1NCri$@-#JFm*uX(0NDIIH Z{U7=Px^;&7@j?Iq002ovPDHLkV1jf}&yWBB diff --git a/public/img/emoji/clock730.png b/public/img/emoji/clock730.png deleted file mode 100644 index f2807de2f27b1c634b90cdf0b606cb34c06cb552..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2794 zcmV+Q78?T& z1|%aniGddAzp?jl2E+OPwf0(T?-~9D@o(&l-oEjUeRqE2?uYju{LiQEduso|yC1&u z8~g6KedE3;R~NUne|G=fPkr^o1EU9~A4&dr{_)J?3;$@D$L1eN9+-Y$^s6WCIduEI zx3zNxkXRCS1*&ff@2lS)uc;1H`YYuyeiRfWz(PkQPnxumQs;70voo(Ge>->drQAm( zV3#-g>BxOeo9eAEl1gSt{mKke0H<=ziG4n+7@JsrK7I5pw zW8ZAuwY;i9Sw?_4rbr`EL4*Kd6hI|ImN^!%2otB89OI0ums3M8PCfd@|VUhJa+ac@8&;{fa_Y8 z|DgMp)~Xdmxx_SebQ4Fxi%e;l=x9uEo^k4FBEb+ta~ED1{`TL7DFc}@xN&3WvzzyJ zSFJsV9W`_SDxfFa@yym+*LfQ0qm`}r(MvkI*y+yEx#lI$n_Ofq zqny#-e*V4xII*yZfZY#X`|b6<)%-up*p3I24+j~8*SSnL=Q*7}_RyaXysv;Q*KhjW z=9=}4BXc7@G~2~iDb+4(?eh|TkkEM%od!;GeCEujUVWo%5HONc;zbp+ zZ;9p*;9SK5F^VgI=&pZQ7%1!@LylHf*2W%c_u~K$4(Pt8_e))#X5L{N^@84==caS+ zj1HOIO(aLEEjL6+fO;`TaJLgI})ivB}j-I9u#D(GIrozblfReGBqWUh$%&r*JeA^BjU4&%mXxXEl4zyx&yz#LM5dBFVJakTo#O$Jm5v|* zvNWOt7KV_a;6rw5n;6{`9@kRs+~H8`=xBw~rBlsi0#u-MIs(9>)ca6K6TrYgwjXMc z$A=fMEdwMMxfcyT8hVjeB-@iZsvvfr7(gY2A76vp12rB&;zJiy&aCD|Q2Ov8AtU2J z;RtWh#^;0xknMHTvZ*yEifnq&@c}YkByUJUM#6)M2}O&JP8JD|uv$Vv!p}G_ z6XXBbMw=iu1f?!~XxUR%4397bR$-Rq%Ic&wKS{zw2nDzns*#RSYE zTB~RSYqNmlN<&RGgzdVp#DSQ5WV<_3e4Jr`dS=N38Y~W9aH#7&pQIZQs-4c ztYNwo8}^7xmV(NQ1cdb=^um9PMb}RY%@(ZAxdiCbdGaXasK#P31o$gc)H5xD)^dw} zUmr;1kkQGbPdWm?&_=T?P(_+Lzy#an;#fpK!z*Il%n)P3&YRMZF762_d1o?iQnK#sSR2lS~%ylVJ|6&s9yEcdkEj zgZ~<4=vibV9%6`tRFR>T1;SkBPF9g+X^`nB%A5QpKe+j9pW^|B&o_@GR%MY%6T&E1 zgZq6@)Wqj8$ziaEUz0Bco(Mf>EP7FqKs;S0M}p+Q*$b{TBsF(@X4NdUOcQptosJMp z+x}zpQ_BRm(nMASp(&a`sXei4O`M^EX=X^jj_Tf!sM#Z9);Iy?(J;$2nG}anNKwrm zGH4>BO)ShMG|-qQz&K-;{)eI!wR%<0Uv{q81%!#CQwkCO%pvNT;$CiMl1HgxihJlF z!{Shw5Eb(!ULF|RH0Y`Wz}(pEpGLkoLO0XI%4D)m1q-~#CbpBpKriHs#o{oSB}N~k zq<$ml-2%u>KRxn=i`6Xz8K)k#L^)2gmi@`+Ax09J zL#5sg&8fbr!xwp%FiG;rg*O}fqXU+p+rb@Fk+rWI7zJAU91C29*}xL9pCrs6LnNLV z9DrgEKx*t@WY4ntMq&)p=8oe6jfR8?f=si+kTRv%NkNGbQM%sc;^mniVU!kNCi*6x zJolX_+wn2Rvf>vMo7`ERMGS~z@dpcc`1#T4=K_fzjtoL+0gxVfGPL9Tj%qeDMS|)A zor#Qu<(g{?6FX&#gc^m&0gtHtaZYfa;iKa}cdM0fLy6ze`ODshYv^H=8p0T5lPb@H zgqYzgtR_u4cuA3@k$&FfI3-d_Nu6VLe?l=~$`qKnI@Wy+F8|JAE(podv9#8FC2g`WXlV+~u#mk=PMGf5>8`gxl(+Sq@OKaxnn zQUrh;Xm0va^H;hm*3ye#yh=oh7AO-RGA3HlXDbhus3i?(oTQI)nX&JW|1_C|r3wH! zxV-Ljjo)l*=%SYuBuNsa(pBj|!i$AoNIMyjFvyT4LN%8-#d!ut$G$uFtg!wH1b`f_ zjqIrXR^!Jz>0k|U5+sqSARvgqKq^>_EiK0aCJ~}cah7+uz}VkX-^;#nc>%6e07!%) z?REFYKHnH$#Y$EYLnFz8p!A^NK`In!9TTXa8XpPXVUPhvCua}M9vmMr7~K@!6WLZ<7pIO|VxmL^@Zkk?RC3Id6nmWsrb$dBUrrxRo=i`Z$G{W~ zOxL$Ndz4)C64=xTgFLnb58+@u)E3@Sv8k$~G9H#ggz@1+0F^u$GNjGau6Ij2tMlXe9d)}mn}pEDMeEvyi(y0dV^lS?Du$)uq4aS4Asc$3%RUt wxmB>#IofokVxSxrj}z?CayzzY{O88s0pUCEq5t5>pa1{>07*qoM6N<$f`~srdjJ3c diff --git a/public/img/emoji/clock8.png b/public/img/emoji/clock8.png deleted file mode 100644 index 74c770d891c5434631f6c00f289636ad8d501fae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2603 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 diff --git a/public/img/emoji/clock930.png b/public/img/emoji/clock930.png deleted file mode 100644 index fd35221428f989a438afbf433275d118ae79cc16..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2746 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 Aa{vGU diff --git a/public/img/emoji/closed_book.png b/public/img/emoji/closed_book.png deleted file mode 100644 index 484029c5ebcfa44e922172b5d908631fc469cde4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4847 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 diff --git a/public/img/emoji/closed_umbrella.png b/public/img/emoji/closed_umbrella.png deleted file mode 100644 index 0b719f086b152fd4d7f619038bf47ec404cc66ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3868 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 diff --git a/public/img/emoji/cn.png b/public/img/emoji/cn.png deleted file mode 100644 index b30dcc53df9fc194f69e1e058b079ce69e08ccdc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3634 zcmV-24$bk2P)=d(KRfHXp4`OJhGItyZJ)!i#`tQ!xlyK@@LP5USv%qEvg~ zO}!BBLt!L(pN#fl+0`JmsEWoh<#{wJ+a4f*F0LKCx3sCV69A;)f1S+!4 z2pN_k06-a@k$^5E0ZEeHu>zP`$ONZA4b-2zcfB07Sw3#(P1FR+a zNB}d7zyuJ`O7j0>!jnvP`h#%#vuElbeg9Vd2o0x1>)IbP<7@&@U zY7(hu6RfIW5@Aw7%)#R6L#zW#3@T_U@oQ6Cd}q~tV^?8|Fhlg z&&RO-&Tqfg{)3q+11~A%5y?w2w^;rY0&nLKLx% zgi08Z-~x;Q5Cc>J#emfYF+yEIRe@EYxFK%>)yz!X6SQR&PgK#LSZ>u%eesRulfeE+ zfcMq@*&o`fFFbj6dgF48U%Nbs-+I=ofB)*$)g?1K021ICDi{^kOq%%7ix*FP`UCg= zz{A&H`{>0Rdmq1G;n7nSADLJr#z3qLi(y00Kmw&i>j@e#5A_LR%S5t}diE+h(=jE?3REX_~e<>}=Jz)}A=HS%rgUKJU`$y52gwy|w+``Eq%G z_4=hcbct|sj#Y+*4OvHc63Jn`PPeSPKq4T5K`5a_G_dSk>+3Gt00#+NkQ`dU+DV;Q zx;X4aLjb%U7eRc13k|4i|T*cTd&ZCr>@dWa~jZK+~c10+t8Z!5ken zr2QLs711Q(hXJiu==DRi9ngt@Q6V>yi!O<7wXw+)?gjz@76b_hArl&en83+H0+HcB z9LJ;47m`&uNk#&g8`gDVz2AWvA{Dl^g3~QbCvaj1su{Rr-2(P&Sk~B^`^2yWZ}8|; z=R49~#D2b|{Yu2$@ivh<=p@_?S0-Qq3!o$jnNa4g5HcTu1b~|`sh5Px>uDamiSvOeyznmeMtQ`hq%M) z+dFjsYyfz6M~DIw9`aTI!2qC8#_~L_Ov(V2W!dRarlC|SjPcMNdI1SKfh6SR1>B$k zKDiHZ1&6Cld<8cfIB22iph+MqS)1SDmJYmXg{Ad*YC!b1DNs0h0;_~> z8d!jJfX5GkLwM{h`1%xT-w3mINLk(pwt)0p#Mc4gaMIC%G5zZ$_8zhLxoud3MJuF& zp{SvAP$&-12J7>Z^=g5GVqtE8{QGN$)Uc`GZv=RBP57(V;d3|OClBF?8-T$B2XKC! zbH$-@Y}UaV)Pg#Lpra5}W5l0riJuU*19q>&+8}|YoN8E~Jb2-he;yA6?tlica#Ubo zrCfx&MSx^@C)`B$)j9gq3j6izKnI)#wg89EzYJXq)gkOT{P`UIBcRUE3M9iO!Yg3r zq<@O6e}78)mw-PL38$PSkifE5<3i^;n((_tKpVg#XbLuU z^hc-QkM99uX{>OdfocWcp2HvPqHoO6G(iwH5mpJW9GM?QV*BL@=^2A4WFRsOqz#aI zKZ7u2j_A$#KnVdUgA5;?c?Eu_2r%J6xH%~b%@Tb11pKDMInM$Z;P4k0;VU)N3z)58 zm7sDY$0gJn%1nij3(1h@)Kwv#9E3J=6d?kD0=SNZa)SWn)X=y&#>k5Y^LMQQ4#^EA zLk=tqKDmT*hXBA75YWMUR*)R34qVU*CBO|O@B~VE&({t6kwkc`LsOv+l*k3wkPBB| z6d+r7N(A)zXmnm~ps|-x#+?Ny3a3ig#8Ghgl>?xHzq|;)c;CkJRPdP_u-gC*!4W_! zd@0lz+_I1kApTTh_9rW5UtFPGk@k($7~R6?RwA{+Jqtp{5kbcp6X@4FJVS$pHhcke zCjmTwCXOZ|O#~NO_}2;i@_q1kbErG``V4;eK6s^u#~0A$)CdlikPD@ROSqhrHX_(L zXrDIL&qdk_I&+eVgyR9+$i#(I?q6~Pgb*qfuzzvMpa(DH9YD9C57kfrN2Muo;BV)! zYjCoIX$4b*YryZFgA+@bwOGC=DFAgQAmJ@&>ZI%N<}XZ1uLgWO;fow;{oHn-ggLeGgF-n4C7^g819^|%T?Ih>^O@qFj7|^| zB$1nUSUFky)Pfy}Zk z1yQK5vVJj8HYNOx+mDKIFMy6j5XiyV5RQ3QS3ycB3EF)0Errd+>}Q$~9N|$orSg|{H4`%typYc5dmG%!H_1Q&OrY_Ri1;2;z;e#kFk<=X(fr1j|FA3uV~(0C#vGa|EcBw-Sg(B`=;#c=5s z(k(d2gab(%v1^pLbd?`Y=kAMORmz5XfrBe09C>M9|glEQi z3Q4$a*tsijQ9PT-YbXR6)h!*J02o*yi%DPu@~LnrC&Znbp>W$Pvs?Cp74m6Z6H1zZ zM6vx7g~4fxND|%Pd%SF2bT6dGj#VLB?f~L0DeDS^kr3R1y8Kk1L>dLA75h}E32U7l4roE z)&K;1}BU%MT?b(BMTENTVn! zd*#QG0ObZ;Ud;J}GTcEKD%VgcE1oyO28~Nre|$=fVIz!R5T&Qk9hx8;M-oBkw!J_M z<}%|JGUuY|@a!MB3F{LpN1>HTvqETC%mcu%C<2W{Ag?iq5;abZF%bk8<|29^hCl^W z5_J+$kTQz6BLT)KVB=~Gu72}TK>wJtOx%!Z=#a6O$%OMqb_T7)8fXP8`FaKW3vr{t zZg#L}%^RSN<{krJ7OEJlNwCRQ2=gste!}eJY5AFxN;^}jin$kA%1DLUNC0(EwJOnM z7)F^G4;54Fh-{fJgja$ku#i|f97wBcu2-(17jC#+z9xV9x^wk4XYZi*&#?ugT4os$ zs4hfKJ`lq0J%Rh~3--{i=>w-icw`@DfR6=$_T|=JdSMbiZYC_k%tb9Q)XztTtPL<_ zt3p_r>>5~TgPRgJ9o}%Q_gpW(DqXso?Ago7pM4Qt09K$C&;qw?h68Eb|6zR*vWjJE1%T#Di}Zz;lAd{_4nOwc#0MXe&R-yg9Yv-dm{g*&K$H_b zVO@uHiPSmkB%1$$i=~T&i^H@byYJ$9(qhl`$`$GPS37&|Mfra|?>rAQpykH0%%ssB!BpF5tsodfNfx&pQl;Hs%(@u9(zE=TiJUB zE1=0(7t(YY>H8u3HU-JRv#3RYvM7g537u+ySn@5SKl%a`5emw@mk;^>8z$-QAyhCX zUMvin(sAW39)73b`2P*^t{uk$91CzPz_9?w0vrqQUruq{4=GIO8~^|S07*qoM6N<$ Ef+Xyz+W-In diff --git a/public/img/emoji/cocktail.png b/public/img/emoji/cocktail.png deleted file mode 100644 index 28b45ea51455841835cae67032bfbfa687739190..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2949 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 diff --git a/public/img/emoji/confused.png b/public/img/emoji/confused.png deleted file mode 100644 index 8dc494db0833d0a5d87c8d7a5f1f219e297ea61f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4633 zcmZ8lc|26@`?if_3(?pKQHbm`mciIXvZO(3Vyr`UVKSENOGx&;nyh1(BwG}Nn3%jG zOZI)=#?Dv0@7w$P{Qfx4`R6?6zR&gC_jO;_iN0;5!$8YPOGZYwS

    uh|{RIS8U^=pvN2crBf(ayPlw$*ZysHCzy7Rc3 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 B4B!9& diff --git a/public/img/emoji/congratulations.png b/public/img/emoji/congratulations.png deleted file mode 100644 index 85814e33c3c88ff26c18e1723b1ea9621345ddb2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4881 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 diff --git a/public/img/emoji/construction.png b/public/img/emoji/construction.png deleted file mode 100644 index 523e9f10bf6cfdb64715cea6e6044e0affde5ed2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3700 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 P00000NkvXXu0mjfj-~n9 diff --git a/public/img/emoji/convenience_store.png b/public/img/emoji/convenience_store.png deleted file mode 100644 index 671696c2dfdbd8970c72696f49a35bbc178ee3a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4073 zcmVjWb3hPL7Ufs`M_nh9=4p2;nP3z!{E{-b^TO^>Kv%gNYIM`kR zc}AAeNJ+J(0}?cH(u^3jS3rhllX`=CY@L9SoMwY&-ev)XoKj9DQf;At7%8Kuy#h*m zQ=NZ5q$3MLtw63N#Aa0AHehhiNP7iz?HuuueVJ*S2b4o1Y7Mz)U!&=*;d*-oq@~QE zN}|vilnYuXAO?q$rbaVsuYi%X>fmsPdRkIQ60IV}sGg>V(>9Mlnw_P8Xga2%s&%C3 z$M*ILAd_fd1Q8HG6h#mLK|l}y(O4jeM_3O4nyAZV?H4ebC>Ny|LWT+wjEE9Zr=Tnt z%e&(07(fmP=n&N;{P>u7Mw{>ebgb^uZATiGoI!dh_2qF-35kpc7MU-?`i1Py;}rP(TpDpqVp1 zZuyGK!CP zs-+M1Ptk~|0q+0BA^`B%`WMlOw=KHva_61b12%8o?zg{t3S9ypbO9L-_|fW{%$?f< z;P%@#IyAToxl*CqFV`*tjYiW2pIME53`o-)z}s&Rla<`=9{iisT2WRJpW@BFaEOAKRQD+;=L%g zzwHlNdB@k?dDk@nUVUYkOE3K~DhQ~#=Gr*`K0UX`6TP<@3s+t_`*7U$-3`{<`--SA z{scrs!x;9ndzbpotqTA=`Q+c;N#JfYP(zB6&iDDEOPe`@_oCRo_r2jUktQ?x$*sAkCXPsuhoKyhXKI1nYnOqDR(0=arZD zpe7g=$CrSnB$Pe>{7UCvFbe>DcEOqY_C27Zvn+(5R7&jF-siMgxBKI>o5ogD12xTT z35sCL)*b%v`=@Y{pp4=1HUg=cGfo+kJWQWHdF-_rlK~TiQT2)%D#Z>HY8CHppF1&8 zP!=@D=T{)hGe=8b-vA0Aj0z5SiNV1JfIN>VjK7^=6a@rT+jsUU7jM?gGSQJq1WA%0 zA5(n@N(P2UOrE$@mgSNp$nqRD0RY5y3n)YqIRMgZ#Cwq=&!HrWqOlPE_bho12?}x% z5KxY77T{o1zzCY&KdECQLqu`ls00*GoA^w2YS#>1r3?{>j+sJ2I@p}P;Dqk)&A-Aa zXY>e3qE!S@->!WgcxvqpVd2z^jdXO_J@|Tj{lHaY1t3hV%yr306HK2#42~T@5xe_z zZJX@e*(W>c%#+0!IpTbVqnca7QQe;u3JxA$)%(Vj<4inpwyesZcGZs90ZCVJznX7xoVqWoMJmJb}4b4wvGb{ zjtj-)!SuoPLxSznCNz|`l;T2ZX^9_lDby)~wm7tPA5@xviK@m?z7yvtTpBp1sb$*Ej3>Gov8R;A%*od&c7$4Q!d~pfp(HxYi$Htwkv% z`$-ZBq`@#H&5I3{KZ&AE>sO{C%PcMkVOIjQpc@aS0>F7sVW2WM4nPAa`7EqQD@_td zEMB?FGk@@>-~+ndCcpdCX9>fQMiTKSfB6z`o_|MxeC{_M=H#767^V4|@o~)Z%C$}F zpE`MrTn$j(Lsf$^;4D)C_}a-q$_n^t0jTiK1CT@^mzR6|)9G`tbuZM{_?;&|O|u=7 z1n{+2&eFeB!=T5p<43vY=kH=T&X`Ce30b_lN&RDY@Jk=Pn|$~*78jWrc%QL}6N0{{BLLufq49b;vbQ`VN+ zIKKK@_tOYvY+{(#^hd?ITs+bLx9j@q1M~-?pJS{ch!Q^bz(X8Ac8u?R_j}U;1c9R2 zXfQj|nvlnPMHp&%I|GQzRn|&vm6sM_C|^AuW2}s$VW6;8#Z0RyZ)~(ulh~!G4cA5< z5r^n_BwQHg6~i@}lJVJ?23a0eOvEcK-etX~pB8A1h%t^J2*eYWk_Jj_3j#eIfVGyY zs>t&k5s=GUqZpJ08cz^J=rF=LCs6Wqgm(@PB#kDwdRbmls2R`NXMz@c0D{TE+iwh{8^Q(xu> zuU~{RX1Vh?U;zq=JZjz;pl;QfmMND}z$Oj-P`q+gYZEHxarkh9DtpN z;PU^FmKDy~$!BbU5GqAsJale{-G@l~=cQC-c}A}{psb-ZhRsSL<~+-4 zE8Kh-dP|JzfKYi*tOFo-VLE^f9#EH+xICSGFtdZO33XLc8!yH(yAx*i!(0Jgezw8* zwF_7Y0lK@Oy$?)^RxlckNYfl0K^QjhQ~&yXeZJL^mC7&}4R8yyL^Iof-B2fz_?)Tn z&aboW{~Q8KgCX~wILwLLKaA1=4Rwgsw3K)abim&|`v6wOD8GlTP0e7Kt@D7jI_>54 z)xo_xc=;<2gN_I}Oc2Esy#dER`f<*D|G&9(u}2(7to`c1*cu&%Xf)tu31H)R;#VI) zdl=@1zk2!;WH!P(!@`VaWnAF#c)xDFFMtgpP}g3P-A!!=Sd3F-c?Eb$GFut}T92$$4kOXX4Sze+$H%GHI zBVGiWvMNYN15Td$1={U4WnHsnrom3F@Py>GqcRqSz@OY@Qz0OkTPZc!BMt+}v{sC?zo4Gc#xf#(K*BPzIy}`}VPC?;Z}#F0k{aU07oY zgOD^E@y6NLIB?6YY~Q&{s)g2p?7#Vgv!Zt$fIPR=Y7xgFcrfEs8ZXvYxv5ETYMiv1 z3FqGUG2edWKhS~Zz@F_qcHQl&s>Yg{ue|v8jMEaYJfHv6gUru$1>gk0TIPi~47sv& zl`s9#U!c6E(`oYblaCRG0Z|guY_!<1=Q@ae`{gsjFlIbh;q43O*|BRkyAK?sDhmP~ zG9C}P^pm&b9YLTJNfPttfAbB_U$}&Emd`x$ASdsQm!Lb(*^6)S_^(K9r^s{u@yrECw!!Km58b=U!d!Pl4w!gB9EDuH*5^C_{3BS{ z1JzqR^_h}(dq!%ykshL?$a0LSF=0)Sm-2mC7P4Pg1zLxcxtzh_K;SCA{_5)t799+G z+;PVx?m2ZAfY{=ko2<=Mfe8Rpm6)&v2k(LTo#5Y~DsyV9#U0ss6t>+7mw$+r&Q2Pd z2}}Vnfe8+R5cZscy&r+)bD;dB;S$|!JY+oTi*6W(r0G!ZkmqCBud7l3Wa)^iE>UPi z-x=6)Gqevv?=n7agSQ(J{09NpKxsJ2IJ$2ezkFYWj@sX0tsw|Q@+_sUYKk-? z9S<>eEzeEIDYmRYAyOE}=Ra{L7sj*Ls>{g_&B^yL%h4wpixr4GOZd5`AOLhKCka#oTP0KYaWIT3L)ez|}zt&LZcWqsR)f zaVn)u1tEEwVQocO6k@bDwY1QAo?#@(g2OY;4Nu&ElxC#yO3@pYjPi1w!5`QOuCA_j z&!0cfU@!ofC~u&K0)^VRkHnimEX$HC%joy}l8DZoJICeAmnUJtM6}kT(`q&8_gC>j z3eMo1lvzrdEC;MCU!|_4|B(HnD9E!h-+%2j;zmP&<2}y%$>+*2l%^>wD=Uo0V=i5~ z^zMDSQvob4F1~jCV45U}RZ95@watqdBmgG0H_I~dh?ie}nIuWX`1gVqMG==TzKsJ` zt~5noDKO44>h~#&oH$O9eUKTy%*TBFo8KY`v;dfLmkD^aw6qjtS@t8=grEKMH2=Tl bX8`^e-7bFVRbapf00000NkvXXu0mjfEIrW6 diff --git a/public/img/emoji/cookie.png b/public/img/emoji/cookie.png deleted file mode 100644 index 653edb258c62caa52e7f05b199b0974099e14eec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8149 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 diff --git a/public/img/emoji/cool.png b/public/img/emoji/cool.png deleted file mode 100644 index 937dcd792105b847e41b6f8a1146d73d31ea3236..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4182 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 diff --git a/public/img/emoji/cop.png b/public/img/emoji/cop.png deleted file mode 100644 index 43a5a84f821473f9a2b3eb5700e2a503a080d339..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7141 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 diff --git a/public/img/emoji/couple.png b/public/img/emoji/couple.png deleted file mode 100644 index 9e51f40e16ecfaa96b25c2fa4854d6e9935fb1b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7615 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 diff --git a/public/img/emoji/couple_with_heart.png b/public/img/emoji/couple_with_heart.png deleted file mode 100644 index c503f40a931aa79cad2f9f5f72d768fe2ed53561..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7370 zcmV;*95v&KP)@F3-1~C9s;n5+bxs(@kvXu1?jJ)2kP6ID1~7^?0jREzE)$(EQ=~&id9q zRqMT4_xtv~`<#2~DiPs7Gc^CX@&64_r z+|BpTM*k`z3G?t_bz)FLe@Sp34UilN0D>ZcszUw499(&wY?|htacoH6o6g9Xr_n_)f-|p@FW%a7O#@Jj(wi)SH$RB&Ri5+vf8IC{TFd zo;ScjDnjBMiGXuLUDsJ$UHv~dS2tdorOEMUzlo!+eLuM)SE2yKAqrZGA@6X?1Q1uf6h8)_nL3vc&=_5wHr$S!(;Hc;XY^X3Nbt zGf7H~uNuT=&hkW)t;wMItXQoiq6hsg$=*3y|2`i|NPxH&S zT*Zz9gEY_|y+ZE$I=~mzX`e2_SJoZ6p4b2IPbu0Q$zx- zH{T*A_{vA+&i|r}`f^}`KkSG_Ydt@D0zQg}r*jT#weq4ffg!Z*s5M3_RM!A+!hG>W zIC`TJYn!WBHgG71Uj7!M?>vs3NiaE!5sjn*2wFfeXbthU3GDhZuleKm6I^~B4fqLQ zvk03$@w;UA)^Pi41X+W2paf7303||dEUJ}|{IADZ_sO#u|KS7d*|+>%p2nk=?V}! zj%i56`6@6*(bFhVqKDGJV%!rGSO>Zhqfvg$hw4_6^AoqL!lF|*l3(5r4zhQ?VR)32e5ixljxKX z-QNK+uNf+*P&lkH1ZhBq3}z}uMS@BcpaJE%5DGv*<4_J0pkQf3|auf*(Kr>%F*4p_-_&Bcux^wFUgbo*8aK{7?Gzv5b3a#6;3WG)_>!2+p z`b7<3o;3m}0U8k`B2c*6+&@J&7K-Zj3 z_Peycv!_CAyb%~*>Vj6C4|YWePVi7@>V+C95v{#5Aq2d#&L6K-Ywh`vML@#fI6! z6fII(kB*QI^!v^&P5}l`2+9w-#K)JPbwRq(d7_2XIHGN%%o6bwV;C{r?%p8_H$e*x z@V7whgg6x<<**7sa9TPBs7|B{0UU;UW{#Q6G|Q$+G#=bX@#vMf1YDe8Tt~Dr01Hic zS>ip!0S?iE3qS&){@{M}bc09LC^hN?X-GY4kw>z4=v!`77&3nMVbk&+QQ8>h-Yg=u1SLyF|bpObEf($aB##S z%ed{&-p^Nm@Bm-G<>%m1FahOKfxy~@&ja3oIF7Mj_|6xQ*(L{u#u*Hh`Rg zK!eqwHS_n|I0uP?*g+$OX6(g_L^u*sKZIB*ViY+nU*`dEV2$Q0m%f!%OZ)koE8ou* zAG(ll-}V51|HFG3+&k1YIbSFc2Hp%`{$UWHs$0GzVWEd0SA6!lirO%j$F~fzss3`qB&tFj%yh?#cmb0p~;J z6Tt!CR7y%hOiV;XgC-hbtL)=k{)T+P^4(8g!YRibhJ;x%r9OK57eSjeWBzUXv)p*+ z1Ke@{7Pdb59EhU>mM-o`)gSqe5N1&(MCq`T8I87@Kx;670;yEm)v=3*?s<@VfBXQu z2M>_VhQy_qV=71S-ib@F3i4ilmY`#T#(088p&(S=rAN-C}PS*D3zhvWOVls_dfI(KmFxa9)9d;b`0*t zzVNjOQ7fVuM zjq&y=Y%9jhG<>p_ty<1SN37wZ_x>g%O&A-)(g8{V4)FH}t*Aw-StqJjKoY;S%ru*j zIszxW_N1ffAL!?%@88XqZO`!Co?BSkTEii-f=DH30u*#99r5Z#O>ju(vx49{;$sq@ z`4Gdy4Duy@M3{qLJA4(fQz!+kIKtH`*f4|6W|3GE#5uxjk&IF}4JJ-db5*ZLrzwG! zc?O8!0GGrxS}p2xQw$Fe5!*Z?lNEM7{S3z)vxzXCA)D05+0ZwiUpw;{s!@~2p4r27 zJ^#d2v!5VG#%D`;cFVq71?mNQfFOXLx7QOAl5XLrBurD|J@R(|oV0csr9zI>3AO4B zqqF1K{?+W+HO|>C=S)vA%i5jX)lloahG@xsN$xHgk!jhzR^DINLi zoO;Gvx$__Xmi3P@9MLZe=zo?px6 z*PQ~u;VaA3CL3J&$&axVShlzXK;OUyFafr6ju-|8s|>}|@DJHLxIMg^P{MBiPDn_* z61@rCOmxL}jEZT|qE3SvQ%n#^^`B3XuYWtiJprJAQpWnI3;hhNS`EN4tI9lb--CSl z^PgiAP%dW3Y1nY$xs1$#b}5L1#Ow9+1|TVjpn*azM<%JUe|Q{#Phb0OK5@Y@T)k0q zJcYEo z*@^t8>(rR@;zwoV-p%sYm*Bzu0HM|714|g@=&S7Dp}TG*1+KdOW-fcv8a{Khfz4T@+))7j!b$Rl9?%NYCP0dS11lMnz?X8@@rZsLD;mFnrS1i$#9pu?@=Uw! zu0fMI>QtC!f??VB^m+2nXV8I&)PWyltVWA~R;=hRQ+)1De*7=rqGrnc-mN?Nc>7w< z{{7GM?4BX+`O(c}M;_$xRsASs(cXaP>HLuxX&U)V3Jwv)vZc!@=BL;<`g5M%{Qx#w z#8^wKGD#_#;Q0O!p`XdwDgdc-xU@|tXai1!tc1*|h|lEz2VZD>jE!y$kf0GDB_snF zfKK+C-lQh8%rMEY3=N$xH*RDh;P>(w^Y%uRkj63SfHlj@#L-g>-Tq|`^sFSv=80NO zOk87qUxuY?2e6qOaT22d{E2XkMX*mkyMuM>)?kbP8K!3Iv{G2Jas}&F@0x2S>!L_-F2N~9xpy(WL4c?hVjQ*>U~=mw~=g5z>exuJhcUz1W{W@;KVGDEIauI%H_P!sE{k^IPYiOFok!aRD|| zet#fwgp(G|`G0hH7h6$6D{-`%sTb}A0Zzan6dnA6?e{#whCf>+%bTK_sz8y17M2je z&zrvAPctGT@dPu6eMq*{d0`MI>8@%kUe{*xQ@t@l36uD$#4f7GQw;xjBs zjHGSGF=>(#yOii)jAEjwMZF#&sLt6U2;%2j48xKXFO+|YV&;w*WYb{N3`SVO|7{D1KzN)uI+fw3=;3F|kDc8eN+{rU^)bq^Z}kbN7C3zxN@2 z`im`XKFSY%_832Y>^ba;e2Isi8f5EEO<*nMLXP*GdluQilEy8>b;NrUyxYW{o$Yd~ zMYZ0fQHu}-(yahN1X59iidld+$o0?OsD9(PR5c$fQz9e_;2UIxStg}%y~9K6%OcoOs+uU*>72?7jFjf+Ql5m^kso~7%#--=Ho=?5=6zt-~%Q)-w)rhjF zFi()lfwnlGd0#@1MyMnvaS2h>W*XCsT2!kIDz!Re;}wzwR5{k%h~b(U0X)=HfSa>QG8H*N*qU28%-+p zI#V+h#>X0Hqvth0=vIQj9L%r)m&lLq|3`J!yA&#ZxBU2FUM8BY#HaCfhE!gg(4dmisd3`15P18;xyNv6F1QN4h#_x5$Y7HW1>c#=LYxjYu z^rMIP^S`}?%3Ku@@XaQQs2>zxtubAhW8cse)mnnm3MZYcccMc`#Z8Dv$_wB<@{{ki z#ox%w2ir#CpG?eDcJ805GC4U%wbq~+MYMe1a{ikC{JLAX>5hlImbNCMW*w_y0-X@J zhy%k1ut$I3dKUK<$OHjODQeA#1G5$8%)mGcz0c(sP2R2;EyD zL2$xuUL|ZFZr=8~^}Y8!*OPxkPd-OB2z?{gz@~Lexbng`^2HnOrVJ<)ld}~@X7Nyf z1#BMy2Gt>G6bX(YA}%_9BbUGbEJmkhsW)3x8*TBkmA3dXCHmBJ;GRy-H?O}Q*!CE~(>urK_ z^X7o0Y~xkNzYjHjGBP=H>DB{d>>Qe8q|LF38AivZn3w{Wd+J8KqR~4NgAs5MF=s zq3j!)X0B3WMSq4uriFfZ>qOhF8jE@j#-f!#j=u1H zlI#CewC0VQRL?SOu1q=5n5;0mdz_Pd_sGg6p(>V2WHK3aU;y!2G1{+WwooXL3qyiz z4orv>g;It>p+#@n!}L;v+f}8vP$Z)?s?*?#r5vjlujG_9C$fFyspQ^$5B_AVKK1>gJ6x%G63;qR;<4#{i^Tbnm$Jbv&(kifYks+|Qqcy+= z0r_lzw!Ic>I&WtKwrq*hlqWyvNlUD%#aVW6mtc7ie(lR zd+9Isv!-t~>-$!p{@bhH_yJyFY(Db54@|8->+}@^t0=EnPS4UlN`1ZL%RS^u1#bbM%!{G@zX#w2I~B1iSN_yEyt!79$fWI*)(efBfQm z2wJNd_{fFy*nm(61fBB&r8HfL5W0|11!!lGNLbUmhCMU8J_me@R}dq8ulZd6zyQT| z#tVyj$d@wMOn_FP4pIXGA_kF=Bnr@}3z%Hs#6Dg%4Kpr`8IQexq!eZlvXUbAVdUXHA!qS&T!60 z*72k3EXRIQ@#vTLQy!S*nrq8^_O=1+VW<5TgWtK4R4HnA&l0enRiC<;ya~t}iwOd( zQqUE@00Q7p8F1N{dagu&u9qdX(n{bJF<_=|-Li6_k8CMNSSS!?Ljr&JAusT5uz-L; zFj|OH>#O*J-#?sNzLDc~SHxU$oaXA=*0*o(P1p@boksuS@z=8K@Eo?7K=Fv zn*8FWU_g9BF(^Yv{7W!EgVKVw{@ib7I_*06M` zpUKokIh@eY0N7Pmn5W7N)kI7Ef7Gx%$Ls{ z;2gv$qz=*)Y;|r9B7mRAU_QOhQo w3e}-W(j=xaTfl}ErFhwJKJ!A72x*)D8*5&m0o(OGQUCw|07*qoM6N<$f-Wx#ssI20 diff --git a/public/img/emoji/couplekiss.png b/public/img/emoji/couplekiss.png deleted file mode 100644 index d02790822ea0c8ac8903eb525364778e95debbb4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7219 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 ByHfxF diff --git a/public/img/emoji/cow.png b/public/img/emoji/cow.png deleted file mode 100644 index 12e1ab6c0bd8d6923b028e2a5336ac388b977d60..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5745 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 diff --git a/public/img/emoji/cow2.png b/public/img/emoji/cow2.png deleted file mode 100644 index 594c92155bc52116674fb8dbd94738fd2e0a32b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5303 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 JPDHLkV1l@IAA|q^ diff --git a/public/img/emoji/credit_card.png b/public/img/emoji/credit_card.png deleted file mode 100644 index be1c1dd3063120ab9b0844346731b7e2cdf88671..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2648 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 diff --git a/public/img/emoji/crossed_flags.png b/public/img/emoji/crossed_flags.png deleted file mode 100644 index 2397bcd0fc9892531b3c714cd34d65a58dfa3d89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4015 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 diff --git a/public/img/emoji/cry.png b/public/img/emoji/cry.png deleted file mode 100644 index 6d0d9afd284b9a22107defc3979c9384c192af74..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5699 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 diff --git a/public/img/emoji/crystal_ball.png b/public/img/emoji/crystal_ball.png deleted file mode 100644 index 6d2c6c42d448ff1e77ef23906f4048649ccbbf1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6236 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 P00000NkvXXu0mjfL%}CM diff --git a/public/img/emoji/curly_loop.png b/public/img/emoji/curly_loop.png deleted file mode 100644 index 7dd841d006af803488abd06f754f6b05ba219b8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1129 zcmV-v1eW`WP)GrBp;(O{65DsaQ%aHT0yZMny4d=$CD@Nt$Hb!EGEf2A~t#*@GI%4)!^T1Olv0uQ;(2jdtA@=mS;z?qc!|Zc!r5ccQ`nrv0ocgujK^6s zd}9_Lb?rN2?1qPxGAkbH*#vN(d6xCFWAOD9SugvPz0E#{-|Pz3Wj#UmbC!Jwj z0utufMHroB_^;5z?#q7Lnnat}2D;81y$n~(3Mc8!$pSn>+DG3aE2)Y~%z=f(tEnSWK4E`{{PNkK8u3;qIaPS%+!f!|L?8 zh4u++%~ybZb(J-q8zCml&QQwUq{Dd&aC(p~D&on3TI}Oulz!rT;j;I3~Pg8yEYTDQe^^#4y)|UeD)tM=^Bk7f&SN*)Lz-hVMj~%edHsxJ~ zx2t;8R`?dr@v$oPdn>+k`YWnX;Z?Q*JG{Su7L}(NZ*;Y0%H#c(<0QJ)V*#Z#&Qm-u z;MsbVEAsVT3v5$(lCdr~FJSr^+?)0&TyFBV1#eXbtpYn;ubZXHWy`h2TY=`xy(sOj zPtNMtMe7N??rjgWWeT`|0%n0rR)L2+6%eret~?pz)9iM=25RN;q(`2Ry`BUW3uA++ z0v9S{E(<)Da&UQEs`h#ilt|ynJV|Mt%U95CIffR6Jr|IVSkwI^M+zJ8a(T>h^rDdG zvrt^0p3a=`BNz97z^31dyaUgZPDwmXaZ`c1&t|ly`cC8r#Ep(g+fiBGvW?P+P1%R$ z_);JW;*iK~?1|izLuCj%9V(8SkY9*4;0un){}EqYU|W!tG2sn-enxz!4-3$CB-P?U zXMp&N*de|ruE#CnUi`<5F>^Eu$Y0Zx v^>0Yzx=59<1lLsD5Rp-U009C7_>cG(O9NDlw!DgR00000NkvXXu0mjfV%RIW diff --git a/public/img/emoji/currency_exchange.png b/public/img/emoji/currency_exchange.png deleted file mode 100644 index 6ebebe70afb01c3f179258d04eb9a8a22ff5b543..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1959 zcmV;Y2Uz%tP)700K<-t~H)Gv1lmdG74Y?#}FbyKcDpiHVBPt&nISEt+DK)A^K_j`?{M;)V20Q<}Y zlwm*E7nptR-8Cf1l6Iso{cvy-@7laQ;V zirdlWSEpbGO1%T9ob`Eosrb^=#ykQXfbwSXMf+s>OG(Mw#?nS#n?`q2P;Jpc@(e@3R5 zr4f&9<|_6X`)TL7{NGCGd={rHV|1DGV$gF#{&)iKo2NQJHPZ`#aq}p~OCrExdfq7Q zBsXf@T6leuB1}U8%sahi;6sHRgg}~h}!HF?i zfTY+m-m9H14bgVTBN&Yrbd&H2en%O?N%E~wC>6Ig|Yt9cu@bCk?3>` zxzSsd0@_U>eyt`T*F6B^OFo;!==Y;0@O=!^=RoEk);Z$`+85;sX2`Sn62_{7^+Urgb+gLgG53kE22Jsrf_r;J~u zHyvEN0=gbYm9{_%=)!tOYubeJyn463=q*v``7xwql`rc{=AW#~HbyauAVrE&#LpSf zzQ+8YnqRQg!@p0oaGV@Ag4a^%1S_3($`ZXYwq3{W-w`;joz2dsB<6rq4QP)^k4 zYeBhFT_lnYd1Q3K9hZ-)GoJpXZ!0hBRlTaM$-f;@T9n$s%m&Fqfznsl`kOT`e zqg_@?Ew<>qe$~WL9ptx!q9=g-q=B(z@s$Gkww6crUvlW4RDt^I2KdhzXlX+lv_Ei> z#^YJLn87iuosGnFn-vg0o5V?SWamTjf|zQ~Kx%_jf`hRnzSA`NT@#(yI99(rIC93q zezF~<#kM8DhotAoB#s-&YvR3pnh9V%>|=&SQ@US&H;rQsj;a4nG#@Pi`J74fXF#H6 zqe>5xyppU+KkQhAiM;Y=iY`MI-K0RjqQ0uGsuk_8`sEb%kbVnSGV%3R*72Z}odV@Q!XsYK2H_U%1B;@| z7a|4XZi@7ENA;Vi*{?vLQYr9B5}Pep9EoNsv$R zA>~(wyEj0*y|)u#NSNmzmQE($wrJeRE6PgZd+{TJ)zNZ5TuIWbA@G_3?&jkk@AG7m zP9^D7av%YfJR^VvB8+tSb{xBzTijLrh`6Y};Q}aY{1@Vj zwWHi8dH{$nxJDzlv|j@5&pae{B!LVnW=_YKil3#LF&?TY|=S6h1Ed@mYhhzV+R~mGF9mCU{%1tFBA-N^NgsJ-i<5b_pVwF0Mu_L{=HEUq%{=kYOWF#n1xd zeTeC|2%7<-5d2ZMyC`@fMlAyO^t}y3XdXjFQIV~`AqX7n(te59gduQWp8$gh5TQ=P zF#Ma~;~{*fpRWzw)Ez*W0{i<12%@_%PBC0%@Vl+=_Tlvqy$<}H(K_1?Es?u}*8?z& z=0ONln5}(3I3B2yzG3j6ZT$;TJwOm)uL~dm0T`+>wfjCcbRvKN0T_I=Gr$&X{{VjQ z?L@!Z{P+4dhrkbmceJJ2RTF8N^at_}b{^#cJNc(6|Z#_)}L tW@oaKd&Ioow@kF})68DmYkRG2`!8X{az$TL*8>0m002ovPDHLkV1l6KvNQky diff --git a/public/img/emoji/curry.png b/public/img/emoji/curry.png deleted file mode 100644 index 7983c706a40ebd81c1d6431c52dc7fdbd75d6ba1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5336 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 w`}e_rdjWvMdB=a>IolG@8Np1BYi*fPJW zQ(ZN?b?f~8^PR8H>7Fa9${#X@KWzR#fPgNMldjAMa~kK-=6o^5m7;bofi+-xc5x6p zuj0nkH=ZQNeeq=RC%WykExKUF9v~N99fak*mx(K^BRBUnDfA8y8sD6(DQ>c12ii|D%*vyheJ4`lL__Fg=3J zA^9A+LVyhg5lLq?D=2ilU8J;|G1_W_Ya_nitIhcfs2_e=IJ*0iBMu+X`#-hgDOW)5 ztiL)3H*lTlU;Yy5AIY1b1o>VTESbYgSM~A2B_&o2h4d9IxxgU8tfC6-*i&gZb{vj) zYY_awBc__&5n9BlcCo&SX`|6Ti+U;J6u6;L?)eJ2x-++c>5pJDok1IZ0C zu&|%ET(E#QzIcE|{UOa*DK|8^ItBI2Dq_G2ES)Qydy-H%ZH#dKN{ni-+kkwb`0^xc)v}}zXTx1Ccc-{+!x%N$qS-q&pgL@+G z+E(Xa)zfGzv4dE7RtN+F3∨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 diff --git a/public/img/emoji/dancer.png b/public/img/emoji/dancer.png deleted file mode 100644 index 7a7bf59f1799da978c740bc7f000a3e1a6366e6c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3726 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 diff --git a/public/img/emoji/dancers.png b/public/img/emoji/dancers.png deleted file mode 100644 index 2dfb451a73a1566fb1d916861002b3c6dfe4572a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7918 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 Ye~r7(DU}M)8~^|S07*qoM6N<$f_PRQ>;M1& diff --git a/public/img/emoji/dango.png b/public/img/emoji/dango.png deleted file mode 100644 index 2d042aebeb589162683b4eb8976acc2e4a3c21e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4449 zcmV-n5uWaeP)z;j>8AebMQ4rZGmVykHDNO(i#b~H#DhL#YNWc=KK`J6T ziYx*`K-99L3}}pH#3-7G2~lTQW}#=M_kR0&-`#Ke+)CFJcC4<{q^hUQ*LCWgd(OFC z_5XkW@B7ZZ?>#990{%an%qrNLCE)6fSL^qk`=zrUz2KfJA3OhnTOWMGJvTjg<`@6) z%ctF*V~v{1%Ep5i-g`QMcjGD9jTa}icy1^&fa|!(aRoo{Xw{nL=SM&N9oy~y^^FUk zeEIiA0r#A9&)_#NdE`eU`JrEJFP(DbS=(Nh+dR67f$RYJOrFu<5~G77j17+KBbm}4 z=i-Bhzq0)c_y1lH@X&?#pEq2{E(~Rg7p%*VFpw^?Wq32Cfl=b|I3vYT((xqOWQM|E zk)6ACuyyNZirL}^9^duA%ojF)W_-;OaNk9HHWyQw9~V;vA`u-esv)Tgkzx!-@~L&| z$dXJ{)riJ)`kp~5on(A?JzGb&FgiFoGMX4U`sGb`oU$ef$mzN7<_kpzhX*MQjgn91 zNJrB&BP}e?WK(_vsbmsO)3F;i1Bn52J&tNCXpTmj6vbpw$|=Q{K9~7KeoYbZ)jzoB z{7gQ5N@hon_?8rUGKQvVs7i$1FPq2}P@@r~m_$$N(zAOQl^&Qrk*tcF^>OPqIX#Qi z@X2Y#AFL??;!5n#((BSBx2DkwI*KBr$O^vfVMc7S!&%y9mt)N-CSsE)uh&WGDIyV# z@=TSvqjQ)shn{N?q$HYF>x|o_Ti&u}2#7|a7iw{xh!jC;23Rcz%d;Q`>Tm?JZIYAI z9Qg4IEIc(u^XUq@rqOHks8*{)yAcjfAEHxfv*WCtWb`yX!Od&t9H1&nQSB?pQ$Bt( zz)d?ux9Iq4Kx9Ir@~aApqM)lW=mx}VG1^L(POZcGb?b@6bS%X}bybXgUAB+zK=&eV zUNZ`iQIT2@OnWF1mBg+L`e~`KU$>p%x(dxZQMgT#_CI{RAGezrj0?GuZ}Fy{^YSr4Pxq3>FBj4s_{P0YAO z?r%yAzIB9XR7bI7td50iIdr>SCMG6mG#Y4{w%2i-zqtA4n~$9|Az+%uH~Rhl<)+am z?#A)=JGhwm>l9+M5k?~;)EhP06Kzx!Y_aM(bOVF>u?oRfnGFw|MsB2K zNfxf_GCVv?KA)%8>tUMa?nC|d91_uYpWHMoHSu#O{ZQC@P zO=f0h!~sg|edhY>uRr&sco=GTyL)sgifg)bn{78`u(I{NN+ zzgt^%0;={x+cv-HL8^=w(Fq9bmnIlSeTrnJUdUVSH;mi)_-L?*<_X& zG2)4M2)0-(iarD^%QE$P9m6m}`8$pik}@zbAQTerUB75&oN>m!RVU!Osq6ZUZu^}^ zzfaff;hO;mUOqsx-o$M5>CW`TiTT_`-+3U29g~KUbNhQZM5g4&VF9KeGSO zZ%};jJr9E(X56N5$vPs2ilQn4a2W5cR!hXXkhuUa$OyfiNF+$7(?Sv9-a?@uR3fT^ z*e|ZdzV}>v?X_pG`a8jEUcT<3O1u2(O1-+zFnCzuyl-;mDCAf+P_Rp(1wf+$oeGlB2j!sO9ceCm=6WUmYGHPr=T3G72yY!(Y$CP= zFyVaxT#zA15eZS0IWZs39X)z9^f(~)ha@a4EKn`i8O(1)R|?Em=IJ!Z>KF8hdd+W+aZz=_&@_uaRD>(;HOisU6qn((v$Eb@UE z3lc<}A3JtTfERP3B7}Qf$D!49a4e68_wQ8wf5KKLiN#bLzelZUph^-$*=_i)OuILa zVYV>(ey`f#;d+f*fAMfoTQvm$Le38hKmu?Wzpg7JEqdW)p^l|YFM2We-wD&kXv=i0 zBkXr>bNL@BH0O@L#6yP15Zzkk5>hD2b?7$ghDuQ-~fUoksl;Urdcy+_Ku>i`z6E0O{8KP$#{X0!L7)O zMR=l&CeSpUh?gR#Z>8f@kR;eOb}@bsfC{NBlty4M&uy=LpLEfx5CE|FQsWDYK%Wru z76gb85FsH*SW0x|ayguf=`qwu6uG#M!NPhnu@Z&!D7qeFq4O*~XBH2eh?*dq7-M_s z?VLLPP9hPI^a}eH9;Deb(4sJqi7;G%O=D2V^Vq5p0C4;5x4&c2^Ls@YEGj~HTqr_- z7L_0jgX!sM4jwqlvC7XNHHBjv$g;;s{xuAxcae&gh^SE{oG^LjlN(WWiv#6vqN)%O z&@mfmIt-*^WD^CVG05js5*kAne>n1%RU-i4h8u3UY!UPg&p-dXE3*FV?5rq#A`C|?ssd8LXd%h2^;_S6f(M}!x5by7cP>82?8#&@*GZCem7*xyB8w(6f45`c zIZ|6r)>DqtmE35Wd~7S3_PH3SHLfeFy7R)aM zg9C4pQk7?d&MFbG+=3wRff~mR!*GlJR0r4VAxpB5yVwYFKqfwd>sz#)30%2}9!sNI z1zf9%7i*zuNkB!F6U3t`?VgM6fvSQcgPS1_tR?{~TU^eN(gu-a1x1Pzi{wyM4af1& zWN4Yc=E(fhwCyQ$B@^!H84%Z80xHOggcZ!t=$h2qKoEjQQ6a9PpY&gp^gYY9T!W5L zq0v7WRtQbakcqoO*3|KFFm;QB}f{I-EF1sEYY|3&(?a3@jg11rkxn z$1zTN0vbKDI#-{e*RL{Jdxq)ePw1Jmbo!GtdIvF`9=7S?`3?Y<+hqN~X>1xjlhV)* zEXSqN1j_=;2E_;4f^Hvw-{Zj)z)2kfhQY5=S>6g!THOWybLxJY=3#u##|`=@NekYs4|q1%JB4iy)gU7lVO-xV&zigzca0jyp?PB{}L zNOEZYNh;m_wEGkEoeFL5Hyo*cmxQ#7f%L90RQh&}a-&Mmgg^$z1=E6wIasKIWpewP zAmE`-RGw@%ofj<2M^-(0eS^7b4L`8xS#!+PpQYZbaH#SevABYw$QWjodgmavV zV&q@$4z8S^=1udn>~B}0Qik$8%uj*blBrf;z6Q-k*!G%-8RW3`c+<1UBqJ0f1}WNP zWAg5wJo>RG){p|0+pFIzz21g*`Vwd5@)> zYql0IedCS+c8nKLlLh*uX_~>_^RD{zWh)b~_Khnp+O~Jcc>dB?ZOm~>DT|UUV3470 z2YcWA9znwI`H!Z)_Rj}*Kl@Vo$>)!@cxkGM*R2r`+GI3o_eVxCg1j3&D*NNS4KYPPdlFTIl+s7c50L_nI`qfW;aPRwWzJK>J0@euN5MN?@1DGlVyo*qu@$#;Tan*{m}y-ed5ADx#Jb#pq{W-R<`3FTiIR- zdO1)fY@mv^G+tU0Z=Qe_aJldEZ35|n061k#0^g;mE4zR2xhrmZ%XMG7eFXwm1Su^a zFYlL+m#?jG&vEdt1gnJ&B1>c(Ut=B6`rfn0KIjL*BYxnW-RnCHWV*Bsi$=%13RsbV zCE&|JuMAFJYQICW%JFLu{R*V~_Wx9WOAYez5Wxokl7RjFUrt``dcmVR*XPa!2`})8 zN3}aoGz296cNQG)kpTaAOd|vS(s&v0Wyx+?TTb5b{T|Ty;d4_LFVs8NrxNiqXB(Xd zj?A>bv%)#xghF9uSsw>00lWhI%DH0c{^e>}PUOB&~37n5ZBS n_Pg#`iGY>nSK(o3?b?3m;C8X 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 diff --git a/public/img/emoji/dash.png b/public/img/emoji/dash.png deleted file mode 100644 index dc2c0a8f4684186167596b0cbd7ca1fda70744a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5448 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 Xordu&U$H`e00000NkvXXu0mjf2$hf) diff --git a/public/img/emoji/de.png b/public/img/emoji/de.png deleted file mode 100644 index 16a28548c9e5b2007a7d5443b58696c9bdf93509..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2640 zcmV-W3a|BvP)j#MSg{9olk9rqojA_evFv$1y1R;h&3vsISGl)6@kWW1De0%Lx~nuZ|9^c| zUDZy6Qi`7C;(@sV&oXlZ<_63Sm>V!R;2CCaK=3pQ5JGqe{uBX6j}ev*#YiT#QA)|D z(g1U2o;4vZC0$0He@Y$&mUZhzI3zkxjiQ_n{>yg%C z$L$z#!XS?CxnoA30u|7<4G6)AUHyUvCQzkPQEO{!ou#FvL(IDaxZ1)ObOtEBUT=t! zbh};IZnqU;fVPU1G9scSu));n6D}8+p(4|58{ki0b2@1QL=;8!m6erxtya5+Y#2KW z@r0}(2-nV!U56Rtw#Qi@{Gxq5;5!D`j~8A*bed)9G!|Mem&YlGqGOhB*__Mf=wpZH z{wKN*IMXgI9NA8-R%=|xG|=x0E|3-C+uTjn?5SK#N|{szQz;P>E7@JAliAAwidfHJ3j541sxV;78+${pP*+O(lx13v}7 zbMbBP1CX%WN1y?54?z#2dud7?#6DtIM=f5D5Msrz=DwPBG5vZ$#R{3m4EhHv?F72b4g>KfbQr%z$7L zViJJ@;}w_1%dFp&kc5Sf%t$-0Z6u=@F@>^>P?lIReJ#Y9CJ5$Si=dpE|3eV+q9XuV z2pHfadO(4(NG4%eAV-6JUs(otCfcKHnP4K<4VG|GV1P9eT3(F7F4q$iO}j0gqx!h{FT|Nyz!VEFUISe5bUrK--3&+=TfDRuKF`fY zckyEi1YaNngs|5EXXJr>W+*hkT)Sp_Oy1}#+gW0S!8SvfIFkXkKsUvtbk_q*yt5AE zOaqaL%z3ja83LjNLXFD)RAL;8LBer>c6nNxm~{~(LviXOssaOn^A>g&{oa8`|3gHbT9Yo`OpBlpc_Z)M zx6CVE3(V*TD?}9tUHlw`Zi5Z54C=UFB`TLD2tXmIf(5RZna~>J7-HM#`haNZ4pHxI zq9g2q#lHv_IR;d}4u@_-zysE&9rdRl;OutZqsA2u+|>89xECPmWoWocR9Z)jU<3qu z=-{&s*@s~gu>>I2FJ~#DM}AtbnmFroJpn^L5_;%{Yzki^iZ+QZ=>y20@(lO}-1-So z?Er?t2>)F^3?#~YNvs&2XQN3}efQZe!b!T8^$1@>9f;@oWK`1`1`-X69irVwJG=_R?}H0ew{38k)owA1AvL6Xg&wHlh@e92FTPd&?tkP)4IGyx^57T9l-cR8-2II+6_)`g000z)4S6Xg>L)$>QCG zO^ZyK1jH#K(DhM5qyB(ey%8M^5^DDo)$1!Yh^2~UprjWHDEGV|6hW!#l@=C6Ra380 zbg8D6qjI`f6%>esDDD&W_5LHxH$WvZ1#yB(mQ4m!3e>8cX(~=fr6vLgL!#b*sH^D{ zwRxt>`h5Ey9adZ{XP1S(4C1*1kM2xxUUceN56SUAs8Q@n1vU& z>B@7*yh*?QV2|Ftd4pbm@w&XRy)9SQw^FaZ5>quAQK<~ad=FU%Qz#(; zbt2WdswU?F-uWenU5IUWAh->|Eu!WT_3j_iy}M1?x!0uIAMDe6xA$m=-<0>WXuU;G zILd<4x-ik0!1^*1s<(Hk0lNHMt^sjOdw=^U{Tcjqu}YU-`b={5%JYNG^-ZdKPksnnnVj=L7FcdNrlzP5Od=X>9cG4v7%0Z_^U5Gy3JEZ;n1Gc2;{%n12&hr~r>pN;;yQw7vP4OIEM%q|8~u6m3$0?ym;ID-Wa zn9-Ezgh^)>JG&tnl1()Rm`_b1{E#PB*nr{`GPuH>le?L( yX63fi`DtPP{|3R_fM=As0doW92FwkZ8}NS$G>thn8(K>M0000Q|LU~wx12W%TP#!+wHZXnuN%O~R zGv>1ki}|^eLw~Dz61BWRx<0pR{J_F#_o;Jdt33YLWeWKsfA;cA++1(cI1Gba-okM$ zS7OjP(bwO6dHB@aoapr8DdZj|YA93r=4zE7nzPs^y{Fi`zK=bee`4DMe zfAmS`m!JIL+^1GgR~dvovx(8A~j?U39!B!?O^b5BENLe`WsiCDgVQ(S5C3KROjIM0Az&1CklLK zrYdCff`fgJshJ{Lr%Y9A%-0qv7K>DhS;91A|KNn?v4>@3X&%&97$eCBD+F3j@C#nXK1!yjj1u|OuLxN&QX z-TfwE7%>byf*@df|B!1pw&?XtirG5DuEO&}PG7OV?^B9ZNGJYIA2HRCgY`*3yn-G}2ioVxe{ z`)Af3&HZ4eAWNYaa=fbuqL?r=FiM5p_DwT_T{n`ukhZ3};-+}vET}&fl z>#$3)oS}If(l`m(**HS!l+`ttM;~{|Iu5(LU2a~F(233iRUiezhtUqkx51d1CqH9< z;WM8-^Zn=6=3K){kyb)=#%9p>83#V|GgV6YI=63~Ff&^vj$)LMEH2l$bE`$`I3bA= zFu)(DG>-y$-I&UZKxu(#7*uOnW~XdA!x4TzVe?Kz5Mt%4oGMQnPYS7mU_|Eu5Z)6R zbQjJVpZ(YmR(|WLC(hFDwGb$d8XYW0&}~HcVM;g_lu9lLg(AYvfGG`Ptcc&0%iAqE@pRbcGQNQ_*Xw zF9H60H3LkftTm2(w3L)#6o9HmMg$FlGP zXf_iW4$DzkiO>8$-PlSDjHn$b9} z#2YAl50=hYeBdJv2aSNeyBcA_^o)z|hs;dbJac6k+Z8;2eUmh@>Gfm$Am;3939VxG z_970qBc|siAN#}u_Qh>5(93~VC2Hm!t46s}t!bG#T>7&q`>;()) zTi6*mIY_XrgbU|0l}7uRb60rw*;yXFl0#aGz3qrjC+6~FIj%gBsZSX!Pv>}at;p=6L7@x_r!1;vhhd9}Wws4*W#y9b z4{V#WKn{=(Qw7SkMft-BJ)JL`ScZvKf_7VRa1hbiR|J8^v<=F6i)TOaA!e%6xUOV% zrA{il6iSjpK{8!;(IO?%0qwz<7hgK$&U!#?%I5n%F~`cB$=tk6X$pcMrPm-~w}n8c(H($j70YIJQAMVLVF6*J1IT!G}MY;rt^8 zQ;V9=k9q#N6TbG+G0$J$=4&_JWYF`7mE_h&kGoqV(#Rs`ECGV<&?g)*X`!#bxyQ!I z0nOn)!(c$1+9W~|j1uyB$6`a55va;xsaU8bx2Be`+b=qKl!6Xb* z`Xi6Qre;g-5O{+2VS-x_j02Mw*Z-LPPJ``@F-{TERI#z;)9S}e<o>%HEb@*h`r| z18Zj`rbro$1i}C*G{usETQJDkChcC#up6^$pEy4OE?}8dx9VO{);Ru*6^b~o4bd+a-&JXwTNFtHuY z%eS_%9C-4n3PB9LPQ*z&oY2~E1y&ZaCBgh+2HTYE?fVlZxjD%rPg`_5nsB6HBxoiH zfv+b1ps@pS$U!)Ye;OElCjexG5X+U4iDjFN2O-spfvzy|`kjH|a4TiHR$^oXj7J)+ z3}&Vms25A1XD9A1O&UyeHn|8Q*)yA@Io_~JC-hPBaV;U0QQw-XWMySA#|3kmSJs|l`03Zp3 zua(I9W5vNyg2o_Y3A)Xg(1Vksn7zF*gP}L^@SWq7FMatnu3ViaNmFib9&x+{#3Qae zmS?J5ns|UyvsWnQ))W|}$KPW}zh2GVZ_fFzD}_h47mv>8vFS1?Yn z9f%V_v8D-B#QJ&{(`J&{B7FU&4(qqOSecX{(gdEO(@fdfZDP6}Ph7ZwKw$_6(PQ2E8Sd{Y){b4#$9}VR5 zP@WUy+lCn>`X48uIcOgx{}$*0`rQJMCSls~`UXe48rxNvmc+>`PR$#X>IRNu;D-vw z5oBD8Rx_rtFOYUheOZuk3{H+y`VCEY5HsvW`2LvfXdSb)K@cUhhdsW2r_neSXU$b`<(CV#IE!h~BViYBGdMV9a#jp=fMlii#5=V+Z`I9DvjAS^_ z=mdN}W&3_G@e9I=k%l4&1c_2q7obuXEY2HPhQ+~=m^e~Hrdh`||MH0B)prX(wlXb0 zQ=5|?%NI0Z2qG2eND|u6>89jzl0>BJ>}ebujk9_4uI8ntqV zH}4MVG!t4Kg%>F740vIRX+mil@--;CHpPlfXY5hT+hlBwB@~^mrqxUt_VolDnF2zg z4REutI4c>2nv<5KU?yeMn!>a-0MgOqGnxzUGf+y9cp!zsu{7tFK1jXTq1*p5Yo{IjAf!~WiB*h=pqO)! zI?H%0Sij#T7z-TjaDHiyQ%e@J#f$7Uwt3~v9q!&8qjf}~0=_S49;nGSY9dJ@kO|!C zMjURYw2u_wF#SUJSbYhI-wgn6bxwZHb;PQj6&SX_%qYS{;(LGrN@;{lDP<+I%L3aK zTwE*g#JLMJdV753`4e7S-^DfqE-XKdKaQ|;p2ycNa(DL*wwa~lb(ov2P|4M(L(aUfR&$2Qr#lOPQ!)=aW_LAEHFoe?;$K^QBl zIftq0EYb>4ag#S*Nyz9v{&<~NUf*D@R>U6!H1=b*4_g$ADIdRlnS8E}Wz;~mIB5>? z`q1e_#PJTcGp0M!;@-|7x9)r7N}A=13S94}1L#J)9 zvES$R-4Rl}iXUkjN9kl)dF9%eyBk{|VKC}(JPNsY+b8s5o_Ml^=S3u{#n?aQ_Pt$B z4g$vGbTSOv1I3sB_+^4@;X9jj!%5rCjoXwGqq$< zuL}x!i~dm2>m?I!ABEtLlgSEg$BK=unB(1$UOU0gD9nr`jy1MzQZAXe1%*xwbduor zwb?mVe;3mK@lF8n;~@RhG?72*_auX+qE<5TswusW=I9`%Sn@~{AQjxc)1%o>i9=1C zDzYUwz2+h+NrbH zmPN*yW-uD^`t4i%{{P%(&{pUq#tR~HS;6k6BJed<4i*+1I{lR9iQ;Z2z;q;M&RIlJ z!kwED!=55ZZ~^g7R3PlP)Ss4W9F2R-`E{6^m&ATTn?>kax|7e7o$1DhwFu~3F&I7&IU=&-gr&+^;~ww=MT zGFUQC5JYr30sd&x7Ran3NCaLlr8Fg3$lBx!7Nxh+If?N*0f)N^(~NofYY{4iUQ^e-pD%v#h}YK}RH_F4NU*w8=7UdNo7BdO`BYnRCRkN5*n#b%uQP`9t>i6blubLP?S> zDB4Fc$NK^0s*R8^>}c+eLM$u5G9|VZbFdRnl&VrO82gIdjhOnhgUU;~t+e14jH^*Q zy$z)QHvp_$iAM@0^JCeZL9QUE&slgwMZcZWI?&877~H!P;Po}FM#{ojgD0*QIc$yD zyz8@he-}3=a4ncyf(vKsEX>u|*xBXwy)lnnE_3DL`tLKMkB>|pUYfr4S`@V^tiiu9ow?8j2=m9 z(`=*&Q_^n4=wwJC2UGP5t4k#e(_?4TV{UOW15goMe_=Qog!NgIM8W>vS4RHg_?dpW&Qp!LM!5s ziFNk+&>Qs_jfS-PK1U~ebi0CKKjbTaw2g}YkY;PZ!O@8ENaMHy73)dA7fKdSeKg1M zQAG0~<%Jjelu9F}s#&bmV%(QBNEsCrwiLt(oSY=|x+zLeq!EF{_aPW)MxE%Vyb)gj zhJgN-_X3vCQkwFwX$)anl4uOAMnVuMEL%~m!OCievuiHZy2W^`xb>>ftv6!IbCO~O zqD0Ybw`umfXd!v@!YZbl5b1ET?A*HFqdW4Ez|4Zf!eW+e!DbZ3oWD?HYAQpuV!l;v z+U+KmpxeGyU1| zDE=4TFuCgu6-gv0lqCy`7W0cXCJ)y!gV9b}Po~X;dU8i`t!=KF#A8OGwayIEL5R{yJG%v zt|;B<1skNK(M*Vy!juB-D5^!l)U*S!;^vKn7hmdg(ug^Ax=X7uVtY5Hb(AtSFIm25 z)7p!9{n`NE11V$TL{lr+xUxjM(dLyGM)Z5TcvmDl2Q3D@XtD;YSkpX8Nz(+!1}sG) zQ^26tOmXuDVUV!99g@wO4EvfONYR>YApW+l$8DR-v!|UK^#xeH=;FEtN@)_EqIFCz zZ&I6nD@!h691?g5FFhYko(?-Mlxh;UU{b0|uD-8^AyW2sy2L8a-sXr%$Amr@Qea4f zZX+cK71dcmCND@sL6U-ylTD9)GbZv3DpMBo^ER;(+_^O(>sn0JY~K93PwO}a0V;tw z(O(^RlD{2A+FFL5k-kRBI--kXWX}{DMtBXHcmYP?1UB^f2w1 zg;k3Sk7jTzO`#w;voecL4R#MYq^ZF7ecZBQbt#LbH7e0`hk|iGCQ}qFtz;laR>?1TmH)s8%g>s8O!q@TfyRD|z!;K(CQ-{*gS7U78~ZLaG&qrRgP3 zS}no=x`!rMl2SqN{!0t2F07D5A>%OOzqGH@AEnGxb6mJE4aN{tW;pKjm@QSQ<_2`z z$Fz?U?r((T^WfSNp%OOk#f%1O7!1;1@qJze0ziMKx5L9xEB*!BvEGM}=h9S=gnHr$ z+9&=*t1}tNpr4`UKym9@6gY6-^o6#F$#7raPHEb>Bn+|w)Tou-ieuWq7zlve^pd(i9;m;ymGc)A$w{2>n%7SM`{7=C z{l}kN*me_(+i$iQ4vsl>%4axK?A})l`^ocrcaxt4<0pK7_+#4}V|Qk$%k2CKhX(2dk_+^00*$Y36ms{2j+kkU;(HC4j_L1`!DO?{Mo;v zf8j@-)K5KL)K{L#>L)%@)JtpTbJ-G)19_m9FY~dbbLQ`yxngZU`cX$e`cXSRecAkN zU;!|B2qAdygU|oyQ~I$dFLBuFaP74%*0-8$wnyA)jb?zs1Gd!$@<0x7fD{-2eIVu` zgvom!7>0>$J4{X0S)S|B?*(*6A>ZT`xA5(3e;29z-iJV7XIu(}99hd{`mO3Z7VkE` zXBm(RupJAjjR_lau1TW#ivvJDV`EqraUA1hEf507_=^F608nX49Qb%+pD+lK67sh7 z;851zD*%XZ{`aKHx2y4XT7V5WN(-VOoUFm4UVu(gqyS*)fx(x&o$Bq>Zzm7d|5pHr zcW_`6upf}JGEfDk8~tIryM1Kj%XySaX!ORkMnM345@-M&pa+bA5Qu>Efz*I{7=V}$ z<5zzmC18952riHXia-^Z`ESo}eDRTulc#4(nR>tP$<5Zdz0;3g1ZIE)h#z2q`i6sP zKs~H>5f6>}-y8_@0VWiHJWv9PKmo8H(EAb42L^BF7>I!QfnQz$`Wq5JKWqRV7N`=? t546TNRtW&82dMpxl?Up>9+3Y({x>Pd(J?>_3Eltz002ovPDHLkV1ie3)Xo3^ diff --git a/public/img/emoji/department_store.png b/public/img/emoji/department_store.png deleted file mode 100644 index 68d959c507de127674ab7f3176ce0adc2389306a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5159 zcmZWtcOaX6*G}kzRzpi$#Oy#zRh1YKt7^1}+M`C78KZWhww9I(9d=OEsI4|>q}Ae4 zy9gpy5VMln`;GSP^SZG`A*a=l*jxcUDjZ>(j z+yeI_Lo88$F=;Kl!cxTVc)dR4K%y=Y|aU;t|$-kfbcP`(MyfV8} zSp9>e#ls;ZS~F&3$Q?V;nJ(Ruru10$ZaW{MYSZ!UQ<32*mKiThT(v84Mrm_A{Au9M zy3fw)+=^b7keFDTAQ+so+7GH-p@})Tyu!$}$rO^*3(D+*Sy+ySES!;;D$S2;e0L+L zQShog8X~WzT>ksa{Lv69l|^Z9^?OuIO#i!^uW?du52jx0i(S54G+)SjLZR0u_s8ps z{l=lI9iM%W_G9 z8>D(l`eU4d_wuN9nxda+g?-0JshjF1XNmOmc?ATn@0@hU&-W)zZ~zFVQsQ>E4|HfUJcBLtt2|5z60+Ct|5P*7XfBpJZOib(;ep!yBznb?w zW1-77;LH(%sEU%vIzLjldIPh)Xmm$0aU&UBCc4$b8j`dz7Hr$o)8hjX8U`hA;xIV} zId%Nov+mVaLqcD=g#abRt!<6_Ch;aF1w}>w3rcVOXBC3*qm9NXGK&vo{QOW&4S2P~ z({-p`PZBGmB~7_vIKtEZEVVG_n^|EN);NgF#lBg7mw309v&1tgcqDtm{g*n5&2T$E0`I=c%7N+HGedSht`Novc zWX-S$5UDj?iPYNK3cgDx+N0-Ze>XC2X8T=5tm^lOE+sir89?~f))qrc>>H=vk?Hy% zeCjd&3X9Baj<1O5+4y<6pqI**#7)b`1d?}Me8941#hN9NocP%e=K;UaQHzXs1#P`= zMf8x%A2;TmRb2;znN|5Q(NXU7q&Jm6K*#|C3_Z;A(1{Dt4|1S^OtyRyr#n1cl_Vwg zpPp$V-41^s?^9$o9T}}Bx}3!u2b>?b@`h2QL3kkz)Wyr*CX*WkhS;c;K zU*;aM+SNxE&;;tNgEOvOs#m7TjUvf*bh7T*qCd??unyIc0;V^wxn_Smb}n%N%Xiv> z^J0E}Ys$;iVk`y>i~e>s2JdB?!Bi$rQCjU*2g|x7HNW6lkqZZqGkbc#FeH`0Fyckd zj$~UKP>7O`MMZDd)Yi(|+1norudAzL5Jj6gwHlG9cQ;L+%EaCdpP4u&B~Pd{OKsKi zsr;aeS*TM`-mCnY<{30<@d&&tW<^blsF{s_8r)6Gj#tx5iF@!-skI7Q*7I&8}BhJL81K*)^uJwHD$wTn`aSh~2#;ea%N zZ|W+zip9n=31b&tBGwSr2)3nkhBCPyU@&}ldGEaUk3ng4x>hWi-+7=lQGj3IFD)F}D=!d} zeASq*I+Q#RQdaJHE)h&QUP^IBv>A7p*M635KP>xTy$^x}Vqs_Z+ae^Z1n<{`eU0W? z82=QWM83k3h3_!B<(%Rhl$6E3Zg+&XKWZ#2sBMtx8uX>MT5$1}a{k6^CAQYSb*0ER z@n3^HOcO=0J3ks=VYVc|<8=~UrGMfu4vR#<)4L^_i~%@R&bHl>TYFn-kCr6c6D3>3 z#qJ1elyp!ClhYJRmQf>9S*t6D%xUe1U8!TrPmJeQyr@q7CmVbYK0&4m=C$jT6=^qp z(AH+}v6X$&9P$mZY1S&J-DlQne4OLbFu=7x(9I&?DjOakalBDF7X)Di246lIn@vFz*d|x$Ch-r#{neaLF3^6In$AlO; zZMBED5GYO567$4=hu+gN9J+_FpKS2lFAm4dFirptEsXh!)R%$o>#2NG=S1shAzUyN z3=6;3g)B8=WCDSw+=f1A9C@@8^5C>^6bkkHsQxQXy9Sqy>4w8zbwN&m8YYTFei2Wn{phEMH+5iSV&j_?5fO<3?Cbv3 z`(64AIv}f8_Hz_NxHx{(u`UC|Dj>BkY2=9gJkQr~rS~2&S-My68xmDr9%N~t6Rj{X zju(y?oQGBZJ+XCOPQck|f(|W`vXw3CTvP!}m34(0A?ukJD!b4b3`C2r&+Zp5w{Fy~ zr*!r-1xVPqxmD*qJ^9_UaD`jCC8g#3On@c5`h1?`%roqz$n{Ftm8$**APc{InJt1K z>e!U4C-UlI+1Y#HB*W!l|8b8`R5ZV0{M{8t{DjZm_S$fTL#(F@XImEjg*VxyHzGz& z;!n*@3ID0NK5H!UtMsTO4j6AIoC203B*_hloVoog6D12`ba|j zsoDB!r75f71fOu)xT0Jk1)pbZ;*k{0qnOSy{iL$ee1P%Sz%kCDei{6z`^G<=H9%t$ zEJZdy{>WSALDoDOmyp1;m@MA=Zc}cmvNCN4H%2VkO}Y0HQ?la9EbzWBeCLZ+?}sca z$dWwkAtJ9S*~%BON!diUig)=IcNPUINOmBnSC6SX2$o4etdlxit?W-YYLKw%ne}gJ?LTw+?v#vS1rRlsSvc!bB zs=o$^uTOOTyLU>FwL}eM6XCNJfL*N=ie>mXXlYr5!mh3$US?auD?7h6NiT4b0L=p? z86@}?rbF!wI0}`0FI6XshjK>T+snk#IEFcj!9Ao`msuiXX;c`Z5c2Of2J`*NWe%i@ z8b#S21Mcl?_;GS@u#7K=-95TwJ+z!SJDl2(k7{A=&w3ykYCGu02OcH5eO3Rg9m=!N z8f4EUqYS6eM>iMv*Py`{dC(DoqGPsUEY~ z&+_tuvg|^=K1pV2ofKi_f!iz$+K+3-?!QY zdHYUCi%eeR#y&sqRE+sicpNeHM6%-iti_W4{%x3-28ze|l)@-l3|#}EzHl$C=`@|9 zaxKla8Q@$E#R;O8XCJr*Liq4WzcXnrGyax7(zj~BJ;^{xWLV^{NNetZWgN>mt4^F- z*DzY;M{l&d$lUblhP9u!nhKPn?yQH-ND#9s-!O^<-A;CjtbDj++F`Y=H4syygT-wQ z_!f_SXgZ!3btj=~*Tdb_U^mLz@z+}Ne>Hue=kxhL9a+sP8?wB87_`iNEa>c1S51Yo zWHHk*&ucM{BOF>+a)_|}=5P9DzM5btbLPbMcY*Lj~mfOgefpsW3bxzqpfWb%D@j{n5XQWpi*J%7{#F?nGL{ z3zP7E%LeYuxQgZVTuisraDzk5rt!?S;cA7pVi;6XCcU_cT&0IO7m0h@RH8qW{NAz} zI?>K7F0TXpBV`E3%s;Kk3a0)7^($r!c)p6Jl=ei_vr<&5Z#1TEF;CkIaOBnu z7Nd*~>YVwzf&Vc`iT~C!?8M1K;Vz>KTJ<&rut+NOR`k6!q8mSzTX;cb>3FZno7Bv` z9p!=1j|uqNt!j0_PC57}k3gxfy~9CMs||U{r0vsQwUL8AUu?_&&nK<&pNiFa3In-; zN0>(8!wM;rXE$dU_zFV9tB_UlRh0m*H3CC>hArzMLvOgQIRm;nm<0pyGoMzPxRS@1 z$LU6!7g0I}2r9$g{~C3dAP+qwVR-@9lp*cVxp55HtO!A_-R6Y^6*G00$0~1Yf6vqB zdKMc?D6*))vEvIVso?zS1xQFny!yFkA*2SsXhA8ZoyCe2S)YR3AU)mGYflB$k&Qie z?ISf@?s)0Z_o0^g&xiAAVW4q-9^h{EdVif)zw%|>gP@`5`uX`nklE3zxSws}YQ!s78ncr`K%#e%X43Zon?lS~-t4wfp5FH* zztL=|a+<&MHUa2t}&I z5)?6*#0^3@7vaks?w|5CGs6$2Mjm>2;|lV(cVfFm%(HSl0k!r{4Vps`G=x&O)uC(o{Kk3f1s7i@ZV#iOF7# zo{{*CCYtA6%~%lc)qS=}X0nnwGsJ-2OLmNl!IyMC*hXzH5iozHL47>c60cZ~BuLz; zSE*k$+(>EG8!6DyY-tK-_zPB6hX{g*EbSgTH1XK$zV_w29$iKRIV~Z)0M8b2b$aTz zmB3U-^Q^~$$$9ttu3}X!U^viJGyo(HnwjHpH|67Ze1UbkMi5rX@_7Ep{(rpefj__J zq2oy-&xR1eDUw&uEWlv@C70jwZ`W>m!56iPYDvsx*-wjfUX} zHmHc*zkMwqyX%XL^}2*%ZN<7RFZ_Dn)_?fRFW>c`C#sg24svwNCnJJBdGg1T8~}ZE z|DxAkf8px2&;OFb)Z$)??#ddwZhaFYp(n2)G!Ph7A~H}_l*d*!0(QUu&9p`%;$9o2 zf?8p#unFiB_&g@2LF~`wb-?k&j~79oefBHYt=V+;f7d38x^bIi^GbH^x`NTrFr;-! zG(-~&;w<}-DvvP|=spxT-27{F*NxEab|`EWHVfN$Kg+~{-=0*{r;+*|=%cautP4IE z1|w(mdOhaHYrJj8>lq6b^$;pb6Bv!r3IG`Zr4^x{7L8Ds*>e56E@NgWps-cg-1Phl zZa>!F^5i{-)6al`(dEuQV`I_SiVas-XPIv;@aFgYI~t+Fm_Gang~9?k;5_U=1eDSk z1(DI^*lTaPl7;pHh0XC*8?GpPET07f?x&Rj1LaW55x?ZJ-MfDEKYskkWmo?}`;C|1 zGnr=f#?0&@YQs47KoJ1Ofru{2JMe&9O5hkkp-`gH4gyqZgZ1Og%q`KkJyQ56d=)+~ zzI^x2<%K}uxt#JUupIf<{_0KdlIn&Jo60y!1&Bz6KyVmVZ(EO5iUdUlQ~-Md^&Nv| zJu)DH(#DFut*O0j2&#xu6&)#*L?bHWuGd_;EC1$K@BK93mRl80L4f7O_~lo<<$9}E z-xcZxd6MHK!#TkTq`eGV4G{rnA<DQuAYV3`!7)*Oj0OW_v$Ld~MIa&w z3IPEf$C`eP@$(d%_d(>7_+C5c;f+LLr6%Qc_96SStL6`?kS3Pgi- zkQA^GTi}1yq9IfiV@n%oUD}K*Quru+rAg_VA_j+U6fqUC6)_$i^Rre1e&LnB ze*T(u=X@cEs#}XRSIW`r&XHy*N;J7m>7aP^efN?ng*c4^0tKKD>z6)Ck^tmhe(|4; zh5*nOP>MhaIh3~0@Y3J=2;X}14jO5Pz(k00L}5g&F@#d#nImHxKKPPXU3Jam;g?+f zqwoIV-<`}f&?iIwrLTGCWoy>I=v&HExAx+gUb4W@i(ka{D=+7q_v|1%Ydd!3Dz3c$ zGrV9tprSOnK+74dC^CVR64(L?vI63vz!qTey-X;_ww*x%Mk&r354iG6pDBD5K1<(Q zueg-Txn~pi<|txQrnYVE`g6bYORs*%B}a2OvPN zA#pY21^?~8P*D&XhgHzbVBgFVU;o`dVnf^^s@9_wtGC_%ORs+C72p5XCm;N&e-H3Q zP+jmV@4R?y<<>8&pb}+CmqSB!uD$&?SW^vHWpqhcDR7>gQi2Fb0Lle41r)G01o7!F z7OX(#KLZ3nh$n8!J_?x2AOnUJh|WFp0mw*48pZEqKMLTH$&cA5KzaCw^?XOHwspUzJi7?>G55I#gHN(nC(=dvPue$8Khb^iS(b35 z)8W$Jzm>IB!*HkxeVT(o4K8p<1q7cF7J6QYR_<6>>d;(VBozqi4G1f!C;~vz6taZ8 z+aWTrYGe#sZx96rD^LTB!JqMf(EAh*tu3LWjBTyJr5}0+f4TE_S*I02KNZGSZ~Kcr zr(XvC=_eM!ZNK>MM@Pq>_thY(tj@C@Gqbb&!reEszG@gP(q4fv3Wp(AgUX)a`-9Kq zzR2}N*fY1tj&nEgl3`7Ec8bUM?BVbJ@$mv>Kke^3e^hhBIU9IlZjr7CnRpumyEq^l z^nDDbjH#+9Vk}}UVlHFvb0|buJu<%aD+RZom;tNL*!;1eHgr~=TNW1Qss8pYoZSc+ zGn$G4P}tmH0izjQ?YS}-tb@!!D#g}Ua|{QX89$z0;#FsEbQ`H6n)3%_$W>7Fauur z(yK14RL8HgBE(6P=9{i!`^pBDs-Y2rQ3^1A$%4c|>iZsp4Dd*R7=_duJUB5==BJ1Q zZ&HqVJ@I^L=ql~EsMT}*vSxymq$>E@Gl$;7~1;=Nc0!k@! z-bL46=tRi!jO6^6qm7VQ$AZPU?hZwgR1gVrPz7_Qx6{t3dr#V*p{(_5qkgX0zbIn3r@G`_)NBA67C3??lo3y}q5e9cKgYX}Tfz4(EKzybhP$i4%ee2>~h(eVggnvY0{a9KBTN<&LZmWg!46 zz(@e21;Rd}K7g7)WWXhmIcQl}N^^#kA{J;1EID{0g9qC1Xbh7%%vq>u&0=clSm-)% zDJX%8h9Ot_U}e}x0Am3R0W~0SK@K75fpy^;CgG6A{NQCY6FakzFC4{K34TPrbm#BEZ!xb1YeFQ>1a0~@P zpd9UtBKDHQs!B?hc4^HWq&c_$lh0TLRlm(0e&QRg*}dQGE*=D@8UO0%n4D;Hq?;iY zv~l2sOj~jhtn)?$aNzG;F#yVMDaVoby1ZiZ7^%QQLB0i{cyZjIUi{*wF>J3}jtKx6 z*eY#%m;L})M;S{Z7F)z74hJm88B-JOl7l#*-RIPt-TRfrsi*#?;CfsU6cJHMb(SU{ zzXct9$tknBQd>p!W4Ci~_Z^IeBW%c?*d}Rn$L<7r1=kZ@2rb5Ovno?hUWd~6%Su+) z8!Kr2&TTw)$A2bRQ)gXG;{uB*9A{uD97FB{R2ZCc2pR#j10ygtHpUwsJcLWYtXKn4 zgwX*2&gIOfDc{-G<-3OtF}i*XBcOd&k%Pne`wL61An*k+^-mhC2x+dEj2(|n$MB)s zs1A=2x29;#J^gh1$YVRQxZ48ePk1FLB2A^#NUuG6xHV13@81d*Yx66A`uAp%6j?xl+EC zfW;wLazEz`g41BV5F({-=2OewPLA!z+87z3*P5X{|Ma2u^y6>s#jQD@B_i#gbTc#w zZ0WY9o)E3B5hs6K9Y3>Hsf{ta`~ApWcd{{ukw6m#gDb+!ffm6S8JsyKRFq-fX(GRZ zTEA|iL3!dnvoS_v6eVzAv!ZWN;wa~KAJ!_If>1-n*PAqlW^OsyvCQA{ej4?Fq%})t zanDS9`pMr&I*XG)0!*Lm?QjHa0fO4ls`KhAxBp>vd~3~AN9lG2bNd~Puc|XtQHVf0 zg)A3_D~dJsfJh7VilV9vi@Bzm8>}vg`&9tY;9a9U;n0&e8jORXz%qox8cUoAsZ&gM zbK02@YDFU|$I?!Oh1o9d1HVOW$YA3|;>CSS?fIv!OuN>o{kPN9A(Vv@ma>&{HXm z6L7wgYmOFRu+L`?A`X$1F$Hx6i71{}OqtrZz~b(ALv0n|IcFoil<3G_>a`xqYHYGd z+MH;2mkz!)ZO=RcWWWI+J?Y;AJYwJ=urck-K5X;!O|>lkJyTtAW>{ZM2t?C|uvQaR zYlvCL(rr7afAq6VMJwn<3NJU605sqtP{-T|d7$v31fVng6Cxq@4Ca%Z&g4?x$Mw{P zHlo4`X77HCafs`Yx0__~EVehlCtf=IZksgs0lDXpp6Y{7g$&^Y7r zO0WI8XyoT!99GwYRw!$+C?dO-*_+>vx%)HBZyci$8ipeU;s|S?mBu)5>I4D^SPjlN zlCHx53#rh_Eb)Ow=K2Ch(HZEliZLPD7_<_yc#5>S_wSR=^aFWk>dQb3Sl}>_obIzh zF9I8YUf;p}ef(KCvgLn^O(GG6hy~}+K?N)0Ozygd;SYZfyKNj>Js0p7Md}z4 zCcFq0Ky17eY11rOi37xy&?+D^BTV0PJ&iy45`lt>_Ls>DFdzbQ{4*@PM=}G-QI73d zVfvOGRHBj6Hj;p7#P*@V+O(MW5rdhP`mF68%jr}zz{f`d><7kxQJc=T=|)4Qx(ZZ? zh@ixR5;Tr*)k?HcC23P^HE1=k=8l{HzWF82`LTgf1S2cay(UVfs50XW$|;=9u)P^v zIydJDF9C~yJ*~&%%RF7Rzyh$CbY|WYIX*2m3w322v;m(9ii}|U3#dh!C=v{m(B4|P z5pQ&G_E8Kx86b?Lv=MCGj(Yri;1W<804EODo5v>8SwH`G`I95~C_Ff&hodJWitWz) zFvk9;ipxJ`@>YPZfHEjk1*3Oe;_8s)*A0Ci?_Wvy|#{&msbmzaHbZ6d`#7ElQ&VJJ5a7SDR6^7V7PtodH zk`%}?TqY&34wFOVAoM8uCI`tK2;iK?X_$++Wo&N!loFL9q zo&v`g!sCq{0XC2<{H;y65FiH~ZdmiRu)b=25XN+;V&?00YC(m%2v$J(Gm6p}FTZmj zIC2Clf)gQ?fcaih+Nf6ApjVMLTZi-cJ+B9x^+P=-Pe|NzIrR)Up1gQ;{8HmQ1aNtK z>H!6nWXVhedLWPRjL5bF@}us-dJV|{con2nQiY;wnMBAKDES=c_> zm&YNXdpvRE)TY4l%E>Vzw0!^>ep+Np6Q9ewNA^p)hz>37n{Q@+%Q4eSh#fc)a@z-j zb(F{{_m#&w4kmjE`<5K-8*c*bkaUTxdt^`F_8%YZ%lqyuSM)^W*(rj{JZot9$$#>IMqK(FE7IKB*71b==nX*b06=EzzH5A>(fTj;fqc(M~f@8n;YcI?YqP)tYmAMZ5M#$PzGggj&rI!Ct!k;a)H6+c=diRT zed?~RnyUKG`v2-4#yO||=i;F`7KVb08}JCodnQq+!X?r`3P=h-sOg8M1D)qexF0A5 z%77r?16)O7fCeOh7%&A)0~$xkhX!~g;i1OH#&B0xS6h93eRD7vtOx`GC8<=ZU^eA; zyIC@soQ=g|Q$s^T1Ajp|c<|s^Gz|k2kkt%F$(aUVK$n#Gl9MM-wzsvlbzq$HJbb2s&{m` zTsl3ME?xR-YisK+BKisScrF>R0GIIn`}hC6c=6&oj^g0=Did-K$pm@bhRbct7tPwA zoE0BXC5b09%#t!cll4r@$W*r)+ionitqSnx+6j7r3aiB^&z#<8W7fkmL2WCS>!n<4 zK&c{WONnRbW4HKhTA;SuF`)$TaTizLvRXV`K zGYdqg;&Hn5?z=30_bzjJy&0t}VQVt!blTLOFB7m=NqaCx4AQ@I>=^6+_+yF>4A6#8 zJ|VZ?Pw8aRsq<7L#Jrn;l~f$rtlQ(E!LPnzKYj59`IjuA(KBbLr>lzzlc3BYu-%rM z|MLKQGq7iZ%jct!AAX>JA38+7g$t>&v5}_w`e@*@&nUQR6^+csMGUEjBlZ9H*;>r7Cbq6#&2 z1`2Hg_MX@SLV8b}VE5qk%EDot_&`k!rKYEeWM9FInwAzyM58ner}(b}2Uz2gBbxKhQcA>r-y!g`)%Fng<$KI;jpgO>DgH; zDyVGnVyb=oahic?-0bQSI|D6x>M2UbVi{Fm){DCfsC`6ar%g-<;#vIXpJ^fNzIx3X zVw~&5Fr%-M!H58Rh#QB~6cw(J;2it9$p-md`&Y4>T&RX?E)?JOk9j zPB-kn=lF5fFC_QKBUH0`H3fn}v(vK#H|4P&Y@0Q8bu=?MNh9aa({(Vjsk@sK%m}-vD;eQGn37QEvuAZ_oy8qpGbOZM5tEiw5h$yYBB;Dy5F@cF#l^sSK2B!cdUJIXr z!++`nGfUwV*S`KbhiO^OU*tGI5D&?Z-@3)FzVnV=53N{174ZBV4liY>xRb@Af3Uoq zLXSR5voM_-M~@0$z?MAo3`hJ>d>^2Oxk56RVXwmJ)xvvM*47eBrDTSusJRs+lgxcY zeF3(|nPtmp=*}Iw0_Oe(PO@U{TA>+cGb|nhgvWO?Mt|SGpAErYLs)DG#Cu(?|K9GD z-x`FfTbjWHLt|XHRzZ^zkop6J$>-mCi#_%A*W4o_Noa;KCL+qh`2e#-eOSn)?rwHn zM0yJrkPm^3cJn4pBJ*R20$l>)9*ko06o@mXUzvFi7fwt@etN8+X_Q80$R)gh80#Lw z>9f0cv)_ICsi0c?rf|DJTJgYuZr`Pd?qCLbdlC!RgyhxZFPZN%z>u`6T_nLJGt66K z62KEZuPDdvf_o!OE^a713yH69YvYrHgX|yh{*kgWUHwa~IcWC$wy}g!W`I#(65C?k z^UqVu`|leea&erX>JJidNE_aKlaKfGu)E)WOCES{F+l*}if4CH7@z^8jL{h82qBl) za_A5jp>@jSUkZ9E3>XKH286TI32p7{T1$rF;xipWPrUHKq7ji=f~o<9X-m$Vk1~|RJ5s5QuB8M<|5lBfQZ;iVGf%Q9u!|@ zkS1dQWk)JPHmFVxXpnqp!v=k^=iYcjU%VGit3qydfD%GWV&&EBAcc%a(H6&;&Dj4} zZr{#lCnx8BG9=>n70*4#kqWb`h~7p^OZCahjNhs`ghe2e;9R%+35*qf@kM%U=S~i_ zx0<)8yMSduFccnCzmDe4l{O!m&zF%74Oeh~yc0UVCBc6D(dLg6Ip4&EFW z>BWe-k01s__>l>20TCr2CW?Ag5@|?V%>pNYh+rQ4#-;-YsJfv+hP%#R%oP8?Eb zZ9aUMi<6|}^t6p?&&zj%*4v^idbsRGy1WUo{F(N479AcY4H;xYI6b7w8#_CxV*Pqy zGL8;7&^K?Pa85sH;s89lPGk#+6+};fDZ(!Z|F8^4T_E1co8h9J3945|5JWD0`f2{y zu3hZP{{6K2<(FyAE3YV#o+HK=)&$hkSkxUaMi9H|rI+-XsJ9qB<{hmF0njP4+IXJRvvus!I?dH31;lj|4 z9XtMn>feBW;@N{-I>8wr0t_BMe*FBYQ>TX8+uPSRH8oX+LLpyCNr}tm3k{X1xkGB8 zrfEDHjcUEUy)mrk-o=X-Z=&fJU>r!~dKb`uD9{g-kBp3P{C_ZF`hO0SC}iP=ZvrNO zeu)U6<(dIWImv(|cp6v)lmkA%U4;J*rzN3rU=+9q^a0U)Fd!|79tKiU&1!%JK%meJ nkVr}C$0P$rB&L8Q*_8hPSWVHDu3#D$00000NkvXXu0mjf&%Q>1 diff --git a/public/img/emoji/disappointed.png b/public/img/emoji/disappointed.png deleted file mode 100644 index 82552008719d2841dbab81f34008db4ef830e6a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4764 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 diff --git a/public/img/emoji/do_not_litter.png b/public/img/emoji/do_not_litter.png deleted file mode 100644 index 38c7ae7af239c5ba902718a37c1d9afeb2c0169c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5277 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 N002ovPDHLkV1i*;GFkut diff --git a/public/img/emoji/dollar.png b/public/img/emoji/dollar.png deleted file mode 100644 index 63de884951966d1e0b09c3ce71542d1d59cf43d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4622 zcmV+p67lVcP)d|TY}-V$>FeBzSfU1h8~^#@8_UPun>rJVMy;rAZ5adN zv6y#Z;_~<_|MU720H#+05T^~@efO<*+;a1QU33^*F}$XSa;1vpdz-S7`;8+<{}!4@cXSHqvOPI?Cn#%1Yiij60Nj~0S1Da zX_~MsW6Lzwv`yF+>CN|Akv5o7m;4XJ0>d;~NB9yWShmT}HjnZ{&u&rtU~DiLBN%HK zGeQ6mp>^krwbr06Q_Y}>x~SJ1SXeAzH0#5;Wj9RA*7Y^P2rNHh!ihVW zna$(1ciw^+K+z1})e_9j2Lu)^JO^sEIv#lNR#m_ikJkgI1 zDEv^UHozdzz5UsC*p>y++wh1w;Clfq!_seK;FD2)?Y*Xv)BM2EG9|5o2t=Vq7`w)h-xxLM;HDuEAygRjPHqAc|6@jNu(!7#zwn z7$24;AXC7hD(u?$^V&j8S*2Y?^=VqiMs@;PdNW$BLn`*tY! zAfU-xo$H#<6N?Ye%`Y+K^6p4Gc>w#a*}0l{n3*r2Iy)vnNX$)2 zr;o1A6naO8u!Deib);ch0uz-o-^rs*AE^sU3HA~aw}`FEfr*J(9653tW8;(R@2017 z=;>*rFLijDBwQ5$p+z5+w;k4xW_!(LW;g!%ca+eHHe&&K5B0#3X!i_bpv8+h-; zBpUSR;^dq}tUaA%Pz&hEcA#3SVQ9Ep8uQ?1?hxhM*lVOxaj^5GpH19<|IL`VFw18a zVVG+=@wJ~!#3=VW- z*Umol_jO{J*9Uj>=p7U@fh+UH;Z+vsXoxkjScE##g-j*|ze&JrO$_lp?dcSfNe8|B zJtrDLhLgl+6lk$XirbdJa@_<{1cGkUw|2CpT~!^^kX@Yt3{E0JYSU~Y8c;kO)EZ?` z{J_BxG`&F1-geu5G@2fc9(|YJHPJ(-b`16?ID(}>2qv|oiaF-w(m3yHG&d<{0e{m& zZ%-QgMy`d+8UO81-HZsq58tU&FnKNzr8B-hGj(VI+LXS+d%*-qhO{!<1PD;6S&R71Kw%C9L*7v9X?PU-W0&% zhM{!1L`tJvm!k|o_pcjvy7q5`Y2|4YP8Sug>lHlsr@Fy$+tqRr>a)*giP;n`<@hS%Rb z(aP&@{`Gg15_jKq6ZK%Xbc9TjSpMWE@8P;(AiPy9SxW+fA~7XXsUc+?|HUcvlfDDl zF41=)zl17%@)*5kn62)yO7=xfiy}zl_gSY6iFh0j{@!omd*6QrV`Edu<;zSfmvPxJ zHe`VLVG6{sL?O#&J4BuPe&=>F!2zK9iobj68NB({N%VBJlbUiy!5)46JskV_8GPl- ze}o$j?P0a3Q_dC4-EH+1Ya1aVBPw^Z3fwy~g3hiq?}viT#9h>Vuhlv` zRs>DnpRZLBr}nsoV?n5!8v$U5Qwqi~UFKpJOWzHM zMI#D4;l%NS|M)T9;LP8C`?dJOV-Mi*ulnU{VJzP zs&SH(JbNaOKsk$65G#fP6$edVexZQDY(iqDy6u~&ELPNi)ap!+d`Y6}5fIz7k>__# zA}$uB2eYDD!}lq`SsXmD8*jXEhV1e*xiB^aKw=}MWb=W6{vMJIm5Hx*#&w+fYEMc{^^0ahrK`TyzqACXX5>Lgr!JeQ}fcMCR zexX>wiId|vJ2ojgih`B_ZD0_ju(aq}gynAM&HODilr(}oEpam zXD8)9^+U196#PbIP{CWGr$v(}#$!ahQVT;K{`(j34na6SG0lL~w@ct$rVE$SYEd~vxqQB&et|U^je1?Q42%HlMj&SJSxpF)hM;FIerj(TWH9ym1+XRM!;RQd1svuJlxOuuWBiGM!7Mle$iAz?c90 zF}(1?5gd8#7@q#lb9mw#UxM^OR5S=cBa}N|Gm5ooAPLaSX*n#W_^KFsKGTsQn~E6D zW)V*~7|YGWr!PHr0y|S3C{!wBV-cw~S9^*;5HcpreKSyOFtAAqh<;Lb2^m0xPf(zR zM!rx}&L`bC(QcJ6jE)TAPrvji#?Mbm8)oO0xESga^+{;~3sF1(%yr9RQD4K;wJ;Se z(0hUJCR`+(gwkoJ<6w7opvB)B*_CA4@kaSBXceiY7*wTbn^pnCu!Wi#nk58fNF-u7 z^7ctQ^$*|0EjM3>um0tqAeXPS8XDGpqMt;Z)GwM9tqkc5BC!aRqfwi&c`KKG>#G2V znj2f{Et-dav|6={_JkAJq2^IytD`QP5YXXdDh9>V(h&RV09eqEv_#0VZ0*Z?o?1{< z1LBC&r_ZS`$Y#4+WhI$Pa?kxeT)cQ0H{E!UrKn3WrPE2RC2Tuf!HEI>`Z5UV1MR~N z4=Q?FN)4GF(F}rtuiBU7ebgn-C%`JloQOIsTVcs}#;`gjY>)yf6Q*)bjmOeb9_Pm| zp|7u(AONGI!&Ld-!hb#c3cmitQ`oHGA_{maw>x z6NAd-ih|_KF@6)mZJh`p+`z2S;WpO(9P_$_&W^N})rDM9@9OAGYsLBgnQ=}^51XFz z=;LHG2|#CO27SGq(y0sQrxXKYLDd&k6ypYqA;1dT;KijSy#00#$B&;TwG(*ck^7O1 zxOnXI53|$j!cUL9g_EZ~5bAytICW|aH{N(HKKHr%xFIs602dg*#Kmd7uUf6G4t9MB zgf9dF6w74+I5vI}d-jg7r|-k`^gK>6U~aKtWMlwsOt%Wp&wOxR8z@%@HkpRK*X-o? z4Ltw+tC*cxM4dpfu_6;QiVfz5A}FeeMokLKz(60%UIWE^8OPpw7Y7bpgJQ9Sd+t8W zt)_c0F)@X&{Kemh>Q8>_&#-IPP;13^`SKN9o|?lDg|J-p;nXOaq0;*x*L z)hI5|Pqx=#x^7YiSwaLrCY^@kSm+t*=DyrG1DeHNuB_sY{bUXpy>Ih6d?I;N+K!izwQw1k^bB_cccK3^+Z-n2;>3=BRGbzKxfZAsBn zf)JPJynFnND7t3o-eRew;4WU6Qdt@r?o%pI(2z zcMtP(6XyxQ!u+y2Po^G{jw{_*?+XC^A;i(ro{J)VrK@Kegc#)7zqpEC(=*coBAIZtph>v4sL3jTg{30Wot9=`qY*%j3=PcX1@vb- zF*`deAal9AnEBe#|C0}Wy?t6V@!HxyiK$_$$Ld_PRg|j5Vp%bXWQG9n*8revO*KrG zA>>lY6v~yVdH~jBQEL5wy0v9G*U{0gzwO5zN5VOE>53fX^Guf#mh7UM5~$q{>%I=E z@he0K1h7Hi3NQhx`?A&o$)u~_syAvpPpY+!Ml%G!!`i_LA|FbXngB_PUlkCAB1#3CxiQjr;urs|@0gb@AXfdQD3FMu zM859XGmLvadml!34iMP1o(Xvu2E6$&AfF*j4V|N#Le1(B2T-DUD*>p{E`9s&|M|y1 zeE#KLmOxW_^wEZ#u2Tc@g_3`0M{s@O`i@>BXevj=1O+c3Ld1NyaU1h<%d;>2>-XNx zWLz^EiK&nHh(mbWw(XCPPt1a`D&{o+OuqQit1kl>rllpZTQe+L{G~+f;&-2W)1}Z@ zp#%mr!w;QnF~|tKsrf>wT&C&*Rk3qxhEL1UCTNpu0jSdEXlH2iw8R$wQ#^+OwVj=) zB>}`}SDR8VbgW3r(<;i>ts7<9LKtgxB>)ZDGObRV(f3<7tT5bSXf zw)V|~U$cYT|7#2%)3FV}HUQfIYy+?jz%~He0Bi&B{{V4}`DI?yKmY&$07*qoM6N<$ Ef>q7k6#xJL diff --git a/public/img/emoji/dolls.png b/public/img/emoji/dolls.png deleted file mode 100644 index 47ce33900ca53b7372c0b6028aed797f8fa8f0b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7138 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 diff --git a/public/img/emoji/donut.png b/public/img/emoji/donut.png deleted file mode 100644 index ccf869129602e60a8b20e5d90d0258b8fda14591..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5209 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 Tl?O(}00000NkvXXu0mjf{PVS3 diff --git a/public/img/emoji/door.png b/public/img/emoji/door.png deleted file mode 100644 index 83c819ae4669c093912601820f7f147bd37fc7e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3310 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 sShxKDISk+*BNl%8<7qzG$EOPTFMMN`K} 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 Tl?O(}00000NkvXXu0mjf{PVS3 diff --git a/public/img/emoji/dragon.png b/public/img/emoji/dragon.png deleted file mode 100644 index 88d4784b8bb9e8e4d2d17dce25cf3ba122209aaf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7749 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�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 diff --git a/public/img/emoji/dress.png b/public/img/emoji/dress.png deleted file mode 100644 index 6434e2e2f3982266931f943f41e2640eb0ca7c91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3631 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 B*c1Q& diff --git a/public/img/emoji/dromedary_camel.png b/public/img/emoji/dromedary_camel.png deleted file mode 100644 index c8c7b9ffa0fa6d78ce7f1e53ff9a6a20cd0bd217..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5139 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 diff --git a/public/img/emoji/dvd.png b/public/img/emoji/dvd.png deleted file mode 100644 index 363c83d01c527179f47c224de01b2d29f750290a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6993 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 diff --git a/public/img/emoji/ear_of_rice.png b/public/img/emoji/ear_of_rice.png deleted file mode 100644 index a9bba5c2c14682fef7ce33e17a968e2dd4a4ea18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4758 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 diff --git a/public/img/emoji/earth_africa.png b/public/img/emoji/earth_africa.png deleted file mode 100644 index 44ce5ecb621c885ae92e8567b1e819b16c4bca1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7164 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
    fiaDgZGT8n_l(Bkl?-; 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 diff --git a/public/img/emoji/earth_asia.png b/public/img/emoji/earth_asia.png deleted file mode 100644 index 95ec357ca87f342ca738361cd71be741cc0e350c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7303 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 Vu>tQ>6(Ils002ovPDHLkV1oPT@fiRB diff --git a/public/img/emoji/eggplant.png b/public/img/emoji/eggplant.png deleted file mode 100644 index 66f25fce447f20aaa4770ecdf722ac416a0c6ca6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4672 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 diff --git a/public/img/emoji/eight_spoked_asterisk.png b/public/img/emoji/eight_spoked_asterisk.png deleted file mode 100644 index 946a20333a2aa283469ed8937f1d2916e4e1a365..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4012 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 diff --git a/public/img/emoji/electric_plug.png b/public/img/emoji/electric_plug.png deleted file mode 100644 index 2837bab4f00dbc48113f294c0d6cc06d0d6c717b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2758 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 Ad;kCd diff --git a/public/img/emoji/envelope.png b/public/img/emoji/envelope.png deleted file mode 100644 index 3631861bbfdcd90101dd9a2b3a2299c63e983af9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1655 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 diff --git a/public/img/emoji/european_post_office.png b/public/img/emoji/european_post_office.png deleted file mode 100644 index 0f65b1453056ac5c346693892dae0766c8617373..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4816 zcmV;>5-;tEP)anmHz%?&O_2jGb70wNtSI{wroq54{T#E244ic2_alzLl!3?P(TP^C*ceRiU13- zAqyBM982OX%VH{|QiS`)m|(yr#>N-6Z0kHm8cB1{f9?PJAO0GZW>gHgU^!k@*WZ74 zzt`V;{rdImeY-+ zBXl^KtaGAe#awaLx8_=gf>vzrJshV#8bf1=hj_oV2B`N``cG+`^`}ME4KGdgS2oZ@ z`$O$=t39qvTGC`c?Ti&zc>FA!xM&{EId>%{Ep2jA-~PUKiN+ES@sbRZ^`$bv{Mv>K z=TDw|U}kyE550CLdWHwFJJu6*&J2qGde(B`BHYJ;e%3ZS8W0!~@J2uoHj z670>DmR+%~2=Ndv$sk!I6UUx#Of$jyvdYH#K;?sVC1neWZB8U*3GLBv%s$cQn18}t zzIl2Bg276-T~63+mQnn@y#wg#?#1@^cVXL`JJi&nfq2ke;b4ZMl2e`p8bdL&bzy?d+W|{aZK};IXxh(J+a~Rk#K1JTkRj+tiLC|@Ga2j53W3Q za?|d{K;_kbhs!#gieukkPrqea1(tnpY4P{ZIu�Oh<{g7{wmXn938C6c?eqGJvLO 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 diff --git a/public/img/emoji/eyeglasses.png b/public/img/emoji/eyeglasses.png deleted file mode 100644 index a3cf75a27a1c67f17e16d98b07a8dc5bfeab89f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4929 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 diff --git a/public/img/emoji/eyes.png b/public/img/emoji/eyes.png deleted file mode 100644 index 1ac24a615b2872cd560e3dc113071b20238a8eee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4367 zcmV+q5%BJbP)NNoZ1PBlyK!5-N0t5&+Ev;qN(%KbAaoW;{(w9Q}75WKs z`vv;mf)pug9dIzg89_01KvbmS&<8=p0UxAl9U>~GqSqT7(BPmL@v0QPalm;{jPvmC z`E59mhR~Cw-UAZFz1Ld5wTF|qxVWz@7K=F}BjasuZti|jQPFd8ak1p*=Rf4+1(x=FgbbIXO9z_4Rcb8X98z(R|SN0dts(23lyM?PnqU zE{a})z92Bc1|zJ#1+e-*@;>Etvb?;^rGlX^ykQA!!KLkdmRSNs`**xsCnhF1Yg{IrGjGFyOSrqcQ)iG1Yj}8A zYHDgkJI?{{0>(0jxoDt;W++);fCVPlVANP0|0*CVD(X9{)%w)c)g>;Mi(8bl#--xD z`aw6(YiVw7PFh=AxeE@$!ot2bf@ch4nZsN(^qm+=78qcG2{ssEg&9A+@!zVet7T+l zg!4jUY&Qc#<6Xe{TU%RGUtCH{OC=^I=4Yb<7{gfRFc%Gj)i*2w7MNgz5muO00Vb2_ z^VHN-S5s4yIGs*8I5?njnp3~O8yyu}Pq(}s85Z}44?*n$&MjY9#>U2^wzgIh5)%F} zDu6MJWzNpd4jM`e0Nw_@wjTM*J}7JN-%FqmEHH7Gzz8eMu>ZrDwZKG`UjI9H9>X}m z4DaDFkKv&MGXnBJ5F7*)EDu3JTpqgex4T)p8W-cP(QLH1u`%qnD^z3b!)2*$!Ng>1 zF|J$7+N7yzcH--F8jWq)F|s=Xb~9kIF?!ZkT)TH{Utm?>pyre&-uy z)22=Nd-v}B_vGYclx-zs-^Q}yVwQ%-t|i%i96S2vQ$+zok07!Pjg5^#8kG;*+S(TB zEuQZd%{Qh^pT__4@lz@_fqq%oqjF#vDz;_(;&O7ID^EWrKWpnRi zzF5rk=iz4#TMRBtegBDRKwZGJnwpvd*UYt3_rEbZ`c+I$PQc^IoHb&P(I%f448GSs z%k>K>Q%^F=$eLrcPY(dTqhe$J*Hl+%HcZBdFNXPi5kIVR!1(s~m@Wv>lw>uybmKT`27F%Bg5s;#?T@20}x!!SlqjJ zPuD2lk$hOvhKGkC>^lTNuL&C(85u=ObCWi=%^LB=Dz;R)udc4bfme6qrJc_skmrex znG>Ddkn6f>KpvnnWJ7iQ_;Cyj44hNsVBuO<*ZK&e78+FGh*MA;O2_#4H)RJuo1NtP zwJT^|vqBqdHATkr^FZ%2y5z%#g+xdtcJ$~`^!N9VEkJ-{FTC(PR8@gVE=R2RBfj{v z?09|n5I(tcXLjzH5C4GYw)May_RZ@5r^T|s;srVBj?BTf{^ZG%>{zd{&z|vm(hzSq z%HmZx>_Tp?7kOSIa(z~$rKp-O+xmL-03dkLs>D+G7p1bY z;&05ac$*j!6blyHwMh)Bit_SuY~Q{eLqkJsZ6PcTx7)3~PfJpem8u{)L4lb@d!BhB z04GkIfb8@b@Qn!P|Ez?{Xwg9mx>v-XVd7>%AZ1u5do zB2__Uut2ve%>jUA`R__`QSh$KEDLc+7$q_99%kC4q$K3zfMST9;Z;2VYQxo6Y!oh7c6`2e6Vb5nrFWq(yliwkbkpf}Ti{9FRTNuPYh*$t>DG-GMN1XsL*j)pp2 z4j>6$zI+)YBO?%|e_s!PaJX_hQS5s%WI;IwWVxQs7n9L|(vS&71txeU5<;12dMQ8> zne1A+$t5vnbd( zuywvFz}g$t;5?sW8lBMtpuVo=48z!)p`tL~f)LX&x=54hAzusz1O1t;UdxMQGx8;k z<@;;OO7x;JO336R67sJk@9L*>eKwR8C7`J;1LZ}r4-BaAdcCmOY`iBJS{hg^7VW;Y zFahhEy;xP9gjBPL5FyC&-p=o9|HI+1JU42Z zVNEy@eO&>ptxt#Bs^E$=QhJ*~Rmx*?ZU)ybWw3ou=Y}SY0R8D!tSon-vd{n$BMoPH za!_C2h=Nd2Bn{-s%Tlnu$%U?tEcl%Y4(%SCH|Ka5!DfhBVtjlYgM));XlPig2S8I( z)7t*NjsNv#7?7DPDOT)4ZG{C+`vVXX(-E$1Kv`KORAY?x%$=-YZLI@68~q4*6?8YO z(v#(L`x5@D#f{yg2$J=30CB&nJg5nZ?sh+#>-?xGvtfC$4M_9ojpkgm1l|n>gC0Eq_)eJlZd-E$Y(@pm^=as8%|}(yB7`gL zNR!1{OiEi_;T)X1)`CL+(K00#b z2pa1a!|USi7U1xKcD%H`0-HB_ur{0^hGNmz>BTEM!`RwWg?N(~_od)ZAK%tRoJUy< zIf^LGFTc>dC(i4(!+h7>-TmJ1u#jcvN_b?E4J$l2xVH`acGqIdMlU*=QcxPOq4RSY z*z;l)c5JIhmH?9_oA(pR?S*=hnVA_%a#kZA&V0nR)2O|pqvJcwi8E&=B$QSo-JxKh zCl{ly_hS4T+cEyN7xBfty%^fJ9$UKIa7$EdsH?zdpZ?=XX93ZJQTE@E5Z^EMEDHc& z;TUO&6U;baacI+BO6odhskbr^^5^^h{|d|mEOL9V{~oDp9I$Fel0Q2c$SUXUT1sf&qywO?(M!SUT?f8HaFVE z{^$Mdu9SwT;HS?(Vnhi2Ln=vYMO+YuO4Nbbwd3*+N-W7C*SBh%S;iBkT$cK&R& zS~q=i85?lQvuxP%v9q&V9Oeu~x_pVW&_o-Jw9*VOfu4xk`eFpBT^AoWK&eX&p9T^f z9;XMd+?4v9=Y@rZr-5-k)^NrK411PM*zys+UY2JS*<5g^ffkx*qmfpc%NsBh>+H&0pW|*+Vf6nqO8@7D##V6k|V3jAtY2lWp)Hvf#11&Vo&(A;Pm)0YPqp|9ZM&ojn zy<5x6%LPNfpSV6c(>^EZ1b}mnh}N|?)9G}IcDwCuA*|T|@DadL@XKCo*z&;_pM1lB z1rs(7xZs2vj<_19<4yxDq3I26G#)h^O`s=%Hk-{>)CPM|A?lu*_3Oge2%i)J{gDASV1z9neDTRQ3|KJBzsTT(8;-d8UkG;^XqlXxyhi%-5` zz=8=I2V8K%4M$vYj!aU}Knp*#_5DL61w;n5TCF)ZH+L`c=67#ER5rKM-gdW-HzKkc ze*-HP7Z<7LD@Zux+;~NGnn6Poc1t;8a#1&`UX<%CpeC5?E71a~)^z`(N zaCSdZ(|#08zoM%ny6f&pD?j2^^*(az-DsU%DTzN*1{`$p!B_GN0~So!WiGhkh%3$| zF7<9HxL-c5aWKFd&laD*3F8BDsr9Nqa)3t#qfD@g{4+mrOqj^zg7av<7m*9>(jYjV z>jG8>mUjAoE*P+2cHx5K7|zwt($xl38&GXPwE@)zR2$H9{RUO9)Qf&{|11Ci002ov JPDHLkV1nVVcrX9} diff --git a/public/img/emoji/facepunch.png b/public/img/emoji/facepunch.png deleted file mode 100644 index 277047b7c460cf2532412c6fbe66e172fb13e13b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4833 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 Hu0mjfWmpsk diff --git a/public/img/emoji/factory.png b/public/img/emoji/factory.png deleted file mode 100644 index 6404634793e288a6c77d19918f71bf3b3b7e3b22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5558 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 Ef>MNVApigX diff --git a/public/img/emoji/fallen_leaf.png b/public/img/emoji/fallen_leaf.png deleted file mode 100644 index d49f9c1757d3ae2325089fc6e60fbcece999d181..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4890 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 M07*qoM6N<$g2;p`&Hw-a diff --git a/public/img/emoji/family.png b/public/img/emoji/family.png deleted file mode 100644 index b4b365f3a5c033af7e6cad6c67b5c5f5135a7340..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7211 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 diff --git a/public/img/emoji/fast_forward.png b/public/img/emoji/fast_forward.png deleted file mode 100644 index 8830e146e598f29e6b05e00cb08301dccd2ed348..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3105 zcmZuzXE+;-7EYQHL?|sjTWzgX)QCNk6cwU2rD~KKH5x+A;M3TnOYBzAnx*7ZyOgGg z8nNp$Vzg+9_*8Lw$8+y}?sI>fbAFxkzVDCoyl*P%IvmO-zy<&Sph$#?&97qrwr+lZMh=h$G|2_C&5jRN^YAn?pZoY+ON@Ddc)1qG*in>%p){V?Y7 zs`57m#ED1u`mYym#1`IvHMZFV3nyft{R(-#D$9-K5@gc{B-ObRvJAv9;r<&5rnzT6LOB-CTwi3)SY#V^)OMfNh(%$)^atz= z%hyez-vkeCg;w*@J`(H=(QA2QbkbfWJvq|WjTCpOS{nQxNFGABuz*TP*Telxr9wLg zy2nOBU%|CCrIMvaEnDSsTs5y9M8Ii+&BzCK$!7+$1p%^S-oz1p<##eBWu zP|8+W>T#J-xq;;MPsTYLo z;(d{;E?8RkL=zUt-%S5&17!?;5d1c=TClB(7N#_zt~%`I^^Nd9>PncN*)YAg=5T2C zn58W_dI=JT6iZz&K!sY_7c!mAgfo9?Zq)@5lkGSokGUScXX5${Oj6od6diua{(o4p z&d3V~lNFp@w-d^I@YlR^+Dfu2czHea!CS+tXborR3k5&cDf;N;XQ71YH; z5Pb3r0-|PEFqR$FQU!8RJfONnMt(Jv8G7nwa@;KopL_DNU=iEi_=!SU@>~tP*Cj|%)puu zm@;O_LCn>ql>jp;rd*y;%z$Ke;F?QaagX&4HsrppD&h!1V=!o9Y>mvO|J)-Q)}si! z82Q>pzNEDJDlyvym9NkHR>!I;`pi4xWr@-%$0vwNp^^~7)7e=jH3RcTbqLs(jsKn= z8@Qg237l_>ng;!}pJ{yaP~>K;#6iHf{b|q|ZwU=c6WfC?)6BP!G`9A6{u3 z|KY-|bw7=KzOlNNR~4FCk;tf(&-AZa@eFk_c7(o;~x`#rd@irS+ro*Z3RRCPg2 zvlq`$G1@{@gJJU|ks$uEFZHz*=an!C#{#im?2(a@WbH=fCJMt)hJ zHJVtMT~B%*WDe?K?M)~pK8Zu zMi73v{8x>DI;CUTstruP#<`_Smjb^QUqCUXcY{NI-dn1InHhV zkBpgUuIagt12MBOzfBH`&l)yTYU8r~)et?v@FEBFAtj1G?-n_Ill6mp{6p)}m85%F z-*!XVxLK?v1q3ZJH{ErMr&~#W>g|VP(A}xRK?iFs{KCw=I-Lz+%~3hB+nh)6S^HpS z%!W`OB~N@Itr}$ZDCc2=^5Q7@MER!9NBGCzG{pCHiiTtr2Xd3FDm;hN&io)}q&K~~ z#k+N~A|H-D4oiX%v)FU;8uQ+~0@`yeE|*u&?z`SAU%N}_3$)wpf;Qm-}KUAS8y zM|)F%uI^r8fn)UTZ|qm561f}FU> zy8elepgUq0UQj=urZFZ6+4E9;37AIpy=y4JhUnx;!%Zt*Oy}znc^Mg}3?uN8OuS#_u=kj=r>-O0||-OiybM-Y4WZ4QO(sXNug*wESKLLwwaCr2r~4 zcB$>nfp2+qoLujO=2WhwZ?A~2-CS7sPpV)1y& zq*v`OR*VIKozKaiyah_gV?|m0|r3oW%W6`0V!VuOqRoa2Q8_EHGAcv;OnR@vL zL6A-e^U&Xx8f_ceiYeLq;9mN0%KjV%9XSH)ZxVgoJR)>^H7>$p+q{71(q_c?9!E;f z=q`CO=5FprzK_ehvI>shO?%qKMV9I3sRhM;&srMNG#XW63ND*RIit=ih1E;@;&Hk( z4i>OgpC^|MX-8%S-gb=~vLwc>g5=&8H6zaYiW#@&g zzD-ZjXj*MnNMU^1I2cMfV@Y97w@X5;fBkNCfQ_1Y368dx6=MI6w!0DAhwDG(dBd8R z?a?JH@GDG|Km}@q&M_+%X)(x`+XI9@v4TL)`_tjKa_2!UH#|0X&c^-Ive8Dx`JfWY zEOj2+@N#u3Q>Sok_P9vTO)utp_QgPtP=QffQXTHQ31cSy66s$~ZydGPu=UH5CCs~R zeSrF&C9eSHn_8I^ShG3pYGiFWUU&L$W&Jecg4lCfr~7)i|pGJ z%KWaWsv7^yUEyRbikBWv*n-7Gj4(3B!mThjHAClSCk#7^%*Q{kmBw&_c}Be0A|B*I zXn_B^08mJlo;|&qoD#!o48y$rk@y1?6cFgI^8<18bmZpdT|H9WQ8fCvZ&DSiTVt6< zLmHt$n*UBXGMn1Q=FzWCHGcDG5;TX~jn&Bbe|hG2y6@B*yKv|@-`yE-xN}m-Nj(va z@XV>-^9Tm;1)tFfwt&$&e-jY*Jn8Iyo=>?Gp=?1NVG$%~4{iT+5EPdcnPCrN@OMk* p<=IIKUQ9$6cQ*_z67K)x#B;Gm*ii2z{EGenr0I2&S|j&_zX5pI=#c;b diff --git a/public/img/emoji/fax.png b/public/img/emoji/fax.png deleted file mode 100644 index 62be2c958f416e04a4533187fc929a123595a10d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4650 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 diff --git a/public/img/emoji/fearful.png b/public/img/emoji/fearful.png deleted file mode 100644 index 513fce47b685b10757d425ec63bfd8b69258ca08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5600 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 Q+yDRo07*qoM6N<$f}f5ViU0rr diff --git a/public/img/emoji/feet.png b/public/img/emoji/feet.png deleted file mode 100644 index 1b0147b1d234c4043f8a07294c64888461324883..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1529 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 diff --git a/public/img/emoji/file_folder.png b/public/img/emoji/file_folder.png deleted file mode 100644 index 4d8bebf8a90354c38612398a95b9c23a6109af5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4013 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 TGWwiZ00000NkvXXu0mjf_F!Zg diff --git a/public/img/emoji/finnadie.png b/public/img/emoji/finnadie.png deleted file mode 100644 index bfc5a0d93de6a433bb15d1b994ade85cefe1ce67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1186 zcmV;T1YP@yP)MbZEODjo&C za6bR7d4~W1v@kGS008D|Yt~j)tz$O-$fw@`0E-Y1`v3sugiinf0ROy_y*N1kq;dF& zh#U|E|Bx_;3k#J10DT4qc?1O7TU&Vm0ODg~5(WeAbae64tXKd502OpnPE!EWzr)A3 z&zrBSyT`NJquamF!?&ld9?YTu00TxzL_t(o!@bs9Pa8)R0N`(ZUBeOxfe<@QpmLiO zHB}y>N>%^=OI4wYs#Qwb+-NXKFt@V4uxoq!K;%Nq#cgrUFq)dy zK`1?yE9#=6H5RaN0t`;&awkCZN}!}Cs2?a{WtiPimeV!&JX4Td3M}-@xe#!m(7XgF z>DRjkR&1DY3!AvFY(pePPS8xxtl=!M5V;bNHZK8+`oqUJ&4b9U8n&cz0*h9R(%|?D)n{;E|s_@X|m|qH4>c8+K(5RVD%1yd^e zYSvB5v`h=c?%CA$l^607y|{DjKv?Z6X{+ifX((9sUW%Ta#9eP?9(XE{7jAd29hh3^ zB2(A3g`!A|RL++Ot>dwE0m5ec+JSui0GV4dZAB+tNm;BYlu8vH31lKIbIOcOmfGfhz$D%Y5z^RX$v+U6CV! z{_uBlIl%I{K-@PLKw-J1W>07pPf_(+JC4tpdp;nHMu6tP*ucpe!jtWoLagvn{jUOq zN;ihUR;uM+0WfpFB*uV|>W>G=%h1Aq0>+EK0ViKiUo*zrGXMYp07*qoM6N<$f_uyf A`v3p{ diff --git a/public/img/emoji/fire.png b/public/img/emoji/fire.png deleted file mode 100644 index f2a3149bbfdaccae39985a6e0f37b1630a49a351..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3886 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 diff --git a/public/img/emoji/fire_engine.png b/public/img/emoji/fire_engine.png deleted file mode 100644 index 9e6c59c99763489eb36b9641f515fbed096244b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4862 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 diff --git a/public/img/emoji/fireworks.png b/public/img/emoji/fireworks.png deleted file mode 100644 index b4eccd5775b319e38e4a9fb94661aa51cffbcb2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6269 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 diff --git a/public/img/emoji/first_quarter_moon.png b/public/img/emoji/first_quarter_moon.png deleted file mode 100644 index f38c236937fa9e9dd0346392a72dd01d937a3cbe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5967 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 diff --git a/public/img/emoji/first_quarter_moon_with_face.png b/public/img/emoji/first_quarter_moon_with_face.png deleted file mode 100644 index 85ae2ce72dc273d392eb8b2270c1c5f81b93e7ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4280 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 diff --git a/public/img/emoji/fish_cake.png b/public/img/emoji/fish_cake.png deleted file mode 100644 index a8f22614d62a0398d77e51ae64f1e8e0031f32b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5818 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 IM6N<$f*rJB=>Px# diff --git a/public/img/emoji/fist.png b/public/img/emoji/fist.png deleted file mode 100644 index ecc8874c2fdb9dac387bd6765ac8081034a75c85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5880 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 P00000NkvXXu0mjf60x{q diff --git a/public/img/emoji/flags.png b/public/img/emoji/flags.png deleted file mode 100644 index 540164e84e438ae269178f83a7d2a0cfb080a5c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6124 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 B?Mnav diff --git a/public/img/emoji/flower_playing_cards.png b/public/img/emoji/flower_playing_cards.png deleted file mode 100644 index cc46a6a1fa2e54b59f48a5896c1c6eec18ceff10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3434 zcmV-w4VChVP) zw2CT0aa%|PsYKKiw`o+UP*PXW1}SQsHndPE2?;gekU*>$8ykDR?#KDqdv|N;-Z`>l zkIiW27>Q*qZ_kXJ`Mi*Xun2^j1Rw=LUNq%d!tRpcL?& zeG?$|(2nD6AuyK&0)7>EX*CGgoTlkz4#>RcmrF-GjP5Lhx4^zQV#Ww@9B%?Ptrh`m z0I7hR1{J^kMnxsyg|lj@h3~Aj?3zq*sC8GX2u1+Ld)`|(`VkBbXWe207v!E+*V7XL zkkujpKXMCrzjO^S9uf~x<*CZxcq|@+5Jy51+!>)XV1?yc{XFWc+y)i32!0IRpFA&H zm1m)_{2;Tuv?k&BRG0ZyhIBf(;gD=FWXPYHkyb*1YX_*77s8EimWaHe$f?tZ64aC;|I3n+wa@NrN46vcmC#0 zY+1j7li9o0ujjJu+u_C=IWj-bKR)sZ_uqFPSH18m*XA+9Sa1SzrqASorc$70qW-Zx z^gP}vd3ndR+;R6^Tzvjk0II5DsZE)Pu%X-K_iw(L>#w_xKfe8T_CNY9ZaE%NWr90H z2I_$LrW8=8KqvQnt5Y#^%WrZ2J@=4_P?qHx^63{zdiTbS?B2bbPw(8x{SSVPPX`k6 z4E*V1vY0a-X+{AG-a_W#846zi#7DV1fKR-qC`*=OMNtsPG577-#mzG_eDmQw{6;Tf zAp`MC641N?#`}Tew&JPFet|FC^H-#x;FoWxa&fD0uZkpk6$O@RQb6zNtH-7fBJo0l{@ zN@gy7KRZ75F_o|P9uZlIlbx=2(+xN9jRzj!g>OI01yxLGHHD|$Y^Xz0oHS1eT$D?c_ogzFs`II z=eRPg{}*c~Ddu~4%n}562#z$QfMIDVx1P)9&6{;+x3b{tf_TB!^YI(jGk0K~4uaz( z*0ch|L%(#y>!(?F?zz}JUvUEJH0aPd=Nyjn6DEl8r&4933IJ>^NCm$N1n8Pk9Fep# z3N*f_B)~gCIcRDhU;t;U;1*d$0;T(8Dm%&4taXd9zI++3ZkWZNs@#^Gc!DL*Prui zvpEHVhts%k=%pz2$;;xIB;tK9zRDN>a3^2*`@bVj63U`LM3w_yQz>e-xbwE#*#6`X zIgf+^z$z#pUbX^6&=D8{7n5-Kn~!tnXFkIp-FvSVuY5Q}MBWtmEX$BI04W^fQH(jD!{T>bOs1l6Z74#KE&t4-r!Ta?q=JzZS?2n^mUhroHptc-7Y^l z^cwfx@j2RG-@^?UUH9~G>gUk(Lsqv2D0qVFSl@mKe29o`dmiVmkL+Ogm%q$>k<(qf zmR7q>6vvBz0sT2#XEOYL-d22d_ip~=*RN;m*T2E_7={QA52yF~?$?KKYk>{WjF-Tz?!zdg?M z_g~^httlx3YC9tZjJ?Uj5U0qw9Egdy8t6U$GOs*;KYPFQ73@3KVm3@;(*(*2jvXgH ze4LF%&JK(g(?TQfmlqU(hPJ{dvVMv=1HcgTUSNCW@dw|)9Xvt_BtVSOKaP|NDC@k$ z18zC5>Ki-^Em?D8AR3KE!3hH*%HR&q{D}ojuZ_V+KnGz0a6kdrGa^CGjsh5gO#uNa z;0SOS*q;eMi#)S9W(5YI`veymocEMfMddtMnt?zhg0Yr%S@EvY@k=@UBEmGXm|hm} zOB{xv!5WZ_Zg?2s`50bIJg*oyW`ucx+*;Bs)3-WCU^o~cKzE{x7(t4XYS4$s=sa&C zd=xQLRlFYjnc!1J!Pe69{zABiF#eXFy!JBhUwwk$Bl&`wj@S*F*DqQn_TY=l;1f~SyW*og_AFADxQA2Q(_ z+ZYP^A8ux6y78ygQ-NrhnQ8ZG6h((x45?aPkdB?u8VqfZb%tl-@bX?xASc3x^c_~_} z;DECjeK-X~6d48NoJX7hXk?8MotLHwfd0NH3w_yPOmJgx-f2DX-Y>d{1P2gAMCY|6 zqLrk0?>JIb{6k{-_lbm094olMmPix(fHA|u zLI6u-B0!X&!EmT+;8C(f3^i~$ffNLc7?LEWouqVvzg`yn^*K?f5i!nH(1-%+n-E74 zNgU%r0f)R-cg||m;y9r`=Ee%JEDPor<~1!w$6q}U#8L2Am7yd8V?aurb6(dj%L+}M zD5jkz5GOpBB;;XD@xB=a=!ict?+}tWAyJv?!=h;*32_o@Z5Ryt4D*~UO=(Z9!5C3s z;IY=~?_3xWQBqoIHX=iaOz* zg;Bw0*{A>(i*pr3JSvc*bjkCah2DZjI?I%Z#d`=^bb$oxEY><|Yd`@aqK*d-P!}Kt z7Jx2(^TQaUd7q{kolXakT0z=1tQNt6bBpUFv4X~!wyxLj_tEw6stlv|H={I*wUgj! zP5~i@6;vE+zG{@Ts11gAyhd}PGcn3(gCN@G1SL9y;$a}0-rT2Y`x1k&(L6~W2wBx#y57z`K;2eex) zjgD7(6tv97L*jAF#-bkInDhwlT-DFlQk%)t0QTWYK<805z4AW+hrUt z=6=7|SCU5W2$d+^7etYgql6&{P?ROkS)CJnRBRnUb1495V1cR5?5K#oDXa2&(^s{Q$PXD&Cg**oj_Yr zr0oeW9zj&XMOC75_6|HcDi{ye=|)E9h5Dg&V}5>NTsOwuMFE<~jEPW>B7+E;V#WZ_ zYzl;;H)?%Wf%N+W1s5c#MJvcz!37Z7>VgAGipp0Dq|^C&5-dmQ(aJI^Yqh|M7}6}I zKhX07?RHy%TkDi)QRJNP^*GKw8xRdp;Z^fWC3VEun#u9BMPxps*_ zqy_+--e18tkOCI)fH>!f^&u3bMk^FGjh0sR;h>HNf{2o(b2aa+B_2Pxu(+)*%A9Ca z`NKItQzXb=K}V4#iX&BtZm~rmcu|yfZQ;x_LEbEDBJ#nIhhHl#~6ciMEpuDuk-M_^B?;+;hx5(Og0R@FD4JiFu z%VTCwA3L6G;`2?>O$~VpCS_x`b*#+m04YT(y%<6nM$8;xUfQ9j&e&1iyvf{B-J$)@ zNPrQcQ7KYN%iYhO<|cq;JE7%S9)w;osrP_KqKh7oa z3LsC@mZv*PmUSVM=hGB3t7%gn(PAg&c%abN9H!81+=>-Ov+(J>H;RWEqA)1HUF&?k z#JTcYRX6P03Nukxx8BDn^^as>k+jCmEQn31cimhGPr4XcDtiwL+1tZ67?qrZa!dDq zL9!==Wh#e%gn``b44!bO8$TS$LF+1rXB6;ZFg4eqhn@+>@>?bgWE@k%M?zX7OiH>5 zIZTODsaF{{3UW|L-*uJ%Nh&@pSB2+{tuS+2E7R*4GYQ<7by*nrpKs{U3*1_M9B846 z9WImbK#DW+o$geqUWEN~+)G*0`*i*s$J%h4hEZ{580Jfn0J0xqi^!k@L@AQj649~& z1Pk#Fe@!vHgu@;V>tZ%JahB|&MGtPF@}y_vHHjYkZoE3oegS%-h-XR^H@!+vF5Ih( zPiGE2=fbFPV?X$|#w}NrACh8wx+@eckGOyey4tyx05$gzHklX)AqR zW#x=Vw3QJ{L?kVKY#u1yMC~?W=N$Kx=TrSGD=-fgsE|sTL*d(PgZKR&{MVc=pHeBm z2Bm!6lMXk|bUI?H7otvH(V(etTP-h}yyT{##}gV z5=t}mo!9L_rW`7F zj$5Ku@E)N4c#>|Z5=&+ir20E_qOGHkZXw*!5RATWP)WR3s_Y;C5_+`!|HycU$9~!7 z=pRHPDGMi7Equn&Hdhfw!8=t)l8Lh2(s?rsTMojTY)R3Xq7@i*^H=D*o~~4qp>7dj z=%6FNWr4vNrTR&vwT1B2%J3;f-g3tB=KvwXNnZRjH(ivLpT0Xo=Zk=f)3*nH8p zp;aK-U17eRA&y_O(65ul$>CWrTc@Fw1)popc_YZ|3=n8X9XKSckutv;!ktDY`YTVG ziVueoVv(u)zGVG$x*;OIht$xE0oR5 zj)f(fNkm5*Tsa~H*25g@4$bleHZCDDjq?PNN7R)t!#-BWaA=*3BzDrVE=Hej^ zVIzpvq7OIpn`Fc2ku#g577pQ{zj;VY*kuQ!q{C@;b}PQGM+-sfyRz@Lv)dKEzTtKb zo-LO}@bl=_++-eV|9kQHlWQw{hsb_hzI0q^Z{R}%7wZ^q)LWGKYh3VNI8y_|Y{Hu5 zv*(IGD+~y}`BATE_{GF9ejqn0gVnh2cYb!~Tj~zEtXNjZ5-bNUrFhL$oSa>I*ctK@ zx6FrxQx^gM@`S%d^iHO#@1N|*A2KB2f+_8uOrx{50htJU!-|jV&uT%RyruQTIY^A3 z?Yh=E5ucv!olm~vuitBvvg+JAFRp@|clcw}dmLh%FLz)h@n0HDU+^CGtc!A7o1hyl zGQVQ{^BQ`W#LenKP zQgW5-{92N!vRz5TMeF(l|6}JRe@K$g8OJ~xgvDYY>BH!#M*Q$gT->45@NhCfjL+rU zdgsppI<-I|MsMV$%HVJ`CZt~tyhbh#71D~`((wTO8+j;Ey60Q-_%-!iyl@k{&--&TXTOz)%K zC*n}i?ntVFy)SVplFrVRVjIpKf!IQ8@tRIUyU9-k3#k!esknkGl%6|IalXxRf2IA< z^i$^s)4wuPT&}-Ce@Cu$w-VZRun3uUobZQDiFsriihZ>})AZH;lQghfvI9{V1+N93 zY!r2WQtcF$#sgtwQ4+;3-=|?ovWYn@82z9A ztQuK@@R;~L-`T91ceKIndWC{w?*WIS)2TLiUl#w|_ zML0U|eE1ijm-ap_rKR}&34qREd@4eM5Ta;UY+@oSHmPY?b6@FxPhzMZ%?+OgBGL9A ztpA5%%_@H=h8OfGm*Kwd8cB?dWt!gZd><7!3GAfr z*c2szbxv;g!g=k@uzI%vL#*_d8R+s1>}k(_UvC)6<4DtAJg>#OWiEmRIYboFt4W^u z<=%Ikm@ap=E+*E{vqiqiMNq0<2Cj0AgsxraUJKK4Ke&2r9qyZ1mX>=P=R3D6)I&EJ zVwO4QVu-&k6eTv4%!_q#ae+km`=iaux3*65l>plsUwaK%v(GhJdEBiJy*#GuIn68pMCS#&^)zwK>fFdd> zMwM+_60At#>FN0%k(*`4Q%EPpu3hpIubYN*CZ zfiJDHc}JtLAMdz2SvZSmgd&_O8r9>FXh1z9qo~XMrbmxnoe*l5>IE??CRovl)oylz z6cwp#Y!^C9tX&rt#Q55I*alMc3Vb%HBAEZJ5%lOJTfl~cv~;|rrXUZ?l6pQjIduzZ zV~i@cNlXJQRxp2Tox}?O{4^u7W^1xhO? z#!A5Qsc7=7AP0-HHv#ylDzM}|*XfOuUTD1JSU&kC?Gj@FccgDp8_nm-%yxLj;)ljY zOh6y`7H*C+bzN<(>FinE;j*IbVa*R!(5TZdO4hf2c$QRfdEDgOxzzZ@(!W|ZTP^|@ zP4pVIF+mx96)8R2pv8dXfYpw)q}0_Ufd&FSzY`|XuUq>vd8siHL&-pGRcnd5`HuP- zG4Bn<)SvU0^ci{xzFLQQ0Es4lN~*rAqEn@Yp<&3B`|fv5+f0}~Tr{va;RNxQMv}G^O74N-vpxFJ$%@6 zlqQ)f*2wpobv4RB)RQn}KMrl~JpjiXCa#RH!b(2as51u)jhe~-tb2P!DcW!*cz#N< zb9k=V_QNsL=P_LC>VahjR50P)4W0sM^eEEp)&}%jK^I>)ivQQk;7UvAxO0LAIMf0V}fi4t12oiaS1<<^q zNMlrCa-DEppr`e^1fc7-WOEhi9p$?;C*pM2+~hR4d|7#wb6Rg@hhK$IunS*nQMxvs z%5Gi^$S=RxQP2Btrkbh>Dt2BO03_*8q3s04Os<+|{VphcN3I}cfsF4@Yu1rNmc5)| z=bkJ_z?u#m^g}%R_hNg?hbIhs6jIfq06GxI_Qg2T*=|CdIy1G#I&{k^f!vaPLY8Ls z*^xaoL$-uk%z>r_mbIR}1A1r#DW0kFbe!bdJ%%*Hv4~N35w-K2htu?-aD3;MeEu!W zzVlwi6=vzC)pmm<5-_gYZ7wPONV4p*>Yz>fcC56Q5V;2^?8Un!`JL3Dv^7ENI^D>} zpf=qaiP~8s;@XCCr&Y#r96O~_koQYViZ@+P&%~C#;zQErR&_0mESD)1htGDAVTR&M zTb7&yy(fMkG6{-;A^qBwydh46-}V~bwla&+Bl=$;`|F}4(GYPSTB`W7n>tsp`2spX8DtA<=y>m6xI4%;4d5nMkwFUFf}^#hQ3 zokl-*@X-xXU@;i)DleCJ+aVS7A$FFxsxPIYw#j`yL$=|xU>+$c}I-Uj^ zL>z z#bXX_zp3{R93MVYEw*ylc5>&zS~qpkkh*q?r)h1G5_p7wzY&M;#GYBoynPGnRBL?* zIquT|AoS`Q+%aTjkXD)uRGsWQJ+ZVBV2u6mD+b$f7536#~kP9WLove$vB_RbDYn@j1 zOuP^K2-n|{bwCm!u&j%zKYJMMXy>-m+?$H+4YU3x&$;j>rOErrz^>YzuJknIh=u_c zk(uw_G~%@8b_yR%-={5rjZ9cf7{aImX6)dkp1wqO@M&8Uq(=~Q;@kRj+xA4OL;|jc zZZAbn(nZse*%ej?1i8e)Kjcma19Q8uh!e?c2z{_qbyyvl2g5U2T@b7JS0q zHDpe3l$xN$Vsy!!+(3+m1CHG*Y4xp{iIq)3nBFj7;Zt#bFC>yXgD&0{D}G~aU;KEl zePq(m2>i_PyOhJ*ssO$1nR&t1);HG@e3Kf*BWdULt*q1LEOEh!lY~ObdBV3jj+g3@;pO;oAWu-;2UZ(R> zc^^(@ukGGEm*eh*FKasmyH-}ORpiB9*pWR>9{!ryYEZflcNjj&dnDXQ%7g9L(w<0I zCN6r?H*%&O{XFTw4}6=!(@LBR69lZ7Y?CEAtNfW_EyRkUNT}ep^3kB|4(#U5+qGdV z)2Fsgn-D|;-JY7@xPXvI96%#bTMqG1jHdwy>^gkVw%j>MqUc4EXqo@!dT}fxI<*?v zraiu4LZpch0Hzt#L=LIAga=y=+P!o91Q(k8f>3Yc*h^vLqwEO&?6@?atXecX)w(h_ zrm?fDI%yeWZOScem->D}>XYAlO}Va}-1qu*ia1O(80leZC&`Kl^pg=`v}7DYI_jx`FVHQBK9IV69S&++~9PH2~QJi z8yST#0&bnJzDw6_d6qzFqHE@@nvWpOe0xNv^Rw@q%4ZK*5tZu*9@6Suh5Wj>DHfTZAa%49p!F6x_PiF^dIj(ry|fbDxSKnMQ%Z*r zfA%>21G}fF8M2+}SK!-`$1sCozlGnp_Aw2m_J+)7h6u*m7tm2d{Z`pmPTkK>12o|} zbxK#sjZxiTqm@_4pNZU2iNA@Gf{Qn#VVA7emSBqGU3{_}fuE+(V*Zp#JO1#`QXdwn zuuk&ngEP;wE|IEZbSf4~JJlF03gWRg;1U|OwBI$`?XP_OZF!TDqxE-LFA56#b~`)= zRthJojX}S;Dbob6b^zUV^IiF31G{45nYS3vf9w?Aiqufut*cRhGAhz#lE(i32YpSK Aa{vGU diff --git a/public/img/emoji/foggy.png b/public/img/emoji/foggy.png deleted file mode 100644 index 3c7b8b04b9575a750a51567b444fcd09354c240c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4623 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 O0000s^4+x?1&^{FP1%wdd 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 BPV4{x diff --git a/public/img/emoji/four.png b/public/img/emoji/four.png deleted file mode 100644 index 14782ba23b94d4f26e7ea5803d0474a184ba651e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3176 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 diff --git a/public/img/emoji/free.png b/public/img/emoji/free.png deleted file mode 100644 index c886cf2494c1367bec7134e9179519a52cc4bb1b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3605 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 b(E|Sqon(p%{Zd)100000NkvXXu0mjfEB>_| diff --git a/public/img/emoji/fried_shrimp.png b/public/img/emoji/fried_shrimp.png deleted file mode 100644 index c8c284bf14af14f06f4dbd45e61e035e3b8db52e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7550 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 U5As%j4*&oF07*qoM6N<$f@$5wZvX%Q diff --git a/public/img/emoji/fries.png b/public/img/emoji/fries.png deleted file mode 100644 index cfef66966a729c48ccf081661403d43d802c6105..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6405 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

    FtwVq|TItBdYp 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 diff --git a/public/img/emoji/hotsprings.png b/public/img/emoji/hotsprings.png deleted file mode 100644 index a0bc9d75f21878b0d9a663dc72b129c345215e55..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3538 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 M07*qoM6N<$f+Kal03X(Ol*Z}EeE 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 l9_zgUy2s-^q2B|E{{cs#6 diff --git a/public/img/emoji/house.png b/public/img/emoji/house.png deleted file mode 100644 index 95b9ee09480cb635876ddec024d6aba6e8d636bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3510 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 diff --git a/public/img/emoji/house_with_garden.png b/public/img/emoji/house_with_garden.png deleted file mode 100644 index 3338fb717be87387a8d423875625a7c40e7e5134..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6089 zcmV;)7dGgLP)+Pq+of09 zxcWLbPT!VVfCVT(0+7yTfz$A_kg=3zc{ye4MP);YuzKaL)G4pTm&}sEyk(NFgs){E z%O7q$2_0H565sAU(|`N@JmQR*Iz{=#JIiYAs*&PB$;9(K-oIO;wKc>rHRiIjxPM&w z{qO8`56E7hAr`wt`{R)Mo8j)Lcce}71JwJ~WUW#$>2+*28y(u)pBdQ>0iTb-&M$mp zm7pBuR-wSdN)bIBXYh5vZhyqZ*$XKkKd}SIVOHbmAkKkHJQ+ff0|X?Gm(QP)yE(&; zpDye57V7yRT2x2&Ni;rnarTdiOh<6+Lvr)sX4(jS0Wy;`z~A=F1W1nSKJUNx`j~rX zXLqr?*j+4uB?yoNKoSJOTck+yupAyDrPv~4Td^rBv>3;V6Gr7ovV6!%oK#s!N-9~( zp^8&dMJ`)OXo(ETP!vyq1c`$niGx^RfxWMp*|~bU`yJWp+TyB6tVCI~OI7jL^=)^( z`FHj9_rCuAZ+db#+&OSb{+}#Nwiq2hgYhG-+OeG|s?&}ucqxY{u&Br|IzGm!={I@( z#A)VE2go?j*s(Gl!;+mh^l`^;ZaXhm^gqGR09<|y^4;zq?)k;8-^ujij2&!ITa4)3 zn8UFi-+bh+xa6XX`2M~ZnVhI&L&41HCJS>FO1(MaCd`brI9qR0?02~IL*1Y>`yW4v zj*R%3cR;4VKY!rMmwfJqn=f%(n`UTRj#vg%W}0*t`j{MTF+ID4G#NII3=l_#>U==6 zVHrQ!SZ1A$^^#Ox;=5^Dvx2FURpw5GxCQ<}uE+VFpXGOdX1l<7*XQ55{ekUUrcW)R zu~e3pXjDR~^9ouH*`h}fwLySzp|f8yw6TMZjsj=K=ZR_pqXe@j+e9@D4ye$Ak#ucv z@iKyX*>dK&`agwy# zH?Q>A{kJYaqpVeJF#_ds^3WnPX99*cXBgO&r8Mkv>wP0^yC%y=@4JF~Zu~h)#Vn1A z;(vbQ2uEM8@cPpg%99c6&(CuG2RE_(s!pQ46zn0DZ`wwT*|92Y{c%R^$b1=mnmwl|` z@&0W-*&Zl#yW~2&q}2&4smw)qDVQA#sm*C7#>z}iEm4^?l-7IfzOkRXZrj7y;xzMP zAwffP`uGxar`z;x^BLZg1_=u%V!SkTU*NHH($Jh%3%f(}-J8<>zF+bD+ir0s{YGPI zF*z(Ff@O*kEySmV%Yg}PPyUUBVBc2%<@0aO?dc!Np{ydE@fd%-#rT^6e$I03Z6jQN z?M_~O^Gy!Dc$TTrHu)aOrX3x0lrq#R0YO=E>S%>rhXiYAR1Dy-Zi~wWyHYI7T3-HE zomAeTW7uJ8Uqq>``E@1ud%|Ul5VV_`Q&^g%6kesx2$Ig6!xWasjp0$FzWR8mKlQ$6 zK(lNQmB(V{PDfOyEXSU&GkG*XhX&P#xCK$$u&HkYH{P<13$7|MI8sckA4L)Atk20q zWl(~fZr{iUZri~2o4W9_F!@T%i+|DLz;_y`rXg$?7LLSh4-B6p#mCZFhEqOMP0f=S z&VKABHk^2t=I8I{aSX?siZ0*du5_9QQrX}5<#g)gRX!KKua7_!nai>AhNby7^-4?> zDRRA%{%tO?vW&k~W&gh8G{P2M9@1`#S|y@ZZ*$L0*Kz5#A)bHkB&~|V%e$1;IVcrV zEh}ngbP|5)l8dzhe^GN!!{d{FifdetlocGUG}&KF)BhiThpYef?~@fC8*aS~uD*Z+ zdtatLRi!uOvC((g;<{Z{I1d>it7o-->8E`JF7Dr!`gZsE{smfSQW=-lQp~1Hvy5EW z!O~*L;pZxNE=Wh9VvFzvB667<3-Jqrt8d##d1;9wk1wKHkm+&h8ul>4vT#%pR212M zNym_f_k)ms*pl4rI1C|JYA9a8P`zS=%m4G2*tqjj+Ea6A9V3N9s;`@c>Kre9@?rR2 zFK`8dzPv}p!ZTL!zqNkyc&I*d9O{290R}G4v_`H-XNE6MGkUm5REO$}=Avr~Y}-|0 z^hlGFhZp(P2d@DyTDNlsx$lw$us%A)cdPL(f zS4~@fSvl;M4mm7mTbct{3ZMS_T=BT&;B{g6E3MkEDErYDwf^2uDnMz&?p*nzYYT{sMq_C&7*4&?W_Vi%7hPN8_<;o~ z^AVr@;$7rYlK=7OUS5BBob9^?=`5x2JkW7OBWN>J8lc&3^XMa^G?yYqcIPn~%*zos z9@X6HIc&l~2Z|$M$eH0zc7Emex#;%WF>{NkFk~$_u7}&-!b-HiF*M|z09UF8=RB-crY zl7yK`%pnx|?yI==%m0eruJweAWvns$I0zx|OC2g~fof|yx_!dBWpP}Q>a<87f_X!# zDA~Nb$W@naz}0E$jTVPbO>pGtDy=hyY#eiU+v85_u-y?jZ8)J6ucrh9|K>q1f9N-G zY7wdxfVI4L2;5W((Vge@?>)k?hrY;plMQwt@p6(eD|pPtJZ0if?+y76KURQzxBqIk z)4eRy4c%KDihU0KBPpzww3-I3VCqOntTpS-mt>1+PQ6^CF>fgirpR>)jD=Q1Gk-dw zHLlrEhhJ5apOY?w7M5CygIH#E4RHCN{sEhJU5#0&V&a&;E`)S(yE>Si8{?(l{JizQ zdx+gg(U*0p0M8lCqgFq4EL3+V0l9_%S8TpA_Yy)N1q|-=!L*t3J@4)5p4b9Jf{2I+vCm$a)2S%*C{l3%ngmk5U}aJCk37)XEW7Owfi zzo08sLM^qhR`b(B2!WH%66RpsT z0u%?ASAW-K_q6Mp`BR!)Ng{lMjs%V?&{C7m2}Whj^7k6^!&AZ6UF24Sq?-50o zNE>2h;9$(nM@ZV+CLz#G%Q0fchC4X#-#)}8cYOq>8ezf^vBr8-Ys*@29KpF@El9^l zbY(bx=mn1a)*sXT$^<)c=*UT?fv1gLruy2`p?+{x02mp%EH~P<*}=q`>XgC6;G`{B zOJUF<+XEZ76uJA>EBK2?_Hz8yI(u$e$L7*7KX~CNJ9n(-g{LM6pKh|f60-}JK?Dx4 z2*?j@=khOohQak0V5)7D()gaByCZ{#Mab2g&_E+l)LIdCH4_j(CganY^KbznR?ksD zwHXt%V?g3}WGSl|Ui!kHQ2*M~^dNA7S!@!#hg{mzirZWO94-dPmY{n>n#NoJ8Ow$X zvUmlTz70P08BJJKG=mnd^eLY*y!J$mgZ4Gzw!zv(&c50tRf57NwlFc5V$=0EW1BT< zb7Oqq-g_D7-b%cfSRUV#=vcA)oHJf5Ay*K?)KWiw;|S`%Cw8;dvXV1tC$bL1(6i-Jg4qCx<;ECr`(~W~QHh?yZyG zc<~ma7}T)j0-$MNz_cYgf+z&X2(q0X8@3eb@6Pb%Y?EULr})OH11v2?cpfY+1eE$y zU^NpbD#$!&;c#T4OwsG*w#@^i{B9PHR!BE3G-9lY0dR#N3|fpX6p*DY2v3qgNK`n+ zTXSs+o@K!rR)FupTs2@}sULTED+o&hD^PPMlFu&jfR@2pux*XoG!zH&bgth(SMLaF z{LSD+I732kNx*&`TWWI(&li;X9m?a1*;8%uMTt={W2ehB%7*GfldeIJO;;3{J=36P zo5%H+UPv=&^VBn^dF!zjN1v>*{lX4ZrGfC<=w^&n3WLUy0E(D)%W}tH&DJRY1_#4cg zX!GcQKZ#e6#5KWLwLJ0XhYSe zYn&r^H^e(?5|V6+m0^Rn=Wsx#;Qn?;w}(U!D~*sKBcE&*PVQ?le=??ba~dlw$M;ql zKYWPFT!5b!TzUHtqi>WsbErn4*Jbn0EW$JNhpD#(Fm~miu?Yc^F>5Sq!dlE~eF9^W zG1h`ftp4^ntNX+O8k1P$-3}1BUiUtY!7mC*eJPgaV#W?MnLO6w?BNzsJLZBby7>8z z4`YQ+0`KZOHgfUxeK=SKhdV&S4IkLR9ar5<&hcnARdPYA4aTxIM8dyO7;VwXL>S;4 z4zP-Kx+##I0wD#3LW;%d0KX{7_6lq)lb^a(7$Y6IOvq$Y#I1;<`)6ra1&z6wryiZ) z`OYb(4>ve({fYyy2x9@W5=Isvnf+L6Y+$jW12|wbI1V<1AdF$PK7rAOC^Fc#z((#5 zX8^Wsi6Vi;IQeUJW<1P z=8Y!DpR3bzzK5HF*Y=MRDNFxIiInH?S~Np-BEXD;vEbw-#u&6*=8Bb90}5gTp6_tp zFw}EXNY@24R=7mHb+-0qsYk2z0HGH2bfoARsNtli5ZKk#<3K=9v4gf&Z-<>Sa+zwG z25nZZeXa}$8tPL^Gtnwfe0+<4fx8b1?#DKsOVMH(GKr_G8 zW)&n$igU=X)QVOu=Y=hI)>7XZ-;!ByH z^!**{J&Nl*f|jDyR5WWanMAyg@Cuy-H`&{7a%3sY?^n&vKW~pmy|Yu#v);*i-N&mu>eM*wZBdpeI3IHI5l<2ml?Z*_lT%t(OHQ-b1%Hd}P<^q^K9W9Tga5I+D zP=>y~9B&<|;AI3(-XMz((gRp+gFn2jg+iggGtcbj-jDq@#S{n$cC{P%& zpZS-cWO8zbL}V=5D2!bZ#2Tcd2&0f#t7U2;t%$Atkpk?E>XyoEOsXyjOOkBf!Sy7~ zW3P@M5?Yb=8%`{e95a#WhFeY&WYeHBAmK?CL zm_;Do;TVx@qd@~J5Vsr2BM^l#)+%D7iDQMaiYSgTCYf;rk|1mo#TqAy zljGQ^A1MGj=Fg_zXzg>;+~=p~9kVWfln9B)X*WeF=bck7UkWm*)QUGOvC@gfm5PW| zGRw(LR+s85EG$y1FEDy$p0;iy)2FDGRbg!bR&heL`90NEumtcfFA`MsjbjJv4Lot$93P9-_e3dha`R7B$iL= z!!RO<+O(sP>B=;AsD@Y4_&JGFchM0zDNA>kC$9aK?yqG_-c?7QF5mC+KEiXQNO>Nc zhx1edk)*LDx$$KGUeRd6Jr91G4?plQzqD%z+A)sn0N_}GvS2J|m8|fHlqQTL+F?kw zQ705_(peDJMJtKS0a*wI#6}>CLTtUM^VjFjgx_*`KOqFEY?{u_EUl=GwRVMIEGwB{ zSla<6A;6)1d(r0K5ylE3B~lrz0M`n%1)De^M(da;iU?IqI}UmF`TZDQ6B!2)f))bD z6NJfoOOV!LV!PmaPET?cvh#^r|*7W z1;}Px>v^t7l$H{0EXig8%xWI2C5QoGEy{rOd|WR@WGom>0s-2rIKW!a$r>MPGrT2n3;H!h531+FrpcTR2R!cp(dDzNGgOY zNMI!r39bYs5Yjp}(pI;{w)g4)@s5{q7LcoAkOT7Hdi>OXedBC%M_19~?BvqW?01fI z3t^X{PzT44&6$p3S{rQ*NGm0FHTDWn7&$GWO4e`#ZyaWi;~|G)8f_&fYR&cHqBl7O5H P00000NkvXXu0mjfGl8vP diff --git a/public/img/emoji/hurtrealbad.png b/public/img/emoji/hurtrealbad.png deleted file mode 100644 index 146ef1a6a87c299c712aaba364f513a1f06203ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1456 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 diff --git a/public/img/emoji/ice_cream.png b/public/img/emoji/ice_cream.png deleted file mode 100644 index 190be01650ed17340c4bfcdcf4ff82b4df5256a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5469 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 TrpmK)00000NkvXXu0mjfGYD7B diff --git a/public/img/emoji/icecream.png b/public/img/emoji/icecream.png deleted file mode 100644 index 871ce097689eb1fc452fcd8b2a0fc00833849ce6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4603 zcmVub%wvacU{i4@27iuuFP=p49-A+Sau|mn83-3L@%puvrxZ{pH-hStupYfmlhdX+Ae)`ty-uvG7s$VJq zAN=44|8sI;?8(D#JXpWKS01)CS<5d!cCpc047 zOpUW=_Z+p@f8linKn$ZXz58p`<_s!sAS)Bdun9upog2!6GsJ;stQIlRti1Ke`>&|5 z1rhKIj@xg){o1d8{TqLJ;J|@B&DIQ2r0{-#(|x?t1psW0vnhV4fSh`0x&CtxrmtxL zVi6M`M!Ooq+-2-_v1{av;weqp2VU3Y!v zhZnu^;AMMu%~CIV-+<4d-2A-v;0(^@c$?r%ib+=Jt-XM5T*A8CXBUniU0Yf>@%cab z^J}ktO;y0He|O|<2M+AJY^LF;(m`mj&QNB)0Kib*S)3W*bO)O(BUQ}Q!S^7iE@Z5| ztS0NSb*k>Kx$VYl-nEjfTz38SpG#j80Ca!pcdKHWz_mf=80YX5880%AH)ZJ;S;w1{ zc6;Hjm*0j_;b05HjF=F&Ax5|a}F4m@}qm>g#k zY}y53sm)$Wb=O-^^&MbROn(WV^|AQ|(sZfCg7JEU#J=M-1K@>YNAEd&Zu1)5*5tZ^ z_Zp1GdxMOdghR9O^daKb8wnb_z~$J%3O?`S@*YkPWzs^}1Vu_!X7|1(=71}%xFVRJ zpWZ2LKebsGYX-=$Ml^FF;}=}X>y5dR4C9eB{W)wmt=Jx#jOay>IW{KiaixH#=shX^b_9qbeeZ5mMs31)YHz z;B1D|DK6{cT#C0A@AA!4L6@gOwn4UW0xieLCx4wYD}A2*>Equ!y70trfAW+6I@ne% zaLdg%-E;8Z8?M^BcNb&LaVpgqDLhsukazIT;!TFPFDl2o3}&5ZoIo0%@O-HevqLH3+2x5EjU-MrhtOgB>-KR8yd&z9xAL++xaG{vzH*_ z8Sn#avIu#K$-7|tRHKlIu?n>)xN_S7$oot4E^A@aDmJKt_jvDyGG*3XdG?#l7BCqm z>lOo05KjmN#+X-lR7-lgC`;1DW8#tq`}{lpXJplY+o+B7n303K%&^k50B z1($EOhb>P7t8qmYnN5g!m!a_j)R_~<|M*o0aMO_^GdKL@RUew4P;Z{uaiCEdZ&9f? zP+s zd0`&+qV(t!p?gt!bSjju@y=~lK{+-%Gr+q9uLrcxJckh#!r3>o*6wn0;S>uC3m^W- zO<(%>mQ}zFANh+tyY}sQ_~5zwXtkQeu|=6SzUMIl3aGde!da`ch45x{T>$ZA1q|iV zvIPnN;Bxd}jo#7=)LR$O-2G;Zvs6M!H55ppKX&Bm-&?%?Q(yi3mH<$J`|Dk;aVDFJ z3IoV`Sm&^XX%7^_dtaI^%!9Z162fScERV^})+miX40OGq}(Ab_#mmr$KKSiq4^ zQwd>mEMk6UjKx#xW5Ct`s3~)KEHY%ifi@oRO=(<|*|*@ureP?|mP0{d8Z6#Ays%JC zg2i#?b1+$PuhWct&>`!0s7>x*d}v-q4Q$qCR8mF}?p{g6afD_aN&49)t($ zH$j<{thdhbW6!ZA0E7_g-M>B--+RwV4xPV;-TUSkn;IvID`#OUOWb*UnR&cJlr2&G ztSoSfH1lJ zOc1&cYv1L};(+C4PZ&tzMvXv9R1g3Go(jeY>`=~Ha26rJ=^SHnaGpH3IP0m@sx-%& zs5r#Pm~PjBYHtEFU98Ko)}gH?>kTl@V!gu2jG!V(7Tt%o3IJdGQUAt0Z&%j@kx-4P zxG-NxI^tSD6iVWHg)j<<8{@?FIimVJQDYBLnyZ2C*ze}kmQ7i}* z!!;m^6j9&^e49W7$aDkrQCvSjw+c-fTec+bwFE2Mow?^gg2z$U*=}i8m<#_|X)J*X0!HK`A^%H6Wz|CGmJn zrfDyCSxNFQ0A@=8l+yPNx|H^;o_mv6R@{hv?&_7(re!HR;Kapqs zH(hXW93g9E35PfzBEtYLGJF)^yhM4iXwo_T#|D1}=vVErxDcWWi~-dPcZ%;_{D$$lOV6(|-;&JD#_ZhHq&i-w zTB}g0RtTerD6SF&3L$cc>L3KXVA*%0e1s6k3Ksxnne9|4;J>B#)n z1HgN4g%AlKL*c)5s3otQpQ%x8KsddR?Bw(KXadowpwo=O^H1V-oJVRC^5q4BnK@(- zlAb8(HGPQFqz;xE=Ei0DVAtz6+J^&=%`}|dZCg{D_ zLWp#^qrW{gIW#gw)o)O(GBn|-@0=y7#)Q=n*|x-uD#}}g+D~QnTo4}9nM7}_Ky!j* zv5uJBiOwO{P5KKRT%;NJHg0MRv$Re((cc8p?eyJX{^JD}l7U$g0)j>Zzw%R}MwPHy zArOX8K|D2wNKT-9hj@A(6@Wq$j?WRs0>AMDm6=_Hag{(?!YCkWj^o##C5U7(X%5SGK`Qx z9qGkTfR{*yk^-e7q^c1piIOn_hxD#^k8r90C1eHNPg!p#_W^D@em!n}w(1{Fx*FT> zBjOnHHi!tM!rKg&wn1p{DZ*%k6i6JN7_wDF6yee}gsKz}a1z^FMuc^AXN{z%SxfYT z1@LVMz&&&{Khf=&GkSF$QJ+Qx3fEmi$OsXQ;geNFbsE`d;kw5`H9%Exodt*j&!Dpz}9`cPggXQe>zdXSLz_tVc*!9)^qgkhqsMHaS8CUq>iGUiL^Or0OyX>U%M*}QeD4&ZJ_#};@8+zow7&zGZ3&<(OS8JxeIQRg z2!VRovimPBLtL(L&Lf+1xb^~epg>qKJ*Z3; z=5e;z0Pzl7f^5uSvmRzJpx@0F@A)wc0NWY>VA>t?NY+arPmn@EPy+{2HUL)`MO8sW zK!A`<@EPDh)$vFm1W`fYvAHJc<_`mQ8v_{40~;Iq0pvKMGKF&#{a+k${WTx}0XTth z8WfQAAgDu7#peTrupm7?PZ4noBkFWJwmAQ{)&B{KVQ_YUef;F$kzYH#$i!5Yu#zDF zHFhqp_dK%oj$#sYtB<0pGpHdXz4jDp?wxq+a3}9aRa;;?#onQPi{#WIN7wU*Ug}T2 z(mf≥O5qMxn}k3B>>YjNZ7a*I%}SrIwRGATS$834IT9@*${=L3$inYhg`>PuI|= zzKzkYm=&zbzzRIzvNI$}vUu0`vkjmE_)-pVLWuGn0RM8q1TWuosgdcRypDhnr~*?z zd#?NR?n5)JMsprjRfKVXk^+1OPf9RxE+PsL-XJG0z-0+SDAcaQU=-GRL@y^@Kf&>1 z{ilIBpbq4vOetH+0RXN{n)`VwCHOgw1ISU9QKf>?bX=-dYUZm?<`15`=fvfq%aOY# zQPh#Op(@h^QHTrzR1hKXc$*>PNqp|mX%9WFvBFn=)V;q1Py-SmEtLa$ z1Oqp!1Z27Tk*^ZO%V+^{R`%scqpX)}wNxF5A3JFlul`c!#t$rH@A$1tR}RhZYeu#4 z7}u!c$La(@00Af!V7**6x4w?G4MXSINT3CYp# z5P*LfEl?7A=}PdW7zsC`j2#IL43-A0eDwb88$&&E{_Muwe+fC{4SU z^;Gy3Y>Hw82nA3Yje)QP5R_7YJS$VKG^9r&1M(4|muP_zK>oK(zXAZScqZT_0I9RG lFU|ts&NBLc3|+50{s*~7;Mf-9E&>1m002ovPDHLkV1gpYo-qIb diff --git a/public/img/emoji/id.png b/public/img/emoji/id.png deleted file mode 100644 index 47437a76d39258a854a52ce98d7b2839b7f4f9a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3905 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 e#AyRg8}L6@D)=#`wkewc0000i>NJy0VO0v@0 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 ZnU3)7ikNF$J^r>qQj$}Zt$b}B{6E(b<17FG diff --git a/public/img/emoji/inbox_tray.png b/public/img/emoji/inbox_tray.png deleted file mode 100644 index e2df0f8970524c92f3ed147c889fe5e66a3acf5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3700 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 diff --git a/public/img/emoji/information_desk_person.png b/public/img/emoji/information_desk_person.png deleted file mode 100644 index 52c0a50a3f61ada64000b53eac14887f228aebc8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6605 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 LNkvXXu0mjfn*6fV diff --git a/public/img/emoji/information_source.png b/public/img/emoji/information_source.png deleted file mode 100644 index 9cb8b09b249492037ebcec0b0c319f728c6641f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3670 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 diff --git a/public/img/emoji/innocent.png b/public/img/emoji/innocent.png deleted file mode 100644 index 503b614f8dcc32bad7a6f17f49d12602792215b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7000 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 Z{|7G0f_59Z%cKAR002ovPDHLkV1i$UTXX;b diff --git a/public/img/emoji/iphone.png b/public/img/emoji/iphone.png deleted file mode 100644 index df007103b0bd410bfd23be425d6654b0aa3eeb16..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3499 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 Z{{RoDXu<&)Kt%um002ovPDHLkV1iqGe_#Lr diff --git a/public/img/emoji/it.png b/public/img/emoji/it.png deleted file mode 100644 index 70bc9f32463c11f26cf129ab031795a271f15b35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3495 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 VC;vgm-WUJ?002ovPDHLkV1k}jVZ8tV diff --git a/public/img/emoji/izakaya_lantern.png b/public/img/emoji/izakaya_lantern.png deleted file mode 100644 index 18730ad559737ba68461687736483c1cb9bedb23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4064 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 diff --git a/public/img/emoji/japan.png b/public/img/emoji/japan.png deleted file mode 100644 index 45932803597c1ce7e8d073cc5fce00aeaecd01db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4085 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 JPDHLkV1nD)Oz;2z diff --git a/public/img/emoji/japanese_goblin.png b/public/img/emoji/japanese_goblin.png deleted file mode 100644 index bd21b187570ae2263db7e1d50cc1aaee27358c4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5159 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 VUn5-48>0XK002ovPDHLkV1j8pspp$6 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 diff --git a/public/img/emoji/joy.png b/public/img/emoji/joy.png deleted file mode 100644 index 47df693d424f94fc2db1a0392148ca8f2cdb4923..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6339 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 diff --git a/public/img/emoji/key.png b/public/img/emoji/key.png deleted file mode 100644 index 34673213f64990f557e373c5736693b94e47dce1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3452 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 eEr-u9qP)>4&Um^?Z<`_+E0K_cb%UduBmW+k43s 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 diff --git a/public/img/emoji/kimono.png b/public/img/emoji/kimono.png deleted file mode 100644 index 34ffe137dcd21b83bdd62ea8e0f1ef247d181a27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4938 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 uRossM8O=%bV`* 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 Q{{R3007*qoM6N<$f;sUOJpcdz diff --git a/public/img/emoji/kissing_cat.png b/public/img/emoji/kissing_cat.png deleted file mode 100644 index adc62fbe3ce8ef1b016dff846de3b0067734e7e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6801 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 FV1mUErFH-S diff --git a/public/img/emoji/kissing_smiling_eyes.png b/public/img/emoji/kissing_smiling_eyes.png deleted file mode 100644 index 57f7b4935607e03c052802a8ac0b7385ca29797f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4999 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 Rqv`+v002ovPDHLkV1lxagvI~> diff --git a/public/img/emoji/koala.png b/public/img/emoji/koala.png deleted file mode 100644 index e17bd3cf531f0a752a4214ef1d272c51184826ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5687 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 diff --git a/public/img/emoji/koko.png b/public/img/emoji/koko.png deleted file mode 100644 index 3bef28c9fdbdb466221b47929c92869add843558..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2854 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 Eg8L>qZU6uP diff --git a/public/img/emoji/kr.png b/public/img/emoji/kr.png deleted file mode 100644 index b4c0c1b673d7c490888041a189d14e833730c7c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5105 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 T(l07y00000NkvXXu0mjfd2e0t diff --git a/public/img/emoji/large_blue_circle.png b/public/img/emoji/large_blue_circle.png deleted file mode 100644 index a5b4ad4aaa2cc405cc6ea52c6b30728feca77af8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4637 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 T#Cf5x00000NkvXXu0mjfW<;ym diff --git a/public/img/emoji/large_blue_diamond.png b/public/img/emoji/large_blue_diamond.png deleted file mode 100644 index f4598ec0f20cadcdda6f1b9edfce8cfe1ece80f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3790 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 diff --git a/public/img/emoji/large_orange_diamond.png b/public/img/emoji/large_orange_diamond.png deleted file mode 100644 index 803725aad713f9c544cbf3868dae56ba3a9fa4c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3849 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 LNkvXXu0mjf=)f=| diff --git a/public/img/emoji/last_quarter_moon.png b/public/img/emoji/last_quarter_moon.png deleted file mode 100644 index 6ae30d6c2c96e0b3f56063cf54f41e22ce9a9499..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6149 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 N002ovPDHLkV1gva9^?Q3 diff --git a/public/img/emoji/leaves.png b/public/img/emoji/leaves.png deleted file mode 100644 index 5229e06bdd097f639b4860f386e138ea072b4ec8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5571 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 RgJ=K%002ovPDHLkV1k`Em>~cF diff --git a/public/img/emoji/ledger.png b/public/img/emoji/ledger.png deleted file mode 100644 index e4f72aceacfc3b715a504edcf14dd1b3e30e6bcd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5921 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 DSf@Vh diff --git a/public/img/emoji/left_luggage.png b/public/img/emoji/left_luggage.png deleted file mode 100644 index 1c08b464db124bbad7c8f8b52f72f51d6c1b3683..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4025 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 diff --git a/public/img/emoji/left_right_arrow.png b/public/img/emoji/left_right_arrow.png deleted file mode 100644 index b9fd11c5158ba6e8d51e22a15ffaef865a6ef642..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3413 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 diff --git a/public/img/emoji/leopard.png b/public/img/emoji/leopard.png deleted file mode 100644 index 3e738d2d3c8cfd1f495e2882eee166f5b64b331e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5348 zcmVKtm92q>+mkuBK?|R2uBykR^j+L_(W_TgKwxq@>gb)2+{- z2CwucU%z+Rk`R)BsA|>7mHnuG`U4t{Ej4^;D~p+Bvh{OHrrcl0epKiG6D;ZUHS7LJl~7o^PKay zUq14}=TAre?)c$BUw7EUMk0qUTIr4W7#`?gV4$01u8d98Iv(AleCJbr=K5DI?0){! zr}jO>Cv0M3LVo=8!97o$*!$Gur}jMi+vmqV_r(hb&p&?l(BQ{?lO*2fsfQ07J-NsK z%=a!9cuH3o3S03w1RM@4*+LQBwBT}p$8KVi90c4pdPAZsT5CO9sWzS+3-6uIwUir% zu6ewQ?(+Lw?RdUjY_!^QnVR(cFE3AT{pQ1VJG=zCLIGiqM-h%$&DK$eSQ$TmtiNYr zBadL196vHZI$dNVTQxn$y0deO*13{yd38CfzVP@`2iBDOR9vK!?XhPtZZJ+QKH8Xl;{3zCpCx!&aez&n~lX zz{_T)LaE*+x6^1WWwjrhu!(4?S2asT6fHPpQxVz?zbRtX8tqQSX6>*F?OwYiM9xig zM~clh<0GBCa&ehhvdou0djw54iEVDv+Z*EQrCaQZhH*Nr+_JZxRZ*sHC?!`M?l8L52T(dzDa!7r)0wcBjF~@gClIXNhL5$+<@lQLom} zObZsH#ag1ok%RrbHx)SGfoAu~Va;d1ROJE!iTlm^V;OJEG`9 zw>X$vtspCIIy<`2Ob4c@u&>`om(RhjfdHBzUwS?DP=!JLvE7v!jZ%B!#j4J&f<`=BWoq=;{q1C^B0WXtXrq ziEZpIJ1(n8s!+k_wPW*o*v^-jon9kkhmnC!tWFnBhn0=Z0(H%#C*&B7MAX0F-Vjw) z4K8f!6xs@=pkVX*$u|_7b`N$}fLyW7LTrai*On1=jTRERMdF?L4BM3kezy&uM

    86Z}aYCjLC&8 zPLGo_4@5aLG03UC9bdb1xN#4b^<;kLv5CH~L?RKdX_5KG#RYDyr0DQEsW#e(h6-8( z(QI>jHH)f?MEgVd{SK_UPQ9Vw@HnWe8a73wGvp?fERxLC814&T7zP$or_|8t4>?gy zfoQZ7pU+JylSXgsu$*c!)bF8?&(V}z^oJEJ+78Q!GJ%kfYu94vLgq`|w3V96G$8K%@`F>E`q!N68nO ztgaV1adIE=RE?#@B(fx-$TF&`f+$jHYMeiJfJ8da>e40$_Vm$gTi7W!z!WLhG(2t> z;h=+fVrTuz?bPe{T!TOV)%=_3V|&kiS~lmxKKo33+xG|m`m?JkfRjfKj7UP`6~%5J zHe?00q@oKlr%&wS=6sxJw~zRC9;ZzLtHIo2ii5j5(OV{U)kL;RXo5)tnYL)*;>`^v zh7^K9CqAo(*xEXUQjy(TNq-i^{@Mj$U2d$kV@lu1uf$wbj1+i1iKbMM7cE{yt1qL-F?!?ttp;IL)?+&8`sX zaMKg*A~4WPup`K8FTKjv4m^BfgpF8&XitQdM2V^@pc@8mi-}=py3y-hIaV)E7oVy!^Btn>T7_XO`-%4NT?=_C{m;!t#~b{96M2bb4{Y;zNd_-X1E9y>SA;R8L`TyC!3 z-XUA4ad2!DNiYbxOg0l)GPx3V0YYvo*XI*lyt;zL<|GvIGqs$$3ayfcB+(d$I zs?8?bI~95(-59!r-Rj`r*f86v5@Da^?x5)%m3pPd>u=8xaQiuO>=+sfR>?v|v$0(k z*(sE9x!ts_K@^vtBR(_=`t>-mzpLaTJ6lu zE%VCT3n&g74HX6=eh%)AP%V|1omnGWtYZ^27N_QT?%)55gZqcT>SQ5S!0B{xVEh0h zL;bvYeT7dydYnpCWn&|Q&1UENa*m$9K6VfHp;#3LcaPKAGr-!dIbthuYRx7RCPBA? zO_8}ivxcD?jr$q^Fm7H-JoWn3h1Uv&JOPgvS#jX;`w4dUBiP&o!(CKb25n@@O^tV_ z;sm<;*tLHby@k%E=$XCq9enI7%V0$xV>&RH?}Y(`R?#bu>{#%0ZEZ9+=Il&^wyn~ zxz6JrhxK2|rRvwt2*cc3+2q9OV|?oA&(W&Y*<4*GTQ1>I1nf2&-Ms^}+XABc5h|G(>c-ho;)bC7Yn@G!2DlG|J1bUSxiL zg{L1m$jhlLEfn_b9w3)UaDJkTsg)eL#aa*dAaEZ%bNu~rAc{pNwz9$CP(KcbjZD76*%M=2osQ9JwLlPXC=#2=+}-Q) zb}U6(Z5fZBoiP1=k0qbYa{l27YNmuI5ahY<{Frp1LeL>muQxe%WEb&VjbuE@!Che_ z(ctx|%=drv#_iwd14!HlFTOGL&(WU1AAjMqXGY`eNw$j(`uh5*R9ckF6&6;Lv{jX4 ze2bvpMXlCAjcrnIsF=D*CR?CTthQ{5R4J6zf>pNWsx38UvBxM4#0PlrQ15m|HSb34YSqv*frZ%(9y;Aky;{S9fY0Znv%8J_kXrr@8|TH3AU>(hN@MTr>?Oa&n<{{#WOtI-`&~S1-gN36_BhF zgFPX-y2JQQDro4E$M#qr&2RX)DBu$*}N$|Sq`{Zz^g zw$deZ(Mrv*bLzy{&=)^_Qgu5nyU0*qCt;6BBOhmUPajQP+<5ECOyceN^dqsQ<=on4 z4tFSw+v~yabFynNjA(UpbZ_rB?|kvz_WZnxceck%(_3SzC|K z{Ot7`F9IwjOD~}}vCGibO^h~JEpnTWXnJ|;|G9iYCMG6G<(t%{4jQ_QB;f@BxO8pl znkmZvKNH`e*3@v=6=bIqU03Pt3G>L&1K&6|F*vonHGk z0Kj&s^~=?b4Aoi_S(XU~JO~ys&qwsaE7yNMJHK?I*UCQz0B9QG zlHF!wpf`fU$BR>Krb%44P9*#_PZbDeR_I29fyw{qgYcf zHmcQ3`e_o=)~Ch-#UNf$@><-?{yzrPgMwZ_R%(UCTCZko1dRo0RZZ{ zmdlrG#hMPjfR~P--_)ATJRifW@61k0vSqF$bLdFkDylhgCd#Z)TA+IoubzwjotmX6bI8NP1;I=%Lz{-B>!Hpk{_jP-Q!Io{{$ z)rGtuNZX3lM!nf0o!-tH_3Fn8@c6@HCqo^+UmKRxz#kl(3b;@;a-md_X)^3lhIt=!8lP}g@yYm|J zYjjaAplf(tZagk$vtn7V@i7c{`TxOCyzJXOOiNc--Aor26U9H|eew(2zx=l!ytwLf zIl8}m;hDk{$A^C~zJHfP6J#V2b_(TkrnWQnKkb@XOcP-gg-7EOmj{d*HA3XUjfh$i zhEf)%TgEV@EfAqC6+xi|3KWsT*anOkg49YuBAZf{HY~Pai5Ni>ilX2HViSoNmk^9- zd^1KR2F-QKgNX)G3OvsDd~VLe+}xah?nRb^C@g^4*GPiB;S#h~xwIIQ;aiZz?YXErK2xR^ zfIdqA8hIF$rgI@v!sxCOKHlN`PNWHN@DP_O%J_o21u81%%1wV z?gDCbCw?{?&p}6x7J5yEGh$vK=B_T--+x;$!*5Rv=WvxFUkV0N24YS?60#h)22YDY zHQjGDg6D568i`LsF(@o>Oq1c%iCk!*&@Q!lj~8?_kK;INg$?K<6W5f8;Zsn3vL zRb4lWp}i_^I{e7)t;k{#aM2KLdQ3H`jJ{lQHoo&&Up3fo6hW?>-Tl8-E(}d5QpMCN zq&%`hcWPqfz6l!jD&VmEcDeHrvI9faC;63WGH#(J8EB-rb;AQgp0AqyZr zGFYU`5I3Axit1a-bKW_uS0O)@urBE}$VYu|#R_rnE!%ylVDp_?gnmRG4L*53Jn%;H zPduh>hXfJ+77mWj{snsfVG{A8ZUjc0FFX5(#wXqRpnJVKI1%X19o{}vwpfFFrCxrc z&T*vefite-?(iLV^)7!Qhhb+i(b=1(4bo0000>$)Q&@mXuhmq&m1ro6cz(e3`r;>=q@^K{fLox~Cpit3-yzvQi2CA;0`xvv zE*_&Xqk%bTRJ@^ic>7n75&2Uz;qM@PBlpWWZ(Z~y%K)b3$tAa|`7EPp&j@TLK{A&I ziLvUQcVZ_;4yvnHD@+jv&$)bw$lo+}?GHG-+>$Ia{f{HvP5n%RU3;(z~^w!K*GzM7Ghw`wd#1?|z_2YPD5ji~-=Ik810dK-JcZ zg(#40CWR9R-Ta`YnM7JPm401V$lgG!?3eDy!od6fo~IKqA&rhE3bZt2q0{g zQCYrsY&-K2US8h{P8D*!z$yTVl!SOE9?<+ZMFz;k$U4E2X)ETSt%4^>rq!5jya}I_eOS}ELK`$} z6H$#eM!n%@NCuU@SPcs4hm{~e@*}EZP10W0DX~5fp2U3HPxGm^Wv| zUQQRz>BDm2)sb7TGoHi83Z8A`8p>}P6*QhPNA&TjT+Z~T0niZx#hn(0zv$xeX3dnCyxqrJa$n4Mgv5MqD1yOoXu14vW#Ti73asE`6`S23N$wIAMxUalj z#Eo~iVB;4ksERMhmk1^WkNtbd8u@m!E+F|%blsh-!n6vjH9%&J8%8McnRWP>Ao4VP ziZl3P#6^C`LH~G@V)X0qX5|D9iPz1qjjZs9R3Uhi{$Twc^ zvyew-UM&^{|x~^R`lmL6g|tvH=dHH{93tGu@X5K{P=uK38WS6 zc5>byFN@lT-WXA38QT{^cX~m42Tzn`(`rz5sVP)``E-lhb4LUwYJ<0p;hgh!tMSI_ z#`0)MiSy^Nv@8k(d&E(pZD*gmmnH3ay<~CT1XEJbsR4jL(b?-z#8P5vG>h62-%XjHJG!ayr7D$$fUCnK%(&ouFmzIV=3uub z<|x%O^=Mjj)XdT)1yrA?ON5^M1B-h?E5?hrFzzJA8(jHU_Gf%g2`tujLb8)~k|8C) zg^l=-#q)Dd&8Hn?7HdzB=OfzY(%OExVmf=AIMTXW{zY~g`F_=MoERVF*DJ@n5(BfG zj>A7~VPCwtf0ZdG4v=o&SJ`~xcA>&Ew!aG^4XWBIJ=z%;lt}K|mdA0epQ{5t+zJ0D zNx%$ye;qx)%3LGB<%d*$9PJG1=cuR-cc|2#qvMxZM3HjWo=zbZ!x|s?EHGU;{X7Ao*?(6JIqD_ydVe zqQ-u?VO&%qS?!7niPF1%w1<~S$SO2(hc z-N2>E`hf7FIdBL3sx|9HEyvB3`B#z9xuF(!NRSFHt{k2}{67Fe7m#NwN<+X^VfPH= zHtY(l;=Wn*^RV|fQT#+RD|UyeXtIXT^Alu9ZqwBNl8tGR4vh#2Y)3|zV|?&ad{q)_ z?_jBKx77B;<08WSIdy8Jt|o1L#Ea-k3vaL7)}9w@V{=#s9RlyJc70 z>{(TDh_ygVY@_rLN}0FU$jl<{kuxch5!atQEP06L!G$`_0C}l|jgQXIdX8KSF5I#H zDGw**C);luQdOHCDmw)+M~7UzB;I!2f#)4#hu1JXqKh69k(~q!vtbSDufdV|ga+y;nSH1qdYF&x1`vU0TpHmVQ+m-eSYHT9@r3M@bHHB(Brg#|XN)r*rDIdgV9i(W0- zhxa#%Nkn*WD$X|x+3)ROmHYk6e6mI6xMlt?G$nV`9%0%@+;WpTsm{z#qFS|2&*w1x zFdubc*zCt_aNG+6PqQ9_!o;$#ZuaAxMulqW#^PXweyxX5fA|fTX!G!laAiV2#2M0^ zP2MQ$lBX72LAJYX%2nEzm{T{mbSM+fA~H~A8c4xpQ`(s^d=-`dy2FR#vp^KPA_ol% zS>b8 z@MPe;I)?!=N^A=n^PQ(Nn`~u*kHT`YfCfPy+t@om*LS~{SCw5}1o%nHw#!`De<5lk zj^bv(a`-Q6DRa*c3}-@(3#_tfs2VY|tS*bHSlT3UNgpvM?lO&KvGSnj)Zn;lO8@~k zh1Gpr^x0vhlb^k5la6$pjbj(1flB3Rcjx9eG!K44r_@22s9q>N;9LY z!X2W#r#3U=bvleL^vhAxfe&9+yv0fLAJnVJ>8BB@vUiFTJ}$P3Xj*qP#Zb@_PdEG) zY^o%>eE7{k?r~l{q5@M;!WOgv%0Z>n2n*w!^R-xF!K4Dw{}lMZQ!z}1OxZ;C_jmR= z5o+-^c(Tkno`3w8Bo;1Rm|PEqC&e;fBb(wh`lK46xd}>_N)FChwOE?i>5+uy;#_CY zzh>c{h+WQ;+h%gyT;>_VnQ26$z?<_M4)l=It$`P?lAr0y5@$-Kg&i!8UVa26aP4=5_xWr@39A}P{&=Z# zivlesoQ)$hoS|qAQ#$ZU%mC)j^EtFh7=sZ#4`cj4agJ`VgPTn1WxR_Hbszrkc%>r1 z%1mIKM?LdFgMKH(Im&8OE#e(s!9P0_))T~l)E{x}qJFp)BU+IBloD&gaC97m&oSDx z@0t7J=kr;1h38yg9yNR8uW%NL)Qn-l(}u($Iw3o|EmX6G8OMIja;%~=H`Qh$s#F1$zCS{0>p5#qbmVA+uA6uskYxb#!)I$aSQvoeZ5y9rKu**|TJ%-%IuSn4Jw zFE2O?;Jdo}I^luy;2%ZxldQu7#qJPi_p|)krp5DI7&#s0AjO}Iu`QgT{~vlEB9aB)ZcX(yMapsCpUj&@`U{k)1T_@ez@ zFN)P3wr&Cc?wY^W7oeZels>MvT)~eEtBO?Mp}r>X+Im0y6T6UdhP*ncO-H_k_Zm42 lDT!*jp|F`L#74lnVEP)xN)pE*wbT}bAbF@rB2YrAv_+{@AtVGZNC?3L z4=4hvB3^i+NIY4I&(ZH zwj(S4rKPp^+IyY7zVHA4?_c}O8D@;Z``I|&$99i^dj#Ag;2r@I;~SoT{`sE~LOdRZ z;Rig=Yf33Y#uzxiGrZPnF3x@9GXC@5zYie=4r+{{GZq0)J@wSe)YQ};EH5uVIWsfU ztk>)4696FuwVZ_8X~qCSAh3RM2jBVDI$U`OLhx}uM<1Agr=NcM=a!b1zI@`uiN%G5 z1=MOa1VI2Pr3HW63Gh6L?He)v@b~^1H`ZOa%@BaWfsL6P2O{8^XP)`!(W6KI@zkkP zlZOr+Lc84_2L86Cf$MT;1N`o9eFZ;w{RV<& zxSZjJ;JC511ui9y965s7+1U{!j7LfkIEdp6pa0Ci;N`#hU-%6V47hUyT-ex&E~l6A z+S@VewGdMi4XiHp0Z+Ct-)`c>$`M?-a)p3QPEO_|P_w|sB!t8*3|*W*zu6D_SMar$ zzXz}BfH4DeCkeP3@lVLW1K$RmgrQ{wE~#C3>k%X_+si9{E=qN zO%lLd_p{Ouxo|v8w3?XgHwA`nlpr!Gq!ifcCOCh21NSXVBZ?vdHm>KZBs}=DGkEmz z1&DWBS{VbYg1=b;8Vko}WPARXxZ|VVsH4?vKr3wCXpFPNxgsk&wcH<2Y0r zZ-u3)>9-WaZG53MX0!%?dHyd8FP!#kb+jj11T0Au(oDfxFG>(fLn*+7%)L*G9wCB6 zQoUZM{+5(VGg27GAVB)R;)XQ>@B0BVZICDp`y_1)Zfx)1V<+b^HBm<|Nx?WD5G4cZ@%{0;KB`t=W=DkMS;yg=X6HL+>V16_YO49XzsoQgojTpg_F}~nyof% zc{Lc4Oj{_#!EP@CvJ{W69fwi`gEmO}L66i07(}92u>Z@y_!7>2`wbla_@^PmCXCjj#T|@1YIFwZ6wr44qw5l!$N;KBQkzw z-5!)u^uQ_K!HLB=L`h1KQVIKN6`=b8*kc-ZI9;=041mA@wCG9>6TpH1A;7c(SWbWg z4kEW`_P$EU3rn1+qzN^c{X{URhrb}b5K7bPAcY|J^x_xaL9d0waYezRIG-7GN#VGL)(3 z!g`trfC4<50)pn1b1i9A&@`7YQ$$B`f?h8k5&^CG4>QMI)huU`9t>rGPKWZI9<dOjf|#uon*bsOMEr zGa^1y8r>*G9H&ULjLwH{g_(5EFzM${q?`jdy1kgTypAK0q#2T^hX>YH5rzTcOdsGo z0Gk4WG{bRSAk%{)X35x_0)hyDfq~~pFsmUXY?izNbf(bhS>yW^Ip+re143NI(#JYtr-Qxs=dg=tK#a5EQb#C?=M5mf@#X7f}m* zL@9mPfeDa8<^)h4L+Ns>%7%zok>_B@NhdG&(p|)9VnJ7g*4T6C3SdhHjZqsU09=T( z!t=@dQJg}9!xO@?OT_vP!$*%TB2E<;;|B_VTLmZr@)U3+zzPkhzPxZgAY#2VMjR)I zdJ&Si2k8@_YUw551{Sm>pwj3%hHC(G{L|dYh0P!_8eZT-8AI;@T*!WJun=mj9Ga&5 zcU&=61PCEW06i&TpsV|NFfam1n6k=E zK%+P%Pp6qC&{o7OK&3P_^qbMD;$>8U0z^Pb2rL1x1nen;rgQm&yBD{n)AQd3lP;v| zA&O#{oN1LJ>+OKW5zhSfXOX1kq7Q0R1`7fh1EM6OT#n-mSvE|$OYdnSKmjTvg0RQ4 z<-G$bQlvl`9db{7IuXU!S*P12g>BVb_(tK{b_{DPtM}tWCqINZj%o8VW&}_POEZIa zHnxz)5ePE~gcYwUu&R&|0a<=d;-`TjfKBn4Ru|~3i~w@1+#^n_#rJQtTbgaxG1+kO z>UZ8j1~NSK$iwh`54~Q`ir?5N0LIAsgnm!%TEG=GFA2z_q~DBC1Y$tkke{OfT@nLS zdjNY=pb!2?zrk9=2c~Ko%mI)Bp6}zaGmjxjlCi_zE+UE|^txRH2INWdxCLE?Y6X}* zwkc4FfC12`MnIVw7_b2Xrcg0v5|}K5ow>NQjAQp71?}X77&iilyq(<+uK(l$+@l@9 z39OozUgiZbUYx@K_Lv*G4o(%sdJ{%eyv?dOiXNzp4@3Z24Hf&rr7kW=AkA{`2YBIy z&mizU>~=Z?Vq7Dzj3eE?hU?$_H^}MbLcDAw0J?~Vvb0rlS}77`E?lb>b^}zc78WC2 zx1BY6udH~*X|-C-ybNirNsTvSpzSsB=wm1G+_TT((bErOcXt=8*w2q?G*{&y3=nOs z1Mgfcy^oRr80;A{m2kHJE7xGC2hFu)rzP+Vp!A|c8y&{jA3prf;?mL|-M6ypc%E1M z@S%p4`Q&N!@&Eo0`s|lpdI_(-`YOE{Ha5u9{d4%fe>;BoM4PA=Uwjd-yz&aA zmIYiTfH9!kNf1Q}LI8y(S{(qHC8eBPirmO@TxtN>0}nj#=lx%Kd|_^G4t+t)BY+5y zQd$CTDG^diOYo3XVc6K{;qU(T|M2$ZZMcpY0%g248JI1JibYZM$9?aAN=kW1YfWMo z1OW+^5aPCwU_CxOQUuPNoy1rE{wKI{;Ra+NZsn701eA8{*s)Lc1?r!srlx{Mqk%9C zDO{zLw~2(&Vd^*>QIz37zWOHCFK!j+yWLX0fV-(vhsKz{9jE>OdPdQ;7AEB1XYIj!tA%i-+kjM ze*ES&C}l_|#x@%P!)$eRbxun0`^{$KSHm!9xzZ(15CIJDg^|;RBXIRf2j}11M7Ns) z#*7sW%n~rlrsq%nsdO8^Dg6MPzQo{wVnE6OTaB0j%)lFny;z**jTH+XOm-TC0UZ^` zWVQ!`y^9M5m1*=k35n>?{RuM|Gy_dzW}Jz+m0x=#oH>qQW)`9rf@>dUN5XWf zn6zE8?dgmai-ytUrQ!q?tIir6A#i1RuK=a-Ne*CeQbCrs169(YwL+Grh`K$DBw%Lw ziI2GT`Jb-OE+d$qgd;&+gGeg=&-d63~Hs2L@_wu z#Z5$j`-B%vNGJ3meGh_rfO4UY00iC}V;V4=`f-eL4WT$VSCFH^f8pq}Psmyg!gs*A zfJrzI1IX~+nc-zWj#<57Y<~i#5B>Zab82hc^8n7EGX>LAK(4$h1sLv1)ATKO0;A*o z3E)yZ5qQ3kSq!ti4c#%|X%C16?rPHp92s0U8cqOX$Gqu7$DdT3Ba;fkNnun17BiTb z<1RL;SXq)F>U4(_P^-1und%*jx?9j&3{htnJPlxa5-{v8C%`~u8L}h}hi-&e-zMfC z{&mLu7nomnIRZdQKyiR^+|^e6QN?JzbMK$0@&2}Z1pGf^KH(%{86y<{0000DP*AgQ3HW}4T$l;$PP#mp3Sya5B^AorPp8D^N_J_9)1FCLVe7ZyRh1mayW z7R+-p(M@Vk+wN*w?WR_H_Ux(5(;nT_(zXpl`0gLE1`5U)`Ny99J^##^_xC)XXWsXD z-{13&$p2bIxfuIrk1Y1eQpQeC8x=KNB*^KZ;dxVP%HBNv{;e}#zW?v@oVtAGi(|jv zpIf>z#q}ZJo0p#c>_h&@AvRM;9(fe8jYGUaZ>SP((bD#9|?t z6cULcmL!U(cIsVf+)?mg&E|t8(>zv{gjT~V+Im8o3A=OQXKG^;IFTx+7 ziUf4zu$SYUY1%K z_ESa-(d4k|s9|)E@&-(7W;Z41U-cWVqy3L1vYI$_#1j^M|Lh*;MMV7E0{(38$GvXoNF*HpR+a97__dU@@zoTu?Ct5UZq9a0V1UnUH5Lr`;k*0+ zcymJu28?WC2ZbzS#o5HOYf36YD#lfIYZ^X-0&lCaV#EiZrFQdve(Q-MjCE{fEpwTH z7iNm7y>;vl$IG`3s&x6O5&WMIM@Ma3qQ7t&n1KaVo{SpIw8D>jzab~HS!K`(?Atjm`J1I`tH}tCUrGR^x<@Z zNhTc)OO1B$>xjaQ2sD^TClWW@k9Zdc$3zBMOV|8nO9@fLk$csa7S#9dQSub! z*ie&A5pj4HcAMWu0V)=;7&RJ_G2w;co|+%#74w(1-)$kE2rOh@h#1@Pc)p^NT-2nn znKk%b>Na1=Ml|@LW*LF#NF)r8o1H!7)l+qErL}G#jWCj0llCclx94}T1}({Kqa5=s z<*05y^GneaPAYob@xy=>HC|0qAL%SxGduX&DpnJNp7>8gXLaPmNT!nQBscrawX5Vr zQbZ2^%sHiMF<~K;6*v8#?7T;)G5Fh5k_jiKH9Y=@?{XBCclat&n*-`@42K4qo1>rWCS>AexLTv7HuE?Gzt0SkdFhFvhTmOg53)ecpPe z6az-esHX7l&6a~|UwmsJNf^m&EKl5(v0*^LFrLS=*|Yn+ zMwf|(SPIBQ^?^8cmZN+;aA(HV-BgoC95!BRd5wk(jbH3MvElW&zs|a8LxY(#^h{wC zGj7lBJ}(k}Gp4QH2jf1dt1Q2Pnu@$jFLQ{EtRjjeawsGnHM3BWN-#Fk2xTZEznQ$i z4t_;{18U5q6N%#J{W6sUv>AEtyv%DHp`09|2xc)eaAN}zM6ebc-VFX^#7wa#G>ak# zCJ_t%%pH3F+@OA;ii|xK-!!zmO(T_L5XdsNU_(s~#l$k<_=q85Uj+R6hk750M^oq5 zzrz%qL?Vs0($dS@u9T8M2s_9{O)BN&;q!^uAAb7-(36OkWuJAokD{0F)Rl{U3xgV~ z+tvHXCbuE>`wpsuD=}gr1n+b9b+s+{FJH-atSw7klm`jlT`J622tjp0(XadcQWRC~ z>iwz~FNHi zFF!xRU01%F&{}|nNOG+O#G)sOtsLecS>LLAo)-}@jyJtm)Kt$=>L?+Lc%m^8 ziJ3T7Q^^rdP)qv7AK(6demJx>M{yKKaq^p>Da-zIC5@csG{-nh4Ykzs24^_UakgSU z={{au#8q7GYJH`z^pQT&M|w+dc|@GWS$at?acUd;zmjxZ-o3z{>hBwGf6PTL@((WZAtx#Q+VtLYiLy`>ciKW(C<|nP%$NBxPv*)TnJu$q zraUWCWTH%vu`)`YkRdWi28gTlmEPjqHl;h0=q>$Zund=RGFhIJIkHeZ#8(0yw@fct zQXhB0ayI|chO6=CRKIhpd$d@xC0lYjv~0DB%(!e&Q`lWS-2D zY4Wr@DZ^!m3=~)CE046FgtNHFqcT)R%LJJsGvx(YAWOwtR1)N*b&lv`7Sn)aXN$y1 zf>^{VR!MBvtYQ_bSR_H>Bu1hnQX(WwLM1?a#Zwl^JeeiaWs;1Okup>UNq=!^I}46& zmqQ%HNt~s(xJW-4AcN#F87fc62pKI;$~c)IPs>D^B+tlXnJiOeYFnEo)9!qpDpO^$ zOqOS4l1!ARWW0=(F)~U<$S@fqgJq!fzw7kh!8==w?U$sZIEqud)~n0bKFjgWqI2vp d=KrJ9_zyU@qPey@c3c1e002ovPDHLkV1gyd3akJC diff --git a/public/img/emoji/lips.png b/public/img/emoji/lips.png deleted file mode 100644 index 826ed1102dc6f3f74c008b3ce7bd03a4f0a44fa7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3738 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 Ef+L&!`2YX_ diff --git a/public/img/emoji/lipstick.png b/public/img/emoji/lipstick.png deleted file mode 100644 index 82f990c5679533d838d93215512229cb13f8043f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3384 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 JPDHLkV1gf@{!jn_ diff --git a/public/img/emoji/loop.png b/public/img/emoji/loop.png deleted file mode 100644 index ef34df3a404ab5ce6597c202d695665ea7c2870d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3417 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 diff --git a/public/img/emoji/loudspeaker.png b/public/img/emoji/loudspeaker.png deleted file mode 100644 index 752385e523d44d308bbb86aaf2484c09cd6797ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6001 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 diff --git a/public/img/emoji/love_hotel.png b/public/img/emoji/love_hotel.png deleted file mode 100644 index 44d7db828ad1c6ffa0a782a83c506d99ea91c33f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5941 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 diff --git a/public/img/emoji/m.png b/public/img/emoji/m.png deleted file mode 100644 index 7e3a3bffb65526cb8ef388aa71b37a38d029ad33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4734 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 Nqp7D+cFXd`zW|z6GdBPL diff --git a/public/img/emoji/mag.png b/public/img/emoji/mag.png deleted file mode 100644 index aa5b1d7c46fbfb27876d4e5facd5d0dfa5436d44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3040 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 diff --git a/public/img/emoji/mahjong.png b/public/img/emoji/mahjong.png deleted file mode 100644 index f51ce65fdde8e3c2c0f69fbc1beb78ad7f83fa10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3309 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 diff --git a/public/img/emoji/mailbox.png b/public/img/emoji/mailbox.png deleted file mode 100644 index 8351e70760cc342e4ece73aac4eafa921e3f90f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4196 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 P00000NkvXXu0mjfzKw6u diff --git a/public/img/emoji/mailbox_with_no_mail.png b/public/img/emoji/mailbox_with_no_mail.png deleted file mode 100644 index 59f15c5d7da88d816a9ed2f5a33cc23faa8633a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3101 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 diff --git a/public/img/emoji/man.png b/public/img/emoji/man.png deleted file mode 100644 index d9bfa26a67451b5c24e2b5f4c8e1fd2653e7404a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6023 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 Bi$bp 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 b=eYeB!{1W8c$9R&00000NkvXXu0mjfN(}M3 diff --git a/public/img/emoji/maple_leaf.png b/public/img/emoji/maple_leaf.png deleted file mode 100644 index 4e9b47207de601d11c1a76fdbcdfe63f978bb432..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4450 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 diff --git a/public/img/emoji/mask.png b/public/img/emoji/mask.png deleted file mode 100644 index 05887e99c6bb601fc395d9180efc7db2e684d86e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5235 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

    5}YwdD|A^-)J@*M=(|Je3Yy z^7!cJCb`##Pgy=JkXc6euz&3S@Bx(X)9caLCF9bgw5m<#`#JI40kP6Ou|MlG*rF7c zs_V)%S1YS&X1iD8FkyW{zkIJ>@ZVE%?qiKOrQNJ*X6MV4Q5dc{8CN4pVAEL&%ZfSM znT-`}?AdD_xX%~rMN6qeMg>4;w)~eCA!qK}*(0uo?Cu)SxPMGIx2>Z3Q%zvbJY}Ui pFh051<*%*GH)COa1?6V|jpo{ds!y}^zsy9yZFN1hauvJK{{i9-88H9= diff --git a/public/img/emoji/massage.png b/public/img/emoji/massage.png deleted file mode 100644 index dd30d15975564504dd4fae61923675bfbeaa679b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6036 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 O0000(J5zi#Br1n<`4KUswSmF zxs)5jpjd1wBPfm|;0g#*S}Fp9fIvb*2!s$qmQHtidE34BTh2VseLZ${JDH)X6UFjW z{qo)S-Fx55?|kR{&Ue1XAMKBL>G<-eFFNU#FJAVE`|h~@M~~ls+k+3@bMsGbzxm%j zb>r3lyc&PVws!4W^_43wzUr}izixJJ{weL<_DdSy@fhvfxt_*fe4I8sczgXzSN#8r z@G>%imtfa_=EBdPa@wme7#=wkLWhtlf>Hq>1b>kZLhO9uIo$dETi!hU;gID=W93n=_~>QluPy&UIN-XE zU2w!VultuFm<7!lmIzG90t%@9s06! zz(s3MDJ?ts#IK(8%9GBm^esYC?nAkE5rm95&mjS4a)3Mtw)46NK#(d1goLv>jLTrH zjb3&s&^I#j&SQ=~^4y+kKcXn%95*(FF?HCy4k;v}q#L@_4Iu*nhRH)Hh#&-!hqn#v z*|igmdVM?o2YcTLl7CoLKIZ&Yy~m$_Z2!^kIclKtdl3QUuIQ{J3E`|mC=`Sc5X6hm zL`_yhfPN^g;345W@w`wD3KC>9G;5Q1YUAeZ>D1JZFw1^TvZq_TQ5b)Y0$!yB9j25B zAjuHK3zxpC|5uq6cV)Ty@ipuBZ2g@$APV&%!sW201@gWCd4LoXC1(IK@D^~k1tP)o zAOZ4@b@0WVFJSlXJy&1;)gLy{u?tSdu{#X7ccYDm#xd8vpTYL3Np}uRFIl5V_7~8vId^~Oa%a01sfVj zGT6Oy2c*=u%_4t!x4D80@CqKAm zAo;@MV;?!F4ye~^Q(3D8EkoqN1f&4SImoaC2?a=k%UeYS5CXmpAtZz}AQPdLHc;)Z zpu4Z{NC3}VxTgC4Y9KEeh&B3>0Od-6q%TCJFG5fb`TK3|VCn{0%^=n};#5Hk2|1a6 z`2ELKH($Gc;$|E`QU;V_!ZRb_GN_{;NAZuasCUhg@`Y$C5Bdb1i0NI9$ z5=2oM5I~|e`bLgJ>$~4MA= zJa57KoYfvCL!;4x@dBkd#-4hLdv5*`p1A%>EG=t{40K^|D8bE#u zZ79tSki`}Q!V-9LH&Km6eXxa+Qa-JN&co8EQL{n+;W4y4Tqq_w?hOz*>{=eFaHFMJm3ulY2F z6NN58X=QNr3~3{WX(Mkrq?yIu@f0ua zZDTs$F>Uqf*KOLn<-lpce9$$w{cz^wMf^Dr;klBqKIl+!nt0*)IVA+Nl86Hd>1ilW@#m`t~VFHRh(JoAfPji(N}1ODcS@=y}c_XZPn)<}OWhWes5 z@epwkASx+@VH>dqIbV?Vf=4DMXvPVg|Kh*z0Zh{pzvmql4hcIB@Bq0Y8lp%dP$(le ze|7wDxwKR@@7p*Hdr%zkj+K>xM9}S3El*ie4Kdgoq9+LvYK2Hi4%I+P2uCb(aKzW% z6W4r>1jVE}T{Q9P3ZUpajN_Cb0YC{Jo%hI71K7fOk_1925NIhRxmO2a>GTs1>woB> z9n+%+)B$S;Q7(tUxB3J5>UL@35>-k9l)`{XO7^CJAOd+5q&nom&6DRjfY=e_JO~9z zr6kA`h^Uhe8UzVvEL`qDVODFBd!lR`mpbU4lQe5^K)Cu2>?8ijoBqAOOx4;VYOYfdtq% zbQMcE2z;OKN#BVQUPZu5@HH9FP7)6Ag4n^X<+*AA9Y-1BXFUi(s1S6v)6P0EU9)Gb z987LmKb}o2m;;V0>klLvtCK(?)B;H;5rsv$5`kdV_a5B900N#0#ip6E$E9$VLr}~S zhXLT7=Q(zc1Fty0*lCQ6b3i1yOy<^sGSAUx+oLrOG7y0G9GUf|DNUz#V8fLC)`F#g zhwWpvCW0cs8A57&N5zXW7M3KhbZ#9tG3*TXKp}w66UY;jwVvQ|51%>Cb8iT?I&=M7VrqPM>Nu=ucr*a|a@LB%OB z0VN7jt<-TkNER=FAkhe72{aspAQOsRT$-Asw0H zXCVRY1)y0SU=3iV3|#8q69Lz9P(mV49nxkYnp(+(oIMf1wgquOW^IyLz>$RG|C<9W zkhVO?SvU)n0O(M%k_X)0GFS`^`C>t>fK(C+1W$q+BWpd3140c*3pg)}9zmd!BAhDh z92qJEnM4!_ct}_WWN`qe3AP44Oquyj?+`DT1{|IQuT}7?1O5R9Z+O5_Dp&v|3Q^0g zM{Yc8Kquw7egGl!#kyLkrskI%_bOZN=SAB-|AEb&v`%d z%uG)J2rVE;z<3XIq6Gww2*Kq~u!dwEosmivJ%jYn3dlUcQX!UE%VBaXg|QCPS^K(a zF>Pt9*_y7~2)G4tz?Oy^UC|RiljrsvA-q-qv=mUhhMcoZRuEu|@B=vlbx4843{jp_ zN^lrR))l}S;bfMue%%VRx+o zUn*Vnjq&`^1?>g4)a}M2s?kHn%GZ%MJ-k{)^fE#31+Q3|dt|wTH6GRxKt*n(qU%6ohwZHFB8L!R8+MbOu|?F+F84F`1$%2rcKayFG7| zzVEBgG%o@`3swbYaOckKo^wV@ubC!sg>U8Oa?iu74ulF&LNGu;90Cyl=QzW8)m0!M zIM0i{f9^b>igyISwVoa4J){HQBh4ErcFx3Pi%*IY543WJrgdnv$BaBiYZ<0<l)1cu!_D<)RG7h@CeC7>Lj@1sz ziO{B+d*GOX(i3@Z-lPS>NEf@rsEtr_Yg}j~izdf7r$nB6SZ;EP+=m04b8wwrLFuCD z(XoQJMR;YI!{k)To2N$8aJ86D9cs>EU)^D>l_S^TM{azocH_Z15@T$bG@FmAM!UVu z-mHW|pg3HMGO1*d9-Pm_qL^Fa5=lyc3V~;JcP-1Iqm<-OC-Quc;Nd)wW{#sI&mAmz z)SCtqO^d1AV7xsVt**ZDnZ~6D^-OREPfpoit*C@YlFL?Wp*p<)U}>fbfcFfJ&p|m# zI^8eL2p@}Ho;g-~B|JAf&N{fvacytq7Oj@yNN8G*nsJ!UEXHdo>Ndaprfuf`E#Rr} zOGj#g4=L@>C|Nfg1_~jsBEfYIHN7gFV7!AjTneBBkii2%@fiY8Al}ZV*0Y{yEm6-c zyd%_&ZC^XC5|gzQqqQccb@_t-+)@9+0r#D(|gq}#FD^f^81qi_< zFIE!5gUvu71R#{;5*c*FQmf+Fe5z%*v`TPEJBnV7zst zbZG^xPYop@|2bSM$;W2pHjM8aXac7H9|F0-bAs#hhViAO7L7HftDwD z0Fe-!0uEdlhM74;0jR_Z0SMj;Cf{j^*{maQyFkR` zt@VX7+Nc?WsVv{Uw`b9i9-?ykQcC>uCe$s0ru{Ud7fjC&5@^5?3gf6 zP%1wSz=3nX4|Zek*~7uR##8(NWMTwBu zuNPQo+`c>g$ytlzzn{w8O+r|adZ45|iZ)t8wjpE@xdK3%7l#;4XONPfazXjM-*~Qm zD?0Wc-?{&)i{E{E?Wt!*|9#P-Dicy30Qq@6A9=&1IRU)qXCxU2IAm#xR=t@WXa_Lv z*p+_mO~X-TqGhkjoK;QU3;_}vq4rFSIRMCvLCxyA(8-nbV)J9Spq^unUGbG4e`Vdf zU-@?s^jabdh~jNl50U^Jll3+O5%Ik&&)`hT;h#2}*sy6k(oBAPo(LXDym6>>niB3j z<>@s6{NYkK<%z?d^WTeLo0Q_~O~~u-+?76${n%$Nc-=#%o^sU5QpFHa3>B2x&?u}U zd{ng9^@%B@jT-8W7WV9(!1FJR(Nx1;dF^eFeh7d+2o9LPQSz;DIZ5g&CBb6yq;q3l zbk;ukgMFCB|8DY{b!VB?M=zG7BB?7TOvI`TCqAHHSf@)1~}pu-3<453s2(V;)10^!!LfZ zWy8eO-cxV*-sai@cY_BXCok`*_EoztSaQg)AX0GN78)P`p%jEHI#K5{WX&8;J-r({ z#&#Zk!?!n09jImEeZHGpCtr1{ufLIS>t>B$;4Y~E&n{?y)e0K!>`|4qopJnI$|XuD)&PA;=G{Q zs$s|W9eC{Vt+esk-50N4zdi1}Ydi1&+{|}%MiToaKOanX4uUzv=Msr#k&HTsXI+=( z%!Qq6-GKlb6EK6-N_6JQBWIj&%poH~Lw$&&5Vc>6-smK@@7%X-{nqg-?tgs8PXMF< zvd(Bapjo45k}oj=T{hE&KcQBjE+<1q=xH|uu&A4W0v);7+KV{ zJc(7eF|=#%Wc`zkDs&=DNAF^1KMf{GOoj7CL;#Hf_1SV|;{Rst?5E1J?& zibzaiVntLciUJxHjf#q8xebdML}r*_X5M!9+so;5^4a%Rc=hOKmCEjXuYT{G?sMO( z`~Uv`)Bo zPP#X29}>yt3ha&=?D_)iY)RU`xNzv(AA0lH7Cb?c_|-a@%#(XpX^VeG7Rkpl))OKw zJ-#@x&~d+}pr#VvH{-HOIp7dlhV2o@eKO{P1{SO8$ z@$XhyH@i0!t4BKV=UthcG&`cOwk8-nP$>d6pYs~f3=DpJub$pKTlvBV{$%L*CzAoY zNKEd^SgVm&lH18W$d;|S=A*8p52Fso%K}41!N4U-If0T7l=8rM3HaK#8knA{Ow6t? z-}?T`$2UFU1}y8{|4TX<>n|pGay?ejOLtXX=UQ{&`e6rSWra#f!p}<-^8&utr{IdT z8jiMO96ape#FNKorl)iN^}fqSr=Ms8Hj)bYQO4Q`c@g;nX(B_HJ*PUGgz>dgEc>yV zgK|-#z~FO^gvX#=*~fE$LJm+C_|A_tMmJ4k*Us9`iRs*@uX%N?_Cy+R9BGh)8EY>f zF8LHzQ5cK&jaHOD#q3wg5_w<3aTOE|kdkvL2%uDdECAShR}+4525UEr;2ArIPFpik z_|I!zjXWM>sf>jJIfvX$_N`belDCp?lCL8}m!Ca)rZ4P!XU1JIRB=$u0a78AHGocl zh@-VOorhYW-Lr_Shu6P$7aW8rRIz!ZMjR&> zN3pHnh$B}#o?BouX^}%2cZKJX`^W>x&>LPjdgfHkJ7acD0h41shDUNJmp$%(#UK@2 zS3oKW#}QBp5CV{dONcskEV(a(7`p_@v{9-0*g9Lq@!PAHfAEbH*F9baIAkN)Pjp6Q z>>#%giwqS!_sR`3zL=i!F*csZ&~Ogbiicv+MK0&SO-+!H>fvhv2OcA>j<7QaRQ?Eh z>~c7WFjRA}ZF2?3Z7RS01AjX9w#Q=&jF3vk-X}PnSn`d`y??>T_BA8^d26P9j85es z9KgmgGcVIjCy9kI7GVVBLIa}*TVP;p zeEaqD*FTm9OcP5UT*ZL9S8IK~=U%*SI`557`lyV15K6!%4wNeZ0|-m_D~uB)T0(0J zDFxJE8@LLo8P;}yXbxfV_hHxi$Q^hWCTn#>TPid!`G@OXE9zH$Z0^R#%7AsGl@a6^ z*+l*k8M^2+_-jY=25pL@s4YiIqh;mP?Sik@SmNSM?1rF(8QbAc{b)qEVfQA)*AGW{gTf zBc~Er3(RiY3g|=7y~Chs#36kXgp?3T6UNCyt$i6v!pC&{d4z#K8z%PVt1c>?b={5a zx!=}+andAV#)A>a&yb;FL7h4^=6jxBh0GUWWgd_M5X36ZJ;38Rn?U+Ya7%gkrKo>% zz6h%FEcg-}Q& zQbH#ZL1dv_VBO|z2%2}pL`^{CAW{QV-w2`lCMbt4d z$v2(1^oM_c3&P*T0FRW&FYrjMC5t4$3S9$8UeHd@yAG7A0BIPj?tfvCx&W9i5G|tD zSU|I#An0heKcsX*pw+c-he}vK^;0bF`z~~09FA8Ql>Y!p(ov>!<2XPpkuQy6c;|Cz z!vD|&bAG66*8}xe0kFTW0l5K78S87wp{#!zT{=Ei^xav<5s-)g6T)i4xdem(Y!3+Q zXf~RdpYI{;1PB`m+I54)rbUCn&$VK#*|82)@l!l-&)ra!L-5Kqs1osu^dUF64!CIr zNX|hNO)yfz^K%&A@hn98hvsrU4qwjzPNz z%(oIe@1zlgN9yPWE?l9ZJ9AL(0uAsX3q?4E5}aHPRyYujf>bWF401IznRC zGs~E}{{VC>UfY&GA@5DvxILx1Nw59Az-EX$oO4LZfl` z(o)gIhBbNQeFZNkkt41r5d;Z-@n8@4?YFN4aJ7TJ^2CrR96ngQ0Bt=0lz40IS2 z5)I{8L@>;5h`GZZbeAHuTQP&z&|!jJTch4GXfpGQEe(IFh}kiN{oii^4udorN&!-) zkIsbiUI?LL$X3`7-t#yr;y|P$&B^f`5)4mQFnMr^UB+c=9fOz85f@&eKm&Y)S|BMm z@KEp2DZmm|RzQ&Pa#WDa_F^n169a^Fpxb5GG2priTwv+<&^Q{9kr0ALD3#8o=W-NqaxR3Y zfH-2t1!`-`7@nQxnh(b-a=i@Y79q7nzVi@rmCn%eF5r@wn2ftXLjq(-S}~~;%fJj; z?HDo#SWh8hrkjfaIt(-jG{VTh=mcR`vog5WF)8)fV9zNh>&=)tcR z;g!3{<$E+*q1$M2E4JrX-U-GTtu7{pILMH-vXp2`HyOBNAZ-G}F=jfG80hhQ$iSts z=~n0kN%}O{i3}cUY3$ikMeo5bIy~nI2Z{4=$w^C$O-&Hi{=Wg1C>|JTA#L9nop7!- ztTkw~x@k3z4!LM81i(TUUcL>#oI_!#h)6hS%=OT2_71MN6U>I-+YS1wxAUQY2q#a;sv4<#hAY6$~Xy9@O^8sB#%l0*o6j0LP)hQb2_k z^>&1#hdZ{{h`+tk0FhA%O;RUg$Pk0?hLKG#a<*vbGDj(37;vNwTan~B1`Uem5}MUb zlC=L{yk{H%d%Raw5K5-OQ&3{y01?K*+9a(cBtW7gn51ujiA;Ll=maqdIsxj<7zdUV zw$C_-jZLEyLcp3dFX_0@V*72H2U=lw?{Wje!Ca99535HGk{M(u;{OVwWbj2StTn0A zjaCGj4$lQzG{CW-Xo|I1>}afCU%`%zF6JLxM6Rd+n`S&6t+fC##?r7P4cKUtZYv#< zgm4~3rhl=enVqz=B-nchFp#J{6vEF*l*?|~8H7@)5v@pLu|)$q$ro?D1HI)2bcrI~ zikl%z?jh%Atby(CV6UeUr=7q+SfJZumIH%oUZmZ@#wHCUH2sTTtDE5E7mTE>2ui@1 z1XA<^H=3lW63~%O1CFD9z#)SSx`f9J8Z934;t3l3i*|soE_QI^z6CsUqN1<4?_iL( z#$v2Ltn$xe(n5KnoniVC`W^f$#Gu>st-7XCb z3bC+ZNjR!QMHv(bug7$9`k~Li}MN@a)7G%+Rc%k$hVIhZi*F8v3iB zy|a5~mH`Q=kU6qk2guLKb5|H3>h*YUcSKwEdf~Ym9R^?a6_n}s|28w$Y{!^uYaDLI zhyncGZVyX`8>lbv^9`CtlM*AK8JtcM7=yHOLc)O2CC#2`bz*!cjBs-ZeC5vlX;LgQ zbg+dxqP#s*Eb4dB$hY)DqlT9>;7J@_j5Yt!Td+)G*^SVpgKU2fkJPitACnK0edw#W zeiW5+c8~mMX0k9QATeI{Fi~}3Vw?8-1_M9Z(KynGad1Auwn>c{pV@C2*u*m17DfWv z05Jm&NRJ1-{`>%g{ze?*i`L-wZymrP{F>S|jdLqS=OblbY_YH=PQ(>o-W&f@mH`AW z930=g%G={tkumadvP3GRd+v#)8%ArnOV&;muy!nuyZ|%<=rH^9%q{Fd6e2E)FR?@-Eo`@28KXF#oH zz=>oB`SdFH{v~oD86ihVog`B=HF4U`(m$`CDX4PEg(DThsDF`aw>0Kj2|OKOQ=x|_ z2D%z)hC5-J0lvho9UIXgrP*D_)DgfP9DCi)=Y$H<=>y3m)+GuilRb@B~V%n4d#javMqT zNYzM@)JX>qOP=$r;Jza9QHh)`P_T^PThTJpc`aphk%F{Mx)Wt6;#wz5sX@B1R0{3?he6-p#&im zB^ZK|P=-zkNel)g(!mz7p_`sAx9@P~v!}D?HP0)T^}#yTC3+jXO{L6p&QtGRyVm~j z{NMjGu6GGpmhpF4ME-8e{|7+k|C0RieeYb0W9yD-|IrtOe)L@1@|S0pUrNJ7Pst(~ zAyiet^L^$*N&Dp6-}`4D{(lMp;kp21$AZjf?t4!ouy$TG>FxaB&eel&*&QqjNAqZG zyWydvYTMOPX%c5iD5hB`Nn)f4QbEjwwPI6npG5{d`-cCI|NO6S@y3^a?Al{nKd`em ztM?c2qsZC^Q`Co$q}|@p+|m?37E?K~Ofi#1F@uzHH5ST}DyvTH^DIf81)eFRpKAC= zKlH}igxT&-?OodY{+&Z-idy-7wV-|WiAS#PEcDdX_08a+haO5^{pwc>JVh>CxRBj* z&pjDWksR1(7=UNo_}~4&o6fo8%WoL%4S#5V5OhVg{_j0+_}PWS*i=@$m%XelHX6$U z09W&W&H`Exqz?hBt5-6Bix=D3F(94|5OM&XF~i^gZ+@<=C3`_?55xi6jUDxl(a5$EjqdX=WEMUQB@mpkA+wtE;O5Kw~lyrp;#7>-Dnh-+leQ zXA6iNfWNWvcinZD^up7@KaLlZw{?%adMuQFJ4^hJ?>T<=hky8oGQ%ti+Yde%-E-f4 z5g`29uf4TgD2S?tR7q05D2iE}_~O)>h@Q}Bq;Gl4TddOI| z_ZV5jJgaKTox1AXqN?dRAED0n32U(dmRi;;s^hw1wJZywBntv6qLidb z7?Gw<+HB}|+6yPD)|J4v?d{+E_18X7&^w=khaddJCq5q^XW`$X3*-(0`+*8QEs z*N>-Ou~yWzPNQ0UT6C_#3^&GC>&&K*HmT4nMB8FiQ1|Fl)0>lV1C3fAw_kzI568TRmwdLR4J}mv= z-FM#|KQ-+>D*zm){>R?+>bG2Z;_#Pu$Ke+RMf)$;uI~N7_q}N2`!RG^UAgt8Z@%Y) zkN^5RUjNFq73pmm?(LF9d1GTk$`TRXP?$_+XsU`N%Q&9N+R7$Tnj#S)iVBLN(C_!q z6cte^AWJEShkX=P!uLX4#|_4lg(=GV=N^4>{+l29$Y=iiZwi8ZqsIUKhkoIX*yK@P&R#eo0zd%wOqzWjyzu01(=VLz^X&wse@kM4i> zyWd=V^PArt{OGG*^2U?Qeoe0wqe;0KUAX#ce2GlBL zbWJBtB3#EK&N7;fCf(iviln3I0+wmAva*RRCiDkK%q^2|~W-pj}0)D4StJ-7aqKHq!z!#{jH`bdhcUqX{oRyUm6bmX*Xdx@m9rkE7muXb%98HGQuCJv^ z9T5@7GHJEfs5ct`7 zYk&Othqs@xcKG)`@VZyjM*s7ZU;E-CAKW_hjDfGc7T^8I%{PCC3=`RKwe0L!SXi^y zX(yM|bKh|r7oM}p>iP<4=FwSd;do5J)k$ zGb8p*WJO{;pR&Aq8m&-aVa+kE5%o@oYPHCCdW1Qj(5w}Z9s%j zO}oG!eCQt(f-t$&_2WAy1NY_Kee;eW(zfM-@u@h8|KOTgJ$&(tmju@pl`yPG-EP;q zJYBu2k@SmrM*Qe)XO!BS_x58F>MP;kqIN8 z!`@X)XNo|KQ7WJtB@Vh*n9hcT`1rA%Gf37|3QCb?Yw5bKpePc0$v~2zS}7BFE|q!{ z%bqbh8gTmb%?P-xc9tj>3=}P0lco6mKlM|uIQ_I3u(%d{<`1u3i?b|C@{|I+>}4;L z+U>Tmyu2((k|q|yPM45qYIh5)h;y9vJt|AB- z2mLK-l@)@(N3P1GVvHzC)Jkmv-y!rY(kvv7V_e@ShyvQJCF0N{3VjNNGHzy~$vX4d zf;0)Qt3lOh5GWp*E#iANS&~t!m8g~^$+6?_zU`K?KM%a?n<|7ZUVOE1?%cMZX}1ac z+FX`|g80_Ae#CnBJ74!2iQrrm`?#*p`sQgCiwR*IVH8SvB(Lf%biK&d?h`DvmQe~C zzHea^3Y3iszU{EEhqOc)Ap$d)QY|%*6pc(%DQW^$wZwQ9P$-v~j*n>YUKdhsh(4kzfK_+1+GL>o_-}lI}1ifA$6=h@! z#6m!l`lMlsq>41!E4c20xzj^cH8fSnw5B-b6v>DFU=QD0KoTJpWg^dIuX_#C9x?20 z5ho&>C(j_u2@7XT5_v#M=sPr;%PcRqDVB|PM*J%|t8WB=zwE|l(-K_Q7rNa8-=2+c zUQGKhRy76Ba|yx_%kfD3h$IQ|g85oz60`=A^imXwuFH?{z z?Cf3Spnr)}PVuq@1*uLP#rUDmmA!|tojIxD;rJ$-OXu-ymu_#DqNGx(R#9sr{r*)d zl{&htqw6I!MaQz{_^v}iQ*~9B-+0$ug7mbTq2*;;s5%=0RV};s-n&%K@xQfRD^e`! zdGrr_pV4H%O{Z=_6ce@%F0gp<%Jz;QQQYh7tmNeYZ&t0ZkE#u1>qv0G`BLA%} zm#8*$CKDe)%4oI9f6qI-^IL&0+)xbo`qTvgz^-@#Bxw+os+Ed%A&tFl3_e?UA}2vQrzn<45M1KGhD=3m;x9rx1{8`qYwc4MjWXp@ z2N9J@xs0yLnqzyfz0n|;kEHnvSz>qBjpa1$_@2M48xn$~pz9jCrXq?FTD43VMJ&}$ zQ_@OI=ZARif@W)j@u*L=zRbiOFrQD5!y3h`O|7s-r*;#SQW>qRAxSEu-XU?|Fg_ZP z*Zqw$8_Q=<#3EIFg=v3Inu3zZ!w>ZNQ5X4 zl9h_i$x}<;_o5e_T7KF=5QdyQ`Oz>=g%eqpl!k*5SpxmR0N)Sjw3bjZiG?}G93L^Y zx@1yFkOugsm+#1c$aiQII{X{yaC&1yaGM^a)) zf{vI8-}ba!0G7D>?krVQsi{heP%hU<(}WYJ&QdHE7!41}fX($YD27has8iNEq=AG{ zG*A>7H<}aLDH=LwPF`ST^CrB|W9`%?VoAWaU2M~*pj0q}31SwY6%>w=s~lMeG^#7; zT7hwU^y$;>ji-4&;1B>+ zDJ2;aNg@!10b%6j>25X|GII`@1YJtSMqaS=hdV^Gghpi*TNn_>DaCYycKsAWnz0Dx z3+xDpXl6-b$moge(YLy80k$ zxWppt6UPoS>yS#lN=048oR2wo<{YwYFgO}w6e<8k-_Oq9Ko+8>e93Z6{*1{#r1Wup3z--Z{ z*;ye;1p;YI97T-g+oW2C=Q^m0OtsRcUa91Woa`_o(`0vR z3pchoGWVGt9r5_JKV|=Lhv9IKvQg&3nQtSAJtQGxbM-8WBC_6oK7+#p4iBy%q#|40 zCpbLX;imQr5CjoTu42zkl1OHK?G#7mHma&}IJm@Uw$IwqExC)x=r{~8*&%W~_7ATz zpG~Q?mhuc!EjQ5g0tfKZe)jvn5{2HKk}Ojw z)+kkU27`SX%{nLsq7Wj<5`rqQe(E&UQimi_^S1fPov(0u^HvT9*BFfUXjVFTt7}DF zXjCU{Y#A8C$X&wJA<#{dQFTe!@Q zW?b5Ngv8TWX>Cxi)lk(6Q3Oc>s#e4glhF;kK+b}D$iAKtgzGYM!Y|DhRxe5v(nRLs zrHd@J*J(7H$g<3n7ayg!dx&hPAc2@F+;Z+tG_6AH#uSShlYvQQRatAFAaGI|+F4F6 z-I_o3=^t)$`QlfJ6NsXiNS)JKsv>4Ojp|L5j3%zwqqyQSx91!kEU1d-7# zb!NeoC<$1poTpN*P;RtQie(JFOeRJY$`u4bU^2B1Zg3#-R3_ZR-JkeGdhf6N1X}u}&tW?C)RW%!%hvG>p8f z`#e#Lq6>kP94V!SUK)_fYtP zB_j&|`RTkk1<`%{C7|{3T9oo@DjZ3jN(K z>8z2b!N;C>5Hf|%dYc3o&m9z1CXOVMRLF}qH%Kn`X0!e`bwJ`cFzQsGYk}2 zCyWv-D^7G>{qNuOY4I$VEYAja-~C%|9Hj4@E$rBHJUlPLu>vv@ltiN-7ZD{HCDk~$ z{vxv6JucGg9^{X*bVcKV2k%ES3Y zt!vwu<2gs89)1|JHModTC?b_oJlkh|R4zn)}DLrGNBjYQ3&nQjnD@-R>A!mJqXy-cc7nv^aa}Jo6-^QCkJUpjZ`{m?PTD zON4evt6IiM1uF6hBybY>v7@y9e9~dkcRm|3eps#S|E)@jBJHM zvxtx-xNeLnWK3sf9{2=N#q(^UF!1fPRY*m~GmALz+1a~>Ar)y?H?T$_Tm2{4+TJBhQiw%n<0+04psH2s>dkm= zjILLx*4y+C``9B9--hXU%9X2IEEjH}JKV?eY#hsCYwLg{6R;c?NmQ86tz5kz-pXX< zs!|9 z^pB<_qR4DEVKlw2qd8%i5d;Zwn7rq+pM7lfOaqX+!_}+){f_CsJxg_l{YgIksnk08 zu9&8s_wcP|2g_Vglq-zJGekk9U2HHL+awXp7GtjUE+Qc^H%%^YU!qZ~)99>{Njia- zaB}TAbbI?`f{cWM5NA0Ui|K;LpL~SSha?aQ(-c7#NCgqovFY_^pC8TbkL9lWOalP$ z#1l`1RuF$^Gvg$#)5shqJnL@^m|hlb3YjLt$+ULqlXXwt-Lh#=}%uZQ!~BiXl%XXush9c zDG{8NBgO;BH+oe5 zuPcv_A6S0uv7wtJt^d8g?!TrSxBgkrpZ(Kvty+l_k%C@eHZ}1BACL*cgPakWsN=dB zqGXU|3SkIG=9nbRa<_>|(6tid$R&v*!pKFFWu|i*%Sj*;zB*Y1Z(qp@_doEJC*7xW zQ1TlYdHh;D_FV=DPf_vMeff2+Ae~-s*E*|}+uBR@pOD1lm9iKWI_(aMrr_9PG+oY1 zS5;NX(){ogwqqg78kJfV+i_7u5!1AgBpJtvkYt&;X_F=yN2A#=48@Nn@Y~()<-Ofq zLLj@*Gs8lz-}v)WRRYAPtZKf3d`#8jDoGT}1-;d7)oy9D%P(m)iWdsHTGw?ENd{Gs zQ8fiYh)I$hKcXJ?{k^&q1JoK!#yFV2Pt|X_58I32!G-N?+qQoM*nkfNKm;T} z2BgQ>@J%s5I{x|CP9In4*lsI-2^hv-w#uSdloUzVbxBoarJ`zTQxMVW)q+|qYI=qs z3P~1Njz6C-+=(D5J>U0sJA>uK{C{MXZk|ZRM1Wl6!Rgwe{l2jm0k~9bcKM(}`D8f6o(;*N8QNBWU-1r-z bKfwP1Bc+2*)QwL#00000NkvXXu0mjf6p!Qd diff --git a/public/img/emoji/memo.png b/public/img/emoji/memo.png deleted file mode 100644 index fc97ddbc92b0af4590d3d552bd771fd8d011828c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4945 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 P00000NkvXXu0mjf=vHwo diff --git a/public/img/emoji/mens.png b/public/img/emoji/mens.png deleted file mode 100644 index abccfc9f2c6f8f965d2234fc5f96146adea9f821..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3368 zcmV+@4cGFCP)x%bX%XLok(br!$s2T<7<6T8$%D1ih@f=kmlsnVFXQLE-fEvzVtX__`7 zQJl1Cp@de2Mo^NfEeYfSl+dO$K@b9t6wVA8Lm-W#D8$ zKzMy*qaWxxe)Xu;!QQ|G4{_l3y*5;82Ds;Kd#|_gx<8dd?u(aWOc6V0nEc zkqZh9I=}|it5t0>up6)26Xtwl@a&iGqm9nE2+I1847hIhZBF;%Ez;Ew`5t_gLz4l= zBcF5eT!m7C2(PKE1!F9JV5n3B&^``zJX3|rB(^+)o;q=V5KLWT_x;mQ#}y#!wy*OF zXMIEUEng?y{rFx9Eji9!-otNR(96Z=6j`+>LtmFm&XcAIz^h&k0+uFx)whh50}h|6 zv-^c<{_B}>UL2gl$@JnCN;tXF78x5nCuG@b_usOA&J`f*uU+ot`hTGMSFM(wv#2^f z^e-y$*)2=>&?UWijxgg}PK+DID+XU%UhCadghn2{dBx&hMZuFs9$$HEoX_2VjFD55 zQ+3kug2qt zYn+&{)B=k!VZ4r8m{LO46&9C-x30?akxP5ovayGE-*SYX9CXQ+9K_hw&MAGnh+Jhu zozVd2f*n_@o~4@!?|jWGvF_|eJoJebJU<-psRt$*p0eaUMaCrzg$O`r8-bnG-ttQN zh}QybEr&)d`%lbp-@XdlFDZsOujFkv3j1G#OizHSRW}o|0e2-%0g-DwchmCSGO*@C z)3*e#xPaY%v6`dfmcRQ!nS54}bJN-NTnBIz2%rrn0F%P5SPh_3GkpB*T`cPrF8-@S z_|v1PvE$gGgHHx~1~0buHvi=-;QYQ#6#6fu(1$h!K6ZIO({~{tY2E-g%QoMaZ685&?(&c zNpX1arW0K1jB&^J&gI-+TL{45fibSV_An28vC2DkET$-W-j(1f8o9q1GF%X{JTW$f z6S7IB`^|}qpjDZrI9YH!78YHeIUeA;psk(vmK9_a58gY*)?e|t``(L)1=c&7(-JAWg*b>PvrSy z0ZT>$?tb(V~2N7Uq2? zjD=$-H8*VQr=33ap#|*NUE!RC3S*hKw4uQQ60s?g4X`3%0K#+?@)^)NopXC3uekKm z0`2tHx8>>jNe$lzV^T0cXt02QZGpt0TwXL476@W8Y+0gUH?aSwRq2iy5c6Q? zY5?HtrgO%Ss`73ad6yTbEI)lF0HBa@IBTI`>IR+icv_k)Fc$-C95vr!Qd|R+0ynFe z!Qt?}3Y9|>@d?Xy$geK3YJHvpnxJMg2PP_}!2$xN!^h$$#x&V}56`g#ro$D#;4ofuIeO1&c;Wyb+?wN- zr!Obp)13g|gvM-Q+sCKa{?R>r^~OPlFIvm8%?s(y2iO_i(b>RNQ1vBb2s(IQKm#WJ z?bj`bPWqhH>(HGOv<1^93pb;vxGqO_&A@jLaPfvRcRY0==WSd{d(klHD|cVcjz2rb zhd=lvyLWcMRcl#sQGr|#5Y$bZwMK9RCd!tRA-uL0EW~V`yfr4EH5@yo86443DS#XbKvz>oI6JA&^_;WdqG!#)~)g?%>qwvM!p8_&>2j)SK( z$3}GW2{73J3&w(t1F@hi%Xv=Sa58@@X2pX@byP3tX$-f zq&?5o`PSnVe*dyOH*77jw4`V%!}VXfgi~E7_=m7faj`?CYN^&N^*Z=|1mys(fW!iB2XhB#KtHAi2-riJT-A_^LNBX3{Ip7 zUJ`&ioC2L*kUZ$DYCu2{J8uBhrUG1nKtRm`6 z!A3UODB3Ey?BaxDkTWU1`?D4~n=p{HT?1kkY{aJ9Oo2F(;S#2QvM~}@hay=*)J9sN zq@`^qxy|u`h>79R$?)w>NSK>#7uJM63?Ou*L@qPeqp<44fCMl@$BOf4F|uQIeiXJA zOdRtXwKeIeUukovY!nFwcdS`V*1kp`m99RUSqnOu3~l3aZHn~PMob25 zP){~M*M`v=jES5QQk4dANR&8$jv_S)n8<(zTm5vh0siE(X#Xm-0oQ^xsc#fPZ*qTr zNx`&9dFmPBN7z326Z?}5sGZt{U%3ulZ(e{+w+J$d=Z7^D)0R?Ehy@c=@#an+NDF2mn(v;oq)11(O!~ zB;EOMY!kj-h3e`34aP(R7@KD1;8)2ny9u`&Bnt?LO3#Fn;>jP+u<$*Dyf6CD)VF^) zgFhTVubVEsjmo}WgX$y=wvaK|0H`p0>wl6x`#reDOAxPFl8&41T2ONECpC9{a}odw z()b&sx%wN>0n{r{oq*}Xk2Tn!awY?+jTpP{dc4w|h_?(;VDq3{5J|5RvMP+0icN9b z3m}N#%P$>mFhzWc2G~#{GRpL0S-gR5*mwOS#x5sY01mBeE3eqIks;df)dMiYqQ7(+h4M951d0kv9l?eAm%_^Ul}D zVfx4;jDLG4(+?d7$|38qxqd!i2v|;dVHkhHqEEh)u5}+KGw^1-$OQ4;UCO`N_z-biNECcFh}aJmLi$^`)wua68-*$3$I z5dP>v>WB9*_Ro8vZenG{nw&m6sCW_*&PtioIaa1FpU0M`Kg)m|C=r+Wr|`x^%uPkd#6_V59b zvx)u5H^7-F5$i-@NyMFMR#(TlYNw=okw*AU| zY`)`OZoKONdw1@5VAC(@WB=~~{N-+`jg7B=WOUPJWMl|FUX^w08NY4=qZPS-g#q;6 z*WlUIs5i#aN)-|ZULZ-RRH|f&yKaR6^xxOAqifS7O%M-aL@{s<6+xZUL_}8*K>vLW zLRFnA3ZRrC;5-1a6ac@10Q&E1S&}%fUjtB6Px^Ws%712YT&MMMcED-EFkzGlu;RX`O)00R{k69H@m0rcNj74eAD zO8`I+Q52OGZiD^zHANErHU10$I_tnyoS0K0#ASgH#Z*v{J^)xjU;pFL?K@t2^6n>o@}8nrP`}+rf z^M>oI6^$Ar#1eog0wQ=()LR0$6$7vmzJBNN-JgE#5AXfmAOG=#PyYAs?S1gCZ>v-R zo_}=fAKkqFp2Igh^o6f)|BcW8+0KU^`MbUM-tqeWts9?Ay@JZJ392~fNyPc=Dg*HR zA7f_r=etw4tULG!C_P`3gI~P)Z*JQEtB+N;j8|2aVz$Y;4IAG&_~4o^ZQrx+%bWM@ zALy(frJ%&CXLxk&XqY;8mrp#XKvAMq56*#0faphbl>h+f`HBJ|0t!CCR7jn!-?exD zzBT*y(yeD;Mtzeq+^Fs;&!75-b;F|#->Bo9VWuPsQmZmFvX*vp4%9&z!2stF6;#y^ zt|kSB2K-j%5-@{UVgjb125Z-kjt-BkCCL)JgH*vKO1fq(>&7;0OT4D2;6yMWh=5aE zk{~faSwNAK1p@{3o>aXb@T+JX-nwqxW|w6kf{9=u5>zo&c5fQjp+<&R#Tm;Fw6sE& zRR~26fc1u+<<>`8b|FRx5ea|@nk0xgFs2iBXnC3B2FBsf(Q_e7$cYffCcF0V4yz5d(zPiziI&FosPt4po%#K08vDQ5V}~q z1u^195T{f{AcA>M(P=~8!M6)4mQaljijo)$%Ax~B4zYwhha#X^g@H`qaQgitTt0V(fgc^h53fNG5RkHD@`HDnpPOd<@&&S?5lAZFN}Tu92C6dV^t#oe zfXsBtW()y!9w;$@vP&#-I_(xSr%%DpkI{YOC4T-)zJ@-Gtr(XXNZyo$s-gy2S z?7Z^<*4}alVo)2XGElMYs|A2Hs!0u>(Vo6ceQXQ>GeZbu^cxfrX-l8>~@(`19=C_Zhlxz0UmPNesAt-I_g5Y?#>w9Pc}T6roYAg9_kKAgEBO zR9L@dJ43ZP1GS8|kDtW(m)LUdH1#zbaE%dsl7KiMLRy8vAsAXiZKy#v5%N4|K?AyO znCgLFC!3t4b@WZfMklJn1Nu9_U-TV7RB`4V>OCj`s4B^ZO~kSwYmBmcXboivum5a< ziOF+}kB%_Z7$8X!1OpM$v_@n77=znxg7NFgMus4B1^%tSUxlLuQ2~}; zhtnX7C7orE)zC)$O0VCtb2kTWzm>Z`z2(Zy`ZS>vly($4QF!m-96vt%CTD;8Dojqm z>>ODzLa(w6h!Jy+`q(%(j1S-0cLj==w_+I(Gl+(%Vnoy{BvlXvK%(KIk(n`uP^(Na z)?A>|E@+pLNCe>We3Q4|eTVAk8iq&L!e9fJDG*tVEsYb(K$h+5JAig4Hp`-mnL%j) zXjF)R_kchJl!!(HAjU{dKs2G9HL2u*P(%PmYBgr2XP7*3oZ*{phhTuxiy#mKMkH zEfjWkzB!MYff;mj@Ci|DsS3&^03JvnR?rwo%n$^1j!>x)ixP2)^C^N5$^zN;%aqQL zB|V}lE*Q+sGc|RA$(e8zkiG(#n6Xn+)6?^z)ok=;cXf_f@t}an;!+?wNIb*}4g(dO z_mtHtff1gA>&D1qpcfT^PEIj9#l^`B-Ipir6~OulAinT1fZv*Fo@vcY z@2Ym1xU2@EsIWBSI|u<(!TBW}3{u01fKTyeSn3h=P~@nlaNRagLqnhdP^gEKm=^*s0!W#2BM3QP{ex> z2So?BZUbZ)(F_MfAQ6Wy`-I9RSe&!H4D7c5FQHOnrD*B}u6O#0ZtR1fh3x3K~HC za$`s7g|b+N)y?sRLaPbqPIC6$H+lPm4~y@A82%aPUM&E66##U;H)F3H`rzWXCO-J! z%G}<)bO~$CL2CipZRmC&??T8SM2H2%u)Oj%v=^Y;f}*nsuiJ&$OT<$ja`vrPIdb#} zFQ1zKmsfK;3bf6v>~{t9o&#;5{ncak^xEvy4(Da>wope8L8Gg=Pl9-LGBsLW>)S3WQXspxD*gADa$F@vcoodk*r&V!)Vy6}mHynS61;=XD zaiLaPr!F&H6m@XvgxV38VXPpo5D)?+K-Qato8)fioW9R@&RueImve6tz^UKNOMsmB zd7tM!-|~LncU<^CZ>}#A@I?X~Hx13#f88@@*-hTFfBmet<)*FPmRq)YTW;OvJ@*6| zV=E5AML3ZgIV!G`nE-e5l1shwSH4wHHDjB*u4%oye(pl|^rrK*=}qU+POAvq+~lcge9m1r`&+K*O`b?)BLZbJ#m<1cwh=|A&O%AUS5W%p z<70-h?&Yp%!kJDafhI~Cac zQ4lLP4Px;#gIN9I5Z1nS4C`9`Sij}?8e=jxIgkrEksCQ~zq46!CULM)tQ=2W*MN8Shp}d}A45S6 z6~!(TdBsuX(u8SRW*ldW#w7=GAt!Pp$2FUeDbD0h4b(zSN}Fg*pMbfQ-#~Fq3yLeD z8^u_9VGaBt4fnl1jFJKu3gv0Tfc);{G;$+HawTVSrv_@FCZ&xU(>{jOP50o_}S zqRL`iJi82!zB!CSuL~}Dl3mR>$&DPzm7K}_BGEuC)I@F2JQt=-faWco2YJvi3-Gmu zV(jhJ(K%qk>&pFYuy;`)8uzY|&z%0Mw=xl%10{0j8^<0q#PX3B9N; z_27fU5qLbzs+rv+{f3z467y;pmcI{#C&!3IOky(zV>#hO?mI<8m1vRP4Qf*w(+&a6 zU1Yl4^1p5g=0?{s0}>Mv-GNEgH9dBWT?`j5l7I93vJniOm>{<%AQtcZ&wi z)}*wF#tf@~OS+0%Etex9!|KX#Hui|Ur`N!Lw+688f)aE;UJv7i21GVZ%!olOViKD% z7|RJKa;FArp(ab4E5kBqYMPjO*dGvQ-I+0%Z$zrW_6R<@y9TR&QI6U=>2}g>T?G>} zVi1d%#BP@ujHM<#hy18T)j+0ZY0O#*%lHX|4TPiPEsJqnw)aM``uioAb5_BW?cIsJ z>XH&1kXVL8Zqz_6Y9@8O7trjP+;F)3*yHVoErl_NN4Ab&!D9nh^yDBG{UuKmUt$m| z+J16gq3YX)?r<2`t3tXHg7FDZgWekWy6(&(Vw(7s7saFO?$Yu0XF=@f2w{7kMqgqO zE80p5HC6dVbm#o6Y}neIZijPSciGE0J4c&GSeD56EtRTlB1R04E1p=!2uE_~=X^UH z>jBnMqUT_V!z@<3L~_FzW081KH3l~a3~Gq#an=Luhr)WizII}&4oDbhhB3Joo1Qc) zmQz2~JN2>JGAx5}3rYoM$RSG*9$FZ@N0K>Y2 zJ2TEN)75|caNGcnYz^mC9;IOH(sfr4A>l9|FaTX_fMt=mSe;UM$ z_X0RQPgA~vL9E0{fU(l?AV>A)h4a26VWlBa6Z9NlYrOfN3ex zQfNTxS|D{DU?BC`RMf+*sUYE?3BS)kpCkkO!q7&iz89z%pM_OSzZ`jygA(jP^r$*D zcf&~?kj~jmQ%UiBfrrc<%_`B3$7Q=_3uR1?%|S!_wP!nEbW{o(831B6wPug|G{{pr z29lK~iAN^h*_OfRF>K1sb+nqYe`;E6Zb(k$fOOT1ZtKQHw{}Y{`5ed6ith~1$t(hRPvErV- z6um%m-tBW50#3(K^4~pU=YV;Y^6&j}g?n%i^J{WnALdny&mo_}m|qq5XL+n*rCYsn z5TAM#FdSO)xRRTQ1AX!JX8H0ey!_G`%9h_yopS={^YTlLeljStjcIhk$Ms{79NqGFkN5QVp+d8O9p9tDma2=Gj3N zgR#b}K#qBiui0H0-@elxq1o$knHzUK;zRR|UASA`)W)|0c;d}bZ2Zp%{`_yTEe=hd zrH}FzjCF!V%)1_zIib`YU;A_ErH&3n61x=>6|sLhG1Eq?@nF}x0o=Br9oL?}3)g+S z4cA`YiECs@yXNKuTb;t9zmsR_qkIM97QrGWv6Xlu2VRlHrm`a5}+KJ+EVb5AxX%-9lW=E*Pnk=O(;=ZW@7 z2tPQ#2$x-5g)`?CqkL8oHth<7x6{sUGEDU>edtS!ORugJ%u@tAXeD4G98J?f9gt5W zF;;AyVQhFH{%PK2cl5yQ30r#xExC$IfuWXEC?EPp+lB`PQ!YwWj7i*fPHY)WG;U0G z2C(GkBq;NIF8+%JFcvrjkkz@(4(Dh#{*;odqG1JN_We7I&_1q>~(Z(BGsZx3MostOd8 zc@)%NWxZ~DcT_G6UHQK)@g)Ya*oe&-jHP1c^R11MaSqVK)|If~yb$6}?1+4ZBE56f z?bBmO%O3Pu1xqePRjT4eFcg;E7=y7GbKEX4lNt7Pw;2hgPk(?wRz?(-X1`-JQQD<;tOlTEOQNo=+&B-WhS1uAy-y1+;{!WM1e z!H?4?AlUO3!ZL34kbN_nWj^2py<5uNhvLiLlKcAQG()#`Y?GA$VhN_gw%eZ=Q(_~S zW%V+m;zbj+QDfQ!^u4ehfxeIBc-3-9JV{Aqaw>bRYj>j-&&h7B!ZV2< z2}XN?M`1Gt8)Gsyy7lan9<@*twNYdGNzmuV$gYhD3|Z&j>@r50uO8VO%QPIVaAVm6 zKJ|7kUe#l*(H=~G0&HByV63GQld(~ujji>^h_|~vwNMkaQDcTeXcXNKZ-#&WRs>|y z35{B}jHZ!#hL*3mHp@=!(Z~C-VdDS}>vSm9^Y+&n)IcrN zL~YcVAprqpzUS9q_+W=}GL~i6ruH;Pa)ZqL3 z9;M0B=4dzA#i{`Q*2CynvIKpv-+-aEo$wzO@Lm~3QcH{uo@CZ%aU(}^C1-M{25PZ1 z!D#|`juLg0ZsK}1ms3J6h(mu za;Owap)kzgAQZLL9!M)wTRYlTXFOg%?@hMjbUMXAmLb4*=1q1szu))wd!P5-=N;c2 z@?g1kjfE__p8@y+LJ;%)3c&B&+}s!d<3Mg&Sy`DldGh2%W5$d*R8>`VdEvr^znwE@ z&iR6Zf^9aNt*)u5$?vYv9?E~@?(RNd0MyslS9ErEUVik^N9nQ09;4@;dydwvTSw14 z^9-$Cy_#07T18!5UDV#*PR-5D8|TlT?|;t#P*PH|d-3AMw0ZMpTDo*8jUPXrPMkPF zUw-)|tz5ZMzWd;V4`|=Mebmv>A+l`QvTqt18b%L#0P5=ME*w65m|lMQWtuQy0v$ho zoKBxUO>5Syp{JjIn)dA3LubyMp{-lD(rd51MxTEADZTX4OEhZKD7n6|v2p641t2CS z_MF4v5ao96+$om6c<~}#x^#(Nef3pZzkWTPJ$sg}UcE}&wr!(byLO3Zy!qyvv}4B( z36B{wW>8B@OVywQz+agroEG(oYOO|{G4)GZ@0Ay!p2Ub^CQ&@O}$Z(sDDk>}K zr%yaVZ@lpa9Xoc65EjA-y}iBS9Z*`l0U;v)2PpFW?%lhot*wp5jT`s;paB3(zH`&2 zP1MrVM8(A=R9RI;Ju_$0hUcHBLr@%qC+@vy(IUEb?V4DA`SRuB4X?lcx`YE1rlUuX z(&fvS38_&)05AC7^#CBxt6N)JnY?K4-o4`T<>h76HDxLtfkNlbpGS-zrS03d3)vyo zMd5Sj&apT{K<=G2YZjqSV6KqNV6j*l?|J}WrS6`d9_sGy7NUbiIqiYWdT8Uu%^Umxm`XtBVy!j~*>~e<#>}1(d6)t*3eO=hKOI-l6H!r;GIu9Xce}0z}?J zKtaVQAyQjg`)+^U<(s}z*6&UN5FQ@>FWU$kaTv^-H;<-HoytlGnN6EEP2wI^9<{c$ zQ%-(9rKF}(JKP(LFS39Cey$P)kPYyX1q&7s%4Pusnc$=Tyvt{O0C?Xi0DOFW#@X#z zl$M@OMx&8X_DT#Rl}VWkg+%!*I|I~4C8cHL$jhTln@u=kF~BJ=FX!AZp)nDu6ICR0 zgoII2Qquc(3;-y9xt{pM8q>jquR6M zn!JKSvgbGuGF_rPvWWae@4(D2K-OSitJQkgl>jV8{C)%_xDEcjLZSG+Ki#00m)Bd# z!-i1{Ec+tz_Zj5$dZe=G=x8ovgcRfB;{^zi8pktbW@b`hQ85)16;WwLC6%F8Sb}O1 zm7iQYckWyP3ZLa#$YPfO0N3qB%rP5Fr#5`}aN>LW?hl0AY|T|Fy(l^+mS)bJMVnFj z9yxM^4)*p!(K=>tLc7bgy|deMT3TE_6VI!`b&bs}R9ja^BS((pcqcSNLZTHF6=b*D zDJ(23!4&|Mfw-h4h0BSnr6Y!a0D$2p_gg(YJ;_g{BBiGi@m@sRcf3G*UwMUgf%sOf z{s~#a!YLskLA(Gi&HGECGj{A)u`EBo5|!g*@Id>dE^0u$<6XoMDJdybT3Sk>p`nri zTme8A+?`@$W0_zL@p6Y&tWTD|R7(%5IP;*TXkCC4%30OSZ{H6-{Z zSz?Wsk1wUc>eHt8zEz>3pr+G zWl>^cq5zSHbeM$C{C!zDVm{j;pg{Rw@$*~@K>t^*C&DBOuGt26?dh3GcJ%#5^H94AmAOul0^Wbq^t};lnN&p3CG)|}Z?0wyRuzK`ENR16N ze!@g37>zI+!m-T+DS+tpdS-fjHbM-$oK@`I1b_j1ex)}CQaR#!Hk5xD=_?o(^-*gm zaA+_kr3|Cc$Or*oXsCtE!6Bsd@?uw}k%;$}whn6R=mZE8C^jyhyb%ssgo;yCD%B=G zKR=W6fp--E*z;qRMnk#zg*0>aY-&V44~M(5@}aO?F$$W8MpeV*GsqMaOmRsmu)LiT zl9B|3@Q4U%YHmS(A5Wv;4O{?ebhHwF>_H-+M~uSz9s-VJ7F zE5<=FwN6JV!%}I>mM!$l)2AgJ#=x?%35k@IlS@U&;UF}GOo(to0*DUNA!LcPZ^0om z2AZ5wAP+%o$nAgWPbqv8#^2-Z<0GBhB%a+v`9vtK$ILG$HZc8dHG$;J9?;*D{N9*?V^hA7Hq{x}lJ&n_y#CJAw`g$mR^5jW+>Zzy5 zj?l2CXNvN<1%;^ZM^FTqo(m&y)C&p^#WnHJ|G&Z@dHsFK1z=6?prn7!&(D|A5yZj( ze0>|rS1UX`$plL?VRfTfDl9358%5;Yz7q0$uA%WBsDFaLM&lS za4>{7AsqMr$Y;I_AxK1jUUVX2oh>f86ks^rpJm-GDsSa@)nUIfOq@xM`Pv>>=VvHZC44HO;~4FE!DRCSdMExCOjVY4ACWXV*=1|VWl&;*#w67L*3 zJR|Mrv(E|u;sO0%W=I)iB;-~Z)*F@EpZ)w*$loJq3WgEQ7;q$_xKZi!(zjzkDLs4! z$QIR|q`Ki4gGI;2kpX3}kFOuI{pZ+AdUqE9;L=(66<KbH$ z05mn>eahz|#i0&B51))ChnZeOo=Q=E1#dMN0ciEW94|5|k{ZyRb#!(}Ol$QGa4w^ zVv#sUewPj~I$qKoc}tp8eB~@_2O|J_$Un_+<7$kkTXF85mF0EW z8XAK$&0WC#p1jdu1>mAqr^Cp(Sd_=v9h657_w^+|jaJH73^SzAK_-x)C%}<3hw`}h z4)D?$R|3$hM%v0n9&bkH=*Y>HZcPcd_Eo77-vLk&^b^3T|0uE(dlVfd`pXq?^LL>DSQIW;v^ zeieewl8?aTnec)E1)z!JHw7hb4Sr?eKt9*$^`g8Ijf)mQgjy_80w;m>`M?54UCta| z=tAW!Xqx1QlWW(mSa&l%s4D z>VP=Z|M3`NgoK3hfdv2mW8A8PxOxTjxwk-2QQE@nnK}rMw;R~x1u5YAvYj@h5Q0iGl2Vx7fgaM!h$sTKsW$lAvu01 zdVCNh=lFd??&0+{gcOK5TRD1kpc(b z&$(BXcZV>c5#(ZDIJ7|N&v6>-JTs`jSC#jK{H9O&%m0HH#^6upz3lc*%U^=rSIhhZ y<*z{QyS1WE`Kyrob}fOZhCEmg)`N9FtbYR;7~4izPoD1shPL_~-mPJ;Md5rhPt#G;7O#Yqv0n?k_R(W$%GP7bxZqf;)y zdJSE({2Ox-MdI+zhxhlK_jv$ra)c0%|MAXEE*}bo>h=1k;{gVPfpNK9 z==b}iQYjLN1VRY>em{{&avXq_{@dwvvH^Cx9lEYF9*-%P z%hw*TArwXVcDY=yjy!?YY6XB{7_8T8X0sWZrjbl0sZ=UVCKGzS-jgFsu+?hm$K%mX zf4kkXTrL?7hvf5lGMNmc(dds`bC1nA&%*d0lW_?dDj6XgHe#)?ncccrB(vE>3}YvR zkPs1nu&iRzxXijp*qUmqYpc4grWaamjA~1*ZBM$qqbb8{^_ zJKMHy-Ac6408kz=cfr5`X;813+Pe?jH34!i)aNlP7Wb zd(ppm@uKb8waYRyGyk(~+qOJShKZU3N{0_0-X!~4_66G`zXxE;mMv+QE?u(v`g-F6 zga;2EAbVenKDkfyNd=;R`0!yTkj|VrLu+*6XvT~gHgV!aMrCFM2BVTU1)-~Qzwdzq z2ki0V$1TyP2;R7H!_J>SZzoQiz)@Nss?hfB+lRxnLl=G0X8QE$P9V`1hYT6Qe!xwI z+8zObi3xx8TL3n1-kgmSUi4{yM4#87IXRx5o^A;V38+CTKkv~7VTJ=}+_-TzbLLFu z0{2-i*fMzVU=}5S&;Sek4uIv$mk%ehPo6w+MUU&*vu9RbUfvS@jEoEyb)uh|no8sW zhKZ0GKnJiXQ>M7VNWVw7;Cs%dO`C>d1OOX0Y}iPD0|3qcErqV3p~1LbzIo zA1#qh5zL@F{7d6L;H-itm!5Pgao6sOW7dWbyA56962VPRn|`Y@+80I)_2 z6vq~I6Bk!L(cMhYCvOjQAnpBa{s#&vU%>cguAR;1yKa9%nMZfj9OY~`Xp5&z-@E(p< z=y~Jy>(`Ba0TgE^K=Gsh3s`CdQO9{#P%+vnnnANhu&)7Nwf!X#BKlt2L;ttVee&Il zK2at5bO64ud>*1`XK4%E%o>~`343PGo=v{H!U;ftpmvD9;E|3203|*JKvntu;NW0# zwng;N0&m^AMbB<`+(q)T1zNp&^_JGZrJJMw=C?f2L%!4RVHa$|>DC4lcI?k--mYu=d+O`6*a~xpm>NJm&?tOi z=gyrl3;+O^^uQboxTmP@6W-+jsGy}&v1xO(Eh5Io2S%Xipf7Z%@X_~aedIFC*u8uA z^B?+MQT{X8QL*8y9zz&*6yZYtFPsJd&v?%Kp!YMn8~`mXEA>e9p(T0GvV#<$Md2`i z7)GAL4yw5WXwIBDA9rxCu+kf?`M*2^1a%S^P~eLcpn8X*@wwFg$V;e-xFHQ_Qxqtp zupwxu6RP(AcmuFMLMrq7Z2^E$bON6MppkR|r#coaSl}4IMf9O1eV?4iaZ&;YbZ>w? zUx%l+O`A4-7#bQ10B8Zv0097Cz&Abt;DZl7aA$fDF6ed50?1&fiqd1VLj{Kkt{_s( zmMvS>;Ts-ke!$~*A3l8O86cn>0pM(>1JJ8iuPJiy|H@3Qs_I!)jU77{5IEIA`=S<5 z?P*hv4Rj1e(j;9w)Uz>-!aoB@C@(qe8352#0N`k+0-&p()=t$rtW=}1^9w!yp|umO z%PlQ=WLF0m{rmT4cgKwlrwYr;%BcLbzMMB)t8Li&@`yPcYXM2Vzf9t%B0N0Ye$2fE_6E>iUB@#3pw7U6 z<(&$^ph1JurcRy82@M=$D1qLb)+*JZrQdp=>)EsCC%n&!il_$!1US>{jXiqwC=&p; zz0Yd7+2P`cDP_FUu5cb0;s0dSrc>lpyhafp63x8L4Y7ogS67qu%SNdbUW z6e+=;{?)*N0~7l6=`%>q2Pon<nX6sS>AAoSp#y?Un-g)~7)tDIiv> z=U0mvjHr$Ydd`l%R&3a+&-9hO--*um6Sd1IayXCRA`K+HF#w>$0Kmd78;6zO{ZtMKXIi4WXo-o`ZBL8gR5s@l%Q37HUV>OP$2$m+U{rPk! zsLCIxu23jexH~nN{tX-G24__t0y}UkZH7*Tl}jr~J?_-a(s)`NTVxGV=@uIo&$%Ji z=xl-zRZRkF@LLB!QC;}aF9W~%Rbb#@QU25RC{DyBg34h40ATtz%pgV51kCqZppL^1 zLg2`eMA5v8%`kdDYIn4yq#kHlpaKBfqoW$7|FkW{I9N$n(2$kT6}QKk&ub}ozt+u( zCCmR{pRZZl5EQ)TilpzHwl^lJ0Rp1ZbDpk&PEgVOP9yN&RIqXxTx69v%aX*~5aFmm zvFJT9TBe+1ngj&*`pug+-A?e!9brygiYaw^{Arf}pa_1A7C;!u33to-GaY4JCOXcW zzo2o#n(YIiWL+VS@OPA(fyeFETb-yq}wX#{iNg+ixF#7 z`M>hT5gF9shq^DfRMfsG5Sl4=p5~Y3xAz@^_H)Knsx}e#oG0?!6~_5^ElB@<;-nqV z%eSvGvMf3#)-toQ-JN2-7pFleE+NS>kK|b1$pQ=0T(N4^svw^pk@+v}=CYea6vpvX zv8_hag^4~xAEQ2j+pgQ_&ZI20jV(n8y)ZM(g$@iez`#J|(x#W_-WO0eK7uiBjft1! z@Bcdt6``dooBVR%43o_7JKwp?Opn|ubDN9L4EV+JYa)?Yx@JB9P8KyXjmdoO#px`g zd;jzt{gX3vj!y8pe~d~{gJ#;u<#nX9Ie7dYb$Sv2b-Wffv6b4EXA9f^B>?=J8R5n> zc=xx+!S5r3@R`pLmah68r>sSe_`l^H0ZVLdr4Up@w7Y$@DA#BmUQYCvkVNgS)brd1 zp1)Yf%F4O! z;^*305}Ixx2qXBl23tFXcR}rH{2I!B73E4570L&-rW!ZWud>X9CseOX(to1cyS7JHV#Yby!6hg6TjvZRB+mJ9`>3xm~2vS!^%}{QseE z;t;!tQ(__zBPk*WZ;^R&huk9z5=oJ5s{Yndh+Ig?dZUFZ8KiKNEgGk>q$nvdMO`nz zLD?s4<&rldEyBW3N`wSwfH{f&4>t6I4b8BSH%#nm2JaX0NM~}`Or^2$a$Bua#36PO zr}@}1G2(q8KO0BuZhX>x@=$hd_BblnWw2>Ps7I8JOFwKV>2g3>_DQcAvJ6-kl0iQ` z@O-9u0F%PQ0GLc$$1THT8XLC5G?r4NEOl(3Qif%#pcE`el_IQB)NqDDveoakf{8rK z9Zg4OXAh}NmR%qvK~S46#UXZCh~30-b|eUr4k{{hf0(pm6o7#ch@wS`^tQSGJ;MV( zScto51|(Yy^3R{2{qO@NVRPbhkXphDT*m0Aae3~{k+2z#=TYMX^|^C{>dvw?n;tpt zC)b!>NQ`6t)l+FSxo! zL$MUMd^JSH(Ch(+-diz0{_lkgZZphpXb1{O6+ g7-UEgBl@=kA8=q9pB?cY#Q*>R07*qoM6N<$f?PA(6#xJL diff --git a/public/img/emoji/milky_way.png b/public/img/emoji/milky_way.png deleted file mode 100644 index 901090a126598a9801c2c41296ae56416cd4ec47..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5878 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 M07*qoM6N<$f-#6JP5=M^ diff --git a/public/img/emoji/minibus.png b/public/img/emoji/minibus.png deleted file mode 100644 index c52cef23407809763b67a356783b9645bf949456..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3113 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 Dco@5U diff --git a/public/img/emoji/minidisc.png b/public/img/emoji/minidisc.png deleted file mode 100644 index e19cc5d01507966a1112cdf0a4456499cc7141cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5594 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 diff --git a/public/img/emoji/money_with_wings.png b/public/img/emoji/money_with_wings.png deleted file mode 100644 index 581a82449025c14e50ff50515f73d090e2340c7d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7584 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%0Dwx%hp}=Iqc{T7#YXImv2eg|C{Ip! zZo(gSN11nqhMJN5w9xu(3cNhcnQCr;gQG6o+zc5J!o(o6wJjCx9qD9!b!e!s6iSDZ zK=rpOGcQ+!?v}L(mBx%O8SZWd*s@uX)}n?m zrmId)`V3JDB+Wn!p`ER)dN|l`f}5+M7<>+}1zuVfDbi(5iO4my1cR^9$VTarI5jk+ zYNI|y2O0j#u-&?XNtdq}%E&?BiOV-vgz^MIzNa9p;k)m?d;S*#@buFYW<*4qF`e8< zlU;@)f?#I0mT9LWDk@`OOW(G#6qT72_eJ)XpBsYi6WJoxcXb~iG3JPg4{LQni0X_E z#hd~SqnjWZlTgh#(QV)ut6YE>8|TcL-i7J%R(N_F!_`3<>As(%GHxBJk~C16pot`} z6>u_M`n|We_tmVdEYXJN@I~-|e1&K9vIbq{3fFxm{o+h;%9KfqQqs25cfW>(r7{j4 z@}xF-kR%GBM~|BLy9DTNRVJXT;Vqs1-CB_y z78HgG5)28jWoUI^%3KIdjb+&Gq=L2U=40jj*O0k$4)(gwemHOT+cs3>zodKPsD6mU z7crD22!anNBX^koZd--ZX~)N^1wLCaBmO{+E89q)um-o|&6@D!RYYX)^Rt$SkK|;C z^2#_4CL|D&NQ!C9_F`F%ehovtb;3n_d`zkQ8j&RJaMly1e}XQPlHx_4*aCllYt{{A zbhUM~I0Xa;Zox-$-eD(K2^MO9zGi1IuY}4^m(3%d z4%VqHJVwRerA(9GkCm0xYw_{%f(SW-lyZX~NQmg=VEQcNH zgFC&qV7=->l$7p-jg2Zz)>bHC$sWF$sfHjix`5yVa)CJEj?Q#uiRtJ)lg}G06CK^| z?kpxtk#Kg=XJWMt7y8QC^V5XB(MlATxI$I+Ggz?k;pVyd7Qg!?0HcaE`(*?`TGkLd z3DUL-_Y}k=nv-csQTfV_e0fXm219OcZcjW;In2oL^vt+K>qllr$}rGZU~g?FOpFw1 z5#CZUL;%!8WH^u$h{ED9z83(d(IQpOJg^JZ1d2HWqe!fX9v<%ctQ`W-)l)!aRhSZg z!85R~MZL^B8d{R=;Yp zgG$GVBq)8quV|jIWzKVrLE7U z86+3B#M%z|V3>*tKH%v~-0%}ELx4d}5av$+#Pg1h4)rm0gr>j$x_<$0kj)1!Cz>+N zwWZ%G)9>Tq=W8XhJ{y7%#6*eYC`#fao;Z^nQAm*xSr_Cn>^ZVexD4(dTI7vD7*qLW zOFm+c&j*W_{4Mq0xa4oR!+4yld%UIt7!ii0JtZnFIDv~>*Jv365P~3Ffgs4&bVA15 z68mQL?EI8;2P|Jcn{#+4#%}{AFj@ix8|zJ?bY{K4PR(}V=hn;@*uEw=B(ZN7CuVdT zHY`PCj0wZ1FE(vniY1F@AvezrO3L%A{?iTe4I4Jh;Skm{Dk@6i1J)HM1qdZ2B{#UQ zAYa=NrqA#wEa2O3zbze?p5RuaRVSoz(>JTUwHAB$ z+iCtWR5TjSZu-#BSjsS}j2ya8UI7(e`w4q_A0z*eJ2q-B?f9iNy#xT4yTw8VPgj6I zZn(+_A)d2v5>~*|7eFu+o*EATM9&}~*yxV!HZ^FIw2Ecvazf%Zl3yH0QM*x96V2wN zFYFvP@iQw(bgOBu=BVYgCL-EMn${42&q#hg(0mN#WgBd1(vn7AUY=OZq3ILcoU3#R z0SFT%;R+-~L5$>w?s032lckrWrc3GaS1@C8#B`Z_uok|4M)ZA6=;T&D%MT-{sb3sFFu2FI6^sjLz>0xtovj9Nu z7V>>1{u4;e*Z~-wE*E&SJ-vWCIh(OR-Gw8pb!>*HlJU1PeYT?u1fcq;FUx3E%%4Al zd%Pcz6ZB{y!T5B+bU}EJE7PV;dxMJ^!(7*4M(G3=O1GF7Na0Q_Z_2HJ#gEn)@9&K-MG?C{4wzHB)j zGszcTc;TgwKmK?l*Z8(FGTh@juUO)w!g3IVuqu?+cs4&yCiokfJVAMq@{~*_Ql6$f zqprTFAuisMgf<)gfx57;QpD=j^LXNa!NNr|Nq&nNGObZ_RO%EhX`eW8;vCtGellf} zOrDXhCzFZt?~#4y6LJ}OKO<%H=FMu{U6kBFSO60uIS687ZU6rL;QG!R|1kigl$I+y ziSiufdCCivmngrZys_O$?dmQ+eJofoQw%28ter<C`@}lhezokr}JSUUMqvToH@1N&>(giMOiETA= zwo=(E5W9_lD}q4=LArDe*@rOc-+ z{@w4M-xU^RI%Ht<&ETw$-mZD}*{41D{tC)c$`_PHlm(PeDRU^ZrEAE*m@yiNQI;af zG`Z5U&%7rC@x#@tSD)d!9y`?11gk(Sa56lKfBoT7XM^l|uS&YeKzLdndjF02iw{04 zL+@qTMW)G-mrhW26SHI|tV~%c0V7lL6UxW`=H%ZTaq3fL-|>5y#l0kx7iIFY>@fZy zQ|fK$K&DThuFvd{J_@Cj=uR(zWu!1zkdNC%Hr!7pkJ70umy~33nJG17sjhl3nX5x&Qy~ z{pab?he8<{A*M{3^6ES9yz{=K?C8Jw|NkEUC-UEU1aS&bQ{mMB0000ffCRNF_ap#En6!wm>AQM zI3*pGGU;ea96AjKV^k6xkmRAhR&3@s-*?};<2h$fYv{e#uIl`os&K(qX5aeOci&TW z&N|=k`c3=nExh;qJRg#0|M*t}gb?y|uf6P|H(qwfT#Ti^8Q-+1dAu7B%|*Pj2TH(eM3G=Q6a z<@x8_^t$tJx%myd?tRzIFIzeL)GZHObp9#tzwrE1UwQF`&%N}rT^GFUMOR*W>qQq` z_|;RkZ(n%Z4KMumhM4cYf7*8O#{YEoxRr71?DJmunJrsRx~i2(vOH%rTqhl^`#c}) z_ij{Z(i4)Xj5Rq$5i>q9N4p)<>b8jDE^&97c5fS6k5QP2<%RF?_`~<#{n-BUwozuz zlE~+H)DCNk`|tSEuYZhx!J+vV9&di_nYZil*|*$w%T<2!Y_B`k9)eM-|${?JljJL}`b>k)#WVlQ+L)X4buA zWvygkaZq6uwE6lkXX(SAxbGGF4gp=sh@uw94n2g)_99pVy9#a{DFz5T1X8TcutkosIa(IP z6||~2stqYg{zz-)^>^bSB26;B$P%wycn+cvE1C5?dMs1wtycaI_*zq*4SP=SGay7fEx) z>R`lApEzb8e{%WaKl;>z`+g?7z=!|%A3yfco&)dLyMKkEgd+#{Q;hZ_>cNM9rrY3u z|MZ>@{`iq&Up%%nVz`#Ga9}UOu41wZ`Fe#RWuB6ooFYU(iF7%*tl|_^r->VYTV=4a z%<@XXp~EXY{MgY?+;Qg*?>;W(fYsf5UbFYWYL=IVBL|kqMk}~-h{;EkHL?sdDk!p& zvMg~X#g{39#t3JJl-UZ)$3`qJj@Wl#HGSyGAH3zb8H7IZpf3*|9(-_pkTXaN4j-xw z$SATJIYnMjxkH{C%B<$B;t|*p)}$CSWHcDCa3p83GGXt*mD|7Z4R4OCQFt^M-MO-! z;+^5(!2!ed5w>g$$kT$nsF0b8OR_W%z?T#uO4eCjO*yidh5XNk*`FVG*8-oud*QLw zwQQltbF8tI33UqOc0EliWHyM;3Kw3tMNXRK*gPZ8O7*A0nbAlo&{~0m#U;bh)pU99zTpLI@S)kjF5boINAuWDLhr$I7r^yj!w5%-OqGaBS7$AwWoowPd0bGc^%0*^5~>ngeU{ ztEDO5{oNlf{=;!$z|OPg-Z|cHe_(Db=9<$K+ou$3nP7e3**Y({_*_k1SROwDKYrYD z=x9Nwub7xnblZ|%qG&~+BabaCyPq)J|FB_cE&EzJ$lrDUo}=IYnXCb4pEkea@(WIQ zaNGRY2TtD919%~bXO)w|m4I=jP;En`=0njd@Mik(~T+j-{Pl|NGkoPXBbn>Ww3AKkX4 zbHUtnn^&G6an|Vy(~-!w#|z8!yrREVLrWsM5)x>41=~-FX|)8#Ih+S1NG;JyqGCm> zCpl|J%!!*ioVvZo_POpATc$hTy7auw_v}2aKl^MN5OV$b=Wn_9giZZBwr%b*H`V5Z z8O@H96lEN3UpgCHl^5la*J3AgciiHB5EmAtkH?a%9#22 zi0NrnrBK55&D9!nZFX$!Uo$s9x$ok$W-fYG47hN|)Odfo`}nray{k6OcA1%o8EYv{ zoL58>0xt!qioK{rYR2XgR9i!@T_HhtHL9c06?)S#t-fqJL!!`85FbnsTGQ!jHcds0 z)x0@jy06$W(_;IkUNS$^d*I@8Hl6Z}w?Wa1etmwnGch;SVxk|>iUmqarl-Jqf$<)^ zLkh>_rVeo@Mnn#@4$xgNLf}e>q@de3I4_72jgBQkOS}bVJqVbd@s!?^#ENog7!?r5 z5-&VyVLl67`iw@vcrUqbW-?~7uj#dA1;u1fGCr=zn?VQX1nseivDpqvYlMh_1VkI% zN>EXRiX(I!(;08m?nT6{m?)_bYjjH^;}{_$#>XT2eZ|;V#LR3$FQGDChsc|sZtc3_ zlG*1xV+LHhbMp%($KtL1j;7yHbXrXd8|y3LNK;sa_X>ofJK04iF-k|E5)hq$C{BXd z>8TboQ!(AK7Oh^Vek~ZHbb?Y9D~(hUtxiP0t7x?(lhZAF9Ywn(L-b9J$3!arYqU%DMzpl2-;s=WVK_gjxn}pHT7*LA7`lCEMId@;y~ca~a1kNkKfH7j)savNY;GB5 z4r@RNAE2bA(-SyrQOYwu-Nu$F(n7l>h$D5+!KHWtsvt=k6Dp2~ zB8Zegc@U8#ZY7M(bUC`<_`TnHim!irm6dgi6oN>}FaitUyFW;|e|L&=p7Flo>dSiE z@++H|o=X@k7nH&xgrwCGcmXXTNjjRgvvgXzPRFaCsTxq{;S1{Bu1$y|L97KyEQu=C zQV}T~LcUcOxw#g*D`79c{t>=(?@AD!M3R0-Fh8sC&f~miW=a#)Io*{Y;B)t^@~XEy z#^X;E^rkyRItp_^l4#KbMbh*hr2%VTt52#Q|Yz@)_OM2 zYL2ZK-tjy8!PL8*pkzcGMQGg^99L*n=(Tj{1|n(y(uN!G(kr$-r`OlB-FCeb0xbnm z)J$(eXtY)|UofIS+2wP0udw%U!B|hRwr+XV)wBH8@1M=~Gbd0|V+xNg9o=4s%U-sf zkG}5=(ve|x-O%Ysc0WAeufMrQ)NhA&C?ZW%LF$S_y-~E=n(=;I*M-+?xB(*aFRuH4 z*!||Bg{X!Ws0v!CidAT5c+C%gG742%2r$O+%73>FWE+N(Ba4QtaCiZEsbLUt=EYn2 z#TU)9Z9bvjl8jQr*S@_BanyWvXsIf!SFKSa%pqg-JTMWz;1!q8_BYgkB$8Kkn$Sl` zfvf>Y1j0*%s936CM4n3)j+tN%Kom>9a_?bS%Awn0ax6kh5P+5%5ReOg=k`nZtG{?5 ze|6`T{Ow;{$?JdVL>SaYDTG%@DG^9iRGVF~l65MC`9LP^mu+YlXvgZpBoZX55iSM6 z2rmHuMELVal0=3<#X3(@J2YRo_YmKEXo<@&o}n9y(881iYaR3wuz>X-1?`E5)2G@{ zmXzxQKm;fuQ4OPHZHOb$f_7+!{37r_HzWeCIA>xq)^eLx0tA2u8phI`c@Mz=Akmz5 za);GH3HX4qp619($)9~`KY#kg{pbiBaP2J*@|NrGn)klzEbhJYGCujf zbNJO)Y~^{UbVA-{xxpCA@><5~dO==VgtzoMlG&Mv&wTj_KKS7uLL%|5S<9Ce=WJNd znCAV~HxU^!!pZF$k^;_%mKPpd3p5R=*;;%s!Uoa71ZTh-qKM{}*HUA|i?7tzraDZ%>4@Z-nUg8?oGx3%cNWzD4} zuh>-Z-eZO6ZHNKZyILbA+~2bm*NdA9E}U1W#Rmv$ICOBx%WvAv)o=U`SN-zebNd}X zCQ%k^4X!YxS%LMnIOC@>a|R>Ud4H{ zW-#Ac0Uo;{24ID8)>Af7fGJEPyxIK<;S1IXVLjfH7~s(ZSyj~5`O@DUqD)H^4x5`M zpFKp8pq+pj=8TSwKsmO|B$UPhAcZ8Bo-z+Y!;Uv~r}+*={d!rU@Yv8P#Oj6^;DyMH zg{%~0Ib`+XAp*+aeiIdqF?n9l>xin@wUJUXKb3H3x!~iUdy;nB6U8^^S$y`Qpha6qCRQi_0pEw7366~R&h~)u~0g&Qn(E|>>9kdN z{jIo}@_HjmFiwE4 z;ZNU?K}bliL1GbP4x&O3DbUiOq^uy2!Xx>ou{e%A?|H)v0N>a>B8f$~CMb;K;e9#n zNCNQCqbX9rcrPL^9YR( z0+KkoJ<<~I1;z@p64JavD#){vqA0@dm>Nw)u(FmTFnsV$GyL{-Gn{*Jg7+}Y31JHj zO4CG?b#U^gn76-nhL7L6iLKLAk(83>_2=i5weVreXpoYohRoFB!8q_%AVm#5^|VL8 z`Olqu$>ezQ0x25SX;5=v8vJ`=HHw<&E6v=`;HnO zKVbOtza0Q@-AnqFaLu+^RfT;-D-o;>3)V`9#p7}p3`oh2l5La?(+4fMrlf@}d!6*d~Ik69@!K zsmperF}>>_e{$?QPn!WhdU)}{ooCM9*Y8GGCgHBHLWOVx0U!hf-2&?k)_PhM!Za6a ztaNBCDN8|?35G*~ah|umx`Pliyst^kB0W`-~Y+N7oPQ}#CDxAd6JCuRY@eTXvgY;c1u2|ohThE zftH{nfePoMDWa-oK!Edsz&FAjHG7Ql6qZonveJ>}j$v;1SLyRNrFEbA&W{$q`7}Hx zw=odaapiflrz&qxL5g_#e)mU%g$;O4@aGSbpYP*e4fubvbGdl+pj<@&0000 diff --git a/public/img/emoji/monkey.png b/public/img/emoji/monkey.png deleted file mode 100644 index 64070359776727df50caf08cb59df7845a46c53a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4973 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 diff --git a/public/img/emoji/monkey_face.png b/public/img/emoji/monkey_face.png deleted file mode 100644 index 6964cf4d51ac3f2a67f2162e7a52807993c19b7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5348 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 FV1i;>F=+q* diff --git a/public/img/emoji/mortar_board.png b/public/img/emoji/mortar_board.png deleted file mode 100644 index 84513f6bac440096818ae7922e7f041452007e07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4164 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 FV1igfSDgR= diff --git a/public/img/emoji/mountain_cableway.png b/public/img/emoji/mountain_cableway.png deleted file mode 100644 index 5688bb239a7411950c9cf0a06c6f7efe3374f2dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4405 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 diff --git a/public/img/emoji/mountain_railway.png b/public/img/emoji/mountain_railway.png deleted file mode 100644 index 1f3d1aab56c9af7ffe317c068161571dd28c1458..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7448 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 W-+&#wEpAT$0000GgYGPHz<3 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 diff --git a/public/img/emoji/mouse2.png b/public/img/emoji/mouse2.png deleted file mode 100644 index 2d777e5e1ac5c9cdf8cb01f53a26112e19d2315a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4087 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 diff --git a/public/img/emoji/movie_camera.png b/public/img/emoji/movie_camera.png deleted file mode 100644 index 9c1438409255b3f5211e6c14bf09af71e59743b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4081 zcmV6Nb1H0I6>Q+SuE67j_ZW1r*MqM`gF}x5gQ_ISF zVHpUU7gI)VYO`7>PD8|xWK4=CuTxv7M$^n#ZMx;dyrCw0&dV-#F~%6PyV#qX!y)JV z&Y$1&Ja0}mo5lb6m;0|!Bmt5DNq{6k5+DhX1V{oT0g?boKtn@=y0f#hqqnzrbYNh> zH#9V~F*rDQzpt;)+1=fJp{c2<;-7FE8yhRxea2xt#$|l=PFGh~2YdHF6<{zJN?Kc6 zuUoBkk90cSXgr?iSYKbSTUuJG-GBg|B72xRrQ|9WcpDilfCP9 zyYnX}Cq<6m9}u}KD=V0tn}y5eg3tGZLZi|2(0RX(^1LtsMMXuYt52PpNu|>#XWVY= z?ndzB$sX1pY=Ekc+}vEmVlhy)5Zc+n(`Xd)^YaM*9F`lZtG}YqAO9Jby2YW_8@>)b ze$36y&58Fyp%CK`?^lsa-9REX5ZQ~+yStd4o`H}~ml4;^avi&Xf`WpIlUnVqqfAD| z^8pA#8Ub2WrKK1i9>#Z68K={UiHQk}jg7%nQ-grtk2nc=w7H2$B!Y^H%Fh)FMe`rI zY+qhpetnNbZqd0|EDoN!=vBJ^&GwUp4HYcg~*026adB@KEF{I8LEdDo0q(V-Y}eSx*AqU;zaog&>8jHX8AA zSsCaHjWMd!0?n&;VF5nxB5qODu3r5N@#G=iI&%i$a2UyClE!2oa=D^JE|-4@0JNT` zy(aqXDH4gK*d?dy>ybE2pufLgnG)|p0bnP0b6JfSku(h>?R4OHk&(2ms5b%s7kPK=?6`Mnnv4cGd4yvxXwibnjh2lOG3SwsZdjP++XMG`Z zU1j{6J9lSxHrdV2ZnH@mw8U^KtJz zIp;gy_dDOebEabZZryKJug=*jb}UVM1oR>7)-WRE=aMY7-fGVl5JPtF*#kC(F}}R@ z)>}3|H)msGqxKQ-WgK`LK>iC#)54~v_F(77Y++%6AaH%j`K~R#N%L=xjg1{ilGHK? z+W`n%oF+>}+pX)?+|{&W$B!9Ol-udEXV1C-7THxBt`8gLGgvy;sqAQ2wOZZZXfz(E z#?=pIy~H}JH!Lf1+l6s&0ML1Y1wIE39I*TEf50XuCjj78`_=5MUBQ}|Z*d&kWOE$f zS1`Y0;6;#*P+ov|eY-4xs2&2ix8!*SUbxV>igQ&BhG)W0-6jiHVu)->-1JzlD_0rVZ?M1l5vc*ucF+5@yFTP;s zkWw#Se%U5=PeIYxS>a-9k-OvM>A@|tETa)jLf*sM>H(kd3E5H5rHR)=Cs(#(=x z&yW$UUaLXTHvD(aYK^+BVCS$)1kTtxt6fCw)O}OgBu$K97J2c}qR1<>sw~gIw`M7< zq1)*iTMdBBEzH^VR?7h~e{I293-eshDcixgBuOZb11<$$s}vFBo!DLgs@14~qFj_w z9G?KbATXtmL`+3iSZ-?|VH^arLICDwpbEwT$dV7gtqLBr2zFbwf??$!Tft5@6=QP8 z7jp~R4%Y@{l!Nkc4Xm4UtdnS40f_Q^0YVp4Qk*G3RE?a~ng- z|4Mnc(*k6+KL^pI8T_131sO8O@Be@uJbc(jN5`D|H5wy!;I@Ny@W8Zl5&3zK!7ZxL z3h2wT=)VG50Ao!jjh?7u(8pdF3`obA*Dn~R1L(W@5 zyf_NJm$nmtkSN>w;L`MSOYe0kjNbXL)~Rt;ur?bG1>BzX-CKn1Np8^97i1xxrT zrtAS23_K(%9*$GV%7Q7KXg0rl@4feaALVkD1GtOKB5ZHI`DS+h{Q0k-uKxz+!~`qk zne!dQHRCF*q8ib~-ho9tgmKSu%pd^hg5!Hw@M94692lK}P_Jzggxja4rXIzW)P1<* zV3kK@DV&t2@KS=&yFk}F!)VySf(o)<)pE>5}1kjB9Xi z7xF$~X5Yd4s~kHh0J@2J4gPls3(}O9LBB-`V|w}>&hIN5F*|kY)E6&ay!dFd*_5y( z3aEFH0;wZ5jp0-8Sd+wWfho76-}9)PrxdGhOc&yF8IuA)kF zMXqW*a^%P_VKI;RK!gC4e(HoFmSRLx)b{FR9LJy;R=U1b2u3xFzu3WT627y_iwjldG_U3Ub*}w1i;^8OhngEka!eWYC@{2AcpcI0s$LvOjXHc3~&S^hk_-_W;F4L4+$m^^fa&On}Yia3b1u8Aj|{;T8au# zxfuJn^VCB%1c2zD1vFVMpuSFr$Iw+qWsT8-V4PAozDqD6FM<1#OjkjdPq{^yEu@fw zA!7mEl9eKwZ$Si^rZ3ql{SHH=^32ZxD_{rif{ieEB3F z@)WU;q<5LTiYKitP*f=C|G8--j@wKc)H&KWF`7OYW(0tY7z21PVGS-N++yLpLC+d# zdH5muS%RbhDZcV|jq}r{tW#I_a_ddGK$uJAM@l_>M|p0;=+{n2FbUuZHV6nDtH4H{ zergjaax;N0Qc#r~;w2Xt2mmReJ}L_3SIJB}#jHTn;&_pwzw)<~;B#Og6hx)CK=C(5 z3X^0dY61%~tAOecfSAdoAcp#&>0?q#^|kMF>sk^?-#5{; z!yymxYEttYDu-LvQmKnQ}~^Kv&;mGww#)u2++JRa9TcLo6XH$Phfzz?qBj;dy`aWhK8{fP};r`z9jO6;c7}nV5Ql)<~r=Ef16tzKa6I1)?m< z0{&8f{5w)Gco%g8r4#W9Eg?|8|Bs_`iO@PWu$1sA3j0Dnp$mkjn+H^EpqNOl7$63` jHz~6BbbB9w_W}4nO2IT8?Vh!X00000NkvXXu0mjfb8M(z diff --git a/public/img/emoji/moyai.png b/public/img/emoji/moyai.png deleted file mode 100644 index 61a1a9c21a4246898e00359ff05123f2ad9f0ebe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2166 zcmV-+2#NQJP)z0SKe=~TiF=9{z~X1ePERt42?+s9jG=?U3LPqR1apdF1?*@{e13!}rkS8bL_mO{t6hV^!zUmjcJI7> z1*f3;(c1PhhIKkvx@4pnYHXpQ{ik?j7<^ZlW~xvDCRq5$OPmMo*a*2k#WcB*d2%-J zR24>xTA@BrYF^xPg|ulr0+{ruX z(W1=;9a1iHhF_CQQV8T&u!Rb+?cUdWY~XVfCF;DF!=$PNpBhcJ6O-T(k&%(pUunTs zyz$lE3tbl34s=;%Kf9Tr$xaUN4vw;yAv_?}(?YM{F0d=Z56?Y#6IKG+lsUo*F(qo0 zXb_;>i(b!8!2*mqeq@m3RpTm|L_#!l*w6V4UZBr z86If&o-02K*L+~LFae88(~mUEBSeI(ipHl*EUHlM2R=EF$&wWXXcg3k`{pMen;V&C zjF>f9kEelyeBXD*n=AhrNI-_gTqz_1ho8h%I8_-Z@`9%DwESU*v}qv0z#|;4FQ=u8D3$W zEvzY7-L;kV0R*%^+5K3!9Qlx{tP+uqQ3Vo8qIQQe*>0pRc$^kH8A5O0Km`89-LQF( zQ^6^AsQ8#<8?%fusu2W%5)e8Oxgzu|Pw}$SRKk1qPY10X$cSD(%USb4^GN+WGviyC zrJ-gF@kwR8*P2oD55rb&<}a)$YMU)<3vfc)z4hD-;|x^o8e^(Qb39 zY~ujaDmh<-s6o+u(2OL<3Sd_X5%Aj6+*+BaFv@OrF-lqO2atpFKClj=2UHuyq+sbq^a2qFBV1!sCGGLWj?xLW^BSDi;@K*{EV4~{$P7X0jSAkA2x|Yj|ukK5Lj0QeEF7OKHX;Wbv`xqsb zF=rU1A=9Ur4I*Mj^cYlBTz&>C%*6xmfT%|^x8sltd z7gN;a1PHnVY2|M3F|H5Fg-VM1Uv*3_}VBFz6At5CrFQNwgTt!DlqVRhnR2o#0;3GLA2Lt#{07axAd!_r= z&fZPh_;4)>5`ZKmjyA<7laLOZbVx{|0t7tQJ@8QLD-q}nR3>zerzqfz$O*{xH*H$1 zu}+876w(F1``Up+-klj;>Z*j8fD8y-6d>1!>5jqOPJ@ zEY!+d$}_=msqV)?WIWG!Cd;ig)@E5R*-Y26R&uHL_s)yyW!6|_oeeho=#scIy+(u+ zVXb|A1e^%T@CbyEh*&7O6%!HZoqWk{J*6io^|+^KQ=BOvase%z0IshC1A^lG&jDHj sR?F3*06C6I;JW+^{{vrM|Gx|P2g@mU0MU|}JOBUy07*qoM6N<$f@v_}Q2+n{ diff --git a/public/img/emoji/muscle.png b/public/img/emoji/muscle.png deleted file mode 100644 index 19f92efb66e8220e0d461e670898203084ef0c89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4672 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 JPDHLkV1mN(J6He! diff --git a/public/img/emoji/musical_keyboard.png b/public/img/emoji/musical_keyboard.png deleted file mode 100644 index 93647a4a32d9f967020c63e11c80380311c825e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1944 zcmV;J2WR++P)TnkR-5= z?5k?>4m4bVgroqHLi8kv7fZ0Oir~as1tE%3DA9|sAoQgUz*dy@44@Yg2D-Ep13*N8 zw2+0i-`+GU@jM~mI!5}DtxoVf zMFY`QY9rd%XeStG!4g)Q2N9Qu4Eb&6cob4r1`rs7UKMu2Npgc+TUiDWn(TvRIT#)u zMH1H5m}?GzB*NHxlSsn)`U?=XV1nNcFg893VcCi4U$3tNpo|g#aOTVmrlzKhC%L@5 zjGH$XaQN_tXtlI4maqYmc=F^=eEG$BB;m@Hd7La9^WVtHt($FaSey%{`*oY@prtAxUbR{Ay&=!Gi}`44En6 z`vDla0^oU7jE|2S)9K~QmjD5Q?{_4K)xT}C*q9ifKnj@0vSp8v#^wJz3UAPl>j;?}3xImf zwwd@+3ic^~09cU_(P zU_G2}X&_SE_#TjtOOj%IwuLCN&B&KBI@Dr4fSq@?&H{Rm5Fbb^0+GHa-3emZyqA;9 z%O<|o%VH|IVm-jN9Ue;!#^@R)kg`U-R;R$+Y$u2ejvB0FcfA zb2N2|vVJl+z{>KRA|Zxc*`w;%tXtcikkyKmISF>_*kMv)1{hpm$*f~D7e%-x-O4s2 zpM7DUsMs7Jl1o5GK7O6E2dE6zD9mLs+Gge#=>fWyQkx)k|HN&}*#iIrH)jvf+BFxt zfhP9=yU-w{#AJjy6UlH-(JIL1rs+oRvjy@VGpTX)~(N; z;#{peX%H$p3JWHh`a@bT${J^Ph6`f`B-%_w#RH&La{$aXkmeWkzc`o7%{z&oxGzj9 zdKYBMfZ|Yt9D$OiyX;XIv}G?R*{GYaJqWzp*#2XXpi%fyw!>V)4nGDN#XE69J_~l2 z-!Fjz?*)_;8pcS^5ZfIDvj-uQ?livkXJ<2@TCH|uP>bhvRu6el>2N(ybNQP0^6B+h zS6p|6xw}{b9L5&<8?rOU@1jfYKg=`Wsw<5PM2- zq7a&!mOU0ilw8EXdugMrevbk;4#f;-TP$T;+GCLT#lOseLx&FG+_`gj_UsuH_&dV; z_wVE6$&d+P`aY;1Qljx zPO)wOeF?Ck?8MtxT3W){vu80sKac(U_ahA#FJ6qKUa#Zo)vI94&CNwkH4CRtpT@Cc z$5M3l=YXBc0CO#;+`B!_?(6Djz|IGtAAo)U`b|&>q1GaeiDkER^)sL!fPMh_0q6&y z=vQMbMaR=3oZ`IVx-y>_ajk5We$4Pv*r=RP#_y&s_Kk^&0U(e?j$=pf)uoik3*Yzo z{z9BE3}ccLN)PKS#9^P9vFA;-sK<7&BfynQ&`uvYu7M4JDV$e_#-s-Y0w+OtMx`h z{{p4{#Yq>yf$@o{@1~~S|IBsm>c&QkHKHeAS<$CQfsfkLrKfkEFFpMlz+Xh;_;Nz#0(+Isp0+BLM8_(O;e>06u`0 ea$X1E9mYRNhJc_dsMl!#0000Y diff --git a/public/img/emoji/musical_note.png b/public/img/emoji/musical_note.png deleted file mode 100644 index 68b261bcba6db5a4f20de1ba33f1d8dd95b3ab33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3188 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¬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 diff --git a/public/img/emoji/neckbeard.png b/public/img/emoji/neckbeard.png deleted file mode 100644 index 6e31d1652837e70f630c3330718a12f0f6693031..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6247 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�eVHv6`OLEOPwj+uzFAe?c=oA8#8!BZmTMUet4DrRVw<7-OAiBcc@ z`(Av45adV_XmGNDHOcCCY<@I9m7@Zf9~=yyeAVV$s3Oj@wLZQX!d1kh3y6GOCiI&& zjvNyH^~gIZ&B_i#%(I>N0IUJ2fZT)tS_zy_kfUG28BY3;1vDelHgs$N^f&?fU)j?? z_`Vlowh;2gh>+e1$W@szr;JqypZk0Z_kN>;VgN`ID_!@eUKZ?_EV>c!+ElhL5P`O^nt&W21Px_&k6947>D8<7z55#|6$p7nsQ`SYaNDEe^$pI-Zl-g1R-fC`~}Xaum#|N7)-!KAp(vxlh9<5J_%Bi0EJ~3&EP(R zJHSGN_c$iUHuhB5uZ_-Ai)jDkh`H~k8MB#t1TGU`gunlLXpu1slop#P6%`;UWgZqx z62Pak-bZ(NFr0?`3GHw%)qR-^1S!7R0vf-a%IewSBx(w4~ zG#AYw$Ksd(bWi7tkqAKRfrDoL2ebBzubeRNp(;V-4Uktr5gv$!;XE*n?hzWAbbmD}axJCV<8r4>Z4d&CKL0XR30G zC@`pJA(Q|_hEQ=D?nD`IPOnozPF|QYUZsL0z^T}&2$}c53A|=-XkmH-TVl-3nH`S7 zu>feU7SmZ0ILBUU$p@-k`UjL+86=@B)OV{bOlnwg8p^%-{Kw_KqLU_P-D`af5Jd77?_rYbs~gm)=g((h=hGTYQw~7n?_H)VJR_J*k5b^Ws`$% znHW5pGjP5-pPlcH!LyA2g~*s(u&}#fihuRp*1vqBP+dKv=rWRkB#0F#QC1C{S^w}MTm%~0U-B3 zd!wg55VY_7+uy0&K25mD-w7aXvJ(U|kjs3FBr{Ia3U`Gj)3!smLF=Fy&_3*!EzE*} zo-;UcNI&_3Z?*4qz5_yJxW4e`>kTer1E4QK6M)Ej zAqtrd4|xEQjet=>((7^H03r|GaZ3>3rjEnj95*<0AlkWYd+!qiANOeBn4kU5so><+ zty{;^yZ5(k+tvrb+Jg5kME$)>dgoP>vOXbbBQro?z>4%t#AM;f!(@!c{m@~kHVpKU zgnO85aBOp6iyC^~A{xN|{6Mt*z29nm>i)gq-k!#h%x&Q0>Zkh_M*$r7@P5QI6(ALXy$IR@_DGwfA0N<%Lyg@R1Xx`(Si^<^XG~xZPwYX4 z!y4qlGtf4Z;37ZcJx<`=T6eSV*85R|BL|}={`sNsQy(bSrrhI0y54C0#qO%@L#vNnh3~zBTilj z2B**P{p28nyEZn{Osp|)4u1b>eg7wa(t7Z*Bj(s*h}t$B3NtGl~84$4u00NQhBptW}$UiwIk&}pE`xb~SxChvt z1-AjyGJJf=?tbWy{_fq6^&WogV0dDG3x0=(MF2}4o`0$TFae+lpz6h_x%NPa`i8o! z-grsz!k2ASS8lAUD<{ihy(%Iv0s-V5I6x}18@i2^zh5R-95YiFfm>Thf;Fz87tQFn4GD~%DRduT)H-Q-qq7`W<#CU zO_#))VjycdfwGdE2LNp->|3j7)#I zi*8#d_W%#x0nm2lulwn&p9=xT3z2u=-ipa<-qOb=HMAAdnN$9LYB6ljTR04UZUq=G zgz&&YY#!d%lo0|MaQ4u~*O4>dw&(62C(m3AF9?*c#qfS`Xw$2G&3u*}{9mIf``Kvb Rd_w>L002ovPDHLkV1gsiC$#_o diff --git a/public/img/emoji/new.png b/public/img/emoji/new.png deleted file mode 100644 index 28d1570e0a6fdbdb2b9138ff01009a6d193e1f89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3927 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 diff --git a/public/img/emoji/new_moon_with_face.png b/public/img/emoji/new_moon_with_face.png deleted file mode 100644 index 21a696eb9910509c7d92a417dc9919186ca290aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6708 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 KMNUMnLSTZbKG^O6 diff --git a/public/img/emoji/newspaper.png b/public/img/emoji/newspaper.png deleted file mode 100644 index 60c3394dc4fe6de0c4d96e08ff9296ec62238984..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5180 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 diff --git a/public/img/emoji/nine.png b/public/img/emoji/nine.png deleted file mode 100644 index 8006cc909f35f5fc9ecd5722cb197d03f1e9f1c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3776 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 q!zy$P+YLXdm6gI}#*bd-~ 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 diff --git a/public/img/emoji/no_entry.png b/public/img/emoji/no_entry.png deleted file mode 100644 index cf2086a8e7470f33d323705e9ec3e54f8b3350ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3514 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 Y2fTrYv;1^@!vFvP07*qoM6N<$f`dMU!~g&Q diff --git a/public/img/emoji/no_mobile_phones.png b/public/img/emoji/no_mobile_phones.png deleted file mode 100644 index 41df57cf827e44fda8123082612713ce8cf573bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5083 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 O00002|k|MPU8mo4zN~uw^Xb_|J4qBt7)J{Z; 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 MPYa@1t>FOwKhlNklEN{8Df4nDYBx^?FC8;^( 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 XWRZ579LzUfAwWY#N4e&aUDSU7K=SW2 diff --git a/public/img/emoji/nose.png b/public/img/emoji/nose.png deleted file mode 100644 index ad17c16c29eb60604aefac1705e4a23a542826b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3703 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 diff --git a/public/img/emoji/notes.png b/public/img/emoji/notes.png deleted file mode 100644 index 0956d6ab2a83d1e8b30478102148dc22c5dab9e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1536 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 diff --git a/public/img/emoji/o.png b/public/img/emoji/o.png deleted file mode 100644 index 1ff846c1913b0ea6f09b42f3224da431b97b840b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2538 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 diff --git a/public/img/emoji/o2.png b/public/img/emoji/o2.png deleted file mode 100644 index d85f9fb98c7763d87db79971db65d49d39ae8806..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3498 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 diff --git a/public/img/emoji/ocean.png b/public/img/emoji/ocean.png deleted file mode 100644 index f8d520cd49018adb042f879aba0466ca50843960..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5777 zcmV;C7H;W@P)J-kyb<7y0B;0% zBfuL0-U#qUfHwlX5#av<*R(WM&2dCTgm!9rc34V!&W7Y6S;OSDw6sP^19IBNr)5|x z6bjA%C;><|GG$24s>A^qb}8vu>8V4qkERaEfdECgkeWX97_Xfd=j>OMl$6xqKSqF* zAz7nH3d!l&&r;H}?}_6Y2*OE&vk;j)NVe=Fu2=E;fzCw7#1ksmC55<7DhhfOj_b_7gc!VbnL_oiI#0|(mXnZQd64Im~u>*!k zLFgGbQ&KVw|1AXIp9Tm08HrY~Ew3gm38!ZcLt4gA-_1qgkz<%LdnMmuiZRoc;LGiWP-xge&nOs{EqbFF z+m$Cuu>RtCwkNTQLI@=1ju!$*1V+b)d&I;v6thFE6Cfo$)1R?^TcCz`?$jALckvQF z{%j*`9HS8uJ^~tA9Z{#gFJ|Yhlcei6@kb-QZhX5ZY~A|fo68rl_RJaK2@)goK9%Gp zVv_cDiHf(bl^(!YpZKEHhYTBu;&bOwa`76vhrh?C?NGO&ADZX~L0i`s9-Y!)X&sJ+ zO#{%>AQ+9C1+tGDaz9;%gSd}%m6cdtd=lf9trYHGjf9l}eG| zCS>}@#CLe@0+4jLAp0uT@7{+?Rgdr#!07isz~77pO}e6~VIT%f`UF`Y z&PD3@$;kbDIij*h2=c!~Ov00Zn1sQvO@RLC>CKW@x4%d{HDeeg`G-{!Hv#-axU^4_ z$xo-g59&AULQe?z=OXC&qi%gCD3xZc6D*)-;)pI0vFH|;Btqct!oP2v+iMYk=B-^o&3d-NDrh#CPd(+lncxb)y5JUS*rq3HpgdLp*nY2hv;8StxU)U*?H>)N1> zt`+L&SWy5=XlNM2?kztAC!~Uw{#E$*i!Tz>h70f?egjodzIC=Xg z{P5(dB>yAZ?dLCGPT^tpxr|2uj-9_Ei8ChY%!fV_ajhl955#$FQ;rcq3gb=`d z!mA(m?j39V>a~ElxaJff`n3rVJ1|2nma+ZPhG52ye9R^Jg+)j4R}w9}b_4eX(I0Q( ztJ7z(|LRqIc<>PB9QqzBN>1Y3vnRL(U`J6Yiq3L=U$B;Mv}8zl(fU5Z>Jq9t7WWl8 zmd$_5fXuwSbe#eM>b*7r`VB}|b1BQEX*x+C!lI&MSakF_z2FGueSa9m42M0Juiz7g z#HO>A6zDJ(P@om1rTDhILe>Wr>N~j2cJ-#c2nx-HsbzO)XxcI1nNt7@wiahu>+96Y zJ;C7EWOZ~}y4<`7Oc}+wc{)~9oRMBIhwJz?T*mIbdJP}Z@(Ye0!%E&;cKWoO7Nh%* zMgFl;%q=Lyx{^{n0HhF=%oU*tBW3JU1j3?Hp)jdiD+TcB8>{YJmy(NeJjLmU_c49X zevDnR4xclWtn9s@r80v`+x(V7VWeLx1?bYRzdC_Qu%mAeXe!&l!Zr-O(69ETyY2K6MIt$4}tXlP9sPq8wvZe*MUyyHydW|}gqz8{3 zxjEv7I(6Hlej{&|zwLP4j1Xa9y0lgb&`7V1+TAw<%?#Qw1lporgAS6&yUW&L+q0k1 z!Z92n1IEEGW(0EbR$v-q@>TU(dUBX#Nm*tCn}a@Ujdzc)#DBvPOmwh>B| zD;GVjm{Y8vR2s?mYpG24iM_vCLtde0qTrw?fGG$HAjov!0!GF&>eO-Pwe|w^5Es~a z#lfTdAZg{6&JlF=_Od@A^F}L&KB)OS!Nt+`b}_j@r9=J z1k-YbqG`i_EqN0QmA1(#EtScW7X_e2Jp|F;hWfH){0na}N8F%EvJyQ1_%Y6~5|p_A z02L1(;uaAen+m!dr6?#SZ|kN%Hq`mR7$g_6{Ca)d)aOxR2`;VceXBFm5iMYsQ3VOc9L6ydJ9? z)}#27_|3K0EvrOw>3;SWFJ zT=h92!{HWy8T0aBZR;UL(9|?wIGC(bC=3k$Jgb|8@*Bs=kBQt!dZ3Ag6L+`=BCKDs z5WtuM7=xeyBI|p;3KACsb|6gAyj2LM%v+7ZOV=c!%S4$Vc<&*uKLtK7E=d*H~Ob zaMEbT62CQ~QikFXH+9Z4FS&ci(u>`pZzMvwsajF5frZ-4svVr%I%DemRru<_QEWY4 zhFxV9D7<(Tf8DklEBVWA;k~;!%NLYU2ojMAuZ;Nm%voIE_Ib&jyO@~2o7NWs?4c** zV+z~#XDWE_j_5C+D`mK-0Zd;cw$F57WfQ{sVF5Bmj6!I1A}p+3DT=s zS~I9Nq(01>yI|PFnQ{t#J9mx{mZDg*H6$9!z6?RNA~Ip1I$r$$4r8MH)@_;4u2;Lb znpncEuZ#^FF?8b=dInE4xM&crXW!v_nNz?WaJ7q&B&BHwaxfEj5Fu=^eDH1G24npTyB%qGcF#Ls;x^c>DK4ub5=S4$4$3 z`g2=6j!A(n)*LOy>XT)t6ob7(cV+yZWZdR)Q)JYZ?HILnJC5D@i7x$+~#m{^SoJHEr{Z+D=is!9rbfhebdrSu{>b3A&4t{fzD7V^u_BRp{w ztlNZO%dt~%@rva7!j_h8!KpS7otV5ld_&Q`YnVLt4~;|5=s`$)I~Surn2%`-*WiOC zUn3!73W6hYU|{SE8;4M&4xNsD=Pq*t7r6E03BJE@8QmlL!^^ijtXjEO3os}X!V6|H zen)KHhLd#Ds{k(XH-Q39XR}Ezmqdnd+CrBqcf14zH`Vy2q7v`&+IzJASdw{% z;s`M+nG0k>V_aXLNJR{td4-3ihmiD3_~7UfI0dE1m7_}61tykV5f(Rs*7^#2xRrh% zz#~8|yY1TbMuVoFP?EfEeOECnv2~-1+Y%NS!&zuu!7(ne+mh^Z{6KOPQFxRT=n=mEJ#OjnGm4w(zTYFVRLqtBw;(c30>=f0uJLd3|0tQ!84yc&pt)`{1qK zQ5e1LTV$Mk6XXq{7Pf~W0Y#oZIqwD;O=LvqdtxTHr8#jkjK!{qw zEUT_l*9>~*_RQMbVe1_&-KL3tdrUiAh;jM5gb2(5l01g9%A38v0GrQU!2TOQNcUS; zeg^L{blxv4K;VE;$XL1tGfy0$H|)gte9j0IMbD&@w8*ayiUpUZ9q(IliS14?I+K7D z>s7Ewb76j@zK@mun(;G|PO~~D`1Jn2Jll{_{u9ns` zu;`3Ii&tVs@li}URDi#nIEnxYL)RAs{{BEoit#PM^FIuAsy#=%zxSwV@QR3rg@Y#q zcLl31wMYttR3~uo7)+%l=U%En{09r**=sO7!Un=Oei+{6l6E{rU?@n8-$&vF2QdD? z0ZgEkbN;p-T1xxsq|*X+o%$hb%{t5~E5SHchs?kt2XIg>uLblXv6Ux1%e`kBrW72+ zfCWp@P`@R)>WPBuWdW3$t>6}tim@E5YjCnmI;O1xp>O6Ri;pG-?J?#1Lzs4~2$K#S zM87E?!@$x9K^bE)@xXq}IB^VqX``e7DjDBaGB$e*pM?3>&LQE$g~GcilHH$6oE}8t z@>`ZpJ@7X3+L-)&c=Q^`ywjTGn@PUpE(Fl000tl!i;k@Q?Rji32d}N|z-#U3LXJ=} zeobux5IJrpeCQ4DGbGx0M2L-b!Wb!YmtZP$M((a%Xw=L@OgprI6F=4la?@mRF6Ljq zfL`ysFYjq8S~D(1oIC#!U}&|Y=wjTK5~i&Kkuq-yrqG-H(?(X0!-|R6UUDUGmdtvu z2vE;S5M~UDdAJ?n%t1PfmiNTD3p1z{AGE+&<^?;SexkmX*CHs)go6h#ZqFX%tX+>5 z&Y{pCah1wJK+fZx6NcmCi)Ros?Gq`E^ad?Eep7zycY)(!wr?v!u6hiXBK!gpr&w^~}5(Hm#Y7 z?GQhE0fw#Lh|D!#V#GHaiB0Gfm(2{_TC6hZP4;}YIov{1nKSkwi~XE~6XmZ*%sqrP zW3n~-+0x_e35OS8FP^7Zwz3cVR`+ko!pRLb?qLWVG8zLGFUPxEw_!BBuv7nR8bB

    st2gv4>_tCXRV--@ zNLK$jcutXxXn8Z%CoN=Oa|aK!?&ybh!M*ssDDge{eOJ~ruD$x8jkmwN@8B1Vwn3qg z;|h^36(hz`B5qzMhl3-M+zvC zkbJI@K}$3zdGVY_WV9H#9IRcJAhe-yZ8{Nb?K%g+F(3r(x`)A~XE@v_uq45j-yo6j zUw{PVeYWf)$^Nom&)# z-5Qt!oI7;r5DOM8;PcNvXYby<0AE_OW5<+~6y(3A(xXQYR;^k^ad9!gWNQ%tbOu(Y zr>8Sz$`o3*Y-u)*wr$%2oV6waQ)kVZC7oH67A;z^WXTeMW58&W-!%f9fib{$z&c>3 zQFCH}7$6$hW>jTwz#Zrc)Bx%Oi!NTgh=+&AZ}u

    #x58G_@81Veh{Cu5|Q3>C~wc zk&%%Ap#tvOwQEF0MX`MOa=g5}aC38Gz<>dwIdtvXm2Ta-(X(ey1`Qe{s?3ZTGg!NJ zEwQn&N=k5W zaIk3tJUu-D7Ff#$#K@YqWdhc%TL<7~EdnO^`T5y20q4%00~lm20(@7mUTxC^^zGXh z;Ai0VM-6_`>C>mRTbd2Zh!Gsj>vL7w6|;opfp6hP+e-svr%{>_wNbm7D{CVM|LVvK$YYl4dedt zT@;`E8It!15e8Aj6`$CxhzLiYXn0;kew!P=rL;YLd?;LqfszXx3R#AIwPzkUHpyTC zQ!7hAyVTUw2X^qs#xHSSW=+j-&LIUnb`v=YbbeX_`R9|!OWIAg8how-lY4l3#YBP6 ziP@;y4JAMQu%W%9;oMV1q7d>!%bLPwem{M5+94=kD^uP{I1}}x2(+cz! zC7Y2MFUh@yY0;+~BwG!-A|%MOLZ-|<`fN;#?&MyiJ>B6Qh$eWC9sZl+Texr`z~3rM zK%Ly&T%LXQS&NN-($5)mspK06ogE!O(Vgo^xey)6;pM&*=yU*T#By24g0YVnpS12sF&!!Livwom6p>9K2 z;q(fb2?+p-qz&XKO_51hJ8P0f0`~9U574731o%yuFhSFB{knCy6%zu=`j-xvTy9^! zNxvMD71;oL?hm;amV^z{13!m5TsTe<RHyl-Gz`(|03a9*3{%ILf zgiNs!Vt}{${@o%0V#5H3hkhf*?JrR0BZAzcMee z?wxJ~4;w_t@WHHcd7T6EW*G?xuOI<%bZB)H7+ zm|&Fe;^X77lYfpMKaO~Pa{P4l>Q$~^zs{8_SGaunvV8LCr=My%*t}pm+&v|OP~b|9 zAg8wmv$#W37PoIIs!KsZkwqgYzbjJSU!ih>a^lU2$%#=$@N_g%j`^=v2C%V`CTt%) zoMNE(&ZW}!xOa-L+=pt$w|Mbl$q~wNncxsi$SIX93prmrdGaJO`F22m+3p0We36`- zOk!dpNl8f(OmOVjF)ZZ*-3PfsZVGw@L-S|m_xoU-_V}Yrkq0|6e)L_U*mA6D_2Wot=$fw+jysXUC2m?Af!2=;&xkC&>?yli)LF&In@?Rx*0@ zXtNG#*jMLnY^eC>WUCnz4^XzllI$Dij?1YijU!a3Tw(cpr3#!v-G)%C;sf2$FcSiH z7?z9ziS8~YMKsOe8Y^#5Vup+`?c~TAW$c1Mum~pN;^JgyAR;0{Fr%;=GyoU~ z^Z|MT-GDy>j=(E`1JDV`Y~H-NSx4``-5uo%Q>^@X8ITNGNYI~&5%-n6#4wF3EM(n3 z9U(&Ow_kDGZ>9u6*lsd1{k1OqX${T(*M6%?HlhsMMXsb z&1CFG430)jZvs64S0m>B71&%3iJkljydt|n`bzbp%lOPp)co~XSLT_E7ONa%v;n%S3`27Ih_HZVIg zGn2BX#A8+LUZ}Q2HC2!vjn3%KTC(tB_ylm|*JH?35#5>9bBUTdj=M1-q6M1gO^s&0 zB80065_z(D@k|Z)-Me>d4@a#)!hb6j)7XS&DzV|`{UupS#bs|6>&&&okP$7RE_!1~ zEX0(kHGegH4RJn`I6T*j+tHg8F_H3JY3M9+U-AUv?+fVcWN~^(RfcoK2mLj75>A{r z@o2#V{eUlkAwZon-*p03h{2T04yJ>tTc;L-`}SbI*B31qzW@Gv}?0tCn%0`anZe0&%>bf_Fq$Sl#IL4yh>G$jmg z+_*8#nl(cLGKop#fJS^3ARhP{sB5it-cLyQYLX$!>e|~GpOt>47Z84{W1uF`%Q!0` zKyp@A7VX=&uP^}uUYs!FI*9`O05_oZW4RA_8<06`|YOlN;Hv>1DrzhpkQhcswXVgd2I7FZfTwZo2g-dSxx)G|U~=C;d;hQMxjk!< zlHR&?Yo31kX`cNOw<9CG<9{o3BWebhc@o+%5&y+5O%HSSqt&78cj6L3I@xKch}* zYS*nJbrwZVnFO$Doxi`oT%$FulU+vEyv-8uijXi0q0ZV{10VjDy@!TX_1}=yyn}Cpd4FPhyTT)i0b((`Ue$1FLMn{Y0wn)H7%CRXOtQ@1sdw`dd$P6zM@TU`d#fmT3Mle%7#D(~LCJ7NRG^Ao^jo~b5vXV0FMlU-a~To8=` zhMPR|GSC{RW%r~NU>I-^@C9Cbz;kT@(eZso@K!JX3#{@iZQPf$n*aa+07*qoM6N<$ Ef^RAexBvhE diff --git a/public/img/emoji/octopus.png b/public/img/emoji/octopus.png deleted file mode 100644 index 52ce64b46879ac282918695007cbf8b3f2bb3783..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5779 zcmYjVWmpvK(q0%8aun3FV5=eErxsrRfVh~Sl~ zc#WGn3?wx$U44Z#k_yGHYXwI5>$ZgKlef#s-RSS%h+YRP?c^LleFgJiID}C_Q3zcb zENsw7WeS{=Py=NxsueaJf{Y9zgA{5G+A9x!HaEImC9x2-p+ZGMVHs*FkSYvW}c=wF*pxP?-%`8U&5hmwn- zi$4T?o=Lo`iAWH>uANZz62qLfazOhm4}#CmtsPEOz8zYax7oT&6-5B*9`) z)MFJ7Z00iY2 zdaD$f$U#pK^3@!*H27WjdZg#wLS@6cAT%nHOdCB9PRSr+h8f1>;Kr?a$N%~xE4jvT zaZ(bx8nq_4TpMx>zsbkm?H}~L4Q?eY)$fzMyyDQ}4_g`&7tx_LFh`lgw{DZXi>Sqt ztqWXmOau-;He#QtxM(mlrV-+e!vI=16=!|-VwjJ#CcJ&oEHw>X5dYTDHmbn&F& zq1Zb5%^<5S^D*BONf$AmfB-IkfH4mk-~eXf7o=K`HLH>(iNh$k62t;<>KmG(M@MZd zjOUmQi8Nmz*Y%deIba3_IXGG0TW#60ZrX@6>lZRw zA&ING$K-_?;HGa6weUzmSSOoJrxaSDIEk&#nF8$Q8Ru-G9J zq4ak8mp+QsrBU*Bg_T~h$?NT_94*AAQFkCNmSBb$YRc)TgSKEKo|u2pUmT=aJP8)_ ziUKL{%JKzKn}`$|zO(rbD;fV2D0xC<6>(>Z&5L zU-MO#4qf6cifd2EQ`jo}-iLC_{LHAGe+@__n2=u=E}`=*X5R{2`(!Q=&?5UVRa32j zhTHu#je}*duVseaE_DB#-|fa|jV)0qfgyzxulcDA1(;Yy5m#d&k%qC!{#IN&SD8+j z2mf`l$rYEBh9-c^r0F$rlL|!fkp%UIkYFC?SkT-CBZ8pnLU>iOH&gzd6{`ZHKG~Ok zamkTvNI!Xn7XzUzo-T$wuN_Z`BfWuFOsmjd;)9>pCu3$YIQvHy5)c&}X?o@uuU#8t z@07C23jbCT#3{k2D_bMMbU^oXNkWC~vn1Eh&h7lrgUEpFTlhDC%P))7g~aYg8oYRI zpR}ySIHcOlXgZ_Z^aB)cF>Q3&HRp_Ce&^*idVUxfPGCk+P zm`1#@K)4xngPpOC2^RN&s^gku`t57kdn6$M?6Gmf@IpEN>8LFSH- zNsAX}PK~8hD{4nxz!N}hISsBIm)}9#QFj))uF%B>L~mx`dZfi!=P~nWmh=UniMXC0 z9k;w2nnCWnQ}VqgCiVwts|tBf_7`7zP4o74F*Lan=Fb~8=d*trzqjxL$8VZ20%P2p z=nHmEfc_xVdNg7^bm;ZS_$F1?vjAWIupGRx~|y7^{7 zVc}x>VyX5kE%wE<`0e%{S9{y+&MTMLv zALm{BZ)gC8xUU)VryJ__Lo>I7u^m{S6?p$08F{pKB&&UNa9`D}d^z1nnTRB~S zcevk0vHlwy%&^oTzMIX}Sj^~OPgAyO8bD`REPOb$4^S#BRiP6(iMj22ZecOHql6zTK8swxx}Yrv;!wjZ@5##kVeR-zF2puC^qh`Yj<#t!KE$e$jJ ze;ymZ=(!q~>os_Vd8n^=t&nLjfqn}OzF$!gilZxJ?5JsQAYv=q~Gy>dx;^yWiJ0 zkoPTRKHb(M_>5%gHplFXpVh4wrZSawbi-|Y4<-&uv=QWu)uSpCI@BpF_Zl+BqtF{e z2(W^}ebQatF}`ekW}t;B(w=qT4RYF3O8k+590%b=^xZ|ELPyYj<=_oG?KY2raMYzV zG&g@>c!oq|v4i%8Q%#wq{`hDt_`Szmk%-4@T@H+!sYJ=LXMZ}`@j5<}IUT+IABkjl!}i1;(;^ z8Qk-F=w>-}r`{s)#sr<~Api}|e%%-gLb&hru3t0c#>xfH+kLt4&ptyhm=>XcH|Hkv z;I}mmNm%J;*H{o$(d=GRvfNx5xyNpF@0^QE6CV7OH=;ZyR#LoPV*FwO2bdOq{9zvN zNGM!P$5_3<<$-uRw~M=!@tdp)(5_e&2pGLDD~dxe`h;~&!E3B5aUAl$c% z@p>7+B8vEX|F$PdX+H3SxQ$3aLaH7W{pI~kL-e-h)hgc}7<*ZD$5wvX#Pz=V=la87 zO&c)2Dnv#nt*mh{zE*xfA$m}t7k;xGp5zxkef5(n-cp#Ay34mIXa{_1sFI5rixo_jcCE&xO z<-@mqELVtc5ON_kd}2;JTf@)4m)s}U7`nAy_le+k;ZP9R_t{akv`SV)DV3zKBbj_T zH*lT!dYJ!U@yT)=PiS3#53-k>xrr@#@91E zS~5)phOTCQMz5Y1acGM_TV>Bj^zRF5C|2d+v(VOUhiaRFvw)K4o-Ma0P(|gV>$f?-CPuB_buO|S z4vP8z$xsg$jz?{(8X&kEyG@R0EO}*b+wFp-AcOi88*2I+Pg6E@CN0?t-F7j9IJJ%? zyTRG+M=S;W0nMMz!`)H2hzL96xMCgI!SDSXmUS8VFHK-#lpdn~@aq+czQ42pYxymXC>J_#zyk$_GcUALBpEm->yFbQ9lx= zm6uH=l}%%j{qRWEi(cd6q=W3W$qVzf7sdS|AEWlZ0T1KsoMHE`ZmfrqD z8T~+-?2ZHlk+eeC`8qqHePWfXhxyRX#puaYGYR83iSb}#izAM=R)v9Po!0J7b}MEP znh?}H{XE$!Ox)v`#&=p}gou$LOn6aqmUhh!)A^Y+7}?6CD^9B56kJJKZqHh>cf4Mi z$~GPD?s2OGsAmsa#Ua0)+E%`M{VD4l6ZphZUXha{QZN})aMXPjpg%1Piu^n-UO?7B zL&W&VLl5M7Y_V4qOVw88dNd+hDKPLe+H#@0P?Ua)mE>VE1yHktW#|H7N57p&C5-Hk z`Cas&l!Xo+DNtN7R9?27NKl!>tu4VNJQ!`rt7co9uF$(l+jqE|kwvdruw*5Bn39ms zL8D^3S8>nXh`mZSyL#S`CrH=DgH6Q`(c^z%Wcq-NR?6Ib64(9QmADC47>dfJu&Sz@ z$teGkXdZWX6w+zq=JH;yz@TekEmkv;%g2v82}@Ha^l+;eY08DnPb1dyg5em z=9^x8uO->=M52fpr8Gat&W9vlLbCvC&0Lge{+jW=Rl~M%an_8Wt%ZNNZ7=huTbvt9 zSx9FYiu1P`?X&#ZX+wt&$d?8@Z~9TUL$}v)u06%H@ENFmpC$Z-J|03N-&;6wUrF5R z?Jxf^GzaT>%Cg)g|M5ZtkZs~_i~~LP==pc%TF24Tsrs6Sv`=?goacM(B*_}uzJImu zIxF@Te#S&V7|gGNYdvz({_ee`%$IvzPIkt&lz1;WtZvJ@YV8s{E*XYaP>E7yBcI95;!M-=n-nH5R zlMckpKG3O4ugI?K2-=<;1O1+p{J(0okhSexWw0}&z3_k={y6mhtW3{46icmX(=ycO{g5vh1MziPi+RMqB`g8{eBbkY zhoIjabjWm=6`EpD$t7pmaw08I@K)^go8<}%L(I3APY<`-uai{7$+sD-OE&uTU}640 z#Kj5Qwu&CCE~dN#r9ChktlAA(J^B<+wPdfGt4;eIYZx>U`aj%Q>NRX9H0zcwa7Nw)5+r@HJ~=oEE|+~ zP(=y7zFWm3)+U?WBc#yTy(!;)1QQzv7%*Fa^gY(Vtg|TY zcf(9Px3rQcX%y}kfKSPU3UGe+8!3+?w2UDJoQ|uVjL8u6I~uDpddvHYf^G@n`xe0r z{=T1R%NjekH#pMwRT@KAD=aOdQ`N|T6x0i-k99vO1EK(GfE43!-Zd6Z=Z{R{A76SL zMFXm$akgT|a(JH#Es2;@UoB1;_o!w@>_f2YeqP`X_9suQg($CoK-5k?P~}=cBA~^# zrNpCTIAhN(xL2zbBSyIsv_F|-e6r88qe@V^+m=uh z{KvnV-~@;&k%4^sF{mOmsNp`ST|HR+<6ETF$nKp9twN^{MkJ>*0$W`=wd+agi~dzT z5>~OWUpsO$e@nH;P1d`c&fAY~ZYGA4xfueiH6z$~x>HgxOsTYN-Mil6@ISgIy_dq8Fk$u*dQw?BZ$Z6c$x7BB=%I`21gy;> zQpya&(M)T7(P2Xw?Luhbvpu^!WPrw1{%4UeoqzXNyk5N`OKveA;wN;YOrn1Z$m#mF$17uV@>ceKuDp1fW56sHkSP{L^9t#7 wS~G4F5_a?JE6d^afHHLW4qLzx0K3C2_l%*7R;*3=du#>(HT5-W)$F4F56_oC(f|Me diff --git a/public/img/emoji/oden.png b/public/img/emoji/oden.png deleted file mode 100644 index 73add1c73cfa766f29e2314d4ebd61c4ca051f31..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5543 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 diff --git a/public/img/emoji/office.png b/public/img/emoji/office.png deleted file mode 100644 index 53c3ef8d12aa1ca8f682fc1b9da9201a6a785421..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5156 zcmaJ_c|4T=zeQiE5Rxq+BxPr;+1H7zWymsy$R3r3u`7E-B{A74`@WA|WEYynPO@bg z>x{9xgYUh!?yuMVV`l!C*Ymue&v~EsIp_U^>+1rkFI>4mLPA2Vc}MLY@mJ~ibM7qh zJJ;dq1PKZKlBSxnA&eB8u;Y!IMYKWcYjF17g?#$7-qINLr<~^)9_3tO{3l^hKzg+)CB7_F)9gk_b{Xmu0a_h+-ztDNcK5IXkuSht)*ND2hQ*cSPgjF_~ zK(=IV!kZTQcn_Y>CM?S?2~uWg`$fklY2iPw(zcDpc*Nq$J5t&)m;>|IOFW$p2`A@&G$# z=l)h>YH)ae0m-W_&(+2aq^>yHoSnzUx+ntR)Mpg5iw$V_dx~S+HkR9>=Ia9%kXh|C zSEW;HYHssfI&b4zsQGzz)^xYavA%AD`tevDxZUjI`|?mpan#c5Dh&TTy2A9Z9eN@7 zrK7e)c14A{_tpxs)YyXQv{X^uVWv@`Co5gnXrH!i3kjumaq~H1Ia%*w`qLASlsl~d z{P}QzHo86do3FcuaK0DPXhLAKMS1Z%LBZEO6U{!6{XqKqCKA%Me;qmJ?WAW=qMPE3 zo@|uP^Dav%wSaIwlzWEKcdChezaV+x@0F}gnbu~rvT)x=%;BubF)TPF~qa2|B$j2Ugsnj{N}2&JoSg6Zn-bkpS&|??ES;{PE*E)X)gJ2Hy$p+6I#zKAbFMhxkPzh!C@fI?jxze*zSP6Av8Rwen;{s0wAa*fto^Q#k42< zQf`IKIP26Ge9qGJccK?%N9f`P4Z4Y~2%w>N-o`aidG9h6yG|2%iRA zgXgyx2ZCx9%;s^lvI-JDU)M&@3%@>;Oc@sW!9BD_*8{`u4GE4@+Iv&zv@%>gdpU>t zCL?v;#KrW?h6xLe>z{5S^acIf=JV3kyTQR;}xZCFqYywZoxa2Qy!r-*Ul2g9DP*+)rG48#vRV*} z0^UP#MjP%I0fo-d?|zc_x&%ryP0?P>5jz8^+yNTuKgh>?c>gU)KCJ{0*EO~+z|~fU z&@gjTnp4c|7%ThYD0AEp9g2fnwjvSmo)A*Tc*{UKqj)R5BeJcPasDe`rbJ3z1$4SR z-6DDf8SU4+@HI!|Nsd!3K$WxrJ=-Q9xD`T7O4x9!LDkVgYeXvR#%ph{ieQt#uyyCc zX3W*{ib^}2J6v>>R+L@F@%Ar0u|Sg^8%e6-rhix?i@#9SmQl!-n1wQlKo?OkE2}j7 zbHOSqCH86+6{HMthD(-k<5`#J#fJt@E#=>>8(ODeL*X0_#=;bA`^ zvYFZE=&pm?<_o}9m;=rjKxFcdmfuRS%4R}In^Wt99;o$pR_m7vWm;|@U8KGRisrbV z(W}l)m&I%KB8PbKOmxCLHb z=ucQo%=}zmqO{8a{cZ2XfBGK!b1lppJ7E5>@(C*CrHoro&${EYA- z*%j6+?;G8!G!(bvR}yg5hsDxBot#PXgPHEEuyun(!}IB-t9Ci%`#oiMU*I~B)g#3mhEhWSWjhO^Fa1dA)L$Yu_Ra9 z(sRYK_}}kcF7)FqkUe~LxU78#1GJ0E!tFb;+7v>#0BdYu8J{#$)@iNQhZ|_aZd^$! zp^n#W+ZC+okR1ck5mv++k{6l!@IZa2UtgABSRT34x3T$ip%mE$9!15kNIgHYixLv z@jO3>32la`6}QqHckr9Z0>xmUCS!a%=7X_LUog+GLeGY=aVXS?4_@B_*Q0#ve4sCM$#^t z7eBln1iDJRZ)M8=5E)M-vaAempUd*l6#4Q<#S%xv-qqljTOmuAe17~`f4KQr0SaAb zZs=`i`H55G;`C8l-bU$1O!j9+VC^bfE)XTF_)BCoE%bP*pS&5xevhj2nKfaPenNXq z$+^&|mT;L*@klifykQb%x)iF)$tLTr%`r23o^JYWM#u<_$4aRZd6@Jm*B)5Dq}F&~ z6>{JNQF3zA5-v2i=68LwW91JXcg_EJ|GYZ4m8U#N47}HE?w8fWBX!H)?nU*%{dQL9 zbm??4_J3BYh^t8-OjWCZ%(5iC`VlP^Z@EFBL)0iH@tQQdAC?^DEJ$NU? z=DOMFWl|gQiXr+R^t(vM5jVys+h(T+anCt?{GFmkj-Q5Z`t!h%*nbpii(<2A3gz&- zc}0#rn)Ycirszqw(bTmI9jj%bBjyE@yocHs$YpDz!IK?9HH=HHByJzJ=>v;xsqO`kTI`?N+Q(B0KrOS3<^? zK(UNM4-B$L7RH^HdJiuuVT%6By+LN9Oy<{k<&wcV^6HM|wQGy@MkRNKFhIIv;T-v< zRcSmzbeVsZbH+;dNY-*=rgMFN-)BG{41T?wW>AlZu%hY-`uJslmUWr!Eh`Gq>bCm@ zk!jOVJk}Zounu~)g=Gq46=(ub#x3S10FFfkTPA_BaGQ61J`SEHHU>e72LzfPYu11B zXnZ&@Y3MbZFpN~(5Cl5^6iNA^C}!cd@?6O9qU4j@ck6FdDo7Fh-H-f4b>}cyk81W! zM-_&0)UJP;&It-pl+&AA1fFz!*@V!EOW;Qy5yF^@$_{!S{yvsT@j_5cJ13h4W`3R~C}Zd`&>Q7S$!W0QlJZCYU zMZWFJSRBRS_3)Ltif%*ANP(KbOTA>NkN!AAK4z+OCs&`1mXZK25dL+#gch<* zsb{2eW`q^N@B2J5rqweH1>WBEWPT~zm75P{>uOB<>Z?`y8p~C9czDP}XxAJzF<4Wg z^_*r6A&aeCiw=|EFeKLQ_r4$-0|=A;lRJE=yJ`+8f$ek#w?iZb6a4efFAClkzr(?Bo`Iy%` zy2)?>l`YDSS_8&);vhW4P6-WS;#repS<1pEDV2y$E`;i%`b)|@7HQ|vN*(bvmxz~s z(Gz3Es)IK51xxJXh3jsEw|=?hj9`r(?TC&`SXa2f{wid)1!xC-Iy+OS+lt~;a|D6^Ea1^-nC=Di&EOSz;6Ixh#uig zr_H?`KEAQf_@%+6na-H~mp`RAzx~wyW_$L}oPrYyfbh?c2Ax%Sl6vQH1!JKP@J1lS zW+>Idnu*`={;jG!6(Ax&mZ>Xp?BV9!a`{Fj+06-KUEQedsTNQtfEkqPzDj-61uXR6 zDv*u<$Rx1*DN!fMp~O0rsY!6438J3yY!rqYGQf_xg3NOdLNDf}*I}DpmEL1u^v?%> zo#nf!@bE=M!m!D~^kp|UV+RQC@Vi2w zxE1$s7vqJl6!2%Eajyrfmk!oSyU`WxeFc+ePG!gI*DTdBf|Y=)jK|yS%U-J&EHs?% z#7$g#iENwNsjBwgz!RmCHxN?DYry*i8VVl_&CT8DJ_^((;b}~1DcZl|oDO^^veZ^C zr!!jNvnC+9zn8_szGJP#3$|tMa}voN*B4I9{Mjh@ZjnE!PnQ>=UZ<<1rN(L7*Q>`5lqoNx2S_$ebIf41tOYKf|ToF7kM>yDxq=}b*9gCV4I0j+!d{X;MX!VeWuL=RK!>d zKkg6gzJTxFT+PY0=TJ=MyIjsBB4g%DVawOukj$%_lA#%`VAc4@ZYgtg*Wt-reV5<9 z!~ff2BHZRA#P=ZN9D(1+Q(Ho33kB|jv$gQbRWB{7qS$5fTS9j_JPqmm6F7P)pE$XkXnXjw+5Y4Kgh_q^OGBz|oIY`W)(hi`fCnP)?hnk}J7 zMDqpwP*e>}Q2_=(FkBTd0SG{F3*0hc==slQQz=vW+97>@{_yS>cVHe=OoHp~eX^;_ zr+z24Xz@eQ+Ij?|VMz9XB=7V25D2KyNqth(+;b+XDfX{^5Pr;A#aEw62=hZd|tV|@+o-_(vxE1Tf=X~^YGq;dvy(?ZTP@iFhFB)Fn5 zghPHb)rN7?ip6+fYda2ik7DQHUW{oz_=0|@ntv^Z@Ked@t`om{X<%Lfn8eMW`SJ@5 z&27tTn;VJz4c9f{v3u4c8VaCiIEjmiG*Y?=iwg*8_Uq#XBa<(ML6sH>XjoDg#+DnJ zvAV4e-{0MZ4=;?OwpoSX)^aOvz96Z6T1ZqBVDo)XeZFQ<^Y&O{1N^}-+Lt!s@%z_f zGOc6Z=`o~r0}5lLJ~_c`N3I&UfGI7J*D*ewL+|i3)-S6gpTGC!ar6$1p}ix|tR&J_oYD6qngQtJ{CS-IAN6(GhYBL6bYZDBBCG4o&xV!;X z0TuuHMkkWVDNK%zVYsLJaCTt&mP3cWW0Z^lt6prWiq&nZs*ZyB{J3>(D@;q^NN*e} zB{~LgXhzoFO3mFWIxKJpA6UXubP-n&H-Lx!NoWol1A;5@>n_C3|#3kdFG-vBu z$lw5Rad9gz0H>PXBGSBIoa0JX00XEVR~U1PM*oI1&K)sP5maR|=3c)A6CY)acO1Jk zk;ILof&jwxPM4G8mA4s9VMyyH`X@3NOlF~5bB|B}L<1VyYOByv6N08GR9Ti1(6Bg0 zr*kxZmQO6`LtP|L?%5>lz*H7F8Z(EmUqyX1098?F!rjf9sN4-&fZzbPFj9_(hwJop^ZsDo5 zPMHE}gM%?fjw_0VD&0WPPefeg84Oe4NPhzUP|!^Z3K$w=0pdWjt}x;PX~Ydy1p#Of zeV_#Bgszvo$}p15V&C}$Zd==euiv=}ZS@gU!oi*~eE01$*m-Igx36r3UsGm9pl+@v z9Kc^bx{=7u;>O zj+J)-VF!$9SWXV`&iqg!gJZ)p_^Z!u#$9WgaV7ZFibk>*cAdr>2YYeHszr94;dE~* zqZ1xUR)qulPJw$XX5{3)?l`t>Xe&wnt;6SWq-PX}U$#_`OeI!*%ueh>%X-h>%~!e;??^)@2QVJ)<;B!qeRe62+2c=Tk=H z*R5ELFKzz>Tp)74Jai66x^42@vVFIN&4o}R5i6cYIs)YKCJhtF<| z$qcHi{DrWh=ID!CmluzaGu?~h=f)5UxNgTNUr_kIb@&`&;Q&6dtPu_<>D{)b6$efY zU{Neox=x_U5R!Zx)zx7<|JbdRJl%LpM%jVWLkRj+nt8@R$mdO3uBJ&`h!YCttpmL4 zPB2IlP?(@bVsa)+;aFE)h1IQfaAROBDc9Ywbd1pwDF!1RTxRAztdimDcO|)7*R)_? zS3eBXgvC9s(7EFgxvXNb2)^~i9g?I5H+CO6C!?z$KA-B$yq!q1d6S}&wo(Rg=5QkN zmFoanCvIaz0d)3$?q-?!FQR8;3M-ppFgd4hyl}XPSz+c80N~C5E{zcbL7koVaD)L)ks{~_trSQ@ zM=X{o{`QA^kxb{{#)`HEeD&e2=;#?E zAxrw;NrZg9LWl$I?nwwT!8yh+4`JHUs-q!tjN(L;G*Wpoouglri;+mCX$h5!|6d(F zhu7XYAuGyh?AUt}#rVQ+ZNP0SnsK}@4po822QMG1f&g>lJ<2f#neoR_jN8{N#rgOQ zWn&Vm$P}m5&Ez?5S=|a3sJEDVhRJ1yp96Pi4pp zj<=8W;j>#-q9IlVH@eP`U@Da%aZ3phPo|N{>Gr7)I7Qj3dybKCZq(I=@i&ieqiR$) zOuEkPJ8^;25?2twHT8D1z-3G@Os8|$D?`!+s>1%^>Fw}O=y?4XCvf`w1cnl649KYH z=o-R~|2m4#v@gXUKXNl%psMkm&U0X3&ND>mDv}Gw0F5b#Pp0wXJx5WDySA*r7j9jH zLuW_8gmXWKgOdXttJDm^BBh)&0Y|Yp^?aIwJ)PaS7*E2DrET@t`QlUfvj;YT_f4Vu zKp*-#`q7dTcv-QApZ2r+p&AcpX1Pu zui(%dU&X7hJc9=x{3METb|5Yj+i|F>J8!@XRxLz>Q$ghrfU30h}M4 zLQ?w27`)@J;5=Y13b?%%+!oMO^bE%Ft=IO-e2_vZ1i}Gm0Ut`?MDIoX%TL}zPS4ZY zp4(}7=^BD_j}JbDVSI81Ki=JmV%#Wqgl8YV1s|Lmf@xVKteaEi^8oH{hPd;NA``Ut zpY9vQH^0A2Cb(|sc@y)1lIIV19l<}nx)(E<94)80`}4v*rClysB;<#xDkXgg$ZHSC zWw8IGcPTva$SwHYyVqli>IOF#K^!Zd38JVNDg`0zB4~0ZgO}xU*wyhNHm+>Niq-}+ z#KJ^`3xRYlkKyqoiFNYaFeYTk27KD3QycdwZ$@7G%FjP=cbgRAv*(7zVAN|U_>qhP z8IhjvmMw~6ES>=8F7kp`J`;2j#-)xBinP)i&~+*pR8_^$SQ7oi33AA%sfF1jr?a|2 zothA^|6dxdd8;T48IVrr@YcaI5SJgolF;B~p3i{knJnJif4bDMJ&6tGaB(GeH#Gbj z;8PVc37dG%aERGX%nM=9TBuas5EaJ}(JC7Ezk^mH>$uj8r^A{bbS7~5OkGvDdjK)d zkr)?(dA5xOkK(Pg!Zyf-X$ZT5`o9MX00EO5`LYpU=(#a&8nC!Y*^^nIcwW%3f8{1l z#7)mlloueEIb|C9r!B(-4|4lpQ7rfc01ghzFd(@hujjhT3ZSP_@9VkrS4_hIw>T80 z0?GmxfP=W0h6%|{a-4p@tN?v|CyvxCY3qvCG_DPVL!iGH6Dk%mxUgWFI`Ww`QptE% zfn!+#kj7b)HVNIpehVa)xdlV_G@85kO^A%`E(YUnFI>l3LGmHLfM{U`+gRR zHU5r27`z}J>YTFjBu7$s<3iP+cntE;R5Zq37mTAG1V^?i|&u zl4Jef>pk}FPS`L23`nkKc>%m41OO}{5o{>euibi6Fx;@k9}KVd`2$T%RW-YPS8;V< z*`2OsnMPh8&F9i*a_RAozOD~C0dN=ji;|}f!h8aFBcTaE7z-0=0HdCnpH~2{5D@@% z0D@Q;$TK+q-4j?NzWpRc0AD^vyHO(YB*8l(j07*qo IM6N<$g8yK~o&W#< diff --git a/public/img/emoji/ok_hand.png b/public/img/emoji/ok_hand.png deleted file mode 100644 index 80c5aebb68091298f8995abba5e81e095938be25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4598 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 diff --git a/public/img/emoji/ok_woman.png b/public/img/emoji/ok_woman.png deleted file mode 100644 index e8b98194edbf33071c1e0a445ba16b0243e8f65f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7527 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 Hu0mjfP~>gp diff --git a/public/img/emoji/on.png b/public/img/emoji/on.png deleted file mode 100644 index 4cd69a15dedcd265b097459c8eb9793c09f3faad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1472 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 diff --git a/public/img/emoji/oncoming_bus.png b/public/img/emoji/oncoming_bus.png deleted file mode 100644 index 3695f762353f05c80466f41673a45239196cc4e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5305 zcmV;q6h`ZbP)yG(11H>3UK%{O;sySwjQ+t>G=_O7n9>$>L^VBpYD^X8RS zDCP@tba3#csj;zpKL71+AHbW?7G;3j7;`p!;uD#6ym4!9Z%4qn?=bz1tvh$^UAyrz zB-2@haNsx`J`*6LGsYmai%R;g$J)z5zQtJRBQfREjB%l`iL>+f8(X7&15G6l}q0_FsK<{*`AcUEoKkXhN= zi?*(Aj2w6bwI@Cgv3wJHKlEj!+p{PdMNWV14)C#Ki0}Oj*8RbL&{9r4`gy2dehqTN z9<2Mo=ODuxCP&U<==I}4ZhWj%3j&;P&2~mB$WZ8Vp)fHqHhyGy`0V!&<-YT^XP(gl z7icaPXdl?S=jL74|KT^TyJ0VS)~taa^8oM*>(7{l>v`~f-}Wv8+E#Cc+Horq9c$ou zKBN%#S^CPGA##IAuh|YQB&ek~T#J&dBGt1EuIm^iuwrd5I+w5T!!YorR9MJqQc481 zT4!#2eABBhzWg5fbn)$sv5#oemdt=p-ge7(_r3qm|9Hps*CE@{0q!^r^%pXN=XrQD zn$#L$7+!D*C> z9@mUBU=fLub8h>4@4Xj~KmIu4@i-ZP7;#YyP^nb#&2N4a_uqd%RT445C+)|iJ6AI8_e{&n1a_uUABVBuve z1A|sM#~KW{SO%aFpmyVpH_|!?i;%0YUo)m!GJuZgk41z4#bk%66c0S`0KV{r zFW~6Wqc(P<+|V*2Wo`1?zkfe&xZwse2F<;p9JGR#8jvl9fa5vvV==^H3Hb5&V$ub+ zY}tY@e({TVvzm|+o>|iyHRd?*%$hylh3B@I1W%tC#?cpFgeVn}N+j@BYM~UE7@xrL z!>?m#T81qd;OQrRijmVJShi{fSBhYl};m@$87m)4|aBRYy@Mt_10UD-EqeqA2#*;h!A3S zPDp3awQ4Q8dU`IxHuvJ66l1BJVdx1=InJz`C8KoBD8JD-^IKh=of`mPdU|@`-S2+) zhuuUX@ri6Ud+laZzj^&AyHhB22Y@?mtQ%-TR7yj|Ae5cHq#AKH)POY5jWxq2!$d4r z$#!Hvnn`D_S>N9uRftN5F~X$S#_sU>e_J-nY@{C(*Rm)TQA%D`fbvv332>i?z!jb)rrJp?}m-_c;a;f)Ix>8fa^=o0JRVh zLV-n$^;{3tLJ_&?=^u4>@7s_x?C$UDBPNi}vo}H-prk-agOIs-&z=sm6^`lXIggSc z(X3_-aH%E1C%0+6zbJ#b=DERkpqq$KaNwUPSNEfeg5F8En99k zX8>14+h2e|63v80HB@k0X8>fh$zm5#p6Y#7XoSip>}XD7>#kjt*M2sg%QA-b|9 z$}=OMm@luDviT{LfER^87z8+bW)RtBT?bRCw$+^T9#VWB11JfuTf5fA$MF*GG-)ZLrKE&t z=Vl58#*}IlR;hu&{v!>pmwrU`VhO|#KZ}!N)4=83;DH46(&bN#lKirUd?N=)jnE)& z8Bm`KYawbgGmIL2CTCM0$uKtv0!Al2%8X^?d->0!wMi z@sXW4h1Z{d8hqc!;A#eh;nL(M2k`pOp90(W5qO%jJ=&Pd-Ts6K1uzfd~TYdDwWWp<1rMtp#v20|R?Q zCkp0aLokHtBQK+{BBkrV+<|Z zj=)KRtT%9%W7CURKbvm9wLfpaHbg96~UwSzm}f;%(Uk7LE?NgSIjVzP4u*zl>j zv|oh$DIA|DU~1FK3(6}cAgg8Mhfjh}4Wgs33pK;k!q_M--{c|b>DCO8%`#lS%*C%> zJ&v|a8!lU(MPcwYOyEsSF8vIJbm!?9P6U`BLm2fJ$u!ti~@`wbPk)oOtp{c=06GuZ%%g1@sbj4Q=UmoP6>rc(FLv_r#5SxPZKd z!+@?;ZD0~O`m2Lj)t<-x{V}}qn*s!Y7T*mr$RNaDd{kiDwiq7!@kvuAV{l_B#C;Ep zvGXs6bDSGGi?aiR*k#V%JU0d1Q2+dW6ATV>Fg7%3sp-gE7L=AiQY=@(%42Si3O%MR)^hzQY3$eOK z;>s&LtXxq*u~0J%W&ke2_X9K-$|VJ#Ph-c`9J{XZ!8mU`2S=p55A7rYo-$|yC zfFeZ=Q~?lq0H&AG=f<-VDNemL0%TaP{a}$d04Zt8Zirep0LdyddVXw0eI1PwHv%}op1U~Zg8Bgsft3uYI{!5m(2jVmR;t<_fc0)>1Y8ON)i(_q@dn`2ssoj5Rn4PfH&*9{p>X7pS zbD)?D@EDk@Y@Dm8OfiNgD_9g-XfUE#;UaqT1`BB9KuG}^mcVr$ft)hqA~eOnsF^;5 zrW_#AU|%3LCPoED$3tXR_P1t$p=tvE`NJ-_3DO5P`4h7f|fv*Yh*5>lp-eadM=T42&+Qt8XSXjlM*i; zUWw^xy1NMN6<$!O_thF*=vGh>fn|WGDe$U`hadQi{D*&kwgm==7`R~AiAi)UUkTA; zl7Np-R0=^5qFN1*FP2fr z7xB?QTYmF!ItG^gV4DGJFCL%PNks7&)ue zoghP1JE+>AHDf{LSX+lF(!5auCE7AGi1{@HWumZz3MH<;IzUI(h2ywJ86aN*q;kPM z4{fQ0F^F%TIacv%P(!I$vFCZu0kX?IZ0u`8D&b?z3Lp%skW$(0H|GVEi+NN_!pZ`5 zFh`?OrYgk{YK8)L?AT*1mcf_`F`$>@`BWL6C}JWP0~_*@w1+@$y~rH{4g?})DCtD^ zM4?^qrnMYfH)v?oudDJEjlq!+XNL0_8D|(5acJ!VknmiA?hcM^mnG1Hu zQ3xt|$gphliWD4EV(oP^tNtDF!H(J;Z#Dj*MeiA;FM?2&+&Al+>u)F_@lJz;zrok-$Tb2n69~1l0hw zY7Nx}0)q-_Va~|*Kq!X3)Bx0Es9G|B!?oUf4=>)NsD z8RA}u+*Ac%K~&cqfHed@K1PZlEh@qoJjPs4vCH-XPukX1h(-Y79bAsnTwtP8DrP^roG5agC zD(bb0dfREMjDmytjV*GHpwBzU3^-S_BpF9EVBqz>vF{23jj?l86vFnOl*{4YfA+I? zy}Bp{oPFh$52iP7zB9Y7A7vRwDW{-uv6^0@07I*dF~G}ch_R7<0|Uo=0PkFs0ph;D zhBh}`2|!heCSZ6Aw#e3=>%w!Km5a^+j^`=vIPm;>nR+WXtu+~d^k9oNfO$#sta+9E zciC*#r%eRsoRZG@IR?=4#>;(_oF5KYHauJ-8)T* zyV_6(`C{=OySlpi$Ow$FS=J4OptmgLwq)|3OxTpAQnM}<=P;6?Da$S#yG+l!2_QuC z4(G_t%)pB#f~ZA|$(i5t^a9Y$Iu~L7XGUm@XEz-|HTv0*h{o&JufMOqzyA)`b!kma zVWq5-41?(v`1Uhr&b(%yT|iNHuCnJzzbps>w_Glh!p(oCb%TOo81lBZwspl~u>`<9 z51a<(8-ifl0!oWUAHl3CLu;D7&u^~FJcsdoHqueE**}}n)T{yKC{IA6j}~eabEl@J z$Ux+A>Kg_CKy>rWI7#CRDDR$!4QxRMG$GGpgs@Vn#7*dd7!Vnuk%t!&BVuW{or z=UOJxSMzxbnBQw-fYI^sae8x1$z&F2-aJ2KyfFiyItP^q31P)NJdU<1Jz!qNaD4q+)FC5dQMg+df11gZIrqNd_s)L$jd zTBYruqNa*eDQZbs($FSUf;1*jY=aHPs~KZ^04w33SLgU! z?wsd&_j4~QO;fy=p_KB!;5(1r=lTx}e{{=mzEVyQB^UTI&%KyshJN^ij8*YW~ zc>vN2#IMk7w-MiQCkmT4BNv4@dSn6XF@T)2G6JG*7cXtU^6FoDo9a? zRY-k*?5=MsrT&{%-MOd)d_;No54nJ=6ygJ?puB0UY@|pUG2+E}*+76U-r3v5!T)N* zDJZOTq;Z0znuBU?xds@e;N^=-z+f6(wV1e=RSClJQ8>jSkftj#-DWpLRO_I4dKP7; zg~8f9Mmr@Glv)9efTL2hn_bMkGmrFSqFfZNy66O)OyRuIiLnTU@~Ja$ym=tOicGi7 z_oF@khrH*b>~%2pavjH?4KPqq?@HU!VYs69+aco4JUZB)0FA~)ivf4veRpnfaPa$U z|M)XE{_pR07YsJFio}S@7*Mpb(h2?I(86Xh!jcybB+{po=-v`bKq<75V#)lL4aaD zha8D^9LM}U*R^CJCK+9lFg1ZrFh18#g}u;O9U8+)sY`)1Q1G zF7TPV@4orEoj3gYj$L=CL$h-@$jBX2JCQ>mz7`)|zJLNZ;?pv6xg7j}k`JiG03O$l zCcx349l$X$!;stO*5cDKC6zgj5=3E$P+JbIDQs(tYNJb{Ta0xP=OhY|(8ByQg3sqa zws8YM*L?ave*VsZx8J_@`RAXnzHbX)vGUMmmv2%3v;Qr;U29_U%Iz4R7)PG$=Lpyf z2-5Qjk^l`zlu#s>;i*B z1NVg~P!AJq9$O9H%L9?s^&iHt2~$C#kQ>0n>h(DG>Pxt0tb)Pvz-IuwHv+D^?z-ZQ z*I&OYqM8fE3i3f7PNJZq<J&!*+~(>~VHB^IsDPU!Ob=RD#o7nRBojyZwoX?S?# zwr$(C1$*}F>8_Z7Rl~#AkB*LRs<%4uMs(iS1ON__9w^6py~+P61wBc#6qv~7t(cJ* zjZx4qa8#D|Jgyx*%XNzVoAwjVLYkAhR8|S8n?tSL#n{Nm<~5_ETLHYjVgicg@~(1u z0P_nCxIsbkc$6x{F%S_|JB`szfVO~55p$hnfX_S5_mq$#gqXGO06CQ+P@E|~#UnGG z%04ZDg6kFF70Z}!Ok;eo>=Vb0D<(j3Jp83E-L6aBMwG${N;np}NEmv&hpxn`S_D+N=QH#3`N_%2XCD39qsO~pcZQAH)cpMXKRx~Q)2|8v zrBdnfHLF+u6*r^7$$@2~(U8t-q1HmJ5dn);;N)?X3I*gG0**TbMsQIZ9%t360qr`_ zs-x4aq1mWQz1|8Vw4+2Cq_*Wb2t14u)H@+M-45EF?xl zzg7rnHkq|8x88gU7S7Z$d-Mcai3^V}kIcRWw=oNk036pOuYe$2 z&zFqQjm_z}XS+T}AxAL9TmVJDftr<#TCL}OAE6VIgapdmK=;TA%n@iJHlpNSCjnXn zlqgr4uo!$Ub!$41ti=9f&%c`Z;@!wCy!w07nogM=>ubGr*^Eu932Z4`L zv48~^}e$~x-$ zUWeeiydQR{C`!z0?K8BrR0v5)QnMSOIX{QP&LBz<%N8q29Y^q0t5s~?yt(WFVoEid zyxyb`px0%ZNsBQcr8$4%@^w0ppjaTVYp+0wYfTp8gaFHHV5I`rMHEbTD5mZEzWA~A zWnL44xfU((y7hh8ptzvkq#;90JfYAH+qi;GySEmGqR zG`=Te;IwF$&;U8}-|`Oc+iMoQ%yvljAaJXx$he~rVu`W$IqT;|z_lGP z=aQNzv5bgwomfsyPvdW%d=k^APU+TO2p(ItYX7E9n{E*T6vut{-FMUC;^GzD#5b?s zxpNci0Pp}*K=GQ)c4$zp)uu6Hf_Ckkfi$4yd1bY3h_Yfy5KtCa(gSIOa%zBQ5>XN} zM{!1sB}EUbOs}Vysl$iy+_TSO>d2Ab(QTh#40!2hKl|CV>VM(ByY9N>>K!|tyKcvh z0#l-Z=+_bp3W=b4c>1~lB|vO&QF;apV5LN0o-x6%2iU&XZvmDFXc96F%i0nXb4I_l zaBZ!^T4uv&U5FF6HlHtk|MG8sQ{D6GtDpL}XP)_u;OHxT%a1(#@Q)`qY$%W+TMW_H zC1uc*>X|&$zT#jk^UgLFJd=qkjmNyB`ndnjRR+El&smuoaOp?8Y=64b2Bqc*;6{dL%VN@ zGYOZ--ydr{-xm@_M@Bwn3DCeUA0HpTg8m}lV+}-~>zlK8DSLx_P6HK_3VdHIp-rpfcXfjukHQzC&B1MQ^$Mw3TlO{pC1WnVE$ja0rdGsjFt-7!v ztXns5vxuKX{VXG7*+XA9)?jc+fXf0}!r87w!Cx3aC&x5m#adA>$wPgDRaedJPoYhgvquxPTzMirj+?mllrm@piE}yF$cIxHf!$- zg_)_#Y)Qs)UpJPdK^b7C&}p`?SZ^4BQ5SKyOQ5iYleQ4Cf-WUC6{Wbt?A)xke$ARS zUN7BkJj6m_>*ZSzMlEf+Qr^-?6wvRxAnU7*>-4gjF0}uY~zS`!E_d(bgU4&|2hIO(5!a5IQMAM~KokU79hV z-4r*FQoq&2G=t{I`1qs{5QnilIx>cb9=@0Cy(KRcO9Auf03&Li=`iROH30PN3}gD+ zzd&$k3YXmQar{d>BwvKS_~MHs;ehlB7i*9tG4U^c@rziyVG=us6+Sj|7;hikhq13c zhJjsIpj$g8ZW)WVL-q$vcJsPt2vIDQar8(YKluJBEG{nO4FPHFNr$v}9PRLRblO#v znm)oPM>28@lCJdW)`>m8jQXKhk>5W9cf%M8t5&0)q*6aHAYOC=Yz$J4i%RPZ(nD{e z_U1v9=3YnKm`8KrIFeXeY$2e!(80od2d!oorE-};a}A`9apBJfh=JXZ)wlNf+x2rCzr0NWKJ1ymf7c!it`cupdFbDfBo zB;w0#vq&hxGQjk7o$k<<`<~)p;}b?c^LU_?V+FW-NFL;RZ2T+-*-b?dNh z^#tbfx1zfBHaWX!>y&&TMiP%nm&hVWxAt;Iz`9?EBb&JVvej&dN3nnZe%Aw_TFs__ zy5^dzsl5&ql$4V!7copB8KQZC(_hbLHNF6TaQCKL~_<*L4Vjl4)^SYdSYOD}?2^Ns?!q5PJk>4^m`p z#SYs5NtBle9%t2GuQy1H3kVQCleNRfa*S*CPNPytF(l0pMQ~AURVwer06c-fk(d%v z0~af3ku7RoswUfHSZ!O)Ski3HmCf{ZftCPpR_73oK27S+;A~vX&V~$oK(d5*F2n+* zQ40dGR+k_n^J6V>16qPuj51ZLkVDv!2O!6@fXccJ8+7y*;6bnTWrwKG&g6j9_X7gR zK-t+dho4e17kaVc;*YH5wuAmG%CbuA7)#NoKvMP1Oiybfvi(y?K-c4`$t7DhZ{EPK z!R3XZ(GXA!fsCtBxipI8Pol)0g9(5s$8kSCwP4m#!s{eFwX?Ab4GCchek*9}*B`P6&|mK#H~m>)V!`55q`IyDXp? z+axBWfZ!lO5-@p9f}l$?ahWIOA^MH|`Is;zDUs}1(^el20<1E{?1@cRgyQ1%3mF!F z8cX8wL7$P*cg^vVkia{#X5N$!umMiShXX$qXBr^Z00N#$7E5qV29skw5)^v?*ecFD zXr!KQi`Yt`yB?;n$(xpwW^-7I9Ta_kowfK6*6Dhqy=#ovcYah@T2@3&NB zm8t|qi;dQ<}Nmw!|#0OJ01K1 zjwhaYV%v{?^rLUtA8ineRiss{;2>^YHVY^ARM@FhDgu}<3)m%O*kIy3{`li%0Out@ zW%*L(bFP<5x@?`zqB+H(XY`H79(%0&)KgD&i6KXe)fQnQKiAf}iAV4;z$;6DPJM0W zO8F|;mWzB*Uf|1mEv)gG@TQw?il(Nf8~{!q2advJ7}8$yp@UqIzy&XNt@l zH*TC^!?VcZZ52td$KV#UtnJVAc(2<}zzr07U_2 z#Os@VS)1AG6L*QIej?rleB3ujB4!=RI+M^6L&d}d{yi$}Tg2k9i4)*ds67~!HS3;) zivIil|6f4gcmTkid`S_wCP4LmES1s<6p477;C~1+EMO~s|D3Hef|gmrxkuVhfR*LI zv$=mw@PA5eUpp}|ky2?wF0t5*mXe^C83X=7Ul#)2#b;HYIN2=XF1LUT@Hw>aSUHyq zoSOhUFPA0HCRQ@5S{_q`fThC*nB}BcA~IQG(pKDa`TzL|$Tq!1;w5u(9-vlW=cR%3 Z{{bMdmC$e@z`Ote002ovPDHLkV1n%e-OvC4 diff --git a/public/img/emoji/oncoming_taxi.png b/public/img/emoji/oncoming_taxi.png deleted file mode 100644 index f78cf3103b8e3b6937a2e47430bd216880843d2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6287 zcmV;A7;xu_P)4sH-dojM_3~c7ZRX9sab~y(^U#Ro#2jXf)8k z!@S{$A_)fifDh+Z^;YM*=iE9~r&_%C{3Jv16Ar_hg!kUH>Ap~UfAG}F+-^`#Yp~V< z0)W;UYb`^I2n>S}5kVYzf3dBfP)IL_HV9gRkVe7-=t-C}%voRyUoq9_79S!Rjjm?VQhVh-(IKJd!i!q30w z_WTFF@tycfZ~GJ|7tLQB+!e8VyC4G2T9kq#M{eW8AAXQhslbgl-pFtN_HU7#ncd&2YJ`No^M6cJydXG}DeV1bY&JvY;@Rx7DmWm7E|n~7+iDSevL zbFXspwN$F&#}C` z#PQ=V@ydx;ID7gOQ^6Ug%L_y%p1gCb6yDYXxI8jeD=;xpqdr+1k$WHuYzE z7u&aQeS*E6@n4X?yVtQimJ@tt( z#%dwCD*A0LKshS<%H$?$vo}%Md@I-AcpEp}a=7pCU45svapA&Rf41Mj7r*pSKN7x1 za}9Ryy`>)=Uu1P9p*FUeb}QqKJMQ6@TaIx3!NXK%4^i8E1LcVsnt2>=Al{TZ;J<&g z?(eyK8}*{$qyM8$>NUk&inSJej8fnn9d{`soBt-dUU__Is*jwZAf!+nHC{zP+=GXI{QYzNmQb-Io}zXo^Ka z8%=0HiADtmqcz$r zn!Eh!LEB7 z&;u55BTF6-Km&@Q#p6jWq=_c(L8k+2YZ=W(uW!3tzI>Sr=g#ob@l%{Wz4#kn`}?`S zc+*qh{`c?w5Bv8`9@w)x&-U4XvAU%kt&-2L5f+!ohnENm(QSikg*0QK(YC~ip&e_w ziNZS}vzj;qh2ZE>2t8WB7)K#zDds$-qN5Ty0!he87x6Ks*d^~%iW*AFQJ{xTA?XGm zzxS?9Cm(tA;=^y603xD(;RBohaLd#xyS8j6it6~R$l`pNOO24rt&p|0p_>^xsU}Vp z_z=kjC>5f#LP?)N00IC?3)VUW@Xq0EhRqz_d3=`O(uBZR3PGP?MmdZbE5}S$x|B?l zO1{PJtqI-6dCs40d=<#QX#(7E9ltqKYomh0{MDCdFwrz&RK*mEl&WP)QHj#lB2)cw zv0NmIiUj!_xiG{80a~j*4NCQCK*XRFL&q)N38_m5<1|Uh`b^V|Zo5sp*s+7qUiF zSvYrrA3XUCUw%C0uHA>&Hv7oG7LkAFz0cmzMR3ooY`x=1?aXC!l-j=A`Kb?okeO}U z35$7@XdHkCj|T?;csFtq&j@g(pA}iRjSL5Bv`+~LC=b?UWJ$u}`STq6{8u>l%wt?v z`6mDO(fNP%gID|?zo8LOD)DRHRA^>n96q?8s4|9gnxyMc;sMW(3%}tW$9jO^yzf&{ zDvz=6rt3NN+)H#_o$>1YZvk(t0Ap2tsTJoajn}EyCka#z)}zu zATuhUUYlTia*CDt3R4roo?X*2{p!4*e?tV=vPJ5*ALNEq*C<6riunkQK@yKL9svYK z>FvR;Kid!U*spU;53Q0>1t3Ff056Qbn;}P8hImj;Q7lD_P1Lz~q0Z)7NEoH>2ma~} z5g;n^b7R#4=aUMxS{0qolOcEkn>uRccrc0r+Vgp)$~6`Vxg0~9cq|?V_;q0}D8L~i0PAAp zY7jgC9`6Cb;b2raqh%lpp+HF>rxjvyRK~|pg)y8&)GEvOyRE@jCus}y@tcDR6 zY)B!~C}9Ne5U)TSIPl&A9yj#D4qo?&fLz^w1R1UTUIs&y!V8F3c-$}@6aY%Vq>8n$ zLK0MHrFmv1O#MJVbzeN^mwzk)4jdT2@$MTYi5$o~d*PV|A4+FuxfJYEfh|-7%Xw6_d2vABP%Am9!5N+_8 zVNLS%!XiC8#+Gp*S1P;*_{@(a!2bRF-&HIY|4SH#Q^jbqx@BfdZEE~D3!NOX*I4IS zSzaNdflU&;&xZNxQO=Pg9WY2URJ?|XI}kTWTbGH~n#>iqk)Xk4c<)EEE*gMJR3eHB z0|$)`2=W0s=v!k36s0iUB3hxnM_h_V=%HAM4Jw~!WwFG8aoD_d>eKhV`vZT{X)QF9 zBst%1w}1DFgQOxX0!whxFR` zZWrHbqLUW3+oauSu+&!XLKQ=?U^A@^&p_iLbD&;8zE3B+`CbTwv+MR_$ z;W40ewFubVXf#OElrYSbq?%jzH7OPIoL|(eoSnmEZ7%g%ynOLEfwtsw7VwA>OaLMd zr85)>VE|Q=Qm4I>>Kj=%&cBRC5RaDdWa(+q1JD6qChXZfqdb04Rj6=|+H)|v^e zPE2Ff(rkIwI-bib&}cbYvC!;p)S&2&vDL3rX%+wW8SyQcQDv@CHXjRwRV?8(v)_I)u*j^jA z<=^AN+rTvd@K~H>J$yYedCToM{Q4?ZEY1z;L) zi+wt<8O~e4A>QGA2F_tLlq-tKx@K>nxa}sP-SfQoO2X|owmHAhp6l67e`8hf$!oqE zeBV*|{7)aPe(=_tD@=_;J_p{0U+7T8UD{FB4<(O}LYi0R= zeLkDG<~raX?Ur9TaJcZn>4^e?@&hM>!X`{^l9k1TrR5@9_8ub4Rj@V#QFs&}==ImM zBoGupDbNOxYq%8jAb><5dw?7O76;xBBg7#%5Qo-=<%_Sdw46|^)hSmYZO;?7mIuw0 zZCj%H;Y0GoQ_uQ4u1Nr0;9RfK6lUN5j|B4lPJcl#aN%m<%1lYQZ;0=#oe@UG}Ut~3@YwDwdtm8tK$fpYym zlpLg-3c1R07SBAy=@%YhcFzsuOA#*VV#PA32%SZIhU-&Y6K6LQ7ArjY)JYZ=+JvD& zX@y)N2$G(qTs9oKbq_9U;ahWHDrgB15u6yLPqad-JoBgLSY0^F_|y)nlXp=l@5Sqw z!o+t`rH5!|ZKA~nGh-p=3cY^;TwQ>+$sX7i<%lA~=KVFM_Zy6Rfm1*15Qg7j>+BTe z>Sp}b-7LKFE#{v8I+L3x2m(i%_V7N%*#w{V>3g`eiA?XIq^3Cb@UuMj=sBE)LGM4v zQHn}9>u9%HSeIh7V&|?3TX$|INKfJBzYgITq64%pASQ=Mjvx$au69^kUZJ*W2jg4r zBrHro_8rc?e4JkURcg^o%*?_{v&6)!8K%HJubBca;I>LpGqXKUHJ|eIG2x33&(dgA z5$UpN`bmEI{#V$(RR}^w7O!&V_$g}R8m%3glu`+ToB;sSK`I`T5BbgCxR0NG-vTSm z4$pmWj#o~cXK8r>6T;3tRc^WYI(F}xVRm+c+C-gnwTllgfN6mDBwbItBcMZiT}68> zBVWytj}$@rryPHw%O^fN$+?R)@D;|QS>AQq^NiIJCZ|L4#lXCCT6RA+?@w+hKt9jG z@o_^@WxVt({LMp0sn@sj?w^hZ;rY}vZT{?25x@V7k5DWt3PpuDMXPC zoAe0fBG+#}$?8&rI9B8eibByMy;HpOT*e>&<-G*CJ=}Y56>Ws?es?>cd$`W~Zv6)e zk`a{*&A{ykt}MV_k=*zpQ_E?=Hew$7-gS6Y;lYnY+;iv6z#0>ue~wT6@11<}`^Wj< zz4LU8A}oROmQ2_A)6d++qu-8cx6XmH;62DE@GfHn5CKHcS^;3K!#lt3Jt2?>0kok~ z+ssehy_sKn&$lS1Yj|xCQK&TGE04_5>~7)LKV0Sg@4Ff3F*)@#fBlI`o_%?Sz0;=% zj1Y*L-7p2Frr08(pi{_Nj+19BK7W?$ub<@7(!(@ci%f2Av$z;@@>~%S0S{WkSVi-_ zbJy_?$5v=w{vM@DnOrVJ>tSI;2v@x&qDPK1g7saT&FIEmF3g?c%e^BUJ+h0L=vi7V zPnNhrYMeYBaCzx8hYpXiwE8HQR~D$xG-<51nQI9LW`w*JE=oGRp#Y%{#?XRzk53%e z?VO-vZtUl3m0J$y@#Z{FKWW&v`xbU@Um~>@?={Xk#0a_E1WEidVLs2yrfq1YQA!Zu z^PAky81as~D_FV63oi)Ux8KN^S%%D_ z1riwBxD*yYX0$>fWIfOAdoFS8wBql-*5Sm7ReHS&bEjsADlvE5JWt$#VQqr93Z*pC zrxJq#oO68&BA(X=3xL)T1R7&Pv=X#va9}-X2i=b6p2G{w%{v}`C}VD}fpd9YJ+*@% zpK$BU0;|iQ1w@hCPyp?HG!OuY6T?<_ilYag;5(;|@Wc}(gfdaN%`d#?F~)N9taUK%4C@_&AR>V9opL_QceEqRo`RU!D;;te6kbNZYY|r4nmzTW+3~-{Aj1d*Jy;aQpQrBT28;OGB~PoT!3*Ad zyaNa6h5{fyP$Hu~p9Aj&OGr1-C?x|CSlq=!h1mJ~&XPBOepa4Nw|0s@G|dQHKr#)bk6qaUR;xiH7Xc%9nR z6xD5Y3iUeSSQVuM5RU)=Vl-M62#Ym}#jU_3kOKs8Kn5fO{^(7z+`5OUr3hCXLD3i)5`eI!ot>dm*Zk zLm9;|_Ho0Lu@{BW2GKdR4soJDWSDe4WbBtA+ykx){u+Ik5_BKKul*gU;+3Ps3Q9R_ zmf-qyuFo{X#~JBL50~^%E+xw#ODt(>2fl460G@PUyayb;UWXTtuQA!tY}#2M>w-6< z3Qdg;2sdomuJ;h1!Ey?^0$8pc0i^TLJqZ%LwqhETD0~JagG!dUvt3%Nj;Ion4R6!} zTrC2ev)};8lmY)NGv}x#6Yexn)xey zw+JIB@B&60FP!L->^p+-ic^n1MLtppTwMS>iSyt+#HpnxCEmYjm6sPa-@N45x-BDh z9)|B3Rb;#d)PS!KDOZ9Bh#JWuN>C0Y1CQfeL-9KY6MBL0ACrL1Ho-Y?u<;rYc%60< zPq$B1HDpU`{LvpghOHa!x<6vIIZz1az-FGzjfy5e}Q z{L!C0P1f^NcZbB8qSNzuuk^+OK)cbhEU!7LIbp|)VRh0_8P{|>u+p%k-jij0rjS^V zwcv(P@K!+pr3OT62m`?wA?VWxD4>)Vb{;O!YB>TAC+96IO-qnTd*f2LWxv@_mQxpE zY#gu{L7}KvZl?77z+rk8(hQOwq}G#JaMt5Iz*`vsg4Qr_TzkSC_qjp7%MFSZ}JYG1%hpfGh- z5MZ>z+2LciX@*^E%f+-m9)4h940(A{NL7b~Mh`@Bic{|7TjMlw02WsNHT4j~nnF?;UAs=_Dzkb&2%h zM|qDK%_IWYDCvE@o!SrOb0MmiAWGw%L*ek=6UTAd>-D|_Q~?77>+E2>p#awgH*$Kt z^Q2c8+c@q$;+(%f3`6?IhZj98dmYYsTHQD;n&h*941MP5V)i@B~QETlN0KIOe>_`AIKwp8fJ_6Q-wBO(#6{A^S&*A2^ zQd+4GRr`WURS6-Wswf~8LT(DB#i>HB*xA@#dvCLIF8$9ryB-;PXA|!(j!VDEr>wNe z&iQ?F&i`EOWlAZ0o@L?lt^Wt$;2On9`;UD0kYig9*tUDfcHN!KVjg4mrlly!N(m^b z>LLs;2oWCRLcVtLjo%zoq^<=pegBi+xaZLy{5YNMKb+2H9oP3@*$$Xx0}Oy-*c34Z zM1Q1!6dYktf4o{Macb+k)aIWZef`%jp^XxY;2jTqf2_~7pUaQj^jL0S2&r5KL=O$>oL8xFm;*yaQvl>#U5AP@+{5D*+Z3{YDxV|n2!idR1QQzaBnoqFw8v)A1N4j%c= zRDRpw9|p&FOy!4$;AJzgJs&$q`f>Zj2qwnz7|f;7=Q|XFh0i(zVkdZsO29F{T*bNB zB0e~G1sAR?B9+adFPB3qlY4Cb^2I&G@~z`<{Py%U2XM!ip4gQi8hm+V$E}kCV?%IK zeHb0;$AigrR0nQZ44Jftv4IQ@?YRjL-?bY@Kbpm> zN6%o+ap9&s*p4@ai+GuszI^I$FP?8303+S~)n}d`9-o*T7$4Q}x7|F3Z{I(KT-wLX zkn4QDrnU9WE&oABc z-h0o5>-GRKqz?Dx2dDeC<-lAIUzpknE)?EBa|O08bPN(Vu9O+VfCb&=yKfuQ46nRf zLBtfXl`6%<0N!3V0LS+4>&xfhrc&t7^<7S+3Rt zL~Qn~ccf(iuA4gO`o3P^+%%BGQl*ZiYN)3buQ54wHQO%bKuwv-Ke$|VqnZL5u0Xg830&hn+$|pz;kT$jGaLTJae^z z#kvH8;q?jpmb{OVoZpq{RVo>=tYS+DK(WRiOFxygRFJZFPk*5j;D-<2j+;kvs{mel z=L}}&%lZLyDh8%mOuSMvwhX}RtW4MALO@6f(St5vTMP@OI#QmCokQ8R?=z-{olp`T zOR|V%6kNpCCn5mc=G;zIC#qt)|1df&$wf;W|)ReA|Ze#tI}4cA!_4A zZf>cDkFS;WUNC`<+iY(QJ z;Db==y~E_LA*6j5w+?5pe_{Z;N4FtC@eq&#sv7}VOtXNj*&q@E(9rq?gbqP%Y!ReP z0AJiUjw1&qaJ@43HSSmvng!5onlX76P^QE1P;^!Ul-%$bR?Ye&89Ej-ESgFeLA0p> zjnpeah#Z#y1F!)OAHA1mmg>9R;`+A3?V}Z8PbNG06aZT#_9?Zg{_w2<$ zHnr|)uhR91b+pv3bHe}_CJmuPVh=Edkj$h)7)o3%R zq@d2Rjx@Z`W*Y!Eq1EeLZ|6DJESd@Aq#h7&MH$En7CGcXA3LW!2Wc-p0&nJ^+IGWr z09Eo9TPStS0k9SD_^7-}@HMhhAO=9P29tqLUI!?pR+%B9g&9i$hwE7IU0VlXTh09% zyRLI#)n=J%)*q2s0=TKp(ySaccn}JNTxw9JFRbB7Tn7l%d^`po=?vp=;~}7fZe0VS3(89PJOk5Kh9zc83cx_C*bRd2s{Ns-LcApJSZfMl;$9%$ z4Qg9tFmzo?8Mgp513FqZ;7Z7P4s{ z>nZCw=Kkc4#p0cyT4(xkunA%f|M9i=kx6+C&Uo6rR4D3mhh8apGo&QqG1H@^Fax*{ z`1^^Obsw_t+WL$^L3X3N#Vq8+A}Ez&20V5z<$F%zFzJpAN9=^}3rNL7rNBH2sva*f<>3w;{0?; zxt2lpGiai#+b6Pl_iw`=K<=KGD^iOrz6Ie0iaqfl?s<$tPGC--0#c4u^lj%!CYHQ zN?Yl1UoTftS)ND47BMC*gsL+q-u_EEKl*hqmAlt+9Hg=~EQ`z-ps+Q>&^SUDs8y;c z7Z))tj_<$oXl$>Q9(3(*u;IAZ3FQ7`k;T8*s*V{8A6(3C%6D7 z_vP;J91NT0dAD#GKHa~p8Pi5iw zQBQEl3}Du#&vQ~LG6xSr1ho=M#lnf=+_@LdoOtt97=`5X#LC+T5QpFc*sen`vTm8W z>rg5)eAr86_PL%v#%$ZM7)UlYN5brMh2UX5n61~!AJ)o+ch8>w$1wmhhQ}r14BCBf zuvJeOBWJKRRVL5IPd+(-q#&{Y2FWRG4b>V2ue5=0jwS|?1`ydNJ2%i&pvasYkgLR0 b#Wm``JRhYwtg$mC00000NkvXXu0mjf#;ijj diff --git a/public/img/emoji/open_file_folder.png b/public/img/emoji/open_file_folder.png deleted file mode 100644 index 2bbbbf5e7cd63e53726d1acd25c07eaa1a6b0803..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4292 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 B+1~&F diff --git a/public/img/emoji/ox.png b/public/img/emoji/ox.png deleted file mode 100644 index 8d98194625448ebdbc97beceae1dcc23522f8b75..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5935 zcmV+~7trX5P)Ukq69T9Qh~&+T1AyAaATl2DQP-Q>m<`myj{=YyUe}k zo_p4BdG{BcpGJ0M*GlR|fYj&e>Ky5O=hOQ=zu)uxp7%YH2OM!BKINVNWRYhdLX2N` z(f+QB{^t*G?|g7```q6?efHjebo<70*`zoA<%cieXm5^CcnI484-t$rMAyKoG3*{- z0eAor{~v%o@(9FVTKm9Sk>OoQl76h)TX`4^ay%McD^>lgBE%m#fAPM*n&w$}>i53< zwOc#;*SK}3+U+b~9i;arTq1^GNAvpnw6fovX#0n^=IUwX&|nO`LxdpwKT7}zV2}Rv zgT+d|dPXwwmjn1mOBLR6`0Uemz2Ka$tck6+{RJGocpHn|U1U6BrI(@GX=8P(k2FhQ zv_(CyaOYr(;YoG!;z{{meGLEond9n7Brr-KWEFhH5ef-EJBIHA{yO0A5)}V$5yU`wNr!$wDJU}Hu}i&1mGOTSm;t? ze>j6N9w9`8h}+tlx@!Dxqixw(f5XQ(HQs-xia2;-((Gme&Pe#Yg0~6WlAt}n;U$6y z{1T9eb)?cD5e2065O@UyM@TqABM_GN3mNRSBN)*A5MP4;0=u+|?vGwv{e>U?p-X?K zUr02S#zH%Y$e|hoA3WAK3Yc005D1XCGn`?y-$JWMk!Aw$3?c=<7{EX#;eCKA9jtTE z#=}|%7XnJdIiy&ta5>brG$0hW1Ju*S~Xsemg~{NWg_a zw^yL(=3rbvNI^s}MEYYP!deeRPqJYQ@IoNC0B0?fcJ#S10gbY#8-w|xIa!o;mV~MIt1SC2);~Dm7w^P}*WNt#M~qLP|g>b7NZR$F85uKQrCM z=sI8|UIzDP(7n9c{<&V3B#Y?+-@Gw`UfIU_u)?`>0~Be3sx}B7$U6zjM&rh{F;!l0 zMtmljMA}LrixhdM4Iy)c;1R5)MX?wmLxA@d(burdqsUV5l*4L|+*mA8bXwqP4rdkW zNwqeelxyAxblMpPYdxfS3OEmlCCMB-&5+~?Y^|Zo3L;I2%-*~K;~cyD)A~gD&t^hA z{NTpmzkNMU{~Gpi_!0qUf$TkNoxk-1mp9+Pvf9CTT;jcN-$s!OIJ5vRk#{%(2ln@8 z(37ROfL4)UrC*?`G(?LN2_8U_=U_5{%yY!Z;6($(0G3F2t>9)FK}1q_RaS^0B3nMR zUP@p>~pc@TYWM~yF1Qx+r4#pS|7?_aoCenAoIAofmQvjSvTsRl8 zn5))Fsowv!!^uB>@9F-huB>!_rm~BFB|(6=u#JrewpTvBeP$K9(Nxt|FGVZQz@$Lh z$w_0$-Nh~z8nw3Q6e(mT&<-gAB7^{vR04eYT2K{(vEWHTUJy(JrwyEUNK=W$yh6EX zkmV^-?jc12kuXFTP|oHM9ONI7MP!LYnrCp{!+S^i&59O8UVwok28-Yw-5)UmX+qur z#?kNP$dAR3ZFjPNKT-ZSS5okn2FEf99|D{U@GcN}re1(^0hXlH5pG$1rx7`WvjHJGNXe0RTWEC(a4Er< z0E-ML7{DYMC-)o(0U#TPtvIcyHjE8KQTPX+oW1l_lefF@Ot>hyd#&WL`jI%W5XzoRhSq z6jbRDL8Fu2$A~0LAyS6mEqpLwEYd^(i%8Ohe8@YC=p#(+kR>V7M4&BsCIfhpu>?Fc z(n$EawkNZ3y)8TkXAF6skiI~(TOmTgT2Iw27aEgEMT-Cg1d~YHk{(7k7Ssj7!D|O= z44D+q5;$$)l%k3SL_{8-m7@Taw{lu^hyfxB_~-#dBFP0$9Rn6YW~v=@RS`knM+oN- zqo-~GNd&Og0v=#22RI|&NLw0#0ZcI4kx3^6@R_!|vfM{~*sne|`^Nq!&aAZ_*xc+O z_<(MnE$1(^4ba+Rp&V3W(P&3iU+HE@Qx3^N&Yrb$n8u-+mhd)02o6LbiU{g|M7XA* zbZCP?COIWXXF;JV;VHal2!ewNMj3)Lz;)HW(rw5Lv#kFBtgPDOS&(*fTJ|*DE$fHk+c|+MAFRXg3*}u+EArAH(-<| zJ*tI<5DXFwqRnVBk;u{%K{-TtPy=xWnI)86yo*rEP*-Zko?DmVoguP=Wl=f)j5s)e zx>+@!KRB+wS!;(PlQLbkVESi6LJgL#@wkXk6wT2fAy>3B{O^Xc?wlXxsdBW+H zaZoqFIS4Lbw5L!s9+gC*_m0|G_(*c97d1c;@Yn-D52&)}+A!mTD z8qAKTu*PCEYcN^p9RsEWL*Fr+jE@jFUI%sn^So-la_6}E`ceXewKi;Hu^3epQ>ku<}Daqux9(tLJccQs8p01SC9sYSs+dEbGShAd4f%32?g$b|0Y^xa*f^WZEZ zItNoXDCe3Cu-!?KGd*9#}$Tm7AO+&l9_2^p=(Vci8BT%80B^qYkJlL*21IEHR#G#4LUh3MlgIA`9$7djnG7bz%yH zw6KTkGI^v|Wc{^4n<8x0G-!;2b`fNXOdvQ<=`PI*0FlVhwSiU^Wo<~aQgDdK$l!Ei z5S=ION9U>fc{``MudSnfJ|ZJ2aS+H16E5ic41vtDY8-~M20ME*%o>PEV}-+!{a$7RfASr((zb3Phqu1Inz*$f~pjPwpfA-L0es| z4PvBmogrrRr)5Q^tB4WyVG{jRjnw?{UsBXs1XdM=B+ZrOg+0 zS@52AjWvzDh|#pc!Euc|<%l6xsYIaZexfj|>`f!#CEghP-T{W|E%lLXD89hhXzlD) z7oAQ9V;zP|XRkfBwpVa6oWRW*(x>1Y+BhihF)uYmZyP*PE-;%aa4u8OpgpBIuyE2E7(Wxko=`gEqCjJsiKIDt2a zDd5YoJ;)04JEnG9sl|j4CX-t07gWJY`Q?5csTA~Z zJVv_S+kiwel$A!=SR!^&Y1}z(&?+Pb{enCtZMA4S?Y$@Y?H^Y-o-6cPDT-9WIgK@f_@Ai_7dea^Wym<&i4PBqOo1*6*pH1|S zO=f0ob&#Ro$uXSN^kCgiM$VIG3F&ySQouAG$0s$Ep=zU6bTUkie==<_nJMgzDvYKY z$ECVDsmvDw;+H#xY$L|ggH8^Sa1`x~GWMcW*c+CVOwXO_P`+?Bw2W1cS*H)5dd58Y zzejcmz)QTjh_?Xs!SmT@_+s2SsmM#o{Np>L5};c{;w?bxg)d~RTFZ(=;OX5NQqJ!lZqCrkQ=GnM zfNm?L-JmuBt#*3*_Q~S&izXxyOmT(~nZI^t(L6O3Sfmc>+7a}3|L}UHXAUNl=Ih7p z^r22CN8SqXF@kXrly=ljr`FmSbS#`}f3ykai$DD!zV%Cg4EvT5KtK#D?G$G>JJ=mn zI2cx#Du;SpeYU+Xf1=$>25VcZU=qk;LnVYv-z{K6>`nL7$G10EKLU)20FJi^4lzq5!?H51L}1WK z(8{t|n<4z?ZYRC@ z!mRqW{b9K~9aWg0lwcx23IQqjd$zZc;QNQaHE(WI#vXD81WUV0I;Aq!UQP1&Ps+;L z$wJ*-mw@+7XDzU|k^n-QU|JLj@>D`dhUrZ0Zk-mN9AH|O2Gbjd^Di!HO`90sIGWWw zU~|R(nbs6j0beUW)GmTcMhURduD+w}r)3&`Cq(<$yfknzk_RbmCon9$r35TnEKlS+ zGAZZ~_2%9Tmf3$1n(6S-C*iIiLk*4jkJGu*?K~&V3c(RMpDkbT{e#&69z)EHvJ{#3 z_Q%*8m;d(0w7GsVE2r%i`z05A5MY!$BEwWk7T+=g9(@=x1aWrIYrS`UtwnKoG_Rjn z?T6p$e+?Q0xRZ%_@#dZR6Uti1L_iq}>-}UTzJCHP0qOZ(``v5(>{5{lJonroc8BHl zKRGEs_3Q}sZ(N6!se7iX_3zh}p-{#dD{>d#N(pS_&76N^d#jttRA4;U=(N~p%5+ga z`dx-rPSK2O{hvnT3c*>5xjymCY; z%~ubO=ZD9KB^qUc5W8U;4Bs2{d*-`Nb^qc0Z`=5b=P#@RoG&WzS7!SOzaOndIiawO#rLkx89zO<4@jmX0V;50<(od)tEm~%xK_Mm5sTC zQ_Alq3CH$E2fac*m^a^h3S0oPx39F`cj@fv&tAU&G};>j_z5`Ayhs^7d0nEep4nX-R#rQiMh16NM3IOFl`i(^a|8oh4v z)y_UFUV(R>LUF0r{?M7N&Pq|Fs49(4nrz)a$nOJQTLxD)kYDa4|Lnr){>3xf161=G z&wS?qw-2Uhth>$fm!)?81IS0i_|Y?`I_J;dw?@(Ua8#nH^(}De-i!`lOD)aX{nN2b z|9-cd^_qpo!EuSQ(Z3&~`^+GhPdxeuuOdJUa%^7Q=>CIqX9tJ@IGWVBJuDyFovPb9?kH~^F!<%EpA^M%|3XrurKV4pfJLwp#`s3rp5;K&nybliSm_u2UQOBV)L#>Wxm?gaB`8SWprPb6%56;I-o`e#=* zP$-vwXc+U&Z|*8A$_c)GbApqy`t|7$)7Kz?UFo4)iS{oa%Fa8l4uPjeM;MJuoXnf2 zZE0`rOfd%mY$?gdpHUy~w7QoLu9v{|Ic^-xz~TPaUpcdwJ^CfQ@eVjCAf6qCpAu4D z*;}@jwlLb3!JFTF@ND*tfBiq8{MHIqjyiZDKx$d|8uXo=g!oBa*aET>IJl2UTd+E;}&kb>=O*H zA7nE3zHhzNYOBJqTu=m#%GXui-2CdO{tdw6)nH2(&(EOEG*a9}%wXI;${oPGRtKB~ z@{KKYlzX{wxr967s16Q@?C_E_A4aA{x6LHYd_v^PWwNaB+fbBA{v3Y}{2z==8I7H} R<0b$A002ovPDHLkV1g7YGeiIY diff --git a/public/img/emoji/package.png b/public/img/emoji/package.png deleted file mode 100644 index 168434bc88ec51b521dc2221a45a6169c1ceda26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7581 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 Z6zWM)`YE>|*xw%_3Nk9-@;9cz{{ec}a)kf@ diff --git a/public/img/emoji/page_facing_up.png b/public/img/emoji/page_facing_up.png deleted file mode 100644 index 804c0d739fa2696513b4aba55a462df41f185e7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2178 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 z zP(-OXFP#$3pFd9!M4m8Y$Nc&8=OHNe061;%>=NgtQo{X&5FQ?GhdA;p)hUpRToLD` zQvyZ+fzkV2q+%}AbZV)jUJ;G#G$r4sH31nhT8Kuv+i0PK6Nk`{oNN~5auc215K zGsVF}pxgqvz{gM+6=i8C#7H9ffjoaaL4XqYbQv!%MhCMGY`93qERjIczNfFTS8;-9 zlU@l%5X@ehN8;oG1^h&*FajaNXpp3CA2v!rWh62XtE z%CztKBEJ43!wP^<0y^CcV<%3W;HyjsmUS4`p1RvT$oYfN+3#>2mFVfqe+K~evh-<` z2{u}7=*&1wgKMD(0zhSTN@%{vl(_^8BQGyqy3_@!vpYH&g;`=dB0Zl{V>O97e*-DB zx9ZtLe;B>^!>~sb8v`2)vw)3*S;DMf6JU?QCc>;?kHemTJqfdcJq>#n_8iO(W)E|K zPnTkn^gE`_+#R3}DtItdef~hce-onxLmMfCPnps2&!$vaz?>AIQxxzP0>ZEZ0E>eqSX*1`?Ck7X zoSmIN!I%CT)7)RV$52;tpET307*qoM6N<$g6PzGk^lez diff --git a/public/img/emoji/parking.png b/public/img/emoji/parking.png deleted file mode 100644 index c24af81ccf6b07f74ae25a2a77f80cb161c46cfa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3083 zcmV+m4D|DfP)-x79irAtYU8J37eB^x4?U#`mn;DP#)Cf@?7R1UQmyTm(y%Xn89X0{2MEe5g8-ly zEZ7*0TkkOK`B?Yedng(61M#z;c$hWlxd_VMcW(0ip-*~4TMo#;I8=s-Oc_fEUO=Vn z6Zi&W1Q9MPs^FXw#g1kx1{>kgA#g2d&ZCVB*o8BX#PPzr^zf&q3U`3)zGrt(-Tb#^ zbjNNP8Yc=yuu^8%j$wZErW&_iH^|NnA)^C6Hr9GrnPj z4;WsB&2mp*xOR#jvGjs0Pv<$7dd&<#!)B#f9_pl;zqX;436>S z{nzr+tn#PdXizB`%038JCJMA-Xto`{cE|{Xr;hwrd}#7k)lWvN zcfg*}{Zz+qp*o6nRo-*wIQ5S3$6v2AR5Anxoa2h7WWaPcRq4z$ zk;D!0@5~KAg29_f-B#s=3zk!}%5Yh*j=nMSG8Y8}RZzZr0z-G~M-zve5|?k! zEZ`+>5)Qp4cM((*Zo?~q7jV^}&oifEd>^c8-vjpoSi~c?0*1mEAP9x9B>2{1+eyWs zu6U@v4^Jl!V~GnUAaUzD<_3UxWi=ioB}q*!IE+GU>5CwM7th0y&m4#8i&!-jK@6z# zaMr-a3Z7*98Q$Te9}OfGVxX5jn*sRRn7tt(F4}mx7(Uuj0|iui}CGpXL1@K8Z;} zxXM5rJNhAVbX`y_a5E%e9jJpM{-U4`M7iX=??X2--8jmJzc9^hcaI`*e^XQ4k_$qg z0Vv=Ar&zmGeWPGw1?79f??1SUFa5~#JbSFe?yX*5)6=r#f&;X`?XY!O6`<$!lhc+D ze5Jua2*!{C&Os@FSB?7I`GX;Qw)*7pkze1)+def%v~39I9BW}Eb12vW5ZmI5ptbo^ zU~WPA{I{Cj+gD^|t46lXA3R#;7jCQYdp|zJY8-g$Fav)%&&35tEr7K$h{=4=eggm^ z3)U4o`wQS=$qm3L_`pcTAgoR&hCln)MSfs|&)u)9u!5@a+UrX^J?9u1GiwH5WyuBl z2|%-IM~W-H2H>pCU7bV}m#!^&0eAwnityJ@HdhY-*mFa`q5tg=TUj#z!;(wp)-!-C zh1o^N_^{$s=@$n$tGxqCw^kt^&j>G`jle2+E3XVIf=yp%tpHT%x};t`1IR28nk~oN zqGO~iL>7?#wm}zxtns|H`PcXYbqnE13nD$v%wQwP^;ZZym}|PO3kbM^AB&%vv6RLG z0#E7Z+#!8jpbAdGWDkKXmH39ZY&icfi`-T1yldq-FA%2~_dmm(^G!8%fDFn~h0-Dm1bqpcvMPxRXXq*j_$ z`XV$Il|}=?00t{UH59x+KtL3f)WK@*F0gBt&lf*8P8cYNNkfCN@lq17&o#S7sg2j@ z#izg7WWK2kR}>}fpq8@OQR+>l(*aCc!g3d# zs5^+2OUaSRn7i(q;zSZI8~n7zWqGTU$>%#2xEII`KuHl$xAGY01BOe&^QU4y^2K=` z`uhcNz(yZDSZQjO%L|}6PHS$1O5TF8vJ*rA1py@Miah4$9Dns#gRl%n%<_8(RpuIw zR-_!6jQG#zB96Y$fsTWk59Mt7A!L=U!Wo*kumkqxOo7$HSILff20(IG!4oGt{OWto z!k7oL$~&g1WN4r)P&H69nRp5Uh~x+toC3xEAur|30z)np9~dyO*#}_-E8bnndu$a! zVeK`5e(nZcRw;djkhP=f9h}LH9Yg`iWK2#V%fzzm^T?cD?k>O@>3V?B8!vZ?WT!Th z86vElTA6rnicbLxn#QDQ^@BndhNBmm&?*v=7RwhoG-uw)nrlGjf~Ib^zYjz*Db_}o zUyt;#H?mwZBd0U+t}QgSK0gp~nLHLy`bYX)JCyu{bcJB{x%Wsci+-Gkm4+JTCuJfE+rNiGHl)+uo_#F$EkT> z0l5tFITYCji=n`{&(D2)h7H3WomfEufzTH&E?5{bsnq2Y&3uXz!$xhR(xU3Qb#^B@$V4xGylLhGKcN9yE2<4%46wtWt3!MQXk zVf`cE(g3<{os0PaMDx#Lqqkrk_zLO(!}=!eX6wL45Y0{G2hcwM??laeu^q4u&~@Jg znS6)Dt?QT{z{N-Yo1t4KsBGGe-vJ51tmmnq;B-m8(}LE;iLPUA0L;``Jn~s8+y4lE z2&9zV<0I=&UemVkw4pUm*DZ1E5dcljee5fgcD)UM@OC7C(17Q!!?nPHjiJ+o)*RH2 zKi+kNX0HHR-I{s$w+Ti*hXmUZ16l#&g9sq&WZR1&PURaXU+Oxgez^f?f{090f4oGn z=^*-JAIIqqN+S?dmqIWGxDtcVrE+dbK3atK95hZ$GW+Pk#OVw$tqE)YWJY8gFu>rO zwo-fh?=X1v8wqRRSHKIhZV=&$K(lup8$sNJ&MeeVe4W`ZeUSQNr-6p5p6d5UQ&YeW zl7CF<-E4UOn;F>sON5(VLy(3b!4(!jl3 zK$p-k`t$n;ckU+`y8&-t6UO);uiygdNZUTfHl~QCkI*@Oh?&253OX*6=d`M}3k8sd z-~*e00oErCU`kbEfWiTg1u+PW0cF+)t#rYw7yspG?;t8bQj`Gy3fc-3h=DfHRMjSZ Z@_!jh5j@&=`m_K5002ovPDHLkV1k;5%jEz7 diff --git a/public/img/emoji/part_alternation_mark.png b/public/img/emoji/part_alternation_mark.png deleted file mode 100644 index 1e5855f8d5b077c9f80ceac5228056036509dfd2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2681 zcmV-<3WoKGP)}7jYR|YP9lnX6BsfoSBnGndK6ed*w1_I@oTf4AhcBrw~(%P=S{vWI<$6 z5QPL$*#(goT;OFvAw|c?a#3=zR3r&C{LcNIAB$7wScA%Wd;j>H=izzYhnM?#?!CYJ zJ4yh4*H{Hu1y}`G1y}`G1^im90;~e80u~RTdjg&%EPu%cpFV4w?=zV0Y>z+4IGp;2 zJlE-L(0F_Jjj(;8!wLv`hEfZ?2z%lfr2%$GoMKyNe3JVAKYxt>a9iiJce|lt*pGozK+y8>s`jt^^At?gtPeu?2EHU#!Nd%5O4e@p`-0W^5=KQfs~%8 zEAE9;rd}vA-VXm!hB+NhK;(EbRfRI@OpK;7#*d|h`Ym=iu%-+0=h|b*7(?)NzjX)d z7Cp(Xpvd<&)MoWWLs>60RrSJ!iu>?&QV%4()w#Yy3Gg0F12(!bj;v!eZkOQABB4Y} zXxM6t+Eja(ee4nIWT-R_rTed0@52lulBRb4t}^@%oZQqCjb-Ib?GnymOV%1>g}J-V_Xygmx`~DU?yBBBAnW2!0w1nSU=6s;6}H`t=w z&w%u|4dv_JH27|I?}WY4UGQygH(V&`j;8WI06Tt}^F`gTH>NXII2p{hRKO>WG&Sb~ zmd3==^(6xe7!9ow1eFa%Z6cb?axNko<=*Lygd@o|IGAX_@pOA>m|bzHtSc^;cL6G{ ziF~dbj-_`-?!WBdJ(T`_O9XiSg*wN*NDWm>87DFs=S+-xCBf9330r=a4O)a*bFoAy zRuC?g+Q`ab0LrhA%Vh=;W;(iHLj=VQS8X zW(kcy713H2LMh{NDJg)m>qqsJ!^woSX#}Gqb-$?s7CcTvlAIa4V;JA0i-2sE(u^~? zjJiBI-z3-M=aU)wShrbcMWZf@pNY^iln70e&JOv!mUvNTj@)ZOi#sFVQ{v4s9@B?6 zRY3T7I#uK+wZE2eJW~P{zRhBMm#v%O;S|Q6WsC}6MpdwUE>Z5~N>=F7xOzq?%=-KX zxpyj)ad0)`t62Gt4LYORglSYmty#%Pc!f^gGyz^iXjSG1tmb_j*}yoK#?r(XCo)7t zmJYsR2_xk#IvO&O?q5EMA~v}*YT|XN)a%mFBDS@O&@yz%sNYxN&&Zfg`DrdRwtTT% zOKl#qid)cGay)}kFppt;iYDH00q&2}#DuAg@-W8!WD&4lEoo8)%@U5JGIm8v@GcC` z0W`SfIa#m$H@?sKLP^-zETOQaM`%Qbl!*?g)Q=H8fl6DRU;P4YtzN3fY%Qw=U0%B* zljBj=xo?0DVsBw)zTFAvk`YFMdYYV zSf$J4oL)91XeC2SIVKXz0vIuqXrCvMp|#--A*X_Q`o3OS+Bm;eXI-`%!)FlnybN?N6J>D34@( zzFbS#9V>{4vSo~P4~EZ3`s%lQk-YI_Pe)2>>lxQ(p(9Ppo2#4N+0BePMV{u2p!$)z z@8w8t?IvLH2s)4^=~^ZNDq|Q`%XKM~E@foN^(AAe(Y2-SZZK+PkT?9}u1MVr&g5!N z=V;U_u_KfbHHl8Nn}7vFXy00QMv(+ux{Og0!PpwiP+1W?f$^RL4Y(P>U$F;?Eck?R zaIKm?g=}@yoXFHYCEbnj(I9ea7Xhx1P;S^OjFb-4b+8MSG8aJrI%DU4!&M(8;DqFn^M<3J-^AEnct!>HbCB-PG;l8WDbgpBV! zL{9;rTY+qTHk!N```0v2qN$o%K@DWPVi;>@uv(JGwc8-%)SEh~V@F`YW7Id{O{wM^QssL{0d4V7?~e4{Kim&3z40L3DC@XlxD?F zWfTN3DxxIyqlG9Xo@>yTZrDbNH%EXyeO2BE?E#bp5f|1 z_gkcZnGQ5OY%(KzA!EA)ToTSOhiO!Q*zC_(^$ugsAS$px0UGy#lo3CJk!NHSh5R>L zmM}6tVFWudruU(77Aau*U#X|hXhw<$BR^2eA-Ih#K_bSFkvNO-@lZNtfdVvdKSb`~ zuQD>c7^WZoRjl00000NkvXXu0mjf9mDz; diff --git a/public/img/emoji/partly_sunny.png b/public/img/emoji/partly_sunny.png deleted file mode 100644 index b3f5bcfdd0e3b0d7e6087a047c15ccc0372d8a9a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5169 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 diff --git a/public/img/emoji/passport_control.png b/public/img/emoji/passport_control.png deleted file mode 100644 index 675b76d378cd498a1c9b073ca0e999b2acefcaaa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4018 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 P00000NkvXXu0mjf=vHwo diff --git a/public/img/emoji/pencil2.png b/public/img/emoji/pencil2.png deleted file mode 100644 index 64c2d9b79b9f4d39bb799eb4fab7e7f91dc57401..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4348 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 diff --git a/public/img/emoji/person_with_pouting_face.png b/public/img/emoji/person_with_pouting_face.png deleted file mode 100644 index c4a95c3b2a2b10e60c565d173eb7cee4921b859f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5428 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 a0RIhv*jPGS>2Wat0000xJHm-CU2ZEw3) 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 diff --git a/public/img/emoji/pill.png b/public/img/emoji/pill.png deleted file mode 100644 index cd84a78ff75b02b4811b09704e6eeea41f1981a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5022 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 diff --git a/public/img/emoji/pineapple.png b/public/img/emoji/pineapple.png deleted file mode 100644 index d6f8e28769287d169cf8a8640c4af9a575039d77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5634 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 diff --git a/public/img/emoji/pisces.png b/public/img/emoji/pisces.png deleted file mode 100644 index 6db2c3d504266c0100eeb0c68c6f0376845c79fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4441 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 diff --git a/public/img/emoji/plus1.png b/public/img/emoji/plus1.png deleted file mode 100644 index 81786c1d8f5ed810fd8351f74996f9b64dbf5ffb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5075 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 diff --git a/public/img/emoji/point_down.png b/public/img/emoji/point_down.png deleted file mode 100644 index 658c6d91875c8d13a3be0a9785238586133c436f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3225 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 LNkvXXu0mjfAYS$) diff --git a/public/img/emoji/point_left.png b/public/img/emoji/point_left.png deleted file mode 100644 index 38a99b43f7f3fb2bae43bca0ea80abbae1485d79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3085 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 VV|nRLE*Jm+002ovPDHLkV1m6C<*fh! diff --git a/public/img/emoji/point_up.png b/public/img/emoji/point_up.png deleted file mode 100644 index 01896e214aaa68dc307a2f9bea3fc3142f593494..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3431 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 JPDHLkV1jXWdW`@8 diff --git a/public/img/emoji/point_up_2.png b/public/img/emoji/point_up_2.png deleted file mode 100644 index 1cfe73672c0c48159a60bc287c5705f19ac4d873..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3181 zcmV-z43hJSP)BPrUz7KA%IWkVm;(M5$6nshCHhkcGvqJGQ+5)z!7zG8qTCtcy&J z$lAy_39%5jY@Etn!GYxBrfn}kwm3Q}7=x4of}7bOBnRSXCjhaX z1>m9A7!g8%F$T^#xBwV^2wGc8mA1VA94ybJ0B4+F0J=gDLO@FH^u!-F67S4l4A2Y= zVA{9<1miGn5L~zb*miaR)6m-3pK%x+2o9Etf$cAV;JlbvfxXEWw1nV%+Y3N21#C-$ELc+Y1rQQh+eTJNeDdz!d+57IANc;a9{5P}uRr;X7^wI;T?bQ z@ZI~ThAsfNGd~Nx79`V9T)@qcttqfv#w8(&G&{x8$jF$}bpUP1kTLVfNC_2k(!@;@nA$Ui$%&nqoZN{$(>Gz}z&`BTx98x*j>;7h`Z>#SFF*9b zeLuq6F@DRYgxWb$*r;UWgOmakL>`W7!$u4iMF?9>c(qkAGPQTDGO@eDT?H)@ot3m8 zVgRv*opqp;f|4ScEem!R*Cs(-I4WH`4l*P#rIQhk*6>>Xt?wC;!OPd`&kf@Y;6Hi( z}8sHq3Qjn5@wC${L-J}50jAkg@mJwkhJqI za)m4k`2s;MpuaDd3drYNJa}ko|1ca75dJ^^$MI*TKXupF*OsexE|-NZ7-XzX-_Ldw z1O+H0L#P236RckYBI6{|GYtp^a0v|u!uP=~fjCOLNLoWG4h~vtZd{giNt9fsd(L1{ z$AEADuO0X;mju>$eAZ&UlPwa*&6^;G%KBM~P=fmg;wu#n19((C~Pn7Ta^2*{8%u`?1 zHajOBySKZD<2M(>CT^WvYeJ@La0UngMgoGdK50qKtr)x`z=VKM9MTeyjO`g#Q#2&J zE*I9kZ|5&xel$<{X|X(Pron9&aTEbT3@#W#Xs}-JL^RMP086nHjAB}Yah5noi_~%g zLJ}fHcHw(cH^###hCHJ6y<;!`%j(*?U!7k-qtQgC9RQ4*JdTmre{kr&BMd!zLvlib zX`LRN!U)5D-B;k?gy1smF0+1neFy>sM2qmw)}kjDu3STHtp?BUAdF*#K?vx+?Lp`P zSbt6i*MMaK!b&rMfpY=IK?s6@nd*`Q$r;IqDF9Ldnm_ulSD#sJw63mHmq`Gh1c(rZ zQF?#B@jaF3t05SmEF**wM#tc(6Ex=oU1ng|0t7^pXuW!E{qgm+HIoMIPDlcf6KG}{ z*G+>#7o-sb76+6{(xDqPQU@3-FvL1hEskPiu;B^NcR}OWi7PME>n$`J4H6(gCk&y( z0Bj)o{<5F{x_{jlK`_8^44QE;#3t|rjUWoqj`Y%IXo-bJ1Y*MvURht?fam#W`yB-2 zfEY3Kb-Lg^*Y_PUC<0*#z*dM;g`!v^qTqveKtgxU4^@D{JHm1^`04t3jncqFt3|2M zXaRwdpfAFJ3v?eugXv&q4J}O)m@_3NLJHn%x6$ZCCjjWpAV5g?Pyf&Czpkz~u(DFc zT6GoctE&iF9mKJ*EzSBjrUL5;G4PC_HA}wNK&KPH_q}dKh!^MTzZ|{*eL6(D+HC)L zVQCeM3yWBqyNcGzx^Y1ec5|4B^$k*CzzrIJNbeR=WFCc^TP91wKC#evdQaK8Blf*X%M!@uN>GjiSTen(v0k;)&-p`A|0YmDAPH5ZSilElq`Sd%#mEF z1SvRjQ4u`vLMqV>upj)usi=+rW9Uu*9dr%Sd77n03K`bC{8jshyZh~6T(!1Fa(RE`f2? zQDhEHY1?pfMP!O~Wb!#EOB~p|zY^=y?45T9XKwlgSklpf>kt+Im>p*6{ft8=W^h&V zZ!&q~M4ymKLD~+K;}SGWs|1e_X;8~ zBz*xPC4{mdE!F$2p(L=`1<++zj)QZGNhf{(G~!-;z)~;>OS(i_SpWyY0VW8B7~BIO zwt@iQn%P08TO9_7!U%D@jo9?dIkbtM5is=E3A$GShA~1zh#&~MHNgr1w%N}BLz}Ti zePaU+qFF4M7al@L=&S=SB^XP0w>PvVVsm@cL=c4V{5D$62I}=DnvEvBFg&$o1UPL++{9>R73+V0C$ks?9a5HQTQO z&|4t|*i{dHb-n)Ib62n8%K3}9cIgrpu3W{!`~sGU#rZ`nlQ`AIYQoYot-CB?VQ!xO zw)^~l8S@tjDzer$YIxz|$}a%KTjCJx^7JbUUzl55{oixvFXPM`r*P)PNt`?R2G0NA zXb$pTk$cF2O>OW8E|XzK~kM-DjPMkx@d&I!!*+cKe%}$6B1W_+wp^Ycl%ECj4m4c;>SMUgSwhH$4c6%OI3uWWD$v&TCDs2^E z^8WCHfpi~}W<*sP^8zEE2k-zMzyo-Ik@5f@zyo*y4-on1U5Ug!mmpHE9wU9!=1pi0k+LfR>uukvs3+L3nn!Pr*e3IQB(kh;{Y_-dKNtSybAJuq2d4tc!4Lv5L*C@r?1h;APzN zyYY#}9(y_y+ayx2bo}nTci+9|{LlZKyFAaCGiO0ULc+G#*w|<-PotuuqIJv`kH_Qd z=;&~DY}RYE-|ufx@#(WD723Se`yMSddcRHIZPs_{^>?S1YWmmvwav}Vt>@02tNYOb zFmK+x;-sXclf#A$lf=YCiHnO9HA2(?(Q#2;DAY{?f2*-QpCk6JwWp5IzD>cX(`$2M zV`IgcGiR3kU;q>r77o|q9XWEOq@|^a0wKx*XM8{jG`dePC}wmYZ4CfvX=#!A`g-wt zy;4(C^Skrs&u{%f7D6d0DQB{>vLquTLz0t|Wyp{rQe0dt3W~gZ`4S+UvTbc`u)^JI zZEfW~_uMmMih5NZKYlC}4JZ1h4euBjwBa4sM|^xdfbe_0h`f3L=FgwMH76%0ALvtR3uZUPLTtxo# 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 diff --git a/public/img/emoji/poop.png b/public/img/emoji/poop.png deleted file mode 100644 index 73a4dc840085c7f42c7464d827751348b58acfba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4754 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 N002ovPDHLkV1hWm8vOtO diff --git a/public/img/emoji/postbox.png b/public/img/emoji/postbox.png deleted file mode 100644 index ce04b7008ba911ec11299d8e1504a6872a606b24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3388 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 Z{{eQld7;T9W;Or-002ovPDHLkV1maY`JDg& diff --git a/public/img/emoji/princess.png b/public/img/emoji/princess.png deleted file mode 100644 index 1ebb2ce9b13e9ec415872e9a123d4471cd17e5bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7920 zcmVH_rACHYM)kGUFbj;LI`vtbJ*rECdRff_`t>~#}#Y{4mK309l(w; zBseLjOywvX3>Xp)VMJI=(&G77kB4WUD?T=z zb6y8r#)0{S%P*ef1uvM&Ca;t8A|bD@t?y~UN0(Q{ zy>r{;@6XL9L;?M4_eGoktOR)P&Ds7B-j=`VLods}eATY_&Y70Tvn*hKPbZBI%IE47 zQa}Ze-ypdD<_Rvna2xw}XYAgQu*+ii&Wy`0nC1mHPtvm2r~opcN}$*&_MWx76V_u+ z=OVjhUvlS%U)K7<`)|vB_I)>tvHx!Zyz_?i+~2!3|8U-t_v917@8)CSb2}4pYu98X zj4s$Y)8WEP$LQV=KpUoBD0$(JPV?;Zx3g<|i)}M0(^HwlwyBiub1g1AILEConP&P& z1iFR2S90NHU3Sd0(5hg!9lJdlc9L#zOKU9rFL9pT^Lw}Czwx`*iq1cjNBDyhf4dMe zxix!JyB)ka$>eyFOTt7Fr;=7T;J`5BE5}wD?+QAdNzU1up>H0tW3J7P*(t_437u9z zmP_JD0uZN~D5{8~kR;v3%tXe*^&3c&V06mrdWkAZ&e=UqIu?`5iYn2Bu{f)U_51p9 z{?qThC3)MMzc~ElKdA@2`zA4)-kSYI-U{BEcY|?jb+WODd^{rS#)Nsy*?Zdv1#wg{ zw=Lzs{%NkbbUz2@ci5jhOpNEWJ2`3EB8qd1j5Mx)*J5%!ch?-;znv>CK8yK%)6C9f zL}7(gxUu7od*%qag%$q7tQGzF`)-U(=pM-I80 zL`+%>(2kj%YcY|A^m~2Ax+!C0DdV>7j^%W^Ijy!Op0)|X76dhXKaN}Et(Ltev-jlo z-h^>`Z?_ZC-|RDy2h7^g30sLJUL&S85&P$lhtzY*+rh8Rj%A;H&vjzvhbq9^uNS+L zK>md#eqr9N$%ka)k#onan~+*$9gEx&p3d2`y~D|q8zf0UoW?|PLL6tvD2J$pku7xC zMoSMB*tQlV$_c`ZAWHo`NkklnEG=!YcjuTLyG7DU-LukKglZHoSALo{QgId@xJ$eiBJ6ZZ}P3L9bx162Eh;lnIL3_ z47wH_i;Pgl$N{V!?{WX%9^;cAzlZn#!JT~QqsN(<926_4`QUti=)cRtMY_`}R@gPpS>QQQ9$&Yv z+~cw11FB*brJ$;sNrVtsL{VKkWbEFX^MV_@Tyo(U7oFE-tP`S)#t4ZB1ybmSGng7c z1Zbtv#yA1W!jM`Nh2AzS)87K#@b?zrUtce#ZS21x&T8Vd`sOTa8;Z5{lEJXHjzMYT1&Dl6l%SzAV^U@E#`)>x{`FjZv%k1@W8q9@> zB+LSWG_t5kM+iqeKm-8<0wF*de!u|?guYa|c^ z!e#V8x^XQG+B9PUP2=wK9v~4BNE0BnK`M_xX`(_C=7w;fh|(Z81M|zkuYF$u>Pjl_ zwq6@20g**u5n41$j*CMdf1qhdE8l9R&{f@PFM`$p$eK_fT^mF-!NC7c;>enYFxXaW zlm^eWu{uBl1MpNKjD;INK!k=M(gb0hpEOZg;dyA{NWa>0d&dX9YEEw{fJu`Z;#iy$ z#1iKLv0vjw6e8<~1b)KW2!t{i1G>@B8Wd1eh4lF1Cbsi_pic zhyoBk%PI{`aH0*aRmxf36E75HQPSI3WjGk{+{=H7PG=TG$PF)e58wRee`ewM-N*pa ztWA=)2x?aiLr16)!b3D(;edr~1o3#f#{dYw@+jNl6ddKMAZ&71Bx)hHZAQuEz!#rU z044R6c2dF@HI2(l{MuS+N4yf+tF1Ju^5loZ0lm$2%6`Gr*gmei{MGE(c`?JH2a#lA zawoUE@Len}KE&gXe~pD>cd>T*D4NO%62%!&ln{o^5-Wp-Y$HS<7>OiC-r|4ng&2i{ zZjvK7BYHHRCPOe%UUo(S4Dxc(xR8;4AnghkgLa+91GGk0is4|Bfh8a4jO`N_F@Mq3 z?A&=NGENy*n-~}00Y%kEnu^)&=P|eM*{EW`>e^A3mmXnh>ARe^?V1gd_1-FF)pO*- zC?<|mB8xBzyeMuwUw3#y7G4Ms4ce_n27}KD_!Ve$y^vgW#vC9K=Z`8ZBT&jvDUBJ@ zsBF*%lqFOQN-{aiIWrfrckTkFCblEej8d1FQXyo7^seh*jA2-8fF&q{i1G2AOis@; zFKz=}Q4Kd)UteT>b%9e$4|DS5!>n16)|VGix^SVAW-US|NcfZ$r6CtI&oNlIc{(7) z2*!KWxn~qW2h17pB#lNX?P6O=4FE=?^$^t`W43b%d$ym?^jMcP3n@&2C^dvJLWGDg zu&}KUVuTDK5KX))%CZj@KAHJ)dTe4R6Vv5k=5iYt)1%! zg>VA}0rb`t$BvA%duBJ?ZcLIG0+%N=gQ|3i5~Y9=5l6@{baCvGTNF8Aj2J z1Yi)!83j`MQX?cp3M#3&`)ad)kU_S`&|C&?o<5npFhC! ze&S8+y6mOgedsVp4u98qJC^bl+7%am%sRO=#SHRFUVhNVSCSt!p% zHM}%i2;ho{kq9U)AdILANaB#Nb}cE`*j(pWFXXwee-E$umACS#&wiPI|9gMRwa-pSg@8MT}{axJnBd_GvpZ;x|tV&LtIEJows$LD#wQ& z{tja15`O6|A3#SPUiF&apc318=R4lUyWa6;dc_2pspscz|o{^$REa6m>i+ z1DYl^Ym5a-bNbX0y1kzt{i!!1fOoz7kD0a}w*Of#<0o$a177~x|G=(;FD33A$qf<`6?03)`9?aII3!xt)-N zfuxg0sNOmNN1j+frhB>I*+0hNhrYz;KmHcJ@|m}>|NI--zUN9F_|5_V^9L^?pP5Ii z+WL&Fk1>cE61Vj3Iqw=eX$Zi=DLC(vm$;Jn3m^YA{@2IeKxceA=RWH;jw}oT==Tb8 zS&${EGfom2OFZY)DS=icWm!>HYLpBswUq#-fd-Ah1R=)fbfj==tn-5D@p1YOe1S)g z9ASEP8#{I%ByMf9gf9bN$NsCx+jDd#_Hou(djU9o`ZTRb(N0@VNTUT9Ed2PP2$|@1 zDF-W*0Ki%E2Z{1o#%B*8gP5!}!}#<(Noywu&bbhPZ~gVBnJ5`0D2l+jzf(fANwIpZUrI zMAQ#i1TX7VlU7~Hbssk)bt%Y#g zU1E&FK}theRX!hJyv2khZcozEC3@{%-gH^Yp_BKswArEE5}dn3(^)P-m7Ke6j5zHe zg2LVY>yn*AQB?#nqcZ_LsEsEqKpUzpN?}tNM5F;N!3m)ZacU?w zN-E_=u&q-Wtr0aLKoU}#5Oi(j8Udk{7$Y1>Xe(a^#y>pj5fqkG+Kd#0ZD|3 z1WHF#T7jxClmw#0=n`t;&L|aH89%qm3lVplouCNNloq3qF1Jd81FdORC()b>K$JqI zO9sP|QWxG6N@M$#o0!rXZTm(mO!Lmm2!%m|seGcNo?ywn-+qvjCr@C?4OF#ivF`ed zODDMZ&;wLu<;df_tQoT*uPxkjsuE?qyZfR|xe!%l#b8*uq9{s0DKLTbd`3Ay^tUL4 zWM3QbMr*=AK^RMvEa>$MS6!8=q%xJ?wmSFIHF1jynhBe-o~(jq@}UqcE-vxOFZ^Hb z`Su|mc;rDIKk}HxqppA7p>OfYzr2IRlS@b`{8*|cuPr=zbmhgZw0pK{M5>H-UNtB! zdTw{>=B!nd%nc6Spj!xF6r0UOlorY*6yqi&ZZlQIu4!p7$147TTzh2*xPT z9>&S<|GgCl6vco~{nc0b>>Xd{^LKv3;&1tk?SIn#t{4v8D>SW3Kmoe3zJ+#u2W6_} z?Gva%`(mf8YyX0^jR9e#UCpADrr~1&x`v{+MF{BiCIrB>qi2(LVZFD>#$f2y=AkOR z+u`H4szq=iP+AliXRXo;qP45d^DO0OZhHX-cg}L`_-VfJcaJ(O*#5y?bN1h^cRS9i zD4dwOYQ}H^*tQxvPf%JrRK|y7S(R>1n}Z?i{Y{c?BaQ-tv}m|kXk*s52mwx3F8&+x zb?cT6$l8)Z_pBH6?SlpkEuo@Pwk@0ocyDRkziL`P3nzwiX#r>L+sExc{v!V6Prj5l zzT!m|zJL3Vy~zICUJRgBWBK|%<619|~0 z+KdEP+@cf~$CMV{WiX6RR}}=IKx8GSPOrN!zy^cTxt*#sl~!)j%0VHV2sP=_fu^sj z0t9r&C)mG#KNnwg0T*9<0sGJ1Pj_M*1nwH63Q*1cRf)C`wdIY4dlTjND@xVjSTGn2 z-LcrRotwyq1fh?Am(M)$rmck#3ujygOKlb^S1<^4^Oc1TEdmQAXiXSa7gkwbAE({z zlMNE$D8zrCB%XG<6S@oq3zv z3)o0{EH17x*=>;}32_`XZ)+q-K!E{*T+nKTq>)rG3FRT9XMvBn&qDY^+zPLixB?s)iF_P!#lfeKt0GoLF2& zCp|aEYS?7`hJ%5cxCIDpj+{{d0&%ob_>AdpFz5zC+O`tpQ-)IuD=e*a$y+ID5)+1k za2OyABWtf8UFV+1ALhs-i#+*v$2oQANi-Ws41y4IxFY}SzXhPjdh@%x&>t5Bw3)nM zmf4H8vuA#WbN1~dnoJ#W9|o06!2SNfogXf(taEyOmDYBHsT#v+56_`F?NWddXZC=q ztd3N1RFq1_i4(!Y7@Bi-;S?TrdMrG7nr=IF2b5tD_$@9mL?BX0ajHl4uDe*}ghj+U zh80qJ7zz}ch&9#$=n^4;n3NpBIGW(l3DQGPP%%gUJ!6>Zh)PxU9G&Gi`+bWZD{C7p zoH&hW_Xx89HEb$aKYtGcr4m#|7p1PAIHLfYn;cD3v1BjaVL_-sH);y$OIlM3@=3wU zvC|wqo{=OmBJgi^Oa=&n-Y7^ep5oabdpQ^U_SYFcdX$75g=C0n{=xtaK#D|wg&?sA z&iuDjVL@-R z&-%s&C!Sno;q)TOObI4vUWqZPU{!MzUNwEC^`kY%tzM0pE61pow{bBmkh< zWRufj#|`JP=O-^G+doOM)N`-gE3K$h>CPfIE%~+09>-6v^7x4pi1AIL)UO_lN?s4s zaBy5)IEV*pj$3{rqcr!r7bAWd8L23>1|cmPu_{5@HuTggj~x{R0?f3*2!l4Me{Yz8 z>S?NDCGk{?gKxftJ-1)Y(tSr*yyq|*$Cd%C`%bX!l6_2HvWI-GOR+Jee{79XX_PJ) z4l9bXa%=snCI95&GLJp6K#{GGw*{&aI9{XVrx|%~!^LuP+yJ%|Kp5^)UO5YV7Of1X z`4+Iz0RUA=k}mYk3J*WwT#Q*`&>cmVr0(Y=4hT(%T2&Nvot{MOe7?2vjTc~~06=KJ zUYETg8^>3DWoaxb&9E$;+xPng>znHwUtHm^^}2qtLfQ>b6~I%!QS{JN^O|qu{+`?S z6+lrwRO#@zQgXXj4npnKL>L4h0V4neXox#7l*>H4pcxDbX17f;K30;IDPzj+thMS1M1wDEwOA9}HMs-LRHlBqHQuG&&d3t~fpsJ;n(uaCqyWZQzDDJ?+Pz`nHeSms8!T>~ zqR$4hrH~?^EX+te;kg6N3gD_m(-3z8IB28)_uu?lR{LuV z%qAu(-Abc}@_SB`g~jOkpc~gO4Q1hBc~F+RuZ;fuGjToR{~f;UtmxBOB43)Nk~9s7 zBS8>0A1Kwtn^3?oDr_(fnnt4?IVwRUA`+RBMwttTCpLp`80C4|O_ zB$0>_YY*Qv9gOR1Gui-Al!oCz(;F!IL;ab%A1hz_1AQ)UG#?t4=A}{^3<{+Kf=VN$ zf9Qz61}}l@kH|Nj5y8G0piLjlvY)!KXgpvfAR5F|K8P%u2MIOe4o_W;h3^|M&850Y zdPSiu43+~%^M?RGkOu%0w0Q z2&2#RNXOd<%im=1G*3^AArR7bo9le9>5nWzQwKm<8RrFBssDM;;p&zDp#L=0E7coP zL#mayekfVB0}J=u^LzUayyP2y^49zQ>GvPH?Ot3#-uwDn=05PyZTG+b{~dhwJ6}89 zz;h6S7g)^ce(J!&;osi5?^ZM>#=#>Wlu-~upp}9yB#J?TxYNOcHIxRll#rP~5f9N{TEcK`6;f+(*M%20;53_{jsqzbl71hZ#YLPt zcKqbp#Y=Df#Me%I^F|OrKJ?I`!-VUDggO&K%3+Zg7pc}O4)YYWcu8|Ce8>L7w?8;{ zXaT{*7*inn)8#*F0}VFLfG9*MiV-ME%Fhi@eaGc+Tn9ueq;c=S z@i=}TfRDT&1ia@p^S`)je$Qw39$Ii(lT+{;5tvger6lw)1+)U^99|g0Hz%(h3eK1X zp#+rF<_}n0qSZf01}spwU%5kP|BcNW0={w%UHsxUw_Y$`Hy|_@sn%M zD*^AiZ||ME=68Sk;E_9>_S{amP2Vb7pC}k5;6j7ug*{syhERb63Rr?DDZhtx<$=-b zIvm&+_WK+C)qYNyuGRpcBM;4X3zIW5vllNeKLFtK&l>^1a{%7lo|(US>C0ap&g_|k z*9yU%+N5bk00`hv0wzOio^UAysZShar2G}-^3U`J0!Ae1l1xS6cn*Rv#Q0H{WzN||6I#c zMhMVLfH<`$yqVM~)Q*&MxW0=p3=nwk!@u&f9np1JfD`aH&CK26PVL%-)^rjj|(LPKkXd~FS0vkBJlA)&CDFiJo; zh3j$zQ3&64z&L%QCE!|I;OCFt5`>NDaI+b~_dR%J{p~s6l!B%?vXy19EVuqf2r03J zAJZD-x*}XU>_ZF_KDqR4f=REkEcfq+P0;Z_i6GqWaKMdix%;tB- zxIKMBfTY(&wz^uGKCmfhIcfmi7;3o#DpVCKfNen;FwUX!9QmLRqBJPod_E8~CcO205TD@8vT0<0>-4ygT>^PGUNrHH35h@;HyP{QH z1#$;q4Eb;XEfuyB%BVdsKWf1BeE6QjT!+5?nqmNF^nmMo;M@T#2_ULEYi)h9dOr*; z?PMzww6-_CB1@6SeFUv06a}ERnF?sBkb^uOKnnpl9ONo)pg?SDc6}dF7+|g2L+H5o z1Ng+YEx=>$9@q2MYkCV1Kx#k(+;t2*o13@RK?4Rd&mqzTkm{P6P}ZdVz{UWb6_(I# z%(1saFACstjwtZ&x>`Eq8|HJ&l?yOJYCmQ+0BI>84WLoG!xs5XDJUVWISWzP`#qGd z=WWvhP&GkhIX}8U#g}z!w4#450MNRT0tUe@lYn`Cy#DXC8c?9R={oZ4tmg8w7RNr4S%l22HCV zn5T(7Q7b~?GSTbASZD(!rQLWojID1$h|xWEYu)WSgi^a!o~CBhK$-!Z+jXuuNh{DQ z4p>WIu7@b}U-9q(c#l4fY|9v+p(E%@0T9?xQ)ZPblEfgbl&CCWgWub10n}Vbt9(98 z07@;XC<<&_G^{eRTqo|;R;i(DBCjMwD*Ku1dR6a%Gqf7f{OsiHemuSSJjLgiT6#fxvO^ z1Mr!x2!Iq4GEY$?L*%IshXBk#%W@NgDg{ajNh*a12-c${YEnw&?K&BT{Voa{FUWew z_gaJ~1yTNXzXws|;LQ5JJy|Q7T%I&qKoa-i1`)K9(1cd3uh#^+Qc^1rUDpkHfw{ z(-h3{>)+HseF&qjvR)6Kwkb}ggNG%`>gDge47WD%_S1wV@m4nzua;);wpx=)nk^y)a zfq+9>OQ-c(6}h81vaVVgq$q4*)QF-o5Zn&n>IB4DzS8UV_Vqd)xD-&S4@R^Z6LhQI*SVutX|5BF95AB1IL6Vg9ILf$!il3S=Vn=PMtjGFujQpu0TPgJV zLkzoX;Ei!m$ELc<3dwr37-b+)KokO$5F4~9V6VuogklGmjvltNuYARP?s#&e~RWCF4AUsq}{$2D+j64=Hz z`g$2{Mp>Zf_t5S4ZFbW_TDQ`cY#*E}=uy1@tt$U7(iBO&hJl$U>I_ws0XfUh*8~)s z5l|Qm4F<6Q`{vpHzX15cj)pte_UJxBX*4M0+vZL$?Uhoa(HcV-gzI%TtoaLwJVlxq zlqM?xJtV&5{xcU=5k?{Q?%$7|A>`>3XP^1v6X!lwo(BN2)uS0?g$7BqW?ZW_^YKs@gIA~{hw$B{O&Q2A9OiwGD4Zs3R3FQ_hlw@zn2tG^>YP6 zaL+K8m~Lf=eA{Zb3b~Bg&J861RT|~|qR1_wr&k7eVzCb?fnFxC+#etp1(Gy_Q$LB; zQlT)&vfQT1HA8q}UbmtEhZb%F^?az4xae_ zlf%z_=k(7!u@rv~K*vB|4*?c631c-8p@CCd5;Y(-bPZLH#DHa>S6aqphC=GB5Tc7wIL*%(=Hv_cW z;~1ab0dHa&(hblx?r`GxaeU+PW1oNI+vnd0;G#kNPYVtYu6DyMB6M^0RZT$S(t3HE^oWVC8}ctHTa5h7|$ zAefj0kH#Q0g(>H8-lXd%fAEBS^zl=_{Pi>4uL4*$D4rVu8!Jht1{)~`eFXyi5n*uZ z_t>x9v+ECz%nJYfu!JD_!Gtu-K&wy8Jn$LL(TgbNog zitjIWKV9!H-L(6D13(SLCq zUH2CNVv8VYkYxqpIL7jYMLcVK|6Bj_%)kEqcNaeZ;L_#6Zv>7TBg!D>9?kMX=rqfb zONjym5)7<9O-KP{3D8gm8gFsafBE44-FNTaH;;+wDKr|94S@D`Sv40R3{?H3N$INLp->W0LfOyrJjXB| zptHP;GpEnt+b5R(=--cZ{;m#uoy`cKxWRIEHU5n8Rh&O{3QK3s;L`aESUP_mmo8ku zvcclH^Y;DoCr{z*$&)zy%+oki;`mcIWz77uE@5Cu5RjrSxJLIF^lP(UH7H)p1Q3I^!K6X6 zCWO|&hKllX;0o`FI^Ff^lTWwaz>OEzV5~x2T3=3ptf5M5LW;5&5il^wws!(A4&m#i z^{A}INGXU7By5DLi4yj`|D(d{N-?P6Uv_u+am!8I#7+5M5Lf^#@oL>100000NkvXX Hu0mjfWmpsk diff --git a/public/img/emoji/purple_heart.png b/public/img/emoji/purple_heart.png deleted file mode 100644 index d5f875043f00db01084fb1df635120e286bcab83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4295 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 diff --git a/public/img/emoji/purse.png b/public/img/emoji/purse.png deleted file mode 100644 index 8f06a2b932c55f7bf77168af46dba3c2baa3ba8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5033 zcmV;a6ISerP))ea&d#_*EU}M0>cCn2yP7KD7@F*coNSY|kTc9XSE80Je)L)e< zwaSl3O`0E7qoO8i+Vl|>C2gvz%}X?<210C%V?%tg!PwWnwy%%x>zuv!%<4XC=A4NS z90VavRfm1=Xy(kGJ+sy~-+Ij6#LW0rz7&2b*INL*1;8!0+){b>d*1WePkiDN|Mk#A z5B>9d?!W)e?lJe>ci*1-@4x?{+itsU+hqm7)~#FPDLZ+G8)_XhxA_wL>OAOHBr|Gog}KW^T!<1cR9vgL;lJn+Du5)oZ44A@<+RDWY| za0r97VO)9TN-SNzOqDB@KLmhMsr0+!%a*-w<&~>2RJ#I8#>S(?OGf{o0OVbl1pv)v z^C|{o@scID?%H)&x9%E@kBuRY;}tD-kWzP#kB(x~rj2rc@uEcl5t?aw*X07h)3Y-( zNV61?)~H{&fYYZ>V{Uf#Cr>@~RL;N*Gs7BFC_jSQ&=9P($nyOBWdXo*&pr3wlP6Dp z?$EQ(W(N)&z`lL^@Z=LuOrJV+>i3zM&rD8!@h684;qc+Zc=^;Ry!6tGIQjC4vorPj zS1y|swPl_}=$W zw0ZK>sZUKzOdPpv02mn=*>m;PYijcg4ZM8f<-aUgFoAI4vBw_!#uNLV`r{Xl9mn|C zIQ8`nj$BrGz}VQ>eZ#dOoIg7?lV#0EUu{g9E<9SV*QaX5xTVX+-h0^quw~1Z>u$K= zhI^P9)6>)6JbLu#bFVh8p#1Tfi}gp1F}QZ!x*Z!gZoKOMApo-5eH%7xShIcm_IvNS z=bk^h_uhNIy>{)|!RL+~VP>A*y?f8cifr$}T}5ftd-m*kutmNeZn|nwQAb|*?bSY_-5|SjA630nVVh|CsEW^bDfQ$7y&QDLbz$?mGOr0&t=`+oG{la&r zrlua=zkmOcUpfGrHf>s7DD&ABD_4GK#flZR(a}*6{>+&(m|s{BB}?Tplv1J$D1wRz z3XmO_o$l*HwNgf*Iyp{`Q@B-dWqRV+V@xhS9MxT)k!u zR$qNJ3f`m9OmSi6BF@#PQLmrJ%*9z`Sq=~hFiI#Au3fu6Q_%j; zZoKhEwQAKWRI1fN(FW=lXHcIn1TES*3}~Q)awSHEf!t=IoKgf8$1vrh#1ZmH!6X{C zs)0%ZT`5B)MXe%$0SybC=aO>eisGR4g>Bom zZ+r5|eGf8o^A`?4vC|(d$`=a&WT)dwf|-Jn3ylUe1B-MOF=E(-47S)YQ%^yyd#Q!C zKuj8jQ&d!jL^q*%1{5nO($I=PP++o1l?9OkYXy`DaVf#@KotWejbSKE+Y-*sH!-y^ zgC_CLa2LF>~Y1`+#8c8w$lA-*wxqeb;VSk7`axkDrA)J%^;8 zp*)j9rv^wZBFmzbQpy>a_yEXdnZXP&TNnV4wvj$uB8P9=j*!xhgf$UZ6Pn84EM=I| zO*Co=PDf2V`{D%7Po2S`0|&lz@W6r3ym1MkAMTO*i0~~8W5kS3#^#FvL==Fg@-II2$!yM)ca|#fN1&*b4{N3z9 z>^-vo;FEjz-o(rcZwi2S+;!I@cinpX$L^RN#lSp(BnonMA;91+7IziL|JPQYdZ60f z&0X{QOB-NfZVF#MyAO{&z3)TEjvoEm&+P9)u6ikguo*h+#e^4r3H`#%9Q|JQ>8jgX?g3_~^#~eC>@hAkcsJ`_|w3op)B( zU~phS1S9HF64aaKL}8re0LB|KgC0zhiUo8QM1tw%Cd2IfJic;#@BG*If9Lv>Cr=*# zxfrmbI272VOkO;X{U;~(?>~I_=0{%mZsQFxV8!4yA6QbYZ5k+5 zpjGg?qO%sMy)rf^=4C-JlWtSF6g-VryMi)^!p^gnc3_cpVAue>Tz-GzD8XPM`)Ge{ z(-q4`eha{tUpD|-X>0tOcWnHHB2tP$Gq-0U_93cUAyN)fCF zqIb|ouoadnn1fY-^4bTRaX?rrRV6NAQU4Ie`>%NTp0#Vg`mfJF-+WyF?AW^Wjd=39geH$(+S8}K@^Dw$lID0;k=*( zr8~|sFd-ITTwc#M_zxZY0C`e?Y%nJ$f3RzYu%!)(H4JbtCx48*ls^s?xn0#I3|9uQ zq%!=`*9E{w*6dueebt6N198jtgVJmmq!GLpxms!8rIhcMI7y($4lsQ%kgHahH)q&eSeEqKRuO9lrsn-Nxuzzsp zP*Pn~Muf;y+k&CmG>tv|LJR|<$O#w}m*RGTe4nq`+q3rOlv_Z#J|Quao7p;W*fNMU z`~Z+=iIREQyI=|lkwIr&R!ZJTRg+T76o#)D8rcQl>#qsGP}09=K$lRW7-W>!Qz6(L zf*p$@3gi`6kqU;Y$UWdIMHHy*&6eG`fF%^z`rTF(02YcXPy`_N4^vm(p|qES!MVSs z0S!VqDPy4AhoQ>go^Altr3o0Rp;C2QB`PC{6A+WoO6drs6u@CO(V<|NLO@6qR7nGx z1SF-~HsZ%B)^|mcUk4bWSi6g#r@Z&} zq;v-d)oF9+gX)k5-t~xiz_+`DB-!9p5imv`b8I+f0M>IiS2B zuqHg`m}$YSk{KY&U`0*~%?e2rqdzLG?hOE<<+A&R9R0lc+GZ|yRRj@+41tS2iZyIb zpgb4)Ga?`ZRPIBQhL7DjD2l-55@tvR;}y#1L9ueXv%q2HyuGtZ6lMiyR@$3LW*uJI5e{NvB=_ySkv8WBU@NsX1~M}D zz!C`?s9_KbaJIJz#9A$nEI}D76c)un&;*lQh zL!^Q-F768mh?R4!1gMw<0NXGjEOKB3L~iaRL{O0NoaWx=2+M>8AQq-^W`R7HX{766-MA_Qp-id+~|#sE1&$kGIgJI*dp zogw|g4*!O@V-s4*TAbw}meL8G%_q!;RWv~lPsMM<70I(&?7S?1!eNujLHUQ-= z)zun=aOO9;BuSFcSnHjZk_5#Ap&eKR8OOv9OyjV$;>^g+8)@+?)`v_R-XRDuoM*5t z0MbkpbCJi}x)yVBrNLm)jAX2}Rsa>Vwv3(tSO$x*CWqw!6h-aKi`v<6IDx55I;;w( zLnnNAr$tIjNF{OGA%x}3Akr|(0RUL=LMqCrQYplBuuR2S8WJwH5V>L=kM0Toz`1?w(lzh!Tkq9XkdoL0jk=X%K~X z0&Llx0(~EMGCtW&VUx+M8v`IDN;c#P*7_(U_d{*l$&)hy@`om4b8&_lY;OP-IGwRA z3X%a>A-v>iABi(qvViYX1ivF%vOrklofXN#%pQOgpg8hUdJoMe_z1yQOh9(hW{hy6 z0pNiYXC`Lpfy`ugb0=*LSzUWI zY8R57FxE)!?^9M;*bDC*ny~_cI8}B#N$|&AVTN&D-XJgz2;ULfVbGB5tVNDag1~;Q z&ZAxi7?3|$k+ldlN zMF5dRfre?~EYIaLY2$~l`CZ`QHMjrg+v63tkE$xl6v@tnPg>odxLlZl&3$xCLOxHnnchbMAkyZaqzw!z=D5pe$ltJ#BveBT1RDaN_5^S zM%sIRYXPmgKAuwe=2D7WgWDOPDDQ4dZV>?HJQMcFoXU^0jGQyfmTyx7`?=Z_gG9LA#pCXhfavqw|$+rXe)b+XA0*tPdmE0{NASfHMw8*8?Oz0f5 znQTWP8K*p>x;~tWKDiOGG?W~*nUu(wT8oRefvM&!zF(UB#v>DZAK;*H@7Ln{W+y%! zRj9ThTl}t3RY8>_lyWVvmSPZ;{E^3jL2Uqh6~Iv*EZ@&IP!{Z&&oIr*9ivGh$OrFi z;b;#a9FjtAV6E+BrMZGQ@Z4H7(Q;Qt9K9+06G|I5BbjJkaoXh6UQOiCbn8xr3kF- zrC@t55oZdLCK8d+K%SG$twNJ68ck*9jJ0zMWX@ew&B@%@bLCXeHYh)HAzOHHdaiyl z1?K!&(?ARhxo-y$LL9TN-1YEVb(IK!_I2V*$(IU%J^nlowYCvqozN+O zhA;EJEWjx@FLmf^hJx%;rKPq#lm|20o<1O$MK?3LK?-aMZ7I4(yPIVp{gdK_4ZCK$ z+TDHpD$gSLQRcQTJ)PjM@}=-AeZ2+1TLAnIAf1uUau(FD00000NkvXXu0mjfxJ7#a diff --git a/public/img/emoji/pushpin.png b/public/img/emoji/pushpin.png deleted file mode 100644 index 540c4ecb885c4c28c9f67a98d6bfea6d33affc01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3793 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 Hu0mjfl_4q) diff --git a/public/img/emoji/put_litter_in_its_place.png b/public/img/emoji/put_litter_in_its_place.png deleted file mode 100644 index c2e350c2dc6b7ce3fa277ad51b11426643c13405..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4091 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 FV1hsPGUEUM diff --git a/public/img/emoji/rabbit.png b/public/img/emoji/rabbit.png deleted file mode 100644 index 5cb3ef6f0c6a49c648661eebd66ba2b02fe6fd1f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5677 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 M07*qoM6N<$g6uXvumAu6 diff --git a/public/img/emoji/rage1.png b/public/img/emoji/rage1.png deleted file mode 100644 index 1506ba4032a549e9cb95ecb0b8767be3454d40bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1086 zcmV-E1i|}>P)VDU66SmC|jZ!H8ypk#&1*xg2Gbag5FdhH2dH=M5D=RCfCnx{dyKe&n;($x4 zgkimHJ^#R)l@t_ibKx)m000qmQchCQ(0{6XH6owl@fYRRKJ+c>bbl&m)Pj>xdsCrdKDm9-3LLQ%O&Pk4MJ~Ew#dnS|M zjmZQp)9FnYrZU}QEq%jUw8-m%(I^b>3rr>?&lyt=#*7hy(ljmZ!*DdZEZDeVX9eil zj4rRAQc8#rdH(vUl-7)iJ;XsBMIoo7(WUjT3*_dKfKtxAf-%mGAw+9>07uw3R)f9- zgTePCO)(GxazIK#TmU6LZZa4QPAdkhq>BKY7f4wY5EO+F)tNq++A z@WFxtsq7_yJG@BBJ_SXAAVQ(F|Lv1WYp;Q#UjZUu3}f2CSe8|eEWBO2Ja zwMl{$t7}TP+kONQ!4zzJ(_lCr z>NqY6D4Ryg^|~l9CQa?+>jk$Q0+iA;Egee5F$!!|5faBrp)E}jR0#O(*9#(odfdTpF@~_B(42}w6m}PckrR9X0&F>UESGH?$62=9JwIm|TJSK%aaH9x z1Q_3oz=2n%-zY9NzZ^ms;}2&HruQk(dg0I-p+ibh${mymNv2YxJWBsmzAR=aePyOTY zwKo~N?A|*1E!<&Q+uJ6_5c6?07*qoM6N<$ Ef?L|#Qvd(} diff --git a/public/img/emoji/rage2.png b/public/img/emoji/rage2.png deleted file mode 100644 index f792e063b49c70f2e3bdf2bc3ed3ab233c205190..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1098 zcmV-Q1hxB#P)62zDfHVHa3U zQVAxLKT2yckPxL1j9hSDhE~q;3&CJAIj@+k%6kOhvVe1>N(Hpu?aFesa*lKSpjoYU zJG7<~@Bs3l6gJ^pd}z)I5j996CP^t!3Q6obrM$;BAd8Ba6DZOOtVKAANC<>M<9!eW zP*_l;6)=V(22eB&322QC#5S$1O)rpg9NSh(?}dN>8o(B|-jppWrb+ zFF-9IPzYn3!*Qmy3w-;AgT*;xgg`H9AeCSqmX9q+$rw^+j{NvhRX9wgM6dUo`DMZU z@wVX4IRuwCvDx67skJd($BumYf@3|l;t?Vso#3I_Y?=lFN?%@vVI3HTmlsMQXwdtR zR*-zI&2=Eu%A_M{iq!nZguMmo6 z7!HSj1Bb&fpt$f_vFx@W%PtGD?6x3g0>=s=r!>Z^-`fn_%EWmAGH@RmLkJX`!0CU? zf3F}bNJoun+rIpfqh5!Hn diff --git a/public/img/emoji/rage3.png b/public/img/emoji/rage3.png deleted file mode 100644 index 58764cbcb3bcbfc88fab9ae50e5a47679494f79e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1119 zcmV-l1fctgP)JEl@NPcSRtzYdTpy7IQ=&flMO>0|L~1MqNG^tz$Osj98yv zF@#PecSRtVRxQVLLbYo;Sv?lid`9MkPeLmW|E+mYG!m_2HvXJxGbahYa6a~wU;qFB zXh9qQypmg6Ta8jEDjo&)e0<48MZrBi|D{`?Qd@bLfu12joQK~#8NwU&i$BS{oR(``zIi=mlJVH$?r z{r`{JcUAVtqnM&eAIX+g)$d3Ts$C~fnM`8h_3JlpqTigJVr?=xIfhBr5>ko{q{Lcw zSWuR6{K|%K&hr(V2ZenV$7OjyK#%PdU+pdF;e86= z&N7tIS|lN5D4LYU1dX*B(Wd~}qlr~zt#e2NvYq)^u=RFXhb*F}MFO?yd#;?}hg_xDovAsBM}bs)#4IX_=4k^~9WwR7P>W36d8 zhnSukzP#X6wgd+E{2XP%B|eou3^|TbXj)Kp9b?|#-ZIv82tzp9%JJluE)3)21@VvsPk;b9r$pCX zT%;*ux3`}^GlrFmi>^!4qHqoZ1oR>xaG?m9;$rcO$n&ZS$yF7?`xF>6BaA`oFj7J& zLWs*tyylByy}wHkpB*PSi?<6f3kWoZF)6iXEYBseTz>h21I?H**u@O=B^XhDNWps{ zv_>1jr%#WMS_|PlcAcAzb_+&lhXwCO5bRE3Hp2xg&#$kSOR=J=7z?W?Ap-gnjMZ$W zlyleDmzOs;)9Js&bb526H3SN~<9-E^2%`i+vjN807(u%t+AoMk`vs$DzW}o!1djE? zL(_cy3IV>67UvKkpkF~GaD*^4)9KaKcjD@5I>m6|Sc&McAc}SiqICrhb^@;z&ev@W zm!8cI9O}e&0XlFTkw6F(Gh+Q4`5!BYhP={@6~%u^002ovPDHLkV1j3^@s$7o diff --git a/public/img/emoji/rage4.png b/public/img/emoji/rage4.png deleted file mode 100644 index c726c94a295f57a22d7af38b53e68a31a15b0176..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1270 zcmV*`{`sr^zq9`S{{H^{{{H^{{{H^r{{8-HAW)?M z00VkSL_t(|UbU8mj^juWhBL|BKn7uX51P&F;4m!0F}?qjT>a|gv?q`4L??feWvScs zwW_Py>Ry$doj&p6#j|JM{L9G+#&&jktKc{V;rr$*d>>0?Jm$73OfTqL-_CQg5RL16-ep(nh-=t1Oa1V2nFXh703Dif?pa0jEH zkb;y@*!Ho3s1MEpg1ZyIjSr=C9JCYXI2jN)4g^_N6bSE90Jq~HpePWI17s5r!uO#i zInkw{C~O7LQuZ+>NuWYABQYtv6xhF^)?vulG7Op^AOT?;t6PB~(8M4~5TXg!MFJS( z+;wXN!{Ni~f`{R-BG_b6gx`rzaPE0;-^Q_05P4o4=eZD4Vh$-p5!>uSfL1Xk&#_Ti z22GyFF~S+mWf`iI=f-^g?E8-h&ejv0RRr4_jf)(k==S#VGRu%qo(BQ4&N7Tek=78? zSKAfAoAm^5DguP#2uXQ+i*3T^QVNl#QbLIuU0zDb2`p3*JXufhq$1cSFUrSQQA`NW zOH-|bAda<8Q_sU#QJ|<0@coM5bUnf8BUQjLvPHA1@mML(ySPwlJVqG8QC5vFt5w+B zTSu_B*Q){na!!fycs@^4r7kW$eNqY|^Z9t3rg0nu5Fnrv0f7qzGQGaW#o}keb;I!b z8p(wr!n+g*F(ZUP=|-dbdt*3Z%+1Ycq;(uG=W7H92gj=kjt>rckF$+y3>QKv-)HQ@ zhnpLp_>sVYR!RuWq6cbtzM9~9tze7tLkgZ}3}Yig5qL9ZjOSrC2xeQgg2Th(cER_D zhrN2X^=yU1y36V17lkWZ5(|C+F1xgvu4mJ*x1-=7Hn;7Gz!oQxL_dP>GY2U(<#!@8iHOM zN6mtxR>8pF2%%}p@>gO?lqH%A$I9+N%PtJ+1%u@dv{nMY6|I+Lw3nVr1?nqt^tj*% z>#xMX;MevS@e_eJV_H|%Z`y}f`rUs8@ARw6`pvcYqW>fqfw%rrS--6o-`>4^xx2eb g>=Ji(Sickg0X5dB4wf$f0RR9107*qoM6N<$f&v~yY5)KL diff --git a/public/img/emoji/railway_car.png b/public/img/emoji/railway_car.png deleted file mode 100644 index 22361158fb3a6749ff3bd6d33cc9fa2ff0a48cd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3648 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 SM`@7&0000RhL=XxnkwIWZ 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 U)u!m#v;Y7A07*qoM6N<$f{}g2n*aa+ diff --git a/public/img/emoji/raised_hand.png b/public/img/emoji/raised_hand.png deleted file mode 100644 index 5e45c25a56c6148a8122fb762179efbbf3cd2c62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4161 zcmV-H5Weq;P)45Ab;tkb+JVKEX4nJmV3`3Ng{%uW@B6}dk4Tf0Nw%cp?6X6oA2BHwZH!S2jy$O z_bc+ppSZhu|KZKQ_EQ63usnMA_MJO^Y5$Qsu>1Cdc=wUpgVB+pFMjOS;lBTO06uqk z)85}Wyz#D2?pxD~)UuiI_KjnkP+nU?zTAWU4TIRYX{0~Lv=ga)e9u_v3wK_Bvwz>U z2!LAlz|Y+HM>p=h>8V=}9s1_*#x0NCf7|G004SDvw�`P=)~lOrWv&y)kAB0DR`w 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 LNkvXXu0mjf!pO0h diff --git a/public/img/emoji/raised_hands.png b/public/img/emoji/raised_hands.png deleted file mode 100644 index e03142bdce92e3088e5a521f4ca6ec2b2ed33cfa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5375 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 diff --git a/public/img/emoji/raising_hand.png b/public/img/emoji/raising_hand.png deleted file mode 100644 index e1741a40e7431a704247b0e3d00480889113b6fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6177 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 diff --git a/public/img/emoji/ram.png b/public/img/emoji/ram.png deleted file mode 100644 index 5ea7bfbc0d845c6ddc1850cb1957c83b22254060..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6531 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 diff --git a/public/img/emoji/rat.png b/public/img/emoji/rat.png deleted file mode 100644 index fa7dd401c51a7538832b3cecdf7311fd7c94e21d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5434 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 diff --git a/public/img/emoji/red_car.png b/public/img/emoji/red_car.png deleted file mode 100644 index d70a2f06263fa99a8553765a6bfbb8a9a86a5597..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4278 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 Y1rl@nE(@(IKmY&$07*qoM6N<$f=uQ5EC2ui diff --git a/public/img/emoji/red_circle.png b/public/img/emoji/red_circle.png deleted file mode 100644 index b391289b203d6a802ee488582ae05534afcbcafe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3946 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 LNkvXXu0mjfS@i;G diff --git a/public/img/emoji/relaxed.png b/public/img/emoji/relaxed.png deleted file mode 100644 index bbab82d3bb5a809afa49e5781e28aae2ff435eb2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5455 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 S_CSFE0000G}6)B{ja^&zt&#&93>)rlA-y8L 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 P00000NkvXXu0mjf833l1 diff --git a/public/img/emoji/repeat_one.png b/public/img/emoji/repeat_one.png deleted file mode 100644 index 3c47bcc1f3346c771a77ae3bda866be04b6c62c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4287 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 bB?0~)yPH!Q{&{Z300000NkvXXu0mjf^m~jh diff --git a/public/img/emoji/rice.png b/public/img/emoji/rice.png deleted file mode 100644 index 1fd22027bc5672bd967d014253192c195ccccc7f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4645 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 Z{{Zl2p1r)zATIy_002ovPDHLkV1jreB{~2A diff --git a/public/img/emoji/rice_cracker.png b/public/img/emoji/rice_cracker.png deleted file mode 100644 index 954c901e935b349cf6f1eed29fb6ade58ceb7e7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7787 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

    }>$`A{2yjBHE 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 diff --git a/public/img/emoji/rice_scene.png b/public/img/emoji/rice_scene.png deleted file mode 100644 index 14361988db7781e2103db212c5c21a8aec6a9669..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6261 zcmV-*7>ehKP)aO0kwA50!T1Wz+h0O$P7!1KS*kfZ%AjUBs1HtwrlX1q5m&7v@ zoXN~MWBW`Nh_Nv+PP_#>7>qGCi$EX=WFet_rL}aodR?lzYkTkB5%;`972VN^)c?#m znxD=+@6~-JslMOe_xJtXcVCsT*7E;zXaFIE1biS4!~n&)86i*tia^;~YcxOvJ_{@W znt>!BIJd$A)4(ur0vH2|8X(I2g8lpVe>a=WE;KHT%Q)7V%ftQaC#vyu>m z7BGyA#K6iLT$b9 z5kjN9pbFerkP=M9dpSfajn*2WsEsov00-I)WCTn^=T%v|X#_T!#0rEEQBDLGu7nkx z71Bvdu_DN31nIP9U{v${$1VBk+DzBlig`O32#5I%BO#?1tAL9GxM1_mVgqD09Qkz2DAW>ILvPmAo#b} zDL#GkB)$sx>mR1L?>F^ax&}UUys*3}@c;^IR+0s9(i1!GlOOm5~uw$Ragdv^tH77?jND#Fupep5BAOeG_ zk8|*q5x)JS-Tb?o*C6F2#?I^-az-Z=4p)TnEEIrtnT^VUNM;eyg7cOs9=I1&aS&-G zyN6l`mF2!Kj}VqDCXfhEvSqi=qt7JBO)1*46+CUomlTsz9(8HO)b!gEXstv<6Sh|5 z2>0*VOq@^t@fLpj%6TkoZ$^rOBlPrP&fElR6@V0=6ao*3j7>-cuzt1V;r}+t$k7R6 zjdkdlVr9n|EEI$RC;>m;80X<9(sXx}x#ikvgq9o`NZ`j}_?}{auVl|b!F17LXSj+B zYiiCdpimgXjKU5VS^M6n*#6XenBUTjR8!b6jOem&_XO*3ooyFTASFU7uo8D3$v=~} zJaq361BddYvkAgVnQ~d8wImD-Q>PUj51M-b9k^3Q`Rh7E|{Ezc-(Sv z1FXBia=c&h*smqIeAT&KSVi>d5i)Xf1a7u9#qhBrORjvJhrV_>zjH%3LKy@Vz@n5v z3X4{fm~YR%3s~n$Is&e+QRYGNSAR6fiG3r)>Jo%ufR1^HQh@L!*|rAuykfcOiV+rf zD)P34O*?&bOfWnO$G1z82}>qvDU}0G4#LrXOTM6Rc7vUvMhiBY$0BTG7+7RWl5(!X zt-tp?-?(}o|LLytc>mR{cwPdbG%c+m!^4Wf(aIdUKvV(|0Z#fBSh=*qqI92g;CKS0 zFoeY-4Xt&c6{GzltXeE-UDU$k8|&G=Ptn$Fx&BH^_q<8+W0Mr7D%j9K0HFr3Y}wtw zm;QbM<%*b9vm){W=|DujfB_4By(CC^Y<_8&4?n+wc$-ICQ-XwV2~CO76aB1Skm9;) z=CBSBQX!>AAVD}1`2F|y5){j18a*oIB8j9=)4Vj}qXkO&3ia(79^25&)Az@D-@8M; z@|iOEkvyZv#(85`K(fvwkx4LCNU`N$nwPi7*t%OYk%Nj6k=H74AT1c8E@7&r;lL|I zbo6`!%^G7uilva=-U5Ub5M>xG!2I}J6riwDqLc*T0g^=Aa_Nd;#>WIfP^7srjf^S! z4-b<_#qsJh{K0>pM{B0U|M<)sq*5`CY|BwDTIySq1ewMB`1ve9e%hyRNYq+C0vvd( zsTCne6X8}sL;^BWg^Gw#SZh%3^J+(&#RDTLmSccFmzAJ!3J}s|-;HZ8K1qIT3Ka_K zno@*8nemYvjq@`c8&Lf9cbmEO+Ci>ZUuJx`$nm}$jq{Qm7+=Kw-)Q5t10GQz)#-K- zWX)Zj1!@;W5~!*{MAsv40F1llW^IV`Eu{c4$CaRzNToq&5R!|R9042R$2B$#n4FxZ zZE-V$M<>{McphK5XMj3gT;9949Ex>Bf5>UWgJU~fgbVrDkteQWFH5GJBlN+C)qq~iP-XT0s^P%et z^t~}bZpu*b7x4LSuV(if=_uPc{{XNHUq-4BJKh1~i-}e~HQ*yW%v=MwQM2N!mID|^ zN<?7v+yl{LS z|MUCjVI6@EUsSWennxh?A-4e0b{OXGh0$d&+ylJb{Vl2%FioltV+3QS6|4hXy94Cr zszgaAe?*z61m>^~K!R3irLj`c*)onXMQjNYbw2rt3A9o)&Ck%gx1YL(1P^WcE&kzG zT}TB;QB@LPv-`2SjNJK&+Wv;k9)PyJi1BU+VgR+vUxY35!nZ%liq1v=p4qgYTfXo! zjMV@L;j&v*fWu)BB6NvEDJ*l@5Q%PurBaT71(_3IEJhYERuBdO9bL^F-G7o~I>!Ca zU(HWnT87fKH%!%KjctDoIkXO`6++ZVeR2gt8mw0UG+0|D$HFiF_pJ{6^z<}A5ODRS z%h>aiPqFHzZ(&4rb!v^lzO`5qAV65<6o8nE2MAXJjsTQqS!V%L&XI_xnHm|Vqo_}S(jl$LMLx~RHbSa%$K^d?6@HENmgKwGR82#f=tW{9;tEe^af#t|?y zG(>A_D<61AJ&(Oo01VcE&;o3=b2yfbaz2KbqX%e5fObT**A1bxB{wlaV|%?Tfx<+I z1Lb$|@H6Y8^+GlK)e?ZPemA1jgtlonFQk~U+f)0prrp)t;gw1y4j(>DEEeO)kt3|> z%J9UtGS*0tH7&##5EcyBP&y1qIR^zO>4pO)7329qM7oTh(C$X&=)PfSJ)b}S){RIl zBH4+zlOWun-1I7P^kS6Or{B1Vuva^RrKlDXgchZg%UoYyA4iWKWol}QU%fVtR6QUK zK-B}JbR^mc9T0QlKIa5L%I+2+4UcU4+59t9a?qdb9#W zRqm@74RB>oFAJLr3`{q1u&;?-b+2=N`M2n7%~6*fpnoLBQ`^?-Wp1E*GzykMJ|3(`f+L z5pua4zVD;LfXh}k@#@|&kgk(pg#{sza;_#Qr30yz1g&`Sq)&D%;ML<_b7k?4^C!6F zqL;`fiX`ikynLXG4Ntey(>}l#Z}=5$8Oy#A%PJG+{P-|h4=|i-W#gfGp4&B_V&H=_ zP9jgRfS_0oi3nkGa?%;!i4!MWD}3kW*E#}DDZ^bmHUH+(DIw)|xMW59h+qM$Tx&*( zxp;txOi;QK_~qzYg5m@#muNnE)e(NH<3-}B1b$q*9hbIvAOHTEeS}d10mXsIJfp)a z*g4w8vB{7_1AQ!QH#DWnoSaH9J1iS_k8#`83(;D;EN|Je#gS05F`hiw&f{P2Aq+z| zwr<_(x`I-Qt+^~ZA^;2+2(?5>1?uz)kh2sJ4Wz)660Nk$cw<8|*|sJw?Cj&JdCw3E z2u+z%p+qKLqBWDl2#cTa*mkU&FaP9vey~*_RRf*vZ!n-XvSJmqH#LKw#&hPGClJR` zvO*^1@xDvv)7cv5*>^3mp}m`R-SwD{n+rRKJ8KFZOPiod++t0Y;%q2oS%#RD9$f5S~zc60UezhvFKZ}96cJ;Uu+ z-pm*N@m}tJ;Iot}WjdN9;{{94(giGDyx7&gF~*r*V+u-vK>G>0mMkKbN)e02+*sRH z$M3&?sROQ^0u-n@m|$@#$I#SwS=e!@Q-N<9885*Q&>ogZWm3cwF(yW*2#S_WbCQKi z>KU78=0AMzIDhx(!>nI*KL7PSm*Lx9Ix~Y5r!#EoKSEtTV61l?|7wjbzg?m)%04fHB6Y;I3<1Fe*tlTTj$6oN@rJ zx}cs1e<2BtbiN>jsWrhfQ^1;qAAt&N-tkASrsg#%N`a(ryhwYSPf#o|cytucgZkze zgCiLpcx)}7dPH;I{om)k@9gH;k6uVN{~Ug>lkWN)*Q}c2t2cG=i$A=IFMRMhK7YgG z)F(^Pqc`Dwf4?)mr=NbBffGl_r0Yl~lX#xz zJmJ`}V{F*4f!AMu-E}WdNq3ZL4*LOdKgEj9yVx^)ADa(;ijQBroL3HM#)vaDIzhSM z(Ks(nZmhuOJ=Q z?qI4AqZ|k(r!^x}g2sdaU}$KN-~48q1GHI=V(Rm}YgIi$NJd9T*|cesYkLg~JqG0% zJstH}Yn@rX@WKlWp1L-_V+q>p!5E3FfVnJ%l@g>At*q<*48Q69`YAJ;pf$6e-6y7r zoiAyuujBZEAxL+zyeH0&Uic2r^&7Naf3gG}xZv8r! zEd7rpnj5KZy~5Xiw3~0E8Cwu$Te%Ppi+TA#F(x?(}Hex zOm(vTm40r%Y6+=iii-6q8A*L>2YX8^(W-)tRG^eOdj%*dTVmeV` zyp+I?mpHy>fcDNtmMxs(J@@~Br~dg6x7@RuFTVHvT=U>&n#TVSOa=f?!N$YiCS9MV zv;8Ur0sspHqi-;1o4NP?pK;xqCZ>mu(Alwo?I-I{CI`S@Jh*}1UZt5FIN%Onz_I5!7rkp;JUW7-*#G7bAQfm0VE}0lLIa0N@ORNQt=t@G<=(?!0QY?dq;%IX7An&azwK!P ztsDlW=J0G#OM%v)JxOD1I}cu>_((~x=b*wgr)XDYp4u_O1CI}oS+bNR{{8GZDj6y5 zA=Qw;^Qzw&>KosJ1r|46iLadD0bmg%e96)*q!iI!p8OX#jIaj&m21WV0*>S?MPEVS zmh-5&EQO^Ku6}$^l8GOp6b3AB%CTi{6WfkexM#8ME+dOAEvSKWv4boD9Ev4bz8;vV(M zW-PVeYZ5HF=jAA~mYsilE5Ybtd<|I6I4qDa!MacVBYt)fP1b-hls)GGbM68zi*YqV z*%&4&hHF<@{_2GyePJVi@?0-6P+Zh=s{<1iHq)gsT2o7%dIW-8Zh)Y#M92B-T>a1f zMwB87Ql6zDD~Rhe$1iYMXLQ=)`Eh(L01s=*P?2aYP>QqP5YbZND@9UOm>LOaU8+&T z!z^wdXUD!~jt!Mrz3fAHo+7%HC07_E9Iudyr2!CF28VVcQi{&bOPu^g&9^DTT0&OL}9HkP# z=tw|U7B0DPf`4)w9`&s0zQHk$aP`j6&|Z?|CYOCjit~h>c=LP~&s&YBg#&D{5fK6e zxH)TG_EHiuUX_4^hJzEZcSzuA_nLPuv=oEtgRuaZ@W4~9?m>bH6xMSJaE4wJXWj-i zf^un;Vg&|=;i|P7J@#1$eoi`(WpV5IxDepL4(_2jz0d&>Qhy(bhVcay153RRI#PrJ$`(8i;-12f9=sS~LAx?`Smv-0l6X=P3nwTI zLB|^S-m&{=NM4LmPmoQt;Kd{ukWns13U9Ew`x<;-MG#?pdVq#hyK9T$UvzVWi>Uu6 zofkle3z8ZKC|9zCMiBQP;enCW67UT83a7AyFF*(aqcLUaNIkox@nTVE!fSJ^n1O?*A$8yYTlBLK0#qkfTl|FvTgrFf?)yfcCmYm}0)BX^9!< z)kogeWvfa~F@&}xEKXM+{Nw{_gD~PNEKgwzlUNI(4GD`=m`V}pg=b#^KlsJpb6)o) zEL_|}OG^`ndw0_iYX)fmh^Zt46Nfl*^mS5RJ-Ny#NSGWRrJ_p!>^Zp!0A2DKIPnJ5 zxc=<#`NPEc2z@cg`_(I_?T4bOfWW|H5oCWa@q)!T69_03rkNZ&Nl}JpUjki=yBH}Q zWOaNMZP|I$i866=U~q9^(|UG|yvB6lC{1b!B{NNv-%3V=C^H2>T6#1m+i2AZ;wBGp zTKNNHmRwG5YM7$uVL9_~pyEZ6p2lMeLO>WiU4gXE!uF=KFM*%m|2?X4H)j%m#_cm^ zZse@u<2U}l`Q<1O0@KN4(mU6GO8X{8U>XQ(2`B;My}i9BTTVp~1e|L`2qDl~Gju9| zaiBDlfPw3;zy6y*H_!k`&aE&J@Poj>Yyw~eI1E&P%sKko;Yr{aFfx;XO2ketkUz(N fJUtR&tpNOAbShZKy)j>s00000NkvXXu0mjfVbHDf diff --git a/public/img/emoji/ring.png b/public/img/emoji/ring.png deleted file mode 100644 index 8a57fd68bac147d622d3eceb13d9812b6977cd89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5232 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 KMNUMnLSTaPZ{WQE diff --git a/public/img/emoji/rooster.png b/public/img/emoji/rooster.png deleted file mode 100644 index fab23ad3625ef60563c93b96bedaf044332628d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6168 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

    CYqRjASe z5?}&00Gwz6LIbfQA3;C$4NquJ1eY!D-+%%*F;oP6zrR(w*Zd$rx?M2%CW>VUc~v|J zPq+XX%%pu!>;%X#xSy?b4N-BCclLOyyE@0g1nj|GBdYz+GNP#BiC~SkpFLrS#0ep= zGRf=-7ohT7()fq4f`hBgoJA+KCg-_TH#48OD65e{1k9@w!Teg%kDnQFoB*yL^tMHf zq8_p+CPw>x;8eDsZ~+RZaBuPVgq2&A|>PqV(9wrG{;B=J`ZO9S&0rqgBk3X-c0}Lbs0Pg;ZUjLh~mp2#7GFB&_xQdr4wO?E8Uo!TWP5;2Pyql*AXMl+Pl(=@p+`X8 z<1umu34W19GAOIOi2jV(37vbnp<;Xs$AJIR$|2ujgz(7mDfiqt$FD;MA*T<*8 zz{n_+%8<(mVF(_8fToZET7!kpDXnkArcVjM68Hk10YjQWl0w{trM9wg9F87>nS;=n z(f98AzJ3s3@EPE+_cr~;mgmTs^%*`hdr;0Dn}XUnRBKALA{27q1qMI_{1)WTfHa02 zpaArV#|f;gK&z!3pM&`sXv{->LHDh+c*}v?_1|$efDCwIY}_rc%~$wfbyT(tt%Kn) zsE$HDF9ackh9C#pRnAbK}7u>-YFIS-`K+ zLXV#Y!l_1*=3@pQf|8-^${>VfNz)_}A0Tc6+J`3KC2V*S@p^k{*bG-pcRJfLs9zL*~oSji7N%@453P-Tk!t@ABurN?tuWB^%bCB8;pTid8*` z=yQXT{>{V|VaGG!%<~NA!}fDv+|GisUZ=iZQW(~y(G9}-jl%GxoNJ$T-qWrG@+Gb; zRv}YZI<6eu&t*UPs@@Cy=%v?6wK(EkGd2#I!R!po9LYX#`{(sWfD5jW*GZr^S876e z7+Uk}0q%O*WWbI~C2s;;n#53_Rb~$8HywEZ7VCVewG7=9IteT_p+3(KadyYQ=q)pk z=`ZSYN}58U!fT$g8SspkNv)9MjVT=Ulm&$?wGw}wCX!p4hvkOev(V;Boc+d&Wpud4 zXW|5!OOT|{=_o-!ku|om!b^@H((e_kvN_9S`n*@kBU#2@A{;~6;6Y`+!N(u{u6710 zK(0%sc`opj3&kTtsgv=8rMmu5h40<-6}^Ks_Ve3x;W<~x*L+Xjy4=k$QiOp3%3Axc zuj+na%XzPm-xlE_fs1_MPZ36eM1_AV&yfva3OspSxJO=m+B0+Cq#Of6)(Uv=zUYN_ zd|AJ9QvA_Wno<B;q%qY58SQ%JH569NQO zSvhG05G9Bc;drw_mVpB1&Od1cFw$NWc|3CT5soa(5GNkM*(Z$vo{!(GCsa9|&f+kQ z`3!|mpFB-4rM)ONh@AP#sKVp0758Fs2tRlp#T5?07*qoM6N<$f)Z4~ ANdN!< diff --git a/public/img/emoji/rotating_light.png b/public/img/emoji/rotating_light.png deleted file mode 100644 index 6cf4a775e0a42a07c796d135920fa4e3f9bdbcc1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6620 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 r0Qm?3)3$#!Q6_Hv> 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 diff --git a/public/img/emoji/santa.png b/public/img/emoji/santa.png deleted file mode 100644 index a2240c07e7af2be38a5b9d27eca65b9a5c9222c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6271 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�*4^bMkM}Xp#s)mb3>nAS--!}lL?tUlpox{n` z)~#FJ+O=zgGrbinR_M2PAL-xIJ`8Bdk|lQUmM&cyl(8#UuB4{ty8tPRIM7?sIjmHb p`aOsNKTN^`{tCbknEndD{{bcoLUt_*n9%?L002ovPDHLkV1lw@Htqlb diff --git a/public/img/emoji/satisfied.png b/public/img/emoji/satisfied.png deleted file mode 100644 index 11c91eb22e6a9ebb879071045a8d40ae9d15bce2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6347 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 N002ovPDHLkV1gva9^?Q3 diff --git a/public/img/emoji/saxophone.png b/public/img/emoji/saxophone.png deleted file mode 100644 index 011559a7673a28f96f7fba76d66d072574faea03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4252 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 diff --git a/public/img/emoji/scissors.png b/public/img/emoji/scissors.png deleted file mode 100644 index d99b8aea06a9218e4744fe4a129cdf33b0da6111..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3837 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 diff --git a/public/img/emoji/scorpius.png b/public/img/emoji/scorpius.png deleted file mode 100644 index 67fcea1658acdede6fd5d1b0cb211278274fb0ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4566 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 WO3QUv#$NxG0AwT-#H&ON{r?B=uiYL1 diff --git a/public/img/emoji/scream_cat.png b/public/img/emoji/scream_cat.png deleted file mode 100644 index d94cd34ff5dafe1082a3e7627ac87453ca1da853..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6844 zcmV;t8bjrYP)?@s|9?xbulJU^rS4X1T@czqFd&u~J2n$L6DLma#7<^_WNcUB;Mh2E#U@EP znV50Lv4=8AfW#qQu$h5iFad*uv5bU3APEpc8&XT^{q^#;f4TS0{ZGAq)pTXTqOO^# zN>0_O|LHxwd%yFY<=%VlYi6y*zh>chOY(07{2Kv({fXSqe(Tn@+rD*c`^EVGQ2zeb zrvC4Iw(XX?KG}Bjq7(4J4>Hlw?%%d{MdouW`}}>6|Jjl!9{fVb4R_weGWdTe%*lga zXus|s|FrAA!R2)?tXrA=v)(TGrN8>Ex(>WWk$4O8-k#Qh_Ex!mNw){ixLg|P-BUAq zcXM<1tqOOg=Z+S&f|Kf1m9=GInqX|7Si^96a+0@;a)XeWRN z7L9;RhOe*B2#<5(3&N9VX$5jQwRUUX=oiiK!T+ih*GYO-&gL zEKe_4Jy`cA%a>)I`Q9IN{^!5=1oN@Ta^Gh=ufK6e_tUFaWd3&5ip++VRv%0%R03eq z;h8NMXaJta!6X}8)D%d0Sk5?uu?)qsMLE%m2ADxQ#o(d?xh8@7tXwrY72TOV*ZtAI z``z|W-|$~Ye~b&1yFT5vsZn zgrPwgyXTaJwH8W|C%`uvlIXY0M;PZMpvTH&YT^o zWR~{SUy<@eT_t8XJz^0=5p31t%46^~5L33 zOky-pjx8#YMX791bXux74Gfe38tXW64IWl5%b>2#lU&H_x$v%MOo9nfE3YK5#IoZ6 zt*s628A8XAORX4V6Cp+_8ilfjwhWn+KsLo;U;*;Hg%AwTfOML&fQ99YN`N+&8w(1# zN^FUQQb>jqu&G&t*^-7Y4OaFj4D_avO-l$b4Iw;m>4S0Qlsgpw6AP9f3u854GO#*^ zwHh|Az)weL&xIJMgl?`FCx-%@%SR{%0!>;%Tfjks1>j2%@i93Hi%S5ruu*JL4lFG@ zmC#})F}|pgcg7nXWA##rLFesk)`v_Cm!8uUxKLn1f+bHT04Bj12V)?y)_}x4i3A(N z#u2QNFgk)!A*2@~oe5Bvk?1Xi7#emu5h92c8Z$s_7>v&esIM%Ix~K$1G2$>x2uM6_ zX(=3^)|e`4v}Fx8Z%iTAcy9OW$mS!ET1t&g+eh3d+xr@iOteNP!ap3S25Om~rXU1Ni(YIlv8h9kAe9!15R{ z4A%1G0d6=f=MaL!#GH8JB821&N^+bySHY;mW37Y|0+qBusBN&g5uh=hRQY1XI^!*- z3K2H-bM$tl(A+@AlgEW4;MrF~-2bB?ygteuVGJn`=wBjn<1ehly1^{K<`+OqBoGV} z!w7m8-+uTk9{Q(IOw53!DHCDyN`+s%DvOrJ6a)u2vx!og`DZH_%3GurTuLxR5ekb+ zK(S)RlCUq7f!Sh&bv;0Dr;mnu3FW7tJP*?)jz7F(7$?SB(AB*G%Lbd^`#ypo!1%-j zKK>`i@arEa;8)%|0C2uA#OS@KZ1G?I_yEpKHleq7GdlYl2tcV+!roJ(_~Gqm@PS=1 zZg^L=N}(kRd%9Dwwt|UL>M^2@P(`*v*EvIX0=ZNp`kU51^zuEah6FomaI7y}7JP3Pn@|Lq`( z=*RBeyK%`SmtgDGt@M5On%>*I<7)iFfo|M(_au~%P*PDnXv|7oQQof)3g@DO2HmxqR|M9Nc8N}&`A{O%n^^sT-OyLRouh7B9Adi83oS+fSKR;@~2 zlWy9y3EQ^s#Mi!Y6k78IC^!zhlE<;pMlyEYx^?v3`MP%PT5R6D8CPC;C5}(8!R_Cf zfs~T8F3Zr=AYDrOsFXsNqWavT5-?rTr^@9Bt9m^&)+uDt98wC}hyT$%lj!c>k$8%L zu2``GeSLi{gnQA`(}QKpmSOqw<;j!CiDefKyfoiIno{7~4<5sswPbkh|5wLI{!L>J z3=ClX`t=l1drvOI-d7`tgan~zgH)dtSkj@uE##sS5Ey-aS&OiBiSZdmhI1)!_@u^} z*#R=XzrUXVcXoE7t*s5YTn;TQEu`)3?db0A1{t+%IS#xyN`{k?7@Qr6$;hs*uK8os zw44!dJm+X{@%k#uayJ0@%L|Tx zJASjN*>zrS&iDc;#c3nM1t&c}(~^WNd8etVX`%5X#u!onwa*l{c!O92W;GcngdozY zI@kLn<2}zK5*<+#4TFP&c;qJmeeQ74VJYo1WHS==4dUZp_$W(VFaen?K2V>Py$Q2Q z0YXUfJ_8`K9prfj>Yw#|9LMDO`C2Fx(9@RS((@EZ@qj+lTF?I;y{-~L1XW2$2qzNG zOr&W}!QqrcNk&mnmsJ~jbIsRW5CP0dHlseAPDwJJj<>KN#u-N{m8OuDQW6LUo^+w% zK@iY0pU-3L>kjw!sshd zmnxHH|M7xqz@5Kcx3<1s?eu*HB^WWxIKTw29zz9z0YCuf34yHwCu1s=3XUH?4nBDl z{e#=EP_En6hA%(%0!A*qlxhH_ic+=QUl3XJq?(WzUfmEeN+Ccw^%aM6-ZgjLl&5f$h=3ILu1hKIdy36@pC*LS1SkqBv`cdyp7SyhQuS1g0QVVr_u0Ka#ecY@0V*TN z>%=CB!Kw|d$lUiF4jw#6D@S!4iYPZOkzFOW78$d%v*2+N04L+Qwd5o&4RwstY0)gQ z@(KXodPgbXr*KWm=Tuw-Cx)v9hXG)Srp{t~e4M;nE|=#$iJ02^larI!vu6*yvwLv) z)jbOfAOH)M;<)*J?RfUdhj8rJF{%e{toh^3jak!k=gy(8u>wMaYI*`tJi*JTb(U8A z>UWd^x8Kyzy0Ry;St$;|03kreGb%`yqF{Z~3=SMPK!s2#RZEBYp*lT1jlFyK;_wsS z!smaf1L;OZ9}_pL z_Wo3qszQ11!k&yjwda1^a%~Dd7q^keVKs$+O{^j19&p|D?I_>(68`7Ce~De!{(IU+ zyK!sey6`9CAAR&uY~V++dYwo(K(bdmz%T*SKfAH7%-hJQ3Q%^mWLH2G8FA72NmDzr~YJK8fd_f1dQQ#~#Cd-?$T5z)j*{`9 z5V_n0Zs?a-wXq(peQ7{gm?(1Vb_U~>K`^faQl<%nj!Q7Xd9->jpr<85){(I5x-9yZ z2iSjTFJAoN9=uo)gsVLjZRe1(eTgVLw|8u=nr^boF(? z(b#fTqI@bzz*fWblLw^+6QXLh6qCyN40+ay|@G40I?zOMjq0&Xmj zpN=t+=v0VTPL%25B%4-PH<-qT_7tSz)Zu01W`_La49=ZCjfw-EuFFCSnjW!^Q7#lQ zId&HL<I@6c5YqjC!CZ}~ON(kR*5cX2MZA10z?yzX#EKNs8Gs>16qYeNc^D>2y1X7@0}{!B zaw$Y{<|v}jf-pKAnTYV>t0B&fMG(xmIcU2}&Drsx82VHN+E@y6Us1Xu<--xkkV!GL zHVd>iaMb%To;*-t+Xm#0t&Bap-`eP(CE%qY%xvh5_h&q>>*(pI?)71d7RPjFi_@IK zhJh5M;DBYArOObDN|1D53`X-Y;s}%~DJ39<#ktWCab&To&quB~AxU9H_b~qI;Yld3 z5&!Pu0RV9I<2a&V8vp6t0kY{Oh{MPk?>u)lLKG*4GZacxc%dVUW{0V-UeTW4SBbHl z9NNN+XPq;m7}9I;};UZ7!%w3)g}lwXqXx6Z5MXUKo*Q! zJbs{v^DoR$t{E-RoKfg#REV@C*6DsQwqS>6Bc6*#H(k^2!+MR-rqs}fka}%P%2Z)oPZWf zhPKZc-%?Q$%s>i(nf^*Ot&q2z>RyVK+~J&3zoL^&FuFPK{RZwf|Md^42tRSsU*=7X2V`^3E0V z@|`QywIfmd=qoA7?_!@VAg3Ob#=-33cg1N zo9Y>Wz7APkf)`30YaDWg_wL8?*xqMx@v@{K3aU>Qz*NcLxf3D&@gR^>{M7zeDt`on z7xx|y_ir9#ZQLMC>?Hyc+1$^T`BLrHuqVc%c;D5l>;Fk+qU|?akwH(ZLe{5ngE62y zn<~aQ>LonM2^Xt6i5m;)QI`mZhxF4&#_TMB zhqw2!&W!I}wR4c|edaYgR70`vwcz1r$aoUuXQPMCO&UyBEDYn|2??H}BIhZAl$UIP zlq12%)$4#CJXgTeheAwFg_I^F^St@}XUh1{ZDZ6(mCB>TljnIgwUBspUx4@CI^y!z zEVw=gv`y|KL;U2WkmkC2J#bN{F1oNbLD*n+cC*zUR6B?mr&`>Z;f^!d2N%%f@6AR=T71fB<-5O6H zF5}?I2<37}p*k1-W78VH^FQ*?RxUJrp*q08E$;u$ix3*CR0?tUR77*E>WY#%Y3{Tq zs>VwQp#UZcXK0v90gWR==CxPO1cxwBlH&L5iOQ@0;#T;iwUzEp@x_-!e)Rs{ zSE3quum({ST+qJUC|A&X*olm8$X*$2;ktfyi}EOiWY4J#tRxRor=%A zJ`{iF9TGr*;+@<4yT|hJr{W$!TMoslg^ivd5>mdULbP_N!U2~8L!&X4cS_WyV<=C6 zfs^6YzW%>N0I9C7fyQV=VT_SUjdNofg&@NE9_eb&LgQ5plLjaP#`7AL*xYr&7bEGE zc{pFxpEBCO8eY5B1``0MWr}uXnUuxScF%bybl!^4KOtQ;7mywUEcV$bzNQ zJ<5T``Mk!-kqCY5$sE3$i&mz2#tWy6uvxl?u*erQxHLbyU;;uDpK$~f!`NggPi?|H zt9FHCwTv2go<*+SI07V|I2d7g!lR$hq|*_3yn5;JrYT^Ip(ru1h~tQUiE@72X+FYL z8zgOZJSAvuQZ7IszzC8B?NcyW)Ftk)UoZiD7L$dtoge~$8hFsI2vzna7`GIb-8l(u z0*p*)Bsa<(xd_(ct)>8lKV#%c+U45_0XG<%Hkd9Nki!@m{$>$SyKA6^ zYQc>$WoWFXjHR)urcnAhoqK|jGI}t?8mNRQCfF~Sfc^Vz^obAGht`tiwFyzPK~x=J zs3LkjK^ue#_Qm;`9NA4)R;w*)kwAse*y?LeY0zB9=^Q>W;|Q3w*gh!G-))iXEE8Es zz(NwP+X~DUDS9wDquo=Zsg6_lgNYgrdU630JC~Yvu8+wU<@W*W*E7#o%$Hn%)x5_+ zN?@vhkbExbFy#9TrO-M845kViE`{*fU$AIvh$zSB-TIPN4X4jG^+&EZz%W%b$P0iov{L7rgL zASsqj5((tZT)o8?e>KAHjU{9}x<;#Aq-v*a^#OkQ$}&Fpiw0q6FjJripzj8ug(s_S z6{6;SR2>1l(J`LKkzh`+UvLWe%%<6-U%k@e>Wwjuo#&XC<&XmCYBE^SrO})PW=fWNe)Oxfl0m5wYh(33#&HSg zzL3|vPZ3D3Yj7YK;41~f?63nEyC4D>=UbYxQgSH)Ui0?6vwHRCYC-^U3=0k&Gi2)H zFGQ87Tqy95O-$omK_qxeCEj7kI^Ei@X@f+#spSQXP8;YL&gg^yU70OJ_gBLBE7^Lz z)EM?%gIcp6jL+fV^dulKR09&M3FZVlfI}BVfDmk(QW8-l5E}sj4#6cD3`lB!Kw)4Y zpbZdc3v1Z)cYj)Z9Kgf3-;}#-wh;e%IxT-TibX~Akyz=;HF7>XfKC^Jl#Or&i*imLq1*C(F_@bn-5T1!t_nrl5@UMmDH=7Kdc zYpu3+GKlPc6XTJf96f&P-^@&4o+M+!zMa*EWL8KW<6-!thX2O2K zHK0;9fB)jC(#Jbn3tnUu{WS=&TT4Alk*8xz9o*4^#@Mu-4J^)Lf&AWG6K4S2Mfx@* z87mpnjh%xBlw$@#MG;O7EC6jl$L2z*g7YH05C(@O!Q`+_BEk6R{_*1B6VXixcD#wa<-Z=k^iqFAHs$?BXN!1OW7b>ZdD7>6 zUdu|yD3wD!G#b7zF%f<2ndic1u!ypAi?_3-MSazsI5%a|o)AJ-{b#5L5C(BDT@23- qPv}RBmGF)|dum;vHz(j0000Xy{)*Y!3m{8uX!LuSN{IOBIt zWLsI5$xri7$xrw1{}aG@-Qc$G{^@W1+LwO+_rCEpnNAkPxP^ZiTbUFimWZ+}-R5}8 zy7+ONYF4y4pJSX;%;l zaf3XQexA=uxM>tinL{N!M1Ck97gG)C<9xnwzJ;R1oH;T5lmzB-3Hli}Ghf7_vb6E| ze(P67fG7BBs`Qh}X% z@JpZDTK>t?M`f9eN0Ka;lJT$hsF*h71N%0O3n&>tUfOb-dC<$pc z&G(bMpTs;g$EjH6a7A14nyt)eQCjE^C5-JjPO#Qe&bpI}_g)_U+glMJ&XWFUyiDu0 zrZpK3WImg7oE*t1o^J&0Bp1PyeWRO6u~`grJZB4u#J+i&Z(142;F=1ArqD~F@0^oM zm_AUN6#FqmTD1pepG%1$`cp7)F&fCf{Lk^<9iH{R|5gOJ?k`^sJnvN$MxP&ayRuxS z)cf2{i8&ATl5L8hWyXy<)3I=)aS~(GDG8P3I!&>~c+7DlF?dplyr6Jx;bMh(w3WiR z6h>E}k0HM6IJPKT_ibaQQwO3ymx=OZF0R(x#ans-a%}MP54XSl@Zr7Bk46)6$g*u7 zWU0kJjme2P=f-leB;{kM3T;5DML6cBEoHIB7%OEP&bf{f*LB5~+Xt}4v0Za8%i@7u z&n0mkb5hn=Qy-R0vAI6pbri*3DRKgbU&?GYk)iL%%udAjJ%24Xcr%y3|K1Ni_?0`6 z`(-x>#BsG1v3Q^?*ICc8DT3v4fIqg7QpuO;Y|gsgtjb_8=HaTfviLa2d=8PE&LjwY z{SMdhL4;BmXer_vzVG5W`k9fsA=ap1KBT7bLN4|aqwj)X!|{acEtZLdyIGTaI}IG#k&+)!)S_x6Q6-XQvw;oU zQms_wQ=fW_!v$SiH&tn&->E89LWArM@~^6oZQGsyNCH>8BJsUJx3S6 zBnt1_K}lTf*K)kIfDlWg9#-$&ZHZsokorag`wXP9nMw&9iXjc)Nz#~L#IYTz*L~=_Lp_hG zHEwz~n_=9MIc$gzac*wZ`OX|F(cIdWu;ghYCXTYDuGpsiz*G{#b{rCct}-?5RxK3P zNW^k|NRB6BTlU(qKx?BCTAnX1PVGUgL#M*!cQ?wG z?TG>r6gD4(kv#qMCN{Pt#iz4a#*-;@Oo@K4)4!JSa4HQgw$qu}fGBRx*iBo!Ac7}Z zqOG7lGw~o@J9qEE(AC8E9Abe9Bw{pOQfh**B;CPCKw*xR0#7cldIVE(Y8hiX9AnNx zhNz<`Bo0xzcTmQyeKG?0u2-?4OEwPYXx(xhx+~B3;qqb_ym!O^E`tQ$efNnNGi=bF z;%EjU&Dd`=s*=!kia;fcz$ID0b5Msx?(A$+otAjd&VByVr%(C*_VzaWG3ME5D6J+S zw8FD3&E;GLS+PwQ%lZ=$K-rm_-iqRu;K=#;F;SXQ4yav{daWvWhdaH3cvj&V(94Y! z-n13GLrAIVcY7EI@w5bZE;r|SKIf)!jLL+5GZ2ixOIaqUQi9sn1S4mCFk%dRa&>uy zJ-Q@vvsvR>Jg_CJ(Iw?jtxtg7aNZ}-FgT4=FO{p@NQ6V}z1)}M<5Nlm+#f{qhAJ@! z0^8c!kSp|SwTkp`@Jgiuk1(dlMsSxeF*hv3um(P@eYqUr`A{lRM3B?D?n)3CTwz1% zw%}Gru=qAOeedozt-T+@qqwfd3|Q}g{=ZSL$)iUPB(bRed8BQjpRVr(o*&=5`0^Jx zk8sr~DQN-VBzd&;;GK751if=?MGL=qXGd&2^8!R*aRxWoFjC-v>zM-aDnxkm`9c~S zn;OutD94is#7LF)7%4f~+TLai5>~3{dkD%V^cs>1Y{OCl5OT9s2Qy5>`RMTz8T5x( zCkIjZhpGtEwG&yJ09gAbGa+lCPnLnDYm>X0s4F#Npcivwh#X!!@uG zZq8_x*|_UCdDIp|N=gJ+i^YQ67onXXv0JT%C`OWuOF7pjWYz?>4M8?)l=u)IiC|B^tw0F@AU;gsMMac+ij@MRX+EOLDWsBBcnl|DiX&FfTbzJ z?a71(g}QX~K3Jce9Fqu2Su1&|FbLH81jw?I;k?ovTJ?*|4mQ}4v-2z2+dGu^e)OT7 zou0{M2mT#8f3SaycdjU=2ZyJ4wi(r6gP>H%iPo6;6v^%UfTNuw|b7x5#5QaWM2o6BeS5_+j@6%6d z{18#nAs!x`(B}u9XRJAp<()gWFs6lPxc~4zMH{}J;0F7rnBT!1eVFlhO61tu+M%j! z-@S`ziT?XUo?hTF#K!g{SuTvqz8L}Q=T?T_8ws%0EJxbsQX8@1F+{IaD#2ox=+_Bh zD*=5j<9(DcaA@SZ{XV(Sh4|iu)fT})U?eM1D3aS0&vm#?syC~Y_zpJgDO&SNNW+JN ziIhSEZrp0wNTO|Eua%*8Z4w3hqTLZkQ35QJG$=Ahf#H1K>(QBm+5%Ia5;*~l%`Xt8`_K1vPPQ6y$F6bFN^ z$$M~udV_c<*LE5vv1QPg=X+AA!u4PZ1P`(O6x2=$m0c7x!L=DAB$WH$`X(%Q4ZtYG zAuVilnTi%k)V5#%@VBYMR+K=JRDqx&G5->rJqHeO9G9*%&UB!Z5=Hu@GUn<4$P*89 zE!6p83Ie38EvlLMF-ZD}K&a4%TjMqcyn-MibWM%s1~-BUIIu}dSjyHC!5XX}s>6@i zz$w{M2KO@J5a#RvnIDQ{GBJ64^n7`)@lLtC%EeTdB@e#> zd(ppr7^T*S!to+Wdsd$Ah7TwFyy^4_Ogs=HfEdFq6+YieQ@SX?UA{9K4jDREs~Qb< zbAvc0VUm;q3*D>hdN6P!h1>YHXGJroY#|xuOvz?}Wa$1DDh3_T}j4R63mw+|Zdkf3Ytor)_!u{3TrCIo#ZU zzWu`wb`jcMQ`ft_fy|~ewmUZ+dG_oj)@aLl`${h1B6pwfb1jTx-9FxdZGjq0VQ8Oy zxC;XI$pjKF| zA)4EPfiuzKlc!G^6fGAE>U^AO{m*1;V?)Z-h6KKkIb(^!K)kSwps6e>#~j1qMAs~} zW>dyQpuWzT$aK0=8YpS{DaUaC%1f2tBEAB@bABGSZPDWAAccqQ1m+5w326 zIKIGmGGeROVEA%bl&JfxRf&mXumGsE^V6X1z)- z0&(&g;d7zeY6bS@Qc|b{fBF5&+DI_AWN2E{RT{rjpt`H;K0U$lNgL>HALW4fTdT_j z+~mRj0d2wa-4}3?*SuM}XrECny4?=PUhKYtu1~O8z~TN-!&rv5H#av>qf^+M5me+* z+YCIrCgvCo@qUurR#TQ$t`%H2T}46=#jZ^NL%dsoi|YUhJ_NAY0Y}SXffN0~6tFh| z25&Q`cNeH_u}m2X4~8>c(f{9a)hom>4XYqTF~t7*Hb8T%5)i%Aev4O5C*x0BZUf)7@N>2JOYmeTKZRUhP3gPnf0Y!|lEI-Uo1FCn#s=549-L zB_14{$Pvaq_~1Ep|HF@Vi6AfG;;uSfs?P3qT!g)TLWC=Mc77WPT_m`v0}1wq z6J~)k%V8>d0sY=YgcbyzR9#P!%-kVvY;MZN))vLF+1lj68?7w~feg2H6tBQHk@=a7 z$6A$`EA&d9L~w`qA3cIvjrqX?mLdWzM^)pE#6slwfO*L=jAQ{-$#4>Z#!r;)rHmF& zJLAi>2~dp!F9s!j%Oodl)bBoiU?8yLk`sx!DrdI1Pz@9XM)lc?N~o$U=q zfL_zf@9{BSYTOcEgF70vGUk^_cpC*$fs*Jx;c_Jm7>-9_v-o(zDh!{HpjjRud5)69 zi~j!FDu5({XTDq^MR@~se0pz2S@bl zA{pFU58N6`uh(Oi2O=v-ZM(_PHJIKSZEflD;^{O|xTfHvp) z=65=!A?@Jr&nE;;E9g(pk?^jjPdZ*2mAiuNrx$eWwTPoD5j@H6$M zb}dX!42C0!Y?TtC={19dcpyv@kk|EWjSCnNwzgXNrvfSLMoc95KXH?X#?Z2gQ9TI2)r4=0jbmCz*!f+YHD695M+p27G~535m0 z>jO8RGP*26g9k&*OBUQWG@)TjL;?EY*+U8 z_E{eu9?7UbV2-ZWA0ZKX0@rs$_`3IMj{(yHKK{A`sC&_oqk}_wi05#J?e;kh={f2y zY{LoM^F5_tQ2BxAoU zCT*VF+X&ZBiYf&SEuba!u|J$jIvAVJVzl0i3teA8#8d4FDE2cLsV<1o?~SEY9y6Ua z8qdH5O~jaCZl%!@$LJ|MyQN{LowPt$(->cOdGR8WUFyy;&1{e-I zF_|vuS`liK0Gpdl9-PHe+;_d~m)E}<8%)QUQCe-Bc$M`I+#o1RofY9zx+R9ol?uNg z$*-d+&b;%J46ybdbz5>bW~q$EG=@0ezqd`ol%Zbvw}ecD#3mJl=XbCU2;&EEjWr@e zdV8bYh(cSaEgD)s@JveFl>FY3A6Tt#1NPe2qpwI>WPC*uSxn~q1Wrjz*c*htCIStT zLTfY}2eq{+jF$v77vFEVIKw{gdh04CR57d zp_DQi<2YT(2Nd`rD*KEU^Fke*oVn$W7~fyPxQsTMP>K0Y6WrQmsg9qs}Z3 z&>M|bYikoww?kVH1_6kaAR_GIKn^A5Ge7ew=yls9NR}}#Jcq+6Kac5jZsZ}j+_~xF z`ApigDKAc%jT$+KtPl)s1BNeR`V4dE+lrK~vBfmXdGdz)Wv(z;(iNxKC%7Cv?~c!v zXs#`3rENQ4gcp`6O%%PwlD9Cl>pv2hQ%XaspwF!Vlw{^%G+e1-~!*Bd9;0BXSDCYCUocfI<1#gBcWruKf27-CK z_O?w9AWq=ZXZ#ARTnPzyMj&Vuh5TlqR;iMB$RZIb;yBt9P&Jg;l3M8d4nM!y+-el! z&kv+r`&JNS2$3O3klQ!x8S_JsYmwxWE-~9U5eg_DT_xg_K8a*wBG&Tg?29#jjVQm1Df>c1f9mCO$Bx8GrUwcx9i|q4!He+gi>%jwh6a-dz zsB2N`V&m^=BpsKkw;B;L4$cU)7Lb@RTN*vpikwaZ@Rq>gX z6W}%{i?ujErxx3}UEqo&xXO(76e3?pS>CtVp`Bn`sAh)vv>T+t#pxLWs6o3sPyh3+ zjbIptU;N4!fA$ZX)o}aWhj+@gFbD(REjhMTs`#E)sg-P3Q3{d$Mv#ib8Dh@8A7_{LMf9*FSXP>^I-q z4I+X0;-9|r-+zE+gc2a;F6mk+4gdWJiOYJ)b*n&X6ng)>axo=lM|{tmUY5p`t~g5ySPQRFT+9?6L2~bs6O;s_ z(WlPez7k{15(CbcJipGdx0L`a;-hMypf>7stEiQFwe9A`^Fb&VM6zuw0$MElzFWD! zy;+aSrFtpw>Yk%2)hMh!ey{_22FQ^(p=YZwa9uwt2abylg`9VjG5tEEgzYS)#2Mlx ztN)J(eby+1!5=+4mT&#*kH2$1UH-~CNN|DDMX^z=k16VPl%`V^SfcQQf`1?bq@qoK*oq4s_#C!+la!T68K)tRZ^)}qHt%sSt@(3?<(8ZAqBHP z%7S_^6HQobdu6e|yZdYn3HZsyDr8LFTo+|^Yz<<{8wl&>OapD)5~Qr^x{xrj%Gg*1 zS7()bJDZJqRH}K7TeBUj4!x}W=%a(b_`!!Szr8jA)-UT5@(skJdUNE>gyi#&CnndL z;+*3*s=)t6$yO=&w~3vxJ+^1@toPoTyRYB=uFK)*NVX!Z#+5ST8IJVmJ>Sgz z-cQf}JkS3;&;PuyCWPQ#3{8&X$A5A>*R|u8Yn>()KjFvGf4F)1m2dJf4)g9idd50= zQa_1qp3rq3^j!Coo@X6>@>9=DrI|?>`XouBERFJ)fd4-MIDY)GreWj@nqfX-+U7&9 zvgTXdJFa)@-0nlo*^--r{ zx5iq3K{NE9G7amL>uNJ6P97?`o`>st(otn{?o#m770+|A9S6s;sn^O3;)@h((CxMX zh~tn!zsG$GK&3K&R5Q(Au3E)s$7g55$%zB5rke!5k0ypZ_0*F%j*IQsxXMun+qQ7j zXBX2lu}o>UMX6Nc+H#kafHceTheL*g?)?csr7{1Ert81tlxt^7K&i3tMP1W=%e35zSFB?>MGD0#u2)1DMe5B-4j!E1`t?Ot!#!qZrd0%FdH%lB z$|TtT4OVSD$riEeUwA&rRFafxK0MJDK^SWVGY`09KIe{mg9|SQ$3^U~x z)%qxoTTx~?9>r3DTD3|PC7@|)wdDmNgaQE68~|O*fLf9nF1&;0D6$=c95xSn>c{WK5 zQIay~`=AN3Ec<^Q|Ij>7Gb~eMcYmK!(WOvu6d#zT`|y1OKn?)P@p`?E;}+TPbm(+D zI8Kd5qs0R!7dUtBUBW1#+Z!NqJ{$obo)af2MbD*DuHd;v+MO*jVIouOWHHs6;C0p$VVGO!%;5r_r zVb0t)07z#vIaKiy1pxxJLXZkH0YMOurV$z`k8JRkDbZ70ItM>r_VmKW35SoqSRmrlHO1XsXx*!t5&{xdw6^aZac<16G zd6uaN_~QTo^;wy&nbfK_E9*Xi$XMUqR9sUmmL34^JpgFDCs&g^OI00jSuX8PS6+vt zRg3w<3(U_=vbwfSqcy?Otz~>a08k)&R1~CX!sKX)i`RN&8DzPJY1&8-9s<68?@2IE zuIRw~Aef#>9K`rZOrelqSvH2^f)Lj&$dw$jzOhBU)*z1KA4!4$L6mU(=oA-jq}-O^ z2@G_@A`Fs8?+Xsdgt%(E4z6P<5=>GsZ4cDy1^B~&H_l(fwoO$Y4~IFoZ*S6UHUC5r zKyG4^u(Z5F(eoH-O!IDU8`E|lxGw;R2f@a$&_Q5fyCzwhP^~p_97h2XCkdrW0mm}w zbW=>b$i=HmJbLCqBmf_BS`w-P%kvy`G&DUW&m(jV)h;_uriv`nu%_hSnnH+_k74M4 zJPCH%lH_9PIEHSjW+sj!G)*T-WBj4dfyq%OCq_u(4Bhg$dVQTNOUUy~nn2gVb!}?3 z64i>!&>!;h%jfvd|MeUEt-t@9{Nh)>3A#;x7;@$M8iwUCJu}1D%%d~+MLV2{bTdoi z8PB!w3MD%IK2a0`I+7z;T;3!K1M1BhPqZH4+JzSsNXFgzL zENwFkpw<|}b?cHy57TNkWl6k*

    Qxy?z&w^ANCj&jGMaYuPl6nf?7eieZjsIpmqZ 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 l-kuQJ-)*=nr9)L%sZ$oN-Ul*!?gKuiY<*wYux; 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 U1A(NsY9>HkMO(Q>(JJi!0B-R)R{#J2 diff --git a/public/img/emoji/see_no_evil.png b/public/img/emoji/see_no_evil.png deleted file mode 100644 index 0890a622279c4b6b379984640e7f6b15b5f011a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6828 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 KMNUMnLSTY2*T9ni diff --git a/public/img/emoji/shell.png b/public/img/emoji/shell.png deleted file mode 100644 index 3145b5649631a38f82ffb6326a709334137a3fa1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5115 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 deSJv4{{cHKCVm4Y=Dj?RHmp)!TB;x!a?vp+nWb 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 diff --git a/public/img/emoji/shipit.png b/public/img/emoji/shipit.png deleted file mode 100644 index a58a47f62f9ec4d8dba2ec2ff443ab984597d9ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9351 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 Rdo=(6002ovPDHLkV1l1S0wVwb diff --git a/public/img/emoji/six.png b/public/img/emoji/six.png deleted file mode 100644 index 56880556577fae986257256cc11bb2d2d323a67d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3791 zcmV;=4lwbFP)45Ab;tkrE%V-NoZ*lnMRActQju+1lxQuE>%_4o)wPubPT&CXmlUqu!g15|Q`-+M z;sX5|(3MVvGV8Wcg$0F9ltapJA6YRR@NQKC#qmZ*s0zEeZa_U0|ONB2H@Kx!7w zNRULNf8sy{NDA-wpL5SS_i)HK=lETgg5PcZzX2N7DMso&_(y%3svK5Ty-(HkHm0xu zW9l7q(WBtp1^0N~we2z2wfh~{dt>0OAN6z6Ei+*6q36H+&=gl(BJh*NHc75)-_EYy_(1UTjN=%QQedmXx6%AmdPk;WKFE_Sybk?^t3HY5` zoAI?nJ%|Pk3{566v5-cJoOeAAP9Z;Tub2q>P#9E-h@oLiB8>ezTX0WD0zY|k5FcNi zMtzG4?zx?A-g%kOj&M?01NQy?3(v$iwLB4PYDB;cqpQ6M&pqCY#k7TE=Vy?%Y;oqv zefbbfKFA%D$Kg;cf&)7glSq2ix@*^gxM8WyK# zFgbMTWOj7vp$|X&o?SEp+y=fs6ie(4)kVSd0DiBh4UWrk>hdg9QRo;v+`Z!R2m=bl zGkujk^azB7$MGeqY`M-3zqr31!99b9XMFh09`lt=!PK%oXz!7EM@Xo%G#pMc^mN3w4Ak(B!(7ZSy)^G zu^|u$?k-sbHBE2TbR8-g5HWSkC9}fGTLsSmzkmXs2e@9Le=vw@F2BYp#Mf>*3j{+r zD4B>&FqSlcG1XL51&XSIDGJg#2jI9RsZZP#4D-u5jLc_{v>ezRaD7UZ0Xl%Fsi8d) zL}Szduf+zM?KmS zVFYv)B;;)u;|m#lG`fiXD|5Ioxr|+HF~owp$P|Fp*d;v>%PO`q25{!zv5+SNf*u#C zcoPz7J(spHK=225wc*PLwjyF`D5lm#2nV_wk^4+1etl*fzdSLF&c+b7#6$2ruf}7? z1dHquo?t9#fV^2TK+M@LIq!+SS~ENY=9X=IJd?uL|KL76*u4qsk*TYAYF`I-QI`C} ze|-c^$)Yi0)b=dILoBP<${4^u3D2dFt*>V1GkFJB=F<4HC+|n^)�mXHyh^e&l}q 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 FV1lpHA8!Bv diff --git a/public/img/emoji/six_pointed_star.png b/public/img/emoji/six_pointed_star.png deleted file mode 100644 index c11af14c804315cad0e8e249c750500c90597e12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4854 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 LNkvXXu0mjf>3uae diff --git a/public/img/emoji/sleepy.png b/public/img/emoji/sleepy.png deleted file mode 100644 index df4f55efd9a45c4b5327b6531129ebe34908bad6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5837 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 X{>1NPjX2Pf00000NkvXXu0mjf#6th& diff --git a/public/img/emoji/slot_machine.png b/public/img/emoji/slot_machine.png deleted file mode 100644 index 26f114830b8ce5fcf5264d88e1b00e16ae5c7e6c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4605 zcmVvku(bzR3Zb6fHKGxlv4O@{<-)q{(U5Xj|A|M06r2xl!V^i-d6x1lgWG_!2jnN z!*QJ7eAHbRV`F2euCBgW1aS1|(Ur~3&4|b2NT<`%QQ!A%O2HWVuxDG3`7n+x17My_ zKHLdQWYVNUkw_#f{Q#P%p5R5JQRySguwuoEKm%G^Td{rnc3gGURRoW~&-n1u>=@Iu z&(zN_O|vsn9;AHcyK&zIsmf$*Jz|hlkSZl**#aQJdA|T6WLg-H3bWCubc|_C=c9Ux{{kX>USbB=wDX0n#?X?Lfq+HGCHBnZIC>^wl~+4QT8` zUZzqhrun#Z?)XyN9{UOC0mu@7QPFr_9`X`NY~H*Xg{4JEwWLrN zsYP0)fpIgXBjlnVgBX}{9^3wB8|Kr&Oqnu88llv&Zr!seBF>n`@s$s#iE#!%oT>dd zfBrn?%$bd;6_w~d+f6%a%p}oCb z`e+<(*aWl&n3s@w^7pU59(A*);pdNT!xym{9!8)-oJR;W0L8Qr|AmdnTczL+rZF(k zZ#5*9@~~vd63m!WD>$q1x1uS z$d55qH(LWZ{b{Kvkswn{q10|#{)c#R<11)9bp)%h0{!R<8kNR8K1Z4B#@^^|Ja*H! zv3={Ww2v_3p+p;UzzI*2Vw&aUx`u5QH4m(~negsSRls`F*|`ZpiK zv&kp10h{4tI#QU0(A);X(yN8(JD zpA~`=Ou1mHKrJWPafh4j1eMhUhKgc4x8HgPUVL=}4qd+mUy0p`?_mvo!v8n2p&j#| z!Z)7zd;G&g-;@zz9l(JNdIYDYCKnu|{?_Z))J&G2vH-_Mpzp>x3j<$aQ_`l&Ot3?uA z<%(mcNNTr<2q&Bd&2(ZNSYctId8f-O(L@n8cYpKhy-^klmD9S6QDtzlZ-;prb zcv(k>rK71_aBPT-j0%J>nj1gX0YVuk7|GTEN=68FK|;pUY1A_W{XV6*<>HI6E|tR9 z`up+lkt6sI1{FVIr1u!ppR&W%=g#4sqepF^p_GlyG3w`v0~;xla^Xj`7#fLv(oQg% zwHA=Vj1Rb40LB@PvC#+viDIsxHULPFE+>^y-9`b-VFN#<+8to@w`1*E?B2OkI?u+e zFzLW@!I5=HfFQF-s`m+qm#qOnU?WPe z_*_czS81ZLNfqPdxb~es6FPpX}{L8yo8e&`hv-mtKlqmJJRLl7^&y#yG)@ znluiV(WF6Pn9-p1Bg4bF;0$R&2D3`^1APF=3C#io5TJfacmMwVvYfoOs0bZ&IKu#X zNEv$NfQULQFvR31iuD0K-NTBb%^MMu8xr z*82}0L=E%Kv11qkFh&x0M?gADQ8%Lj0nd&QpmM??+1bPqL5Kiy!U2@_YqIObzGj<% z*-p068=0r{Mg%}4-_wI#d-vjDO7`0TzD4>j=@gk6;;2y4R&}Albqr2B%mGKMu3c4T za>E(aI3}o)o#qLgplE<>8EIQ_M0G`lr2KNut5Y9%0DgFrlz{mZnv=;0W5keDL4~I; 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 diff --git a/public/img/emoji/small_blue_diamond.png b/public/img/emoji/small_blue_diamond.png deleted file mode 100644 index 8cd49205fd06a3b237ac91f5555dda5489ce4bb8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1817 zcmV+!2j=*RP)9*FTBLK2}Dg;OjwBqbz$8_QNS+HmeR^_QRsAL&dfRI|2Q+pq$c~qm~1b= z`6R#mr_Fiu{GOb1W|&N&P$(1%g+ifFC=?2XRAR%6gB_1{AK`v9d+o~uT~Ga3mTx&E z4V}F|XNnk1fq3VE^N&Badj3!LZ{lFjMiNUN`eg00-dFF70%k1PKe%B-XZv@)vId7r z=FO_-ySuw+X>I>(b)xt6d%A$C#rrQWU6Gjg)z2@d|GLHLK97^z3kj}?pKys&c>wS^LB?)@2)Krx|qm^80C z-StT4iZ4H%z_cp(YriU-LNp2yQ-OxO7BUW4CUmyJ#erKK_`y3|JbUhY40rFmTMJM$ z?H^36P0a22(kgC`M)=!Rh(@41YG4{*DoT6-*B6`|_&%&@S0s}++5OG8xOwH$VMca+ z;%+Oz;DP-EO&yEoKL43zSmo9H{feeMVqn|BrcFZ?LW!@7k<##47kn3%wfUSqm*lmd zp5e~bOGij{Z@WvL0gqbDerd3=t!?hp+Y?|{@@}670Z(gOk5clkkoO=r{<#$KHMv4g zol`7sYhcH=WmG<}U@Hy1hwqL8>NgF<7c83d)RqKxteSWFK%wzP2ZOpkxx6Ol70)2W z&-vp2+`{PzXpQ4)-nsw_A8cUrM-#*vTDDT#^V&2n;2E2`um7=W*+WfFeryS1&fv^N zAJ^CT8eBKnbS@80@yvmfFaG`CpMz^$55$K%W5U~gFsG@Jk8fT=b#v>dso8UI8Wym_ zq^7xlX6xd$k3GDI9F<(WDrg@>z;%loE~L11R|nh9GoI4mx|HCWVsSo(f~=!CHvo0@ z^{juS1FPY|XPLS87kogh4`%q)gB2}pO)FO~#__88*KLDnRDogOYfuVAg9(UIh=5^? zx34wh5rPL|=?t#(M00rcS9ee| zvyM^6rmPGsQ=tH*6aZQg6hQz1ML-K^zynZ0R52zPO0X0t;Eofex!EGGP0s&GZFVp8 z9E0wSQ&_<4SGY4bZdEpOJ6jn3Y8f-COk!mUWhzWlz%Vf_jb(vBFqmzFp@IYj1aV!E zVDq>d#5d5&$M+SECuGtvlva2$3oAN?%k7U$@hy;kmblsCIL3;hD;}{5&1l95-t(r3 zQX11P#4u0>D1t<65Jf-$1-=)QAOZv>6r$0tLL>N|;JSj7_Q|F_JS@OIG{prRxXuk$ z<|>YzM44TYia3gL4ATP33!VYNFyMg@Naq1zoC3u-1z_mlv<2lCV)@|tcsh-fx{h~i z_#5!K7pBiQ!3A%eET1*MtGc0)SgZ^yYGD;OZwAvT_5ZwZG$J5?_!`d>+?+=`m1ZGEDh9y#-<69-05piFaec_=^JG(5 zQa6%huJr9=Xj}I*dJT@FZ{zxu{pOgmR0UQIF=e1^6Uzb&g%VBhFyQ@UeDftr@La+5 zJ+j#hsoOWmBnN&qKK%46AaL_)VVX7=U|1@+x8?mMAR1An13Znd zg`DS+Nu?OOo+L9oaFEMez5p=23rKz{O_Fsf-uSI({b3s8C`(~0D_A}XOpO8%gAx^N zUTZ*Wd|${p9+}Y;spK`X!vj6^Ke?L;U@}o|{^(HN-u$?j_I%5Z0v0HR0SJl`kx~SZ z;GW0JLoVx*DcpB_cE~cMJ9;FMC#l0@Rk2E%K zsHlw-iAE6-94Eu*jcYJ+X*Z+Wd${K{96LkD1&MWzNZHB}q5Z5-b)=X3$G2is9!)Xt zU182?A$s@(_n%kF;nfrH!|yYRLZMJ76bgkxp-?Ck3Wfd+Yb-wNiW9h(00000NkvXX Hu0mjf?a6Q} diff --git a/public/img/emoji/small_orange_diamond.png b/public/img/emoji/small_orange_diamond.png deleted file mode 100644 index 04941d37b631baed5ff3af98070a5b6aded63962..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1944 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 diff --git a/public/img/emoji/small_red_triangle_down.png b/public/img/emoji/small_red_triangle_down.png deleted file mode 100644 index 94832f060c453e5ffa2d190cff0616f034324df9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2157 zcmV-z2$J`SP)`r5vWm&`&o$Oe;T5(1$~0gT+BCX;3xFkxo!%y{B;?CX2a>EBKowN^&+P|7UvU;6Z& zd+w2?@8|zLy4IXg#uzT;vbe;{=Cdz#alfFBmYegw>F`C<0jB#1TwH2lKLYa)LH&0J zbvHq^*Z>$7QCaiQ-fEV)&U>9>b*Vi9rei!CT(wv>L3P3BUS~QsL)8IcVRyjA+PP!i z>X@@S=Vk%7X!ig!%eqc+5ufw3=M}*J6n5@$Ck(StJ3!4H`hu)kq&l409|!oXfY_hM zCO5}7Psb)_b#8)7;ys{qe$IBETV^5u7O>`g{%3D>bADdW6?&ln=xo!d1BB|hp6xNv zfcX#U&bis&8Rj1VKYRG$%;4_bs=vQq^~Pe#62)xWvg&n9Syt=Xs*75#q!3wB7t%*j zWTeD(%ahG!q#Z{atxXh$TIS6}5a=+UH+DR(>b08QeakK7dG7$p;okzkS^;00xO^SH z?_r~m%pw~>&LO4z!C_&2SdUeehtHjrpbk+2kT)pCm@5?*8*tL@SwDAa`>)zEQGQ`Y*0vwG)fjumIZ2V*bFBQl0lB9fx zl;`029=_|~x5l0;?ut9&NxW?0oX5q9<6?^hAQl#e{&)%vjn@e87I@*j12D$uSE)Xb z%=ppz)vE}JaERkN4$d+O)+1s2Gx&X3{GJS6?=n1br#Fk+lf_$>Zp#nv-PrNTB zYdwJ{knAJ|ja;#!Kg-+H|1@dL!3FasIA+WnFHPoO9^5=YDxPMBCa#~v_gx8>!R_nC z>F+(~Jpw?&dp+m1EQ^zsHR4`Y?)CNH_qNyIW(0!oqAW!KY~H+-7`A9sT%mKa*i#_2o>Li&(~BTNbfcj95}& z_&)J;iny$4E1ee463@1-(Oo%3eR$$Mcyz)37*MKB6BKcfi@ydvs9*9t8w-9*Rt=}vEWUu?=eyf{!e3h zV=6Zf4BUS3*s(VUc5IFxK5!U+_!O+{hvijNUoWK7SOS1p45KwsBOol73C^CS_UWW( ziqWwGsh&*x{x64zpUnl;gNx>Tz`m0w-#(eJpU3yeZdlEy6BQ^{(B&#&rAjn2LpW0> ztch1^L^V-sTxzdlrZPjrv)OpfAa4x+bNm~7AGv?g9gz6yqkHfD$C*zi2e%C}nu$>^ zwZe;nfMysHX-yPG=tvWa%X}M3z20C#?yp_DiZg`**{^@)N4MQ|S7Ffsxay{x@?3x2 zqtnvXmu+0n`w~7VlxR#B30mVugJ#gA5i|&@HR`1@LAlCwrH17t=wGp%LsJv)9ldhh zV~h5D!1nLm@%a9aa%Z+*xq*ouhtctA>iGgQg#wMLKxl=p*Qu8)G>Szk0_dYgz`85f zGL*}i!8>ld^Pz_x(u)?rzzsK)yqj;l=hV)B5H`0)YBt ziQIG_ls3e}G$D2HN5!p>+EdK;NTNq znFXb2j+Hse43}NAi7kGLrw;7j`*YKLV9A^idB&JS`$k5dw5N-*A+F&F5fv&-jpvyj z%afx_zSn2_^5y*Xz~Nkp@P|w8h)jjX!>_#YPGysq;$zom0!@tuW$K*9X2-x)oIZAv z5lRm}YfN>?0eI4wvEvl?Oq|ZKVf6}zP-x&3hG0d8)sbfZnGX*=Va#(&_L$t`@Y5rO zPmf&D)J!EE4q-Ts&8{of@cz(=<|NJUFX?lF#u#0o`CvXb!L_Sb@&SsqYgUn*I?D(3 z=@*|e=Itd70N^or^)%&IGNl@~ZrjRs*XPiOxl)zrUOwlVx6|UcE48*C=WpxM*)>=8^#b@Li>@k7Iu;A{_pOG0!j$)%||~F1hLg=mO{h=mO{h=mO{h=mO{h j=mO{h=mO{h=mPi`0eOwY4JqBd00000NkvXXu0mjf>~Avb diff --git a/public/img/emoji/smile.png b/public/img/emoji/smile.png deleted file mode 100644 index 81a8396899617698e6d4459d78bed8d2b968a2a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5890 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 Y1)&A3%>RFL*#H0l07*qoM6N<$g1qYdlmGw# diff --git a/public/img/emoji/smile_cat.png b/public/img/emoji/smile_cat.png deleted file mode 100644 index ad333ba3b6bbbbf6525061dbea98aa32733f9ab3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6117 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 z 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 diff --git a/public/img/emoji/smiley_cat.png b/public/img/emoji/smiley_cat.png deleted file mode 100644 index dbf1b0276ab6648e9de49ba0d6ce0b5fcc7bf888..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6083 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 JPDHLkV1m8Yj{5)r diff --git a/public/img/emoji/smiling_imp.png b/public/img/emoji/smiling_imp.png deleted file mode 100644 index d904049309c60ff5cd4772f8aa55389847d8cad3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7189 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 CGL9ht diff --git a/public/img/emoji/smirk.png b/public/img/emoji/smirk.png deleted file mode 100644 index bc6e5082c8c62adbc3620c2c72c0fc28ee8ba3b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5307 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 N002ovPDHLkV1he4^bY_4 diff --git a/public/img/emoji/smirk_cat.png b/public/img/emoji/smirk_cat.png deleted file mode 100644 index 351565e2461bfe0bfbb826a6344f28118f821d08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6062 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 diff --git a/public/img/emoji/smoking.png b/public/img/emoji/smoking.png deleted file mode 100644 index 4aad6cbd7c4064b69a83c718f7d4a891b8115404..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2875 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 XuyBixx1lbn00000NkvXXu0mjfTE@_` diff --git a/public/img/emoji/snowboarder.png b/public/img/emoji/snowboarder.png deleted file mode 100644 index aeda5c8d872734428cf6f88af5e3db3441ce3407..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5356 zcmVS*h-wX2nftrcOclop660`ew25+H;mCEi4_BxMC z{`md&-oL%SeNb%M#{XqgF);T31T0>>c;>?oKfHCtiWT;wk3MSCbNRe^^Y+c0IrFzu zr%qire*E~ExC-shE`j^*yRR@mKmYmBqep*!(4aw3RTb^+?PzFd5Z=<#g0{9c;q~?P z8;>13wh&j5>G(4(Gc)sNlP6D}nU|Lbwn!u*NYFG5rfI_Ea>48MqN}S5x~^ycuPTAN z@4kB+MSrHx=R-Um7vQ7OD7$!0Boas_ldvocu~>{rcovtjRpS-&2e%okH_SB>FMP&) z?fbVYqpoHG7}ULrqM)_4Ri--MixLQj!wi}UU?TXw<>bkeThNO=HA5*LU8w(YZn3s} z)-}2|yHI^#Owc$@gzQ>9T`9RLOTf^z1))%gYnxM^!7@Y_6=Nl_avQ$sdRL~Z)aiPPCooTn%)Ws72vi3bYa#a!#35WA*YHB#@f&c=@&iAYX z4E(=6X}i$F*4%2$7*}MhpEyXJkmCU&3E)VRO`hD=7)vZ$vBN%d)r#QpB*EMU_Fj^(>xcoQb#n4AObYcsb0^4;FpYLx8Fj&u$5zTAc&TTfT zyMW=ta`27Y=fR~bi0^n5v9?wO6F@`ELMR4$uVS})6Q&f6M%>n?;;(GGYw<*;2T%2j zfG3}P@|(+-FJIku;B|9+Y#%N~EM#^yWAKNsz|?^DE}%96TnyW2?6gsurQmnC4&EW- zFl5LO)`=4QmF$nl;dkZW)hrL@`?Y?E;L4RNZ>HJ*hm-+Y`=>sIvNxZ@#QJw(Ac14e z77`ZF9tXOTK&A=!gMO4{PeX3e4dAJf4oo~X7XMYiS7Vfa5H<%~nBdm|uK}o6c=FSV zii%zuGiHoNX8-{vd&+#An(`VpKSh5f*D#N{44lvV)CR>2;P?A6c<^8p78Zg?V&{8~Jiq72ixHWOGlyH~ zdeV~l_yldkahQ8*@lvK6>oWljs4Rh-Tu zsveI=%mO?aa)cQqU-_BI(RE#9NJmG9&;laUBrVzS%rnnCziipE2?O5Z>X17;7w?eR zEy-{J61=Gb3V@3t;7mK9_qFzC&6@QXgXQRRI`hE8)80)t-6RN*3lPh)#FdT7Vq$nt zzylW_m-+BS#-wnDXp|XCNl=%r`S#*+_vtOw(YB7ta~;+n{%wEa*Zr>dYE1CC@m9b< zVLEU_16rd%T?8;xAj9Yz0UWLA1ip{~F+c`#{`~nQMN%UZ5tS!EY4V+P&YJ4#>MA0r zkjsb5f-@!~BLhaf6@jxGOBFR)ddUqmMe&9E#waIWKV=`hV(>LsMD_lX--MsRyR{Vf zqz#;DqpJnT_inv!1aSJ!=7>ok%_MF|jvU!Tq)hJ#obM$8>|`8$7EK2Hl@CAsa5n7^ zzDC;MXA-zf!tcETEtvpY(grMB@j$~%0IutEy>Eav4H~iD?-Mjbi z-Mbg34;?^FI8~Pooj`j`>;{haxxb&o;G)~GeGq|9ulINosAvN^lbr74CLqb-E}-|Z z4RTZq$R!xAY0iXNitOe72J(0LH`Fy&Q(Ih3rF5Li;13lQ6>CXHYVyO{Bf(DPE(Mku zP5{l(L|rI~C;K?k&d&^BJ%K9l8L6lnN~+GoaX`NFNF7iZ51=Vmb{vj4+a9^(jHTCl z50mei049o+pT&=#xtnm^kE7BVN54Hnj?T`ki&Y)1Z^s(X9J4~zhdbL6J9gGy{+Rrq z)yNJS)ZScpz$c@s0nr3d9fcUlv)r8O;=KT_(^Unz0x0M^0ldhUC#(LL&VTGW+(9EUlIZA1WrlK?~Hxd0?7OcDd8Xm)bMStrDh zbmq(%5D?VW)ych~)C91}_DStf%nk(w1^(jV;>T#Dk-&)L{cfeKSQjmuos; z0Ffk66-t4l-w<@(GchK)Cc*b}Bg7+Y19?gSFB}DuF)!VJiiqKvfTJwi9upvzq@?sH zFE1A)?BBm%&IU{p>jRI)oCUH?@;lB5?l{~nxI1Lf;Iy7rYsmu#4!lrSOR277os2rC zcH9E0LmXWPurAeI)_V7JM?VSR39hRB=-a4x<1I8-*Py0T&q_u{ssxmUO}0w#ikzQ$ z2go(g#4un6&maj9X8?oecRWBz=ieDTlfXnXA%citM#h@Wdr!?R88v3M*HL%N1};Sb z+oI>R+1~Axf{ZwuG7vk#K~-DSjGBuG8i3(d&=F6d(5}(wLx=nt#G^42zyLX&dD3H- z-v=2yJA>`%@)MdQf=S?#68Bz@$M?b3jk9n3_IK$$(A)(iByb}oaHbTw%SXNc1h_lu zk0div%qvQY-5j*fK6vpwgX2_Y5F9af-U+hMF%W)cfKAlyUIkD@pr#VgLXLL&w?mFL zwMR*UY^CD&eY7aeUefRe!P ziMQ>s5xiM~V3(0+APj(klI2iD?;=5*NF5G#>Sa$y$sJ6wE zqSOO9hX{c!C>Vwpe)8}A0^M}!G)}$$G8%$6Au;@J&LW{BItIX~u8+{^?oLYEcc^AP z0^AYm$M}QAbItIo#vb#r&7_pcDZXoX_WU{xj zWn|~vn(M_3PQ1=IU^+vLO9yV7F&$ecPeBC%Wx!HMC6O$$>wdJBvf#y!PxCHd-}`T& z=-}5e)og*{6uTF3WM15akzXL^QHRX%H^d)@zTi@iiC_qagm10OINNnD;3G){$Ku@!sRo9_?zlZOmf5r6J`zgg# z09zw>NC+Z?Y&X9iKmvFnkv|PH=G^~Pd+$4&8E`rQQXEMrqp6iN1830A5TiPxcJs7p ztSLNB%V|*%C_4jpo1eb?5^lfa4xtrnG3P9Bgd#rd;7a^m^aP-$04q$3t%zr65U2-@ znw5SU?7!_ik7Cutd_%{~(YIrUp~AoD!G}<`<=5R7A#CY~sUWAGD!s=M)dChS`g=UL z?nj*RvXrEAX^6>l-P*PI)^}IoY#VTL*UvDf{0I14yiyJXfCXW8Jhf(07<@v(x!f5j z8FdRTv?ox}l7QZyZL4Zwk*VVgnSR`mK9q1Yb3Hlm`vdZnDBD@Ld$-Qfc0ltrErr?U z-E$BAgVdhesys)qarAi!%gb4AyDzVQ8WUPy!yHsVccLrImLxb=P67+442(s~t*_wN ziB2Rf3x=jbzoIXx8kYJE%=T!|%(RJ&!RQVNP2m_qp$622*bLJYQCHX<#1^`n zqUxA)*Ic}@;dLf}NfY%?`T{yCi_Bm7mEr${$}u8PmLk9;K=^p` z4<3#oMWa!Fp^`cydQ0QwO}J ziVU|(z*Rwj+fWIIlFD54uy-rz-+HhzVB!%1ZE~;dc>u8ivBhnUF&WP0#Zh!C8fF4| zMn8SSjNXP%i@dIrK-Dy%;`h(uR`&XlrD={0=snW?3t0jD&}WdAIqB|7 z10J`53t=%!i+6s*0q!_wMIshOZzjsX0owCWaxn}XD?fscovShI?C(&Th`{my6D9-A zVGYem50X(EHWAyR=F787Gj<_J_2J%kS?ETN1FV35HPrf5^tvRvX` zq`5(;Wg_-gc6wPIRtF6{M!+@s<<#Z0l=?_&1EWBWtPUv>v}|RNos%$YN15IK7DgPfFB0gxFMhT9nc5 zyXhHbDxw`Rpe4+V$!MpwItREWK`Utt_h@HsuaBobA%rC*C9L3lJQnX78ym%5pz+*B z*m-hjbI8;{CZnz4c;?O2!u}E3$j`zcWLcc%9BsEo5qCsQS7hl4BfhWLbZ%jtNsemw z*<53nz-5{{SD<&MImL%+O}PGsdHnfXMBnb}K&k1!xrkwY12P$P^c|0 zL*oZOh0<^o1)ZlcMu{*W!JOr2gk_6oVIHB(wrHQMFXdS`qGH5ScuVi3cdDr8fEZ6H z+PzF_HvV#^UykLm;&cfcn%zBWe1AdDLs{OJ5gY$CxV@RF z5!Iba^FZ39Cdli5v;u3@8^s0(rNGov!1wvC!?9ssg=_4+ z{7wM%yVO*gn{qA}z^^(}&bEJi@|FE+6{0(zL%te9u8&CoI{kxiAa5bsOTP|JR-q^h zpVPtuqP8`WIXVGXaP^wrmlV9=zVD&o&L?o<@P3>Px5LUPhAVS0kEkNe{m!K3@86_$ z^%Foi#r~{l?6qj_Od@XC0;JDW5p>er)ooH6c+hq~|DlD;+kXM+UFDkrvMCz?0000< KMNUMnLSTZEO-bAU diff --git a/public/img/emoji/snowflake.png b/public/img/emoji/snowflake.png deleted file mode 100644 index 54b68ff4f136bda881912c379c2d77837bfcc965..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5637 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 Mip{XS} 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 AMF0Q* diff --git a/public/img/emoji/soon.png b/public/img/emoji/soon.png deleted file mode 100644 index 2cf46df254a5ea14f892e7019962ca3b3872ee84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1551 zcmV+q2JrcbP)4r1>``(4Go4g`RrySJ1hq_);ho3i=8@ z2Ljb4Q0U3uptum|S(iYdr`PwMWZ7QZ*-heIQCJ>^(Y!Y^znS;u&5TP>DppE205<@; z?(m!6y0;1icmm>&ueAaJPT>@uym@}FFn|*{f&d=A`|8Jn0Q%5|L+Ha7@a&h;X9WQe zLJ!X1$?NCkYX`Uk2P|!L#a(#xM)(B*9Pl~>@ZjCE?>`veDLnp2xeq>gOVUAC+=r(x zwnxLp%DdR?WueL?Q#>yVFb|@aZ;^AM<4hsTku`BxU;O*0IFA3m- zyL0i-6=(41r@{aTp^F>y%a@NozYyREnpYw%bj1lge0d>27n~~+7Y<)_FJ6JeD;mBD z-iu4cz|{aW-yVE-$z5;=_RhumyX{{(4|JfhQ?bGQz55}Vu(RXgy`MkuEcg_0puQrF zcdZ|;^*C;=3~#?_2G@Ka@W9FhXaCxjul+{k!9I%x_OGQ|1>6Z!fcn49qHe`4Fv0rA zF7936LjBK1kuRfmR4Vpuc=J5}M1Zq!5C=dqh|fY_T6y=5a^3X2Zs43ocW10k?oH0b zqRm;D%EB_M5o-Xx6imB#b93nMn8;b>^rx({MN! zPDcD1jBEzeV`Hd`T0|HYbZ4BFVjWZz0}hhxs2BVAZ9-=aU{ps1HXWtk=9n7R!ACrfbV4I-Cl*>0Yii)3gKPwq5mkxUokIdh?cMVLmSnJL9lA*{9yrSYbsSy=dkMhB zAeC`VJmH1}j`Ljt*vA?Tn(-U}!+A&{O-|SffC!<&2o}aS=74A*mOI=8fV)IET+-J7 zQu`D@M_1{%icaE79ij93Yyd!`P=+curk#ubb;apQm{_Zv1JJNe2L}Pt(y9yQ_I9jb znWD#x6uhXkM-(AdT$7CeP*NQwnnM@}(M@PG?E=6a(<07XXm#N$N60?A zPiIUylnyoSDM?fIGCKz zZBWy8?2>&3sO64TW?KPpn~cgJapcnhk}j5#1!XNLGoH*RTZ&d2<=sYUr=+9UK)7id zFXsXDad|rc&Qnxyrngyeh-r1SoTAE;g|0GH#d1qIlxDXx?d_y8-pj((h|5@`158-V{Az<-S$?}U@x=#u~d002ovPDHLkV1ilL B;m800 diff --git a/public/img/emoji/sos.png b/public/img/emoji/sos.png deleted file mode 100644 index e3e16ef73f830bb9922c37bab7c66a6179127e94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4262 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 diff --git a/public/img/emoji/spades.png b/public/img/emoji/spades.png deleted file mode 100644 index 133a1aba8a3d58bea8956a8ad670075e508889fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1719 zcmV;o21xmdP)R^QH!4bOP>{Btto_nbXhEuw+KSQ&L6UAhv@{y4 zw2;R3OVQT!#kQD0s$vM*FOi}p7!x8PX{QaPV*`AqaUwQDP!OLXEKl(N5r9ROz7`AEy9;fLW%g zF+-r5U4ar+u3J3v`};@Nb@z8wA|*$ZBy3LCK03E|?~`wGo=It_W>P>LstiAS-@{w^ zl;X^hl@D=_2@SFlD6?qeSAYGSfGQ}NLlG2OwEzkth`^!O)<4RBw4RMXFDp;)UVfvh zQYaD{;0QQ(@}7=!ML1kNd;&cz(x&1uiA#yt65r6sxf|*=ZRG=h zm8ZF%jq20vXi?2az_g|9iQsdA$7B}{kMp)Xr8m$-5j*oa73eti9DLrAO&sF}uIB=O z=a~GGuW3j$*APCP6bK5qxI8aEWro|hi6JhrfD>$BOg5`S6OcAQ$vO+{uvdByWvgri zZf6}sz#zBrMHaA)A4rWdiniG{E@nd0iYZfPv%J9djIxSKlJ_!esBoMY_*kCN#mpea zJ;hUCWb~==ul%&fg1%$tB^LyrcJ$Uasv$`CP)wmdIn zEhP@}efhHvq)){xX+;%q`LVprO4cw)fTq@xbZRbOH4$&HMSiO#!W15~=rn{X&&zWx zVHJHet+gTfOb;uV0aGcM0knmcw(Zqnl384|7=efizHKv8o3PeK zzXh+wOc>)Z#BsCSW{!{{x{?IsIFQ7U5P)?=8Q`@IC}5Owx^U+_mMcoYJuD!+>NPY3 zVqzPB7>}<5F`7>SP5-7?tM?isreFafD^PlIXe2YkkeuWmzM>PwE+(4Tu+Er%v*qbH z(V)o`J#6D{##zo247Hv{3GoJ(xr=QY5kg)9YW~y2=V|>JYk*lA2+Q~$dw4*P;&GBY z^cCI2C?1U#$z_c3J6%XU)uZrvph1ZT^;?{h3zX^CVHV+WNZz5Fi@YLZ`Xhaavy4lf zL0!qh78ML|@grG84WC=oNsL*i%5Em9Qf3$5U>KJ#;HVH2P{Tx_%}A000z}NFjGDB?iGX;qAroaIE z_$WfmhrA>^nWl`U`~M$!SANJk?M*yiFPZ{vJM;J)l;c#H;3S9nfG&KKS%fMFd54?j z7M2j;@Evtb3UUyzn3vhdPCR13$0H!HwxR|Hcms!!wcKaaL!tQ9EM$cBbf=m~hgY>t zK5xdII|Xfip5_645G7kE0aADxrge-YCnD*1DbcIC2te|s!04cDx}?AzZotwujC`As z_2nI2MOx%zfTDYWTCSKot6~(hN#%c0i9L=vR8XrouL%{k0kE=fd}0cK*nXI&0x=Q5 zd=_f8a&9T1#90*xX?!rgbO2G!Lc@d__qUT(8bnzY2$=rOKS7xHPnNcG1aSoZa)@b~ zSruq9vFFIr6_4C3fQT8H8a~!bI6&>51F7b9|C9T{h$8gA{E>Mza6*y)cUrwT*{t;kjtE*M4d(S zQpU+mASPg%3!LRN69ica#LRG>hzUMNFI|*!6NqRs#U(!G6Q=E1@PCs8k;S=?@d^L{ N002ovPDHLkV1jSWAb diff --git a/public/img/emoji/spaghetti.png b/public/img/emoji/spaghetti.png deleted file mode 100644 index 08de243f554582f3ec082531844c5ab63504a143..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6955 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 xN1sUm;Pv+lOkhC$OGB@PoUCF1ppZ~_ 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 mIE@EAF02+dj8JOm0Q^rb!sX7`8x(c`00009xn diff --git a/public/img/emoji/sparkles.png b/public/img/emoji/sparkles.png deleted file mode 100644 index 51307bcfc220d592fa2945ae927e925570c56d86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2209 zcmV;S2wwMzP)UGF*$bsnjklsGPJ z(uYE*5@?~IgofZywJyc2LmD~MX_}P8-s|@}eykloVrO^#*x26n;d~ieR91 zwSRo-WY+iIncvKuIp@q2BC;TD1>XL`a=e@6bm^1_@1&gk#)ALw*j@O5osCbW8Ni1q zR{(fz6+T|=#dp&QpxVMGDOUinefV6^i@bCKsPSPbJ-3; z0vJ^Q-DW8aZilq_IXWm0dhug+I+YF6Wp;?)pjgg`4XDjQerPKsdI&Pr0f~novD1*D zCm^i>)Sb@4XPjzS>skz+|09HAIb%k!ItxGQdjv980l9DzGQ6J+!ZAlZz}s^t#3CjkU=aBJ^_kckQ-mRXlE01QccHbDCCgEaY3 z>39r~h2lX4K6%=RW!7a3fI1@AwBh$;+|iz0`GTp{b%9Jy*nVW*B~=t%9L4Gbr){PWKQs5 zI!I}l{!b0l_h^GiOf_N3tZVdPf93#qk);5-ogV$ruOVYEL*fGvnW9X2tP;ZC?A5p> zBLKMe6~MEOS^jJ+?JPt*@*HHU9U|kZgeuOmsf(0By6%J2ti})14uD>t6KU~Nx8bTf z4|eu!gM>@9qm7V6cy{z>D3(p#RI7o|`vCJ2D6L+F>(T~5Klb6Eg_}}z;&Y8o<)1d_ zjOr>hA@*p68Rf+J+0G~CX?hky2W0#hz4PlC zK%KY)A7oU?Qyg6;%XOyw-1cIn0xPgB+^hfH!83)108X|AFw#Y*>LJMRKFHV+$c1`H z{48W<%yd)|Z=m@9mP29?GTEXaDk0&gA%l-WLR%mm`IynIx=nYhGX36eZAY=~Lm{J7 zZP)Gk@1HT);{dSD^8h5L`2ecC__}^<#l??XIHqNxngS-a@6*oHtsXC%4YNa#nds|A zedhlFnENem{&t2S1|U<-kcodoBKs9YF{FE~Nut#G&39F;sz1?)(~hZ2{n?ZPSm^TM zjA+Qk(KFh({`(=}1CZDWNW5znz~rSnKOX`C#QO}y(dQvUyCB``Ak6{v>9-!zfw&=w zCE&amNCiFE)b>k^4*UiZeL*`>ZxSvNQ^hXau`0+&38ZJMcHDz~3U!GyyFe1+ z9Rl7ZSg`Z664y5QVGrywMlIfJyg!N01HjIoB`C9NwB}<-NBqWgZG)F{iu}Exg=;VO zxdt!xo>d4F$06}S+Jt$2fY!zS0~y!@y2P)fs=ZDeY3HBL#^;lY1AHhSe$s4c6(-CqQuv|N%=0L%u_zt@f|yO`~<@SK*XYkcO2yuTPS_9D|&#)VCsGa+uc1k$?^ zbYEq5d+gF@pWt!2+K4YPPjHF*0UNsShEV$LO|F^&+L^1hQMYO%pKQ%l0NWJ6A;@&6 zxkHc`G2UDBZ;;Ri@UlgOmmam#-!S)m4Ae`0!;5cstzZt^21T{HWo`S&Yr~;^3Gyr&`oOcL#mw*;N z1ppq`ca|<106`DFL!(viM}LY!>&>c17YzXJ2(`K9>Rd{I(&upaa<&r*5wX44nWF5{ zGWr9H3V@D&i^`XxcP*g@y0~V5`t7Oo+?ZEbY%{=D<;54AYqa}qz*0`#H!T4E|HYiP jiwVG+SZ@J%3&4K?P>!6((Jjy@00000NkvXXu0mjfi1j6> diff --git a/public/img/emoji/sparkling_heart.png b/public/img/emoji/sparkling_heart.png deleted file mode 100644 index 64ac06663d01f93c7a4563fe3e162df858497f2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5357 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 LNkvXXu0mjfN$@G% diff --git a/public/img/emoji/speak_no_evil.png b/public/img/emoji/speak_no_evil.png deleted file mode 100644 index 87944c4de543adf12926af9e33a4d15f8a863998..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5977 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 diff --git a/public/img/emoji/speech_balloon.png b/public/img/emoji/speech_balloon.png deleted file mode 100644 index 2896c278886cd6782383f19a58ca7e477d09ac57..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2130 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 IM6N<$f_@GPr~m)} diff --git a/public/img/emoji/speedboat.png b/public/img/emoji/speedboat.png deleted file mode 100644 index da6689b3be7e17acfd71ecb71a2a00e43fdedfd1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3512 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 KMNUMnLSTYWku7Eb diff --git a/public/img/emoji/statue_of_liberty.png b/public/img/emoji/statue_of_liberty.png deleted file mode 100644 index 9ad902806895b5340313afccecafc6083fc6fe41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6075 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 BRqFr% diff --git a/public/img/emoji/steam_locomotive.png b/public/img/emoji/steam_locomotive.png deleted file mode 100644 index 5495077667beb605feaf8caf77184295448968dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5159 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 diff --git a/public/img/emoji/stew.png b/public/img/emoji/stew.png deleted file mode 100644 index e9687f9ec26ecf5399896cd142e578741423dbc8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5365 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 LNkvXXu0mjf%0<~% diff --git a/public/img/emoji/strawberry.png b/public/img/emoji/strawberry.png deleted file mode 100644 index 13eb827ab870e4e2efc7af686317819dfabeea2d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5477 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 diff --git a/public/img/emoji/stuck_out_tongue.png b/public/img/emoji/stuck_out_tongue.png deleted file mode 100644 index fa7b58e23120ca2920dcb297bb806e6434a6afdc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5215 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 diff --git a/public/img/emoji/stuck_out_tongue_winking_eye.png b/public/img/emoji/stuck_out_tongue_winking_eye.png deleted file mode 100644 index 6ae9d497d304b776aa9db1e8423d5d2c104e3fe8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6007 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 M07*qoM6N<$f~&rV9smFU diff --git a/public/img/emoji/sunflower.png b/public/img/emoji/sunflower.png deleted file mode 100644 index d9bad194a210204ff2596feaca1da3e6308fc05e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6567 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 Z{x^i?E>QDaw}k)z002ovPDHLkV1jM~W+DIp diff --git a/public/img/emoji/sunglasses.png b/public/img/emoji/sunglasses.png deleted file mode 100644 index f2e524787c8d8054260ff7e1335f9bbe92929fa9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5730 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 diff --git a/public/img/emoji/sunny.png b/public/img/emoji/sunny.png deleted file mode 100644 index d23c095e0804a23bc911a027530e12e86bdd7eda..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3802 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 Q0000007*qoM6N<$f@!7Xy8r+H diff --git a/public/img/emoji/sunrise.png b/public/img/emoji/sunrise.png deleted file mode 100644 index ec58dcc94ffb3be7451064ca34daa35e83bd2ffc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3914 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 AC;$Ke diff --git a/public/img/emoji/surfer.png b/public/img/emoji/surfer.png deleted file mode 100644 index b067e8cb32353197a5cd57e713f28638799bc1cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6259 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 diff --git a/public/img/emoji/sushi.png b/public/img/emoji/sushi.png deleted file mode 100644 index 0d179bd975689446130a87bec6a2ff0da0089fed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5257 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 P00000NkvXXu0mjfrM(2y diff --git a/public/img/emoji/suspect.png b/public/img/emoji/suspect.png deleted file mode 100644 index 58e8921c0a72566c7ef109e5c3619b623f06bf28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1016 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 diff --git a/public/img/emoji/sweat.png b/public/img/emoji/sweat.png deleted file mode 100644 index e894b7699606b17f68ec6059fc697c31416d8b83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5576 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 W3f4mP))}XdndA1;=qQ%Qj}NjGZjN@VLSF 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�lW& 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 diff --git a/public/img/emoji/swimmer.png b/public/img/emoji/swimmer.png deleted file mode 100644 index d3878a0652559d1d1341222401a97ae58bffca1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4378 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 bzXtq2D_TNIbPf&V8+UIH1i(AJ4R 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 diff --git a/public/img/emoji/taurus.png b/public/img/emoji/taurus.png deleted file mode 100644 index 6af582f69d27a33c8015e0b4a8d682fdf2a6f8b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4733 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 LNkvXXu0mjfd;bL% diff --git a/public/img/emoji/taxi.png b/public/img/emoji/taxi.png deleted file mode 100644 index 60a50d365a41e99778338bc28198b0a654f69aa5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3744 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 diff --git a/public/img/emoji/telephone.png b/public/img/emoji/telephone.png deleted file mode 100644 index 87d2559b55256935f097f9be4aea134a0800e099..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5495 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 diff --git a/public/img/emoji/telescope.png b/public/img/emoji/telescope.png deleted file mode 100644 index 98e57558acbf33bf578b7cf8be32b3a078db3a00..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3252 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 j((*cergI7NZStu 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 Y0wleh8Gj(emjD0&07*qoM6N<$f~9E|MF0Q* diff --git a/public/img/emoji/thumbsdown.png b/public/img/emoji/thumbsdown.png deleted file mode 100644 index 41c6b825d6a6abf736a1b882c951c1eb942afabf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5070 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 diff --git a/public/img/emoji/thumbsup.png b/public/img/emoji/thumbsup.png deleted file mode 100644 index 81786c1d8f5ed810fd8351f74996f9b64dbf5ffb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5075 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 diff --git a/public/img/emoji/ticket.png b/public/img/emoji/ticket.png deleted file mode 100644 index cdacf1a70be4f6952922b7e07755072582f711ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3091 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 diff --git a/public/img/emoji/tiger.png b/public/img/emoji/tiger.png deleted file mode 100644 index d6cc84a3ba980695dd5e2430a174572d8ea4c955..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6051 zcmV;U7hLFxP)pfu{$7W<;milBm^ zeUV(iTw=Jk5-tQGB#cACn1qbqJP%c;&bWJjd!4mvby!*5_xoV^hwQbUwck2b=Xsy^ zIq%u~e6_w3QcC`whr!?P_{4xu4EV%=PYn3P0E_?RSbl^!-gUX$$#I& z$4D-f6P^2T7|}AKX++zI#u2R_r2+b?j~~yrdHb{A;Q28BAi)81EN0Gd*k_8zlxZHb zW;@I~$l{QL;ZuiDKW7eiTycWfbm{^zl~In7b4NHvxJEb?x6Yw*>6|LJ)}XX#O-dUh z8b`E_Xy*T8{6C)r&puSlYo5raxpQE~R2bK6g3MDIFi0wp#tHx?2nTXrLMj3V24mXW zBs+FM&mgDPG}51@oKSRG*xARF6>GhwOHc4UfcyU9`OBC1J>whLHSF_}A^FSD5cN&9 zteQ3*CQcO8)mj+RrQ(~&5J4{Qu%WwsR1r3b`j_c9aX_Hn`a#o7tfMp5I zCk#PSf`MU+d~;E0^g)J%Aymq&0%nccfaRYSCr+Kh%zY-n_;Cht;1Tzm)D=?<(;yWR z8AFtSFd#u-$OMrDh*C(skTgwzC>8wmEemzk+1_Gt*0DY}UJw#RKngd`RB>YRqZRc` z-zP?O14kbiV+%lht7g~A* zjg1BupBxY+AuWpM^EWl{s~d*^xa>zYEL{+C%f)3ZLy}YcZceaIvm~qliJGH;p&(=^ z%;QHk!UO|>Bf&5Qh9SrcNqOV~O>~uJAElkPcCG+MXMkgKWNi)P@&#@s)q9HE)(*jE&O$?$?s#p>ydePHK2YqPpMv9Lq79giEz7gCe*uKr= zp+{X-uFdiCJ2u1ykNk5VXJ1l*5*kQAfG}agekoTS>@)s1k}rI-0j!h-`$wE{bcHYf zmw@S06M`P-6kzBp9??ELOkcT(lmK7|NK;7^OPs{e+D(N~8z4ZFCy_}MNGt;tOM(dc zeW=gr;wcoNPy>@E!p?Ss>wZ+^u_wK1g8_GatDobK30S+*!5k^LIbrs!1c1$(O**v?&Tt8w!$QoV5A@s(kwPE2X-)Vi3M#zgTjy`>`cQsP>Wrf987 zv(_%g@*ot)#8CoKq>xCBN;uN?;2A!Xi!u2;8uc}B@8cfxE^TDpMu%mpkc-YJbLH}3 zzH{Xu^XJ6ea#syE-&17yjkRoTx4;8(=y>@}wcLDnk?;Jh$iZ`CZoPbvtIrwcqEpK( zJ1St^I}Y=%Y~JmE7?LTk%(W}4A8jJg9V5pAK*lsJ`CVlYAoQbCf2 z>{B05D1hrhO&+$knnV&dJ=n{%*(u}z56A;`KsU7Ynrzu&u>M~Mm@+@n$B?k>jDYns zV=ntn4M!asvgG85B^N}{3k(AR;KPnB27i3PWow(s)TV?uhBOcRgaPjlnG6LEuA#N! zrIOG`*D&f1s8o1qxCBv>kff4fKc!qrndJEtJ#cc6b2JNcrY2l{uFtd?DTJBu1SrFb zJ3Xcy*36f$Yv7s-l%q!{kN{SO1g3l@(eHif8;wj`*vyK%Jn%D)At2Pd30E)onX_*K zhR%)SK`{@LTwiNb8nsrX8KqsaMR^O`m^U; zU&qpO8))BYz<2=7t#cR#*e1AEh8#3`63+H!-4Ac=@o9ddYC7E*AD;!9p9>sU3h9mf9CZ^dwB2%{hWVVS#x~;nkH_) zqX0!9Gu$-6$~4#xSS}PCa7~F2F-kKd+DB>_wE+NOiEs7wKu2e+79bNlmtB2J1Jlxi zFa+SiQ%~AF`TWkMkj&%6n39T7^i);{L% z14jOwtf&jNext?vJ5Bn1gS-Q#Q7v33NB|!e9Tc}vllcIgb*ssIkK5oHrnj&FqnC4Gb``TK??K$CLFgkVD-KIEIKfT3P?bZL?T?3k!^>XJF7l3 zKxhpbMHgCn4f+O6UU}crnm@8{g#NUJsCB>sOY+R7oOazYwE$2cn~-EHdlnl|?hp(N z8?0N=O~)Hu+|))&bTe2oD7R(g5=b&s zQ$l8fVSwkthW8zi&^csj%^%s9qPA^+(KaQfki59rrnL+9n*wRI@J#3)aRhl+^6eXk z!2~M6b`U1~>Ha>x{nMi6c;eT62n*N-2srYXkRy){vo6|$Gp)WBLW7(Ek%Ygz;bPdJ zw2~^#z=I!&0hVQ*re_-lhYX&0$>W*>e2ifbQUR)N$UWjDYhfchX2PczM-ak!Hy8k% zyetF<=mBD&45Zag+Ou$~#_QQGz-yaKUfX6yAN)*%3JfUZ4?)x3M+!)90lQV*>ui3O$yNg}l7F|Pqx z@%sQxYDR$?FJ;pQ4o^JiLIK2{qN}f~NcM;o=!7#rA8_X90_fW7=QHf36C{v_?p=b1 zpU+cMNXc}PY2J6t1~`thFqMMAvO%e0AQ9NEpW!)=e$FjNv)wxANBwZ@4+XTta`zB&rDBd@skXzpm8+ z07&=J1u@z2Jz}{R<6@0!thx4LLJh2a#^LT&Du_+`1`P@>oVBRJ{Amec%=|I00YaFE zM6uwi69aBOGhkPb#p^p<)@;o2z<=a8_K*ro7KGK++5u{TB#SFR02oyuG^%aPUOK=A zJTx~ZFaX3=EBtyjoUsHR{0<0j4--T-vzLW00bGziTzCtt zd=|d)IrzynnJHPmI!E&CZQbM=A(h|{KzA>^-2xkT*w|JwYs|NRX^I)7f>kejm=;tj z5cL5H0QI$LwN>+Q@qZKibfutq`VstYjl*$QSFbS99_^icxb=yu+vsuE!tegWp?T&J z{Pc0b#org1$(oCNPLj(3gAnyXxdgcaJo}DI-=KwMi5X)uKnO8Sp+4_Po_yV9!@Cy6 zMzSv-fiOeX?%UrKJg`P`+|tjn?fng$f8lvN{U*Gy)&Lub_Anu9`D*bQYNlg9Q}uT*>|S-%lJ>^y`(+JCIb1-|K20XNE?wa-9PdG>78SoKRrZ zix${b4gdi-78niiy~hf)b(?r@3P75si$`sMVHhW5`zrN$$vYo7eB*%{XauYe7qO+) z2DhHK-+qUm|LkYH^x_6Yp+OzDzz5>JZf#YA0u8pbTl!qZp}7>N=HAj~S9t)ktIq^j z^|Z?ae=bs6Bgu5@8pg5)WbT151oaIGcdab)+sAS`A;$l`#W^CybR1mQrBp6s+qRBv zQQZxQ_wsO)R9l(~*b>d7I5d}vHMhzEN!2s}nql+1CKugRkLO8jOHdt*z5}F`GmU*+S{Ei}3<(gz{K*kX*+&S2VzGc>SX4?C=8q4m#b@HH^hkHMi5Q4}E%`rh&^ zSoYmUHmrAGGGGHfoOx&ha)1w7dg$)%Wp_sp1bv))a0HdCz`c*E2^BbZex%P;9GXjU zYHppwuNFVtFIarTICga#G}ojU2;w+lsN`ds2DJsx8nppY9C6yx#hiNlQ5eFYtGkb$ zz5z_iBvH)KH#hLi^A79-05y}~=U?!t40N+&M;im(-Q2jO%#4|U4~PtA2CEt)G6486 zV+Q(M#i6+rr{=DioEbFRa!#>7A`~_4YD2Pyu3o{Ucz8XWv_C9g zQr#vg0(Dtz0>&QC2R<+a3}>$`Sn(YE={-1S5iC14g zo5o=W&f>sX(`l~D@xUX0=HH%t9w`$sDg$zEZXgK5+DpE0G8caFWSX0rXlQOCl_&!S z*tVmU%{#l;wzHRiShkS^>R&(%MIbVveg*@`>Eh`QC-ZjsOUV5G7JezIydrc=)WvznN`?<6LVZ^X6?2KxHx?CN6e3$O9R zUpz#TBtuaY){gE$$PlmDj>AK%pXTK^-(#p$qP@L~Ac&YUc_Jq*J%;PA_#*#&>*W;Z z-pTg5mF#Z%HUs%3Bz8V48mI>vAWq@;FE3+fWfA4Lo`GRB%1OOG_WO;?hz+2zdJZm{ zOL5YoxVJZ~q&)5pZo1|wZoB?G&N^i&2kbWk1gh{JdX)jK?cLn>$e#$K2+J~G9rfP= zQp!KtmboMdVs8KC!`wA#90$yuMQLc5G)*b_0k-90SOz&;kXRFly|d_!PNy^K#*N;h zn5?5CDJ&d5(ND8H;=KarGvbeQ{2fPN52LLG2ZjM4#PAl zmn-Z$c>;HT?^^a(CWJBMJP*rpu}5H4S2A=_CW&-OrHwFB9J8O=Ldw59@F@TG=)W?3 z`o0Lm1b{Trx6|oooWYkbIFrG$O_0omjS$0-8M8!b){AhMM8si$UoL}+2L}hZ z=?C}l?1tAVV-r`vLIy+AW;-rBk@%s_Q6) zCN@5<43RQckjT{1Nzyb?NQvTD7aoNXQKd}IGT715$+v#|D>l6P7KLJ-G)YO4NXg-+oK4)n z6W_0pqzOqBkt7OnOq#~J-BnDSM#Mo#6o;fyL|0EQ_dWDS9{u-cDCAuxHaFlo7N!Al z8h`VRceekJu^W)#_#+N_c=Dw2%O_13PhD*hFPCGmB8q~e%Z%~2AOMxlNh4Z}b~ znZo;9wz0FVgNB--?vA0s673z`w03r`ShIf9IRGD-0RW%*)c%i;Z)!Mo!nkI}HP+MA zSVy5yz;-Nhu7~T66z60{IJ#(8FOrUa&-OgLe38Z(`?BG_$NBfK{#QV7(%s+V)0dn^ z@3vi3hD+$%C<+OKP|vY0ULlCo98jqQ_!XZh2=RjoJ-q{T_w>`=)lFx2@8i$C_TK3q z%kKrAd-dJZ+B>^{x_ws*AM9*l^Y-0rRibz8Zl|TCjoqznw6wO?K+S}>u z?4YN+8{hY-$dEsN?;ig8)gN#i(-fxi+*SWw9lMuG8c_~>RZuUT9bI&EwA0bvuDMz@ zcPm*AHFvOmXB(S8*v$t!TG^&FDFc3@i~l%(FtP59&0p{9>pgZ?OZ(=XyIR@V(xwb( zV}}y8b9XB{ln@1WD(v3fqKwHzx3}=zlTUHmNmr_3f5>U)7&! zZEI0z)#oZ6b}4Ay-R){_L*-F$bsd~+J9M2awoOct0u}s$LBgJpy0S~-ki;t|fWY?zJw?etKE!Hv$k)~( z43{J|2&053iV31n#j#!&f-s;G1WCE zFr*SEZzqX-B@E)NQ5=`kBo5*v=^>8Z>!^INar0&wkd3h#@Ui0fMV~rQb;5PIoPB9t zFN7XB$HB5J090`VL4fc3`iZj~g!d&;ddHgeufEM#$KT$7Di$w3s4(*`RB^!Su13rEnweXOGEXm;jvEY^GUwUH`e}nPKkEi+j d9-kQSe*k73tEiUK>vRAB002ovPDHLkV1j(iZQ1|; diff --git a/public/img/emoji/tiger2.png b/public/img/emoji/tiger2.png deleted file mode 100644 index b0c7d8dc3ec2326be0b6bd349ce4bf91d06980ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5744 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 U{itF41poj507*qoM6N<$f?BzKM*si- diff --git a/public/img/emoji/toilet.png b/public/img/emoji/toilet.png deleted file mode 100644 index e5cc4119a15d3346474b666ed1fd1bb8f3de7e79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1733 zcmV;$20HnPP)$DoMgSu`V#MYcV~BYXXbG9X=Q6A*V#C` zbtTYW-|Vh!&G$Rs<(&D}O2e+of^Mqs(bPB9*scL6$N8T7RO}RVE{CoX*kQzh)S0Q| zSO{C{>V@x4_YMGb#KFhz{C3iU$cPO^G^rWuU;fh656|}w0E^(BbvzUix(y(pj>qcg z(jj^Y;IPEYI4C2~az$VwLh7urqM(NW5osRe5U#jHq(Gck$a9t;>?r`a3^7ciEdfXZ zlK7-?=`ny7Yp(#%My*)%ZXale*jfsD4WQ6n+X;KG-3M@bQvsqaeg?Yt0QyYRKA;quNTgA3c@5~Gq0odPP^h;SKnHug>qLSO z0oE1~h{BV?Sg4Kw1eJ&okK*lxl^Nz(B#qsM zFU?7~eG%I4A93HwK6{u932dy6cYcdNCZFr{Q|BzNki{X{ssrf@nnnTPb^xW^71FGd zB1sGjb)$8QHb;*Jb*{69$Memkeaspsi4ACRUB@%>3EmuF@z=}8XCKVQTF%92+f2aP zC@IX%{o=mUx!}dMkNs-#EBz#8y-5OMZ7~Rmq^)HA z_%sBwOo|#8SmM15l9csVS!Cf`m!HEWa{} z1T*}LQTCG|CLMo`%TLap*}-V`>g!jYxkR2K>y(UDCB#M&ZfQGXH9S$3bsF@O=dbv@ zk3sr?2J6iKcIM0uXT$mLT>Seba;&uwDn?amR0W_e?>(`qQIi2myuj<+&+TM!(bUNM zt53rY0T#T~$6vcL%N15BQIuFzDT~wUrh5Sh$Wr2Y{>gDB=_iFH>(BlC;=gwc0Ml~| z51s$dMdm29Qc;pPlqD7-0Z}B$@f@%60LK}mUz)ecwR-WHTO7~NpIi9Ix!=ujfy)%c zy+>89=C##$8jqLw1qDts#eh))8%>?1Kh4bC@_2r6L4CURh3j8ix@!+3a`QMgAPp#O zmS=_)?&bkGbW$kk{fG*sKXhd-(3&3|_~qKkYflV*ARSNPVi8Fnl%+H^6FkP9g686E z?2|RreAfn(H%dIqvmg9v;)$|kSL0wY!eREXpCMv65_n78TSgF|!>&$7%6@oqLXMa$ zaU5)7Mi$6B%SfS(XaN|@bQNIoLwoKWlv6Gvb)bxaYPnWK00N=pw+@Ywt^y3498oE< zWaM;1oQgvbwLS@uje|>Ue-{CcWZv~~mOhfW8-dqGY7+sF&*DCYOJbsnU(=k!dBt#l4poy8@87$D>3N zO{slYX)D0jI6{s^Zj(p3WvXP3tM6-l%K-10I`rf?79Jt?HnUQUtAs|EjQMEx5q#Ev zoS)q?fOXn+eClXp_O@eMbz?wlQa7@&PIdvHvV4^_r2LHNK$?)i*gESk!HuQ#|N8$6 b{txh9{z54618siy00000NkvXXu0mjf$Gtk8 diff --git a/public/img/emoji/tokyo_tower.png b/public/img/emoji/tokyo_tower.png deleted file mode 100644 index e1cbd7a3c5d7e8d7474bed03b17c762cf714a8f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4802 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 diff --git a/public/img/emoji/tomato.png b/public/img/emoji/tomato.png deleted file mode 100644 index a129700bbb5911fccd94b7d1546445d6dc1df6c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5748 zcmV-)7K`bLP)&6Pbr^WNRNpR@tI=G~_auKKP0 zU;MfEpDwTet-Zg_sUKC%^^5YipR@s#z2Yu~obA2;b%lQGRqx$*K0t=wJ$dNc#uQgv z`JO#L@}vvk4L6?gVg>uW$dxx={lKpw@;(fI1du`ACcac1{MfzmNf$ub>Au>FgQmU{ zVC~NjU89tG>Qy(c>;=dW&QUk*3!ZcVbgSVr3R9s>w-0d3E#eS$r-=FI02!=zOt#$V zI~n-J4_$orn?Lx>izCl-+2rDU94?Cd=YRLfLH!4*6MGOKi7Zw zx%-`UxLOKznJVP7VgYXW=u4KIoBS_hiXWfv&sT~?ym*|q{L1fLiuFy1)4%1vzV?pq z{6Gfqj*nixvbeOj)2jyDbNK650v`tWz?&ZU1V9F@^^Y};#aYiK2j~GCH+|-HKeD>8 z=k}`Ts@66%w#NJByI_upxJ?l`+lqZ<(~e*H)<3xP=KuWDpMU)iTmV$niUQ_`yXcku zm%Q>_OY^r}e|!yK7A3rLvfUsp?(;Xx#!a`q;iZb+CrhKj%Sk%s+D7z8u6yY%TL2ku zxIyXBMgQg}N>jb#mw)#;zxmE9zxd`SJbD7Sf9K|_58VOqpI-Jy zcmDQmZ(z__VAuS9hJ)UFfu9AK#Yy{(7_yczr__-T)KSS@^e_SbE*DbqdG+bn9@idm^cC#>8VKM0H(&^>y z`7?fMWpVYs&1UWS4;=f>)neQ|yH7hET~wcY{rmPki~JFI$9TMj(P}(eF_$;R3GVol zd%yG-*Brj>MM_=$lS*CpGNoP{c$QL11MI}(+5uNq>bbo=Tr0n{{}rl&!EnTIeizah z#Cpu2KzUE4dsI@Py~aDoq}@Un`rCZV-1P9tV=rsYTfd~4Y_rfi?GL)0?$erf^321B z58=J@gI$$g`)RZ=1cZou)t(hm@KsT1x5XpF&iJ<{8MkZ=~gSZJRt%6>!JGL zxsvxTDV|?ny-NE-J#+(GcPlnNzk#}UOusa+P~uK6aC;PLsbsL!qc`j_-yhK_3)qBv z{`;NV{Y!?u>Y|R)Z9!R-jGIliHnu3b23-h6S+cmW!s^PotnNBM+fF!q^d8nXk1{T{ zS^w-|Hr{uLS~1@8yzBqga>L^mz$@m|ZwxzJvj-?H8uH*9SDD;D;qZqZV)Yw}i_Tc) z{Qb*RrD1cc=J@)ALz`P1V#4u-hVdRl_bDUh53Df1I>*3tP$yfO!V%`4@nnOhwzSGK z8Cz`aF*tdEn(g^Fvj)dzrVeUEcFh@Hz?Rh;q7w%&D%oQqU*dDL(!2O5V8n@K9w+tRo49kLwf+DCjj)`h0 z&Yol6iw>~s=_|Mpa9m6uJbEwHfB7z5>p9kXj*lUP@Se}Ka@}LT4PK^Hu{h+eHSM+_JD=NZjc7-N|4b?Fy9TmFTA(8{6U+80)8|80%@^kWKO)aT0!Jr3;Z!OE~= z?`XvF-Cg$HI_8pK{w0?_m2z$o-x<>F4H@VXiUPC=Xec^}z@*-$JD8{J52*&da81R* zyAQGXg~JHY?uO9`&)hN3auM6!Q&pah()5*M(X^CR!D+(w zind|ogkEV_4k7M&-h~`~@Ca*@nnGZNFls%$+Cl5E;%Sx8cn{Hx2v!_HsI_I!a)+mX zW`j?k3CH(?z7GafL0wfe)-ka)bqDi8quzC!lk2~yo#4OhsJD(fbVn7;bz#2OVWHn; zei#B64d~7JF4Fp|Wfw=`3j-Wq;P8Uo8NFIkak^-4bP$7u2ozTItvarbc2M+M; z184HgFjnV{M(hjM&sQbg%Fxl84k|(=Lg_t4>(REwOeYLqf!xlbPIkd?;Ibw1G>ocO1-*YqDLhRs~AGbs8=xzA&mN6 z%xD4TmSKJgM)PUmt4b(zGVU8_#(@dc+lfi0uE98r`UMe6#p@rj1ImJ*@0So6R50uo zfo?Eg(d+foVwcU+?L%3mc2@#*1CuS-T!XE37{|phFy2Zuxf9UItoT%Qt-u2+9_xe& z6o#S@jDX4@lA6VU6OVI_AT-LeWDNZVROQhEl{WN^p;wl4ia_5ErBh`U4ow142T6PK)~AoNyP&Kih!OC0_B843#Cp5y?`qM9=y_c<5AAxv<@gxpuM7sqhKPM zPU%r47ws582|pVA(lO)^44p`2D7qDNhk+gxRjLj?8EEQM`Qu06WYEp^-1-|($JUS4 zZ<0Y3C^~=u3Vb&09Y_EH03A^|2ni^((G*^AXiA{c3MU#VJW7PZdzzpvpa20{ttksb z6)~Pd^NbzWfU@A(rG`$RGK$h@s-lQNpsOxK%0N*hGqwfq(x&J5QF!W1?s)SBA9Hx2vmlkEbbUUp;#<+R5A(^(2^@aKqPN!qA?E}Ysvh{ zXg*eboMU>Y% zOa>=oSUV2uYf$HwZ|a0?Q}x@tPKW}XjbuPg%{rOE&z#FDKAHEDFIS|-Or0PG3W;V7 zO4$G?B9gv35(7~99Ro06Q#U2^8W0h@_sPg)oL2X$0&UW*ZsP<@g4Q!zU7I^4ssLUA zr;N0yWDb>$x@>mJ>^W~eHsHMA6^K`e&LJYXp+KqBITDfNRYP7obig$`2cTHfuwMb7 zQ*oTaSsx8X!+|v*-<~G98*=6IPH(#5vE=FjkTtiLFl}+?XG2KWwpp!9<|E#xJQR4N zkYqlSk0qUjX$U^3BA`GtCwB}$DUJj#P)eoBI|71h1Cs_57rBjfa^k`Dy1f+L_5qIDht4QiUOkk$$DJ|PmpEAT*JxPRvk z(A+KX!gP_w=b|*Nr>z}kJWkK`)`3#lY?|?D<#QGNOyzUOAZl81YwZjFqtqo-J&f!E-02=V1&@q63LTMe1 zPebr&FVMPpeNdl6bo}+s0T{ky9Y`9zjL^28I?%0KO0x~Zbi?8!E~}j`U?KrEHBD3v z9+27FoaBnP{6XY{A~B?I zSg)|2fMA`Em53=)H)gOkgHE!dQ4-{BA^w5-~u`z`RPpMT&J5e znQn*kIDlk4NK!9}RNdKGm;60BPcMiAgmkM@3M;8l6YG-kCeS*zv-zzS>Y5wA=Ql*& z`JmjoY5Dp%Ry{CjZLWSwcsuBJ&~cN_H*M??Pn~BOn{^iNruzjSkcfk9Emt+oz6*Gt zkVLLLR=}o?%!_i%BrvWc>3F+!0oab_Bc9toDRSqddP!<~%qupH{YJMilv-o*{#~5M z6&fEXwW7=qPK5$*G`bL~^dJrx5O>O=s6mb7T?# z2Q*%oILA1!X+2x5gaDHH&A_DPKRoKU#NK^OzWJ;B)O$9xz1HLh81Dt=EUqwEW2m&E zGBF$|;<3|sr?5uT(F&t-uX;Zn0|Le*M*==}j@&6I|n@1Nw=GPyP>wayYx>PH5u|h#9X=heA+Wbpvt93LV!A4Bf zcs_;$+Iv)XAW@Y@&}glb886X1O&|o3)sYuIyeI@gVgZC){d8R;f(<(MvHGy(qTytI zEpRf8z^fk9`vKoP#3kpQW*_h(yPfm2rD5O<&N!?wG}(Ni6lFB6HMI$~f z1!$BC%>KM>^H$X+>KKROk7K z#=89<~E@U@NeZ&7W|v;d#exA|L<0y(4s$Qlq(De0jd&z(QddmYSZ? zRMC74f$0yaQ7a`F1T6ukkC@uT08CH=+8{!@r#CJI&@@b1XlAz+1hNXy_<$rG&s2Xs za6BFh@Ba&tH$5(|$-QAgeR5dw(&a)iEET=j_JJTXAwUTj92!M_WCa8b7!w01QWucd zfqYw=G@jZL!Aio*Db*)cee6;I8<`UVV|d#aMBe_mz9{+Xp}M|X^3DYVqXN1bIw~7a znv6yS6oH(x(Fq;Zlz>7Ito77w41u7@pv^c5kZ3*B0*$1qZ+Tb)Ho(?!#b1eh>Ir#M z^rt%NX@%wwM=6wUhsFyn-Vj?8fxeH80Ckg{qz$o$fibWRY^JK;(ZYZHTahn3LGKFh%!`%!_X5{<3(hOl>|J0ch^&Q9lm;pd z3LvlQ?vwx;36PCv#_;JD-u^X_&p)m&ORMl99|AIaT?RnU>hs{)CA`+a%TX*t9s!_` z=|WkVj835_^1M5!BR&93viTam68N7F!S5f1;{bqU06d@oi68R+KOaAG0NL@=W zjFv!mhCVPL>jIn}ct#h_DPf<6#n}x=Nk&b(z$LTo7Cf{K_pZU;oP@8n$@CU5nbBrO zEzo8h;AfBwS;@hmGGx>#=xnmclt2flvdLaHJOt)}xfxx|I?4=zUZ%{D19yNWcY8Lt zky)GJWInf^*#fpt38V(>Y!F#xmK*@ZY>VWMmzhum@Ht@vsH_E`r`?c4nbqlWH)^Js zL7y^OF4F={(liBGbG2#7n#jRrqZywes{oLVr%r$Li{Nyoc3vx(oxj;jGm=rKgv_Z- m3o&ik9lrmuFM|J+KmQMNiel=s!{ZSE0000_Pzb?>3PEJic6OLp%4*8hyfp~K{1L65{(i~&_IlY1O$Jq{&0bR`~gJN zKS~gc62(V!<)P@pLU?H;OH?G7ESrU8nVp%QnVx>$mtUP*)jhYnXL`0#BkSDcn^RS{ zZq@nDIrX@8dqfmP^#6QGEw>D?Wq>UMY#Ct7078hfPj)Hd13UtxfM4T*^G+i2iqqY|C)o(=86b+H!w|m*rhy0W;6*0^ z`GO|>c_09OHf$BRQ_Bh9H)!BXZ({PNLp%t4N*DbRPJVuv0UidP)@c{`0UG)?kb9Gn z{{+Mnzy&72ft&m4!6Jhmz7XO7Al4NB1-J(FpITdWlLVswa>(BVe6{D+Pr&u^O>Klw zQCaTxp5k`_kD`NHf$7bYX9$D;F!@V4di%*A1+E8ZNCYGrOY^E=LMVwNz^%Ytc)mJ> zz{pWC)L_Yo{RVLHfZHMPaqxWTgto#U)`a*R@Nz1ZA_d#F&F!}Uw*h}a`JQYxJ3ETQ zhDFSzJwNWEs7;)Ei--f;~4a4xV-c1cVN=lMKu#Q0x+~IlNwS;R_1Bgr}^Zufg zkLIFyhvWfO7-2OGcu`G0&-p`A$|s=Uei-JN>FMc1M~)n6Zo&v+9Z%1|uxBIrLEwEL z{~k!Emv{!mbJC)WUhHcEdIrHI&1Q4os0Lt#%K7{iQxV-Y770p6aagsaM-}K?0r`3u za8wLx2W1`zybSpQvQMAX~zxWg?o7!s{#b`faqqWz&$WAmkY(r9qUZd?rgN+oCqYf1=f-nrzad zY||1rtik~8fQ@0un=R-r$X%ukA(@z<^q7?(I#@wFsiGwWhj|XfOF~kakdD&Gr`aH3 z1YMeS60$}ODbCQ2T-VET*aVeFBPEeRBot_>T&C&rByF3VrfpL*w4*djZ%>~}=g0{< z$I8>LRGPLsE|rvL)I=ybGyRw_&HlqEVdHAOpf zv$SL4RN6j0Lo?%(G&NSH$-)>ZoyVlyIc#3Bht19<%YJJKwzBLUqNs?}(0OhqCQZ9+8xHk#-Q)whf{V*_Op59RLz}M2C(rOUh29HP8nH8=$(}IOWi6W(?T{ zGZaq90NEf_9<%c0@nVTeg#wKgN{9fLJH(X;Z)J=yUV1p~`F}@7&ArC1u-~{6c)OQJ`9F42B zT5+YdI>`nY5&?t5KTVS*JC`lw@=U&%&ntyk0bE*%gdz!p1b`kUY=n9fp0C#_52DM} z6e#eGAcEX#bSe*h6%DnN$rDI+g~1yPt) zWJ*9G&*V5fb@&^}kllR3D{&Nf)Y(p39L|Y4Af=I~OggRl&=XwBL|dXhL~pbu_6AWD zawHUU1*ciq>+Zzvsr^UY@v82mI=77!-TTw42Lxc zDhaqTT$ZTg>iZd07kTx(D(7bmR9}!TWZD4wK!+^KIj?krekxiaF`3Se8Udn^$xJiJ z3@gQicp@6$Z4&_oVLT?;`6$4lq%Cm>2lOz5=_{C8E@SeT z2=zVPmgDrGzueV2>8Jx(x0#U*kWIUjamcAGOk-5*#IfqEom<>jCU+3X+bJa+jc4j?j>Ny zb?kWA)SDUhavx0COG~A7gaDSseQ-M)0CiOVHpA$dX2Wp0FtPz~H!r0m1tG=ykBK#T zVWdvLcz)ps%v0x020w78xqC`46fpf8Noj{5hp-vBL1?fmf%cwiSAPg}^U8A5i~^c6vwwo?!`u5wFpl4>daP4O|{j5TP6}Z56v32#DJnJpvTxDC+tT=?!e2^dWcLJN5}!KN_OGC`)DyabVr&(SAa+NQ=Iz z!y|w_(>9(mlao}P%f7MO9|el2MyTcBRe)t*c@%P)VKBsKQQstL^bY(t5CK6LG~ zq`O9lO!x(%A<1E#fUbv(IXoFinAaBLsM9P z?%hzaWazRG;6AkxTAug!kt4tl+mCyJx5x85DB~08^1hyzmLP;AcnDHQz`$)UV8|1b z>l%hg$$0({Bzwj;TZ6!XU#USU5$@`~v~&a@BP5=eAnz;k#N^u^<3O)pPQU=((~U;+ zI1U)6d>*e%D^>^{3SX_;mRSiBGqR@41Un~25)w!(i}7v+;4;A6XHB_&pqEtBj$m*F zE!m;x2Ogh7;Q+QOeeb}?tH7;)eX@ds%wMYGrBOBb2(5pdr zBIA5=!b=`&1-(nK84~8Xz9rSxI+!=dC{Pg-VBCAeI=34S-tvzpHkNWt87RUaeR5>^k^!d&&kTNDOgd)ygf$Q*k1;cV~ex6=AcC`8G>&LFT`r&)OKP2>rM8FVS{qT=| zib?UMmhXKF6V8QG6LtQ!m(AwL)^mWl!p<%+WW|k_L7In)S<*n9%K-CyvW>t;86I?xx+lcUP8oe5JBf zxxPGB-hoeB@M7A0+(;~A`g1w2&-`-52Nv-*H|Ts`SHxOoPr&0E?Xc(d#dYvJPsCM_ zuPiMcIlff6<7n;BoqPB1Zw(|B1w3+Gv0;X zo0}yN1bDduK~6_&z6@C$9VzoEoTXVV4f%S#7FFx@XO>r2?y1(7@7weEzNLZ0M>oLe zKV1Cg`Io$-;HEx=@%#bDcFsmPZ@2Nsyto(`gM@lVCntk z16boLehG2a8+;cMyIj5x~XBT{V2B@7Tq?jZUMG;2%P(&`wVaJUL zUq+$@7B!e;8AS`B2#;X0`)5nEUs?(phwnLfur?~m(GBp%4HD7+_+|f_+KIOQZSKv8 gEdy*BV9Nmi0;C2kv4tyqk^lez07*qoM6N<$g6bs9tN;K2 diff --git a/public/img/emoji/top.png b/public/img/emoji/top.png deleted file mode 100644 index 5aa4dd442da574464fbde3f5978730e4e9cad5f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3785 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 N002ovPDHLkV1g|LzDNK7 diff --git a/public/img/emoji/traffic_light.png b/public/img/emoji/traffic_light.png deleted file mode 100644 index 1facb276c4206323b6f582f89acaf44a1997e0ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3535 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 diff --git a/public/img/emoji/train.png b/public/img/emoji/train.png deleted file mode 100644 index 3202d80ea9f438edffcb382df6a4a1f34a59c2f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3905 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 diff --git a/public/img/emoji/tram.png b/public/img/emoji/tram.png deleted file mode 100644 index 5eb29fb71cdcc8cf8b8b7f2f6d40003c7846d229..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4869 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 diff --git a/public/img/emoji/triangular_flag_on_post.png b/public/img/emoji/triangular_flag_on_post.png deleted file mode 100644 index f9a3f32d7118988613c63f944691f0f2ae39b88a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1399 zcmV--1&I2IP)9)v8^)h=XNGnApfmTJ_kA_@+{sNQ&PoWK-uomoJ?Wjz z^LwA?&6$i65j;-q+`9Pm(A{yBkdtuJ@I*!F6La6PQT1)y?v zJ(6=$BnlKt073*JQZZHWD1-p41dvR;`rW-NR;&+S0w4g3Zmp@=wl>pv^-}lqCqHX% z?+yuoKyhHAAw4I)sS%@?k0 z?7n=mvt#QXrJNZIKmY|#EC4aU0BUDfVOeJWrnL*3&u-fI!VkTxS8w0j(vqBE07{F* zf~ZbaVtHo%hOQ-<6YG~e^V6x0RXxYs+UCp%0Ll?Nd{F>YNf5+>R7CqI6~H-i!&CH~C-8L%-RA|&Guo}F9W*4fnX;nL=LH_tCy`u@i)EzRYb z0I&Z7DExZ@m;fSx888GG1JMLB29-)-QF?Z!y`gr`n!1`Brx!2&;6PJTYgqv(J#`7p zd&Yw^$UqEP5L#mvfYww+NUot^3A^>d9)M~~Ic>zLjZPy$tCKA3b71Z&)yw?Moz z`w0;;Fq#k}Mq?tDT2qzW(NR_TjG&qi`k0-W_!rAg^vgVs>IrsHL@~Ho*15o}gkl}B6M}m#d z1;aMp_CjDIAHcDnwZ?6V!~@}1NdSihniyG4xdAd~Ck&2dF*PzR5}*{I90d`7dL%*Y zN&FfFhKtPy&#Yl#@c=l?o_W_WvScRya`hMYwBG-YJMjwuygfZC5Trne?N)ajJJAA! zU;%>dvfp2^8U_?q4T6a%U-O#{FQ;%@@OLL7h)hBDUpq#+Er`c|JdhX%&n&)<`= zEQ(YX31AVBA&3(Ha>K#0*4+0-69k4RgM4xlPFA^0XDW0 zOi;w$c}#2E$>*;P<;{UV#JZZ<44|_cE~;()dshx@|Oo(z3+_& z*{?)I;H%65uy-(CwCz5CXPiKW@gT3!HK!p?lj|$|za$ryf`Wxe|?{q@gQiK2i002ovPDHLk FV1gNde+~cu diff --git a/public/img/emoji/triangular_ruler.png b/public/img/emoji/triangular_ruler.png deleted file mode 100644 index 383677cb74cb96f089804d8f488127707ccfb7e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2706 zcmV;D3T^d?P)a{yumTz2^eWZhiZwZKkTQviq*gpe4#Vk2_-f@eEa zxo0msVXXiFv?f4EM4DjRcG=B|%H8aQH2^>pL1_i8Vhjy$z@{ym;O6pPAp>^8>d$~k zA=U~+1g!y*5`!BC4TNkGjK&F1>{!(RqBzDvErimPLQo2@1lF5i%;j=kF_-1;uxbH7 z06`Ejgji{iCg@o6h4q7jAdPa?qRQR(vlCWf2xl>e+T3HT&2JzQfi{}Iap^(dhq=1NH*p3Z1 zm%|a`gfI*%k4`){deik^oLpH;KrIH)-U$(ZzM~@xDFvd)K(K8L4PTC9M~{1RbMwXt z`;8O6G_{huz}X>?P9X@%4oGUiD;p;-EfBh4@~{#J^;d-ojI9g!uDm@1pv|-TFAxmM>-Mb zK%?;PftM#Xk9-!IXl(1JuFE9(U^!{7)`O7EQ!KcUg0qsx=l+2{9GN~=K6#>Ad35}l z(VK4k^5in=0@UaNdJzCk)DX_7g9gHofk43c)~h~arx2_Lgn*$H3OPurI7_9L=Ap%!B2!DC5a^rzFUJa$R5uer_{CX0M z3s7;)Z88WVK6&oz?SUecXOAx=nXu!M?*(+55KLzQ!s2T0ge$jRV=^ItZ8w6k9Q4t^*}bxbo^u6#5Jy zsk-m;?@h31@a@f^_D3=y>hpwKP_+e3I|VrcVqfS~cs zTduMV1RjT z?{0kOz#E~ovWUVs9k?3j3G>_?6q;kVQU*dNbkZHF3rQyIxF`-t*T06P+BiUKeg{4t zgv%2r0OOlBZL_1mhizLagnBwGm6A*l7RUl11v>IM96L7a38JPGF8HxHX(QPt1dYz8 z-eU-9CTtqs#+l$42oMPb&V+P1kN{-blKcC6l8sf_EQbry9qh&SCsx}K1eOE>K;y&1 z+w3rEKtMV%g22HD5FE$huF=z7!rX~@FWErtePrLxZ{PgYsSD=-J^&G|0f2xdgg_c& zL&IA$VbUEMPN?}lhO0d~eSqJAZoT%~MM}2j~<)I|q;kv;vkA z!qBzA7cjPQ=t`3b^>l0&4G2o1)L8&XFo-y{BH~z;yE+R^CoJ*P;WlD8Sn_)B-Pb0b z|HD(e{(bPRSlSuHDsDKCPz!vVJXwWG&lkB>x^4#DT}228ue+;MxqZ(=+n4l6EKPge zLX;vB&{*O+cIeHCe@y=QYqjd!yk$Af$M8U!2`3mr%peFz9DrOt%V&(e#jeB&JC^WB zj94EoVH5>1I$USy7r%Vw|F({7o~_mEIN!?W99TJ*cHe$S^}vCD`F?Gol*wk#$e}v7 zNJ6R9k=j;(ujkw>YW2YDE|r>@aNZ9_ND;_tV;4(+lpc8h{pn{99Xi6+JkMgVQc5_E z1+5)O$7&J6B5jdKxr9;DOP5e{$>Oxpe^|)(R+w01!HhMGi_5 zfQ~goSXl7Au65mKb%KpW1QZ9|N+=;1Lb@DEMOc#U!J(*0!In;WU3aPS9pi-mXD6Hm zfCfP+&00ydP^&{}&3gq)SgMSvqM*lq?^^M(mXOCswyaPwW?2XNTvkkK&%NuQAce|&Q9 z?EuO~C3eQ@DKc6xI`WZA;56A-T_ucSqrk{NeF=Q>&(m1j^$CFg0)SOKUCXd$YXATM M07*qoM6N<$g5b^K-~a#s diff --git a/public/img/emoji/trident.png b/public/img/emoji/trident.png deleted file mode 100644 index d79a7b4cce5aceb3efb24c0bde909646f3b5b140..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4833 zcmV<75+3b|P)u26`+pyK0iIaJntyj^?9r)bEm_mGV4l`8LqW?79bNNhYg5l!y5{*i zn;vzq`A7=ziyPUQv9696x)yz5S=00w!f^$@$n@$l3E>tWT4zQv<%};cYy0%f7oPea zJM$wYz}B0T>pSPoeYR`S=`%v{G6Ib%v_K;mCory5>m3L-Hlb-Mq3hH$XLKx(UE=!V zUVsO$V-4GG3vHf$*5~hPn?1)@7kAJ&r31cD7=#fJ~a-J00uC%(rT@IK;w%LKRFz)o-IjNj9K(rL4UO$x$s19eRuU|fI%00;mKE*Pr= zSU}cE2-wAb6h};?dQA-M_|G?!?;Pk}`cL%7<3s@2->>bMd*Yhr8M6caND1|AF$BU* z5JHR+mvG=g1>*)73wfp_2Tmo6awdVypo+n_UoQ^4{@SX)`GL9NL)`^7U&T7M-lRU% zwP4XtTTVPFAT2++3xT>Ags2=vo@D7AiWG%J4#LTTs0=U$#fZQkbGro4HfMgIb>7)O z{q<`9Lt9s}4jeX7l|9a|YL681`2VN?P8r}KFs_2D zAt?R`bmK6Lx+uW3ixs2%IDp;{Z5Md-IyOJr5!ux6Dc_txBSXimvk+{U400-?0(feS zmNi$5mI}D)MB@W@p&gW4~WHEBkda5#l%a`6s!^h1maQit-op}=0#AmYW zqmyIkn)_MQ#k(LZ`{;qN1|bVcUJD>UcmO?b{0_N|0OK5`>@a$Fy@1T&6o&TD`cd*95&<6jdv?y2WlYBe z@z$%japZvbZEhfm#J*P`>>>!R2=D}e1F{(sd$%LomqMy~t@}HeAl$b7>Lzy1`y#-T zx9BVCe`)_6tS7-a|kzD@(GJ}2KT=U2aF6-&U0p$7<$Pb7S_u7f} zc~(X61Z{&a()8R@wlkgv~b-CpF4|BKK=A7pSdk`_w9^L$UR@bmky?T z%pX^Bgmixo>`E341Y%CLUc^Y>ewalC>0ax{?zNZz+_pS(Tj1`=r=NP|^v|BgI~Ja@ z&JEZx5n#(oc3tQE6W7J2w4tF(Lws5TrhMk??$cM-Z=9$TDrMYX8sTX(UqLB10znKQ zs@795^Mqp3OjnAyf1;5;b#-9llruil?Y6C{i=%DU6iho~@w#o_)vx=r1bA$vva)mG z-1U*JPH1&D0&VT6YmFk-S%)cSoYDQv>WMkw(w|X(A(j7wV+UatEf6?Js4xp?Sh=Om$MLrATK*4)SRH8QZV;o z0+@Z1wz1=s8Qoev!51ZH;UE~Z;fuvUG=wH<1H*!~Pku+I3w~s-AGZS@xsI*unm>JA zbW#g~%|KmKqiiHOu3az z4ztD^`NwZme>QpHjPAM?Kf>`KNH<_r@&GI_Zo%KsgixHLaY`$uE}pk;+bU({xCD6k zTkOWR6Q{0?bhaVbC{Pz`gs_MP+)OW)vgReJcY5t)&t422+zB`~ z7-T!8u%&zs<$NB(G?6;63(20{)i%B{P_C4}IOZVu^}Ffi2fxXdl*@R^tmIk=3gXjd zf~$(RnqvT0RE+fZpnvyHWDaG`++ke4?5FfF#seX|XiEVE00K#InLIZhTzW4({J<3q z4Hay%?L9ga9kKSQo|6EXSQYbm^zD2d*~15sJdo|r^wIfWSx4K)H3(jIA8pSK;)3LU zvp=zGSJer-;FykgIdRw(8`;4@I0eVbC-5~%ew+|CByn#{LCpzF)`g96WBL8`u={MM zL{@HS2u{VS2}^Knfq~sSaOkx+aCk?if24;lkmM(l2Q0srUdi-hY3dzoAhD+^!oIiQ zSQWS+VM5jF5saNc#E_o&>O%pMCG9F48$=|32FFBil@3Lxk#01AycHFMZKMC~SCQDW z52<&=K=ufhUbKN;c~6PZH}0obGYOoZJYXdfZ@-P+ov&f=;2va>L-2>{;g7WFk=Djd z_g%%}7%v38J}*lqOOOHr!$ff3B`h9pk8Sct+jK1$L@qg4b?TewdE;da?5W!Rph)C~ zaQ>xL4r9h+ED?(RIB$5bJEFd+dGihy$=Js29VlI1K9zb=eGTrEQT(7fVP)XSUS9$ z-c0SO+>z-S&I}*i3#&8)y`G`%#OYsp=xVlV{QL=m91sX3L`@J2P5zQz z?laAwL-$4hO1CCPu=tys>6Q0oL*$BIQcg}o_t0bMcd(`~ltVt*5AdR!ZE3Nou}2=b zoK3^KKn>`Vw15vF)a)kGBYvMt3?rZE12+WPX3c7jbOg3+`UZ>q$>?3iPHCLfaUoMR zFz(3dkchw)0@D;UOlrOG=U1{*@F(z-FSAHPi?*d@*5qcc6;aL)qA*lKz8}9YzmD%8 zvn{bT=d%`!1Klr^RZL=ezTZw3hK5lorJx20t#dv-FB~_vZu}aH;wb$53ii47+3~I6 zwpKqO4MkT##AW)*t98cmZddX*&uH4}UW=pP-mCLd>ejZ|o%6WQhHd4LAIu`xhh#B@ zor|U~3Ae=+?sMP^`QX?DFcTmF#x)p04USbreCF&oU1a4DP(eR$|jsj1y;Ev7c_dn z2Y~{7^%^RrGKxbvWc#v@F1^+KDvrYXCCo5Fi2FmBNen0ILFFvnug&KQ?<@?LkQt(R z*FHh7y{iDVzIs*sgob+>CU=1;Ivlfva=rjFpUqbaX40;hN34?F%Q%YudOg`Nb;_Jj zbJJflwTNIO4AZQ@sQ_TQm)|M`MdeU5KKeF@FUM&gaT~KhEw)K*J3Ca z(h!z#oeIu5xM4uyDwv|eu?r9uP#7FU@2f{Pe*HeWc0yZXBS&z9VjP~{G^6lWzJ?I$ zTUxw^6Nd;GAVHERV*&!hP<;fhYY>7wvb?t2Bgt}*-~iPGAr%0DoD$4(0*;jj*Ay`5 zav{SwlfNrL0N_B>T%&3l;FMs~5ELJS8ekykU|c{^$<s9d&K3&{Q3$MT3O!A|nr%pQsu9C@_~8laX|68=MQ+P8L=r z1#$}BImPEWg8=)*l#cQQ3zH-ek=)f_1JG_1wYYO`D@AX~mTzCIH(%JzdTn9!j5pQdYs0^!|0f{06 znKH6OfWkBoqtWOQY7r$kGWrTs*Vgi!=O|UxYCm`}>jW zFC%vZ&lSqJWW{4NbgW;G%X!w{fP3m%*=50IAA+$u_`-@Dg+XqHX3F$d*A0NF00~J# z$hqDl4x7gNQ|2=ap?Rq{6SeR!~( zMYqgT-p}s?HhzhHSEoX~|St_HH9zkKaj9h{$l_XYQy@mee1N%VYCrj98^bqdy zN3k%_0Ql+we^`MY)WMZeLc};YxHn#q=Kw)~X9iZYF-g*jVu0Yf#j`(wWIj;K1K?N| zEVG14wus_L1*H_BIEY+DMaDjbfm;aKj^0BixXV#6#{VCDtP98gN)kd?#w zgoBN%e?`T==qECFEM?IE!)23k3xJi!cDsxRn1u(g*+wHDrf-DgJGkQ#35( zDyDD)aV>y4Uj%9(3Iro66x{%zfCPaU0|ew+!8R)>=iI(cD5qhYdF04KLfAOyn0QGD z{5tg{UR+Hij*E|^?pnnJO5g*4iVp}bp|$6-3jl1(bDRQZBN%Z2#$o0Jvi)$$zigRfkUu^hFp4|Bz?ywQ z{LqZ-?=*#wP-NBEbIw|150Pt{Qr200000NkvXX Hu0mjf^{xwu diff --git a/public/img/emoji/triumph.png b/public/img/emoji/triumph.png deleted file mode 100644 index 92f93bd1025035241022d89eb701bf7920a1a636..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6164 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 VsS~t-ny~-?002ovPDHLkV1m%tV?+P| diff --git a/public/img/emoji/trollface.png b/public/img/emoji/trollface.png deleted file mode 100644 index 119d77e73a1fc9894adfe0600e341c936d619e4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4901 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 Xg1#v80?LP600000NkvXXu0mjfT`77J diff --git a/public/img/emoji/trophy.png b/public/img/emoji/trophy.png deleted file mode 100644 index 95d3b63f524646adc51e00c3a6ca85b8a98e681f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5520 zcmV;B6>sW^P)%qkm1~kxu|k!W zCNY*IF|W$Kdg~_PmR4C>fnX(9F5=@F0;0eSqRha|zzocsGw1!-ul4F)-JSlsHdQBs zN(N^rnZM3g-K*DH|Nnh||Gj#hy*D$);DzkhE*-zVUa!8ZF<3jF`)nZUcH^j>tVD@C z*6gHD4GmPkyz|m2Fwfg~11k~%=kPgTg@ZY#&M!QVfq8IdG@!NV`EY+w${<&O zR0`VmrDl-1MsDG5WU#RXf=U$wLxUJ>3}Iln0k05Zb-9K8KYkkbKX730zx-hKHP)}f z&oCc9$M)7?6`E#HLu3-mdyxjec&obvNC|BnF@}VHJ*IvAi@#{Ljk!2M5K{Q z10?~O8%Uubgl*FtJ^fJHK-gnu;LI?fQ1rn)hTaeYdt4|m1O<*DVBkK$ZR;02JFa0& zjx@@#_58~*xp@-9n>V30Gzt|KA(I4KwlolOd1>5@z6jvvQ%=CIY%6WqeZlxm7wy`F z@ree!vUMzgC>3Caqg1M(TCJecSI6i`1w$64YKU^#N3qD^2QR@J}iDQRn7s?*S>iq!} zJY-#l)n{V(c^Q}*L22kbuxb^>a)7|WgGaL)NPr8#_uvfLBDY{Y8r=2WkPe|`2$c!Q zD2GfkM6rZn9VDv<(L8Y+tFsZZ#2^R9(n=RcjS@8J*hHKrzo9chYd+karD$ zFZ@)U_!$-i{Ib5X56%=aA+b2Of(O3+XzRCc_`>*||9Jmj+zk2|8-SyyK{niKnVf=ybJla}3 zu|k|3chW#wPI(E0J{#v8FgiyPMVL9Vf*aPLdAHMPUEx&fz#Dm=P-cmF1?p+i7 zibl?nXDMVBLx|W-w8u4kmcwHy4DSGX4#s3aJArO>VB!p9tQ-R91N;)eLTIlFqjKmt zwxVOmBqE>W+r>z8j&{az_(c3*``Dq!h4#Mn?R|51-45W!Yj*$j^f{xS?%z4&xRVCb z0@qsd&ezeidmf&<>l;6u{m}7+=;oEKL6T_5R3Nov^GrfW z2`K~&A(ha=SZL^!X4Ak(3u=3P8q=9^*BL@8>0a_dzQ`x}b}^Dffnv@qMmOL6$ijz6 zJbKn@M_;FECCJQM)D|b!x*AccktG6xNIK#f zWF{c83`V9fSxy2iC?UeOl$4y{`fe45W!f+HFB(2}CNb4<`ay zoI2r1NoWF{X2?@YjwHCg&N6onv4l^i748~Ii4oaz_mVH?GwXI;42l(Hdhbsa#DiZYuEd$RlLpdq$_aRM z-aK()F}d&f>>A>zi@|{sHjVdx1kX1j^Q}yb{+6j^kUrj&pbSz?hUNNnF#NR%Os zh3(TUTcobv8_V1^i946jz2w9B>iKmsC>F)UPqE4I+V2xr;!NC018F(s1Q1p`^3#W& zUd7z}G75f<9ot8Dz5Vj358xzIN`7y>s}Ls|Y1aylyO1P4Bk`F9C4y#A*)clKXy!Lm zK)&&s=kB4_T`$QGm47!woN7=kiiwkqxNSdo8nl*>lx@x8s8AL>~+d}FD(YlR$Ej>?Yrs<)Yx;9PS zxSRQej-wQDEZkV;#-D3b^67lHx&{=BVq$~6?UM1!h#PSvuEhDtBkg-h!;4M;VXc#0 zyLbOm^wd)ekTSw~(}TF+g0Ua&xp?Gl*kJ8A|9{P{Lew$ttuad?DsPL_2}xZmkVHN4 z8J)|KiQJwOPOM8pLe)SmC61~{IA2M-?R>XwjCPXWiw#CxcJ3T~h`13);!2#?y4kfL z`$ZCPaM^Tb=R2=^_|X$M^3*(xN^t&k9k19mcF$X1G5qJ~S(2Ksv}tRKG?GqaMMk~# zZ$V;WN`SO&)|+)f!W~?{OBFynhD!#r=a5mtC;_qa-Lx?>VZMT%5eMQzoQNB7B(B7n zxc|ZlAnac3K& zJyH6^V1MxbI8n%AdJZJ6bYq%9TEkI-n3h45+P)&u8$n|h&z+}xdiO?=^OZ#g9M zGlP{*j`{Vhwc5^aI=GtOffr#uUZg#>n%_Ca*xgI5{7;9g!S9aRBn(*i%tI^I2$~j^ z7_i5@5Q2LQOeH|7p;H4eJkLDC0568&21;9q3~@U~*ZOKj8j5*XZz`-?;fviI%U$`m zSyTPNj4=twUdjXzdVzm$vdsQ$smX5}Ec@>rD0B1|7h$kCBNG#flI2`2Yi0ssN#%Ujam;;K39*v;lGr_nF_)yui$o#52o6wR3a3 zQtI=wsX2_(WIj%#^@!cf82gAY_+uD+lz9w|5g;gdE(yp?F992;o*HJMY0Qb2LSuEw zieHpCv@HJea3}wiF($%kHXmoedPF~VNuyBJz|G(u>U9pEGcc()ECJ*Gz+*jeYRiw|44IEJXpgOm5ALcLYVh!$%_yQ)@!%`Khz$=x(`y;P44n9O zqH%ma!?UaMYx|qxgCKi3CV*fCTz6qTm{kV1Opb)86#y>H$=aPMta#5L zt{xfovF1sT4U87B&=g3u`V7d<<^%+sFPEzv4VwTZ7|4c(IojGsG2|;}eFAD#|LT#U z68h@_;#Ld*wqL@C3hX&o{(pm)&^)|^wr3}6Y}?xR$CDF-D3!`6gpA<&lM@4&w&&h> z9veDq6EHD8^x!2IP1Ht4`@sxDvEUJ0pT;h>=Qd9cJ;C2bS_TPAQeglC2b5?Df~be$({yC=Tv>0xkisx&TLxEaJ;wzJK=5zJ7e_tlb5E z`?bTbJaTwt)4l)v|8e)7-@y;Q{|v$PY3%7k%ai}*%86HNTtCA-HkHZg?psS(?jEXuY&im~w_ zTyl{;*Ke-6@v2RKc-AD~rmH6>-@j+<|BlzxA6@ynX>2)X9K$0G1b&Dx^eh+x9@3aQ zcjXn+80%A?zH!gkH?Duj^yZgs0&cu!YWMrzJo0xXCTDh^+xPZ8doINE_Hk6oMRc1H z))tx=9H=_1EjDS)otxe<0lN00bNjC8SKVXpd(+t8ldqRW0^a+U$xCkh^(~+K=)1Q) zGg8(+xnQdF-`;q|Htc!xMVJ^Hfas)XF0F%m0k-d+#zn8)O`txFxpShEU}AK@-9z_Y zusQqy`TB_UdE?u++;-hnn_lrtwGF=Im6b~?fq&iLK=50m1Lduaff7oAhrZCqmaU^0 zooIk*K;{Cz@1s&JAuNYry-$G27_)t7_tkmSO_1j~fd0 zrDl9=bxr(OZMOP+wsHV3aS6oP9T{rp|S{r=eSppW693dZcrRZ9hM7&IFF z7#?e&TrQzt$NV4w_edy%(Inge%yTUq2WAgFIt!&Waw#DafjCaEys(PZ)fN;Ox^`^Q zR?5|u(;Y*cL*Wxc=)*dw==#CzIrU&6^8u2sXE8hc!;5)07HXC3^oQ(ulK=c z9*X56M#hFvALs|S31HlVCee)k2yEk5VjIjIfEyt2Dk#=8Dsh6K5Wp|^NNt~f0agwf z`pXQ1eJKXZa&*SaK0Lc@K5V(|eqG91eUJL47b_&W5GkSK&6>U|12$q}u$z;p(aXQ&T0psFDx42(xxoDa@DSKh{$ z4a%`GAp|Fw83SYBmWfgdN*f3vkXpg5<|>-2D`>5@5w%muNI_)=GwV6_%}dO8pwD;$ z3Kr|B!8Z?P*mqpw+_3_-Z!X}xEe1U3ASiHDD;&D$0WyYPF2S#qfv^Y^Edn1X1OPlh zX_#C9c@9VklL=@GnPte+6iJ*|blh)_I_(bDS6WzKYh!Lf;K+#_hffF`wf%*zhK6z6 z&UgX@u-eCIjWR^S;L&GOJbENUrNq%+X=7q|8B^m6*fLee7(EzAY8V}_qu%I4d7uiv zSO9_m#ZqW}aHu?kwt}Np47gv43M)23b1lN$QU}YcT`aFen3?O~#Bz*<72$p-7^Mn^ z8E}uG956_2&{0@Dqq_iOY_d}D{yS&5HSj$642}S2%xz^b+JeC-0}hP>XQ1l>&TJp3 zRSO6Mj(~ZnlzoI@02n~z3f)LTXbq{XkSMcb20{T+E94rmhcFa_X_#ItWehD5cTQ?L z#%+<%|I=!kJ?#}xE%2|_LjE2P6wu)0v{{|-DJk3vc5A-}kK1vV0M~k+=bi~l8KkKM znbro}?|pH~H2UZnLZY>y1h}L)kXS|IfKvZ)@6g5|VC+`Q@m9(OMZpeP#3&Ly8EIYqw{=aODsfJZ?q$Jy0d|Kz$nH1n$A}sG{(KMzM(laUo8` zZPbFe66e#FfK;h+Hb_Y_Jbu;JXseWDcp6+waemk#DJ7EQ(37 z9fuv33voJUq>f6d0OCrVPumjkfPex%z1Tt`G`5e`v8hpm$2>=-6=!HiG1^J$wk(R6>42;8Fr`?o#|7oGhmAi&eIWlRe#9bBDDkaoPMcZ1GODG1u+cMWIhr@Ggm|g22 zSITidZ3)o8ehN++PONpY(vC4!uVAaq_~xO0Oj`Iphg2GInjuPrYm+R6l({3wjdH?r zqrt!}7+@^WTkE-T#BJBTGKZX_7<%pvupAaqE*4NJg|;8U@4Z=eVu87}HjXSdG1u%M z6$!f+aseZ>_6BM$DUDjmk`0{*cNrK7b0w>t zKn1s17`^c&(Cs43qn3knj)Ko&W4UWg@Bf1&lUVB{SZsAMZ)bX`6`>ht$Q4B~unjGd zu2SY&Y0Njz#5Pze`rfBGV;>8A?iaY*;@s1n`?sxTjcr+nbM!Inwn?i zMaVi%0NiTHf2IU;qXvH;7{83f_!h9pq=ttKxz>m>iB=&)IrLGn2n!*K0R!j0s}5|a z0ps@i9H}tKgg`7LqBM76Q;`$g^9B^g^PrUzP4S*kdH$s+*SA}KD`)ymaO1DQ{s*B{ zVq3~OcvG(N2I-qCOU7)|hP!gq#z6Nu!KXIpEfo^w1iK`p7KuxM zLMkmXc_LNn5h3&M$XtG}lbI)eslFGOtg#03D-*?nw>9wiv>yc9N`XIFEbvCb=heXH zwZQWj^H_c3cYsRiuGU6mN+)@qw-c$FsmxDgLOzpgebkD5I*PHd97S_DjrQ+Wmk8%K SKs}5A0000@sa>Rp)`a7C4dB! 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 diff --git a/public/img/emoji/truck.png b/public/img/emoji/truck.png deleted file mode 100644 index 3f25ba1f92a16371f50ca9b38221ce00059fd531..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3721 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 diff --git a/public/img/emoji/trumpet.png b/public/img/emoji/trumpet.png deleted file mode 100644 index c84cfb13e10ef152b05978b6b14debd15cb4cc26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4373 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 P00000NkvXXu0mjfm&I=; diff --git a/public/img/emoji/tshirt.png b/public/img/emoji/tshirt.png deleted file mode 100644 index 297a6d63ed32a414f10aff5bd1e2856e606ef592..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4676 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 r<&}IFalHd)Am7gnnf15$16nhk{zY=t0nv2f>RV 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 diff --git a/public/img/emoji/twisted_rightwards_arrows.png b/public/img/emoji/twisted_rightwards_arrows.png deleted file mode 100644 index 25cde18b250190797ff713f1dc3047d60e74712d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4313 zcmZu#Wmr^gw;melQevb_Qd(p{1cn+11f*LSL3-$v4grB7q?C{t1%?y@l#m=^UQ#KC zF6m|nnFIQM=lafdogaHYfA(6>-p^X=jvcS3t4U44Mgaf-sI|4g2AAvotBaiU@?P%b zISl~N6>5W33u7a5Oa>)Y5;Etb4Tl0&7*GvS1 z`9k%Eh?)i&n}&Fsn#TYFnB;hw0-*OqoBc1w3X-w`q_}l**#jww?;?*l)U7#HyBdDQ zxITnMVS|TaJ_7XcMSmIeJqud((>a)A;x7>n6Wd zIvRdOSg*!Uucli6%9-xjF(!cKGP;Y4`PnCod5xc~v~$-JkMQ=+5P3BYgxvo3{%P)^x8$>>N&d*aHT)>HDp5gzWL@`iaif~FaUrO}8D{r@+ z(#>LH-ja7jN-NcK-BU!kqXXIcEl`}Sm7spZCUGw)NbiT|%~IuBdBGJVS>!GZS)!$tb2UlIC?o$RmF18DBPjU`o;F!&^RU`t{nO7hLl{ z)tUx@O2Z;bBOq3^sz6;1)$IF$8|P7_j>9@r;URZx3AcKZ#>3_*X!09Les z!3U@_hQqK|_*K&dz$=#~nQbXy?;ZWk2iq_%${e(Y1_po>*S^zFK4$M=DK_kK{6^1Q zC^(N;!kq8EnaeS6xhwPVT4O1OHdir!`ov4Cdg^WVWz;6k&OZnML{j<m+%tvI##5jR|st``zbki~sx5ti7t(RVFW;KFXHjybY zhjuKtGtXsA#@4*F@+$3g{9Tdqr+{)J1X{uJvDIz;ICF62S_UCjs{(s$=~~(!)IeC& zZ}PxkJ5z)|y>Fl|aQapJ%8um^7CG7iL8DD$0>yxHrY|k)Q4h?4U-uLcJtu3iW4u>Q zAt&WrO+c9i{Or5uNyFT|+8`HwJ50oN!NL|eb`II~@Z-r^G$y|8%Twuadzj4S z1^9Ieh4>bX`Ug;MW^|QwW3!1OS@U83{CEs7JN;1h=g3q6*@c%*9U|TpHo66EO^ zM-MM%qtnEpiDtBMB}vb#CaRsUe^nglTEJbLD%rvn15c@#tFWDEk>c`VZYsTNSglIA zQ-OcKYMY3Z2%Z_G=4-QVRTv#nX+s9~Rf`^PxI3 z)KnQ6g#EP6>VCla6ZKopX-vChifl(bEt`i1*ifCh?aSN;i3>T3O`*s4R7LzAL;4ju zP-|^+K^nJfJxZSb1 z6ZAbnyDK*%h{JS{Ag;qQpv~ zi$&-WV;WJSB}@Wtqm$1_Jrn|b-Pt&}{1@o6V^H+tn6Ab>mRc_$s`!W9NW}h{?C+|D ztybO%Le6x`k1^hG@w!_Ab*V!zz>!Lf7n~&I{T;4m6r<#+TSm!v1ofHjf>>PrK5wA* z>u@7jlXH)}S&sc-UiJ;66vAsO---nTI2U$u?v)sAXKq&S>5yI}%b{v*lkTx)HU$XY z4G8TG0z(o~MLzB58@Or$L9^^#;a~aWAk_GuejOREG0%LIB4KmVTJqcW8;Yk&3`^yj zw`Mf9VceIK@Q$?=Ht>Wr)P4Dz``$--#1t|irtdmsnq2ve9~Apk-gh@v8{2RUFfR^V zxfcE4PJ^fw+1o|x)$~pS7t6*_GQryyI6Jp{S#n{x;l2&l$r8{tpzw$Gj@$piuhbzQ zz(pWDK{&4B^}%j0yq;e;+@`IF;4v%hZdn*t{Nku{GU?;Lh{oJpJME-7_Mpdr(k);6Ru3 z&wRDTooy@-6S|#ew34E+6}6#%a-A_Rj+`K_iFOv=L}ko(_^|HasV5H zMzND6dzEYF15FPQBcE-&hd=>q461wIPf*gRt)e9zueX}+q0_%Kb$`3#mg`%UyI14A z2mcG7r2*b40qrs~H|6(;^j)u0QVnfHD+KUWcg`PZ;9#;n9hj)e*6u8RIvua?a$G7c z>ir*D`%P#$CqB)Lm>z_F_M;ryW7y3U-?dMgGuZ#Qv7zpO(LFK4e481%B>Dx3ng6te z$reL+3Nf8AVOBQeZo_hns>`ebZZ)$;LuawsP$4R!q$m`UXILf`O{>_*sY~WqjmeJ$7CwuUa{a)?ENN-d>KVs5a7+rKlYZ!n)f3nmLCsV_d#qwYM=}Bo77D8n$#$K`& zkJ*hAY;wAJ42|80?ub{jynXU$;X_ECWuVdpR^VFR-gJwR!qN;Xt4-K+KtXM-F&?#a z3`)+|w3%^}KV97gCI*aaX72$+khG(noFKtKQjHs^$s|y{1_FE>0|EOMM~g<>W}s3`j6? z!QVz>-rwfwdV1{~i(`61<01BQF#&#cml5{Er%gppu*Dw|@z&LN>k#;*gG+fG0@{tM zp5HB4Xp0-gSB}oqSB&B4aem5~ORgQ&-I{h^{oh3EsSFIL{~1{%5!@b7=G-mAYbaP* z?0EK$C-Z{jxrkGDJYyET$i&C)a}XK+hyNzc)+=22qxUBO8t-tn-hptjBcbT+` zgO9&fS-~au*1zoB>ry+ht;e^TL3f9~DHI}hU|fI3PL_z}c3Az6CDIQ{Q|GJ@yB@%) z(=#kc+c`|&A)8OI4x+U;b}a({T?~%ibi&DnG@{ObKYP*bWg=9DVjtlH{P-(rcaek= z-q$2e`)w#(3Pi`rZfFrm0*i?I_(k}_u>m8VyQg9>6OV{T*{!74wZ$NJz-h z+|c9`BG$CMKGKN1cjxD4Dew&$Zu`UK$A^#lrUrwXJ;=}FDW8#}QBiKT7c~w4zPtb- zxdb$qd4N6rbi;KZl2Erc=@v+M*0(oHd;jsufcK1+V%#uFX+nh3;Z(*o*y>;=?V$Nf5_8+cTlWv3 zNwc?7g|+h?vzUryVh|6L`Eo^ifkt)aX-P_P1BDIibg!Rm*6d1chWFi%e9tlRcp(>AQFn}(o1ruzUq5t?nsL!GppAh1= z{^bMz>XI;>gR>=h!Im?x8LAtJX*sVq3Z;~tQ~#DzmZ-36^2{*FpE@dLEz)qSaP*E8 zN?B^?j}Ex1w+?ZuIQ(SkGwa2t#bs_$#V2B>uLXq4={{$NFctlEikG|)>;@P$1uDP2 zoflPrR`RLJKi@7jaJ`Gv8XBT`m~sI5OZHA3Gb|@D#S1fd-$sv`oCkyH@q3dwqT3Xi zl<8&}Wd^Td8QLdBnn6bSzw)T;k!QrIPSFG`EuftfACKe9)b7x1_V}JH&tcv88dG$# z)^eAfVf?>t`7#0)SmBW*`N308r3K$6RMP9}fNmw8&_W;Y%SYTIxWQ3$63=OPaR2rJ z*yBK}`T)8O3s~8v4s~dnEx3?+vg_!e%gwrwr}hQo5PO)@5X0K_C6*Qnr{rYWzH#z@ z9QH|5nD5c2%zJp8qhqyA&fS18g@3qlE#2d%_{aUw)Xg}Ar~4o0+Fj5BI`;bl@6Rolq_0Y8gd8UO$Q diff --git a/public/img/emoji/two.png b/public/img/emoji/two.png deleted file mode 100644 index c191f8a3221b516b2e739a23c69a65fe1a261aaf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3518 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 diff --git a/public/img/emoji/two_hearts.png b/public/img/emoji/two_hearts.png deleted file mode 100644 index b189e9aea82ee62a9b483f480267b4ff2cab7bcb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3565 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 diff --git a/public/img/emoji/two_men_holding_hands.png b/public/img/emoji/two_men_holding_hands.png deleted file mode 100644 index d1099f21ffe1046dbf70e62f101764cba29d35ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6994 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

    uvxCx;w3b1KI*imL{tT%I&mBmo(hNYjK!#YA!h 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 A&;S4c diff --git a/public/img/emoji/worried.png b/public/img/emoji/worried.png deleted file mode 100644 index bfa1856c019155ca3fd7b3959a361a1bafa03258..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5152 zcmZ`-XCPeZ_Z|c>h$s_fh!(wfLPB&&3`y)T(HXradUT7BFiN6#B6@TZbqq=LQC1nE zM~h*G(d%C}yT9H2@c(e{{dCWH-sgSJ^SqE4tfh<4(06?vyt^WA(tMc=?N_P1! zb$B)l0MM`MsNXa2CECoONFDH+yFf1~)7$p9p;IH6rIN3YBsMo|2t@a0(TPx$FeI(I z;xr#5Y9!ne6!cM7g6q`4nYzT2qrY|M3nZ4L^~9tptP)zxCloyPnpZ5-pFPQ5HJ{jP z8?5wbn>*M!5}m`PF^fu_T(AV+K%NUDb4cY2m=>Rp-FEkPp9;;+lVfY)-c4&UTX?c_ z94U7G!R@dKhohVW`mWr$TR`oyt~Pg(L^>3F@hn#hPfCuX@{_1ESKp_h(YmR)qyBc8 z22q`39#tJ?Sq;VC&s6B}56}cpjl67gN0P3>%tNTNOo>=Jn%g(Q4L`bbwGZ@wPsEi5 zf#$J|`4dZcz$@W^Cwxe&zdSpXo(v6!fW&#>4LnfTD0S;Ds)(z24-TlZ?`O2-IVV+hFYxt6Vyx~R6ml%~dC{^r@nJ<$W&pvgX%X>#m7J=i zql>79{A!jxA3E&eN%V@DM+)ZPf%J=w{%d061Y*mDN_i70`4bfBC8@a)yi>kN%4|Gz z6r*2&2RD&*v0=fgQu3?ayG`DWT_-XD{EePe z&$rWB_m%!8o}d^J&W2@cxUV{uMqdGU3>3&TY0Ga}ZnxxDNNCY@5e((|-M!2GY~1u36Vvft|@wwA(?& z$FQp<4ax-AiM_9#|0i>>KXyeL{D;h#8FsW68sr{_;UvWx_Sj?)%{Oz2*b6 zYE$+bQ}0I~`$im_orlAX2ZC7KvhQ>{T{#|Ny!LTE986s|qz?Vz8sNLk}@+hf+jncL7K52G8)&~zXh@OO4nAPo?2GJFj~N! z7Qcpz870N+V%q;dQ^Z3Vfso*Fk&ZJ$PHclUJ^kk4u7L+yZ`9VKcHD}jS@?_1nP|Dw zsM(gI*0n*2TCsjaYsI7Z(9N@f+KL>%hOm=nVRSu)l0(G2_C{k*+#{$ktkLfo0jmS}k z$|C~%NzB=4q3jt{vLaM4%`*G5po*;`!MO>ew4wL_uStN<8K`-J&Y`-V6%xwX_+N5` zb5N#rYknyO&MP19gb-+yZ@`{ob#*V&N=o7M1Yrlkk=HyU8eCbW#JsGzt!C{lW*-NY zoD_i*z=>45nXwg^2WUR+;4tRWGvnTLhL-Ma|0U7Ck)b!~JoV1w?E}Xi*3`ga4RmNl z6epC->yk^ZrGh>@54phQa-euEi|}6lx;^cwc4MTfU}i_2%%T#Es{Iy8<^T~IabP@@ ze0Mj3L{xs^r?Kl{N#o4xIxY!NxxxL50AlDIi)4+3QOp7MqS7-#S_=I&0oIek+w?d5*W`sYdkU1D{1@`*B6GZ)Dd;6eBCp) ze%|mb5%>|d*)ESWQ2AeRjh4ldx0KW2R|wI6sRzv5^CF-454td)wG+<;r)}sCI&vku z=#j~NqSQ7(9l+qou)uhF>K)PcxIicRChj^MZ32e-)Rj23icu#%V(u^X^Zl1eyvrJ; zFUJ2j_^C2y=1h%!IZ)h`)M!ZkmIy~dK7va=TPlLO!bRofbyHmum;O0b7w1NO@C(x_ zFDKYnZ(T+$?=lv~kbfvgr&J7oQHxN{8>#)J`(MZpDH2X@Moq$`MQ0IZj>`m_Y@RAA zRlcW8fc`6*r58yZ`!Skp1Jfv%=W*^}zb8>Mv!w`^?DRaD=~vz|#DQy+Y!S4Ojc+0u6#=GP5o)W^aoM4|ADG2vP{8# z7jLrgj3RzjFN1{{A#_qwF~MuHv0MyIHCp(!uoP?TWHZH&OyNW_L6y=d zTENv_CZqRg={d2HRg5ols2(thH8MdIbdszTs*z`U^Lvg$i| z+ep33;}&*J@D+zJL;|QU$vxctQ$*FhZohMSnNa&EGh`dfi$dgz)wK-(-D%z-rHUx) zTYZ#nzMRIzOwa7_6{;VqjJZ8I#)Q$7=pf6Y*=g^vd}IQ3z&EF1RXL0y;M9O6wUC%J zHKTm=;YP4?=1;7r73@)6mduste0WseU+P6=~ z95_I$?qV7Sw5yWntz5>8B@cA+lU#MTgU)}KZQrEM(g-PgOf=+kBbP3jBIkY8O98bo zP#c{!oD0kxyrE?ksx~#&%oFVX_GI$bCP{4_jqqa`0i@vS(<@BR5lY3Z%Skz7- zDvZIJhMNS|t={nC^x=?laf6WQ6I+jjq%X6N$=C>k%@b7DBa^Xs!eby37ZeLsFt)}7l zP8qytI{RsM(>SZ+!qHyOo1z9G5wxGH+8*F=$N#L9BjX)-Msb1^^A@3kMs+!bIb)Od zu%Em`$AvaoH<(sybbjaRN4%>J5F7}9rAsTXM}`}Yny69GiTv{zhnH>PNPoQ3IBuN1 za6go5kC_l2f;>GJ7^RXJbRZ(ZAm%N~a%1~T&Nf(PAiPSxvu?-PS;JdWxC7!)rjxiw0b(@;L%)-`sLgk?Z6eXL=D zWkv$H+naPxwmdLCR-e|aS)_}17Hs>5{aRxW3CcMDCk`GH=`wrNZ0RWXn5iHLZO#Ul zD?FYq4zje>s%LG3BtZ)4tqO2l5tU=a1QUpR3ksje zv*Lu=(gByPH70Oj!o^q69u}8EHbu?6I{A%OVi8K~eYiVRh|hQ|1VkQB49I+L-rox( z!@)WF1kSvTqI}=Ev>FHb%9eigecX~X2-$IsEGxdf@wgl0eN_>JwT~1DR-B#UJAt*o zCUM?*lF;y)=bnmw=GL8+{gShrp(jXD%gO^$3x*=$ndt_l&YBdS>F&0?@d6vujgjxH ziY>gDX4au;$Tle%r?JIu{ZUd-{~)`Y?-xa8$a-TZB8OHwb5z8aAwx$3%*BU#J|~@X!vbG(+n=Ua~N!jXYdLcbjY%J7P1 zQI%eVyIh00baNZGcmP8t%8l-Oo{6Ca8JU}Jmr(Y0P}8|4f3d^cxk5$um`S59x0t&I zv^U)8t>tV5-2Dr#e%l?95FvyggbuvkE6x98C$#(hibotm?m*l!TpXI3t|B2n4V&Ag zW#E_`wp576U3k;XI& ze0Y$=Nn|}uA#A~_A7vsdAj=;yk?PT?9l;lBLaQI2&~EEX-yX+%KC{|%`iP(3dw5o8 zFLGss>rB*mPR`l#GYw?YukWx8Df2d=#OTJfI4+g8+3yZBYoBeAbzP%;Smkf-npytm z<+ql^G?qhU+O@MqQyTg04o6J^cC=jKP!BhXn}ntLwZ(k7#TXf*+j3DJbA;_H};g zz$zDu%F3HmbNb>YwU#vpFZm0n-u519CahJAzQvVuG zTqPRB+cg1_a1<0BUZ#w?TMVbD*?S58Ku@Y?v;yNgk4j~pHfevJk6F25R1q6b?b_PN zzZGkS?~hrKYLtC|Fam1NjVR30zWjUIahi8wfsz0}wpKg)fc%CaTF3}~A<#PjN~aad zhR)ru>rBy)Ck1L$p%Y^hNRgmrUkY6)ql;J&h^gv9+^KnjhIq3MM~keF*z5W`v;$MNDtkv YZ<-a%ll=bna`Fez(SWFbP_+pAKfvGs1ONa4 diff --git a/public/img/emoji/wrench.png b/public/img/emoji/wrench.png deleted file mode 100644 index a87072ad132df27ee739cc5b241a8dfa64919702..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2775 zcmV;|3Mlo7P)#M#iZ?e zw>{R}Gjp%*%I9}~=ggUzgHlTPZx#k+mFfrJe*iQ#HeR)IECN>p_^I+`VPX=4bZ)>Z4d@fgW*T%aadt%q_KQCI;xxOL*xZ;YoP1_&X`O1z5zPjeh zE88KRPD4JMLztn^dznlc93f%x;?8Ry+P&wG%a>pOm01lybMyR-yB^x}hpk(?n_L0g z79fNG$0^MeX#Ji8oHGc8L(tOFQnPc{gU>HpvEs|K5`btldfkq%f9>V&&upGkS62&; zV*>yJV+f^^Gh+rwR~RB7^Ii>EA&AAAar?F%`&@TeH>&_Z#5tQb-?RVopWPa(jn;#0 zJNiC=bhQ-@vCASSB5-8D7*}A1LLpeV@c$zBbay|Gh)uHwfa|X7dh$zOyuYipZ9dqg zlCm28uZLh+9B1wVHZbIXj4Kv#3l*R>H8rsM6RSJcufP2VvjTwH+S>L_n>Rn&)pb4C zj?|Pe_EOJc)@8*2GF&yzJTL%33V^!0I=KDLJ9kE-E!UPEfW@6x@7(zRcQ(}4)`4_H z5L-ZyAc1p!SwJIWz^EZpePrmllof)G#T}8AT`L|eD*%WXUbE&?U$}bdQgF2K2u2tU zBtSS4z8nTfLdjopY?TQ&fin_Iiq-n@2cLqk0X$MHFjUekR9 zq|wZTj24`sVE{p^u1ujy;M}}sZTpfX%RX5)02a0{T)+Iqsss}|GuBOAWu`vlV zl!=Ln`a-b;oN)uBqz>qY5NnFT%C42SlnsDI?TePTv^1L=7<2;0xNFEH)JLN?#bU85 z;UfvryK!|>%e-$yA`wF+MSrFlh16GxQs?51Ysv;dYg=nueSJM8Exy^t4?x`yha;}9 z-qgN%%e}uv#JZ0VSLWY-#~r_0w{Ao8+=d2_QUF7wrhk?+dRmejHn+mZ5bI+tb?44q z#I4{@phndIB5A6G+itz>(-V^u`w(##0N7y23|gZb*lO3TS@+_GTW?)Lsk9@M@rtJi z`s*tYOfZ~NTN5iA0GwgzpYaM!T1##K>uy_z~8mnzB$f0CKtfpl#c$!lAGq^o*FPKvNsq+uLD&Yg-#7Iksbi z6w-_6D$*+-r%catDP^47xWY%ry&!Gqemav*lr08KBqxV*`MfgD7t}2AQ6ubmJNV&1B379GFcE(!ZZvB+8{4HE%dT}sT`qz>M!MEz`1iL-hKD@`NUntcePPy zs89Bi(dPS`9x63m9NU3dtN~tq^_Ab#|4`P|;A^iP`Sr15M@KW63|JJzFzDZ?wKmiZy=n4rhP(PJZuX>Dz7@X`w}{cLDxXmD2S2pu|f=obeM9y~O4;erZw!N@f| zLx3Rl4G8*AC}wzlN8LA@B=cID;N;2Uz5Dk+|D##6B}RU@Z{IJs9X_(9J?>+U@b}40QR_zL(b7k+|y<2;GddG{!0-(2Y z3rt(Vna?mli=GKw?U96)WBeW z|4FxBs>lL~p`ml{P!JOi8KsRjh1GT2!-O#>wGhhJ*7~=zuifh8&31(4_jvOsbH#?S??|767%O1cSQ zU(OW((A(i$ZGUH`G7ujfh4HaCWV1PX=Fb2O)uF0AGC~2c!T}f=8A)U^nKANzZgD8t zC3x?>cii?j7#bb~H(hpTi+(tNeu$<$+Er3)$z`*X$z*(_8ft~JZY~hlt2;P$^er+D zuIgL@ot;aey?qhPpWh0cS&+OiNg${xFrA)Cq+F@^7$9AF?6D_C8RKyFbT8Pp4NI0@ zqYN&&eMbrig)G&ilxXG+Sh5^@IAtIa456oDpjhRRh4(RC)~bk+(!LS~oJL#1|lUxsEZ_AQtRW2XGY2Lb_jkP+krxm>PP zH9;^EiIk*t9L6;Oj0|VMNHb@lTEe)KyQ(&{6~PF3X?`=3P_^Ss8cmAkVu4t6w(6#OyRTY`DO6*%m;*G dfPnvi`~$c-J!5^Rd@=w4002ovPDHLkV1gf)8TtSK diff --git a/public/img/emoji/x.png b/public/img/emoji/x.png deleted file mode 100644 index dff9efa8b43b02c432cec1624199a479576ce547..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2044 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 Eg4FL&umAu6 diff --git a/public/img/emoji/yen.png b/public/img/emoji/yen.png deleted file mode 100644 index 139bc936e0f33bd6c546c1f50de941f901af13fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4989 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 Hu0mjfSlyl? diff --git a/public/img/emoji/yum.png b/public/img/emoji/yum.png deleted file mode 100644 index fc39637ecd81ba4da58e15352442be6929d0941c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5886 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 U-*anIF8}}l07*qoM6N<$f~S{JzyJUM diff --git a/public/img/emoji/zap.png b/public/img/emoji/zap.png deleted file mode 100644 index 260c531b9e23171ca25cd30971ba06e28a3d7c74..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2233 zcmV;q2uAmbP)GFA|^+Tr zRA?(QH((6%K}%w+BE~?7B1Qy6O$3oTA_6m=na=aheVw!S@=o`Mo76=70E3+SPgd@^ z_vU=~t^eA4ubh3hs4Cqo!}~~!SI7;ESIWsKfUc;3+Ep@ygtA9LRlgV9&wd{e;E@VeK>$DGL7OOI3l?D-cUD_6rz9Tg67KYNp4aK0!bsAA9lDDm01 z(%AlSR66cwwE_ZsSt{fed)$%aF8vM3)3-wvl;D0=6AA0V{3aDKx!?LOkziJ5{qEGKY zj=TWf_g(xee+1td`&p}i;QW9cvHcDT5Pjly%EJRX}Y+8~$)x zv8yz|pE-oAy%Jip=$k*mkG_Ng+6eAvDFFd~&{oVKNXcVQ`7Cn$P0)A~{37n93Yvm% znBabP5)k0cfUVd;Fhz&?$T^r3?}Ww}m>8Y>IgG!GSV3cdGeKlx4yaux!)7oVk=26a z6U^EZ+VJ;4a)2=44LbS*5KwKqzb&1}#8ctmd^BVZk4DUD!ITornl+e{cYxL)odZ*V z1CPVpKFCERIrkNSOjJPaOH1%lkpYABwlIhHV@}$E*d9m^fHgn^KmJ3AKqIrI??#=< zL;`BpNA0qg5i@9zz7}Rh+=kx*Jp+(V0v=2s%sc`0QKZ-dUjNc~C|*yE9P@~4rqBS= z5I8!b^E(m$DUWz48lh2oK!3TM2?)-&;bqVwVQKaq z4e#{S-ip4wOhX_zFM~_)1}Q71;E)e}9tJLe))+{z2>>^THuph(5Htr)k=UcDB1_>x zQwN?9s^B%iIl-qMoIzUPr{^IBY6^g=PKoMCZTPWen*(Z_+VCr-V)_M2ibO5s*o%-y*6#4~x0_srj5T6pPPZ3SPrQtpwKGi3XI;>OFd;Dw9z|1sY0l@3u z>xrH+@SrX%*CZI=b5x{PkfI=_i5z_nvgRsCra_yiDBuuvK!{MU4pj$u@D3yd-T^5{ z3&K61Awl3!4Eom7=)|j#Sg3<<>5JPR(9`Zv^~<&j)NYK1u`)sok|UJ)st+S;u7LU& zXuSiBN9n+U2T{O>5Z}30AMQ0#NPtO0r3k1hI{xc+j6&0*Rl!%?6Q$k$Q+MoMzGX1L zi;Q3Z8yH9HPZNkrXyFX-4M-c{6%vQv|2zEn>*!*HKcM(=eW19@UA?T0(Be&Yvk|j}AW+Z* zWLCp+lq1ku5TPRjM8R$+}4qEe|3au1B{`+>kfiA@O2~Rqu zclPdbUt9K0Q1OqYP5-EaCWorde^sFX6u|)$fHGQlEcB8)KeF*2rHSO%fjtUZGj!me z!%w`0&PBLMkDqck^zPDc^A74geMczyap4tHa_gj6Mh4FXfHXZAe*X*Y7)R%0+{8in z%SyZTk<4t2G)HnfN&PyULh%Gh6_N(ps^iC=$Fiff=*1K&g^U&2jI z;}`4_d_A3Yrx6bfUK4P8ry#Z)Iv< zVD8Iunv~cekwf~Afv6W6Rs6)u=+q2;Ho}kTKNj9_9|-Un+Zl>-_Gc74($^39)%fN- zIz0-r3;3$VPx|M#ZF6V7U0?tHTLwc5eV?pgqgiP&#~ugPqBEoDToqlkxGDc+X={33 zCSR4E-z29?o{ba~S$PyV(20HMbQM1@_$j}q1E0YJSZnvv<1u|JAj;z>NAc4&{G3In zxWBkHy*RTkOV>6<_n90=Q0jsFVd&()(7Ad$3~pBMEZ&n|!+WUc-7ftojy4j36w3IS z{jk`8y1_U6^}YAFdo%sIyft>O#6V9TU8ur*6RJz_dRb|E2R?%p5E>qd0^!1sofC&3j1XKe&iPnAMK33k* zd0wB{3aH&0-3PJ}1pxIrg}M_fN2Q1tiugB=4eRrpOd7rE6kI(-b{God>HKxiN00000NkvXX Hu0mjfmVYiG diff --git a/public/img/emoji/zero.png b/public/img/emoji/zero.png deleted file mode 100644 index 6e57b3343adae7fe290485ceb885e1ccb5381c21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3590 zcmV+h4*BtkP)~=g&$)Zfw5Fy0aUxbP_&$ zK-Hk@I!sfArfN{woe@At36Fbl91hoY0q((b9oU-|Hgl`UFW>&RqRYR1`IVE4XaWsQ zaP;^ekEc@UpLGrH8P9Zg!$>8e8YYH&v$%hx7bE={bfx1+m>M)y!Dp?3lz_(tijIf1 z%@Sr8^LTG|8S~5Qh^5j!v}EY z$|7DqGmRxphaNMaYQ{Kj;zgg+?_U1J3v=5MfThx@=X(Z6#ySW4i2T8Q{dnq2<4DI% zT)maY!kUGGI+kwCVddt`AHDnY=YHB$fXT@})#H0RP7mI5 z?__6xA2OLNo_S&dMTg`3wUt0^#vt$Fn$BggD<2r^LBdq=k1w4=KEICK;u3CMy>g~B zxABEDXP$Q(rU37j#}b*Y$wWsQOgHeG?aPV z-YKHOslu&L%pU{rW|QenwQ1^oiTK!bc}Q*kdEo} zxjWUqXnSCcIQgLv$HoGL#Z{%>uE$|$Dm}o?$pdq17Cu_CFw~jEiKD}~Z?FTs9dRnB z!FDZUX4%4pnN_?yn?u%AF}|k*nnLN`e|`HJjt*yFs7iY! zSTN$Um0N@WG7Q1}XutGPJzmP&FmxT?`ReBoH#D@0M;{ml=K`;tpTohSjT&+X*9z0t#zEex=6=aRbdz#$l%z0gU~glUWA86 z@toh+cW|9@x)n%9Tx#5+PlFtg0uX{$UrImPP{0Gocpe!aLL*$6U&DXAa}8X|@N98= zbrZRQjmI7uqsp)q`}@;=bYOMeLMEZNvj44@INF66MfQKBBBuEYx9y_w~P0vs5~&^@jzC}p+{7H}a} zWP*tFfY2q2j*GM>0EX5SuO6I6`#aDGH+)0$xS*}y2)EZPY!n@IBus2YXF7(?l!*|vv5hxyp}evVaNq_Kf)-L;;M7&SFgs*u}A#j+Q00IHlQ1$guhAS3jH30cWEdYF!c zL4(kmiqZAILsy_T*rra|gH?bRR$~yfql;&LEc@j~W$ISD{r&1~gds=8^~fLo-Mr z>48`i0fZ2dyG+XJ4z0Sg0Qm_KcU%tF6GW8J59;_t_5oZXkWmnMdR=80zFFDz;J98m zz|bo~kQfT79buSZdkxlf1JL~vvZ;8S3nIyd2wqc4P`?r`Mxd>%IX`g<`0$7_7!uzS z5tUAo+OEgL+*25%2P)WZv-@bJ6op*9@n3s9PQ)63$mR+*r6Q5qlK1Rml?*l1xYUG* zE`zmlA+g=LR3Mfo0hhL6!yKlS%2_2CDx)b43-7KC_%}*rSWaUBC6U{jVr(16EGcT! zrDy>F2q63**778Vk#W*0)}8Pag^`21vXVZs$qwO^R*g`yz5nA8a+`}ILT-@)1f*px zLQz@(L*Nr0N8;l|sFE0}N+gxW_mV)#n1M!EFBHR_ux->CVdPn$b{eEm`~YkDC|oEx z*ep8K5N!bwi<=tO@-{R@MVs2@@(qh-WKj%St9PZ6DtPZ!=HiLTKq5!hSD?s!>L{N2Q?Rh}hh0WZ~ z;r`M7x@+U3eR%oZE9k4VwNiXcoK>rYOge$Vu2db3T%m;JTmdQxAX*ZDxIk37{mPjj zD5RiT-S$9q>iQxc`~0E0YsZi5!{7hx4J@o%81763WihD0cz_l3zV&zijQb7^_^X{n zvCMJd(malj@53Mb_HUpO&U`pe2B|}7$pjgQOO;dfM5x{|!=|F0p-368pTCB0e0idN z#&`TMPFfD0ec@HSe|dopT2KAfA$;#UPe83dM3HBlzjBkxW6Qq88a8&(^MG&{h#()@ zfvz&VacLS~oEXDUPra!<@zqH`9z-Euf>9}taRbfp?{7|_Xgi1*I^||7kP;u`6x|33 zUQ?@W6AVp_O5u-Ay^Fv2`WI=H>%ox9BoKxFK6e#wP0hg6wf3qKh)c)|A}R$)AQ7=; zT2tQ8G+erN3nyPXjX!zf3q+z7oW6V=KYsZPnIchdTL22;7C93P%7hG0giv<+H)@HP zrsDL)8(7~c;%g@+aNkHDq5*RIQ>Wj@f4==bU7(hl3$z7RI|&ju)OCWNI;aKyU}g#5 z|IsVBfByg`5AOAa=tXBH8J0Y&Dgst$7 zVdx6D;5hr?tWR(bnPd#&LIO0Uy9DB970Cw>`&vhQ>t_Kkd29Hc)S0iYF1i0(M=Z3OlPc;?5 zDHPstZ0j#Q*QNQp!c;)n3nP*_>`L9uJ_Su>HOFGDb$A^6!{kQ9>gzHF6H++0J2 zTZJRGpl*5B7Uz~adWMdgvGhJwH=yb|86nkciQNGP2r@qo+bW`vTf_3r>DNE_<DenBDqJd@P~{iV2@=D# zmD@K=Go5-yO7;(e^SwNiMJyhJqU%r;wVDp>E~E}xb>X_OOE!u=`P}W^c?-|;2;K*NR`$vu^J33(`5}^Mj*3`SJLWscZxW`ecVC7;F)Db;n)Qf@+%keOS31ZFTDOT0=NL?0C?LJfM5a`A`t>8qvH=x#F9P7j9BuJ zZkYW{RW*eqRB>m(gOe`jo?CVn%eM7_ZLPd>W9paZ0EjK*7XUczd~s3(&<`Mq-3bf8 zA^>lvU!6?>=mHSK?too2yaFQ7j+Mu&VOD*D-9>$mSKa0%if!V50f^>SpMlth?f?J) M07*qoM6N<$f)kpmN&o-= diff --git a/public/img/emoji/zzz.png b/public/img/emoji/zzz.png deleted file mode 100644 index 30be04655af5ff06c524ef43ace5b4ab10bad850..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2027 zcmVuz2xtt( z7$7N88hs$K5sO0NlR^ZwDqb5yF`y(60~N3qD7_zZJDoXSd)at)ay+@y5?^}noz6d5 zS=pIA5C8w(d+oK>>=9MvWQO4+#ZZ8u07C(W0t^Kh3NRF4C_umpg-qRfK4JI_K?6)3 zL;&MGfGNj#!xUbuA5(trfFuFsCVlzSKUnbs5Rec?P;WsHRmfIM41gzI3W1oa2zd_1 zLbnsIiXA|zjwpnnRv1zdp|TVFxZ;tj2*yC3fs(Hd0YWk4F=R0S)h%8jT5fwWg*Sc& zs4GQq&W|-%9Rj%Al6C;Vgk=oCd#S8^F~`<&!a7K3i}@6!k-}#w;JT|q0DbN5=Va<@ zr_;-0j5?N}RSry|r1V(3ehjhCVeB|+KmZhS2WbpRcSc{n{wJ$K007Rs7D3LsOrT|<5BW&$7d1aLXz2_%Q1H~%T!fBOpq zSq{rPzVsd%t%s?d0yYG|pZkJ*ckX_D^^S*Ec{$u4B9{f6G5yDad<{eZ=g)l?;)Ory zD|dZyS^5F8{v%sZ^B}g~K|%#nt;ex`Y|1fGm`m%3Jg@tId=1CLyDs=W_0dzY{es@Y z0{i}U>GCy19H$bt&Zag7CIT(X&}svNvSHzkya(~zsT>Eg@uqueuAe4|z*tZ~v*O&x zZRpMWOmDda5Hh4BiYco%pe$7-EC`78bJa7n3&#$6H*6zXcWXgD1OUw;k0Duvq`gh| z-}A!qw#1xVQMnM#&^_q|G-NcV9)q+i(F$3ND6x5%Tz3eKWn& zC-+brDa4}?ti11MXO5D;WkobaRiEtuPjei|0e$_E2dM%! zjy^%yT0_t%V+jsi0_ow`^_6?JteUQ{$Yl{5PJ0#!15|(nvcnJ``hy;L~i3_QZe*xR{0aMEU z9tsi&wUJ-RS+}nNwf#HB!P3TPmep|Xm-^~AuRWmx$oi{(NPY5rOaoAGT}b92ZeOJO z_k=1ybR80c1b_it;ne|v4eFT2CTs*yHbudEsrC?kiArMf$>2`DIl&SWGrCI6$bAsJE1CqYGKx%xTdJAz5M+&$A5%9 z1tciQXKhFh-glJzPdO%3(8S*mWf!=*s@{7$M#fnRqY5r9>_iA46BoCL#%Bmd!PI@h z^5390qi;O+WsVCOA)WVGVjYkrTe~zViB`O=ilYKq3@%%LOaVm1&^UJrLxO~kzQ~2V zUZ)$+`m3)$OzSCv(WWPlKlih|*?IeX-F0Wk+~>((j}cqVDKO{y0hhXVoe(br!;evAo0%JW6q4(S6K-}*VCiR&;;Pyvl0Z9}~9Nj>!27gzSr z<8d}i6g)-N>0$x}0}?1EI*5c@FyWct06^JK70B3!E~K$;2SF1|0Gj*ze&HTH^yH%} z{(XRUpWO#s(*G|1=)Z9mG==oYb2|6u`zz$-+z}==>@Fhy|5j|hoqF(zudM0^5;A_t zUTUKo&=|5KFqbYBX?)Edf>wm70~Qp}Tp`#ar(JmsdECSUEEQNWs2JY*=T6ms#4Abw zS^I(Q1Y;Kzk-P_K`zqDF?aG|y^b{k__hNjlj}|6Y2%-nDA!rWJ|NeF{WQ#Dq@iE|E zD@FhrJ^$m>#%{(0;1Wm{@6(07k5dJhEcdCZC+Yw|1tcg8sR|%cdKZ98Az4gT%n^{* zyC{HTvn0IAOM#?s&h}@dGb7z41--o z9pD=gCfqFRE`A1=MSy_#n2?4DztQ=a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b="length"in a&&a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ca,da).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1; - -return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthh;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML="
    a",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function aa(){return!0}function ba(){return!1}function ca(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h]","i"),ha=/^\s+/,ia=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,ja=/<([\w:]+)/,ka=/\s*$/g,ra={option:[1,""],legend:[1,"

    ","
    "],area:[1,"",""],param:[1,"",""],thead:[1,"","
    "],tr:[2,"","
    "],col:[2,"","
    "],td:[3,"","
    "],_default:k.htmlSerialize?[0,"",""]:[1,"X
    ","
    "]},sa=da(y),ta=sa.appendChild(y.createElement("div"));ra.optgroup=ra.option,ra.tbody=ra.tfoot=ra.colgroup=ra.caption=ra.thead,ra.th=ra.td;function ua(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ua(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function va(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wa(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xa(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function ya(a){var b=pa.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function za(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Aa(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Ba(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xa(b).text=a.text,ya(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!ga.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ta.innerHTML=a.outerHTML,ta.removeChild(f=ta.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ua(f),h=ua(a),g=0;null!=(e=h[g]);++g)d[g]&&Ba(e,d[g]);if(b)if(c)for(h=h||ua(a),d=d||ua(f),g=0;null!=(e=h[g]);g++)Aa(e,d[g]);else Aa(a,f);return d=ua(f,"script"),d.length>0&&za(d,!i&&ua(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=da(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(la.test(f)){h=h||o.appendChild(b.createElement("div")),i=(ja.exec(f)||["",""])[1].toLowerCase(),l=ra[i]||ra._default,h.innerHTML=l[1]+f.replace(ia,"<$1>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&ha.test(f)&&p.push(b.createTextNode(ha.exec(f)[0])),!k.tbody){f="table"!==i||ka.test(f)?""!==l[1]||ka.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ua(p,"input"),va),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ua(o.appendChild(f),"script"),g&&za(h),c)){e=0;while(f=h[e++])oa.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wa(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wa(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ua(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&za(ua(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ua(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fa,""):void 0;if(!("string"!=typeof a||ma.test(a)||!k.htmlSerialize&&ga.test(a)||!k.leadingWhitespace&&ha.test(a)||ra[(ja.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ia,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ua(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ua(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&na.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ua(i,"script"),xa),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ua(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,ya),j=0;f>j;j++)d=g[j],oa.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qa,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Ca,Da={};function Ea(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fa(a){var b=y,c=Da[a];return c||(c=Ea(a,b),"none"!==c&&c||(Ca=(Ca||m("'},placeholder:function(e,t){var n="";return t&&(n+=''),e&&(n+=''),n}},api:!1,onPause:function(){},onPlay:function(){},onStop:function(){}}}(jQuery,window,document),function(e,t,n,i){"use strict";t="undefined"!=typeof t&&t.Math==Math?t:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),e.fn.modal=function(o){var a,r=e(this),s=e(t),l=e(n),c=e("body"),u=r.selector||"",d=(new Date).getTime(),f=[],m=arguments[0],g="string"==typeof m,p=[].slice.call(arguments,1),h=t.requestAnimationFrame||t.mozRequestAnimationFrame||t.webkitRequestAnimationFrame||t.msRequestAnimationFrame||function(e){setTimeout(e,0)};return r.each(function(){var r,v,b,y,x,C,w,k,S,T=e.isPlainObject(o)?e.extend(!0,{},e.fn.modal.settings,o):e.extend({},e.fn.modal.settings),A=T.selector,R=T.className,P=T.namespace,E=T.error,F="."+P,O="module-"+P,D=e(this),q=e(T.context),j=D.find(A.close),z=this,M=D.data(O);S={initialize:function(){S.verbose("Initializing dimmer",q),S.create.id(),S.create.dimmer(),S.refreshModals(),S.bind.events(),T.observeChanges&&S.observeChanges(),S.instantiate()},instantiate:function(){S.verbose("Storing instance of modal"),M=S,D.data(O,M)},create:{dimmer:function(){var t={debug:T.debug,dimmerName:"modals",duration:{show:T.duration,hide:T.duration}},n=e.extend(!0,t,T.dimmerSettings);return T.inverted&&(n.variation=n.variation!==i?n.variation+" inverted":"inverted"),e.fn.dimmer===i?void S.error(E.dimmer):(S.debug("Creating dimmer with settings",n),y=q.dimmer(n),T.detachable?(S.verbose("Modal is detachable, moving content into dimmer"),y.dimmer("add content",D)):S.set.undetached(),T.blurring&&y.addClass(R.blurring),void(x=y.dimmer("get dimmer")))},id:function(){w=(Math.random().toString(16)+"000000000").substr(2,8),C="."+w,S.verbose("Creating unique id for element",w)}},destroy:function(){S.verbose("Destroying previous modal"),D.removeData(O).off(F),s.off(C),x.off(C),j.off(F),q.dimmer("destroy")},observeChanges:function(){"MutationObserver"in t&&(k=new MutationObserver(function(e){S.debug("DOM tree modified, refreshing"),S.refresh()}),k.observe(z,{childList:!0,subtree:!0}),S.debug("Setting up mutation observer",k))},refresh:function(){S.remove.scrolling(),S.cacheSizes(),S.set.screenHeight(),S.set.type(),S.set.position()},refreshModals:function(){v=D.siblings(A.modal),r=v.add(D)},attachEvents:function(t,n){var i=e(t);n=e.isFunction(S[n])?S[n]:S.toggle,i.length>0?(S.debug("Attaching modal events to element",t,n),i.off(F).on("click"+F,n)):S.error(E.notFound,t)},bind:{events:function(){S.verbose("Attaching events"),D.on("click"+F,A.close,S.event.close).on("click"+F,A.approve,S.event.approve).on("click"+F,A.deny,S.event.deny),s.on("resize"+C,S.event.resize)}},get:{id:function(){return(Math.random().toString(16)+"000000000").substr(2,8)}},event:{approve:function(){return T.onApprove.call(z,e(this))===!1?void S.verbose("Approve callback returned false cancelling hide"):void S.hide()},deny:function(){return T.onDeny.call(z,e(this))===!1?void S.verbose("Deny callback returned false cancelling hide"):void S.hide()},close:function(){S.hide()},click:function(t){var i=e(t.target),o=i.closest(A.modal).length>0,a=e.contains(n.documentElement,t.target);!o&&a&&(S.debug("Dimmer clicked, hiding all modals"),S.is.active()&&(S.remove.clickaway(),T.allowMultiple?S.hide():S.hideAll()))},debounce:function(e,t){clearTimeout(S.timer),S.timer=setTimeout(e,t)},keyboard:function(e){var t=e.which,n=27;t==n&&(T.closable?(S.debug("Escape key pressed hiding modal"),S.hide()):S.debug("Escape key pressed, but closable is set to false"),e.preventDefault())},resize:function(){y.dimmer("is active")&&h(S.refresh)}},toggle:function(){S.is.active()||S.is.animating()?S.hide():S.show()},show:function(t){t=e.isFunction(t)?t:function(){},S.refreshModals(),S.showModal(t)},hide:function(t){t=e.isFunction(t)?t:function(){},S.refreshModals(),S.hideModal(t)},showModal:function(t){t=e.isFunction(t)?t:function(){},S.is.animating()||!S.is.active()?(S.showDimmer(),S.cacheSizes(),S.set.position(),S.set.screenHeight(),S.set.type(),S.set.clickaway(),!T.allowMultiple&&S.others.active()?S.hideOthers(S.showModal):(T.onShow.call(z),T.transition&&e.fn.transition!==i&&D.transition("is supported")?(S.debug("Showing modal with css animations"),D.transition({debug:T.debug,animation:T.transition+" in",queue:T.queue,duration:T.duration,useFailSafe:!0,onComplete:function(){T.onVisible.apply(z),S.add.keyboardShortcuts(),S.save.focus(),S.set.active(),T.autofocus&&S.set.autofocus(),t()}})):S.error(E.noTransition))):S.debug("Modal is already visible")},hideModal:function(t,n){return t=e.isFunction(t)?t:function(){},S.debug("Hiding modal"),T.onHide.call(z,e(this))===!1?void S.verbose("Hide callback returned false cancelling hide"):void((S.is.animating()||S.is.active())&&(T.transition&&e.fn.transition!==i&&D.transition("is supported")?(S.remove.active(),D.transition({debug:T.debug,animation:T.transition+" out",queue:T.queue,duration:T.duration,useFailSafe:!0,onStart:function(){S.others.active()||n||S.hideDimmer(),S.remove.keyboardShortcuts()},onComplete:function(){T.onHidden.call(z),S.restore.focus(),t()}})):S.error(E.noTransition)))},showDimmer:function(){y.dimmer("is animating")||!y.dimmer("is active")?(S.debug("Showing dimmer"),y.dimmer("show")):S.debug("Dimmer already visible")},hideDimmer:function(){return y.dimmer("is animating")||y.dimmer("is active")?void y.dimmer("hide",function(){S.remove.clickaway(),S.remove.screenHeight()}):void S.debug("Dimmer is not visible cannot hide")},hideAll:function(t){var n=r.filter("."+R.active+", ."+R.animating);t=e.isFunction(t)?t:function(){},n.length>0&&(S.debug("Hiding all visible modals"),S.hideDimmer(),n.modal("hide modal",t))},hideOthers:function(t){var n=v.filter("."+R.active+", ."+R.animating);t=e.isFunction(t)?t:function(){},n.length>0&&(S.debug("Hiding other modals",v),n.modal("hide modal",t,!0))},others:{active:function(){return v.filter("."+R.active).length>0},animating:function(){return v.filter("."+R.animating).length>0}},add:{keyboardShortcuts:function(){S.verbose("Adding keyboard shortcuts"),l.on("keyup"+F,S.event.keyboard)}},save:{focus:function(){b=e(n.activeElement).blur()}},restore:{focus:function(){b&&b.length>0&&b.focus()}},remove:{active:function(){D.removeClass(R.active)},clickaway:function(){T.closable&&x.off("click"+C)},bodyStyle:function(){""===c.attr("style")&&(S.verbose("Removing style attribute"),c.removeAttr("style"))},screenHeight:function(){S.debug("Removing page height"),c.css("height","")},keyboardShortcuts:function(){S.verbose("Removing keyboard shortcuts"),l.off("keyup"+F)},scrolling:function(){y.removeClass(R.scrolling),D.removeClass(R.scrolling)}},cacheSizes:function(){var o=D.outerHeight();(S.cache===i||0!==o)&&(S.cache={pageHeight:e(n).outerHeight(),height:o+T.offset,contextHeight:"body"==T.context?e(t).height():y.height()}),S.debug("Caching modal and container sizes",S.cache)},can:{fit:function(){return S.cache.height+2*T.padding0?t.first():e.first();n.length>0&&n.focus()},clickaway:function(){T.closable&&x.on("click"+C,S.event.click)},screenHeight:function(){S.can.fit()?c.css("height",""):(S.debug("Modal is taller than page content, resizing page height"),c.css("height",S.cache.height+2*T.padding))},active:function(){D.addClass(R.active)},scrolling:function(){y.addClass(R.scrolling),D.addClass(R.scrolling)},type:function(){S.can.fit()?(S.verbose("Modal fits on screen"),S.others.active()||S.others.animating()||S.remove.scrolling()):(S.verbose("Modal cannot fit on screen setting to scrolling"),S.set.scrolling())},position:function(){S.verbose("Centering modal on page",S.cache),S.can.fit()?D.css({top:"",marginTop:-(S.cache.height/2)}):D.css({marginTop:"",top:l.scrollTop()})},undetached:function(){y.addClass(R.undetached)}},setting:function(t,n){if(S.debug("Changing setting",t,n),e.isPlainObject(t))e.extend(!0,T,t);else{if(n===i)return T[t];e.isPlainObject(T[t])?e.extend(!0,T[t],n):T[t]=n}},internal:function(t,n){if(e.isPlainObject(t))e.extend(!0,S,t);else{if(n===i)return S[t];S[t]=n}},debug:function(){!T.silent&&T.debug&&(T.performance?S.performance.log(arguments):(S.debug=Function.prototype.bind.call(console.info,console,T.name+":"),S.debug.apply(console,arguments)))},verbose:function(){!T.silent&&T.verbose&&T.debug&&(T.performance?S.performance.log(arguments):(S.verbose=Function.prototype.bind.call(console.info,console,T.name+":"),S.verbose.apply(console,arguments)))},error:function(){T.silent||(S.error=Function.prototype.bind.call(console.error,console,T.name+":"),S.error.apply(console,arguments))},performance:{log:function(e){var t,n,i;T.performance&&(t=(new Date).getTime(),i=d||t,n=t-i,d=t,f.push({Name:e[0],Arguments:[].slice.call(e,1)||"",Element:z,"Execution Time":n})),clearTimeout(S.performance.timer),S.performance.timer=setTimeout(S.performance.display,500)},display:function(){var t=T.name+":",n=0;d=!1,clearTimeout(S.performance.timer),e.each(f,function(e,t){n+=t["Execution Time"]}),t+=" "+n+"ms",u&&(t+=" '"+u+"'"),(console.group!==i||console.table!==i)&&f.length>0&&(console.groupCollapsed(t),console.table?console.table(f):e.each(f,function(e,t){console.log(t.Name+": "+t["Execution Time"]+"ms")}),console.groupEnd()),f=[]}},invoke:function(t,n,o){var r,s,l,c=M;return n=n||p,o=z||o,"string"==typeof t&&c!==i&&(t=t.split(/[\. ]/),r=t.length-1,e.each(t,function(n,o){var a=n!=r?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(c[a])&&n!=r)c=c[a];else{if(c[a]!==i)return s=c[a],!1;if(!e.isPlainObject(c[o])||n==r)return c[o]!==i?(s=c[o],!1):!1;c=c[o]}})),e.isFunction(s)?l=s.apply(o,n):s!==i&&(l=s),e.isArray(a)?a.push(l):a!==i?a=[a,l]:l!==i&&(a=l),s}},g?(M===i&&S.initialize(),S.invoke(m)):(M!==i&&M.invoke("destroy"),S.initialize())}),a!==i?a:this},e.fn.modal.settings={name:"Modal",namespace:"modal",silent:!1,debug:!1,verbose:!1,performance:!0,observeChanges:!1,allowMultiple:!1,detachable:!0,closable:!0,autofocus:!0,inverted:!1,blurring:!1,dimmerSettings:{closable:!1,useCSS:!0},context:"body",queue:!1,duration:500,offset:0,transition:"scale",padding:50,onShow:function(){},onVisible:function(){},onHide:function(){return!0},onHidden:function(){},onApprove:function(){return!0},onDeny:function(){return!0},selector:{close:"> .close",approve:".actions .positive, .actions .approve, .actions .ok",deny:".actions .negative, .actions .deny, .actions .cancel",modal:".ui.modal"},error:{dimmer:"UI Dimmer, a required component is not included in this page",method:"The method you called is not defined.",notFound:"The element you specified could not be found"},className:{active:"active",animating:"animating",blurring:"blurring",scrolling:"scrolling",undetached:"undetached"}}}(jQuery,window,document),function(e,t,n,i){"use strict";t="undefined"!=typeof t&&t.Math==Math?t:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),e.fn.nag=function(n){var o,a=e(this),r=a.selector||"",s=(new Date).getTime(),l=[],c=arguments[0],u="string"==typeof c,d=[].slice.call(arguments,1);return a.each(function(){var a,f=e.isPlainObject(n)?e.extend(!0,{},e.fn.nag.settings,n):e.extend({},e.fn.nag.settings),m=(f.className,f.selector),g=f.error,p=f.namespace,h="."+p,v=p+"-module",b=e(this),y=(b.find(m.close),e(f.context?f.context:"body")),x=this,C=b.data(v);t.requestAnimationFrame||t.mozRequestAnimationFrame||t.webkitRequestAnimationFrame||t.msRequestAnimationFrame||function(e){setTimeout(e,0)};a={initialize:function(){a.verbose("Initializing element"),b.on("click"+h,m.close,a.dismiss).data(v,a),f.detachable&&b.parent()[0]!==y[0]&&b.detach().prependTo(y),f.displayTime>0&&setTimeout(a.hide,f.displayTime),a.show()},destroy:function(){a.verbose("Destroying instance"),b.removeData(v).off(h)},show:function(){a.should.show()&&!b.is(":visible")&&(a.debug("Showing nag",f.animation.show),"fade"==f.animation.show?b.fadeIn(f.duration,f.easing):b.slideDown(f.duration,f.easing))},hide:function(){a.debug("Showing nag",f.animation.hide),"fade"==f.animation.show?b.fadeIn(f.duration,f.easing):b.slideUp(f.duration,f.easing)},onHide:function(){a.debug("Removing nag",f.animation.hide),b.remove(),f.onHide&&f.onHide()},dismiss:function(e){f.storageMethod&&a.storage.set(f.key,f.value),a.hide(),e.stopImmediatePropagation(),e.preventDefault()},should:{show:function(){return f.persist?(a.debug("Persistent nag is set, can show nag"),!0):a.storage.get(f.key)!=f.value.toString()?(a.debug("Stored value is not set, can show nag",a.storage.get(f.key)),!0):(a.debug("Stored value is set, cannot show nag",a.storage.get(f.key)),!1)}},get:{storageOptions:function(){var e={};return f.expires&&(e.expires=f.expires),f.domain&&(e.domain=f.domain),f.path&&(e.path=f.path),e}},clear:function(){a.storage.remove(f.key)},storage:{set:function(n,o){var r=a.get.storageOptions();if("localstorage"==f.storageMethod&&t.localStorage!==i)t.localStorage.setItem(n,o),a.debug("Value stored using local storage",n,o);else if("sessionstorage"==f.storageMethod&&t.sessionStorage!==i)t.sessionStorage.setItem(n,o),a.debug("Value stored using session storage",n,o);else{if(e.cookie===i)return void a.error(g.noCookieStorage);e.cookie(n,o,r),a.debug("Value stored using cookie",n,o,r)}},get:function(n,o){var r;return"localstorage"==f.storageMethod&&t.localStorage!==i?r=t.localStorage.getItem(n):"sessionstorage"==f.storageMethod&&t.sessionStorage!==i?r=t.sessionStorage.getItem(n):e.cookie!==i?r=e.cookie(n):a.error(g.noCookieStorage),("undefined"==r||"null"==r||r===i||null===r)&&(r=i),r},remove:function(n){var o=a.get.storageOptions();"localstorage"==f.storageMethod&&t.localStorage!==i?t.localStorage.removeItem(n):"sessionstorage"==f.storageMethod&&t.sessionStorage!==i?t.sessionStorage.removeItem(n):e.cookie!==i?e.removeCookie(n,o):a.error(g.noStorage)}},setting:function(t,n){if(a.debug("Changing setting",t,n),e.isPlainObject(t))e.extend(!0,f,t);else{if(n===i)return f[t];e.isPlainObject(f[t])?e.extend(!0,f[t],n):f[t]=n}},internal:function(t,n){if(e.isPlainObject(t))e.extend(!0,a,t);else{if(n===i)return a[t];a[t]=n}},debug:function(){!f.silent&&f.debug&&(f.performance?a.performance.log(arguments):(a.debug=Function.prototype.bind.call(console.info,console,f.name+":"),a.debug.apply(console,arguments)))},verbose:function(){!f.silent&&f.verbose&&f.debug&&(f.performance?a.performance.log(arguments):(a.verbose=Function.prototype.bind.call(console.info,console,f.name+":"),a.verbose.apply(console,arguments)))},error:function(){f.silent||(a.error=Function.prototype.bind.call(console.error,console,f.name+":"),a.error.apply(console,arguments))},performance:{log:function(e){var t,n,i;f.performance&&(t=(new Date).getTime(),i=s||t,n=t-i,s=t,l.push({Name:e[0],Arguments:[].slice.call(e,1)||"",Element:x,"Execution Time":n})),clearTimeout(a.performance.timer),a.performance.timer=setTimeout(a.performance.display,500)},display:function(){var t=f.name+":",n=0;s=!1,clearTimeout(a.performance.timer),e.each(l,function(e,t){n+=t["Execution Time"]}),t+=" "+n+"ms",r&&(t+=" '"+r+"'"),(console.group!==i||console.table!==i)&&l.length>0&&(console.groupCollapsed(t),console.table?console.table(l):e.each(l,function(e,t){console.log(t.Name+": "+t["Execution Time"]+"ms")}),console.groupEnd()),l=[]}},invoke:function(t,n,r){var s,l,c,u=C;return n=n||d,r=x||r,"string"==typeof t&&u!==i&&(t=t.split(/[\. ]/),s=t.length-1,e.each(t,function(n,o){var r=n!=s?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(u[r])&&n!=s)u=u[r];else{if(u[r]!==i)return l=u[r],!1;if(!e.isPlainObject(u[o])||n==s)return u[o]!==i?(l=u[o],!1):(a.error(g.method,t),!1);u=u[o]}})),e.isFunction(l)?c=l.apply(r,n):l!==i&&(c=l),e.isArray(o)?o.push(c):o!==i?o=[o,c]:c!==i&&(o=c),l}},u?(C===i&&a.initialize(),a.invoke(c)):(C!==i&&C.invoke("destroy"),a.initialize())}),o!==i?o:this},e.fn.nag.settings={name:"Nag",silent:!1,debug:!1,verbose:!1,performance:!0,namespace:"Nag",persist:!1,displayTime:0,animation:{show:"slide",hide:"slide"},context:!1,detachable:!1,expires:30,domain:!1,path:"/",storageMethod:"cookie",key:"nag",value:"dismiss",error:{noCookieStorage:"$.cookie is not included. A storage solution is required.",noStorage:"Neither $.cookie or store is defined. A storage solution is required for storing state",method:"The method you called is not defined."},className:{bottom:"bottom",fixed:"fixed"},selector:{close:".close.icon"},speed:500,easing:"easeOutQuad",onHide:function(){}},e.extend(e.easing,{easeOutQuad:function(e,t,n,i,o){return-i*(t/=o)*(t-2)+n}})}(jQuery,window,document),function(e,t,n,i){"use strict";t="undefined"!=typeof t&&t.Math==Math?t:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),e.fn.popup=function(o){var a,r=e(this),s=e(n),l=e(t),c=e("body"),u=r.selector||"",d=!0,f=(new Date).getTime(),m=[],g=arguments[0],p="string"==typeof g,h=[].slice.call(arguments,1);return r.each(function(){var r,v,b,y,x,C,w=e.isPlainObject(o)?e.extend(!0,{},e.fn.popup.settings,o):e.extend({},e.fn.popup.settings),k=w.selector,S=w.className,T=w.error,A=w.metadata,R=w.namespace,P="."+w.namespace,E="module-"+R,F=e(this),O=e(w.context),D=e(w.scrollContext),q=e(w.boundary),j=w.target?e(w.target):F,z=0,M=!1,I=!1,L=this,N=F.data(E);C={initialize:function(){C.debug("Initializing",F),C.createID(),C.bind.events(),!C.exists()&&w.preserve&&C.create(),C.observeChanges(),C.instantiate()},instantiate:function(){C.verbose("Storing instance",C),N=C,F.data(E,N)},observeChanges:function(){"MutationObserver"in t&&(b=new MutationObserver(C.event.documentChanged),b.observe(n,{childList:!0,subtree:!0}),C.debug("Setting up mutation observer",b))},refresh:function(){w.popup?r=e(w.popup).eq(0):w.inline&&(r=j.nextAll(k.popup).eq(0),w.popup=r),w.popup?(r.addClass(S.loading),v=C.get.offsetParent(),r.removeClass(S.loading),w.movePopup&&C.has.popup()&&C.get.offsetParent(r)[0]!==v[0]&&(C.debug("Moving popup to the same offset parent as activating element"),r.detach().appendTo(v))):v=w.inline?C.get.offsetParent(j):C.has.popup()?C.get.offsetParent(r):c,v.is("html")&&v[0]!==c[0]&&(C.debug("Setting page as offset parent"),v=c),C.get.variation()&&C.set.variation()},reposition:function(){C.refresh(),C.set.position()},destroy:function(){C.debug("Destroying previous module"),b&&b.disconnect(),r&&!w.preserve&&C.removePopup(),clearTimeout(C.hideTimer),clearTimeout(C.showTimer),C.unbind.close(),C.unbind.events(),F.removeData(E)},event:{start:function(t){var n=e.isPlainObject(w.delay)?w.delay.show:w.delay;clearTimeout(C.hideTimer),I||(C.showTimer=setTimeout(C.show,n))},end:function(){var t=e.isPlainObject(w.delay)?w.delay.hide:w.delay;clearTimeout(C.showTimer),C.hideTimer=setTimeout(C.hide,t)},touchstart:function(e){I=!0,C.show()},resize:function(){C.is.visible()&&C.set.position()},documentChanged:function(t){[].forEach.call(t,function(t){t.removedNodes&&[].forEach.call(t.removedNodes,function(t){(t==L||e(t).find(L).length>0)&&(C.debug("Element removed from DOM, tearing down events"),C.destroy())})})},hideGracefully:function(t){var i=e(t.target),o=e.contains(n.documentElement,t.target),a=i.closest(k.popup).length>0;t&&!a&&o?(C.debug("Click occurred outside popup hiding popup"),C.hide()):C.debug("Click was inside popup, keeping popup open")}},create:function(){var t=C.get.html(),n=C.get.title(),i=C.get.content();t||i||n?(C.debug("Creating pop-up html"),t||(t=w.templates.popup({title:n,content:i})),r=e("
    ").addClass(S.popup).data(A.activator,F).html(t),w.inline?(C.verbose("Inserting popup element inline",r),r.insertAfter(F)):(C.verbose("Appending popup element to body",r),r.appendTo(O)),C.refresh(),C.set.variation(),w.hoverable&&C.bind.popup(),w.onCreate.call(r,L)):0!==j.next(k.popup).length?(C.verbose("Pre-existing popup found"),w.inline=!0,w.popup=j.next(k.popup).data(A.activator,F),C.refresh(),w.hoverable&&C.bind.popup()):w.popup?(e(w.popup).data(A.activator,F),C.verbose("Used popup specified in settings"),C.refresh(),w.hoverable&&C.bind.popup()):C.debug("No content specified skipping display",L)},createID:function(){x=(Math.random().toString(16)+"000000000").substr(2,8),y="."+x,C.verbose("Creating unique id for element",x)},toggle:function(){C.debug("Toggling pop-up"),C.is.hidden()?(C.debug("Popup is hidden, showing pop-up"),C.unbind.close(),C.show()):(C.debug("Popup is visible, hiding pop-up"),C.hide())},show:function(e){if(e=e||function(){},C.debug("Showing pop-up",w.transition),C.is.hidden()&&(!C.is.active()||!C.is.dropdown())){if(C.exists()||C.create(),w.onShow.call(r,L)===!1)return void C.debug("onShow callback returned false, cancelling popup animation"); -w.preserve||w.popup||C.refresh(),r&&C.set.position()&&(C.save.conditions(),w.exclusive&&C.hideAll(),C.animate.show(e))}},hide:function(e){if(e=e||function(){},C.is.visible()||C.is.animating()){if(w.onHide.call(r,L)===!1)return void C.debug("onHide callback returned false, cancelling popup animation");C.remove.visible(),C.unbind.close(),C.restore.conditions(),C.animate.hide(e)}},hideAll:function(){e(k.popup).filter("."+S.visible).each(function(){e(this).data(A.activator).popup("hide")})},exists:function(){return r?w.inline||w.popup?C.has.popup():r.closest(O).length>=1?!0:!1:!1},removePopup:function(){C.has.popup()&&!w.popup&&(C.debug("Removing popup",r),r.remove(),r=i,w.onRemove.call(r,L))},save:{conditions:function(){C.cache={title:F.attr("title")},C.cache.title&&F.removeAttr("title"),C.verbose("Saving original attributes",C.cache.title)}},restore:{conditions:function(){return C.cache&&C.cache.title&&(F.attr("title",C.cache.title),C.verbose("Restoring original attributes",C.cache.title)),!0}},supports:{svg:function(){return typeof SVGGraphicsElement===i}},animate:{show:function(t){t=e.isFunction(t)?t:function(){},w.transition&&e.fn.transition!==i&&F.transition("is supported")?(C.set.visible(),r.transition({animation:w.transition+" in",queue:!1,debug:w.debug,verbose:w.verbose,duration:w.duration,onComplete:function(){C.bind.close(),t.call(r,L),w.onVisible.call(r,L)}})):C.error(T.noTransition)},hide:function(t){return t=e.isFunction(t)?t:function(){},C.debug("Hiding pop-up"),w.onHide.call(r,L)===!1?void C.debug("onHide callback returned false, cancelling popup animation"):void(w.transition&&e.fn.transition!==i&&F.transition("is supported")?r.transition({animation:w.transition+" out",queue:!1,duration:w.duration,debug:w.debug,verbose:w.verbose,onComplete:function(){C.reset(),t.call(r,L),w.onHidden.call(r,L)}}):C.error(T.noTransition))}},change:{content:function(e){r.html(e)}},get:{html:function(){return F.removeData(A.html),F.data(A.html)||w.html},title:function(){return F.removeData(A.title),F.data(A.title)||w.title},content:function(){return F.removeData(A.content),F.data(A.content)||F.attr("title")||w.content},variation:function(){return F.removeData(A.variation),F.data(A.variation)||w.variation},popup:function(){return r},popupOffset:function(){return r.offset()},calculations:function(){var e,n=j[0],i=q[0]==t,o=w.inline||w.popup&&w.movePopup?j.position():j.offset(),a=i?{top:0,left:0}:q.offset(),s={},c=i?{top:l.scrollTop(),left:l.scrollLeft()}:{top:0,left:0};return s={target:{element:j[0],width:j.outerWidth(),height:j.outerHeight(),top:o.top,left:o.left,margin:{}},popup:{width:r.outerWidth(),height:r.outerHeight()},parent:{width:v.outerWidth(),height:v.outerHeight()},screen:{top:a.top,left:a.left,scroll:{top:c.top,left:c.left},width:q.width(),height:q.height()}},w.setFluidWidth&&C.is.fluid()&&(s.container={width:r.parent().outerWidth()},s.popup.width=s.container.width),s.target.margin.top=w.inline?parseInt(t.getComputedStyle(n).getPropertyValue("margin-top"),10):0,s.target.margin.left=w.inline?C.is.rtl()?parseInt(t.getComputedStyle(n).getPropertyValue("margin-right"),10):parseInt(t.getComputedStyle(n).getPropertyValue("margin-left"),10):0,e=s.screen,s.boundary={top:e.top+e.scroll.top,bottom:e.top+e.scroll.top+e.height,left:e.left+e.scroll.left,right:e.left+e.scroll.left+e.width},s},id:function(){return x},startEvent:function(){return"hover"==w.on?"mouseenter":"focus"==w.on?"focus":!1},scrollEvent:function(){return"scroll"},endEvent:function(){return"hover"==w.on?"mouseleave":"focus"==w.on?"blur":!1},distanceFromBoundary:function(e,t){var n,i,o={};return t=t||C.get.calculations(),n=t.popup,i=t.boundary,e&&(o={top:e.top-i.top,left:e.left-i.left,right:i.right-(e.left+n.width),bottom:i.bottom-(e.top+n.height)},C.verbose("Distance from boundaries determined",e,o)),o},offsetParent:function(t){var n=t!==i?t[0]:F[0],o=n.parentNode,a=e(o);if(o)for(var r="none"===a.css("transform"),s="static"===a.css("position"),l=a.is("html");o&&!l&&s&&r;)o=o.parentNode,a=e(o),r="none"===a.css("transform"),s="static"===a.css("position"),l=a.is("html");return a&&a.length>0?a:e()},positions:function(){return{"top left":!1,"top center":!1,"top right":!1,"bottom left":!1,"bottom center":!1,"bottom right":!1,"left center":!1,"right center":!1}},nextPosition:function(e){var t=e.split(" "),n=t[0],i=t[1],o={top:"bottom",bottom:"top",left:"right",right:"left"},a={left:"center",center:"right",right:"left"},r={"top left":"top center","top center":"top right","top right":"right center","right center":"bottom right","bottom right":"bottom center","bottom center":"bottom left","bottom left":"left center","left center":"top left"},s="top"==n||"bottom"==n,l=!1,c=!1,u=!1;return M||(C.verbose("All available positions available"),M=C.get.positions()),C.debug("Recording last position tried",e),M[e]=!0,"opposite"===w.prefer&&(u=[o[n],i],u=u.join(" "),l=M[u]===!0,C.debug("Trying opposite strategy",u)),"adjacent"===w.prefer&&s&&(u=[n,a[i]],u=u.join(" "),c=M[u]===!0,C.debug("Trying adjacent strategy",u)),(c||l)&&(C.debug("Using backup position",u),u=r[e]),u}},set:{position:function(e,t){if(0===j.length||0===r.length)return void C.error(T.notFound);var n,o,a,s,l,c,u,d;if(t=t||C.get.calculations(),e=e||F.data(A.position)||w.position,n=F.data(A.offset)||w.offset,o=w.distanceAway,a=t.target,s=t.popup,l=t.parent,0===a.width&&0===a.height&&!C.is.svg(a.element))return C.debug("Popup target is hidden, no action taken"),!1;switch(w.inline&&(C.debug("Adding margin to calculation",a.margin),"left center"==e||"right center"==e?(n+=a.margin.top,o+=-a.margin.left):"top left"==e||"top center"==e||"top right"==e?(n+=a.margin.left,o-=a.margin.top):(n+=a.margin.left,o+=a.margin.top)),C.debug("Determining popup position from calculations",e,t),C.is.rtl()&&(e=e.replace(/left|right/g,function(e){return"left"==e?"right":"left"}),C.debug("RTL: Popup position updated",e)),z==w.maxSearchDepth&&"string"==typeof w.lastResort&&(e=w.lastResort),e){case"top left":c={top:"auto",bottom:l.height-a.top+o,left:a.left+n,right:"auto"};break;case"top center":c={bottom:l.height-a.top+o,left:a.left+a.width/2-s.width/2+n,top:"auto",right:"auto"};break;case"top right":c={bottom:l.height-a.top+o,right:l.width-a.left-a.width-n,top:"auto",left:"auto"};break;case"left center":c={top:a.top+a.height/2-s.height/2+n,right:l.width-a.left+o,left:"auto",bottom:"auto"};break;case"right center":c={top:a.top+a.height/2-s.height/2+n,left:a.left+a.width+o,bottom:"auto",right:"auto"};break;case"bottom left":c={top:a.top+a.height+o,left:a.left+n,bottom:"auto",right:"auto"};break;case"bottom center":c={top:a.top+a.height+o,left:a.left+a.width/2-s.width/2+n,bottom:"auto",right:"auto"};break;case"bottom right":c={top:a.top+a.height+o,right:l.width-a.left-a.width-n,left:"auto",bottom:"auto"}}if(c===i&&C.error(T.invalidPosition,e),C.debug("Calculated popup positioning values",c),r.css(c).removeClass(S.position).addClass(e).addClass(S.loading),u=C.get.popupOffset(),d=C.get.distanceFromBoundary(u,t),C.is.offstage(d,e)){if(C.debug("Position is outside viewport",e),z0}},is:{offstage:function(t,n){var i=[];return e.each(t,function(e,t){t<-w.jitter&&(C.debug("Position exceeds allowable distance from edge",e,t,n),i.push(e))}),i.length>0?!0:!1},svg:function(e){return C.supports.svg()&&e instanceof SVGGraphicsElement},active:function(){return F.hasClass(S.active)},animating:function(){return r!==i&&r.hasClass(S.animating)},fluid:function(){return r!==i&&r.hasClass(S.fluid)},visible:function(){return r!==i&&r.hasClass(S.visible)},dropdown:function(){return F.hasClass(S.dropdown)},hidden:function(){return!C.is.visible()},rtl:function(){return"rtl"==F.css("direction")}},reset:function(){C.remove.visible(),w.preserve?e.fn.transition!==i&&r.transition("remove transition"):C.removePopup()},setting:function(t,n){if(e.isPlainObject(t))e.extend(!0,w,t);else{if(n===i)return w[t];w[t]=n}},internal:function(t,n){if(e.isPlainObject(t))e.extend(!0,C,t);else{if(n===i)return C[t];C[t]=n}},debug:function(){!w.silent&&w.debug&&(w.performance?C.performance.log(arguments):(C.debug=Function.prototype.bind.call(console.info,console,w.name+":"),C.debug.apply(console,arguments)))},verbose:function(){!w.silent&&w.verbose&&w.debug&&(w.performance?C.performance.log(arguments):(C.verbose=Function.prototype.bind.call(console.info,console,w.name+":"),C.verbose.apply(console,arguments)))},error:function(){w.silent||(C.error=Function.prototype.bind.call(console.error,console,w.name+":"),C.error.apply(console,arguments))},performance:{log:function(e){var t,n,i;w.performance&&(t=(new Date).getTime(),i=f||t,n=t-i,f=t,m.push({Name:e[0],Arguments:[].slice.call(e,1)||"",Element:L,"Execution Time":n})),clearTimeout(C.performance.timer),C.performance.timer=setTimeout(C.performance.display,500)},display:function(){var t=w.name+":",n=0;f=!1,clearTimeout(C.performance.timer),e.each(m,function(e,t){n+=t["Execution Time"]}),t+=" "+n+"ms",u&&(t+=" '"+u+"'"),(console.group!==i||console.table!==i)&&m.length>0&&(console.groupCollapsed(t),console.table?console.table(m):e.each(m,function(e,t){console.log(t.Name+": "+t["Execution Time"]+"ms")}),console.groupEnd()),m=[]}},invoke:function(t,n,o){var r,s,l,c=N;return n=n||h,o=L||o,"string"==typeof t&&c!==i&&(t=t.split(/[\. ]/),r=t.length-1,e.each(t,function(n,o){var a=n!=r?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(c[a])&&n!=r)c=c[a];else{if(c[a]!==i)return s=c[a],!1;if(!e.isPlainObject(c[o])||n==r)return c[o]!==i?(s=c[o],!1):!1;c=c[o]}})),e.isFunction(s)?l=s.apply(o,n):s!==i&&(l=s),e.isArray(a)?a.push(l):a!==i?a=[a,l]:l!==i&&(a=l),s}},p?(N===i&&C.initialize(),C.invoke(g)):(N!==i&&N.invoke("destroy"),C.initialize())}),a!==i?a:this},e.fn.popup.settings={name:"Popup",silent:!1,debug:!1,verbose:!1,performance:!0,namespace:"popup",observeChanges:!0,onCreate:function(){},onRemove:function(){},onShow:function(){},onVisible:function(){},onHide:function(){},onUnplaceable:function(){},onHidden:function(){},on:"hover",boundary:t,addTouchEvents:!0,position:"top left",variation:"",movePopup:!0,target:!1,popup:!1,inline:!1,preserve:!1,hoverable:!1,content:!1,html:!1,title:!1,closable:!0,hideOnScroll:"auto",exclusive:!1,context:"body",scrollContext:t,prefer:"opposite",lastResort:!1,delay:{show:50,hide:70},setFluidWidth:!0,duration:200,transition:"scale",distanceAway:0,jitter:2,offset:0,maxSearchDepth:15,error:{invalidPosition:"The position you specified is not a valid position",cannotPlace:"Popup does not fit within the boundaries of the viewport",method:"The method you called is not defined.",noTransition:"This module requires ui transitions ",notFound:"The target or popup you specified does not exist on the page"},metadata:{activator:"activator",content:"content",html:"html",offset:"offset",position:"position",title:"title",variation:"variation"},className:{active:"active",animating:"animating",dropdown:"dropdown",fluid:"fluid",loading:"loading",popup:"ui popup",position:"top left center bottom right",visible:"visible"},selector:{popup:".ui.popup"},templates:{escape:function(e){var t=/[&<>"'`]/g,n=/[&<>"'`]/,i={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},o=function(e){return i[e]};return n.test(e)?e.replace(t,o):e},popup:function(t){var n="",o=e.fn.popup.settings.templates.escape;return typeof t!==i&&(typeof t.title!==i&&t.title&&(t.title=o(t.title),n+='
    '+t.title+"
    "),typeof t.content!==i&&t.content&&(t.content=o(t.content),n+='
    '+t.content+"
    ")),n}}}}(jQuery,window,document),function(e,t,n,i){"use strict";t="undefined"!=typeof t&&t.Math==Math?t:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"undefined"!=typeof t&&t.Math==Math?t:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();e.fn.progress=function(t){var o,a=e(this),r=a.selector||"",s=(new Date).getTime(),l=[],c=arguments[0],u="string"==typeof c,d=[].slice.call(arguments,1);return a.each(function(){var a,f,m=e.isPlainObject(t)?e.extend(!0,{},e.fn.progress.settings,t):e.extend({},e.fn.progress.settings),g=m.className,p=m.metadata,h=m.namespace,v=m.selector,b=m.error,y="."+h,x="module-"+h,C=e(this),w=e(this).find(v.bar),k=e(this).find(v.progress),S=e(this).find(v.label),T=this,A=C.data(x),R=!1;f={initialize:function(){f.debug("Initializing progress bar",m),f.set.duration(),f.set.transitionEvent(),f.read.metadata(),f.read.settings(),f.instantiate()},instantiate:function(){f.verbose("Storing instance of progress",f),A=f,C.data(x,f)},destroy:function(){f.verbose("Destroying previous progress for",C),clearInterval(A.interval),f.remove.state(),C.removeData(x),A=i},reset:function(){f.remove.nextValue(),f.update.progress(0)},complete:function(){(f.percent===i||f.percent<100)&&(f.remove.progressPoll(),f.set.percent(100))},read:{metadata:function(){var e={percent:C.data(p.percent),total:C.data(p.total),value:C.data(p.value)};e.percent&&(f.debug("Current percent value set from metadata",e.percent),f.set.percent(e.percent)),e.total&&(f.debug("Total value set from metadata",e.total),f.set.total(e.total)),e.value&&(f.debug("Current value set from metadata",e.value),f.set.value(e.value),f.set.progress(e.value))},settings:function(){m.total!==!1&&(f.debug("Current total set in settings",m.total),f.set.total(m.total)),m.value!==!1&&(f.debug("Current value set in settings",m.value),f.set.value(m.value),f.set.progress(f.value)),m.percent!==!1&&(f.debug("Current percent set in settings",m.percent),f.set.percent(m.percent))}},increment:function(e){var t,n,i;f.has.total()?(n=f.get.value(),e=e||1,i=n+e):(n=f.get.percent(),e=e||f.get.randomValue(),i=n+e,t=100,f.debug("Incrementing percentage by",n,i)),i=f.get.normalizedValue(i),f.set.progress(i)},decrement:function(e){var t,n,i=f.get.total();i?(t=f.get.value(),e=e||1,n=t-e,f.debug("Decrementing value by",e,t)):(t=f.get.percent(),e=e||f.get.randomValue(),n=t-e,f.debug("Decrementing percentage by",e,t)),n=f.get.normalizedValue(n),f.set.progress(n)},has:{progressPoll:function(){return f.progressPoll},total:function(){return f.get.total()!==!1}},get:{text:function(e){var t=f.value||0,n=f.total||0,i=R?f.get.displayPercent():f.percent||0,o=f.total>0?n-t:100-i;return e=e||"",e=e.replace("{value}",t).replace("{total}",n).replace("{left}",o).replace("{percent}",i),f.verbose("Adding variables to progress bar text",e),e},normalizedValue:function(e){if(0>e)return f.debug("Value cannot decrement below 0"),0;if(f.has.total()){if(e>f.total)return f.debug("Value cannot increment above total",f.total),f.total}else if(e>100)return f.debug("Value cannot increment above 100 percent"),100;return e},updateInterval:function(){return"auto"==m.updateInterval?m.duration:m.updateInterval},randomValue:function(){return f.debug("Generating random increment percentage"),Math.floor(Math.random()*m.random.max+m.random.min)},numericValue:function(e){return"string"==typeof e?""!==e.replace(/[^\d.]/g,"")?+e.replace(/[^\d.]/g,""):!1:e},transitionEnd:function(){var e,t=n.createElement("element"),o={transition:"transitionend",OTransition:"oTransitionEnd",MozTransition:"transitionend",WebkitTransition:"webkitTransitionEnd"};for(e in o)if(t.style[e]!==i)return o[e]},displayPercent:function(){var e=w.width(),t=C.width(),n=parseInt(w.css("min-width"),10),i=e>n?e/t*100:f.percent;return m.precision>0?Math.round(i*(10*m.precision))/(10*m.precision):Math.round(i)},percent:function(){return f.percent||0},value:function(){return f.nextValue||f.value||0},total:function(){return f.total||!1}},create:{progressPoll:function(){f.progressPoll=setTimeout(function(){f.update.toNextValue(),f.remove.progressPoll()},f.get.updateInterval())}},is:{complete:function(){return f.is.success()||f.is.warning()||f.is.error()},success:function(){return C.hasClass(g.success)},warning:function(){return C.hasClass(g.warning)},error:function(){return C.hasClass(g.error)},active:function(){return C.hasClass(g.active)},visible:function(){return C.is(":visible")}},remove:{progressPoll:function(){f.verbose("Removing progress poll timer"),f.progressPoll&&(clearTimeout(f.progressPoll),delete f.progressPoll)},nextValue:function(){f.verbose("Removing progress value stored for next update"),delete f.nextValue},state:function(){f.verbose("Removing stored state"),delete f.total,delete f.percent,delete f.value},active:function(){f.verbose("Removing active state"),C.removeClass(g.active)},success:function(){f.verbose("Removing success state"),C.removeClass(g.success)},warning:function(){f.verbose("Removing warning state"),C.removeClass(g.warning)},error:function(){f.verbose("Removing error state"),C.removeClass(g.error)}},set:{barWidth:function(e){e>100?f.error(b.tooHigh,e):0>e?f.error(b.tooLow,e):(w.css("width",e+"%"),C.attr("data-percent",parseInt(e,10)))},duration:function(e){e=e||m.duration,e="number"==typeof e?e+"ms":e,f.verbose("Setting progress bar transition duration",e),w.css({"transition-duration":e})},percent:function(e){e="string"==typeof e?+e.replace("%",""):e,e=m.precision>0?Math.round(e*(10*m.precision))/(10*m.precision):Math.round(e),f.percent=e,f.has.total()||(f.value=m.precision>0?Math.round(e/100*f.total*(10*m.precision))/(10*m.precision):Math.round(e/100*f.total*10)/10,m.limitValues&&(f.value=f.value>100?100:f.value<0?0:f.value)),f.set.barWidth(e),f.set.labelInterval(),f.set.labels(),m.onChange.call(T,e,f.value,f.total)},labelInterval:function(){var t=function(){f.verbose("Bar finished animating, removing continuous label updates"),clearInterval(f.interval),R=!1,f.set.labels()};clearInterval(f.interval),w.one(a+y,t),R=!0,f.interval=setInterval(function(){var t=e.contains(n.documentElement,T);t||(clearInterval(f.interval),R=!1),f.set.labels()},m.framerate)},labels:function(){f.verbose("Setting both bar progress and outer label text"),f.set.barLabel(),f.set.state()},label:function(e){e=e||"",e&&(e=f.get.text(e),f.verbose("Setting label to text",e),S.text(e))},state:function(e){e=e!==i?e:f.percent,100===e?m.autoSuccess&&!(f.is.warning()||f.is.error()||f.is.success())?(f.set.success(),f.debug("Automatically triggering success at 100%")):(f.verbose("Reached 100% removing active state"),f.remove.active(),f.remove.progressPoll()):e>0?(f.verbose("Adjusting active progress bar label",e),f.set.active()):(f.remove.active(),f.set.label(m.text.active))},barLabel:function(e){e!==i?k.text(f.get.text(e)):"ratio"==m.label&&f.total?(f.verbose("Adding ratio to bar label"),k.text(f.get.text(m.text.ratio))):"percent"==m.label&&(f.verbose("Adding percentage to bar label"),k.text(f.get.text(m.text.percent)))},active:function(e){e=e||m.text.active,f.debug("Setting active state"),m.showActivity&&!f.is.active()&&C.addClass(g.active),f.remove.warning(),f.remove.error(),f.remove.success(),e=m.onLabelUpdate("active",e,f.value,f.total),e&&f.set.label(e),w.one(a+y,function(){m.onActive.call(T,f.value,f.total)})},success:function(e){e=e||m.text.success||m.text.active,f.debug("Setting success state"),C.addClass(g.success),f.remove.active(),f.remove.warning(),f.remove.error(),f.complete(),m.text.success?(e=m.onLabelUpdate("success",e,f.value,f.total),f.set.label(e)):(e=m.onLabelUpdate("active",e,f.value,f.total),f.set.label(e)),w.one(a+y,function(){m.onSuccess.call(T,f.total)})},warning:function(e){e=e||m.text.warning,f.debug("Setting warning state"),C.addClass(g.warning),f.remove.active(),f.remove.success(),f.remove.error(),f.complete(),e=m.onLabelUpdate("warning",e,f.value,f.total),e&&f.set.label(e),w.one(a+y,function(){m.onWarning.call(T,f.value,f.total)})},error:function(e){e=e||m.text.error,f.debug("Setting error state"),C.addClass(g.error),f.remove.active(),f.remove.success(),f.remove.warning(),f.complete(),e=m.onLabelUpdate("error",e,f.value,f.total),e&&f.set.label(e),w.one(a+y,function(){m.onError.call(T,f.value,f.total)})},transitionEvent:function(){a=f.get.transitionEnd()},total:function(e){f.total=e},value:function(e){f.value=e},progress:function(e){f.has.progressPoll()?(f.debug("Updated within interval, setting next update to use new value",e),f.set.nextValue(e)):(f.debug("First update in progress update interval, immediately updating",e),f.update.progress(e),f.create.progressPoll())},nextValue:function(e){f.nextValue=e}},update:{toNextValue:function(){var e=f.nextValue;e&&(f.debug("Update interval complete using last updated value",e),f.update.progress(e),f.remove.nextValue())},progress:function(e){var t;e=f.get.numericValue(e),e===!1&&f.error(b.nonNumeric,e),e=f.get.normalizedValue(e),f.has.total()?(f.set.value(e),t=e/f.total*100,f.debug("Calculating percent complete from total",t),f.set.percent(t)):(t=e,f.debug("Setting value to exact percentage value",t),f.set.percent(t))}},setting:function(t,n){if(f.debug("Changing setting",t,n),e.isPlainObject(t))e.extend(!0,m,t);else{if(n===i)return m[t];e.isPlainObject(m[t])?e.extend(!0,m[t],n):m[t]=n}},internal:function(t,n){if(e.isPlainObject(t))e.extend(!0,f,t);else{if(n===i)return f[t];f[t]=n}},debug:function(){!m.silent&&m.debug&&(m.performance?f.performance.log(arguments):(f.debug=Function.prototype.bind.call(console.info,console,m.name+":"),f.debug.apply(console,arguments)))},verbose:function(){!m.silent&&m.verbose&&m.debug&&(m.performance?f.performance.log(arguments):(f.verbose=Function.prototype.bind.call(console.info,console,m.name+":"),f.verbose.apply(console,arguments)))},error:function(){m.silent||(f.error=Function.prototype.bind.call(console.error,console,m.name+":"),f.error.apply(console,arguments))},performance:{log:function(e){var t,n,i;m.performance&&(t=(new Date).getTime(),i=s||t,n=t-i,s=t,l.push({Name:e[0],Arguments:[].slice.call(e,1)||"",Element:T,"Execution Time":n})),clearTimeout(f.performance.timer),f.performance.timer=setTimeout(f.performance.display,500)},display:function(){var t=m.name+":",n=0;s=!1,clearTimeout(f.performance.timer),e.each(l,function(e,t){n+=t["Execution Time"]}),t+=" "+n+"ms",r&&(t+=" '"+r+"'"),(console.group!==i||console.table!==i)&&l.length>0&&(console.groupCollapsed(t),console.table?console.table(l):e.each(l,function(e,t){console.log(t.Name+": "+t["Execution Time"]+"ms")}),console.groupEnd()),l=[]}},invoke:function(t,n,a){var r,s,l,c=A;return n=n||d,a=T||a,"string"==typeof t&&c!==i&&(t=t.split(/[\. ]/),r=t.length-1,e.each(t,function(n,o){var a=n!=r?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(c[a])&&n!=r)c=c[a];else{if(c[a]!==i)return s=c[a],!1;if(!e.isPlainObject(c[o])||n==r)return c[o]!==i?(s=c[o],!1):(f.error(b.method,t),!1);c=c[o]}})),e.isFunction(s)?l=s.apply(a,n):s!==i&&(l=s),e.isArray(o)?o.push(l):o!==i?o=[o,l]:l!==i&&(o=l),s}},u?(A===i&&f.initialize(),f.invoke(c)):(A!==i&&A.invoke("destroy"),f.initialize())}),o!==i?o:this},e.fn.progress.settings={name:"Progress",namespace:"progress",silent:!1,debug:!1,verbose:!1,performance:!0,random:{min:2,max:5},duration:300,updateInterval:"auto",autoSuccess:!0,showActivity:!0,limitValues:!0,label:"percent",precision:0,framerate:1e3/30,percent:!1,total:!1,value:!1,onLabelUpdate:function(e,t,n,i){return t},onChange:function(e,t,n){},onSuccess:function(e){},onActive:function(e,t){},onError:function(e,t){},onWarning:function(e,t){},error:{method:"The method you called is not defined.",nonNumeric:"Progress value is non numeric",tooHigh:"Value specified is above 100%",tooLow:"Value specified is below 0%"},regExp:{variable:/\{\$*[A-z0-9]+\}/g},metadata:{percent:"percent",total:"total",value:"value"},selector:{bar:"> .bar",label:"> .label",progress:".bar > .progress"},text:{active:!1,error:!1,success:!1,warning:!1,percent:"{percent}%",ratio:"{value} of {total}"},className:{active:"active",error:"error",success:"success",warning:"warning"}}}(jQuery,window,document),function(e,t,n,i){"use strict";t="undefined"!=typeof t&&t.Math==Math?t:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),e.fn.rating=function(t){var n,o=e(this),a=o.selector||"",r=(new Date).getTime(),s=[],l=arguments[0],c="string"==typeof l,u=[].slice.call(arguments,1);return o.each(function(){var d,f,m=e.isPlainObject(t)?e.extend(!0,{},e.fn.rating.settings,t):e.extend({},e.fn.rating.settings),g=m.namespace,p=m.className,h=m.metadata,v=m.selector,b=(m.error,"."+g),y="module-"+g,x=this,C=e(this).data(y),w=e(this),k=w.find(v.icon);f={initialize:function(){f.verbose("Initializing rating module",m),0===k.length&&f.setup.layout(),m.interactive?f.enable():f.disable(),f.set.initialLoad(),f.set.rating(f.get.initialRating()),f.remove.initialLoad(),f.instantiate()},instantiate:function(){f.verbose("Instantiating module",m),C=f,w.data(y,f)},destroy:function(){f.verbose("Destroying previous instance",C),f.remove.events(),w.removeData(y)},refresh:function(){k=w.find(v.icon)},setup:{layout:function(){var t=f.get.maxRating(),n=e.fn.rating.settings.templates.icon(t);f.debug("Generating icon html dynamically"),w.html(n),f.refresh()}},event:{mouseenter:function(){var t=e(this);t.nextAll().removeClass(p.selected),w.addClass(p.selected),t.addClass(p.selected).prevAll().addClass(p.selected)},mouseleave:function(){w.removeClass(p.selected),k.removeClass(p.selected)},click:function(){var t=e(this),n=f.get.rating(),i=k.index(t)+1,o="auto"==m.clearable?1===k.length:m.clearable;o&&n==i?f.clearRating():f.set.rating(i)}},clearRating:function(){f.debug("Clearing current rating"),f.set.rating(0)},bind:{events:function(){f.verbose("Binding events"),w.on("mouseenter"+b,v.icon,f.event.mouseenter).on("mouseleave"+b,v.icon,f.event.mouseleave).on("click"+b,v.icon,f.event.click)}},remove:{events:function(){f.verbose("Removing events"),w.off(b)},initialLoad:function(){d=!1}},enable:function(){f.debug("Setting rating to interactive mode"),f.bind.events(),w.removeClass(p.disabled)},disable:function(){f.debug("Setting rating to read-only mode"),f.remove.events(),w.addClass(p.disabled)},is:{initialLoad:function(){return d}},get:{initialRating:function(){return w.data(h.rating)!==i?(w.removeData(h.rating),w.data(h.rating)):m.initialRating},maxRating:function(){return w.data(h.maxRating)!==i?(w.removeData(h.maxRating),w.data(h.maxRating)):m.maxRating},rating:function(){var e=k.filter("."+p.active).length;return f.verbose("Current rating retrieved",e),e}},set:{rating:function(e){var t=e-1>=0?e-1:0,n=k.eq(t);w.removeClass(p.selected),k.removeClass(p.selected).removeClass(p.active),e>0&&(f.verbose("Setting current rating to",e),n.prevAll().addBack().addClass(p.active)),f.is.initialLoad()||m.onRate.call(x,e)},initialLoad:function(){d=!0}},setting:function(t,n){if(f.debug("Changing setting",t,n),e.isPlainObject(t))e.extend(!0,m,t);else{if(n===i)return m[t];e.isPlainObject(m[t])?e.extend(!0,m[t],n):m[t]=n}},internal:function(t,n){if(e.isPlainObject(t))e.extend(!0,f,t);else{if(n===i)return f[t];f[t]=n}},debug:function(){!m.silent&&m.debug&&(m.performance?f.performance.log(arguments):(f.debug=Function.prototype.bind.call(console.info,console,m.name+":"),f.debug.apply(console,arguments)))},verbose:function(){!m.silent&&m.verbose&&m.debug&&(m.performance?f.performance.log(arguments):(f.verbose=Function.prototype.bind.call(console.info,console,m.name+":"),f.verbose.apply(console,arguments)))},error:function(){m.silent||(f.error=Function.prototype.bind.call(console.error,console,m.name+":"),f.error.apply(console,arguments))},performance:{log:function(e){var t,n,i;m.performance&&(t=(new Date).getTime(),i=r||t,n=t-i,r=t,s.push({Name:e[0],Arguments:[].slice.call(e,1)||"",Element:x,"Execution Time":n})),clearTimeout(f.performance.timer),f.performance.timer=setTimeout(f.performance.display,500)},display:function(){var t=m.name+":",n=0;r=!1,clearTimeout(f.performance.timer),e.each(s,function(e,t){n+=t["Execution Time"]}),t+=" "+n+"ms",a&&(t+=" '"+a+"'"),o.length>1&&(t+=" ("+o.length+")"),(console.group!==i||console.table!==i)&&s.length>0&&(console.groupCollapsed(t),console.table?console.table(s):e.each(s,function(e,t){console.log(t.Name+": "+t["Execution Time"]+"ms")}),console.groupEnd()),s=[]}},invoke:function(t,o,a){var r,s,l,c=C;return o=o||u,a=x||a,"string"==typeof t&&c!==i&&(t=t.split(/[\. ]/),r=t.length-1,e.each(t,function(n,o){var a=n!=r?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(c[a])&&n!=r)c=c[a];else{if(c[a]!==i)return s=c[a],!1;if(!e.isPlainObject(c[o])||n==r)return c[o]!==i?(s=c[o],!1):!1;c=c[o]}})),e.isFunction(s)?l=s.apply(a,o):s!==i&&(l=s),e.isArray(n)?n.push(l):n!==i?n=[n,l]:l!==i&&(n=l),s}},c?(C===i&&f.initialize(),f.invoke(l)):(C!==i&&C.invoke("destroy"),f.initialize())}),n!==i?n:this},e.fn.rating.settings={name:"Rating",namespace:"rating",slent:!1,debug:!1,verbose:!1,performance:!0,initialRating:0,interactive:!0,maxRating:4,clearable:"auto",fireOnInit:!1,onRate:function(e){},error:{method:"The method you called is not defined",noMaximum:"No maximum rating specified. Cannot generate HTML automatically"},metadata:{rating:"rating",maxRating:"maxRating"},className:{active:"active",disabled:"disabled",selected:"selected",loading:"loading"},selector:{icon:".icon"},templates:{icon:function(e){for(var t=1,n="";e>=t;)n+='',t++;return n}}}}(jQuery,window,document),function(e,t,n,i){"use strict";t="undefined"!=typeof t&&t.Math==Math?t:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),e.fn.search=function(o){var a,r=e(this),s=r.selector||"",l=(new Date).getTime(),c=[],u=arguments[0],d="string"==typeof u,f=[].slice.call(arguments,1);return e(this).each(function(){var m,g=e.isPlainObject(o)?e.extend(!0,{},e.fn.search.settings,o):e.extend({},e.fn.search.settings),p=g.className,h=g.metadata,v=g.regExp,b=g.fields,y=g.selector,x=g.error,C=g.namespace,w="."+C,k=C+"-module",S=e(this),T=S.find(y.prompt),A=S.find(y.searchButton),R=S.find(y.results),P=S.find(y.result),E=S.find(y.category),F=this,O=S.data(k),D=!1;m={initialize:function(){ -m.verbose("Initializing module"),m.determine.searchFields(),m.bind.events(),m.set.type(),m.create.results(),m.instantiate()},instantiate:function(){m.verbose("Storing instance of module",m),O=m,S.data(k,m)},destroy:function(){m.verbose("Destroying instance"),S.off(w).removeData(k)},refresh:function(){m.debug("Refreshing selector cache"),T=S.find(y.prompt),A=S.find(y.searchButton),E=S.find(y.category),R=S.find(y.results),P=S.find(y.result)},refreshResults:function(){R=S.find(y.results),P=S.find(y.result)},bind:{events:function(){m.verbose("Binding events to search"),g.automatic&&(S.on(m.get.inputEvent()+w,y.prompt,m.event.input),T.attr("autocomplete","off")),S.on("focus"+w,y.prompt,m.event.focus).on("blur"+w,y.prompt,m.event.blur).on("keydown"+w,y.prompt,m.handleKeyboard).on("click"+w,y.searchButton,m.query).on("mousedown"+w,y.results,m.event.result.mousedown).on("mouseup"+w,y.results,m.event.result.mouseup).on("click"+w,y.result,m.event.result.click)}},determine:{searchFields:function(){o&&o.searchFields!==i&&(g.searchFields=o.searchFields)}},event:{input:function(){clearTimeout(m.timer),m.timer=setTimeout(m.query,g.searchDelay)},focus:function(){m.set.focus(),m.has.minimumCharacters()&&(m.query(),m.can.show()&&m.showResults())},blur:function(e){var t=n.activeElement===this,i=function(){m.cancel.query(),m.remove.focus(),m.timer=setTimeout(m.hideResults,g.hideDelay)};t||(m.resultsClicked?(m.debug("Determining if user action caused search to close"),S.one("click.close"+w,y.results,function(e){return m.is.inMessage(e)||D?void T.focus():(D=!1,void(m.is.animating()||m.is.hidden()||i()))})):(m.debug("Input blurred without user action, closing results"),i()))},result:{mousedown:function(){m.resultsClicked=!0},mouseup:function(){m.resultsClicked=!1},click:function(n){m.debug("Search result selected");var i=e(this),o=i.find(y.title).eq(0),a=i.is("a[href]")?i:i.find("a[href]").eq(0),r=a.attr("href")||!1,s=a.attr("target")||!1,l=(o.html(),o.length>0?o.text():!1),c=m.get.results(),u=i.data(h.result)||m.get.result(l,c);return e.isFunction(g.onSelect)&&g.onSelect.call(F,u,c)===!1?(m.debug("Custom onSelect callback cancelled default select action"),void(D=!0)):(m.hideResults(),l&&m.set.value(l),void(r&&(m.verbose("Opening search link found in result",a),"_blank"==s||n.ctrlKey?t.open(r):t.location.href=r)))}}},handleKeyboard:function(e){var t,n=S.find(y.result),i=S.find(y.category),o=n.index(n.filter("."+p.active)),a=n.length,r=e.which,s={backspace:8,enter:13,escape:27,upArrow:38,downArrow:40};if(r==s.escape&&(m.verbose("Escape key pressed, blurring search field"),m.trigger.blur()),m.is.visible())if(r==s.enter){if(m.verbose("Enter key pressed, selecting active result"),n.filter("."+p.active).length>0)return m.event.result.click.call(n.filter("."+p.active),e),e.preventDefault(),!1}else r==s.upArrow?(m.verbose("Up key pressed, changing active result"),t=0>o-1?o:o-1,i.removeClass(p.active),n.removeClass(p.active).eq(t).addClass(p.active).closest(i).addClass(p.active),e.preventDefault()):r==s.downArrow&&(m.verbose("Down key pressed, changing active result"),t=o+1>=a?o:o+1,i.removeClass(p.active),n.removeClass(p.active).eq(t).addClass(p.active).closest(i).addClass(p.active),e.preventDefault());else r==s.enter&&(m.verbose("Enter key pressed, executing query"),m.query(),m.set.buttonPressed(),T.one("keyup",m.remove.buttonFocus))},setup:{api:function(t){var n={debug:g.debug,on:!1,cache:!0,action:"search",urlData:{query:t},onSuccess:function(e){m.parse.response.call(F,e,t)},onAbort:function(e){},onFailure:function(){m.displayMessage(x.serverError)},onError:m.error};e.extend(!0,n,g.apiSettings),m.verbose("Setting up API request",n),S.api(n)}},can:{useAPI:function(){return e.fn.api!==i},show:function(){return m.is.focused()&&!m.is.visible()&&!m.is.empty()},transition:function(){return g.transition&&e.fn.transition!==i&&S.transition("is supported")}},is:{animating:function(){return R.hasClass(p.animating)},hidden:function(){return R.hasClass(p.hidden)},inMessage:function(t){return t.target&&e(t.target).closest(y.message).length>0},empty:function(){return""===R.html()},visible:function(){return R.filter(":visible").length>0},focused:function(){return T.filter(":focus").length>0}},trigger:{blur:function(){var e=n.createEvent("HTMLEvents"),t=T[0];t&&(m.verbose("Triggering native blur event"),e.initEvent("blur",!1,!1),t.dispatchEvent(e))}},get:{inputEvent:function(){var e=T[0],t=e!==i&&e.oninput!==i?"input":e!==i&&e.onpropertychange!==i?"propertychange":"keyup";return t},value:function(){return T.val()},results:function(){var e=S.data(h.results);return e},result:function(t,n){var o=["title","id"],a=!1;return t=t!==i?t:m.get.value(),n=n!==i?n:m.get.results(),"category"===g.type?(m.debug("Finding result that matches",t),e.each(n,function(n,i){return e.isArray(i.results)&&(a=m.search.object(t,i.results,o)[0])?!1:void 0})):(m.debug("Finding result in results object",t),a=m.search.object(t,n,o)[0]),a||!1}},select:{firstResult:function(){m.verbose("Selecting first result"),P.first().addClass(p.active)}},set:{focus:function(){S.addClass(p.focus)},loading:function(){S.addClass(p.loading)},value:function(e){m.verbose("Setting search input value",e),T.val(e)},type:function(e){e=e||g.type,"category"==g.type&&S.addClass(g.type)},buttonPressed:function(){A.addClass(p.pressed)}},remove:{loading:function(){S.removeClass(p.loading)},focus:function(){S.removeClass(p.focus)},buttonPressed:function(){A.removeClass(p.pressed)}},query:function(){var t=m.get.value(),n=m.read.cache(t);m.has.minimumCharacters()?(n?(m.debug("Reading result from cache",t),m.save.results(n.results),m.addResults(n.html),m.inject.id(n.results)):(m.debug("Querying for",t),e.isPlainObject(g.source)||e.isArray(g.source)?m.search.local(t):m.can.useAPI()?m.search.remote(t):m.error(x.source)),g.onSearchQuery.call(F,t)):m.hideResults()},search:{local:function(e){var t,n=m.search.object(e,g.content);m.set.loading(),m.save.results(n),m.debug("Returned local search results",n),t=m.generateResults({results:n}),m.remove.loading(),m.addResults(t),m.inject.id(n),m.write.cache(e,{html:t,results:n})},remote:function(e){S.api("is loading")&&S.api("abort"),m.setup.api(e),S.api("query")},object:function(t,n,o){var a=[],r=[],s=t.toString().replace(v.escape,"\\$&"),l=new RegExp(v.beginsWith+s,"i"),c=function(t,n){var i=-1==e.inArray(n,a),o=-1==e.inArray(n,r);i&&o&&t.push(n)};return n=n||g.source,o=o!==i?o:g.searchFields,e.isArray(o)||(o=[o]),n===i||n===!1?(m.error(x.source),[]):(e.each(o,function(i,o){e.each(n,function(e,n){var i="string"==typeof n[o];i&&(-1!==n[o].search(l)?c(a,n):g.searchFullText&&m.fuzzySearch(t,n[o])&&c(r,n))})}),e.merge(a,r))}},fuzzySearch:function(e,t){var n=t.length,i=e.length;if("string"!=typeof e)return!1;if(e=e.toLowerCase(),t=t.toLowerCase(),i>n)return!1;if(i===n)return e===t;e:for(var o=0,a=0;i>o;o++){for(var r=e.charCodeAt(o);n>a;)if(t.charCodeAt(a++)===r)continue e;return!1}return!0},parse:{response:function(e,t){var n=m.generateResults(e);m.verbose("Parsing server response",e),e!==i&&t!==i&&e[b.results]!==i&&(m.addResults(n),m.inject.id(e[b.results]),m.write.cache(t,{html:n,results:e[b.results]}),m.save.results(e[b.results]))}},cancel:{query:function(){m.can.useAPI()&&S.api("abort")}},has:{minimumCharacters:function(){var e=m.get.value(),t=e.length;return t>=g.minCharacters}},clear:{cache:function(e){var t=S.data(h.cache);e?e&&t&&t[e]&&(m.debug("Removing value from cache",e),delete t[e],S.data(h.cache,t)):(m.debug("Clearing cache",e),S.removeData(h.cache))}},read:{cache:function(e){var t=S.data(h.cache);return g.cache?(m.verbose("Checking cache for generated html for query",e),"object"==typeof t&&t[e]!==i?t[e]:!1):!1}},create:{id:function(e,t){var n,o,a=e+1;return t!==i?(n=String.fromCharCode(97+t),o=n+a,m.verbose("Creating category result id",o)):(o=a,m.verbose("Creating result id",o)),o},results:function(){0===R.length&&(R=e("
    ").addClass(p.results).appendTo(S))}},inject:{result:function(e,t,n){m.verbose("Injecting result into results");var o=n!==i?R.children().eq(n).children(y.result).eq(t):R.children(y.result).eq(t);m.verbose("Injecting results metadata",o),o.data(h.result,e)},id:function(t){m.debug("Injecting unique ids into results");var n=0,o=0;return"category"===g.type?e.each(t,function(t,a){o=0,e.each(a.results,function(e,t){var r=a.results[e];r.id===i&&(r.id=m.create.id(o,n)),m.inject.result(r,o,n),o++}),n++}):e.each(t,function(e,n){var a=t[e];a.id===i&&(a.id=m.create.id(o)),m.inject.result(a,o),o++}),t}},save:{results:function(e){m.verbose("Saving current search results to metadata",e),S.data(h.results,e)}},write:{cache:function(e,t){var n=S.data(h.cache)!==i?S.data(h.cache):{};g.cache&&(m.verbose("Writing generated html to cache",e,t),n[e]=t,S.data(h.cache,n))}},addResults:function(t){return e.isFunction(g.onResultsAdd)&&g.onResultsAdd.call(R,t)===!1?(m.debug("onResultsAdd callback cancelled default action"),!1):void(t?(R.html(t),m.refreshResults(),g.selectFirstResult&&m.select.firstResult(),m.showResults()):m.hideResults())},showResults:function(){m.is.visible()||(m.can.transition()?(m.debug("Showing results with css animations"),R.transition({animation:g.transition+" in",debug:g.debug,verbose:g.verbose,duration:g.duration,queue:!0})):(m.debug("Showing results with javascript"),R.stop().fadeIn(g.duration,g.easing)),g.onResultsOpen.call(R))},hideResults:function(){m.is.visible()&&(m.can.transition()?(m.debug("Hiding results with css animations"),R.transition({animation:g.transition+" out",debug:g.debug,verbose:g.verbose,duration:g.duration,queue:!0})):(m.debug("Hiding results with javascript"),R.stop().fadeOut(g.duration,g.easing)),g.onResultsClose.call(R))},generateResults:function(t){m.debug("Generating html from response",t);var n=g.templates[g.type],i=e.isPlainObject(t[b.results])&&!e.isEmptyObject(t[b.results]),o=e.isArray(t[b.results])&&t[b.results].length>0,a="";return i||o?(g.maxResults>0&&(i?"standard"==g.type&&m.error(x.maxResults):t[b.results]=t[b.results].slice(0,g.maxResults)),e.isFunction(n)?a=n(t,b):m.error(x.noTemplate,!1)):g.showNoResults&&(a=m.displayMessage(x.noResults,"empty")),g.onResults.call(F,t),a},displayMessage:function(e,t){return t=t||"standard",m.debug("Displaying message",e,t),m.addResults(g.templates.message(e,t)),g.templates.message(e,t)},setting:function(t,n){if(e.isPlainObject(t))e.extend(!0,g,t);else{if(n===i)return g[t];g[t]=n}},internal:function(t,n){if(e.isPlainObject(t))e.extend(!0,m,t);else{if(n===i)return m[t];m[t]=n}},debug:function(){!g.silent&&g.debug&&(g.performance?m.performance.log(arguments):(m.debug=Function.prototype.bind.call(console.info,console,g.name+":"),m.debug.apply(console,arguments)))},verbose:function(){!g.silent&&g.verbose&&g.debug&&(g.performance?m.performance.log(arguments):(m.verbose=Function.prototype.bind.call(console.info,console,g.name+":"),m.verbose.apply(console,arguments)))},error:function(){g.silent||(m.error=Function.prototype.bind.call(console.error,console,g.name+":"),m.error.apply(console,arguments))},performance:{log:function(e){var t,n,i;g.performance&&(t=(new Date).getTime(),i=l||t,n=t-i,l=t,c.push({Name:e[0],Arguments:[].slice.call(e,1)||"",Element:F,"Execution Time":n})),clearTimeout(m.performance.timer),m.performance.timer=setTimeout(m.performance.display,500)},display:function(){var t=g.name+":",n=0;l=!1,clearTimeout(m.performance.timer),e.each(c,function(e,t){n+=t["Execution Time"]}),t+=" "+n+"ms",s&&(t+=" '"+s+"'"),r.length>1&&(t+=" ("+r.length+")"),(console.group!==i||console.table!==i)&&c.length>0&&(console.groupCollapsed(t),console.table?console.table(c):e.each(c,function(e,t){console.log(t.Name+": "+t["Execution Time"]+"ms")}),console.groupEnd()),c=[]}},invoke:function(t,n,o){var r,s,l,c=O;return n=n||f,o=F||o,"string"==typeof t&&c!==i&&(t=t.split(/[\. ]/),r=t.length-1,e.each(t,function(n,o){var a=n!=r?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(c[a])&&n!=r)c=c[a];else{if(c[a]!==i)return s=c[a],!1;if(!e.isPlainObject(c[o])||n==r)return c[o]!==i?(s=c[o],!1):!1;c=c[o]}})),e.isFunction(s)?l=s.apply(o,n):s!==i&&(l=s),e.isArray(a)?a.push(l):a!==i?a=[a,l]:l!==i&&(a=l),s}},d?(O===i&&m.initialize(),m.invoke(u)):(O!==i&&O.invoke("destroy"),m.initialize())}),a!==i?a:this},e.fn.search.settings={name:"Search",namespace:"search",silent:!1,debug:!1,verbose:!1,performance:!0,type:"standard",minCharacters:1,selectFirstResult:!1,apiSettings:!1,source:!1,searchFields:["title","description"],displayField:"",searchFullText:!0,automatic:!0,hideDelay:0,searchDelay:200,maxResults:7,cache:!0,showNoResults:!0,transition:"scale",duration:200,easing:"easeOutExpo",onSelect:!1,onResultsAdd:!1,onSearchQuery:function(e){},onResults:function(e){},onResultsOpen:function(){},onResultsClose:function(){},className:{animating:"animating",active:"active",empty:"empty",focus:"focus",hidden:"hidden",loading:"loading",results:"results",pressed:"down"},error:{source:"Cannot search. No source used, and Semantic API module was not included",noResults:"Your search returned no results",logging:"Error in debug logging, exiting.",noEndpoint:"No search endpoint was specified",noTemplate:"A valid template name was not specified.",serverError:"There was an issue querying the server.",maxResults:"Results must be an array to use maxResults setting",method:"The method you called is not defined."},metadata:{cache:"cache",results:"results",result:"result"},regExp:{escape:/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,beginsWith:"(?:s|^)"},fields:{categories:"results",categoryName:"name",categoryResults:"results",description:"description",image:"image",price:"price",results:"results",title:"title",url:"url",action:"action",actionText:"text",actionURL:"url"},selector:{prompt:".prompt",searchButton:".search.button",results:".results",message:".results > .message",category:".category",result:".result",title:".title, .name"},templates:{escape:function(e){var t=/[&<>"'`]/g,n=/[&<>"'`]/,i={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},o=function(e){return i[e]};return n.test(e)?e.replace(t,o):e},message:function(e,t){var n="";return e!==i&&t!==i&&(n+='
    ',n+="empty"==t?'
    No Results
    '+e+'
    ':'
    '+e+"
    ",n+="
    "),n},category:function(t,n){var o="";e.fn.search.settings.templates.escape;return t[n.categoryResults]!==i?(e.each(t[n.categoryResults],function(t,a){a[n.results]!==i&&a.results.length>0&&(o+='")}),t[n.action]&&(o+=''+t[n.action][n.actionText]+""),o):!1},standard:function(t,n){var o="";return t[n.results]!==i?(e.each(t[n.results],function(e,t){o+=t[n.url]?'':'',t[n.image]!==i&&(o+='
    '),o+='
    ',t[n.price]!==i&&(o+='
    '+t[n.price]+"
    "),t[n.title]!==i&&(o+='
    '+t[n.title]+"
    "),t[n.description]!==i&&(o+='
    '+t[n.description]+"
    "),o+="
    ",o+="
    "}),t[n.action]&&(o+=''+t[n.action][n.actionText]+""),o):!1}}}}(jQuery,window,document),function(e,t,n,i){"use strict";t="undefined"!=typeof t&&t.Math==Math?t:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),e.fn.shape=function(o){var a,r=e(this),s=(e("body"),(new Date).getTime()),l=[],c=arguments[0],u="string"==typeof c,d=[].slice.call(arguments,1),f=t.requestAnimationFrame||t.mozRequestAnimationFrame||t.webkitRequestAnimationFrame||t.msRequestAnimationFrame||function(e){setTimeout(e,0)};return r.each(function(){var t,m,g,p=r.selector||"",h=e.isPlainObject(o)?e.extend(!0,{},e.fn.shape.settings,o):e.extend({},e.fn.shape.settings),v=h.namespace,b=h.selector,y=h.error,x=h.className,C="."+v,w="module-"+v,k=e(this),S=k.find(b.sides),T=k.find(b.side),A=!1,R=this,P=k.data(w);g={initialize:function(){g.verbose("Initializing module for",R),g.set.defaultSide(),g.instantiate()},instantiate:function(){g.verbose("Storing instance of module",g),P=g,k.data(w,P)},destroy:function(){g.verbose("Destroying previous module for",R),k.removeData(w).off(C)},refresh:function(){g.verbose("Refreshing selector cache for",R),k=e(R),S=e(this).find(b.shape),T=e(this).find(b.side)},repaint:function(){g.verbose("Forcing repaint event");var e=S[0]||n.createElement("div");e.offsetWidth},animate:function(e,n){g.verbose("Animating box with properties",e),n=n||function(e){g.verbose("Executing animation callback"),e!==i&&e.stopPropagation(),g.reset(),g.set.active()},h.beforeChange.call(m[0]),g.get.transitionEvent()?(g.verbose("Starting CSS animation"),k.addClass(x.animating),S.css(e).one(g.get.transitionEvent(),n),g.set.duration(h.duration),f(function(){k.addClass(x.animating),t.addClass(x.hidden)})):n()},queue:function(e){g.debug("Queueing animation of",e),S.one(g.get.transitionEvent(),function(){g.debug("Executing queued animation"),setTimeout(function(){k.shape(e)},0)})},reset:function(){g.verbose("Animating states reset"),k.removeClass(x.animating).attr("style","").removeAttr("style"),S.attr("style","").removeAttr("style"),T.attr("style","").removeAttr("style").removeClass(x.hidden),m.removeClass(x.animating).attr("style","").removeAttr("style")},is:{complete:function(){return T.filter("."+x.active)[0]==m[0]},animating:function(){return k.hasClass(x.animating)}},set:{defaultSide:function(){t=k.find("."+h.className.active),m=t.next(b.side).length>0?t.next(b.side):k.find(b.side).first(),A=!1,g.verbose("Active side set to",t),g.verbose("Next side set to",m)},duration:function(e){e=e||h.duration,e="number"==typeof e?e+"ms":e,g.verbose("Setting animation duration",e),(h.duration||0===h.duration)&&S.add(T).css({"-webkit-transition-duration":e,"-moz-transition-duration":e,"-ms-transition-duration":e,"-o-transition-duration":e,"transition-duration":e})},currentStageSize:function(){var e=k.find("."+h.className.active),t=e.outerWidth(!0),n=e.outerHeight(!0);k.css({width:t,height:n})},stageSize:function(){var e=k.clone().addClass(x.loading),t=e.find("."+h.className.active),n="next"==h.width?o.outerWidth(!0):"initial"==h.width?k.width():h.width,i="next"==h.height?o.outerHeight(!0):"initial"==h.height?k.height():h.height,o=A?e.find(b.side).eq(A):t.next(b.side).length>0?t.next(b.side):e.find(b.side).first();t.removeClass(x.active),o.addClass(x.active),e.insertAfter(k),e.remove(),"auto"!=h.width&&(k.css("width",n+h.jitter),g.verbose("Specifying width during animation",n)),"auto"!=h.height&&(k.css("height",i+h.jitter),g.verbose("Specifying height during animation",i))},nextSide:function(e){A=e,m=T.filter(e),A=T.index(m),0===m.length&&(g.set.defaultSide(),g.error(y.side)),g.verbose("Next side manually set to",m)},active:function(){g.verbose("Setting new side to active",m),T.removeClass(x.active),m.addClass(x.active),h.onChange.call(m[0]),g.set.defaultSide()}},flip:{up:function(){return!g.is.complete()||g.is.animating()||h.allowRepeats?void(g.is.animating()?g.queue("flip up"):(g.debug("Flipping up",m),g.set.stageSize(),g.stage.above(),g.animate(g.get.transform.up()))):void g.debug("Side already visible",m)},down:function(){return!g.is.complete()||g.is.animating()||h.allowRepeats?void(g.is.animating()?g.queue("flip down"):(g.debug("Flipping down",m),g.set.stageSize(),g.stage.below(),g.animate(g.get.transform.down()))):void g.debug("Side already visible",m)},left:function(){return!g.is.complete()||g.is.animating()||h.allowRepeats?void(g.is.animating()?g.queue("flip left"):(g.debug("Flipping left",m),g.set.stageSize(),g.stage.left(),g.animate(g.get.transform.left()))):void g.debug("Side already visible",m)},right:function(){return!g.is.complete()||g.is.animating()||h.allowRepeats?void(g.is.animating()?g.queue("flip right"):(g.debug("Flipping right",m),g.set.stageSize(),g.stage.right(),g.animate(g.get.transform.right()))):void g.debug("Side already visible",m)},over:function(){return!g.is.complete()||g.is.animating()||h.allowRepeats?void(g.is.animating()?g.queue("flip over"):(g.debug("Flipping over",m),g.set.stageSize(),g.stage.behind(),g.animate(g.get.transform.over()))):void g.debug("Side already visible",m)},back:function(){return!g.is.complete()||g.is.animating()||h.allowRepeats?void(g.is.animating()?g.queue("flip back"):(g.debug("Flipping back",m),g.set.stageSize(),g.stage.behind(),g.animate(g.get.transform.back()))):void g.debug("Side already visible",m)}},get:{transform:{up:function(){var e={y:-((t.outerHeight(!0)-m.outerHeight(!0))/2),z:-(t.outerHeight(!0)/2)};return{transform:"translateY("+e.y+"px) translateZ("+e.z+"px) rotateX(-90deg)"}},down:function(){var e={y:-((t.outerHeight(!0)-m.outerHeight(!0))/2),z:-(t.outerHeight(!0)/2)};return{transform:"translateY("+e.y+"px) translateZ("+e.z+"px) rotateX(90deg)"}},left:function(){var e={x:-((t.outerWidth(!0)-m.outerWidth(!0))/2),z:-(t.outerWidth(!0)/2)};return{transform:"translateX("+e.x+"px) translateZ("+e.z+"px) rotateY(90deg)"}},right:function(){var e={x:-((t.outerWidth(!0)-m.outerWidth(!0))/2),z:-(t.outerWidth(!0)/2)};return{transform:"translateX("+e.x+"px) translateZ("+e.z+"px) rotateY(-90deg)"}},over:function(){var e={x:-((t.outerWidth(!0)-m.outerWidth(!0))/2)};return{transform:"translateX("+e.x+"px) rotateY(180deg)"}},back:function(){var e={x:-((t.outerWidth(!0)-m.outerWidth(!0))/2)};return{transform:"translateX("+e.x+"px) rotateY(-180deg)"}}},transitionEvent:function(){var e,t=n.createElement("element"),o={transition:"transitionend",OTransition:"oTransitionEnd",MozTransition:"transitionend",WebkitTransition:"webkitTransitionEnd"};for(e in o)if(t.style[e]!==i)return o[e]},nextSide:function(){return t.next(b.side).length>0?t.next(b.side):k.find(b.side).first()}},stage:{above:function(){var e={origin:(t.outerHeight(!0)-m.outerHeight(!0))/2,depth:{active:m.outerHeight(!0)/2,next:t.outerHeight(!0)/2}};g.verbose("Setting the initial animation position as above",m,e),S.css({transform:"translateZ(-"+e.depth.active+"px)"}),t.css({transform:"rotateY(0deg) translateZ("+e.depth.active+"px)"}),m.addClass(x.animating).css({top:e.origin+"px",transform:"rotateX(90deg) translateZ("+e.depth.next+"px)"})},below:function(){var e={origin:(t.outerHeight(!0)-m.outerHeight(!0))/2,depth:{active:m.outerHeight(!0)/2,next:t.outerHeight(!0)/2}};g.verbose("Setting the initial animation position as below",m,e),S.css({transform:"translateZ(-"+e.depth.active+"px)"}),t.css({transform:"rotateY(0deg) translateZ("+e.depth.active+"px)"}),m.addClass(x.animating).css({top:e.origin+"px",transform:"rotateX(-90deg) translateZ("+e.depth.next+"px)"})},left:function(){var e={active:t.outerWidth(!0),next:m.outerWidth(!0)},n={origin:(e.active-e.next)/2,depth:{active:e.next/2,next:e.active/2}};g.verbose("Setting the initial animation position as left",m,n),S.css({transform:"translateZ(-"+n.depth.active+"px)"}),t.css({transform:"rotateY(0deg) translateZ("+n.depth.active+"px)"}),m.addClass(x.animating).css({left:n.origin+"px",transform:"rotateY(-90deg) translateZ("+n.depth.next+"px)"})},right:function(){var e={active:t.outerWidth(!0),next:m.outerWidth(!0)},n={origin:(e.active-e.next)/2,depth:{active:e.next/2,next:e.active/2}};g.verbose("Setting the initial animation position as left",m,n),S.css({transform:"translateZ(-"+n.depth.active+"px)"}),t.css({transform:"rotateY(0deg) translateZ("+n.depth.active+"px)"}),m.addClass(x.animating).css({left:n.origin+"px",transform:"rotateY(90deg) translateZ("+n.depth.next+"px)"})},behind:function(){var e={active:t.outerWidth(!0),next:m.outerWidth(!0)},n={origin:(e.active-e.next)/2,depth:{active:e.next/2,next:e.active/2}};g.verbose("Setting the initial animation position as behind",m,n),t.css({transform:"rotateY(0deg)"}),m.addClass(x.animating).css({left:n.origin+"px",transform:"rotateY(-180deg)"})}},setting:function(t,n){if(g.debug("Changing setting",t,n),e.isPlainObject(t))e.extend(!0,h,t);else{if(n===i)return h[t];e.isPlainObject(h[t])?e.extend(!0,h[t],n):h[t]=n}},internal:function(t,n){if(e.isPlainObject(t))e.extend(!0,g,t);else{if(n===i)return g[t];g[t]=n}},debug:function(){!h.silent&&h.debug&&(h.performance?g.performance.log(arguments):(g.debug=Function.prototype.bind.call(console.info,console,h.name+":"),g.debug.apply(console,arguments)))},verbose:function(){!h.silent&&h.verbose&&h.debug&&(h.performance?g.performance.log(arguments):(g.verbose=Function.prototype.bind.call(console.info,console,h.name+":"),g.verbose.apply(console,arguments)))},error:function(){h.silent||(g.error=Function.prototype.bind.call(console.error,console,h.name+":"),g.error.apply(console,arguments))},performance:{log:function(e){var t,n,i;h.performance&&(t=(new Date).getTime(),i=s||t,n=t-i,s=t,l.push({Name:e[0],Arguments:[].slice.call(e,1)||"",Element:R,"Execution Time":n})),clearTimeout(g.performance.timer),g.performance.timer=setTimeout(g.performance.display,500)},display:function(){var t=h.name+":",n=0;s=!1,clearTimeout(g.performance.timer),e.each(l,function(e,t){n+=t["Execution Time"]}),t+=" "+n+"ms",p&&(t+=" '"+p+"'"),r.length>1&&(t+=" ("+r.length+")"),(console.group!==i||console.table!==i)&&l.length>0&&(console.groupCollapsed(t),console.table?console.table(l):e.each(l,function(e,t){console.log(t.Name+": "+t["Execution Time"]+"ms")}),console.groupEnd()),l=[]}},invoke:function(t,n,o){var r,s,l,c=P;return n=n||d,o=R||o,"string"==typeof t&&c!==i&&(t=t.split(/[\. ]/),r=t.length-1,e.each(t,function(n,o){var a=n!=r?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(c[a])&&n!=r)c=c[a];else{if(c[a]!==i)return s=c[a],!1;if(!e.isPlainObject(c[o])||n==r)return c[o]!==i?(s=c[o],!1):!1;c=c[o]}})),e.isFunction(s)?l=s.apply(o,n):s!==i&&(l=s),e.isArray(a)?a.push(l):a!==i?a=[a,l]:l!==i&&(a=l),s}},u?(P===i&&g.initialize(),g.invoke(c)):(P!==i&&P.invoke("destroy"),g.initialize())}),a!==i?a:this},e.fn.shape.settings={name:"Shape",silent:!1,debug:!1,verbose:!1,jitter:0,performance:!0,namespace:"shape",width:"initial",height:"initial",beforeChange:function(){},onChange:function(){},allowRepeats:!1,duration:!1,error:{side:"You tried to switch to a side that does not exist.",method:"The method you called is not defined"},className:{animating:"animating",hidden:"hidden",loading:"loading",active:"active"},selector:{sides:".sides",side:".side"}}}(jQuery,window,document),function(e,t,n,i){"use strict";t="undefined"!=typeof t&&t.Math==Math?t:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),e.fn.sidebar=function(o){var a,r=e(this),s=e(t),l=e(n),c=e("html"),u=e("head"),d=r.selector||"",f=(new Date).getTime(),m=[],g=arguments[0],p="string"==typeof g,h=[].slice.call(arguments,1),v=t.requestAnimationFrame||t.mozRequestAnimationFrame||t.webkitRequestAnimationFrame||t.msRequestAnimationFrame||function(e){setTimeout(e,0)};return r.each(function(){var r,b,y,x,C,w,k=e.isPlainObject(o)?e.extend(!0,{},e.fn.sidebar.settings,o):e.extend({},e.fn.sidebar.settings),S=k.selector,T=k.className,A=k.namespace,R=k.regExp,P=k.error,E="."+A,F="module-"+A,O=e(this),D=e(k.context),q=O.children(S.sidebar),j=D.children(S.fixed),z=D.children(S.pusher),M=this,I=O.data(F);w={initialize:function(){w.debug("Initializing sidebar",o),w.create.id(),C=w.get.transitionEvent(),w.is.ios()&&w.set.ios(),k.delaySetup?v(w.setup.layout):w.setup.layout(),v(function(){w.setup.cache()}),w.instantiate()},instantiate:function(){w.verbose("Storing instance of module",w),I=w,O.data(F,w)},create:{id:function(){y=(Math.random().toString(16)+"000000000").substr(2,8),b="."+y,w.verbose("Creating unique id for element",y)}},destroy:function(){w.verbose("Destroying previous module for",O),O.off(E).removeData(F),w.is.ios()&&w.remove.ios(),D.off(b),s.off(b),l.off(b)},event:{clickaway:function(e){var t=z.find(e.target).length>0||z.is(e.target),n=D.is(e.target);t&&(w.verbose("User clicked on dimmed page"),w.hide()),n&&(w.verbose("User clicked on dimmable context (scaled out page)"),w.hide())},touch:function(e){},containScroll:function(e){M.scrollTop<=0&&(M.scrollTop=1),M.scrollTop+M.offsetHeight>=M.scrollHeight&&(M.scrollTop=M.scrollHeight-M.offsetHeight-1)},scroll:function(t){0===e(t.target).closest(S.sidebar).length&&t.preventDefault()}},bind:{clickaway:function(){w.verbose("Adding clickaway events to context",D),k.closable&&D.on("click"+b,w.event.clickaway).on("touchend"+b,w.event.clickaway)},scrollLock:function(){k.scrollLock&&(w.debug("Disabling page scroll"),s.on("DOMMouseScroll"+b,w.event.scroll)),w.verbose("Adding events to contain sidebar scroll"),l.on("touchmove"+b,w.event.touch),O.on("scroll"+E,w.event.containScroll)}},unbind:{clickaway:function(){w.verbose("Removing clickaway events from context",D),D.off(b)},scrollLock:function(){w.verbose("Removing scroll lock from page"),l.off(b),s.off(b),O.off("scroll"+E)}},add:{inlineCSS:function(){var t,n=w.cache.width||O.outerWidth(),i=w.cache.height||O.outerHeight(),o=w.is.rtl(),a=w.get.direction(),s={left:n,right:-n,top:i,bottom:-i};o&&(w.verbose("RTL detected, flipping widths"),s.left=-n,s.right=n),t="",r=e(t).appendTo(u),w.debug("Adding sizing css to head",r)}},refresh:function(){w.verbose("Refreshing selector cache"),D=e(k.context),q=D.children(S.sidebar),z=D.children(S.pusher),j=D.children(S.fixed),w.clear.cache()},refreshSidebars:function(){w.verbose("Refreshing other sidebars"),q=D.children(S.sidebar)},repaint:function(){w.verbose("Forcing repaint event"),M.style.display="none";M.offsetHeight;M.scrollTop=M.scrollTop,M.style.display=""},setup:{cache:function(){w.cache={width:O.outerWidth(),height:O.outerHeight(),rtl:"rtl"==O.css("direction")}},layout:function(){0===D.children(S.pusher).length&&(w.debug("Adding wrapper element for sidebar"),w.error(P.pusher),z=e('
    '),D.children().not(S.omitted).not(q).wrapAll(z),w.refresh()),(0===O.nextAll(S.pusher).length||O.nextAll(S.pusher)[0]!==z[0])&&(w.debug("Moved sidebar to correct parent element"),w.error(P.movedSidebar,M),O.detach().prependTo(D),w.refresh()),w.clear.cache(),w.set.pushable(),w.set.direction()}},attachEvents:function(t,n){var i=e(t);n=e.isFunction(w[n])?w[n]:w.toggle,i.length>0?(w.debug("Attaching sidebar events to element",t,n), -i.on("click"+E,n)):w.error(P.notFound,t)},show:function(t){if(t=e.isFunction(t)?t:function(){},w.is.hidden()){if(w.refreshSidebars(),k.overlay&&(w.error(P.overlay),k.transition="overlay"),w.refresh(),w.othersActive())if(w.debug("Other sidebars currently visible"),k.exclusive){if("overlay"!=k.transition)return void w.hideOthers(w.show);w.hideOthers()}else k.transition="overlay";w.pushPage(function(){t.call(M),k.onShow.call(M)}),k.onChange.call(M),k.onVisible.call(M)}else w.debug("Sidebar is already visible")},hide:function(t){t=e.isFunction(t)?t:function(){},(w.is.visible()||w.is.animating())&&(w.debug("Hiding sidebar",t),w.refreshSidebars(),w.pullPage(function(){t.call(M),k.onHidden.call(M)}),k.onChange.call(M),k.onHide.call(M))},othersAnimating:function(){return q.not(O).filter("."+T.animating).length>0},othersVisible:function(){return q.not(O).filter("."+T.visible).length>0},othersActive:function(){return w.othersVisible()||w.othersAnimating()},hideOthers:function(e){var t=q.not(O).filter("."+T.visible),n=t.length,i=0;e=e||function(){},t.sidebar("hide",function(){i++,i==n&&e()})},toggle:function(){w.verbose("Determining toggled direction"),w.is.hidden()?w.show():w.hide()},pushPage:function(t){var n,i,o,a=w.get.transition(),r="overlay"===a||w.othersActive()?O:z;t=e.isFunction(t)?t:function(){},"scale down"==k.transition&&w.scrollToTop(),w.set.transition(a),w.repaint(),n=function(){w.bind.clickaway(),w.add.inlineCSS(),w.set.animating(),w.set.visible()},i=function(){w.set.dimmed()},o=function(e){e.target==r[0]&&(r.off(C+b,o),w.remove.animating(),w.bind.scrollLock(),t.call(M))},r.off(C+b),r.on(C+b,o),v(n),k.dimPage&&!w.othersVisible()&&v(i)},pullPage:function(t){var n,i,o=w.get.transition(),a="overlay"==o||w.othersActive()?O:z;t=e.isFunction(t)?t:function(){},w.verbose("Removing context push state",w.get.direction()),w.unbind.clickaway(),w.unbind.scrollLock(),n=function(){w.set.transition(o),w.set.animating(),w.remove.visible(),k.dimPage&&!w.othersVisible()&&z.removeClass(T.dimmed)},i=function(e){e.target==a[0]&&(a.off(C+b,i),w.remove.animating(),w.remove.transition(),w.remove.inlineCSS(),("scale down"==o||k.returnScroll&&w.is.mobile())&&w.scrollBack(),t.call(M))},a.off(C+b),a.on(C+b,i),v(n)},scrollToTop:function(){w.verbose("Scrolling to top of page to avoid animation issues"),x=e(t).scrollTop(),O.scrollTop(0),t.scrollTo(0,0)},scrollBack:function(){w.verbose("Scrolling back to original page position"),t.scrollTo(0,x)},clear:{cache:function(){w.verbose("Clearing cached dimensions"),w.cache={}}},set:{ios:function(){c.addClass(T.ios)},pushed:function(){D.addClass(T.pushed)},pushable:function(){D.addClass(T.pushable)},dimmed:function(){z.addClass(T.dimmed)},active:function(){O.addClass(T.active)},animating:function(){O.addClass(T.animating)},transition:function(e){e=e||w.get.transition(),O.addClass(e)},direction:function(e){e=e||w.get.direction(),O.addClass(T[e])},visible:function(){O.addClass(T.visible)},overlay:function(){O.addClass(T.overlay)}},remove:{inlineCSS:function(){w.debug("Removing inline css styles",r),r&&r.length>0&&r.remove()},ios:function(){c.removeClass(T.ios)},pushed:function(){D.removeClass(T.pushed)},pushable:function(){D.removeClass(T.pushable)},active:function(){O.removeClass(T.active)},animating:function(){O.removeClass(T.animating)},transition:function(e){e=e||w.get.transition(),O.removeClass(e)},direction:function(e){e=e||w.get.direction(),O.removeClass(T[e])},visible:function(){O.removeClass(T.visible)},overlay:function(){O.removeClass(T.overlay)}},get:{direction:function(){return O.hasClass(T.top)?T.top:O.hasClass(T.right)?T.right:O.hasClass(T.bottom)?T.bottom:T.left},transition:function(){var e,t=w.get.direction();return e=w.is.mobile()?"auto"==k.mobileTransition?k.defaultTransition.mobile[t]:k.mobileTransition:"auto"==k.transition?k.defaultTransition.computer[t]:k.transition,w.verbose("Determined transition",e),e},transitionEvent:function(){var e,t=n.createElement("element"),o={transition:"transitionend",OTransition:"oTransitionEnd",MozTransition:"transitionend",WebkitTransition:"webkitTransitionEnd"};for(e in o)if(t.style[e]!==i)return o[e]}},is:{ie:function(){var e=!t.ActiveXObject&&"ActiveXObject"in t,n="ActiveXObject"in t;return e||n},ios:function(){var e=navigator.userAgent,t=e.match(R.ios),n=e.match(R.mobileChrome);return t&&!n?(w.verbose("Browser was found to be iOS",e),!0):!1},mobile:function(){var e=navigator.userAgent,t=e.match(R.mobile);return t?(w.verbose("Browser was found to be mobile",e),!0):(w.verbose("Browser is not mobile, using regular transition",e),!1)},hidden:function(){return!w.is.visible()},visible:function(){return O.hasClass(T.visible)},open:function(){return w.is.visible()},closed:function(){return w.is.hidden()},vertical:function(){return O.hasClass(T.top)},animating:function(){return D.hasClass(T.animating)},rtl:function(){return w.cache.rtl===i&&(w.cache.rtl="rtl"==O.css("direction")),w.cache.rtl}},setting:function(t,n){if(w.debug("Changing setting",t,n),e.isPlainObject(t))e.extend(!0,k,t);else{if(n===i)return k[t];e.isPlainObject(k[t])?e.extend(!0,k[t],n):k[t]=n}},internal:function(t,n){if(e.isPlainObject(t))e.extend(!0,w,t);else{if(n===i)return w[t];w[t]=n}},debug:function(){!k.silent&&k.debug&&(k.performance?w.performance.log(arguments):(w.debug=Function.prototype.bind.call(console.info,console,k.name+":"),w.debug.apply(console,arguments)))},verbose:function(){!k.silent&&k.verbose&&k.debug&&(k.performance?w.performance.log(arguments):(w.verbose=Function.prototype.bind.call(console.info,console,k.name+":"),w.verbose.apply(console,arguments)))},error:function(){k.silent||(w.error=Function.prototype.bind.call(console.error,console,k.name+":"),w.error.apply(console,arguments))},performance:{log:function(e){var t,n,i;k.performance&&(t=(new Date).getTime(),i=f||t,n=t-i,f=t,m.push({Name:e[0],Arguments:[].slice.call(e,1)||"",Element:M,"Execution Time":n})),clearTimeout(w.performance.timer),w.performance.timer=setTimeout(w.performance.display,500)},display:function(){var t=k.name+":",n=0;f=!1,clearTimeout(w.performance.timer),e.each(m,function(e,t){n+=t["Execution Time"]}),t+=" "+n+"ms",d&&(t+=" '"+d+"'"),(console.group!==i||console.table!==i)&&m.length>0&&(console.groupCollapsed(t),console.table?console.table(m):e.each(m,function(e,t){console.log(t.Name+": "+t["Execution Time"]+"ms")}),console.groupEnd()),m=[]}},invoke:function(t,n,o){var r,s,l,c=I;return n=n||h,o=M||o,"string"==typeof t&&c!==i&&(t=t.split(/[\. ]/),r=t.length-1,e.each(t,function(n,o){var a=n!=r?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(c[a])&&n!=r)c=c[a];else{if(c[a]!==i)return s=c[a],!1;if(!e.isPlainObject(c[o])||n==r)return c[o]!==i?(s=c[o],!1):(w.error(P.method,t),!1);c=c[o]}})),e.isFunction(s)?l=s.apply(o,n):s!==i&&(l=s),e.isArray(a)?a.push(l):a!==i?a=[a,l]:l!==i&&(a=l),s}},p?(I===i&&w.initialize(),w.invoke(g)):(I!==i&&w.invoke("destroy"),w.initialize())}),a!==i?a:this},e.fn.sidebar.settings={name:"Sidebar",namespace:"sidebar",silent:!1,debug:!1,verbose:!1,performance:!0,transition:"auto",mobileTransition:"auto",defaultTransition:{computer:{left:"uncover",right:"uncover",top:"overlay",bottom:"overlay"},mobile:{left:"uncover",right:"uncover",top:"overlay",bottom:"overlay"}},context:"body",exclusive:!1,closable:!0,dimPage:!0,scrollLock:!1,returnScroll:!1,delaySetup:!1,duration:500,onChange:function(){},onShow:function(){},onHide:function(){},onHidden:function(){},onVisible:function(){},className:{active:"active",animating:"animating",dimmed:"dimmed",ios:"ios",pushable:"pushable",pushed:"pushed",right:"right",top:"top",left:"left",bottom:"bottom",visible:"visible"},selector:{fixed:".fixed",omitted:"script, link, style, .ui.modal, .ui.dimmer, .ui.nag, .ui.fixed",pusher:".pusher",sidebar:".ui.sidebar"},regExp:{ios:/(iPad|iPhone|iPod)/g,mobileChrome:/(CriOS)/g,mobile:/Mobile|iP(hone|od|ad)|Android|BlackBerry|IEMobile|Kindle|NetFront|Silk-Accelerated|(hpw|web)OS|Fennec|Minimo|Opera M(obi|ini)|Blazer|Dolfin|Dolphin|Skyfire|Zune/g},error:{method:"The method you called is not defined.",pusher:"Had to add pusher element. For optimal performance make sure body content is inside a pusher element",movedSidebar:"Had to move sidebar. For optimal performance make sure sidebar and pusher are direct children of your body tag",overlay:"The overlay setting is no longer supported, use animation: overlay",notFound:"There were no elements that matched the specified selector"}}}(jQuery,window,document),function(e,t,n,i){"use strict";t="undefined"!=typeof t&&t.Math==Math?t:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),e.fn.sticky=function(o){var a,r=e(this),s=r.selector||"",l=(new Date).getTime(),c=[],u=arguments[0],d="string"==typeof u,f=[].slice.call(arguments,1);return r.each(function(){var r,m,g,p,h,v=e.isPlainObject(o)?e.extend(!0,{},e.fn.sticky.settings,o):e.extend({},e.fn.sticky.settings),b=v.className,y=v.namespace,x=v.error,C="."+y,w="module-"+y,k=e(this),S=e(t),T=e(v.scrollContext),A=(k.selector||"",k.data(w)),R=t.requestAnimationFrame||t.mozRequestAnimationFrame||t.webkitRequestAnimationFrame||t.msRequestAnimationFrame||function(e){setTimeout(e,0)},P=this;h={initialize:function(){h.determineContainer(),h.determineContext(),h.verbose("Initializing sticky",v,r),h.save.positions(),h.checkErrors(),h.bind.events(),v.observeChanges&&h.observeChanges(),h.instantiate()},instantiate:function(){h.verbose("Storing instance of module",h),A=h,k.data(w,h)},destroy:function(){h.verbose("Destroying previous instance"),h.reset(),g&&g.disconnect(),p&&p.disconnect(),S.off("load"+C,h.event.load).off("resize"+C,h.event.resize),T.off("scrollchange"+C,h.event.scrollchange),k.removeData(w)},observeChanges:function(){"MutationObserver"in t&&(g=new MutationObserver(h.event.documentChanged),p=new MutationObserver(h.event.changed),g.observe(n,{childList:!0,subtree:!0}),p.observe(P,{childList:!0,subtree:!0}),p.observe(m[0],{childList:!0,subtree:!0}),h.debug("Setting up mutation observer",p))},determineContainer:function(){r=k.offsetParent()},determineContext:function(){return m=v.context?e(v.context):r,0===m.length?void h.error(x.invalidContext,v.context,k):void 0},checkErrors:function(){return h.is.hidden()&&h.error(x.visible,k),h.cache.element.height>h.cache.context.height?(h.reset(),void h.error(x.elementSize,k)):void 0},bind:{events:function(){S.on("load"+C,h.event.load).on("resize"+C,h.event.resize),T.off("scroll"+C).on("scroll"+C,h.event.scroll).on("scrollchange"+C,h.event.scrollchange)}},event:{changed:function(e){clearTimeout(h.timer),h.timer=setTimeout(function(){h.verbose("DOM tree modified, updating sticky menu",e),h.refresh()},100)},documentChanged:function(t){[].forEach.call(t,function(t){t.removedNodes&&[].forEach.call(t.removedNodes,function(t){(t==P||e(t).find(P).length>0)&&(h.debug("Element removed from DOM, tearing down events"),h.destroy())})})},load:function(){h.verbose("Page contents finished loading"),R(h.refresh)},resize:function(){h.verbose("Window resized"),R(h.refresh)},scroll:function(){R(function(){T.triggerHandler("scrollchange"+C,T.scrollTop())})},scrollchange:function(e,t){h.stick(t),v.onScroll.call(P)}},refresh:function(e){h.reset(),v.context||h.determineContext(),e&&h.determineContainer(),h.save.positions(),h.stick(),v.onReposition.call(P)},supports:{sticky:function(){var t=e("
    ");t[0];return t.addClass(b.supported),t.css("position").match("sticky")}},save:{lastScroll:function(e){h.lastScroll=e},elementScroll:function(e){h.elementScroll=e},positions:function(){var e={height:T.height()},t={margin:{top:parseInt(k.css("margin-top"),10),bottom:parseInt(k.css("margin-bottom"),10)},offset:k.offset(),width:k.outerWidth(),height:k.outerHeight()},n={offset:m.offset(),height:m.outerHeight()};({height:r.outerHeight()});h.is.standardScroll()||(h.debug("Non-standard scroll. Removing scroll offset from element offset"),e.top=T.scrollTop(),e.left=T.scrollLeft(),t.offset.top+=e.top,n.offset.top+=e.top,t.offset.left+=e.left,n.offset.left+=e.left),h.cache={fits:t.heighte&&(t="up")),t},scrollChange:function(e){return e=e||T.scrollTop(),h.lastScroll?e-h.lastScroll:0},currentElementScroll:function(){return h.elementScroll?h.elementScroll:h.is.top()?Math.abs(parseInt(k.css("top"),10))||0:Math.abs(parseInt(k.css("bottom"),10))||0},elementScroll:function(e){e=e||T.scrollTop();var t=h.cache.element,n=h.cache.scrollContext,i=h.get.scrollChange(e),o=t.height-n.height+v.offset,a=h.get.currentElementScroll(),r=a+i;return a=h.cache.fits||0>r?0:r>o?o:r}},remove:{lastScroll:function(){delete h.lastScroll},elementScroll:function(e){delete h.elementScroll},offset:function(){k.css("margin-top","")}},set:{offset:function(){h.verbose("Setting offset on element",v.offset),k.css("margin-top",v.offset)},containerSize:function(){var e=r.get(0).tagName;"HTML"===e||"body"==e?h.determineContainer():Math.abs(r.outerHeight()-h.cache.context.height)>v.jitter&&(h.debug("Context has padding, specifying exact height for container",h.cache.context.height),r.css({height:h.cache.context.height}))},minimumSize:function(){var e=h.cache.element;r.css("min-height",e.height)},scroll:function(e){h.debug("Setting scroll on element",e),h.elementScroll!=e&&(h.is.top()&&k.css("bottom","").css("top",-e),h.is.bottom()&&k.css("top","").css("bottom",e))},size:function(){0!==h.cache.element.height&&0!==h.cache.element.width&&(P.style.setProperty("width",h.cache.element.width+"px","important"),P.style.setProperty("height",h.cache.element.height+"px","important"))}},is:{standardScroll:function(){return T[0]==t},top:function(){return k.hasClass(b.top)},bottom:function(){return k.hasClass(b.bottom)},initialPosition:function(){return!h.is.fixed()&&!h.is.bound()},hidden:function(){return!k.is(":visible")},bound:function(){return k.hasClass(b.bound)},fixed:function(){return k.hasClass(b.fixed)}},stick:function(e){var t=e||T.scrollTop(),n=h.cache,i=n.fits,o=n.element,a=n.scrollContext,r=n.context,s=h.is.bottom()&&v.pushing?v.bottomOffset:v.offset,e={top:t+s,bottom:t+s+a.height},l=(h.get.direction(e.top),i?0:h.get.elementScroll(e.top)),c=!i,u=0!==o.height;u&&(h.is.initialPosition()?e.top>=r.bottom?(h.debug("Initial element position is bottom of container"),h.bindBottom()):e.top>o.top&&(o.height+e.top-l>=r.bottom?(h.debug("Initial element position is bottom of container"),h.bindBottom()):(h.debug("Initial element position is fixed"),h.fixTop())):h.is.fixed()?h.is.top()?e.top<=o.top?(h.debug("Fixed element reached top of container"),h.setInitialPosition()):o.height+e.top-l>=r.bottom?(h.debug("Fixed element reached bottom of container"),h.bindBottom()):c&&(h.set.scroll(l),h.save.lastScroll(e.top),h.save.elementScroll(l)):h.is.bottom()&&(e.bottom-o.height<=o.top?(h.debug("Bottom fixed rail has reached top of container"),h.setInitialPosition()):e.bottom>=r.bottom?(h.debug("Bottom fixed rail has reached bottom of container"),h.bindBottom()):c&&(h.set.scroll(l),h.save.lastScroll(e.top),h.save.elementScroll(l))):h.is.bottom()&&(e.top<=o.top?(h.debug("Jumped from bottom fixed to top fixed, most likely used home/end button"),h.setInitialPosition()):v.pushing?h.is.bound()&&e.bottom<=r.bottom&&(h.debug("Fixing bottom attached element to bottom of browser."),h.fixBottom()):h.is.bound()&&e.top<=r.bottom-o.height&&(h.debug("Fixing bottom attached element to top of browser."),h.fixTop())))},bindTop:function(){h.debug("Binding element to top of parent container"),h.remove.offset(),k.css({left:"",top:"",marginBottom:""}).removeClass(b.fixed).removeClass(b.bottom).addClass(b.bound).addClass(b.top),v.onTop.call(P),v.onUnstick.call(P)},bindBottom:function(){h.debug("Binding element to bottom of parent container"),h.remove.offset(),k.css({left:"",top:""}).removeClass(b.fixed).removeClass(b.top).addClass(b.bound).addClass(b.bottom),v.onBottom.call(P),v.onUnstick.call(P)},setInitialPosition:function(){h.debug("Returning to initial position"),h.unfix(),h.unbind()},fixTop:function(){h.debug("Fixing element to top of page"),h.set.minimumSize(),h.set.offset(),k.css({left:h.cache.element.left,bottom:"",marginBottom:""}).removeClass(b.bound).removeClass(b.bottom).addClass(b.fixed).addClass(b.top),v.onStick.call(P)},fixBottom:function(){h.debug("Sticking element to bottom of page"),h.set.minimumSize(),h.set.offset(),k.css({left:h.cache.element.left,bottom:"",marginBottom:""}).removeClass(b.bound).removeClass(b.top).addClass(b.fixed).addClass(b.bottom),v.onStick.call(P)},unbind:function(){h.is.bound()&&(h.debug("Removing container bound position on element"),h.remove.offset(),k.removeClass(b.bound).removeClass(b.top).removeClass(b.bottom))},unfix:function(){h.is.fixed()&&(h.debug("Removing fixed position on element"),h.remove.offset(),k.removeClass(b.fixed).removeClass(b.top).removeClass(b.bottom),v.onUnstick.call(P))},reset:function(){h.debug("Resetting elements position"),h.unbind(),h.unfix(),h.resetCSS(),h.remove.offset(),h.remove.lastScroll()},resetCSS:function(){k.css({width:"",height:""}),r.css({height:""})},setting:function(t,n){if(e.isPlainObject(t))e.extend(!0,v,t);else{if(n===i)return v[t];v[t]=n}},internal:function(t,n){if(e.isPlainObject(t))e.extend(!0,h,t);else{if(n===i)return h[t];h[t]=n}},debug:function(){!v.silent&&v.debug&&(v.performance?h.performance.log(arguments):(h.debug=Function.prototype.bind.call(console.info,console,v.name+":"),h.debug.apply(console,arguments)))},verbose:function(){!v.silent&&v.verbose&&v.debug&&(v.performance?h.performance.log(arguments):(h.verbose=Function.prototype.bind.call(console.info,console,v.name+":"),h.verbose.apply(console,arguments)))},error:function(){v.silent||(h.error=Function.prototype.bind.call(console.error,console,v.name+":"),h.error.apply(console,arguments))},performance:{log:function(e){var t,n,i;v.performance&&(t=(new Date).getTime(),i=l||t,n=t-i,l=t,c.push({Name:e[0],Arguments:[].slice.call(e,1)||"",Element:P,"Execution Time":n})),clearTimeout(h.performance.timer),h.performance.timer=setTimeout(h.performance.display,0)},display:function(){var t=v.name+":",n=0;l=!1,clearTimeout(h.performance.timer),e.each(c,function(e,t){n+=t["Execution Time"]}),t+=" "+n+"ms",s&&(t+=" '"+s+"'"),(console.group!==i||console.table!==i)&&c.length>0&&(console.groupCollapsed(t),console.table?console.table(c):e.each(c,function(e,t){console.log(t.Name+": "+t["Execution Time"]+"ms")}),console.groupEnd()),c=[]}},invoke:function(t,n,o){var r,s,l,c=A;return n=n||f,o=P||o,"string"==typeof t&&c!==i&&(t=t.split(/[\. ]/),r=t.length-1,e.each(t,function(n,o){var a=n!=r?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(c[a])&&n!=r)c=c[a];else{if(c[a]!==i)return s=c[a],!1;if(!e.isPlainObject(c[o])||n==r)return c[o]!==i?(s=c[o],!1):!1;c=c[o]}})),e.isFunction(s)?l=s.apply(o,n):s!==i&&(l=s),e.isArray(a)?a.push(l):a!==i?a=[a,l]:l!==i&&(a=l),s}},d?(A===i&&h.initialize(),h.invoke(u)):(A!==i&&A.invoke("destroy"),h.initialize())}),a!==i?a:this},e.fn.sticky.settings={name:"Sticky",namespace:"sticky",silent:!1,debug:!1,verbose:!0,performance:!0,pushing:!1,context:!1,scrollContext:t,offset:0,bottomOffset:0,jitter:5,observeChanges:!1,onReposition:function(){},onScroll:function(){},onStick:function(){},onUnstick:function(){},onTop:function(){},onBottom:function(){},error:{container:"Sticky element must be inside a relative container",visible:"Element is hidden, you must call refresh after element becomes visible. Use silent setting to surpress this warning in production.",method:"The method you called is not defined.",invalidContext:"Context specified does not exist",elementSize:"Sticky element is larger than its container, cannot create sticky."},className:{bound:"bound",fixed:"fixed",supported:"native",top:"top",bottom:"bottom"}}}(jQuery,window,document),function(e,t,n,i){"use strict";t="undefined"!=typeof t&&t.Math==Math?t:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),e.fn.tab=function(o){var a,r=e(e.isFunction(this)?t:this),s=r.selector||"",l=(new Date).getTime(),c=[],u=arguments[0],d="string"==typeof u,f=[].slice.call(arguments,1),m=!1;return r.each(function(){var g,p,h,v,b,y,x=e.isPlainObject(o)?e.extend(!0,{},e.fn.tab.settings,o):e.extend({},e.fn.tab.settings),C=x.className,w=x.metadata,k=x.selector,S=x.error,T="."+x.namespace,A="module-"+x.namespace,R=e(this),P={},E=!0,F=0,O=this,D=R.data(A);b={initialize:function(){b.debug("Initializing tab menu item",R),b.fix.callbacks(),b.determineTabs(),b.debug("Determining tabs",x.context,p),x.auto&&b.set.auto(),b.bind.events(),x.history&&!m&&(b.initializeHistory(),m=!0),b.instantiate()},instantiate:function(){b.verbose("Storing instance of module",b),D=b,R.data(A,b)},destroy:function(){b.debug("Destroying tabs",R),R.removeData(A).off(T)},bind:{events:function(){e.isWindow(O)||(b.debug("Attaching tab activation events to element",R),R.on("click"+T,b.event.click))}},determineTabs:function(){var t;"parent"===x.context?(R.closest(k.ui).length>0?(t=R.closest(k.ui),b.verbose("Using closest UI element as parent",t)):t=R,g=t.parent(),b.verbose("Determined parent element for creating context",g)):x.context?(g=e(x.context),b.verbose("Using selector for tab context",x.context,g)):g=e("body"),x.childrenOnly?(p=g.children(k.tabs),b.debug("Searching tab context children for tabs",g,p)):(p=g.find(k.tabs),b.debug("Searching tab context for tabs",g,p))},fix:{callbacks:function(){e.isPlainObject(o)&&(o.onTabLoad||o.onTabInit)&&(o.onTabLoad&&(o.onLoad=o.onTabLoad,delete o.onTabLoad,b.error(S.legacyLoad,o.onLoad)),o.onTabInit&&(o.onFirstLoad=o.onTabInit,delete o.onTabInit,b.error(S.legacyInit,o.onFirstLoad)),x=e.extend(!0,{},e.fn.tab.settings,o))}},initializeHistory:function(){if(b.debug("Initializing page state"),e.address===i)return b.error(S.state),!1;if("state"==x.historyType){if(b.debug("Using HTML5 to manage state"),x.path===!1)return b.error(S.path),!1;e.address.history(!0).state(x.path)}e.address.bind("change",b.event.history.change)},event:{click:function(t){var n=e(this).data(w.tab);n!==i?(x.history?(b.verbose("Updating page state",t),e.address.value(n)):(b.verbose("Changing tab",t),b.changeTab(n)),t.preventDefault()):b.debug("No tab specified")},history:{change:function(t){var n=t.pathNames.join("/")||b.get.initialPath(),o=x.templates.determineTitle(n)||!1;b.performance.display(),b.debug("History change event",n,t),y=t,n!==i&&b.changeTab(n),o&&e.address.title(o)}}},refresh:function(){h&&(b.debug("Refreshing tab",h),b.changeTab(h))},cache:{read:function(e){return e!==i?P[e]:!1},add:function(e,t){e=e||h,b.debug("Adding cached content for",e),P[e]=t},remove:function(e){e=e||h,b.debug("Removing cached content for",e),delete P[e]}},set:{auto:function(){var t="string"==typeof x.path?x.path.replace(/\/$/,"")+"/{$tab}":"/{$tab}";b.verbose("Setting up automatic tab retrieval from server",t),e.isPlainObject(x.apiSettings)?x.apiSettings.url=t:x.apiSettings={url:t}},loading:function(e){var t=b.get.tabElement(e),n=t.hasClass(C.loading);n||(b.verbose("Setting loading state for",t),t.addClass(C.loading).siblings(p).removeClass(C.active+" "+C.loading),t.length>0&&x.onRequest.call(t[0],e))},state:function(t){e.address.value(t)}},changeTab:function(n){var i=t.history&&t.history.pushState,o=i&&x.ignoreFirstLoad&&E,a=x.auto||e.isPlainObject(x.apiSettings),r=a&&!o?b.utilities.pathToArray(n):b.get.defaultPathArray(n);n=b.utilities.arrayToPath(r),e.each(r,function(t,i){var s,l,c,u,d=r.slice(0,t+1),f=b.utilities.arrayToPath(d),m=b.is.tab(f),p=t+1==r.length,k=b.get.tabElement(f);if(b.verbose("Looking for tab",i),m){if(b.verbose("Tab was found",i),h=f,v=b.utilities.filterArray(r,d),p?u=!0:(l=r.slice(0,t+2),c=b.utilities.arrayToPath(l),u=!b.is.tab(c),u&&b.verbose("Tab parameters found",l)),u&&a)return o?(b.debug("Ignoring remote content on first tab load",f),E=!1,b.cache.add(n,k.html()),b.activate.all(f),x.onFirstLoad.call(k[0],f,v,y),x.onLoad.call(k[0],f,v,y)):(b.activate.navigation(f),b.fetch.content(f,n)),!1;b.debug("Opened local tab",f),b.activate.all(f),b.cache.read(f)||(b.cache.add(f,!0),b.debug("First time tab loaded calling tab init"),x.onFirstLoad.call(k[0],f,v,y)),x.onLoad.call(k[0],f,v,y)}else{if(-1!=n.search("/")||""===n)return b.error(S.missingTab,R,g,f),!1;if(s=e("#"+n+', a[name="'+n+'"]'),f=s.closest("[data-tab]").data(w.tab),k=b.get.tabElement(f),s&&s.length>0&&f)return b.debug("Anchor link used, opening parent tab",k,s),k.hasClass(C.active)||setTimeout(function(){b.scrollTo(s)},0),b.activate.all(f),b.cache.read(f)||(b.cache.add(f,!0),b.debug("First time tab loaded calling tab init"),x.onFirstLoad.call(k[0],f,v,y)),x.onLoad.call(k[0],f,v,y),!1}})},scrollTo:function(t){var i=t&&t.length>0?t.offset().top:!1;i!==!1&&(b.debug("Forcing scroll to an in-page link in a hidden tab",i,t),e(n).scrollTop(i))},update:{content:function(e,t,n){var o=b.get.tabElement(e),a=o[0];n=n!==i?n:x.evaluateScripts,n?(b.debug("Updating HTML and evaluating inline scripts",e,t),o.html(t)):(b.debug("Updating HTML",e,t),a.innerHTML=t)}},fetch:{content:function(t,n){var o,a,r=b.get.tabElement(t),s={dataType:"html",encodeParameters:!1,on:"now",cache:x.alwaysRefresh,headers:{"X-Remote":!0},onSuccess:function(e){"response"==x.cacheType&&b.cache.add(n,e),b.update.content(t,e),t==h?(b.debug("Content loaded",t),b.activate.tab(t)):b.debug("Content loaded in background",t),x.onFirstLoad.call(r[0],t,v,y),x.onLoad.call(r[0],t,v,y),"response"!=x.cacheType&&b.cache.add(n,r.html())},urlData:{tab:n}},l=r.api("get request")||!1,c=l&&"pending"===l.state();n=n||t,a=b.cache.read(n),x.cache&&a?(b.activate.tab(t),b.debug("Adding cached content",n),"once"==x.evaluateScripts?b.update.content(t,a,!1):b.update.content(t,a),x.onLoad.call(r[0],t,v,y)):c?(b.set.loading(t),b.debug("Content is already loading",n)):e.api!==i?(o=e.extend(!0,{},x.apiSettings,s),b.debug("Retrieving remote content",n,o),b.set.loading(t),r.api(o)):b.error(S.api)}},activate:{all:function(e){b.activate.tab(e),b.activate.navigation(e)},tab:function(e){var t=b.get.tabElement(e),n="siblings"==x.deactivate?t.siblings(p):p.not(t),i=t.hasClass(C.active);b.verbose("Showing tab content for",t),i||(t.addClass(C.active),n.removeClass(C.active+" "+C.loading),t.length>0&&x.onVisible.call(t[0],e))},navigation:function(e){var t=b.get.navElement(e),n="siblings"==x.deactivate?t.siblings(r):r.not(t),i=t.hasClass(C.active);b.verbose("Activating tab navigation for",t,e),i||(t.addClass(C.active),n.removeClass(C.active+" "+C.loading))}},deactivate:{all:function(){b.deactivate.navigation(),b.deactivate.tabs()},navigation:function(){r.removeClass(C.active)},tabs:function(){p.removeClass(C.active+" "+C.loading)}},is:{tab:function(e){return e!==i?b.get.tabElement(e).length>0:!1}},get:{initialPath:function(){return r.eq(0).data(w.tab)||p.eq(0).data(w.tab)},path:function(){return e.address.value()},defaultPathArray:function(e){return b.utilities.pathToArray(b.get.defaultPath(e))},defaultPath:function(e){var t=r.filter("[data-"+w.tab+'^="'+e+'/"]').eq(0),n=t.data(w.tab)||!1;if(n){if(b.debug("Found default tab",n),F0?t:n},tab:function(){return h}},utilities:{filterArray:function(t,n){return e.grep(t,function(t){return-1==e.inArray(t,n)})},last:function(t){return e.isArray(t)?t[t.length-1]:!1},pathToArray:function(e){return e===i&&(e=h),"string"==typeof e?e.split("/"):[e]},arrayToPath:function(t){return e.isArray(t)?t.join("/"):!1}},setting:function(t,n){if(b.debug("Changing setting",t,n),e.isPlainObject(t))e.extend(!0,x,t);else{if(n===i)return x[t];e.isPlainObject(x[t])?e.extend(!0,x[t],n):x[t]=n}},internal:function(t,n){if(e.isPlainObject(t))e.extend(!0,b,t);else{if(n===i)return b[t];b[t]=n}},debug:function(){!x.silent&&x.debug&&(x.performance?b.performance.log(arguments):(b.debug=Function.prototype.bind.call(console.info,console,x.name+":"),b.debug.apply(console,arguments)))},verbose:function(){!x.silent&&x.verbose&&x.debug&&(x.performance?b.performance.log(arguments):(b.verbose=Function.prototype.bind.call(console.info,console,x.name+":"),b.verbose.apply(console,arguments)))},error:function(){x.silent||(b.error=Function.prototype.bind.call(console.error,console,x.name+":"),b.error.apply(console,arguments))},performance:{log:function(e){var t,n,i;x.performance&&(t=(new Date).getTime(),i=l||t,n=t-i,l=t,c.push({Name:e[0],Arguments:[].slice.call(e,1)||"",Element:O,"Execution Time":n})),clearTimeout(b.performance.timer),b.performance.timer=setTimeout(b.performance.display,500)},display:function(){var t=x.name+":",n=0;l=!1,clearTimeout(b.performance.timer),e.each(c,function(e,t){n+=t["Execution Time"]}),t+=" "+n+"ms",s&&(t+=" '"+s+"'"),(console.group!==i||console.table!==i)&&c.length>0&&(console.groupCollapsed(t),console.table?console.table(c):e.each(c,function(e,t){console.log(t.Name+": "+t["Execution Time"]+"ms")}),console.groupEnd()),c=[]}},invoke:function(t,n,o){var r,s,l,c=D;return n=n||f,o=O||o,"string"==typeof t&&c!==i&&(t=t.split(/[\. ]/),r=t.length-1,e.each(t,function(n,o){var a=n!=r?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(c[a])&&n!=r)c=c[a];else{if(c[a]!==i)return s=c[a],!1;if(!e.isPlainObject(c[o])||n==r)return c[o]!==i?(s=c[o],!1):(b.error(S.method,t),!1);c=c[o]}})),e.isFunction(s)?l=s.apply(o,n):s!==i&&(l=s),e.isArray(a)?a.push(l):a!==i?a=[a,l]:l!==i&&(a=l),s}},d?(D===i&&b.initialize(),b.invoke(u)):(D!==i&&D.invoke("destroy"),b.initialize())}),a!==i?a:this},e.tab=function(){e(t).tab.apply(this,arguments)},e.fn.tab.settings={name:"Tab",namespace:"tab",silent:!1,debug:!1,verbose:!1,performance:!0,auto:!1,history:!1,historyType:"hash",path:!1,context:!1,childrenOnly:!1,maxDepth:25,deactivate:"siblings",alwaysRefresh:!1,cache:!0,cacheType:"response",ignoreFirstLoad:!1,apiSettings:!1,evaluateScripts:"once",onFirstLoad:function(e,t,n){},onLoad:function(e,t,n){},onVisible:function(e,t,n){},onRequest:function(e,t,n){},templates:{determineTitle:function(e){}},error:{api:"You attempted to load content without API module",method:"The method you called is not defined",missingTab:"Activated tab cannot be found. Tabs are case-sensitive.",noContent:"The tab you specified is missing a content url.",path:"History enabled, but no path was specified",recursion:"Max recursive depth reached",legacyInit:"onTabInit has been renamed to onFirstLoad in 2.0, please adjust your code.",legacyLoad:"onTabLoad has been renamed to onLoad in 2.0. Please adjust your code",state:"History requires Asual's Address library "},metadata:{tab:"tab",loaded:"loaded",promise:"promise"},className:{loading:"loading",active:"active"},selector:{tabs:".ui.tab",ui:".ui"}}}(jQuery,window,document),function(e,t,n,i){"use strict";t="undefined"!=typeof t&&t.Math==Math?t:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),e.fn.transition=function(){var o,a=e(this),r=a.selector||"",s=(new Date).getTime(),l=[],c=arguments,u=c[0],d=[].slice.call(arguments,1),f="string"==typeof u;t.requestAnimationFrame||t.mozRequestAnimationFrame||t.webkitRequestAnimationFrame||t.msRequestAnimationFrame||function(e){setTimeout(e,0)};return a.each(function(t){var m,g,p,h,v,b,y,x,C,w=e(this),k=this;C={initialize:function(){m=C.get.settings.apply(k,c),h=m.className,p=m.error,v=m.metadata, -x="."+m.namespace,y="module-"+m.namespace,g=w.data(y)||C,b=C.get.animationEndEvent(),f&&(f=C.invoke(u)),f===!1&&(C.verbose("Converted arguments into settings object",m),m.interval?C.delay(m.animate):C.animate(),C.instantiate())},instantiate:function(){C.verbose("Storing instance of module",C),g=C,w.data(y,g)},destroy:function(){C.verbose("Destroying previous module for",k),w.removeData(y)},refresh:function(){C.verbose("Refreshing display type on next animation"),delete C.displayType},forceRepaint:function(){C.verbose("Forcing element repaint");var e=w.parent(),t=w.next();0===t.length?w.detach().appendTo(e):w.detach().insertBefore(t)},repaint:function(){C.verbose("Repainting element");k.offsetWidth},delay:function(e){var n,o,r=C.get.animationDirection();r||(r=C.can.transition()?C.get.direction():"static"),e=e!==i?e:m.interval,n="auto"==m.reverse&&r==h.outward,o=n||1==m.reverse?(a.length-t)*m.interval:t*m.interval,C.debug("Delaying animation by",o),setTimeout(C.animate,o)},animate:function(e){if(m=e||m,!C.is.supported())return C.error(p.support),!1;if(C.debug("Preparing animation",m.animation),C.is.animating()){if(m.queue)return!m.allowRepeats&&C.has.direction()&&C.is.occurring()&&C.queuing!==!0?C.debug("Animation is currently occurring, preventing queueing same animation",m.animation):C.queue(m.animation),!1;if(!m.allowRepeats&&C.is.occurring())return C.debug("Animation is already occurring, will not execute repeated animation",m.animation),!1;C.debug("New animation started, completing previous early",m.animation),g.complete()}C.can.animate()?C.set.animating(m.animation):C.error(p.noAnimation,m.animation,k)},reset:function(){C.debug("Resetting animation to beginning conditions"),C.remove.animationCallbacks(),C.restore.conditions(),C.remove.animating()},queue:function(e){C.debug("Queueing animation of",e),C.queuing=!0,w.one(b+".queue"+x,function(){C.queuing=!1,C.repaint(),C.animate.apply(this,m)})},complete:function(e){C.debug("Animation complete",m.animation),C.remove.completeCallback(),C.remove.failSafe(),C.is.looping()||(C.is.outward()?(C.verbose("Animation is outward, hiding element"),C.restore.conditions(),C.hide()):C.is.inward()?(C.verbose("Animation is outward, showing element"),C.restore.conditions(),C.show()):(C.verbose("Static animation completed"),C.restore.conditions(),m.onComplete.call(k)))},force:{visible:function(){var e=w.attr("style"),t=C.get.userStyle(),n=C.get.displayType(),o=t+"display: "+n+" !important;",a=w.css("display"),r=e===i||""===e;a!==n?(C.verbose("Overriding default display to show element",n),w.attr("style",o)):r&&w.removeAttr("style")},hidden:function(){var e=w.attr("style"),t=w.css("display"),n=e===i||""===e;"none"===t||C.is.hidden()?n&&w.removeAttr("style"):(C.verbose("Overriding default display to hide element"),w.css("display","none"))}},has:{direction:function(t){var n=!1;return t=t||m.animation,"string"==typeof t&&(t=t.split(" "),e.each(t,function(e,t){(t===h.inward||t===h.outward)&&(n=!0)})),n},inlineDisplay:function(){var t=w.attr("style")||"";return e.isArray(t.match(/display.*?;/,""))}},set:{animating:function(e){var t;C.remove.completeCallback(),e=e||m.animation,t=C.get.animationClass(e),C.save.animation(t),C.force.visible(),C.remove.hidden(),C.remove.direction(),C.start.animation(t)},duration:function(e,t){t=t||m.duration,t="number"==typeof t?t+"ms":t,(t||0===t)&&(C.verbose("Setting animation duration",t),w.css({"animation-duration":t}))},direction:function(e){e=e||C.get.direction(),e==h.inward?C.set.inward():C.set.outward()},looping:function(){C.debug("Transition set to loop"),w.addClass(h.looping)},hidden:function(){w.addClass(h.transition).addClass(h.hidden)},inward:function(){C.debug("Setting direction to inward"),w.removeClass(h.outward).addClass(h.inward)},outward:function(){C.debug("Setting direction to outward"),w.removeClass(h.inward).addClass(h.outward)},visible:function(){w.addClass(h.transition).addClass(h.visible)}},start:{animation:function(e){e=e||C.get.animationClass(),C.debug("Starting tween",e),w.addClass(e).one(b+".complete"+x,C.complete),m.useFailSafe&&C.add.failSafe(),C.set.duration(m.duration),m.onStart.call(k)}},save:{animation:function(e){C.cache||(C.cache={}),C.cache.animation=e},displayType:function(e){"none"!==e&&w.data(v.displayType,e)},transitionExists:function(t,n){e.fn.transition.exists[t]=n,C.verbose("Saving existence of transition",t,n)}},restore:{conditions:function(){var e=C.get.currentAnimation();e&&(w.removeClass(e),C.verbose("Removing animation class",C.cache)),C.remove.duration()}},add:{failSafe:function(){var e=C.get.duration();C.timer=setTimeout(function(){w.triggerHandler(b)},e+m.failSafeDelay),C.verbose("Adding fail safe timer",C.timer)}},remove:{animating:function(){w.removeClass(h.animating)},animationCallbacks:function(){C.remove.queueCallback(),C.remove.completeCallback()},queueCallback:function(){w.off(".queue"+x)},completeCallback:function(){w.off(".complete"+x)},display:function(){w.css("display","")},direction:function(){w.removeClass(h.inward).removeClass(h.outward)},duration:function(){w.css("animation-duration","")},failSafe:function(){C.verbose("Removing fail safe timer",C.timer),C.timer&&clearTimeout(C.timer)},hidden:function(){w.removeClass(h.hidden)},visible:function(){w.removeClass(h.visible)},looping:function(){C.debug("Transitions are no longer looping"),C.is.looping()&&(C.reset(),w.removeClass(h.looping))},transition:function(){w.removeClass(h.visible).removeClass(h.hidden)}},get:{settings:function(t,n,i){return"object"==typeof t?e.extend(!0,{},e.fn.transition.settings,t):"function"==typeof i?e.extend({},e.fn.transition.settings,{animation:t,onComplete:i,duration:n}):"string"==typeof n||"number"==typeof n?e.extend({},e.fn.transition.settings,{animation:t,duration:n}):"object"==typeof n?e.extend({},e.fn.transition.settings,n,{animation:t}):"function"==typeof n?e.extend({},e.fn.transition.settings,{animation:t,onComplete:n}):e.extend({},e.fn.transition.settings,{animation:t})},animationClass:function(e){var t=e||m.animation,n=C.can.transition()&&!C.has.direction()?C.get.direction()+" ":"";return h.animating+" "+h.transition+" "+n+t},currentAnimation:function(){return C.cache&&C.cache.animation!==i?C.cache.animation:!1},currentDirection:function(){return C.is.inward()?h.inward:h.outward},direction:function(){return C.is.hidden()||!C.is.visible()?h.inward:h.outward},animationDirection:function(t){var n;return t=t||m.animation,"string"==typeof t&&(t=t.split(" "),e.each(t,function(e,t){t===h.inward?n=h.inward:t===h.outward&&(n=h.outward)})),n?n:!1},duration:function(e){return e=e||m.duration,e===!1&&(e=w.css("animation-duration")||0),"string"==typeof e?e.indexOf("ms")>-1?parseFloat(e):1e3*parseFloat(e):e},displayType:function(){return m.displayType?m.displayType:(w.data(v.displayType)===i&&C.can.transition(!0),w.data(v.displayType))},userStyle:function(e){return e=e||w.attr("style")||"",e.replace(/display.*?;/,"")},transitionExists:function(t){return e.fn.transition.exists[t]},animationStartEvent:function(){var e,t=n.createElement("div"),o={animation:"animationstart",OAnimation:"oAnimationStart",MozAnimation:"mozAnimationStart",WebkitAnimation:"webkitAnimationStart"};for(e in o)if(t.style[e]!==i)return o[e];return!1},animationEndEvent:function(){var e,t=n.createElement("div"),o={animation:"animationend",OAnimation:"oAnimationEnd",MozAnimation:"mozAnimationEnd",WebkitAnimation:"webkitAnimationEnd"};for(e in o)if(t.style[e]!==i)return o[e];return!1}},can:{transition:function(t){var n,o,a,r,s,l,c,u=m.animation,d=C.get.transitionExists(u);if(d===i||t){if(C.verbose("Determining whether animation exists"),n=w.attr("class"),o=w.prop("tagName"),a=e("<"+o+" />").addClass(n).insertAfter(w),r=a.addClass(u).removeClass(h.inward).removeClass(h.outward).addClass(h.animating).addClass(h.transition).css("animationName"),s=a.addClass(h.inward).css("animationName"),c=a.attr("class",n).removeAttr("style").removeClass(h.hidden).removeClass(h.visible).show().css("display"),C.verbose("Determining final display state",c),C.save.displayType(c),a.remove(),r!=s)C.debug("Direction exists for animation",u),l=!0;else{if("none"==r||!r)return void C.debug("No animation defined in css",u);C.debug("Static animation found",u,c),l=!1}C.save.transitionExists(u,l)}return d!==i?d:l},animate:function(){return C.can.transition()!==i}},is:{animating:function(){return w.hasClass(h.animating)},inward:function(){return w.hasClass(h.inward)},outward:function(){return w.hasClass(h.outward)},looping:function(){return w.hasClass(h.looping)},occurring:function(e){return e=e||m.animation,e="."+e.replace(" ","."),w.filter(e).length>0},visible:function(){return w.is(":visible")},hidden:function(){return"hidden"===w.css("visibility")},supported:function(){return b!==!1}},hide:function(){C.verbose("Hiding element"),C.is.animating()&&C.reset(),k.blur(),C.remove.display(),C.remove.visible(),C.set.hidden(),C.force.hidden(),m.onHide.call(k),m.onComplete.call(k)},show:function(e){C.verbose("Showing element",e),C.remove.hidden(),C.set.visible(),C.force.visible(),m.onShow.call(k),m.onComplete.call(k)},toggle:function(){C.is.visible()?C.hide():C.show()},stop:function(){C.debug("Stopping current animation"),w.triggerHandler(b)},stopAll:function(){C.debug("Stopping all animation"),C.remove.queueCallback(),w.triggerHandler(b)},clear:{queue:function(){C.debug("Clearing animation queue"),C.remove.queueCallback()}},enable:function(){C.verbose("Starting animation"),w.removeClass(h.disabled)},disable:function(){C.debug("Stopping animation"),w.addClass(h.disabled)},setting:function(t,n){if(C.debug("Changing setting",t,n),e.isPlainObject(t))e.extend(!0,m,t);else{if(n===i)return m[t];e.isPlainObject(m[t])?e.extend(!0,m[t],n):m[t]=n}},internal:function(t,n){if(e.isPlainObject(t))e.extend(!0,C,t);else{if(n===i)return C[t];C[t]=n}},debug:function(){!m.silent&&m.debug&&(m.performance?C.performance.log(arguments):(C.debug=Function.prototype.bind.call(console.info,console,m.name+":"),C.debug.apply(console,arguments)))},verbose:function(){!m.silent&&m.verbose&&m.debug&&(m.performance?C.performance.log(arguments):(C.verbose=Function.prototype.bind.call(console.info,console,m.name+":"),C.verbose.apply(console,arguments)))},error:function(){m.silent||(C.error=Function.prototype.bind.call(console.error,console,m.name+":"),C.error.apply(console,arguments))},performance:{log:function(e){var t,n,i;m.performance&&(t=(new Date).getTime(),i=s||t,n=t-i,s=t,l.push({Name:e[0],Arguments:[].slice.call(e,1)||"",Element:k,"Execution Time":n})),clearTimeout(C.performance.timer),C.performance.timer=setTimeout(C.performance.display,500)},display:function(){var t=m.name+":",n=0;s=!1,clearTimeout(C.performance.timer),e.each(l,function(e,t){n+=t["Execution Time"]}),t+=" "+n+"ms",r&&(t+=" '"+r+"'"),a.length>1&&(t+=" ("+a.length+")"),(console.group!==i||console.table!==i)&&l.length>0&&(console.groupCollapsed(t),console.table?console.table(l):e.each(l,function(e,t){console.log(t.Name+": "+t["Execution Time"]+"ms")}),console.groupEnd()),l=[]}},invoke:function(t,n,a){var r,s,l,c=g;return n=n||d,a=k||a,"string"==typeof t&&c!==i&&(t=t.split(/[\. ]/),r=t.length-1,e.each(t,function(n,o){var a=n!=r?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(c[a])&&n!=r)c=c[a];else{if(c[a]!==i)return s=c[a],!1;if(!e.isPlainObject(c[o])||n==r)return c[o]!==i?(s=c[o],!1):!1;c=c[o]}})),e.isFunction(s)?l=s.apply(a,n):s!==i&&(l=s),e.isArray(o)?o.push(l):o!==i?o=[o,l]:l!==i&&(o=l),s!==i?s:!1}},C.initialize()}),o!==i?o:this},e.fn.transition.exists={},e.fn.transition.settings={name:"Transition",silent:!1,debug:!1,verbose:!1,performance:!0,namespace:"transition",interval:0,reverse:"auto",onStart:function(){},onComplete:function(){},onShow:function(){},onHide:function(){},useFailSafe:!0,failSafeDelay:100,allowRepeats:!1,displayType:!1,animation:"fade",duration:!1,queue:!0,metadata:{displayType:"display"},className:{animating:"animating",disabled:"disabled",hidden:"hidden",inward:"in",loading:"loading",looping:"looping",outward:"out",transition:"transition",visible:"visible"},error:{noAnimation:"Element is no longer attached to DOM. Unable to animate. Use silent setting to surpress this warning in production.",repeated:"That animation is already occurring, cancelling repeated animation",method:"The method you called is not defined",support:"This browser does not support CSS animations"}}}(jQuery,window,document),function(e,t,n,i){"use strict";var t="undefined"!=typeof t&&t.Math==Math?t:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();e.api=e.fn.api=function(n){var o,a=e(e.isFunction(this)?t:this),r=a.selector||"",s=(new Date).getTime(),l=[],c=arguments[0],u="string"==typeof c,d=[].slice.call(arguments,1);return a.each(function(){var a,f,m,g,p,h,v=e.isPlainObject(n)?e.extend(!0,{},e.fn.api.settings,n):e.extend({},e.fn.api.settings),b=v.namespace,y=v.metadata,x=v.selector,C=v.error,w=v.className,k="."+b,S="module-"+b,T=e(this),A=T.closest(x.form),R=v.stateContext?e(v.stateContext):T,P=this,E=R[0],F=T.data(S);h={initialize:function(){u||h.bind.events(),h.instantiate()},instantiate:function(){h.verbose("Storing instance of module",h),F=h,T.data(S,F)},destroy:function(){h.verbose("Destroying previous module for",P),T.removeData(S).off(k)},bind:{events:function(){var e=h.get.event();e?(h.verbose("Attaching API events to element",e),T.on(e+k,h.event.trigger)):"now"==v.on&&(h.debug("Querying API endpoint immediately"),h.query())}},decode:{json:function(e){if(e!==i&&"string"==typeof e)try{e=JSON.parse(e)}catch(t){}return e}},read:{cachedResponse:function(e){var n;return t.Storage===i?void h.error(C.noStorage):(n=sessionStorage.getItem(e),h.debug("Using cached response",e,n),n=h.decode.json(n))}},write:{cachedResponse:function(n,o){return o&&""===o?void h.debug("Response empty, not caching",o):t.Storage===i?void h.error(C.noStorage):(e.isPlainObject(o)&&(o=JSON.stringify(o)),sessionStorage.setItem(n,o),void h.verbose("Storing cached response for url",n,o))}},query:function(){if(h.is.disabled())return void h.debug("Element is disabled API request aborted");if(h.is.loading()){if(!v.interruptRequests)return void h.debug("Cancelling request, previous request is still pending");h.debug("Interrupting previous request"),h.abort()}return v.defaultData&&e.extend(!0,v.urlData,h.get.defaultData()),v.serializeForm&&(v.data=h.add.formData(v.data)),f=h.get.settings(),f===!1?(h.cancelled=!0,void h.error(C.beforeSend)):(h.cancelled=!1,m=h.get.templatedURL(),m||h.is.mocked()?(m=h.add.urlData(m),m||h.is.mocked()?(f.url=v.base+m,a=e.extend(!0,{},v,{type:v.method||v.type,data:g,url:v.base+m,beforeSend:v.beforeXHR,success:function(){},failure:function(){},complete:function(){}}),h.debug("Querying URL",a.url),h.verbose("Using AJAX settings",a),"local"===v.cache&&h.read.cachedResponse(m)?(h.debug("Response returned from local cache"),h.request=h.create.request(),void h.request.resolveWith(E,[h.read.cachedResponse(m)])):void(v.throttle?v.throttleFirstRequest||h.timer?(h.debug("Throttling request",v.throttle),clearTimeout(h.timer),h.timer=setTimeout(function(){h.timer&&delete h.timer,h.debug("Sending throttled request",g,a.method),h.send.request()},v.throttle)):(h.debug("Sending request",g,a.method),h.send.request(),h.timer=setTimeout(function(){},v.throttle)):(h.debug("Sending request",g,a.method),h.send.request()))):void 0):void h.error(C.missingURL))},should:{removeError:function(){return v.hideError===!0||"auto"===v.hideError&&!h.is.form()}},is:{disabled:function(){return T.filter(x.disabled).length>0},expectingJSON:function(){return"json"===v.dataType||"jsonp"===v.dataType},form:function(){return T.is("form")||R.is("form")},mocked:function(){return v.mockResponse||v.mockResponseAsync||v.response||v.responseAsync},input:function(){return T.is("input")},loading:function(){return h.request?"pending"==h.request.state():!1},abortedRequest:function(e){return e&&e.readyState!==i&&0===e.readyState?(h.verbose("XHR request determined to be aborted"),!0):(h.verbose("XHR request was not aborted"),!1)},validResponse:function(t){return h.is.expectingJSON()&&e.isFunction(v.successTest)?(h.debug("Checking JSON returned success",v.successTest,t),v.successTest(t)?(h.debug("Response passed success test",t),!0):(h.debug("Response failed success test",t),!1)):(h.verbose("Response is not JSON, skipping validation",v.successTest,t),!0)}},was:{cancelled:function(){return h.cancelled||!1},succesful:function(){return h.request&&"resolved"==h.request.state()},failure:function(){return h.request&&"rejected"==h.request.state()},complete:function(){return h.request&&("resolved"==h.request.state()||"rejected"==h.request.state())}},add:{urlData:function(t,n){var o,a;return t&&(o=t.match(v.regExp.required),a=t.match(v.regExp.optional),n=n||v.urlData,o&&(h.debug("Looking for required URL variables",o),e.each(o,function(o,a){var r=-1!==a.indexOf("$")?a.substr(2,a.length-3):a.substr(1,a.length-2),s=e.isPlainObject(n)&&n[r]!==i?n[r]:T.data(r)!==i?T.data(r):R.data(r)!==i?R.data(r):n[r];return s===i?(h.error(C.requiredParameter,r,t),t=!1,!1):(h.verbose("Found required variable",r,s),s=v.encodeParameters?h.get.urlEncodedValue(s):s,t=t.replace(a,s),void 0)})),a&&(h.debug("Looking for optional URL variables",o),e.each(a,function(o,a){var r=-1!==a.indexOf("$")?a.substr(3,a.length-4):a.substr(2,a.length-3),s=e.isPlainObject(n)&&n[r]!==i?n[r]:T.data(r)!==i?T.data(r):R.data(r)!==i?R.data(r):n[r];s!==i?(h.verbose("Optional variable Found",r,s),t=t.replace(a,s)):(h.verbose("Optional variable not found",r),t=-1!==t.indexOf("/"+a)?t.replace("/"+a,""):t.replace(a,""))}))),t},formData:function(t){var n,o=e.fn.serializeObject!==i,a=o?A.serializeObject():A.serialize();return t=t||v.data,n=e.isPlainObject(t),n?o?(h.debug("Extending existing data with form data",t,a),t=e.extend(!0,{},t,a)):(h.error(C.missingSerialize),h.debug("Cant extend data. Replacing data with form data",t,a),t=a):(h.debug("Adding form data",a),t=a),t}},send:{request:function(){h.set.loading(),h.request=h.create.request(),h.is.mocked()?h.mockedXHR=h.create.mockedXHR():h.xhr=h.create.xhr(),v.onRequest.call(E,h.request,h.xhr)}},event:{trigger:function(e){h.query(),("submit"==e.type||"click"==e.type)&&e.preventDefault()},xhr:{always:function(){},done:function(t,n,i){var o=this,a=(new Date).getTime()-p,r=v.loadingDuration-a,s=e.isFunction(v.onResponse)?h.is.expectingJSON()?v.onResponse.call(o,e.extend(!0,{},t)):v.onResponse.call(o,t):!1;r=r>0?r:0,s&&(h.debug("Modified API response in onResponse callback",v.onResponse,s,t),t=s),r>0&&h.debug("Response completed early delaying state change by",r),setTimeout(function(){h.is.validResponse(t)?h.request.resolveWith(o,[t,i]):h.request.rejectWith(o,[i,"invalid"])},r)},fail:function(e,t,n){var i=this,o=(new Date).getTime()-p,a=v.loadingDuration-o;a=a>0?a:0,a>0&&h.debug("Response completed early delaying state change by",a),setTimeout(function(){h.is.abortedRequest(e)?h.request.rejectWith(i,[e,"aborted",n]):h.request.rejectWith(i,[e,"error",t,n])},a)}},request:{done:function(e,t){h.debug("Successful API Response",e),"local"===v.cache&&m&&(h.write.cachedResponse(m,e),h.debug("Saving server response locally",h.cache)),v.onSuccess.call(E,e,T,t)},complete:function(e,t){var n,i;h.was.succesful()?(i=e,n=t):(n=e,i=h.get.responseFromXHR(n)),h.remove.loading(),v.onComplete.call(E,i,T,n)},fail:function(e,t,n){var o=h.get.responseFromXHR(e),r=h.get.errorFromRequest(o,t,n);return"aborted"==t?(h.debug("XHR Aborted (Most likely caused by page navigation or CORS Policy)",t,n),v.onAbort.call(E,t,T,e),!0):("invalid"==t?h.debug("JSON did not pass success test. A server-side error has most likely occurred",o):"error"==t&&e!==i&&(h.debug("XHR produced a server error",t,n),200!=e.status&&n!==i&&""!==n&&h.error(C.statusMessage+n,a.url),v.onError.call(E,r,T,e)),v.errorDuration&&"aborted"!==t&&(h.debug("Adding error state"),h.set.error(),h.should.removeError()&&setTimeout(h.remove.error,v.errorDuration)),h.debug("API Request failed",r,e),void v.onFailure.call(E,o,T,e))}}},create:{request:function(){return e.Deferred().always(h.event.request.complete).done(h.event.request.done).fail(h.event.request.fail)},mockedXHR:function(){var t,n,i,o=!1,a=!1,r=!1,s=v.mockResponse||v.response,l=v.mockResponseAsync||v.responseAsync;return i=e.Deferred().always(h.event.xhr.complete).done(h.event.xhr.done).fail(h.event.xhr.fail),s?(e.isFunction(s)?(h.debug("Using specified synchronous callback",s),n=s.call(E,f)):(h.debug("Using settings specified response",s),n=s),i.resolveWith(E,[n,o,{responseText:n}])):e.isFunction(l)&&(t=function(e){h.debug("Async callback returned response",e),e?i.resolveWith(E,[e,o,{responseText:e}]):i.rejectWith(E,[{responseText:e},a,r])},h.debug("Using specified async response callback",l),l.call(E,f,t)),i},xhr:function(){var t;return t=e.ajax(a).always(h.event.xhr.always).done(h.event.xhr.done).fail(h.event.xhr.fail),h.verbose("Created server request",t,a),t}},set:{error:function(){h.verbose("Adding error state to element",R),R.addClass(w.error)},loading:function(){h.verbose("Adding loading state to element",R),R.addClass(w.loading),p=(new Date).getTime()}},remove:{error:function(){h.verbose("Removing error state from element",R),R.removeClass(w.error)},loading:function(){h.verbose("Removing loading state from element",R),R.removeClass(w.loading)}},get:{responseFromXHR:function(t){return e.isPlainObject(t)?h.is.expectingJSON()?h.decode.json(t.responseText):t.responseText:!1},errorFromRequest:function(t,n,o){return e.isPlainObject(t)&&t.error!==i?t.error:v.error[n]!==i?v.error[n]:o},request:function(){return h.request||!1},xhr:function(){return h.xhr||!1},settings:function(){var t;return t=v.beforeSend.call(E,v),t&&(t.success!==i&&(h.debug("Legacy success callback detected",t),h.error(C.legacyParameters,t.success),t.onSuccess=t.success),t.failure!==i&&(h.debug("Legacy failure callback detected",t),h.error(C.legacyParameters,t.failure),t.onFailure=t.failure),t.complete!==i&&(h.debug("Legacy complete callback detected",t),h.error(C.legacyParameters,t.complete),t.onComplete=t.complete)),t===i&&h.error(C.noReturnedValue),t===!1?t:t!==i?e.extend(!0,{},t):e.extend(!0,{},v)},urlEncodedValue:function(e){var n=t.decodeURIComponent(e),i=t.encodeURIComponent(e),o=n!==e;return o?(h.debug("URL value is already encoded, avoiding double encoding",e),e):(h.verbose("Encoding value using encodeURIComponent",e,i),i)},defaultData:function(){var t={};return e.isWindow(P)||(h.is.input()?t.value=T.val():h.is.form()||(t.text=T.text())),t},event:function(){return e.isWindow(P)||"now"==v.on?(h.debug("API called without element, no events attached"),!1):"auto"==v.on?T.is("input")?P.oninput!==i?"input":P.onpropertychange!==i?"propertychange":"keyup":T.is("form")?"submit":"click":v.on},templatedURL:function(e){if(e=e||T.data(y.action)||v.action||!1,m=T.data(y.url)||v.url||!1)return h.debug("Using specified url",m),m;if(e){if(h.debug("Looking up url for action",e,v.api),v.api[e]===i&&!h.is.mocked())return void h.error(C.missingAction,v.action,v.api);m=v.api[e]}else h.is.form()&&(m=T.attr("action")||R.attr("action")||!1,h.debug("No url or action specified, defaulting to form action",m));return m}},abort:function(){var e=h.get.xhr();e&&"resolved"!==e.state()&&(h.debug("Cancelling API request"),e.abort())},reset:function(){h.remove.error(),h.remove.loading()},setting:function(t,n){if(h.debug("Changing setting",t,n),e.isPlainObject(t))e.extend(!0,v,t);else{if(n===i)return v[t];e.isPlainObject(v[t])?e.extend(!0,v[t],n):v[t]=n}},internal:function(t,n){if(e.isPlainObject(t))e.extend(!0,h,t);else{if(n===i)return h[t];h[t]=n}},debug:function(){!v.silent&&v.debug&&(v.performance?h.performance.log(arguments):(h.debug=Function.prototype.bind.call(console.info,console,v.name+":"),h.debug.apply(console,arguments)))},verbose:function(){!v.silent&&v.verbose&&v.debug&&(v.performance?h.performance.log(arguments):(h.verbose=Function.prototype.bind.call(console.info,console,v.name+":"),h.verbose.apply(console,arguments)))},error:function(){v.silent||(h.error=Function.prototype.bind.call(console.error,console,v.name+":"),h.error.apply(console,arguments))},performance:{log:function(e){var t,n,i;v.performance&&(t=(new Date).getTime(),i=s||t,n=t-i,s=t,l.push({Name:e[0],Arguments:[].slice.call(e,1)||"","Execution Time":n})),clearTimeout(h.performance.timer),h.performance.timer=setTimeout(h.performance.display,500)},display:function(){var t=v.name+":",n=0;s=!1,clearTimeout(h.performance.timer),e.each(l,function(e,t){n+=t["Execution Time"]}),t+=" "+n+"ms",r&&(t+=" '"+r+"'"),(console.group!==i||console.table!==i)&&l.length>0&&(console.groupCollapsed(t),console.table?console.table(l):e.each(l,function(e,t){console.log(t.Name+": "+t["Execution Time"]+"ms")}),console.groupEnd()),l=[]}},invoke:function(t,n,a){var r,s,l,c=F;return n=n||d,a=P||a,"string"==typeof t&&c!==i&&(t=t.split(/[\. ]/),r=t.length-1,e.each(t,function(n,o){var a=n!=r?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(c[a])&&n!=r)c=c[a];else{if(c[a]!==i)return s=c[a],!1;if(!e.isPlainObject(c[o])||n==r)return c[o]!==i?(s=c[o],!1):(h.error(C.method,t),!1);c=c[o]}})),e.isFunction(s)?l=s.apply(a,n):s!==i&&(l=s),e.isArray(o)?o.push(l):o!==i?o=[o,l]:l!==i&&(o=l),s}},u?(F===i&&h.initialize(),h.invoke(c)):(F!==i&&F.invoke("destroy"),h.initialize())}),o!==i?o:this},e.api.settings={name:"API",namespace:"api",debug:!1,verbose:!1,performance:!0,api:{},cache:!0,interruptRequests:!0,on:"auto",stateContext:!1,loadingDuration:0,hideError:"auto",errorDuration:2e3,encodeParameters:!0,action:!1,url:!1,base:"",urlData:{},defaultData:!0,serializeForm:!1,throttle:0,throttleFirstRequest:!0,method:"get",data:{},dataType:"json",mockResponse:!1,mockResponseAsync:!1,response:!1,responseAsync:!1,beforeSend:function(e){return e},beforeXHR:function(e){},onRequest:function(e,t){},onResponse:!1,onSuccess:function(e,t){},onComplete:function(e,t){},onFailure:function(e,t){},onError:function(e,t){},onAbort:function(e,t){},successTest:!1,error:{beforeSend:"The before send function has aborted the request",error:"There was an error with your request",exitConditions:"API Request Aborted. Exit conditions met",JSONParse:"JSON could not be parsed during error handling",legacyParameters:"You are using legacy API success callback names",method:"The method you called is not defined",missingAction:"API action used but no url was defined",missingSerialize:"jquery-serialize-object is required to add form data to an existing data object",missingURL:"No URL specified for api event",noReturnedValue:"The beforeSend callback must return a settings object, beforeSend ignored.",noStorage:"Caching responses locally requires session storage",parseError:"There was an error parsing your request",requiredParameter:"Missing a required URL parameter: ",statusMessage:"Server gave an error: ",timeout:"Your request timed out"},regExp:{required:/\{\$*[A-z0-9]+\}/g,optional:/\{\/\$*[A-z0-9]+\}/g},className:{loading:"loading",error:"error"},selector:{disabled:".disabled",form:"form"},metadata:{action:"action",url:"url"}}}(jQuery,window,document),function(e,t,n,i){"use strict";t="undefined"!=typeof t&&t.Math==Math?t:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),e.fn.state=function(t){var o,a=e(this),r=a.selector||"",s=("ontouchstart"in n.documentElement,(new Date).getTime()),l=[],c=arguments[0],u="string"==typeof c,d=[].slice.call(arguments,1);return a.each(function(){var n,f=e.isPlainObject(t)?e.extend(!0,{},e.fn.state.settings,t):e.extend({},e.fn.state.settings),m=f.error,g=f.metadata,p=f.className,h=f.namespace,v=f.states,b=f.text,y="."+h,x=h+"-module",C=e(this),w=this,k=C.data(x);n={initialize:function(){n.verbose("Initializing module"),f.automatic&&n.add.defaults(),f.context&&""!==r?e(f.context).on(r,"mouseenter"+y,n.change.text).on(r,"mouseleave"+y,n.reset.text).on(r,"click"+y,n.toggle.state):C.on("mouseenter"+y,n.change.text).on("mouseleave"+y,n.reset.text).on("click"+y,n.toggle.state),n.instantiate()},instantiate:function(){n.verbose("Storing instance of module",n),k=n,C.data(x,n)},destroy:function(){n.verbose("Destroying previous module",k),C.off(y).removeData(x)},refresh:function(){n.verbose("Refreshing selector cache"),C=e(w)},add:{defaults:function(){var o=t&&e.isPlainObject(t.states)?t.states:{};e.each(f.defaults,function(t,a){n.is[t]!==i&&n.is[t]()&&(n.verbose("Adding default states",t,w),e.extend(f.states,a,o))})}},is:{active:function(){return C.hasClass(p.active)},loading:function(){return C.hasClass(p.loading)},inactive:function(){return!C.hasClass(p.active)},state:function(e){return p[e]===i?!1:C.hasClass(p[e])},enabled:function(){return!C.is(f.filter.active)},disabled:function(){return C.is(f.filter.active)},textEnabled:function(){return!C.is(f.filter.text)},button:function(){return C.is(".button:not(a, .submit)")},input:function(){return C.is("input")},progress:function(){return C.is(".ui.progress")}},allow:function(e){n.debug("Now allowing state",e),v[e]=!0},disallow:function(e){n.debug("No longer allowing",e),v[e]=!1},allows:function(e){return v[e]||!1},enable:function(){C.removeClass(p.disabled)},disable:function(){C.addClass(p.disabled)},setState:function(e){n.allows(e)&&C.addClass(p[e])},removeState:function(e){n.allows(e)&&C.removeClass(p[e])},toggle:{state:function(){var t,o;if(n.allows("active")&&n.is.enabled()){if(n.refresh(),e.fn.api!==i)if(t=C.api("get request"),o=C.api("was cancelled"))n.debug("API Request cancelled by beforesend"),f.activateTest=function(){return!1},f.deactivateTest=function(){return!1};else if(t)return void n.listenTo(t);n.change.state()}}},listenTo:function(t){n.debug("API request detected, waiting for state signal",t),t&&(b.loading&&n.update.text(b.loading),e.when(t).then(function(){"resolved"==t.state()?(n.debug("API request succeeded"),f.activateTest=function(){return!0},f.deactivateTest=function(){return!0}):(n.debug("API request failed"),f.activateTest=function(){return!1},f.deactivateTest=function(){return!1}),n.change.state()}))},change:{state:function(){n.debug("Determining state change direction"),n.is.inactive()?n.activate():n.deactivate(),f.sync&&n.sync(),f.onChange.call(w)},text:function(){n.is.textEnabled()&&(n.is.disabled()?(n.verbose("Changing text to disabled text",b.hover),n.update.text(b.disabled)):n.is.active()?b.hover?(n.verbose("Changing text to hover text",b.hover),n.update.text(b.hover)):b.deactivate&&(n.verbose("Changing text to deactivating text",b.deactivate),n.update.text(b.deactivate)):b.hover?(n.verbose("Changing text to hover text",b.hover),n.update.text(b.hover)):b.activate&&(n.verbose("Changing text to activating text",b.activate),n.update.text(b.activate)))}},activate:function(){f.activateTest.call(w)&&(n.debug("Setting state to active"),C.addClass(p.active),n.update.text(b.active),f.onActivate.call(w))},deactivate:function(){f.deactivateTest.call(w)&&(n.debug("Setting state to inactive"),C.removeClass(p.active),n.update.text(b.inactive),f.onDeactivate.call(w))},sync:function(){n.verbose("Syncing other buttons to current state"),n.is.active()?a.not(C).state("activate"):a.not(C).state("deactivate")},get:{text:function(){return f.selector.text?C.find(f.selector.text).text():C.html()},textFor:function(e){return b[e]||!1}},flash:{text:function(e,t,i){var o=n.get.text();n.debug("Flashing text message",e,t),e=e||f.text.flash,t=t||f.flashDuration,i=i||function(){},n.update.text(e),setTimeout(function(){n.update.text(o),i.call(w)},t)}},reset:{text:function(){var e=b.active||C.data(g.storedText),t=b.inactive||C.data(g.storedText);n.is.textEnabled()&&(n.is.active()&&e?(n.verbose("Resetting active text",e),n.update.text(e)):t&&(n.verbose("Resetting inactive text",e),n.update.text(t)))}},update:{text:function(e){var t=n.get.text();e&&e!==t?(n.debug("Updating text",e),f.selector.text?C.data(g.storedText,e).find(f.selector.text).text(e):C.data(g.storedText,e).html(e)):n.debug("Text is already set, ignoring update",e); -}},setting:function(t,o){if(n.debug("Changing setting",t,o),e.isPlainObject(t))e.extend(!0,f,t);else{if(o===i)return f[t];e.isPlainObject(f[t])?e.extend(!0,f[t],o):f[t]=o}},internal:function(t,o){if(e.isPlainObject(t))e.extend(!0,n,t);else{if(o===i)return n[t];n[t]=o}},debug:function(){!f.silent&&f.debug&&(f.performance?n.performance.log(arguments):(n.debug=Function.prototype.bind.call(console.info,console,f.name+":"),n.debug.apply(console,arguments)))},verbose:function(){!f.silent&&f.verbose&&f.debug&&(f.performance?n.performance.log(arguments):(n.verbose=Function.prototype.bind.call(console.info,console,f.name+":"),n.verbose.apply(console,arguments)))},error:function(){f.silent||(n.error=Function.prototype.bind.call(console.error,console,f.name+":"),n.error.apply(console,arguments))},performance:{log:function(e){var t,i,o;f.performance&&(t=(new Date).getTime(),o=s||t,i=t-o,s=t,l.push({Name:e[0],Arguments:[].slice.call(e,1)||"",Element:w,"Execution Time":i})),clearTimeout(n.performance.timer),n.performance.timer=setTimeout(n.performance.display,500)},display:function(){var t=f.name+":",o=0;s=!1,clearTimeout(n.performance.timer),e.each(l,function(e,t){o+=t["Execution Time"]}),t+=" "+o+"ms",r&&(t+=" '"+r+"'"),(console.group!==i||console.table!==i)&&l.length>0&&(console.groupCollapsed(t),console.table?console.table(l):e.each(l,function(e,t){console.log(t.Name+": "+t["Execution Time"]+"ms")}),console.groupEnd()),l=[]}},invoke:function(t,a,r){var s,l,c,u=k;return a=a||d,r=w||r,"string"==typeof t&&u!==i&&(t=t.split(/[\. ]/),s=t.length-1,e.each(t,function(o,a){var r=o!=s?a+t[o+1].charAt(0).toUpperCase()+t[o+1].slice(1):t;if(e.isPlainObject(u[r])&&o!=s)u=u[r];else{if(u[r]!==i)return l=u[r],!1;if(!e.isPlainObject(u[a])||o==s)return u[a]!==i?(l=u[a],!1):(n.error(m.method,t),!1);u=u[a]}})),e.isFunction(l)?c=l.apply(r,a):l!==i&&(c=l),e.isArray(o)?o.push(c):o!==i?o=[o,c]:c!==i&&(o=c),l}},u?(k===i&&n.initialize(),n.invoke(c)):(k!==i&&k.invoke("destroy"),n.initialize())}),o!==i?o:this},e.fn.state.settings={name:"State",debug:!1,verbose:!1,namespace:"state",performance:!0,onActivate:function(){},onDeactivate:function(){},onChange:function(){},activateTest:function(){return!0},deactivateTest:function(){return!0},automatic:!0,sync:!1,flashDuration:1e3,filter:{text:".loading, .disabled",active:".disabled"},context:!1,error:{beforeSend:"The before send function has cancelled state change",method:"The method you called is not defined."},metadata:{promise:"promise",storedText:"stored-text"},className:{active:"active",disabled:"disabled",error:"error",loading:"loading",success:"success",warning:"warning"},selector:{text:!1},defaults:{input:{disabled:!0,loading:!0,active:!0},button:{disabled:!0,loading:!0,active:!0},progress:{active:!0,success:!0,warning:!0,error:!0}},states:{active:!0,disabled:!0,error:!0,loading:!0,success:!0,warning:!0},text:{disabled:!1,flash:!1,hover:!1,active:!1,inactive:!1,activate:!1,deactivate:!1}}}(jQuery,window,document),function(e,t,n,i){"use strict";t="undefined"!=typeof t&&t.Math==Math?t:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),e.fn.visibility=function(o){var a,r=e(this),s=r.selector||"",l=(new Date).getTime(),c=[],u=arguments[0],d="string"==typeof u,f=[].slice.call(arguments,1),m=r.length,g=0;return r.each(function(){var r,p,h,v,b=e.isPlainObject(o)?e.extend(!0,{},e.fn.visibility.settings,o):e.extend({},e.fn.visibility.settings),y=b.className,x=b.namespace,C=b.error,w=b.metadata,k="."+x,S="module-"+x,T=e(t),A=e(this),R=e(b.context),P=(A.selector||"",A.data(S)),E=t.requestAnimationFrame||t.mozRequestAnimationFrame||t.webkitRequestAnimationFrame||t.msRequestAnimationFrame||function(e){setTimeout(e,0)},F=this,O=!1;v={initialize:function(){v.debug("Initializing",b),v.setup.cache(),v.should.trackChanges()&&("image"==b.type&&v.setup.image(),"fixed"==b.type&&v.setup.fixed(),b.observeChanges&&v.observeChanges(),v.bind.events()),v.save.position(),v.is.visible()||v.error(C.visible,A),b.initialCheck&&v.checkVisibility(),v.instantiate()},instantiate:function(){v.debug("Storing instance",v),A.data(S,v),P=v},destroy:function(){v.verbose("Destroying previous module"),h&&h.disconnect(),p&&p.disconnect(),T.off("load"+k,v.event.load).off("resize"+k,v.event.resize),R.off("scroll"+k,v.event.scroll).off("scrollchange"+k,v.event.scrollchange),"fixed"==b.type&&(v.resetFixed(),v.remove.placeholder()),A.off(k).removeData(S)},observeChanges:function(){"MutationObserver"in t&&(p=new MutationObserver(v.event.contextChanged),h=new MutationObserver(v.event.changed),p.observe(n,{childList:!0,subtree:!0}),h.observe(F,{childList:!0,subtree:!0}),v.debug("Setting up mutation observer",h))},bind:{events:function(){v.verbose("Binding visibility events to scroll and resize"),b.refreshOnLoad&&T.on("load"+k,v.event.load),T.on("resize"+k,v.event.resize),R.off("scroll"+k).on("scroll"+k,v.event.scroll).on("scrollchange"+k,v.event.scrollchange)}},event:{changed:function(e){v.verbose("DOM tree modified, updating visibility calculations"),v.timer=setTimeout(function(){v.verbose("DOM tree modified, updating sticky menu"),v.refresh()},100)},contextChanged:function(t){[].forEach.call(t,function(t){t.removedNodes&&[].forEach.call(t.removedNodes,function(t){(t==F||e(t).find(F).length>0)&&(v.debug("Element removed from DOM, tearing down events"),v.destroy())})})},resize:function(){v.debug("Window resized"),b.refreshOnResize&&E(v.refresh)},load:function(){v.debug("Page finished loading"),E(v.refresh)},scroll:function(){b.throttle?(clearTimeout(v.timer),v.timer=setTimeout(function(){R.triggerHandler("scrollchange"+k,[R.scrollTop()])},b.throttle)):E(function(){R.triggerHandler("scrollchange"+k,[R.scrollTop()])})},scrollchange:function(e,t){v.checkVisibility(t)}},precache:function(t,i){t instanceof Array||(t=[t]);for(var o=t.length,a=0,r=[],s=n.createElement("img"),l=function(){a++,a>=t.length&&e.isFunction(i)&&i()};o--;)s=n.createElement("img"),s.onload=l,s.onerror=l,s.src=t[o],r.push(s)},enableCallbacks:function(){v.debug("Allowing callbacks to occur"),O=!1},disableCallbacks:function(){v.debug("Disabling all callbacks temporarily"),O=!0},should:{trackChanges:function(){return d?(v.debug("One time query, no need to bind events"),!1):(v.debug("Callbacks being attached"),!0)}},setup:{cache:function(){v.cache={occurred:{},screen:{},element:{}}},image:function(){var e=A.data(w.src);e&&(v.verbose("Lazy loading image",e),b.once=!0,b.observeChanges=!1,b.onOnScreen=function(){v.debug("Image on screen",F),v.precache(e,function(){v.set.image(e,function(){g++,g==m&&b.onAllLoaded.call(this),b.onLoad.call(this)})})})},fixed:function(){v.debug("Setting up fixed"),b.once=!1,b.observeChanges=!1,b.initialCheck=!0,b.refreshOnLoad=!0,o.transition||(b.transition=!1),v.create.placeholder(),v.debug("Added placeholder",r),b.onTopPassed=function(){v.debug("Element passed, adding fixed position",A),v.show.placeholder(),v.set.fixed(),b.transition&&e.fn.transition!==i&&A.transition(b.transition,b.duration)},b.onTopPassedReverse=function(){v.debug("Element returned to position, removing fixed",A),v.hide.placeholder(),v.remove.fixed()}}},create:{placeholder:function(){v.verbose("Creating fixed position placeholder"),r=A.clone(!1).css("display","none").addClass(y.placeholder).insertAfter(A)}},show:{placeholder:function(){v.verbose("Showing placeholder"),r.css("display","block").css("visibility","hidden")}},hide:{placeholder:function(){v.verbose("Hiding placeholder"),r.css("display","none").css("visibility","")}},set:{fixed:function(){v.verbose("Setting element to fixed position"),A.addClass(y.fixed).css({position:"fixed",top:b.offset+"px",left:"auto",zIndex:b.zIndex}),b.onFixed.call(F)},image:function(t,n){A.attr("src",t),b.transition?e.fn.transition!==i?A.transition(b.transition,b.duration,n):A.fadeIn(b.duration,n):A.show()}},is:{onScreen:function(){var e=v.get.elementCalculations();return e.onScreen},offScreen:function(){var e=v.get.elementCalculations();return e.offScreen},visible:function(){return v.cache&&v.cache.element?!(0===v.cache.element.width&&0===v.cache.element.offset.top):!1}},refresh:function(){v.debug("Refreshing constants (width/height)"),"fixed"==b.type&&v.resetFixed(),v.reset(),v.save.position(),b.checkOnRefresh&&v.checkVisibility(),b.onRefresh.call(F)},resetFixed:function(){v.remove.fixed(),v.remove.occurred()},reset:function(){v.verbose("Resetting all cached values"),e.isPlainObject(v.cache)&&(v.cache.screen={},v.cache.element={})},checkVisibility:function(e){v.verbose("Checking visibility of element",v.cache.element),!O&&v.is.visible()&&(v.save.scroll(e),v.save.calculations(),v.passed(),v.passingReverse(),v.topVisibleReverse(),v.bottomVisibleReverse(),v.topPassedReverse(),v.bottomPassedReverse(),v.onScreen(),v.offScreen(),v.passing(),v.topVisible(),v.bottomVisible(),v.topPassed(),v.bottomPassed(),b.onUpdate&&b.onUpdate.call(F,v.get.elementCalculations()))},passed:function(t,n){var o=v.get.elementCalculations();if(t&&n)b.onPassed[t]=n;else{if(t!==i)return v.get.pixelsPassed(t)>o.pixelsPassed;o.passing&&e.each(b.onPassed,function(e,t){o.bottomVisible||o.pixelsPassed>v.get.pixelsPassed(e)?v.execute(t,e):b.once||v.remove.occurred(t)})}},onScreen:function(e){var t=v.get.elementCalculations(),n=e||b.onOnScreen,o="onScreen";return e&&(v.debug("Adding callback for onScreen",e),b.onOnScreen=e),t.onScreen?v.execute(n,o):b.once||v.remove.occurred(o),e!==i?t.onOnScreen:void 0},offScreen:function(e){var t=v.get.elementCalculations(),n=e||b.onOffScreen,o="offScreen";return e&&(v.debug("Adding callback for offScreen",e),b.onOffScreen=e),t.offScreen?v.execute(n,o):b.once||v.remove.occurred(o),e!==i?t.onOffScreen:void 0},passing:function(e){var t=v.get.elementCalculations(),n=e||b.onPassing,o="passing";return e&&(v.debug("Adding callback for passing",e),b.onPassing=e),t.passing?v.execute(n,o):b.once||v.remove.occurred(o),e!==i?t.passing:void 0},topVisible:function(e){var t=v.get.elementCalculations(),n=e||b.onTopVisible,o="topVisible";return e&&(v.debug("Adding callback for top visible",e),b.onTopVisible=e),t.topVisible?v.execute(n,o):b.once||v.remove.occurred(o),e===i?t.topVisible:void 0},bottomVisible:function(e){var t=v.get.elementCalculations(),n=e||b.onBottomVisible,o="bottomVisible";return e&&(v.debug("Adding callback for bottom visible",e),b.onBottomVisible=e),t.bottomVisible?v.execute(n,o):b.once||v.remove.occurred(o),e===i?t.bottomVisible:void 0},topPassed:function(e){var t=v.get.elementCalculations(),n=e||b.onTopPassed,o="topPassed";return e&&(v.debug("Adding callback for top passed",e),b.onTopPassed=e),t.topPassed?v.execute(n,o):b.once||v.remove.occurred(o),e===i?t.topPassed:void 0},bottomPassed:function(e){var t=v.get.elementCalculations(),n=e||b.onBottomPassed,o="bottomPassed";return e&&(v.debug("Adding callback for bottom passed",e),b.onBottomPassed=e),t.bottomPassed?v.execute(n,o):b.once||v.remove.occurred(o),e===i?t.bottomPassed:void 0},passingReverse:function(e){var t=v.get.elementCalculations(),n=e||b.onPassingReverse,o="passingReverse";return e&&(v.debug("Adding callback for passing reverse",e),b.onPassingReverse=e),t.passing?b.once||v.remove.occurred(o):v.get.occurred("passing")&&v.execute(n,o),e!==i?!t.passing:void 0},topVisibleReverse:function(e){var t=v.get.elementCalculations(),n=e||b.onTopVisibleReverse,o="topVisibleReverse";return e&&(v.debug("Adding callback for top visible reverse",e),b.onTopVisibleReverse=e),t.topVisible?b.once||v.remove.occurred(o):v.get.occurred("topVisible")&&v.execute(n,o),e===i?!t.topVisible:void 0},bottomVisibleReverse:function(e){var t=v.get.elementCalculations(),n=e||b.onBottomVisibleReverse,o="bottomVisibleReverse";return e&&(v.debug("Adding callback for bottom visible reverse",e),b.onBottomVisibleReverse=e),t.bottomVisible?b.once||v.remove.occurred(o):v.get.occurred("bottomVisible")&&v.execute(n,o),e===i?!t.bottomVisible:void 0},topPassedReverse:function(e){var t=v.get.elementCalculations(),n=e||b.onTopPassedReverse,o="topPassedReverse";return e&&(v.debug("Adding callback for top passed reverse",e),b.onTopPassedReverse=e),t.topPassed?b.once||v.remove.occurred(o):v.get.occurred("topPassed")&&v.execute(n,o),e===i?!t.onTopPassed:void 0},bottomPassedReverse:function(e){var t=v.get.elementCalculations(),n=e||b.onBottomPassedReverse,o="bottomPassedReverse";return e&&(v.debug("Adding callback for bottom passed reverse",e),b.onBottomPassedReverse=e),t.bottomPassed?b.once||v.remove.occurred(o):v.get.occurred("bottomPassed")&&v.execute(n,o),e===i?!t.bottomPassed:void 0},execute:function(e,t){var n=v.get.elementCalculations(),i=v.get.screenCalculations();e=e||!1,e&&(b.continuous?(v.debug("Callback being called continuously",t,n),e.call(F,n,i)):v.get.occurred(t)||(v.debug("Conditions met",t,n),e.call(F,n,i))),v.save.occurred(t)},remove:{fixed:function(){v.debug("Removing fixed position"),A.removeClass(y.fixed).css({position:"",top:"",left:"",zIndex:""}),b.onUnfixed.call(F)},placeholder:function(){v.debug("Removing placeholder content"),r&&r.remove()},occurred:function(e){if(e){var t=v.cache.occurred;t[e]!==i&&t[e]===!0&&(v.debug("Callback can now be called again",e),v.cache.occurred[e]=!1)}else v.cache.occurred={}}},save:{calculations:function(){v.verbose("Saving all calculations necessary to determine positioning"),v.save.direction(),v.save.screenCalculations(),v.save.elementCalculations()},occurred:function(e){e&&(v.cache.occurred[e]===i||v.cache.occurred[e]!==!0)&&(v.verbose("Saving callback occurred",e),v.cache.occurred[e]=!0)},scroll:function(e){e=e+b.offset||R.scrollTop()+b.offset,v.cache.scroll=e},direction:function(){var e,t=v.get.scroll(),n=v.get.lastScroll();return e=t>n&&n?"down":n>t&&n?"up":"static",v.cache.direction=e,v.cache.direction},elementPosition:function(){var e=v.cache.element,t=v.get.screenSize();return v.verbose("Saving element position"),e.fits=e.height=t.top,t.topPassed=e.top>=t.top,t.bottomVisible=e.bottom>=t.bottom,t.bottomPassed=e.top>=t.bottom,t.pixelsPassed=0,t.percentagePassed=0,t.onScreen=t.topVisible&&!t.bottomPassed,t.passing=t.topPassed&&!t.bottomPassed,t.offScreen=!t.onScreen,t.passing&&(t.pixelsPassed=e.top-t.top,t.percentagePassed=(e.top-t.top)/t.height),v.cache.element=t,v.verbose("Updated element calculations",t),t},screenCalculations:function(){var e=v.get.scroll();return v.save.direction(),v.cache.screen.top=e,v.cache.screen.bottom=e+v.cache.screen.height,v.cache.screen},screenSize:function(){v.verbose("Saving window position"),v.cache.screen={height:R.height()}},position:function(){v.save.screenSize(),v.save.elementPosition()}},get:{pixelsPassed:function(e){var t=v.get.elementCalculations();return e.search("%")>-1?t.height*(parseInt(e,10)/100):parseInt(e,10)},occurred:function(e){return v.cache.occurred!==i?v.cache.occurred[e]||!1:!1},direction:function(){return v.cache.direction===i&&v.save.direction(),v.cache.direction},elementPosition:function(){return v.cache.element===i&&v.save.elementPosition(),v.cache.element},elementCalculations:function(){return v.cache.element===i&&v.save.elementCalculations(),v.cache.element},screenCalculations:function(){return v.cache.screen===i&&v.save.screenCalculations(),v.cache.screen},screenSize:function(){return v.cache.screen===i&&v.save.screenSize(),v.cache.screen},scroll:function(){return v.cache.scroll===i&&v.save.scroll(),v.cache.scroll},lastScroll:function(){return v.cache.screen===i?(v.debug("First scroll event, no last scroll could be found"),!1):v.cache.screen.top}},setting:function(t,n){if(e.isPlainObject(t))e.extend(!0,b,t);else{if(n===i)return b[t];b[t]=n}},internal:function(t,n){if(e.isPlainObject(t))e.extend(!0,v,t);else{if(n===i)return v[t];v[t]=n}},debug:function(){!b.silent&&b.debug&&(b.performance?v.performance.log(arguments):(v.debug=Function.prototype.bind.call(console.info,console,b.name+":"),v.debug.apply(console,arguments)))},verbose:function(){!b.silent&&b.verbose&&b.debug&&(b.performance?v.performance.log(arguments):(v.verbose=Function.prototype.bind.call(console.info,console,b.name+":"),v.verbose.apply(console,arguments)))},error:function(){b.silent||(v.error=Function.prototype.bind.call(console.error,console,b.name+":"),v.error.apply(console,arguments))},performance:{log:function(e){var t,n,i;b.performance&&(t=(new Date).getTime(),i=l||t,n=t-i,l=t,c.push({Name:e[0],Arguments:[].slice.call(e,1)||"",Element:F,"Execution Time":n})),clearTimeout(v.performance.timer),v.performance.timer=setTimeout(v.performance.display,500)},display:function(){var t=b.name+":",n=0;l=!1,clearTimeout(v.performance.timer),e.each(c,function(e,t){n+=t["Execution Time"]}),t+=" "+n+"ms",s&&(t+=" '"+s+"'"),(console.group!==i||console.table!==i)&&c.length>0&&(console.groupCollapsed(t),console.table?console.table(c):e.each(c,function(e,t){console.log(t.Name+": "+t["Execution Time"]+"ms")}),console.groupEnd()),c=[]}},invoke:function(t,n,o){var r,s,l,c=P;return n=n||f,o=F||o,"string"==typeof t&&c!==i&&(t=t.split(/[\. ]/),r=t.length-1,e.each(t,function(n,o){var a=n!=r?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(c[a])&&n!=r)c=c[a];else{if(c[a]!==i)return s=c[a],!1;if(!e.isPlainObject(c[o])||n==r)return c[o]!==i?(s=c[o],!1):(v.error(C.method,t),!1);c=c[o]}})),e.isFunction(s)?l=s.apply(o,n):s!==i&&(l=s),e.isArray(a)?a.push(l):a!==i?a=[a,l]:l!==i&&(a=l),s}},d?(P===i&&v.initialize(),P.save.scroll(),P.save.calculations(),v.invoke(u)):(P!==i&&P.invoke("destroy"),v.initialize())}),a!==i?a:this},e.fn.visibility.settings={name:"Visibility",namespace:"visibility",debug:!1,verbose:!1,performance:!0,observeChanges:!0,initialCheck:!0,refreshOnLoad:!0,refreshOnResize:!0,checkOnRefresh:!0,once:!0,continuous:!1,offset:0,includeMargin:!1,context:t,throttle:!1,type:!1,zIndex:"10",transition:"fade in",duration:1e3,onPassed:{},onOnScreen:!1,onOffScreen:!1,onPassing:!1,onTopVisible:!1,onBottomVisible:!1,onTopPassed:!1,onBottomPassed:!1,onPassingReverse:!1,onTopVisibleReverse:!1,onBottomVisibleReverse:!1,onTopPassedReverse:!1,onBottomPassedReverse:!1,onLoad:function(){},onAllLoaded:function(){},onFixed:function(){},onUnfixed:function(){},onUpdate:!1,onRefresh:function(){},metadata:{src:"src"},className:{fixed:"fixed",placeholder:"placeholder"},error:{method:"The method you called is not defined.",visible:"Element is hidden, you must call refresh after element becomes visible"}}}(jQuery,window,document); \ No newline at end of file diff --git a/public/plugins/codemirror-5.17.0/.gitattributes b/public/plugins/codemirror-5.17.0/.gitattributes deleted file mode 100644 index f8bdd60f4..000000000 --- a/public/plugins/codemirror-5.17.0/.gitattributes +++ /dev/null @@ -1,8 +0,0 @@ -*.txt text -*.js text -*.html text -*.md text -*.json text -*.yml text -*.css text -*.svg text diff --git a/public/plugins/codemirror-5.17.0/.gitignore b/public/plugins/codemirror-5.17.0/.gitignore deleted file mode 100644 index f91c241f2..000000000 --- a/public/plugins/codemirror-5.17.0/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -/node_modules -/npm-debug.log -/test*.html -.tern-* -*~ -*.swp -.idea -*.iml diff --git a/public/plugins/codemirror-5.17.0/.npmignore b/public/plugins/codemirror-5.17.0/.npmignore deleted file mode 100644 index 5ed053f89..000000000 --- a/public/plugins/codemirror-5.17.0/.npmignore +++ /dev/null @@ -1,10 +0,0 @@ -/node_modules -/demo -/doc -/test -/test*.html -/index.html -/mode/*/*test.js -/mode/*/*.html -/mode/index.html -.* diff --git a/public/plugins/codemirror-5.17.0/.travis.yml b/public/plugins/codemirror-5.17.0/.travis.yml deleted file mode 100644 index 52b8b8159..000000000 --- a/public/plugins/codemirror-5.17.0/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - stable -sudo: false diff --git a/public/plugins/codemirror-5.17.0/addon/mode/loadmode.js b/public/plugins/codemirror-5.17.0/addon/mode/loadmode.js deleted file mode 100644 index 10117ec22..000000000 --- a/public/plugins/codemirror-5.17.0/addon/mode/loadmode.js +++ /dev/null @@ -1,64 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror"), "cjs"); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], function(CM) { mod(CM, "amd"); }); - else // Plain browser env - mod(CodeMirror, "plain"); -})(function(CodeMirror, env) { - if (!CodeMirror.modeURL) CodeMirror.modeURL = "../mode/%N/%N.js"; - - var loading = {}; - function splitCallback(cont, n) { - var countDown = n; - return function() { if (--countDown == 0) cont(); }; - } - function ensureDeps(mode, cont) { - var deps = CodeMirror.modes[mode].dependencies; - if (!deps) return cont(); - var missing = []; - for (var i = 0; i < deps.length; ++i) { - if (!CodeMirror.modes.hasOwnProperty(deps[i])) - missing.push(deps[i]); - } - if (!missing.length) return cont(); - var split = splitCallback(cont, missing.length); - for (var i = 0; i < missing.length; ++i) - CodeMirror.requireMode(missing[i], split); - } - - CodeMirror.requireMode = function(mode, cont) { - if (typeof mode != "string") mode = mode.name; - if (CodeMirror.modes.hasOwnProperty(mode)) return ensureDeps(mode, cont); - if (loading.hasOwnProperty(mode)) return loading[mode].push(cont); - - var file = CodeMirror.modeURL.replace(/%N/g, mode); - if (env == "plain") { - var script = document.createElement("script"); - script.src = file; - var others = document.getElementsByTagName("script")[0]; - var list = loading[mode] = [cont]; - CodeMirror.on(script, "load", function() { - ensureDeps(mode, function() { - for (var i = 0; i < list.length; ++i) list[i](); - }); - }); - others.parentNode.insertBefore(script, others); - } else if (env == "cjs") { - require(file); - cont(); - } else if (env == "amd") { - requirejs([file], cont); - } - }; - - CodeMirror.autoLoadMode = function(instance, mode) { - if (!CodeMirror.modes.hasOwnProperty(mode)) - CodeMirror.requireMode(mode, function() { - instance.setOption("mode", instance.getOption("mode")); - }); - }; -}); diff --git a/public/plugins/codemirror-5.17.0/addon/mode/multiplex.js b/public/plugins/codemirror-5.17.0/addon/mode/multiplex.js deleted file mode 100644 index 3d8b34c45..000000000 --- a/public/plugins/codemirror-5.17.0/addon/mode/multiplex.js +++ /dev/null @@ -1,123 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.multiplexingMode = function(outer /*, others */) { - // Others should be {open, close, mode [, delimStyle] [, innerStyle]} objects - var others = Array.prototype.slice.call(arguments, 1); - - function indexOf(string, pattern, from, returnEnd) { - if (typeof pattern == "string") { - var found = string.indexOf(pattern, from); - return returnEnd && found > -1 ? found + pattern.length : found; - } - var m = pattern.exec(from ? string.slice(from) : string); - return m ? m.index + from + (returnEnd ? m[0].length : 0) : -1; - } - - return { - startState: function() { - return { - outer: CodeMirror.startState(outer), - innerActive: null, - inner: null - }; - }, - - copyState: function(state) { - return { - outer: CodeMirror.copyState(outer, state.outer), - innerActive: state.innerActive, - inner: state.innerActive && CodeMirror.copyState(state.innerActive.mode, state.inner) - }; - }, - - token: function(stream, state) { - if (!state.innerActive) { - var cutOff = Infinity, oldContent = stream.string; - for (var i = 0; i < others.length; ++i) { - var other = others[i]; - var found = indexOf(oldContent, other.open, stream.pos); - if (found == stream.pos) { - if (!other.parseDelimiters) stream.match(other.open); - state.innerActive = other; - state.inner = CodeMirror.startState(other.mode, outer.indent ? outer.indent(state.outer, "") : 0); - return other.delimStyle && (other.delimStyle + " " + other.delimStyle + "-open"); - } else if (found != -1 && found < cutOff) { - cutOff = found; - } - } - if (cutOff != Infinity) stream.string = oldContent.slice(0, cutOff); - var outerToken = outer.token(stream, state.outer); - if (cutOff != Infinity) stream.string = oldContent; - return outerToken; - } else { - var curInner = state.innerActive, oldContent = stream.string; - if (!curInner.close && stream.sol()) { - state.innerActive = state.inner = null; - return this.token(stream, state); - } - var found = curInner.close ? indexOf(oldContent, curInner.close, stream.pos, curInner.parseDelimiters) : -1; - if (found == stream.pos && !curInner.parseDelimiters) { - stream.match(curInner.close); - state.innerActive = state.inner = null; - return curInner.delimStyle && (curInner.delimStyle + " " + curInner.delimStyle + "-close"); - } - if (found > -1) stream.string = oldContent.slice(0, found); - var innerToken = curInner.mode.token(stream, state.inner); - if (found > -1) stream.string = oldContent; - - if (found == stream.pos && curInner.parseDelimiters) - state.innerActive = state.inner = null; - - if (curInner.innerStyle) { - if (innerToken) innerToken = innerToken + " " + curInner.innerStyle; - else innerToken = curInner.innerStyle; - } - - return innerToken; - } - }, - - indent: function(state, textAfter) { - var mode = state.innerActive ? state.innerActive.mode : outer; - if (!mode.indent) return CodeMirror.Pass; - return mode.indent(state.innerActive ? state.inner : state.outer, textAfter); - }, - - blankLine: function(state) { - var mode = state.innerActive ? state.innerActive.mode : outer; - if (mode.blankLine) { - mode.blankLine(state.innerActive ? state.inner : state.outer); - } - if (!state.innerActive) { - for (var i = 0; i < others.length; ++i) { - var other = others[i]; - if (other.open === "\n") { - state.innerActive = other; - state.inner = CodeMirror.startState(other.mode, mode.indent ? mode.indent(state.outer, "") : 0); - } - } - } else if (state.innerActive.close === "\n") { - state.innerActive = state.inner = null; - } - }, - - electricChars: outer.electricChars, - - innerMode: function(state) { - return state.inner ? {state: state.inner, mode: state.innerActive.mode} : {state: state.outer, mode: outer}; - } - }; -}; - -}); diff --git a/public/plugins/codemirror-5.17.0/addon/mode/multiplex_test.js b/public/plugins/codemirror-5.17.0/addon/mode/multiplex_test.js deleted file mode 100644 index 24e5e670d..000000000 --- a/public/plugins/codemirror-5.17.0/addon/mode/multiplex_test.js +++ /dev/null @@ -1,33 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function() { - CodeMirror.defineMode("markdown_with_stex", function(){ - var inner = CodeMirror.getMode({}, "stex"); - var outer = CodeMirror.getMode({}, "markdown"); - - var innerOptions = { - open: '$', - close: '$', - mode: inner, - delimStyle: 'delim', - innerStyle: 'inner' - }; - - return CodeMirror.multiplexingMode(outer, innerOptions); - }); - - var mode = CodeMirror.getMode({}, "markdown_with_stex"); - - function MT(name) { - test.mode( - name, - mode, - Array.prototype.slice.call(arguments, 1), - 'multiplexing'); - } - - MT( - "stexInsideMarkdown", - "[strong **Equation:**] [delim&delim-open $][inner&tag \\pi][delim&delim-close $]"); -})(); diff --git a/public/plugins/codemirror-5.17.0/addon/mode/overlay.js b/public/plugins/codemirror-5.17.0/addon/mode/overlay.js deleted file mode 100644 index e1b9ed375..000000000 --- a/public/plugins/codemirror-5.17.0/addon/mode/overlay.js +++ /dev/null @@ -1,85 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -// Utility function that allows modes to be combined. The mode given -// as the base argument takes care of most of the normal mode -// functionality, but a second (typically simple) mode is used, which -// can override the style of text. Both modes get to parse all of the -// text, but when both assign a non-null style to a piece of code, the -// overlay wins, unless the combine argument was true and not overridden, -// or state.overlay.combineTokens was true, in which case the styles are -// combined. - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.overlayMode = function(base, overlay, combine) { - return { - startState: function() { - return { - base: CodeMirror.startState(base), - overlay: CodeMirror.startState(overlay), - basePos: 0, baseCur: null, - overlayPos: 0, overlayCur: null, - streamSeen: null - }; - }, - copyState: function(state) { - return { - base: CodeMirror.copyState(base, state.base), - overlay: CodeMirror.copyState(overlay, state.overlay), - basePos: state.basePos, baseCur: null, - overlayPos: state.overlayPos, overlayCur: null - }; - }, - - token: function(stream, state) { - if (stream != state.streamSeen || - Math.min(state.basePos, state.overlayPos) < stream.start) { - state.streamSeen = stream; - state.basePos = state.overlayPos = stream.start; - } - - if (stream.start == state.basePos) { - state.baseCur = base.token(stream, state.base); - state.basePos = stream.pos; - } - if (stream.start == state.overlayPos) { - stream.pos = stream.start; - state.overlayCur = overlay.token(stream, state.overlay); - state.overlayPos = stream.pos; - } - stream.pos = Math.min(state.basePos, state.overlayPos); - - // state.overlay.combineTokens always takes precedence over combine, - // unless set to null - if (state.overlayCur == null) return state.baseCur; - else if (state.baseCur != null && - state.overlay.combineTokens || - combine && state.overlay.combineTokens == null) - return state.baseCur + " " + state.overlayCur; - else return state.overlayCur; - }, - - indent: base.indent && function(state, textAfter) { - return base.indent(state.base, textAfter); - }, - electricChars: base.electricChars, - - innerMode: function(state) { return {state: state.base, mode: base}; }, - - blankLine: function(state) { - if (base.blankLine) base.blankLine(state.base); - if (overlay.blankLine) overlay.blankLine(state.overlay); - } - }; -}; - -}); diff --git a/public/plugins/codemirror-5.17.0/addon/mode/simple.js b/public/plugins/codemirror-5.17.0/addon/mode/simple.js deleted file mode 100644 index df663365e..000000000 --- a/public/plugins/codemirror-5.17.0/addon/mode/simple.js +++ /dev/null @@ -1,213 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - CodeMirror.defineSimpleMode = function(name, states) { - CodeMirror.defineMode(name, function(config) { - return CodeMirror.simpleMode(config, states); - }); - }; - - CodeMirror.simpleMode = function(config, states) { - ensureState(states, "start"); - var states_ = {}, meta = states.meta || {}, hasIndentation = false; - for (var state in states) if (state != meta && states.hasOwnProperty(state)) { - var list = states_[state] = [], orig = states[state]; - for (var i = 0; i < orig.length; i++) { - var data = orig[i]; - list.push(new Rule(data, states)); - if (data.indent || data.dedent) hasIndentation = true; - } - } - var mode = { - startState: function() { - return {state: "start", pending: null, - local: null, localState: null, - indent: hasIndentation ? [] : null}; - }, - copyState: function(state) { - var s = {state: state.state, pending: state.pending, - local: state.local, localState: null, - indent: state.indent && state.indent.slice(0)}; - if (state.localState) - s.localState = CodeMirror.copyState(state.local.mode, state.localState); - if (state.stack) - s.stack = state.stack.slice(0); - for (var pers = state.persistentStates; pers; pers = pers.next) - s.persistentStates = {mode: pers.mode, - spec: pers.spec, - state: pers.state == state.localState ? s.localState : CodeMirror.copyState(pers.mode, pers.state), - next: s.persistentStates}; - return s; - }, - token: tokenFunction(states_, config), - innerMode: function(state) { return state.local && {mode: state.local.mode, state: state.localState}; }, - indent: indentFunction(states_, meta) - }; - if (meta) for (var prop in meta) if (meta.hasOwnProperty(prop)) - mode[prop] = meta[prop]; - return mode; - }; - - function ensureState(states, name) { - if (!states.hasOwnProperty(name)) - throw new Error("Undefined state " + name + " in simple mode"); - } - - function toRegex(val, caret) { - if (!val) return /(?:)/; - var flags = ""; - if (val instanceof RegExp) { - if (val.ignoreCase) flags = "i"; - val = val.source; - } else { - val = String(val); - } - return new RegExp((caret === false ? "" : "^") + "(?:" + val + ")", flags); - } - - function asToken(val) { - if (!val) return null; - if (typeof val == "string") return val.replace(/\./g, " "); - var result = []; - for (var i = 0; i < val.length; i++) - result.push(val[i] && val[i].replace(/\./g, " ")); - return result; - } - - function Rule(data, states) { - if (data.next || data.push) ensureState(states, data.next || data.push); - this.regex = toRegex(data.regex); - this.token = asToken(data.token); - this.data = data; - } - - function tokenFunction(states, config) { - return function(stream, state) { - if (state.pending) { - var pend = state.pending.shift(); - if (state.pending.length == 0) state.pending = null; - stream.pos += pend.text.length; - return pend.token; - } - - if (state.local) { - if (state.local.end && stream.match(state.local.end)) { - var tok = state.local.endToken || null; - state.local = state.localState = null; - return tok; - } else { - var tok = state.local.mode.token(stream, state.localState), m; - if (state.local.endScan && (m = state.local.endScan.exec(stream.current()))) - stream.pos = stream.start + m.index; - return tok; - } - } - - var curState = states[state.state]; - for (var i = 0; i < curState.length; i++) { - var rule = curState[i]; - var matches = (!rule.data.sol || stream.sol()) && stream.match(rule.regex); - if (matches) { - if (rule.data.next) { - state.state = rule.data.next; - } else if (rule.data.push) { - (state.stack || (state.stack = [])).push(state.state); - state.state = rule.data.push; - } else if (rule.data.pop && state.stack && state.stack.length) { - state.state = state.stack.pop(); - } - - if (rule.data.mode) - enterLocalMode(config, state, rule.data.mode, rule.token); - if (rule.data.indent) - state.indent.push(stream.indentation() + config.indentUnit); - if (rule.data.dedent) - state.indent.pop(); - if (matches.length > 2) { - state.pending = []; - for (var j = 2; j < matches.length; j++) - if (matches[j]) - state.pending.push({text: matches[j], token: rule.token[j - 1]}); - stream.backUp(matches[0].length - (matches[1] ? matches[1].length : 0)); - return rule.token[0]; - } else if (rule.token && rule.token.join) { - return rule.token[0]; - } else { - return rule.token; - } - } - } - stream.next(); - return null; - }; - } - - function cmp(a, b) { - if (a === b) return true; - if (!a || typeof a != "object" || !b || typeof b != "object") return false; - var props = 0; - for (var prop in a) if (a.hasOwnProperty(prop)) { - if (!b.hasOwnProperty(prop) || !cmp(a[prop], b[prop])) return false; - props++; - } - for (var prop in b) if (b.hasOwnProperty(prop)) props--; - return props == 0; - } - - function enterLocalMode(config, state, spec, token) { - var pers; - if (spec.persistent) for (var p = state.persistentStates; p && !pers; p = p.next) - if (spec.spec ? cmp(spec.spec, p.spec) : spec.mode == p.mode) pers = p; - var mode = pers ? pers.mode : spec.mode || CodeMirror.getMode(config, spec.spec); - var lState = pers ? pers.state : CodeMirror.startState(mode); - if (spec.persistent && !pers) - state.persistentStates = {mode: mode, spec: spec.spec, state: lState, next: state.persistentStates}; - - state.localState = lState; - state.local = {mode: mode, - end: spec.end && toRegex(spec.end), - endScan: spec.end && spec.forceEnd !== false && toRegex(spec.end, false), - endToken: token && token.join ? token[token.length - 1] : token}; - } - - function indexOf(val, arr) { - for (var i = 0; i < arr.length; i++) if (arr[i] === val) return true; - } - - function indentFunction(states, meta) { - return function(state, textAfter, line) { - if (state.local && state.local.mode.indent) - return state.local.mode.indent(state.localState, textAfter, line); - if (state.indent == null || state.local || meta.dontIndentStates && indexOf(state.state, meta.dontIndentStates) > -1) - return CodeMirror.Pass; - - var pos = state.indent.length - 1, rules = states[state.state]; - scan: for (;;) { - for (var i = 0; i < rules.length; i++) { - var rule = rules[i]; - if (rule.data.dedent && rule.data.dedentIfLineStart !== false) { - var m = rule.regex.exec(textAfter); - if (m && m[0]) { - pos--; - if (rule.next || rule.push) rules = states[rule.next || rule.push]; - textAfter = textAfter.slice(m[0].length); - continue scan; - } - } - } - break; - } - return pos < 0 ? 0 : state.indent[pos]; - }; - } -}); diff --git a/public/plugins/codemirror-5.17.0/mode/apl/apl.js b/public/plugins/codemirror-5.17.0/mode/apl/apl.js deleted file mode 100644 index caafe4e91..000000000 --- a/public/plugins/codemirror-5.17.0/mode/apl/apl.js +++ /dev/null @@ -1,174 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("apl", function() { - var builtInOps = { - ".": "innerProduct", - "\\": "scan", - "/": "reduce", - "⌿": "reduce1Axis", - "⍀": "scan1Axis", - "¨": "each", - "⍣": "power" - }; - var builtInFuncs = { - "+": ["conjugate", "add"], - "−": ["negate", "subtract"], - "×": ["signOf", "multiply"], - "÷": ["reciprocal", "divide"], - "⌈": ["ceiling", "greaterOf"], - "⌊": ["floor", "lesserOf"], - "∣": ["absolute", "residue"], - "⍳": ["indexGenerate", "indexOf"], - "?": ["roll", "deal"], - "⋆": ["exponentiate", "toThePowerOf"], - "⍟": ["naturalLog", "logToTheBase"], - "○": ["piTimes", "circularFuncs"], - "!": ["factorial", "binomial"], - "⌹": ["matrixInverse", "matrixDivide"], - "<": [null, "lessThan"], - "≤": [null, "lessThanOrEqual"], - "=": [null, "equals"], - ">": [null, "greaterThan"], - "≥": [null, "greaterThanOrEqual"], - "≠": [null, "notEqual"], - "≡": ["depth", "match"], - "≢": [null, "notMatch"], - "∈": ["enlist", "membership"], - "⍷": [null, "find"], - "∪": ["unique", "union"], - "∩": [null, "intersection"], - "∼": ["not", "without"], - "∨": [null, "or"], - "∧": [null, "and"], - "⍱": [null, "nor"], - "⍲": [null, "nand"], - "⍴": ["shapeOf", "reshape"], - ",": ["ravel", "catenate"], - "⍪": [null, "firstAxisCatenate"], - "⌽": ["reverse", "rotate"], - "⊖": ["axis1Reverse", "axis1Rotate"], - "⍉": ["transpose", null], - "↑": ["first", "take"], - "↓": [null, "drop"], - "⊂": ["enclose", "partitionWithAxis"], - "⊃": ["diclose", "pick"], - "⌷": [null, "index"], - "⍋": ["gradeUp", null], - "⍒": ["gradeDown", null], - "⊤": ["encode", null], - "⊥": ["decode", null], - "⍕": ["format", "formatByExample"], - "⍎": ["execute", null], - "⊣": ["stop", "left"], - "⊢": ["pass", "right"] - }; - - var isOperator = /[\.\/⌿⍀¨⍣]/; - var isNiladic = /⍬/; - var isFunction = /[\+−×÷⌈⌊∣⍳\?⋆⍟○!⌹<≤=>≥≠≡≢∈⍷∪∩∼∨∧⍱⍲⍴,⍪⌽⊖⍉↑↓⊂⊃⌷⍋⍒⊤⊥⍕⍎⊣⊢]/; - var isArrow = /←/; - var isComment = /[⍝#].*$/; - - var stringEater = function(type) { - var prev; - prev = false; - return function(c) { - prev = c; - if (c === type) { - return prev === "\\"; - } - return true; - }; - }; - return { - startState: function() { - return { - prev: false, - func: false, - op: false, - string: false, - escape: false - }; - }, - token: function(stream, state) { - var ch, funcName; - if (stream.eatSpace()) { - return null; - } - ch = stream.next(); - if (ch === '"' || ch === "'") { - stream.eatWhile(stringEater(ch)); - stream.next(); - state.prev = true; - return "string"; - } - if (/[\[{\(]/.test(ch)) { - state.prev = false; - return null; - } - if (/[\]}\)]/.test(ch)) { - state.prev = true; - return null; - } - if (isNiladic.test(ch)) { - state.prev = false; - return "niladic"; - } - if (/[¯\d]/.test(ch)) { - if (state.func) { - state.func = false; - state.prev = false; - } else { - state.prev = true; - } - stream.eatWhile(/[\w\.]/); - return "number"; - } - if (isOperator.test(ch)) { - return "operator apl-" + builtInOps[ch]; - } - if (isArrow.test(ch)) { - return "apl-arrow"; - } - if (isFunction.test(ch)) { - funcName = "apl-"; - if (builtInFuncs[ch] != null) { - if (state.prev) { - funcName += builtInFuncs[ch][1]; - } else { - funcName += builtInFuncs[ch][0]; - } - } - state.func = true; - state.prev = false; - return "function " + funcName; - } - if (isComment.test(ch)) { - stream.skipToEnd(); - return "comment"; - } - if (ch === "∘" && stream.peek() === ".") { - stream.next(); - return "function jot-dot"; - } - stream.eatWhile(/[\w\$_]/); - state.prev = true; - return "keyword"; - } - }; -}); - -CodeMirror.defineMIME("text/apl", "apl"); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/apl/index.html b/public/plugins/codemirror-5.17.0/mode/apl/index.html deleted file mode 100644 index 53dda6b58..000000000 --- a/public/plugins/codemirror-5.17.0/mode/apl/index.html +++ /dev/null @@ -1,72 +0,0 @@ - - -CodeMirror: APL mode - - - - - - - - - - -
    -

    APL mode

    -
    - - - -

    Simple mode that tries to handle APL as well as it can.

    -

    It attempts to label functions/operators based upon - monadic/dyadic usage (but this is far from fully fleshed out). - This means there are meaningful classnames so hover states can - have popups etc.

    - -

    MIME types defined: text/apl (APL code)

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/asciiarmor/asciiarmor.js b/public/plugins/codemirror-5.17.0/mode/asciiarmor/asciiarmor.js deleted file mode 100644 index d83090376..000000000 --- a/public/plugins/codemirror-5.17.0/mode/asciiarmor/asciiarmor.js +++ /dev/null @@ -1,73 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - function errorIfNotEmpty(stream) { - var nonWS = stream.match(/^\s*\S/); - stream.skipToEnd(); - return nonWS ? "error" : null; - } - - CodeMirror.defineMode("asciiarmor", function() { - return { - token: function(stream, state) { - var m; - if (state.state == "top") { - if (stream.sol() && (m = stream.match(/^-----BEGIN (.*)?-----\s*$/))) { - state.state = "headers"; - state.type = m[1]; - return "tag"; - } - return errorIfNotEmpty(stream); - } else if (state.state == "headers") { - if (stream.sol() && stream.match(/^\w+:/)) { - state.state = "header"; - return "atom"; - } else { - var result = errorIfNotEmpty(stream); - if (result) state.state = "body"; - return result; - } - } else if (state.state == "header") { - stream.skipToEnd(); - state.state = "headers"; - return "string"; - } else if (state.state == "body") { - if (stream.sol() && (m = stream.match(/^-----END (.*)?-----\s*$/))) { - if (m[1] != state.type) return "error"; - state.state = "end"; - return "tag"; - } else { - if (stream.eatWhile(/[A-Za-z0-9+\/=]/)) { - return null; - } else { - stream.next(); - return "error"; - } - } - } else if (state.state == "end") { - return errorIfNotEmpty(stream); - } - }, - blankLine: function(state) { - if (state.state == "headers") state.state = "body"; - }, - startState: function() { - return {state: "top", type: null}; - } - }; - }); - - CodeMirror.defineMIME("application/pgp", "asciiarmor"); - CodeMirror.defineMIME("application/pgp-keys", "asciiarmor"); - CodeMirror.defineMIME("application/pgp-signature", "asciiarmor"); -}); diff --git a/public/plugins/codemirror-5.17.0/mode/asciiarmor/index.html b/public/plugins/codemirror-5.17.0/mode/asciiarmor/index.html deleted file mode 100644 index 8ba1b5c76..000000000 --- a/public/plugins/codemirror-5.17.0/mode/asciiarmor/index.html +++ /dev/null @@ -1,46 +0,0 @@ - - -CodeMirror: ASCII Armor (PGP) mode - - - - - - - - - -
    -

    ASCII Armor (PGP) mode

    -
    - - - -

    MIME types -defined: application/pgp, application/pgp-keys, application/pgp-signature

    - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/asn.1/asn.1.js b/public/plugins/codemirror-5.17.0/mode/asn.1/asn.1.js deleted file mode 100644 index 9600247ea..000000000 --- a/public/plugins/codemirror-5.17.0/mode/asn.1/asn.1.js +++ /dev/null @@ -1,204 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - CodeMirror.defineMode("asn.1", function(config, parserConfig) { - var indentUnit = config.indentUnit, - keywords = parserConfig.keywords || {}, - cmipVerbs = parserConfig.cmipVerbs || {}, - compareTypes = parserConfig.compareTypes || {}, - status = parserConfig.status || {}, - tags = parserConfig.tags || {}, - storage = parserConfig.storage || {}, - modifier = parserConfig.modifier || {}, - accessTypes = parserConfig.accessTypes|| {}, - multiLineStrings = parserConfig.multiLineStrings, - indentStatements = parserConfig.indentStatements !== false; - var isOperatorChar = /[\|\^]/; - var curPunc; - - function tokenBase(stream, state) { - var ch = stream.next(); - if (ch == '"' || ch == "'") { - state.tokenize = tokenString(ch); - return state.tokenize(stream, state); - } - if (/[\[\]\(\){}:=,;]/.test(ch)) { - curPunc = ch; - return "punctuation"; - } - if (ch == "-"){ - if (stream.eat("-")) { - stream.skipToEnd(); - return "comment"; - } - } - if (/\d/.test(ch)) { - stream.eatWhile(/[\w\.]/); - return "number"; - } - if (isOperatorChar.test(ch)) { - stream.eatWhile(isOperatorChar); - return "operator"; - } - - stream.eatWhile(/[\w\-]/); - var cur = stream.current(); - if (keywords.propertyIsEnumerable(cur)) return "keyword"; - if (cmipVerbs.propertyIsEnumerable(cur)) return "variable cmipVerbs"; - if (compareTypes.propertyIsEnumerable(cur)) return "atom compareTypes"; - if (status.propertyIsEnumerable(cur)) return "comment status"; - if (tags.propertyIsEnumerable(cur)) return "variable-3 tags"; - if (storage.propertyIsEnumerable(cur)) return "builtin storage"; - if (modifier.propertyIsEnumerable(cur)) return "string-2 modifier"; - if (accessTypes.propertyIsEnumerable(cur)) return "atom accessTypes"; - - return "variable"; - } - - function tokenString(quote) { - return function(stream, state) { - var escaped = false, next, end = false; - while ((next = stream.next()) != null) { - if (next == quote && !escaped){ - var afterNext = stream.peek(); - //look if the character if the quote is like the B in '10100010'B - if (afterNext){ - afterNext = afterNext.toLowerCase(); - if(afterNext == "b" || afterNext == "h" || afterNext == "o") - stream.next(); - } - end = true; break; - } - escaped = !escaped && next == "\\"; - } - if (end || !(escaped || multiLineStrings)) - state.tokenize = null; - return "string"; - }; - } - - function Context(indented, column, type, align, prev) { - this.indented = indented; - this.column = column; - this.type = type; - this.align = align; - this.prev = prev; - } - function pushContext(state, col, type) { - var indent = state.indented; - if (state.context && state.context.type == "statement") - indent = state.context.indented; - return state.context = new Context(indent, col, type, null, state.context); - } - function popContext(state) { - var t = state.context.type; - if (t == ")" || t == "]" || t == "}") - state.indented = state.context.indented; - return state.context = state.context.prev; - } - - //Interface - return { - startState: function(basecolumn) { - return { - tokenize: null, - context: new Context((basecolumn || 0) - indentUnit, 0, "top", false), - indented: 0, - startOfLine: true - }; - }, - - token: function(stream, state) { - var ctx = state.context; - if (stream.sol()) { - if (ctx.align == null) ctx.align = false; - state.indented = stream.indentation(); - state.startOfLine = true; - } - if (stream.eatSpace()) return null; - curPunc = null; - var style = (state.tokenize || tokenBase)(stream, state); - if (style == "comment") return style; - if (ctx.align == null) ctx.align = true; - - if ((curPunc == ";" || curPunc == ":" || curPunc == ",") - && ctx.type == "statement"){ - popContext(state); - } - else if (curPunc == "{") pushContext(state, stream.column(), "}"); - else if (curPunc == "[") pushContext(state, stream.column(), "]"); - else if (curPunc == "(") pushContext(state, stream.column(), ")"); - else if (curPunc == "}") { - while (ctx.type == "statement") ctx = popContext(state); - if (ctx.type == "}") ctx = popContext(state); - while (ctx.type == "statement") ctx = popContext(state); - } - else if (curPunc == ctx.type) popContext(state); - else if (indentStatements && (((ctx.type == "}" || ctx.type == "top") - && curPunc != ';') || (ctx.type == "statement" - && curPunc == "newstatement"))) - pushContext(state, stream.column(), "statement"); - - state.startOfLine = false; - return style; - }, - - electricChars: "{}", - lineComment: "--", - fold: "brace" - }; - }); - - function words(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - - CodeMirror.defineMIME("text/x-ttcn-asn", { - name: "asn.1", - keywords: words("DEFINITIONS OBJECTS IF DERIVED INFORMATION ACTION" + - " REPLY ANY NAMED CHARACTERIZED BEHAVIOUR REGISTERED" + - " WITH AS IDENTIFIED CONSTRAINED BY PRESENT BEGIN" + - " IMPORTS FROM UNITS SYNTAX MIN-ACCESS MAX-ACCESS" + - " MINACCESS MAXACCESS REVISION STATUS DESCRIPTION" + - " SEQUENCE SET COMPONENTS OF CHOICE DistinguishedName" + - " ENUMERATED SIZE MODULE END INDEX AUGMENTS EXTENSIBILITY" + - " IMPLIED EXPORTS"), - cmipVerbs: words("ACTIONS ADD GET NOTIFICATIONS REPLACE REMOVE"), - compareTypes: words("OPTIONAL DEFAULT MANAGED MODULE-TYPE MODULE_IDENTITY" + - " MODULE-COMPLIANCE OBJECT-TYPE OBJECT-IDENTITY" + - " OBJECT-COMPLIANCE MODE CONFIRMED CONDITIONAL" + - " SUBORDINATE SUPERIOR CLASS TRUE FALSE NULL" + - " TEXTUAL-CONVENTION"), - status: words("current deprecated mandatory obsolete"), - tags: words("APPLICATION AUTOMATIC EXPLICIT IMPLICIT PRIVATE TAGS" + - " UNIVERSAL"), - storage: words("BOOLEAN INTEGER OBJECT IDENTIFIER BIT OCTET STRING" + - " UTCTime InterfaceIndex IANAifType CMIP-Attribute" + - " REAL PACKAGE PACKAGES IpAddress PhysAddress" + - " NetworkAddress BITS BMPString TimeStamp TimeTicks" + - " TruthValue RowStatus DisplayString GeneralString" + - " GraphicString IA5String NumericString" + - " PrintableString SnmpAdminAtring TeletexString" + - " UTF8String VideotexString VisibleString StringStore" + - " ISO646String T61String UniversalString Unsigned32" + - " Integer32 Gauge Gauge32 Counter Counter32 Counter64"), - modifier: words("ATTRIBUTE ATTRIBUTES MANDATORY-GROUP MANDATORY-GROUPS" + - " GROUP GROUPS ELEMENTS EQUALITY ORDERING SUBSTRINGS" + - " DEFINED"), - accessTypes: words("not-accessible accessible-for-notify read-only" + - " read-create read-write"), - multiLineStrings: true - }); -}); diff --git a/public/plugins/codemirror-5.17.0/mode/asn.1/index.html b/public/plugins/codemirror-5.17.0/mode/asn.1/index.html deleted file mode 100644 index 699fd4473..000000000 --- a/public/plugins/codemirror-5.17.0/mode/asn.1/index.html +++ /dev/null @@ -1,77 +0,0 @@ - - -CodeMirror: ASN.1 mode - - - - - - - - -
    -

    ASN.1 example

    -
    - -
    - - -
    -

    Language: Abstract Syntax Notation One - (ASN.1) -

    -

    MIME types defined: text/x-ttcn-asn

    - -
    -

    The development of this mode has been sponsored by Ericsson - .

    -

    Coded by Asmelash Tsegay Gebretsadkan

    -
    - diff --git a/public/plugins/codemirror-5.17.0/mode/asterisk/asterisk.js b/public/plugins/codemirror-5.17.0/mode/asterisk/asterisk.js deleted file mode 100644 index b7ebfc5ad..000000000 --- a/public/plugins/codemirror-5.17.0/mode/asterisk/asterisk.js +++ /dev/null @@ -1,196 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -/* - * ===================================================================================== - * - * Filename: mode/asterisk/asterisk.js - * - * Description: CodeMirror mode for Asterisk dialplan - * - * Created: 05/17/2012 09:20:25 PM - * Revision: none - * - * Author: Stas Kobzar (stas@modulis.ca), - * Company: Modulis.ca Inc. - * - * ===================================================================================== - */ - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("asterisk", function() { - var atoms = ["exten", "same", "include","ignorepat","switch"], - dpcmd = ["#include","#exec"], - apps = [ - "addqueuemember","adsiprog","aelsub","agentlogin","agentmonitoroutgoing","agi", - "alarmreceiver","amd","answer","authenticate","background","backgrounddetect", - "bridge","busy","callcompletioncancel","callcompletionrequest","celgenuserevent", - "changemonitor","chanisavail","channelredirect","chanspy","clearhash","confbridge", - "congestion","continuewhile","controlplayback","dahdiacceptr2call","dahdibarge", - "dahdiras","dahdiscan","dahdisendcallreroutingfacility","dahdisendkeypadfacility", - "datetime","dbdel","dbdeltree","deadagi","dial","dictate","directory","disa", - "dumpchan","eagi","echo","endwhile","exec","execif","execiftime","exitwhile","extenspy", - "externalivr","festival","flash","followme","forkcdr","getcpeid","gosub","gosubif", - "goto","gotoif","gotoiftime","hangup","iax2provision","ices","importvar","incomplete", - "ivrdemo","jabberjoin","jabberleave","jabbersend","jabbersendgroup","jabberstatus", - "jack","log","macro","macroexclusive","macroexit","macroif","mailboxexists","meetme", - "meetmeadmin","meetmechanneladmin","meetmecount","milliwatt","minivmaccmess","minivmdelete", - "minivmgreet","minivmmwi","minivmnotify","minivmrecord","mixmonitor","monitor","morsecode", - "mp3player","mset","musiconhold","nbscat","nocdr","noop","odbc","odbc","odbcfinish", - "originate","ospauth","ospfinish","osplookup","ospnext","page","park","parkandannounce", - "parkedcall","pausemonitor","pausequeuemember","pickup","pickupchan","playback","playtones", - "privacymanager","proceeding","progress","queue","queuelog","raiseexception","read","readexten", - "readfile","receivefax","receivefax","receivefax","record","removequeuemember", - "resetcdr","retrydial","return","ringing","sayalpha","saycountedadj","saycountednoun", - "saycountpl","saydigits","saynumber","sayphonetic","sayunixtime","senddtmf","sendfax", - "sendfax","sendfax","sendimage","sendtext","sendurl","set","setamaflags", - "setcallerpres","setmusiconhold","sipaddheader","sipdtmfmode","sipremoveheader","skel", - "slastation","slatrunk","sms","softhangup","speechactivategrammar","speechbackground", - "speechcreate","speechdeactivategrammar","speechdestroy","speechloadgrammar","speechprocessingsound", - "speechstart","speechunloadgrammar","stackpop","startmusiconhold","stopmixmonitor","stopmonitor", - "stopmusiconhold","stopplaytones","system","testclient","testserver","transfer","tryexec", - "trysystem","unpausemonitor","unpausequeuemember","userevent","verbose","vmauthenticate", - "vmsayname","voicemail","voicemailmain","wait","waitexten","waitfornoise","waitforring", - "waitforsilence","waitmusiconhold","waituntil","while","zapateller" - ]; - - function basicToken(stream,state){ - var cur = ''; - var ch = stream.next(); - // comment - if(ch == ";") { - stream.skipToEnd(); - return "comment"; - } - // context - if(ch == '[') { - stream.skipTo(']'); - stream.eat(']'); - return "header"; - } - // string - if(ch == '"') { - stream.skipTo('"'); - return "string"; - } - if(ch == "'") { - stream.skipTo("'"); - return "string-2"; - } - // dialplan commands - if(ch == '#') { - stream.eatWhile(/\w/); - cur = stream.current(); - if(dpcmd.indexOf(cur) !== -1) { - stream.skipToEnd(); - return "strong"; - } - } - // application args - if(ch == '$'){ - var ch1 = stream.peek(); - if(ch1 == '{'){ - stream.skipTo('}'); - stream.eat('}'); - return "variable-3"; - } - } - // extension - stream.eatWhile(/\w/); - cur = stream.current(); - if(atoms.indexOf(cur) !== -1) { - state.extenStart = true; - switch(cur) { - case 'same': state.extenSame = true; break; - case 'include': - case 'switch': - case 'ignorepat': - state.extenInclude = true;break; - default:break; - } - return "atom"; - } - } - - return { - startState: function() { - return { - extenStart: false, - extenSame: false, - extenInclude: false, - extenExten: false, - extenPriority: false, - extenApplication: false - }; - }, - token: function(stream, state) { - - var cur = ''; - if(stream.eatSpace()) return null; - // extension started - if(state.extenStart){ - stream.eatWhile(/[^\s]/); - cur = stream.current(); - if(/^=>?$/.test(cur)){ - state.extenExten = true; - state.extenStart = false; - return "strong"; - } else { - state.extenStart = false; - stream.skipToEnd(); - return "error"; - } - } else if(state.extenExten) { - // set exten and priority - state.extenExten = false; - state.extenPriority = true; - stream.eatWhile(/[^,]/); - if(state.extenInclude) { - stream.skipToEnd(); - state.extenPriority = false; - state.extenInclude = false; - } - if(state.extenSame) { - state.extenPriority = false; - state.extenSame = false; - state.extenApplication = true; - } - return "tag"; - } else if(state.extenPriority) { - state.extenPriority = false; - state.extenApplication = true; - stream.next(); // get comma - if(state.extenSame) return null; - stream.eatWhile(/[^,]/); - return "number"; - } else if(state.extenApplication) { - stream.eatWhile(/,/); - cur = stream.current(); - if(cur === ',') return null; - stream.eatWhile(/\w/); - cur = stream.current().toLowerCase(); - state.extenApplication = false; - if(apps.indexOf(cur) !== -1){ - return "def strong"; - } - } else{ - return basicToken(stream,state); - } - - return null; - } - }; -}); - -CodeMirror.defineMIME("text/x-asterisk", "asterisk"); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/asterisk/index.html b/public/plugins/codemirror-5.17.0/mode/asterisk/index.html deleted file mode 100644 index 257bd3987..000000000 --- a/public/plugins/codemirror-5.17.0/mode/asterisk/index.html +++ /dev/null @@ -1,154 +0,0 @@ - - -CodeMirror: Asterisk dialplan mode - - - - - - - - - -
    -

    Asterisk dialplan mode

    -
    - - -

    MIME types defined: text/x-asterisk.

    - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/brainfuck/brainfuck.js b/public/plugins/codemirror-5.17.0/mode/brainfuck/brainfuck.js deleted file mode 100644 index 3becf2a5a..000000000 --- a/public/plugins/codemirror-5.17.0/mode/brainfuck/brainfuck.js +++ /dev/null @@ -1,85 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -// Brainfuck mode created by Michael Kaminsky https://github.com/mkaminsky11 - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") - mod(require("../../lib/codemirror")) - else if (typeof define == "function" && define.amd) - define(["../../lib/codemirror"], mod) - else - mod(CodeMirror) -})(function(CodeMirror) { - "use strict" - var reserve = "><+-.,[]".split(""); - /* - comments can be either: - placed behind lines - - +++ this is a comment - - where reserved characters cannot be used - or in a loop - [ - this is ok to use [ ] and stuff - ] - or preceded by # - */ - CodeMirror.defineMode("brainfuck", function() { - return { - startState: function() { - return { - commentLine: false, - left: 0, - right: 0, - commentLoop: false - } - }, - token: function(stream, state) { - if (stream.eatSpace()) return null - if(stream.sol()){ - state.commentLine = false; - } - var ch = stream.next().toString(); - if(reserve.indexOf(ch) !== -1){ - if(state.commentLine === true){ - if(stream.eol()){ - state.commentLine = false; - } - return "comment"; - } - if(ch === "]" || ch === "["){ - if(ch === "["){ - state.left++; - } - else{ - state.right++; - } - return "bracket"; - } - else if(ch === "+" || ch === "-"){ - return "keyword"; - } - else if(ch === "<" || ch === ">"){ - return "atom"; - } - else if(ch === "." || ch === ","){ - return "def"; - } - } - else{ - state.commentLine = true; - if(stream.eol()){ - state.commentLine = false; - } - return "comment"; - } - if(stream.eol()){ - state.commentLine = false; - } - } - }; - }); -CodeMirror.defineMIME("text/x-brainfuck","brainfuck") -}); diff --git a/public/plugins/codemirror-5.17.0/mode/brainfuck/index.html b/public/plugins/codemirror-5.17.0/mode/brainfuck/index.html deleted file mode 100644 index 6048fc241..000000000 --- a/public/plugins/codemirror-5.17.0/mode/brainfuck/index.html +++ /dev/null @@ -1,85 +0,0 @@ - - -CodeMirror: Brainfuck mode - - - - - - - - - - -
    -

    Brainfuck mode

    -
    - - - -

    A mode for Brainfuck

    - -

    MIME types defined: text/x-brainfuck

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/clike/clike.js b/public/plugins/codemirror-5.17.0/mode/clike/clike.js deleted file mode 100644 index a37921fda..000000000 --- a/public/plugins/codemirror-5.17.0/mode/clike/clike.js +++ /dev/null @@ -1,786 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -function Context(indented, column, type, info, align, prev) { - this.indented = indented; - this.column = column; - this.type = type; - this.info = info; - this.align = align; - this.prev = prev; -} -function pushContext(state, col, type, info) { - var indent = state.indented; - if (state.context && state.context.type != "statement" && type != "statement") - indent = state.context.indented; - return state.context = new Context(indent, col, type, info, null, state.context); -} -function popContext(state) { - var t = state.context.type; - if (t == ")" || t == "]" || t == "}") - state.indented = state.context.indented; - return state.context = state.context.prev; -} - -function typeBefore(stream, state, pos) { - if (state.prevToken == "variable" || state.prevToken == "variable-3") return true; - if (/\S(?:[^- ]>|[*\]])\s*$|\*$/.test(stream.string.slice(0, pos))) return true; - if (state.typeAtEndOfLine && stream.column() == stream.indentation()) return true; -} - -function isTopScope(context) { - for (;;) { - if (!context || context.type == "top") return true; - if (context.type == "}" && context.prev.info != "namespace") return false; - context = context.prev; - } -} - -CodeMirror.defineMode("clike", function(config, parserConfig) { - var indentUnit = config.indentUnit, - statementIndentUnit = parserConfig.statementIndentUnit || indentUnit, - dontAlignCalls = parserConfig.dontAlignCalls, - keywords = parserConfig.keywords || {}, - types = parserConfig.types || {}, - builtin = parserConfig.builtin || {}, - blockKeywords = parserConfig.blockKeywords || {}, - defKeywords = parserConfig.defKeywords || {}, - atoms = parserConfig.atoms || {}, - hooks = parserConfig.hooks || {}, - multiLineStrings = parserConfig.multiLineStrings, - indentStatements = parserConfig.indentStatements !== false, - indentSwitch = parserConfig.indentSwitch !== false, - namespaceSeparator = parserConfig.namespaceSeparator, - isPunctuationChar = parserConfig.isPunctuationChar || /[\[\]{}\(\),;\:\.]/, - numberStart = parserConfig.numberStart || /[\d\.]/, - number = parserConfig.number || /^(?:0x[a-f\d]+|0b[01]+|(?:\d+\.?\d*|\.\d+)(?:e[-+]?\d+)?)(u|ll?|l|f)?/i, - isOperatorChar = parserConfig.isOperatorChar || /[+\-*&%=<>!?|\/]/, - endStatement = parserConfig.endStatement || /^[;:,]$/; - - var curPunc, isDefKeyword; - - function tokenBase(stream, state) { - var ch = stream.next(); - if (hooks[ch]) { - var result = hooks[ch](stream, state); - if (result !== false) return result; - } - if (ch == '"' || ch == "'") { - state.tokenize = tokenString(ch); - return state.tokenize(stream, state); - } - if (isPunctuationChar.test(ch)) { - curPunc = ch; - return null; - } - if (numberStart.test(ch)) { - stream.backUp(1) - if (stream.match(number)) return "number" - stream.next() - } - if (ch == "/") { - if (stream.eat("*")) { - state.tokenize = tokenComment; - return tokenComment(stream, state); - } - if (stream.eat("/")) { - stream.skipToEnd(); - return "comment"; - } - } - if (isOperatorChar.test(ch)) { - while (!stream.match(/^\/[\/*]/, false) && stream.eat(isOperatorChar)) {} - return "operator"; - } - stream.eatWhile(/[\w\$_\xa1-\uffff]/); - if (namespaceSeparator) while (stream.match(namespaceSeparator)) - stream.eatWhile(/[\w\$_\xa1-\uffff]/); - - var cur = stream.current(); - if (contains(keywords, cur)) { - if (contains(blockKeywords, cur)) curPunc = "newstatement"; - if (contains(defKeywords, cur)) isDefKeyword = true; - return "keyword"; - } - if (contains(types, cur)) return "variable-3"; - if (contains(builtin, cur)) { - if (contains(blockKeywords, cur)) curPunc = "newstatement"; - return "builtin"; - } - if (contains(atoms, cur)) return "atom"; - return "variable"; - } - - function tokenString(quote) { - return function(stream, state) { - var escaped = false, next, end = false; - while ((next = stream.next()) != null) { - if (next == quote && !escaped) {end = true; break;} - escaped = !escaped && next == "\\"; - } - if (end || !(escaped || multiLineStrings)) - state.tokenize = null; - return "string"; - }; - } - - function tokenComment(stream, state) { - var maybeEnd = false, ch; - while (ch = stream.next()) { - if (ch == "/" && maybeEnd) { - state.tokenize = null; - break; - } - maybeEnd = (ch == "*"); - } - return "comment"; - } - - function maybeEOL(stream, state) { - if (parserConfig.typeFirstDefinitions && stream.eol() && isTopScope(state.context)) - state.typeAtEndOfLine = typeBefore(stream, state, stream.pos) - } - - // Interface - - return { - startState: function(basecolumn) { - return { - tokenize: null, - context: new Context((basecolumn || 0) - indentUnit, 0, "top", null, false), - indented: 0, - startOfLine: true, - prevToken: null - }; - }, - - token: function(stream, state) { - var ctx = state.context; - if (stream.sol()) { - if (ctx.align == null) ctx.align = false; - state.indented = stream.indentation(); - state.startOfLine = true; - } - if (stream.eatSpace()) { maybeEOL(stream, state); return null; } - curPunc = isDefKeyword = null; - var style = (state.tokenize || tokenBase)(stream, state); - if (style == "comment" || style == "meta") return style; - if (ctx.align == null) ctx.align = true; - - if (endStatement.test(curPunc)) while (state.context.type == "statement") popContext(state); - else if (curPunc == "{") pushContext(state, stream.column(), "}"); - else if (curPunc == "[") pushContext(state, stream.column(), "]"); - else if (curPunc == "(") pushContext(state, stream.column(), ")"); - else if (curPunc == "}") { - while (ctx.type == "statement") ctx = popContext(state); - if (ctx.type == "}") ctx = popContext(state); - while (ctx.type == "statement") ctx = popContext(state); - } - else if (curPunc == ctx.type) popContext(state); - else if (indentStatements && - (((ctx.type == "}" || ctx.type == "top") && curPunc != ";") || - (ctx.type == "statement" && curPunc == "newstatement"))) { - pushContext(state, stream.column(), "statement", stream.current()); - } - - if (style == "variable" && - ((state.prevToken == "def" || - (parserConfig.typeFirstDefinitions && typeBefore(stream, state, stream.start) && - isTopScope(state.context) && stream.match(/^\s*\(/, false))))) - style = "def"; - - if (hooks.token) { - var result = hooks.token(stream, state, style); - if (result !== undefined) style = result; - } - - if (style == "def" && parserConfig.styleDefs === false) style = "variable"; - - state.startOfLine = false; - state.prevToken = isDefKeyword ? "def" : style || curPunc; - maybeEOL(stream, state); - return style; - }, - - indent: function(state, textAfter) { - if (state.tokenize != tokenBase && state.tokenize != null || state.typeAtEndOfLine) return CodeMirror.Pass; - var ctx = state.context, firstChar = textAfter && textAfter.charAt(0); - if (ctx.type == "statement" && firstChar == "}") ctx = ctx.prev; - if (parserConfig.dontIndentStatements) - while (ctx.type == "statement" && parserConfig.dontIndentStatements.test(ctx.info)) - ctx = ctx.prev - if (hooks.indent) { - var hook = hooks.indent(state, ctx, textAfter); - if (typeof hook == "number") return hook - } - var closing = firstChar == ctx.type; - var switchBlock = ctx.prev && ctx.prev.info == "switch"; - if (parserConfig.allmanIndentation && /[{(]/.test(firstChar)) { - while (ctx.type != "top" && ctx.type != "}") ctx = ctx.prev - return ctx.indented - } - if (ctx.type == "statement") - return ctx.indented + (firstChar == "{" ? 0 : statementIndentUnit); - if (ctx.align && (!dontAlignCalls || ctx.type != ")")) - return ctx.column + (closing ? 0 : 1); - if (ctx.type == ")" && !closing) - return ctx.indented + statementIndentUnit; - - return ctx.indented + (closing ? 0 : indentUnit) + - (!closing && switchBlock && !/^(?:case|default)\b/.test(textAfter) ? indentUnit : 0); - }, - - electricInput: indentSwitch ? /^\s*(?:case .*?:|default:|\{\}?|\})$/ : /^\s*[{}]$/, - blockCommentStart: "/*", - blockCommentEnd: "*/", - lineComment: "//", - fold: "brace" - }; -}); - - function words(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - function contains(words, word) { - if (typeof words === "function") { - return words(word); - } else { - return words.propertyIsEnumerable(word); - } - } - var cKeywords = "auto if break case register continue return default do sizeof " + - "static else struct switch extern typedef union for goto while enum const volatile"; - var cTypes = "int long char short double float unsigned signed void size_t ptrdiff_t"; - - function cppHook(stream, state) { - if (!state.startOfLine) return false - for (var ch, next = null; ch = stream.peek();) { - if (ch == "\\" && stream.match(/^.$/)) { - next = cppHook - break - } else if (ch == "/" && stream.match(/^\/[\/\*]/, false)) { - break - } - stream.next() - } - state.tokenize = next - return "meta" - } - - function pointerHook(_stream, state) { - if (state.prevToken == "variable-3") return "variable-3"; - return false; - } - - function cpp14Literal(stream) { - stream.eatWhile(/[\w\.']/); - return "number"; - } - - function cpp11StringHook(stream, state) { - stream.backUp(1); - // Raw strings. - if (stream.match(/(R|u8R|uR|UR|LR)/)) { - var match = stream.match(/"([^\s\\()]{0,16})\(/); - if (!match) { - return false; - } - state.cpp11RawStringDelim = match[1]; - state.tokenize = tokenRawString; - return tokenRawString(stream, state); - } - // Unicode strings/chars. - if (stream.match(/(u8|u|U|L)/)) { - if (stream.match(/["']/, /* eat */ false)) { - return "string"; - } - return false; - } - // Ignore this hook. - stream.next(); - return false; - } - - function cppLooksLikeConstructor(word) { - var lastTwo = /(\w+)::(\w+)$/.exec(word); - return lastTwo && lastTwo[1] == lastTwo[2]; - } - - // C#-style strings where "" escapes a quote. - function tokenAtString(stream, state) { - var next; - while ((next = stream.next()) != null) { - if (next == '"' && !stream.eat('"')) { - state.tokenize = null; - break; - } - } - return "string"; - } - - // C++11 raw string literal is "( anything )", where - // can be a string up to 16 characters long. - function tokenRawString(stream, state) { - // Escape characters that have special regex meanings. - var delim = state.cpp11RawStringDelim.replace(/[^\w\s]/g, '\\$&'); - var match = stream.match(new RegExp(".*?\\)" + delim + '"')); - if (match) - state.tokenize = null; - else - stream.skipToEnd(); - return "string"; - } - - function def(mimes, mode) { - if (typeof mimes == "string") mimes = [mimes]; - var words = []; - function add(obj) { - if (obj) for (var prop in obj) if (obj.hasOwnProperty(prop)) - words.push(prop); - } - add(mode.keywords); - add(mode.types); - add(mode.builtin); - add(mode.atoms); - if (words.length) { - mode.helperType = mimes[0]; - CodeMirror.registerHelper("hintWords", mimes[0], words); - } - - for (var i = 0; i < mimes.length; ++i) - CodeMirror.defineMIME(mimes[i], mode); - } - - def(["text/x-csrc", "text/x-c", "text/x-chdr"], { - name: "clike", - keywords: words(cKeywords), - types: words(cTypes + " bool _Complex _Bool float_t double_t intptr_t intmax_t " + - "int8_t int16_t int32_t int64_t uintptr_t uintmax_t uint8_t uint16_t " + - "uint32_t uint64_t"), - blockKeywords: words("case do else for if switch while struct"), - defKeywords: words("struct"), - typeFirstDefinitions: true, - atoms: words("null true false"), - hooks: {"#": cppHook, "*": pointerHook}, - modeProps: {fold: ["brace", "include"]} - }); - - def(["text/x-c++src", "text/x-c++hdr"], { - name: "clike", - keywords: words(cKeywords + " asm dynamic_cast namespace reinterpret_cast try explicit new " + - "static_cast typeid catch operator template typename class friend private " + - "this using const_cast inline public throw virtual delete mutable protected " + - "alignas alignof constexpr decltype nullptr noexcept thread_local final " + - "static_assert override"), - types: words(cTypes + " bool wchar_t"), - blockKeywords: words("catch class do else finally for if struct switch try while"), - defKeywords: words("class namespace struct enum union"), - typeFirstDefinitions: true, - atoms: words("true false null"), - dontIndentStatements: /^template$/, - hooks: { - "#": cppHook, - "*": pointerHook, - "u": cpp11StringHook, - "U": cpp11StringHook, - "L": cpp11StringHook, - "R": cpp11StringHook, - "0": cpp14Literal, - "1": cpp14Literal, - "2": cpp14Literal, - "3": cpp14Literal, - "4": cpp14Literal, - "5": cpp14Literal, - "6": cpp14Literal, - "7": cpp14Literal, - "8": cpp14Literal, - "9": cpp14Literal, - token: function(stream, state, style) { - if (style == "variable" && stream.peek() == "(" && - (state.prevToken == ";" || state.prevToken == null || - state.prevToken == "}") && - cppLooksLikeConstructor(stream.current())) - return "def"; - } - }, - namespaceSeparator: "::", - modeProps: {fold: ["brace", "include"]} - }); - - def("text/x-java", { - name: "clike", - keywords: words("abstract assert break case catch class const continue default " + - "do else enum extends final finally float for goto if implements import " + - "instanceof interface native new package private protected public " + - "return static strictfp super switch synchronized this throw throws transient " + - "try volatile while"), - types: words("byte short int long float double boolean char void Boolean Byte Character Double Float " + - "Integer Long Number Object Short String StringBuffer StringBuilder Void"), - blockKeywords: words("catch class do else finally for if switch try while"), - defKeywords: words("class interface package enum"), - typeFirstDefinitions: true, - atoms: words("true false null"), - endStatement: /^[;:]$/, - number: /^(?:0x[a-f\d_]+|0b[01_]+|(?:[\d_]+\.?\d*|\.\d+)(?:e[-+]?[\d_]+)?)(u|ll?|l|f)?/i, - hooks: { - "@": function(stream) { - stream.eatWhile(/[\w\$_]/); - return "meta"; - } - }, - modeProps: {fold: ["brace", "import"]} - }); - - def("text/x-csharp", { - name: "clike", - keywords: words("abstract as async await base break case catch checked class const continue" + - " default delegate do else enum event explicit extern finally fixed for" + - " foreach goto if implicit in interface internal is lock namespace new" + - " operator out override params private protected public readonly ref return sealed" + - " sizeof stackalloc static struct switch this throw try typeof unchecked" + - " unsafe using virtual void volatile while add alias ascending descending dynamic from get" + - " global group into join let orderby partial remove select set value var yield"), - types: words("Action Boolean Byte Char DateTime DateTimeOffset Decimal Double Func" + - " Guid Int16 Int32 Int64 Object SByte Single String Task TimeSpan UInt16 UInt32" + - " UInt64 bool byte char decimal double short int long object" + - " sbyte float string ushort uint ulong"), - blockKeywords: words("catch class do else finally for foreach if struct switch try while"), - defKeywords: words("class interface namespace struct var"), - typeFirstDefinitions: true, - atoms: words("true false null"), - hooks: { - "@": function(stream, state) { - if (stream.eat('"')) { - state.tokenize = tokenAtString; - return tokenAtString(stream, state); - } - stream.eatWhile(/[\w\$_]/); - return "meta"; - } - } - }); - - function tokenTripleString(stream, state) { - var escaped = false; - while (!stream.eol()) { - if (!escaped && stream.match('"""')) { - state.tokenize = null; - break; - } - escaped = stream.next() == "\\" && !escaped; - } - return "string"; - } - - def("text/x-scala", { - name: "clike", - keywords: words( - - /* scala */ - "abstract case catch class def do else extends final finally for forSome if " + - "implicit import lazy match new null object override package private protected return " + - "sealed super this throw trait try type val var while with yield _ : = => <- <: " + - "<% >: # @ " + - - /* package scala */ - "assert assume require print println printf readLine readBoolean readByte readShort " + - "readChar readInt readLong readFloat readDouble " + - - ":: #:: " - ), - types: words( - "AnyVal App Application Array BufferedIterator BigDecimal BigInt Char Console Either " + - "Enumeration Equiv Error Exception Fractional Function IndexedSeq Int Integral Iterable " + - "Iterator List Map Numeric Nil NotNull Option Ordered Ordering PartialFunction PartialOrdering " + - "Product Proxy Range Responder Seq Serializable Set Specializable Stream StringBuilder " + - "StringContext Symbol Throwable Traversable TraversableOnce Tuple Unit Vector " + - - /* package java.lang */ - "Boolean Byte Character CharSequence Class ClassLoader Cloneable Comparable " + - "Compiler Double Exception Float Integer Long Math Number Object Package Pair Process " + - "Runtime Runnable SecurityManager Short StackTraceElement StrictMath String " + - "StringBuffer System Thread ThreadGroup ThreadLocal Throwable Triple Void" - ), - multiLineStrings: true, - blockKeywords: words("catch class do else finally for forSome if match switch try while"), - defKeywords: words("class def object package trait type val var"), - atoms: words("true false null"), - indentStatements: false, - indentSwitch: false, - hooks: { - "@": function(stream) { - stream.eatWhile(/[\w\$_]/); - return "meta"; - }, - '"': function(stream, state) { - if (!stream.match('""')) return false; - state.tokenize = tokenTripleString; - return state.tokenize(stream, state); - }, - "'": function(stream) { - stream.eatWhile(/[\w\$_\xa1-\uffff]/); - return "atom"; - }, - "=": function(stream, state) { - var cx = state.context - if (cx.type == "}" && cx.align && stream.eat(">")) { - state.context = new Context(cx.indented, cx.column, cx.type, cx.info, null, cx.prev) - return "operator" - } else { - return false - } - } - }, - modeProps: {closeBrackets: {triples: '"'}} - }); - - function tokenKotlinString(tripleString){ - return function (stream, state) { - var escaped = false, next, end = false; - while (!stream.eol()) { - if (!tripleString && !escaped && stream.match('"') ) {end = true; break;} - if (tripleString && stream.match('"""')) {end = true; break;} - next = stream.next(); - if(!escaped && next == "$" && stream.match('{')) - stream.skipTo("}"); - escaped = !escaped && next == "\\" && !tripleString; - } - if (end || !tripleString) - state.tokenize = null; - return "string"; - } - } - - def("text/x-kotlin", { - name: "clike", - keywords: words( - /*keywords*/ - "package as typealias class interface this super val " + - "var fun for is in This throw return " + - "break continue object if else while do try when !in !is as? " + - - /*soft keywords*/ - "file import where by get set abstract enum open inner override private public internal " + - "protected catch finally out final vararg reified dynamic companion constructor init " + - "sealed field property receiver param sparam lateinit data inline noinline tailrec " + - "external annotation crossinline const operator infix" - ), - types: words( - /* package java.lang */ - "Boolean Byte Character CharSequence Class ClassLoader Cloneable Comparable " + - "Compiler Double Exception Float Integer Long Math Number Object Package Pair Process " + - "Runtime Runnable SecurityManager Short StackTraceElement StrictMath String " + - "StringBuffer System Thread ThreadGroup ThreadLocal Throwable Triple Void" - ), - intendSwitch: false, - indentStatements: false, - multiLineStrings: true, - blockKeywords: words("catch class do else finally for if where try while enum"), - defKeywords: words("class val var object package interface fun"), - atoms: words("true false null this"), - hooks: { - '"': function(stream, state) { - state.tokenize = tokenKotlinString(stream.match('""')); - return state.tokenize(stream, state); - } - }, - modeProps: {closeBrackets: {triples: '"'}} - }); - - def(["x-shader/x-vertex", "x-shader/x-fragment"], { - name: "clike", - keywords: words("sampler1D sampler2D sampler3D samplerCube " + - "sampler1DShadow sampler2DShadow " + - "const attribute uniform varying " + - "break continue discard return " + - "for while do if else struct " + - "in out inout"), - types: words("float int bool void " + - "vec2 vec3 vec4 ivec2 ivec3 ivec4 bvec2 bvec3 bvec4 " + - "mat2 mat3 mat4"), - blockKeywords: words("for while do if else struct"), - builtin: words("radians degrees sin cos tan asin acos atan " + - "pow exp log exp2 sqrt inversesqrt " + - "abs sign floor ceil fract mod min max clamp mix step smoothstep " + - "length distance dot cross normalize ftransform faceforward " + - "reflect refract matrixCompMult " + - "lessThan lessThanEqual greaterThan greaterThanEqual " + - "equal notEqual any all not " + - "texture1D texture1DProj texture1DLod texture1DProjLod " + - "texture2D texture2DProj texture2DLod texture2DProjLod " + - "texture3D texture3DProj texture3DLod texture3DProjLod " + - "textureCube textureCubeLod " + - "shadow1D shadow2D shadow1DProj shadow2DProj " + - "shadow1DLod shadow2DLod shadow1DProjLod shadow2DProjLod " + - "dFdx dFdy fwidth " + - "noise1 noise2 noise3 noise4"), - atoms: words("true false " + - "gl_FragColor gl_SecondaryColor gl_Normal gl_Vertex " + - "gl_MultiTexCoord0 gl_MultiTexCoord1 gl_MultiTexCoord2 gl_MultiTexCoord3 " + - "gl_MultiTexCoord4 gl_MultiTexCoord5 gl_MultiTexCoord6 gl_MultiTexCoord7 " + - "gl_FogCoord gl_PointCoord " + - "gl_Position gl_PointSize gl_ClipVertex " + - "gl_FrontColor gl_BackColor gl_FrontSecondaryColor gl_BackSecondaryColor " + - "gl_TexCoord gl_FogFragCoord " + - "gl_FragCoord gl_FrontFacing " + - "gl_FragData gl_FragDepth " + - "gl_ModelViewMatrix gl_ProjectionMatrix gl_ModelViewProjectionMatrix " + - "gl_TextureMatrix gl_NormalMatrix gl_ModelViewMatrixInverse " + - "gl_ProjectionMatrixInverse gl_ModelViewProjectionMatrixInverse " + - "gl_TexureMatrixTranspose gl_ModelViewMatrixInverseTranspose " + - "gl_ProjectionMatrixInverseTranspose " + - "gl_ModelViewProjectionMatrixInverseTranspose " + - "gl_TextureMatrixInverseTranspose " + - "gl_NormalScale gl_DepthRange gl_ClipPlane " + - "gl_Point gl_FrontMaterial gl_BackMaterial gl_LightSource gl_LightModel " + - "gl_FrontLightModelProduct gl_BackLightModelProduct " + - "gl_TextureColor gl_EyePlaneS gl_EyePlaneT gl_EyePlaneR gl_EyePlaneQ " + - "gl_FogParameters " + - "gl_MaxLights gl_MaxClipPlanes gl_MaxTextureUnits gl_MaxTextureCoords " + - "gl_MaxVertexAttribs gl_MaxVertexUniformComponents gl_MaxVaryingFloats " + - "gl_MaxVertexTextureImageUnits gl_MaxTextureImageUnits " + - "gl_MaxFragmentUniformComponents gl_MaxCombineTextureImageUnits " + - "gl_MaxDrawBuffers"), - indentSwitch: false, - hooks: {"#": cppHook}, - modeProps: {fold: ["brace", "include"]} - }); - - def("text/x-nesc", { - name: "clike", - keywords: words(cKeywords + "as atomic async call command component components configuration event generic " + - "implementation includes interface module new norace nx_struct nx_union post provides " + - "signal task uses abstract extends"), - types: words(cTypes), - blockKeywords: words("case do else for if switch while struct"), - atoms: words("null true false"), - hooks: {"#": cppHook}, - modeProps: {fold: ["brace", "include"]} - }); - - def("text/x-objectivec", { - name: "clike", - keywords: words(cKeywords + "inline restrict _Bool _Complex _Imaginary BOOL Class bycopy byref id IMP in " + - "inout nil oneway out Protocol SEL self super atomic nonatomic retain copy readwrite readonly"), - types: words(cTypes), - atoms: words("YES NO NULL NILL ON OFF true false"), - hooks: { - "@": function(stream) { - stream.eatWhile(/[\w\$]/); - return "keyword"; - }, - "#": cppHook, - indent: function(_state, ctx, textAfter) { - if (ctx.type == "statement" && /^@\w/.test(textAfter)) return ctx.indented - } - }, - modeProps: {fold: "brace"} - }); - - def("text/x-squirrel", { - name: "clike", - keywords: words("base break clone continue const default delete enum extends function in class" + - " foreach local resume return this throw typeof yield constructor instanceof static"), - types: words(cTypes), - blockKeywords: words("case catch class else for foreach if switch try while"), - defKeywords: words("function local class"), - typeFirstDefinitions: true, - atoms: words("true false null"), - hooks: {"#": cppHook}, - modeProps: {fold: ["brace", "include"]} - }); - - // Ceylon Strings need to deal with interpolation - var stringTokenizer = null; - function tokenCeylonString(type) { - return function(stream, state) { - var escaped = false, next, end = false; - while (!stream.eol()) { - if (!escaped && stream.match('"') && - (type == "single" || stream.match('""'))) { - end = true; - break; - } - if (!escaped && stream.match('``')) { - stringTokenizer = tokenCeylonString(type); - end = true; - break; - } - next = stream.next(); - escaped = type == "single" && !escaped && next == "\\"; - } - if (end) - state.tokenize = null; - return "string"; - } - } - - def("text/x-ceylon", { - name: "clike", - keywords: words("abstracts alias assembly assert assign break case catch class continue dynamic else" + - " exists extends finally for function given if import in interface is let module new" + - " nonempty object of out outer package return satisfies super switch then this throw" + - " try value void while"), - types: function(word) { - // In Ceylon all identifiers that start with an uppercase are types - var first = word.charAt(0); - return (first === first.toUpperCase() && first !== first.toLowerCase()); - }, - blockKeywords: words("case catch class dynamic else finally for function if interface module new object switch try while"), - defKeywords: words("class dynamic function interface module object package value"), - builtin: words("abstract actual aliased annotation by default deprecated doc final formal late license" + - " native optional sealed see serializable shared suppressWarnings tagged throws variable"), - isPunctuationChar: /[\[\]{}\(\),;\:\.`]/, - isOperatorChar: /[+\-*&%=<>!?|^~:\/]/, - numberStart: /[\d#$]/, - number: /^(?:#[\da-fA-F_]+|\$[01_]+|[\d_]+[kMGTPmunpf]?|[\d_]+\.[\d_]+(?:[eE][-+]?\d+|[kMGTPmunpf]|)|)/i, - multiLineStrings: true, - typeFirstDefinitions: true, - atoms: words("true false null larger smaller equal empty finished"), - indentSwitch: false, - styleDefs: false, - hooks: { - "@": function(stream) { - stream.eatWhile(/[\w\$_]/); - return "meta"; - }, - '"': function(stream, state) { - state.tokenize = tokenCeylonString(stream.match('""') ? "triple" : "single"); - return state.tokenize(stream, state); - }, - '`': function(stream, state) { - if (!stringTokenizer || !stream.match('`')) return false; - state.tokenize = stringTokenizer; - stringTokenizer = null; - return state.tokenize(stream, state); - }, - "'": function(stream) { - stream.eatWhile(/[\w\$_\xa1-\uffff]/); - return "atom"; - }, - token: function(_stream, state, style) { - if ((style == "variable" || style == "variable-3") && - state.prevToken == ".") { - return "variable-2"; - } - } - }, - modeProps: { - fold: ["brace", "import"], - closeBrackets: {triples: '"'} - } - }); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/clike/index.html b/public/plugins/codemirror-5.17.0/mode/clike/index.html deleted file mode 100644 index 45c670ae5..000000000 --- a/public/plugins/codemirror-5.17.0/mode/clike/index.html +++ /dev/null @@ -1,360 +0,0 @@ - - -CodeMirror: C-like mode - - - - - - - - - - - - -
    -

    C-like mode

    - -
    - -

    C++ example

    - -
    - -

    Objective-C example

    - -
    - -

    Java example

    - -
    - -

    Scala example

    - -
    - -

    Kotlin mode

    - -
    - -

    Ceylon mode

    - -
    - - - -

    Simple mode that tries to handle C-like languages as well as it - can. Takes two configuration parameters: keywords, an - object whose property names are the keywords in the language, - and useCPP, which determines whether C preprocessor - directives are recognized.

    - -

    MIME types defined: text/x-csrc - (C), text/x-c++src (C++), text/x-java - (Java), text/x-csharp (C#), - text/x-objectivec (Objective-C), - text/x-scala (Scala), text/x-vertex - x-shader/x-fragment (shader programs), - text/x-squirrel (Squirrel) and - text/x-ceylon (Ceylon)

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/clike/scala.html b/public/plugins/codemirror-5.17.0/mode/clike/scala.html deleted file mode 100644 index aa04cf0f0..000000000 --- a/public/plugins/codemirror-5.17.0/mode/clike/scala.html +++ /dev/null @@ -1,767 +0,0 @@ - - -CodeMirror: Scala mode - - - - - - - - - - -
    -

    Scala mode

    -
    - - - - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/clike/test.js b/public/plugins/codemirror-5.17.0/mode/clike/test.js deleted file mode 100644 index bea85b869..000000000 --- a/public/plugins/codemirror-5.17.0/mode/clike/test.js +++ /dev/null @@ -1,55 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function() { - var mode = CodeMirror.getMode({indentUnit: 2}, "text/x-c"); - function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } - - MT("indent", - "[variable-3 void] [def foo]([variable-3 void*] [variable a], [variable-3 int] [variable b]) {", - " [variable-3 int] [variable c] [operator =] [variable b] [operator +]", - " [number 1];", - " [keyword return] [operator *][variable a];", - "}"); - - MT("indent_switch", - "[keyword switch] ([variable x]) {", - " [keyword case] [number 10]:", - " [keyword return] [number 20];", - " [keyword default]:", - " [variable printf]([string \"foo %c\"], [variable x]);", - "}"); - - MT("def", - "[variable-3 void] [def foo]() {}", - "[keyword struct] [def bar]{}", - "[variable-3 int] [variable-3 *][def baz]() {}"); - - MT("def_new_line", - "::[variable std]::[variable SomeTerribleType][operator <][variable T][operator >]", - "[def SomeLongMethodNameThatDoesntFitIntoOneLine]([keyword const] [variable MyType][operator &] [variable param]) {}") - - MT("double_block", - "[keyword for] (;;)", - " [keyword for] (;;)", - " [variable x][operator ++];", - "[keyword return];"); - - MT("preprocessor", - "[meta #define FOO 3]", - "[variable-3 int] [variable foo];", - "[meta #define BAR\\]", - "[meta 4]", - "[variable-3 unsigned] [variable-3 int] [variable bar] [operator =] [number 8];", - "[meta #include ][comment // comment]") - - - var mode_cpp = CodeMirror.getMode({indentUnit: 2}, "text/x-c++src"); - function MTCPP(name) { test.mode(name, mode_cpp, Array.prototype.slice.call(arguments, 1)); } - - MTCPP("cpp14_literal", - "[number 10'000];", - "[number 0b10'000];", - "[number 0x10'000];", - "[string '100000'];"); -})(); diff --git a/public/plugins/codemirror-5.17.0/mode/clojure/clojure.js b/public/plugins/codemirror-5.17.0/mode/clojure/clojure.js deleted file mode 100644 index ed6af2c83..000000000 --- a/public/plugins/codemirror-5.17.0/mode/clojure/clojure.js +++ /dev/null @@ -1,306 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -/** - * Author: Hans Engel - * Branched from CodeMirror's Scheme mode (by Koh Zi Han, based on implementation by Koh Zi Chun) - */ - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("clojure", function (options) { - var BUILTIN = "builtin", COMMENT = "comment", STRING = "string", CHARACTER = "string-2", - ATOM = "atom", NUMBER = "number", BRACKET = "bracket", KEYWORD = "keyword", VAR = "variable"; - var INDENT_WORD_SKIP = options.indentUnit || 2; - var NORMAL_INDENT_UNIT = options.indentUnit || 2; - - function makeKeywords(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - - var atoms = makeKeywords("true false nil"); - - var keywords = makeKeywords( - "defn defn- def def- defonce defmulti defmethod defmacro defstruct deftype defprotocol defrecord defproject deftest " + - "slice defalias defhinted defmacro- defn-memo defnk defnk defonce- defunbound defunbound- defvar defvar- let letfn " + - "do case cond condp for loop recur when when-not when-let when-first if if-let if-not . .. -> ->> doto and or dosync " + - "doseq dotimes dorun doall load import unimport ns in-ns refer try catch finally throw with-open with-local-vars " + - "binding gen-class gen-and-load-class gen-and-save-class handler-case handle"); - - var builtins = makeKeywords( - "* *' *1 *2 *3 *agent* *allow-unresolved-vars* *assert* *clojure-version* *command-line-args* *compile-files* " + - "*compile-path* *compiler-options* *data-readers* *e *err* *file* *flush-on-newline* *fn-loader* *in* " + - "*math-context* *ns* *out* *print-dup* *print-length* *print-level* *print-meta* *print-readably* *read-eval* " + - "*source-path* *unchecked-math* *use-context-classloader* *verbose-defrecords* *warn-on-reflection* + +' - -' -> " + - "->> ->ArrayChunk ->Vec ->VecNode ->VecSeq -cache-protocol-fn -reset-methods .. / < <= = == > >= EMPTY-NODE accessor " + - "aclone add-classpath add-watch agent agent-error agent-errors aget alength alias all-ns alter alter-meta! " + - "alter-var-root amap ancestors and apply areduce array-map aset aset-boolean aset-byte aset-char aset-double " + - "aset-float aset-int aset-long aset-short assert assoc assoc! assoc-in associative? atom await await-for await1 " + - "bases bean bigdec bigint biginteger binding bit-and bit-and-not bit-clear bit-flip bit-not bit-or bit-set " + - "bit-shift-left bit-shift-right bit-test bit-xor boolean boolean-array booleans bound-fn bound-fn* bound? butlast " + - "byte byte-array bytes case cat cast char char-array char-escape-string char-name-string char? chars chunk chunk-append " + - "chunk-buffer chunk-cons chunk-first chunk-next chunk-rest chunked-seq? class class? clear-agent-errors " + - "clojure-version coll? comment commute comp comparator compare compare-and-set! compile complement completing concat cond condp " + - "conj conj! cons constantly construct-proxy contains? count counted? create-ns create-struct cycle dec dec' decimal? " + - "declare dedupe default-data-readers definline definterface defmacro defmethod defmulti defn defn- defonce defprotocol " + - "defrecord defstruct deftype delay delay? deliver denominator deref derive descendants destructure disj disj! dissoc " + - "dissoc! distinct distinct? doall dorun doseq dosync dotimes doto double double-array doubles drop drop-last " + - "drop-while eduction empty empty? ensure enumeration-seq error-handler error-mode eval even? every-pred every? ex-data ex-info " + - "extend extend-protocol extend-type extenders extends? false? ffirst file-seq filter filterv find find-keyword " + - "find-ns find-protocol-impl find-protocol-method find-var first flatten float float-array float? floats flush fn fn? " + - "fnext fnil for force format frequencies future future-call future-cancel future-cancelled? future-done? future? " + - "gen-class gen-interface gensym get get-in get-method get-proxy-class get-thread-bindings get-validator group-by hash " + - "hash-combine hash-map hash-set identical? identity if-let if-not ifn? import in-ns inc inc' init-proxy instance? " + - "int int-array integer? interleave intern interpose into into-array ints io! isa? iterate iterator-seq juxt keep " + - "keep-indexed key keys keyword keyword? last lazy-cat lazy-seq let letfn line-seq list list* list? load load-file " + - "load-reader load-string loaded-libs locking long long-array longs loop macroexpand macroexpand-1 make-array " + - "make-hierarchy map map-indexed map? mapcat mapv max max-key memfn memoize merge merge-with meta method-sig methods " + - "min min-key mod munge name namespace namespace-munge neg? newline next nfirst nil? nnext not not-any? not-empty " + - "not-every? not= ns ns-aliases ns-imports ns-interns ns-map ns-name ns-publics ns-refers ns-resolve ns-unalias " + - "ns-unmap nth nthnext nthrest num number? numerator object-array odd? or parents partial partition partition-all " + - "partition-by pcalls peek persistent! pmap pop pop! pop-thread-bindings pos? pr pr-str prefer-method prefers " + - "primitives-classnames print print-ctor print-dup print-method print-simple print-str printf println println-str " + - "prn prn-str promise proxy proxy-call-with-super proxy-mappings proxy-name proxy-super push-thread-bindings pvalues " + - "quot rand rand-int rand-nth random-sample range ratio? rational? rationalize re-find re-groups re-matcher re-matches re-pattern " + - "re-seq read read-line read-string realized? reduce reduce-kv reductions ref ref-history-count ref-max-history " + - "ref-min-history ref-set refer refer-clojure reify release-pending-sends rem remove remove-all-methods " + - "remove-method remove-ns remove-watch repeat repeatedly replace replicate require reset! reset-meta! resolve rest " + - "restart-agent resultset-seq reverse reversible? rseq rsubseq satisfies? second select-keys send send-off seq seq? " + - "seque sequence sequential? set set-error-handler! set-error-mode! set-validator! set? short short-array shorts " + - "shuffle shutdown-agents slurp some some-fn sort sort-by sorted-map sorted-map-by sorted-set sorted-set-by sorted? " + - "special-symbol? spit split-at split-with str string? struct struct-map subs subseq subvec supers swap! symbol " + - "symbol? sync take take-last take-nth take-while test the-ns thread-bound? time to-array to-array-2d trampoline transduce " + - "transient tree-seq true? type unchecked-add unchecked-add-int unchecked-byte unchecked-char unchecked-dec " + - "unchecked-dec-int unchecked-divide-int unchecked-double unchecked-float unchecked-inc unchecked-inc-int " + - "unchecked-int unchecked-long unchecked-multiply unchecked-multiply-int unchecked-negate unchecked-negate-int "+ - "unchecked-remainder-int unchecked-short unchecked-subtract unchecked-subtract-int underive unquote " + - "unquote-splicing update update-in update-proxy use val vals var-get var-set var? vary-meta vec vector vector-of " + - "vector? volatile! volatile? vreset! vswap! when when-first when-let when-not while with-bindings with-bindings* with-in-str with-loading-context " + - "with-local-vars with-meta with-open with-out-str with-precision with-redefs with-redefs-fn xml-seq zero? zipmap " + - "*default-data-reader-fn* as-> cond-> cond->> reduced reduced? send-via set-agent-send-executor! " + - "set-agent-send-off-executor! some-> some->>"); - - var indentKeys = makeKeywords( - // Built-ins - "ns fn def defn defmethod bound-fn if if-not case condp when while when-not when-first do future comment doto " + - "locking proxy with-open with-precision reify deftype defrecord defprotocol extend extend-protocol extend-type " + - "try catch " + - - // Binding forms - "let letfn binding loop for doseq dotimes when-let if-let " + - - // Data structures - "defstruct struct-map assoc " + - - // clojure.test - "testing deftest " + - - // contrib - "handler-case handle dotrace deftrace"); - - var tests = { - digit: /\d/, - digit_or_colon: /[\d:]/, - hex: /[0-9a-f]/i, - sign: /[+-]/, - exponent: /e/i, - keyword_char: /[^\s\(\[\;\)\]]/, - symbol: /[\w*+!\-\._?:<>\/\xa1-\uffff]/, - block_indent: /^(?:def|with)[^\/]+$|\/(?:def|with)/ - }; - - function stateStack(indent, type, prev) { // represents a state stack object - this.indent = indent; - this.type = type; - this.prev = prev; - } - - function pushStack(state, indent, type) { - state.indentStack = new stateStack(indent, type, state.indentStack); - } - - function popStack(state) { - state.indentStack = state.indentStack.prev; - } - - function isNumber(ch, stream){ - // hex - if ( ch === '0' && stream.eat(/x/i) ) { - stream.eatWhile(tests.hex); - return true; - } - - // leading sign - if ( ( ch == '+' || ch == '-' ) && ( tests.digit.test(stream.peek()) ) ) { - stream.eat(tests.sign); - ch = stream.next(); - } - - if ( tests.digit.test(ch) ) { - stream.eat(ch); - stream.eatWhile(tests.digit); - - if ( '.' == stream.peek() ) { - stream.eat('.'); - stream.eatWhile(tests.digit); - } else if ('/' == stream.peek() ) { - stream.eat('/'); - stream.eatWhile(tests.digit); - } - - if ( stream.eat(tests.exponent) ) { - stream.eat(tests.sign); - stream.eatWhile(tests.digit); - } - - return true; - } - - return false; - } - - // Eat character that starts after backslash \ - function eatCharacter(stream) { - var first = stream.next(); - // Read special literals: backspace, newline, space, return. - // Just read all lowercase letters. - if (first && first.match(/[a-z]/) && stream.match(/[a-z]+/, true)) { - return; - } - // Read unicode character: \u1000 \uA0a1 - if (first === "u") { - stream.match(/[0-9a-z]{4}/i, true); - } - } - - return { - startState: function () { - return { - indentStack: null, - indentation: 0, - mode: false - }; - }, - - token: function (stream, state) { - if (state.indentStack == null && stream.sol()) { - // update indentation, but only if indentStack is empty - state.indentation = stream.indentation(); - } - - // skip spaces - if (state.mode != "string" && stream.eatSpace()) { - return null; - } - var returnType = null; - - switch(state.mode){ - case "string": // multi-line string parsing mode - var next, escaped = false; - while ((next = stream.next()) != null) { - if (next == "\"" && !escaped) { - - state.mode = false; - break; - } - escaped = !escaped && next == "\\"; - } - returnType = STRING; // continue on in string mode - break; - default: // default parsing mode - var ch = stream.next(); - - if (ch == "\"") { - state.mode = "string"; - returnType = STRING; - } else if (ch == "\\") { - eatCharacter(stream); - returnType = CHARACTER; - } else if (ch == "'" && !( tests.digit_or_colon.test(stream.peek()) )) { - returnType = ATOM; - } else if (ch == ";") { // comment - stream.skipToEnd(); // rest of the line is a comment - returnType = COMMENT; - } else if (isNumber(ch,stream)){ - returnType = NUMBER; - } else if (ch == "(" || ch == "[" || ch == "{" ) { - var keyWord = '', indentTemp = stream.column(), letter; - /** - Either - (indent-word .. - (non-indent-word .. - (;something else, bracket, etc. - */ - - if (ch == "(") while ((letter = stream.eat(tests.keyword_char)) != null) { - keyWord += letter; - } - - if (keyWord.length > 0 && (indentKeys.propertyIsEnumerable(keyWord) || - tests.block_indent.test(keyWord))) { // indent-word - pushStack(state, indentTemp + INDENT_WORD_SKIP, ch); - } else { // non-indent word - // we continue eating the spaces - stream.eatSpace(); - if (stream.eol() || stream.peek() == ";") { - // nothing significant after - // we restart indentation the user defined spaces after - pushStack(state, indentTemp + NORMAL_INDENT_UNIT, ch); - } else { - pushStack(state, indentTemp + stream.current().length, ch); // else we match - } - } - stream.backUp(stream.current().length - 1); // undo all the eating - - returnType = BRACKET; - } else if (ch == ")" || ch == "]" || ch == "}") { - returnType = BRACKET; - if (state.indentStack != null && state.indentStack.type == (ch == ")" ? "(" : (ch == "]" ? "[" :"{"))) { - popStack(state); - } - } else if ( ch == ":" ) { - stream.eatWhile(tests.symbol); - return ATOM; - } else { - stream.eatWhile(tests.symbol); - - if (keywords && keywords.propertyIsEnumerable(stream.current())) { - returnType = KEYWORD; - } else if (builtins && builtins.propertyIsEnumerable(stream.current())) { - returnType = BUILTIN; - } else if (atoms && atoms.propertyIsEnumerable(stream.current())) { - returnType = ATOM; - } else { - returnType = VAR; - } - } - } - - return returnType; - }, - - indent: function (state) { - if (state.indentStack == null) return state.indentation; - return state.indentStack.indent; - }, - - closeBrackets: {pairs: "()[]{}\"\""}, - lineComment: ";;" - }; -}); - -CodeMirror.defineMIME("text/x-clojure", "clojure"); -CodeMirror.defineMIME("text/x-clojurescript", "clojure"); -CodeMirror.defineMIME("application/edn", "clojure"); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/clojure/index.html b/public/plugins/codemirror-5.17.0/mode/clojure/index.html deleted file mode 100644 index 81294bc14..000000000 --- a/public/plugins/codemirror-5.17.0/mode/clojure/index.html +++ /dev/null @@ -1,91 +0,0 @@ - - -CodeMirror: Clojure mode - - - - - - - - - -
    -

    Clojure mode

    -
    - - -

    MIME types defined: text/x-clojure.

    - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/cmake/cmake.js b/public/plugins/codemirror-5.17.0/mode/cmake/cmake.js deleted file mode 100644 index 9f9eda541..000000000 --- a/public/plugins/codemirror-5.17.0/mode/cmake/cmake.js +++ /dev/null @@ -1,97 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) - define(["../../lib/codemirror"], mod); - else - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("cmake", function () { - var variable_regex = /({)?[a-zA-Z0-9_]+(})?/; - - function tokenString(stream, state) { - var current, prev, found_var = false; - while (!stream.eol() && (current = stream.next()) != state.pending) { - if (current === '$' && prev != '\\' && state.pending == '"') { - found_var = true; - break; - } - prev = current; - } - if (found_var) { - stream.backUp(1); - } - if (current == state.pending) { - state.continueString = false; - } else { - state.continueString = true; - } - return "string"; - } - - function tokenize(stream, state) { - var ch = stream.next(); - - // Have we found a variable? - if (ch === '$') { - if (stream.match(variable_regex)) { - return 'variable-2'; - } - return 'variable'; - } - // Should we still be looking for the end of a string? - if (state.continueString) { - // If so, go through the loop again - stream.backUp(1); - return tokenString(stream, state); - } - // Do we just have a function on our hands? - // In 'cmake_minimum_required (VERSION 2.8.8)', 'cmake_minimum_required' is matched - if (stream.match(/(\s+)?\w+\(/) || stream.match(/(\s+)?\w+\ \(/)) { - stream.backUp(1); - return 'def'; - } - if (ch == "#") { - stream.skipToEnd(); - return "comment"; - } - // Have we found a string? - if (ch == "'" || ch == '"') { - // Store the type (single or double) - state.pending = ch; - // Perform the looping function to find the end - return tokenString(stream, state); - } - if (ch == '(' || ch == ')') { - return 'bracket'; - } - if (ch.match(/[0-9]/)) { - return 'number'; - } - stream.eatWhile(/[\w-]/); - return null; - } - return { - startState: function () { - var state = {}; - state.inDefinition = false; - state.inInclude = false; - state.continueString = false; - state.pending = false; - return state; - }, - token: function (stream, state) { - if (stream.eatSpace()) return null; - return tokenize(stream, state); - } - }; -}); - -CodeMirror.defineMIME("text/x-cmake", "cmake"); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/cmake/index.html b/public/plugins/codemirror-5.17.0/mode/cmake/index.html deleted file mode 100644 index ed114fece..000000000 --- a/public/plugins/codemirror-5.17.0/mode/cmake/index.html +++ /dev/null @@ -1,129 +0,0 @@ - - -CodeMirror: CMake mode - - - - - - - - - - -
    -

    CMake mode

    -
    - - -

    MIME types defined: text/x-cmake.

    - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/cobol/cobol.js b/public/plugins/codemirror-5.17.0/mode/cobol/cobol.js deleted file mode 100644 index 897022b18..000000000 --- a/public/plugins/codemirror-5.17.0/mode/cobol/cobol.js +++ /dev/null @@ -1,255 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -/** - * Author: Gautam Mehta - * Branched from CodeMirror's Scheme mode - */ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("cobol", function () { - var BUILTIN = "builtin", COMMENT = "comment", STRING = "string", - ATOM = "atom", NUMBER = "number", KEYWORD = "keyword", MODTAG = "header", - COBOLLINENUM = "def", PERIOD = "link"; - function makeKeywords(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - var atoms = makeKeywords("TRUE FALSE ZEROES ZEROS ZERO SPACES SPACE LOW-VALUE LOW-VALUES "); - var keywords = makeKeywords( - "ACCEPT ACCESS ACQUIRE ADD ADDRESS " + - "ADVANCING AFTER ALIAS ALL ALPHABET " + - "ALPHABETIC ALPHABETIC-LOWER ALPHABETIC-UPPER ALPHANUMERIC ALPHANUMERIC-EDITED " + - "ALSO ALTER ALTERNATE AND ANY " + - "ARE AREA AREAS ARITHMETIC ASCENDING " + - "ASSIGN AT ATTRIBUTE AUTHOR AUTO " + - "AUTO-SKIP AUTOMATIC B-AND B-EXOR B-LESS " + - "B-NOT B-OR BACKGROUND-COLOR BACKGROUND-COLOUR BEEP " + - "BEFORE BELL BINARY BIT BITS " + - "BLANK BLINK BLOCK BOOLEAN BOTTOM " + - "BY CALL CANCEL CD CF " + - "CH CHARACTER CHARACTERS CLASS CLOCK-UNITS " + - "CLOSE COBOL CODE CODE-SET COL " + - "COLLATING COLUMN COMMA COMMIT COMMITMENT " + - "COMMON COMMUNICATION COMP COMP-0 COMP-1 " + - "COMP-2 COMP-3 COMP-4 COMP-5 COMP-6 " + - "COMP-7 COMP-8 COMP-9 COMPUTATIONAL COMPUTATIONAL-0 " + - "COMPUTATIONAL-1 COMPUTATIONAL-2 COMPUTATIONAL-3 COMPUTATIONAL-4 COMPUTATIONAL-5 " + - "COMPUTATIONAL-6 COMPUTATIONAL-7 COMPUTATIONAL-8 COMPUTATIONAL-9 COMPUTE " + - "CONFIGURATION CONNECT CONSOLE CONTAINED CONTAINS " + - "CONTENT CONTINUE CONTROL CONTROL-AREA CONTROLS " + - "CONVERTING COPY CORR CORRESPONDING COUNT " + - "CRT CRT-UNDER CURRENCY CURRENT CURSOR " + - "DATA DATE DATE-COMPILED DATE-WRITTEN DAY " + - "DAY-OF-WEEK DB DB-ACCESS-CONTROL-KEY DB-DATA-NAME DB-EXCEPTION " + - "DB-FORMAT-NAME DB-RECORD-NAME DB-SET-NAME DB-STATUS DBCS " + - "DBCS-EDITED DE DEBUG-CONTENTS DEBUG-ITEM DEBUG-LINE " + - "DEBUG-NAME DEBUG-SUB-1 DEBUG-SUB-2 DEBUG-SUB-3 DEBUGGING " + - "DECIMAL-POINT DECLARATIVES DEFAULT DELETE DELIMITED " + - "DELIMITER DEPENDING DESCENDING DESCRIBED DESTINATION " + - "DETAIL DISABLE DISCONNECT DISPLAY DISPLAY-1 " + - "DISPLAY-2 DISPLAY-3 DISPLAY-4 DISPLAY-5 DISPLAY-6 " + - "DISPLAY-7 DISPLAY-8 DISPLAY-9 DIVIDE DIVISION " + - "DOWN DROP DUPLICATE DUPLICATES DYNAMIC " + - "EBCDIC EGI EJECT ELSE EMI " + - "EMPTY EMPTY-CHECK ENABLE END END. END-ACCEPT END-ACCEPT. " + - "END-ADD END-CALL END-COMPUTE END-DELETE END-DISPLAY " + - "END-DIVIDE END-EVALUATE END-IF END-INVOKE END-MULTIPLY " + - "END-OF-PAGE END-PERFORM END-READ END-RECEIVE END-RETURN " + - "END-REWRITE END-SEARCH END-START END-STRING END-SUBTRACT " + - "END-UNSTRING END-WRITE END-XML ENTER ENTRY " + - "ENVIRONMENT EOP EQUAL EQUALS ERASE " + - "ERROR ESI EVALUATE EVERY EXCEEDS " + - "EXCEPTION EXCLUSIVE EXIT EXTEND EXTERNAL " + - "EXTERNALLY-DESCRIBED-KEY FD FETCH FILE FILE-CONTROL " + - "FILE-STREAM FILES FILLER FINAL FIND " + - "FINISH FIRST FOOTING FOR FOREGROUND-COLOR " + - "FOREGROUND-COLOUR FORMAT FREE FROM FULL " + - "FUNCTION GENERATE GET GIVING GLOBAL " + - "GO GOBACK GREATER GROUP HEADING " + - "HIGH-VALUE HIGH-VALUES HIGHLIGHT I-O I-O-CONTROL " + - "ID IDENTIFICATION IF IN INDEX " + - "INDEX-1 INDEX-2 INDEX-3 INDEX-4 INDEX-5 " + - "INDEX-6 INDEX-7 INDEX-8 INDEX-9 INDEXED " + - "INDIC INDICATE INDICATOR INDICATORS INITIAL " + - "INITIALIZE INITIATE INPUT INPUT-OUTPUT INSPECT " + - "INSTALLATION INTO INVALID INVOKE IS " + - "JUST JUSTIFIED KANJI KEEP KEY " + - "LABEL LAST LD LEADING LEFT " + - "LEFT-JUSTIFY LENGTH LENGTH-CHECK LESS LIBRARY " + - "LIKE LIMIT LIMITS LINAGE LINAGE-COUNTER " + - "LINE LINE-COUNTER LINES LINKAGE LOCAL-STORAGE " + - "LOCALE LOCALLY LOCK " + - "MEMBER MEMORY MERGE MESSAGE METACLASS " + - "MODE MODIFIED MODIFY MODULES MOVE " + - "MULTIPLE MULTIPLY NATIONAL NATIVE NEGATIVE " + - "NEXT NO NO-ECHO NONE NOT " + - "NULL NULL-KEY-MAP NULL-MAP NULLS NUMBER " + - "NUMERIC NUMERIC-EDITED OBJECT OBJECT-COMPUTER OCCURS " + - "OF OFF OMITTED ON ONLY " + - "OPEN OPTIONAL OR ORDER ORGANIZATION " + - "OTHER OUTPUT OVERFLOW OWNER PACKED-DECIMAL " + - "PADDING PAGE PAGE-COUNTER PARSE PERFORM " + - "PF PH PIC PICTURE PLUS " + - "POINTER POSITION POSITIVE PREFIX PRESENT " + - "PRINTING PRIOR PROCEDURE PROCEDURE-POINTER PROCEDURES " + - "PROCEED PROCESS PROCESSING PROGRAM PROGRAM-ID " + - "PROMPT PROTECTED PURGE QUEUE QUOTE " + - "QUOTES RANDOM RD READ READY " + - "REALM RECEIVE RECONNECT RECORD RECORD-NAME " + - "RECORDS RECURSIVE REDEFINES REEL REFERENCE " + - "REFERENCE-MONITOR REFERENCES RELATION RELATIVE RELEASE " + - "REMAINDER REMOVAL RENAMES REPEATED REPLACE " + - "REPLACING REPORT REPORTING REPORTS REPOSITORY " + - "REQUIRED RERUN RESERVE RESET RETAINING " + - "RETRIEVAL RETURN RETURN-CODE RETURNING REVERSE-VIDEO " + - "REVERSED REWIND REWRITE RF RH " + - "RIGHT RIGHT-JUSTIFY ROLLBACK ROLLING ROUNDED " + - "RUN SAME SCREEN SD SEARCH " + - "SECTION SECURE SECURITY SEGMENT SEGMENT-LIMIT " + - "SELECT SEND SENTENCE SEPARATE SEQUENCE " + - "SEQUENTIAL SET SHARED SIGN SIZE " + - "SKIP1 SKIP2 SKIP3 SORT SORT-MERGE " + - "SORT-RETURN SOURCE SOURCE-COMPUTER SPACE-FILL " + - "SPECIAL-NAMES STANDARD STANDARD-1 STANDARD-2 " + - "START STARTING STATUS STOP STORE " + - "STRING SUB-QUEUE-1 SUB-QUEUE-2 SUB-QUEUE-3 SUB-SCHEMA " + - "SUBFILE SUBSTITUTE SUBTRACT SUM SUPPRESS " + - "SYMBOLIC SYNC SYNCHRONIZED SYSIN SYSOUT " + - "TABLE TALLYING TAPE TENANT TERMINAL " + - "TERMINATE TEST TEXT THAN THEN " + - "THROUGH THRU TIME TIMES TITLE " + - "TO TOP TRAILING TRAILING-SIGN TRANSACTION " + - "TYPE TYPEDEF UNDERLINE UNEQUAL UNIT " + - "UNSTRING UNTIL UP UPDATE UPON " + - "USAGE USAGE-MODE USE USING VALID " + - "VALIDATE VALUE VALUES VARYING VLR " + - "WAIT WHEN WHEN-COMPILED WITH WITHIN " + - "WORDS WORKING-STORAGE WRITE XML XML-CODE " + - "XML-EVENT XML-NTEXT XML-TEXT ZERO ZERO-FILL " ); - - var builtins = makeKeywords("- * ** / + < <= = > >= "); - var tests = { - digit: /\d/, - digit_or_colon: /[\d:]/, - hex: /[0-9a-f]/i, - sign: /[+-]/, - exponent: /e/i, - keyword_char: /[^\s\(\[\;\)\]]/, - symbol: /[\w*+\-]/ - }; - function isNumber(ch, stream){ - // hex - if ( ch === '0' && stream.eat(/x/i) ) { - stream.eatWhile(tests.hex); - return true; - } - // leading sign - if ( ( ch == '+' || ch == '-' ) && ( tests.digit.test(stream.peek()) ) ) { - stream.eat(tests.sign); - ch = stream.next(); - } - if ( tests.digit.test(ch) ) { - stream.eat(ch); - stream.eatWhile(tests.digit); - if ( '.' == stream.peek()) { - stream.eat('.'); - stream.eatWhile(tests.digit); - } - if ( stream.eat(tests.exponent) ) { - stream.eat(tests.sign); - stream.eatWhile(tests.digit); - } - return true; - } - return false; - } - return { - startState: function () { - return { - indentStack: null, - indentation: 0, - mode: false - }; - }, - token: function (stream, state) { - if (state.indentStack == null && stream.sol()) { - // update indentation, but only if indentStack is empty - state.indentation = 6 ; //stream.indentation(); - } - // skip spaces - if (stream.eatSpace()) { - return null; - } - var returnType = null; - switch(state.mode){ - case "string": // multi-line string parsing mode - var next = false; - while ((next = stream.next()) != null) { - if (next == "\"" || next == "\'") { - state.mode = false; - break; - } - } - returnType = STRING; // continue on in string mode - break; - default: // default parsing mode - var ch = stream.next(); - var col = stream.column(); - if (col >= 0 && col <= 5) { - returnType = COBOLLINENUM; - } else if (col >= 72 && col <= 79) { - stream.skipToEnd(); - returnType = MODTAG; - } else if (ch == "*" && col == 6) { // comment - stream.skipToEnd(); // rest of the line is a comment - returnType = COMMENT; - } else if (ch == "\"" || ch == "\'") { - state.mode = "string"; - returnType = STRING; - } else if (ch == "'" && !( tests.digit_or_colon.test(stream.peek()) )) { - returnType = ATOM; - } else if (ch == ".") { - returnType = PERIOD; - } else if (isNumber(ch,stream)){ - returnType = NUMBER; - } else { - if (stream.current().match(tests.symbol)) { - while (col < 71) { - if (stream.eat(tests.symbol) === undefined) { - break; - } else { - col++; - } - } - } - if (keywords && keywords.propertyIsEnumerable(stream.current().toUpperCase())) { - returnType = KEYWORD; - } else if (builtins && builtins.propertyIsEnumerable(stream.current().toUpperCase())) { - returnType = BUILTIN; - } else if (atoms && atoms.propertyIsEnumerable(stream.current().toUpperCase())) { - returnType = ATOM; - } else returnType = null; - } - } - return returnType; - }, - indent: function (state) { - if (state.indentStack == null) return state.indentation; - return state.indentStack.indent; - } - }; -}); - -CodeMirror.defineMIME("text/x-cobol", "cobol"); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/cobol/index.html b/public/plugins/codemirror-5.17.0/mode/cobol/index.html deleted file mode 100644 index 4352419a0..000000000 --- a/public/plugins/codemirror-5.17.0/mode/cobol/index.html +++ /dev/null @@ -1,210 +0,0 @@ - - -CodeMirror: COBOL mode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    COBOL mode

    - -

    Select Theme Select Font Size - - - - -

    - - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/coffeescript/coffeescript.js b/public/plugins/codemirror-5.17.0/mode/coffeescript/coffeescript.js deleted file mode 100644 index adf2184fd..000000000 --- a/public/plugins/codemirror-5.17.0/mode/coffeescript/coffeescript.js +++ /dev/null @@ -1,355 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -/** - * Link to the project's GitHub page: - * https://github.com/pickhardt/coffeescript-codemirror-mode - */ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("coffeescript", function(conf, parserConf) { - var ERRORCLASS = "error"; - - function wordRegexp(words) { - return new RegExp("^((" + words.join(")|(") + "))\\b"); - } - - var operators = /^(?:->|=>|\+[+=]?|-[\-=]?|\*[\*=]?|\/[\/=]?|[=!]=|<[><]?=?|>>?=?|%=?|&=?|\|=?|\^=?|\~|!|\?|(or|and|\|\||&&|\?)=)/; - var delimiters = /^(?:[()\[\]{},:`=;]|\.\.?\.?)/; - var identifiers = /^[_A-Za-z$][_A-Za-z$0-9]*/; - var atProp = /^@[_A-Za-z$][_A-Za-z$0-9]*/; - - var wordOperators = wordRegexp(["and", "or", "not", - "is", "isnt", "in", - "instanceof", "typeof"]); - var indentKeywords = ["for", "while", "loop", "if", "unless", "else", - "switch", "try", "catch", "finally", "class"]; - var commonKeywords = ["break", "by", "continue", "debugger", "delete", - "do", "in", "of", "new", "return", "then", - "this", "@", "throw", "when", "until", "extends"]; - - var keywords = wordRegexp(indentKeywords.concat(commonKeywords)); - - indentKeywords = wordRegexp(indentKeywords); - - - var stringPrefixes = /^('{3}|\"{3}|['\"])/; - var regexPrefixes = /^(\/{3}|\/)/; - var commonConstants = ["Infinity", "NaN", "undefined", "null", "true", "false", "on", "off", "yes", "no"]; - var constants = wordRegexp(commonConstants); - - // Tokenizers - function tokenBase(stream, state) { - // Handle scope changes - if (stream.sol()) { - if (state.scope.align === null) state.scope.align = false; - var scopeOffset = state.scope.offset; - if (stream.eatSpace()) { - var lineOffset = stream.indentation(); - if (lineOffset > scopeOffset && state.scope.type == "coffee") { - return "indent"; - } else if (lineOffset < scopeOffset) { - return "dedent"; - } - return null; - } else { - if (scopeOffset > 0) { - dedent(stream, state); - } - } - } - if (stream.eatSpace()) { - return null; - } - - var ch = stream.peek(); - - // Handle docco title comment (single line) - if (stream.match("####")) { - stream.skipToEnd(); - return "comment"; - } - - // Handle multi line comments - if (stream.match("###")) { - state.tokenize = longComment; - return state.tokenize(stream, state); - } - - // Single line comment - if (ch === "#") { - stream.skipToEnd(); - return "comment"; - } - - // Handle number literals - if (stream.match(/^-?[0-9\.]/, false)) { - var floatLiteral = false; - // Floats - if (stream.match(/^-?\d*\.\d+(e[\+\-]?\d+)?/i)) { - floatLiteral = true; - } - if (stream.match(/^-?\d+\.\d*/)) { - floatLiteral = true; - } - if (stream.match(/^-?\.\d+/)) { - floatLiteral = true; - } - - if (floatLiteral) { - // prevent from getting extra . on 1.. - if (stream.peek() == "."){ - stream.backUp(1); - } - return "number"; - } - // Integers - var intLiteral = false; - // Hex - if (stream.match(/^-?0x[0-9a-f]+/i)) { - intLiteral = true; - } - // Decimal - if (stream.match(/^-?[1-9]\d*(e[\+\-]?\d+)?/)) { - intLiteral = true; - } - // Zero by itself with no other piece of number. - if (stream.match(/^-?0(?![\dx])/i)) { - intLiteral = true; - } - if (intLiteral) { - return "number"; - } - } - - // Handle strings - if (stream.match(stringPrefixes)) { - state.tokenize = tokenFactory(stream.current(), false, "string"); - return state.tokenize(stream, state); - } - // Handle regex literals - if (stream.match(regexPrefixes)) { - if (stream.current() != "/" || stream.match(/^.*\//, false)) { // prevent highlight of division - state.tokenize = tokenFactory(stream.current(), true, "string-2"); - return state.tokenize(stream, state); - } else { - stream.backUp(1); - } - } - - - - // Handle operators and delimiters - if (stream.match(operators) || stream.match(wordOperators)) { - return "operator"; - } - if (stream.match(delimiters)) { - return "punctuation"; - } - - if (stream.match(constants)) { - return "atom"; - } - - if (stream.match(atProp) || state.prop && stream.match(identifiers)) { - return "property"; - } - - if (stream.match(keywords)) { - return "keyword"; - } - - if (stream.match(identifiers)) { - return "variable"; - } - - // Handle non-detected items - stream.next(); - return ERRORCLASS; - } - - function tokenFactory(delimiter, singleline, outclass) { - return function(stream, state) { - while (!stream.eol()) { - stream.eatWhile(/[^'"\/\\]/); - if (stream.eat("\\")) { - stream.next(); - if (singleline && stream.eol()) { - return outclass; - } - } else if (stream.match(delimiter)) { - state.tokenize = tokenBase; - return outclass; - } else { - stream.eat(/['"\/]/); - } - } - if (singleline) { - if (parserConf.singleLineStringErrors) { - outclass = ERRORCLASS; - } else { - state.tokenize = tokenBase; - } - } - return outclass; - }; - } - - function longComment(stream, state) { - while (!stream.eol()) { - stream.eatWhile(/[^#]/); - if (stream.match("###")) { - state.tokenize = tokenBase; - break; - } - stream.eatWhile("#"); - } - return "comment"; - } - - function indent(stream, state, type) { - type = type || "coffee"; - var offset = 0, align = false, alignOffset = null; - for (var scope = state.scope; scope; scope = scope.prev) { - if (scope.type === "coffee" || scope.type == "}") { - offset = scope.offset + conf.indentUnit; - break; - } - } - if (type !== "coffee") { - align = null; - alignOffset = stream.column() + stream.current().length; - } else if (state.scope.align) { - state.scope.align = false; - } - state.scope = { - offset: offset, - type: type, - prev: state.scope, - align: align, - alignOffset: alignOffset - }; - } - - function dedent(stream, state) { - if (!state.scope.prev) return; - if (state.scope.type === "coffee") { - var _indent = stream.indentation(); - var matched = false; - for (var scope = state.scope; scope; scope = scope.prev) { - if (_indent === scope.offset) { - matched = true; - break; - } - } - if (!matched) { - return true; - } - while (state.scope.prev && state.scope.offset !== _indent) { - state.scope = state.scope.prev; - } - return false; - } else { - state.scope = state.scope.prev; - return false; - } - } - - function tokenLexer(stream, state) { - var style = state.tokenize(stream, state); - var current = stream.current(); - - // Handle scope changes. - if (current === "return") { - state.dedent = true; - } - if (((current === "->" || current === "=>") && stream.eol()) - || style === "indent") { - indent(stream, state); - } - var delimiter_index = "[({".indexOf(current); - if (delimiter_index !== -1) { - indent(stream, state, "])}".slice(delimiter_index, delimiter_index+1)); - } - if (indentKeywords.exec(current)){ - indent(stream, state); - } - if (current == "then"){ - dedent(stream, state); - } - - - if (style === "dedent") { - if (dedent(stream, state)) { - return ERRORCLASS; - } - } - delimiter_index = "])}".indexOf(current); - if (delimiter_index !== -1) { - while (state.scope.type == "coffee" && state.scope.prev) - state.scope = state.scope.prev; - if (state.scope.type == current) - state.scope = state.scope.prev; - } - if (state.dedent && stream.eol()) { - if (state.scope.type == "coffee" && state.scope.prev) - state.scope = state.scope.prev; - state.dedent = false; - } - - return style; - } - - var external = { - startState: function(basecolumn) { - return { - tokenize: tokenBase, - scope: {offset:basecolumn || 0, type:"coffee", prev: null, align: false}, - prop: false, - dedent: 0 - }; - }, - - token: function(stream, state) { - var fillAlign = state.scope.align === null && state.scope; - if (fillAlign && stream.sol()) fillAlign.align = false; - - var style = tokenLexer(stream, state); - if (style && style != "comment") { - if (fillAlign) fillAlign.align = true; - state.prop = style == "punctuation" && stream.current() == "." - } - - return style; - }, - - indent: function(state, text) { - if (state.tokenize != tokenBase) return 0; - var scope = state.scope; - var closer = text && "])}".indexOf(text.charAt(0)) > -1; - if (closer) while (scope.type == "coffee" && scope.prev) scope = scope.prev; - var closes = closer && scope.type === text.charAt(0); - if (scope.align) - return scope.alignOffset - (closes ? 1 : 0); - else - return (closes ? scope.prev : scope).offset; - }, - - lineComment: "#", - fold: "indent" - }; - return external; -}); - -CodeMirror.defineMIME("text/x-coffeescript", "coffeescript"); -CodeMirror.defineMIME("text/coffeescript", "coffeescript"); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/coffeescript/index.html b/public/plugins/codemirror-5.17.0/mode/coffeescript/index.html deleted file mode 100644 index 93a5f4f30..000000000 --- a/public/plugins/codemirror-5.17.0/mode/coffeescript/index.html +++ /dev/null @@ -1,740 +0,0 @@ - - -CodeMirror: CoffeeScript mode - - - - - - - - - -
    -

    CoffeeScript mode

    -
    - - -

    MIME types defined: text/x-coffeescript.

    - -

    The CoffeeScript mode was written by Jeff Pickhardt.

    - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/commonlisp/commonlisp.js b/public/plugins/codemirror-5.17.0/mode/commonlisp/commonlisp.js deleted file mode 100644 index fb1f99c63..000000000 --- a/public/plugins/codemirror-5.17.0/mode/commonlisp/commonlisp.js +++ /dev/null @@ -1,123 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("commonlisp", function (config) { - var specialForm = /^(block|let*|return-from|catch|load-time-value|setq|eval-when|locally|symbol-macrolet|flet|macrolet|tagbody|function|multiple-value-call|the|go|multiple-value-prog1|throw|if|progn|unwind-protect|labels|progv|let|quote)$/; - var assumeBody = /^with|^def|^do|^prog|case$|^cond$|bind$|when$|unless$/; - var numLiteral = /^(?:[+\-]?(?:\d+|\d*\.\d+)(?:[efd][+\-]?\d+)?|[+\-]?\d+(?:\/[+\-]?\d+)?|#b[+\-]?[01]+|#o[+\-]?[0-7]+|#x[+\-]?[\da-f]+)/; - var symbol = /[^\s'`,@()\[\]";]/; - var type; - - function readSym(stream) { - var ch; - while (ch = stream.next()) { - if (ch == "\\") stream.next(); - else if (!symbol.test(ch)) { stream.backUp(1); break; } - } - return stream.current(); - } - - function base(stream, state) { - if (stream.eatSpace()) {type = "ws"; return null;} - if (stream.match(numLiteral)) return "number"; - var ch = stream.next(); - if (ch == "\\") ch = stream.next(); - - if (ch == '"') return (state.tokenize = inString)(stream, state); - else if (ch == "(") { type = "open"; return "bracket"; } - else if (ch == ")" || ch == "]") { type = "close"; return "bracket"; } - else if (ch == ";") { stream.skipToEnd(); type = "ws"; return "comment"; } - else if (/['`,@]/.test(ch)) return null; - else if (ch == "|") { - if (stream.skipTo("|")) { stream.next(); return "symbol"; } - else { stream.skipToEnd(); return "error"; } - } else if (ch == "#") { - var ch = stream.next(); - if (ch == "[") { type = "open"; return "bracket"; } - else if (/[+\-=\.']/.test(ch)) return null; - else if (/\d/.test(ch) && stream.match(/^\d*#/)) return null; - else if (ch == "|") return (state.tokenize = inComment)(stream, state); - else if (ch == ":") { readSym(stream); return "meta"; } - else return "error"; - } else { - var name = readSym(stream); - if (name == ".") return null; - type = "symbol"; - if (name == "nil" || name == "t" || name.charAt(0) == ":") return "atom"; - if (state.lastType == "open" && (specialForm.test(name) || assumeBody.test(name))) return "keyword"; - if (name.charAt(0) == "&") return "variable-2"; - return "variable"; - } - } - - function inString(stream, state) { - var escaped = false, next; - while (next = stream.next()) { - if (next == '"' && !escaped) { state.tokenize = base; break; } - escaped = !escaped && next == "\\"; - } - return "string"; - } - - function inComment(stream, state) { - var next, last; - while (next = stream.next()) { - if (next == "#" && last == "|") { state.tokenize = base; break; } - last = next; - } - type = "ws"; - return "comment"; - } - - return { - startState: function () { - return {ctx: {prev: null, start: 0, indentTo: 0}, lastType: null, tokenize: base}; - }, - - token: function (stream, state) { - if (stream.sol() && typeof state.ctx.indentTo != "number") - state.ctx.indentTo = state.ctx.start + 1; - - type = null; - var style = state.tokenize(stream, state); - if (type != "ws") { - if (state.ctx.indentTo == null) { - if (type == "symbol" && assumeBody.test(stream.current())) - state.ctx.indentTo = state.ctx.start + config.indentUnit; - else - state.ctx.indentTo = "next"; - } else if (state.ctx.indentTo == "next") { - state.ctx.indentTo = stream.column(); - } - state.lastType = type; - } - if (type == "open") state.ctx = {prev: state.ctx, start: stream.column(), indentTo: null}; - else if (type == "close") state.ctx = state.ctx.prev || state.ctx; - return style; - }, - - indent: function (state, _textAfter) { - var i = state.ctx.indentTo; - return typeof i == "number" ? i : state.ctx.start + 1; - }, - - closeBrackets: {pairs: "()[]{}\"\""}, - lineComment: ";;", - blockCommentStart: "#|", - blockCommentEnd: "|#" - }; -}); - -CodeMirror.defineMIME("text/x-common-lisp", "commonlisp"); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/commonlisp/index.html b/public/plugins/codemirror-5.17.0/mode/commonlisp/index.html deleted file mode 100644 index f2bf4522d..000000000 --- a/public/plugins/codemirror-5.17.0/mode/commonlisp/index.html +++ /dev/null @@ -1,177 +0,0 @@ - - -CodeMirror: Common Lisp mode - - - - - - - - - -
    -

    Common Lisp mode

    -
    - - -

    MIME types defined: text/x-common-lisp.

    - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/crystal/crystal.js b/public/plugins/codemirror-5.17.0/mode/crystal/crystal.js deleted file mode 100644 index e63627cee..000000000 --- a/public/plugins/codemirror-5.17.0/mode/crystal/crystal.js +++ /dev/null @@ -1,391 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - CodeMirror.defineMode("crystal", function(config) { - function wordRegExp(words, end) { - return new RegExp((end ? "" : "^") + "(?:" + words.join("|") + ")" + (end ? "$" : "\\b")); - } - - function chain(tokenize, stream, state) { - state.tokenize.push(tokenize); - return tokenize(stream, state); - } - - var operators = /^(?:[-+/%|&^]|\*\*?|[<>]{2})/; - var conditionalOperators = /^(?:[=!]~|===|<=>|[<>=!]=?|[|&]{2}|~)/; - var indexingOperators = /^(?:\[\][?=]?)/; - var anotherOperators = /^(?:\.(?:\.{2})?|->|[?:])/; - var idents = /^[a-z_\u009F-\uFFFF][a-zA-Z0-9_\u009F-\uFFFF]*/; - var types = /^[A-Z_\u009F-\uFFFF][a-zA-Z0-9_\u009F-\uFFFF]*/; - var keywords = wordRegExp([ - "abstract", "alias", "as", "asm", "begin", "break", "case", "class", "def", "do", - "else", "elsif", "end", "ensure", "enum", "extend", "for", "fun", "if", "ifdef", - "include", "instance_sizeof", "lib", "macro", "module", "next", "of", "out", "pointerof", - "private", "protected", "rescue", "return", "require", "sizeof", "struct", - "super", "then", "type", "typeof", "union", "unless", "until", "when", "while", "with", - "yield", "__DIR__", "__FILE__", "__LINE__" - ]); - var atomWords = wordRegExp(["true", "false", "nil", "self"]); - var indentKeywordsArray = [ - "def", "fun", "macro", - "class", "module", "struct", "lib", "enum", "union", - "if", "unless", "case", "while", "until", "begin", "then", - "do", - "for", "ifdef" - ]; - var indentKeywords = wordRegExp(indentKeywordsArray); - var dedentKeywordsArray = [ - "end", - "else", "elsif", - "rescue", "ensure" - ]; - var dedentKeywords = wordRegExp(dedentKeywordsArray); - var dedentPunctualsArray = ["\\)", "\\}", "\\]"]; - var dedentPunctuals = new RegExp("^(?:" + dedentPunctualsArray.join("|") + ")$"); - var nextTokenizer = { - "def": tokenFollowIdent, "fun": tokenFollowIdent, "macro": tokenMacroDef, - "class": tokenFollowType, "module": tokenFollowType, "struct": tokenFollowType, - "lib": tokenFollowType, "enum": tokenFollowType, "union": tokenFollowType - }; - var matching = {"[": "]", "{": "}", "(": ")", "<": ">"}; - - function tokenBase(stream, state) { - if (stream.eatSpace()) { - return null; - } - - // Macros - if (state.lastToken != "\\" && stream.match("{%", false)) { - return chain(tokenMacro("%", "%"), stream, state); - } - - if (state.lastToken != "\\" && stream.match("{{", false)) { - return chain(tokenMacro("{", "}"), stream, state); - } - - // Comments - if (stream.peek() == "#") { - stream.skipToEnd(); - return "comment"; - } - - // Variables and keywords - var matched; - if (stream.match(idents)) { - stream.eat(/[?!]/); - - matched = stream.current(); - if (stream.eat(":")) { - return "atom"; - } else if (state.lastToken == ".") { - return "property"; - } else if (keywords.test(matched)) { - if (state.lastToken != "abstract" && indentKeywords.test(matched)) { - if (!(matched == "fun" && state.blocks.indexOf("lib") >= 0)) { - state.blocks.push(matched); - state.currentIndent += 1; - } - } else if (dedentKeywords.test(matched)) { - state.blocks.pop(); - state.currentIndent -= 1; - } - - if (nextTokenizer.hasOwnProperty(matched)) { - state.tokenize.push(nextTokenizer[matched]); - } - - return "keyword"; - } else if (atomWords.test(matched)) { - return "atom"; - } - - return "variable"; - } - - // Class variables and instance variables - // or attributes - if (stream.eat("@")) { - if (stream.peek() == "[") { - return chain(tokenNest("[", "]", "meta"), stream, state); - } - - stream.eat("@"); - stream.match(idents) || stream.match(types); - return "variable-2"; - } - - // Global variables - if (stream.eat("$")) { - stream.eat(/[0-9]+|\?/) || stream.match(idents) || stream.match(types); - return "variable-3"; - } - - // Constants and types - if (stream.match(types)) { - return "tag"; - } - - // Symbols or ':' operator - if (stream.eat(":")) { - if (stream.eat("\"")) { - return chain(tokenQuote("\"", "atom", false), stream, state); - } else if (stream.match(idents) || stream.match(types) || - stream.match(operators) || stream.match(conditionalOperators) || stream.match(indexingOperators)) { - return "atom"; - } - stream.eat(":"); - return "operator"; - } - - // Strings - if (stream.eat("\"")) { - return chain(tokenQuote("\"", "string", true), stream, state); - } - - // Strings or regexps or macro variables or '%' operator - if (stream.peek() == "%") { - var style = "string"; - var embed = true; - var delim; - - if (stream.match("%r")) { - // Regexps - style = "string-2"; - delim = stream.next(); - } else if (stream.match("%w")) { - embed = false; - delim = stream.next(); - } else { - if(delim = stream.match(/^%([^\w\s=])/)) { - delim = delim[1]; - } else if (stream.match(/^%[a-zA-Z0-9_\u009F-\uFFFF]*/)) { - // Macro variables - return "meta"; - } else { - // '%' operator - return "operator"; - } - } - - if (matching.hasOwnProperty(delim)) { - delim = matching[delim]; - } - return chain(tokenQuote(delim, style, embed), stream, state); - } - - // Characters - if (stream.eat("'")) { - stream.match(/^(?:[^']|\\(?:[befnrtv0'"]|[0-7]{3}|u(?:[0-9a-fA-F]{4}|\{[0-9a-fA-F]{1,6}\})))/); - stream.eat("'"); - return "atom"; - } - - // Numbers - if (stream.eat("0")) { - if (stream.eat("x")) { - stream.match(/^[0-9a-fA-F]+/); - } else if (stream.eat("o")) { - stream.match(/^[0-7]+/); - } else if (stream.eat("b")) { - stream.match(/^[01]+/); - } - return "number"; - } - - if (stream.eat(/\d/)) { - stream.match(/^\d*(?:\.\d+)?(?:[eE][+-]?\d+)?/); - return "number"; - } - - // Operators - if (stream.match(operators)) { - stream.eat("="); // Operators can follow assign symbol. - return "operator"; - } - - if (stream.match(conditionalOperators) || stream.match(anotherOperators)) { - return "operator"; - } - - // Parens and braces - if (matched = stream.match(/[({[]/, false)) { - matched = matched[0]; - return chain(tokenNest(matched, matching[matched], null), stream, state); - } - - // Escapes - if (stream.eat("\\")) { - stream.next(); - return "meta"; - } - - stream.next(); - return null; - } - - function tokenNest(begin, end, style, started) { - return function (stream, state) { - if (!started && stream.match(begin)) { - state.tokenize[state.tokenize.length - 1] = tokenNest(begin, end, style, true); - state.currentIndent += 1; - return style; - } - - var nextStyle = tokenBase(stream, state); - if (stream.current() === end) { - state.tokenize.pop(); - state.currentIndent -= 1; - nextStyle = style; - } - - return nextStyle; - }; - } - - function tokenMacro(begin, end, started) { - return function (stream, state) { - if (!started && stream.match("{" + begin)) { - state.currentIndent += 1; - state.tokenize[state.tokenize.length - 1] = tokenMacro(begin, end, true); - return "meta"; - } - - if (stream.match(end + "}")) { - state.currentIndent -= 1; - state.tokenize.pop(); - return "meta"; - } - - return tokenBase(stream, state); - }; - } - - function tokenMacroDef(stream, state) { - if (stream.eatSpace()) { - return null; - } - - var matched; - if (matched = stream.match(idents)) { - if (matched == "def") { - return "keyword"; - } - stream.eat(/[?!]/); - } - - state.tokenize.pop(); - return "def"; - } - - function tokenFollowIdent(stream, state) { - if (stream.eatSpace()) { - return null; - } - - if (stream.match(idents)) { - stream.eat(/[!?]/); - } else { - stream.match(operators) || stream.match(conditionalOperators) || stream.match(indexingOperators); - } - state.tokenize.pop(); - return "def"; - } - - function tokenFollowType(stream, state) { - if (stream.eatSpace()) { - return null; - } - - stream.match(types); - state.tokenize.pop(); - return "def"; - } - - function tokenQuote(end, style, embed) { - return function (stream, state) { - var escaped = false; - - while (stream.peek()) { - if (!escaped) { - if (stream.match("{%", false)) { - state.tokenize.push(tokenMacro("%", "%")); - return style; - } - - if (stream.match("{{", false)) { - state.tokenize.push(tokenMacro("{", "}")); - return style; - } - - if (embed && stream.match("#{", false)) { - state.tokenize.push(tokenNest("#{", "}", "meta")); - return style; - } - - var ch = stream.next(); - - if (ch == end) { - state.tokenize.pop(); - return style; - } - - escaped = ch == "\\"; - } else { - stream.next(); - escaped = false; - } - } - - return style; - }; - } - - return { - startState: function () { - return { - tokenize: [tokenBase], - currentIndent: 0, - lastToken: null, - blocks: [] - }; - }, - - token: function (stream, state) { - var style = state.tokenize[state.tokenize.length - 1](stream, state); - var token = stream.current(); - - if (style && style != "comment") { - state.lastToken = token; - } - - return style; - }, - - indent: function (state, textAfter) { - textAfter = textAfter.replace(/^\s*(?:\{%)?\s*|\s*(?:%\})?\s*$/g, ""); - - if (dedentKeywords.test(textAfter) || dedentPunctuals.test(textAfter)) { - return config.indentUnit * (state.currentIndent - 1); - } - - return config.indentUnit * state.currentIndent; - }, - - fold: "indent", - electricInput: wordRegExp(dedentPunctualsArray.concat(dedentKeywordsArray), true), - lineComment: '#' - }; - }); - - CodeMirror.defineMIME("text/x-crystal", "crystal"); -}); diff --git a/public/plugins/codemirror-5.17.0/mode/crystal/index.html b/public/plugins/codemirror-5.17.0/mode/crystal/index.html deleted file mode 100644 index ec03e2509..000000000 --- a/public/plugins/codemirror-5.17.0/mode/crystal/index.html +++ /dev/null @@ -1,119 +0,0 @@ - - -CodeMirror: Crystal mode - - - - - - - - - - - -
    -

    Crystal mode

    -
    - - -

    MIME types defined: text/x-crystal.

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/css/css.js b/public/plugins/codemirror-5.17.0/mode/css/css.js deleted file mode 100644 index ea7bd01d8..000000000 --- a/public/plugins/codemirror-5.17.0/mode/css/css.js +++ /dev/null @@ -1,825 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("css", function(config, parserConfig) { - var inline = parserConfig.inline - if (!parserConfig.propertyKeywords) parserConfig = CodeMirror.resolveMode("text/css"); - - var indentUnit = config.indentUnit, - tokenHooks = parserConfig.tokenHooks, - documentTypes = parserConfig.documentTypes || {}, - mediaTypes = parserConfig.mediaTypes || {}, - mediaFeatures = parserConfig.mediaFeatures || {}, - mediaValueKeywords = parserConfig.mediaValueKeywords || {}, - propertyKeywords = parserConfig.propertyKeywords || {}, - nonStandardPropertyKeywords = parserConfig.nonStandardPropertyKeywords || {}, - fontProperties = parserConfig.fontProperties || {}, - counterDescriptors = parserConfig.counterDescriptors || {}, - colorKeywords = parserConfig.colorKeywords || {}, - valueKeywords = parserConfig.valueKeywords || {}, - allowNested = parserConfig.allowNested, - supportsAtComponent = parserConfig.supportsAtComponent === true; - - var type, override; - function ret(style, tp) { type = tp; return style; } - - // Tokenizers - - function tokenBase(stream, state) { - var ch = stream.next(); - if (tokenHooks[ch]) { - var result = tokenHooks[ch](stream, state); - if (result !== false) return result; - } - if (ch == "@") { - stream.eatWhile(/[\w\\\-]/); - return ret("def", stream.current()); - } else if (ch == "=" || (ch == "~" || ch == "|") && stream.eat("=")) { - return ret(null, "compare"); - } else if (ch == "\"" || ch == "'") { - state.tokenize = tokenString(ch); - return state.tokenize(stream, state); - } else if (ch == "#") { - stream.eatWhile(/[\w\\\-]/); - return ret("atom", "hash"); - } else if (ch == "!") { - stream.match(/^\s*\w*/); - return ret("keyword", "important"); - } else if (/\d/.test(ch) || ch == "." && stream.eat(/\d/)) { - stream.eatWhile(/[\w.%]/); - return ret("number", "unit"); - } else if (ch === "-") { - if (/[\d.]/.test(stream.peek())) { - stream.eatWhile(/[\w.%]/); - return ret("number", "unit"); - } else if (stream.match(/^-[\w\\\-]+/)) { - stream.eatWhile(/[\w\\\-]/); - if (stream.match(/^\s*:/, false)) - return ret("variable-2", "variable-definition"); - return ret("variable-2", "variable"); - } else if (stream.match(/^\w+-/)) { - return ret("meta", "meta"); - } - } else if (/[,+>*\/]/.test(ch)) { - return ret(null, "select-op"); - } else if (ch == "." && stream.match(/^-?[_a-z][_a-z0-9-]*/i)) { - return ret("qualifier", "qualifier"); - } else if (/[:;{}\[\]\(\)]/.test(ch)) { - return ret(null, ch); - } else if ((ch == "u" && stream.match(/rl(-prefix)?\(/)) || - (ch == "d" && stream.match("omain(")) || - (ch == "r" && stream.match("egexp("))) { - stream.backUp(1); - state.tokenize = tokenParenthesized; - return ret("property", "word"); - } else if (/[\w\\\-]/.test(ch)) { - stream.eatWhile(/[\w\\\-]/); - return ret("property", "word"); - } else { - return ret(null, null); - } - } - - function tokenString(quote) { - return function(stream, state) { - var escaped = false, ch; - while ((ch = stream.next()) != null) { - if (ch == quote && !escaped) { - if (quote == ")") stream.backUp(1); - break; - } - escaped = !escaped && ch == "\\"; - } - if (ch == quote || !escaped && quote != ")") state.tokenize = null; - return ret("string", "string"); - }; - } - - function tokenParenthesized(stream, state) { - stream.next(); // Must be '(' - if (!stream.match(/\s*[\"\')]/, false)) - state.tokenize = tokenString(")"); - else - state.tokenize = null; - return ret(null, "("); - } - - // Context management - - function Context(type, indent, prev) { - this.type = type; - this.indent = indent; - this.prev = prev; - } - - function pushContext(state, stream, type, indent) { - state.context = new Context(type, stream.indentation() + (indent === false ? 0 : indentUnit), state.context); - return type; - } - - function popContext(state) { - if (state.context.prev) - state.context = state.context.prev; - return state.context.type; - } - - function pass(type, stream, state) { - return states[state.context.type](type, stream, state); - } - function popAndPass(type, stream, state, n) { - for (var i = n || 1; i > 0; i--) - state.context = state.context.prev; - return pass(type, stream, state); - } - - // Parser - - function wordAsValue(stream) { - var word = stream.current().toLowerCase(); - if (valueKeywords.hasOwnProperty(word)) - override = "atom"; - else if (colorKeywords.hasOwnProperty(word)) - override = "keyword"; - else - override = "variable"; - } - - var states = {}; - - states.top = function(type, stream, state) { - if (type == "{") { - return pushContext(state, stream, "block"); - } else if (type == "}" && state.context.prev) { - return popContext(state); - } else if (supportsAtComponent && /@component/.test(type)) { - return pushContext(state, stream, "atComponentBlock"); - } else if (/^@(-moz-)?document$/.test(type)) { - return pushContext(state, stream, "documentTypes"); - } else if (/^@(media|supports|(-moz-)?document|import)$/.test(type)) { - return pushContext(state, stream, "atBlock"); - } else if (/^@(font-face|counter-style)/.test(type)) { - state.stateArg = type; - return "restricted_atBlock_before"; - } else if (/^@(-(moz|ms|o|webkit)-)?keyframes$/.test(type)) { - return "keyframes"; - } else if (type && type.charAt(0) == "@") { - return pushContext(state, stream, "at"); - } else if (type == "hash") { - override = "builtin"; - } else if (type == "word") { - override = "tag"; - } else if (type == "variable-definition") { - return "maybeprop"; - } else if (type == "interpolation") { - return pushContext(state, stream, "interpolation"); - } else if (type == ":") { - return "pseudo"; - } else if (allowNested && type == "(") { - return pushContext(state, stream, "parens"); - } - return state.context.type; - }; - - states.block = function(type, stream, state) { - if (type == "word") { - var word = stream.current().toLowerCase(); - if (propertyKeywords.hasOwnProperty(word)) { - override = "property"; - return "maybeprop"; - } else if (nonStandardPropertyKeywords.hasOwnProperty(word)) { - override = "string-2"; - return "maybeprop"; - } else if (allowNested) { - override = stream.match(/^\s*:(?:\s|$)/, false) ? "property" : "tag"; - return "block"; - } else { - override += " error"; - return "maybeprop"; - } - } else if (type == "meta") { - return "block"; - } else if (!allowNested && (type == "hash" || type == "qualifier")) { - override = "error"; - return "block"; - } else { - return states.top(type, stream, state); - } - }; - - states.maybeprop = function(type, stream, state) { - if (type == ":") return pushContext(state, stream, "prop"); - return pass(type, stream, state); - }; - - states.prop = function(type, stream, state) { - if (type == ";") return popContext(state); - if (type == "{" && allowNested) return pushContext(state, stream, "propBlock"); - if (type == "}" || type == "{") return popAndPass(type, stream, state); - if (type == "(") return pushContext(state, stream, "parens"); - - if (type == "hash" && !/^#([0-9a-fA-f]{3,4}|[0-9a-fA-f]{6}|[0-9a-fA-f]{8})$/.test(stream.current())) { - override += " error"; - } else if (type == "word") { - wordAsValue(stream); - } else if (type == "interpolation") { - return pushContext(state, stream, "interpolation"); - } - return "prop"; - }; - - states.propBlock = function(type, _stream, state) { - if (type == "}") return popContext(state); - if (type == "word") { override = "property"; return "maybeprop"; } - return state.context.type; - }; - - states.parens = function(type, stream, state) { - if (type == "{" || type == "}") return popAndPass(type, stream, state); - if (type == ")") return popContext(state); - if (type == "(") return pushContext(state, stream, "parens"); - if (type == "interpolation") return pushContext(state, stream, "interpolation"); - if (type == "word") wordAsValue(stream); - return "parens"; - }; - - states.pseudo = function(type, stream, state) { - if (type == "word") { - override = "variable-3"; - return state.context.type; - } - return pass(type, stream, state); - }; - - states.documentTypes = function(type, stream, state) { - if (type == "word" && documentTypes.hasOwnProperty(stream.current())) { - override = "tag"; - return state.context.type; - } else { - return states.atBlock(type, stream, state); - } - }; - - states.atBlock = function(type, stream, state) { - if (type == "(") return pushContext(state, stream, "atBlock_parens"); - if (type == "}" || type == ";") return popAndPass(type, stream, state); - if (type == "{") return popContext(state) && pushContext(state, stream, allowNested ? "block" : "top"); - - if (type == "interpolation") return pushContext(state, stream, "interpolation"); - - if (type == "word") { - var word = stream.current().toLowerCase(); - if (word == "only" || word == "not" || word == "and" || word == "or") - override = "keyword"; - else if (mediaTypes.hasOwnProperty(word)) - override = "attribute"; - else if (mediaFeatures.hasOwnProperty(word)) - override = "property"; - else if (mediaValueKeywords.hasOwnProperty(word)) - override = "keyword"; - else if (propertyKeywords.hasOwnProperty(word)) - override = "property"; - else if (nonStandardPropertyKeywords.hasOwnProperty(word)) - override = "string-2"; - else if (valueKeywords.hasOwnProperty(word)) - override = "atom"; - else if (colorKeywords.hasOwnProperty(word)) - override = "keyword"; - else - override = "error"; - } - return state.context.type; - }; - - states.atComponentBlock = function(type, stream, state) { - if (type == "}") - return popAndPass(type, stream, state); - if (type == "{") - return popContext(state) && pushContext(state, stream, allowNested ? "block" : "top", false); - if (type == "word") - override = "error"; - return state.context.type; - }; - - states.atBlock_parens = function(type, stream, state) { - if (type == ")") return popContext(state); - if (type == "{" || type == "}") return popAndPass(type, stream, state, 2); - return states.atBlock(type, stream, state); - }; - - states.restricted_atBlock_before = function(type, stream, state) { - if (type == "{") - return pushContext(state, stream, "restricted_atBlock"); - if (type == "word" && state.stateArg == "@counter-style") { - override = "variable"; - return "restricted_atBlock_before"; - } - return pass(type, stream, state); - }; - - states.restricted_atBlock = function(type, stream, state) { - if (type == "}") { - state.stateArg = null; - return popContext(state); - } - if (type == "word") { - if ((state.stateArg == "@font-face" && !fontProperties.hasOwnProperty(stream.current().toLowerCase())) || - (state.stateArg == "@counter-style" && !counterDescriptors.hasOwnProperty(stream.current().toLowerCase()))) - override = "error"; - else - override = "property"; - return "maybeprop"; - } - return "restricted_atBlock"; - }; - - states.keyframes = function(type, stream, state) { - if (type == "word") { override = "variable"; return "keyframes"; } - if (type == "{") return pushContext(state, stream, "top"); - return pass(type, stream, state); - }; - - states.at = function(type, stream, state) { - if (type == ";") return popContext(state); - if (type == "{" || type == "}") return popAndPass(type, stream, state); - if (type == "word") override = "tag"; - else if (type == "hash") override = "builtin"; - return "at"; - }; - - states.interpolation = function(type, stream, state) { - if (type == "}") return popContext(state); - if (type == "{" || type == ";") return popAndPass(type, stream, state); - if (type == "word") override = "variable"; - else if (type != "variable" && type != "(" && type != ")") override = "error"; - return "interpolation"; - }; - - return { - startState: function(base) { - return {tokenize: null, - state: inline ? "block" : "top", - stateArg: null, - context: new Context(inline ? "block" : "top", base || 0, null)}; - }, - - token: function(stream, state) { - if (!state.tokenize && stream.eatSpace()) return null; - var style = (state.tokenize || tokenBase)(stream, state); - if (style && typeof style == "object") { - type = style[1]; - style = style[0]; - } - override = style; - state.state = states[state.state](type, stream, state); - return override; - }, - - indent: function(state, textAfter) { - var cx = state.context, ch = textAfter && textAfter.charAt(0); - var indent = cx.indent; - if (cx.type == "prop" && (ch == "}" || ch == ")")) cx = cx.prev; - if (cx.prev) { - if (ch == "}" && (cx.type == "block" || cx.type == "top" || - cx.type == "interpolation" || cx.type == "restricted_atBlock")) { - // Resume indentation from parent context. - cx = cx.prev; - indent = cx.indent; - } else if (ch == ")" && (cx.type == "parens" || cx.type == "atBlock_parens") || - ch == "{" && (cx.type == "at" || cx.type == "atBlock")) { - // Dedent relative to current context. - indent = Math.max(0, cx.indent - indentUnit); - cx = cx.prev; - } - } - return indent; - }, - - electricChars: "}", - blockCommentStart: "/*", - blockCommentEnd: "*/", - fold: "brace" - }; -}); - - function keySet(array) { - var keys = {}; - for (var i = 0; i < array.length; ++i) { - keys[array[i]] = true; - } - return keys; - } - - var documentTypes_ = [ - "domain", "regexp", "url", "url-prefix" - ], documentTypes = keySet(documentTypes_); - - var mediaTypes_ = [ - "all", "aural", "braille", "handheld", "print", "projection", "screen", - "tty", "tv", "embossed" - ], mediaTypes = keySet(mediaTypes_); - - var mediaFeatures_ = [ - "width", "min-width", "max-width", "height", "min-height", "max-height", - "device-width", "min-device-width", "max-device-width", "device-height", - "min-device-height", "max-device-height", "aspect-ratio", - "min-aspect-ratio", "max-aspect-ratio", "device-aspect-ratio", - "min-device-aspect-ratio", "max-device-aspect-ratio", "color", "min-color", - "max-color", "color-index", "min-color-index", "max-color-index", - "monochrome", "min-monochrome", "max-monochrome", "resolution", - "min-resolution", "max-resolution", "scan", "grid", "orientation", - "device-pixel-ratio", "min-device-pixel-ratio", "max-device-pixel-ratio", - "pointer", "any-pointer", "hover", "any-hover" - ], mediaFeatures = keySet(mediaFeatures_); - - var mediaValueKeywords_ = [ - "landscape", "portrait", "none", "coarse", "fine", "on-demand", "hover", - "interlace", "progressive" - ], mediaValueKeywords = keySet(mediaValueKeywords_); - - var propertyKeywords_ = [ - "align-content", "align-items", "align-self", "alignment-adjust", - "alignment-baseline", "anchor-point", "animation", "animation-delay", - "animation-direction", "animation-duration", "animation-fill-mode", - "animation-iteration-count", "animation-name", "animation-play-state", - "animation-timing-function", "appearance", "azimuth", "backface-visibility", - "background", "background-attachment", "background-blend-mode", "background-clip", - "background-color", "background-image", "background-origin", "background-position", - "background-repeat", "background-size", "baseline-shift", "binding", - "bleed", "bookmark-label", "bookmark-level", "bookmark-state", - "bookmark-target", "border", "border-bottom", "border-bottom-color", - "border-bottom-left-radius", "border-bottom-right-radius", - "border-bottom-style", "border-bottom-width", "border-collapse", - "border-color", "border-image", "border-image-outset", - "border-image-repeat", "border-image-slice", "border-image-source", - "border-image-width", "border-left", "border-left-color", - "border-left-style", "border-left-width", "border-radius", "border-right", - "border-right-color", "border-right-style", "border-right-width", - "border-spacing", "border-style", "border-top", "border-top-color", - "border-top-left-radius", "border-top-right-radius", "border-top-style", - "border-top-width", "border-width", "bottom", "box-decoration-break", - "box-shadow", "box-sizing", "break-after", "break-before", "break-inside", - "caption-side", "clear", "clip", "color", "color-profile", "column-count", - "column-fill", "column-gap", "column-rule", "column-rule-color", - "column-rule-style", "column-rule-width", "column-span", "column-width", - "columns", "content", "counter-increment", "counter-reset", "crop", "cue", - "cue-after", "cue-before", "cursor", "direction", "display", - "dominant-baseline", "drop-initial-after-adjust", - "drop-initial-after-align", "drop-initial-before-adjust", - "drop-initial-before-align", "drop-initial-size", "drop-initial-value", - "elevation", "empty-cells", "fit", "fit-position", "flex", "flex-basis", - "flex-direction", "flex-flow", "flex-grow", "flex-shrink", "flex-wrap", - "float", "float-offset", "flow-from", "flow-into", "font", "font-feature-settings", - "font-family", "font-kerning", "font-language-override", "font-size", "font-size-adjust", - "font-stretch", "font-style", "font-synthesis", "font-variant", - "font-variant-alternates", "font-variant-caps", "font-variant-east-asian", - "font-variant-ligatures", "font-variant-numeric", "font-variant-position", - "font-weight", "grid", "grid-area", "grid-auto-columns", "grid-auto-flow", - "grid-auto-rows", "grid-column", "grid-column-end", "grid-column-gap", - "grid-column-start", "grid-gap", "grid-row", "grid-row-end", "grid-row-gap", - "grid-row-start", "grid-template", "grid-template-areas", "grid-template-columns", - "grid-template-rows", "hanging-punctuation", "height", "hyphens", - "icon", "image-orientation", "image-rendering", "image-resolution", - "inline-box-align", "justify-content", "left", "letter-spacing", - "line-break", "line-height", "line-stacking", "line-stacking-ruby", - "line-stacking-shift", "line-stacking-strategy", "list-style", - "list-style-image", "list-style-position", "list-style-type", "margin", - "margin-bottom", "margin-left", "margin-right", "margin-top", - "marker-offset", "marks", "marquee-direction", "marquee-loop", - "marquee-play-count", "marquee-speed", "marquee-style", "max-height", - "max-width", "min-height", "min-width", "move-to", "nav-down", "nav-index", - "nav-left", "nav-right", "nav-up", "object-fit", "object-position", - "opacity", "order", "orphans", "outline", - "outline-color", "outline-offset", "outline-style", "outline-width", - "overflow", "overflow-style", "overflow-wrap", "overflow-x", "overflow-y", - "padding", "padding-bottom", "padding-left", "padding-right", "padding-top", - "page", "page-break-after", "page-break-before", "page-break-inside", - "page-policy", "pause", "pause-after", "pause-before", "perspective", - "perspective-origin", "pitch", "pitch-range", "play-during", "position", - "presentation-level", "punctuation-trim", "quotes", "region-break-after", - "region-break-before", "region-break-inside", "region-fragment", - "rendering-intent", "resize", "rest", "rest-after", "rest-before", "richness", - "right", "rotation", "rotation-point", "ruby-align", "ruby-overhang", - "ruby-position", "ruby-span", "shape-image-threshold", "shape-inside", "shape-margin", - "shape-outside", "size", "speak", "speak-as", "speak-header", - "speak-numeral", "speak-punctuation", "speech-rate", "stress", "string-set", - "tab-size", "table-layout", "target", "target-name", "target-new", - "target-position", "text-align", "text-align-last", "text-decoration", - "text-decoration-color", "text-decoration-line", "text-decoration-skip", - "text-decoration-style", "text-emphasis", "text-emphasis-color", - "text-emphasis-position", "text-emphasis-style", "text-height", - "text-indent", "text-justify", "text-outline", "text-overflow", "text-shadow", - "text-size-adjust", "text-space-collapse", "text-transform", "text-underline-position", - "text-wrap", "top", "transform", "transform-origin", "transform-style", - "transition", "transition-delay", "transition-duration", - "transition-property", "transition-timing-function", "unicode-bidi", - "vertical-align", "visibility", "voice-balance", "voice-duration", - "voice-family", "voice-pitch", "voice-range", "voice-rate", "voice-stress", - "voice-volume", "volume", "white-space", "widows", "width", "word-break", - "word-spacing", "word-wrap", "z-index", - // SVG-specific - "clip-path", "clip-rule", "mask", "enable-background", "filter", "flood-color", - "flood-opacity", "lighting-color", "stop-color", "stop-opacity", "pointer-events", - "color-interpolation", "color-interpolation-filters", - "color-rendering", "fill", "fill-opacity", "fill-rule", "image-rendering", - "marker", "marker-end", "marker-mid", "marker-start", "shape-rendering", "stroke", - "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", - "stroke-miterlimit", "stroke-opacity", "stroke-width", "text-rendering", - "baseline-shift", "dominant-baseline", "glyph-orientation-horizontal", - "glyph-orientation-vertical", "text-anchor", "writing-mode" - ], propertyKeywords = keySet(propertyKeywords_); - - var nonStandardPropertyKeywords_ = [ - "scrollbar-arrow-color", "scrollbar-base-color", "scrollbar-dark-shadow-color", - "scrollbar-face-color", "scrollbar-highlight-color", "scrollbar-shadow-color", - "scrollbar-3d-light-color", "scrollbar-track-color", "shape-inside", - "searchfield-cancel-button", "searchfield-decoration", "searchfield-results-button", - "searchfield-results-decoration", "zoom" - ], nonStandardPropertyKeywords = keySet(nonStandardPropertyKeywords_); - - var fontProperties_ = [ - "font-family", "src", "unicode-range", "font-variant", "font-feature-settings", - "font-stretch", "font-weight", "font-style" - ], fontProperties = keySet(fontProperties_); - - var counterDescriptors_ = [ - "additive-symbols", "fallback", "negative", "pad", "prefix", "range", - "speak-as", "suffix", "symbols", "system" - ], counterDescriptors = keySet(counterDescriptors_); - - var colorKeywords_ = [ - "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", - "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", - "burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue", - "cornsilk", "crimson", "cyan", "darkblue", "darkcyan", "darkgoldenrod", - "darkgray", "darkgreen", "darkkhaki", "darkmagenta", "darkolivegreen", - "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", - "darkslateblue", "darkslategray", "darkturquoise", "darkviolet", - "deeppink", "deepskyblue", "dimgray", "dodgerblue", "firebrick", - "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", - "gold", "goldenrod", "gray", "grey", "green", "greenyellow", "honeydew", - "hotpink", "indianred", "indigo", "ivory", "khaki", "lavender", - "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", - "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightpink", - "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", - "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", - "maroon", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", - "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", - "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", - "navajowhite", "navy", "oldlace", "olive", "olivedrab", "orange", "orangered", - "orchid", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", - "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", - "purple", "rebeccapurple", "red", "rosybrown", "royalblue", "saddlebrown", - "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", - "slateblue", "slategray", "snow", "springgreen", "steelblue", "tan", - "teal", "thistle", "tomato", "turquoise", "violet", "wheat", "white", - "whitesmoke", "yellow", "yellowgreen" - ], colorKeywords = keySet(colorKeywords_); - - var valueKeywords_ = [ - "above", "absolute", "activeborder", "additive", "activecaption", "afar", - "after-white-space", "ahead", "alias", "all", "all-scroll", "alphabetic", "alternate", - "always", "amharic", "amharic-abegede", "antialiased", "appworkspace", - "arabic-indic", "armenian", "asterisks", "attr", "auto", "avoid", "avoid-column", "avoid-page", - "avoid-region", "background", "backwards", "baseline", "below", "bidi-override", "binary", - "bengali", "blink", "block", "block-axis", "bold", "bolder", "border", "border-box", - "both", "bottom", "break", "break-all", "break-word", "bullets", "button", "button-bevel", - "buttonface", "buttonhighlight", "buttonshadow", "buttontext", "calc", "cambodian", - "capitalize", "caps-lock-indicator", "caption", "captiontext", "caret", - "cell", "center", "checkbox", "circle", "cjk-decimal", "cjk-earthly-branch", - "cjk-heavenly-stem", "cjk-ideographic", "clear", "clip", "close-quote", - "col-resize", "collapse", "color", "color-burn", "color-dodge", "column", "column-reverse", - "compact", "condensed", "contain", "content", - "content-box", "context-menu", "continuous", "copy", "counter", "counters", "cover", "crop", - "cross", "crosshair", "currentcolor", "cursive", "cyclic", "darken", "dashed", "decimal", - "decimal-leading-zero", "default", "default-button", "dense", "destination-atop", - "destination-in", "destination-out", "destination-over", "devanagari", "difference", - "disc", "discard", "disclosure-closed", "disclosure-open", "document", - "dot-dash", "dot-dot-dash", - "dotted", "double", "down", "e-resize", "ease", "ease-in", "ease-in-out", "ease-out", - "element", "ellipse", "ellipsis", "embed", "end", "ethiopic", "ethiopic-abegede", - "ethiopic-abegede-am-et", "ethiopic-abegede-gez", "ethiopic-abegede-ti-er", - "ethiopic-abegede-ti-et", "ethiopic-halehame-aa-er", - "ethiopic-halehame-aa-et", "ethiopic-halehame-am-et", - "ethiopic-halehame-gez", "ethiopic-halehame-om-et", - "ethiopic-halehame-sid-et", "ethiopic-halehame-so-et", - "ethiopic-halehame-ti-er", "ethiopic-halehame-ti-et", "ethiopic-halehame-tig", - "ethiopic-numeric", "ew-resize", "exclusion", "expanded", "extends", "extra-condensed", - "extra-expanded", "fantasy", "fast", "fill", "fixed", "flat", "flex", "flex-end", "flex-start", "footnotes", - "forwards", "from", "geometricPrecision", "georgian", "graytext", "grid", "groove", - "gujarati", "gurmukhi", "hand", "hangul", "hangul-consonant", "hard-light", "hebrew", - "help", "hidden", "hide", "higher", "highlight", "highlighttext", - "hiragana", "hiragana-iroha", "horizontal", "hsl", "hsla", "hue", "icon", "ignore", - "inactiveborder", "inactivecaption", "inactivecaptiontext", "infinite", - "infobackground", "infotext", "inherit", "initial", "inline", "inline-axis", - "inline-block", "inline-flex", "inline-grid", "inline-table", "inset", "inside", "intrinsic", "invert", - "italic", "japanese-formal", "japanese-informal", "justify", "kannada", - "katakana", "katakana-iroha", "keep-all", "khmer", - "korean-hangul-formal", "korean-hanja-formal", "korean-hanja-informal", - "landscape", "lao", "large", "larger", "left", "level", "lighter", "lighten", - "line-through", "linear", "linear-gradient", "lines", "list-item", "listbox", "listitem", - "local", "logical", "loud", "lower", "lower-alpha", "lower-armenian", - "lower-greek", "lower-hexadecimal", "lower-latin", "lower-norwegian", - "lower-roman", "lowercase", "ltr", "luminosity", "malayalam", "match", "matrix", "matrix3d", - "media-controls-background", "media-current-time-display", - "media-fullscreen-button", "media-mute-button", "media-play-button", - "media-return-to-realtime-button", "media-rewind-button", - "media-seek-back-button", "media-seek-forward-button", "media-slider", - "media-sliderthumb", "media-time-remaining-display", "media-volume-slider", - "media-volume-slider-container", "media-volume-sliderthumb", "medium", - "menu", "menulist", "menulist-button", "menulist-text", - "menulist-textfield", "menutext", "message-box", "middle", "min-intrinsic", - "mix", "mongolian", "monospace", "move", "multiple", "multiply", "myanmar", "n-resize", - "narrower", "ne-resize", "nesw-resize", "no-close-quote", "no-drop", - "no-open-quote", "no-repeat", "none", "normal", "not-allowed", "nowrap", - "ns-resize", "numbers", "numeric", "nw-resize", "nwse-resize", "oblique", "octal", "open-quote", - "optimizeLegibility", "optimizeSpeed", "oriya", "oromo", "outset", - "outside", "outside-shape", "overlay", "overline", "padding", "padding-box", - "painted", "page", "paused", "persian", "perspective", "plus-darker", "plus-lighter", - "pointer", "polygon", "portrait", "pre", "pre-line", "pre-wrap", "preserve-3d", - "progress", "push-button", "radial-gradient", "radio", "read-only", - "read-write", "read-write-plaintext-only", "rectangle", "region", - "relative", "repeat", "repeating-linear-gradient", - "repeating-radial-gradient", "repeat-x", "repeat-y", "reset", "reverse", - "rgb", "rgba", "ridge", "right", "rotate", "rotate3d", "rotateX", "rotateY", - "rotateZ", "round", "row", "row-resize", "row-reverse", "rtl", "run-in", "running", - "s-resize", "sans-serif", "saturation", "scale", "scale3d", "scaleX", "scaleY", "scaleZ", "screen", - "scroll", "scrollbar", "se-resize", "searchfield", - "searchfield-cancel-button", "searchfield-decoration", - "searchfield-results-button", "searchfield-results-decoration", - "semi-condensed", "semi-expanded", "separate", "serif", "show", "sidama", - "simp-chinese-formal", "simp-chinese-informal", "single", - "skew", "skewX", "skewY", "skip-white-space", "slide", "slider-horizontal", - "slider-vertical", "sliderthumb-horizontal", "sliderthumb-vertical", "slow", - "small", "small-caps", "small-caption", "smaller", "soft-light", "solid", "somali", - "source-atop", "source-in", "source-out", "source-over", "space", "space-around", "space-between", "spell-out", "square", - "square-button", "start", "static", "status-bar", "stretch", "stroke", "sub", - "subpixel-antialiased", "super", "sw-resize", "symbolic", "symbols", "table", - "table-caption", "table-cell", "table-column", "table-column-group", - "table-footer-group", "table-header-group", "table-row", "table-row-group", - "tamil", - "telugu", "text", "text-bottom", "text-top", "textarea", "textfield", "thai", - "thick", "thin", "threeddarkshadow", "threedface", "threedhighlight", - "threedlightshadow", "threedshadow", "tibetan", "tigre", "tigrinya-er", - "tigrinya-er-abegede", "tigrinya-et", "tigrinya-et-abegede", "to", "top", - "trad-chinese-formal", "trad-chinese-informal", - "translate", "translate3d", "translateX", "translateY", "translateZ", - "transparent", "ultra-condensed", "ultra-expanded", "underline", "up", - "upper-alpha", "upper-armenian", "upper-greek", "upper-hexadecimal", - "upper-latin", "upper-norwegian", "upper-roman", "uppercase", "urdu", "url", - "var", "vertical", "vertical-text", "visible", "visibleFill", "visiblePainted", - "visibleStroke", "visual", "w-resize", "wait", "wave", "wider", - "window", "windowframe", "windowtext", "words", "wrap", "wrap-reverse", "x-large", "x-small", "xor", - "xx-large", "xx-small" - ], valueKeywords = keySet(valueKeywords_); - - var allWords = documentTypes_.concat(mediaTypes_).concat(mediaFeatures_).concat(mediaValueKeywords_) - .concat(propertyKeywords_).concat(nonStandardPropertyKeywords_).concat(colorKeywords_) - .concat(valueKeywords_); - CodeMirror.registerHelper("hintWords", "css", allWords); - - function tokenCComment(stream, state) { - var maybeEnd = false, ch; - while ((ch = stream.next()) != null) { - if (maybeEnd && ch == "/") { - state.tokenize = null; - break; - } - maybeEnd = (ch == "*"); - } - return ["comment", "comment"]; - } - - CodeMirror.defineMIME("text/css", { - documentTypes: documentTypes, - mediaTypes: mediaTypes, - mediaFeatures: mediaFeatures, - mediaValueKeywords: mediaValueKeywords, - propertyKeywords: propertyKeywords, - nonStandardPropertyKeywords: nonStandardPropertyKeywords, - fontProperties: fontProperties, - counterDescriptors: counterDescriptors, - colorKeywords: colorKeywords, - valueKeywords: valueKeywords, - tokenHooks: { - "/": function(stream, state) { - if (!stream.eat("*")) return false; - state.tokenize = tokenCComment; - return tokenCComment(stream, state); - } - }, - name: "css" - }); - - CodeMirror.defineMIME("text/x-scss", { - mediaTypes: mediaTypes, - mediaFeatures: mediaFeatures, - mediaValueKeywords: mediaValueKeywords, - propertyKeywords: propertyKeywords, - nonStandardPropertyKeywords: nonStandardPropertyKeywords, - colorKeywords: colorKeywords, - valueKeywords: valueKeywords, - fontProperties: fontProperties, - allowNested: true, - tokenHooks: { - "/": function(stream, state) { - if (stream.eat("/")) { - stream.skipToEnd(); - return ["comment", "comment"]; - } else if (stream.eat("*")) { - state.tokenize = tokenCComment; - return tokenCComment(stream, state); - } else { - return ["operator", "operator"]; - } - }, - ":": function(stream) { - if (stream.match(/\s*\{/)) - return [null, "{"]; - return false; - }, - "$": function(stream) { - stream.match(/^[\w-]+/); - if (stream.match(/^\s*:/, false)) - return ["variable-2", "variable-definition"]; - return ["variable-2", "variable"]; - }, - "#": function(stream) { - if (!stream.eat("{")) return false; - return [null, "interpolation"]; - } - }, - name: "css", - helperType: "scss" - }); - - CodeMirror.defineMIME("text/x-less", { - mediaTypes: mediaTypes, - mediaFeatures: mediaFeatures, - mediaValueKeywords: mediaValueKeywords, - propertyKeywords: propertyKeywords, - nonStandardPropertyKeywords: nonStandardPropertyKeywords, - colorKeywords: colorKeywords, - valueKeywords: valueKeywords, - fontProperties: fontProperties, - allowNested: true, - tokenHooks: { - "/": function(stream, state) { - if (stream.eat("/")) { - stream.skipToEnd(); - return ["comment", "comment"]; - } else if (stream.eat("*")) { - state.tokenize = tokenCComment; - return tokenCComment(stream, state); - } else { - return ["operator", "operator"]; - } - }, - "@": function(stream) { - if (stream.eat("{")) return [null, "interpolation"]; - if (stream.match(/^(charset|document|font-face|import|(-(moz|ms|o|webkit)-)?keyframes|media|namespace|page|supports)\b/, false)) return false; - stream.eatWhile(/[\w\\\-]/); - if (stream.match(/^\s*:/, false)) - return ["variable-2", "variable-definition"]; - return ["variable-2", "variable"]; - }, - "&": function() { - return ["atom", "atom"]; - } - }, - name: "css", - helperType: "less" - }); - - CodeMirror.defineMIME("text/x-gss", { - documentTypes: documentTypes, - mediaTypes: mediaTypes, - mediaFeatures: mediaFeatures, - propertyKeywords: propertyKeywords, - nonStandardPropertyKeywords: nonStandardPropertyKeywords, - fontProperties: fontProperties, - counterDescriptors: counterDescriptors, - colorKeywords: colorKeywords, - valueKeywords: valueKeywords, - supportsAtComponent: true, - tokenHooks: { - "/": function(stream, state) { - if (!stream.eat("*")) return false; - state.tokenize = tokenCComment; - return tokenCComment(stream, state); - } - }, - name: "css", - helperType: "gss" - }); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/css/gss.html b/public/plugins/codemirror-5.17.0/mode/css/gss.html deleted file mode 100644 index 232fe8c12..000000000 --- a/public/plugins/codemirror-5.17.0/mode/css/gss.html +++ /dev/null @@ -1,103 +0,0 @@ - - -CodeMirror: Closure Stylesheets (GSS) mode - - - - - - - - - - - - -
    -

    Closure Stylesheets (GSS) mode

    -
    - - -

    A mode for Closure Stylesheets (GSS).

    -

    MIME type defined: text/x-gss.

    - -

    Parsing/Highlighting Tests: normal, verbose.

    - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/css/gss_test.js b/public/plugins/codemirror-5.17.0/mode/css/gss_test.js deleted file mode 100644 index d56e59280..000000000 --- a/public/plugins/codemirror-5.17.0/mode/css/gss_test.js +++ /dev/null @@ -1,17 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function() { - "use strict"; - - var mode = CodeMirror.getMode({indentUnit: 2}, "text/x-gss"); - function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), "gss"); } - - MT("atComponent", - "[def @component] {", - "[tag foo] {", - " [property color]: [keyword black];", - "}", - "}"); - -})(); diff --git a/public/plugins/codemirror-5.17.0/mode/css/index.html b/public/plugins/codemirror-5.17.0/mode/css/index.html deleted file mode 100644 index 2d2b9b073..000000000 --- a/public/plugins/codemirror-5.17.0/mode/css/index.html +++ /dev/null @@ -1,75 +0,0 @@ - - -CodeMirror: CSS mode - - - - - - - - - - - - -
    -

    CSS mode

    -
    - - -

    MIME types defined: text/css, text/x-scss (demo), text/x-less (demo).

    - -

    Parsing/Highlighting Tests: normal, verbose.

    - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/css/less.html b/public/plugins/codemirror-5.17.0/mode/css/less.html deleted file mode 100644 index adf7427d3..000000000 --- a/public/plugins/codemirror-5.17.0/mode/css/less.html +++ /dev/null @@ -1,152 +0,0 @@ - - -CodeMirror: LESS mode - - - - - - - - - - -
    -

    LESS mode

    -
    - - -

    The LESS mode is a sub-mode of the CSS mode (defined in css.js).

    - -

    Parsing/Highlighting Tests: normal, verbose.

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/css/less_test.js b/public/plugins/codemirror-5.17.0/mode/css/less_test.js deleted file mode 100644 index dd821558b..000000000 --- a/public/plugins/codemirror-5.17.0/mode/css/less_test.js +++ /dev/null @@ -1,54 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function() { - "use strict"; - - var mode = CodeMirror.getMode({indentUnit: 2}, "text/x-less"); - function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), "less"); } - - MT("variable", - "[variable-2 @base]: [atom #f04615];", - "[qualifier .class] {", - " [property width]: [variable percentage]([number 0.5]); [comment // returns `50%`]", - " [property color]: [variable saturate]([variable-2 @base], [number 5%]);", - "}"); - - MT("amp", - "[qualifier .child], [qualifier .sibling] {", - " [qualifier .parent] [atom &] {", - " [property color]: [keyword black];", - " }", - " [atom &] + [atom &] {", - " [property color]: [keyword red];", - " }", - "}"); - - MT("mixin", - "[qualifier .mixin] ([variable dark]; [variable-2 @color]) {", - " [property color]: [atom darken]([variable-2 @color], [number 10%]);", - "}", - "[qualifier .mixin] ([variable light]; [variable-2 @color]) {", - " [property color]: [atom lighten]([variable-2 @color], [number 10%]);", - "}", - "[qualifier .mixin] ([variable-2 @_]; [variable-2 @color]) {", - " [property display]: [atom block];", - "}", - "[variable-2 @switch]: [variable light];", - "[qualifier .class] {", - " [qualifier .mixin]([variable-2 @switch]; [atom #888]);", - "}"); - - MT("nest", - "[qualifier .one] {", - " [def @media] ([property width]: [number 400px]) {", - " [property font-size]: [number 1.2em];", - " [def @media] [attribute print] [keyword and] [property color] {", - " [property color]: [keyword blue];", - " }", - " }", - "}"); - - - MT("interpolation", ".@{[variable foo]} { [property font-weight]: [atom bold]; }"); -})(); diff --git a/public/plugins/codemirror-5.17.0/mode/css/scss.html b/public/plugins/codemirror-5.17.0/mode/css/scss.html deleted file mode 100644 index f8e4d3736..000000000 --- a/public/plugins/codemirror-5.17.0/mode/css/scss.html +++ /dev/null @@ -1,157 +0,0 @@ - - -CodeMirror: SCSS mode - - - - - - - - - -
    -

    SCSS mode

    -
    - - -

    The SCSS mode is a sub-mode of the CSS mode (defined in css.js).

    - -

    Parsing/Highlighting Tests: normal, verbose.

    - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/css/scss_test.js b/public/plugins/codemirror-5.17.0/mode/css/scss_test.js deleted file mode 100644 index 785921b39..000000000 --- a/public/plugins/codemirror-5.17.0/mode/css/scss_test.js +++ /dev/null @@ -1,110 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function() { - var mode = CodeMirror.getMode({indentUnit: 2}, "text/x-scss"); - function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), "scss"); } - - MT('url_with_quotation', - "[tag foo] { [property background]:[atom url]([string test.jpg]) }"); - - MT('url_with_double_quotes', - "[tag foo] { [property background]:[atom url]([string \"test.jpg\"]) }"); - - MT('url_with_single_quotes', - "[tag foo] { [property background]:[atom url]([string \'test.jpg\']) }"); - - MT('string', - "[def @import] [string \"compass/css3\"]"); - - MT('important_keyword', - "[tag foo] { [property background]:[atom url]([string \'test.jpg\']) [keyword !important] }"); - - MT('variable', - "[variable-2 $blue]:[atom #333]"); - - MT('variable_as_attribute', - "[tag foo] { [property color]:[variable-2 $blue] }"); - - MT('numbers', - "[tag foo] { [property padding]:[number 10px] [number 10] [number 10em] [number 8in] }"); - - MT('number_percentage', - "[tag foo] { [property width]:[number 80%] }"); - - MT('selector', - "[builtin #hello][qualifier .world]{}"); - - MT('singleline_comment', - "[comment // this is a comment]"); - - MT('multiline_comment', - "[comment /*foobar*/]"); - - MT('attribute_with_hyphen', - "[tag foo] { [property font-size]:[number 10px] }"); - - MT('string_after_attribute', - "[tag foo] { [property content]:[string \"::\"] }"); - - MT('directives', - "[def @include] [qualifier .mixin]"); - - MT('basic_structure', - "[tag p] { [property background]:[keyword red]; }"); - - MT('nested_structure', - "[tag p] { [tag a] { [property color]:[keyword red]; } }"); - - MT('mixin', - "[def @mixin] [tag table-base] {}"); - - MT('number_without_semicolon', - "[tag p] {[property width]:[number 12]}", - "[tag a] {[property color]:[keyword red];}"); - - MT('atom_in_nested_block', - "[tag p] { [tag a] { [property color]:[atom #000]; } }"); - - MT('interpolation_in_property', - "[tag foo] { #{[variable-2 $hello]}:[number 2]; }"); - - MT('interpolation_in_selector', - "[tag foo]#{[variable-2 $hello]} { [property color]:[atom #000]; }"); - - MT('interpolation_error', - "[tag foo]#{[variable foo]} { [property color]:[atom #000]; }"); - - MT("divide_operator", - "[tag foo] { [property width]:[number 4] [operator /] [number 2] }"); - - MT('nested_structure_with_id_selector', - "[tag p] { [builtin #hello] { [property color]:[keyword red]; } }"); - - MT('indent_mixin', - "[def @mixin] [tag container] (", - " [variable-2 $a]: [number 10],", - " [variable-2 $b]: [number 10])", - "{}"); - - MT('indent_nested', - "[tag foo] {", - " [tag bar] {", - " }", - "}"); - - MT('indent_parentheses', - "[tag foo] {", - " [property color]: [atom darken]([variable-2 $blue],", - " [number 9%]);", - "}"); - - MT('indent_vardef', - "[variable-2 $name]:", - " [string 'val'];", - "[tag tag] {", - " [tag inner] {", - " [property margin]: [number 3px];", - " }", - "}"); -})(); diff --git a/public/plugins/codemirror-5.17.0/mode/css/test.js b/public/plugins/codemirror-5.17.0/mode/css/test.js deleted file mode 100644 index 7a496fb09..000000000 --- a/public/plugins/codemirror-5.17.0/mode/css/test.js +++ /dev/null @@ -1,200 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function() { - var mode = CodeMirror.getMode({indentUnit: 2}, "css"); - function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } - - // Error, because "foobarhello" is neither a known type or property, but - // property was expected (after "and"), and it should be in parentheses. - MT("atMediaUnknownType", - "[def @media] [attribute screen] [keyword and] [error foobarhello] { }"); - - // Soft error, because "foobarhello" is not a known property or type. - MT("atMediaUnknownProperty", - "[def @media] [attribute screen] [keyword and] ([error foobarhello]) { }"); - - // Make sure nesting works with media queries - MT("atMediaMaxWidthNested", - "[def @media] [attribute screen] [keyword and] ([property max-width]: [number 25px]) { [tag foo] { } }"); - - MT("atMediaFeatureValueKeyword", - "[def @media] ([property orientation]: [keyword landscape]) { }"); - - MT("atMediaUnknownFeatureValueKeyword", - "[def @media] ([property orientation]: [error upsidedown]) { }"); - - MT("tagSelector", - "[tag foo] { }"); - - MT("classSelector", - "[qualifier .foo-bar_hello] { }"); - - MT("idSelector", - "[builtin #foo] { [error #foo] }"); - - MT("tagSelectorUnclosed", - "[tag foo] { [property margin]: [number 0] } [tag bar] { }"); - - MT("tagStringNoQuotes", - "[tag foo] { [property font-family]: [variable hello] [variable world]; }"); - - MT("tagStringDouble", - "[tag foo] { [property font-family]: [string \"hello world\"]; }"); - - MT("tagStringSingle", - "[tag foo] { [property font-family]: [string 'hello world']; }"); - - MT("tagColorKeyword", - "[tag foo] {", - " [property color]: [keyword black];", - " [property color]: [keyword navy];", - " [property color]: [keyword yellow];", - "}"); - - MT("tagColorHex3", - "[tag foo] { [property background]: [atom #fff]; }"); - - MT("tagColorHex4", - "[tag foo] { [property background]: [atom #ffff]; }"); - - MT("tagColorHex6", - "[tag foo] { [property background]: [atom #ffffff]; }"); - - MT("tagColorHex8", - "[tag foo] { [property background]: [atom #ffffffff]; }"); - - MT("tagColorHex5Invalid", - "[tag foo] { [property background]: [atom&error #fffff]; }"); - - MT("tagColorHexInvalid", - "[tag foo] { [property background]: [atom&error #ffg]; }"); - - MT("tagNegativeNumber", - "[tag foo] { [property margin]: [number -5px]; }"); - - MT("tagPositiveNumber", - "[tag foo] { [property padding]: [number 5px]; }"); - - MT("tagVendor", - "[tag foo] { [meta -foo-][property box-sizing]: [meta -foo-][atom border-box]; }"); - - MT("tagBogusProperty", - "[tag foo] { [property&error barhelloworld]: [number 0]; }"); - - MT("tagTwoProperties", - "[tag foo] { [property margin]: [number 0]; [property padding]: [number 0]; }"); - - MT("tagTwoPropertiesURL", - "[tag foo] { [property background]: [atom url]([string //example.com/foo.png]); [property padding]: [number 0]; }"); - - MT("indent_tagSelector", - "[tag strong], [tag em] {", - " [property background]: [atom rgba](", - " [number 255], [number 255], [number 0], [number .2]", - " );", - "}"); - - MT("indent_atMedia", - "[def @media] {", - " [tag foo] {", - " [property color]:", - " [keyword yellow];", - " }", - "}"); - - MT("indent_comma", - "[tag foo] {", - " [property font-family]: [variable verdana],", - " [atom sans-serif];", - "}"); - - MT("indent_parentheses", - "[tag foo]:[variable-3 before] {", - " [property background]: [atom url](", - "[string blahblah]", - "[string etc]", - "[string ]) [keyword !important];", - "}"); - - MT("font_face", - "[def @font-face] {", - " [property font-family]: [string 'myfont'];", - " [error nonsense]: [string 'abc'];", - " [property src]: [atom url]([string http://blah]),", - " [atom url]([string http://foo]);", - "}"); - - MT("empty_url", - "[def @import] [atom url]() [attribute screen];"); - - MT("parens", - "[qualifier .foo] {", - " [property background-image]: [variable fade]([atom #000], [number 20%]);", - " [property border-image]: [atom linear-gradient](", - " [atom to] [atom bottom],", - " [variable fade]([atom #000], [number 20%]) [number 0%],", - " [variable fade]([atom #000], [number 20%]) [number 100%]", - " );", - "}"); - - MT("css_variable", - ":[variable-3 root] {", - " [variable-2 --main-color]: [atom #06c];", - "}", - "[tag h1][builtin #foo] {", - " [property color]: [atom var]([variable-2 --main-color]);", - "}"); - - MT("supports", - "[def @supports] ([keyword not] (([property text-align-last]: [atom justify]) [keyword or] ([meta -moz-][property text-align-last]: [atom justify])) {", - " [property text-align-last]: [atom justify];", - "}"); - - MT("document", - "[def @document] [tag url]([string http://blah]),", - " [tag url-prefix]([string https://]),", - " [tag domain]([string blah.com]),", - " [tag regexp]([string \".*blah.+\"]) {", - " [builtin #id] {", - " [property background-color]: [keyword white];", - " }", - " [tag foo] {", - " [property font-family]: [variable Verdana], [atom sans-serif];", - " }", - "}"); - - MT("document_url", - "[def @document] [tag url]([string http://blah]) { [qualifier .class] { } }"); - - MT("document_urlPrefix", - "[def @document] [tag url-prefix]([string https://]) { [builtin #id] { } }"); - - MT("document_domain", - "[def @document] [tag domain]([string blah.com]) { [tag foo] { } }"); - - MT("document_regexp", - "[def @document] [tag regexp]([string \".*blah.+\"]) { [builtin #id] { } }"); - - MT("counter-style", - "[def @counter-style] [variable binary] {", - " [property system]: [atom numeric];", - " [property symbols]: [number 0] [number 1];", - " [property suffix]: [string \".\"];", - " [property range]: [atom infinite];", - " [property speak-as]: [atom numeric];", - "}"); - - MT("counter-style-additive-symbols", - "[def @counter-style] [variable simple-roman] {", - " [property system]: [atom additive];", - " [property additive-symbols]: [number 10] [variable X], [number 5] [variable V], [number 1] [variable I];", - " [property range]: [number 1] [number 49];", - "}"); - - MT("counter-style-use", - "[tag ol][qualifier .roman] { [property list-style]: [variable simple-roman]; }"); - - MT("counter-style-symbols", - "[tag ol] { [property list-style]: [atom symbols]([atom cyclic] [string \"*\"] [string \"\\2020\"] [string \"\\2021\"] [string \"\\A7\"]); }"); -})(); diff --git a/public/plugins/codemirror-5.17.0/mode/cypher/cypher.js b/public/plugins/codemirror-5.17.0/mode/cypher/cypher.js deleted file mode 100644 index 107e4f6d2..000000000 --- a/public/plugins/codemirror-5.17.0/mode/cypher/cypher.js +++ /dev/null @@ -1,146 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -// By the Neo4j Team and contributors. -// https://github.com/neo4j-contrib/CodeMirror - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - var wordRegexp = function(words) { - return new RegExp("^(?:" + words.join("|") + ")$", "i"); - }; - - CodeMirror.defineMode("cypher", function(config) { - var tokenBase = function(stream/*, state*/) { - var ch = stream.next(); - if (ch === "\"" || ch === "'") { - stream.match(/.+?["']/); - return "string"; - } - if (/[{}\(\),\.;\[\]]/.test(ch)) { - curPunc = ch; - return "node"; - } else if (ch === "/" && stream.eat("/")) { - stream.skipToEnd(); - return "comment"; - } else if (operatorChars.test(ch)) { - stream.eatWhile(operatorChars); - return null; - } else { - stream.eatWhile(/[_\w\d]/); - if (stream.eat(":")) { - stream.eatWhile(/[\w\d_\-]/); - return "atom"; - } - var word = stream.current(); - if (funcs.test(word)) return "builtin"; - if (preds.test(word)) return "def"; - if (keywords.test(word)) return "keyword"; - return "variable"; - } - }; - var pushContext = function(state, type, col) { - return state.context = { - prev: state.context, - indent: state.indent, - col: col, - type: type - }; - }; - var popContext = function(state) { - state.indent = state.context.indent; - return state.context = state.context.prev; - }; - var indentUnit = config.indentUnit; - var curPunc; - var funcs = wordRegexp(["abs", "acos", "allShortestPaths", "asin", "atan", "atan2", "avg", "ceil", "coalesce", "collect", "cos", "cot", "count", "degrees", "e", "endnode", "exp", "extract", "filter", "floor", "haversin", "head", "id", "keys", "labels", "last", "left", "length", "log", "log10", "lower", "ltrim", "max", "min", "node", "nodes", "percentileCont", "percentileDisc", "pi", "radians", "rand", "range", "reduce", "rel", "relationship", "relationships", "replace", "reverse", "right", "round", "rtrim", "shortestPath", "sign", "sin", "size", "split", "sqrt", "startnode", "stdev", "stdevp", "str", "substring", "sum", "tail", "tan", "timestamp", "toFloat", "toInt", "toString", "trim", "type", "upper"]); - var preds = wordRegexp(["all", "and", "any", "contains", "exists", "has", "in", "none", "not", "or", "single", "xor"]); - var keywords = wordRegexp(["as", "asc", "ascending", "assert", "by", "case", "commit", "constraint", "create", "csv", "cypher", "delete", "desc", "descending", "detach", "distinct", "drop", "else", "end", "ends", "explain", "false", "fieldterminator", "foreach", "from", "headers", "in", "index", "is", "join", "limit", "load", "match", "merge", "null", "on", "optional", "order", "periodic", "profile", "remove", "return", "scan", "set", "skip", "start", "starts", "then", "true", "union", "unique", "unwind", "using", "when", "where", "with"]); - var operatorChars = /[*+\-<>=&|~%^]/; - - return { - startState: function(/*base*/) { - return { - tokenize: tokenBase, - context: null, - indent: 0, - col: 0 - }; - }, - token: function(stream, state) { - if (stream.sol()) { - if (state.context && (state.context.align == null)) { - state.context.align = false; - } - state.indent = stream.indentation(); - } - if (stream.eatSpace()) { - return null; - } - var style = state.tokenize(stream, state); - if (style !== "comment" && state.context && (state.context.align == null) && state.context.type !== "pattern") { - state.context.align = true; - } - if (curPunc === "(") { - pushContext(state, ")", stream.column()); - } else if (curPunc === "[") { - pushContext(state, "]", stream.column()); - } else if (curPunc === "{") { - pushContext(state, "}", stream.column()); - } else if (/[\]\}\)]/.test(curPunc)) { - while (state.context && state.context.type === "pattern") { - popContext(state); - } - if (state.context && curPunc === state.context.type) { - popContext(state); - } - } else if (curPunc === "." && state.context && state.context.type === "pattern") { - popContext(state); - } else if (/atom|string|variable/.test(style) && state.context) { - if (/[\}\]]/.test(state.context.type)) { - pushContext(state, "pattern", stream.column()); - } else if (state.context.type === "pattern" && !state.context.align) { - state.context.align = true; - state.context.col = stream.column(); - } - } - return style; - }, - indent: function(state, textAfter) { - var firstChar = textAfter && textAfter.charAt(0); - var context = state.context; - if (/[\]\}]/.test(firstChar)) { - while (context && context.type === "pattern") { - context = context.prev; - } - } - var closing = context && firstChar === context.type; - if (!context) return 0; - if (context.type === "keywords") return CodeMirror.commands.newlineAndIndent; - if (context.align) return context.col + (closing ? 0 : 1); - return context.indent + (closing ? 0 : indentUnit); - } - }; - }); - - CodeMirror.modeExtensions["cypher"] = { - autoFormatLineBreaks: function(text) { - var i, lines, reProcessedPortion; - var lines = text.split("\n"); - var reProcessedPortion = /\s+\b(return|where|order by|match|with|skip|limit|create|delete|set)\b\s/g; - for (var i = 0; i < lines.length; i++) - lines[i] = lines[i].replace(reProcessedPortion, " \n$1 ").trim(); - return lines.join("\n"); - } - }; - - CodeMirror.defineMIME("application/x-cypher-query", "cypher"); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/cypher/index.html b/public/plugins/codemirror-5.17.0/mode/cypher/index.html deleted file mode 100644 index b8bd75c8b..000000000 --- a/public/plugins/codemirror-5.17.0/mode/cypher/index.html +++ /dev/null @@ -1,63 +0,0 @@ - - -CodeMirror: Cypher Mode for CodeMirror - - - - - - - - - - -
    -

    Cypher Mode for CodeMirror

    -
    - - -

    MIME types defined: - application/x-cypher-query -

    - - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/d/d.js b/public/plugins/codemirror-5.17.0/mode/d/d.js deleted file mode 100644 index c927a7e35..000000000 --- a/public/plugins/codemirror-5.17.0/mode/d/d.js +++ /dev/null @@ -1,218 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("d", function(config, parserConfig) { - var indentUnit = config.indentUnit, - statementIndentUnit = parserConfig.statementIndentUnit || indentUnit, - keywords = parserConfig.keywords || {}, - builtin = parserConfig.builtin || {}, - blockKeywords = parserConfig.blockKeywords || {}, - atoms = parserConfig.atoms || {}, - hooks = parserConfig.hooks || {}, - multiLineStrings = parserConfig.multiLineStrings; - var isOperatorChar = /[+\-*&%=<>!?|\/]/; - - var curPunc; - - function tokenBase(stream, state) { - var ch = stream.next(); - if (hooks[ch]) { - var result = hooks[ch](stream, state); - if (result !== false) return result; - } - if (ch == '"' || ch == "'" || ch == "`") { - state.tokenize = tokenString(ch); - return state.tokenize(stream, state); - } - if (/[\[\]{}\(\),;\:\.]/.test(ch)) { - curPunc = ch; - return null; - } - if (/\d/.test(ch)) { - stream.eatWhile(/[\w\.]/); - return "number"; - } - if (ch == "/") { - if (stream.eat("+")) { - state.tokenize = tokenComment; - return tokenNestedComment(stream, state); - } - if (stream.eat("*")) { - state.tokenize = tokenComment; - return tokenComment(stream, state); - } - if (stream.eat("/")) { - stream.skipToEnd(); - return "comment"; - } - } - if (isOperatorChar.test(ch)) { - stream.eatWhile(isOperatorChar); - return "operator"; - } - stream.eatWhile(/[\w\$_\xa1-\uffff]/); - var cur = stream.current(); - if (keywords.propertyIsEnumerable(cur)) { - if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement"; - return "keyword"; - } - if (builtin.propertyIsEnumerable(cur)) { - if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement"; - return "builtin"; - } - if (atoms.propertyIsEnumerable(cur)) return "atom"; - return "variable"; - } - - function tokenString(quote) { - return function(stream, state) { - var escaped = false, next, end = false; - while ((next = stream.next()) != null) { - if (next == quote && !escaped) {end = true; break;} - escaped = !escaped && next == "\\"; - } - if (end || !(escaped || multiLineStrings)) - state.tokenize = null; - return "string"; - }; - } - - function tokenComment(stream, state) { - var maybeEnd = false, ch; - while (ch = stream.next()) { - if (ch == "/" && maybeEnd) { - state.tokenize = null; - break; - } - maybeEnd = (ch == "*"); - } - return "comment"; - } - - function tokenNestedComment(stream, state) { - var maybeEnd = false, ch; - while (ch = stream.next()) { - if (ch == "/" && maybeEnd) { - state.tokenize = null; - break; - } - maybeEnd = (ch == "+"); - } - return "comment"; - } - - function Context(indented, column, type, align, prev) { - this.indented = indented; - this.column = column; - this.type = type; - this.align = align; - this.prev = prev; - } - function pushContext(state, col, type) { - var indent = state.indented; - if (state.context && state.context.type == "statement") - indent = state.context.indented; - return state.context = new Context(indent, col, type, null, state.context); - } - function popContext(state) { - var t = state.context.type; - if (t == ")" || t == "]" || t == "}") - state.indented = state.context.indented; - return state.context = state.context.prev; - } - - // Interface - - return { - startState: function(basecolumn) { - return { - tokenize: null, - context: new Context((basecolumn || 0) - indentUnit, 0, "top", false), - indented: 0, - startOfLine: true - }; - }, - - token: function(stream, state) { - var ctx = state.context; - if (stream.sol()) { - if (ctx.align == null) ctx.align = false; - state.indented = stream.indentation(); - state.startOfLine = true; - } - if (stream.eatSpace()) return null; - curPunc = null; - var style = (state.tokenize || tokenBase)(stream, state); - if (style == "comment" || style == "meta") return style; - if (ctx.align == null) ctx.align = true; - - if ((curPunc == ";" || curPunc == ":" || curPunc == ",") && ctx.type == "statement") popContext(state); - else if (curPunc == "{") pushContext(state, stream.column(), "}"); - else if (curPunc == "[") pushContext(state, stream.column(), "]"); - else if (curPunc == "(") pushContext(state, stream.column(), ")"); - else if (curPunc == "}") { - while (ctx.type == "statement") ctx = popContext(state); - if (ctx.type == "}") ctx = popContext(state); - while (ctx.type == "statement") ctx = popContext(state); - } - else if (curPunc == ctx.type) popContext(state); - else if (((ctx.type == "}" || ctx.type == "top") && curPunc != ';') || (ctx.type == "statement" && curPunc == "newstatement")) - pushContext(state, stream.column(), "statement"); - state.startOfLine = false; - return style; - }, - - indent: function(state, textAfter) { - if (state.tokenize != tokenBase && state.tokenize != null) return CodeMirror.Pass; - var ctx = state.context, firstChar = textAfter && textAfter.charAt(0); - if (ctx.type == "statement" && firstChar == "}") ctx = ctx.prev; - var closing = firstChar == ctx.type; - if (ctx.type == "statement") return ctx.indented + (firstChar == "{" ? 0 : statementIndentUnit); - else if (ctx.align) return ctx.column + (closing ? 0 : 1); - else return ctx.indented + (closing ? 0 : indentUnit); - }, - - electricChars: "{}" - }; -}); - - function words(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - - var blockKeywords = "body catch class do else enum for foreach foreach_reverse if in interface mixin " + - "out scope struct switch try union unittest version while with"; - - CodeMirror.defineMIME("text/x-d", { - name: "d", - keywords: words("abstract alias align asm assert auto break case cast cdouble cent cfloat const continue " + - "debug default delegate delete deprecated export extern final finally function goto immutable " + - "import inout invariant is lazy macro module new nothrow override package pragma private " + - "protected public pure ref return shared short static super synchronized template this " + - "throw typedef typeid typeof volatile __FILE__ __LINE__ __gshared __traits __vector __parameters " + - blockKeywords), - blockKeywords: words(blockKeywords), - builtin: words("bool byte char creal dchar double float idouble ifloat int ireal long real short ubyte " + - "ucent uint ulong ushort wchar wstring void size_t sizediff_t"), - atoms: words("exit failure success true false null"), - hooks: { - "@": function(stream, _state) { - stream.eatWhile(/[\w\$_]/); - return "meta"; - } - } - }); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/d/index.html b/public/plugins/codemirror-5.17.0/mode/d/index.html deleted file mode 100644 index 08cabd8a2..000000000 --- a/public/plugins/codemirror-5.17.0/mode/d/index.html +++ /dev/null @@ -1,273 +0,0 @@ - - -CodeMirror: D mode - - - - - - - - - - -
    -

    D mode

    -
    - - - -

    Simple mode that handle D-Syntax (DLang Homepage).

    - -

    MIME types defined: text/x-d - .

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/dart/dart.js b/public/plugins/codemirror-5.17.0/mode/dart/dart.js deleted file mode 100644 index 8d383a95e..000000000 --- a/public/plugins/codemirror-5.17.0/mode/dart/dart.js +++ /dev/null @@ -1,157 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror"), require("../clike/clike")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../clike/clike"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - var keywords = ("this super static final const abstract class extends external factory " + - "implements get native operator set typedef with enum throw rethrow " + - "assert break case continue default in return new deferred async await " + - "try catch finally do else for if switch while import library export " + - "part of show hide is as").split(" "); - var blockKeywords = "try catch finally do else for if switch while".split(" "); - var atoms = "true false null".split(" "); - var builtins = "void bool num int double dynamic var String".split(" "); - - function set(words) { - var obj = {}; - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - - function pushInterpolationStack(state) { - (state.interpolationStack || (state.interpolationStack = [])).push(state.tokenize); - } - - function popInterpolationStack(state) { - return (state.interpolationStack || (state.interpolationStack = [])).pop(); - } - - function sizeInterpolationStack(state) { - return state.interpolationStack ? state.interpolationStack.length : 0; - } - - CodeMirror.defineMIME("application/dart", { - name: "clike", - keywords: set(keywords), - blockKeywords: set(blockKeywords), - builtin: set(builtins), - atoms: set(atoms), - hooks: { - "@": function(stream) { - stream.eatWhile(/[\w\$_\.]/); - return "meta"; - }, - - // custom string handling to deal with triple-quoted strings and string interpolation - "'": function(stream, state) { - return tokenString("'", stream, state, false); - }, - "\"": function(stream, state) { - return tokenString("\"", stream, state, false); - }, - "r": function(stream, state) { - var peek = stream.peek(); - if (peek == "'" || peek == "\"") { - return tokenString(stream.next(), stream, state, true); - } - return false; - }, - - "}": function(_stream, state) { - // "}" is end of interpolation, if interpolation stack is non-empty - if (sizeInterpolationStack(state) > 0) { - state.tokenize = popInterpolationStack(state); - return null; - } - return false; - }, - - "/": function(stream, state) { - if (!stream.eat("*")) return false - state.tokenize = tokenNestedComment(1) - return state.tokenize(stream, state) - } - } - }); - - function tokenString(quote, stream, state, raw) { - var tripleQuoted = false; - if (stream.eat(quote)) { - if (stream.eat(quote)) tripleQuoted = true; - else return "string"; //empty string - } - function tokenStringHelper(stream, state) { - var escaped = false; - while (!stream.eol()) { - if (!raw && !escaped && stream.peek() == "$") { - pushInterpolationStack(state); - state.tokenize = tokenInterpolation; - return "string"; - } - var next = stream.next(); - if (next == quote && !escaped && (!tripleQuoted || stream.match(quote + quote))) { - state.tokenize = null; - break; - } - escaped = !raw && !escaped && next == "\\"; - } - return "string"; - } - state.tokenize = tokenStringHelper; - return tokenStringHelper(stream, state); - } - - function tokenInterpolation(stream, state) { - stream.eat("$"); - if (stream.eat("{")) { - // let clike handle the content of ${...}, - // we take over again when "}" appears (see hooks). - state.tokenize = null; - } else { - state.tokenize = tokenInterpolationIdentifier; - } - return null; - } - - function tokenInterpolationIdentifier(stream, state) { - stream.eatWhile(/[\w_]/); - state.tokenize = popInterpolationStack(state); - return "variable"; - } - - function tokenNestedComment(depth) { - return function (stream, state) { - var ch - while (ch = stream.next()) { - if (ch == "*" && stream.eat("/")) { - if (depth == 1) { - state.tokenize = null - break - } else { - state.tokenize = tokenNestedComment(depth - 1) - return state.tokenize(stream, state) - } - } else if (ch == "/" && stream.eat("*")) { - state.tokenize = tokenNestedComment(depth + 1) - return state.tokenize(stream, state) - } - } - return "comment" - } - } - - CodeMirror.registerHelper("hintWords", "application/dart", keywords.concat(atoms).concat(builtins)); - - // This is needed to make loading through meta.js work. - CodeMirror.defineMode("dart", function(conf) { - return CodeMirror.getMode(conf, "application/dart"); - }, "clike"); -}); diff --git a/public/plugins/codemirror-5.17.0/mode/dart/index.html b/public/plugins/codemirror-5.17.0/mode/dart/index.html deleted file mode 100644 index e79da5a8b..000000000 --- a/public/plugins/codemirror-5.17.0/mode/dart/index.html +++ /dev/null @@ -1,71 +0,0 @@ - - -CodeMirror: Dart mode - - - - - - - - - -
    -

    Dart mode

    -
    - - - - - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/diff/diff.js b/public/plugins/codemirror-5.17.0/mode/diff/diff.js deleted file mode 100644 index fe0305e7b..000000000 --- a/public/plugins/codemirror-5.17.0/mode/diff/diff.js +++ /dev/null @@ -1,47 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("diff", function() { - - var TOKEN_NAMES = { - '+': 'positive', - '-': 'negative', - '@': 'meta' - }; - - return { - token: function(stream) { - var tw_pos = stream.string.search(/[\t ]+?$/); - - if (!stream.sol() || tw_pos === 0) { - stream.skipToEnd(); - return ("error " + ( - TOKEN_NAMES[stream.string.charAt(0)] || '')).replace(/ $/, ''); - } - - var token_name = TOKEN_NAMES[stream.peek()] || stream.skipToEnd(); - - if (tw_pos === -1) { - stream.skipToEnd(); - } else { - stream.pos = tw_pos; - } - - return token_name; - } - }; -}); - -CodeMirror.defineMIME("text/x-diff", "diff"); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/diff/index.html b/public/plugins/codemirror-5.17.0/mode/diff/index.html deleted file mode 100644 index 0af611fa4..000000000 --- a/public/plugins/codemirror-5.17.0/mode/diff/index.html +++ /dev/null @@ -1,117 +0,0 @@ - - -CodeMirror: Diff mode - - - - - - - - - -
    -

    Diff mode

    -
    - - -

    MIME types defined: text/x-diff.

    - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/django/django.js b/public/plugins/codemirror-5.17.0/mode/django/django.js deleted file mode 100644 index 7b4ef3b56..000000000 --- a/public/plugins/codemirror-5.17.0/mode/django/django.js +++ /dev/null @@ -1,356 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed"), - require("../../addon/mode/overlay")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../htmlmixed/htmlmixed", - "../../addon/mode/overlay"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - CodeMirror.defineMode("django:inner", function() { - var keywords = ["block", "endblock", "for", "endfor", "true", "false", "filter", "endfilter", - "loop", "none", "self", "super", "if", "elif", "endif", "as", "else", "import", - "with", "endwith", "without", "context", "ifequal", "endifequal", "ifnotequal", - "endifnotequal", "extends", "include", "load", "comment", "endcomment", - "empty", "url", "static", "trans", "blocktrans", "endblocktrans", "now", - "regroup", "lorem", "ifchanged", "endifchanged", "firstof", "debug", "cycle", - "csrf_token", "autoescape", "endautoescape", "spaceless", "endspaceless", - "ssi", "templatetag", "verbatim", "endverbatim", "widthratio"], - filters = ["add", "addslashes", "capfirst", "center", "cut", "date", - "default", "default_if_none", "dictsort", - "dictsortreversed", "divisibleby", "escape", "escapejs", - "filesizeformat", "first", "floatformat", "force_escape", - "get_digit", "iriencode", "join", "last", "length", - "length_is", "linebreaks", "linebreaksbr", "linenumbers", - "ljust", "lower", "make_list", "phone2numeric", "pluralize", - "pprint", "random", "removetags", "rjust", "safe", - "safeseq", "slice", "slugify", "stringformat", "striptags", - "time", "timesince", "timeuntil", "title", "truncatechars", - "truncatechars_html", "truncatewords", "truncatewords_html", - "unordered_list", "upper", "urlencode", "urlize", - "urlizetrunc", "wordcount", "wordwrap", "yesno"], - operators = ["==", "!=", "<", ">", "<=", ">="], - wordOperators = ["in", "not", "or", "and"]; - - keywords = new RegExp("^\\b(" + keywords.join("|") + ")\\b"); - filters = new RegExp("^\\b(" + filters.join("|") + ")\\b"); - operators = new RegExp("^\\b(" + operators.join("|") + ")\\b"); - wordOperators = new RegExp("^\\b(" + wordOperators.join("|") + ")\\b"); - - // We have to return "null" instead of null, in order to avoid string - // styling as the default, when using Django templates inside HTML - // element attributes - function tokenBase (stream, state) { - // Attempt to identify a variable, template or comment tag respectively - if (stream.match("{{")) { - state.tokenize = inVariable; - return "tag"; - } else if (stream.match("{%")) { - state.tokenize = inTag; - return "tag"; - } else if (stream.match("{#")) { - state.tokenize = inComment; - return "comment"; - } - - // Ignore completely any stream series that do not match the - // Django template opening tags. - while (stream.next() != null && !stream.match(/\{[{%#]/, false)) {} - return null; - } - - // A string can be included in either single or double quotes (this is - // the delimiter). Mark everything as a string until the start delimiter - // occurs again. - function inString (delimiter, previousTokenizer) { - return function (stream, state) { - if (!state.escapeNext && stream.eat(delimiter)) { - state.tokenize = previousTokenizer; - } else { - if (state.escapeNext) { - state.escapeNext = false; - } - - var ch = stream.next(); - - // Take into account the backslash for escaping characters, such as - // the string delimiter. - if (ch == "\\") { - state.escapeNext = true; - } - } - - return "string"; - }; - } - - // Apply Django template variable syntax highlighting - function inVariable (stream, state) { - // Attempt to match a dot that precedes a property - if (state.waitDot) { - state.waitDot = false; - - if (stream.peek() != ".") { - return "null"; - } - - // Dot followed by a non-word character should be considered an error. - if (stream.match(/\.\W+/)) { - return "error"; - } else if (stream.eat(".")) { - state.waitProperty = true; - return "null"; - } else { - throw Error ("Unexpected error while waiting for property."); - } - } - - // Attempt to match a pipe that precedes a filter - if (state.waitPipe) { - state.waitPipe = false; - - if (stream.peek() != "|") { - return "null"; - } - - // Pipe followed by a non-word character should be considered an error. - if (stream.match(/\.\W+/)) { - return "error"; - } else if (stream.eat("|")) { - state.waitFilter = true; - return "null"; - } else { - throw Error ("Unexpected error while waiting for filter."); - } - } - - // Highlight properties - if (state.waitProperty) { - state.waitProperty = false; - if (stream.match(/\b(\w+)\b/)) { - state.waitDot = true; // A property can be followed by another property - state.waitPipe = true; // A property can be followed by a filter - return "property"; - } - } - - // Highlight filters - if (state.waitFilter) { - state.waitFilter = false; - if (stream.match(filters)) { - return "variable-2"; - } - } - - // Ignore all white spaces - if (stream.eatSpace()) { - state.waitProperty = false; - return "null"; - } - - // Identify numbers - if (stream.match(/\b\d+(\.\d+)?\b/)) { - return "number"; - } - - // Identify strings - if (stream.match("'")) { - state.tokenize = inString("'", state.tokenize); - return "string"; - } else if (stream.match('"')) { - state.tokenize = inString('"', state.tokenize); - return "string"; - } - - // Attempt to find the variable - if (stream.match(/\b(\w+)\b/) && !state.foundVariable) { - state.waitDot = true; - state.waitPipe = true; // A property can be followed by a filter - return "variable"; - } - - // If found closing tag reset - if (stream.match("}}")) { - state.waitProperty = null; - state.waitFilter = null; - state.waitDot = null; - state.waitPipe = null; - state.tokenize = tokenBase; - return "tag"; - } - - // If nothing was found, advance to the next character - stream.next(); - return "null"; - } - - function inTag (stream, state) { - // Attempt to match a dot that precedes a property - if (state.waitDot) { - state.waitDot = false; - - if (stream.peek() != ".") { - return "null"; - } - - // Dot followed by a non-word character should be considered an error. - if (stream.match(/\.\W+/)) { - return "error"; - } else if (stream.eat(".")) { - state.waitProperty = true; - return "null"; - } else { - throw Error ("Unexpected error while waiting for property."); - } - } - - // Attempt to match a pipe that precedes a filter - if (state.waitPipe) { - state.waitPipe = false; - - if (stream.peek() != "|") { - return "null"; - } - - // Pipe followed by a non-word character should be considered an error. - if (stream.match(/\.\W+/)) { - return "error"; - } else if (stream.eat("|")) { - state.waitFilter = true; - return "null"; - } else { - throw Error ("Unexpected error while waiting for filter."); - } - } - - // Highlight properties - if (state.waitProperty) { - state.waitProperty = false; - if (stream.match(/\b(\w+)\b/)) { - state.waitDot = true; // A property can be followed by another property - state.waitPipe = true; // A property can be followed by a filter - return "property"; - } - } - - // Highlight filters - if (state.waitFilter) { - state.waitFilter = false; - if (stream.match(filters)) { - return "variable-2"; - } - } - - // Ignore all white spaces - if (stream.eatSpace()) { - state.waitProperty = false; - return "null"; - } - - // Identify numbers - if (stream.match(/\b\d+(\.\d+)?\b/)) { - return "number"; - } - - // Identify strings - if (stream.match("'")) { - state.tokenize = inString("'", state.tokenize); - return "string"; - } else if (stream.match('"')) { - state.tokenize = inString('"', state.tokenize); - return "string"; - } - - // Attempt to match an operator - if (stream.match(operators)) { - return "operator"; - } - - // Attempt to match a word operator - if (stream.match(wordOperators)) { - return "keyword"; - } - - // Attempt to match a keyword - var keywordMatch = stream.match(keywords); - if (keywordMatch) { - if (keywordMatch[0] == "comment") { - state.blockCommentTag = true; - } - return "keyword"; - } - - // Attempt to match a variable - if (stream.match(/\b(\w+)\b/)) { - state.waitDot = true; - state.waitPipe = true; // A property can be followed by a filter - return "variable"; - } - - // If found closing tag reset - if (stream.match("%}")) { - state.waitProperty = null; - state.waitFilter = null; - state.waitDot = null; - state.waitPipe = null; - // If the tag that closes is a block comment tag, we want to mark the - // following code as comment, until the tag closes. - if (state.blockCommentTag) { - state.blockCommentTag = false; // Release the "lock" - state.tokenize = inBlockComment; - } else { - state.tokenize = tokenBase; - } - return "tag"; - } - - // If nothing was found, advance to the next character - stream.next(); - return "null"; - } - - // Mark everything as comment inside the tag and the tag itself. - function inComment (stream, state) { - if (stream.match(/^.*?#\}/)) state.tokenize = tokenBase - else stream.skipToEnd() - return "comment"; - } - - // Mark everything as a comment until the `blockcomment` tag closes. - function inBlockComment (stream, state) { - if (stream.match(/\{%\s*endcomment\s*%\}/, false)) { - state.tokenize = inTag; - stream.match("{%"); - return "tag"; - } else { - stream.next(); - return "comment"; - } - } - - return { - startState: function () { - return {tokenize: tokenBase}; - }, - token: function (stream, state) { - return state.tokenize(stream, state); - }, - blockCommentStart: "{% comment %}", - blockCommentEnd: "{% endcomment %}" - }; - }); - - CodeMirror.defineMode("django", function(config) { - var htmlBase = CodeMirror.getMode(config, "text/html"); - var djangoInner = CodeMirror.getMode(config, "django:inner"); - return CodeMirror.overlayMode(htmlBase, djangoInner); - }); - - CodeMirror.defineMIME("text/x-django", "django"); -}); diff --git a/public/plugins/codemirror-5.17.0/mode/django/index.html b/public/plugins/codemirror-5.17.0/mode/django/index.html deleted file mode 100644 index 41ea07c91..000000000 --- a/public/plugins/codemirror-5.17.0/mode/django/index.html +++ /dev/null @@ -1,73 +0,0 @@ - - -CodeMirror: Django template mode - - - - - - - - - - - - - -
    -

    Django template mode

    -
    - - - -

    Mode for HTML with embedded Django template markup.

    - -

    MIME types defined: text/x-django

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/dockerfile/dockerfile.js b/public/plugins/codemirror-5.17.0/mode/dockerfile/dockerfile.js deleted file mode 100644 index 4419009af..000000000 --- a/public/plugins/codemirror-5.17.0/mode/dockerfile/dockerfile.js +++ /dev/null @@ -1,79 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror"), require("../../addon/mode/simple")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../../addon/mode/simple"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - // Collect all Dockerfile directives - var instructions = ["from", "maintainer", "run", "cmd", "expose", "env", - "add", "copy", "entrypoint", "volume", "user", - "workdir", "onbuild"], - instructionRegex = "(" + instructions.join('|') + ")", - instructionOnlyLine = new RegExp(instructionRegex + "\\s*$", "i"), - instructionWithArguments = new RegExp(instructionRegex + "(\\s+)", "i"); - - CodeMirror.defineSimpleMode("dockerfile", { - start: [ - // Block comment: This is a line starting with a comment - { - regex: /#.*$/, - token: "comment" - }, - // Highlight an instruction without any arguments (for convenience) - { - regex: instructionOnlyLine, - token: "variable-2" - }, - // Highlight an instruction followed by arguments - { - regex: instructionWithArguments, - token: ["variable-2", null], - next: "arguments" - }, - { - regex: /./, - token: null - } - ], - arguments: [ - { - // Line comment without instruction arguments is an error - regex: /#.*$/, - token: "error", - next: "start" - }, - { - regex: /[^#]+\\$/, - token: null - }, - { - // Match everything except for the inline comment - regex: /[^#]+/, - token: null, - next: "start" - }, - { - regex: /$/, - token: null, - next: "start" - }, - // Fail safe return to start - { - token: null, - next: "start" - } - ], - meta: { - lineComment: "#" - } - }); - - CodeMirror.defineMIME("text/x-dockerfile", "dockerfile"); -}); diff --git a/public/plugins/codemirror-5.17.0/mode/dockerfile/index.html b/public/plugins/codemirror-5.17.0/mode/dockerfile/index.html deleted file mode 100644 index a31759bce..000000000 --- a/public/plugins/codemirror-5.17.0/mode/dockerfile/index.html +++ /dev/null @@ -1,73 +0,0 @@ - - -CodeMirror: Dockerfile mode - - - - - - - - - - -
    -

    Dockerfile mode

    -
    - - - -

    Dockerfile syntax highlighting for CodeMirror. Depends on - the simplemode addon.

    - -

    MIME types defined: text/x-dockerfile

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/dtd/dtd.js b/public/plugins/codemirror-5.17.0/mode/dtd/dtd.js deleted file mode 100644 index 52d76ee11..000000000 --- a/public/plugins/codemirror-5.17.0/mode/dtd/dtd.js +++ /dev/null @@ -1,142 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -/* - DTD mode - Ported to CodeMirror by Peter Kroon - Report bugs/issues here: https://github.com/codemirror/CodeMirror/issues - GitHub: @peterkroon -*/ - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("dtd", function(config) { - var indentUnit = config.indentUnit, type; - function ret(style, tp) {type = tp; return style;} - - function tokenBase(stream, state) { - var ch = stream.next(); - - if (ch == "<" && stream.eat("!") ) { - if (stream.eatWhile(/[\-]/)) { - state.tokenize = tokenSGMLComment; - return tokenSGMLComment(stream, state); - } else if (stream.eatWhile(/[\w]/)) return ret("keyword", "doindent"); - } else if (ch == "<" && stream.eat("?")) { //xml declaration - state.tokenize = inBlock("meta", "?>"); - return ret("meta", ch); - } else if (ch == "#" && stream.eatWhile(/[\w]/)) return ret("atom", "tag"); - else if (ch == "|") return ret("keyword", "seperator"); - else if (ch.match(/[\(\)\[\]\-\.,\+\?>]/)) return ret(null, ch);//if(ch === ">") return ret(null, "endtag"); else - else if (ch.match(/[\[\]]/)) return ret("rule", ch); - else if (ch == "\"" || ch == "'") { - state.tokenize = tokenString(ch); - return state.tokenize(stream, state); - } else if (stream.eatWhile(/[a-zA-Z\?\+\d]/)) { - var sc = stream.current(); - if( sc.substr(sc.length-1,sc.length).match(/\?|\+/) !== null )stream.backUp(1); - return ret("tag", "tag"); - } else if (ch == "%" || ch == "*" ) return ret("number", "number"); - else { - stream.eatWhile(/[\w\\\-_%.{,]/); - return ret(null, null); - } - } - - function tokenSGMLComment(stream, state) { - var dashes = 0, ch; - while ((ch = stream.next()) != null) { - if (dashes >= 2 && ch == ">") { - state.tokenize = tokenBase; - break; - } - dashes = (ch == "-") ? dashes + 1 : 0; - } - return ret("comment", "comment"); - } - - function tokenString(quote) { - return function(stream, state) { - var escaped = false, ch; - while ((ch = stream.next()) != null) { - if (ch == quote && !escaped) { - state.tokenize = tokenBase; - break; - } - escaped = !escaped && ch == "\\"; - } - return ret("string", "tag"); - }; - } - - function inBlock(style, terminator) { - return function(stream, state) { - while (!stream.eol()) { - if (stream.match(terminator)) { - state.tokenize = tokenBase; - break; - } - stream.next(); - } - return style; - }; - } - - return { - startState: function(base) { - return {tokenize: tokenBase, - baseIndent: base || 0, - stack: []}; - }, - - token: function(stream, state) { - if (stream.eatSpace()) return null; - var style = state.tokenize(stream, state); - - var context = state.stack[state.stack.length-1]; - if (stream.current() == "[" || type === "doindent" || type == "[") state.stack.push("rule"); - else if (type === "endtag") state.stack[state.stack.length-1] = "endtag"; - else if (stream.current() == "]" || type == "]" || (type == ">" && context == "rule")) state.stack.pop(); - else if (type == "[") state.stack.push("["); - return style; - }, - - indent: function(state, textAfter) { - var n = state.stack.length; - - if( textAfter.match(/\]\s+|\]/) )n=n-1; - else if(textAfter.substr(textAfter.length-1, textAfter.length) === ">"){ - if(textAfter.substr(0,1) === "<") {} - else if( type == "doindent" && textAfter.length > 1 ) {} - else if( type == "doindent")n--; - else if( type == ">" && textAfter.length > 1) {} - else if( type == "tag" && textAfter !== ">") {} - else if( type == "tag" && state.stack[state.stack.length-1] == "rule")n--; - else if( type == "tag")n++; - else if( textAfter === ">" && state.stack[state.stack.length-1] == "rule" && type === ">")n--; - else if( textAfter === ">" && state.stack[state.stack.length-1] == "rule") {} - else if( textAfter.substr(0,1) !== "<" && textAfter.substr(0,1) === ">" )n=n-1; - else if( textAfter === ">") {} - else n=n-1; - //over rule them all - if(type == null || type == "]")n--; - } - - return state.baseIndent + n * indentUnit; - }, - - electricChars: "]>" - }; -}); - -CodeMirror.defineMIME("application/xml-dtd", "dtd"); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/dtd/index.html b/public/plugins/codemirror-5.17.0/mode/dtd/index.html deleted file mode 100644 index e6798a748..000000000 --- a/public/plugins/codemirror-5.17.0/mode/dtd/index.html +++ /dev/null @@ -1,89 +0,0 @@ - - -CodeMirror: DTD mode - - - - - - - - - -
    -

    DTD mode

    -
    - - -

    MIME types defined: application/xml-dtd.

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/dylan/dylan.js b/public/plugins/codemirror-5.17.0/mode/dylan/dylan.js deleted file mode 100644 index 1b46bc828..000000000 --- a/public/plugins/codemirror-5.17.0/mode/dylan/dylan.js +++ /dev/null @@ -1,344 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("dylan", function(_config) { - // Words - var words = { - // Words that introduce unnamed definitions like "define interface" - unnamedDefinition: ["interface"], - - // Words that introduce simple named definitions like "define library" - namedDefinition: ["module", "library", "macro", - "C-struct", "C-union", - "C-function", "C-callable-wrapper" - ], - - // Words that introduce type definitions like "define class". - // These are also parameterized like "define method" and are - // appended to otherParameterizedDefinitionWords - typeParameterizedDefinition: ["class", "C-subtype", "C-mapped-subtype"], - - // Words that introduce trickier definitions like "define method". - // These require special definitions to be added to startExpressions - otherParameterizedDefinition: ["method", "function", - "C-variable", "C-address" - ], - - // Words that introduce module constant definitions. - // These must also be simple definitions and are - // appended to otherSimpleDefinitionWords - constantSimpleDefinition: ["constant"], - - // Words that introduce module variable definitions. - // These must also be simple definitions and are - // appended to otherSimpleDefinitionWords - variableSimpleDefinition: ["variable"], - - // Other words that introduce simple definitions - // (without implicit bodies). - otherSimpleDefinition: ["generic", "domain", - "C-pointer-type", - "table" - ], - - // Words that begin statements with implicit bodies. - statement: ["if", "block", "begin", "method", "case", - "for", "select", "when", "unless", "until", - "while", "iterate", "profiling", "dynamic-bind" - ], - - // Patterns that act as separators in compound statements. - // This may include any general pattern that must be indented - // specially. - separator: ["finally", "exception", "cleanup", "else", - "elseif", "afterwards" - ], - - // Keywords that do not require special indentation handling, - // but which should be highlighted - other: ["above", "below", "by", "from", "handler", "in", - "instance", "let", "local", "otherwise", "slot", - "subclass", "then", "to", "keyed-by", "virtual" - ], - - // Condition signaling function calls - signalingCalls: ["signal", "error", "cerror", - "break", "check-type", "abort" - ] - }; - - words["otherDefinition"] = - words["unnamedDefinition"] - .concat(words["namedDefinition"]) - .concat(words["otherParameterizedDefinition"]); - - words["definition"] = - words["typeParameterizedDefinition"] - .concat(words["otherDefinition"]); - - words["parameterizedDefinition"] = - words["typeParameterizedDefinition"] - .concat(words["otherParameterizedDefinition"]); - - words["simpleDefinition"] = - words["constantSimpleDefinition"] - .concat(words["variableSimpleDefinition"]) - .concat(words["otherSimpleDefinition"]); - - words["keyword"] = - words["statement"] - .concat(words["separator"]) - .concat(words["other"]); - - // Patterns - var symbolPattern = "[-_a-zA-Z?!*@<>$%]+"; - var symbol = new RegExp("^" + symbolPattern); - var patterns = { - // Symbols with special syntax - symbolKeyword: symbolPattern + ":", - symbolClass: "<" + symbolPattern + ">", - symbolGlobal: "\\*" + symbolPattern + "\\*", - symbolConstant: "\\$" + symbolPattern - }; - var patternStyles = { - symbolKeyword: "atom", - symbolClass: "tag", - symbolGlobal: "variable-2", - symbolConstant: "variable-3" - }; - - // Compile all patterns to regular expressions - for (var patternName in patterns) - if (patterns.hasOwnProperty(patternName)) - patterns[patternName] = new RegExp("^" + patterns[patternName]); - - // Names beginning "with-" and "without-" are commonly - // used as statement macro - patterns["keyword"] = [/^with(?:out)?-[-_a-zA-Z?!*@<>$%]+/]; - - var styles = {}; - styles["keyword"] = "keyword"; - styles["definition"] = "def"; - styles["simpleDefinition"] = "def"; - styles["signalingCalls"] = "builtin"; - - // protected words lookup table - var wordLookup = {}; - var styleLookup = {}; - - [ - "keyword", - "definition", - "simpleDefinition", - "signalingCalls" - ].forEach(function(type) { - words[type].forEach(function(word) { - wordLookup[word] = type; - styleLookup[word] = styles[type]; - }); - }); - - - function chain(stream, state, f) { - state.tokenize = f; - return f(stream, state); - } - - function tokenBase(stream, state) { - // String - var ch = stream.peek(); - if (ch == "'" || ch == '"') { - stream.next(); - return chain(stream, state, tokenString(ch, "string")); - } - // Comment - else if (ch == "/") { - stream.next(); - if (stream.eat("*")) { - return chain(stream, state, tokenComment); - } else if (stream.eat("/")) { - stream.skipToEnd(); - return "comment"; - } - stream.backUp(1); - } - // Decimal - else if (/[+\-\d\.]/.test(ch)) { - if (stream.match(/^[+-]?[0-9]*\.[0-9]*([esdx][+-]?[0-9]+)?/i) || - stream.match(/^[+-]?[0-9]+([esdx][+-]?[0-9]+)/i) || - stream.match(/^[+-]?\d+/)) { - return "number"; - } - } - // Hash - else if (ch == "#") { - stream.next(); - // Symbol with string syntax - ch = stream.peek(); - if (ch == '"') { - stream.next(); - return chain(stream, state, tokenString('"', "string")); - } - // Binary number - else if (ch == "b") { - stream.next(); - stream.eatWhile(/[01]/); - return "number"; - } - // Hex number - else if (ch == "x") { - stream.next(); - stream.eatWhile(/[\da-f]/i); - return "number"; - } - // Octal number - else if (ch == "o") { - stream.next(); - stream.eatWhile(/[0-7]/); - return "number"; - } - // Token concatenation in macros - else if (ch == '#') { - stream.next(); - return "punctuation"; - } - // Sequence literals - else if ((ch == '[') || (ch == '(')) { - stream.next(); - return "bracket"; - // Hash symbol - } else if (stream.match(/f|t|all-keys|include|key|next|rest/i)) { - return "atom"; - } else { - stream.eatWhile(/[-a-zA-Z]/); - return "error"; - } - } else if (ch == "~") { - stream.next(); - ch = stream.peek(); - if (ch == "=") { - stream.next(); - ch = stream.peek(); - if (ch == "=") { - stream.next(); - return "operator"; - } - return "operator"; - } - return "operator"; - } else if (ch == ":") { - stream.next(); - ch = stream.peek(); - if (ch == "=") { - stream.next(); - return "operator"; - } else if (ch == ":") { - stream.next(); - return "punctuation"; - } - } else if ("[](){}".indexOf(ch) != -1) { - stream.next(); - return "bracket"; - } else if (".,".indexOf(ch) != -1) { - stream.next(); - return "punctuation"; - } else if (stream.match("end")) { - return "keyword"; - } - for (var name in patterns) { - if (patterns.hasOwnProperty(name)) { - var pattern = patterns[name]; - if ((pattern instanceof Array && pattern.some(function(p) { - return stream.match(p); - })) || stream.match(pattern)) - return patternStyles[name]; - } - } - if (/[+\-*\/^=<>&|]/.test(ch)) { - stream.next(); - return "operator"; - } - if (stream.match("define")) { - return "def"; - } else { - stream.eatWhile(/[\w\-]/); - // Keyword - if (wordLookup[stream.current()]) { - return styleLookup[stream.current()]; - } else if (stream.current().match(symbol)) { - return "variable"; - } else { - stream.next(); - return "variable-2"; - } - } - } - - function tokenComment(stream, state) { - var maybeEnd = false, maybeNested = false, nestedCount = 0, ch; - while ((ch = stream.next())) { - if (ch == "/" && maybeEnd) { - if (nestedCount > 0) { - nestedCount--; - } else { - state.tokenize = tokenBase; - break; - } - } else if (ch == "*" && maybeNested) { - nestedCount++; - } - maybeEnd = (ch == "*"); - maybeNested = (ch == "/"); - } - return "comment"; - } - - function tokenString(quote, style) { - return function(stream, state) { - var escaped = false, next, end = false; - while ((next = stream.next()) != null) { - if (next == quote && !escaped) { - end = true; - break; - } - escaped = !escaped && next == "\\"; - } - if (end || !escaped) { - state.tokenize = tokenBase; - } - return style; - }; - } - - // Interface - return { - startState: function() { - return { - tokenize: tokenBase, - currentIndent: 0 - }; - }, - token: function(stream, state) { - if (stream.eatSpace()) - return null; - var style = state.tokenize(stream, state); - return style; - }, - blockCommentStart: "/*", - blockCommentEnd: "*/" - }; -}); - -CodeMirror.defineMIME("text/x-dylan", "dylan"); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/dylan/index.html b/public/plugins/codemirror-5.17.0/mode/dylan/index.html deleted file mode 100644 index ddf5ad067..000000000 --- a/public/plugins/codemirror-5.17.0/mode/dylan/index.html +++ /dev/null @@ -1,407 +0,0 @@ - - -CodeMirror: Dylan mode - - - - - - - - - - - - -
    -

    Dylan mode

    - - -
    - - - -

    MIME types defined: text/x-dylan.

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/dylan/test.js b/public/plugins/codemirror-5.17.0/mode/dylan/test.js deleted file mode 100644 index bf25be27e..000000000 --- a/public/plugins/codemirror-5.17.0/mode/dylan/test.js +++ /dev/null @@ -1,88 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function() { - var mode = CodeMirror.getMode({indentUnit: 2}, "dylan"); - function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } - - MT('comments', - '[comment // This is a line comment]', - '[comment /* This is a block comment */]', - '[comment /* This is a multi]', - '[comment line comment]', - '[comment */]', - '[comment /* And this is a /*]', - '[comment /* nested */ comment */]'); - - MT('unary_operators', - '[operator -][variable a]', - '[operator -] [variable a]', - '[operator ~][variable a]', - '[operator ~] [variable a]'); - - MT('binary_operators', - '[variable a] [operator +] [variable b]', - '[variable a] [operator -] [variable b]', - '[variable a] [operator *] [variable b]', - '[variable a] [operator /] [variable b]', - '[variable a] [operator ^] [variable b]', - '[variable a] [operator =] [variable b]', - '[variable a] [operator ==] [variable b]', - '[variable a] [operator ~=] [variable b]', - '[variable a] [operator ~==] [variable b]', - '[variable a] [operator <] [variable b]', - '[variable a] [operator <=] [variable b]', - '[variable a] [operator >] [variable b]', - '[variable a] [operator >=] [variable b]', - '[variable a] [operator &] [variable b]', - '[variable a] [operator |] [variable b]', - '[variable a] [operator :=] [variable b]'); - - MT('integers', - '[number 1]', - '[number 123]', - '[number -123]', - '[number +456]', - '[number #b010]', - '[number #o073]', - '[number #xabcDEF123]'); - - MT('floats', - '[number .3]', - '[number -1.]', - '[number -2.335]', - '[number +3.78d1]', - '[number 3.78s-1]', - '[number -3.32e+5]'); - - MT('characters_and_strings', - "[string 'a']", - "[string '\\\\'']", - '[string ""]', - '[string "a"]', - '[string "abc def"]', - '[string "More escaped characters: \\\\\\\\ \\\\a \\\\b \\\\e \\\\f \\\\n \\\\r \\\\t \\\\0 ..."]'); - - MT('brackets', - '[bracket #[[]]]', - '[bracket #()]', - '[bracket #(][number 1][bracket )]', - '[bracket [[][number 1][punctuation ,] [number 3][bracket ]]]', - '[bracket ()]', - '[bracket {}]', - '[keyword if] [bracket (][variable foo][bracket )]', - '[bracket (][number 1][bracket )]', - '[bracket [[][number 1][bracket ]]]'); - - MT('hash_words', - '[punctuation ##]', - '[atom #f]', '[atom #F]', - '[atom #t]', '[atom #T]', - '[atom #all-keys]', - '[atom #include]', - '[atom #key]', - '[atom #next]', - '[atom #rest]', - '[string #"foo"]', - '[error #invalid]'); -})(); diff --git a/public/plugins/codemirror-5.17.0/mode/ebnf/ebnf.js b/public/plugins/codemirror-5.17.0/mode/ebnf/ebnf.js deleted file mode 100644 index 9618f8e42..000000000 --- a/public/plugins/codemirror-5.17.0/mode/ebnf/ebnf.js +++ /dev/null @@ -1,195 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - CodeMirror.defineMode("ebnf", function (config) { - var commentType = {slash: 0, parenthesis: 1}; - var stateType = {comment: 0, _string: 1, characterClass: 2}; - var bracesMode = null; - - if (config.bracesMode) - bracesMode = CodeMirror.getMode(config, config.bracesMode); - - return { - startState: function () { - return { - stringType: null, - commentType: null, - braced: 0, - lhs: true, - localState: null, - stack: [], - inDefinition: false - }; - }, - token: function (stream, state) { - if (!stream) return; - - //check for state changes - if (state.stack.length === 0) { - //strings - if ((stream.peek() == '"') || (stream.peek() == "'")) { - state.stringType = stream.peek(); - stream.next(); // Skip quote - state.stack.unshift(stateType._string); - } else if (stream.match(/^\/\*/)) { //comments starting with /* - state.stack.unshift(stateType.comment); - state.commentType = commentType.slash; - } else if (stream.match(/^\(\*/)) { //comments starting with (* - state.stack.unshift(stateType.comment); - state.commentType = commentType.parenthesis; - } - } - - //return state - //stack has - switch (state.stack[0]) { - case stateType._string: - while (state.stack[0] === stateType._string && !stream.eol()) { - if (stream.peek() === state.stringType) { - stream.next(); // Skip quote - state.stack.shift(); // Clear flag - } else if (stream.peek() === "\\") { - stream.next(); - stream.next(); - } else { - stream.match(/^.[^\\\"\']*/); - } - } - return state.lhs ? "property string" : "string"; // Token style - - case stateType.comment: - while (state.stack[0] === stateType.comment && !stream.eol()) { - if (state.commentType === commentType.slash && stream.match(/\*\//)) { - state.stack.shift(); // Clear flag - state.commentType = null; - } else if (state.commentType === commentType.parenthesis && stream.match(/\*\)/)) { - state.stack.shift(); // Clear flag - state.commentType = null; - } else { - stream.match(/^.[^\*]*/); - } - } - return "comment"; - - case stateType.characterClass: - while (state.stack[0] === stateType.characterClass && !stream.eol()) { - if (!(stream.match(/^[^\]\\]+/) || stream.match(/^\\./))) { - state.stack.shift(); - } - } - return "operator"; - } - - var peek = stream.peek(); - - if (bracesMode !== null && (state.braced || peek === "{")) { - if (state.localState === null) - state.localState = CodeMirror.startState(bracesMode); - - var token = bracesMode.token(stream, state.localState), - text = stream.current(); - - if (!token) { - for (var i = 0; i < text.length; i++) { - if (text[i] === "{") { - if (state.braced === 0) { - token = "matchingbracket"; - } - state.braced++; - } else if (text[i] === "}") { - state.braced--; - if (state.braced === 0) { - token = "matchingbracket"; - } - } - } - } - return token; - } - - //no stack - switch (peek) { - case "[": - stream.next(); - state.stack.unshift(stateType.characterClass); - return "bracket"; - case ":": - case "|": - case ";": - stream.next(); - return "operator"; - case "%": - if (stream.match("%%")) { - return "header"; - } else if (stream.match(/[%][A-Za-z]+/)) { - return "keyword"; - } else if (stream.match(/[%][}]/)) { - return "matchingbracket"; - } - break; - case "/": - if (stream.match(/[\/][A-Za-z]+/)) { - return "keyword"; - } - case "\\": - if (stream.match(/[\][a-z]+/)) { - return "string-2"; - } - case ".": - if (stream.match(".")) { - return "atom"; - } - case "*": - case "-": - case "+": - case "^": - if (stream.match(peek)) { - return "atom"; - } - case "$": - if (stream.match("$$")) { - return "builtin"; - } else if (stream.match(/[$][0-9]+/)) { - return "variable-3"; - } - case "<": - if (stream.match(/<<[a-zA-Z_]+>>/)) { - return "builtin"; - } - } - - if (stream.match(/^\/\//)) { - stream.skipToEnd(); - return "comment"; - } else if (stream.match(/return/)) { - return "operator"; - } else if (stream.match(/^[a-zA-Z_][a-zA-Z0-9_]*/)) { - if (stream.match(/(?=[\(.])/)) { - return "variable"; - } else if (stream.match(/(?=[\s\n]*[:=])/)) { - return "def"; - } - return "variable-2"; - } else if (["[", "]", "(", ")"].indexOf(stream.peek()) != -1) { - stream.next(); - return "bracket"; - } else if (!stream.eatSpace()) { - stream.next(); - } - return null; - } - }; - }); - - CodeMirror.defineMIME("text/x-ebnf", "ebnf"); -}); diff --git a/public/plugins/codemirror-5.17.0/mode/ebnf/index.html b/public/plugins/codemirror-5.17.0/mode/ebnf/index.html deleted file mode 100644 index 13845629b..000000000 --- a/public/plugins/codemirror-5.17.0/mode/ebnf/index.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - CodeMirror: EBNF Mode - - - - - - - - - - - - -
    -

    EBNF Mode (bracesMode setting = "javascript")

    -
    - -

    The EBNF Mode

    -

    Created by Robert Plummer

    -
    - - diff --git a/public/plugins/codemirror-5.17.0/mode/ecl/ecl.js b/public/plugins/codemirror-5.17.0/mode/ecl/ecl.js deleted file mode 100644 index 8df7ebe4a..000000000 --- a/public/plugins/codemirror-5.17.0/mode/ecl/ecl.js +++ /dev/null @@ -1,206 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("ecl", function(config) { - - function words(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - - function metaHook(stream, state) { - if (!state.startOfLine) return false; - stream.skipToEnd(); - return "meta"; - } - - var indentUnit = config.indentUnit; - var keyword = words("abs acos allnodes ascii asin asstring atan atan2 ave case choose choosen choosesets clustersize combine correlation cos cosh count covariance cron dataset dedup define denormalize distribute distributed distribution ebcdic enth error evaluate event eventextra eventname exists exp failcode failmessage fetch fromunicode getisvalid global graph group hash hash32 hash64 hashcrc hashmd5 having if index intformat isvalid iterate join keyunicode length library limit ln local log loop map matched matchlength matchposition matchtext matchunicode max merge mergejoin min nolocal nonempty normalize parse pipe power preload process project pull random range rank ranked realformat recordof regexfind regexreplace regroup rejected rollup round roundup row rowdiff sample set sin sinh sizeof soapcall sort sorted sqrt stepped stored sum table tan tanh thisnode topn tounicode transfer trim truncate typeof ungroup unicodeorder variance which workunit xmldecode xmlencode xmltext xmlunicode"); - var variable = words("apply assert build buildindex evaluate fail keydiff keypatch loadxml nothor notify output parallel sequential soapcall wait"); - var variable_2 = words("__compressed__ all and any as atmost before beginc++ best between case const counter csv descend encrypt end endc++ endmacro except exclusive expire export extend false few first flat from full function group header heading hole ifblock import in interface joined keep keyed last left limit load local locale lookup macro many maxcount maxlength min skew module named nocase noroot noscan nosort not of only opt or outer overwrite packed partition penalty physicallength pipe quote record relationship repeat return right scan self separator service shared skew skip sql store terminator thor threshold token transform trim true type unicodeorder unsorted validate virtual whole wild within xml xpath"); - var variable_3 = words("ascii big_endian boolean data decimal ebcdic integer pattern qstring real record rule set of string token udecimal unicode unsigned varstring varunicode"); - var builtin = words("checkpoint deprecated failcode failmessage failure global independent onwarning persist priority recovery stored success wait when"); - var blockKeywords = words("catch class do else finally for if switch try while"); - var atoms = words("true false null"); - var hooks = {"#": metaHook}; - var isOperatorChar = /[+\-*&%=<>!?|\/]/; - - var curPunc; - - function tokenBase(stream, state) { - var ch = stream.next(); - if (hooks[ch]) { - var result = hooks[ch](stream, state); - if (result !== false) return result; - } - if (ch == '"' || ch == "'") { - state.tokenize = tokenString(ch); - return state.tokenize(stream, state); - } - if (/[\[\]{}\(\),;\:\.]/.test(ch)) { - curPunc = ch; - return null; - } - if (/\d/.test(ch)) { - stream.eatWhile(/[\w\.]/); - return "number"; - } - if (ch == "/") { - if (stream.eat("*")) { - state.tokenize = tokenComment; - return tokenComment(stream, state); - } - if (stream.eat("/")) { - stream.skipToEnd(); - return "comment"; - } - } - if (isOperatorChar.test(ch)) { - stream.eatWhile(isOperatorChar); - return "operator"; - } - stream.eatWhile(/[\w\$_]/); - var cur = stream.current().toLowerCase(); - if (keyword.propertyIsEnumerable(cur)) { - if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement"; - return "keyword"; - } else if (variable.propertyIsEnumerable(cur)) { - if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement"; - return "variable"; - } else if (variable_2.propertyIsEnumerable(cur)) { - if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement"; - return "variable-2"; - } else if (variable_3.propertyIsEnumerable(cur)) { - if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement"; - return "variable-3"; - } else if (builtin.propertyIsEnumerable(cur)) { - if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement"; - return "builtin"; - } else { //Data types are of from KEYWORD## - var i = cur.length - 1; - while(i >= 0 && (!isNaN(cur[i]) || cur[i] == '_')) - --i; - - if (i > 0) { - var cur2 = cur.substr(0, i + 1); - if (variable_3.propertyIsEnumerable(cur2)) { - if (blockKeywords.propertyIsEnumerable(cur2)) curPunc = "newstatement"; - return "variable-3"; - } - } - } - if (atoms.propertyIsEnumerable(cur)) return "atom"; - return null; - } - - function tokenString(quote) { - return function(stream, state) { - var escaped = false, next, end = false; - while ((next = stream.next()) != null) { - if (next == quote && !escaped) {end = true; break;} - escaped = !escaped && next == "\\"; - } - if (end || !escaped) - state.tokenize = tokenBase; - return "string"; - }; - } - - function tokenComment(stream, state) { - var maybeEnd = false, ch; - while (ch = stream.next()) { - if (ch == "/" && maybeEnd) { - state.tokenize = tokenBase; - break; - } - maybeEnd = (ch == "*"); - } - return "comment"; - } - - function Context(indented, column, type, align, prev) { - this.indented = indented; - this.column = column; - this.type = type; - this.align = align; - this.prev = prev; - } - function pushContext(state, col, type) { - return state.context = new Context(state.indented, col, type, null, state.context); - } - function popContext(state) { - var t = state.context.type; - if (t == ")" || t == "]" || t == "}") - state.indented = state.context.indented; - return state.context = state.context.prev; - } - - // Interface - - return { - startState: function(basecolumn) { - return { - tokenize: null, - context: new Context((basecolumn || 0) - indentUnit, 0, "top", false), - indented: 0, - startOfLine: true - }; - }, - - token: function(stream, state) { - var ctx = state.context; - if (stream.sol()) { - if (ctx.align == null) ctx.align = false; - state.indented = stream.indentation(); - state.startOfLine = true; - } - if (stream.eatSpace()) return null; - curPunc = null; - var style = (state.tokenize || tokenBase)(stream, state); - if (style == "comment" || style == "meta") return style; - if (ctx.align == null) ctx.align = true; - - if ((curPunc == ";" || curPunc == ":") && ctx.type == "statement") popContext(state); - else if (curPunc == "{") pushContext(state, stream.column(), "}"); - else if (curPunc == "[") pushContext(state, stream.column(), "]"); - else if (curPunc == "(") pushContext(state, stream.column(), ")"); - else if (curPunc == "}") { - while (ctx.type == "statement") ctx = popContext(state); - if (ctx.type == "}") ctx = popContext(state); - while (ctx.type == "statement") ctx = popContext(state); - } - else if (curPunc == ctx.type) popContext(state); - else if (ctx.type == "}" || ctx.type == "top" || (ctx.type == "statement" && curPunc == "newstatement")) - pushContext(state, stream.column(), "statement"); - state.startOfLine = false; - return style; - }, - - indent: function(state, textAfter) { - if (state.tokenize != tokenBase && state.tokenize != null) return 0; - var ctx = state.context, firstChar = textAfter && textAfter.charAt(0); - if (ctx.type == "statement" && firstChar == "}") ctx = ctx.prev; - var closing = firstChar == ctx.type; - if (ctx.type == "statement") return ctx.indented + (firstChar == "{" ? 0 : indentUnit); - else if (ctx.align) return ctx.column + (closing ? 0 : 1); - else return ctx.indented + (closing ? 0 : indentUnit); - }, - - electricChars: "{}" - }; -}); - -CodeMirror.defineMIME("text/x-ecl", "ecl"); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/ecl/index.html b/public/plugins/codemirror-5.17.0/mode/ecl/index.html deleted file mode 100644 index 2306860dc..000000000 --- a/public/plugins/codemirror-5.17.0/mode/ecl/index.html +++ /dev/null @@ -1,52 +0,0 @@ - - -CodeMirror: ECL mode - - - - - - - - - -
    -

    ECL mode

    -
    - - -

    Based on CodeMirror's clike mode. For more information see HPCC Systems web site.

    -

    MIME types defined: text/x-ecl.

    - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/eiffel/eiffel.js b/public/plugins/codemirror-5.17.0/mode/eiffel/eiffel.js deleted file mode 100644 index b8b70e36e..000000000 --- a/public/plugins/codemirror-5.17.0/mode/eiffel/eiffel.js +++ /dev/null @@ -1,160 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("eiffel", function() { - function wordObj(words) { - var o = {}; - for (var i = 0, e = words.length; i < e; ++i) o[words[i]] = true; - return o; - } - var keywords = wordObj([ - 'note', - 'across', - 'when', - 'variant', - 'until', - 'unique', - 'undefine', - 'then', - 'strip', - 'select', - 'retry', - 'rescue', - 'require', - 'rename', - 'reference', - 'redefine', - 'prefix', - 'once', - 'old', - 'obsolete', - 'loop', - 'local', - 'like', - 'is', - 'inspect', - 'infix', - 'include', - 'if', - 'frozen', - 'from', - 'external', - 'export', - 'ensure', - 'end', - 'elseif', - 'else', - 'do', - 'creation', - 'create', - 'check', - 'alias', - 'agent', - 'separate', - 'invariant', - 'inherit', - 'indexing', - 'feature', - 'expanded', - 'deferred', - 'class', - 'Void', - 'True', - 'Result', - 'Precursor', - 'False', - 'Current', - 'create', - 'attached', - 'detachable', - 'as', - 'and', - 'implies', - 'not', - 'or' - ]); - var operators = wordObj([":=", "and then","and", "or","<<",">>"]); - - function chain(newtok, stream, state) { - state.tokenize.push(newtok); - return newtok(stream, state); - } - - function tokenBase(stream, state) { - if (stream.eatSpace()) return null; - var ch = stream.next(); - if (ch == '"'||ch == "'") { - return chain(readQuoted(ch, "string"), stream, state); - } else if (ch == "-"&&stream.eat("-")) { - stream.skipToEnd(); - return "comment"; - } else if (ch == ":"&&stream.eat("=")) { - return "operator"; - } else if (/[0-9]/.test(ch)) { - stream.eatWhile(/[xXbBCc0-9\.]/); - stream.eat(/[\?\!]/); - return "ident"; - } else if (/[a-zA-Z_0-9]/.test(ch)) { - stream.eatWhile(/[a-zA-Z_0-9]/); - stream.eat(/[\?\!]/); - return "ident"; - } else if (/[=+\-\/*^%<>~]/.test(ch)) { - stream.eatWhile(/[=+\-\/*^%<>~]/); - return "operator"; - } else { - return null; - } - } - - function readQuoted(quote, style, unescaped) { - return function(stream, state) { - var escaped = false, ch; - while ((ch = stream.next()) != null) { - if (ch == quote && (unescaped || !escaped)) { - state.tokenize.pop(); - break; - } - escaped = !escaped && ch == "%"; - } - return style; - }; - } - - return { - startState: function() { - return {tokenize: [tokenBase]}; - }, - - token: function(stream, state) { - var style = state.tokenize[state.tokenize.length-1](stream, state); - if (style == "ident") { - var word = stream.current(); - style = keywords.propertyIsEnumerable(stream.current()) ? "keyword" - : operators.propertyIsEnumerable(stream.current()) ? "operator" - : /^[A-Z][A-Z_0-9]*$/g.test(word) ? "tag" - : /^0[bB][0-1]+$/g.test(word) ? "number" - : /^0[cC][0-7]+$/g.test(word) ? "number" - : /^0[xX][a-fA-F0-9]+$/g.test(word) ? "number" - : /^([0-9]+\.[0-9]*)|([0-9]*\.[0-9]+)$/g.test(word) ? "number" - : /^[0-9]+$/g.test(word) ? "number" - : "variable"; - } - return style; - }, - lineComment: "--" - }; -}); - -CodeMirror.defineMIME("text/x-eiffel", "eiffel"); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/eiffel/index.html b/public/plugins/codemirror-5.17.0/mode/eiffel/index.html deleted file mode 100644 index 108a71bec..000000000 --- a/public/plugins/codemirror-5.17.0/mode/eiffel/index.html +++ /dev/null @@ -1,429 +0,0 @@ - - -CodeMirror: Eiffel mode - - - - - - - - - - -
    -

    Eiffel mode

    -
    - - -

    MIME types defined: text/x-eiffel.

    - -

    Created by YNH.

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/elm/elm.js b/public/plugins/codemirror-5.17.0/mode/elm/elm.js deleted file mode 100644 index b31e66375..000000000 --- a/public/plugins/codemirror-5.17.0/mode/elm/elm.js +++ /dev/null @@ -1,205 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - CodeMirror.defineMode("elm", function() { - - function switchState(source, setState, f) { - setState(f); - return f(source, setState); - } - - // These should all be Unicode extended, as per the Haskell 2010 report - var smallRE = /[a-z_]/; - var largeRE = /[A-Z]/; - var digitRE = /[0-9]/; - var hexitRE = /[0-9A-Fa-f]/; - var octitRE = /[0-7]/; - var idRE = /[a-z_A-Z0-9\']/; - var symbolRE = /[-!#$%&*+.\/<=>?@\\^|~:\u03BB\u2192]/; - var specialRE = /[(),;[\]`{}]/; - var whiteCharRE = /[ \t\v\f]/; // newlines are handled in tokenizer - - function normal() { - return function (source, setState) { - if (source.eatWhile(whiteCharRE)) { - return null; - } - - var ch = source.next(); - if (specialRE.test(ch)) { - if (ch == '{' && source.eat('-')) { - var t = "comment"; - if (source.eat('#')) t = "meta"; - return switchState(source, setState, ncomment(t, 1)); - } - return null; - } - - if (ch == '\'') { - if (source.eat('\\')) - source.next(); // should handle other escapes here - else - source.next(); - - if (source.eat('\'')) - return "string"; - return "error"; - } - - if (ch == '"') { - return switchState(source, setState, stringLiteral); - } - - if (largeRE.test(ch)) { - source.eatWhile(idRE); - if (source.eat('.')) - return "qualifier"; - return "variable-2"; - } - - if (smallRE.test(ch)) { - var isDef = source.pos === 1; - source.eatWhile(idRE); - return isDef ? "variable-3" : "variable"; - } - - if (digitRE.test(ch)) { - if (ch == '0') { - if (source.eat(/[xX]/)) { - source.eatWhile(hexitRE); // should require at least 1 - return "integer"; - } - if (source.eat(/[oO]/)) { - source.eatWhile(octitRE); // should require at least 1 - return "number"; - } - } - source.eatWhile(digitRE); - var t = "number"; - if (source.eat('.')) { - t = "number"; - source.eatWhile(digitRE); // should require at least 1 - } - if (source.eat(/[eE]/)) { - t = "number"; - source.eat(/[-+]/); - source.eatWhile(digitRE); // should require at least 1 - } - return t; - } - - if (symbolRE.test(ch)) { - if (ch == '-' && source.eat(/-/)) { - source.eatWhile(/-/); - if (!source.eat(symbolRE)) { - source.skipToEnd(); - return "comment"; - } - } - source.eatWhile(symbolRE); - return "builtin"; - } - - return "error"; - } - } - - function ncomment(type, nest) { - if (nest == 0) { - return normal(); - } - return function(source, setState) { - var currNest = nest; - while (!source.eol()) { - var ch = source.next(); - if (ch == '{' && source.eat('-')) { - ++currNest; - } else if (ch == '-' && source.eat('}')) { - --currNest; - if (currNest == 0) { - setState(normal()); - return type; - } - } - } - setState(ncomment(type, currNest)); - return type; - } - } - - function stringLiteral(source, setState) { - while (!source.eol()) { - var ch = source.next(); - if (ch == '"') { - setState(normal()); - return "string"; - } - if (ch == '\\') { - if (source.eol() || source.eat(whiteCharRE)) { - setState(stringGap); - return "string"; - } - if (!source.eat('&')) source.next(); // should handle other escapes here - } - } - setState(normal()); - return "error"; - } - - function stringGap(source, setState) { - if (source.eat('\\')) { - return switchState(source, setState, stringLiteral); - } - source.next(); - setState(normal()); - return "error"; - } - - - var wellKnownWords = (function() { - var wkw = {}; - - var keywords = [ - "case", "of", "as", - "if", "then", "else", - "let", "in", - "infix", "infixl", "infixr", - "type", "alias", - "input", "output", "foreign", "loopback", - "module", "where", "import", "exposing", - "_", "..", "|", ":", "=", "\\", "\"", "->", "<-" - ]; - - for (var i = keywords.length; i--;) - wkw[keywords[i]] = "keyword"; - - return wkw; - })(); - - - - return { - startState: function () { return { f: normal() }; }, - copyState: function (s) { return { f: s.f }; }, - - token: function(stream, state) { - var t = state.f(stream, function(s) { state.f = s; }); - var w = stream.current(); - return (wellKnownWords.hasOwnProperty(w)) ? wellKnownWords[w] : t; - } - }; - - }); - - CodeMirror.defineMIME("text/x-elm", "elm"); -}); diff --git a/public/plugins/codemirror-5.17.0/mode/elm/index.html b/public/plugins/codemirror-5.17.0/mode/elm/index.html deleted file mode 100644 index d5cb16abf..000000000 --- a/public/plugins/codemirror-5.17.0/mode/elm/index.html +++ /dev/null @@ -1,61 +0,0 @@ - - -CodeMirror: Elm mode - - - - - - - - - -
    -

    Elm mode

    - -
    - - - -

    MIME types defined: text/x-elm.

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/erlang/erlang.js b/public/plugins/codemirror-5.17.0/mode/erlang/erlang.js deleted file mode 100644 index 5aed76a52..000000000 --- a/public/plugins/codemirror-5.17.0/mode/erlang/erlang.js +++ /dev/null @@ -1,618 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -/*jshint unused:true, eqnull:true, curly:true, bitwise:true */ -/*jshint undef:true, latedef:true, trailing:true */ -/*global CodeMirror:true */ - -// erlang mode. -// tokenizer -> token types -> CodeMirror styles -// tokenizer maintains a parse stack -// indenter uses the parse stack - -// TODO indenter: -// bit syntax -// old guard/bif/conversion clashes (e.g. "float/1") -// type/spec/opaque - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMIME("text/x-erlang", "erlang"); - -CodeMirror.defineMode("erlang", function(cmCfg) { - "use strict"; - -///////////////////////////////////////////////////////////////////////////// -// constants - - var typeWords = [ - "-type", "-spec", "-export_type", "-opaque"]; - - var keywordWords = [ - "after","begin","catch","case","cond","end","fun","if", - "let","of","query","receive","try","when"]; - - var separatorRE = /[\->,;]/; - var separatorWords = [ - "->",";",","]; - - var operatorAtomWords = [ - "and","andalso","band","bnot","bor","bsl","bsr","bxor", - "div","not","or","orelse","rem","xor"]; - - var operatorSymbolRE = /[\+\-\*\/<>=\|:!]/; - var operatorSymbolWords = [ - "=","+","-","*","/",">",">=","<","=<","=:=","==","=/=","/=","||","<-","!"]; - - var openParenRE = /[<\(\[\{]/; - var openParenWords = [ - "<<","(","[","{"]; - - var closeParenRE = /[>\)\]\}]/; - var closeParenWords = [ - "}","]",")",">>"]; - - var guardWords = [ - "is_atom","is_binary","is_bitstring","is_boolean","is_float", - "is_function","is_integer","is_list","is_number","is_pid", - "is_port","is_record","is_reference","is_tuple", - "atom","binary","bitstring","boolean","function","integer","list", - "number","pid","port","record","reference","tuple"]; - - var bifWords = [ - "abs","adler32","adler32_combine","alive","apply","atom_to_binary", - "atom_to_list","binary_to_atom","binary_to_existing_atom", - "binary_to_list","binary_to_term","bit_size","bitstring_to_list", - "byte_size","check_process_code","contact_binary","crc32", - "crc32_combine","date","decode_packet","delete_module", - "disconnect_node","element","erase","exit","float","float_to_list", - "garbage_collect","get","get_keys","group_leader","halt","hd", - "integer_to_list","internal_bif","iolist_size","iolist_to_binary", - "is_alive","is_atom","is_binary","is_bitstring","is_boolean", - "is_float","is_function","is_integer","is_list","is_number","is_pid", - "is_port","is_process_alive","is_record","is_reference","is_tuple", - "length","link","list_to_atom","list_to_binary","list_to_bitstring", - "list_to_existing_atom","list_to_float","list_to_integer", - "list_to_pid","list_to_tuple","load_module","make_ref","module_loaded", - "monitor_node","node","node_link","node_unlink","nodes","notalive", - "now","open_port","pid_to_list","port_close","port_command", - "port_connect","port_control","pre_loaded","process_flag", - "process_info","processes","purge_module","put","register", - "registered","round","self","setelement","size","spawn","spawn_link", - "spawn_monitor","spawn_opt","split_binary","statistics", - "term_to_binary","time","throw","tl","trunc","tuple_size", - "tuple_to_list","unlink","unregister","whereis"]; - -// upper case: [A-Z] [Ø-Þ] [À-Ö] -// lower case: [a-z] [ß-ö] [ø-ÿ] - var anumRE = /[\w@Ø-ÞÀ-Öß-öø-ÿ]/; - var escapesRE = - /[0-7]{1,3}|[bdefnrstv\\"']|\^[a-zA-Z]|x[0-9a-zA-Z]{2}|x{[0-9a-zA-Z]+}/; - -///////////////////////////////////////////////////////////////////////////// -// tokenizer - - function tokenizer(stream,state) { - // in multi-line string - if (state.in_string) { - state.in_string = (!doubleQuote(stream)); - return rval(state,stream,"string"); - } - - // in multi-line atom - if (state.in_atom) { - state.in_atom = (!singleQuote(stream)); - return rval(state,stream,"atom"); - } - - // whitespace - if (stream.eatSpace()) { - return rval(state,stream,"whitespace"); - } - - // attributes and type specs - if (!peekToken(state) && - stream.match(/-\s*[a-zß-öø-ÿ][\wØ-ÞÀ-Öß-öø-ÿ]*/)) { - if (is_member(stream.current(),typeWords)) { - return rval(state,stream,"type"); - }else{ - return rval(state,stream,"attribute"); - } - } - - var ch = stream.next(); - - // comment - if (ch == '%') { - stream.skipToEnd(); - return rval(state,stream,"comment"); - } - - // colon - if (ch == ":") { - return rval(state,stream,"colon"); - } - - // macro - if (ch == '?') { - stream.eatSpace(); - stream.eatWhile(anumRE); - return rval(state,stream,"macro"); - } - - // record - if (ch == "#") { - stream.eatSpace(); - stream.eatWhile(anumRE); - return rval(state,stream,"record"); - } - - // dollar escape - if (ch == "$") { - if (stream.next() == "\\" && !stream.match(escapesRE)) { - return rval(state,stream,"error"); - } - return rval(state,stream,"number"); - } - - // dot - if (ch == ".") { - return rval(state,stream,"dot"); - } - - // quoted atom - if (ch == '\'') { - if (!(state.in_atom = (!singleQuote(stream)))) { - if (stream.match(/\s*\/\s*[0-9]/,false)) { - stream.match(/\s*\/\s*[0-9]/,true); - return rval(state,stream,"fun"); // 'f'/0 style fun - } - if (stream.match(/\s*\(/,false) || stream.match(/\s*:/,false)) { - return rval(state,stream,"function"); - } - } - return rval(state,stream,"atom"); - } - - // string - if (ch == '"') { - state.in_string = (!doubleQuote(stream)); - return rval(state,stream,"string"); - } - - // variable - if (/[A-Z_Ø-ÞÀ-Ö]/.test(ch)) { - stream.eatWhile(anumRE); - return rval(state,stream,"variable"); - } - - // atom/keyword/BIF/function - if (/[a-z_ß-öø-ÿ]/.test(ch)) { - stream.eatWhile(anumRE); - - if (stream.match(/\s*\/\s*[0-9]/,false)) { - stream.match(/\s*\/\s*[0-9]/,true); - return rval(state,stream,"fun"); // f/0 style fun - } - - var w = stream.current(); - - if (is_member(w,keywordWords)) { - return rval(state,stream,"keyword"); - }else if (is_member(w,operatorAtomWords)) { - return rval(state,stream,"operator"); - }else if (stream.match(/\s*\(/,false)) { - // 'put' and 'erlang:put' are bifs, 'foo:put' is not - if (is_member(w,bifWords) && - ((peekToken(state).token != ":") || - (peekToken(state,2).token == "erlang"))) { - return rval(state,stream,"builtin"); - }else if (is_member(w,guardWords)) { - return rval(state,stream,"guard"); - }else{ - return rval(state,stream,"function"); - } - }else if (lookahead(stream) == ":") { - if (w == "erlang") { - return rval(state,stream,"builtin"); - } else { - return rval(state,stream,"function"); - } - }else if (is_member(w,["true","false"])) { - return rval(state,stream,"boolean"); - }else{ - return rval(state,stream,"atom"); - } - } - - // number - var digitRE = /[0-9]/; - var radixRE = /[0-9a-zA-Z]/; // 36#zZ style int - if (digitRE.test(ch)) { - stream.eatWhile(digitRE); - if (stream.eat('#')) { // 36#aZ style integer - if (!stream.eatWhile(radixRE)) { - stream.backUp(1); //"36#" - syntax error - } - } else if (stream.eat('.')) { // float - if (!stream.eatWhile(digitRE)) { - stream.backUp(1); // "3." - probably end of function - } else { - if (stream.eat(/[eE]/)) { // float with exponent - if (stream.eat(/[-+]/)) { - if (!stream.eatWhile(digitRE)) { - stream.backUp(2); // "2e-" - syntax error - } - } else { - if (!stream.eatWhile(digitRE)) { - stream.backUp(1); // "2e" - syntax error - } - } - } - } - } - return rval(state,stream,"number"); // normal integer - } - - // open parens - if (nongreedy(stream,openParenRE,openParenWords)) { - return rval(state,stream,"open_paren"); - } - - // close parens - if (nongreedy(stream,closeParenRE,closeParenWords)) { - return rval(state,stream,"close_paren"); - } - - // separators - if (greedy(stream,separatorRE,separatorWords)) { - return rval(state,stream,"separator"); - } - - // operators - if (greedy(stream,operatorSymbolRE,operatorSymbolWords)) { - return rval(state,stream,"operator"); - } - - return rval(state,stream,null); - } - -///////////////////////////////////////////////////////////////////////////// -// utilities - function nongreedy(stream,re,words) { - if (stream.current().length == 1 && re.test(stream.current())) { - stream.backUp(1); - while (re.test(stream.peek())) { - stream.next(); - if (is_member(stream.current(),words)) { - return true; - } - } - stream.backUp(stream.current().length-1); - } - return false; - } - - function greedy(stream,re,words) { - if (stream.current().length == 1 && re.test(stream.current())) { - while (re.test(stream.peek())) { - stream.next(); - } - while (0 < stream.current().length) { - if (is_member(stream.current(),words)) { - return true; - }else{ - stream.backUp(1); - } - } - stream.next(); - } - return false; - } - - function doubleQuote(stream) { - return quote(stream, '"', '\\'); - } - - function singleQuote(stream) { - return quote(stream,'\'','\\'); - } - - function quote(stream,quoteChar,escapeChar) { - while (!stream.eol()) { - var ch = stream.next(); - if (ch == quoteChar) { - return true; - }else if (ch == escapeChar) { - stream.next(); - } - } - return false; - } - - function lookahead(stream) { - var m = stream.match(/([\n\s]+|%[^\n]*\n)*(.)/,false); - return m ? m.pop() : ""; - } - - function is_member(element,list) { - return (-1 < list.indexOf(element)); - } - - function rval(state,stream,type) { - - // parse stack - pushToken(state,realToken(type,stream)); - - // map erlang token type to CodeMirror style class - // erlang -> CodeMirror tag - switch (type) { - case "atom": return "atom"; - case "attribute": return "attribute"; - case "boolean": return "atom"; - case "builtin": return "builtin"; - case "close_paren": return null; - case "colon": return null; - case "comment": return "comment"; - case "dot": return null; - case "error": return "error"; - case "fun": return "meta"; - case "function": return "tag"; - case "guard": return "property"; - case "keyword": return "keyword"; - case "macro": return "variable-2"; - case "number": return "number"; - case "open_paren": return null; - case "operator": return "operator"; - case "record": return "bracket"; - case "separator": return null; - case "string": return "string"; - case "type": return "def"; - case "variable": return "variable"; - default: return null; - } - } - - function aToken(tok,col,ind,typ) { - return {token: tok, - column: col, - indent: ind, - type: typ}; - } - - function realToken(type,stream) { - return aToken(stream.current(), - stream.column(), - stream.indentation(), - type); - } - - function fakeToken(type) { - return aToken(type,0,0,type); - } - - function peekToken(state,depth) { - var len = state.tokenStack.length; - var dep = (depth ? depth : 1); - - if (len < dep) { - return false; - }else{ - return state.tokenStack[len-dep]; - } - } - - function pushToken(state,token) { - - if (!(token.type == "comment" || token.type == "whitespace")) { - state.tokenStack = maybe_drop_pre(state.tokenStack,token); - state.tokenStack = maybe_drop_post(state.tokenStack); - } - } - - function maybe_drop_pre(s,token) { - var last = s.length-1; - - if (0 < last && s[last].type === "record" && token.type === "dot") { - s.pop(); - }else if (0 < last && s[last].type === "group") { - s.pop(); - s.push(token); - }else{ - s.push(token); - } - return s; - } - - function maybe_drop_post(s) { - var last = s.length-1; - - if (s[last].type === "dot") { - return []; - } - if (s[last].type === "fun" && s[last-1].token === "fun") { - return s.slice(0,last-1); - } - switch (s[s.length-1].token) { - case "}": return d(s,{g:["{"]}); - case "]": return d(s,{i:["["]}); - case ")": return d(s,{i:["("]}); - case ">>": return d(s,{i:["<<"]}); - case "end": return d(s,{i:["begin","case","fun","if","receive","try"]}); - case ",": return d(s,{e:["begin","try","when","->", - ",","(","[","{","<<"]}); - case "->": return d(s,{r:["when"], - m:["try","if","case","receive"]}); - case ";": return d(s,{E:["case","fun","if","receive","try","when"]}); - case "catch":return d(s,{e:["try"]}); - case "of": return d(s,{e:["case"]}); - case "after":return d(s,{e:["receive","try"]}); - default: return s; - } - } - - function d(stack,tt) { - // stack is a stack of Token objects. - // tt is an object; {type:tokens} - // type is a char, tokens is a list of token strings. - // The function returns (possibly truncated) stack. - // It will descend the stack, looking for a Token such that Token.token - // is a member of tokens. If it does not find that, it will normally (but - // see "E" below) return stack. If it does find a match, it will remove - // all the Tokens between the top and the matched Token. - // If type is "m", that is all it does. - // If type is "i", it will also remove the matched Token and the top Token. - // If type is "g", like "i", but add a fake "group" token at the top. - // If type is "r", it will remove the matched Token, but not the top Token. - // If type is "e", it will keep the matched Token but not the top Token. - // If type is "E", it behaves as for type "e", except if there is no match, - // in which case it will return an empty stack. - - for (var type in tt) { - var len = stack.length-1; - var tokens = tt[type]; - for (var i = len-1; -1 < i ; i--) { - if (is_member(stack[i].token,tokens)) { - var ss = stack.slice(0,i); - switch (type) { - case "m": return ss.concat(stack[i]).concat(stack[len]); - case "r": return ss.concat(stack[len]); - case "i": return ss; - case "g": return ss.concat(fakeToken("group")); - case "E": return ss.concat(stack[i]); - case "e": return ss.concat(stack[i]); - } - } - } - } - return (type == "E" ? [] : stack); - } - -///////////////////////////////////////////////////////////////////////////// -// indenter - - function indenter(state,textAfter) { - var t; - var unit = cmCfg.indentUnit; - var wordAfter = wordafter(textAfter); - var currT = peekToken(state,1); - var prevT = peekToken(state,2); - - if (state.in_string || state.in_atom) { - return CodeMirror.Pass; - }else if (!prevT) { - return 0; - }else if (currT.token == "when") { - return currT.column+unit; - }else if (wordAfter === "when" && prevT.type === "function") { - return prevT.indent+unit; - }else if (wordAfter === "(" && currT.token === "fun") { - return currT.column+3; - }else if (wordAfter === "catch" && (t = getToken(state,["try"]))) { - return t.column; - }else if (is_member(wordAfter,["end","after","of"])) { - t = getToken(state,["begin","case","fun","if","receive","try"]); - return t ? t.column : CodeMirror.Pass; - }else if (is_member(wordAfter,closeParenWords)) { - t = getToken(state,openParenWords); - return t ? t.column : CodeMirror.Pass; - }else if (is_member(currT.token,[",","|","||"]) || - is_member(wordAfter,[",","|","||"])) { - t = postcommaToken(state); - return t ? t.column+t.token.length : unit; - }else if (currT.token == "->") { - if (is_member(prevT.token, ["receive","case","if","try"])) { - return prevT.column+unit+unit; - }else{ - return prevT.column+unit; - } - }else if (is_member(currT.token,openParenWords)) { - return currT.column+currT.token.length; - }else{ - t = defaultToken(state); - return truthy(t) ? t.column+unit : 0; - } - } - - function wordafter(str) { - var m = str.match(/,|[a-z]+|\}|\]|\)|>>|\|+|\(/); - - return truthy(m) && (m.index === 0) ? m[0] : ""; - } - - function postcommaToken(state) { - var objs = state.tokenStack.slice(0,-1); - var i = getTokenIndex(objs,"type",["open_paren"]); - - return truthy(objs[i]) ? objs[i] : false; - } - - function defaultToken(state) { - var objs = state.tokenStack; - var stop = getTokenIndex(objs,"type",["open_paren","separator","keyword"]); - var oper = getTokenIndex(objs,"type",["operator"]); - - if (truthy(stop) && truthy(oper) && stop < oper) { - return objs[stop+1]; - } else if (truthy(stop)) { - return objs[stop]; - } else { - return false; - } - } - - function getToken(state,tokens) { - var objs = state.tokenStack; - var i = getTokenIndex(objs,"token",tokens); - - return truthy(objs[i]) ? objs[i] : false; - } - - function getTokenIndex(objs,propname,propvals) { - - for (var i = objs.length-1; -1 < i ; i--) { - if (is_member(objs[i][propname],propvals)) { - return i; - } - } - return false; - } - - function truthy(x) { - return (x !== false) && (x != null); - } - -///////////////////////////////////////////////////////////////////////////// -// this object defines the mode - - return { - startState: - function() { - return {tokenStack: [], - in_string: false, - in_atom: false}; - }, - - token: - function(stream, state) { - return tokenizer(stream, state); - }, - - indent: - function(state, textAfter) { - return indenter(state,textAfter); - }, - - lineComment: "%" - }; -}); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/erlang/index.html b/public/plugins/codemirror-5.17.0/mode/erlang/index.html deleted file mode 100644 index 6d06a890a..000000000 --- a/public/plugins/codemirror-5.17.0/mode/erlang/index.html +++ /dev/null @@ -1,76 +0,0 @@ - - -CodeMirror: Erlang mode - - - - - - - - - - - -
    -

    Erlang mode

    -
    - - - -

    MIME types defined: text/x-erlang.

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/factor/factor.js b/public/plugins/codemirror-5.17.0/mode/factor/factor.js deleted file mode 100644 index 86d7adf62..000000000 --- a/public/plugins/codemirror-5.17.0/mode/factor/factor.js +++ /dev/null @@ -1,83 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -// Factor syntax highlight - simple mode -// -// by Dimage Sapelkin (https://github.com/kerabromsmu) - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror"), require("../../addon/mode/simple")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../../addon/mode/simple"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - CodeMirror.defineSimpleMode("factor", { - // The start state contains the rules that are intially used - start: [ - // comments - {regex: /#?!.*/, token: "comment"}, - // strings """, multiline --> state - {regex: /"""/, token: "string", next: "string3"}, - {regex: /"/, token: "string", next: "string"}, - // numbers: dec, hex, unicode, bin, fractional, complex - {regex: /(?:[+-]?)(?:0x[\d,a-f]+)|(?:0o[0-7]+)|(?:0b[0,1]+)|(?:\d+.?\d*)/, token: "number"}, - //{regex: /[+-]?/} //fractional - // definition: defining word, defined word, etc - {regex: /(\:)(\s+)(\S+)(\s+)(\()/, token: ["keyword", null, "def", null, "keyword"], next: "stack"}, - // vocabulary using --> state - {regex: /USING\:/, token: "keyword", next: "vocabulary"}, - // vocabulary definition/use - {regex: /(USE\:|IN\:)(\s+)(\S+)/, token: ["keyword", null, "variable-2"]}, - // - {regex: /<\S+>/, token: "builtin"}, - // "keywords", incl. ; t f . [ ] { } defining words - {regex: /;|t|f|if|\.|\[|\]|\{|\}|MAIN:/, token: "keyword"}, - // any id (?) - {regex: /\S+/, token: "variable"}, - - { - regex: /./, - token: null - } - ], - vocabulary: [ - {regex: /;/, token: "keyword", next: "start"}, - {regex: /\S+/, token: "variable-2"}, - { - regex: /./, - token: null - } - ], - string: [ - {regex: /(?:[^\\]|\\.)*?"/, token: "string", next: "start"}, - {regex: /.*/, token: "string"} - ], - string3: [ - {regex: /(?:[^\\]|\\.)*?"""/, token: "string", next: "start"}, - {regex: /.*/, token: "string"} - ], - stack: [ - {regex: /\)/, token: "meta", next: "start"}, - {regex: /--/, token: "meta"}, - {regex: /\S+/, token: "variable-3"}, - { - regex: /./, - token: null - } - ], - // The meta property contains global information about the mode. It - // can contain properties like lineComment, which are supported by - // all modes, and also directives like dontIndentStates, which are - // specific to simple modes. - meta: { - dontIndentStates: ["start", "vocabulary", "string", "string3", "stack"], - lineComment: [ "!", "#!" ] - } - }); - - CodeMirror.defineMIME("text/x-factor", "factor"); -}); diff --git a/public/plugins/codemirror-5.17.0/mode/factor/index.html b/public/plugins/codemirror-5.17.0/mode/factor/index.html deleted file mode 100644 index 9f1548914..000000000 --- a/public/plugins/codemirror-5.17.0/mode/factor/index.html +++ /dev/null @@ -1,77 +0,0 @@ - - -CodeMirror: Factor mode - - - - - - - - - - - -
    - -

    Factor mode

    - -
    - - - -

    -

    Simple mode that handles Factor Syntax (Factor on WikiPedia).

    - -

    MIME types defined: text/x-factor.

    - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/fcl/fcl.js b/public/plugins/codemirror-5.17.0/mode/fcl/fcl.js deleted file mode 100644 index 518116976..000000000 --- a/public/plugins/codemirror-5.17.0/mode/fcl/fcl.js +++ /dev/null @@ -1,173 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("fcl", function(config) { - var indentUnit = config.indentUnit; - - var keywords = { - "term": true, - "method": true, "accu": true, - "rule": true, "then": true, "is": true, "and": true, "or": true, - "if": true, "default": true - }; - - var start_blocks = { - "var_input": true, - "var_output": true, - "fuzzify": true, - "defuzzify": true, - "function_block": true, - "ruleblock": true - }; - - var end_blocks = { - "end_ruleblock": true, - "end_defuzzify": true, - "end_function_block": true, - "end_fuzzify": true, - "end_var": true - }; - - var atoms = { - "true": true, "false": true, "nan": true, - "real": true, "min": true, "max": true, "cog": true, "cogs": true - }; - - var isOperatorChar = /[+\-*&^%:=<>!|\/]/; - - function tokenBase(stream, state) { - var ch = stream.next(); - - if (/[\d\.]/.test(ch)) { - if (ch == ".") { - stream.match(/^[0-9]+([eE][\-+]?[0-9]+)?/); - } else if (ch == "0") { - stream.match(/^[xX][0-9a-fA-F]+/) || stream.match(/^0[0-7]+/); - } else { - stream.match(/^[0-9]*\.?[0-9]*([eE][\-+]?[0-9]+)?/); - } - return "number"; - } - - if (ch == "/" || ch == "(") { - if (stream.eat("*")) { - state.tokenize = tokenComment; - return tokenComment(stream, state); - } - if (stream.eat("/")) { - stream.skipToEnd(); - return "comment"; - } - } - if (isOperatorChar.test(ch)) { - stream.eatWhile(isOperatorChar); - return "operator"; - } - stream.eatWhile(/[\w\$_\xa1-\uffff]/); - - var cur = stream.current().toLowerCase(); - if (keywords.propertyIsEnumerable(cur) || - start_blocks.propertyIsEnumerable(cur) || - end_blocks.propertyIsEnumerable(cur)) { - return "keyword"; - } - if (atoms.propertyIsEnumerable(cur)) return "atom"; - return "variable"; - } - - - function tokenComment(stream, state) { - var maybeEnd = false, ch; - while (ch = stream.next()) { - if ((ch == "/" || ch == ")") && maybeEnd) { - state.tokenize = tokenBase; - break; - } - maybeEnd = (ch == "*"); - } - return "comment"; - } - - function Context(indented, column, type, align, prev) { - this.indented = indented; - this.column = column; - this.type = type; - this.align = align; - this.prev = prev; - } - - function pushContext(state, col, type) { - return state.context = new Context(state.indented, col, type, null, state.context); - } - - function popContext(state) { - if (!state.context.prev) return; - var t = state.context.type; - if (t == "end_block") - state.indented = state.context.indented; - return state.context = state.context.prev; - } - - // Interface - - return { - startState: function(basecolumn) { - return { - tokenize: null, - context: new Context((basecolumn || 0) - indentUnit, 0, "top", false), - indented: 0, - startOfLine: true - }; - }, - - token: function(stream, state) { - var ctx = state.context; - if (stream.sol()) { - if (ctx.align == null) ctx.align = false; - state.indented = stream.indentation(); - state.startOfLine = true; - } - if (stream.eatSpace()) return null; - - var style = (state.tokenize || tokenBase)(stream, state); - if (style == "comment") return style; - if (ctx.align == null) ctx.align = true; - - var cur = stream.current().toLowerCase(); - - if (start_blocks.propertyIsEnumerable(cur)) pushContext(state, stream.column(), "end_block"); - else if (end_blocks.propertyIsEnumerable(cur)) popContext(state); - - state.startOfLine = false; - return style; - }, - - indent: function(state, textAfter) { - if (state.tokenize != tokenBase && state.tokenize != null) return 0; - var ctx = state.context; - - var closing = end_blocks.propertyIsEnumerable(textAfter); - if (ctx.align) return ctx.column + (closing ? 0 : 1); - else return ctx.indented + (closing ? 0 : indentUnit); - }, - - electricChars: "ryk", - fold: "brace", - blockCommentStart: "(*", - blockCommentEnd: "*)", - lineComment: "//" - }; -}); - -CodeMirror.defineMIME("text/x-fcl", "fcl"); -}); diff --git a/public/plugins/codemirror-5.17.0/mode/fcl/index.html b/public/plugins/codemirror-5.17.0/mode/fcl/index.html deleted file mode 100644 index 3c18d0b3c..000000000 --- a/public/plugins/codemirror-5.17.0/mode/fcl/index.html +++ /dev/null @@ -1,108 +0,0 @@ - - -CodeMirror: FCL mode - - - - - - - - - - - -
    -

    FCL mode

    -
    - - - -

    MIME type: text/x-fcl

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/forth/forth.js b/public/plugins/codemirror-5.17.0/mode/forth/forth.js deleted file mode 100644 index 1f519d886..000000000 --- a/public/plugins/codemirror-5.17.0/mode/forth/forth.js +++ /dev/null @@ -1,180 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -// Author: Aliaksei Chapyzhenka - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - function toWordList(words) { - var ret = []; - words.split(' ').forEach(function(e){ - ret.push({name: e}); - }); - return ret; - } - - var coreWordList = toWordList( -'INVERT AND OR XOR\ - 2* 2/ LSHIFT RSHIFT\ - 0= = 0< < > U< MIN MAX\ - 2DROP 2DUP 2OVER 2SWAP ?DUP DEPTH DROP DUP OVER ROT SWAP\ - >R R> R@\ - + - 1+ 1- ABS NEGATE\ - S>D * M* UM*\ - FM/MOD SM/REM UM/MOD */ */MOD / /MOD MOD\ - HERE , @ ! CELL+ CELLS C, C@ C! CHARS 2@ 2!\ - ALIGN ALIGNED +! ALLOT\ - CHAR [CHAR] [ ] BL\ - FIND EXECUTE IMMEDIATE COUNT LITERAL STATE\ - ; DOES> >BODY\ - EVALUATE\ - SOURCE >IN\ - <# # #S #> HOLD SIGN BASE >NUMBER HEX DECIMAL\ - FILL MOVE\ - . CR EMIT SPACE SPACES TYPE U. .R U.R\ - ACCEPT\ - TRUE FALSE\ - <> U> 0<> 0>\ - NIP TUCK ROLL PICK\ - 2>R 2R@ 2R>\ - WITHIN UNUSED MARKER\ - I J\ - TO\ - COMPILE, [COMPILE]\ - SAVE-INPUT RESTORE-INPUT\ - PAD ERASE\ - 2LITERAL DNEGATE\ - D- D+ D0< D0= D2* D2/ D< D= DMAX DMIN D>S DABS\ - M+ M*/ D. D.R 2ROT DU<\ - CATCH THROW\ - FREE RESIZE ALLOCATE\ - CS-PICK CS-ROLL\ - GET-CURRENT SET-CURRENT FORTH-WORDLIST GET-ORDER SET-ORDER\ - PREVIOUS SEARCH-WORDLIST WORDLIST FIND ALSO ONLY FORTH DEFINITIONS ORDER\ - -TRAILING /STRING SEARCH COMPARE CMOVE CMOVE> BLANK SLITERAL'); - - var immediateWordList = toWordList('IF ELSE THEN BEGIN WHILE REPEAT UNTIL RECURSE [IF] [ELSE] [THEN] ?DO DO LOOP +LOOP UNLOOP LEAVE EXIT AGAIN CASE OF ENDOF ENDCASE'); - - CodeMirror.defineMode('forth', function() { - function searchWordList (wordList, word) { - var i; - for (i = wordList.length - 1; i >= 0; i--) { - if (wordList[i].name === word.toUpperCase()) { - return wordList[i]; - } - } - return undefined; - } - return { - startState: function() { - return { - state: '', - base: 10, - coreWordList: coreWordList, - immediateWordList: immediateWordList, - wordList: [] - }; - }, - token: function (stream, stt) { - var mat; - if (stream.eatSpace()) { - return null; - } - if (stt.state === '') { // interpretation - if (stream.match(/^(\]|:NONAME)(\s|$)/i)) { - stt.state = ' compilation'; - return 'builtin compilation'; - } - mat = stream.match(/^(\:)\s+(\S+)(\s|$)+/); - if (mat) { - stt.wordList.push({name: mat[2].toUpperCase()}); - stt.state = ' compilation'; - return 'def' + stt.state; - } - mat = stream.match(/^(VARIABLE|2VARIABLE|CONSTANT|2CONSTANT|CREATE|POSTPONE|VALUE|WORD)\s+(\S+)(\s|$)+/i); - if (mat) { - stt.wordList.push({name: mat[2].toUpperCase()}); - return 'def' + stt.state; - } - mat = stream.match(/^(\'|\[\'\])\s+(\S+)(\s|$)+/); - if (mat) { - return 'builtin' + stt.state; - } - } else { // compilation - // ; [ - if (stream.match(/^(\;|\[)(\s)/)) { - stt.state = ''; - stream.backUp(1); - return 'builtin compilation'; - } - if (stream.match(/^(\;|\[)($)/)) { - stt.state = ''; - return 'builtin compilation'; - } - if (stream.match(/^(POSTPONE)\s+\S+(\s|$)+/)) { - return 'builtin'; - } - } - - // dynamic wordlist - mat = stream.match(/^(\S+)(\s+|$)/); - if (mat) { - if (searchWordList(stt.wordList, mat[1]) !== undefined) { - return 'variable' + stt.state; - } - - // comments - if (mat[1] === '\\') { - stream.skipToEnd(); - return 'comment' + stt.state; - } - - // core words - if (searchWordList(stt.coreWordList, mat[1]) !== undefined) { - return 'builtin' + stt.state; - } - if (searchWordList(stt.immediateWordList, mat[1]) !== undefined) { - return 'keyword' + stt.state; - } - - if (mat[1] === '(') { - stream.eatWhile(function (s) { return s !== ')'; }); - stream.eat(')'); - return 'comment' + stt.state; - } - - // // strings - if (mat[1] === '.(') { - stream.eatWhile(function (s) { return s !== ')'; }); - stream.eat(')'); - return 'string' + stt.state; - } - if (mat[1] === 'S"' || mat[1] === '."' || mat[1] === 'C"') { - stream.eatWhile(function (s) { return s !== '"'; }); - stream.eat('"'); - return 'string' + stt.state; - } - - // numbers - if (mat[1] - 0xfffffffff) { - return 'number' + stt.state; - } - // if (mat[1].match(/^[-+]?[0-9]+\.[0-9]*/)) { - // return 'number' + stt.state; - // } - - return 'atom' + stt.state; - } - } - }; - }); - CodeMirror.defineMIME("text/x-forth", "forth"); -}); diff --git a/public/plugins/codemirror-5.17.0/mode/forth/index.html b/public/plugins/codemirror-5.17.0/mode/forth/index.html deleted file mode 100644 index ae8cd3458..000000000 --- a/public/plugins/codemirror-5.17.0/mode/forth/index.html +++ /dev/null @@ -1,75 +0,0 @@ - - -CodeMirror: Forth mode - - - - - - - - - - - -
    - -

    Forth mode

    - -
    - - - - -

    Simple mode that handle Forth-Syntax (Forth on WikiPedia).

    - -

    MIME types defined: text/x-forth.

    - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/fortran/fortran.js b/public/plugins/codemirror-5.17.0/mode/fortran/fortran.js deleted file mode 100644 index 4d88f006a..000000000 --- a/public/plugins/codemirror-5.17.0/mode/fortran/fortran.js +++ /dev/null @@ -1,188 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("fortran", function() { - function words(array) { - var keys = {}; - for (var i = 0; i < array.length; ++i) { - keys[array[i]] = true; - } - return keys; - } - - var keywords = words([ - "abstract", "accept", "allocatable", "allocate", - "array", "assign", "asynchronous", "backspace", - "bind", "block", "byte", "call", "case", - "class", "close", "common", "contains", - "continue", "cycle", "data", "deallocate", - "decode", "deferred", "dimension", "do", - "elemental", "else", "encode", "end", - "endif", "entry", "enumerator", "equivalence", - "exit", "external", "extrinsic", "final", - "forall", "format", "function", "generic", - "go", "goto", "if", "implicit", "import", "include", - "inquire", "intent", "interface", "intrinsic", - "module", "namelist", "non_intrinsic", - "non_overridable", "none", "nopass", - "nullify", "open", "optional", "options", - "parameter", "pass", "pause", "pointer", - "print", "private", "program", "protected", - "public", "pure", "read", "recursive", "result", - "return", "rewind", "save", "select", "sequence", - "stop", "subroutine", "target", "then", "to", "type", - "use", "value", "volatile", "where", "while", - "write"]); - var builtins = words(["abort", "abs", "access", "achar", "acos", - "adjustl", "adjustr", "aimag", "aint", "alarm", - "all", "allocated", "alog", "amax", "amin", - "amod", "and", "anint", "any", "asin", - "associated", "atan", "besj", "besjn", "besy", - "besyn", "bit_size", "btest", "cabs", "ccos", - "ceiling", "cexp", "char", "chdir", "chmod", - "clog", "cmplx", "command_argument_count", - "complex", "conjg", "cos", "cosh", "count", - "cpu_time", "cshift", "csin", "csqrt", "ctime", - "c_funloc", "c_loc", "c_associated", "c_null_ptr", - "c_null_funptr", "c_f_pointer", "c_null_char", - "c_alert", "c_backspace", "c_form_feed", - "c_new_line", "c_carriage_return", - "c_horizontal_tab", "c_vertical_tab", "dabs", - "dacos", "dasin", "datan", "date_and_time", - "dbesj", "dbesj", "dbesjn", "dbesy", "dbesy", - "dbesyn", "dble", "dcos", "dcosh", "ddim", "derf", - "derfc", "dexp", "digits", "dim", "dint", "dlog", - "dlog", "dmax", "dmin", "dmod", "dnint", - "dot_product", "dprod", "dsign", "dsinh", - "dsin", "dsqrt", "dtanh", "dtan", "dtime", - "eoshift", "epsilon", "erf", "erfc", "etime", - "exit", "exp", "exponent", "extends_type_of", - "fdate", "fget", "fgetc", "float", "floor", - "flush", "fnum", "fputc", "fput", "fraction", - "fseek", "fstat", "ftell", "gerror", "getarg", - "get_command", "get_command_argument", - "get_environment_variable", "getcwd", - "getenv", "getgid", "getlog", "getpid", - "getuid", "gmtime", "hostnm", "huge", "iabs", - "iachar", "iand", "iargc", "ibclr", "ibits", - "ibset", "ichar", "idate", "idim", "idint", - "idnint", "ieor", "ierrno", "ifix", "imag", - "imagpart", "index", "int", "ior", "irand", - "isatty", "ishft", "ishftc", "isign", - "iso_c_binding", "is_iostat_end", "is_iostat_eor", - "itime", "kill", "kind", "lbound", "len", "len_trim", - "lge", "lgt", "link", "lle", "llt", "lnblnk", "loc", - "log", "logical", "long", "lshift", "lstat", "ltime", - "matmul", "max", "maxexponent", "maxloc", "maxval", - "mclock", "merge", "move_alloc", "min", "minexponent", - "minloc", "minval", "mod", "modulo", "mvbits", - "nearest", "new_line", "nint", "not", "or", "pack", - "perror", "precision", "present", "product", "radix", - "rand", "random_number", "random_seed", "range", - "real", "realpart", "rename", "repeat", "reshape", - "rrspacing", "rshift", "same_type_as", "scale", - "scan", "second", "selected_int_kind", - "selected_real_kind", "set_exponent", "shape", - "short", "sign", "signal", "sinh", "sin", "sleep", - "sngl", "spacing", "spread", "sqrt", "srand", "stat", - "sum", "symlnk", "system", "system_clock", "tan", - "tanh", "time", "tiny", "transfer", "transpose", - "trim", "ttynam", "ubound", "umask", "unlink", - "unpack", "verify", "xor", "zabs", "zcos", "zexp", - "zlog", "zsin", "zsqrt"]); - - var dataTypes = words(["c_bool", "c_char", "c_double", "c_double_complex", - "c_float", "c_float_complex", "c_funptr", "c_int", - "c_int16_t", "c_int32_t", "c_int64_t", "c_int8_t", - "c_int_fast16_t", "c_int_fast32_t", "c_int_fast64_t", - "c_int_fast8_t", "c_int_least16_t", "c_int_least32_t", - "c_int_least64_t", "c_int_least8_t", "c_intmax_t", - "c_intptr_t", "c_long", "c_long_double", - "c_long_double_complex", "c_long_long", "c_ptr", - "c_short", "c_signed_char", "c_size_t", "character", - "complex", "double", "integer", "logical", "real"]); - var isOperatorChar = /[+\-*&=<>\/\:]/; - var litOperator = new RegExp("(\.and\.|\.or\.|\.eq\.|\.lt\.|\.le\.|\.gt\.|\.ge\.|\.ne\.|\.not\.|\.eqv\.|\.neqv\.)", "i"); - - function tokenBase(stream, state) { - - if (stream.match(litOperator)){ - return 'operator'; - } - - var ch = stream.next(); - if (ch == "!") { - stream.skipToEnd(); - return "comment"; - } - if (ch == '"' || ch == "'") { - state.tokenize = tokenString(ch); - return state.tokenize(stream, state); - } - if (/[\[\]\(\),]/.test(ch)) { - return null; - } - if (/\d/.test(ch)) { - stream.eatWhile(/[\w\.]/); - return "number"; - } - if (isOperatorChar.test(ch)) { - stream.eatWhile(isOperatorChar); - return "operator"; - } - stream.eatWhile(/[\w\$_]/); - var word = stream.current().toLowerCase(); - - if (keywords.hasOwnProperty(word)){ - return 'keyword'; - } - if (builtins.hasOwnProperty(word) || dataTypes.hasOwnProperty(word)) { - return 'builtin'; - } - return "variable"; - } - - function tokenString(quote) { - return function(stream, state) { - var escaped = false, next, end = false; - while ((next = stream.next()) != null) { - if (next == quote && !escaped) { - end = true; - break; - } - escaped = !escaped && next == "\\"; - } - if (end || !escaped) state.tokenize = null; - return "string"; - }; - } - - // Interface - - return { - startState: function() { - return {tokenize: null}; - }, - - token: function(stream, state) { - if (stream.eatSpace()) return null; - var style = (state.tokenize || tokenBase)(stream, state); - if (style == "comment" || style == "meta") return style; - return style; - } - }; -}); - -CodeMirror.defineMIME("text/x-fortran", "fortran"); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/fortran/index.html b/public/plugins/codemirror-5.17.0/mode/fortran/index.html deleted file mode 100644 index 9aed0efcc..000000000 --- a/public/plugins/codemirror-5.17.0/mode/fortran/index.html +++ /dev/null @@ -1,81 +0,0 @@ - - -CodeMirror: Fortran mode - - - - - - - - - -
    -

    Fortran mode

    - - -
    - - - -

    MIME types defined: text/x-fortran.

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/gas/gas.js b/public/plugins/codemirror-5.17.0/mode/gas/gas.js deleted file mode 100644 index 0c74bedc5..000000000 --- a/public/plugins/codemirror-5.17.0/mode/gas/gas.js +++ /dev/null @@ -1,345 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("gas", function(_config, parserConfig) { - 'use strict'; - - // If an architecture is specified, its initialization function may - // populate this array with custom parsing functions which will be - // tried in the event that the standard functions do not find a match. - var custom = []; - - // The symbol used to start a line comment changes based on the target - // architecture. - // If no architecture is pased in "parserConfig" then only multiline - // comments will have syntax support. - var lineCommentStartSymbol = ""; - - // These directives are architecture independent. - // Machine specific directives should go in their respective - // architecture initialization function. - // Reference: - // http://sourceware.org/binutils/docs/as/Pseudo-Ops.html#Pseudo-Ops - var directives = { - ".abort" : "builtin", - ".align" : "builtin", - ".altmacro" : "builtin", - ".ascii" : "builtin", - ".asciz" : "builtin", - ".balign" : "builtin", - ".balignw" : "builtin", - ".balignl" : "builtin", - ".bundle_align_mode" : "builtin", - ".bundle_lock" : "builtin", - ".bundle_unlock" : "builtin", - ".byte" : "builtin", - ".cfi_startproc" : "builtin", - ".comm" : "builtin", - ".data" : "builtin", - ".def" : "builtin", - ".desc" : "builtin", - ".dim" : "builtin", - ".double" : "builtin", - ".eject" : "builtin", - ".else" : "builtin", - ".elseif" : "builtin", - ".end" : "builtin", - ".endef" : "builtin", - ".endfunc" : "builtin", - ".endif" : "builtin", - ".equ" : "builtin", - ".equiv" : "builtin", - ".eqv" : "builtin", - ".err" : "builtin", - ".error" : "builtin", - ".exitm" : "builtin", - ".extern" : "builtin", - ".fail" : "builtin", - ".file" : "builtin", - ".fill" : "builtin", - ".float" : "builtin", - ".func" : "builtin", - ".global" : "builtin", - ".gnu_attribute" : "builtin", - ".hidden" : "builtin", - ".hword" : "builtin", - ".ident" : "builtin", - ".if" : "builtin", - ".incbin" : "builtin", - ".include" : "builtin", - ".int" : "builtin", - ".internal" : "builtin", - ".irp" : "builtin", - ".irpc" : "builtin", - ".lcomm" : "builtin", - ".lflags" : "builtin", - ".line" : "builtin", - ".linkonce" : "builtin", - ".list" : "builtin", - ".ln" : "builtin", - ".loc" : "builtin", - ".loc_mark_labels" : "builtin", - ".local" : "builtin", - ".long" : "builtin", - ".macro" : "builtin", - ".mri" : "builtin", - ".noaltmacro" : "builtin", - ".nolist" : "builtin", - ".octa" : "builtin", - ".offset" : "builtin", - ".org" : "builtin", - ".p2align" : "builtin", - ".popsection" : "builtin", - ".previous" : "builtin", - ".print" : "builtin", - ".protected" : "builtin", - ".psize" : "builtin", - ".purgem" : "builtin", - ".pushsection" : "builtin", - ".quad" : "builtin", - ".reloc" : "builtin", - ".rept" : "builtin", - ".sbttl" : "builtin", - ".scl" : "builtin", - ".section" : "builtin", - ".set" : "builtin", - ".short" : "builtin", - ".single" : "builtin", - ".size" : "builtin", - ".skip" : "builtin", - ".sleb128" : "builtin", - ".space" : "builtin", - ".stab" : "builtin", - ".string" : "builtin", - ".struct" : "builtin", - ".subsection" : "builtin", - ".symver" : "builtin", - ".tag" : "builtin", - ".text" : "builtin", - ".title" : "builtin", - ".type" : "builtin", - ".uleb128" : "builtin", - ".val" : "builtin", - ".version" : "builtin", - ".vtable_entry" : "builtin", - ".vtable_inherit" : "builtin", - ".warning" : "builtin", - ".weak" : "builtin", - ".weakref" : "builtin", - ".word" : "builtin" - }; - - var registers = {}; - - function x86(_parserConfig) { - lineCommentStartSymbol = "#"; - - registers.ax = "variable"; - registers.eax = "variable-2"; - registers.rax = "variable-3"; - - registers.bx = "variable"; - registers.ebx = "variable-2"; - registers.rbx = "variable-3"; - - registers.cx = "variable"; - registers.ecx = "variable-2"; - registers.rcx = "variable-3"; - - registers.dx = "variable"; - registers.edx = "variable-2"; - registers.rdx = "variable-3"; - - registers.si = "variable"; - registers.esi = "variable-2"; - registers.rsi = "variable-3"; - - registers.di = "variable"; - registers.edi = "variable-2"; - registers.rdi = "variable-3"; - - registers.sp = "variable"; - registers.esp = "variable-2"; - registers.rsp = "variable-3"; - - registers.bp = "variable"; - registers.ebp = "variable-2"; - registers.rbp = "variable-3"; - - registers.ip = "variable"; - registers.eip = "variable-2"; - registers.rip = "variable-3"; - - registers.cs = "keyword"; - registers.ds = "keyword"; - registers.ss = "keyword"; - registers.es = "keyword"; - registers.fs = "keyword"; - registers.gs = "keyword"; - } - - function armv6(_parserConfig) { - // Reference: - // http://infocenter.arm.com/help/topic/com.arm.doc.qrc0001l/QRC0001_UAL.pdf - // http://infocenter.arm.com/help/topic/com.arm.doc.ddi0301h/DDI0301H_arm1176jzfs_r0p7_trm.pdf - lineCommentStartSymbol = "@"; - directives.syntax = "builtin"; - - registers.r0 = "variable"; - registers.r1 = "variable"; - registers.r2 = "variable"; - registers.r3 = "variable"; - registers.r4 = "variable"; - registers.r5 = "variable"; - registers.r6 = "variable"; - registers.r7 = "variable"; - registers.r8 = "variable"; - registers.r9 = "variable"; - registers.r10 = "variable"; - registers.r11 = "variable"; - registers.r12 = "variable"; - - registers.sp = "variable-2"; - registers.lr = "variable-2"; - registers.pc = "variable-2"; - registers.r13 = registers.sp; - registers.r14 = registers.lr; - registers.r15 = registers.pc; - - custom.push(function(ch, stream) { - if (ch === '#') { - stream.eatWhile(/\w/); - return "number"; - } - }); - } - - var arch = (parserConfig.architecture || "x86").toLowerCase(); - if (arch === "x86") { - x86(parserConfig); - } else if (arch === "arm" || arch === "armv6") { - armv6(parserConfig); - } - - function nextUntilUnescaped(stream, end) { - var escaped = false, next; - while ((next = stream.next()) != null) { - if (next === end && !escaped) { - return false; - } - escaped = !escaped && next === "\\"; - } - return escaped; - } - - function clikeComment(stream, state) { - var maybeEnd = false, ch; - while ((ch = stream.next()) != null) { - if (ch === "/" && maybeEnd) { - state.tokenize = null; - break; - } - maybeEnd = (ch === "*"); - } - return "comment"; - } - - return { - startState: function() { - return { - tokenize: null - }; - }, - - token: function(stream, state) { - if (state.tokenize) { - return state.tokenize(stream, state); - } - - if (stream.eatSpace()) { - return null; - } - - var style, cur, ch = stream.next(); - - if (ch === "/") { - if (stream.eat("*")) { - state.tokenize = clikeComment; - return clikeComment(stream, state); - } - } - - if (ch === lineCommentStartSymbol) { - stream.skipToEnd(); - return "comment"; - } - - if (ch === '"') { - nextUntilUnescaped(stream, '"'); - return "string"; - } - - if (ch === '.') { - stream.eatWhile(/\w/); - cur = stream.current().toLowerCase(); - style = directives[cur]; - return style || null; - } - - if (ch === '=') { - stream.eatWhile(/\w/); - return "tag"; - } - - if (ch === '{') { - return "braket"; - } - - if (ch === '}') { - return "braket"; - } - - if (/\d/.test(ch)) { - if (ch === "0" && stream.eat("x")) { - stream.eatWhile(/[0-9a-fA-F]/); - return "number"; - } - stream.eatWhile(/\d/); - return "number"; - } - - if (/\w/.test(ch)) { - stream.eatWhile(/\w/); - if (stream.eat(":")) { - return 'tag'; - } - cur = stream.current().toLowerCase(); - style = registers[cur]; - return style || null; - } - - for (var i = 0; i < custom.length; i++) { - style = custom[i](ch, stream, state); - if (style) { - return style; - } - } - }, - - lineComment: lineCommentStartSymbol, - blockCommentStart: "/*", - blockCommentEnd: "*/" - }; -}); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/gas/index.html b/public/plugins/codemirror-5.17.0/mode/gas/index.html deleted file mode 100644 index df75ca2db..000000000 --- a/public/plugins/codemirror-5.17.0/mode/gas/index.html +++ /dev/null @@ -1,68 +0,0 @@ - - -CodeMirror: Gas mode - - - - - - - - - -
    -

    Gas mode

    -
    - - - - - -

    Handles AT&T assembler syntax (more specifically this handles - the GNU Assembler (gas) syntax.) - It takes a single optional configuration parameter: - architecture, which can be one of "ARM", - "ARMv6" or "x86". - Including the parameter adds syntax for the registers and special - directives for the supplied architecture. - -

    MIME types defined: text/x-gas

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/gfm/gfm.js b/public/plugins/codemirror-5.17.0/mode/gfm/gfm.js deleted file mode 100644 index 6e74ad4fd..000000000 --- a/public/plugins/codemirror-5.17.0/mode/gfm/gfm.js +++ /dev/null @@ -1,130 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror"), require("../markdown/markdown"), require("../../addon/mode/overlay")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../markdown/markdown", "../../addon/mode/overlay"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -var urlRE = /^((?:(?:aaas?|about|acap|adiumxtra|af[ps]|aim|apt|attachment|aw|beshare|bitcoin|bolo|callto|cap|chrome(?:-extension)?|cid|coap|com-eventbrite-attendee|content|crid|cvs|data|dav|dict|dlna-(?:playcontainer|playsingle)|dns|doi|dtn|dvb|ed2k|facetime|feed|file|finger|fish|ftp|geo|gg|git|gizmoproject|go|gopher|gtalk|h323|hcp|https?|iax|icap|icon|im|imap|info|ipn|ipp|irc[6s]?|iris(?:\.beep|\.lwz|\.xpc|\.xpcs)?|itms|jar|javascript|jms|keyparc|lastfm|ldaps?|magnet|mailto|maps|market|message|mid|mms|ms-help|msnim|msrps?|mtqp|mumble|mupdate|mvn|news|nfs|nih?|nntp|notes|oid|opaquelocktoken|palm|paparazzi|platform|pop|pres|proxy|psyc|query|res(?:ource)?|rmi|rsync|rtmp|rtsp|secondlife|service|session|sftp|sgn|shttp|sieve|sips?|skype|sm[bs]|snmp|soap\.beeps?|soldat|spotify|ssh|steam|svn|tag|teamspeak|tel(?:net)?|tftp|things|thismessage|tip|tn3270|tv|udp|unreal|urn|ut2004|vemmi|ventrilo|view-source|webcal|wss?|wtai|wyciwyg|xcon(?:-userid)?|xfire|xmlrpc\.beeps?|xmpp|xri|ymsgr|z39\.50[rs]?):(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]|\([^\s()<>]*\))+(?:\([^\s()<>]*\)|[^\s`*!()\[\]{};:'".,<>?«»“”‘’]))/i - -CodeMirror.defineMode("gfm", function(config, modeConfig) { - var codeDepth = 0; - function blankLine(state) { - state.code = false; - return null; - } - var gfmOverlay = { - startState: function() { - return { - code: false, - codeBlock: false, - ateSpace: false - }; - }, - copyState: function(s) { - return { - code: s.code, - codeBlock: s.codeBlock, - ateSpace: s.ateSpace - }; - }, - token: function(stream, state) { - state.combineTokens = null; - - // Hack to prevent formatting override inside code blocks (block and inline) - if (state.codeBlock) { - if (stream.match(/^```+/)) { - state.codeBlock = false; - return null; - } - stream.skipToEnd(); - return null; - } - if (stream.sol()) { - state.code = false; - } - if (stream.sol() && stream.match(/^```+/)) { - stream.skipToEnd(); - state.codeBlock = true; - return null; - } - // If this block is changed, it may need to be updated in Markdown mode - if (stream.peek() === '`') { - stream.next(); - var before = stream.pos; - stream.eatWhile('`'); - var difference = 1 + stream.pos - before; - if (!state.code) { - codeDepth = difference; - state.code = true; - } else { - if (difference === codeDepth) { // Must be exact - state.code = false; - } - } - return null; - } else if (state.code) { - stream.next(); - return null; - } - // Check if space. If so, links can be formatted later on - if (stream.eatSpace()) { - state.ateSpace = true; - return null; - } - if (stream.sol() || state.ateSpace) { - state.ateSpace = false; - if (modeConfig.gitHubSpice !== false) { - if(stream.match(/^(?:[a-zA-Z0-9\-_]+\/)?(?:[a-zA-Z0-9\-_]+@)?(?:[a-f0-9]{7,40}\b)/)) { - // User/Project@SHA - // User@SHA - // SHA - state.combineTokens = true; - return "link"; - } else if (stream.match(/^(?:[a-zA-Z0-9\-_]+\/)?(?:[a-zA-Z0-9\-_]+)?#[0-9]+\b/)) { - // User/Project#Num - // User#Num - // #Num - state.combineTokens = true; - return "link"; - } - } - } - if (stream.match(urlRE) && - stream.string.slice(stream.start - 2, stream.start) != "](" && - (stream.start == 0 || /\W/.test(stream.string.charAt(stream.start - 1)))) { - // URLs - // Taken from http://daringfireball.net/2010/07/improved_regex_for_matching_urls - // And then (issue #1160) simplified to make it not crash the Chrome Regexp engine - // And then limited url schemes to the CommonMark list, so foo:bar isn't matched as a URL - state.combineTokens = true; - return "link"; - } - stream.next(); - return null; - }, - blankLine: blankLine - }; - - var markdownConfig = { - underscoresBreakWords: false, - taskLists: true, - fencedCodeBlocks: '```', - strikethrough: true - }; - for (var attr in modeConfig) { - markdownConfig[attr] = modeConfig[attr]; - } - markdownConfig.name = "markdown"; - return CodeMirror.overlayMode(CodeMirror.getMode(config, markdownConfig), gfmOverlay); - -}, "markdown"); - - CodeMirror.defineMIME("text/x-gfm", "gfm"); -}); diff --git a/public/plugins/codemirror-5.17.0/mode/gfm/index.html b/public/plugins/codemirror-5.17.0/mode/gfm/index.html deleted file mode 100644 index 24c90c068..000000000 --- a/public/plugins/codemirror-5.17.0/mode/gfm/index.html +++ /dev/null @@ -1,93 +0,0 @@ - - -CodeMirror: GFM mode - - - - - - - - - - - - - - - - - -
    -

    GFM mode

    -
    - - - -

    Optionally depends on other modes for properly highlighted code blocks.

    - -

    Parsing/Highlighting Tests: normal, verbose.

    - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/gfm/test.js b/public/plugins/codemirror-5.17.0/mode/gfm/test.js deleted file mode 100644 index 7a1a4ccf2..000000000 --- a/public/plugins/codemirror-5.17.0/mode/gfm/test.js +++ /dev/null @@ -1,236 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function() { - var mode = CodeMirror.getMode({tabSize: 4}, "gfm"); - function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } - var modeHighlightFormatting = CodeMirror.getMode({tabSize: 4}, {name: "gfm", highlightFormatting: true}); - function FT(name) { test.mode(name, modeHighlightFormatting, Array.prototype.slice.call(arguments, 1)); } - - FT("codeBackticks", - "[comment&formatting&formatting-code `][comment foo][comment&formatting&formatting-code `]"); - - FT("doubleBackticks", - "[comment&formatting&formatting-code ``][comment foo ` bar][comment&formatting&formatting-code ``]"); - - FT("codeBlock", - "[comment&formatting&formatting-code-block ```css]", - "[tag foo]", - "[comment&formatting&formatting-code-block ```]"); - - FT("taskList", - "[variable-2&formatting&formatting-list&formatting-list-ul - ][meta&formatting&formatting-task [ ]]][variable-2 foo]", - "[variable-2&formatting&formatting-list&formatting-list-ul - ][property&formatting&formatting-task [x]]][variable-2 foo]"); - - FT("formatting_strikethrough", - "[strikethrough&formatting&formatting-strikethrough ~~][strikethrough foo][strikethrough&formatting&formatting-strikethrough ~~]"); - - FT("formatting_strikethrough", - "foo [strikethrough&formatting&formatting-strikethrough ~~][strikethrough bar][strikethrough&formatting&formatting-strikethrough ~~]"); - - MT("emInWordAsterisk", - "foo[em *bar*]hello"); - - MT("emInWordUnderscore", - "foo_bar_hello"); - - MT("emStrongUnderscore", - "[strong __][em&strong _foo__][em _] bar"); - - MT("fencedCodeBlocks", - "[comment ```]", - "[comment foo]", - "", - "[comment ```]", - "bar"); - - MT("fencedCodeBlockModeSwitching", - "[comment ```javascript]", - "[variable foo]", - "", - "[comment ```]", - "bar"); - - MT("fencedCodeBlockModeSwitchingObjc", - "[comment ```objective-c]", - "[keyword @property] [variable NSString] [operator *] [variable foo];", - "[comment ```]", - "bar"); - - MT("fencedCodeBlocksNoTildes", - "~~~", - "foo", - "~~~"); - - MT("taskListAsterisk", - "[variable-2 * []] foo]", // Invalid; must have space or x between [] - "[variable-2 * [ ]]bar]", // Invalid; must have space after ] - "[variable-2 * [x]]hello]", // Invalid; must have space after ] - "[variable-2 * ][meta [ ]]][variable-2 [world]]]", // Valid; tests reference style links - " [variable-3 * ][property [x]]][variable-3 foo]"); // Valid; can be nested - - MT("taskListPlus", - "[variable-2 + []] foo]", // Invalid; must have space or x between [] - "[variable-2 + [ ]]bar]", // Invalid; must have space after ] - "[variable-2 + [x]]hello]", // Invalid; must have space after ] - "[variable-2 + ][meta [ ]]][variable-2 [world]]]", // Valid; tests reference style links - " [variable-3 + ][property [x]]][variable-3 foo]"); // Valid; can be nested - - MT("taskListDash", - "[variable-2 - []] foo]", // Invalid; must have space or x between [] - "[variable-2 - [ ]]bar]", // Invalid; must have space after ] - "[variable-2 - [x]]hello]", // Invalid; must have space after ] - "[variable-2 - ][meta [ ]]][variable-2 [world]]]", // Valid; tests reference style links - " [variable-3 - ][property [x]]][variable-3 foo]"); // Valid; can be nested - - MT("taskListNumber", - "[variable-2 1. []] foo]", // Invalid; must have space or x between [] - "[variable-2 2. [ ]]bar]", // Invalid; must have space after ] - "[variable-2 3. [x]]hello]", // Invalid; must have space after ] - "[variable-2 4. ][meta [ ]]][variable-2 [world]]]", // Valid; tests reference style links - " [variable-3 1. ][property [x]]][variable-3 foo]"); // Valid; can be nested - - MT("SHA", - "foo [link be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2] bar"); - - MT("SHAEmphasis", - "[em *foo ][em&link be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2][em *]"); - - MT("shortSHA", - "foo [link be6a8cc] bar"); - - MT("tooShortSHA", - "foo be6a8c bar"); - - MT("longSHA", - "foo be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd22 bar"); - - MT("badSHA", - "foo be6a8cc1c1ecfe9489fb51e4869af15a13fc2cg2 bar"); - - MT("userSHA", - "foo [link bar@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2] hello"); - - MT("userSHAEmphasis", - "[em *foo ][em&link bar@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2][em *]"); - - MT("userProjectSHA", - "foo [link bar/hello@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2] world"); - - MT("userProjectSHAEmphasis", - "[em *foo ][em&link bar/hello@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2][em *]"); - - MT("num", - "foo [link #1] bar"); - - MT("numEmphasis", - "[em *foo ][em&link #1][em *]"); - - MT("badNum", - "foo #1bar hello"); - - MT("userNum", - "foo [link bar#1] hello"); - - MT("userNumEmphasis", - "[em *foo ][em&link bar#1][em *]"); - - MT("userProjectNum", - "foo [link bar/hello#1] world"); - - MT("userProjectNumEmphasis", - "[em *foo ][em&link bar/hello#1][em *]"); - - MT("vanillaLink", - "foo [link http://www.example.com/] bar"); - - MT("vanillaLinkNoScheme", - "foo [link www.example.com] bar"); - - MT("vanillaLinkHttps", - "foo [link https://www.example.com/] bar"); - - MT("vanillaLinkDataSchema", - "foo [link data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==] bar"); - - MT("vanillaLinkPunctuation", - "foo [link http://www.example.com/]. bar"); - - MT("vanillaLinkExtension", - "foo [link http://www.example.com/index.html] bar"); - - MT("vanillaLinkEmphasis", - "foo [em *][em&link http://www.example.com/index.html][em *] bar"); - - MT("notALink", - "foo asfd:asdf bar"); - - MT("notALink", - "[comment ```css]", - "[tag foo] {[property color]:[keyword black];}", - "[comment ```][link http://www.example.com/]"); - - MT("notALink", - "[comment ``foo `bar` http://www.example.com/``] hello"); - - MT("notALink", - "[comment `foo]", - "[comment&link http://www.example.com/]", - "[comment `] foo", - "", - "[link http://www.example.com/]"); - - MT("headerCodeBlockGithub", - "[header&header-1 # heading]", - "", - "[comment ```]", - "[comment code]", - "[comment ```]", - "", - "Commit: [link be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2]", - "Issue: [link #1]", - "Link: [link http://www.example.com/]"); - - MT("strikethrough", - "[strikethrough ~~foo~~]"); - - MT("strikethroughWithStartingSpace", - "~~ foo~~"); - - MT("strikethroughUnclosedStrayTildes", - "[strikethrough ~~foo~~~]"); - - MT("strikethroughUnclosedStrayTildes", - "[strikethrough ~~foo ~~]"); - - MT("strikethroughUnclosedStrayTildes", - "[strikethrough ~~foo ~~ bar]"); - - MT("strikethroughUnclosedStrayTildes", - "[strikethrough ~~foo ~~ bar~~]hello"); - - MT("strikethroughOneLetter", - "[strikethrough ~~a~~]"); - - MT("strikethroughWrapped", - "[strikethrough ~~foo]", - "[strikethrough foo~~]"); - - MT("strikethroughParagraph", - "[strikethrough ~~foo]", - "", - "foo[strikethrough ~~bar]"); - - MT("strikethroughEm", - "[strikethrough ~~foo][em&strikethrough *bar*][strikethrough ~~]"); - - MT("strikethroughEm", - "[em *][em&strikethrough ~~foo~~][em *]"); - - MT("strikethroughStrong", - "[strikethrough ~~][strong&strikethrough **foo**][strikethrough ~~]"); - - MT("strikethroughStrong", - "[strong **][strong&strikethrough ~~foo~~][strong **]"); - -})(); diff --git a/public/plugins/codemirror-5.17.0/mode/gherkin/gherkin.js b/public/plugins/codemirror-5.17.0/mode/gherkin/gherkin.js deleted file mode 100644 index fc2ebee16..000000000 --- a/public/plugins/codemirror-5.17.0/mode/gherkin/gherkin.js +++ /dev/null @@ -1,178 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -/* -Gherkin mode - http://www.cukes.info/ -Report bugs/issues here: https://github.com/codemirror/CodeMirror/issues -*/ - -// Following Objs from Brackets implementation: https://github.com/tregusti/brackets-gherkin/blob/master/main.js -//var Quotes = { -// SINGLE: 1, -// DOUBLE: 2 -//}; - -//var regex = { -// keywords: /(Feature| {2}(Scenario|In order to|As|I)| {4}(Given|When|Then|And))/ -//}; - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("gherkin", function () { - return { - startState: function () { - return { - lineNumber: 0, - tableHeaderLine: false, - allowFeature: true, - allowBackground: false, - allowScenario: false, - allowSteps: false, - allowPlaceholders: false, - allowMultilineArgument: false, - inMultilineString: false, - inMultilineTable: false, - inKeywordLine: false - }; - }, - token: function (stream, state) { - if (stream.sol()) { - state.lineNumber++; - state.inKeywordLine = false; - if (state.inMultilineTable) { - state.tableHeaderLine = false; - if (!stream.match(/\s*\|/, false)) { - state.allowMultilineArgument = false; - state.inMultilineTable = false; - } - } - } - - stream.eatSpace(); - - if (state.allowMultilineArgument) { - - // STRING - if (state.inMultilineString) { - if (stream.match('"""')) { - state.inMultilineString = false; - state.allowMultilineArgument = false; - } else { - stream.match(/.*/); - } - return "string"; - } - - // TABLE - if (state.inMultilineTable) { - if (stream.match(/\|\s*/)) { - return "bracket"; - } else { - stream.match(/[^\|]*/); - return state.tableHeaderLine ? "header" : "string"; - } - } - - // DETECT START - if (stream.match('"""')) { - // String - state.inMultilineString = true; - return "string"; - } else if (stream.match("|")) { - // Table - state.inMultilineTable = true; - state.tableHeaderLine = true; - return "bracket"; - } - - } - - // LINE COMMENT - if (stream.match(/#.*/)) { - return "comment"; - - // TAG - } else if (!state.inKeywordLine && stream.match(/@\S+/)) { - return "tag"; - - // FEATURE - } else if (!state.inKeywordLine && state.allowFeature && stream.match(/(機能|功能|フィーチャ|기능|โครงหลัก|ความสามารถ|ความต้องการทางธุรกิจ|ಹೆಚ್ಚಳ|గుణము|ਮੁਹਾਂਦਰਾ|ਨਕਸ਼ ਨੁਹਾਰ|ਖਾਸੀਅਤ|रूप लेख|وِیژگی|خاصية|תכונה|Функціонал|Функция|Функционалност|Функционал|Үзенчәлеклелек|Свойство|Особина|Мөмкинлек|Могућност|Λειτουργία|Δυνατότητα|Właściwość|Vlastnosť|Trajto|Tính năng|Savybė|Pretty much|Požiadavka|Požadavek|Potrzeba biznesowa|Özellik|Osobina|Ominaisuus|Omadus|OH HAI|Mogućnost|Mogucnost|Jellemző|Hwæt|Hwaet|Funzionalità|Funktionalitéit|Funktionalität|Funkcja|Funkcionalnost|Funkcionalitāte|Funkcia|Fungsi|Functionaliteit|Funcționalitate|Funcţionalitate|Functionalitate|Funcionalitat|Funcionalidade|Fonctionnalité|Fitur|Fīča|Feature|Eiginleiki|Egenskap|Egenskab|Característica|Caracteristica|Business Need|Aspekt|Arwedd|Ahoy matey!|Ability):/)) { - state.allowScenario = true; - state.allowBackground = true; - state.allowPlaceholders = false; - state.allowSteps = false; - state.allowMultilineArgument = false; - state.inKeywordLine = true; - return "keyword"; - - // BACKGROUND - } else if (!state.inKeywordLine && state.allowBackground && stream.match(/(背景|배경|แนวคิด|ಹಿನ್ನೆಲೆ|నేపథ్యం|ਪਿਛੋਕੜ|पृष्ठभूमि|زمینه|الخلفية|רקע|Тарих|Предыстория|Предистория|Позадина|Передумова|Основа|Контекст|Кереш|Υπόβαθρο|Założenia|Yo\-ho\-ho|Tausta|Taust|Situācija|Rerefons|Pozadina|Pozadie|Pozadí|Osnova|Latar Belakang|Kontext|Konteksts|Kontekstas|Kontekst|Háttér|Hannergrond|Grundlage|Geçmiş|Fundo|Fono|First off|Dis is what went down|Dasar|Contexto|Contexte|Context|Contesto|Cenário de Fundo|Cenario de Fundo|Cefndir|Bối cảnh|Bakgrunnur|Bakgrunn|Bakgrund|Baggrund|Background|B4|Antecedents|Antecedentes|Ær|Aer|Achtergrond):/)) { - state.allowPlaceholders = false; - state.allowSteps = true; - state.allowBackground = false; - state.allowMultilineArgument = false; - state.inKeywordLine = true; - return "keyword"; - - // SCENARIO OUTLINE - } else if (!state.inKeywordLine && state.allowScenario && stream.match(/(場景大綱|场景大纲|劇本大綱|剧本大纲|テンプレ|シナリオテンプレート|シナリオテンプレ|シナリオアウトライン|시나리오 개요|สรุปเหตุการณ์|โครงสร้างของเหตุการณ์|ವಿವರಣೆ|కథనం|ਪਟਕਥਾ ਰੂਪ ਰੇਖਾ|ਪਟਕਥਾ ਢਾਂਚਾ|परिदृश्य रूपरेखा|سيناريو مخطط|الگوی سناریو|תבנית תרחיש|Сценарийның төзелеше|Сценарий структураси|Структура сценарію|Структура сценария|Структура сценарија|Скица|Рамка на сценарий|Концепт|Περιγραφή Σεναρίου|Wharrimean is|Template Situai|Template Senario|Template Keadaan|Tapausaihio|Szenariogrundriss|Szablon scenariusza|Swa hwær swa|Swa hwaer swa|Struktura scenarija|Structură scenariu|Structura scenariu|Skica|Skenario konsep|Shiver me timbers|Senaryo taslağı|Schema dello scenario|Scenariomall|Scenariomal|Scenario Template|Scenario Outline|Scenario Amlinellol|Scenārijs pēc parauga|Scenarijaus šablonas|Reckon it's like|Raamstsenaarium|Plang vum Szenario|Plan du Scénario|Plan du scénario|Osnova scénáře|Osnova Scenára|Náčrt Scenáru|Náčrt Scénáře|Náčrt Scenára|MISHUN SRSLY|Menggariskan Senario|Lýsing Dæma|Lýsing Atburðarásar|Konturo de la scenaro|Koncept|Khung tình huống|Khung kịch bản|Forgatókönyv vázlat|Esquema do Cenário|Esquema do Cenario|Esquema del escenario|Esquema de l'escenari|Esbozo do escenario|Delineação do Cenário|Delineacao do Cenario|All y'all|Abstrakt Scenario|Abstract Scenario):/)) { - state.allowPlaceholders = true; - state.allowSteps = true; - state.allowMultilineArgument = false; - state.inKeywordLine = true; - return "keyword"; - - // EXAMPLES - } else if (state.allowScenario && stream.match(/(例子|例|サンプル|예|ชุดของเหตุการณ์|ชุดของตัวอย่าง|ಉದಾಹರಣೆಗಳು|ఉదాహరణలు|ਉਦਾਹਰਨਾਂ|उदाहरण|نمونه ها|امثلة|דוגמאות|Үрнәкләр|Сценарији|Примеры|Примери|Приклади|Мисоллар|Мисаллар|Σενάρια|Παραδείγματα|You'll wanna|Voorbeelden|Variantai|Tapaukset|Se þe|Se the|Se ðe|Scenarios|Scenariji|Scenarijai|Przykłady|Primjeri|Primeri|Příklady|Príklady|Piemēri|Példák|Pavyzdžiai|Paraugs|Örnekler|Juhtumid|Exemplos|Exemples|Exemple|Exempel|EXAMPLZ|Examples|Esempi|Enghreifftiau|Ekzemploj|Eksempler|Ejemplos|Dữ liệu|Dead men tell no tales|Dæmi|Contoh|Cenários|Cenarios|Beispiller|Beispiele|Atburðarásir):/)) { - state.allowPlaceholders = false; - state.allowSteps = true; - state.allowBackground = false; - state.allowMultilineArgument = true; - return "keyword"; - - // SCENARIO - } else if (!state.inKeywordLine && state.allowScenario && stream.match(/(場景|场景|劇本|剧本|シナリオ|시나리오|เหตุการณ์|ಕಥಾಸಾರಾಂಶ|సన్నివేశం|ਪਟਕਥਾ|परिदृश्य|سيناريو|سناریو|תרחיש|Сценарій|Сценарио|Сценарий|Пример|Σενάριο|Tình huống|The thing of it is|Tapaus|Szenario|Swa|Stsenaarium|Skenario|Situai|Senaryo|Senario|Scenaro|Scenariusz|Scenariu|Scénario|Scenario|Scenarijus|Scenārijs|Scenarij|Scenarie|Scénář|Scenár|Primer|MISHUN|Kịch bản|Keadaan|Heave to|Forgatókönyv|Escenario|Escenari|Cenário|Cenario|Awww, look mate|Atburðarás):/)) { - state.allowPlaceholders = false; - state.allowSteps = true; - state.allowBackground = false; - state.allowMultilineArgument = false; - state.inKeywordLine = true; - return "keyword"; - - // STEPS - } else if (!state.inKeywordLine && state.allowSteps && stream.match(/(那麼|那么|而且|當|当|并且|同時|同时|前提|假设|假設|假定|假如|但是|但し|並且|もし|ならば|ただし|しかし|かつ|하지만|조건|먼저|만일|만약|단|그리고|그러면|และ |เมื่อ |แต่ |ดังนั้น |กำหนดให้ |ಸ್ಥಿತಿಯನ್ನು |ಮತ್ತು |ನೀಡಿದ |ನಂತರ |ಆದರೆ |మరియు |చెప్పబడినది |కాని |ఈ పరిస్థితిలో |అప్పుడు |ਪਰ |ਤਦ |ਜੇਕਰ |ਜਿਵੇਂ ਕਿ |ਜਦੋਂ |ਅਤੇ |यदि |परन्तु |पर |तब |तदा |तथा |जब |चूंकि |किन्तु |कदा |और |अगर |و |هنگامی |متى |لكن |عندما |ثم |بفرض |با فرض |اما |اذاً |آنگاه |כאשר |וגם |בהינתן |אזי |אז |אבל |Якщо |Һәм |Унда |Тоді |Тогда |То |Также |Та |Пусть |Припустимо, що |Припустимо |Онда |Но |Нехай |Нәтиҗәдә |Лекин |Ләкин |Коли |Когда |Когато |Када |Кад |К тому же |І |И |Задато |Задати |Задате |Если |Допустим |Дано |Дадено |Вә |Ва |Бирок |Әмма |Әйтик |Әгәр |Аммо |Али |Але |Агар |А також |А |Τότε |Όταν |Και |Δεδομένου |Αλλά |Þurh |Þegar |Þa þe |Þá |Þa |Zatati |Zakładając |Zadato |Zadate |Zadano |Zadani |Zadan |Za předpokladu |Za predpokladu |Youse know when youse got |Youse know like when |Yna |Yeah nah |Y'know |Y |Wun |Wtedy |When y'all |When |Wenn |WEN |wann |Ve |Và |Und |Un |ugeholl |Too right |Thurh |Thì |Then y'all |Then |Tha the |Tha |Tetapi |Tapi |Tak |Tada |Tad |Stel |Soit |Siis |Și |Şi |Si |Sed |Se |Så |Quando |Quand |Quan |Pryd |Potom |Pokud |Pokiaľ |Però |Pero |Pak |Oraz |Onda |Ond |Oletetaan |Og |Och |O zaman |Niin |Nhưng |När |Når |Mutta |Men |Mas |Maka |Majd |Mając |Mais |Maar |mä |Ma |Lorsque |Lorsqu'|Logo |Let go and haul |Kun |Kuid |Kui |Kiedy |Khi |Ketika |Kemudian |Keď |Když |Kaj |Kai |Kada |Kad |Jeżeli |Jeśli |Ja |It's just unbelievable |Ir |I CAN HAZ |I |Ha |Givun |Givet |Given y'all |Given |Gitt |Gegeven |Gegeben seien |Gegeben sei |Gdy |Gangway! |Fakat |Étant donnés |Etant donnés |Étant données |Etant données |Étant donnée |Etant donnée |Étant donné |Etant donné |Et |És |Entonces |Entón |Então |Entao |En |Eğer ki |Ef |Eeldades |E |Ðurh |Duota |Dun |Donitaĵo |Donat |Donada |Do |Diyelim ki |Diberi |Dengan |Den youse gotta |DEN |De |Dato |Dați fiind |Daţi fiind |Dati fiind |Dati |Date fiind |Date |Data |Dat fiind |Dar |Dann |dann |Dan |Dados |Dado |Dadas |Dada |Ða ðe |Ða |Cuando |Cho |Cando |Când |Cand |Cal |But y'all |But at the end of the day I reckon |BUT |But |Buh |Blimey! |Biết |Bet |Bagi |Aye |awer |Avast! |Atunci |Atesa |Atès |Apabila |Anrhegedig a |Angenommen |And y'all |And |AN |An |an |Amikor |Amennyiben |Ama |Als |Alors |Allora |Ali |Aleshores |Ale |Akkor |Ak |Adott |Ac |Aber |A zároveň |A tiež |A taktiež |A také |A |a |7 |\* )/)) { - state.inStep = true; - state.allowPlaceholders = true; - state.allowMultilineArgument = true; - state.inKeywordLine = true; - return "keyword"; - - // INLINE STRING - } else if (stream.match(/"[^"]*"?/)) { - return "string"; - - // PLACEHOLDER - } else if (state.allowPlaceholders && stream.match(/<[^>]*>?/)) { - return "variable"; - - // Fall through - } else { - stream.next(); - stream.eatWhile(/[^@"<#]/); - return null; - } - } - }; -}); - -CodeMirror.defineMIME("text/x-feature", "gherkin"); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/gherkin/index.html b/public/plugins/codemirror-5.17.0/mode/gherkin/index.html deleted file mode 100644 index af8184c98..000000000 --- a/public/plugins/codemirror-5.17.0/mode/gherkin/index.html +++ /dev/null @@ -1,48 +0,0 @@ - - -CodeMirror: Gherkin mode - - - - - - - - - -
    -

    Gherkin mode

    -
    - - -

    MIME types defined: text/x-feature.

    - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/go/go.js b/public/plugins/codemirror-5.17.0/mode/go/go.js deleted file mode 100644 index 3c9ef6b98..000000000 --- a/public/plugins/codemirror-5.17.0/mode/go/go.js +++ /dev/null @@ -1,185 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("go", function(config) { - var indentUnit = config.indentUnit; - - var keywords = { - "break":true, "case":true, "chan":true, "const":true, "continue":true, - "default":true, "defer":true, "else":true, "fallthrough":true, "for":true, - "func":true, "go":true, "goto":true, "if":true, "import":true, - "interface":true, "map":true, "package":true, "range":true, "return":true, - "select":true, "struct":true, "switch":true, "type":true, "var":true, - "bool":true, "byte":true, "complex64":true, "complex128":true, - "float32":true, "float64":true, "int8":true, "int16":true, "int32":true, - "int64":true, "string":true, "uint8":true, "uint16":true, "uint32":true, - "uint64":true, "int":true, "uint":true, "uintptr":true, "error": true - }; - - var atoms = { - "true":true, "false":true, "iota":true, "nil":true, "append":true, - "cap":true, "close":true, "complex":true, "copy":true, "imag":true, - "len":true, "make":true, "new":true, "panic":true, "print":true, - "println":true, "real":true, "recover":true - }; - - var isOperatorChar = /[+\-*&^%:=<>!|\/]/; - - var curPunc; - - function tokenBase(stream, state) { - var ch = stream.next(); - if (ch == '"' || ch == "'" || ch == "`") { - state.tokenize = tokenString(ch); - return state.tokenize(stream, state); - } - if (/[\d\.]/.test(ch)) { - if (ch == ".") { - stream.match(/^[0-9]+([eE][\-+]?[0-9]+)?/); - } else if (ch == "0") { - stream.match(/^[xX][0-9a-fA-F]+/) || stream.match(/^0[0-7]+/); - } else { - stream.match(/^[0-9]*\.?[0-9]*([eE][\-+]?[0-9]+)?/); - } - return "number"; - } - if (/[\[\]{}\(\),;\:\.]/.test(ch)) { - curPunc = ch; - return null; - } - if (ch == "/") { - if (stream.eat("*")) { - state.tokenize = tokenComment; - return tokenComment(stream, state); - } - if (stream.eat("/")) { - stream.skipToEnd(); - return "comment"; - } - } - if (isOperatorChar.test(ch)) { - stream.eatWhile(isOperatorChar); - return "operator"; - } - stream.eatWhile(/[\w\$_\xa1-\uffff]/); - var cur = stream.current(); - if (keywords.propertyIsEnumerable(cur)) { - if (cur == "case" || cur == "default") curPunc = "case"; - return "keyword"; - } - if (atoms.propertyIsEnumerable(cur)) return "atom"; - return "variable"; - } - - function tokenString(quote) { - return function(stream, state) { - var escaped = false, next, end = false; - while ((next = stream.next()) != null) { - if (next == quote && !escaped) {end = true; break;} - escaped = !escaped && quote != "`" && next == "\\"; - } - if (end || !(escaped || quote == "`")) - state.tokenize = tokenBase; - return "string"; - }; - } - - function tokenComment(stream, state) { - var maybeEnd = false, ch; - while (ch = stream.next()) { - if (ch == "/" && maybeEnd) { - state.tokenize = tokenBase; - break; - } - maybeEnd = (ch == "*"); - } - return "comment"; - } - - function Context(indented, column, type, align, prev) { - this.indented = indented; - this.column = column; - this.type = type; - this.align = align; - this.prev = prev; - } - function pushContext(state, col, type) { - return state.context = new Context(state.indented, col, type, null, state.context); - } - function popContext(state) { - if (!state.context.prev) return; - var t = state.context.type; - if (t == ")" || t == "]" || t == "}") - state.indented = state.context.indented; - return state.context = state.context.prev; - } - - // Interface - - return { - startState: function(basecolumn) { - return { - tokenize: null, - context: new Context((basecolumn || 0) - indentUnit, 0, "top", false), - indented: 0, - startOfLine: true - }; - }, - - token: function(stream, state) { - var ctx = state.context; - if (stream.sol()) { - if (ctx.align == null) ctx.align = false; - state.indented = stream.indentation(); - state.startOfLine = true; - if (ctx.type == "case") ctx.type = "}"; - } - if (stream.eatSpace()) return null; - curPunc = null; - var style = (state.tokenize || tokenBase)(stream, state); - if (style == "comment") return style; - if (ctx.align == null) ctx.align = true; - - if (curPunc == "{") pushContext(state, stream.column(), "}"); - else if (curPunc == "[") pushContext(state, stream.column(), "]"); - else if (curPunc == "(") pushContext(state, stream.column(), ")"); - else if (curPunc == "case") ctx.type = "case"; - else if (curPunc == "}" && ctx.type == "}") ctx = popContext(state); - else if (curPunc == ctx.type) popContext(state); - state.startOfLine = false; - return style; - }, - - indent: function(state, textAfter) { - if (state.tokenize != tokenBase && state.tokenize != null) return 0; - var ctx = state.context, firstChar = textAfter && textAfter.charAt(0); - if (ctx.type == "case" && /^(?:case|default)\b/.test(textAfter)) { - state.context.type = "}"; - return ctx.indented; - } - var closing = firstChar == ctx.type; - if (ctx.align) return ctx.column + (closing ? 0 : 1); - else return ctx.indented + (closing ? 0 : indentUnit); - }, - - electricChars: "{}):", - fold: "brace", - blockCommentStart: "/*", - blockCommentEnd: "*/", - lineComment: "//" - }; -}); - -CodeMirror.defineMIME("text/x-go", "go"); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/go/index.html b/public/plugins/codemirror-5.17.0/mode/go/index.html deleted file mode 100644 index 72e3b364c..000000000 --- a/public/plugins/codemirror-5.17.0/mode/go/index.html +++ /dev/null @@ -1,85 +0,0 @@ - - -CodeMirror: Go mode - - - - - - - - - - - -
    -

    Go mode

    -
    - - - -

    MIME type: text/x-go

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/groovy/groovy.js b/public/plugins/codemirror-5.17.0/mode/groovy/groovy.js deleted file mode 100644 index 721933b01..000000000 --- a/public/plugins/codemirror-5.17.0/mode/groovy/groovy.js +++ /dev/null @@ -1,230 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("groovy", function(config) { - function words(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - var keywords = words( - "abstract as assert boolean break byte case catch char class const continue def default " + - "do double else enum extends final finally float for goto if implements import in " + - "instanceof int interface long native new package private protected public return " + - "short static strictfp super switch synchronized threadsafe throw throws transient " + - "try void volatile while"); - var blockKeywords = words("catch class do else finally for if switch try while enum interface def"); - var standaloneKeywords = words("return break continue"); - var atoms = words("null true false this"); - - var curPunc; - function tokenBase(stream, state) { - var ch = stream.next(); - if (ch == '"' || ch == "'") { - return startString(ch, stream, state); - } - if (/[\[\]{}\(\),;\:\.]/.test(ch)) { - curPunc = ch; - return null; - } - if (/\d/.test(ch)) { - stream.eatWhile(/[\w\.]/); - if (stream.eat(/eE/)) { stream.eat(/\+\-/); stream.eatWhile(/\d/); } - return "number"; - } - if (ch == "/") { - if (stream.eat("*")) { - state.tokenize.push(tokenComment); - return tokenComment(stream, state); - } - if (stream.eat("/")) { - stream.skipToEnd(); - return "comment"; - } - if (expectExpression(state.lastToken, false)) { - return startString(ch, stream, state); - } - } - if (ch == "-" && stream.eat(">")) { - curPunc = "->"; - return null; - } - if (/[+\-*&%=<>!?|\/~]/.test(ch)) { - stream.eatWhile(/[+\-*&%=<>|~]/); - return "operator"; - } - stream.eatWhile(/[\w\$_]/); - if (ch == "@") { stream.eatWhile(/[\w\$_\.]/); return "meta"; } - if (state.lastToken == ".") return "property"; - if (stream.eat(":")) { curPunc = "proplabel"; return "property"; } - var cur = stream.current(); - if (atoms.propertyIsEnumerable(cur)) { return "atom"; } - if (keywords.propertyIsEnumerable(cur)) { - if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement"; - else if (standaloneKeywords.propertyIsEnumerable(cur)) curPunc = "standalone"; - return "keyword"; - } - return "variable"; - } - tokenBase.isBase = true; - - function startString(quote, stream, state) { - var tripleQuoted = false; - if (quote != "/" && stream.eat(quote)) { - if (stream.eat(quote)) tripleQuoted = true; - else return "string"; - } - function t(stream, state) { - var escaped = false, next, end = !tripleQuoted; - while ((next = stream.next()) != null) { - if (next == quote && !escaped) { - if (!tripleQuoted) { break; } - if (stream.match(quote + quote)) { end = true; break; } - } - if (quote == '"' && next == "$" && !escaped && stream.eat("{")) { - state.tokenize.push(tokenBaseUntilBrace()); - return "string"; - } - escaped = !escaped && next == "\\"; - } - if (end) state.tokenize.pop(); - return "string"; - } - state.tokenize.push(t); - return t(stream, state); - } - - function tokenBaseUntilBrace() { - var depth = 1; - function t(stream, state) { - if (stream.peek() == "}") { - depth--; - if (depth == 0) { - state.tokenize.pop(); - return state.tokenize[state.tokenize.length-1](stream, state); - } - } else if (stream.peek() == "{") { - depth++; - } - return tokenBase(stream, state); - } - t.isBase = true; - return t; - } - - function tokenComment(stream, state) { - var maybeEnd = false, ch; - while (ch = stream.next()) { - if (ch == "/" && maybeEnd) { - state.tokenize.pop(); - break; - } - maybeEnd = (ch == "*"); - } - return "comment"; - } - - function expectExpression(last, newline) { - return !last || last == "operator" || last == "->" || /[\.\[\{\(,;:]/.test(last) || - last == "newstatement" || last == "keyword" || last == "proplabel" || - (last == "standalone" && !newline); - } - - function Context(indented, column, type, align, prev) { - this.indented = indented; - this.column = column; - this.type = type; - this.align = align; - this.prev = prev; - } - function pushContext(state, col, type) { - return state.context = new Context(state.indented, col, type, null, state.context); - } - function popContext(state) { - var t = state.context.type; - if (t == ")" || t == "]" || t == "}") - state.indented = state.context.indented; - return state.context = state.context.prev; - } - - // Interface - - return { - startState: function(basecolumn) { - return { - tokenize: [tokenBase], - context: new Context((basecolumn || 0) - config.indentUnit, 0, "top", false), - indented: 0, - startOfLine: true, - lastToken: null - }; - }, - - token: function(stream, state) { - var ctx = state.context; - if (stream.sol()) { - if (ctx.align == null) ctx.align = false; - state.indented = stream.indentation(); - state.startOfLine = true; - // Automatic semicolon insertion - if (ctx.type == "statement" && !expectExpression(state.lastToken, true)) { - popContext(state); ctx = state.context; - } - } - if (stream.eatSpace()) return null; - curPunc = null; - var style = state.tokenize[state.tokenize.length-1](stream, state); - if (style == "comment") return style; - if (ctx.align == null) ctx.align = true; - - if ((curPunc == ";" || curPunc == ":") && ctx.type == "statement") popContext(state); - // Handle indentation for {x -> \n ... } - else if (curPunc == "->" && ctx.type == "statement" && ctx.prev.type == "}") { - popContext(state); - state.context.align = false; - } - else if (curPunc == "{") pushContext(state, stream.column(), "}"); - else if (curPunc == "[") pushContext(state, stream.column(), "]"); - else if (curPunc == "(") pushContext(state, stream.column(), ")"); - else if (curPunc == "}") { - while (ctx.type == "statement") ctx = popContext(state); - if (ctx.type == "}") ctx = popContext(state); - while (ctx.type == "statement") ctx = popContext(state); - } - else if (curPunc == ctx.type) popContext(state); - else if (ctx.type == "}" || ctx.type == "top" || (ctx.type == "statement" && curPunc == "newstatement")) - pushContext(state, stream.column(), "statement"); - state.startOfLine = false; - state.lastToken = curPunc || style; - return style; - }, - - indent: function(state, textAfter) { - if (!state.tokenize[state.tokenize.length-1].isBase) return 0; - var firstChar = textAfter && textAfter.charAt(0), ctx = state.context; - if (ctx.type == "statement" && !expectExpression(state.lastToken, true)) ctx = ctx.prev; - var closing = firstChar == ctx.type; - if (ctx.type == "statement") return ctx.indented + (firstChar == "{" ? 0 : config.indentUnit); - else if (ctx.align) return ctx.column + (closing ? 0 : 1); - else return ctx.indented + (closing ? 0 : config.indentUnit); - }, - - electricChars: "{}", - closeBrackets: {triples: "'\""}, - fold: "brace" - }; -}); - -CodeMirror.defineMIME("text/x-groovy", "groovy"); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/groovy/index.html b/public/plugins/codemirror-5.17.0/mode/groovy/index.html deleted file mode 100644 index bb0df078c..000000000 --- a/public/plugins/codemirror-5.17.0/mode/groovy/index.html +++ /dev/null @@ -1,84 +0,0 @@ - - -CodeMirror: Groovy mode - - - - - - - - - - -
    -

    Groovy mode

    -
    - - - -

    MIME types defined: text/x-groovy

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/haml/haml.js b/public/plugins/codemirror-5.17.0/mode/haml/haml.js deleted file mode 100644 index 20ae1e19c..000000000 --- a/public/plugins/codemirror-5.17.0/mode/haml/haml.js +++ /dev/null @@ -1,161 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed"), require("../ruby/ruby")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../htmlmixed/htmlmixed", "../ruby/ruby"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - - // full haml mode. This handled embedded ruby and html fragments too - CodeMirror.defineMode("haml", function(config) { - var htmlMode = CodeMirror.getMode(config, {name: "htmlmixed"}); - var rubyMode = CodeMirror.getMode(config, "ruby"); - - function rubyInQuote(endQuote) { - return function(stream, state) { - var ch = stream.peek(); - if (ch == endQuote && state.rubyState.tokenize.length == 1) { - // step out of ruby context as it seems to complete processing all the braces - stream.next(); - state.tokenize = html; - return "closeAttributeTag"; - } else { - return ruby(stream, state); - } - }; - } - - function ruby(stream, state) { - if (stream.match("-#")) { - stream.skipToEnd(); - return "comment"; - } - return rubyMode.token(stream, state.rubyState); - } - - function html(stream, state) { - var ch = stream.peek(); - - // handle haml declarations. All declarations that cant be handled here - // will be passed to html mode - if (state.previousToken.style == "comment" ) { - if (state.indented > state.previousToken.indented) { - stream.skipToEnd(); - return "commentLine"; - } - } - - if (state.startOfLine) { - if (ch == "!" && stream.match("!!")) { - stream.skipToEnd(); - return "tag"; - } else if (stream.match(/^%[\w:#\.]+=/)) { - state.tokenize = ruby; - return "hamlTag"; - } else if (stream.match(/^%[\w:]+/)) { - return "hamlTag"; - } else if (ch == "/" ) { - stream.skipToEnd(); - return "comment"; - } - } - - if (state.startOfLine || state.previousToken.style == "hamlTag") { - if ( ch == "#" || ch == ".") { - stream.match(/[\w-#\.]*/); - return "hamlAttribute"; - } - } - - // donot handle --> as valid ruby, make it HTML close comment instead - if (state.startOfLine && !stream.match("-->", false) && (ch == "=" || ch == "-" )) { - state.tokenize = ruby; - return state.tokenize(stream, state); - } - - if (state.previousToken.style == "hamlTag" || - state.previousToken.style == "closeAttributeTag" || - state.previousToken.style == "hamlAttribute") { - if (ch == "(") { - state.tokenize = rubyInQuote(")"); - return state.tokenize(stream, state); - } else if (ch == "{") { - if (!stream.match(/^\{%.*/)) { - state.tokenize = rubyInQuote("}"); - return state.tokenize(stream, state); - } - } - } - - return htmlMode.token(stream, state.htmlState); - } - - return { - // default to html mode - startState: function() { - var htmlState = CodeMirror.startState(htmlMode); - var rubyState = CodeMirror.startState(rubyMode); - return { - htmlState: htmlState, - rubyState: rubyState, - indented: 0, - previousToken: { style: null, indented: 0}, - tokenize: html - }; - }, - - copyState: function(state) { - return { - htmlState : CodeMirror.copyState(htmlMode, state.htmlState), - rubyState: CodeMirror.copyState(rubyMode, state.rubyState), - indented: state.indented, - previousToken: state.previousToken, - tokenize: state.tokenize - }; - }, - - token: function(stream, state) { - if (stream.sol()) { - state.indented = stream.indentation(); - state.startOfLine = true; - } - if (stream.eatSpace()) return null; - var style = state.tokenize(stream, state); - state.startOfLine = false; - // dont record comment line as we only want to measure comment line with - // the opening comment block - if (style && style != "commentLine") { - state.previousToken = { style: style, indented: state.indented }; - } - // if current state is ruby and the previous token is not `,` reset the - // tokenize to html - if (stream.eol() && state.tokenize == ruby) { - stream.backUp(1); - var ch = stream.peek(); - stream.next(); - if (ch && ch != ",") { - state.tokenize = html; - } - } - // reprocess some of the specific style tag when finish setting previousToken - if (style == "hamlTag") { - style = "tag"; - } else if (style == "commentLine") { - style = "comment"; - } else if (style == "hamlAttribute") { - style = "attribute"; - } else if (style == "closeAttributeTag") { - style = null; - } - return style; - } - }; - }, "htmlmixed", "ruby"); - - CodeMirror.defineMIME("text/x-haml", "haml"); -}); diff --git a/public/plugins/codemirror-5.17.0/mode/haml/index.html b/public/plugins/codemirror-5.17.0/mode/haml/index.html deleted file mode 100644 index 2894a938e..000000000 --- a/public/plugins/codemirror-5.17.0/mode/haml/index.html +++ /dev/null @@ -1,79 +0,0 @@ - - -CodeMirror: HAML mode - - - - - - - - - - - - - -
    -

    HAML mode

    -
    - - -

    MIME types defined: text/x-haml.

    - -

    Parsing/Highlighting Tests: normal, verbose.

    - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/haml/test.js b/public/plugins/codemirror-5.17.0/mode/haml/test.js deleted file mode 100644 index 508458a43..000000000 --- a/public/plugins/codemirror-5.17.0/mode/haml/test.js +++ /dev/null @@ -1,97 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function() { - var mode = CodeMirror.getMode({tabSize: 4, indentUnit: 2}, "haml"); - function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } - - // Requires at least one media query - MT("elementName", - "[tag %h1] Hey There"); - - MT("oneElementPerLine", - "[tag %h1] Hey There %h2"); - - MT("idSelector", - "[tag %h1][attribute #test] Hey There"); - - MT("classSelector", - "[tag %h1][attribute .hello] Hey There"); - - MT("docType", - "[tag !!! XML]"); - - MT("comment", - "[comment / Hello WORLD]"); - - MT("notComment", - "[tag %h1] This is not a / comment "); - - MT("attributes", - "[tag %a]([variable title][operator =][string \"test\"]){[atom :title] [operator =>] [string \"test\"]}"); - - MT("htmlCode", - "[tag&bracket <][tag h1][tag&bracket >]Title[tag&bracket ]"); - - MT("rubyBlock", - "[operator =][variable-2 @item]"); - - MT("selectorRubyBlock", - "[tag %a.selector=] [variable-2 @item]"); - - MT("nestedRubyBlock", - "[tag %a]", - " [operator =][variable puts] [string \"test\"]"); - - MT("multilinePlaintext", - "[tag %p]", - " Hello,", - " World"); - - MT("multilineRuby", - "[tag %p]", - " [comment -# this is a comment]", - " [comment and this is a comment too]", - " Date/Time", - " [operator -] [variable now] [operator =] [tag DateTime][operator .][property now]", - " [tag %strong=] [variable now]", - " [operator -] [keyword if] [variable now] [operator >] [tag DateTime][operator .][property parse]([string \"December 31, 2006\"])", - " [operator =][string \"Happy\"]", - " [operator =][string \"Belated\"]", - " [operator =][string \"Birthday\"]"); - - MT("multilineComment", - "[comment /]", - " [comment Multiline]", - " [comment Comment]"); - - MT("hamlComment", - "[comment -# this is a comment]"); - - MT("multilineHamlComment", - "[comment -# this is a comment]", - " [comment and this is a comment too]"); - - MT("multilineHTMLComment", - "[comment ]"); - - MT("hamlAfterRubyTag", - "[attribute .block]", - " [tag %strong=] [variable now]", - " [attribute .test]", - " [operator =][variable now]", - " [attribute .right]"); - - MT("stretchedRuby", - "[operator =] [variable puts] [string \"Hello\"],", - " [string \"World\"]"); - - MT("interpolationInHashAttribute", - //"[tag %div]{[atom :id] [operator =>] [string \"#{][variable test][string }_#{][variable ting][string }\"]} test"); - "[tag %div]{[atom :id] [operator =>] [string \"#{][variable test][string }_#{][variable ting][string }\"]} test"); - - MT("interpolationInHTMLAttribute", - "[tag %div]([variable title][operator =][string \"#{][variable test][string }_#{][variable ting]()[string }\"]) Test"); -})(); diff --git a/public/plugins/codemirror-5.17.0/mode/handlebars/handlebars.js b/public/plugins/codemirror-5.17.0/mode/handlebars/handlebars.js deleted file mode 100644 index 2174e5384..000000000 --- a/public/plugins/codemirror-5.17.0/mode/handlebars/handlebars.js +++ /dev/null @@ -1,62 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror"), require("../../addon/mode/simple"), require("../../addon/mode/multiplex")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../../addon/mode/simple", "../../addon/mode/multiplex"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - CodeMirror.defineSimpleMode("handlebars-tags", { - start: [ - { regex: /\{\{!--/, push: "dash_comment", token: "comment" }, - { regex: /\{\{!/, push: "comment", token: "comment" }, - { regex: /\{\{/, push: "handlebars", token: "tag" } - ], - handlebars: [ - { regex: /\}\}/, pop: true, token: "tag" }, - - // Double and single quotes - { regex: /"(?:[^\\"]|\\.)*"?/, token: "string" }, - { regex: /'(?:[^\\']|\\.)*'?/, token: "string" }, - - // Handlebars keywords - { regex: />|[#\/]([A-Za-z_]\w*)/, token: "keyword" }, - { regex: /(?:else|this)\b/, token: "keyword" }, - - // Numeral - { regex: /\d+/i, token: "number" }, - - // Atoms like = and . - { regex: /=|~|@|true|false/, token: "atom" }, - - // Paths - { regex: /(?:\.\.\/)*(?:[A-Za-z_][\w\.]*)+/, token: "variable-2" } - ], - dash_comment: [ - { regex: /--\}\}/, pop: true, token: "comment" }, - - // Commented code - { regex: /./, token: "comment"} - ], - comment: [ - { regex: /\}\}/, pop: true, token: "comment" }, - { regex: /./, token: "comment" } - ] - }); - - CodeMirror.defineMode("handlebars", function(config, parserConfig) { - var handlebars = CodeMirror.getMode(config, "handlebars-tags"); - if (!parserConfig || !parserConfig.base) return handlebars; - return CodeMirror.multiplexingMode( - CodeMirror.getMode(config, parserConfig.base), - {open: "{{", close: "}}", mode: handlebars, parseDelimiters: true} - ); - }); - - CodeMirror.defineMIME("text/x-handlebars-template", "handlebars"); -}); diff --git a/public/plugins/codemirror-5.17.0/mode/handlebars/index.html b/public/plugins/codemirror-5.17.0/mode/handlebars/index.html deleted file mode 100644 index b1bfad1ca..000000000 --- a/public/plugins/codemirror-5.17.0/mode/handlebars/index.html +++ /dev/null @@ -1,79 +0,0 @@ - - -CodeMirror: Handlebars mode - - - - - - - - - - - - -
    -

    Handlebars

    -
    - - -

    Handlebars syntax highlighting for CodeMirror.

    - -

    MIME types defined: text/x-handlebars-template

    - -

    Supported options: base to set the mode to - wrap. For example, use

    -
    mode: {name: "handlebars", base: "text/html"}
    -

    to highlight an HTML template.

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/haskell-literate/haskell-literate.js b/public/plugins/codemirror-5.17.0/mode/haskell-literate/haskell-literate.js deleted file mode 100644 index 906415b4c..000000000 --- a/public/plugins/codemirror-5.17.0/mode/haskell-literate/haskell-literate.js +++ /dev/null @@ -1,43 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function (mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror"), require("../haskell/haskell")) - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../haskell/haskell"], mod) - else // Plain browser env - mod(CodeMirror) -})(function (CodeMirror) { - "use strict" - - CodeMirror.defineMode("haskell-literate", function (config, parserConfig) { - var baseMode = CodeMirror.getMode(config, (parserConfig && parserConfig.base) || "haskell") - - return { - startState: function () { - return { - inCode: false, - baseState: CodeMirror.startState(baseMode) - } - }, - token: function (stream, state) { - if (stream.sol()) { - if (state.inCode = stream.eat(">")) - return "meta" - } - if (state.inCode) { - return baseMode.token(stream, state.baseState) - } else { - stream.skipToEnd() - return "comment" - } - }, - innerMode: function (state) { - return state.inCode ? {state: state.baseState, mode: baseMode} : null - } - } - }, "haskell") - - CodeMirror.defineMIME("text/x-literate-haskell", "haskell-literate") -}); diff --git a/public/plugins/codemirror-5.17.0/mode/haskell-literate/index.html b/public/plugins/codemirror-5.17.0/mode/haskell-literate/index.html deleted file mode 100644 index 8c9bc60d1..000000000 --- a/public/plugins/codemirror-5.17.0/mode/haskell-literate/index.html +++ /dev/null @@ -1,282 +0,0 @@ - - -CodeMirror: Haskell-literate mode - - - - - - - - - - -
    -

    Haskell literate mode

    -
    - - - -

    MIME types - defined: text/x-literate-haskell.

    - -

    Parser configuration parameters recognized: base to - set the base mode (defaults to "haskell").

    - - - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/haskell/haskell.js b/public/plugins/codemirror-5.17.0/mode/haskell/haskell.js deleted file mode 100644 index fe0bab67e..000000000 --- a/public/plugins/codemirror-5.17.0/mode/haskell/haskell.js +++ /dev/null @@ -1,267 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("haskell", function(_config, modeConfig) { - - function switchState(source, setState, f) { - setState(f); - return f(source, setState); - } - - // These should all be Unicode extended, as per the Haskell 2010 report - var smallRE = /[a-z_]/; - var largeRE = /[A-Z]/; - var digitRE = /\d/; - var hexitRE = /[0-9A-Fa-f]/; - var octitRE = /[0-7]/; - var idRE = /[a-z_A-Z0-9'\xa1-\uffff]/; - var symbolRE = /[-!#$%&*+.\/<=>?@\\^|~:]/; - var specialRE = /[(),;[\]`{}]/; - var whiteCharRE = /[ \t\v\f]/; // newlines are handled in tokenizer - - function normal(source, setState) { - if (source.eatWhile(whiteCharRE)) { - return null; - } - - var ch = source.next(); - if (specialRE.test(ch)) { - if (ch == '{' && source.eat('-')) { - var t = "comment"; - if (source.eat('#')) { - t = "meta"; - } - return switchState(source, setState, ncomment(t, 1)); - } - return null; - } - - if (ch == '\'') { - if (source.eat('\\')) { - source.next(); // should handle other escapes here - } - else { - source.next(); - } - if (source.eat('\'')) { - return "string"; - } - return "error"; - } - - if (ch == '"') { - return switchState(source, setState, stringLiteral); - } - - if (largeRE.test(ch)) { - source.eatWhile(idRE); - if (source.eat('.')) { - return "qualifier"; - } - return "variable-2"; - } - - if (smallRE.test(ch)) { - source.eatWhile(idRE); - return "variable"; - } - - if (digitRE.test(ch)) { - if (ch == '0') { - if (source.eat(/[xX]/)) { - source.eatWhile(hexitRE); // should require at least 1 - return "integer"; - } - if (source.eat(/[oO]/)) { - source.eatWhile(octitRE); // should require at least 1 - return "number"; - } - } - source.eatWhile(digitRE); - var t = "number"; - if (source.match(/^\.\d+/)) { - t = "number"; - } - if (source.eat(/[eE]/)) { - t = "number"; - source.eat(/[-+]/); - source.eatWhile(digitRE); // should require at least 1 - } - return t; - } - - if (ch == "." && source.eat(".")) - return "keyword"; - - if (symbolRE.test(ch)) { - if (ch == '-' && source.eat(/-/)) { - source.eatWhile(/-/); - if (!source.eat(symbolRE)) { - source.skipToEnd(); - return "comment"; - } - } - var t = "variable"; - if (ch == ':') { - t = "variable-2"; - } - source.eatWhile(symbolRE); - return t; - } - - return "error"; - } - - function ncomment(type, nest) { - if (nest == 0) { - return normal; - } - return function(source, setState) { - var currNest = nest; - while (!source.eol()) { - var ch = source.next(); - if (ch == '{' && source.eat('-')) { - ++currNest; - } - else if (ch == '-' && source.eat('}')) { - --currNest; - if (currNest == 0) { - setState(normal); - return type; - } - } - } - setState(ncomment(type, currNest)); - return type; - }; - } - - function stringLiteral(source, setState) { - while (!source.eol()) { - var ch = source.next(); - if (ch == '"') { - setState(normal); - return "string"; - } - if (ch == '\\') { - if (source.eol() || source.eat(whiteCharRE)) { - setState(stringGap); - return "string"; - } - if (source.eat('&')) { - } - else { - source.next(); // should handle other escapes here - } - } - } - setState(normal); - return "error"; - } - - function stringGap(source, setState) { - if (source.eat('\\')) { - return switchState(source, setState, stringLiteral); - } - source.next(); - setState(normal); - return "error"; - } - - - var wellKnownWords = (function() { - var wkw = {}; - function setType(t) { - return function () { - for (var i = 0; i < arguments.length; i++) - wkw[arguments[i]] = t; - }; - } - - setType("keyword")( - "case", "class", "data", "default", "deriving", "do", "else", "foreign", - "if", "import", "in", "infix", "infixl", "infixr", "instance", "let", - "module", "newtype", "of", "then", "type", "where", "_"); - - setType("keyword")( - "\.\.", ":", "::", "=", "\\", "\"", "<-", "->", "@", "~", "=>"); - - setType("builtin")( - "!!", "$!", "$", "&&", "+", "++", "-", ".", "/", "/=", "<", "<=", "=<<", - "==", ">", ">=", ">>", ">>=", "^", "^^", "||", "*", "**"); - - setType("builtin")( - "Bool", "Bounded", "Char", "Double", "EQ", "Either", "Enum", "Eq", - "False", "FilePath", "Float", "Floating", "Fractional", "Functor", "GT", - "IO", "IOError", "Int", "Integer", "Integral", "Just", "LT", "Left", - "Maybe", "Monad", "Nothing", "Num", "Ord", "Ordering", "Rational", "Read", - "ReadS", "Real", "RealFloat", "RealFrac", "Right", "Show", "ShowS", - "String", "True"); - - setType("builtin")( - "abs", "acos", "acosh", "all", "and", "any", "appendFile", "asTypeOf", - "asin", "asinh", "atan", "atan2", "atanh", "break", "catch", "ceiling", - "compare", "concat", "concatMap", "const", "cos", "cosh", "curry", - "cycle", "decodeFloat", "div", "divMod", "drop", "dropWhile", "either", - "elem", "encodeFloat", "enumFrom", "enumFromThen", "enumFromThenTo", - "enumFromTo", "error", "even", "exp", "exponent", "fail", "filter", - "flip", "floatDigits", "floatRadix", "floatRange", "floor", "fmap", - "foldl", "foldl1", "foldr", "foldr1", "fromEnum", "fromInteger", - "fromIntegral", "fromRational", "fst", "gcd", "getChar", "getContents", - "getLine", "head", "id", "init", "interact", "ioError", "isDenormalized", - "isIEEE", "isInfinite", "isNaN", "isNegativeZero", "iterate", "last", - "lcm", "length", "lex", "lines", "log", "logBase", "lookup", "map", - "mapM", "mapM_", "max", "maxBound", "maximum", "maybe", "min", "minBound", - "minimum", "mod", "negate", "not", "notElem", "null", "odd", "or", - "otherwise", "pi", "pred", "print", "product", "properFraction", - "putChar", "putStr", "putStrLn", "quot", "quotRem", "read", "readFile", - "readIO", "readList", "readLn", "readParen", "reads", "readsPrec", - "realToFrac", "recip", "rem", "repeat", "replicate", "return", "reverse", - "round", "scaleFloat", "scanl", "scanl1", "scanr", "scanr1", "seq", - "sequence", "sequence_", "show", "showChar", "showList", "showParen", - "showString", "shows", "showsPrec", "significand", "signum", "sin", - "sinh", "snd", "span", "splitAt", "sqrt", "subtract", "succ", "sum", - "tail", "take", "takeWhile", "tan", "tanh", "toEnum", "toInteger", - "toRational", "truncate", "uncurry", "undefined", "unlines", "until", - "unwords", "unzip", "unzip3", "userError", "words", "writeFile", "zip", - "zip3", "zipWith", "zipWith3"); - - var override = modeConfig.overrideKeywords; - if (override) for (var word in override) if (override.hasOwnProperty(word)) - wkw[word] = override[word]; - - return wkw; - })(); - - - - return { - startState: function () { return { f: normal }; }, - copyState: function (s) { return { f: s.f }; }, - - token: function(stream, state) { - var t = state.f(stream, function(s) { state.f = s; }); - var w = stream.current(); - return wellKnownWords.hasOwnProperty(w) ? wellKnownWords[w] : t; - }, - - blockCommentStart: "{-", - blockCommentEnd: "-}", - lineComment: "--" - }; - -}); - -CodeMirror.defineMIME("text/x-haskell", "haskell"); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/haskell/index.html b/public/plugins/codemirror-5.17.0/mode/haskell/index.html deleted file mode 100644 index 42240b0f2..000000000 --- a/public/plugins/codemirror-5.17.0/mode/haskell/index.html +++ /dev/null @@ -1,73 +0,0 @@ - - -CodeMirror: Haskell mode - - - - - - - - - - - -
    -

    Haskell mode

    -
    - - - -

    MIME types defined: text/x-haskell.

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/haxe/haxe.js b/public/plugins/codemirror-5.17.0/mode/haxe/haxe.js deleted file mode 100644 index a9573dd71..000000000 --- a/public/plugins/codemirror-5.17.0/mode/haxe/haxe.js +++ /dev/null @@ -1,515 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("haxe", function(config, parserConfig) { - var indentUnit = config.indentUnit; - - // Tokenizer - - function kw(type) {return {type: type, style: "keyword"};} - var A = kw("keyword a"), B = kw("keyword b"), C = kw("keyword c"); - var operator = kw("operator"), atom = {type: "atom", style: "atom"}, attribute = {type:"attribute", style: "attribute"}; - var type = kw("typedef"); - var keywords = { - "if": A, "while": A, "else": B, "do": B, "try": B, - "return": C, "break": C, "continue": C, "new": C, "throw": C, - "var": kw("var"), "inline":attribute, "static": attribute, "using":kw("import"), - "public": attribute, "private": attribute, "cast": kw("cast"), "import": kw("import"), "macro": kw("macro"), - "function": kw("function"), "catch": kw("catch"), "untyped": kw("untyped"), "callback": kw("cb"), - "for": kw("for"), "switch": kw("switch"), "case": kw("case"), "default": kw("default"), - "in": operator, "never": kw("property_access"), "trace":kw("trace"), - "class": type, "abstract":type, "enum":type, "interface":type, "typedef":type, "extends":type, "implements":type, "dynamic":type, - "true": atom, "false": atom, "null": atom - }; - - var isOperatorChar = /[+\-*&%=<>!?|]/; - - function chain(stream, state, f) { - state.tokenize = f; - return f(stream, state); - } - - function toUnescaped(stream, end) { - var escaped = false, next; - while ((next = stream.next()) != null) { - if (next == end && !escaped) - return true; - escaped = !escaped && next == "\\"; - } - } - - // Used as scratch variables to communicate multiple values without - // consing up tons of objects. - var type, content; - function ret(tp, style, cont) { - type = tp; content = cont; - return style; - } - - function haxeTokenBase(stream, state) { - var ch = stream.next(); - if (ch == '"' || ch == "'") { - return chain(stream, state, haxeTokenString(ch)); - } else if (/[\[\]{}\(\),;\:\.]/.test(ch)) { - return ret(ch); - } else if (ch == "0" && stream.eat(/x/i)) { - stream.eatWhile(/[\da-f]/i); - return ret("number", "number"); - } else if (/\d/.test(ch) || ch == "-" && stream.eat(/\d/)) { - stream.match(/^\d*(?:\.\d*(?!\.))?(?:[eE][+\-]?\d+)?/); - return ret("number", "number"); - } else if (state.reAllowed && (ch == "~" && stream.eat(/\//))) { - toUnescaped(stream, "/"); - stream.eatWhile(/[gimsu]/); - return ret("regexp", "string-2"); - } else if (ch == "/") { - if (stream.eat("*")) { - return chain(stream, state, haxeTokenComment); - } else if (stream.eat("/")) { - stream.skipToEnd(); - return ret("comment", "comment"); - } else { - stream.eatWhile(isOperatorChar); - return ret("operator", null, stream.current()); - } - } else if (ch == "#") { - stream.skipToEnd(); - return ret("conditional", "meta"); - } else if (ch == "@") { - stream.eat(/:/); - stream.eatWhile(/[\w_]/); - return ret ("metadata", "meta"); - } else if (isOperatorChar.test(ch)) { - stream.eatWhile(isOperatorChar); - return ret("operator", null, stream.current()); - } else { - var word; - if(/[A-Z]/.test(ch)) { - stream.eatWhile(/[\w_<>]/); - word = stream.current(); - return ret("type", "variable-3", word); - } else { - stream.eatWhile(/[\w_]/); - var word = stream.current(), known = keywords.propertyIsEnumerable(word) && keywords[word]; - return (known && state.kwAllowed) ? ret(known.type, known.style, word) : - ret("variable", "variable", word); - } - } - } - - function haxeTokenString(quote) { - return function(stream, state) { - if (toUnescaped(stream, quote)) - state.tokenize = haxeTokenBase; - return ret("string", "string"); - }; - } - - function haxeTokenComment(stream, state) { - var maybeEnd = false, ch; - while (ch = stream.next()) { - if (ch == "/" && maybeEnd) { - state.tokenize = haxeTokenBase; - break; - } - maybeEnd = (ch == "*"); - } - return ret("comment", "comment"); - } - - // Parser - - var atomicTypes = {"atom": true, "number": true, "variable": true, "string": true, "regexp": true}; - - function HaxeLexical(indented, column, type, align, prev, info) { - this.indented = indented; - this.column = column; - this.type = type; - this.prev = prev; - this.info = info; - if (align != null) this.align = align; - } - - function inScope(state, varname) { - for (var v = state.localVars; v; v = v.next) - if (v.name == varname) return true; - } - - function parseHaxe(state, style, type, content, stream) { - var cc = state.cc; - // Communicate our context to the combinators. - // (Less wasteful than consing up a hundred closures on every call.) - cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc; - - if (!state.lexical.hasOwnProperty("align")) - state.lexical.align = true; - - while(true) { - var combinator = cc.length ? cc.pop() : statement; - if (combinator(type, content)) { - while(cc.length && cc[cc.length - 1].lex) - cc.pop()(); - if (cx.marked) return cx.marked; - if (type == "variable" && inScope(state, content)) return "variable-2"; - if (type == "variable" && imported(state, content)) return "variable-3"; - return style; - } - } - } - - function imported(state, typename) { - if (/[a-z]/.test(typename.charAt(0))) - return false; - var len = state.importedtypes.length; - for (var i = 0; i= 0; i--) cx.cc.push(arguments[i]); - } - function cont() { - pass.apply(null, arguments); - return true; - } - function inList(name, list) { - for (var v = list; v; v = v.next) - if (v.name == name) return true; - return false; - } - function register(varname) { - var state = cx.state; - if (state.context) { - cx.marked = "def"; - if (inList(varname, state.localVars)) return; - state.localVars = {name: varname, next: state.localVars}; - } else if (state.globalVars) { - if (inList(varname, state.globalVars)) return; - state.globalVars = {name: varname, next: state.globalVars}; - } - } - - // Combinators - - var defaultVars = {name: "this", next: null}; - function pushcontext() { - if (!cx.state.context) cx.state.localVars = defaultVars; - cx.state.context = {prev: cx.state.context, vars: cx.state.localVars}; - } - function popcontext() { - cx.state.localVars = cx.state.context.vars; - cx.state.context = cx.state.context.prev; - } - popcontext.lex = true; - function pushlex(type, info) { - var result = function() { - var state = cx.state; - state.lexical = new HaxeLexical(state.indented, cx.stream.column(), type, null, state.lexical, info); - }; - result.lex = true; - return result; - } - function poplex() { - var state = cx.state; - if (state.lexical.prev) { - if (state.lexical.type == ")") - state.indented = state.lexical.indented; - state.lexical = state.lexical.prev; - } - } - poplex.lex = true; - - function expect(wanted) { - function f(type) { - if (type == wanted) return cont(); - else if (wanted == ";") return pass(); - else return cont(f); - } - return f; - } - - function statement(type) { - if (type == "@") return cont(metadef); - if (type == "var") return cont(pushlex("vardef"), vardef1, expect(";"), poplex); - if (type == "keyword a") return cont(pushlex("form"), expression, statement, poplex); - if (type == "keyword b") return cont(pushlex("form"), statement, poplex); - if (type == "{") return cont(pushlex("}"), pushcontext, block, poplex, popcontext); - if (type == ";") return cont(); - if (type == "attribute") return cont(maybeattribute); - if (type == "function") return cont(functiondef); - if (type == "for") return cont(pushlex("form"), expect("("), pushlex(")"), forspec1, expect(")"), - poplex, statement, poplex); - if (type == "variable") return cont(pushlex("stat"), maybelabel); - if (type == "switch") return cont(pushlex("form"), expression, pushlex("}", "switch"), expect("{"), - block, poplex, poplex); - if (type == "case") return cont(expression, expect(":")); - if (type == "default") return cont(expect(":")); - if (type == "catch") return cont(pushlex("form"), pushcontext, expect("("), funarg, expect(")"), - statement, poplex, popcontext); - if (type == "import") return cont(importdef, expect(";")); - if (type == "typedef") return cont(typedef); - return pass(pushlex("stat"), expression, expect(";"), poplex); - } - function expression(type) { - if (atomicTypes.hasOwnProperty(type)) return cont(maybeoperator); - if (type == "type" ) return cont(maybeoperator); - if (type == "function") return cont(functiondef); - if (type == "keyword c") return cont(maybeexpression); - if (type == "(") return cont(pushlex(")"), maybeexpression, expect(")"), poplex, maybeoperator); - if (type == "operator") return cont(expression); - if (type == "[") return cont(pushlex("]"), commasep(maybeexpression, "]"), poplex, maybeoperator); - if (type == "{") return cont(pushlex("}"), commasep(objprop, "}"), poplex, maybeoperator); - return cont(); - } - function maybeexpression(type) { - if (type.match(/[;\}\)\],]/)) return pass(); - return pass(expression); - } - - function maybeoperator(type, value) { - if (type == "operator" && /\+\+|--/.test(value)) return cont(maybeoperator); - if (type == "operator" || type == ":") return cont(expression); - if (type == ";") return; - if (type == "(") return cont(pushlex(")"), commasep(expression, ")"), poplex, maybeoperator); - if (type == ".") return cont(property, maybeoperator); - if (type == "[") return cont(pushlex("]"), expression, expect("]"), poplex, maybeoperator); - } - - function maybeattribute(type) { - if (type == "attribute") return cont(maybeattribute); - if (type == "function") return cont(functiondef); - if (type == "var") return cont(vardef1); - } - - function metadef(type) { - if(type == ":") return cont(metadef); - if(type == "variable") return cont(metadef); - if(type == "(") return cont(pushlex(")"), commasep(metaargs, ")"), poplex, statement); - } - function metaargs(type) { - if(type == "variable") return cont(); - } - - function importdef (type, value) { - if(type == "variable" && /[A-Z]/.test(value.charAt(0))) { registerimport(value); return cont(); } - else if(type == "variable" || type == "property" || type == "." || value == "*") return cont(importdef); - } - - function typedef (type, value) - { - if(type == "variable" && /[A-Z]/.test(value.charAt(0))) { registerimport(value); return cont(); } - else if (type == "type" && /[A-Z]/.test(value.charAt(0))) { return cont(); } - } - - function maybelabel(type) { - if (type == ":") return cont(poplex, statement); - return pass(maybeoperator, expect(";"), poplex); - } - function property(type) { - if (type == "variable") {cx.marked = "property"; return cont();} - } - function objprop(type) { - if (type == "variable") cx.marked = "property"; - if (atomicTypes.hasOwnProperty(type)) return cont(expect(":"), expression); - } - function commasep(what, end) { - function proceed(type) { - if (type == ",") return cont(what, proceed); - if (type == end) return cont(); - return cont(expect(end)); - } - return function(type) { - if (type == end) return cont(); - else return pass(what, proceed); - }; - } - function block(type) { - if (type == "}") return cont(); - return pass(statement, block); - } - function vardef1(type, value) { - if (type == "variable"){register(value); return cont(typeuse, vardef2);} - return cont(); - } - function vardef2(type, value) { - if (value == "=") return cont(expression, vardef2); - if (type == ",") return cont(vardef1); - } - function forspec1(type, value) { - if (type == "variable") { - register(value); - return cont(forin, expression) - } else { - return pass() - } - } - function forin(_type, value) { - if (value == "in") return cont(); - } - function functiondef(type, value) { - //function names starting with upper-case letters are recognised as types, so cludging them together here. - if (type == "variable" || type == "type") {register(value); return cont(functiondef);} - if (value == "new") return cont(functiondef); - if (type == "(") return cont(pushlex(")"), pushcontext, commasep(funarg, ")"), poplex, typeuse, statement, popcontext); - } - function typeuse(type) { - if(type == ":") return cont(typestring); - } - function typestring(type) { - if(type == "type") return cont(); - if(type == "variable") return cont(); - if(type == "{") return cont(pushlex("}"), commasep(typeprop, "}"), poplex); - } - function typeprop(type) { - if(type == "variable") return cont(typeuse); - } - function funarg(type, value) { - if (type == "variable") {register(value); return cont(typeuse);} - } - - // Interface - return { - startState: function(basecolumn) { - var defaulttypes = ["Int", "Float", "String", "Void", "Std", "Bool", "Dynamic", "Array"]; - var state = { - tokenize: haxeTokenBase, - reAllowed: true, - kwAllowed: true, - cc: [], - lexical: new HaxeLexical((basecolumn || 0) - indentUnit, 0, "block", false), - localVars: parserConfig.localVars, - importedtypes: defaulttypes, - context: parserConfig.localVars && {vars: parserConfig.localVars}, - indented: 0 - }; - if (parserConfig.globalVars && typeof parserConfig.globalVars == "object") - state.globalVars = parserConfig.globalVars; - return state; - }, - - token: function(stream, state) { - if (stream.sol()) { - if (!state.lexical.hasOwnProperty("align")) - state.lexical.align = false; - state.indented = stream.indentation(); - } - if (stream.eatSpace()) return null; - var style = state.tokenize(stream, state); - if (type == "comment") return style; - state.reAllowed = !!(type == "operator" || type == "keyword c" || type.match(/^[\[{}\(,;:]$/)); - state.kwAllowed = type != '.'; - return parseHaxe(state, style, type, content, stream); - }, - - indent: function(state, textAfter) { - if (state.tokenize != haxeTokenBase) return 0; - var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical; - if (lexical.type == "stat" && firstChar == "}") lexical = lexical.prev; - var type = lexical.type, closing = firstChar == type; - if (type == "vardef") return lexical.indented + 4; - else if (type == "form" && firstChar == "{") return lexical.indented; - else if (type == "stat" || type == "form") return lexical.indented + indentUnit; - else if (lexical.info == "switch" && !closing) - return lexical.indented + (/^(?:case|default)\b/.test(textAfter) ? indentUnit : 2 * indentUnit); - else if (lexical.align) return lexical.column + (closing ? 0 : 1); - else return lexical.indented + (closing ? 0 : indentUnit); - }, - - electricChars: "{}", - blockCommentStart: "/*", - blockCommentEnd: "*/", - lineComment: "//" - }; -}); - -CodeMirror.defineMIME("text/x-haxe", "haxe"); - -CodeMirror.defineMode("hxml", function () { - - return { - startState: function () { - return { - define: false, - inString: false - }; - }, - token: function (stream, state) { - var ch = stream.peek(); - var sol = stream.sol(); - - ///* comments */ - if (ch == "#") { - stream.skipToEnd(); - return "comment"; - } - if (sol && ch == "-") { - var style = "variable-2"; - - stream.eat(/-/); - - if (stream.peek() == "-") { - stream.eat(/-/); - style = "keyword a"; - } - - if (stream.peek() == "D") { - stream.eat(/[D]/); - style = "keyword c"; - state.define = true; - } - - stream.eatWhile(/[A-Z]/i); - return style; - } - - var ch = stream.peek(); - - if (state.inString == false && ch == "'") { - state.inString = true; - ch = stream.next(); - } - - if (state.inString == true) { - if (stream.skipTo("'")) { - - } else { - stream.skipToEnd(); - } - - if (stream.peek() == "'") { - stream.next(); - state.inString = false; - } - - return "string"; - } - - stream.next(); - return null; - }, - lineComment: "#" - }; -}); - -CodeMirror.defineMIME("text/x-hxml", "hxml"); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/haxe/index.html b/public/plugins/codemirror-5.17.0/mode/haxe/index.html deleted file mode 100644 index d415b5e10..000000000 --- a/public/plugins/codemirror-5.17.0/mode/haxe/index.html +++ /dev/null @@ -1,124 +0,0 @@ - - -CodeMirror: Haxe mode - - - - - - - - - -
    -

    Haxe mode

    - - -

    - -

    Hxml mode:

    - -

    -
    - - - -

    MIME types defined: text/x-haxe, text/x-hxml.

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/htmlembedded/htmlembedded.js b/public/plugins/codemirror-5.17.0/mode/htmlembedded/htmlembedded.js deleted file mode 100644 index 464dc57f8..000000000 --- a/public/plugins/codemirror-5.17.0/mode/htmlembedded/htmlembedded.js +++ /dev/null @@ -1,28 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed"), - require("../../addon/mode/multiplex")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../htmlmixed/htmlmixed", - "../../addon/mode/multiplex"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - CodeMirror.defineMode("htmlembedded", function(config, parserConfig) { - return CodeMirror.multiplexingMode(CodeMirror.getMode(config, "htmlmixed"), { - open: parserConfig.open || parserConfig.scriptStartRegex || "<%", - close: parserConfig.close || parserConfig.scriptEndRegex || "%>", - mode: CodeMirror.getMode(config, parserConfig.scriptingModeSpec) - }); - }, "htmlmixed"); - - CodeMirror.defineMIME("application/x-ejs", {name: "htmlembedded", scriptingModeSpec:"javascript"}); - CodeMirror.defineMIME("application/x-aspx", {name: "htmlembedded", scriptingModeSpec:"text/x-csharp"}); - CodeMirror.defineMIME("application/x-jsp", {name: "htmlembedded", scriptingModeSpec:"text/x-java"}); - CodeMirror.defineMIME("application/x-erb", {name: "htmlembedded", scriptingModeSpec:"ruby"}); -}); diff --git a/public/plugins/codemirror-5.17.0/mode/htmlembedded/index.html b/public/plugins/codemirror-5.17.0/mode/htmlembedded/index.html deleted file mode 100644 index 9ed33cffe..000000000 --- a/public/plugins/codemirror-5.17.0/mode/htmlembedded/index.html +++ /dev/null @@ -1,60 +0,0 @@ - - -CodeMirror: Html Embedded Scripts mode - - - - - - - - - - - - - - -
    -

    Html Embedded Scripts mode

    -
    - - - -

    Mode for html embedded scripts like JSP and ASP.NET. Depends on multiplex and HtmlMixed which in turn depends on - JavaScript, CSS and XML.
    Other dependencies include those of the scripting language chosen.

    - -

    MIME types defined: application/x-aspx (ASP.NET), - application/x-ejs (Embedded Javascript), application/x-jsp (JavaServer Pages) - and application/x-erb

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/htmlmixed/htmlmixed.js b/public/plugins/codemirror-5.17.0/mode/htmlmixed/htmlmixed.js deleted file mode 100644 index d74083ee1..000000000 --- a/public/plugins/codemirror-5.17.0/mode/htmlmixed/htmlmixed.js +++ /dev/null @@ -1,152 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror"), require("../xml/xml"), require("../javascript/javascript"), require("../css/css")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../xml/xml", "../javascript/javascript", "../css/css"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - var defaultTags = { - script: [ - ["lang", /(javascript|babel)/i, "javascript"], - ["type", /^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^$/i, "javascript"], - ["type", /./, "text/plain"], - [null, null, "javascript"] - ], - style: [ - ["lang", /^css$/i, "css"], - ["type", /^(text\/)?(x-)?(stylesheet|css)$/i, "css"], - ["type", /./, "text/plain"], - [null, null, "css"] - ] - }; - - function maybeBackup(stream, pat, style) { - var cur = stream.current(), close = cur.search(pat); - if (close > -1) { - stream.backUp(cur.length - close); - } else if (cur.match(/<\/?$/)) { - stream.backUp(cur.length); - if (!stream.match(pat, false)) stream.match(cur); - } - return style; - } - - var attrRegexpCache = {}; - function getAttrRegexp(attr) { - var regexp = attrRegexpCache[attr]; - if (regexp) return regexp; - return attrRegexpCache[attr] = new RegExp("\\s+" + attr + "\\s*=\\s*('|\")?([^'\"]+)('|\")?\\s*"); - } - - function getAttrValue(text, attr) { - var match = text.match(getAttrRegexp(attr)) - return match ? match[2] : "" - } - - function getTagRegexp(tagName, anchored) { - return new RegExp((anchored ? "^" : "") + "<\/\s*" + tagName + "\s*>", "i"); - } - - function addTags(from, to) { - for (var tag in from) { - var dest = to[tag] || (to[tag] = []); - var source = from[tag]; - for (var i = source.length - 1; i >= 0; i--) - dest.unshift(source[i]) - } - } - - function findMatchingMode(tagInfo, tagText) { - for (var i = 0; i < tagInfo.length; i++) { - var spec = tagInfo[i]; - if (!spec[0] || spec[1].test(getAttrValue(tagText, spec[0]))) return spec[2]; - } - } - - CodeMirror.defineMode("htmlmixed", function (config, parserConfig) { - var htmlMode = CodeMirror.getMode(config, { - name: "xml", - htmlMode: true, - multilineTagIndentFactor: parserConfig.multilineTagIndentFactor, - multilineTagIndentPastTag: parserConfig.multilineTagIndentPastTag - }); - - var tags = {}; - var configTags = parserConfig && parserConfig.tags, configScript = parserConfig && parserConfig.scriptTypes; - addTags(defaultTags, tags); - if (configTags) addTags(configTags, tags); - if (configScript) for (var i = configScript.length - 1; i >= 0; i--) - tags.script.unshift(["type", configScript[i].matches, configScript[i].mode]) - - function html(stream, state) { - var style = htmlMode.token(stream, state.htmlState), tag = /\btag\b/.test(style), tagName - if (tag && !/[<>\s\/]/.test(stream.current()) && - (tagName = state.htmlState.tagName && state.htmlState.tagName.toLowerCase()) && - tags.hasOwnProperty(tagName)) { - state.inTag = tagName + " " - } else if (state.inTag && tag && />$/.test(stream.current())) { - var inTag = /^([\S]+) (.*)/.exec(state.inTag) - state.inTag = null - var modeSpec = stream.current() == ">" && findMatchingMode(tags[inTag[1]], inTag[2]) - var mode = CodeMirror.getMode(config, modeSpec) - var endTagA = getTagRegexp(inTag[1], true), endTag = getTagRegexp(inTag[1], false); - state.token = function (stream, state) { - if (stream.match(endTagA, false)) { - state.token = html; - state.localState = state.localMode = null; - return null; - } - return maybeBackup(stream, endTag, state.localMode.token(stream, state.localState)); - }; - state.localMode = mode; - state.localState = CodeMirror.startState(mode, htmlMode.indent(state.htmlState, "")); - } else if (state.inTag) { - state.inTag += stream.current() - if (stream.eol()) state.inTag += " " - } - return style; - }; - - return { - startState: function () { - var state = CodeMirror.startState(htmlMode); - return {token: html, inTag: null, localMode: null, localState: null, htmlState: state}; - }, - - copyState: function (state) { - var local; - if (state.localState) { - local = CodeMirror.copyState(state.localMode, state.localState); - } - return {token: state.token, inTag: state.inTag, - localMode: state.localMode, localState: local, - htmlState: CodeMirror.copyState(htmlMode, state.htmlState)}; - }, - - token: function (stream, state) { - return state.token(stream, state); - }, - - indent: function (state, textAfter) { - if (!state.localMode || /^\s*<\//.test(textAfter)) - return htmlMode.indent(state.htmlState, textAfter); - else if (state.localMode.indent) - return state.localMode.indent(state.localState, textAfter); - else - return CodeMirror.Pass; - }, - - innerMode: function (state) { - return {state: state.localState || state.htmlState, mode: state.localMode || htmlMode}; - } - }; - }, "xml", "javascript", "css"); - - CodeMirror.defineMIME("text/html", "htmlmixed"); -}); diff --git a/public/plugins/codemirror-5.17.0/mode/htmlmixed/index.html b/public/plugins/codemirror-5.17.0/mode/htmlmixed/index.html deleted file mode 100644 index f94df9e21..000000000 --- a/public/plugins/codemirror-5.17.0/mode/htmlmixed/index.html +++ /dev/null @@ -1,89 +0,0 @@ - - -CodeMirror: HTML mixed mode - - - - - - - - - - - - - - -
    -

    HTML mixed mode

    -
    - - -

    The HTML mixed mode depends on the XML, JavaScript, and CSS modes.

    - -

    It takes an optional mode configuration - option, scriptTypes, which can be used to add custom - behavior for specific <script type="..."> tags. If - given, it should hold an array of {matches, mode} - objects, where matches is a string or regexp that - matches the script type, and mode is - either null, for script types that should stay in - HTML mode, or a mode - spec corresponding to the mode that should be used for the - script.

    - -

    MIME types defined: text/html - (redefined, only takes effect if you load this parser after the - XML parser).

    - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/http/http.js b/public/plugins/codemirror-5.17.0/mode/http/http.js deleted file mode 100644 index 9a3c5f9fd..000000000 --- a/public/plugins/codemirror-5.17.0/mode/http/http.js +++ /dev/null @@ -1,113 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("http", function() { - function failFirstLine(stream, state) { - stream.skipToEnd(); - state.cur = header; - return "error"; - } - - function start(stream, state) { - if (stream.match(/^HTTP\/\d\.\d/)) { - state.cur = responseStatusCode; - return "keyword"; - } else if (stream.match(/^[A-Z]+/) && /[ \t]/.test(stream.peek())) { - state.cur = requestPath; - return "keyword"; - } else { - return failFirstLine(stream, state); - } - } - - function responseStatusCode(stream, state) { - var code = stream.match(/^\d+/); - if (!code) return failFirstLine(stream, state); - - state.cur = responseStatusText; - var status = Number(code[0]); - if (status >= 100 && status < 200) { - return "positive informational"; - } else if (status >= 200 && status < 300) { - return "positive success"; - } else if (status >= 300 && status < 400) { - return "positive redirect"; - } else if (status >= 400 && status < 500) { - return "negative client-error"; - } else if (status >= 500 && status < 600) { - return "negative server-error"; - } else { - return "error"; - } - } - - function responseStatusText(stream, state) { - stream.skipToEnd(); - state.cur = header; - return null; - } - - function requestPath(stream, state) { - stream.eatWhile(/\S/); - state.cur = requestProtocol; - return "string-2"; - } - - function requestProtocol(stream, state) { - if (stream.match(/^HTTP\/\d\.\d$/)) { - state.cur = header; - return "keyword"; - } else { - return failFirstLine(stream, state); - } - } - - function header(stream) { - if (stream.sol() && !stream.eat(/[ \t]/)) { - if (stream.match(/^.*?:/)) { - return "atom"; - } else { - stream.skipToEnd(); - return "error"; - } - } else { - stream.skipToEnd(); - return "string"; - } - } - - function body(stream) { - stream.skipToEnd(); - return null; - } - - return { - token: function(stream, state) { - var cur = state.cur; - if (cur != header && cur != body && stream.eatSpace()) return null; - return cur(stream, state); - }, - - blankLine: function(state) { - state.cur = body; - }, - - startState: function() { - return {cur: start}; - } - }; -}); - -CodeMirror.defineMIME("message/http", "http"); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/http/index.html b/public/plugins/codemirror-5.17.0/mode/http/index.html deleted file mode 100644 index 0b8d5315d..000000000 --- a/public/plugins/codemirror-5.17.0/mode/http/index.html +++ /dev/null @@ -1,45 +0,0 @@ - - -CodeMirror: HTTP mode - - - - - - - - - -
    -

    HTTP mode

    - - -
    - - - -

    MIME types defined: message/http.

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/idl/idl.js b/public/plugins/codemirror-5.17.0/mode/idl/idl.js deleted file mode 100644 index 07308d71d..000000000 --- a/public/plugins/codemirror-5.17.0/mode/idl/idl.js +++ /dev/null @@ -1,290 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - function wordRegexp(words) { - return new RegExp('^((' + words.join(')|(') + '))\\b', 'i'); - }; - - var builtinArray = [ - 'a_correlate', 'abs', 'acos', 'adapt_hist_equal', 'alog', - 'alog2', 'alog10', 'amoeba', 'annotate', 'app_user_dir', - 'app_user_dir_query', 'arg_present', 'array_equal', 'array_indices', - 'arrow', 'ascii_template', 'asin', 'assoc', 'atan', - 'axis', 'axis', 'bandpass_filter', 'bandreject_filter', 'barplot', - 'bar_plot', 'beseli', 'beselj', 'beselk', 'besely', - 'beta', 'biginteger', 'bilinear', 'bin_date', 'binary_template', - 'bindgen', 'binomial', 'bit_ffs', 'bit_population', 'blas_axpy', - 'blk_con', 'boolarr', 'boolean', 'boxplot', 'box_cursor', - 'breakpoint', 'broyden', 'bubbleplot', 'butterworth', 'bytarr', - 'byte', 'byteorder', 'bytscl', 'c_correlate', 'calendar', - 'caldat', 'call_external', 'call_function', 'call_method', - 'call_procedure', 'canny', 'catch', 'cd', 'cdf', 'ceil', - 'chebyshev', 'check_math', 'chisqr_cvf', 'chisqr_pdf', 'choldc', - 'cholsol', 'cindgen', 'cir_3pnt', 'clipboard', 'close', - 'clust_wts', 'cluster', 'cluster_tree', 'cmyk_convert', 'code_coverage', - 'color_convert', 'color_exchange', 'color_quan', 'color_range_map', - 'colorbar', 'colorize_sample', 'colormap_applicable', - 'colormap_gradient', 'colormap_rotation', 'colortable', - 'comfit', 'command_line_args', 'common', 'compile_opt', 'complex', - 'complexarr', 'complexround', 'compute_mesh_normals', 'cond', 'congrid', - 'conj', 'constrained_min', 'contour', 'contour', 'convert_coord', - 'convol', 'convol_fft', 'coord2to3', 'copy_lun', 'correlate', - 'cos', 'cosh', 'cpu', 'cramer', 'createboxplotdata', - 'create_cursor', 'create_struct', 'create_view', 'crossp', 'crvlength', - 'ct_luminance', 'cti_test', 'cursor', 'curvefit', 'cv_coord', - 'cvttobm', 'cw_animate', 'cw_animate_getp', 'cw_animate_load', - 'cw_animate_run', 'cw_arcball', 'cw_bgroup', 'cw_clr_index', - 'cw_colorsel', 'cw_defroi', 'cw_field', 'cw_filesel', 'cw_form', - 'cw_fslider', 'cw_light_editor', 'cw_light_editor_get', - 'cw_light_editor_set', 'cw_orient', 'cw_palette_editor', - 'cw_palette_editor_get', 'cw_palette_editor_set', 'cw_pdmenu', - 'cw_rgbslider', 'cw_tmpl', 'cw_zoom', 'db_exists', - 'dblarr', 'dcindgen', 'dcomplex', 'dcomplexarr', 'define_key', - 'define_msgblk', 'define_msgblk_from_file', 'defroi', 'defsysv', - 'delvar', 'dendro_plot', 'dendrogram', 'deriv', 'derivsig', - 'determ', 'device', 'dfpmin', 'diag_matrix', 'dialog_dbconnect', - 'dialog_message', 'dialog_pickfile', 'dialog_printersetup', - 'dialog_printjob', 'dialog_read_image', - 'dialog_write_image', 'dictionary', 'digital_filter', 'dilate', 'dindgen', - 'dissolve', 'dist', 'distance_measure', 'dlm_load', 'dlm_register', - 'doc_library', 'double', 'draw_roi', 'edge_dog', 'efont', - 'eigenql', 'eigenvec', 'ellipse', 'elmhes', 'emboss', - 'empty', 'enable_sysrtn', 'eof', 'eos', 'erase', - 'erf', 'erfc', 'erfcx', 'erode', 'errorplot', - 'errplot', 'estimator_filter', 'execute', 'exit', 'exp', - 'expand', 'expand_path', 'expint', 'extrac', 'extract_slice', - 'f_cvf', 'f_pdf', 'factorial', 'fft', 'file_basename', - 'file_chmod', 'file_copy', 'file_delete', 'file_dirname', - 'file_expand_path', 'file_gunzip', 'file_gzip', 'file_info', - 'file_lines', 'file_link', 'file_mkdir', 'file_move', - 'file_poll_input', 'file_readlink', 'file_same', - 'file_search', 'file_tar', 'file_test', 'file_untar', 'file_unzip', - 'file_which', 'file_zip', 'filepath', 'findgen', 'finite', - 'fix', 'flick', 'float', 'floor', 'flow3', - 'fltarr', 'flush', 'format_axis_values', 'forward_function', 'free_lun', - 'fstat', 'fulstr', 'funct', 'function', 'fv_test', - 'fx_root', 'fz_roots', 'gamma', 'gamma_ct', 'gauss_cvf', - 'gauss_pdf', 'gauss_smooth', 'gauss2dfit', 'gaussfit', - 'gaussian_function', 'gaussint', 'get_drive_list', 'get_dxf_objects', - 'get_kbrd', 'get_login_info', - 'get_lun', 'get_screen_size', 'getenv', 'getwindows', 'greg2jul', - 'grib', 'grid_input', 'grid_tps', 'grid3', 'griddata', - 'gs_iter', 'h_eq_ct', 'h_eq_int', 'hanning', 'hash', - 'hdf', 'hdf5', 'heap_free', 'heap_gc', 'heap_nosave', - 'heap_refcount', 'heap_save', 'help', 'hilbert', 'hist_2d', - 'hist_equal', 'histogram', 'hls', 'hough', 'hqr', - 'hsv', 'i18n_multibytetoutf8', - 'i18n_multibytetowidechar', 'i18n_utf8tomultibyte', - 'i18n_widechartomultibyte', - 'ibeta', 'icontour', 'iconvertcoord', 'idelete', 'identity', - 'idl_base64', 'idl_container', 'idl_validname', - 'idlexbr_assistant', 'idlitsys_createtool', - 'idlunit', 'iellipse', 'igamma', 'igetcurrent', 'igetdata', - 'igetid', 'igetproperty', 'iimage', 'image', 'image_cont', - 'image_statistics', 'image_threshold', 'imaginary', 'imap', 'indgen', - 'int_2d', 'int_3d', 'int_tabulated', 'intarr', 'interpol', - 'interpolate', 'interval_volume', 'invert', 'ioctl', 'iopen', - 'ir_filter', 'iplot', 'ipolygon', 'ipolyline', 'iputdata', - 'iregister', 'ireset', 'iresolve', 'irotate', 'isa', - 'isave', 'iscale', 'isetcurrent', 'isetproperty', 'ishft', - 'isocontour', 'isosurface', 'isurface', 'itext', 'itranslate', - 'ivector', 'ivolume', 'izoom', 'journal', 'json_parse', - 'json_serialize', 'jul2greg', 'julday', 'keyword_set', 'krig2d', - 'kurtosis', 'kw_test', 'l64indgen', 'la_choldc', 'la_cholmprove', - 'la_cholsol', 'la_determ', 'la_eigenproblem', 'la_eigenql', 'la_eigenvec', - 'la_elmhes', 'la_gm_linear_model', 'la_hqr', 'la_invert', - 'la_least_square_equality', 'la_least_squares', 'la_linear_equation', - 'la_ludc', 'la_lumprove', 'la_lusol', - 'la_svd', 'la_tridc', 'la_trimprove', 'la_triql', 'la_trired', - 'la_trisol', 'label_date', 'label_region', 'ladfit', 'laguerre', - 'lambda', 'lambdap', 'lambertw', 'laplacian', 'least_squares_filter', - 'leefilt', 'legend', 'legendre', 'linbcg', 'lindgen', - 'linfit', 'linkimage', 'list', 'll_arc_distance', 'lmfit', - 'lmgr', 'lngamma', 'lnp_test', 'loadct', 'locale_get', - 'logical_and', 'logical_or', 'logical_true', 'lon64arr', 'lonarr', - 'long', 'long64', 'lsode', 'lu_complex', 'ludc', - 'lumprove', 'lusol', 'm_correlate', 'machar', 'make_array', - 'make_dll', 'make_rt', 'map', 'mapcontinents', 'mapgrid', - 'map_2points', 'map_continents', 'map_grid', 'map_image', 'map_patch', - 'map_proj_forward', 'map_proj_image', 'map_proj_info', - 'map_proj_init', 'map_proj_inverse', - 'map_set', 'matrix_multiply', 'matrix_power', 'max', 'md_test', - 'mean', 'meanabsdev', 'mean_filter', 'median', 'memory', - 'mesh_clip', 'mesh_decimate', 'mesh_issolid', - 'mesh_merge', 'mesh_numtriangles', - 'mesh_obj', 'mesh_smooth', 'mesh_surfacearea', - 'mesh_validate', 'mesh_volume', - 'message', 'min', 'min_curve_surf', 'mk_html_help', 'modifyct', - 'moment', 'morph_close', 'morph_distance', - 'morph_gradient', 'morph_hitormiss', - 'morph_open', 'morph_thin', 'morph_tophat', 'multi', 'n_elements', - 'n_params', 'n_tags', 'ncdf', 'newton', 'noise_hurl', - 'noise_pick', 'noise_scatter', 'noise_slur', 'norm', 'obj_class', - 'obj_destroy', 'obj_hasmethod', 'obj_isa', 'obj_new', 'obj_valid', - 'objarr', 'on_error', 'on_ioerror', 'online_help', 'openr', - 'openu', 'openw', 'oplot', 'oploterr', 'orderedhash', - 'p_correlate', 'parse_url', 'particle_trace', 'path_cache', 'path_sep', - 'pcomp', 'plot', 'plot3d', 'plot', 'plot_3dbox', - 'plot_field', 'ploterr', 'plots', 'polar_contour', 'polar_surface', - 'polyfill', 'polyshade', 'pnt_line', 'point_lun', 'polarplot', - 'poly', 'poly_2d', 'poly_area', 'poly_fit', 'polyfillv', - 'polygon', 'polyline', 'polywarp', 'popd', 'powell', - 'pref_commit', 'pref_get', 'pref_set', 'prewitt', 'primes', - 'print', 'printf', 'printd', 'pro', 'product', - 'profile', 'profiler', 'profiles', 'project_vol', 'ps_show_fonts', - 'psafm', 'pseudo', 'ptr_free', 'ptr_new', 'ptr_valid', - 'ptrarr', 'pushd', 'qgrid3', 'qhull', 'qromb', - 'qromo', 'qsimp', 'query_*', 'query_ascii', 'query_bmp', - 'query_csv', 'query_dicom', 'query_gif', 'query_image', 'query_jpeg', - 'query_jpeg2000', 'query_mrsid', 'query_pict', 'query_png', 'query_ppm', - 'query_srf', 'query_tiff', 'query_video', 'query_wav', 'r_correlate', - 'r_test', 'radon', 'randomn', 'randomu', 'ranks', - 'rdpix', 'read', 'readf', 'read_ascii', 'read_binary', - 'read_bmp', 'read_csv', 'read_dicom', 'read_gif', 'read_image', - 'read_interfile', 'read_jpeg', 'read_jpeg2000', 'read_mrsid', 'read_pict', - 'read_png', 'read_ppm', 'read_spr', 'read_srf', 'read_sylk', - 'read_tiff', 'read_video', 'read_wav', 'read_wave', 'read_x11_bitmap', - 'read_xwd', 'reads', 'readu', 'real_part', 'rebin', - 'recall_commands', 'recon3', 'reduce_colors', 'reform', 'region_grow', - 'register_cursor', 'regress', 'replicate', - 'replicate_inplace', 'resolve_all', - 'resolve_routine', 'restore', 'retall', 'return', 'reverse', - 'rk4', 'roberts', 'rot', 'rotate', 'round', - 'routine_filepath', 'routine_info', 'rs_test', 's_test', 'save', - 'savgol', 'scale3', 'scale3d', 'scatterplot', 'scatterplot3d', - 'scope_level', 'scope_traceback', 'scope_varfetch', - 'scope_varname', 'search2d', - 'search3d', 'sem_create', 'sem_delete', 'sem_lock', 'sem_release', - 'set_plot', 'set_shading', 'setenv', 'sfit', 'shade_surf', - 'shade_surf_irr', 'shade_volume', 'shift', 'shift_diff', 'shmdebug', - 'shmmap', 'shmunmap', 'shmvar', 'show3', 'showfont', - 'signum', 'simplex', 'sin', 'sindgen', 'sinh', - 'size', 'skewness', 'skip_lun', 'slicer3', 'slide_image', - 'smooth', 'sobel', 'socket', 'sort', 'spawn', - 'sph_4pnt', 'sph_scat', 'spher_harm', 'spl_init', 'spl_interp', - 'spline', 'spline_p', 'sprsab', 'sprsax', 'sprsin', - 'sprstp', 'sqrt', 'standardize', 'stddev', 'stop', - 'strarr', 'strcmp', 'strcompress', 'streamline', 'streamline', - 'stregex', 'stretch', 'string', 'strjoin', 'strlen', - 'strlowcase', 'strmatch', 'strmessage', 'strmid', 'strpos', - 'strput', 'strsplit', 'strtrim', 'struct_assign', 'struct_hide', - 'strupcase', 'surface', 'surface', 'surfr', 'svdc', - 'svdfit', 'svsol', 'swap_endian', 'swap_endian_inplace', 'symbol', - 'systime', 't_cvf', 't_pdf', 't3d', 'tag_names', - 'tan', 'tanh', 'tek_color', 'temporary', 'terminal_size', - 'tetra_clip', 'tetra_surface', 'tetra_volume', 'text', 'thin', - 'thread', 'threed', 'tic', 'time_test2', 'timegen', - 'timer', 'timestamp', 'timestamptovalues', 'tm_test', 'toc', - 'total', 'trace', 'transpose', 'tri_surf', 'triangulate', - 'trigrid', 'triql', 'trired', 'trisol', 'truncate_lun', - 'ts_coef', 'ts_diff', 'ts_fcast', 'ts_smooth', 'tv', - 'tvcrs', 'tvlct', 'tvrd', 'tvscl', 'typename', - 'uindgen', 'uint', 'uintarr', 'ul64indgen', 'ulindgen', - 'ulon64arr', 'ulonarr', 'ulong', 'ulong64', 'uniq', - 'unsharp_mask', 'usersym', 'value_locate', 'variance', 'vector', - 'vector_field', 'vel', 'velovect', 'vert_t3d', 'voigt', - 'volume', 'voronoi', 'voxel_proj', 'wait', 'warp_tri', - 'watershed', 'wdelete', 'wf_draw', 'where', 'widget_base', - 'widget_button', 'widget_combobox', 'widget_control', - 'widget_displaycontextmenu', 'widget_draw', - 'widget_droplist', 'widget_event', 'widget_info', - 'widget_label', 'widget_list', - 'widget_propertysheet', 'widget_slider', 'widget_tab', - 'widget_table', 'widget_text', - 'widget_tree', 'widget_tree_move', 'widget_window', - 'wiener_filter', 'window', - 'window', 'write_bmp', 'write_csv', 'write_gif', 'write_image', - 'write_jpeg', 'write_jpeg2000', 'write_nrif', 'write_pict', 'write_png', - 'write_ppm', 'write_spr', 'write_srf', 'write_sylk', 'write_tiff', - 'write_video', 'write_wav', 'write_wave', 'writeu', 'wset', - 'wshow', 'wtn', 'wv_applet', 'wv_cwt', 'wv_cw_wavelet', - 'wv_denoise', 'wv_dwt', 'wv_fn_coiflet', - 'wv_fn_daubechies', 'wv_fn_gaussian', - 'wv_fn_haar', 'wv_fn_morlet', 'wv_fn_paul', - 'wv_fn_symlet', 'wv_import_data', - 'wv_import_wavelet', 'wv_plot3d_wps', 'wv_plot_multires', - 'wv_pwt', 'wv_tool_denoise', - 'xbm_edit', 'xdisplayfile', 'xdxf', 'xfont', 'xinteranimate', - 'xloadct', 'xmanager', 'xmng_tmpl', 'xmtool', 'xobjview', - 'xobjview_rotate', 'xobjview_write_image', - 'xpalette', 'xpcolor', 'xplot3d', - 'xregistered', 'xroi', 'xsq_test', 'xsurface', 'xvaredit', - 'xvolume', 'xvolume_rotate', 'xvolume_write_image', - 'xyouts', 'zlib_compress', 'zlib_uncompress', 'zoom', 'zoom_24' - ]; - var builtins = wordRegexp(builtinArray); - - var keywordArray = [ - 'begin', 'end', 'endcase', 'endfor', - 'endwhile', 'endif', 'endrep', 'endforeach', - 'break', 'case', 'continue', 'for', - 'foreach', 'goto', 'if', 'then', 'else', - 'repeat', 'until', 'switch', 'while', - 'do', 'pro', 'function' - ]; - var keywords = wordRegexp(keywordArray); - - CodeMirror.registerHelper("hintWords", "idl", builtinArray.concat(keywordArray)); - - var identifiers = new RegExp('^[_a-z\xa1-\uffff][_a-z0-9\xa1-\uffff]*', 'i'); - - var singleOperators = /[+\-*&=<>\/@#~$]/; - var boolOperators = new RegExp('(and|or|eq|lt|le|gt|ge|ne|not)', 'i'); - - function tokenBase(stream) { - // whitespaces - if (stream.eatSpace()) return null; - - // Handle one line Comments - if (stream.match(';')) { - stream.skipToEnd(); - return 'comment'; - } - - // Handle Number Literals - if (stream.match(/^[0-9\.+-]/, false)) { - if (stream.match(/^[+-]?0x[0-9a-fA-F]+/)) - return 'number'; - if (stream.match(/^[+-]?\d*\.\d+([EeDd][+-]?\d+)?/)) - return 'number'; - if (stream.match(/^[+-]?\d+([EeDd][+-]?\d+)?/)) - return 'number'; - } - - // Handle Strings - if (stream.match(/^"([^"]|(""))*"/)) { return 'string'; } - if (stream.match(/^'([^']|(''))*'/)) { return 'string'; } - - // Handle words - if (stream.match(keywords)) { return 'keyword'; } - if (stream.match(builtins)) { return 'builtin'; } - if (stream.match(identifiers)) { return 'variable'; } - - if (stream.match(singleOperators) || stream.match(boolOperators)) { - return 'operator'; } - - // Handle non-detected items - stream.next(); - return null; - }; - - CodeMirror.defineMode('idl', function() { - return { - token: function(stream) { - return tokenBase(stream); - } - }; - }); - - CodeMirror.defineMIME('text/x-idl', 'idl'); -}); diff --git a/public/plugins/codemirror-5.17.0/mode/idl/index.html b/public/plugins/codemirror-5.17.0/mode/idl/index.html deleted file mode 100644 index 4c169e2d6..000000000 --- a/public/plugins/codemirror-5.17.0/mode/idl/index.html +++ /dev/null @@ -1,64 +0,0 @@ - - -CodeMirror: IDL mode - - - - - - - - - -
    -

    IDL mode

    - -
    - - -

    MIME types defined: text/x-idl.

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/index.html b/public/plugins/codemirror-5.17.0/mode/index.html deleted file mode 100644 index 732e0e52c..000000000 --- a/public/plugins/codemirror-5.17.0/mode/index.html +++ /dev/null @@ -1,164 +0,0 @@ - - -CodeMirror: Language Modes - - - - - -
    - -

    Language modes

    - -

    This is a list of every mode in the distribution. Each mode lives -in a subdirectory of the mode/ directory, and typically -defines a single JavaScript file that implements the mode. Loading -such file will make the language available to CodeMirror, through -the mode -option.

    - -
    - -
    - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/jade/index.html b/public/plugins/codemirror-5.17.0/mode/jade/index.html deleted file mode 100644 index e534981b2..000000000 --- a/public/plugins/codemirror-5.17.0/mode/jade/index.html +++ /dev/null @@ -1,70 +0,0 @@ - - -CodeMirror: Jade Templating Mode - - - - - - - - - - - - - -
    -

    Jade Templating Mode

    -
    - -

    The Jade Templating Mode

    -

    Created by Forbes Lindesay. Managed as part of a Brackets extension at https://github.com/ForbesLindesay/jade-brackets.

    -

    MIME type defined: text/x-jade.

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/jade/jade.js b/public/plugins/codemirror-5.17.0/mode/jade/jade.js deleted file mode 100644 index 51ed105ac..000000000 --- a/public/plugins/codemirror-5.17.0/mode/jade/jade.js +++ /dev/null @@ -1,590 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror"), require("../javascript/javascript"), require("../css/css"), require("../htmlmixed/htmlmixed")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../javascript/javascript", "../css/css", "../htmlmixed/htmlmixed"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode('jade', function (config) { - // token types - var KEYWORD = 'keyword'; - var DOCTYPE = 'meta'; - var ID = 'builtin'; - var CLASS = 'qualifier'; - - var ATTRS_NEST = { - '{': '}', - '(': ')', - '[': ']' - }; - - var jsMode = CodeMirror.getMode(config, 'javascript'); - - function State() { - this.javaScriptLine = false; - this.javaScriptLineExcludesColon = false; - - this.javaScriptArguments = false; - this.javaScriptArgumentsDepth = 0; - - this.isInterpolating = false; - this.interpolationNesting = 0; - - this.jsState = CodeMirror.startState(jsMode); - - this.restOfLine = ''; - - this.isIncludeFiltered = false; - this.isEach = false; - - this.lastTag = ''; - this.scriptType = ''; - - // Attributes Mode - this.isAttrs = false; - this.attrsNest = []; - this.inAttributeName = true; - this.attributeIsType = false; - this.attrValue = ''; - - // Indented Mode - this.indentOf = Infinity; - this.indentToken = ''; - - this.innerMode = null; - this.innerState = null; - - this.innerModeForLine = false; - } - /** - * Safely copy a state - * - * @return {State} - */ - State.prototype.copy = function () { - var res = new State(); - res.javaScriptLine = this.javaScriptLine; - res.javaScriptLineExcludesColon = this.javaScriptLineExcludesColon; - res.javaScriptArguments = this.javaScriptArguments; - res.javaScriptArgumentsDepth = this.javaScriptArgumentsDepth; - res.isInterpolating = this.isInterpolating; - res.interpolationNesting = this.interpolationNesting; - - res.jsState = CodeMirror.copyState(jsMode, this.jsState); - - res.innerMode = this.innerMode; - if (this.innerMode && this.innerState) { - res.innerState = CodeMirror.copyState(this.innerMode, this.innerState); - } - - res.restOfLine = this.restOfLine; - - res.isIncludeFiltered = this.isIncludeFiltered; - res.isEach = this.isEach; - res.lastTag = this.lastTag; - res.scriptType = this.scriptType; - res.isAttrs = this.isAttrs; - res.attrsNest = this.attrsNest.slice(); - res.inAttributeName = this.inAttributeName; - res.attributeIsType = this.attributeIsType; - res.attrValue = this.attrValue; - res.indentOf = this.indentOf; - res.indentToken = this.indentToken; - - res.innerModeForLine = this.innerModeForLine; - - return res; - }; - - function javaScript(stream, state) { - if (stream.sol()) { - // if javaScriptLine was set at end of line, ignore it - state.javaScriptLine = false; - state.javaScriptLineExcludesColon = false; - } - if (state.javaScriptLine) { - if (state.javaScriptLineExcludesColon && stream.peek() === ':') { - state.javaScriptLine = false; - state.javaScriptLineExcludesColon = false; - return; - } - var tok = jsMode.token(stream, state.jsState); - if (stream.eol()) state.javaScriptLine = false; - return tok || true; - } - } - function javaScriptArguments(stream, state) { - if (state.javaScriptArguments) { - if (state.javaScriptArgumentsDepth === 0 && stream.peek() !== '(') { - state.javaScriptArguments = false; - return; - } - if (stream.peek() === '(') { - state.javaScriptArgumentsDepth++; - } else if (stream.peek() === ')') { - state.javaScriptArgumentsDepth--; - } - if (state.javaScriptArgumentsDepth === 0) { - state.javaScriptArguments = false; - return; - } - - var tok = jsMode.token(stream, state.jsState); - return tok || true; - } - } - - function yieldStatement(stream) { - if (stream.match(/^yield\b/)) { - return 'keyword'; - } - } - - function doctype(stream) { - if (stream.match(/^(?:doctype) *([^\n]+)?/)) { - return DOCTYPE; - } - } - - function interpolation(stream, state) { - if (stream.match('#{')) { - state.isInterpolating = true; - state.interpolationNesting = 0; - return 'punctuation'; - } - } - - function interpolationContinued(stream, state) { - if (state.isInterpolating) { - if (stream.peek() === '}') { - state.interpolationNesting--; - if (state.interpolationNesting < 0) { - stream.next(); - state.isInterpolating = false; - return 'punctuation'; - } - } else if (stream.peek() === '{') { - state.interpolationNesting++; - } - return jsMode.token(stream, state.jsState) || true; - } - } - - function caseStatement(stream, state) { - if (stream.match(/^case\b/)) { - state.javaScriptLine = true; - return KEYWORD; - } - } - - function when(stream, state) { - if (stream.match(/^when\b/)) { - state.javaScriptLine = true; - state.javaScriptLineExcludesColon = true; - return KEYWORD; - } - } - - function defaultStatement(stream) { - if (stream.match(/^default\b/)) { - return KEYWORD; - } - } - - function extendsStatement(stream, state) { - if (stream.match(/^extends?\b/)) { - state.restOfLine = 'string'; - return KEYWORD; - } - } - - function append(stream, state) { - if (stream.match(/^append\b/)) { - state.restOfLine = 'variable'; - return KEYWORD; - } - } - function prepend(stream, state) { - if (stream.match(/^prepend\b/)) { - state.restOfLine = 'variable'; - return KEYWORD; - } - } - function block(stream, state) { - if (stream.match(/^block\b *(?:(prepend|append)\b)?/)) { - state.restOfLine = 'variable'; - return KEYWORD; - } - } - - function include(stream, state) { - if (stream.match(/^include\b/)) { - state.restOfLine = 'string'; - return KEYWORD; - } - } - - function includeFiltered(stream, state) { - if (stream.match(/^include:([a-zA-Z0-9\-]+)/, false) && stream.match('include')) { - state.isIncludeFiltered = true; - return KEYWORD; - } - } - - function includeFilteredContinued(stream, state) { - if (state.isIncludeFiltered) { - var tok = filter(stream, state); - state.isIncludeFiltered = false; - state.restOfLine = 'string'; - return tok; - } - } - - function mixin(stream, state) { - if (stream.match(/^mixin\b/)) { - state.javaScriptLine = true; - return KEYWORD; - } - } - - function call(stream, state) { - if (stream.match(/^\+([-\w]+)/)) { - if (!stream.match(/^\( *[-\w]+ *=/, false)) { - state.javaScriptArguments = true; - state.javaScriptArgumentsDepth = 0; - } - return 'variable'; - } - if (stream.match(/^\+#{/, false)) { - stream.next(); - state.mixinCallAfter = true; - return interpolation(stream, state); - } - } - function callArguments(stream, state) { - if (state.mixinCallAfter) { - state.mixinCallAfter = false; - if (!stream.match(/^\( *[-\w]+ *=/, false)) { - state.javaScriptArguments = true; - state.javaScriptArgumentsDepth = 0; - } - return true; - } - } - - function conditional(stream, state) { - if (stream.match(/^(if|unless|else if|else)\b/)) { - state.javaScriptLine = true; - return KEYWORD; - } - } - - function each(stream, state) { - if (stream.match(/^(- *)?(each|for)\b/)) { - state.isEach = true; - return KEYWORD; - } - } - function eachContinued(stream, state) { - if (state.isEach) { - if (stream.match(/^ in\b/)) { - state.javaScriptLine = true; - state.isEach = false; - return KEYWORD; - } else if (stream.sol() || stream.eol()) { - state.isEach = false; - } else if (stream.next()) { - while (!stream.match(/^ in\b/, false) && stream.next()); - return 'variable'; - } - } - } - - function whileStatement(stream, state) { - if (stream.match(/^while\b/)) { - state.javaScriptLine = true; - return KEYWORD; - } - } - - function tag(stream, state) { - var captures; - if (captures = stream.match(/^(\w(?:[-:\w]*\w)?)\/?/)) { - state.lastTag = captures[1].toLowerCase(); - if (state.lastTag === 'script') { - state.scriptType = 'application/javascript'; - } - return 'tag'; - } - } - - function filter(stream, state) { - if (stream.match(/^:([\w\-]+)/)) { - var innerMode; - if (config && config.innerModes) { - innerMode = config.innerModes(stream.current().substring(1)); - } - if (!innerMode) { - innerMode = stream.current().substring(1); - } - if (typeof innerMode === 'string') { - innerMode = CodeMirror.getMode(config, innerMode); - } - setInnerMode(stream, state, innerMode); - return 'atom'; - } - } - - function code(stream, state) { - if (stream.match(/^(!?=|-)/)) { - state.javaScriptLine = true; - return 'punctuation'; - } - } - - function id(stream) { - if (stream.match(/^#([\w-]+)/)) { - return ID; - } - } - - function className(stream) { - if (stream.match(/^\.([\w-]+)/)) { - return CLASS; - } - } - - function attrs(stream, state) { - if (stream.peek() == '(') { - stream.next(); - state.isAttrs = true; - state.attrsNest = []; - state.inAttributeName = true; - state.attrValue = ''; - state.attributeIsType = false; - return 'punctuation'; - } - } - - function attrsContinued(stream, state) { - if (state.isAttrs) { - if (ATTRS_NEST[stream.peek()]) { - state.attrsNest.push(ATTRS_NEST[stream.peek()]); - } - if (state.attrsNest[state.attrsNest.length - 1] === stream.peek()) { - state.attrsNest.pop(); - } else if (stream.eat(')')) { - state.isAttrs = false; - return 'punctuation'; - } - if (state.inAttributeName && stream.match(/^[^=,\)!]+/)) { - if (stream.peek() === '=' || stream.peek() === '!') { - state.inAttributeName = false; - state.jsState = CodeMirror.startState(jsMode); - if (state.lastTag === 'script' && stream.current().trim().toLowerCase() === 'type') { - state.attributeIsType = true; - } else { - state.attributeIsType = false; - } - } - return 'attribute'; - } - - var tok = jsMode.token(stream, state.jsState); - if (state.attributeIsType && tok === 'string') { - state.scriptType = stream.current().toString(); - } - if (state.attrsNest.length === 0 && (tok === 'string' || tok === 'variable' || tok === 'keyword')) { - try { - Function('', 'var x ' + state.attrValue.replace(/,\s*$/, '').replace(/^!/, '')); - state.inAttributeName = true; - state.attrValue = ''; - stream.backUp(stream.current().length); - return attrsContinued(stream, state); - } catch (ex) { - //not the end of an attribute - } - } - state.attrValue += stream.current(); - return tok || true; - } - } - - function attributesBlock(stream, state) { - if (stream.match(/^&attributes\b/)) { - state.javaScriptArguments = true; - state.javaScriptArgumentsDepth = 0; - return 'keyword'; - } - } - - function indent(stream) { - if (stream.sol() && stream.eatSpace()) { - return 'indent'; - } - } - - function comment(stream, state) { - if (stream.match(/^ *\/\/(-)?([^\n]*)/)) { - state.indentOf = stream.indentation(); - state.indentToken = 'comment'; - return 'comment'; - } - } - - function colon(stream) { - if (stream.match(/^: */)) { - return 'colon'; - } - } - - function text(stream, state) { - if (stream.match(/^(?:\| ?| )([^\n]+)/)) { - return 'string'; - } - if (stream.match(/^(<[^\n]*)/, false)) { - // html string - setInnerMode(stream, state, 'htmlmixed'); - state.innerModeForLine = true; - return innerMode(stream, state, true); - } - } - - function dot(stream, state) { - if (stream.eat('.')) { - var innerMode = null; - if (state.lastTag === 'script' && state.scriptType.toLowerCase().indexOf('javascript') != -1) { - innerMode = state.scriptType.toLowerCase().replace(/"|'/g, ''); - } else if (state.lastTag === 'style') { - innerMode = 'css'; - } - setInnerMode(stream, state, innerMode); - return 'dot'; - } - } - - function fail(stream) { - stream.next(); - return null; - } - - - function setInnerMode(stream, state, mode) { - mode = CodeMirror.mimeModes[mode] || mode; - mode = config.innerModes ? config.innerModes(mode) || mode : mode; - mode = CodeMirror.mimeModes[mode] || mode; - mode = CodeMirror.getMode(config, mode); - state.indentOf = stream.indentation(); - - if (mode && mode.name !== 'null') { - state.innerMode = mode; - } else { - state.indentToken = 'string'; - } - } - function innerMode(stream, state, force) { - if (stream.indentation() > state.indentOf || (state.innerModeForLine && !stream.sol()) || force) { - if (state.innerMode) { - if (!state.innerState) { - state.innerState = state.innerMode.startState ? CodeMirror.startState(state.innerMode, stream.indentation()) : {}; - } - return stream.hideFirstChars(state.indentOf + 2, function () { - return state.innerMode.token(stream, state.innerState) || true; - }); - } else { - stream.skipToEnd(); - return state.indentToken; - } - } else if (stream.sol()) { - state.indentOf = Infinity; - state.indentToken = null; - state.innerMode = null; - state.innerState = null; - } - } - function restOfLine(stream, state) { - if (stream.sol()) { - // if restOfLine was set at end of line, ignore it - state.restOfLine = ''; - } - if (state.restOfLine) { - stream.skipToEnd(); - var tok = state.restOfLine; - state.restOfLine = ''; - return tok; - } - } - - - function startState() { - return new State(); - } - function copyState(state) { - return state.copy(); - } - /** - * Get the next token in the stream - * - * @param {Stream} stream - * @param {State} state - */ - function nextToken(stream, state) { - var tok = innerMode(stream, state) - || restOfLine(stream, state) - || interpolationContinued(stream, state) - || includeFilteredContinued(stream, state) - || eachContinued(stream, state) - || attrsContinued(stream, state) - || javaScript(stream, state) - || javaScriptArguments(stream, state) - || callArguments(stream, state) - - || yieldStatement(stream, state) - || doctype(stream, state) - || interpolation(stream, state) - || caseStatement(stream, state) - || when(stream, state) - || defaultStatement(stream, state) - || extendsStatement(stream, state) - || append(stream, state) - || prepend(stream, state) - || block(stream, state) - || include(stream, state) - || includeFiltered(stream, state) - || mixin(stream, state) - || call(stream, state) - || conditional(stream, state) - || each(stream, state) - || whileStatement(stream, state) - || tag(stream, state) - || filter(stream, state) - || code(stream, state) - || id(stream, state) - || className(stream, state) - || attrs(stream, state) - || attributesBlock(stream, state) - || indent(stream, state) - || text(stream, state) - || comment(stream, state) - || colon(stream, state) - || dot(stream, state) - || fail(stream, state); - - return tok === true ? null : tok; - } - return { - startState: startState, - copyState: copyState, - token: nextToken - }; -}, 'javascript', 'css', 'htmlmixed'); - -CodeMirror.defineMIME('text/x-jade', 'jade'); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/javascript/index.html b/public/plugins/codemirror-5.17.0/mode/javascript/index.html deleted file mode 100644 index 592a133d8..000000000 --- a/public/plugins/codemirror-5.17.0/mode/javascript/index.html +++ /dev/null @@ -1,114 +0,0 @@ - - -CodeMirror: JavaScript mode - - - - - - - - - - - - -
    -

    JavaScript mode

    - - -
    - - - -

    - JavaScript mode supports several configuration options: -

      -
    • json which will set the mode to expect JSON - data rather than a JavaScript program.
    • -
    • jsonld which will set the mode to expect - JSON-LD linked data rather - than a JavaScript program (demo).
    • -
    • typescript which will activate additional - syntax highlighting and some other things for TypeScript code - (demo).
    • -
    • statementIndent which (given a number) will - determine the amount of indentation to use for statements - continued on a new line.
    • -
    • wordCharacters, a regexp that indicates which - characters should be considered part of an identifier. - Defaults to /[\w$]/, which does not handle - non-ASCII identifiers. Can be set to something more elaborate - to improve Unicode support.
    • -
    -

    - -

    MIME types defined: text/javascript, application/json, application/ld+json, text/typescript, application/typescript.

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/javascript/javascript.js b/public/plugins/codemirror-5.17.0/mode/javascript/javascript.js deleted file mode 100644 index 3909c85e6..000000000 --- a/public/plugins/codemirror-5.17.0/mode/javascript/javascript.js +++ /dev/null @@ -1,743 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -// TODO actually recognize syntax of TypeScript constructs - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -function expressionAllowed(stream, state, backUp) { - return /^(?:operator|sof|keyword c|case|new|[\[{}\(,;:]|=>)$/.test(state.lastType) || - (state.lastType == "quasi" && /\{\s*$/.test(stream.string.slice(0, stream.pos - (backUp || 0)))) -} - -CodeMirror.defineMode("javascript", function(config, parserConfig) { - var indentUnit = config.indentUnit; - var statementIndent = parserConfig.statementIndent; - var jsonldMode = parserConfig.jsonld; - var jsonMode = parserConfig.json || jsonldMode; - var isTS = parserConfig.typescript; - var wordRE = parserConfig.wordCharacters || /[\w$\xa1-\uffff]/; - - // Tokenizer - - var keywords = function(){ - function kw(type) {return {type: type, style: "keyword"};} - var A = kw("keyword a"), B = kw("keyword b"), C = kw("keyword c"); - var operator = kw("operator"), atom = {type: "atom", style: "atom"}; - - var jsKeywords = { - "if": kw("if"), "while": A, "with": A, "else": B, "do": B, "try": B, "finally": B, - "return": C, "break": C, "continue": C, "new": kw("new"), "delete": C, "throw": C, "debugger": C, - "var": kw("var"), "const": kw("var"), "let": kw("var"), - "function": kw("function"), "catch": kw("catch"), - "for": kw("for"), "switch": kw("switch"), "case": kw("case"), "default": kw("default"), - "in": operator, "typeof": operator, "instanceof": operator, - "true": atom, "false": atom, "null": atom, "undefined": atom, "NaN": atom, "Infinity": atom, - "this": kw("this"), "class": kw("class"), "super": kw("atom"), - "yield": C, "export": kw("export"), "import": kw("import"), "extends": C, - "await": C, "async": kw("async") - }; - - // Extend the 'normal' keywords with the TypeScript language extensions - if (isTS) { - var type = {type: "variable", style: "variable-3"}; - var tsKeywords = { - // object-like things - "interface": kw("class"), - "implements": C, - "namespace": C, - "module": kw("module"), - "enum": kw("module"), - - // scope modifiers - "public": kw("modifier"), - "private": kw("modifier"), - "protected": kw("modifier"), - "abstract": kw("modifier"), - - // operators - "as": operator, - - // types - "string": type, "number": type, "boolean": type, "any": type - }; - - for (var attr in tsKeywords) { - jsKeywords[attr] = tsKeywords[attr]; - } - } - - return jsKeywords; - }(); - - var isOperatorChar = /[+\-*&%=<>!?|~^]/; - var isJsonldKeyword = /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/; - - function readRegexp(stream) { - var escaped = false, next, inSet = false; - while ((next = stream.next()) != null) { - if (!escaped) { - if (next == "/" && !inSet) return; - if (next == "[") inSet = true; - else if (inSet && next == "]") inSet = false; - } - escaped = !escaped && next == "\\"; - } - } - - // Used as scratch variables to communicate multiple values without - // consing up tons of objects. - var type, content; - function ret(tp, style, cont) { - type = tp; content = cont; - return style; - } - function tokenBase(stream, state) { - var ch = stream.next(); - if (ch == '"' || ch == "'") { - state.tokenize = tokenString(ch); - return state.tokenize(stream, state); - } else if (ch == "." && stream.match(/^\d+(?:[eE][+\-]?\d+)?/)) { - return ret("number", "number"); - } else if (ch == "." && stream.match("..")) { - return ret("spread", "meta"); - } else if (/[\[\]{}\(\),;\:\.]/.test(ch)) { - return ret(ch); - } else if (ch == "=" && stream.eat(">")) { - return ret("=>", "operator"); - } else if (ch == "0" && stream.eat(/x/i)) { - stream.eatWhile(/[\da-f]/i); - return ret("number", "number"); - } else if (ch == "0" && stream.eat(/o/i)) { - stream.eatWhile(/[0-7]/i); - return ret("number", "number"); - } else if (ch == "0" && stream.eat(/b/i)) { - stream.eatWhile(/[01]/i); - return ret("number", "number"); - } else if (/\d/.test(ch)) { - stream.match(/^\d*(?:\.\d*)?(?:[eE][+\-]?\d+)?/); - return ret("number", "number"); - } else if (ch == "/") { - if (stream.eat("*")) { - state.tokenize = tokenComment; - return tokenComment(stream, state); - } else if (stream.eat("/")) { - stream.skipToEnd(); - return ret("comment", "comment"); - } else if (expressionAllowed(stream, state, 1)) { - readRegexp(stream); - stream.match(/^\b(([gimyu])(?![gimyu]*\2))+\b/); - return ret("regexp", "string-2"); - } else { - stream.eatWhile(isOperatorChar); - return ret("operator", "operator", stream.current()); - } - } else if (ch == "`") { - state.tokenize = tokenQuasi; - return tokenQuasi(stream, state); - } else if (ch == "#") { - stream.skipToEnd(); - return ret("error", "error"); - } else if (isOperatorChar.test(ch)) { - stream.eatWhile(isOperatorChar); - return ret("operator", "operator", stream.current()); - } else if (wordRE.test(ch)) { - stream.eatWhile(wordRE); - var word = stream.current(), known = keywords.propertyIsEnumerable(word) && keywords[word]; - return (known && state.lastType != ".") ? ret(known.type, known.style, word) : - ret("variable", "variable", word); - } - } - - function tokenString(quote) { - return function(stream, state) { - var escaped = false, next; - if (jsonldMode && stream.peek() == "@" && stream.match(isJsonldKeyword)){ - state.tokenize = tokenBase; - return ret("jsonld-keyword", "meta"); - } - while ((next = stream.next()) != null) { - if (next == quote && !escaped) break; - escaped = !escaped && next == "\\"; - } - if (!escaped) state.tokenize = tokenBase; - return ret("string", "string"); - }; - } - - function tokenComment(stream, state) { - var maybeEnd = false, ch; - while (ch = stream.next()) { - if (ch == "/" && maybeEnd) { - state.tokenize = tokenBase; - break; - } - maybeEnd = (ch == "*"); - } - return ret("comment", "comment"); - } - - function tokenQuasi(stream, state) { - var escaped = false, next; - while ((next = stream.next()) != null) { - if (!escaped && (next == "`" || next == "$" && stream.eat("{"))) { - state.tokenize = tokenBase; - break; - } - escaped = !escaped && next == "\\"; - } - return ret("quasi", "string-2", stream.current()); - } - - var brackets = "([{}])"; - // This is a crude lookahead trick to try and notice that we're - // parsing the argument patterns for a fat-arrow function before we - // actually hit the arrow token. It only works if the arrow is on - // the same line as the arguments and there's no strange noise - // (comments) in between. Fallback is to only notice when we hit the - // arrow, and not declare the arguments as locals for the arrow - // body. - function findFatArrow(stream, state) { - if (state.fatArrowAt) state.fatArrowAt = null; - var arrow = stream.string.indexOf("=>", stream.start); - if (arrow < 0) return; - - var depth = 0, sawSomething = false; - for (var pos = arrow - 1; pos >= 0; --pos) { - var ch = stream.string.charAt(pos); - var bracket = brackets.indexOf(ch); - if (bracket >= 0 && bracket < 3) { - if (!depth) { ++pos; break; } - if (--depth == 0) break; - } else if (bracket >= 3 && bracket < 6) { - ++depth; - } else if (wordRE.test(ch)) { - sawSomething = true; - } else if (/["'\/]/.test(ch)) { - return; - } else if (sawSomething && !depth) { - ++pos; - break; - } - } - if (sawSomething && !depth) state.fatArrowAt = pos; - } - - // Parser - - var atomicTypes = {"atom": true, "number": true, "variable": true, "string": true, "regexp": true, "this": true, "jsonld-keyword": true}; - - function JSLexical(indented, column, type, align, prev, info) { - this.indented = indented; - this.column = column; - this.type = type; - this.prev = prev; - this.info = info; - if (align != null) this.align = align; - } - - function inScope(state, varname) { - for (var v = state.localVars; v; v = v.next) - if (v.name == varname) return true; - for (var cx = state.context; cx; cx = cx.prev) { - for (var v = cx.vars; v; v = v.next) - if (v.name == varname) return true; - } - } - - function parseJS(state, style, type, content, stream) { - var cc = state.cc; - // Communicate our context to the combinators. - // (Less wasteful than consing up a hundred closures on every call.) - cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc; cx.style = style; - - if (!state.lexical.hasOwnProperty("align")) - state.lexical.align = true; - - while(true) { - var combinator = cc.length ? cc.pop() : jsonMode ? expression : statement; - if (combinator(type, content)) { - while(cc.length && cc[cc.length - 1].lex) - cc.pop()(); - if (cx.marked) return cx.marked; - if (type == "variable" && inScope(state, content)) return "variable-2"; - return style; - } - } - } - - // Combinator utils - - var cx = {state: null, column: null, marked: null, cc: null}; - function pass() { - for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]); - } - function cont() { - pass.apply(null, arguments); - return true; - } - function register(varname) { - function inList(list) { - for (var v = list; v; v = v.next) - if (v.name == varname) return true; - return false; - } - var state = cx.state; - cx.marked = "def"; - if (state.context) { - if (inList(state.localVars)) return; - state.localVars = {name: varname, next: state.localVars}; - } else { - if (inList(state.globalVars)) return; - if (parserConfig.globalVars) - state.globalVars = {name: varname, next: state.globalVars}; - } - } - - // Combinators - - var defaultVars = {name: "this", next: {name: "arguments"}}; - function pushcontext() { - cx.state.context = {prev: cx.state.context, vars: cx.state.localVars}; - cx.state.localVars = defaultVars; - } - function popcontext() { - cx.state.localVars = cx.state.context.vars; - cx.state.context = cx.state.context.prev; - } - function pushlex(type, info) { - var result = function() { - var state = cx.state, indent = state.indented; - if (state.lexical.type == "stat") indent = state.lexical.indented; - else for (var outer = state.lexical; outer && outer.type == ")" && outer.align; outer = outer.prev) - indent = outer.indented; - state.lexical = new JSLexical(indent, cx.stream.column(), type, null, state.lexical, info); - }; - result.lex = true; - return result; - } - function poplex() { - var state = cx.state; - if (state.lexical.prev) { - if (state.lexical.type == ")") - state.indented = state.lexical.indented; - state.lexical = state.lexical.prev; - } - } - poplex.lex = true; - - function expect(wanted) { - function exp(type) { - if (type == wanted) return cont(); - else if (wanted == ";") return pass(); - else return cont(exp); - }; - return exp; - } - - function statement(type, value) { - if (type == "var") return cont(pushlex("vardef", value.length), vardef, expect(";"), poplex); - if (type == "keyword a") return cont(pushlex("form"), expression, statement, poplex); - if (type == "keyword b") return cont(pushlex("form"), statement, poplex); - if (type == "{") return cont(pushlex("}"), block, poplex); - if (type == ";") return cont(); - if (type == "if") { - if (cx.state.lexical.info == "else" && cx.state.cc[cx.state.cc.length - 1] == poplex) - cx.state.cc.pop()(); - return cont(pushlex("form"), expression, statement, poplex, maybeelse); - } - if (type == "function") return cont(functiondef); - if (type == "for") return cont(pushlex("form"), forspec, statement, poplex); - if (type == "variable") return cont(pushlex("stat"), maybelabel); - if (type == "switch") return cont(pushlex("form"), expression, pushlex("}", "switch"), expect("{"), - block, poplex, poplex); - if (type == "case") return cont(expression, expect(":")); - if (type == "default") return cont(expect(":")); - if (type == "catch") return cont(pushlex("form"), pushcontext, expect("("), funarg, expect(")"), - statement, poplex, popcontext); - if (type == "class") return cont(pushlex("form"), className, poplex); - if (type == "export") return cont(pushlex("stat"), afterExport, poplex); - if (type == "import") return cont(pushlex("stat"), afterImport, poplex); - if (type == "module") return cont(pushlex("form"), pattern, pushlex("}"), expect("{"), block, poplex, poplex) - if (type == "async") return cont(statement) - return pass(pushlex("stat"), expression, expect(";"), poplex); - } - function expression(type) { - return expressionInner(type, false); - } - function expressionNoComma(type) { - return expressionInner(type, true); - } - function expressionInner(type, noComma) { - if (cx.state.fatArrowAt == cx.stream.start) { - var body = noComma ? arrowBodyNoComma : arrowBody; - if (type == "(") return cont(pushcontext, pushlex(")"), commasep(pattern, ")"), poplex, expect("=>"), body, popcontext); - else if (type == "variable") return pass(pushcontext, pattern, expect("=>"), body, popcontext); - } - - var maybeop = noComma ? maybeoperatorNoComma : maybeoperatorComma; - if (atomicTypes.hasOwnProperty(type)) return cont(maybeop); - if (type == "function") return cont(functiondef, maybeop); - if (type == "keyword c" || type == "async") return cont(noComma ? maybeexpressionNoComma : maybeexpression); - if (type == "(") return cont(pushlex(")"), maybeexpression, expect(")"), poplex, maybeop); - if (type == "operator" || type == "spread") return cont(noComma ? expressionNoComma : expression); - if (type == "[") return cont(pushlex("]"), arrayLiteral, poplex, maybeop); - if (type == "{") return contCommasep(objprop, "}", null, maybeop); - if (type == "quasi") return pass(quasi, maybeop); - if (type == "new") return cont(maybeTarget(noComma)); - return cont(); - } - function maybeexpression(type) { - if (type.match(/[;\}\)\],]/)) return pass(); - return pass(expression); - } - function maybeexpressionNoComma(type) { - if (type.match(/[;\}\)\],]/)) return pass(); - return pass(expressionNoComma); - } - - function maybeoperatorComma(type, value) { - if (type == ",") return cont(expression); - return maybeoperatorNoComma(type, value, false); - } - function maybeoperatorNoComma(type, value, noComma) { - var me = noComma == false ? maybeoperatorComma : maybeoperatorNoComma; - var expr = noComma == false ? expression : expressionNoComma; - if (type == "=>") return cont(pushcontext, noComma ? arrowBodyNoComma : arrowBody, popcontext); - if (type == "operator") { - if (/\+\+|--/.test(value)) return cont(me); - if (value == "?") return cont(expression, expect(":"), expr); - return cont(expr); - } - if (type == "quasi") { return pass(quasi, me); } - if (type == ";") return; - if (type == "(") return contCommasep(expressionNoComma, ")", "call", me); - if (type == ".") return cont(property, me); - if (type == "[") return cont(pushlex("]"), maybeexpression, expect("]"), poplex, me); - } - function quasi(type, value) { - if (type != "quasi") return pass(); - if (value.slice(value.length - 2) != "${") return cont(quasi); - return cont(expression, continueQuasi); - } - function continueQuasi(type) { - if (type == "}") { - cx.marked = "string-2"; - cx.state.tokenize = tokenQuasi; - return cont(quasi); - } - } - function arrowBody(type) { - findFatArrow(cx.stream, cx.state); - return pass(type == "{" ? statement : expression); - } - function arrowBodyNoComma(type) { - findFatArrow(cx.stream, cx.state); - return pass(type == "{" ? statement : expressionNoComma); - } - function maybeTarget(noComma) { - return function(type) { - if (type == ".") return cont(noComma ? targetNoComma : target); - else return pass(noComma ? expressionNoComma : expression); - }; - } - function target(_, value) { - if (value == "target") { cx.marked = "keyword"; return cont(maybeoperatorComma); } - } - function targetNoComma(_, value) { - if (value == "target") { cx.marked = "keyword"; return cont(maybeoperatorNoComma); } - } - function maybelabel(type) { - if (type == ":") return cont(poplex, statement); - return pass(maybeoperatorComma, expect(";"), poplex); - } - function property(type) { - if (type == "variable") {cx.marked = "property"; return cont();} - } - function objprop(type, value) { - if (type == "async") return cont(objprop); - if (type == "variable" || cx.style == "keyword") { - cx.marked = "property"; - if (value == "get" || value == "set") return cont(getterSetter); - return cont(afterprop); - } else if (type == "number" || type == "string") { - cx.marked = jsonldMode ? "property" : (cx.style + " property"); - return cont(afterprop); - } else if (type == "jsonld-keyword") { - return cont(afterprop); - } else if (type == "modifier") { - return cont(objprop) - } else if (type == "[") { - return cont(expression, expect("]"), afterprop); - } else if (type == "spread") { - return cont(expression); - } - } - function getterSetter(type) { - if (type != "variable") return pass(afterprop); - cx.marked = "property"; - return cont(functiondef); - } - function afterprop(type) { - if (type == ":") return cont(expressionNoComma); - if (type == "(") return pass(functiondef); - } - function commasep(what, end) { - function proceed(type, value) { - if (type == ",") { - var lex = cx.state.lexical; - if (lex.info == "call") lex.pos = (lex.pos || 0) + 1; - return cont(function(type, value) { - if (type == end || value == end) return pass() - return pass(what) - }, proceed); - } - if (type == end || value == end) return cont(); - return cont(expect(end)); - } - return function(type, value) { - if (type == end || value == end) return cont(); - return pass(what, proceed); - }; - } - function contCommasep(what, end, info) { - for (var i = 3; i < arguments.length; i++) - cx.cc.push(arguments[i]); - return cont(pushlex(end, info), commasep(what, end), poplex); - } - function block(type) { - if (type == "}") return cont(); - return pass(statement, block); - } - function maybetype(type) { - if (isTS && type == ":") return cont(typeexpr); - } - function maybedefault(_, value) { - if (value == "=") return cont(expressionNoComma); - } - function typeexpr(type) { - if (type == "variable") {cx.marked = "variable-3"; return cont(afterType);} - } - function afterType(type, value) { - if (value == "<") return cont(commasep(typeexpr, ">"), afterType) - if (type == "[") return cont(expect("]"), afterType) - } - function vardef() { - return pass(pattern, maybetype, maybeAssign, vardefCont); - } - function pattern(type, value) { - if (type == "modifier") return cont(pattern) - if (type == "variable") { register(value); return cont(); } - if (type == "spread") return cont(pattern); - if (type == "[") return contCommasep(pattern, "]"); - if (type == "{") return contCommasep(proppattern, "}"); - } - function proppattern(type, value) { - if (type == "variable" && !cx.stream.match(/^\s*:/, false)) { - register(value); - return cont(maybeAssign); - } - if (type == "variable") cx.marked = "property"; - if (type == "spread") return cont(pattern); - if (type == "}") return pass(); - return cont(expect(":"), pattern, maybeAssign); - } - function maybeAssign(_type, value) { - if (value == "=") return cont(expressionNoComma); - } - function vardefCont(type) { - if (type == ",") return cont(vardef); - } - function maybeelse(type, value) { - if (type == "keyword b" && value == "else") return cont(pushlex("form", "else"), statement, poplex); - } - function forspec(type) { - if (type == "(") return cont(pushlex(")"), forspec1, expect(")"), poplex); - } - function forspec1(type) { - if (type == "var") return cont(vardef, expect(";"), forspec2); - if (type == ";") return cont(forspec2); - if (type == "variable") return cont(formaybeinof); - return pass(expression, expect(";"), forspec2); - } - function formaybeinof(_type, value) { - if (value == "in" || value == "of") { cx.marked = "keyword"; return cont(expression); } - return cont(maybeoperatorComma, forspec2); - } - function forspec2(type, value) { - if (type == ";") return cont(forspec3); - if (value == "in" || value == "of") { cx.marked = "keyword"; return cont(expression); } - return pass(expression, expect(";"), forspec3); - } - function forspec3(type) { - if (type != ")") cont(expression); - } - function functiondef(type, value) { - if (value == "*") {cx.marked = "keyword"; return cont(functiondef);} - if (type == "variable") {register(value); return cont(functiondef);} - if (type == "(") return cont(pushcontext, pushlex(")"), commasep(funarg, ")"), poplex, maybetype, statement, popcontext); - } - function funarg(type) { - if (type == "spread") return cont(funarg); - return pass(pattern, maybetype, maybedefault); - } - function className(type, value) { - if (type == "variable") {register(value); return cont(classNameAfter);} - } - function classNameAfter(type, value) { - if (value == "extends") return cont(expression, classNameAfter); - if (type == "{") return cont(pushlex("}"), classBody, poplex); - } - function classBody(type, value) { - if (type == "variable" || cx.style == "keyword") { - if (value == "static") { - cx.marked = "keyword"; - return cont(classBody); - } - cx.marked = "property"; - if (value == "get" || value == "set") return cont(classGetterSetter, functiondef, classBody); - return cont(functiondef, classBody); - } - if (value == "*") { - cx.marked = "keyword"; - return cont(classBody); - } - if (type == ";") return cont(classBody); - if (type == "}") return cont(); - } - function classGetterSetter(type) { - if (type != "variable") return pass(); - cx.marked = "property"; - return cont(); - } - function afterExport(_type, value) { - if (value == "*") { cx.marked = "keyword"; return cont(maybeFrom, expect(";")); } - if (value == "default") { cx.marked = "keyword"; return cont(expression, expect(";")); } - return pass(statement); - } - function afterImport(type) { - if (type == "string") return cont(); - return pass(importSpec, maybeFrom); - } - function importSpec(type, value) { - if (type == "{") return contCommasep(importSpec, "}"); - if (type == "variable") register(value); - if (value == "*") cx.marked = "keyword"; - return cont(maybeAs); - } - function maybeAs(_type, value) { - if (value == "as") { cx.marked = "keyword"; return cont(importSpec); } - } - function maybeFrom(_type, value) { - if (value == "from") { cx.marked = "keyword"; return cont(expression); } - } - function arrayLiteral(type) { - if (type == "]") return cont(); - return pass(expressionNoComma, commasep(expressionNoComma, "]")); - } - - function isContinuedStatement(state, textAfter) { - return state.lastType == "operator" || state.lastType == "," || - isOperatorChar.test(textAfter.charAt(0)) || - /[,.]/.test(textAfter.charAt(0)); - } - - // Interface - - return { - startState: function(basecolumn) { - var state = { - tokenize: tokenBase, - lastType: "sof", - cc: [], - lexical: new JSLexical((basecolumn || 0) - indentUnit, 0, "block", false), - localVars: parserConfig.localVars, - context: parserConfig.localVars && {vars: parserConfig.localVars}, - indented: basecolumn || 0 - }; - if (parserConfig.globalVars && typeof parserConfig.globalVars == "object") - state.globalVars = parserConfig.globalVars; - return state; - }, - - token: function(stream, state) { - if (stream.sol()) { - if (!state.lexical.hasOwnProperty("align")) - state.lexical.align = false; - state.indented = stream.indentation(); - findFatArrow(stream, state); - } - if (state.tokenize != tokenComment && stream.eatSpace()) return null; - var style = state.tokenize(stream, state); - if (type == "comment") return style; - state.lastType = type == "operator" && (content == "++" || content == "--") ? "incdec" : type; - return parseJS(state, style, type, content, stream); - }, - - indent: function(state, textAfter) { - if (state.tokenize == tokenComment) return CodeMirror.Pass; - if (state.tokenize != tokenBase) return 0; - var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical; - // Kludge to prevent 'maybelse' from blocking lexical scope pops - if (!/^\s*else\b/.test(textAfter)) for (var i = state.cc.length - 1; i >= 0; --i) { - var c = state.cc[i]; - if (c == poplex) lexical = lexical.prev; - else if (c != maybeelse) break; - } - if (lexical.type == "stat" && firstChar == "}") lexical = lexical.prev; - if (statementIndent && lexical.type == ")" && lexical.prev.type == "stat") - lexical = lexical.prev; - var type = lexical.type, closing = firstChar == type; - - if (type == "vardef") return lexical.indented + (state.lastType == "operator" || state.lastType == "," ? lexical.info + 1 : 0); - else if (type == "form" && firstChar == "{") return lexical.indented; - else if (type == "form") return lexical.indented + indentUnit; - else if (type == "stat") - return lexical.indented + (isContinuedStatement(state, textAfter) ? statementIndent || indentUnit : 0); - else if (lexical.info == "switch" && !closing && parserConfig.doubleIndentSwitch != false) - return lexical.indented + (/^(?:case|default)\b/.test(textAfter) ? indentUnit : 2 * indentUnit); - else if (lexical.align) return lexical.column + (closing ? 0 : 1); - else return lexical.indented + (closing ? 0 : indentUnit); - }, - - electricInput: /^\s*(?:case .*?:|default:|\{|\})$/, - blockCommentStart: jsonMode ? null : "/*", - blockCommentEnd: jsonMode ? null : "*/", - lineComment: jsonMode ? null : "//", - fold: "brace", - closeBrackets: "()[]{}''\"\"``", - - helperType: jsonMode ? "json" : "javascript", - jsonldMode: jsonldMode, - jsonMode: jsonMode, - - expressionAllowed: expressionAllowed, - skipExpression: function(state) { - var top = state.cc[state.cc.length - 1] - if (top == expression || top == expressionNoComma) state.cc.pop() - } - }; -}); - -CodeMirror.registerHelper("wordChars", "javascript", /[\w$]/); - -CodeMirror.defineMIME("text/javascript", "javascript"); -CodeMirror.defineMIME("text/ecmascript", "javascript"); -CodeMirror.defineMIME("application/javascript", "javascript"); -CodeMirror.defineMIME("application/x-javascript", "javascript"); -CodeMirror.defineMIME("application/ecmascript", "javascript"); -CodeMirror.defineMIME("application/json", {name: "javascript", json: true}); -CodeMirror.defineMIME("application/x-json", {name: "javascript", json: true}); -CodeMirror.defineMIME("application/ld+json", {name: "javascript", jsonld: true}); -CodeMirror.defineMIME("text/typescript", { name: "javascript", typescript: true }); -CodeMirror.defineMIME("application/typescript", { name: "javascript", typescript: true }); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/javascript/json-ld.html b/public/plugins/codemirror-5.17.0/mode/javascript/json-ld.html deleted file mode 100644 index 3a37f0bce..000000000 --- a/public/plugins/codemirror-5.17.0/mode/javascript/json-ld.html +++ /dev/null @@ -1,72 +0,0 @@ - - -CodeMirror: JSON-LD mode - - - - - - - - - - - - -
    -

    JSON-LD mode

    - - -
    - - - -

    This is a specialization of the JavaScript mode.

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/javascript/test.js b/public/plugins/codemirror-5.17.0/mode/javascript/test.js deleted file mode 100644 index 8916b7558..000000000 --- a/public/plugins/codemirror-5.17.0/mode/javascript/test.js +++ /dev/null @@ -1,207 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function() { - var mode = CodeMirror.getMode({indentUnit: 2}, "javascript"); - function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } - - MT("locals", - "[keyword function] [def foo]([def a], [def b]) { [keyword var] [def c] [operator =] [number 10]; [keyword return] [variable-2 a] [operator +] [variable-2 c] [operator +] [variable d]; }"); - - MT("comma-and-binop", - "[keyword function](){ [keyword var] [def x] [operator =] [number 1] [operator +] [number 2], [def y]; }"); - - MT("destructuring", - "([keyword function]([def a], [[[def b], [def c] ]]) {", - " [keyword let] {[def d], [property foo]: [def c][operator =][number 10], [def x]} [operator =] [variable foo]([variable-2 a]);", - " [[[variable-2 c], [variable y] ]] [operator =] [variable-2 c];", - "})();"); - - MT("destructure_trailing_comma", - "[keyword let] {[def a], [def b],} [operator =] [variable foo];", - "[keyword let] [def c];"); // Parser still in good state? - - MT("class_body", - "[keyword class] [def Foo] {", - " [property constructor]() {}", - " [property sayName]() {", - " [keyword return] [string-2 `foo${][variable foo][string-2 }oo`];", - " }", - "}"); - - MT("class", - "[keyword class] [def Point] [keyword extends] [variable SuperThing] {", - " [property get] [property prop]() { [keyword return] [number 24]; }", - " [property constructor]([def x], [def y]) {", - " [keyword super]([string 'something']);", - " [keyword this].[property x] [operator =] [variable-2 x];", - " }", - "}"); - - MT("import", - "[keyword function] [def foo]() {", - " [keyword import] [def $] [keyword from] [string 'jquery'];", - " [keyword import] { [def encrypt], [def decrypt] } [keyword from] [string 'crypto'];", - "}"); - - MT("import_trailing_comma", - "[keyword import] {[def foo], [def bar],} [keyword from] [string 'baz']") - - MT("const", - "[keyword function] [def f]() {", - " [keyword const] [[ [def a], [def b] ]] [operator =] [[ [number 1], [number 2] ]];", - "}"); - - MT("for/of", - "[keyword for]([keyword let] [def of] [keyword of] [variable something]) {}"); - - MT("generator", - "[keyword function*] [def repeat]([def n]) {", - " [keyword for]([keyword var] [def i] [operator =] [number 0]; [variable-2 i] [operator <] [variable-2 n]; [operator ++][variable-2 i])", - " [keyword yield] [variable-2 i];", - "}"); - - MT("quotedStringAddition", - "[keyword let] [def f] [operator =] [variable a] [operator +] [string 'fatarrow'] [operator +] [variable c];"); - - MT("quotedFatArrow", - "[keyword let] [def f] [operator =] [variable a] [operator +] [string '=>'] [operator +] [variable c];"); - - MT("fatArrow", - "[variable array].[property filter]([def a] [operator =>] [variable-2 a] [operator +] [number 1]);", - "[variable a];", // No longer in scope - "[keyword let] [def f] [operator =] ([[ [def a], [def b] ]], [def c]) [operator =>] [variable-2 a] [operator +] [variable-2 c];", - "[variable c];"); - - MT("spread", - "[keyword function] [def f]([def a], [meta ...][def b]) {", - " [variable something]([variable-2 a], [meta ...][variable-2 b]);", - "}"); - - MT("quasi", - "[variable re][string-2 `fofdlakj${][variable x] [operator +] ([variable re][string-2 `foo`]) [operator +] [number 1][string-2 }fdsa`] [operator +] [number 2]"); - - MT("quasi_no_function", - "[variable x] [operator =] [string-2 `fofdlakj${][variable x] [operator +] [string-2 `foo`] [operator +] [number 1][string-2 }fdsa`] [operator +] [number 2]"); - - MT("indent_statement", - "[keyword var] [def x] [operator =] [number 10]", - "[variable x] [operator +=] [variable y] [operator +]", - " [atom Infinity]", - "[keyword debugger];"); - - MT("indent_if", - "[keyword if] ([number 1])", - " [keyword break];", - "[keyword else] [keyword if] ([number 2])", - " [keyword continue];", - "[keyword else]", - " [number 10];", - "[keyword if] ([number 1]) {", - " [keyword break];", - "} [keyword else] [keyword if] ([number 2]) {", - " [keyword continue];", - "} [keyword else] {", - " [number 10];", - "}"); - - MT("indent_for", - "[keyword for] ([keyword var] [def i] [operator =] [number 0];", - " [variable i] [operator <] [number 100];", - " [variable i][operator ++])", - " [variable doSomething]([variable i]);", - "[keyword debugger];"); - - MT("indent_c_style", - "[keyword function] [def foo]()", - "{", - " [keyword debugger];", - "}"); - - MT("indent_else", - "[keyword for] (;;)", - " [keyword if] ([variable foo])", - " [keyword if] ([variable bar])", - " [number 1];", - " [keyword else]", - " [number 2];", - " [keyword else]", - " [number 3];"); - - MT("indent_funarg", - "[variable foo]([number 10000],", - " [keyword function]([def a]) {", - " [keyword debugger];", - "};"); - - MT("indent_below_if", - "[keyword for] (;;)", - " [keyword if] ([variable foo])", - " [number 1];", - "[number 2];"); - - MT("multilinestring", - "[keyword var] [def x] [operator =] [string 'foo\\]", - "[string bar'];"); - - MT("scary_regexp", - "[string-2 /foo[[/]]bar/];"); - - MT("indent_strange_array", - "[keyword var] [def x] [operator =] [[", - " [number 1],,", - " [number 2],", - "]];", - "[number 10];"); - - MT("param_default", - "[keyword function] [def foo]([def x] [operator =] [string-2 `foo${][number 10][string-2 }bar`]) {", - " [keyword return] [variable-2 x];", - "}"); - - MT("new_target", - "[keyword function] [def F]([def target]) {", - " [keyword if] ([variable-2 target] [operator &&] [keyword new].[keyword target].[property name]) {", - " [keyword return] [keyword new]", - " .[keyword target];", - " }", - "}"); - - var jsonld_mode = CodeMirror.getMode( - {indentUnit: 2}, - {name: "javascript", jsonld: true} - ); - function LD(name) { - test.mode(name, jsonld_mode, Array.prototype.slice.call(arguments, 1)); - } - - LD("json_ld_keywords", - '{', - ' [meta "@context"]: {', - ' [meta "@base"]: [string "http://example.com"],', - ' [meta "@vocab"]: [string "http://xmlns.com/foaf/0.1/"],', - ' [property "likesFlavor"]: {', - ' [meta "@container"]: [meta "@list"]', - ' [meta "@reverse"]: [string "@beFavoriteOf"]', - ' },', - ' [property "nick"]: { [meta "@container"]: [meta "@set"] },', - ' [property "nick"]: { [meta "@container"]: [meta "@index"] }', - ' },', - ' [meta "@graph"]: [[ {', - ' [meta "@id"]: [string "http://dbpedia.org/resource/John_Lennon"],', - ' [property "name"]: [string "John Lennon"],', - ' [property "modified"]: {', - ' [meta "@value"]: [string "2010-05-29T14:17:39+02:00"],', - ' [meta "@type"]: [string "http://www.w3.org/2001/XMLSchema#dateTime"]', - ' }', - ' } ]]', - '}'); - - LD("json_ld_fake", - '{', - ' [property "@fake"]: [string "@fake"],', - ' [property "@contextual"]: [string "@identifier"],', - ' [property "user@domain.com"]: [string "@graphical"],', - ' [property "@ID"]: [string "@@ID"]', - '}'); -})(); diff --git a/public/plugins/codemirror-5.17.0/mode/javascript/typescript.html b/public/plugins/codemirror-5.17.0/mode/javascript/typescript.html deleted file mode 100644 index 2cfc5381f..000000000 --- a/public/plugins/codemirror-5.17.0/mode/javascript/typescript.html +++ /dev/null @@ -1,61 +0,0 @@ - - -CodeMirror: TypeScript mode - - - - - - - - - -
    -

    TypeScript mode

    - - -
    - - - -

    This is a specialization of the JavaScript mode.

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/jinja2/index.html b/public/plugins/codemirror-5.17.0/mode/jinja2/index.html deleted file mode 100644 index 5a70e9153..000000000 --- a/public/plugins/codemirror-5.17.0/mode/jinja2/index.html +++ /dev/null @@ -1,54 +0,0 @@ - - -CodeMirror: Jinja2 mode - - - - - - - - - -
    -

    Jinja2 mode

    -
    - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/jinja2/jinja2.js b/public/plugins/codemirror-5.17.0/mode/jinja2/jinja2.js deleted file mode 100644 index ed195581c..000000000 --- a/public/plugins/codemirror-5.17.0/mode/jinja2/jinja2.js +++ /dev/null @@ -1,142 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - CodeMirror.defineMode("jinja2", function() { - var keywords = ["and", "as", "block", "endblock", "by", "cycle", "debug", "else", "elif", - "extends", "filter", "endfilter", "firstof", "for", - "endfor", "if", "endif", "ifchanged", "endifchanged", - "ifequal", "endifequal", "ifnotequal", - "endifnotequal", "in", "include", "load", "not", "now", "or", - "parsed", "regroup", "reversed", "spaceless", - "endspaceless", "ssi", "templatetag", "openblock", - "closeblock", "openvariable", "closevariable", - "openbrace", "closebrace", "opencomment", - "closecomment", "widthratio", "url", "with", "endwith", - "get_current_language", "trans", "endtrans", "noop", "blocktrans", - "endblocktrans", "get_available_languages", - "get_current_language_bidi", "plural"], - operator = /^[+\-*&%=<>!?|~^]/, - sign = /^[:\[\(\{]/, - atom = ["true", "false"], - number = /^(\d[+\-\*\/])?\d+(\.\d+)?/; - - keywords = new RegExp("((" + keywords.join(")|(") + "))\\b"); - atom = new RegExp("((" + atom.join(")|(") + "))\\b"); - - function tokenBase (stream, state) { - var ch = stream.peek(); - - //Comment - if (state.incomment) { - if(!stream.skipTo("#}")) { - stream.skipToEnd(); - } else { - stream.eatWhile(/\#|}/); - state.incomment = false; - } - return "comment"; - //Tag - } else if (state.intag) { - //After operator - if(state.operator) { - state.operator = false; - if(stream.match(atom)) { - return "atom"; - } - if(stream.match(number)) { - return "number"; - } - } - //After sign - if(state.sign) { - state.sign = false; - if(stream.match(atom)) { - return "atom"; - } - if(stream.match(number)) { - return "number"; - } - } - - if(state.instring) { - if(ch == state.instring) { - state.instring = false; - } - stream.next(); - return "string"; - } else if(ch == "'" || ch == '"') { - state.instring = ch; - stream.next(); - return "string"; - } else if(stream.match(state.intag + "}") || stream.eat("-") && stream.match(state.intag + "}")) { - state.intag = false; - return "tag"; - } else if(stream.match(operator)) { - state.operator = true; - return "operator"; - } else if(stream.match(sign)) { - state.sign = true; - } else { - if(stream.eat(" ") || stream.sol()) { - if(stream.match(keywords)) { - return "keyword"; - } - if(stream.match(atom)) { - return "atom"; - } - if(stream.match(number)) { - return "number"; - } - if(stream.sol()) { - stream.next(); - } - } else { - stream.next(); - } - - } - return "variable"; - } else if (stream.eat("{")) { - if (ch = stream.eat("#")) { - state.incomment = true; - if(!stream.skipTo("#}")) { - stream.skipToEnd(); - } else { - stream.eatWhile(/\#|}/); - state.incomment = false; - } - return "comment"; - //Open tag - } else if (ch = stream.eat(/\{|%/)) { - //Cache close tag - state.intag = ch; - if(ch == "{") { - state.intag = "}"; - } - stream.eat("-"); - return "tag"; - } - } - stream.next(); - }; - - return { - startState: function () { - return {tokenize: tokenBase}; - }, - token: function (stream, state) { - return state.tokenize(stream, state); - } - }; - }); -}); diff --git a/public/plugins/codemirror-5.17.0/mode/jsx/index.html b/public/plugins/codemirror-5.17.0/mode/jsx/index.html deleted file mode 100644 index cb51edb36..000000000 --- a/public/plugins/codemirror-5.17.0/mode/jsx/index.html +++ /dev/null @@ -1,89 +0,0 @@ - - -CodeMirror: JSX mode - - - - - - - - - - - -
    -

    JSX mode

    - -
    - - - -

    JSX Mode for React's -JavaScript syntax extension.

    - -

    MIME types defined: text/jsx.

    - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/jsx/jsx.js b/public/plugins/codemirror-5.17.0/mode/jsx/jsx.js deleted file mode 100644 index aff01b8d3..000000000 --- a/public/plugins/codemirror-5.17.0/mode/jsx/jsx.js +++ /dev/null @@ -1,147 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror"), require("../xml/xml"), require("../javascript/javascript")) - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../xml/xml", "../javascript/javascript"], mod) - else // Plain browser env - mod(CodeMirror) -})(function(CodeMirror) { - "use strict" - - // Depth means the amount of open braces in JS context, in XML - // context 0 means not in tag, 1 means in tag, and 2 means in tag - // and js block comment. - function Context(state, mode, depth, prev) { - this.state = state; this.mode = mode; this.depth = depth; this.prev = prev - } - - function copyContext(context) { - return new Context(CodeMirror.copyState(context.mode, context.state), - context.mode, - context.depth, - context.prev && copyContext(context.prev)) - } - - CodeMirror.defineMode("jsx", function(config, modeConfig) { - var xmlMode = CodeMirror.getMode(config, {name: "xml", allowMissing: true, multilineTagIndentPastTag: false}) - var jsMode = CodeMirror.getMode(config, modeConfig && modeConfig.base || "javascript") - - function flatXMLIndent(state) { - var tagName = state.tagName - state.tagName = null - var result = xmlMode.indent(state, "") - state.tagName = tagName - return result - } - - function token(stream, state) { - if (state.context.mode == xmlMode) - return xmlToken(stream, state, state.context) - else - return jsToken(stream, state, state.context) - } - - function xmlToken(stream, state, cx) { - if (cx.depth == 2) { // Inside a JS /* */ comment - if (stream.match(/^.*?\*\//)) cx.depth = 1 - else stream.skipToEnd() - return "comment" - } - - if (stream.peek() == "{") { - xmlMode.skipAttribute(cx.state) - - var indent = flatXMLIndent(cx.state), xmlContext = cx.state.context - // If JS starts on same line as tag - if (xmlContext && stream.match(/^[^>]*>\s*$/, false)) { - while (xmlContext.prev && !xmlContext.startOfLine) - xmlContext = xmlContext.prev - // If tag starts the line, use XML indentation level - if (xmlContext.startOfLine) indent -= config.indentUnit - // Else use JS indentation level - else if (cx.prev.state.lexical) indent = cx.prev.state.lexical.indented - // Else if inside of tag - } else if (cx.depth == 1) { - indent += config.indentUnit - } - - state.context = new Context(CodeMirror.startState(jsMode, indent), - jsMode, 0, state.context) - return null - } - - if (cx.depth == 1) { // Inside of tag - if (stream.peek() == "<") { // Tag inside of tag - xmlMode.skipAttribute(cx.state) - state.context = new Context(CodeMirror.startState(xmlMode, flatXMLIndent(cx.state)), - xmlMode, 0, state.context) - return null - } else if (stream.match("//")) { - stream.skipToEnd() - return "comment" - } else if (stream.match("/*")) { - cx.depth = 2 - return token(stream, state) - } - } - - var style = xmlMode.token(stream, cx.state), cur = stream.current(), stop - if (/\btag\b/.test(style)) { - if (/>$/.test(cur)) { - if (cx.state.context) cx.depth = 0 - else state.context = state.context.prev - } else if (/^ -1) { - stream.backUp(cur.length - stop) - } - return style - } - - function jsToken(stream, state, cx) { - if (stream.peek() == "<" && jsMode.expressionAllowed(stream, cx.state)) { - jsMode.skipExpression(cx.state) - state.context = new Context(CodeMirror.startState(xmlMode, jsMode.indent(cx.state, "")), - xmlMode, 0, state.context) - return null - } - - var style = jsMode.token(stream, cx.state) - if (!style && cx.depth != null) { - var cur = stream.current() - if (cur == "{") { - cx.depth++ - } else if (cur == "}") { - if (--cx.depth == 0) state.context = state.context.prev - } - } - return style - } - - return { - startState: function() { - return {context: new Context(CodeMirror.startState(jsMode), jsMode)} - }, - - copyState: function(state) { - return {context: copyContext(state.context)} - }, - - token: token, - - indent: function(state, textAfter, fullLine) { - return state.context.mode.indent(state.context.state, textAfter, fullLine) - }, - - innerMode: function(state) { - return state.context - } - } - }, "xml", "javascript") - - CodeMirror.defineMIME("text/jsx", "jsx") -}); diff --git a/public/plugins/codemirror-5.17.0/mode/jsx/test.js b/public/plugins/codemirror-5.17.0/mode/jsx/test.js deleted file mode 100644 index c54a8b24c..000000000 --- a/public/plugins/codemirror-5.17.0/mode/jsx/test.js +++ /dev/null @@ -1,69 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function() { - var mode = CodeMirror.getMode({indentUnit: 2}, "jsx") - function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)) } - - MT("selfclose", - "[keyword var] [def x] [operator =] [bracket&tag <] [tag foo] [bracket&tag />] [operator +] [number 1];") - - MT("openclose", - "([bracket&tag <][tag foo][bracket&tag >]hello [atom &][bracket&tag ][operator ++])") - - MT("attr", - "([bracket&tag <][tag foo] [attribute abc]=[string 'value'][bracket&tag >]hello [atom &][bracket&tag ][operator ++])") - - MT("braced_attr", - "([bracket&tag <][tag foo] [attribute abc]={[number 10]}[bracket&tag >]hello [atom &][bracket&tag ][operator ++])") - - MT("braced_text", - "([bracket&tag <][tag foo][bracket&tag >]hello {[number 10]} [atom &][bracket&tag ][operator ++])") - - MT("nested_tag", - "([bracket&tag <][tag foo][bracket&tag ><][tag bar][bracket&tag >][operator ++])") - - MT("nested_jsx", - "[keyword return] (", - " [bracket&tag <][tag foo][bracket&tag >]", - " say {[number 1] [operator +] [bracket&tag <][tag bar] [attribute attr]={[number 10]}[bracket&tag />]}!", - " [bracket&tag ][operator ++]", - ")") - - MT("preserve_js_context", - "[variable x] [operator =] [string-2 `quasi${][bracket&tag <][tag foo][bracket&tag />][string-2 }quoted`]") - - MT("line_comment", - "([bracket&tag <][tag foo] [comment // hello]", - " [bracket&tag >][operator ++])") - - MT("line_comment_not_in_tag", - "([bracket&tag <][tag foo][bracket&tag >] // hello", - " [bracket&tag ][operator ++])") - - MT("block_comment", - "([bracket&tag <][tag foo] [comment /* hello]", - "[comment line 2]", - "[comment line 3 */] [bracket&tag >][operator ++])") - - MT("block_comment_not_in_tag", - "([bracket&tag <][tag foo][bracket&tag >]/* hello", - " line 2", - " line 3 */ [bracket&tag ][operator ++])") - - MT("missing_attr", - "([bracket&tag <][tag foo] [attribute selected][bracket&tag />][operator ++])") - - MT("indent_js", - "([bracket&tag <][tag foo][bracket&tag >]", - " [bracket&tag <][tag bar] [attribute baz]={[keyword function]() {", - " [keyword return] [number 10]", - " }}[bracket&tag />]", - " [bracket&tag ])") - - MT("spread", - "([bracket&tag <][tag foo] [attribute bar]={[meta ...][variable baz] [operator /][number 2]}[bracket&tag />])") - - MT("tag_attribute", - "([bracket&tag <][tag foo] [attribute bar]=[bracket&tag <][tag foo][bracket&tag />/>][operator ++])") -})() diff --git a/public/plugins/codemirror-5.17.0/mode/julia/index.html b/public/plugins/codemirror-5.17.0/mode/julia/index.html deleted file mode 100644 index e1492c210..000000000 --- a/public/plugins/codemirror-5.17.0/mode/julia/index.html +++ /dev/null @@ -1,195 +0,0 @@ - - -CodeMirror: Julia mode - - - - - - - - - -
    -

    Julia mode

    - -
    - - -

    MIME types defined: text/x-julia.

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/julia/julia.js b/public/plugins/codemirror-5.17.0/mode/julia/julia.js deleted file mode 100644 index 004de4431..000000000 --- a/public/plugins/codemirror-5.17.0/mode/julia/julia.js +++ /dev/null @@ -1,392 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("julia", function(_conf, parserConf) { - var ERRORCLASS = 'error'; - - function wordRegexp(words, end) { - if (typeof end === 'undefined') { end = "\\b"; } - return new RegExp("^((" + words.join(")|(") + "))" + end); - } - - var octChar = "\\\\[0-7]{1,3}"; - var hexChar = "\\\\x[A-Fa-f0-9]{1,2}"; - var specialChar = "\\\\[abfnrtv0%?'\"\\\\]"; - var singleChar = "([^\\u0027\\u005C\\uD800-\\uDFFF]|[\\uD800-\\uDFFF][\\uDC00-\\uDFFF])"; - var operators = parserConf.operators || /^\.?[|&^\\%*+\-<>!=\/]=?|\?|~|:|\$|\.[<>]|<<=?|>>>?=?|\.[<>=]=|->?|\/\/|\bin\b(?!\()|[\u2208\u2209](?!\()/; - var delimiters = parserConf.delimiters || /^[;,()[\]{}]/; - var identifiers = parserConf.identifiers || /^[_A-Za-z\u00A1-\uFFFF][\w\u00A1-\uFFFF]*!*/; - var charsList = [octChar, hexChar, specialChar, singleChar]; - var blockOpeners = ["begin", "function", "type", "immutable", "let", "macro", "for", "while", "quote", "if", "else", "elseif", "try", "finally", "catch", "do"]; - var blockClosers = ["end", "else", "elseif", "catch", "finally"]; - var keywordList = ['if', 'else', 'elseif', 'while', 'for', 'begin', 'let', 'end', 'do', 'try', 'catch', 'finally', 'return', 'break', 'continue', 'global', 'local', 'const', 'export', 'import', 'importall', 'using', 'function', 'macro', 'module', 'baremodule', 'type', 'immutable', 'quote', 'typealias', 'abstract', 'bitstype']; - var builtinList = ['true', 'false', 'nothing', 'NaN', 'Inf']; - - //var stringPrefixes = new RegExp("^[br]?('|\")") - var stringPrefixes = /^(`|"{3}|([brv]?"))/; - var chars = wordRegexp(charsList, "'"); - var keywords = wordRegexp(keywordList); - var builtins = wordRegexp(builtinList); - var openers = wordRegexp(blockOpeners); - var closers = wordRegexp(blockClosers); - var macro = /^@[_A-Za-z][\w]*/; - var symbol = /^:[_A-Za-z\u00A1-\uFFFF][\w\u00A1-\uFFFF]*!*/; - var typeAnnotation = /^::[^,;"{()=$\s]+({[^}]*}+)*/; - - function inArray(state) { - var ch = currentScope(state); - if (ch == '[') { - return true; - } - return false; - } - - function currentScope(state) { - if (state.scopes.length == 0) { - return null; - } - return state.scopes[state.scopes.length - 1]; - } - - // tokenizers - function tokenBase(stream, state) { - // Handle multiline comments - if (stream.match(/^#=/, false)) { - state.tokenize = tokenComment; - return state.tokenize(stream, state); - } - - // Handle scope changes - var leavingExpr = state.leavingExpr; - if (stream.sol()) { - leavingExpr = false; - } - state.leavingExpr = false; - if (leavingExpr) { - if (stream.match(/^'+/)) { - return 'operator'; - } - } - - if (stream.match(/^\.{2,3}/)) { - return 'operator'; - } - - if (stream.eatSpace()) { - return null; - } - - var ch = stream.peek(); - - // Handle single line comments - if (ch === '#') { - stream.skipToEnd(); - return 'comment'; - } - - if (ch === '[') { - state.scopes.push('['); - } - - if (ch === '(') { - state.scopes.push('('); - } - - var scope = currentScope(state); - - if (scope == '[' && ch === ']') { - state.scopes.pop(); - state.leavingExpr = true; - } - - if (scope == '(' && ch === ')') { - state.scopes.pop(); - state.leavingExpr = true; - } - - var match; - if (!inArray(state) && (match=stream.match(openers, false))) { - state.scopes.push(match); - } - - if (!inArray(state) && stream.match(closers, false)) { - state.scopes.pop(); - } - - if (inArray(state)) { - if (state.lastToken == 'end' && stream.match(/^:/)) { - return 'operator'; - } - if (stream.match(/^end/)) { - return 'number'; - } - } - - if (stream.match(/^=>/)) { - return 'operator'; - } - - // Handle Number Literals - if (stream.match(/^[0-9\.]/, false)) { - var imMatcher = RegExp(/^im\b/); - var numberLiteral = false; - // Floats - if (stream.match(/^\d*\.(?!\.)\d*([Eef][\+\-]?\d+)?/i)) { numberLiteral = true; } - if (stream.match(/^\d+\.(?!\.)\d*/)) { numberLiteral = true; } - if (stream.match(/^\.\d+/)) { numberLiteral = true; } - if (stream.match(/^0x\.[0-9a-f]+p[\+\-]?\d+/i)) { numberLiteral = true; } - // Integers - if (stream.match(/^0x[0-9a-f]+/i)) { numberLiteral = true; } // Hex - if (stream.match(/^0b[01]+/i)) { numberLiteral = true; } // Binary - if (stream.match(/^0o[0-7]+/i)) { numberLiteral = true; } // Octal - if (stream.match(/^[1-9]\d*(e[\+\-]?\d+)?/)) { numberLiteral = true; } // Decimal - // Zero by itself with no other piece of number. - if (stream.match(/^0(?![\dx])/i)) { numberLiteral = true; } - if (numberLiteral) { - // Integer literals may be "long" - stream.match(imMatcher); - state.leavingExpr = true; - return 'number'; - } - } - - if (stream.match(/^<:/)) { - return 'operator'; - } - - if (stream.match(typeAnnotation)) { - return 'builtin'; - } - - // Handle symbols - if (!leavingExpr && stream.match(symbol) || stream.match(/:\./)) { - return 'builtin'; - } - - // Handle parametric types - if (stream.match(/^{[^}]*}(?=\()/)) { - return 'builtin'; - } - - // Handle operators and Delimiters - if (stream.match(operators)) { - return 'operator'; - } - - // Handle Chars - if (stream.match(/^'/)) { - state.tokenize = tokenChar; - return state.tokenize(stream, state); - } - - // Handle Strings - if (stream.match(stringPrefixes)) { - state.tokenize = tokenStringFactory(stream.current()); - return state.tokenize(stream, state); - } - - if (stream.match(macro)) { - return 'meta'; - } - - if (stream.match(delimiters)) { - return null; - } - - if (stream.match(keywords)) { - return 'keyword'; - } - - if (stream.match(builtins)) { - return 'builtin'; - } - - var isDefinition = state.isDefinition || - state.lastToken == 'function' || - state.lastToken == 'macro' || - state.lastToken == 'type' || - state.lastToken == 'immutable'; - - if (stream.match(identifiers)) { - if (isDefinition) { - if (stream.peek() === '.') { - state.isDefinition = true; - return 'variable'; - } - state.isDefinition = false; - return 'def'; - } - if (stream.match(/^({[^}]*})*\(/, false)) { - return callOrDef(stream, state); - } - state.leavingExpr = true; - return 'variable'; - } - - // Handle non-detected items - stream.next(); - return ERRORCLASS; - } - - function callOrDef(stream, state) { - var match = stream.match(/^(\(\s*)/); - if (match) { - if (state.firstParenPos < 0) - state.firstParenPos = state.scopes.length; - state.scopes.push('('); - state.charsAdvanced += match[1].length; - } - if (currentScope(state) == '(' && stream.match(/^\)/)) { - state.scopes.pop(); - state.charsAdvanced += 1; - if (state.scopes.length <= state.firstParenPos) { - var isDefinition = stream.match(/^\s*?=(?!=)/, false); - stream.backUp(state.charsAdvanced); - state.firstParenPos = -1; - state.charsAdvanced = 0; - if (isDefinition) - return 'def'; - return 'builtin'; - } - } - // Unfortunately javascript does not support multiline strings, so we have - // to undo anything done upto here if a function call or definition splits - // over two or more lines. - if (stream.match(/^$/g, false)) { - stream.backUp(state.charsAdvanced); - while (state.scopes.length > state.firstParenPos) - state.scopes.pop(); - state.firstParenPos = -1; - state.charsAdvanced = 0; - return 'builtin'; - } - state.charsAdvanced += stream.match(/^([^()]*)/)[1].length; - return callOrDef(stream, state); - } - - function tokenComment(stream, state) { - if (stream.match(/^#=/)) { - state.weakScopes++; - } - if (!stream.match(/.*?(?=(#=|=#))/)) { - stream.skipToEnd(); - } - if (stream.match(/^=#/)) { - state.weakScopes--; - if (state.weakScopes == 0) - state.tokenize = tokenBase; - } - return 'comment'; - } - - function tokenChar(stream, state) { - var isChar = false, match; - if (stream.match(chars)) { - isChar = true; - } else if (match = stream.match(/\\u([a-f0-9]{1,4})(?=')/i)) { - var value = parseInt(match[1], 16); - if (value <= 55295 || value >= 57344) { // (U+0,U+D7FF), (U+E000,U+FFFF) - isChar = true; - stream.next(); - } - } else if (match = stream.match(/\\U([A-Fa-f0-9]{5,8})(?=')/)) { - var value = parseInt(match[1], 16); - if (value <= 1114111) { // U+10FFFF - isChar = true; - stream.next(); - } - } - if (isChar) { - state.leavingExpr = true; - state.tokenize = tokenBase; - return 'string'; - } - if (!stream.match(/^[^']+(?=')/)) { stream.skipToEnd(); } - if (stream.match(/^'/)) { state.tokenize = tokenBase; } - return ERRORCLASS; - } - - function tokenStringFactory(delimiter) { - while ('bruv'.indexOf(delimiter.charAt(0).toLowerCase()) >= 0) { - delimiter = delimiter.substr(1); - } - var OUTCLASS = 'string'; - - function tokenString(stream, state) { - while (!stream.eol()) { - stream.eatWhile(/[^"\\]/); - if (stream.eat('\\')) { - stream.next(); - } else if (stream.match(delimiter)) { - state.tokenize = tokenBase; - state.leavingExpr = true; - return OUTCLASS; - } else { - stream.eat(/["]/); - } - } - return OUTCLASS; - } - tokenString.isString = true; - return tokenString; - } - - var external = { - startState: function() { - return { - tokenize: tokenBase, - scopes: [], - weakScopes: 0, - lastToken: null, - leavingExpr: false, - isDefinition: false, - charsAdvanced: 0, - firstParenPos: -1 - }; - }, - - token: function(stream, state) { - var style = state.tokenize(stream, state); - var current = stream.current(); - - if (current && style) { - state.lastToken = current; - } - - // Handle '.' connected identifiers - if (current === '.') { - style = stream.match(identifiers, false) || stream.match(macro, false) || - stream.match(/\(/, false) ? 'operator' : ERRORCLASS; - } - return style; - }, - - indent: function(state, textAfter) { - var delta = 0; - if (textAfter == "]" || textAfter == ")" || textAfter == "end" || textAfter == "else" || textAfter == "elseif" || textAfter == "catch" || textAfter == "finally") { - delta = -1; - } - return (state.scopes.length + delta) * _conf.indentUnit; - }, - - electricInput: /(end|else(if)?|catch|finally)$/, - lineComment: "#", - fold: "indent" - }; - return external; -}); - - -CodeMirror.defineMIME("text/x-julia", "julia"); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/livescript/index.html b/public/plugins/codemirror-5.17.0/mode/livescript/index.html deleted file mode 100644 index f41547987..000000000 --- a/public/plugins/codemirror-5.17.0/mode/livescript/index.html +++ /dev/null @@ -1,459 +0,0 @@ - - -CodeMirror: LiveScript mode - - - - - - - - - - -
    -

    LiveScript mode

    -
    - - -

    MIME types defined: text/x-livescript.

    - -

    The LiveScript mode was written by Kenneth Bentley.

    - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/livescript/livescript.js b/public/plugins/codemirror-5.17.0/mode/livescript/livescript.js deleted file mode 100644 index 4b26e0461..000000000 --- a/public/plugins/codemirror-5.17.0/mode/livescript/livescript.js +++ /dev/null @@ -1,280 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -/** - * Link to the project's GitHub page: - * https://github.com/duralog/CodeMirror - */ - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - CodeMirror.defineMode('livescript', function(){ - var tokenBase = function(stream, state) { - var next_rule = state.next || "start"; - if (next_rule) { - state.next = state.next; - var nr = Rules[next_rule]; - if (nr.splice) { - for (var i$ = 0; i$ < nr.length; ++i$) { - var r = nr[i$]; - if (r.regex && stream.match(r.regex)) { - state.next = r.next || state.next; - return r.token; - } - } - stream.next(); - return 'error'; - } - if (stream.match(r = Rules[next_rule])) { - if (r.regex && stream.match(r.regex)) { - state.next = r.next; - return r.token; - } else { - stream.next(); - return 'error'; - } - } - } - stream.next(); - return 'error'; - }; - var external = { - startState: function(){ - return { - next: 'start', - lastToken: null - }; - }, - token: function(stream, state){ - while (stream.pos == stream.start) - var style = tokenBase(stream, state); - state.lastToken = { - style: style, - indent: stream.indentation(), - content: stream.current() - }; - return style.replace(/\./g, ' '); - }, - indent: function(state){ - var indentation = state.lastToken.indent; - if (state.lastToken.content.match(indenter)) { - indentation += 2; - } - return indentation; - } - }; - return external; - }); - - var identifier = '(?![\\d\\s])[$\\w\\xAA-\\uFFDC](?:(?!\\s)[$\\w\\xAA-\\uFFDC]|-[A-Za-z])*'; - var indenter = RegExp('(?:[({[=:]|[-~]>|\\b(?:e(?:lse|xport)|d(?:o|efault)|t(?:ry|hen)|finally|import(?:\\s*all)?|const|var|let|new|catch(?:\\s*' + identifier + ')?))\\s*$'); - var keywordend = '(?![$\\w]|-[A-Za-z]|\\s*:(?![:=]))'; - var stringfill = { - token: 'string', - regex: '.+' - }; - var Rules = { - start: [ - { - token: 'comment.doc', - regex: '/\\*', - next: 'comment' - }, { - token: 'comment', - regex: '#.*' - }, { - token: 'keyword', - regex: '(?:t(?:h(?:is|row|en)|ry|ypeof!?)|c(?:on(?:tinue|st)|a(?:se|tch)|lass)|i(?:n(?:stanceof)?|mp(?:ort(?:\\s+all)?|lements)|[fs])|d(?:e(?:fault|lete|bugger)|o)|f(?:or(?:\\s+own)?|inally|unction)|s(?:uper|witch)|e(?:lse|x(?:tends|port)|val)|a(?:nd|rguments)|n(?:ew|ot)|un(?:less|til)|w(?:hile|ith)|o[fr]|return|break|let|var|loop)' + keywordend - }, { - token: 'constant.language', - regex: '(?:true|false|yes|no|on|off|null|void|undefined)' + keywordend - }, { - token: 'invalid.illegal', - regex: '(?:p(?:ackage|r(?:ivate|otected)|ublic)|i(?:mplements|nterface)|enum|static|yield)' + keywordend - }, { - token: 'language.support.class', - regex: '(?:R(?:e(?:gExp|ferenceError)|angeError)|S(?:tring|yntaxError)|E(?:rror|valError)|Array|Boolean|Date|Function|Number|Object|TypeError|URIError)' + keywordend - }, { - token: 'language.support.function', - regex: '(?:is(?:NaN|Finite)|parse(?:Int|Float)|Math|JSON|(?:en|de)codeURI(?:Component)?)' + keywordend - }, { - token: 'variable.language', - regex: '(?:t(?:hat|il|o)|f(?:rom|allthrough)|it|by|e)' + keywordend - }, { - token: 'identifier', - regex: identifier + '\\s*:(?![:=])' - }, { - token: 'variable', - regex: identifier - }, { - token: 'keyword.operator', - regex: '(?:\\.{3}|\\s+\\?)' - }, { - token: 'keyword.variable', - regex: '(?:@+|::|\\.\\.)', - next: 'key' - }, { - token: 'keyword.operator', - regex: '\\.\\s*', - next: 'key' - }, { - token: 'string', - regex: '\\\\\\S[^\\s,;)}\\]]*' - }, { - token: 'string.doc', - regex: '\'\'\'', - next: 'qdoc' - }, { - token: 'string.doc', - regex: '"""', - next: 'qqdoc' - }, { - token: 'string', - regex: '\'', - next: 'qstring' - }, { - token: 'string', - regex: '"', - next: 'qqstring' - }, { - token: 'string', - regex: '`', - next: 'js' - }, { - token: 'string', - regex: '<\\[', - next: 'words' - }, { - token: 'string.regex', - regex: '//', - next: 'heregex' - }, { - token: 'string.regex', - regex: '\\/(?:[^[\\/\\n\\\\]*(?:(?:\\\\.|\\[[^\\]\\n\\\\]*(?:\\\\.[^\\]\\n\\\\]*)*\\])[^[\\/\\n\\\\]*)*)\\/[gimy$]{0,4}', - next: 'key' - }, { - token: 'constant.numeric', - regex: '(?:0x[\\da-fA-F][\\da-fA-F_]*|(?:[2-9]|[12]\\d|3[0-6])r[\\da-zA-Z][\\da-zA-Z_]*|(?:\\d[\\d_]*(?:\\.\\d[\\d_]*)?|\\.\\d[\\d_]*)(?:e[+-]?\\d[\\d_]*)?[\\w$]*)' - }, { - token: 'lparen', - regex: '[({[]' - }, { - token: 'rparen', - regex: '[)}\\]]', - next: 'key' - }, { - token: 'keyword.operator', - regex: '\\S+' - }, { - token: 'text', - regex: '\\s+' - } - ], - heregex: [ - { - token: 'string.regex', - regex: '.*?//[gimy$?]{0,4}', - next: 'start' - }, { - token: 'string.regex', - regex: '\\s*#{' - }, { - token: 'comment.regex', - regex: '\\s+(?:#.*)?' - }, { - token: 'string.regex', - regex: '\\S+' - } - ], - key: [ - { - token: 'keyword.operator', - regex: '[.?@!]+' - }, { - token: 'identifier', - regex: identifier, - next: 'start' - }, { - token: 'text', - regex: '', - next: 'start' - } - ], - comment: [ - { - token: 'comment.doc', - regex: '.*?\\*/', - next: 'start' - }, { - token: 'comment.doc', - regex: '.+' - } - ], - qdoc: [ - { - token: 'string', - regex: ".*?'''", - next: 'key' - }, stringfill - ], - qqdoc: [ - { - token: 'string', - regex: '.*?"""', - next: 'key' - }, stringfill - ], - qstring: [ - { - token: 'string', - regex: '[^\\\\\']*(?:\\\\.[^\\\\\']*)*\'', - next: 'key' - }, stringfill - ], - qqstring: [ - { - token: 'string', - regex: '[^\\\\"]*(?:\\\\.[^\\\\"]*)*"', - next: 'key' - }, stringfill - ], - js: [ - { - token: 'string', - regex: '[^\\\\`]*(?:\\\\.[^\\\\`]*)*`', - next: 'key' - }, stringfill - ], - words: [ - { - token: 'string', - regex: '.*?\\]>', - next: 'key' - }, stringfill - ] - }; - for (var idx in Rules) { - var r = Rules[idx]; - if (r.splice) { - for (var i = 0, len = r.length; i < len; ++i) { - var rr = r[i]; - if (typeof rr.regex === 'string') { - Rules[idx][i].regex = new RegExp('^' + rr.regex); - } - } - } else if (typeof rr.regex === 'string') { - Rules[idx].regex = new RegExp('^' + r.regex); - } - } - - CodeMirror.defineMIME('text/x-livescript', 'livescript'); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/lua/index.html b/public/plugins/codemirror-5.17.0/mode/lua/index.html deleted file mode 100644 index fc98b9446..000000000 --- a/public/plugins/codemirror-5.17.0/mode/lua/index.html +++ /dev/null @@ -1,85 +0,0 @@ - - -CodeMirror: Lua mode - - - - - - - - - - - -
    -

    Lua mode

    -
    - - -

    Loosely based on Franciszek - Wawrzak's CodeMirror - 1 mode. One configuration parameter is - supported, specials, to which you can provide an - array of strings to have those identifiers highlighted with - the lua-special style.

    -

    MIME types defined: text/x-lua.

    - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/lua/lua.js b/public/plugins/codemirror-5.17.0/mode/lua/lua.js deleted file mode 100644 index 0b19abd30..000000000 --- a/public/plugins/codemirror-5.17.0/mode/lua/lua.js +++ /dev/null @@ -1,159 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -// LUA mode. Ported to CodeMirror 2 from Franciszek Wawrzak's -// CodeMirror 1 mode. -// highlights keywords, strings, comments (no leveling supported! ("[==[")), tokens, basic indenting - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("lua", function(config, parserConfig) { - var indentUnit = config.indentUnit; - - function prefixRE(words) { - return new RegExp("^(?:" + words.join("|") + ")", "i"); - } - function wordRE(words) { - return new RegExp("^(?:" + words.join("|") + ")$", "i"); - } - var specials = wordRE(parserConfig.specials || []); - - // long list of standard functions from lua manual - var builtins = wordRE([ - "_G","_VERSION","assert","collectgarbage","dofile","error","getfenv","getmetatable","ipairs","load", - "loadfile","loadstring","module","next","pairs","pcall","print","rawequal","rawget","rawset","require", - "select","setfenv","setmetatable","tonumber","tostring","type","unpack","xpcall", - - "coroutine.create","coroutine.resume","coroutine.running","coroutine.status","coroutine.wrap","coroutine.yield", - - "debug.debug","debug.getfenv","debug.gethook","debug.getinfo","debug.getlocal","debug.getmetatable", - "debug.getregistry","debug.getupvalue","debug.setfenv","debug.sethook","debug.setlocal","debug.setmetatable", - "debug.setupvalue","debug.traceback", - - "close","flush","lines","read","seek","setvbuf","write", - - "io.close","io.flush","io.input","io.lines","io.open","io.output","io.popen","io.read","io.stderr","io.stdin", - "io.stdout","io.tmpfile","io.type","io.write", - - "math.abs","math.acos","math.asin","math.atan","math.atan2","math.ceil","math.cos","math.cosh","math.deg", - "math.exp","math.floor","math.fmod","math.frexp","math.huge","math.ldexp","math.log","math.log10","math.max", - "math.min","math.modf","math.pi","math.pow","math.rad","math.random","math.randomseed","math.sin","math.sinh", - "math.sqrt","math.tan","math.tanh", - - "os.clock","os.date","os.difftime","os.execute","os.exit","os.getenv","os.remove","os.rename","os.setlocale", - "os.time","os.tmpname", - - "package.cpath","package.loaded","package.loaders","package.loadlib","package.path","package.preload", - "package.seeall", - - "string.byte","string.char","string.dump","string.find","string.format","string.gmatch","string.gsub", - "string.len","string.lower","string.match","string.rep","string.reverse","string.sub","string.upper", - - "table.concat","table.insert","table.maxn","table.remove","table.sort" - ]); - var keywords = wordRE(["and","break","elseif","false","nil","not","or","return", - "true","function", "end", "if", "then", "else", "do", - "while", "repeat", "until", "for", "in", "local" ]); - - var indentTokens = wordRE(["function", "if","repeat","do", "\\(", "{"]); - var dedentTokens = wordRE(["end", "until", "\\)", "}"]); - var dedentPartial = prefixRE(["end", "until", "\\)", "}", "else", "elseif"]); - - function readBracket(stream) { - var level = 0; - while (stream.eat("=")) ++level; - stream.eat("["); - return level; - } - - function normal(stream, state) { - var ch = stream.next(); - if (ch == "-" && stream.eat("-")) { - if (stream.eat("[") && stream.eat("[")) - return (state.cur = bracketed(readBracket(stream), "comment"))(stream, state); - stream.skipToEnd(); - return "comment"; - } - if (ch == "\"" || ch == "'") - return (state.cur = string(ch))(stream, state); - if (ch == "[" && /[\[=]/.test(stream.peek())) - return (state.cur = bracketed(readBracket(stream), "string"))(stream, state); - if (/\d/.test(ch)) { - stream.eatWhile(/[\w.%]/); - return "number"; - } - if (/[\w_]/.test(ch)) { - stream.eatWhile(/[\w\\\-_.]/); - return "variable"; - } - return null; - } - - function bracketed(level, style) { - return function(stream, state) { - var curlev = null, ch; - while ((ch = stream.next()) != null) { - if (curlev == null) {if (ch == "]") curlev = 0;} - else if (ch == "=") ++curlev; - else if (ch == "]" && curlev == level) { state.cur = normal; break; } - else curlev = null; - } - return style; - }; - } - - function string(quote) { - return function(stream, state) { - var escaped = false, ch; - while ((ch = stream.next()) != null) { - if (ch == quote && !escaped) break; - escaped = !escaped && ch == "\\"; - } - if (!escaped) state.cur = normal; - return "string"; - }; - } - - return { - startState: function(basecol) { - return {basecol: basecol || 0, indentDepth: 0, cur: normal}; - }, - - token: function(stream, state) { - if (stream.eatSpace()) return null; - var style = state.cur(stream, state); - var word = stream.current(); - if (style == "variable") { - if (keywords.test(word)) style = "keyword"; - else if (builtins.test(word)) style = "builtin"; - else if (specials.test(word)) style = "variable-2"; - } - if ((style != "comment") && (style != "string")){ - if (indentTokens.test(word)) ++state.indentDepth; - else if (dedentTokens.test(word)) --state.indentDepth; - } - return style; - }, - - indent: function(state, textAfter) { - var closing = dedentPartial.test(textAfter); - return state.basecol + indentUnit * (state.indentDepth - (closing ? 1 : 0)); - }, - - lineComment: "--", - blockCommentStart: "--[[", - blockCommentEnd: "]]" - }; -}); - -CodeMirror.defineMIME("text/x-lua", "lua"); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/markdown/index.html b/public/plugins/codemirror-5.17.0/mode/markdown/index.html deleted file mode 100644 index 15660c261..000000000 --- a/public/plugins/codemirror-5.17.0/mode/markdown/index.html +++ /dev/null @@ -1,361 +0,0 @@ - - -CodeMirror: Markdown mode - - - - - - - - - - - -
    -

    Markdown mode

    -
    - - - -

    You might want to use the Github-Flavored Markdown mode instead, which adds support for fenced code blocks and a few other things.

    - -

    Optionally depends on the XML mode for properly highlighted inline XML blocks.

    - -

    MIME types defined: text/x-markdown.

    - -

    Parsing/Highlighting Tests: normal, verbose.

    - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/markdown/markdown.js b/public/plugins/codemirror-5.17.0/mode/markdown/markdown.js deleted file mode 100644 index 9dd44574f..000000000 --- a/public/plugins/codemirror-5.17.0/mode/markdown/markdown.js +++ /dev/null @@ -1,819 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror"), require("../xml/xml"), require("../meta")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../xml/xml", "../meta"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("markdown", function(cmCfg, modeCfg) { - - var htmlMode = CodeMirror.getMode(cmCfg, "text/html"); - var htmlModeMissing = htmlMode.name == "null" - - function getMode(name) { - if (CodeMirror.findModeByName) { - var found = CodeMirror.findModeByName(name); - if (found) name = found.mime || found.mimes[0]; - } - var mode = CodeMirror.getMode(cmCfg, name); - return mode.name == "null" ? null : mode; - } - - // Should characters that affect highlighting be highlighted separate? - // Does not include characters that will be output (such as `1.` and `-` for lists) - if (modeCfg.highlightFormatting === undefined) - modeCfg.highlightFormatting = false; - - // Maximum number of nested blockquotes. Set to 0 for infinite nesting. - // Excess `>` will emit `error` token. - if (modeCfg.maxBlockquoteDepth === undefined) - modeCfg.maxBlockquoteDepth = 0; - - // Should underscores in words open/close em/strong? - if (modeCfg.underscoresBreakWords === undefined) - modeCfg.underscoresBreakWords = true; - - // Use `fencedCodeBlocks` to configure fenced code blocks. false to - // disable, string to specify a precise regexp that the fence should - // match, and true to allow three or more backticks or tildes (as - // per CommonMark). - - // Turn on task lists? ("- [ ] " and "- [x] ") - if (modeCfg.taskLists === undefined) modeCfg.taskLists = false; - - // Turn on strikethrough syntax - if (modeCfg.strikethrough === undefined) - modeCfg.strikethrough = false; - - // Allow token types to be overridden by user-provided token types. - if (modeCfg.tokenTypeOverrides === undefined) - modeCfg.tokenTypeOverrides = {}; - - var tokenTypes = { - header: "header", - code: "comment", - quote: "quote", - list1: "variable-2", - list2: "variable-3", - list3: "keyword", - hr: "hr", - image: "image", - imageAltText: "image-alt-text", - imageMarker: "image-marker", - formatting: "formatting", - linkInline: "link", - linkEmail: "link", - linkText: "link", - linkHref: "string", - em: "em", - strong: "strong", - strikethrough: "strikethrough" - }; - - for (var tokenType in tokenTypes) { - if (tokenTypes.hasOwnProperty(tokenType) && modeCfg.tokenTypeOverrides[tokenType]) { - tokenTypes[tokenType] = modeCfg.tokenTypeOverrides[tokenType]; - } - } - - var hrRE = /^([*\-_])(?:\s*\1){2,}\s*$/ - , ulRE = /^[*\-+]\s+/ - , olRE = /^[0-9]+([.)])\s+/ - , taskListRE = /^\[(x| )\](?=\s)/ // Must follow ulRE or olRE - , atxHeaderRE = modeCfg.allowAtxHeaderWithoutSpace ? /^(#+)/ : /^(#+)(?: |$)/ - , setextHeaderRE = /^ *(?:\={1,}|-{1,})\s*$/ - , textRE = /^[^#!\[\]*_\\<>` "'(~]+/ - , fencedCodeRE = new RegExp("^(" + (modeCfg.fencedCodeBlocks === true ? "~~~+|```+" : modeCfg.fencedCodeBlocks) + - ")[ \\t]*([\\w+#\-]*)"); - - function switchInline(stream, state, f) { - state.f = state.inline = f; - return f(stream, state); - } - - function switchBlock(stream, state, f) { - state.f = state.block = f; - return f(stream, state); - } - - function lineIsEmpty(line) { - return !line || !/\S/.test(line.string) - } - - // Blocks - - function blankLine(state) { - // Reset linkTitle state - state.linkTitle = false; - // Reset EM state - state.em = false; - // Reset STRONG state - state.strong = false; - // Reset strikethrough state - state.strikethrough = false; - // Reset state.quote - state.quote = 0; - // Reset state.indentedCode - state.indentedCode = false; - if (htmlModeMissing && state.f == htmlBlock) { - state.f = inlineNormal; - state.block = blockNormal; - } - // Reset state.trailingSpace - state.trailingSpace = 0; - state.trailingSpaceNewLine = false; - // Mark this line as blank - state.prevLine = state.thisLine - state.thisLine = null - return null; - } - - function blockNormal(stream, state) { - - var sol = stream.sol(); - - var prevLineIsList = state.list !== false, - prevLineIsIndentedCode = state.indentedCode; - - state.indentedCode = false; - - if (prevLineIsList) { - if (state.indentationDiff >= 0) { // Continued list - if (state.indentationDiff < 4) { // Only adjust indentation if *not* a code block - state.indentation -= state.indentationDiff; - } - state.list = null; - } else if (state.indentation > 0) { - state.list = null; - } else { // No longer a list - state.list = false; - } - } - - var match = null; - if (state.indentationDiff >= 4) { - stream.skipToEnd(); - if (prevLineIsIndentedCode || lineIsEmpty(state.prevLine)) { - state.indentation -= 4; - state.indentedCode = true; - return tokenTypes.code; - } else { - return null; - } - } else if (stream.eatSpace()) { - return null; - } else if ((match = stream.match(atxHeaderRE)) && match[1].length <= 6) { - state.header = match[1].length; - if (modeCfg.highlightFormatting) state.formatting = "header"; - state.f = state.inline; - return getType(state); - } else if (!lineIsEmpty(state.prevLine) && !state.quote && !prevLineIsList && - !prevLineIsIndentedCode && (match = stream.match(setextHeaderRE))) { - state.header = match[0].charAt(0) == '=' ? 1 : 2; - if (modeCfg.highlightFormatting) state.formatting = "header"; - state.f = state.inline; - return getType(state); - } else if (stream.eat('>')) { - state.quote = sol ? 1 : state.quote + 1; - if (modeCfg.highlightFormatting) state.formatting = "quote"; - stream.eatSpace(); - return getType(state); - } else if (stream.peek() === '[') { - return switchInline(stream, state, footnoteLink); - } else if (stream.match(hrRE, true)) { - state.hr = true; - return tokenTypes.hr; - } else if ((lineIsEmpty(state.prevLine) || prevLineIsList) && (stream.match(ulRE, false) || stream.match(olRE, false))) { - var listType = null; - if (stream.match(ulRE, true)) { - listType = 'ul'; - } else { - stream.match(olRE, true); - listType = 'ol'; - } - state.indentation = stream.column() + stream.current().length; - state.list = true; - - // While this list item's marker's indentation - // is less than the deepest list item's content's indentation, - // pop the deepest list item indentation off the stack. - while (state.listStack && stream.column() < state.listStack[state.listStack.length - 1]) { - state.listStack.pop(); - } - - // Add this list item's content's indentation to the stack - state.listStack.push(state.indentation); - - if (modeCfg.taskLists && stream.match(taskListRE, false)) { - state.taskList = true; - } - state.f = state.inline; - if (modeCfg.highlightFormatting) state.formatting = ["list", "list-" + listType]; - return getType(state); - } else if (modeCfg.fencedCodeBlocks && (match = stream.match(fencedCodeRE, true))) { - state.fencedChars = match[1] - // try switching mode - state.localMode = getMode(match[2]); - if (state.localMode) state.localState = CodeMirror.startState(state.localMode); - state.f = state.block = local; - if (modeCfg.highlightFormatting) state.formatting = "code-block"; - state.code = -1 - return getType(state); - } - - return switchInline(stream, state, state.inline); - } - - function htmlBlock(stream, state) { - var style = htmlMode.token(stream, state.htmlState); - if (!htmlModeMissing) { - var inner = CodeMirror.innerMode(htmlMode, state.htmlState) - if ((inner.mode.name == "xml" && inner.state.tagStart === null && - (!inner.state.context && inner.state.tokenize.isInText)) || - (state.md_inside && stream.current().indexOf(">") > -1)) { - state.f = inlineNormal; - state.block = blockNormal; - state.htmlState = null; - } - } - return style; - } - - function local(stream, state) { - if (state.fencedChars && stream.match(state.fencedChars, false)) { - state.localMode = state.localState = null; - state.f = state.block = leavingLocal; - return null; - } else if (state.localMode) { - return state.localMode.token(stream, state.localState); - } else { - stream.skipToEnd(); - return tokenTypes.code; - } - } - - function leavingLocal(stream, state) { - stream.match(state.fencedChars); - state.block = blockNormal; - state.f = inlineNormal; - state.fencedChars = null; - if (modeCfg.highlightFormatting) state.formatting = "code-block"; - state.code = 1 - var returnType = getType(state); - state.code = 0 - return returnType; - } - - // Inline - function getType(state) { - var styles = []; - - if (state.formatting) { - styles.push(tokenTypes.formatting); - - if (typeof state.formatting === "string") state.formatting = [state.formatting]; - - for (var i = 0; i < state.formatting.length; i++) { - styles.push(tokenTypes.formatting + "-" + state.formatting[i]); - - if (state.formatting[i] === "header") { - styles.push(tokenTypes.formatting + "-" + state.formatting[i] + "-" + state.header); - } - - // Add `formatting-quote` and `formatting-quote-#` for blockquotes - // Add `error` instead if the maximum blockquote nesting depth is passed - if (state.formatting[i] === "quote") { - if (!modeCfg.maxBlockquoteDepth || modeCfg.maxBlockquoteDepth >= state.quote) { - styles.push(tokenTypes.formatting + "-" + state.formatting[i] + "-" + state.quote); - } else { - styles.push("error"); - } - } - } - } - - if (state.taskOpen) { - styles.push("meta"); - return styles.length ? styles.join(' ') : null; - } - if (state.taskClosed) { - styles.push("property"); - return styles.length ? styles.join(' ') : null; - } - - if (state.linkHref) { - styles.push(tokenTypes.linkHref, "url"); - } else { // Only apply inline styles to non-url text - if (state.strong) { styles.push(tokenTypes.strong); } - if (state.em) { styles.push(tokenTypes.em); } - if (state.strikethrough) { styles.push(tokenTypes.strikethrough); } - if (state.linkText) { styles.push(tokenTypes.linkText); } - if (state.code) { styles.push(tokenTypes.code); } - if (state.image) { styles.push(tokenTypes.image); } - if (state.imageAltText) { styles.push(tokenTypes.imageAltText, "link"); } - if (state.imageMarker) { styles.push(tokenTypes.imageMarker); } - } - - if (state.header) { styles.push(tokenTypes.header, tokenTypes.header + "-" + state.header); } - - if (state.quote) { - styles.push(tokenTypes.quote); - - // Add `quote-#` where the maximum for `#` is modeCfg.maxBlockquoteDepth - if (!modeCfg.maxBlockquoteDepth || modeCfg.maxBlockquoteDepth >= state.quote) { - styles.push(tokenTypes.quote + "-" + state.quote); - } else { - styles.push(tokenTypes.quote + "-" + modeCfg.maxBlockquoteDepth); - } - } - - if (state.list !== false) { - var listMod = (state.listStack.length - 1) % 3; - if (!listMod) { - styles.push(tokenTypes.list1); - } else if (listMod === 1) { - styles.push(tokenTypes.list2); - } else { - styles.push(tokenTypes.list3); - } - } - - if (state.trailingSpaceNewLine) { - styles.push("trailing-space-new-line"); - } else if (state.trailingSpace) { - styles.push("trailing-space-" + (state.trailingSpace % 2 ? "a" : "b")); - } - - return styles.length ? styles.join(' ') : null; - } - - function handleText(stream, state) { - if (stream.match(textRE, true)) { - return getType(state); - } - return undefined; - } - - function inlineNormal(stream, state) { - var style = state.text(stream, state); - if (typeof style !== 'undefined') - return style; - - if (state.list) { // List marker (*, +, -, 1., etc) - state.list = null; - return getType(state); - } - - if (state.taskList) { - var taskOpen = stream.match(taskListRE, true)[1] !== "x"; - if (taskOpen) state.taskOpen = true; - else state.taskClosed = true; - if (modeCfg.highlightFormatting) state.formatting = "task"; - state.taskList = false; - return getType(state); - } - - state.taskOpen = false; - state.taskClosed = false; - - if (state.header && stream.match(/^#+$/, true)) { - if (modeCfg.highlightFormatting) state.formatting = "header"; - return getType(state); - } - - // Get sol() value now, before character is consumed - var sol = stream.sol(); - - var ch = stream.next(); - - // Matches link titles present on next line - if (state.linkTitle) { - state.linkTitle = false; - var matchCh = ch; - if (ch === '(') { - matchCh = ')'; - } - matchCh = (matchCh+'').replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1"); - var regex = '^\\s*(?:[^' + matchCh + '\\\\]+|\\\\\\\\|\\\\.)' + matchCh; - if (stream.match(new RegExp(regex), true)) { - return tokenTypes.linkHref; - } - } - - // If this block is changed, it may need to be updated in GFM mode - if (ch === '`') { - var previousFormatting = state.formatting; - if (modeCfg.highlightFormatting) state.formatting = "code"; - stream.eatWhile('`'); - var count = stream.current().length - if (state.code == 0) { - state.code = count - return getType(state) - } else if (count == state.code) { // Must be exact - var t = getType(state) - state.code = 0 - return t - } else { - state.formatting = previousFormatting - return getType(state) - } - } else if (state.code) { - return getType(state); - } - - if (ch === '\\') { - stream.next(); - if (modeCfg.highlightFormatting) { - var type = getType(state); - var formattingEscape = tokenTypes.formatting + "-escape"; - return type ? type + " " + formattingEscape : formattingEscape; - } - } - - if (ch === '!' && stream.match(/\[[^\]]*\] ?(?:\(|\[)/, false)) { - state.imageMarker = true; - state.image = true; - if (modeCfg.highlightFormatting) state.formatting = "image"; - return getType(state); - } - - if (ch === '[' && state.imageMarker) { - state.imageMarker = false; - state.imageAltText = true - if (modeCfg.highlightFormatting) state.formatting = "image"; - return getType(state); - } - - if (ch === ']' && state.imageAltText) { - if (modeCfg.highlightFormatting) state.formatting = "image"; - var type = getType(state); - state.imageAltText = false; - state.image = false; - state.inline = state.f = linkHref; - return type; - } - - if (ch === '[' && stream.match(/[^\]]*\](\(.*\)| ?\[.*?\])/, false) && !state.image) { - state.linkText = true; - if (modeCfg.highlightFormatting) state.formatting = "link"; - return getType(state); - } - - if (ch === ']' && state.linkText && stream.match(/\(.*?\)| ?\[.*?\]/, false)) { - if (modeCfg.highlightFormatting) state.formatting = "link"; - var type = getType(state); - state.linkText = false; - state.inline = state.f = linkHref; - return type; - } - - if (ch === '<' && stream.match(/^(https?|ftps?):\/\/(?:[^\\>]|\\.)+>/, false)) { - state.f = state.inline = linkInline; - if (modeCfg.highlightFormatting) state.formatting = "link"; - var type = getType(state); - if (type){ - type += " "; - } else { - type = ""; - } - return type + tokenTypes.linkInline; - } - - if (ch === '<' && stream.match(/^[^> \\]+@(?:[^\\>]|\\.)+>/, false)) { - state.f = state.inline = linkInline; - if (modeCfg.highlightFormatting) state.formatting = "link"; - var type = getType(state); - if (type){ - type += " "; - } else { - type = ""; - } - return type + tokenTypes.linkEmail; - } - - if (ch === '<' && stream.match(/^(!--|\w)/, false)) { - var end = stream.string.indexOf(">", stream.pos); - if (end != -1) { - var atts = stream.string.substring(stream.start, end); - if (/markdown\s*=\s*('|"){0,1}1('|"){0,1}/.test(atts)) state.md_inside = true; - } - stream.backUp(1); - state.htmlState = CodeMirror.startState(htmlMode); - return switchBlock(stream, state, htmlBlock); - } - - if (ch === '<' && stream.match(/^\/\w*?>/)) { - state.md_inside = false; - return "tag"; - } - - var ignoreUnderscore = false; - if (!modeCfg.underscoresBreakWords) { - if (ch === '_' && stream.peek() !== '_' && stream.match(/(\w)/, false)) { - var prevPos = stream.pos - 2; - if (prevPos >= 0) { - var prevCh = stream.string.charAt(prevPos); - if (prevCh !== '_' && prevCh.match(/(\w)/, false)) { - ignoreUnderscore = true; - } - } - } - } - if (ch === '*' || (ch === '_' && !ignoreUnderscore)) { - if (sol && stream.peek() === ' ') { - // Do nothing, surrounded by newline and space - } else if (state.strong === ch && stream.eat(ch)) { // Remove STRONG - if (modeCfg.highlightFormatting) state.formatting = "strong"; - var t = getType(state); - state.strong = false; - return t; - } else if (!state.strong && stream.eat(ch)) { // Add STRONG - state.strong = ch; - if (modeCfg.highlightFormatting) state.formatting = "strong"; - return getType(state); - } else if (state.em === ch) { // Remove EM - if (modeCfg.highlightFormatting) state.formatting = "em"; - var t = getType(state); - state.em = false; - return t; - } else if (!state.em) { // Add EM - state.em = ch; - if (modeCfg.highlightFormatting) state.formatting = "em"; - return getType(state); - } - } else if (ch === ' ') { - if (stream.eat('*') || stream.eat('_')) { // Probably surrounded by spaces - if (stream.peek() === ' ') { // Surrounded by spaces, ignore - return getType(state); - } else { // Not surrounded by spaces, back up pointer - stream.backUp(1); - } - } - } - - if (modeCfg.strikethrough) { - if (ch === '~' && stream.eatWhile(ch)) { - if (state.strikethrough) {// Remove strikethrough - if (modeCfg.highlightFormatting) state.formatting = "strikethrough"; - var t = getType(state); - state.strikethrough = false; - return t; - } else if (stream.match(/^[^\s]/, false)) {// Add strikethrough - state.strikethrough = true; - if (modeCfg.highlightFormatting) state.formatting = "strikethrough"; - return getType(state); - } - } else if (ch === ' ') { - if (stream.match(/^~~/, true)) { // Probably surrounded by space - if (stream.peek() === ' ') { // Surrounded by spaces, ignore - return getType(state); - } else { // Not surrounded by spaces, back up pointer - stream.backUp(2); - } - } - } - } - - if (ch === ' ') { - if (stream.match(/ +$/, false)) { - state.trailingSpace++; - } else if (state.trailingSpace) { - state.trailingSpaceNewLine = true; - } - } - - return getType(state); - } - - function linkInline(stream, state) { - var ch = stream.next(); - - if (ch === ">") { - state.f = state.inline = inlineNormal; - if (modeCfg.highlightFormatting) state.formatting = "link"; - var type = getType(state); - if (type){ - type += " "; - } else { - type = ""; - } - return type + tokenTypes.linkInline; - } - - stream.match(/^[^>]+/, true); - - return tokenTypes.linkInline; - } - - function linkHref(stream, state) { - // Check if space, and return NULL if so (to avoid marking the space) - if(stream.eatSpace()){ - return null; - } - var ch = stream.next(); - if (ch === '(' || ch === '[') { - state.f = state.inline = getLinkHrefInside(ch === "(" ? ")" : "]", 0); - if (modeCfg.highlightFormatting) state.formatting = "link-string"; - state.linkHref = true; - return getType(state); - } - return 'error'; - } - - var linkRE = { - ")": /^(?:[^\\\(\)]|\\.|\((?:[^\\\(\)]|\\.)*\))*?(?=\))/, - "]": /^(?:[^\\\[\]]|\\.|\[(?:[^\\\[\\]]|\\.)*\])*?(?=\])/ - } - - function getLinkHrefInside(endChar) { - return function(stream, state) { - var ch = stream.next(); - - if (ch === endChar) { - state.f = state.inline = inlineNormal; - if (modeCfg.highlightFormatting) state.formatting = "link-string"; - var returnState = getType(state); - state.linkHref = false; - return returnState; - } - - stream.match(linkRE[endChar]) - state.linkHref = true; - return getType(state); - }; - } - - function footnoteLink(stream, state) { - if (stream.match(/^([^\]\\]|\\.)*\]:/, false)) { - state.f = footnoteLinkInside; - stream.next(); // Consume [ - if (modeCfg.highlightFormatting) state.formatting = "link"; - state.linkText = true; - return getType(state); - } - return switchInline(stream, state, inlineNormal); - } - - function footnoteLinkInside(stream, state) { - if (stream.match(/^\]:/, true)) { - state.f = state.inline = footnoteUrl; - if (modeCfg.highlightFormatting) state.formatting = "link"; - var returnType = getType(state); - state.linkText = false; - return returnType; - } - - stream.match(/^([^\]\\]|\\.)+/, true); - - return tokenTypes.linkText; - } - - function footnoteUrl(stream, state) { - // Check if space, and return NULL if so (to avoid marking the space) - if(stream.eatSpace()){ - return null; - } - // Match URL - stream.match(/^[^\s]+/, true); - // Check for link title - if (stream.peek() === undefined) { // End of line, set flag to check next line - state.linkTitle = true; - } else { // More content on line, check if link title - stream.match(/^(?:\s+(?:"(?:[^"\\]|\\\\|\\.)+"|'(?:[^'\\]|\\\\|\\.)+'|\((?:[^)\\]|\\\\|\\.)+\)))?/, true); - } - state.f = state.inline = inlineNormal; - return tokenTypes.linkHref + " url"; - } - - var mode = { - startState: function() { - return { - f: blockNormal, - - prevLine: null, - thisLine: null, - - block: blockNormal, - htmlState: null, - indentation: 0, - - inline: inlineNormal, - text: handleText, - - formatting: false, - linkText: false, - linkHref: false, - linkTitle: false, - code: 0, - em: false, - strong: false, - header: 0, - hr: false, - taskList: false, - list: false, - listStack: [], - quote: 0, - trailingSpace: 0, - trailingSpaceNewLine: false, - strikethrough: false, - fencedChars: null - }; - }, - - copyState: function(s) { - return { - f: s.f, - - prevLine: s.prevLine, - thisLine: s.thisLine, - - block: s.block, - htmlState: s.htmlState && CodeMirror.copyState(htmlMode, s.htmlState), - indentation: s.indentation, - - localMode: s.localMode, - localState: s.localMode ? CodeMirror.copyState(s.localMode, s.localState) : null, - - inline: s.inline, - text: s.text, - formatting: false, - linkTitle: s.linkTitle, - code: s.code, - em: s.em, - strong: s.strong, - strikethrough: s.strikethrough, - header: s.header, - hr: s.hr, - taskList: s.taskList, - list: s.list, - listStack: s.listStack.slice(0), - quote: s.quote, - indentedCode: s.indentedCode, - trailingSpace: s.trailingSpace, - trailingSpaceNewLine: s.trailingSpaceNewLine, - md_inside: s.md_inside, - fencedChars: s.fencedChars - }; - }, - - token: function(stream, state) { - - // Reset state.formatting - state.formatting = false; - - if (stream != state.thisLine) { - var forceBlankLine = state.header || state.hr; - - // Reset state.header and state.hr - state.header = 0; - state.hr = false; - - if (stream.match(/^\s*$/, true) || forceBlankLine) { - blankLine(state); - if (!forceBlankLine) return null - state.prevLine = null - } - - state.prevLine = state.thisLine - state.thisLine = stream - - // Reset state.taskList - state.taskList = false; - - // Reset state.trailingSpace - state.trailingSpace = 0; - state.trailingSpaceNewLine = false; - - state.f = state.block; - var indentation = stream.match(/^\s*/, true)[0].replace(/\t/g, ' ').length; - state.indentationDiff = Math.min(indentation - state.indentation, 4); - state.indentation = state.indentation + state.indentationDiff; - if (indentation > 0) return null; - } - return state.f(stream, state); - }, - - innerMode: function(state) { - if (state.block == htmlBlock) return {state: state.htmlState, mode: htmlMode}; - if (state.localState) return {state: state.localState, mode: state.localMode}; - return {state: state, mode: mode}; - }, - - blankLine: blankLine, - - getType: getType, - - fold: "markdown" - }; - return mode; -}, "xml"); - -CodeMirror.defineMIME("text/x-markdown", "markdown"); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/markdown/test.js b/public/plugins/codemirror-5.17.0/mode/markdown/test.js deleted file mode 100644 index 2f43a170c..000000000 --- a/public/plugins/codemirror-5.17.0/mode/markdown/test.js +++ /dev/null @@ -1,990 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function() { - var mode = CodeMirror.getMode({tabSize: 4}, "markdown"); - function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } - var modeHighlightFormatting = CodeMirror.getMode({tabSize: 4}, {name: "markdown", highlightFormatting: true}); - function FT(name) { test.mode(name, modeHighlightFormatting, Array.prototype.slice.call(arguments, 1)); } - var modeAtxNoSpace = CodeMirror.getMode({tabSize: 4}, {name: "markdown", allowAtxHeaderWithoutSpace: true}); - function AtxNoSpaceTest(name) { test.mode(name, modeAtxNoSpace, Array.prototype.slice.call(arguments, 1)); } - var modeFenced = CodeMirror.getMode({tabSize: 4}, {name: "markdown", fencedCodeBlocks: true}); - function FencedTest(name) { test.mode(name, modeFenced, Array.prototype.slice.call(arguments, 1)); } - var modeOverrideClasses = CodeMirror.getMode({tabsize: 4}, { - name: "markdown", - strikethrough: true, - tokenTypeOverrides: { - "header" : "override-header", - "code" : "override-code", - "quote" : "override-quote", - "list1" : "override-list1", - "list2" : "override-list2", - "list3" : "override-list3", - "hr" : "override-hr", - "image" : "override-image", - "imageAltText": "override-image-alt-text", - "imageMarker": "override-image-marker", - "linkInline" : "override-link-inline", - "linkEmail" : "override-link-email", - "linkText" : "override-link-text", - "linkHref" : "override-link-href", - "em" : "override-em", - "strong" : "override-strong", - "strikethrough" : "override-strikethrough" - }}); - function TokenTypeOverrideTest(name) { test.mode(name, modeOverrideClasses, Array.prototype.slice.call(arguments, 1)); } - var modeFormattingOverride = CodeMirror.getMode({tabsize: 4}, { - name: "markdown", - highlightFormatting: true, - tokenTypeOverrides: { - "formatting" : "override-formatting" - }}); - function FormatTokenTypeOverrideTest(name) { test.mode(name, modeFormattingOverride, Array.prototype.slice.call(arguments, 1)); } - - - FT("formatting_emAsterisk", - "[em&formatting&formatting-em *][em foo][em&formatting&formatting-em *]"); - - FT("formatting_emUnderscore", - "[em&formatting&formatting-em _][em foo][em&formatting&formatting-em _]"); - - FT("formatting_strongAsterisk", - "[strong&formatting&formatting-strong **][strong foo][strong&formatting&formatting-strong **]"); - - FT("formatting_strongUnderscore", - "[strong&formatting&formatting-strong __][strong foo][strong&formatting&formatting-strong __]"); - - FT("formatting_codeBackticks", - "[comment&formatting&formatting-code `][comment foo][comment&formatting&formatting-code `]"); - - FT("formatting_doubleBackticks", - "[comment&formatting&formatting-code ``][comment foo ` bar][comment&formatting&formatting-code ``]"); - - FT("formatting_atxHeader", - "[header&header-1&formatting&formatting-header&formatting-header-1 # ][header&header-1 foo # bar ][header&header-1&formatting&formatting-header&formatting-header-1 #]"); - - FT("formatting_setextHeader", - "foo", - "[header&header-1&formatting&formatting-header&formatting-header-1 =]"); - - FT("formatting_blockquote", - "[quote"e-1&formatting&formatting-quote&formatting-quote-1 > ][quote"e-1 foo]"); - - FT("formatting_list", - "[variable-2&formatting&formatting-list&formatting-list-ul - ][variable-2 foo]"); - FT("formatting_list", - "[variable-2&formatting&formatting-list&formatting-list-ol 1. ][variable-2 foo]"); - - FT("formatting_link", - "[link&formatting&formatting-link [][link foo][link&formatting&formatting-link ]]][string&formatting&formatting-link-string&url (][string&url http://example.com/][string&formatting&formatting-link-string&url )]"); - - FT("formatting_linkReference", - "[link&formatting&formatting-link [][link foo][link&formatting&formatting-link ]]][string&formatting&formatting-link-string&url [][string&url bar][string&formatting&formatting-link-string&url ]]]", - "[link&formatting&formatting-link [][link bar][link&formatting&formatting-link ]]:] [string&url http://example.com/]"); - - FT("formatting_linkWeb", - "[link&formatting&formatting-link <][link http://example.com/][link&formatting&formatting-link >]"); - - FT("formatting_linkEmail", - "[link&formatting&formatting-link <][link user@example.com][link&formatting&formatting-link >]"); - - FT("formatting_escape", - "[formatting-escape \\*]"); - - FT("formatting_image", - "[formatting&formatting-image&image&image-marker !][formatting&formatting-image&image&image-alt-text&link [[][image&image-alt-text&link alt text][formatting&formatting-image&image&image-alt-text&link ]]][formatting&formatting-link-string&string&url (][url&string http://link.to/image.jpg][formatting&formatting-link-string&string&url )]"); - - MT("plainText", - "foo"); - - // Don't style single trailing space - MT("trailingSpace1", - "foo "); - - // Two or more trailing spaces should be styled with line break character - MT("trailingSpace2", - "foo[trailing-space-a ][trailing-space-new-line ]"); - - MT("trailingSpace3", - "foo[trailing-space-a ][trailing-space-b ][trailing-space-new-line ]"); - - MT("trailingSpace4", - "foo[trailing-space-a ][trailing-space-b ][trailing-space-a ][trailing-space-new-line ]"); - - // Code blocks using 4 spaces (regardless of CodeMirror.tabSize value) - MT("codeBlocksUsing4Spaces", - " [comment foo]"); - - // Code blocks using 4 spaces with internal indentation - MT("codeBlocksUsing4SpacesIndentation", - " [comment bar]", - " [comment hello]", - " [comment world]", - " [comment foo]", - "bar"); - - // Code blocks should end even after extra indented lines - MT("codeBlocksWithTrailingIndentedLine", - " [comment foo]", - " [comment bar]", - " [comment baz]", - " ", - "hello"); - - // Code blocks using 1 tab (regardless of CodeMirror.indentWithTabs value) - MT("codeBlocksUsing1Tab", - "\t[comment foo]"); - - // No code blocks directly after paragraph - // http://spec.commonmark.org/0.19/#example-65 - MT("noCodeBlocksAfterParagraph", - "Foo", - " Bar"); - - // Inline code using backticks - MT("inlineCodeUsingBackticks", - "foo [comment `bar`]"); - - // Block code using single backtick (shouldn't work) - MT("blockCodeSingleBacktick", - "[comment `]", - "[comment foo]", - "[comment `]"); - - // Unclosed backticks - // Instead of simply marking as CODE, it would be nice to have an - // incomplete flag for CODE, that is styled slightly different. - MT("unclosedBackticks", - "foo [comment `bar]"); - - // Per documentation: "To include a literal backtick character within a - // code span, you can use multiple backticks as the opening and closing - // delimiters" - MT("doubleBackticks", - "[comment ``foo ` bar``]"); - - // Tests based on Dingus - // http://daringfireball.net/projects/markdown/dingus - // - // Multiple backticks within an inline code block - MT("consecutiveBackticks", - "[comment `foo```bar`]"); - - // Multiple backticks within an inline code block with a second code block - MT("consecutiveBackticks", - "[comment `foo```bar`] hello [comment `world`]"); - - // Unclosed with several different groups of backticks - MT("unclosedBackticks", - "[comment ``foo ``` bar` hello]"); - - // Closed with several different groups of backticks - MT("closedBackticks", - "[comment ``foo ``` bar` hello``] world"); - - // atx headers - // http://daringfireball.net/projects/markdown/syntax#header - - MT("atxH1", - "[header&header-1 # foo]"); - - MT("atxH2", - "[header&header-2 ## foo]"); - - MT("atxH3", - "[header&header-3 ### foo]"); - - MT("atxH4", - "[header&header-4 #### foo]"); - - MT("atxH5", - "[header&header-5 ##### foo]"); - - MT("atxH6", - "[header&header-6 ###### foo]"); - - // http://spec.commonmark.org/0.19/#example-24 - MT("noAtxH7", - "####### foo"); - - // http://spec.commonmark.org/0.19/#example-25 - MT("noAtxH1WithoutSpace", - "#5 bolt"); - - // CommonMark requires a space after # but most parsers don't - AtxNoSpaceTest("atxNoSpaceAllowed_H1NoSpace", - "[header&header-1 #foo]"); - - AtxNoSpaceTest("atxNoSpaceAllowed_H4NoSpace", - "[header&header-4 ####foo]"); - - AtxNoSpaceTest("atxNoSpaceAllowed_H1Space", - "[header&header-1 # foo]"); - - // Inline styles should be parsed inside headers - MT("atxH1inline", - "[header&header-1 # foo ][header&header-1&em *bar*]"); - - // Setext headers - H1, H2 - // Per documentation, "Any number of underlining =’s or -’s will work." - // http://daringfireball.net/projects/markdown/syntax#header - // Ideally, the text would be marked as `header` as well, but this is - // not really feasible at the moment. So, instead, we're testing against - // what works today, to avoid any regressions. - // - // Check if single underlining = works - MT("setextH1", - "foo", - "[header&header-1 =]"); - - // Check if 3+ ='s work - MT("setextH1", - "foo", - "[header&header-1 ===]"); - - // Check if single underlining - works - MT("setextH2", - "foo", - "[header&header-2 -]"); - - // Check if 3+ -'s work - MT("setextH2", - "foo", - "[header&header-2 ---]"); - - // http://spec.commonmark.org/0.19/#example-45 - MT("setextH2AllowSpaces", - "foo", - " [header&header-2 ---- ]"); - - // http://spec.commonmark.org/0.19/#example-44 - MT("noSetextAfterIndentedCodeBlock", - " [comment foo]", - "[hr ---]"); - - // http://spec.commonmark.org/0.19/#example-51 - MT("noSetextAfterQuote", - "[quote"e-1 > foo]", - "[hr ---]"); - - MT("noSetextAfterList", - "[variable-2 - foo]", - "[hr ---]"); - - // Single-line blockquote with trailing space - MT("blockquoteSpace", - "[quote"e-1 > foo]"); - - // Single-line blockquote - MT("blockquoteNoSpace", - "[quote"e-1 >foo]"); - - // No blank line before blockquote - MT("blockquoteNoBlankLine", - "foo", - "[quote"e-1 > bar]"); - - // Nested blockquote - MT("blockquoteSpace", - "[quote"e-1 > foo]", - "[quote"e-1 >][quote"e-2 > foo]", - "[quote"e-1 >][quote"e-2 >][quote"e-3 > foo]"); - - // Single-line blockquote followed by normal paragraph - MT("blockquoteThenParagraph", - "[quote"e-1 >foo]", - "", - "bar"); - - // Multi-line blockquote (lazy mode) - MT("multiBlockquoteLazy", - "[quote"e-1 >foo]", - "[quote"e-1 bar]"); - - // Multi-line blockquote followed by normal paragraph (lazy mode) - MT("multiBlockquoteLazyThenParagraph", - "[quote"e-1 >foo]", - "[quote"e-1 bar]", - "", - "hello"); - - // Multi-line blockquote (non-lazy mode) - MT("multiBlockquote", - "[quote"e-1 >foo]", - "[quote"e-1 >bar]"); - - // Multi-line blockquote followed by normal paragraph (non-lazy mode) - MT("multiBlockquoteThenParagraph", - "[quote"e-1 >foo]", - "[quote"e-1 >bar]", - "", - "hello"); - - // Header with leading space after continued blockquote (#3287, negative indentation) - MT("headerAfterContinuedBlockquote", - "[quote"e-1 > foo]", - "[quote"e-1 bar]", - "", - " [header&header-1 # hello]"); - - // Check list types - - MT("listAsterisk", - "foo", - "bar", - "", - "[variable-2 * foo]", - "[variable-2 * bar]"); - - MT("listPlus", - "foo", - "bar", - "", - "[variable-2 + foo]", - "[variable-2 + bar]"); - - MT("listDash", - "foo", - "bar", - "", - "[variable-2 - foo]", - "[variable-2 - bar]"); - - MT("listNumber", - "foo", - "bar", - "", - "[variable-2 1. foo]", - "[variable-2 2. bar]"); - - // Lists require a preceding blank line (per Dingus) - MT("listBogus", - "foo", - "1. bar", - "2. hello"); - - // List after hr - MT("listAfterHr", - "[hr ---]", - "[variable-2 - bar]"); - - // List after header - MT("listAfterHeader", - "[header&header-1 # foo]", - "[variable-2 - bar]"); - - // hr after list - MT("hrAfterList", - "[variable-2 - foo]", - "[hr -----]"); - - // Formatting in lists (*) - MT("listAsteriskFormatting", - "[variable-2 * ][variable-2&em *foo*][variable-2 bar]", - "[variable-2 * ][variable-2&strong **foo**][variable-2 bar]", - "[variable-2 * ][variable-2&strong **][variable-2&em&strong *foo**][variable-2&em *][variable-2 bar]", - "[variable-2 * ][variable-2&comment `foo`][variable-2 bar]"); - - // Formatting in lists (+) - MT("listPlusFormatting", - "[variable-2 + ][variable-2&em *foo*][variable-2 bar]", - "[variable-2 + ][variable-2&strong **foo**][variable-2 bar]", - "[variable-2 + ][variable-2&strong **][variable-2&em&strong *foo**][variable-2&em *][variable-2 bar]", - "[variable-2 + ][variable-2&comment `foo`][variable-2 bar]"); - - // Formatting in lists (-) - MT("listDashFormatting", - "[variable-2 - ][variable-2&em *foo*][variable-2 bar]", - "[variable-2 - ][variable-2&strong **foo**][variable-2 bar]", - "[variable-2 - ][variable-2&strong **][variable-2&em&strong *foo**][variable-2&em *][variable-2 bar]", - "[variable-2 - ][variable-2&comment `foo`][variable-2 bar]"); - - // Formatting in lists (1.) - MT("listNumberFormatting", - "[variable-2 1. ][variable-2&em *foo*][variable-2 bar]", - "[variable-2 2. ][variable-2&strong **foo**][variable-2 bar]", - "[variable-2 3. ][variable-2&strong **][variable-2&em&strong *foo**][variable-2&em *][variable-2 bar]", - "[variable-2 4. ][variable-2&comment `foo`][variable-2 bar]"); - - // Paragraph lists - MT("listParagraph", - "[variable-2 * foo]", - "", - "[variable-2 * bar]"); - - // Multi-paragraph lists - // - // 4 spaces - MT("listMultiParagraph", - "[variable-2 * foo]", - "", - "[variable-2 * bar]", - "", - " [variable-2 hello]"); - - // 4 spaces, extra blank lines (should still be list, per Dingus) - MT("listMultiParagraphExtra", - "[variable-2 * foo]", - "", - "[variable-2 * bar]", - "", - "", - " [variable-2 hello]"); - - // 4 spaces, plus 1 space (should still be list, per Dingus) - MT("listMultiParagraphExtraSpace", - "[variable-2 * foo]", - "", - "[variable-2 * bar]", - "", - " [variable-2 hello]", - "", - " [variable-2 world]"); - - // 1 tab - MT("listTab", - "[variable-2 * foo]", - "", - "[variable-2 * bar]", - "", - "\t[variable-2 hello]"); - - // No indent - MT("listNoIndent", - "[variable-2 * foo]", - "", - "[variable-2 * bar]", - "", - "hello"); - - MT("listCommonMarkIndentationCode", - "[variable-2 * Code blocks also affect]", - " [variable-3 * The next level starts where the contents start.]", - " [variable-3 * Anything less than that will keep the item on the same level.]", - " [variable-3 * Each list item can indent the first level further and further.]", - " [variable-3 * For the most part, this makes sense while writing a list.]", - " [keyword * This means two items with same indentation can be different levels.]", - " [keyword * Each level has an indent requirement that can change between items.]", - " [keyword * A list item that meets this will be part of the next level.]", - " [variable-3 * Otherwise, it will be part of the level where it does meet this.]", - " [variable-2 * World]"); - - // Blockquote - MT("blockquote", - "[variable-2 * foo]", - "", - "[variable-2 * bar]", - "", - " [variable-2"e"e-1 > hello]"); - - // Code block - MT("blockquoteCode", - "[variable-2 * foo]", - "", - "[variable-2 * bar]", - "", - " [comment > hello]", - "", - " [variable-2 world]"); - - // Code block followed by text - MT("blockquoteCodeText", - "[variable-2 * foo]", - "", - " [variable-2 bar]", - "", - " [comment hello]", - "", - " [variable-2 world]"); - - // Nested list - - MT("listAsteriskNested", - "[variable-2 * foo]", - "", - " [variable-3 * bar]"); - - MT("listPlusNested", - "[variable-2 + foo]", - "", - " [variable-3 + bar]"); - - MT("listDashNested", - "[variable-2 - foo]", - "", - " [variable-3 - bar]"); - - MT("listNumberNested", - "[variable-2 1. foo]", - "", - " [variable-3 2. bar]"); - - MT("listMixed", - "[variable-2 * foo]", - "", - " [variable-3 + bar]", - "", - " [keyword - hello]", - "", - " [variable-2 1. world]"); - - MT("listBlockquote", - "[variable-2 * foo]", - "", - " [variable-3 + bar]", - "", - " [quote"e-1&variable-3 > hello]"); - - MT("listCode", - "[variable-2 * foo]", - "", - " [variable-3 + bar]", - "", - " [comment hello]"); - - // Code with internal indentation - MT("listCodeIndentation", - "[variable-2 * foo]", - "", - " [comment bar]", - " [comment hello]", - " [comment world]", - " [comment foo]", - " [variable-2 bar]"); - - // List nesting edge cases - MT("listNested", - "[variable-2 * foo]", - "", - " [variable-3 * bar]", - "", - " [variable-3 hello]" - ); - MT("listNested", - "[variable-2 * foo]", - "", - " [variable-3 * bar]", - "", - " [keyword * foo]" - ); - - // Code followed by text - MT("listCodeText", - "[variable-2 * foo]", - "", - " [comment bar]", - "", - "hello"); - - // Following tests directly from official Markdown documentation - // http://daringfireball.net/projects/markdown/syntax#hr - - MT("hrSpace", - "[hr * * *]"); - - MT("hr", - "[hr ***]"); - - MT("hrLong", - "[hr *****]"); - - MT("hrSpaceDash", - "[hr - - -]"); - - MT("hrDashLong", - "[hr ---------------------------------------]"); - - //Images - MT("Images", - "[image&image-marker !][image&image-alt-text&link [[alt text]]][string&url (http://link.to/image.jpg)]") - - //Images with highlight alt text - MT("imageEm", - "[image&image-marker !][image&image-alt-text&link [[][image-alt-text&em&image&link *alt text*][image&image-alt-text&link ]]][string&url (http://link.to/image.jpg)]"); - - MT("imageStrong", - "[image&image-marker !][image&image-alt-text&link [[][image-alt-text&strong&image&link **alt text**][image&image-alt-text&link ]]][string&url (http://link.to/image.jpg)]"); - - MT("imageEmStrong", - "[image&image-marker !][image&image-alt-text&link [[][image-alt-text&image&strong&link **][image&image-alt-text&em&strong&link *alt text**][image&image-alt-text&em&link *][image&image-alt-text&link ]]][string&url (http://link.to/image.jpg)]"); - - // Inline link with title - MT("linkTitle", - "[link [[foo]]][string&url (http://example.com/ \"bar\")] hello"); - - // Inline link without title - MT("linkNoTitle", - "[link [[foo]]][string&url (http://example.com/)] bar"); - - // Inline link with image - MT("linkImage", - "[link [[][link&image&image-marker !][link&image&image-alt-text&link [[alt text]]][string&url (http://link.to/image.jpg)][link ]]][string&url (http://example.com/)] bar"); - - // Inline link with Em - MT("linkEm", - "[link [[][link&em *foo*][link ]]][string&url (http://example.com/)] bar"); - - // Inline link with Strong - MT("linkStrong", - "[link [[][link&strong **foo**][link ]]][string&url (http://example.com/)] bar"); - - // Inline link with EmStrong - MT("linkEmStrong", - "[link [[][link&strong **][link&em&strong *foo**][link&em *][link ]]][string&url (http://example.com/)] bar"); - - // Image with title - MT("imageTitle", - "[image&image-marker !][image&image-alt-text&link [[alt text]]][string&url (http://example.com/ \"bar\")] hello"); - - // Image without title - MT("imageNoTitle", - "[image&image-marker !][image&image-alt-text&link [[alt text]]][string&url (http://example.com/)] bar"); - - // Image with asterisks - MT("imageAsterisks", - "[image&image-marker !][image&image-alt-text&link [[ ][image&image-alt-text&em&link *alt text*][image&image-alt-text&link ]]][string&url (http://link.to/image.jpg)] bar"); - - // Not a link. Should be normal text due to square brackets being used - // regularly in text, especially in quoted material, and no space is allowed - // between square brackets and parentheses (per Dingus). - MT("notALink", - "[[foo]] (bar)"); - - // Reference-style links - MT("linkReference", - "[link [[foo]]][string&url [[bar]]] hello"); - - // Reference-style links with Em - MT("linkReferenceEm", - "[link [[][link&em *foo*][link ]]][string&url [[bar]]] hello"); - - // Reference-style links with Strong - MT("linkReferenceStrong", - "[link [[][link&strong **foo**][link ]]][string&url [[bar]]] hello"); - - // Reference-style links with EmStrong - MT("linkReferenceEmStrong", - "[link [[][link&strong **][link&em&strong *foo**][link&em *][link ]]][string&url [[bar]]] hello"); - - // Reference-style links with optional space separator (per documentation) - // "You can optionally use a space to separate the sets of brackets" - MT("linkReferenceSpace", - "[link [[foo]]] [string&url [[bar]]] hello"); - - // Should only allow a single space ("...use *a* space...") - MT("linkReferenceDoubleSpace", - "[[foo]] [[bar]] hello"); - - // Reference-style links with implicit link name - MT("linkImplicit", - "[link [[foo]]][string&url [[]]] hello"); - - // @todo It would be nice if, at some point, the document was actually - // checked to see if the referenced link exists - - // Link label, for reference-style links (taken from documentation) - - MT("labelNoTitle", - "[link [[foo]]:] [string&url http://example.com/]"); - - MT("labelIndented", - " [link [[foo]]:] [string&url http://example.com/]"); - - MT("labelSpaceTitle", - "[link [[foo bar]]:] [string&url http://example.com/ \"hello\"]"); - - MT("labelDoubleTitle", - "[link [[foo bar]]:] [string&url http://example.com/ \"hello\"] \"world\""); - - MT("labelTitleDoubleQuotes", - "[link [[foo]]:] [string&url http://example.com/ \"bar\"]"); - - MT("labelTitleSingleQuotes", - "[link [[foo]]:] [string&url http://example.com/ 'bar']"); - - MT("labelTitleParentheses", - "[link [[foo]]:] [string&url http://example.com/ (bar)]"); - - MT("labelTitleInvalid", - "[link [[foo]]:] [string&url http://example.com/] bar"); - - MT("labelLinkAngleBrackets", - "[link [[foo]]:] [string&url \"bar\"]"); - - MT("labelTitleNextDoubleQuotes", - "[link [[foo]]:] [string&url http://example.com/]", - "[string \"bar\"] hello"); - - MT("labelTitleNextSingleQuotes", - "[link [[foo]]:] [string&url http://example.com/]", - "[string 'bar'] hello"); - - MT("labelTitleNextParentheses", - "[link [[foo]]:] [string&url http://example.com/]", - "[string (bar)] hello"); - - MT("labelTitleNextMixed", - "[link [[foo]]:] [string&url http://example.com/]", - "(bar\" hello"); - - MT("labelEscape", - "[link [[foo \\]] ]]:] [string&url http://example.com/]"); - - MT("labelEscapeColon", - "[link [[foo \\]]: bar]]:] [string&url http://example.com/]"); - - MT("labelEscapeEnd", - "[[foo\\]]: http://example.com/"); - - MT("linkWeb", - "[link ] foo"); - - MT("linkWebDouble", - "[link ] foo [link ]"); - - MT("linkEmail", - "[link ] foo"); - - MT("linkEmailDouble", - "[link ] foo [link ]"); - - MT("emAsterisk", - "[em *foo*] bar"); - - MT("emUnderscore", - "[em _foo_] bar"); - - MT("emInWordAsterisk", - "foo[em *bar*]hello"); - - MT("emInWordUnderscore", - "foo[em _bar_]hello"); - - // Per documentation: "...surround an * or _ with spaces, it’ll be - // treated as a literal asterisk or underscore." - - MT("emEscapedBySpaceIn", - "foo [em _bar _ hello_] world"); - - MT("emEscapedBySpaceOut", - "foo _ bar[em _hello_]world"); - - MT("emEscapedByNewline", - "foo", - "_ bar[em _hello_]world"); - - // Unclosed emphasis characters - // Instead of simply marking as EM / STRONG, it would be nice to have an - // incomplete flag for EM and STRONG, that is styled slightly different. - MT("emIncompleteAsterisk", - "foo [em *bar]"); - - MT("emIncompleteUnderscore", - "foo [em _bar]"); - - MT("strongAsterisk", - "[strong **foo**] bar"); - - MT("strongUnderscore", - "[strong __foo__] bar"); - - MT("emStrongAsterisk", - "[em *foo][em&strong **bar*][strong hello**] world"); - - MT("emStrongUnderscore", - "[em _foo][em&strong __bar_][strong hello__] world"); - - // "...same character must be used to open and close an emphasis span."" - MT("emStrongMixed", - "[em _foo][em&strong **bar*hello__ world]"); - - MT("emStrongMixed", - "[em *foo][em&strong __bar_hello** world]"); - - MT("linkWithNestedParens", - "[link [[foo]]][string&url (bar(baz))]") - - // These characters should be escaped: - // \ backslash - // ` backtick - // * asterisk - // _ underscore - // {} curly braces - // [] square brackets - // () parentheses - // # hash mark - // + plus sign - // - minus sign (hyphen) - // . dot - // ! exclamation mark - - MT("escapeBacktick", - "foo \\`bar\\`"); - - MT("doubleEscapeBacktick", - "foo \\\\[comment `bar\\\\`]"); - - MT("escapeAsterisk", - "foo \\*bar\\*"); - - MT("doubleEscapeAsterisk", - "foo \\\\[em *bar\\\\*]"); - - MT("escapeUnderscore", - "foo \\_bar\\_"); - - MT("doubleEscapeUnderscore", - "foo \\\\[em _bar\\\\_]"); - - MT("escapeHash", - "\\# foo"); - - MT("doubleEscapeHash", - "\\\\# foo"); - - MT("escapeNewline", - "\\", - "[em *foo*]"); - - // Class override tests - TokenTypeOverrideTest("overrideHeader1", - "[override-header&override-header-1 # Foo]"); - - TokenTypeOverrideTest("overrideHeader2", - "[override-header&override-header-2 ## Foo]"); - - TokenTypeOverrideTest("overrideHeader3", - "[override-header&override-header-3 ### Foo]"); - - TokenTypeOverrideTest("overrideHeader4", - "[override-header&override-header-4 #### Foo]"); - - TokenTypeOverrideTest("overrideHeader5", - "[override-header&override-header-5 ##### Foo]"); - - TokenTypeOverrideTest("overrideHeader6", - "[override-header&override-header-6 ###### Foo]"); - - TokenTypeOverrideTest("overrideCode", - "[override-code `foo`]"); - - TokenTypeOverrideTest("overrideCodeBlock", - "[override-code ```]", - "[override-code foo]", - "[override-code ```]"); - - TokenTypeOverrideTest("overrideQuote", - "[override-quote&override-quote-1 > foo]", - "[override-quote&override-quote-1 > bar]"); - - TokenTypeOverrideTest("overrideQuoteNested", - "[override-quote&override-quote-1 > foo]", - "[override-quote&override-quote-1 >][override-quote&override-quote-2 > bar]", - "[override-quote&override-quote-1 >][override-quote&override-quote-2 >][override-quote&override-quote-3 > baz]"); - - TokenTypeOverrideTest("overrideLists", - "[override-list1 - foo]", - "", - " [override-list2 + bar]", - "", - " [override-list3 * baz]", - "", - " [override-list1 1. qux]", - "", - " [override-list2 - quux]"); - - TokenTypeOverrideTest("overrideHr", - "[override-hr * * *]"); - - TokenTypeOverrideTest("overrideImage", - "[override-image&override-image-marker !][override-image&override-image-alt-text&link [[alt text]]][override-link-href&url (http://link.to/image.jpg)]"); - - TokenTypeOverrideTest("overrideLinkText", - "[override-link-text [[foo]]][override-link-href&url (http://example.com)]"); - - TokenTypeOverrideTest("overrideLinkEmailAndInline", - "[override-link-email <][override-link-inline foo@example.com>]"); - - TokenTypeOverrideTest("overrideEm", - "[override-em *foo*]"); - - TokenTypeOverrideTest("overrideStrong", - "[override-strong **foo**]"); - - TokenTypeOverrideTest("overrideStrikethrough", - "[override-strikethrough ~~foo~~]"); - - FormatTokenTypeOverrideTest("overrideFormatting", - "[override-formatting-escape \\*]"); - - // Tests to make sure GFM-specific things aren't getting through - - MT("taskList", - "[variable-2 * [ ]] bar]"); - - MT("noFencedCodeBlocks", - "~~~", - "foo", - "~~~"); - - FencedTest("fencedCodeBlocks", - "[comment ```]", - "[comment foo]", - "[comment ```]", - "bar"); - - FencedTest("fencedCodeBlocksMultipleChars", - "[comment `````]", - "[comment foo]", - "[comment ```]", - "[comment foo]", - "[comment `````]", - "bar"); - - FencedTest("fencedCodeBlocksTildes", - "[comment ~~~]", - "[comment foo]", - "[comment ~~~]", - "bar"); - - FencedTest("fencedCodeBlocksTildesMultipleChars", - "[comment ~~~~~]", - "[comment ~~~]", - "[comment foo]", - "[comment ~~~~~]", - "bar"); - - FencedTest("fencedCodeBlocksMultipleChars", - "[comment `````]", - "[comment foo]", - "[comment ```]", - "[comment foo]", - "[comment `````]", - "bar"); - - FencedTest("fencedCodeBlocksMixed", - "[comment ~~~]", - "[comment ```]", - "[comment foo]", - "[comment ~~~]", - "bar"); - - // Tests that require XML mode - - MT("xmlMode", - "[tag&bracket <][tag div][tag&bracket >]", - "*foo*", - "[tag&bracket <][tag http://github.com][tag&bracket />]", - "[tag&bracket ]", - "[link ]"); - - MT("xmlModeWithMarkdownInside", - "[tag&bracket <][tag div] [attribute markdown]=[string 1][tag&bracket >]", - "[em *foo*]", - "[link ]", - "[tag
    ]", - "[link ]", - "[tag&bracket <][tag div][tag&bracket >]", - "[tag&bracket ]"); - -})(); diff --git a/public/plugins/codemirror-5.17.0/mode/mathematica/index.html b/public/plugins/codemirror-5.17.0/mode/mathematica/index.html deleted file mode 100644 index 57c429853..000000000 --- a/public/plugins/codemirror-5.17.0/mode/mathematica/index.html +++ /dev/null @@ -1,72 +0,0 @@ - - -CodeMirror: Mathematica mode - - - - - - - - - - -
    -

    Mathematica mode

    - - - - - - -

    MIME types defined: text/x-mathematica (Mathematica).

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/mathematica/mathematica.js b/public/plugins/codemirror-5.17.0/mode/mathematica/mathematica.js deleted file mode 100644 index d6977088c..000000000 --- a/public/plugins/codemirror-5.17.0/mode/mathematica/mathematica.js +++ /dev/null @@ -1,176 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -// Mathematica mode copyright (c) 2015 by Calin Barbat -// Based on code by Patrick Scheibe (halirutan) -// See: https://github.com/halirutan/Mathematica-Source-Highlighting/tree/master/src/lang-mma.js - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode('mathematica', function(_config, _parserConfig) { - - // used pattern building blocks - var Identifier = '[a-zA-Z\\$][a-zA-Z0-9\\$]*'; - var pBase = "(?:\\d+)"; - var pFloat = "(?:\\.\\d+|\\d+\\.\\d*|\\d+)"; - var pFloatBase = "(?:\\.\\w+|\\w+\\.\\w*|\\w+)"; - var pPrecision = "(?:`(?:`?"+pFloat+")?)"; - - // regular expressions - var reBaseForm = new RegExp('(?:'+pBase+'(?:\\^\\^'+pFloatBase+pPrecision+'?(?:\\*\\^[+-]?\\d+)?))'); - var reFloatForm = new RegExp('(?:' + pFloat + pPrecision + '?(?:\\*\\^[+-]?\\d+)?)'); - var reIdInContext = new RegExp('(?:`?)(?:' + Identifier + ')(?:`(?:' + Identifier + '))*(?:`?)'); - - function tokenBase(stream, state) { - var ch; - - // get next character - ch = stream.next(); - - // string - if (ch === '"') { - state.tokenize = tokenString; - return state.tokenize(stream, state); - } - - // comment - if (ch === '(') { - if (stream.eat('*')) { - state.commentLevel++; - state.tokenize = tokenComment; - return state.tokenize(stream, state); - } - } - - // go back one character - stream.backUp(1); - - // look for numbers - // Numbers in a baseform - if (stream.match(reBaseForm, true, false)) { - return 'number'; - } - - // Mathematica numbers. Floats (1.2, .2, 1.) can have optionally a precision (`float) or an accuracy definition - // (``float). Note: while 1.2` is possible 1.2`` is not. At the end an exponent (float*^+12) can follow. - if (stream.match(reFloatForm, true, false)) { - return 'number'; - } - - /* In[23] and Out[34] */ - if (stream.match(/(?:In|Out)\[[0-9]*\]/, true, false)) { - return 'atom'; - } - - // usage - if (stream.match(/([a-zA-Z\$]+(?:`?[a-zA-Z0-9\$])*::usage)/, true, false)) { - return 'meta'; - } - - // message - if (stream.match(/([a-zA-Z\$]+(?:`?[a-zA-Z0-9\$])*::[a-zA-Z\$][a-zA-Z0-9\$]*):?/, true, false)) { - return 'string-2'; - } - - // this makes a look-ahead match for something like variable:{_Integer} - // the match is then forwarded to the mma-patterns tokenizer. - if (stream.match(/([a-zA-Z\$][a-zA-Z0-9\$]*\s*:)(?:(?:[a-zA-Z\$][a-zA-Z0-9\$]*)|(?:[^:=>~@\^\&\*\)\[\]'\?,\|])).*/, true, false)) { - return 'variable-2'; - } - - // catch variables which are used together with Blank (_), BlankSequence (__) or BlankNullSequence (___) - // Cannot start with a number, but can have numbers at any other position. Examples - // blub__Integer, a1_, b34_Integer32 - if (stream.match(/[a-zA-Z\$][a-zA-Z0-9\$]*_+[a-zA-Z\$][a-zA-Z0-9\$]*/, true, false)) { - return 'variable-2'; - } - if (stream.match(/[a-zA-Z\$][a-zA-Z0-9\$]*_+/, true, false)) { - return 'variable-2'; - } - if (stream.match(/_+[a-zA-Z\$][a-zA-Z0-9\$]*/, true, false)) { - return 'variable-2'; - } - - // Named characters in Mathematica, like \[Gamma]. - if (stream.match(/\\\[[a-zA-Z\$][a-zA-Z0-9\$]*\]/, true, false)) { - return 'variable-3'; - } - - // Match all braces separately - if (stream.match(/(?:\[|\]|{|}|\(|\))/, true, false)) { - return 'bracket'; - } - - // Catch Slots (#, ##, #3, ##9 and the V10 named slots #name). I have never seen someone using more than one digit after #, so we match - // only one. - if (stream.match(/(?:#[a-zA-Z\$][a-zA-Z0-9\$]*|#+[0-9]?)/, true, false)) { - return 'variable-2'; - } - - // Literals like variables, keywords, functions - if (stream.match(reIdInContext, true, false)) { - return 'keyword'; - } - - // operators. Note that operators like @@ or /; are matched separately for each symbol. - if (stream.match(/(?:\\|\+|\-|\*|\/|,|;|\.|:|@|~|=|>|<|&|\||_|`|'|\^|\?|!|%)/, true, false)) { - return 'operator'; - } - - // everything else is an error - stream.next(); // advance the stream. - return 'error'; - } - - function tokenString(stream, state) { - var next, end = false, escaped = false; - while ((next = stream.next()) != null) { - if (next === '"' && !escaped) { - end = true; - break; - } - escaped = !escaped && next === '\\'; - } - if (end && !escaped) { - state.tokenize = tokenBase; - } - return 'string'; - }; - - function tokenComment(stream, state) { - var prev, next; - while(state.commentLevel > 0 && (next = stream.next()) != null) { - if (prev === '(' && next === '*') state.commentLevel++; - if (prev === '*' && next === ')') state.commentLevel--; - prev = next; - } - if (state.commentLevel <= 0) { - state.tokenize = tokenBase; - } - return 'comment'; - } - - return { - startState: function() {return {tokenize: tokenBase, commentLevel: 0};}, - token: function(stream, state) { - if (stream.eatSpace()) return null; - return state.tokenize(stream, state); - }, - blockCommentStart: "(*", - blockCommentEnd: "*)" - }; -}); - -CodeMirror.defineMIME('text/x-mathematica', { - name: 'mathematica' -}); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/mbox/index.html b/public/plugins/codemirror-5.17.0/mode/mbox/index.html deleted file mode 100644 index 248ea98e1..000000000 --- a/public/plugins/codemirror-5.17.0/mode/mbox/index.html +++ /dev/null @@ -1,44 +0,0 @@ - - -CodeMirror: mbox mode - - - - - - - - - -
    -

    mbox mode

    -
    - - -

    MIME types defined: application/mbox.

    - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/mbox/mbox.js b/public/plugins/codemirror-5.17.0/mode/mbox/mbox.js deleted file mode 100644 index ba2416ac8..000000000 --- a/public/plugins/codemirror-5.17.0/mode/mbox/mbox.js +++ /dev/null @@ -1,129 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -var rfc2822 = [ - "From", "Sender", "Reply-To", "To", "Cc", "Bcc", "Message-ID", - "In-Reply-To", "References", "Resent-From", "Resent-Sender", "Resent-To", - "Resent-Cc", "Resent-Bcc", "Resent-Message-ID", "Return-Path", "Received" -]; -var rfc2822NoEmail = [ - "Date", "Subject", "Comments", "Keywords", "Resent-Date" -]; - -CodeMirror.registerHelper("hintWords", "mbox", rfc2822.concat(rfc2822NoEmail)); - -var whitespace = /^[ \t]/; -var separator = /^From /; // See RFC 4155 -var rfc2822Header = new RegExp("^(" + rfc2822.join("|") + "): "); -var rfc2822HeaderNoEmail = new RegExp("^(" + rfc2822NoEmail.join("|") + "): "); -var header = /^[^:]+:/; // Optional fields defined in RFC 2822 -var email = /^[^ ]+@[^ ]+/; -var untilEmail = /^.*?(?=[^ ]+?@[^ ]+)/; -var bracketedEmail = /^<.*?>/; -var untilBracketedEmail = /^.*?(?=<.*>)/; - -function styleForHeader(header) { - if (header === "Subject") return "header"; - return "string"; -} - -function readToken(stream, state) { - if (stream.sol()) { - // From last line - state.inSeparator = false; - if (state.inHeader && stream.match(whitespace)) { - // Header folding - return null; - } else { - state.inHeader = false; - state.header = null; - } - - if (stream.match(separator)) { - state.inHeaders = true; - state.inSeparator = true; - return "atom"; - } - - var match; - var emailPermitted = false; - if ((match = stream.match(rfc2822HeaderNoEmail)) || - (emailPermitted = true) && (match = stream.match(rfc2822Header))) { - state.inHeaders = true; - state.inHeader = true; - state.emailPermitted = emailPermitted; - state.header = match[1]; - return "atom"; - } - - // Use vim's heuristics: recognize custom headers only if the line is in a - // block of legitimate headers. - if (state.inHeaders && (match = stream.match(header))) { - state.inHeader = true; - state.emailPermitted = true; - state.header = match[1]; - return "atom"; - } - - state.inHeaders = false; - stream.skipToEnd(); - return null; - } - - if (state.inSeparator) { - if (stream.match(email)) return "link"; - if (stream.match(untilEmail)) return "atom"; - stream.skipToEnd(); - return "atom"; - } - - if (state.inHeader) { - var style = styleForHeader(state.header); - - if (state.emailPermitted) { - if (stream.match(bracketedEmail)) return style + " link"; - if (stream.match(untilBracketedEmail)) return style; - } - stream.skipToEnd(); - return style; - } - - stream.skipToEnd(); - return null; -}; - -CodeMirror.defineMode("mbox", function() { - return { - startState: function() { - return { - // Is in a mbox separator - inSeparator: false, - // Is in a mail header - inHeader: false, - // If bracketed email is permitted. Only applicable when inHeader - emailPermitted: false, - // Name of current header - header: null, - // Is in a region of mail headers - inHeaders: false - }; - }, - token: readToken, - blankLine: function(state) { - state.inHeaders = state.inSeparator = state.inHeader = false; - } - }; -}); - -CodeMirror.defineMIME("application/mbox", "mbox"); -}); diff --git a/public/plugins/codemirror-5.17.0/mode/meta.js b/public/plugins/codemirror-5.17.0/mode/meta.js deleted file mode 100644 index eb25e242d..000000000 --- a/public/plugins/codemirror-5.17.0/mode/meta.js +++ /dev/null @@ -1,208 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - CodeMirror.modeInfo = [ - {name: "APL", mime: "text/apl", mode: "apl", ext: ["dyalog", "apl"]}, - {name: "PGP", mimes: ["application/pgp", "application/pgp-keys", "application/pgp-signature"], mode: "asciiarmor", ext: ["pgp"]}, - {name: "ASN.1", mime: "text/x-ttcn-asn", mode: "asn.1", ext: ["asn", "asn1"]}, - {name: "Asterisk", mime: "text/x-asterisk", mode: "asterisk", file: /^extensions\.conf$/i}, - {name: "Brainfuck", mime: "text/x-brainfuck", mode: "brainfuck", ext: ["b", "bf"]}, - {name: "C", mime: "text/x-csrc", mode: "clike", ext: ["c", "h"]}, - {name: "C++", mime: "text/x-c++src", mode: "clike", ext: ["cpp", "c++", "cc", "cxx", "hpp", "h++", "hh", "hxx"], alias: ["cpp"]}, - {name: "Cobol", mime: "text/x-cobol", mode: "cobol", ext: ["cob", "cpy"]}, - {name: "C#", mime: "text/x-csharp", mode: "clike", ext: ["cs"], alias: ["csharp"]}, - {name: "Clojure", mime: "text/x-clojure", mode: "clojure", ext: ["clj", "cljc", "cljx"]}, - {name: "ClojureScript", mime: "text/x-clojurescript", mode: "clojure", ext: ["cljs"]}, - {name: "Closure Stylesheets (GSS)", mime: "text/x-gss", mode: "css", ext: ["gss"]}, - {name: "CMake", mime: "text/x-cmake", mode: "cmake", ext: ["cmake", "cmake.in"], file: /^CMakeLists.txt$/}, - {name: "CoffeeScript", mime: "text/x-coffeescript", mode: "coffeescript", ext: ["coffee"], alias: ["coffee", "coffee-script"]}, - {name: "Common Lisp", mime: "text/x-common-lisp", mode: "commonlisp", ext: ["cl", "lisp", "el"], alias: ["lisp"]}, - {name: "Cypher", mime: "application/x-cypher-query", mode: "cypher", ext: ["cyp", "cypher"]}, - {name: "Cython", mime: "text/x-cython", mode: "python", ext: ["pyx", "pxd", "pxi"]}, - {name: "Crystal", mime: "text/x-crystal", mode: "crystal", ext: ["cr"]}, - {name: "CSS", mime: "text/css", mode: "css", ext: ["css"]}, - {name: "CQL", mime: "text/x-cassandra", mode: "sql", ext: ["cql"]}, - {name: "D", mime: "text/x-d", mode: "d", ext: ["d"]}, - {name: "Dart", mimes: ["application/dart", "text/x-dart"], mode: "dart", ext: ["dart"]}, - {name: "diff", mime: "text/x-diff", mode: "diff", ext: ["diff", "patch"]}, - {name: "Django", mime: "text/x-django", mode: "django"}, - {name: "Dockerfile", mime: "text/x-dockerfile", mode: "dockerfile", file: /^Dockerfile$/}, - {name: "DTD", mime: "application/xml-dtd", mode: "dtd", ext: ["dtd"]}, - {name: "Dylan", mime: "text/x-dylan", mode: "dylan", ext: ["dylan", "dyl", "intr"]}, - {name: "EBNF", mime: "text/x-ebnf", mode: "ebnf"}, - {name: "ECL", mime: "text/x-ecl", mode: "ecl", ext: ["ecl"]}, - {name: "edn", mime: "application/edn", mode: "clojure", ext: ["edn"]}, - {name: "Eiffel", mime: "text/x-eiffel", mode: "eiffel", ext: ["e"]}, - {name: "Elm", mime: "text/x-elm", mode: "elm", ext: ["elm"]}, - {name: "Embedded Javascript", mime: "application/x-ejs", mode: "htmlembedded", ext: ["ejs"]}, - {name: "Embedded Ruby", mime: "application/x-erb", mode: "htmlembedded", ext: ["erb"]}, - {name: "Erlang", mime: "text/x-erlang", mode: "erlang", ext: ["erl"]}, - {name: "Factor", mime: "text/x-factor", mode: "factor", ext: ["factor"]}, - {name: "FCL", mime: "text/x-fcl", mode: "fcl"}, - {name: "Forth", mime: "text/x-forth", mode: "forth", ext: ["forth", "fth", "4th"]}, - {name: "Fortran", mime: "text/x-fortran", mode: "fortran", ext: ["f", "for", "f77", "f90"]}, - {name: "F#", mime: "text/x-fsharp", mode: "mllike", ext: ["fs"], alias: ["fsharp"]}, - {name: "Gas", mime: "text/x-gas", mode: "gas", ext: ["s"]}, - {name: "Gherkin", mime: "text/x-feature", mode: "gherkin", ext: ["feature"]}, - {name: "GitHub Flavored Markdown", mime: "text/x-gfm", mode: "gfm", file: /^(readme|contributing|history).md$/i}, - {name: "Go", mime: "text/x-go", mode: "go", ext: ["go"]}, - {name: "Groovy", mime: "text/x-groovy", mode: "groovy", ext: ["groovy", "gradle"]}, - {name: "HAML", mime: "text/x-haml", mode: "haml", ext: ["haml"]}, - {name: "Haskell", mime: "text/x-haskell", mode: "haskell", ext: ["hs"]}, - {name: "Haskell (Literate)", mime: "text/x-literate-haskell", mode: "haskell-literate", ext: ["lhs"]}, - {name: "Haxe", mime: "text/x-haxe", mode: "haxe", ext: ["hx"]}, - {name: "HXML", mime: "text/x-hxml", mode: "haxe", ext: ["hxml"]}, - {name: "ASP.NET", mime: "application/x-aspx", mode: "htmlembedded", ext: ["aspx"], alias: ["asp", "aspx"]}, - {name: "HTML", mime: "text/html", mode: "htmlmixed", ext: ["html", "htm"], alias: ["xhtml"]}, - {name: "HTTP", mime: "message/http", mode: "http"}, - {name: "IDL", mime: "text/x-idl", mode: "idl", ext: ["pro"]}, - {name: "Jade", mime: "text/x-jade", mode: "jade", ext: ["jade"]}, - {name: "Java", mime: "text/x-java", mode: "clike", ext: ["java"]}, - {name: "Java Server Pages", mime: "application/x-jsp", mode: "htmlembedded", ext: ["jsp"], alias: ["jsp"]}, - {name: "JavaScript", mimes: ["text/javascript", "text/ecmascript", "application/javascript", "application/x-javascript", "application/ecmascript"], - mode: "javascript", ext: ["js"], alias: ["ecmascript", "js", "node"]}, - {name: "JSON", mimes: ["application/json", "application/x-json"], mode: "javascript", ext: ["json", "map"], alias: ["json5"]}, - {name: "JSON-LD", mime: "application/ld+json", mode: "javascript", ext: ["jsonld"], alias: ["jsonld"]}, - {name: "JSX", mime: "text/jsx", mode: "jsx", ext: ["jsx"]}, - {name: "Jinja2", mime: "null", mode: "jinja2"}, - {name: "Julia", mime: "text/x-julia", mode: "julia", ext: ["jl"]}, - {name: "Kotlin", mime: "text/x-kotlin", mode: "clike", ext: ["kt"]}, - {name: "LESS", mime: "text/x-less", mode: "css", ext: ["less"]}, - {name: "LiveScript", mime: "text/x-livescript", mode: "livescript", ext: ["ls"], alias: ["ls"]}, - {name: "Lua", mime: "text/x-lua", mode: "lua", ext: ["lua"]}, - {name: "Markdown", mime: "text/x-markdown", mode: "markdown", ext: ["markdown", "md", "mkd"]}, - {name: "mIRC", mime: "text/mirc", mode: "mirc"}, - {name: "MariaDB SQL", mime: "text/x-mariadb", mode: "sql"}, - {name: "Mathematica", mime: "text/x-mathematica", mode: "mathematica", ext: ["m", "nb"]}, - {name: "Modelica", mime: "text/x-modelica", mode: "modelica", ext: ["mo"]}, - {name: "MUMPS", mime: "text/x-mumps", mode: "mumps", ext: ["mps"]}, - {name: "MS SQL", mime: "text/x-mssql", mode: "sql"}, - {name: "mbox", mime: "application/mbox", mode: "mbox", ext: ["mbox"]}, - {name: "MySQL", mime: "text/x-mysql", mode: "sql"}, - {name: "Nginx", mime: "text/x-nginx-conf", mode: "nginx", file: /nginx.*\.conf$/i}, - {name: "NSIS", mime: "text/x-nsis", mode: "nsis", ext: ["nsh", "nsi"]}, - {name: "NTriples", mime: "text/n-triples", mode: "ntriples", ext: ["nt"]}, - {name: "Objective C", mime: "text/x-objectivec", mode: "clike", ext: ["m", "mm"], alias: ["objective-c", "objc"]}, - {name: "OCaml", mime: "text/x-ocaml", mode: "mllike", ext: ["ml", "mli", "mll", "mly"]}, - {name: "Octave", mime: "text/x-octave", mode: "octave", ext: ["m"]}, - {name: "Oz", mime: "text/x-oz", mode: "oz", ext: ["oz"]}, - {name: "Pascal", mime: "text/x-pascal", mode: "pascal", ext: ["p", "pas"]}, - {name: "PEG.js", mime: "null", mode: "pegjs", ext: ["jsonld"]}, - {name: "Perl", mime: "text/x-perl", mode: "perl", ext: ["pl", "pm"]}, - {name: "PHP", mime: "application/x-httpd-php", mode: "php", ext: ["php", "php3", "php4", "php5", "phtml"]}, - {name: "Pig", mime: "text/x-pig", mode: "pig", ext: ["pig"]}, - {name: "Plain Text", mime: "text/plain", mode: "null", ext: ["txt", "text", "conf", "def", "list", "log"]}, - {name: "PLSQL", mime: "text/x-plsql", mode: "sql", ext: ["pls"]}, - {name: "PowerShell", mime: "application/x-powershell", mode: "powershell", ext: ["ps1", "psd1", "psm1"]}, - {name: "Properties files", mime: "text/x-properties", mode: "properties", ext: ["properties", "ini", "in"], alias: ["ini", "properties"]}, - {name: "ProtoBuf", mime: "text/x-protobuf", mode: "protobuf", ext: ["proto"]}, - {name: "Python", mime: "text/x-python", mode: "python", ext: ["BUILD", "bzl", "py", "pyw"], file: /^(BUCK|BUILD)$/}, - {name: "Puppet", mime: "text/x-puppet", mode: "puppet", ext: ["pp"]}, - {name: "Q", mime: "text/x-q", mode: "q", ext: ["q"]}, - {name: "R", mime: "text/x-rsrc", mode: "r", ext: ["r"], alias: ["rscript"]}, - {name: "reStructuredText", mime: "text/x-rst", mode: "rst", ext: ["rst"], alias: ["rst"]}, - {name: "RPM Changes", mime: "text/x-rpm-changes", mode: "rpm"}, - {name: "RPM Spec", mime: "text/x-rpm-spec", mode: "rpm", ext: ["spec"]}, - {name: "Ruby", mime: "text/x-ruby", mode: "ruby", ext: ["rb"], alias: ["jruby", "macruby", "rake", "rb", "rbx"]}, - {name: "Rust", mime: "text/x-rustsrc", mode: "rust", ext: ["rs"]}, - {name: "SAS", mime: "text/x-sas", mode: "sas", ext: ["sas"]}, - {name: "Sass", mime: "text/x-sass", mode: "sass", ext: ["sass"]}, - {name: "Scala", mime: "text/x-scala", mode: "clike", ext: ["scala"]}, - {name: "Scheme", mime: "text/x-scheme", mode: "scheme", ext: ["scm", "ss"]}, - {name: "SCSS", mime: "text/x-scss", mode: "css", ext: ["scss"]}, - {name: "Shell", mime: "text/x-sh", mode: "shell", ext: ["sh", "ksh", "bash"], alias: ["bash", "sh", "zsh"], file: /^PKGBUILD$/}, - {name: "Sieve", mime: "application/sieve", mode: "sieve", ext: ["siv", "sieve"]}, - {name: "Slim", mimes: ["text/x-slim", "application/x-slim"], mode: "slim", ext: ["slim"]}, - {name: "Smalltalk", mime: "text/x-stsrc", mode: "smalltalk", ext: ["st"]}, - {name: "Smarty", mime: "text/x-smarty", mode: "smarty", ext: ["tpl"]}, - {name: "Solr", mime: "text/x-solr", mode: "solr"}, - {name: "Soy", mime: "text/x-soy", mode: "soy", ext: ["soy"], alias: ["closure template"]}, - {name: "SPARQL", mime: "application/sparql-query", mode: "sparql", ext: ["rq", "sparql"], alias: ["sparul"]}, - {name: "Spreadsheet", mime: "text/x-spreadsheet", mode: "spreadsheet", alias: ["excel", "formula"]}, - {name: "SQL", mime: "text/x-sql", mode: "sql", ext: ["sql"]}, - {name: "Squirrel", mime: "text/x-squirrel", mode: "clike", ext: ["nut"]}, - {name: "Swift", mime: "text/x-swift", mode: "swift", ext: ["swift"]}, - {name: "sTeX", mime: "text/x-stex", mode: "stex"}, - {name: "LaTeX", mime: "text/x-latex", mode: "stex", ext: ["text", "ltx"], alias: ["tex"]}, - {name: "SystemVerilog", mime: "text/x-systemverilog", mode: "verilog", ext: ["v"]}, - {name: "Tcl", mime: "text/x-tcl", mode: "tcl", ext: ["tcl"]}, - {name: "Textile", mime: "text/x-textile", mode: "textile", ext: ["textile"]}, - {name: "TiddlyWiki ", mime: "text/x-tiddlywiki", mode: "tiddlywiki"}, - {name: "Tiki wiki", mime: "text/tiki", mode: "tiki"}, - {name: "TOML", mime: "text/x-toml", mode: "toml", ext: ["toml"]}, - {name: "Tornado", mime: "text/x-tornado", mode: "tornado"}, - {name: "troff", mime: "text/troff", mode: "troff", ext: ["1", "2", "3", "4", "5", "6", "7", "8", "9"]}, - {name: "TTCN", mime: "text/x-ttcn", mode: "ttcn", ext: ["ttcn", "ttcn3", "ttcnpp"]}, - {name: "TTCN_CFG", mime: "text/x-ttcn-cfg", mode: "ttcn-cfg", ext: ["cfg"]}, - {name: "Turtle", mime: "text/turtle", mode: "turtle", ext: ["ttl"]}, - {name: "TypeScript", mime: "application/typescript", mode: "javascript", ext: ["ts"], alias: ["ts"]}, - {name: "Twig", mime: "text/x-twig", mode: "twig"}, - {name: "Web IDL", mime: "text/x-webidl", mode: "webidl", ext: ["webidl"]}, - {name: "VB.NET", mime: "text/x-vb", mode: "vb", ext: ["vb"]}, - {name: "VBScript", mime: "text/vbscript", mode: "vbscript", ext: ["vbs"]}, - {name: "Velocity", mime: "text/velocity", mode: "velocity", ext: ["vtl"]}, - {name: "Verilog", mime: "text/x-verilog", mode: "verilog", ext: ["v"]}, - {name: "VHDL", mime: "text/x-vhdl", mode: "vhdl", ext: ["vhd", "vhdl"]}, - {name: "XML", mimes: ["application/xml", "text/xml"], mode: "xml", ext: ["xml", "xsl", "xsd"], alias: ["rss", "wsdl", "xsd"]}, - {name: "XQuery", mime: "application/xquery", mode: "xquery", ext: ["xy", "xquery"]}, - {name: "Yacas", mime: "text/x-yacas", mode: "yacas", ext: ["ys"]}, - {name: "YAML", mime: "text/x-yaml", mode: "yaml", ext: ["yaml", "yml"], alias: ["yml"]}, - {name: "Z80", mime: "text/x-z80", mode: "z80", ext: ["z80"]}, - {name: "mscgen", mime: "text/x-mscgen", mode: "mscgen", ext: ["mscgen", "mscin", "msc"]}, - {name: "xu", mime: "text/x-xu", mode: "mscgen", ext: ["xu"]}, - {name: "msgenny", mime: "text/x-msgenny", mode: "mscgen", ext: ["msgenny"]} - ]; - // Ensure all modes have a mime property for backwards compatibility - for (var i = 0; i < CodeMirror.modeInfo.length; i++) { - var info = CodeMirror.modeInfo[i]; - if (info.mimes) info.mime = info.mimes[0]; - } - - CodeMirror.findModeByMIME = function(mime) { - mime = mime.toLowerCase(); - for (var i = 0; i < CodeMirror.modeInfo.length; i++) { - var info = CodeMirror.modeInfo[i]; - if (info.mime == mime) return info; - if (info.mimes) for (var j = 0; j < info.mimes.length; j++) - if (info.mimes[j] == mime) return info; - } - }; - - CodeMirror.findModeByExtension = function(ext) { - for (var i = 0; i < CodeMirror.modeInfo.length; i++) { - var info = CodeMirror.modeInfo[i]; - if (info.ext) for (var j = 0; j < info.ext.length; j++) - if (info.ext[j] == ext) return info; - } - }; - - CodeMirror.findModeByFileName = function(filename) { - for (var i = 0; i < CodeMirror.modeInfo.length; i++) { - var info = CodeMirror.modeInfo[i]; - if (info.file && info.file.test(filename)) return info; - } - var dot = filename.lastIndexOf("."); - var ext = dot > -1 && filename.substring(dot + 1, filename.length); - if (ext) return CodeMirror.findModeByExtension(ext); - }; - - CodeMirror.findModeByName = function(name) { - name = name.toLowerCase(); - for (var i = 0; i < CodeMirror.modeInfo.length; i++) { - var info = CodeMirror.modeInfo[i]; - if (info.name.toLowerCase() == name) return info; - if (info.alias) for (var j = 0; j < info.alias.length; j++) - if (info.alias[j].toLowerCase() == name) return info; - } - }; -}); diff --git a/public/plugins/codemirror-5.17.0/mode/mirc/index.html b/public/plugins/codemirror-5.17.0/mode/mirc/index.html deleted file mode 100644 index fd2f34e4b..000000000 --- a/public/plugins/codemirror-5.17.0/mode/mirc/index.html +++ /dev/null @@ -1,160 +0,0 @@ - - -CodeMirror: mIRC mode - - - - - - - - - - -
    -

    mIRC mode

    -
    - - -

    MIME types defined: text/mirc.

    - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/mirc/mirc.js b/public/plugins/codemirror-5.17.0/mode/mirc/mirc.js deleted file mode 100644 index f0d5c6ad5..000000000 --- a/public/plugins/codemirror-5.17.0/mode/mirc/mirc.js +++ /dev/null @@ -1,193 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -//mIRC mode by Ford_Lawnmower :: Based on Velocity mode by Steve O'Hara - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMIME("text/mirc", "mirc"); -CodeMirror.defineMode("mirc", function() { - function parseWords(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - var specials = parseWords("$! $$ $& $? $+ $abook $abs $active $activecid " + - "$activewid $address $addtok $agent $agentname $agentstat $agentver " + - "$alias $and $anick $ansi2mirc $aop $appactive $appstate $asc $asctime " + - "$asin $atan $avoice $away $awaymsg $awaytime $banmask $base $bfind " + - "$binoff $biton $bnick $bvar $bytes $calc $cb $cd $ceil $chan $chanmodes " + - "$chantypes $chat $chr $cid $clevel $click $cmdbox $cmdline $cnick $color " + - "$com $comcall $comchan $comerr $compact $compress $comval $cos $count " + - "$cr $crc $creq $crlf $ctime $ctimer $ctrlenter $date $day $daylight " + - "$dbuh $dbuw $dccignore $dccport $dde $ddename $debug $decode $decompress " + - "$deltok $devent $dialog $did $didreg $didtok $didwm $disk $dlevel $dll " + - "$dllcall $dname $dns $duration $ebeeps $editbox $emailaddr $encode $error " + - "$eval $event $exist $feof $ferr $fgetc $file $filename $filtered $finddir " + - "$finddirn $findfile $findfilen $findtok $fline $floor $fopen $fread $fserve " + - "$fulladdress $fulldate $fullname $fullscreen $get $getdir $getdot $gettok $gmt " + - "$group $halted $hash $height $hfind $hget $highlight $hnick $hotline " + - "$hotlinepos $ial $ialchan $ibl $idle $iel $ifmatch $ignore $iif $iil " + - "$inelipse $ini $inmidi $inpaste $inpoly $input $inrect $inroundrect " + - "$insong $instok $int $inwave $ip $isalias $isbit $isdde $isdir $isfile " + - "$isid $islower $istok $isupper $keychar $keyrpt $keyval $knick $lactive " + - "$lactivecid $lactivewid $left $len $level $lf $line $lines $link $lock " + - "$lock $locked $log $logstamp $logstampfmt $longfn $longip $lower $ltimer " + - "$maddress $mask $matchkey $matchtok $md5 $me $menu $menubar $menucontext " + - "$menutype $mid $middir $mircdir $mircexe $mircini $mklogfn $mnick $mode " + - "$modefirst $modelast $modespl $mouse $msfile $network $newnick $nick $nofile " + - "$nopath $noqt $not $notags $notify $null $numeric $numok $oline $onpoly " + - "$opnick $or $ord $os $passivedcc $pic $play $pnick $port $portable $portfree " + - "$pos $prefix $prop $protect $puttok $qt $query $rand $r $rawmsg $read $readomo " + - "$readn $regex $regml $regsub $regsubex $remove $remtok $replace $replacex " + - "$reptok $result $rgb $right $round $scid $scon $script $scriptdir $scriptline " + - "$sdir $send $server $serverip $sfile $sha1 $shortfn $show $signal $sin " + - "$site $sline $snick $snicks $snotify $sock $sockbr $sockerr $sockname " + - "$sorttok $sound $sqrt $ssl $sreq $sslready $status $strip $str $stripped " + - "$syle $submenu $switchbar $tan $target $ticks $time $timer $timestamp " + - "$timestampfmt $timezone $tip $titlebar $toolbar $treebar $trust $ulevel " + - "$ulist $upper $uptime $url $usermode $v1 $v2 $var $vcmd $vcmdstat $vcmdver " + - "$version $vnick $vol $wid $width $wildsite $wildtok $window $wrap $xor"); - var keywords = parseWords("abook ajinvite alias aline ame amsg anick aop auser autojoin avoice " + - "away background ban bcopy beep bread break breplace bset btrunc bunset bwrite " + - "channel clear clearall cline clipboard close cnick color comclose comopen " + - "comreg continue copy creq ctcpreply ctcps dcc dccserver dde ddeserver " + - "debug dec describe dialog did didtok disable disconnect dlevel dline dll " + - "dns dqwindow drawcopy drawdot drawfill drawline drawpic drawrect drawreplace " + - "drawrot drawsave drawscroll drawtext ebeeps echo editbox emailaddr enable " + - "events exit fclose filter findtext finger firewall flash flist flood flush " + - "flushini font fopen fseek fsend fserve fullname fwrite ghide gload gmove " + - "gopts goto gplay gpoint gqreq groups gshow gsize gstop gtalk gunload hadd " + - "halt haltdef hdec hdel help hfree hinc hload hmake hop hsave ial ialclear " + - "ialmark identd if ignore iline inc invite iuser join kick linesep links list " + - "load loadbuf localinfo log mdi me menubar mkdir mnick mode msg nick noop notice " + - "notify omsg onotice part partall pdcc perform play playctrl pop protect pvoice " + - "qme qmsg query queryn quit raw reload remini remote remove rename renwin " + - "reseterror resetidle return rlevel rline rmdir run ruser save savebuf saveini " + - "say scid scon server set showmirc signam sline sockaccept sockclose socklist " + - "socklisten sockmark sockopen sockpause sockread sockrename sockudp sockwrite " + - "sound speak splay sreq strip switchbar timer timestamp titlebar tnick tokenize " + - "toolbar topic tray treebar ulist unload unset unsetall updatenl url uwho " + - "var vcadd vcmd vcrem vol while whois window winhelp write writeint if isalnum " + - "isalpha isaop isavoice isban ischan ishop isignore isin isincs isletter islower " + - "isnotify isnum ison isop isprotect isreg isupper isvoice iswm iswmcs " + - "elseif else goto menu nicklist status title icon size option text edit " + - "button check radio box scroll list combo link tab item"); - var functions = parseWords("if elseif else and not or eq ne in ni for foreach while switch"); - var isOperatorChar = /[+\-*&%=<>!?^\/\|]/; - function chain(stream, state, f) { - state.tokenize = f; - return f(stream, state); - } - function tokenBase(stream, state) { - var beforeParams = state.beforeParams; - state.beforeParams = false; - var ch = stream.next(); - if (/[\[\]{}\(\),\.]/.test(ch)) { - if (ch == "(" && beforeParams) state.inParams = true; - else if (ch == ")") state.inParams = false; - return null; - } - else if (/\d/.test(ch)) { - stream.eatWhile(/[\w\.]/); - return "number"; - } - else if (ch == "\\") { - stream.eat("\\"); - stream.eat(/./); - return "number"; - } - else if (ch == "/" && stream.eat("*")) { - return chain(stream, state, tokenComment); - } - else if (ch == ";" && stream.match(/ *\( *\(/)) { - return chain(stream, state, tokenUnparsed); - } - else if (ch == ";" && !state.inParams) { - stream.skipToEnd(); - return "comment"; - } - else if (ch == '"') { - stream.eat(/"/); - return "keyword"; - } - else if (ch == "$") { - stream.eatWhile(/[$_a-z0-9A-Z\.:]/); - if (specials && specials.propertyIsEnumerable(stream.current().toLowerCase())) { - return "keyword"; - } - else { - state.beforeParams = true; - return "builtin"; - } - } - else if (ch == "%") { - stream.eatWhile(/[^,^\s^\(^\)]/); - state.beforeParams = true; - return "string"; - } - else if (isOperatorChar.test(ch)) { - stream.eatWhile(isOperatorChar); - return "operator"; - } - else { - stream.eatWhile(/[\w\$_{}]/); - var word = stream.current().toLowerCase(); - if (keywords && keywords.propertyIsEnumerable(word)) - return "keyword"; - if (functions && functions.propertyIsEnumerable(word)) { - state.beforeParams = true; - return "keyword"; - } - return null; - } - } - function tokenComment(stream, state) { - var maybeEnd = false, ch; - while (ch = stream.next()) { - if (ch == "/" && maybeEnd) { - state.tokenize = tokenBase; - break; - } - maybeEnd = (ch == "*"); - } - return "comment"; - } - function tokenUnparsed(stream, state) { - var maybeEnd = 0, ch; - while (ch = stream.next()) { - if (ch == ";" && maybeEnd == 2) { - state.tokenize = tokenBase; - break; - } - if (ch == ")") - maybeEnd++; - else if (ch != " ") - maybeEnd = 0; - } - return "meta"; - } - return { - startState: function() { - return { - tokenize: tokenBase, - beforeParams: false, - inParams: false - }; - }, - token: function(stream, state) { - if (stream.eatSpace()) return null; - return state.tokenize(stream, state); - } - }; -}); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/mllike/index.html b/public/plugins/codemirror-5.17.0/mode/mllike/index.html deleted file mode 100644 index 5923af8f8..000000000 --- a/public/plugins/codemirror-5.17.0/mode/mllike/index.html +++ /dev/null @@ -1,179 +0,0 @@ - - -CodeMirror: ML-like mode - - - - - - - - - - -
    -

    OCaml mode

    - - - - -

    F# mode

    - - - - - -

    MIME types defined: text/x-ocaml (OCaml) and text/x-fsharp (F#).

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/mllike/mllike.js b/public/plugins/codemirror-5.17.0/mode/mllike/mllike.js deleted file mode 100644 index bf0b8a674..000000000 --- a/public/plugins/codemirror-5.17.0/mode/mllike/mllike.js +++ /dev/null @@ -1,205 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode('mllike', function(_config, parserConfig) { - var words = { - 'let': 'keyword', - 'rec': 'keyword', - 'in': 'keyword', - 'of': 'keyword', - 'and': 'keyword', - 'if': 'keyword', - 'then': 'keyword', - 'else': 'keyword', - 'for': 'keyword', - 'to': 'keyword', - 'while': 'keyword', - 'do': 'keyword', - 'done': 'keyword', - 'fun': 'keyword', - 'function': 'keyword', - 'val': 'keyword', - 'type': 'keyword', - 'mutable': 'keyword', - 'match': 'keyword', - 'with': 'keyword', - 'try': 'keyword', - 'open': 'builtin', - 'ignore': 'builtin', - 'begin': 'keyword', - 'end': 'keyword' - }; - - var extraWords = parserConfig.extraWords || {}; - for (var prop in extraWords) { - if (extraWords.hasOwnProperty(prop)) { - words[prop] = parserConfig.extraWords[prop]; - } - } - - function tokenBase(stream, state) { - var ch = stream.next(); - - if (ch === '"') { - state.tokenize = tokenString; - return state.tokenize(stream, state); - } - if (ch === '(') { - if (stream.eat('*')) { - state.commentLevel++; - state.tokenize = tokenComment; - return state.tokenize(stream, state); - } - } - if (ch === '~') { - stream.eatWhile(/\w/); - return 'variable-2'; - } - if (ch === '`') { - stream.eatWhile(/\w/); - return 'quote'; - } - if (ch === '/' && parserConfig.slashComments && stream.eat('/')) { - stream.skipToEnd(); - return 'comment'; - } - if (/\d/.test(ch)) { - stream.eatWhile(/[\d]/); - if (stream.eat('.')) { - stream.eatWhile(/[\d]/); - } - return 'number'; - } - if ( /[+\-*&%=<>!?|]/.test(ch)) { - return 'operator'; - } - stream.eatWhile(/\w/); - var cur = stream.current(); - return words.hasOwnProperty(cur) ? words[cur] : 'variable'; - } - - function tokenString(stream, state) { - var next, end = false, escaped = false; - while ((next = stream.next()) != null) { - if (next === '"' && !escaped) { - end = true; - break; - } - escaped = !escaped && next === '\\'; - } - if (end && !escaped) { - state.tokenize = tokenBase; - } - return 'string'; - }; - - function tokenComment(stream, state) { - var prev, next; - while(state.commentLevel > 0 && (next = stream.next()) != null) { - if (prev === '(' && next === '*') state.commentLevel++; - if (prev === '*' && next === ')') state.commentLevel--; - prev = next; - } - if (state.commentLevel <= 0) { - state.tokenize = tokenBase; - } - return 'comment'; - } - - return { - startState: function() {return {tokenize: tokenBase, commentLevel: 0};}, - token: function(stream, state) { - if (stream.eatSpace()) return null; - return state.tokenize(stream, state); - }, - - blockCommentStart: "(*", - blockCommentEnd: "*)", - lineComment: parserConfig.slashComments ? "//" : null - }; -}); - -CodeMirror.defineMIME('text/x-ocaml', { - name: 'mllike', - extraWords: { - 'succ': 'keyword', - 'trace': 'builtin', - 'exit': 'builtin', - 'print_string': 'builtin', - 'print_endline': 'builtin', - 'true': 'atom', - 'false': 'atom', - 'raise': 'keyword' - } -}); - -CodeMirror.defineMIME('text/x-fsharp', { - name: 'mllike', - extraWords: { - 'abstract': 'keyword', - 'as': 'keyword', - 'assert': 'keyword', - 'base': 'keyword', - 'class': 'keyword', - 'default': 'keyword', - 'delegate': 'keyword', - 'downcast': 'keyword', - 'downto': 'keyword', - 'elif': 'keyword', - 'exception': 'keyword', - 'extern': 'keyword', - 'finally': 'keyword', - 'global': 'keyword', - 'inherit': 'keyword', - 'inline': 'keyword', - 'interface': 'keyword', - 'internal': 'keyword', - 'lazy': 'keyword', - 'let!': 'keyword', - 'member' : 'keyword', - 'module': 'keyword', - 'namespace': 'keyword', - 'new': 'keyword', - 'null': 'keyword', - 'override': 'keyword', - 'private': 'keyword', - 'public': 'keyword', - 'return': 'keyword', - 'return!': 'keyword', - 'select': 'keyword', - 'static': 'keyword', - 'struct': 'keyword', - 'upcast': 'keyword', - 'use': 'keyword', - 'use!': 'keyword', - 'val': 'keyword', - 'when': 'keyword', - 'yield': 'keyword', - 'yield!': 'keyword', - - 'List': 'builtin', - 'Seq': 'builtin', - 'Map': 'builtin', - 'Set': 'builtin', - 'int': 'builtin', - 'string': 'builtin', - 'raise': 'builtin', - 'failwith': 'builtin', - 'not': 'builtin', - 'true': 'builtin', - 'false': 'builtin' - }, - slashComments: true -}); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/modelica/index.html b/public/plugins/codemirror-5.17.0/mode/modelica/index.html deleted file mode 100644 index 408c3b17e..000000000 --- a/public/plugins/codemirror-5.17.0/mode/modelica/index.html +++ /dev/null @@ -1,67 +0,0 @@ - - -CodeMirror: Modelica mode - - - - - - - - - - - - -
    -

    Modelica mode

    - -
    - - - -

    Simple mode that tries to handle Modelica as well as it can.

    - -

    MIME types defined: text/x-modelica - (Modlica code).

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/modelica/modelica.js b/public/plugins/codemirror-5.17.0/mode/modelica/modelica.js deleted file mode 100644 index 77ec7a3c1..000000000 --- a/public/plugins/codemirror-5.17.0/mode/modelica/modelica.js +++ /dev/null @@ -1,245 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -// Modelica support for CodeMirror, copyright (c) by Lennart Ochel - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -}) - -(function(CodeMirror) { - "use strict"; - - CodeMirror.defineMode("modelica", function(config, parserConfig) { - - var indentUnit = config.indentUnit; - var keywords = parserConfig.keywords || {}; - var builtin = parserConfig.builtin || {}; - var atoms = parserConfig.atoms || {}; - - var isSingleOperatorChar = /[;=\(:\),{}.*<>+\-\/^\[\]]/; - var isDoubleOperatorChar = /(:=|<=|>=|==|<>|\.\+|\.\-|\.\*|\.\/|\.\^)/; - var isDigit = /[0-9]/; - var isNonDigit = /[_a-zA-Z]/; - - function tokenLineComment(stream, state) { - stream.skipToEnd(); - state.tokenize = null; - return "comment"; - } - - function tokenBlockComment(stream, state) { - var maybeEnd = false, ch; - while (ch = stream.next()) { - if (maybeEnd && ch == "/") { - state.tokenize = null; - break; - } - maybeEnd = (ch == "*"); - } - return "comment"; - } - - function tokenString(stream, state) { - var escaped = false, ch; - while ((ch = stream.next()) != null) { - if (ch == '"' && !escaped) { - state.tokenize = null; - state.sol = false; - break; - } - escaped = !escaped && ch == "\\"; - } - - return "string"; - } - - function tokenIdent(stream, state) { - stream.eatWhile(isDigit); - while (stream.eat(isDigit) || stream.eat(isNonDigit)) { } - - - var cur = stream.current(); - - if(state.sol && (cur == "package" || cur == "model" || cur == "when" || cur == "connector")) state.level++; - else if(state.sol && cur == "end" && state.level > 0) state.level--; - - state.tokenize = null; - state.sol = false; - - if (keywords.propertyIsEnumerable(cur)) return "keyword"; - else if (builtin.propertyIsEnumerable(cur)) return "builtin"; - else if (atoms.propertyIsEnumerable(cur)) return "atom"; - else return "variable"; - } - - function tokenQIdent(stream, state) { - while (stream.eat(/[^']/)) { } - - state.tokenize = null; - state.sol = false; - - if(stream.eat("'")) - return "variable"; - else - return "error"; - } - - function tokenUnsignedNuber(stream, state) { - stream.eatWhile(isDigit); - if (stream.eat('.')) { - stream.eatWhile(isDigit); - } - if (stream.eat('e') || stream.eat('E')) { - if (!stream.eat('-')) - stream.eat('+'); - stream.eatWhile(isDigit); - } - - state.tokenize = null; - state.sol = false; - return "number"; - } - - // Interface - return { - startState: function() { - return { - tokenize: null, - level: 0, - sol: true - }; - }, - - token: function(stream, state) { - if(state.tokenize != null) { - return state.tokenize(stream, state); - } - - if(stream.sol()) { - state.sol = true; - } - - // WHITESPACE - if(stream.eatSpace()) { - state.tokenize = null; - return null; - } - - var ch = stream.next(); - - // LINECOMMENT - if(ch == '/' && stream.eat('/')) { - state.tokenize = tokenLineComment; - } - // BLOCKCOMMENT - else if(ch == '/' && stream.eat('*')) { - state.tokenize = tokenBlockComment; - } - // TWO SYMBOL TOKENS - else if(isDoubleOperatorChar.test(ch+stream.peek())) { - stream.next(); - state.tokenize = null; - return "operator"; - } - // SINGLE SYMBOL TOKENS - else if(isSingleOperatorChar.test(ch)) { - state.tokenize = null; - return "operator"; - } - // IDENT - else if(isNonDigit.test(ch)) { - state.tokenize = tokenIdent; - } - // Q-IDENT - else if(ch == "'" && stream.peek() && stream.peek() != "'") { - state.tokenize = tokenQIdent; - } - // STRING - else if(ch == '"') { - state.tokenize = tokenString; - } - // UNSIGNED_NUBER - else if(isDigit.test(ch)) { - state.tokenize = tokenUnsignedNuber; - } - // ERROR - else { - state.tokenize = null; - return "error"; - } - - return state.tokenize(stream, state); - }, - - indent: function(state, textAfter) { - if (state.tokenize != null) return CodeMirror.Pass; - - var level = state.level; - if(/(algorithm)/.test(textAfter)) level--; - if(/(equation)/.test(textAfter)) level--; - if(/(initial algorithm)/.test(textAfter)) level--; - if(/(initial equation)/.test(textAfter)) level--; - if(/(end)/.test(textAfter)) level--; - - if(level > 0) - return indentUnit*level; - else - return 0; - }, - - blockCommentStart: "/*", - blockCommentEnd: "*/", - lineComment: "//" - }; - }); - - function words(str) { - var obj = {}, words = str.split(" "); - for (var i=0; i - -CodeMirror: MscGen mode - - - - - - - - - -
    -

    MscGen mode

    - -
    - -

    Xù mode

    - -
    - -

    MsGenny mode

    -
    - -

    - Simple mode for highlighting MscGen and two derived sequence - chart languages. -

    - - - -

    MIME types defined: - text/x-mscgen - text/x-xu - text/x-msgenny -

    - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/mscgen/mscgen.js b/public/plugins/codemirror-5.17.0/mode/mscgen/mscgen.js deleted file mode 100644 index d61b47065..000000000 --- a/public/plugins/codemirror-5.17.0/mode/mscgen/mscgen.js +++ /dev/null @@ -1,169 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -// mode(s) for the sequence chart dsl's mscgen, xù and msgenny -// For more information on mscgen, see the site of the original author: -// http://www.mcternan.me.uk/mscgen -// -// This mode for mscgen and the two derivative languages were -// originally made for use in the mscgen_js interpreter -// (https://sverweij.github.io/mscgen_js) - -(function(mod) { - if ( typeof exports == "object" && typeof module == "object")// CommonJS - mod(require("../../lib/codemirror")); - else if ( typeof define == "function" && define.amd)// AMD - define(["../../lib/codemirror"], mod); - else// Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - var languages = { - mscgen: { - "keywords" : ["msc"], - "options" : ["hscale", "width", "arcgradient", "wordwraparcs"], - "attributes" : ["label", "idurl", "id", "url", "linecolor", "linecolour", "textcolor", "textcolour", "textbgcolor", "textbgcolour", "arclinecolor", "arclinecolour", "arctextcolor", "arctextcolour", "arctextbgcolor", "arctextbgcolour", "arcskip"], - "brackets" : ["\\{", "\\}"], // [ and ] are brackets too, but these get handled in with lists - "arcsWords" : ["note", "abox", "rbox", "box"], - "arcsOthers" : ["\\|\\|\\|", "\\.\\.\\.", "---", "--", "<->", "==", "<<=>>", "<=>", "\\.\\.", "<<>>", "::", "<:>", "->", "=>>", "=>", ">>", ":>", "<-", "<<=", "<=", "<<", "<:", "x-", "-x"], - "singlecomment" : ["//", "#"], - "operators" : ["="] - }, - xu: { - "keywords" : ["msc"], - "options" : ["hscale", "width", "arcgradient", "wordwraparcs", "watermark"], - "attributes" : ["label", "idurl", "id", "url", "linecolor", "linecolour", "textcolor", "textcolour", "textbgcolor", "textbgcolour", "arclinecolor", "arclinecolour", "arctextcolor", "arctextcolour", "arctextbgcolor", "arctextbgcolour", "arcskip"], - "brackets" : ["\\{", "\\}"], // [ and ] are brackets too, but these get handled in with lists - "arcsWords" : ["note", "abox", "rbox", "box", "alt", "else", "opt", "break", "par", "seq", "strict", "neg", "critical", "ignore", "consider", "assert", "loop", "ref", "exc"], - "arcsOthers" : ["\\|\\|\\|", "\\.\\.\\.", "---", "--", "<->", "==", "<<=>>", "<=>", "\\.\\.", "<<>>", "::", "<:>", "->", "=>>", "=>", ">>", ":>", "<-", "<<=", "<=", "<<", "<:", "x-", "-x"], - "singlecomment" : ["//", "#"], - "operators" : ["="] - }, - msgenny: { - "keywords" : null, - "options" : ["hscale", "width", "arcgradient", "wordwraparcs", "watermark"], - "attributes" : null, - "brackets" : ["\\{", "\\}"], - "arcsWords" : ["note", "abox", "rbox", "box", "alt", "else", "opt", "break", "par", "seq", "strict", "neg", "critical", "ignore", "consider", "assert", "loop", "ref", "exc"], - "arcsOthers" : ["\\|\\|\\|", "\\.\\.\\.", "---", "--", "<->", "==", "<<=>>", "<=>", "\\.\\.", "<<>>", "::", "<:>", "->", "=>>", "=>", ">>", ":>", "<-", "<<=", "<=", "<<", "<:", "x-", "-x"], - "singlecomment" : ["//", "#"], - "operators" : ["="] - } - } - - CodeMirror.defineMode("mscgen", function(_, modeConfig) { - var language = languages[modeConfig && modeConfig.language || "mscgen"] - return { - startState: startStateFn, - copyState: copyStateFn, - token: produceTokenFunction(language), - lineComment : "#", - blockCommentStart : "/*", - blockCommentEnd : "*/" - }; - }); - - CodeMirror.defineMIME("text/x-mscgen", "mscgen"); - CodeMirror.defineMIME("text/x-xu", {name: "mscgen", language: "xu"}); - CodeMirror.defineMIME("text/x-msgenny", {name: "mscgen", language: "msgenny"}); - - function wordRegexpBoundary(pWords) { - return new RegExp("\\b(" + pWords.join("|") + ")\\b", "i"); - } - - function wordRegexp(pWords) { - return new RegExp("(" + pWords.join("|") + ")", "i"); - } - - function startStateFn() { - return { - inComment : false, - inString : false, - inAttributeList : false, - inScript : false - }; - } - - function copyStateFn(pState) { - return { - inComment : pState.inComment, - inString : pState.inString, - inAttributeList : pState.inAttributeList, - inScript : pState.inScript - }; - } - - function produceTokenFunction(pConfig) { - - return function(pStream, pState) { - if (pStream.match(wordRegexp(pConfig.brackets), true, true)) { - return "bracket"; - } - /* comments */ - if (!pState.inComment) { - if (pStream.match(/\/\*[^\*\/]*/, true, true)) { - pState.inComment = true; - return "comment"; - } - if (pStream.match(wordRegexp(pConfig.singlecomment), true, true)) { - pStream.skipToEnd(); - return "comment"; - } - } - if (pState.inComment) { - if (pStream.match(/[^\*\/]*\*\//, true, true)) - pState.inComment = false; - else - pStream.skipToEnd(); - return "comment"; - } - /* strings */ - if (!pState.inString && pStream.match(/\"(\\\"|[^\"])*/, true, true)) { - pState.inString = true; - return "string"; - } - if (pState.inString) { - if (pStream.match(/[^\"]*\"/, true, true)) - pState.inString = false; - else - pStream.skipToEnd(); - return "string"; - } - /* keywords & operators */ - if (!!pConfig.keywords && pStream.match(wordRegexpBoundary(pConfig.keywords), true, true)) - return "keyword"; - - if (pStream.match(wordRegexpBoundary(pConfig.options), true, true)) - return "keyword"; - - if (pStream.match(wordRegexpBoundary(pConfig.arcsWords), true, true)) - return "keyword"; - - if (pStream.match(wordRegexp(pConfig.arcsOthers), true, true)) - return "keyword"; - - if (!!pConfig.operators && pStream.match(wordRegexp(pConfig.operators), true, true)) - return "operator"; - - /* attribute lists */ - if (!pConfig.inAttributeList && !!pConfig.attributes && pStream.match(/\[/, true, true)) { - pConfig.inAttributeList = true; - return "bracket"; - } - if (pConfig.inAttributeList) { - if (pConfig.attributes !== null && pStream.match(wordRegexpBoundary(pConfig.attributes), true, true)) { - return "attribute"; - } - if (pStream.match(/]/, true, true)) { - pConfig.inAttributeList = false; - return "bracket"; - } - } - - pStream.next(); - return "base"; - }; - } - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/mscgen/mscgen_test.js b/public/plugins/codemirror-5.17.0/mode/mscgen/mscgen_test.js deleted file mode 100644 index e319a3997..000000000 --- a/public/plugins/codemirror-5.17.0/mode/mscgen/mscgen_test.js +++ /dev/null @@ -1,75 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function() { - var mode = CodeMirror.getMode({indentUnit: 2}, "mscgen"); - function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } - - MT("empty chart", - "[keyword msc][bracket {]", - "[base ]", - "[bracket }]" - ); - - MT("comments", - "[comment // a single line comment]", - "[comment # another single line comment /* and */ ignored here]", - "[comment /* A multi-line comment even though it contains]", - "[comment msc keywords and \"quoted text\"*/]"); - - MT("strings", - "[string \"// a string\"]", - "[string \"a string running over]", - "[string two lines\"]", - "[string \"with \\\"escaped quote\"]" - ); - - MT("xù/ msgenny keywords classify as 'base'", - "[base watermark]", - "[base alt loop opt ref else break par seq assert]" - ); - - MT("mscgen options classify as keyword", - "[keyword hscale]", "[keyword width]", "[keyword arcgradient]", "[keyword wordwraparcs]" - ); - - MT("mscgen arcs classify as keyword", - "[keyword note]","[keyword abox]","[keyword rbox]","[keyword box]", - "[keyword |||...---]", "[keyword ..--==::]", - "[keyword ->]", "[keyword <-]", "[keyword <->]", - "[keyword =>]", "[keyword <=]", "[keyword <=>]", - "[keyword =>>]", "[keyword <<=]", "[keyword <<=>>]", - "[keyword >>]", "[keyword <<]", "[keyword <<>>]", - "[keyword -x]", "[keyword x-]", "[keyword -X]", "[keyword X-]", - "[keyword :>]", "[keyword <:]", "[keyword <:>]" - ); - - MT("within an attribute list, attributes classify as attribute", - "[bracket [[][attribute label]", - "[attribute id]","[attribute url]","[attribute idurl]", - "[attribute linecolor]","[attribute linecolour]","[attribute textcolor]","[attribute textcolour]","[attribute textbgcolor]","[attribute textbgcolour]", - "[attribute arclinecolor]","[attribute arclinecolour]","[attribute arctextcolor]","[attribute arctextcolour]","[attribute arctextbgcolor]","[attribute arctextbgcolour]", - "[attribute arcskip][bracket ]]]" - ); - - MT("outside an attribute list, attributes classify as base", - "[base label]", - "[base id]","[base url]","[base idurl]", - "[base linecolor]","[base linecolour]","[base textcolor]","[base textcolour]","[base textbgcolor]","[base textbgcolour]", - "[base arclinecolor]","[base arclinecolour]","[base arctextcolor]","[base arctextcolour]","[base arctextbgcolor]","[base arctextbgcolour]", - "[base arcskip]" - ); - - MT("a typical program", - "[comment # typical mscgen program]", - "[keyword msc][base ][bracket {]", - "[keyword wordwraparcs][operator =][string \"true\"][base , ][keyword hscale][operator =][string \"0.8\"][keyword arcgradient][operator =][base 30;]", - "[base a][bracket [[][attribute label][operator =][string \"Entity A\"][bracket ]]][base ,]", - "[base b][bracket [[][attribute label][operator =][string \"Entity B\"][bracket ]]][base ,]", - "[base c][bracket [[][attribute label][operator =][string \"Entity C\"][bracket ]]][base ;]", - "[base a ][keyword =>>][base b][bracket [[][attribute label][operator =][string \"Hello entity B\"][bracket ]]][base ;]", - "[base a ][keyword <<][base b][bracket [[][attribute label][operator =][string \"Here's an answer dude!\"][bracket ]]][base ;]", - "[base c ][keyword :>][base *][bracket [[][attribute label][operator =][string \"What about me?\"][base , ][attribute textcolor][operator =][base red][bracket ]]][base ;]", - "[bracket }]" - ); -})(); diff --git a/public/plugins/codemirror-5.17.0/mode/mscgen/msgenny_test.js b/public/plugins/codemirror-5.17.0/mode/mscgen/msgenny_test.js deleted file mode 100644 index 80173de08..000000000 --- a/public/plugins/codemirror-5.17.0/mode/mscgen/msgenny_test.js +++ /dev/null @@ -1,71 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function() { - var mode = CodeMirror.getMode({indentUnit: 2}, "text/x-msgenny"); - function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), "msgenny"); } - - MT("comments", - "[comment // a single line comment]", - "[comment # another single line comment /* and */ ignored here]", - "[comment /* A multi-line comment even though it contains]", - "[comment msc keywords and \"quoted text\"*/]"); - - MT("strings", - "[string \"// a string\"]", - "[string \"a string running over]", - "[string two lines\"]", - "[string \"with \\\"escaped quote\"]" - ); - - MT("xù/ msgenny keywords classify as 'keyword'", - "[keyword watermark]", - "[keyword alt]","[keyword loop]","[keyword opt]","[keyword ref]","[keyword else]","[keyword break]","[keyword par]","[keyword seq]","[keyword assert]" - ); - - MT("mscgen options classify as keyword", - "[keyword hscale]", "[keyword width]", "[keyword arcgradient]", "[keyword wordwraparcs]" - ); - - MT("mscgen arcs classify as keyword", - "[keyword note]","[keyword abox]","[keyword rbox]","[keyword box]", - "[keyword |||...---]", "[keyword ..--==::]", - "[keyword ->]", "[keyword <-]", "[keyword <->]", - "[keyword =>]", "[keyword <=]", "[keyword <=>]", - "[keyword =>>]", "[keyword <<=]", "[keyword <<=>>]", - "[keyword >>]", "[keyword <<]", "[keyword <<>>]", - "[keyword -x]", "[keyword x-]", "[keyword -X]", "[keyword X-]", - "[keyword :>]", "[keyword <:]", "[keyword <:>]" - ); - - MT("within an attribute list, mscgen/ xù attributes classify as base", - "[base [[label]", - "[base idurl id url]", - "[base linecolor linecolour textcolor textcolour textbgcolor textbgcolour]", - "[base arclinecolor arclinecolour arctextcolor arctextcolour arctextbgcolor arctextbgcolour]", - "[base arcskip]]]" - ); - - MT("outside an attribute list, mscgen/ xù attributes classify as base", - "[base label]", - "[base idurl id url]", - "[base linecolor linecolour textcolor textcolour textbgcolor textbgcolour]", - "[base arclinecolor arclinecolour arctextcolor arctextcolour arctextbgcolor arctextbgcolour]", - "[base arcskip]" - ); - - MT("a typical program", - "[comment # typical msgenny program]", - "[keyword wordwraparcs][operator =][string \"true\"][base , ][keyword hscale][operator =][string \"0.8\"][base , ][keyword arcgradient][operator =][base 30;]", - "[base a : ][string \"Entity A\"][base ,]", - "[base b : Entity B,]", - "[base c : Entity C;]", - "[base a ][keyword =>>][base b: ][string \"Hello entity B\"][base ;]", - "[base a ][keyword alt][base c][bracket {]", - "[base a ][keyword <<][base b: ][string \"Here's an answer dude!\"][base ;]", - "[keyword ---][base : ][string \"sorry, won't march - comm glitch\"]", - "[base a ][keyword x-][base b: ][string \"Here's an answer dude! (won't arrive...)\"][base ;]", - "[bracket }]", - "[base c ][keyword :>][base *: What about me?;]" - ); -})(); diff --git a/public/plugins/codemirror-5.17.0/mode/mscgen/xu_test.js b/public/plugins/codemirror-5.17.0/mode/mscgen/xu_test.js deleted file mode 100644 index f9a50f0af..000000000 --- a/public/plugins/codemirror-5.17.0/mode/mscgen/xu_test.js +++ /dev/null @@ -1,75 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function() { - var mode = CodeMirror.getMode({indentUnit: 2}, "text/x-xu"); - function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), "xu"); } - - MT("empty chart", - "[keyword msc][bracket {]", - "[base ]", - "[bracket }]" - ); - - MT("comments", - "[comment // a single line comment]", - "[comment # another single line comment /* and */ ignored here]", - "[comment /* A multi-line comment even though it contains]", - "[comment msc keywords and \"quoted text\"*/]"); - - MT("strings", - "[string \"// a string\"]", - "[string \"a string running over]", - "[string two lines\"]", - "[string \"with \\\"escaped quote\"]" - ); - - MT("xù/ msgenny keywords classify as 'keyword'", - "[keyword watermark]", - "[keyword alt]","[keyword loop]","[keyword opt]","[keyword ref]","[keyword else]","[keyword break]","[keyword par]","[keyword seq]","[keyword assert]" - ); - - MT("mscgen options classify as keyword", - "[keyword hscale]", "[keyword width]", "[keyword arcgradient]", "[keyword wordwraparcs]" - ); - - MT("mscgen arcs classify as keyword", - "[keyword note]","[keyword abox]","[keyword rbox]","[keyword box]", - "[keyword |||...---]", "[keyword ..--==::]", - "[keyword ->]", "[keyword <-]", "[keyword <->]", - "[keyword =>]", "[keyword <=]", "[keyword <=>]", - "[keyword =>>]", "[keyword <<=]", "[keyword <<=>>]", - "[keyword >>]", "[keyword <<]", "[keyword <<>>]", - "[keyword -x]", "[keyword x-]", "[keyword -X]", "[keyword X-]", - "[keyword :>]", "[keyword <:]", "[keyword <:>]" - ); - - MT("within an attribute list, attributes classify as attribute", - "[bracket [[][attribute label]", - "[attribute id]","[attribute url]","[attribute idurl]", - "[attribute linecolor]","[attribute linecolour]","[attribute textcolor]","[attribute textcolour]","[attribute textbgcolor]","[attribute textbgcolour]", - "[attribute arclinecolor]","[attribute arclinecolour]","[attribute arctextcolor]","[attribute arctextcolour]","[attribute arctextbgcolor]","[attribute arctextbgcolour]", - "[attribute arcskip][bracket ]]]" - ); - - MT("outside an attribute list, attributes classify as base", - "[base label]", - "[base id]","[base url]","[base idurl]", - "[base linecolor]","[base linecolour]","[base textcolor]","[base textcolour]","[base textbgcolor]","[base textbgcolour]", - "[base arclinecolor]","[base arclinecolour]","[base arctextcolor]","[base arctextcolour]","[base arctextbgcolor]","[base arctextbgcolour]", - "[base arcskip]" - ); - - MT("a typical program", - "[comment # typical mscgen program]", - "[keyword msc][base ][bracket {]", - "[keyword wordwraparcs][operator =][string \"true\"][keyword hscale][operator =][string \"0.8\"][keyword arcgradient][operator =][base 30;]", - "[base a][bracket [[][attribute label][operator =][string \"Entity A\"][bracket ]]][base ,]", - "[base b][bracket [[][attribute label][operator =][string \"Entity B\"][bracket ]]][base ,]", - "[base c][bracket [[][attribute label][operator =][string \"Entity C\"][bracket ]]][base ;]", - "[base a ][keyword =>>][base b][bracket [[][attribute label][operator =][string \"Hello entity B\"][bracket ]]][base ;]", - "[base a ][keyword <<][base b][bracket [[][attribute label][operator =][string \"Here's an answer dude!\"][bracket ]]][base ;]", - "[base c ][keyword :>][base *][bracket [[][attribute label][operator =][string \"What about me?\"][base , ][attribute textcolor][operator =][base red][bracket ]]][base ;]", - "[bracket }]" - ); -})(); diff --git a/public/plugins/codemirror-5.17.0/mode/mumps/index.html b/public/plugins/codemirror-5.17.0/mode/mumps/index.html deleted file mode 100644 index b1f92c213..000000000 --- a/public/plugins/codemirror-5.17.0/mode/mumps/index.html +++ /dev/null @@ -1,85 +0,0 @@ - - -CodeMirror: MUMPS mode - - - - - - - - - -
    -

    MUMPS mode

    - - -
    - - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/mumps/mumps.js b/public/plugins/codemirror-5.17.0/mode/mumps/mumps.js deleted file mode 100644 index 469f8c3d1..000000000 --- a/public/plugins/codemirror-5.17.0/mode/mumps/mumps.js +++ /dev/null @@ -1,148 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -/* - This MUMPS Language script was constructed using vbscript.js as a template. -*/ - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - CodeMirror.defineMode("mumps", function() { - function wordRegexp(words) { - return new RegExp("^((" + words.join(")|(") + "))\\b", "i"); - } - - var singleOperators = new RegExp("^[\\+\\-\\*/&#!_?\\\\<>=\\'\\[\\]]"); - var doubleOperators = new RegExp("^(('=)|(<=)|(>=)|('>)|('<)|([[)|(]])|(^$))"); - var singleDelimiters = new RegExp("^[\\.,:]"); - var brackets = new RegExp("[()]"); - var identifiers = new RegExp("^[%A-Za-z][A-Za-z0-9]*"); - var commandKeywords = ["break","close","do","else","for","goto", "halt", "hang", "if", "job","kill","lock","merge","new","open", "quit", "read", "set", "tcommit", "trollback", "tstart", "use", "view", "write", "xecute", "b","c","d","e","f","g", "h", "i", "j","k","l","m","n","o", "q", "r", "s", "tc", "tro", "ts", "u", "v", "w", "x"]; - // The following list includes instrinsic functions _and_ special variables - var intrinsicFuncsWords = ["\\$ascii", "\\$char", "\\$data", "\\$ecode", "\\$estack", "\\$etrap", "\\$extract", "\\$find", "\\$fnumber", "\\$get", "\\$horolog", "\\$io", "\\$increment", "\\$job", "\\$justify", "\\$length", "\\$name", "\\$next", "\\$order", "\\$piece", "\\$qlength", "\\$qsubscript", "\\$query", "\\$quit", "\\$random", "\\$reverse", "\\$select", "\\$stack", "\\$test", "\\$text", "\\$translate", "\\$view", "\\$x", "\\$y", "\\$a", "\\$c", "\\$d", "\\$e", "\\$ec", "\\$es", "\\$et", "\\$f", "\\$fn", "\\$g", "\\$h", "\\$i", "\\$j", "\\$l", "\\$n", "\\$na", "\\$o", "\\$p", "\\$q", "\\$ql", "\\$qs", "\\$r", "\\$re", "\\$s", "\\$st", "\\$t", "\\$tr", "\\$v", "\\$z"]; - var intrinsicFuncs = wordRegexp(intrinsicFuncsWords); - var command = wordRegexp(commandKeywords); - - function tokenBase(stream, state) { - if (stream.sol()) { - state.label = true; - state.commandMode = 0; - } - - // The character has meaning in MUMPS. Ignoring consecutive - // spaces would interfere with interpreting whether the next non-space - // character belongs to the command or argument context. - - // Examine each character and update a mode variable whose interpretation is: - // >0 => command 0 => argument <0 => command post-conditional - var ch = stream.peek(); - - if (ch == " " || ch == "\t") { // Pre-process - state.label = false; - if (state.commandMode == 0) - state.commandMode = 1; - else if ((state.commandMode < 0) || (state.commandMode == 2)) - state.commandMode = 0; - } else if ((ch != ".") && (state.commandMode > 0)) { - if (ch == ":") - state.commandMode = -1; // SIS - Command post-conditional - else - state.commandMode = 2; - } - - // Do not color parameter list as line tag - if ((ch === "(") || (ch === "\u0009")) - state.label = false; - - // MUMPS comment starts with ";" - if (ch === ";") { - stream.skipToEnd(); - return "comment"; - } - - // Number Literals // SIS/RLM - MUMPS permits canonic number followed by concatenate operator - if (stream.match(/^[-+]?\d+(\.\d+)?([eE][-+]?\d+)?/)) - return "number"; - - // Handle Strings - if (ch == '"') { - if (stream.skipTo('"')) { - stream.next(); - return "string"; - } else { - stream.skipToEnd(); - return "error"; - } - } - - // Handle operators and Delimiters - if (stream.match(doubleOperators) || stream.match(singleOperators)) - return "operator"; - - // Prevents leading "." in DO block from falling through to error - if (stream.match(singleDelimiters)) - return null; - - if (brackets.test(ch)) { - stream.next(); - return "bracket"; - } - - if (state.commandMode > 0 && stream.match(command)) - return "variable-2"; - - if (stream.match(intrinsicFuncs)) - return "builtin"; - - if (stream.match(identifiers)) - return "variable"; - - // Detect dollar-sign when not a documented intrinsic function - // "^" may introduce a GVN or SSVN - Color same as function - if (ch === "$" || ch === "^") { - stream.next(); - return "builtin"; - } - - // MUMPS Indirection - if (ch === "@") { - stream.next(); - return "string-2"; - } - - if (/[\w%]/.test(ch)) { - stream.eatWhile(/[\w%]/); - return "variable"; - } - - // Handle non-detected items - stream.next(); - return "error"; - } - - return { - startState: function() { - return { - label: false, - commandMode: 0 - }; - }, - - token: function(stream, state) { - var style = tokenBase(stream, state); - if (state.label) return "tag"; - return style; - } - }; - }); - - CodeMirror.defineMIME("text/x-mumps", "mumps"); -}); diff --git a/public/plugins/codemirror-5.17.0/mode/nginx/index.html b/public/plugins/codemirror-5.17.0/mode/nginx/index.html deleted file mode 100644 index 03cf67149..000000000 --- a/public/plugins/codemirror-5.17.0/mode/nginx/index.html +++ /dev/null @@ -1,181 +0,0 @@ - - -CodeMirror: NGINX mode - - - - - - - - - - - - - -
    -

    NGINX mode

    -
    - - -

    MIME types defined: text/nginx.

    - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/nginx/nginx.js b/public/plugins/codemirror-5.17.0/mode/nginx/nginx.js deleted file mode 100644 index 00a322492..000000000 --- a/public/plugins/codemirror-5.17.0/mode/nginx/nginx.js +++ /dev/null @@ -1,178 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("nginx", function(config) { - - function words(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - - var keywords = words( - /* ngxDirectiveControl */ "break return rewrite set" + - /* ngxDirective */ " accept_mutex accept_mutex_delay access_log add_after_body add_before_body add_header addition_types aio alias allow ancient_browser ancient_browser_value auth_basic auth_basic_user_file auth_http auth_http_header auth_http_timeout autoindex autoindex_exact_size autoindex_localtime charset charset_types client_body_buffer_size client_body_in_file_only client_body_in_single_buffer client_body_temp_path client_body_timeout client_header_buffer_size client_header_timeout client_max_body_size connection_pool_size create_full_put_path daemon dav_access dav_methods debug_connection debug_points default_type degradation degrade deny devpoll_changes devpoll_events directio directio_alignment empty_gif env epoll_events error_log eventport_events expires fastcgi_bind fastcgi_buffer_size fastcgi_buffers fastcgi_busy_buffers_size fastcgi_cache fastcgi_cache_key fastcgi_cache_methods fastcgi_cache_min_uses fastcgi_cache_path fastcgi_cache_use_stale fastcgi_cache_valid fastcgi_catch_stderr fastcgi_connect_timeout fastcgi_hide_header fastcgi_ignore_client_abort fastcgi_ignore_headers fastcgi_index fastcgi_intercept_errors fastcgi_max_temp_file_size fastcgi_next_upstream fastcgi_param fastcgi_pass_header fastcgi_pass_request_body fastcgi_pass_request_headers fastcgi_read_timeout fastcgi_send_lowat fastcgi_send_timeout fastcgi_split_path_info fastcgi_store fastcgi_store_access fastcgi_temp_file_write_size fastcgi_temp_path fastcgi_upstream_fail_timeout fastcgi_upstream_max_fails flv geoip_city geoip_country google_perftools_profiles gzip gzip_buffers gzip_comp_level gzip_disable gzip_hash gzip_http_version gzip_min_length gzip_no_buffer gzip_proxied gzip_static gzip_types gzip_vary gzip_window if_modified_since ignore_invalid_headers image_filter image_filter_buffer image_filter_jpeg_quality image_filter_transparency imap_auth imap_capabilities imap_client_buffer index ip_hash keepalive_requests keepalive_timeout kqueue_changes kqueue_events large_client_header_buffers limit_conn limit_conn_log_level limit_rate limit_rate_after limit_req limit_req_log_level limit_req_zone limit_zone lingering_time lingering_timeout lock_file log_format log_not_found log_subrequest map_hash_bucket_size map_hash_max_size master_process memcached_bind memcached_buffer_size memcached_connect_timeout memcached_next_upstream memcached_read_timeout memcached_send_timeout memcached_upstream_fail_timeout memcached_upstream_max_fails merge_slashes min_delete_depth modern_browser modern_browser_value msie_padding msie_refresh multi_accept open_file_cache open_file_cache_errors open_file_cache_events open_file_cache_min_uses open_file_cache_valid open_log_file_cache output_buffers override_charset perl perl_modules perl_require perl_set pid pop3_auth pop3_capabilities port_in_redirect postpone_gzipping postpone_output protocol proxy proxy_bind proxy_buffer proxy_buffer_size proxy_buffering proxy_buffers proxy_busy_buffers_size proxy_cache proxy_cache_key proxy_cache_methods proxy_cache_min_uses proxy_cache_path proxy_cache_use_stale proxy_cache_valid proxy_connect_timeout proxy_headers_hash_bucket_size proxy_headers_hash_max_size proxy_hide_header proxy_ignore_client_abort proxy_ignore_headers proxy_intercept_errors proxy_max_temp_file_size proxy_method proxy_next_upstream proxy_pass_error_message proxy_pass_header proxy_pass_request_body proxy_pass_request_headers proxy_read_timeout proxy_redirect proxy_send_lowat proxy_send_timeout proxy_set_body proxy_set_header proxy_ssl_session_reuse proxy_store proxy_store_access proxy_temp_file_write_size proxy_temp_path proxy_timeout proxy_upstream_fail_timeout proxy_upstream_max_fails random_index read_ahead real_ip_header recursive_error_pages request_pool_size reset_timedout_connection resolver resolver_timeout rewrite_log rtsig_overflow_events rtsig_overflow_test rtsig_overflow_threshold rtsig_signo satisfy secure_link_secret send_lowat send_timeout sendfile sendfile_max_chunk server_name_in_redirect server_names_hash_bucket_size server_names_hash_max_size server_tokens set_real_ip_from smtp_auth smtp_capabilities smtp_client_buffer smtp_greeting_delay so_keepalive source_charset ssi ssi_ignore_recycled_buffers ssi_min_file_chunk ssi_silent_errors ssi_types ssi_value_length ssl ssl_certificate ssl_certificate_key ssl_ciphers ssl_client_certificate ssl_crl ssl_dhparam ssl_engine ssl_prefer_server_ciphers ssl_protocols ssl_session_cache ssl_session_timeout ssl_verify_client ssl_verify_depth starttls stub_status sub_filter sub_filter_once sub_filter_types tcp_nodelay tcp_nopush thread_stack_size timeout timer_resolution types_hash_bucket_size types_hash_max_size underscores_in_headers uninitialized_variable_warn use user userid userid_domain userid_expires userid_mark userid_name userid_p3p userid_path userid_service valid_referers variables_hash_bucket_size variables_hash_max_size worker_connections worker_cpu_affinity worker_priority worker_processes worker_rlimit_core worker_rlimit_nofile worker_rlimit_sigpending worker_threads working_directory xclient xml_entities xslt_stylesheet xslt_typesdrew@li229-23" - ); - - var keywords_block = words( - /* ngxDirectiveBlock */ "http mail events server types location upstream charset_map limit_except if geo map" - ); - - var keywords_important = words( - /* ngxDirectiveImportant */ "include root server server_name listen internal proxy_pass memcached_pass fastcgi_pass try_files" - ); - - var indentUnit = config.indentUnit, type; - function ret(style, tp) {type = tp; return style;} - - function tokenBase(stream, state) { - - - stream.eatWhile(/[\w\$_]/); - - var cur = stream.current(); - - - if (keywords.propertyIsEnumerable(cur)) { - return "keyword"; - } - else if (keywords_block.propertyIsEnumerable(cur)) { - return "variable-2"; - } - else if (keywords_important.propertyIsEnumerable(cur)) { - return "string-2"; - } - /**/ - - var ch = stream.next(); - if (ch == "@") {stream.eatWhile(/[\w\\\-]/); return ret("meta", stream.current());} - else if (ch == "/" && stream.eat("*")) { - state.tokenize = tokenCComment; - return tokenCComment(stream, state); - } - else if (ch == "<" && stream.eat("!")) { - state.tokenize = tokenSGMLComment; - return tokenSGMLComment(stream, state); - } - else if (ch == "=") ret(null, "compare"); - else if ((ch == "~" || ch == "|") && stream.eat("=")) return ret(null, "compare"); - else if (ch == "\"" || ch == "'") { - state.tokenize = tokenString(ch); - return state.tokenize(stream, state); - } - else if (ch == "#") { - stream.skipToEnd(); - return ret("comment", "comment"); - } - else if (ch == "!") { - stream.match(/^\s*\w*/); - return ret("keyword", "important"); - } - else if (/\d/.test(ch)) { - stream.eatWhile(/[\w.%]/); - return ret("number", "unit"); - } - else if (/[,.+>*\/]/.test(ch)) { - return ret(null, "select-op"); - } - else if (/[;{}:\[\]]/.test(ch)) { - return ret(null, ch); - } - else { - stream.eatWhile(/[\w\\\-]/); - return ret("variable", "variable"); - } - } - - function tokenCComment(stream, state) { - var maybeEnd = false, ch; - while ((ch = stream.next()) != null) { - if (maybeEnd && ch == "/") { - state.tokenize = tokenBase; - break; - } - maybeEnd = (ch == "*"); - } - return ret("comment", "comment"); - } - - function tokenSGMLComment(stream, state) { - var dashes = 0, ch; - while ((ch = stream.next()) != null) { - if (dashes >= 2 && ch == ">") { - state.tokenize = tokenBase; - break; - } - dashes = (ch == "-") ? dashes + 1 : 0; - } - return ret("comment", "comment"); - } - - function tokenString(quote) { - return function(stream, state) { - var escaped = false, ch; - while ((ch = stream.next()) != null) { - if (ch == quote && !escaped) - break; - escaped = !escaped && ch == "\\"; - } - if (!escaped) state.tokenize = tokenBase; - return ret("string", "string"); - }; - } - - return { - startState: function(base) { - return {tokenize: tokenBase, - baseIndent: base || 0, - stack: []}; - }, - - token: function(stream, state) { - if (stream.eatSpace()) return null; - type = null; - var style = state.tokenize(stream, state); - - var context = state.stack[state.stack.length-1]; - if (type == "hash" && context == "rule") style = "atom"; - else if (style == "variable") { - if (context == "rule") style = "number"; - else if (!context || context == "@media{") style = "tag"; - } - - if (context == "rule" && /^[\{\};]$/.test(type)) - state.stack.pop(); - if (type == "{") { - if (context == "@media") state.stack[state.stack.length-1] = "@media{"; - else state.stack.push("{"); - } - else if (type == "}") state.stack.pop(); - else if (type == "@media") state.stack.push("@media"); - else if (context == "{" && type != "comment") state.stack.push("rule"); - return style; - }, - - indent: function(state, textAfter) { - var n = state.stack.length; - if (/^\}/.test(textAfter)) - n -= state.stack[state.stack.length-1] == "rule" ? 2 : 1; - return state.baseIndent + n * indentUnit; - }, - - electricChars: "}" - }; -}); - -CodeMirror.defineMIME("text/x-nginx-conf", "nginx"); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/nsis/index.html b/public/plugins/codemirror-5.17.0/mode/nsis/index.html deleted file mode 100644 index 2afae87f0..000000000 --- a/public/plugins/codemirror-5.17.0/mode/nsis/index.html +++ /dev/null @@ -1,80 +0,0 @@ - - -CodeMirror: NSIS mode - - - - - - - - - - - -
    -

    NSIS mode

    - - - - - - -

    MIME types defined: text/x-nsis.

    -
    \ No newline at end of file diff --git a/public/plugins/codemirror-5.17.0/mode/nsis/nsis.js b/public/plugins/codemirror-5.17.0/mode/nsis/nsis.js deleted file mode 100644 index 172207c5a..000000000 --- a/public/plugins/codemirror-5.17.0/mode/nsis/nsis.js +++ /dev/null @@ -1,95 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -// Author: Jan T. Sott (http://github.com/idleberg) - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror"), require("../../addon/mode/simple")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../../addon/mode/simple"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineSimpleMode("nsis",{ - start:[ - // Numbers - {regex: /(?:[+-]?)(?:0x[\d,a-f]+)|(?:0o[0-7]+)|(?:0b[0,1]+)|(?:\d+.?\d*)/, token: "number"}, - - // Strings - { regex: /"(?:[^\\"]|\\.)*"?/, token: "string" }, - { regex: /'(?:[^\\']|\\.)*'?/, token: "string" }, - { regex: /`(?:[^\\`]|\\.)*`?/, token: "string" }, - - // Compile Time Commands - {regex: /(?:\!(include|addincludedir|addplugindir|appendfile|cd|delfile|echo|error|execute|packhdr|finalize|getdllversion|system|tempfile|warning|verbose|define|undef|insertmacro|makensis|searchparse|searchreplace))\b/, token: "keyword"}, - - // Conditional Compilation - {regex: /(?:\!(if(?:n?def)?|ifmacron?def|macro))\b/, token: "keyword", indent: true}, - {regex: /(?:\!(else|endif|macroend))\b/, token: "keyword", dedent: true}, - - // Runtime Commands - {regex: /\b(?:Abort|AddBrandingImage|AddSize|AllowRootDirInstall|AllowSkipFiles|AutoCloseWindow|BGFont|BGGradient|BrandingText|BringToFront|Call|CallInstDLL|Caption|ChangeUI|CheckBitmap|ClearErrors|CompletedText|ComponentText|CopyFiles|CRCCheck|CreateDirectory|CreateFont|CreateShortCut|Delete|DeleteINISec|DeleteINIStr|DeleteRegKey|DeleteRegValue|DetailPrint|DetailsButtonText|DirText|DirVar|DirVerify|EnableWindow|EnumRegKey|EnumRegValue|Exch|Exec|ExecShell|ExecWait|ExpandEnvStrings|File|FileBufSize|FileClose|FileErrorText|FileOpen|FileRead|FileReadByte|FileReadUTF16LE|FileReadWord|FileWriteUTF16LE|FileSeek|FileWrite|FileWriteByte|FileWriteWord|FindClose|FindFirst|FindNext|FindWindow|FlushINI|GetCurInstType|GetCurrentAddress|GetDlgItem|GetDLLVersion|GetDLLVersionLocal|GetErrorLevel|GetFileTime|GetFileTimeLocal|GetFullPathName|GetFunctionAddress|GetInstDirError|GetLabelAddress|GetTempFileName|Goto|HideWindow|Icon|IfAbort|IfErrors|IfFileExists|IfRebootFlag|IfSilent|InitPluginsDir|InstallButtonText|InstallColors|InstallDir|InstallDirRegKey|InstProgressFlags|InstType|InstTypeGetText|InstTypeSetText|IntCmp|IntCmpU|IntFmt|IntOp|IsWindow|LangString|LicenseBkColor|LicenseData|LicenseForceSelection|LicenseLangString|LicenseText|LoadLanguageFile|LockWindow|LogSet|LogText|ManifestDPIAware|ManifestSupportedOS|MessageBox|MiscButtonText|Name|Nop|OutFile|Page|PageCallbacks|Pop|Push|Quit|ReadEnvStr|ReadINIStr|ReadRegDWORD|ReadRegStr|Reboot|RegDLL|Rename|RequestExecutionLevel|ReserveFile|Return|RMDir|SearchPath|SectionGetFlags|SectionGetInstTypes|SectionGetSize|SectionGetText|SectionIn|SectionSetFlags|SectionSetInstTypes|SectionSetSize|SectionSetText|SendMessage|SetAutoClose|SetBrandingImage|SetCompress|SetCompressor|SetCompressorDictSize|SetCtlColors|SetCurInstType|SetDatablockOptimize|SetDateSave|SetDetailsPrint|SetDetailsView|SetErrorLevel|SetErrors|SetFileAttributes|SetFont|SetOutPath|SetOverwrite|SetPluginUnload|SetRebootFlag|SetRegView|SetShellVarContext|SetSilent|ShowInstDetails|ShowUninstDetails|ShowWindow|SilentInstall|SilentUnInstall|Sleep|SpaceTexts|StrCmp|StrCmpS|StrCpy|StrLen|SubCaption|Unicode|UninstallButtonText|UninstallCaption|UninstallIcon|UninstallSubCaption|UninstallText|UninstPage|UnRegDLL|Var|VIAddVersionKey|VIFileVersion|VIProductVersion|WindowIcon|WriteINIStr|WriteRegBin|WriteRegDWORD|WriteRegExpandStr|WriteRegStr|WriteUninstaller|XPStyle)\b/, token: "keyword"}, - {regex: /\b(?:Function|PageEx|Section(?:Group)?)\b/, token: "keyword", indent: true}, - {regex: /\b(?:(Function|PageEx|Section(?:Group)?)End)\b/, token: "keyword", dedent: true}, - - // Command Options - {regex: /\b(?:ARCHIVE|FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_NORMAL|FILE_ATTRIBUTE_OFFLINE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_TEMPORARY|HIDDEN|HKCC|HKCR|HKCU|HKDD|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_DYN_DATA|HKEY_LOCAL_MACHINE|HKEY_PERFORMANCE_DATA|HKEY_USERS|HKLM|HKPD|HKU|IDABORT|IDCANCEL|IDD_DIR|IDD_INST|IDD_INSTFILES|IDD_LICENSE|IDD_SELCOM|IDD_UNINST|IDD_VERIFY|IDIGNORE|IDNO|IDOK|IDRETRY|IDYES|MB_ABORTRETRYIGNORE|MB_DEFBUTTON1|MB_DEFBUTTON2|MB_DEFBUTTON3|MB_DEFBUTTON4|MB_ICONEXCLAMATION|MB_ICONINFORMATION|MB_ICONQUESTION|MB_ICONSTOP|MB_OK|MB_OKCANCEL|MB_RETRYCANCEL|MB_RIGHT|MB_RTLREADING|MB_SETFOREGROUND|MB_TOPMOST|MB_USERICON|MB_YESNO|MB_YESNOCANCEL|NORMAL|OFFLINE|READONLY|SHCTX|SHELL_CONTEXT|SW_HIDE|SW_SHOWDEFAULT|SW_SHOWMAXIMIZED|SW_SHOWMINIMIZED|SW_SHOWNORMAL|SYSTEM|TEMPORARY)\b/, token: "atom"}, - {regex: /\b(?:admin|all|auto|both|bottom|bzip2|components|current|custom|directory|force|hide|highest|ifdiff|ifnewer|instfiles|lastused|leave|left|license|listonly|lzma|nevershow|none|normal|notset|right|show|silent|silentlog|textonly|top|try|un\.components|un\.custom|un\.directory|un\.instfiles|un\.license|uninstConfirm|user|Win10|Win7|Win8|WinVista|zlib)\b/, token: "builtin"}, - - // LogicLib.nsh - {regex: /\$\{(?:And(?:If(?:Not)?|Unless)|Break|Case(?:Else)?|Continue|Default|Do(?:Until|While)?|Else(?:If(?:Not)?|Unless)?|End(?:If|Select|Switch)|Exit(?:Do|For|While)|For(?:Each)?|If(?:Cmd|Not(?:Then)?|Then)?|Loop(?:Until|While)?|Or(?:If(?:Not)?|Unless)|Select|Switch|Unless|While)\}/, token: "variable-2", indent: true}, - - // FileFunc.nsh - {regex: /\$\{(?:BannerTrimPath|DirState|DriveSpace|Get(BaseName|Drives|ExeName|ExePath|FileAttributes|FileExt|FileName|FileVersion|Options|OptionsS|Parameters|Parent|Root|Size|Time)|Locate|RefreshShellIcons)\}/, token: "variable-2", dedent: true}, - - // Memento.nsh - {regex: /\$\{(?:Memento(?:Section(?:Done|End|Restore|Save)?|UnselectedSection))\}/, token: "variable-2", dedent: true}, - - // TextFunc.nsh - {regex: /\$\{(?:Config(?:Read|ReadS|Write|WriteS)|File(?:Join|ReadFromEnd|Recode)|Line(?:Find|Read|Sum)|Text(?:Compare|CompareS)|TrimNewLines)\}/, token: "variable-2", dedent: true}, - - // WinVer.nsh - {regex: /\$\{(?:(?:At(?:Least|Most)|Is)(?:ServicePack|Win(?:7|8|10|95|98|200(?:0|3|8(?:R2)?)|ME|NT4|Vista|XP))|Is(?:NT|Server))\}/, token: "variable", dedent: true}, - - // WordFunc.nsh - {regex: /\$\{(?:StrFilterS?|Version(?:Compare|Convert)|Word(?:AddS?|Find(?:(?:2|3)X)?S?|InsertS?|ReplaceS?))\}/, token: "variable-2", dedent: true}, - - // x64.nsh - {regex: /\$\{(?:RunningX64)\}/, token: "variable", dedent: true}, - {regex: /\$\{(?:Disable|Enable)X64FSRedirection\}/, token: "variable-2", dedent: true}, - - // Line Comment - {regex: /(#|;).*/, token: "comment"}, - - // Block Comment - {regex: /\/\*/, token: "comment", next: "comment"}, - - // Operator - {regex: /[-+\/*=<>!]+/, token: "operator"}, - - // Variable - {regex: /\$[\w]+/, token: "variable"}, - - // Constant - {regex: /\${[\w]+}/,token: "variable-2"}, - - // Language String - {regex: /\$\([\w]+\)/,token: "variable-3"} - ], - comment: [ - {regex: /.*?\*\//, token: "comment", next: "start"}, - {regex: /.*/, token: "comment"} - ], - meta: { - electricInput: /^\s*((Function|PageEx|Section|Section(Group)?)End|(\!(endif|macroend))|\$\{(End(If|Unless|While)|Loop(Until)|Next)\})$/, - blockCommentStart: "/*", - blockCommentEnd: "*/", - lineComment: ["#", ";"] - } -}); - -CodeMirror.defineMIME("text/x-nsis", "nsis"); -}); diff --git a/public/plugins/codemirror-5.17.0/mode/ntriples/index.html b/public/plugins/codemirror-5.17.0/mode/ntriples/index.html deleted file mode 100644 index 1355e7189..000000000 --- a/public/plugins/codemirror-5.17.0/mode/ntriples/index.html +++ /dev/null @@ -1,45 +0,0 @@ - - -CodeMirror: NTriples mode - - - - - - - - - -
    -

    NTriples mode

    -
    - - - - -

    MIME types defined: text/n-triples.

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/ntriples/ntriples.js b/public/plugins/codemirror-5.17.0/mode/ntriples/ntriples.js deleted file mode 100644 index 0524b1e8a..000000000 --- a/public/plugins/codemirror-5.17.0/mode/ntriples/ntriples.js +++ /dev/null @@ -1,186 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -/********************************************************** -* This script provides syntax highlighting support for -* the Ntriples format. -* Ntriples format specification: -* http://www.w3.org/TR/rdf-testcases/#ntriples -***********************************************************/ - -/* - The following expression defines the defined ASF grammar transitions. - - pre_subject -> - { - ( writing_subject_uri | writing_bnode_uri ) - -> pre_predicate - -> writing_predicate_uri - -> pre_object - -> writing_object_uri | writing_object_bnode | - ( - writing_object_literal - -> writing_literal_lang | writing_literal_type - ) - -> post_object - -> BEGIN - } otherwise { - -> ERROR - } -*/ - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("ntriples", function() { - - var Location = { - PRE_SUBJECT : 0, - WRITING_SUB_URI : 1, - WRITING_BNODE_URI : 2, - PRE_PRED : 3, - WRITING_PRED_URI : 4, - PRE_OBJ : 5, - WRITING_OBJ_URI : 6, - WRITING_OBJ_BNODE : 7, - WRITING_OBJ_LITERAL : 8, - WRITING_LIT_LANG : 9, - WRITING_LIT_TYPE : 10, - POST_OBJ : 11, - ERROR : 12 - }; - function transitState(currState, c) { - var currLocation = currState.location; - var ret; - - // Opening. - if (currLocation == Location.PRE_SUBJECT && c == '<') ret = Location.WRITING_SUB_URI; - else if(currLocation == Location.PRE_SUBJECT && c == '_') ret = Location.WRITING_BNODE_URI; - else if(currLocation == Location.PRE_PRED && c == '<') ret = Location.WRITING_PRED_URI; - else if(currLocation == Location.PRE_OBJ && c == '<') ret = Location.WRITING_OBJ_URI; - else if(currLocation == Location.PRE_OBJ && c == '_') ret = Location.WRITING_OBJ_BNODE; - else if(currLocation == Location.PRE_OBJ && c == '"') ret = Location.WRITING_OBJ_LITERAL; - - // Closing. - else if(currLocation == Location.WRITING_SUB_URI && c == '>') ret = Location.PRE_PRED; - else if(currLocation == Location.WRITING_BNODE_URI && c == ' ') ret = Location.PRE_PRED; - else if(currLocation == Location.WRITING_PRED_URI && c == '>') ret = Location.PRE_OBJ; - else if(currLocation == Location.WRITING_OBJ_URI && c == '>') ret = Location.POST_OBJ; - else if(currLocation == Location.WRITING_OBJ_BNODE && c == ' ') ret = Location.POST_OBJ; - else if(currLocation == Location.WRITING_OBJ_LITERAL && c == '"') ret = Location.POST_OBJ; - else if(currLocation == Location.WRITING_LIT_LANG && c == ' ') ret = Location.POST_OBJ; - else if(currLocation == Location.WRITING_LIT_TYPE && c == '>') ret = Location.POST_OBJ; - - // Closing typed and language literal. - else if(currLocation == Location.WRITING_OBJ_LITERAL && c == '@') ret = Location.WRITING_LIT_LANG; - else if(currLocation == Location.WRITING_OBJ_LITERAL && c == '^') ret = Location.WRITING_LIT_TYPE; - - // Spaces. - else if( c == ' ' && - ( - currLocation == Location.PRE_SUBJECT || - currLocation == Location.PRE_PRED || - currLocation == Location.PRE_OBJ || - currLocation == Location.POST_OBJ - ) - ) ret = currLocation; - - // Reset. - else if(currLocation == Location.POST_OBJ && c == '.') ret = Location.PRE_SUBJECT; - - // Error - else ret = Location.ERROR; - - currState.location=ret; - } - - return { - startState: function() { - return { - location : Location.PRE_SUBJECT, - uris : [], - anchors : [], - bnodes : [], - langs : [], - types : [] - }; - }, - token: function(stream, state) { - var ch = stream.next(); - if(ch == '<') { - transitState(state, ch); - var parsedURI = ''; - stream.eatWhile( function(c) { if( c != '#' && c != '>' ) { parsedURI += c; return true; } return false;} ); - state.uris.push(parsedURI); - if( stream.match('#', false) ) return 'variable'; - stream.next(); - transitState(state, '>'); - return 'variable'; - } - if(ch == '#') { - var parsedAnchor = ''; - stream.eatWhile(function(c) { if(c != '>' && c != ' ') { parsedAnchor+= c; return true; } return false;}); - state.anchors.push(parsedAnchor); - return 'variable-2'; - } - if(ch == '>') { - transitState(state, '>'); - return 'variable'; - } - if(ch == '_') { - transitState(state, ch); - var parsedBNode = ''; - stream.eatWhile(function(c) { if( c != ' ' ) { parsedBNode += c; return true; } return false;}); - state.bnodes.push(parsedBNode); - stream.next(); - transitState(state, ' '); - return 'builtin'; - } - if(ch == '"') { - transitState(state, ch); - stream.eatWhile( function(c) { return c != '"'; } ); - stream.next(); - if( stream.peek() != '@' && stream.peek() != '^' ) { - transitState(state, '"'); - } - return 'string'; - } - if( ch == '@' ) { - transitState(state, '@'); - var parsedLang = ''; - stream.eatWhile(function(c) { if( c != ' ' ) { parsedLang += c; return true; } return false;}); - state.langs.push(parsedLang); - stream.next(); - transitState(state, ' '); - return 'string-2'; - } - if( ch == '^' ) { - stream.next(); - transitState(state, '^'); - var parsedType = ''; - stream.eatWhile(function(c) { if( c != '>' ) { parsedType += c; return true; } return false;} ); - state.types.push(parsedType); - stream.next(); - transitState(state, '>'); - return 'variable'; - } - if( ch == ' ' ) { - transitState(state, ch); - } - if( ch == '.' ) { - transitState(state, ch); - } - } - }; -}); - -CodeMirror.defineMIME("text/n-triples", "ntriples"); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/octave/index.html b/public/plugins/codemirror-5.17.0/mode/octave/index.html deleted file mode 100644 index 3490ee637..000000000 --- a/public/plugins/codemirror-5.17.0/mode/octave/index.html +++ /dev/null @@ -1,83 +0,0 @@ - - -CodeMirror: Octave mode - - - - - - - - - -
    -

    Octave mode

    - -
    - - -

    MIME types defined: text/x-octave.

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/octave/octave.js b/public/plugins/codemirror-5.17.0/mode/octave/octave.js deleted file mode 100644 index a7bec030c..000000000 --- a/public/plugins/codemirror-5.17.0/mode/octave/octave.js +++ /dev/null @@ -1,135 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("octave", function() { - function wordRegexp(words) { - return new RegExp("^((" + words.join(")|(") + "))\\b"); - } - - var singleOperators = new RegExp("^[\\+\\-\\*/&|\\^~<>!@'\\\\]"); - var singleDelimiters = new RegExp('^[\\(\\[\\{\\},:=;]'); - var doubleOperators = new RegExp("^((==)|(~=)|(<=)|(>=)|(<<)|(>>)|(\\.[\\+\\-\\*/\\^\\\\]))"); - var doubleDelimiters = new RegExp("^((!=)|(\\+=)|(\\-=)|(\\*=)|(/=)|(&=)|(\\|=)|(\\^=))"); - var tripleDelimiters = new RegExp("^((>>=)|(<<=))"); - var expressionEnd = new RegExp("^[\\]\\)]"); - var identifiers = new RegExp("^[_A-Za-z\xa1-\uffff][_A-Za-z0-9\xa1-\uffff]*"); - - var builtins = wordRegexp([ - 'error', 'eval', 'function', 'abs', 'acos', 'atan', 'asin', 'cos', - 'cosh', 'exp', 'log', 'prod', 'sum', 'log10', 'max', 'min', 'sign', 'sin', 'sinh', - 'sqrt', 'tan', 'reshape', 'break', 'zeros', 'default', 'margin', 'round', 'ones', - 'rand', 'syn', 'ceil', 'floor', 'size', 'clear', 'zeros', 'eye', 'mean', 'std', 'cov', - 'det', 'eig', 'inv', 'norm', 'rank', 'trace', 'expm', 'logm', 'sqrtm', 'linspace', 'plot', - 'title', 'xlabel', 'ylabel', 'legend', 'text', 'grid', 'meshgrid', 'mesh', 'num2str', - 'fft', 'ifft', 'arrayfun', 'cellfun', 'input', 'fliplr', 'flipud', 'ismember' - ]); - - var keywords = wordRegexp([ - 'return', 'case', 'switch', 'else', 'elseif', 'end', 'endif', 'endfunction', - 'if', 'otherwise', 'do', 'for', 'while', 'try', 'catch', 'classdef', 'properties', 'events', - 'methods', 'global', 'persistent', 'endfor', 'endwhile', 'printf', 'sprintf', 'disp', 'until', - 'continue', 'pkg' - ]); - - - // tokenizers - function tokenTranspose(stream, state) { - if (!stream.sol() && stream.peek() === '\'') { - stream.next(); - state.tokenize = tokenBase; - return 'operator'; - } - state.tokenize = tokenBase; - return tokenBase(stream, state); - } - - - function tokenComment(stream, state) { - if (stream.match(/^.*%}/)) { - state.tokenize = tokenBase; - return 'comment'; - }; - stream.skipToEnd(); - return 'comment'; - } - - function tokenBase(stream, state) { - // whitespaces - if (stream.eatSpace()) return null; - - // Handle one line Comments - if (stream.match('%{')){ - state.tokenize = tokenComment; - stream.skipToEnd(); - return 'comment'; - } - - if (stream.match(/^[%#]/)){ - stream.skipToEnd(); - return 'comment'; - } - - // Handle Number Literals - if (stream.match(/^[0-9\.+-]/, false)) { - if (stream.match(/^[+-]?0x[0-9a-fA-F]+[ij]?/)) { - stream.tokenize = tokenBase; - return 'number'; }; - if (stream.match(/^[+-]?\d*\.\d+([EeDd][+-]?\d+)?[ij]?/)) { return 'number'; }; - if (stream.match(/^[+-]?\d+([EeDd][+-]?\d+)?[ij]?/)) { return 'number'; }; - } - if (stream.match(wordRegexp(['nan','NaN','inf','Inf']))) { return 'number'; }; - - // Handle Strings - if (stream.match(/^"([^"]|(""))*"/)) { return 'string'; } ; - if (stream.match(/^'([^']|(''))*'/)) { return 'string'; } ; - - // Handle words - if (stream.match(keywords)) { return 'keyword'; } ; - if (stream.match(builtins)) { return 'builtin'; } ; - if (stream.match(identifiers)) { return 'variable'; } ; - - if (stream.match(singleOperators) || stream.match(doubleOperators)) { return 'operator'; }; - if (stream.match(singleDelimiters) || stream.match(doubleDelimiters) || stream.match(tripleDelimiters)) { return null; }; - - if (stream.match(expressionEnd)) { - state.tokenize = tokenTranspose; - return null; - }; - - - // Handle non-detected items - stream.next(); - return 'error'; - }; - - - return { - startState: function() { - return { - tokenize: tokenBase - }; - }, - - token: function(stream, state) { - var style = state.tokenize(stream, state); - if (style === 'number' || style === 'variable'){ - state.tokenize = tokenTranspose; - } - return style; - } - }; -}); - -CodeMirror.defineMIME("text/x-octave", "octave"); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/oz/index.html b/public/plugins/codemirror-5.17.0/mode/oz/index.html deleted file mode 100644 index febd82a59..000000000 --- a/public/plugins/codemirror-5.17.0/mode/oz/index.html +++ /dev/null @@ -1,59 +0,0 @@ - - -CodeMirror: Oz mode - - - - - - - - - - -
    -

    Oz mode

    - -

    MIME type defined: text/x-oz.

    - - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/oz/oz.js b/public/plugins/codemirror-5.17.0/mode/oz/oz.js deleted file mode 100644 index ee8cb0ad1..000000000 --- a/public/plugins/codemirror-5.17.0/mode/oz/oz.js +++ /dev/null @@ -1,252 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("oz", function (conf) { - - function wordRegexp(words) { - return new RegExp("^((" + words.join(")|(") + "))\\b"); - } - - var singleOperators = /[\^@!\|<>#~\.\*\-\+\\/,=]/; - var doubleOperators = /(<-)|(:=)|(=<)|(>=)|(<=)|(<:)|(>:)|(=:)|(\\=)|(\\=:)|(!!)|(==)|(::)/; - var tripleOperators = /(:::)|(\.\.\.)|(=<:)|(>=:)/; - - var middle = ["in", "then", "else", "of", "elseof", "elsecase", "elseif", "catch", - "finally", "with", "require", "prepare", "import", "export", "define", "do"]; - var end = ["end"]; - - var atoms = wordRegexp(["true", "false", "nil", "unit"]); - var commonKeywords = wordRegexp(["andthen", "at", "attr", "declare", "feat", "from", "lex", - "mod", "mode", "orelse", "parser", "prod", "prop", "scanner", "self", "syn", "token"]); - var openingKeywords = wordRegexp(["local", "proc", "fun", "case", "class", "if", "cond", "or", "dis", - "choice", "not", "thread", "try", "raise", "lock", "for", "suchthat", "meth", "functor"]); - var middleKeywords = wordRegexp(middle); - var endKeywords = wordRegexp(end); - - // Tokenizers - function tokenBase(stream, state) { - if (stream.eatSpace()) { - return null; - } - - // Brackets - if(stream.match(/[{}]/)) { - return "bracket"; - } - - // Special [] keyword - if (stream.match(/(\[])/)) { - return "keyword" - } - - // Operators - if (stream.match(tripleOperators) || stream.match(doubleOperators)) { - return "operator"; - } - - // Atoms - if(stream.match(atoms)) { - return 'atom'; - } - - // Opening keywords - var matched = stream.match(openingKeywords); - if (matched) { - if (!state.doInCurrentLine) - state.currentIndent++; - else - state.doInCurrentLine = false; - - // Special matching for signatures - if(matched[0] == "proc" || matched[0] == "fun") - state.tokenize = tokenFunProc; - else if(matched[0] == "class") - state.tokenize = tokenClass; - else if(matched[0] == "meth") - state.tokenize = tokenMeth; - - return 'keyword'; - } - - // Middle and other keywords - if (stream.match(middleKeywords) || stream.match(commonKeywords)) { - return "keyword" - } - - // End keywords - if (stream.match(endKeywords)) { - state.currentIndent--; - return 'keyword'; - } - - // Eat the next char for next comparisons - var ch = stream.next(); - - // Strings - if (ch == '"' || ch == "'") { - state.tokenize = tokenString(ch); - return state.tokenize(stream, state); - } - - // Numbers - if (/[~\d]/.test(ch)) { - if (ch == "~") { - if(! /^[0-9]/.test(stream.peek())) - return null; - else if (( stream.next() == "0" && stream.match(/^[xX][0-9a-fA-F]+/)) || stream.match(/^[0-9]*(\.[0-9]+)?([eE][~+]?[0-9]+)?/)) - return "number"; - } - - if ((ch == "0" && stream.match(/^[xX][0-9a-fA-F]+/)) || stream.match(/^[0-9]*(\.[0-9]+)?([eE][~+]?[0-9]+)?/)) - return "number"; - - return null; - } - - // Comments - if (ch == "%") { - stream.skipToEnd(); - return 'comment'; - } - else if (ch == "/") { - if (stream.eat("*")) { - state.tokenize = tokenComment; - return tokenComment(stream, state); - } - } - - // Single operators - if(singleOperators.test(ch)) { - return "operator"; - } - - // If nothing match, we skip the entire alphanumerical block - stream.eatWhile(/\w/); - - return "variable"; - } - - function tokenClass(stream, state) { - if (stream.eatSpace()) { - return null; - } - stream.match(/([A-Z][A-Za-z0-9_]*)|(`.+`)/); - state.tokenize = tokenBase; - return "variable-3" - } - - function tokenMeth(stream, state) { - if (stream.eatSpace()) { - return null; - } - stream.match(/([a-zA-Z][A-Za-z0-9_]*)|(`.+`)/); - state.tokenize = tokenBase; - return "def" - } - - function tokenFunProc(stream, state) { - if (stream.eatSpace()) { - return null; - } - - if(!state.hasPassedFirstStage && stream.eat("{")) { - state.hasPassedFirstStage = true; - return "bracket"; - } - else if(state.hasPassedFirstStage) { - stream.match(/([A-Z][A-Za-z0-9_]*)|(`.+`)|\$/); - state.hasPassedFirstStage = false; - state.tokenize = tokenBase; - return "def" - } - else { - state.tokenize = tokenBase; - return null; - } - } - - function tokenComment(stream, state) { - var maybeEnd = false, ch; - while (ch = stream.next()) { - if (ch == "/" && maybeEnd) { - state.tokenize = tokenBase; - break; - } - maybeEnd = (ch == "*"); - } - return "comment"; - } - - function tokenString(quote) { - return function (stream, state) { - var escaped = false, next, end = false; - while ((next = stream.next()) != null) { - if (next == quote && !escaped) { - end = true; - break; - } - escaped = !escaped && next == "\\"; - } - if (end || !escaped) - state.tokenize = tokenBase; - return "string"; - }; - } - - function buildElectricInputRegEx() { - // Reindentation should occur on [] or on a match of any of - // the block closing keywords, at the end of a line. - var allClosings = middle.concat(end); - return new RegExp("[\\[\\]]|(" + allClosings.join("|") + ")$"); - } - - return { - - startState: function () { - return { - tokenize: tokenBase, - currentIndent: 0, - doInCurrentLine: false, - hasPassedFirstStage: false - }; - }, - - token: function (stream, state) { - if (stream.sol()) - state.doInCurrentLine = 0; - - return state.tokenize(stream, state); - }, - - indent: function (state, textAfter) { - var trueText = textAfter.replace(/^\s+|\s+$/g, ''); - - if (trueText.match(endKeywords) || trueText.match(middleKeywords) || trueText.match(/(\[])/)) - return conf.indentUnit * (state.currentIndent - 1); - - if (state.currentIndent < 0) - return 0; - - return state.currentIndent * conf.indentUnit; - }, - fold: "indent", - electricInput: buildElectricInputRegEx(), - lineComment: "%", - blockCommentStart: "/*", - blockCommentEnd: "*/" - }; -}); - -CodeMirror.defineMIME("text/x-oz", "oz"); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/pascal/index.html b/public/plugins/codemirror-5.17.0/mode/pascal/index.html deleted file mode 100644 index f8a99ad01..000000000 --- a/public/plugins/codemirror-5.17.0/mode/pascal/index.html +++ /dev/null @@ -1,61 +0,0 @@ - - -CodeMirror: Pascal mode - - - - - - - - - -
    -

    Pascal mode

    - - -
    - - - -

    MIME types defined: text/x-pascal.

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/pascal/pascal.js b/public/plugins/codemirror-5.17.0/mode/pascal/pascal.js deleted file mode 100644 index 2d0c3d424..000000000 --- a/public/plugins/codemirror-5.17.0/mode/pascal/pascal.js +++ /dev/null @@ -1,109 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("pascal", function() { - function words(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - var keywords = words("and array begin case const div do downto else end file for forward integer " + - "boolean char function goto if in label mod nil not of or packed procedure " + - "program record repeat set string then to type until var while with"); - var atoms = {"null": true}; - - var isOperatorChar = /[+\-*&%=<>!?|\/]/; - - function tokenBase(stream, state) { - var ch = stream.next(); - if (ch == "#" && state.startOfLine) { - stream.skipToEnd(); - return "meta"; - } - if (ch == '"' || ch == "'") { - state.tokenize = tokenString(ch); - return state.tokenize(stream, state); - } - if (ch == "(" && stream.eat("*")) { - state.tokenize = tokenComment; - return tokenComment(stream, state); - } - if (/[\[\]{}\(\),;\:\.]/.test(ch)) { - return null; - } - if (/\d/.test(ch)) { - stream.eatWhile(/[\w\.]/); - return "number"; - } - if (ch == "/") { - if (stream.eat("/")) { - stream.skipToEnd(); - return "comment"; - } - } - if (isOperatorChar.test(ch)) { - stream.eatWhile(isOperatorChar); - return "operator"; - } - stream.eatWhile(/[\w\$_]/); - var cur = stream.current(); - if (keywords.propertyIsEnumerable(cur)) return "keyword"; - if (atoms.propertyIsEnumerable(cur)) return "atom"; - return "variable"; - } - - function tokenString(quote) { - return function(stream, state) { - var escaped = false, next, end = false; - while ((next = stream.next()) != null) { - if (next == quote && !escaped) {end = true; break;} - escaped = !escaped && next == "\\"; - } - if (end || !escaped) state.tokenize = null; - return "string"; - }; - } - - function tokenComment(stream, state) { - var maybeEnd = false, ch; - while (ch = stream.next()) { - if (ch == ")" && maybeEnd) { - state.tokenize = null; - break; - } - maybeEnd = (ch == "*"); - } - return "comment"; - } - - // Interface - - return { - startState: function() { - return {tokenize: null}; - }, - - token: function(stream, state) { - if (stream.eatSpace()) return null; - var style = (state.tokenize || tokenBase)(stream, state); - if (style == "comment" || style == "meta") return style; - return style; - }, - - electricChars: "{}" - }; -}); - -CodeMirror.defineMIME("text/x-pascal", "pascal"); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/pegjs/index.html b/public/plugins/codemirror-5.17.0/mode/pegjs/index.html deleted file mode 100644 index 0c7460488..000000000 --- a/public/plugins/codemirror-5.17.0/mode/pegjs/index.html +++ /dev/null @@ -1,66 +0,0 @@ - - - - CodeMirror: PEG.js Mode - - - - - - - - - - - - -
    -

    PEG.js Mode

    -
    - -

    The PEG.js Mode

    -

    Created by Forbes Lindesay.

    -
    - - diff --git a/public/plugins/codemirror-5.17.0/mode/pegjs/pegjs.js b/public/plugins/codemirror-5.17.0/mode/pegjs/pegjs.js deleted file mode 100644 index 6c7207466..000000000 --- a/public/plugins/codemirror-5.17.0/mode/pegjs/pegjs.js +++ /dev/null @@ -1,114 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror"), require("../javascript/javascript")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../javascript/javascript"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("pegjs", function (config) { - var jsMode = CodeMirror.getMode(config, "javascript"); - - function identifier(stream) { - return stream.match(/^[a-zA-Z_][a-zA-Z0-9_]*/); - } - - return { - startState: function () { - return { - inString: false, - stringType: null, - inComment: false, - inCharacterClass: false, - braced: 0, - lhs: true, - localState: null - }; - }, - token: function (stream, state) { - if (stream) - - //check for state changes - if (!state.inString && !state.inComment && ((stream.peek() == '"') || (stream.peek() == "'"))) { - state.stringType = stream.peek(); - stream.next(); // Skip quote - state.inString = true; // Update state - } - if (!state.inString && !state.inComment && stream.match(/^\/\*/)) { - state.inComment = true; - } - - //return state - if (state.inString) { - while (state.inString && !stream.eol()) { - if (stream.peek() === state.stringType) { - stream.next(); // Skip quote - state.inString = false; // Clear flag - } else if (stream.peek() === '\\') { - stream.next(); - stream.next(); - } else { - stream.match(/^.[^\\\"\']*/); - } - } - return state.lhs ? "property string" : "string"; // Token style - } else if (state.inComment) { - while (state.inComment && !stream.eol()) { - if (stream.match(/\*\//)) { - state.inComment = false; // Clear flag - } else { - stream.match(/^.[^\*]*/); - } - } - return "comment"; - } else if (state.inCharacterClass) { - while (state.inCharacterClass && !stream.eol()) { - if (!(stream.match(/^[^\]\\]+/) || stream.match(/^\\./))) { - state.inCharacterClass = false; - } - } - } else if (stream.peek() === '[') { - stream.next(); - state.inCharacterClass = true; - return 'bracket'; - } else if (stream.match(/^\/\//)) { - stream.skipToEnd(); - return "comment"; - } else if (state.braced || stream.peek() === '{') { - if (state.localState === null) { - state.localState = CodeMirror.startState(jsMode); - } - var token = jsMode.token(stream, state.localState); - var text = stream.current(); - if (!token) { - for (var i = 0; i < text.length; i++) { - if (text[i] === '{') { - state.braced++; - } else if (text[i] === '}') { - state.braced--; - } - }; - } - return token; - } else if (identifier(stream)) { - if (stream.peek() === ':') { - return 'variable'; - } - return 'variable-2'; - } else if (['[', ']', '(', ')'].indexOf(stream.peek()) != -1) { - stream.next(); - return 'bracket'; - } else if (!stream.eatSpace()) { - stream.next(); - } - return null; - } - }; -}, "javascript"); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/perl/index.html b/public/plugins/codemirror-5.17.0/mode/perl/index.html deleted file mode 100644 index 8c1021c42..000000000 --- a/public/plugins/codemirror-5.17.0/mode/perl/index.html +++ /dev/null @@ -1,75 +0,0 @@ - - -CodeMirror: Perl mode - - - - - - - - - -
    -

    Perl mode

    - - -
    - - - -

    MIME types defined: text/x-perl.

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/perl/perl.js b/public/plugins/codemirror-5.17.0/mode/perl/perl.js deleted file mode 100644 index 66e4ed034..000000000 --- a/public/plugins/codemirror-5.17.0/mode/perl/perl.js +++ /dev/null @@ -1,837 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -// CodeMirror2 mode/perl/perl.js (text/x-perl) beta 0.10 (2011-11-08) -// This is a part of CodeMirror from https://github.com/sabaca/CodeMirror_mode_perl (mail@sabaca.com) - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("perl",function(){ - // http://perldoc.perl.org - var PERL={ // null - magic touch - // 1 - keyword - // 2 - def - // 3 - atom - // 4 - operator - // 5 - variable-2 (predefined) - // [x,y] - x=1,2,3; y=must be defined if x{...} - // PERL operators - '->' : 4, - '++' : 4, - '--' : 4, - '**' : 4, - // ! ~ \ and unary + and - - '=~' : 4, - '!~' : 4, - '*' : 4, - '/' : 4, - '%' : 4, - 'x' : 4, - '+' : 4, - '-' : 4, - '.' : 4, - '<<' : 4, - '>>' : 4, - // named unary operators - '<' : 4, - '>' : 4, - '<=' : 4, - '>=' : 4, - 'lt' : 4, - 'gt' : 4, - 'le' : 4, - 'ge' : 4, - '==' : 4, - '!=' : 4, - '<=>' : 4, - 'eq' : 4, - 'ne' : 4, - 'cmp' : 4, - '~~' : 4, - '&' : 4, - '|' : 4, - '^' : 4, - '&&' : 4, - '||' : 4, - '//' : 4, - '..' : 4, - '...' : 4, - '?' : 4, - ':' : 4, - '=' : 4, - '+=' : 4, - '-=' : 4, - '*=' : 4, // etc. ??? - ',' : 4, - '=>' : 4, - '::' : 4, - // list operators (rightward) - 'not' : 4, - 'and' : 4, - 'or' : 4, - 'xor' : 4, - // PERL predefined variables (I know, what this is a paranoid idea, but may be needed for people, who learn PERL, and for me as well, ...and may be for you?;) - 'BEGIN' : [5,1], - 'END' : [5,1], - 'PRINT' : [5,1], - 'PRINTF' : [5,1], - 'GETC' : [5,1], - 'READ' : [5,1], - 'READLINE' : [5,1], - 'DESTROY' : [5,1], - 'TIE' : [5,1], - 'TIEHANDLE' : [5,1], - 'UNTIE' : [5,1], - 'STDIN' : 5, - 'STDIN_TOP' : 5, - 'STDOUT' : 5, - 'STDOUT_TOP' : 5, - 'STDERR' : 5, - 'STDERR_TOP' : 5, - '$ARG' : 5, - '$_' : 5, - '@ARG' : 5, - '@_' : 5, - '$LIST_SEPARATOR' : 5, - '$"' : 5, - '$PROCESS_ID' : 5, - '$PID' : 5, - '$$' : 5, - '$REAL_GROUP_ID' : 5, - '$GID' : 5, - '$(' : 5, - '$EFFECTIVE_GROUP_ID' : 5, - '$EGID' : 5, - '$)' : 5, - '$PROGRAM_NAME' : 5, - '$0' : 5, - '$SUBSCRIPT_SEPARATOR' : 5, - '$SUBSEP' : 5, - '$;' : 5, - '$REAL_USER_ID' : 5, - '$UID' : 5, - '$<' : 5, - '$EFFECTIVE_USER_ID' : 5, - '$EUID' : 5, - '$>' : 5, - '$a' : 5, - '$b' : 5, - '$COMPILING' : 5, - '$^C' : 5, - '$DEBUGGING' : 5, - '$^D' : 5, - '${^ENCODING}' : 5, - '$ENV' : 5, - '%ENV' : 5, - '$SYSTEM_FD_MAX' : 5, - '$^F' : 5, - '@F' : 5, - '${^GLOBAL_PHASE}' : 5, - '$^H' : 5, - '%^H' : 5, - '@INC' : 5, - '%INC' : 5, - '$INPLACE_EDIT' : 5, - '$^I' : 5, - '$^M' : 5, - '$OSNAME' : 5, - '$^O' : 5, - '${^OPEN}' : 5, - '$PERLDB' : 5, - '$^P' : 5, - '$SIG' : 5, - '%SIG' : 5, - '$BASETIME' : 5, - '$^T' : 5, - '${^TAINT}' : 5, - '${^UNICODE}' : 5, - '${^UTF8CACHE}' : 5, - '${^UTF8LOCALE}' : 5, - '$PERL_VERSION' : 5, - '$^V' : 5, - '${^WIN32_SLOPPY_STAT}' : 5, - '$EXECUTABLE_NAME' : 5, - '$^X' : 5, - '$1' : 5, // - regexp $1, $2... - '$MATCH' : 5, - '$&' : 5, - '${^MATCH}' : 5, - '$PREMATCH' : 5, - '$`' : 5, - '${^PREMATCH}' : 5, - '$POSTMATCH' : 5, - "$'" : 5, - '${^POSTMATCH}' : 5, - '$LAST_PAREN_MATCH' : 5, - '$+' : 5, - '$LAST_SUBMATCH_RESULT' : 5, - '$^N' : 5, - '@LAST_MATCH_END' : 5, - '@+' : 5, - '%LAST_PAREN_MATCH' : 5, - '%+' : 5, - '@LAST_MATCH_START' : 5, - '@-' : 5, - '%LAST_MATCH_START' : 5, - '%-' : 5, - '$LAST_REGEXP_CODE_RESULT' : 5, - '$^R' : 5, - '${^RE_DEBUG_FLAGS}' : 5, - '${^RE_TRIE_MAXBUF}' : 5, - '$ARGV' : 5, - '@ARGV' : 5, - 'ARGV' : 5, - 'ARGVOUT' : 5, - '$OUTPUT_FIELD_SEPARATOR' : 5, - '$OFS' : 5, - '$,' : 5, - '$INPUT_LINE_NUMBER' : 5, - '$NR' : 5, - '$.' : 5, - '$INPUT_RECORD_SEPARATOR' : 5, - '$RS' : 5, - '$/' : 5, - '$OUTPUT_RECORD_SEPARATOR' : 5, - '$ORS' : 5, - '$\\' : 5, - '$OUTPUT_AUTOFLUSH' : 5, - '$|' : 5, - '$ACCUMULATOR' : 5, - '$^A' : 5, - '$FORMAT_FORMFEED' : 5, - '$^L' : 5, - '$FORMAT_PAGE_NUMBER' : 5, - '$%' : 5, - '$FORMAT_LINES_LEFT' : 5, - '$-' : 5, - '$FORMAT_LINE_BREAK_CHARACTERS' : 5, - '$:' : 5, - '$FORMAT_LINES_PER_PAGE' : 5, - '$=' : 5, - '$FORMAT_TOP_NAME' : 5, - '$^' : 5, - '$FORMAT_NAME' : 5, - '$~' : 5, - '${^CHILD_ERROR_NATIVE}' : 5, - '$EXTENDED_OS_ERROR' : 5, - '$^E' : 5, - '$EXCEPTIONS_BEING_CAUGHT' : 5, - '$^S' : 5, - '$WARNING' : 5, - '$^W' : 5, - '${^WARNING_BITS}' : 5, - '$OS_ERROR' : 5, - '$ERRNO' : 5, - '$!' : 5, - '%OS_ERROR' : 5, - '%ERRNO' : 5, - '%!' : 5, - '$CHILD_ERROR' : 5, - '$?' : 5, - '$EVAL_ERROR' : 5, - '$@' : 5, - '$OFMT' : 5, - '$#' : 5, - '$*' : 5, - '$ARRAY_BASE' : 5, - '$[' : 5, - '$OLD_PERL_VERSION' : 5, - '$]' : 5, - // PERL blocks - 'if' :[1,1], - elsif :[1,1], - 'else' :[1,1], - 'while' :[1,1], - unless :[1,1], - 'for' :[1,1], - foreach :[1,1], - // PERL functions - 'abs' :1, // - absolute value function - accept :1, // - accept an incoming socket connect - alarm :1, // - schedule a SIGALRM - 'atan2' :1, // - arctangent of Y/X in the range -PI to PI - bind :1, // - binds an address to a socket - binmode :1, // - prepare binary files for I/O - bless :1, // - create an object - bootstrap :1, // - 'break' :1, // - break out of a "given" block - caller :1, // - get context of the current subroutine call - chdir :1, // - change your current working directory - chmod :1, // - changes the permissions on a list of files - chomp :1, // - remove a trailing record separator from a string - chop :1, // - remove the last character from a string - chown :1, // - change the ownership on a list of files - chr :1, // - get character this number represents - chroot :1, // - make directory new root for path lookups - close :1, // - close file (or pipe or socket) handle - closedir :1, // - close directory handle - connect :1, // - connect to a remote socket - 'continue' :[1,1], // - optional trailing block in a while or foreach - 'cos' :1, // - cosine function - crypt :1, // - one-way passwd-style encryption - dbmclose :1, // - breaks binding on a tied dbm file - dbmopen :1, // - create binding on a tied dbm file - 'default' :1, // - defined :1, // - test whether a value, variable, or function is defined - 'delete' :1, // - deletes a value from a hash - die :1, // - raise an exception or bail out - 'do' :1, // - turn a BLOCK into a TERM - dump :1, // - create an immediate core dump - each :1, // - retrieve the next key/value pair from a hash - endgrent :1, // - be done using group file - endhostent :1, // - be done using hosts file - endnetent :1, // - be done using networks file - endprotoent :1, // - be done using protocols file - endpwent :1, // - be done using passwd file - endservent :1, // - be done using services file - eof :1, // - test a filehandle for its end - 'eval' :1, // - catch exceptions or compile and run code - 'exec' :1, // - abandon this program to run another - exists :1, // - test whether a hash key is present - exit :1, // - terminate this program - 'exp' :1, // - raise I to a power - fcntl :1, // - file control system call - fileno :1, // - return file descriptor from filehandle - flock :1, // - lock an entire file with an advisory lock - fork :1, // - create a new process just like this one - format :1, // - declare a picture format with use by the write() function - formline :1, // - internal function used for formats - getc :1, // - get the next character from the filehandle - getgrent :1, // - get next group record - getgrgid :1, // - get group record given group user ID - getgrnam :1, // - get group record given group name - gethostbyaddr :1, // - get host record given its address - gethostbyname :1, // - get host record given name - gethostent :1, // - get next hosts record - getlogin :1, // - return who logged in at this tty - getnetbyaddr :1, // - get network record given its address - getnetbyname :1, // - get networks record given name - getnetent :1, // - get next networks record - getpeername :1, // - find the other end of a socket connection - getpgrp :1, // - get process group - getppid :1, // - get parent process ID - getpriority :1, // - get current nice value - getprotobyname :1, // - get protocol record given name - getprotobynumber :1, // - get protocol record numeric protocol - getprotoent :1, // - get next protocols record - getpwent :1, // - get next passwd record - getpwnam :1, // - get passwd record given user login name - getpwuid :1, // - get passwd record given user ID - getservbyname :1, // - get services record given its name - getservbyport :1, // - get services record given numeric port - getservent :1, // - get next services record - getsockname :1, // - retrieve the sockaddr for a given socket - getsockopt :1, // - get socket options on a given socket - given :1, // - glob :1, // - expand filenames using wildcards - gmtime :1, // - convert UNIX time into record or string using Greenwich time - 'goto' :1, // - create spaghetti code - grep :1, // - locate elements in a list test true against a given criterion - hex :1, // - convert a string to a hexadecimal number - 'import' :1, // - patch a module's namespace into your own - index :1, // - find a substring within a string - 'int' :1, // - get the integer portion of a number - ioctl :1, // - system-dependent device control system call - 'join' :1, // - join a list into a string using a separator - keys :1, // - retrieve list of indices from a hash - kill :1, // - send a signal to a process or process group - last :1, // - exit a block prematurely - lc :1, // - return lower-case version of a string - lcfirst :1, // - return a string with just the next letter in lower case - length :1, // - return the number of bytes in a string - 'link' :1, // - create a hard link in the filesytem - listen :1, // - register your socket as a server - local : 2, // - create a temporary value for a global variable (dynamic scoping) - localtime :1, // - convert UNIX time into record or string using local time - lock :1, // - get a thread lock on a variable, subroutine, or method - 'log' :1, // - retrieve the natural logarithm for a number - lstat :1, // - stat a symbolic link - m :null, // - match a string with a regular expression pattern - map :1, // - apply a change to a list to get back a new list with the changes - mkdir :1, // - create a directory - msgctl :1, // - SysV IPC message control operations - msgget :1, // - get SysV IPC message queue - msgrcv :1, // - receive a SysV IPC message from a message queue - msgsnd :1, // - send a SysV IPC message to a message queue - my : 2, // - declare and assign a local variable (lexical scoping) - 'new' :1, // - next :1, // - iterate a block prematurely - no :1, // - unimport some module symbols or semantics at compile time - oct :1, // - convert a string to an octal number - open :1, // - open a file, pipe, or descriptor - opendir :1, // - open a directory - ord :1, // - find a character's numeric representation - our : 2, // - declare and assign a package variable (lexical scoping) - pack :1, // - convert a list into a binary representation - 'package' :1, // - declare a separate global namespace - pipe :1, // - open a pair of connected filehandles - pop :1, // - remove the last element from an array and return it - pos :1, // - find or set the offset for the last/next m//g search - print :1, // - output a list to a filehandle - printf :1, // - output a formatted list to a filehandle - prototype :1, // - get the prototype (if any) of a subroutine - push :1, // - append one or more elements to an array - q :null, // - singly quote a string - qq :null, // - doubly quote a string - qr :null, // - Compile pattern - quotemeta :null, // - quote regular expression magic characters - qw :null, // - quote a list of words - qx :null, // - backquote quote a string - rand :1, // - retrieve the next pseudorandom number - read :1, // - fixed-length buffered input from a filehandle - readdir :1, // - get a directory from a directory handle - readline :1, // - fetch a record from a file - readlink :1, // - determine where a symbolic link is pointing - readpipe :1, // - execute a system command and collect standard output - recv :1, // - receive a message over a Socket - redo :1, // - start this loop iteration over again - ref :1, // - find out the type of thing being referenced - rename :1, // - change a filename - require :1, // - load in external functions from a library at runtime - reset :1, // - clear all variables of a given name - 'return' :1, // - get out of a function early - reverse :1, // - flip a string or a list - rewinddir :1, // - reset directory handle - rindex :1, // - right-to-left substring search - rmdir :1, // - remove a directory - s :null, // - replace a pattern with a string - say :1, // - print with newline - scalar :1, // - force a scalar context - seek :1, // - reposition file pointer for random-access I/O - seekdir :1, // - reposition directory pointer - select :1, // - reset default output or do I/O multiplexing - semctl :1, // - SysV semaphore control operations - semget :1, // - get set of SysV semaphores - semop :1, // - SysV semaphore operations - send :1, // - send a message over a socket - setgrent :1, // - prepare group file for use - sethostent :1, // - prepare hosts file for use - setnetent :1, // - prepare networks file for use - setpgrp :1, // - set the process group of a process - setpriority :1, // - set a process's nice value - setprotoent :1, // - prepare protocols file for use - setpwent :1, // - prepare passwd file for use - setservent :1, // - prepare services file for use - setsockopt :1, // - set some socket options - shift :1, // - remove the first element of an array, and return it - shmctl :1, // - SysV shared memory operations - shmget :1, // - get SysV shared memory segment identifier - shmread :1, // - read SysV shared memory - shmwrite :1, // - write SysV shared memory - shutdown :1, // - close down just half of a socket connection - 'sin' :1, // - return the sine of a number - sleep :1, // - block for some number of seconds - socket :1, // - create a socket - socketpair :1, // - create a pair of sockets - 'sort' :1, // - sort a list of values - splice :1, // - add or remove elements anywhere in an array - 'split' :1, // - split up a string using a regexp delimiter - sprintf :1, // - formatted print into a string - 'sqrt' :1, // - square root function - srand :1, // - seed the random number generator - stat :1, // - get a file's status information - state :1, // - declare and assign a state variable (persistent lexical scoping) - study :1, // - optimize input data for repeated searches - 'sub' :1, // - declare a subroutine, possibly anonymously - 'substr' :1, // - get or alter a portion of a stirng - symlink :1, // - create a symbolic link to a file - syscall :1, // - execute an arbitrary system call - sysopen :1, // - open a file, pipe, or descriptor - sysread :1, // - fixed-length unbuffered input from a filehandle - sysseek :1, // - position I/O pointer on handle used with sysread and syswrite - system :1, // - run a separate program - syswrite :1, // - fixed-length unbuffered output to a filehandle - tell :1, // - get current seekpointer on a filehandle - telldir :1, // - get current seekpointer on a directory handle - tie :1, // - bind a variable to an object class - tied :1, // - get a reference to the object underlying a tied variable - time :1, // - return number of seconds since 1970 - times :1, // - return elapsed time for self and child processes - tr :null, // - transliterate a string - truncate :1, // - shorten a file - uc :1, // - return upper-case version of a string - ucfirst :1, // - return a string with just the next letter in upper case - umask :1, // - set file creation mode mask - undef :1, // - remove a variable or function definition - unlink :1, // - remove one link to a file - unpack :1, // - convert binary structure into normal perl variables - unshift :1, // - prepend more elements to the beginning of a list - untie :1, // - break a tie binding to a variable - use :1, // - load in a module at compile time - utime :1, // - set a file's last access and modify times - values :1, // - return a list of the values in a hash - vec :1, // - test or set particular bits in a string - wait :1, // - wait for any child process to die - waitpid :1, // - wait for a particular child process to die - wantarray :1, // - get void vs scalar vs list context of current subroutine call - warn :1, // - print debugging info - when :1, // - write :1, // - print a picture record - y :null}; // - transliterate a string - - var RXstyle="string-2"; - var RXmodifiers=/[goseximacplud]/; // NOTE: "m", "s", "y" and "tr" need to correct real modifiers for each regexp type - - function tokenChain(stream,state,chain,style,tail){ // NOTE: chain.length > 2 is not working now (it's for s[...][...]geos;) - state.chain=null; // 12 3tail - state.style=null; - state.tail=null; - state.tokenize=function(stream,state){ - var e=false,c,i=0; - while(c=stream.next()){ - if(c===chain[i]&&!e){ - if(chain[++i]!==undefined){ - state.chain=chain[i]; - state.style=style; - state.tail=tail;} - else if(tail) - stream.eatWhile(tail); - state.tokenize=tokenPerl; - return style;} - e=!e&&c=="\\";} - return style;}; - return state.tokenize(stream,state);} - - function tokenSOMETHING(stream,state,string){ - state.tokenize=function(stream,state){ - if(stream.string==string) - state.tokenize=tokenPerl; - stream.skipToEnd(); - return "string";}; - return state.tokenize(stream,state);} - - function tokenPerl(stream,state){ - if(stream.eatSpace()) - return null; - if(state.chain) - return tokenChain(stream,state,state.chain,state.style,state.tail); - if(stream.match(/^\-?[\d\.]/,false)) - if(stream.match(/^(\-?(\d*\.\d+(e[+-]?\d+)?|\d+\.\d*)|0x[\da-fA-F]+|0b[01]+|\d+(e[+-]?\d+)?)/)) - return 'number'; - if(stream.match(/^<<(?=\w)/)){ // NOTE: <"],RXstyle,RXmodifiers);} - if(/[\^'"!~\/]/.test(c)){ - eatSuffix(stream, 1); - return tokenChain(stream,state,[stream.eat(c)],RXstyle,RXmodifiers);}} - else if(c=="q"){ - c=look(stream, 1); - if(c=="("){ - eatSuffix(stream, 2); - return tokenChain(stream,state,[")"],"string");} - if(c=="["){ - eatSuffix(stream, 2); - return tokenChain(stream,state,["]"],"string");} - if(c=="{"){ - eatSuffix(stream, 2); - return tokenChain(stream,state,["}"],"string");} - if(c=="<"){ - eatSuffix(stream, 2); - return tokenChain(stream,state,[">"],"string");} - if(/[\^'"!~\/]/.test(c)){ - eatSuffix(stream, 1); - return tokenChain(stream,state,[stream.eat(c)],"string");}} - else if(c=="w"){ - c=look(stream, 1); - if(c=="("){ - eatSuffix(stream, 2); - return tokenChain(stream,state,[")"],"bracket");} - if(c=="["){ - eatSuffix(stream, 2); - return tokenChain(stream,state,["]"],"bracket");} - if(c=="{"){ - eatSuffix(stream, 2); - return tokenChain(stream,state,["}"],"bracket");} - if(c=="<"){ - eatSuffix(stream, 2); - return tokenChain(stream,state,[">"],"bracket");} - if(/[\^'"!~\/]/.test(c)){ - eatSuffix(stream, 1); - return tokenChain(stream,state,[stream.eat(c)],"bracket");}} - else if(c=="r"){ - c=look(stream, 1); - if(c=="("){ - eatSuffix(stream, 2); - return tokenChain(stream,state,[")"],RXstyle,RXmodifiers);} - if(c=="["){ - eatSuffix(stream, 2); - return tokenChain(stream,state,["]"],RXstyle,RXmodifiers);} - if(c=="{"){ - eatSuffix(stream, 2); - return tokenChain(stream,state,["}"],RXstyle,RXmodifiers);} - if(c=="<"){ - eatSuffix(stream, 2); - return tokenChain(stream,state,[">"],RXstyle,RXmodifiers);} - if(/[\^'"!~\/]/.test(c)){ - eatSuffix(stream, 1); - return tokenChain(stream,state,[stream.eat(c)],RXstyle,RXmodifiers);}} - else if(/[\^'"!~\/(\[{<]/.test(c)){ - if(c=="("){ - eatSuffix(stream, 1); - return tokenChain(stream,state,[")"],"string");} - if(c=="["){ - eatSuffix(stream, 1); - return tokenChain(stream,state,["]"],"string");} - if(c=="{"){ - eatSuffix(stream, 1); - return tokenChain(stream,state,["}"],"string");} - if(c=="<"){ - eatSuffix(stream, 1); - return tokenChain(stream,state,[">"],"string");} - if(/[\^'"!~\/]/.test(c)){ - return tokenChain(stream,state,[stream.eat(c)],"string");}}}} - if(ch=="m"){ - var c=look(stream, -2); - if(!(c&&/\w/.test(c))){ - c=stream.eat(/[(\[{<\^'"!~\/]/); - if(c){ - if(/[\^'"!~\/]/.test(c)){ - return tokenChain(stream,state,[c],RXstyle,RXmodifiers);} - if(c=="("){ - return tokenChain(stream,state,[")"],RXstyle,RXmodifiers);} - if(c=="["){ - return tokenChain(stream,state,["]"],RXstyle,RXmodifiers);} - if(c=="{"){ - return tokenChain(stream,state,["}"],RXstyle,RXmodifiers);} - if(c=="<"){ - return tokenChain(stream,state,[">"],RXstyle,RXmodifiers);}}}} - if(ch=="s"){ - var c=/[\/>\]})\w]/.test(look(stream, -2)); - if(!c){ - c=stream.eat(/[(\[{<\^'"!~\/]/); - if(c){ - if(c=="[") - return tokenChain(stream,state,["]","]"],RXstyle,RXmodifiers); - if(c=="{") - return tokenChain(stream,state,["}","}"],RXstyle,RXmodifiers); - if(c=="<") - return tokenChain(stream,state,[">",">"],RXstyle,RXmodifiers); - if(c=="(") - return tokenChain(stream,state,[")",")"],RXstyle,RXmodifiers); - return tokenChain(stream,state,[c,c],RXstyle,RXmodifiers);}}} - if(ch=="y"){ - var c=/[\/>\]})\w]/.test(look(stream, -2)); - if(!c){ - c=stream.eat(/[(\[{<\^'"!~\/]/); - if(c){ - if(c=="[") - return tokenChain(stream,state,["]","]"],RXstyle,RXmodifiers); - if(c=="{") - return tokenChain(stream,state,["}","}"],RXstyle,RXmodifiers); - if(c=="<") - return tokenChain(stream,state,[">",">"],RXstyle,RXmodifiers); - if(c=="(") - return tokenChain(stream,state,[")",")"],RXstyle,RXmodifiers); - return tokenChain(stream,state,[c,c],RXstyle,RXmodifiers);}}} - if(ch=="t"){ - var c=/[\/>\]})\w]/.test(look(stream, -2)); - if(!c){ - c=stream.eat("r");if(c){ - c=stream.eat(/[(\[{<\^'"!~\/]/); - if(c){ - if(c=="[") - return tokenChain(stream,state,["]","]"],RXstyle,RXmodifiers); - if(c=="{") - return tokenChain(stream,state,["}","}"],RXstyle,RXmodifiers); - if(c=="<") - return tokenChain(stream,state,[">",">"],RXstyle,RXmodifiers); - if(c=="(") - return tokenChain(stream,state,[")",")"],RXstyle,RXmodifiers); - return tokenChain(stream,state,[c,c],RXstyle,RXmodifiers);}}}} - if(ch=="`"){ - return tokenChain(stream,state,[ch],"variable-2");} - if(ch=="/"){ - if(!/~\s*$/.test(prefix(stream))) - return "operator"; - else - return tokenChain(stream,state,[ch],RXstyle,RXmodifiers);} - if(ch=="$"){ - var p=stream.pos; - if(stream.eatWhile(/\d/)||stream.eat("{")&&stream.eatWhile(/\d/)&&stream.eat("}")) - return "variable-2"; - else - stream.pos=p;} - if(/[$@%]/.test(ch)){ - var p=stream.pos; - if(stream.eat("^")&&stream.eat(/[A-Z]/)||!/[@$%&]/.test(look(stream, -2))&&stream.eat(/[=|\\\-#?@;:&`~\^!\[\]*'"$+.,\/<>()]/)){ - var c=stream.current(); - if(PERL[c]) - return "variable-2";} - stream.pos=p;} - if(/[$@%&]/.test(ch)){ - if(stream.eatWhile(/[\w$\[\]]/)||stream.eat("{")&&stream.eatWhile(/[\w$\[\]]/)&&stream.eat("}")){ - var c=stream.current(); - if(PERL[c]) - return "variable-2"; - else - return "variable";}} - if(ch=="#"){ - if(look(stream, -2)!="$"){ - stream.skipToEnd(); - return "comment";}} - if(/[:+\-\^*$&%@=<>!?|\/~\.]/.test(ch)){ - var p=stream.pos; - stream.eatWhile(/[:+\-\^*$&%@=<>!?|\/~\.]/); - if(PERL[stream.current()]) - return "operator"; - else - stream.pos=p;} - if(ch=="_"){ - if(stream.pos==1){ - if(suffix(stream, 6)=="_END__"){ - return tokenChain(stream,state,['\0'],"comment");} - else if(suffix(stream, 7)=="_DATA__"){ - return tokenChain(stream,state,['\0'],"variable-2");} - else if(suffix(stream, 7)=="_C__"){ - return tokenChain(stream,state,['\0'],"string");}}} - if(/\w/.test(ch)){ - var p=stream.pos; - if(look(stream, -2)=="{"&&(look(stream, 0)=="}"||stream.eatWhile(/\w/)&&look(stream, 0)=="}")) - return "string"; - else - stream.pos=p;} - if(/[A-Z]/.test(ch)){ - var l=look(stream, -2); - var p=stream.pos; - stream.eatWhile(/[A-Z_]/); - if(/[\da-z]/.test(look(stream, 0))){ - stream.pos=p;} - else{ - var c=PERL[stream.current()]; - if(!c) - return "meta"; - if(c[1]) - c=c[0]; - if(l!=":"){ - if(c==1) - return "keyword"; - else if(c==2) - return "def"; - else if(c==3) - return "atom"; - else if(c==4) - return "operator"; - else if(c==5) - return "variable-2"; - else - return "meta";} - else - return "meta";}} - if(/[a-zA-Z_]/.test(ch)){ - var l=look(stream, -2); - stream.eatWhile(/\w/); - var c=PERL[stream.current()]; - if(!c) - return "meta"; - if(c[1]) - c=c[0]; - if(l!=":"){ - if(c==1) - return "keyword"; - else if(c==2) - return "def"; - else if(c==3) - return "atom"; - else if(c==4) - return "operator"; - else if(c==5) - return "variable-2"; - else - return "meta";} - else - return "meta";} - return null;} - - return { - startState: function() { - return { - tokenize: tokenPerl, - chain: null, - style: null, - tail: null - }; - }, - token: function(stream, state) { - return (state.tokenize || tokenPerl)(stream, state); - }, - lineComment: '#' - }; -}); - -CodeMirror.registerHelper("wordChars", "perl", /[\w$]/); - -CodeMirror.defineMIME("text/x-perl", "perl"); - -// it's like "peek", but need for look-ahead or look-behind if index < 0 -function look(stream, c){ - return stream.string.charAt(stream.pos+(c||0)); -} - -// return a part of prefix of current stream from current position -function prefix(stream, c){ - if(c){ - var x=stream.pos-c; - return stream.string.substr((x>=0?x:0),c);} - else{ - return stream.string.substr(0,stream.pos-1); - } -} - -// return a part of suffix of current stream from current position -function suffix(stream, c){ - var y=stream.string.length; - var x=y-stream.pos+1; - return stream.string.substr(stream.pos,(c&&c=(y=stream.string.length-1)) - stream.pos=y; - else - stream.pos=x; -} - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/php/index.html b/public/plugins/codemirror-5.17.0/mode/php/index.html deleted file mode 100644 index adf6b1be2..000000000 --- a/public/plugins/codemirror-5.17.0/mode/php/index.html +++ /dev/null @@ -1,64 +0,0 @@ - - -CodeMirror: PHP mode - - - - - - - - - - - - - - - -
    -

    PHP mode

    -
    - - - -

    Simple HTML/PHP mode based on - the C-like mode. Depends on XML, - JavaScript, CSS, HTMLMixed, and C-like modes.

    - -

    MIME types defined: application/x-httpd-php (HTML with PHP code), text/x-php (plain, non-wrapped PHP code).

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/php/php.js b/public/plugins/codemirror-5.17.0/mode/php/php.js deleted file mode 100644 index 57ba812d7..000000000 --- a/public/plugins/codemirror-5.17.0/mode/php/php.js +++ /dev/null @@ -1,234 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed"), require("../clike/clike")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../htmlmixed/htmlmixed", "../clike/clike"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - function keywords(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - - // Helper for phpString - function matchSequence(list, end, escapes) { - if (list.length == 0) return phpString(end); - return function (stream, state) { - var patterns = list[0]; - for (var i = 0; i < patterns.length; i++) if (stream.match(patterns[i][0])) { - state.tokenize = matchSequence(list.slice(1), end); - return patterns[i][1]; - } - state.tokenize = phpString(end, escapes); - return "string"; - }; - } - function phpString(closing, escapes) { - return function(stream, state) { return phpString_(stream, state, closing, escapes); }; - } - function phpString_(stream, state, closing, escapes) { - // "Complex" syntax - if (escapes !== false && stream.match("${", false) || stream.match("{$", false)) { - state.tokenize = null; - return "string"; - } - - // Simple syntax - if (escapes !== false && stream.match(/^\$[a-zA-Z_][a-zA-Z0-9_]*/)) { - // After the variable name there may appear array or object operator. - if (stream.match("[", false)) { - // Match array operator - state.tokenize = matchSequence([ - [["[", null]], - [[/\d[\w\.]*/, "number"], - [/\$[a-zA-Z_][a-zA-Z0-9_]*/, "variable-2"], - [/[\w\$]+/, "variable"]], - [["]", null]] - ], closing, escapes); - } - if (stream.match(/\-\>\w/, false)) { - // Match object operator - state.tokenize = matchSequence([ - [["->", null]], - [[/[\w]+/, "variable"]] - ], closing, escapes); - } - return "variable-2"; - } - - var escaped = false; - // Normal string - while (!stream.eol() && - (escaped || escapes === false || - (!stream.match("{$", false) && - !stream.match(/^(\$[a-zA-Z_][a-zA-Z0-9_]*|\$\{)/, false)))) { - if (!escaped && stream.match(closing)) { - state.tokenize = null; - state.tokStack.pop(); state.tokStack.pop(); - break; - } - escaped = stream.next() == "\\" && !escaped; - } - return "string"; - } - - var phpKeywords = "abstract and array as break case catch class clone const continue declare default " + - "do else elseif enddeclare endfor endforeach endif endswitch endwhile extends final " + - "for foreach function global goto if implements interface instanceof namespace " + - "new or private protected public static switch throw trait try use var while xor " + - "die echo empty exit eval include include_once isset list require require_once return " + - "print unset __halt_compiler self static parent yield insteadof finally"; - var phpAtoms = "true false null TRUE FALSE NULL __CLASS__ __DIR__ __FILE__ __LINE__ __METHOD__ __FUNCTION__ __NAMESPACE__ __TRAIT__"; - var phpBuiltin = "func_num_args func_get_arg func_get_args strlen strcmp strncmp strcasecmp strncasecmp each error_reporting define defined trigger_error user_error set_error_handler restore_error_handler get_declared_classes get_loaded_extensions extension_loaded get_extension_funcs debug_backtrace constant bin2hex hex2bin sleep usleep time mktime gmmktime strftime gmstrftime strtotime date gmdate getdate localtime checkdate flush wordwrap htmlspecialchars htmlentities html_entity_decode md5 md5_file crc32 getimagesize image_type_to_mime_type phpinfo phpversion phpcredits strnatcmp strnatcasecmp substr_count strspn strcspn strtok strtoupper strtolower strpos strrpos strrev hebrev hebrevc nl2br basename dirname pathinfo stripslashes stripcslashes strstr stristr strrchr str_shuffle str_word_count strcoll substr substr_replace quotemeta ucfirst ucwords strtr addslashes addcslashes rtrim str_replace str_repeat count_chars chunk_split trim ltrim strip_tags similar_text explode implode setlocale localeconv parse_str str_pad chop strchr sprintf printf vprintf vsprintf sscanf fscanf parse_url urlencode urldecode rawurlencode rawurldecode readlink linkinfo link unlink exec system escapeshellcmd escapeshellarg passthru shell_exec proc_open proc_close rand srand getrandmax mt_rand mt_srand mt_getrandmax base64_decode base64_encode abs ceil floor round is_finite is_nan is_infinite bindec hexdec octdec decbin decoct dechex base_convert number_format fmod ip2long long2ip getenv putenv getopt microtime gettimeofday getrusage uniqid quoted_printable_decode set_time_limit get_cfg_var magic_quotes_runtime set_magic_quotes_runtime get_magic_quotes_gpc get_magic_quotes_runtime import_request_variables error_log serialize unserialize memory_get_usage var_dump var_export debug_zval_dump print_r highlight_file show_source highlight_string ini_get ini_get_all ini_set ini_alter ini_restore get_include_path set_include_path restore_include_path setcookie header headers_sent connection_aborted connection_status ignore_user_abort parse_ini_file is_uploaded_file move_uploaded_file intval floatval doubleval strval gettype settype is_null is_resource is_bool is_long is_float is_int is_integer is_double is_real is_numeric is_string is_array is_object is_scalar ereg ereg_replace eregi eregi_replace split spliti join sql_regcase dl pclose popen readfile rewind rmdir umask fclose feof fgetc fgets fgetss fread fopen fpassthru ftruncate fstat fseek ftell fflush fwrite fputs mkdir rename copy tempnam tmpfile file file_get_contents file_put_contents stream_select stream_context_create stream_context_set_params stream_context_set_option stream_context_get_options stream_filter_prepend stream_filter_append fgetcsv flock get_meta_tags stream_set_write_buffer set_file_buffer set_socket_blocking stream_set_blocking socket_set_blocking stream_get_meta_data stream_register_wrapper stream_wrapper_register stream_set_timeout socket_set_timeout socket_get_status realpath fnmatch fsockopen pfsockopen pack unpack get_browser crypt opendir closedir chdir getcwd rewinddir readdir dir glob fileatime filectime filegroup fileinode filemtime fileowner fileperms filesize filetype file_exists is_writable is_writeable is_readable is_executable is_file is_dir is_link stat lstat chown touch clearstatcache mail ob_start ob_flush ob_clean ob_end_flush ob_end_clean ob_get_flush ob_get_clean ob_get_length ob_get_level ob_get_status ob_get_contents ob_implicit_flush ob_list_handlers ksort krsort natsort natcasesort asort arsort sort rsort usort uasort uksort shuffle array_walk count end prev next reset current key min max in_array array_search extract compact array_fill range array_multisort array_push array_pop array_shift array_unshift array_splice array_slice array_merge array_merge_recursive array_keys array_values array_count_values array_reverse array_reduce array_pad array_flip array_change_key_case array_rand array_unique array_intersect array_intersect_assoc array_diff array_diff_assoc array_sum array_filter array_map array_chunk array_key_exists array_intersect_key array_combine array_column pos sizeof key_exists assert assert_options version_compare ftok str_rot13 aggregate session_name session_module_name session_save_path session_id session_regenerate_id session_decode session_register session_unregister session_is_registered session_encode session_start session_destroy session_unset session_set_save_handler session_cache_limiter session_cache_expire session_set_cookie_params session_get_cookie_params session_write_close preg_match preg_match_all preg_replace preg_replace_callback preg_split preg_quote preg_grep overload ctype_alnum ctype_alpha ctype_cntrl ctype_digit ctype_lower ctype_graph ctype_print ctype_punct ctype_space ctype_upper ctype_xdigit virtual apache_request_headers apache_note apache_lookup_uri apache_child_terminate apache_setenv apache_response_headers apache_get_version getallheaders mysql_connect mysql_pconnect mysql_close mysql_select_db mysql_create_db mysql_drop_db mysql_query mysql_unbuffered_query mysql_db_query mysql_list_dbs mysql_list_tables mysql_list_fields mysql_list_processes mysql_error mysql_errno mysql_affected_rows mysql_insert_id mysql_result mysql_num_rows mysql_num_fields mysql_fetch_row mysql_fetch_array mysql_fetch_assoc mysql_fetch_object mysql_data_seek mysql_fetch_lengths mysql_fetch_field mysql_field_seek mysql_free_result mysql_field_name mysql_field_table mysql_field_len mysql_field_type mysql_field_flags mysql_escape_string mysql_real_escape_string mysql_stat mysql_thread_id mysql_client_encoding mysql_get_client_info mysql_get_host_info mysql_get_proto_info mysql_get_server_info mysql_info mysql mysql_fieldname mysql_fieldtable mysql_fieldlen mysql_fieldtype mysql_fieldflags mysql_selectdb mysql_createdb mysql_dropdb mysql_freeresult mysql_numfields mysql_numrows mysql_listdbs mysql_listtables mysql_listfields mysql_db_name mysql_dbname mysql_tablename mysql_table_name pg_connect pg_pconnect pg_close pg_connection_status pg_connection_busy pg_connection_reset pg_host pg_dbname pg_port pg_tty pg_options pg_ping pg_query pg_send_query pg_cancel_query pg_fetch_result pg_fetch_row pg_fetch_assoc pg_fetch_array pg_fetch_object pg_fetch_all pg_affected_rows pg_get_result pg_result_seek pg_result_status pg_free_result pg_last_oid pg_num_rows pg_num_fields pg_field_name pg_field_num pg_field_size pg_field_type pg_field_prtlen pg_field_is_null pg_get_notify pg_get_pid pg_result_error pg_last_error pg_last_notice pg_put_line pg_end_copy pg_copy_to pg_copy_from pg_trace pg_untrace pg_lo_create pg_lo_unlink pg_lo_open pg_lo_close pg_lo_read pg_lo_write pg_lo_read_all pg_lo_import pg_lo_export pg_lo_seek pg_lo_tell pg_escape_string pg_escape_bytea pg_unescape_bytea pg_client_encoding pg_set_client_encoding pg_meta_data pg_convert pg_insert pg_update pg_delete pg_select pg_exec pg_getlastoid pg_cmdtuples pg_errormessage pg_numrows pg_numfields pg_fieldname pg_fieldsize pg_fieldtype pg_fieldnum pg_fieldprtlen pg_fieldisnull pg_freeresult pg_result pg_loreadall pg_locreate pg_lounlink pg_loopen pg_loclose pg_loread pg_lowrite pg_loimport pg_loexport http_response_code get_declared_traits getimagesizefromstring socket_import_stream stream_set_chunk_size trait_exists header_register_callback class_uses session_status session_register_shutdown echo print global static exit array empty eval isset unset die include require include_once require_once json_decode json_encode json_last_error json_last_error_msg curl_close curl_copy_handle curl_errno curl_error curl_escape curl_exec curl_file_create curl_getinfo curl_init curl_multi_add_handle curl_multi_close curl_multi_exec curl_multi_getcontent curl_multi_info_read curl_multi_init curl_multi_remove_handle curl_multi_select curl_multi_setopt curl_multi_strerror curl_pause curl_reset curl_setopt_array curl_setopt curl_share_close curl_share_init curl_share_setopt curl_strerror curl_unescape curl_version mysqli_affected_rows mysqli_autocommit mysqli_change_user mysqli_character_set_name mysqli_close mysqli_commit mysqli_connect_errno mysqli_connect_error mysqli_connect mysqli_data_seek mysqli_debug mysqli_dump_debug_info mysqli_errno mysqli_error_list mysqli_error mysqli_fetch_all mysqli_fetch_array mysqli_fetch_assoc mysqli_fetch_field_direct mysqli_fetch_field mysqli_fetch_fields mysqli_fetch_lengths mysqli_fetch_object mysqli_fetch_row mysqli_field_count mysqli_field_seek mysqli_field_tell mysqli_free_result mysqli_get_charset mysqli_get_client_info mysqli_get_client_stats mysqli_get_client_version mysqli_get_connection_stats mysqli_get_host_info mysqli_get_proto_info mysqli_get_server_info mysqli_get_server_version mysqli_info mysqli_init mysqli_insert_id mysqli_kill mysqli_more_results mysqli_multi_query mysqli_next_result mysqli_num_fields mysqli_num_rows mysqli_options mysqli_ping mysqli_prepare mysqli_query mysqli_real_connect mysqli_real_escape_string mysqli_real_query mysqli_reap_async_query mysqli_refresh mysqli_rollback mysqli_select_db mysqli_set_charset mysqli_set_local_infile_default mysqli_set_local_infile_handler mysqli_sqlstate mysqli_ssl_set mysqli_stat mysqli_stmt_init mysqli_store_result mysqli_thread_id mysqli_thread_safe mysqli_use_result mysqli_warning_count"; - CodeMirror.registerHelper("hintWords", "php", [phpKeywords, phpAtoms, phpBuiltin].join(" ").split(" ")); - CodeMirror.registerHelper("wordChars", "php", /[\w$]/); - - var phpConfig = { - name: "clike", - helperType: "php", - keywords: keywords(phpKeywords), - blockKeywords: keywords("catch do else elseif for foreach if switch try while finally"), - defKeywords: keywords("class function interface namespace trait"), - atoms: keywords(phpAtoms), - builtin: keywords(phpBuiltin), - multiLineStrings: true, - hooks: { - "$": function(stream) { - stream.eatWhile(/[\w\$_]/); - return "variable-2"; - }, - "<": function(stream, state) { - var before; - if (before = stream.match(/<<\s*/)) { - var quoted = stream.eat(/['"]/); - stream.eatWhile(/[\w\.]/); - var delim = stream.current().slice(before[0].length + (quoted ? 2 : 1)); - if (quoted) stream.eat(quoted); - if (delim) { - (state.tokStack || (state.tokStack = [])).push(delim, 0); - state.tokenize = phpString(delim, quoted != "'"); - return "string"; - } - } - return false; - }, - "#": function(stream) { - while (!stream.eol() && !stream.match("?>", false)) stream.next(); - return "comment"; - }, - "/": function(stream) { - if (stream.eat("/")) { - while (!stream.eol() && !stream.match("?>", false)) stream.next(); - return "comment"; - } - return false; - }, - '"': function(_stream, state) { - (state.tokStack || (state.tokStack = [])).push('"', 0); - state.tokenize = phpString('"'); - return "string"; - }, - "{": function(_stream, state) { - if (state.tokStack && state.tokStack.length) - state.tokStack[state.tokStack.length - 1]++; - return false; - }, - "}": function(_stream, state) { - if (state.tokStack && state.tokStack.length > 0 && - !--state.tokStack[state.tokStack.length - 1]) { - state.tokenize = phpString(state.tokStack[state.tokStack.length - 2]); - } - return false; - } - } - }; - - CodeMirror.defineMode("php", function(config, parserConfig) { - var htmlMode = CodeMirror.getMode(config, "text/html"); - var phpMode = CodeMirror.getMode(config, phpConfig); - - function dispatch(stream, state) { - var isPHP = state.curMode == phpMode; - if (stream.sol() && state.pending && state.pending != '"' && state.pending != "'") state.pending = null; - if (!isPHP) { - if (stream.match(/^<\?\w*/)) { - state.curMode = phpMode; - if (!state.php) state.php = CodeMirror.startState(phpMode, htmlMode.indent(state.html, "")) - state.curState = state.php; - return "meta"; - } - if (state.pending == '"' || state.pending == "'") { - while (!stream.eol() && stream.next() != state.pending) {} - var style = "string"; - } else if (state.pending && stream.pos < state.pending.end) { - stream.pos = state.pending.end; - var style = state.pending.style; - } else { - var style = htmlMode.token(stream, state.curState); - } - if (state.pending) state.pending = null; - var cur = stream.current(), openPHP = cur.search(/<\?/), m; - if (openPHP != -1) { - if (style == "string" && (m = cur.match(/[\'\"]$/)) && !/\?>/.test(cur)) state.pending = m[0]; - else state.pending = {end: stream.pos, style: style}; - stream.backUp(cur.length - openPHP); - } - return style; - } else if (isPHP && state.php.tokenize == null && stream.match("?>")) { - state.curMode = htmlMode; - state.curState = state.html; - if (!state.php.context.prev) state.php = null; - return "meta"; - } else { - return phpMode.token(stream, state.curState); - } - } - - return { - startState: function() { - var html = CodeMirror.startState(htmlMode) - var php = parserConfig.startOpen ? CodeMirror.startState(phpMode) : null - return {html: html, - php: php, - curMode: parserConfig.startOpen ? phpMode : htmlMode, - curState: parserConfig.startOpen ? php : html, - pending: null}; - }, - - copyState: function(state) { - var html = state.html, htmlNew = CodeMirror.copyState(htmlMode, html), - php = state.php, phpNew = php && CodeMirror.copyState(phpMode, php), cur; - if (state.curMode == htmlMode) cur = htmlNew; - else cur = phpNew; - return {html: htmlNew, php: phpNew, curMode: state.curMode, curState: cur, - pending: state.pending}; - }, - - token: dispatch, - - indent: function(state, textAfter) { - if ((state.curMode != phpMode && /^\s*<\//.test(textAfter)) || - (state.curMode == phpMode && /^\?>/.test(textAfter))) - return htmlMode.indent(state.html, textAfter); - return state.curMode.indent(state.curState, textAfter); - }, - - blockCommentStart: "/*", - blockCommentEnd: "*/", - lineComment: "//", - - innerMode: function(state) { return {state: state.curState, mode: state.curMode}; } - }; - }, "htmlmixed", "clike"); - - CodeMirror.defineMIME("application/x-httpd-php", "php"); - CodeMirror.defineMIME("application/x-httpd-php-open", {name: "php", startOpen: true}); - CodeMirror.defineMIME("text/x-php", phpConfig); -}); diff --git a/public/plugins/codemirror-5.17.0/mode/php/test.js b/public/plugins/codemirror-5.17.0/mode/php/test.js deleted file mode 100644 index e2ecefc18..000000000 --- a/public/plugins/codemirror-5.17.0/mode/php/test.js +++ /dev/null @@ -1,154 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function() { - var mode = CodeMirror.getMode({indentUnit: 2}, "php"); - function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } - - MT('simple_test', - '[meta ]'); - - MT('variable_interpolation_non_alphanumeric', - '[meta $/$\\$}$\\\"$:$;$?$|$[[$]]$+$=aaa"]', - '[meta ?>]'); - - MT('variable_interpolation_digits', - '[meta ]'); - - MT('variable_interpolation_simple_syntax_1', - '[meta ]'); - - MT('variable_interpolation_simple_syntax_2', - '[meta ]'); - - MT('variable_interpolation_simple_syntax_3', - '[meta [variable aaaaa][string .aaaaaa"];', - '[keyword echo] [string "aaa][variable-2 $aaaa][string ->][variable-2 $aaaaa][string .aaaaaa"];', - '[keyword echo] [string "aaa][variable-2 $aaaa]->[variable aaaaa][string [[2]].aaaaaa"];', - '[keyword echo] [string "aaa][variable-2 $aaaa]->[variable aaaaa][string ->aaaa2.aaaaaa"];', - '[meta ?>]'); - - MT('variable_interpolation_escaping', - '[meta aaa.aaa"];', - '[keyword echo] [string "aaa\\$aaaa[[2]]aaa.aaa"];', - '[keyword echo] [string "aaa\\$aaaa[[asd]]aaa.aaa"];', - '[keyword echo] [string "aaa{\\$aaaa->aaa.aaa"];', - '[keyword echo] [string "aaa{\\$aaaa[[2]]aaa.aaa"];', - '[keyword echo] [string "aaa{\\aaaaa[[asd]]aaa.aaa"];', - '[keyword echo] [string "aaa\\${aaaa->aaa.aaa"];', - '[keyword echo] [string "aaa\\${aaaa[[2]]aaa.aaa"];', - '[keyword echo] [string "aaa\\${aaaa[[asd]]aaa.aaa"];', - '[meta ?>]'); - - MT('variable_interpolation_complex_syntax_1', - '[meta aaa.aaa"];', - '[keyword echo] [string "aaa][variable-2 $]{[variable-2 $aaaa]}[string ->aaa.aaa"];', - '[keyword echo] [string "aaa][variable-2 $]{[variable-2 $aaaa][[',' [number 42]',']]}[string ->aaa.aaa"];', - '[keyword echo] [string "aaa][variable-2 $]{[variable aaaa][meta ?>]aaaaaa'); - - MT('variable_interpolation_complex_syntax_2', - '[meta } $aaaaaa.aaa"];', - '[keyword echo] [string "][variable-2 $]{[variable aaa][comment /*}?>*/][[',' [string "aaa][variable-2 $aaa][string {}][variable-2 $]{[variable aaa]}[string "]',']]}[string ->aaa.aaa"];', - '[keyword echo] [string "][variable-2 $]{[variable aaa][comment /*} } $aaa } */]}[string ->aaa.aaa"];'); - - - function build_recursive_monsters(nt, t, n){ - var monsters = [t]; - for (var i = 1; i <= n; ++i) - monsters[i] = nt.join(monsters[i - 1]); - return monsters; - } - - var m1 = build_recursive_monsters( - ['[string "][variable-2 $]{[variable aaa] [operator +] ', '}[string "]'], - '[comment /* }?>} */] [string "aaa][variable-2 $aaa][string .aaa"]', - 10 - ); - - MT('variable_interpolation_complex_syntax_3_1', - '[meta ]'); - - var m2 = build_recursive_monsters( - ['[string "a][variable-2 $]{[variable aaa] [operator +] ', ' [operator +] ', '}[string .a"]'], - '[comment /* }?>{{ */] [string "a?>}{{aa][variable-2 $aaa][string .a}a?>a"]', - 5 - ); - - MT('variable_interpolation_complex_syntax_3_2', - '[meta ]'); - - function build_recursive_monsters_2(mf1, mf2, nt, t, n){ - var monsters = [t]; - for (var i = 1; i <= n; ++i) - monsters[i] = nt[0] + mf1[i - 1] + nt[1] + mf2[i - 1] + nt[2] + monsters[i - 1] + nt[3]; - return monsters; - } - - var m3 = build_recursive_monsters_2( - m1, - m2, - ['[string "a][variable-2 $]{[variable aaa] [operator +] ', ' [operator +] ', ' [operator +] ', '}[string .a"]'], - '[comment /* }?>{{ */] [string "a?>}{{aa][variable-2 $aaa][string .a}a?>a"]', - 4 - ); - - MT('variable_interpolation_complex_syntax_3_3', - '[meta ]'); - - MT("variable_interpolation_heredoc", - "[meta -CodeMirror: Pig Latin mode - - - - - - - - - -
    -

    Pig Latin mode

    -
    - - - -

    - Simple mode that handles Pig Latin language. -

    - -

    MIME type defined: text/x-pig - (PIG code) -

    diff --git a/public/plugins/codemirror-5.17.0/mode/pig/pig.js b/public/plugins/codemirror-5.17.0/mode/pig/pig.js deleted file mode 100644 index 5b567272e..000000000 --- a/public/plugins/codemirror-5.17.0/mode/pig/pig.js +++ /dev/null @@ -1,178 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -/* - * Pig Latin Mode for CodeMirror 2 - * @author Prasanth Jayachandran - * @link https://github.com/prasanthj/pig-codemirror-2 - * This implementation is adapted from PL/SQL mode in CodeMirror 2. - */ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("pig", function(_config, parserConfig) { - var keywords = parserConfig.keywords, - builtins = parserConfig.builtins, - types = parserConfig.types, - multiLineStrings = parserConfig.multiLineStrings; - - var isOperatorChar = /[*+\-%<>=&?:\/!|]/; - - function chain(stream, state, f) { - state.tokenize = f; - return f(stream, state); - } - - function tokenComment(stream, state) { - var isEnd = false; - var ch; - while(ch = stream.next()) { - if(ch == "/" && isEnd) { - state.tokenize = tokenBase; - break; - } - isEnd = (ch == "*"); - } - return "comment"; - } - - function tokenString(quote) { - return function(stream, state) { - var escaped = false, next, end = false; - while((next = stream.next()) != null) { - if (next == quote && !escaped) { - end = true; break; - } - escaped = !escaped && next == "\\"; - } - if (end || !(escaped || multiLineStrings)) - state.tokenize = tokenBase; - return "error"; - }; - } - - - function tokenBase(stream, state) { - var ch = stream.next(); - - // is a start of string? - if (ch == '"' || ch == "'") - return chain(stream, state, tokenString(ch)); - // is it one of the special chars - else if(/[\[\]{}\(\),;\.]/.test(ch)) - return null; - // is it a number? - else if(/\d/.test(ch)) { - stream.eatWhile(/[\w\.]/); - return "number"; - } - // multi line comment or operator - else if (ch == "/") { - if (stream.eat("*")) { - return chain(stream, state, tokenComment); - } - else { - stream.eatWhile(isOperatorChar); - return "operator"; - } - } - // single line comment or operator - else if (ch=="-") { - if(stream.eat("-")){ - stream.skipToEnd(); - return "comment"; - } - else { - stream.eatWhile(isOperatorChar); - return "operator"; - } - } - // is it an operator - else if (isOperatorChar.test(ch)) { - stream.eatWhile(isOperatorChar); - return "operator"; - } - else { - // get the while word - stream.eatWhile(/[\w\$_]/); - // is it one of the listed keywords? - if (keywords && keywords.propertyIsEnumerable(stream.current().toUpperCase())) { - //keywords can be used as variables like flatten(group), group.$0 etc.. - if (!stream.eat(")") && !stream.eat(".")) - return "keyword"; - } - // is it one of the builtin functions? - if (builtins && builtins.propertyIsEnumerable(stream.current().toUpperCase())) - return "variable-2"; - // is it one of the listed types? - if (types && types.propertyIsEnumerable(stream.current().toUpperCase())) - return "variable-3"; - // default is a 'variable' - return "variable"; - } - } - - // Interface - return { - startState: function() { - return { - tokenize: tokenBase, - startOfLine: true - }; - }, - - token: function(stream, state) { - if(stream.eatSpace()) return null; - var style = state.tokenize(stream, state); - return style; - } - }; -}); - -(function() { - function keywords(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - - // builtin funcs taken from trunk revision 1303237 - var pBuiltins = "ABS ACOS ARITY ASIN ATAN AVG BAGSIZE BINSTORAGE BLOOM BUILDBLOOM CBRT CEIL " - + "CONCAT COR COS COSH COUNT COUNT_STAR COV CONSTANTSIZE CUBEDIMENSIONS DIFF DISTINCT DOUBLEABS " - + "DOUBLEAVG DOUBLEBASE DOUBLEMAX DOUBLEMIN DOUBLEROUND DOUBLESUM EXP FLOOR FLOATABS FLOATAVG " - + "FLOATMAX FLOATMIN FLOATROUND FLOATSUM GENERICINVOKER INDEXOF INTABS INTAVG INTMAX INTMIN " - + "INTSUM INVOKEFORDOUBLE INVOKEFORFLOAT INVOKEFORINT INVOKEFORLONG INVOKEFORSTRING INVOKER " - + "ISEMPTY JSONLOADER JSONMETADATA JSONSTORAGE LAST_INDEX_OF LCFIRST LOG LOG10 LOWER LONGABS " - + "LONGAVG LONGMAX LONGMIN LONGSUM MAX MIN MAPSIZE MONITOREDUDF NONDETERMINISTIC OUTPUTSCHEMA " - + "PIGSTORAGE PIGSTREAMING RANDOM REGEX_EXTRACT REGEX_EXTRACT_ALL REPLACE ROUND SIN SINH SIZE " - + "SQRT STRSPLIT SUBSTRING SUM STRINGCONCAT STRINGMAX STRINGMIN STRINGSIZE TAN TANH TOBAG " - + "TOKENIZE TOMAP TOP TOTUPLE TRIM TEXTLOADER TUPLESIZE UCFIRST UPPER UTF8STORAGECONVERTER "; - - // taken from QueryLexer.g - var pKeywords = "VOID IMPORT RETURNS DEFINE LOAD FILTER FOREACH ORDER CUBE DISTINCT COGROUP " - + "JOIN CROSS UNION SPLIT INTO IF OTHERWISE ALL AS BY USING INNER OUTER ONSCHEMA PARALLEL " - + "PARTITION GROUP AND OR NOT GENERATE FLATTEN ASC DESC IS STREAM THROUGH STORE MAPREDUCE " - + "SHIP CACHE INPUT OUTPUT STDERROR STDIN STDOUT LIMIT SAMPLE LEFT RIGHT FULL EQ GT LT GTE LTE " - + "NEQ MATCHES TRUE FALSE DUMP"; - - // data types - var pTypes = "BOOLEAN INT LONG FLOAT DOUBLE CHARARRAY BYTEARRAY BAG TUPLE MAP "; - - CodeMirror.defineMIME("text/x-pig", { - name: "pig", - builtins: keywords(pBuiltins), - keywords: keywords(pKeywords), - types: keywords(pTypes) - }); - - CodeMirror.registerHelper("hintWords", "pig", (pBuiltins + pTypes + pKeywords).split(" ")); -}()); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/powershell/index.html b/public/plugins/codemirror-5.17.0/mode/powershell/index.html deleted file mode 100644 index 6b235df8f..000000000 --- a/public/plugins/codemirror-5.17.0/mode/powershell/index.html +++ /dev/null @@ -1,204 +0,0 @@ - - - - - CodeMirror: Powershell mode - - - - - - - - -
    -

    PowerShell mode

    - -
    - - -

    MIME types defined: application/x-powershell.

    -
    - - diff --git a/public/plugins/codemirror-5.17.0/mode/powershell/powershell.js b/public/plugins/codemirror-5.17.0/mode/powershell/powershell.js deleted file mode 100644 index c443e7232..000000000 --- a/public/plugins/codemirror-5.17.0/mode/powershell/powershell.js +++ /dev/null @@ -1,396 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - 'use strict'; - if (typeof exports == 'object' && typeof module == 'object') // CommonJS - mod(require('codemirror')); - else if (typeof define == 'function' && define.amd) // AMD - define(['codemirror'], mod); - else // Plain browser env - mod(window.CodeMirror); -})(function(CodeMirror) { -'use strict'; - -CodeMirror.defineMode('powershell', function() { - function buildRegexp(patterns, options) { - options = options || {}; - var prefix = options.prefix !== undefined ? options.prefix : '^'; - var suffix = options.suffix !== undefined ? options.suffix : '\\b'; - - for (var i = 0; i < patterns.length; i++) { - if (patterns[i] instanceof RegExp) { - patterns[i] = patterns[i].source; - } - else { - patterns[i] = patterns[i].replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); - } - } - - return new RegExp(prefix + '(' + patterns.join('|') + ')' + suffix, 'i'); - } - - var notCharacterOrDash = '(?=[^A-Za-z\\d\\-_]|$)'; - var varNames = /[\w\-:]/ - var keywords = buildRegexp([ - /begin|break|catch|continue|data|default|do|dynamicparam/, - /else|elseif|end|exit|filter|finally|for|foreach|from|function|if|in/, - /param|process|return|switch|throw|trap|try|until|where|while/ - ], { suffix: notCharacterOrDash }); - - var punctuation = /[\[\]{},;`\.]|@[({]/; - var wordOperators = buildRegexp([ - 'f', - /b?not/, - /[ic]?split/, 'join', - /is(not)?/, 'as', - /[ic]?(eq|ne|[gl][te])/, - /[ic]?(not)?(like|match|contains)/, - /[ic]?replace/, - /b?(and|or|xor)/ - ], { prefix: '-' }); - var symbolOperators = /[+\-*\/%]=|\+\+|--|\.\.|[+\-*&^%:=!|\/]|<(?!#)|(?!#)>/; - var operators = buildRegexp([wordOperators, symbolOperators], { suffix: '' }); - - var numbers = /^((0x[\da-f]+)|((\d+\.\d+|\d\.|\.\d+|\d+)(e[\+\-]?\d+)?))[ld]?([kmgtp]b)?/i; - - var identifiers = /^[A-Za-z\_][A-Za-z\-\_\d]*\b/; - - var symbolBuiltins = /[A-Z]:|%|\?/i; - var namedBuiltins = buildRegexp([ - /Add-(Computer|Content|History|Member|PSSnapin|Type)/, - /Checkpoint-Computer/, - /Clear-(Content|EventLog|History|Host|Item(Property)?|Variable)/, - /Compare-Object/, - /Complete-Transaction/, - /Connect-PSSession/, - /ConvertFrom-(Csv|Json|SecureString|StringData)/, - /Convert-Path/, - /ConvertTo-(Csv|Html|Json|SecureString|Xml)/, - /Copy-Item(Property)?/, - /Debug-Process/, - /Disable-(ComputerRestore|PSBreakpoint|PSRemoting|PSSessionConfiguration)/, - /Disconnect-PSSession/, - /Enable-(ComputerRestore|PSBreakpoint|PSRemoting|PSSessionConfiguration)/, - /(Enter|Exit)-PSSession/, - /Export-(Alias|Clixml|Console|Counter|Csv|FormatData|ModuleMember|PSSession)/, - /ForEach-Object/, - /Format-(Custom|List|Table|Wide)/, - new RegExp('Get-(Acl|Alias|AuthenticodeSignature|ChildItem|Command|ComputerRestorePoint|Content|ControlPanelItem|Counter|Credential' - + '|Culture|Date|Event|EventLog|EventSubscriber|ExecutionPolicy|FormatData|Help|History|Host|HotFix|Item|ItemProperty|Job' - + '|Location|Member|Module|PfxCertificate|Process|PSBreakpoint|PSCallStack|PSDrive|PSProvider|PSSession|PSSessionConfiguration' - + '|PSSnapin|Random|Service|TraceSource|Transaction|TypeData|UICulture|Unique|Variable|Verb|WinEvent|WmiObject)'), - /Group-Object/, - /Import-(Alias|Clixml|Counter|Csv|LocalizedData|Module|PSSession)/, - /ImportSystemModules/, - /Invoke-(Command|Expression|History|Item|RestMethod|WebRequest|WmiMethod)/, - /Join-Path/, - /Limit-EventLog/, - /Measure-(Command|Object)/, - /Move-Item(Property)?/, - new RegExp('New-(Alias|Event|EventLog|Item(Property)?|Module|ModuleManifest|Object|PSDrive|PSSession|PSSessionConfigurationFile' - + '|PSSessionOption|PSTransportOption|Service|TimeSpan|Variable|WebServiceProxy|WinEvent)'), - /Out-(Default|File|GridView|Host|Null|Printer|String)/, - /Pause/, - /(Pop|Push)-Location/, - /Read-Host/, - /Receive-(Job|PSSession)/, - /Register-(EngineEvent|ObjectEvent|PSSessionConfiguration|WmiEvent)/, - /Remove-(Computer|Event|EventLog|Item(Property)?|Job|Module|PSBreakpoint|PSDrive|PSSession|PSSnapin|TypeData|Variable|WmiObject)/, - /Rename-(Computer|Item(Property)?)/, - /Reset-ComputerMachinePassword/, - /Resolve-Path/, - /Restart-(Computer|Service)/, - /Restore-Computer/, - /Resume-(Job|Service)/, - /Save-Help/, - /Select-(Object|String|Xml)/, - /Send-MailMessage/, - new RegExp('Set-(Acl|Alias|AuthenticodeSignature|Content|Date|ExecutionPolicy|Item(Property)?|Location|PSBreakpoint|PSDebug' + - '|PSSessionConfiguration|Service|StrictMode|TraceSource|Variable|WmiInstance)'), - /Show-(Command|ControlPanelItem|EventLog)/, - /Sort-Object/, - /Split-Path/, - /Start-(Job|Process|Service|Sleep|Transaction|Transcript)/, - /Stop-(Computer|Job|Process|Service|Transcript)/, - /Suspend-(Job|Service)/, - /TabExpansion2/, - /Tee-Object/, - /Test-(ComputerSecureChannel|Connection|ModuleManifest|Path|PSSessionConfigurationFile)/, - /Trace-Command/, - /Unblock-File/, - /Undo-Transaction/, - /Unregister-(Event|PSSessionConfiguration)/, - /Update-(FormatData|Help|List|TypeData)/, - /Use-Transaction/, - /Wait-(Event|Job|Process)/, - /Where-Object/, - /Write-(Debug|Error|EventLog|Host|Output|Progress|Verbose|Warning)/, - /cd|help|mkdir|more|oss|prompt/, - /ac|asnp|cat|cd|chdir|clc|clear|clhy|cli|clp|cls|clv|cnsn|compare|copy|cp|cpi|cpp|cvpa|dbp|del|diff|dir|dnsn|ebp/, - /echo|epal|epcsv|epsn|erase|etsn|exsn|fc|fl|foreach|ft|fw|gal|gbp|gc|gci|gcm|gcs|gdr|ghy|gi|gjb|gl|gm|gmo|gp|gps/, - /group|gsn|gsnp|gsv|gu|gv|gwmi|h|history|icm|iex|ihy|ii|ipal|ipcsv|ipmo|ipsn|irm|ise|iwmi|iwr|kill|lp|ls|man|md/, - /measure|mi|mount|move|mp|mv|nal|ndr|ni|nmo|npssc|nsn|nv|ogv|oh|popd|ps|pushd|pwd|r|rbp|rcjb|rcsn|rd|rdr|ren|ri/, - /rjb|rm|rmdir|rmo|rni|rnp|rp|rsn|rsnp|rujb|rv|rvpa|rwmi|sajb|sal|saps|sasv|sbp|sc|select|set|shcm|si|sl|sleep|sls/, - /sort|sp|spjb|spps|spsv|start|sujb|sv|swmi|tee|trcm|type|where|wjb|write/ - ], { prefix: '', suffix: '' }); - var variableBuiltins = buildRegexp([ - /[$?^_]|Args|ConfirmPreference|ConsoleFileName|DebugPreference|Error|ErrorActionPreference|ErrorView|ExecutionContext/, - /FormatEnumerationLimit|Home|Host|Input|MaximumAliasCount|MaximumDriveCount|MaximumErrorCount|MaximumFunctionCount/, - /MaximumHistoryCount|MaximumVariableCount|MyInvocation|NestedPromptLevel|OutputEncoding|Pid|Profile|ProgressPreference/, - /PSBoundParameters|PSCommandPath|PSCulture|PSDefaultParameterValues|PSEmailServer|PSHome|PSScriptRoot|PSSessionApplicationName/, - /PSSessionConfigurationName|PSSessionOption|PSUICulture|PSVersionTable|Pwd|ShellId|StackTrace|VerbosePreference/, - /WarningPreference|WhatIfPreference/, - - /Event|EventArgs|EventSubscriber|Sender/, - /Matches|Ofs|ForEach|LastExitCode|PSCmdlet|PSItem|PSSenderInfo|This/, - /true|false|null/ - ], { prefix: '\\$', suffix: '' }); - - var builtins = buildRegexp([symbolBuiltins, namedBuiltins, variableBuiltins], { suffix: notCharacterOrDash }); - - var grammar = { - keyword: keywords, - number: numbers, - operator: operators, - builtin: builtins, - punctuation: punctuation, - identifier: identifiers - }; - - // tokenizers - function tokenBase(stream, state) { - // Handle Comments - //var ch = stream.peek(); - - var parent = state.returnStack[state.returnStack.length - 1]; - if (parent && parent.shouldReturnFrom(state)) { - state.tokenize = parent.tokenize; - state.returnStack.pop(); - return state.tokenize(stream, state); - } - - if (stream.eatSpace()) { - return null; - } - - if (stream.eat('(')) { - state.bracketNesting += 1; - return 'punctuation'; - } - - if (stream.eat(')')) { - state.bracketNesting -= 1; - return 'punctuation'; - } - - for (var key in grammar) { - if (stream.match(grammar[key])) { - return key; - } - } - - var ch = stream.next(); - - // single-quote string - if (ch === "'") { - return tokenSingleQuoteString(stream, state); - } - - if (ch === '$') { - return tokenVariable(stream, state); - } - - // double-quote string - if (ch === '"') { - return tokenDoubleQuoteString(stream, state); - } - - if (ch === '<' && stream.eat('#')) { - state.tokenize = tokenComment; - return tokenComment(stream, state); - } - - if (ch === '#') { - stream.skipToEnd(); - return 'comment'; - } - - if (ch === '@') { - var quoteMatch = stream.eat(/["']/); - if (quoteMatch && stream.eol()) { - state.tokenize = tokenMultiString; - state.startQuote = quoteMatch[0]; - return tokenMultiString(stream, state); - } else if (stream.peek().match(/[({]/)) { - return 'punctuation'; - } else if (stream.peek().match(varNames)) { - // splatted variable - return tokenVariable(stream, state); - } - } - return 'error'; - } - - function tokenSingleQuoteString(stream, state) { - var ch; - while ((ch = stream.peek()) != null) { - stream.next(); - - if (ch === "'" && !stream.eat("'")) { - state.tokenize = tokenBase; - return 'string'; - } - } - - return 'error'; - } - - function tokenDoubleQuoteString(stream, state) { - var ch; - while ((ch = stream.peek()) != null) { - if (ch === '$') { - state.tokenize = tokenStringInterpolation; - return 'string'; - } - - stream.next(); - if (ch === '`') { - stream.next(); - continue; - } - - if (ch === '"' && !stream.eat('"')) { - state.tokenize = tokenBase; - return 'string'; - } - } - - return 'error'; - } - - function tokenStringInterpolation(stream, state) { - return tokenInterpolation(stream, state, tokenDoubleQuoteString); - } - - function tokenMultiStringReturn(stream, state) { - state.tokenize = tokenMultiString; - state.startQuote = '"' - return tokenMultiString(stream, state); - } - - function tokenHereStringInterpolation(stream, state) { - return tokenInterpolation(stream, state, tokenMultiStringReturn); - } - - function tokenInterpolation(stream, state, parentTokenize) { - if (stream.match('$(')) { - var savedBracketNesting = state.bracketNesting; - state.returnStack.push({ - /*jshint loopfunc:true */ - shouldReturnFrom: function(state) { - return state.bracketNesting === savedBracketNesting; - }, - tokenize: parentTokenize - }); - state.tokenize = tokenBase; - state.bracketNesting += 1; - return 'punctuation'; - } else { - stream.next(); - state.returnStack.push({ - shouldReturnFrom: function() { return true; }, - tokenize: parentTokenize - }); - state.tokenize = tokenVariable; - return state.tokenize(stream, state); - } - } - - function tokenComment(stream, state) { - var maybeEnd = false, ch; - while ((ch = stream.next()) != null) { - if (maybeEnd && ch == '>') { - state.tokenize = tokenBase; - break; - } - maybeEnd = (ch === '#'); - } - return 'comment'; - } - - function tokenVariable(stream, state) { - var ch = stream.peek(); - if (stream.eat('{')) { - state.tokenize = tokenVariableWithBraces; - return tokenVariableWithBraces(stream, state); - } else if (ch != undefined && ch.match(varNames)) { - stream.eatWhile(varNames); - state.tokenize = tokenBase; - return 'variable-2'; - } else { - state.tokenize = tokenBase; - return 'error'; - } - } - - function tokenVariableWithBraces(stream, state) { - var ch; - while ((ch = stream.next()) != null) { - if (ch === '}') { - state.tokenize = tokenBase; - break; - } - } - return 'variable-2'; - } - - function tokenMultiString(stream, state) { - var quote = state.startQuote; - if (stream.sol() && stream.match(new RegExp(quote + '@'))) { - state.tokenize = tokenBase; - } - else if (quote === '"') { - while (!stream.eol()) { - var ch = stream.peek(); - if (ch === '$') { - state.tokenize = tokenHereStringInterpolation; - return 'string'; - } - - stream.next(); - if (ch === '`') { - stream.next(); - } - } - } - else { - stream.skipToEnd(); - } - - return 'string'; - } - - var external = { - startState: function() { - return { - returnStack: [], - bracketNesting: 0, - tokenize: tokenBase - }; - }, - - token: function(stream, state) { - return state.tokenize(stream, state); - }, - - blockCommentStart: '<#', - blockCommentEnd: '#>', - lineComment: '#', - fold: 'brace' - }; - return external; -}); - -CodeMirror.defineMIME('application/x-powershell', 'powershell'); -}); diff --git a/public/plugins/codemirror-5.17.0/mode/powershell/test.js b/public/plugins/codemirror-5.17.0/mode/powershell/test.js deleted file mode 100644 index 59b8e6fca..000000000 --- a/public/plugins/codemirror-5.17.0/mode/powershell/test.js +++ /dev/null @@ -1,72 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function() { - var mode = CodeMirror.getMode({indentUnit: 2}, "powershell"); - function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } - - MT('comment', '[number 1][comment # A]'); - MT('comment_multiline', '[number 1][comment <#]', - '[comment ABC]', - '[comment #>][number 2]'); - - [ - '0', '1234', - '12kb', '12mb', '12Gb', '12Tb', '12PB', '12L', '12D', '12lkb', '12dtb', - '1.234', '1.234e56', '1.', '1.e2', '.2', '.2e34', - '1.2MB', '1.kb', '.1dTB', '1.e1gb', '.2', '.2e34', - '0x1', '0xabcdef', '0x3tb', '0xelmb' - ].forEach(function(number) { - MT("number_" + number, "[number " + number + "]"); - }); - - MT('string_literal_escaping', "[string 'a''']"); - MT('string_literal_variable', "[string 'a $x']"); - MT('string_escaping_1', '[string "a `""]'); - MT('string_escaping_2', '[string "a """]'); - MT('string_variable_escaping', '[string "a `$x"]'); - MT('string_variable', '[string "a ][variable-2 $x][string b"]'); - MT('string_variable_spaces', '[string "a ][variable-2 ${x y}][string b"]'); - MT('string_expression', '[string "a ][punctuation $(][variable-2 $x][operator +][number 3][punctuation )][string b"]'); - MT('string_expression_nested', '[string "A][punctuation $(][string "a][punctuation $(][string "w"][punctuation )][string b"][punctuation )][string B"]'); - - MT('string_heredoc', '[string @"]', - '[string abc]', - '[string "@]'); - MT('string_heredoc_quotes', '[string @"]', - '[string abc "\']', - '[string "@]'); - MT('string_heredoc_variable', '[string @"]', - '[string a ][variable-2 $x][string b]', - '[string "@]'); - MT('string_heredoc_nested_string', '[string @"]', - '[string a][punctuation $(][string "w"][punctuation )][string b]', - '[string "@]'); - MT('string_heredoc_literal_quotes', "[string @']", - '[string abc "\']', - "[string '@]"); - - MT('array', "[punctuation @(][string 'a'][punctuation ,][string 'b'][punctuation )]"); - MT('hash', "[punctuation @{][string 'key'][operator :][string 'value'][punctuation }]"); - - MT('variable', "[variable-2 $test]"); - MT('variable_global', "[variable-2 $global:test]"); - MT('variable_spaces', "[variable-2 ${test test}]"); - MT('operator_splat', "[variable-2 @x]"); - MT('variable_builtin', "[builtin $ErrorActionPreference]"); - MT('variable_builtin_symbols', "[builtin $$]"); - - MT('operator', "[operator +]"); - MT('operator_unary', "[operator +][number 3]"); - MT('operator_long', "[operator -match]"); - - [ - '(', ')', '[[', ']]', '{', '}', ',', '`', ';', '.' - ].forEach(function(punctuation) { - MT("punctuation_" + punctuation.replace(/^[\[\]]/,''), "[punctuation " + punctuation + "]"); - }); - - MT('keyword', "[keyword if]"); - - MT('call_builtin', "[builtin Get-ChildItem]"); -})(); diff --git a/public/plugins/codemirror-5.17.0/mode/properties/index.html b/public/plugins/codemirror-5.17.0/mode/properties/index.html deleted file mode 100644 index f885302de..000000000 --- a/public/plugins/codemirror-5.17.0/mode/properties/index.html +++ /dev/null @@ -1,53 +0,0 @@ - - -CodeMirror: Properties files mode - - - - - - - - - -
    -

    Properties files mode

    -
    - - -

    MIME types defined: text/x-properties, - text/x-ini.

    - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/properties/properties.js b/public/plugins/codemirror-5.17.0/mode/properties/properties.js deleted file mode 100644 index ef8bf37ee..000000000 --- a/public/plugins/codemirror-5.17.0/mode/properties/properties.js +++ /dev/null @@ -1,78 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("properties", function() { - return { - token: function(stream, state) { - var sol = stream.sol() || state.afterSection; - var eol = stream.eol(); - - state.afterSection = false; - - if (sol) { - if (state.nextMultiline) { - state.inMultiline = true; - state.nextMultiline = false; - } else { - state.position = "def"; - } - } - - if (eol && ! state.nextMultiline) { - state.inMultiline = false; - state.position = "def"; - } - - if (sol) { - while(stream.eatSpace()) {} - } - - var ch = stream.next(); - - if (sol && (ch === "#" || ch === "!" || ch === ";")) { - state.position = "comment"; - stream.skipToEnd(); - return "comment"; - } else if (sol && ch === "[") { - state.afterSection = true; - stream.skipTo("]"); stream.eat("]"); - return "header"; - } else if (ch === "=" || ch === ":") { - state.position = "quote"; - return null; - } else if (ch === "\\" && state.position === "quote") { - if (stream.eol()) { // end of line? - // Multiline value - state.nextMultiline = true; - } - } - - return state.position; - }, - - startState: function() { - return { - position : "def", // Current position, "def", "quote" or "comment" - nextMultiline : false, // Is the next line multiline value - inMultiline : false, // Is the current line a multiline value - afterSection : false // Did we just open a section - }; - } - - }; -}); - -CodeMirror.defineMIME("text/x-properties", "properties"); -CodeMirror.defineMIME("text/x-ini", "properties"); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/protobuf/index.html b/public/plugins/codemirror-5.17.0/mode/protobuf/index.html deleted file mode 100644 index cfe7b9dcd..000000000 --- a/public/plugins/codemirror-5.17.0/mode/protobuf/index.html +++ /dev/null @@ -1,64 +0,0 @@ - - -CodeMirror: ProtoBuf mode - - - - - - - - - -
    -

    ProtoBuf mode

    -
    - - -

    MIME types defined: text/x-protobuf.

    - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/protobuf/protobuf.js b/public/plugins/codemirror-5.17.0/mode/protobuf/protobuf.js deleted file mode 100644 index bcae276e8..000000000 --- a/public/plugins/codemirror-5.17.0/mode/protobuf/protobuf.js +++ /dev/null @@ -1,68 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - function wordRegexp(words) { - return new RegExp("^((" + words.join(")|(") + "))\\b", "i"); - }; - - var keywordArray = [ - "package", "message", "import", "syntax", - "required", "optional", "repeated", "reserved", "default", "extensions", "packed", - "bool", "bytes", "double", "enum", "float", "string", - "int32", "int64", "uint32", "uint64", "sint32", "sint64", "fixed32", "fixed64", "sfixed32", "sfixed64" - ]; - var keywords = wordRegexp(keywordArray); - - CodeMirror.registerHelper("hintWords", "protobuf", keywordArray); - - var identifiers = new RegExp("^[_A-Za-z\xa1-\uffff][_A-Za-z0-9\xa1-\uffff]*"); - - function tokenBase(stream) { - // whitespaces - if (stream.eatSpace()) return null; - - // Handle one line Comments - if (stream.match("//")) { - stream.skipToEnd(); - return "comment"; - } - - // Handle Number Literals - if (stream.match(/^[0-9\.+-]/, false)) { - if (stream.match(/^[+-]?0x[0-9a-fA-F]+/)) - return "number"; - if (stream.match(/^[+-]?\d*\.\d+([EeDd][+-]?\d+)?/)) - return "number"; - if (stream.match(/^[+-]?\d+([EeDd][+-]?\d+)?/)) - return "number"; - } - - // Handle Strings - if (stream.match(/^"([^"]|(""))*"/)) { return "string"; } - if (stream.match(/^'([^']|(''))*'/)) { return "string"; } - - // Handle words - if (stream.match(keywords)) { return "keyword"; } - if (stream.match(identifiers)) { return "variable"; } ; - - // Handle non-detected items - stream.next(); - return null; - }; - - CodeMirror.defineMode("protobuf", function() { - return {token: tokenBase}; - }); - - CodeMirror.defineMIME("text/x-protobuf", "protobuf"); -}); diff --git a/public/plugins/codemirror-5.17.0/mode/puppet/index.html b/public/plugins/codemirror-5.17.0/mode/puppet/index.html deleted file mode 100644 index 5614c3695..000000000 --- a/public/plugins/codemirror-5.17.0/mode/puppet/index.html +++ /dev/null @@ -1,121 +0,0 @@ - - -CodeMirror: Puppet mode - - - - - - - - - - -
    -

    Puppet mode

    -
    - - -

    MIME types defined: text/x-puppet.

    - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/puppet/puppet.js b/public/plugins/codemirror-5.17.0/mode/puppet/puppet.js deleted file mode 100644 index 57041300a..000000000 --- a/public/plugins/codemirror-5.17.0/mode/puppet/puppet.js +++ /dev/null @@ -1,220 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("puppet", function () { - // Stores the words from the define method - var words = {}; - // Taken, mostly, from the Puppet official variable standards regex - var variable_regex = /({)?([a-z][a-z0-9_]*)?((::[a-z][a-z0-9_]*)*::)?[a-zA-Z0-9_]+(})?/; - - // Takes a string of words separated by spaces and adds them as - // keys with the value of the first argument 'style' - function define(style, string) { - var split = string.split(' '); - for (var i = 0; i < split.length; i++) { - words[split[i]] = style; - } - } - - // Takes commonly known puppet types/words and classifies them to a style - define('keyword', 'class define site node include import inherits'); - define('keyword', 'case if else in and elsif default or'); - define('atom', 'false true running present absent file directory undef'); - define('builtin', 'action augeas burst chain computer cron destination dport exec ' + - 'file filebucket group host icmp iniface interface jump k5login limit log_level ' + - 'log_prefix macauthorization mailalias maillist mcx mount nagios_command ' + - 'nagios_contact nagios_contactgroup nagios_host nagios_hostdependency ' + - 'nagios_hostescalation nagios_hostextinfo nagios_hostgroup nagios_service ' + - 'nagios_servicedependency nagios_serviceescalation nagios_serviceextinfo ' + - 'nagios_servicegroup nagios_timeperiod name notify outiface package proto reject ' + - 'resources router schedule scheduled_task selboolean selmodule service source ' + - 'sport ssh_authorized_key sshkey stage state table tidy todest toports tosource ' + - 'user vlan yumrepo zfs zone zpool'); - - // After finding a start of a string ('|") this function attempts to find the end; - // If a variable is encountered along the way, we display it differently when it - // is encapsulated in a double-quoted string. - function tokenString(stream, state) { - var current, prev, found_var = false; - while (!stream.eol() && (current = stream.next()) != state.pending) { - if (current === '$' && prev != '\\' && state.pending == '"') { - found_var = true; - break; - } - prev = current; - } - if (found_var) { - stream.backUp(1); - } - if (current == state.pending) { - state.continueString = false; - } else { - state.continueString = true; - } - return "string"; - } - - // Main function - function tokenize(stream, state) { - // Matches one whole word - var word = stream.match(/[\w]+/, false); - // Matches attributes (i.e. ensure => present ; 'ensure' would be matched) - var attribute = stream.match(/(\s+)?\w+\s+=>.*/, false); - // Matches non-builtin resource declarations - // (i.e. "apache::vhost {" or "mycustomclasss {" would be matched) - var resource = stream.match(/(\s+)?[\w:_]+(\s+)?{/, false); - // Matches virtual and exported resources (i.e. @@user { ; and the like) - var special_resource = stream.match(/(\s+)?[@]{1,2}[\w:_]+(\s+)?{/, false); - - // Finally advance the stream - var ch = stream.next(); - - // Have we found a variable? - if (ch === '$') { - if (stream.match(variable_regex)) { - // If so, and its in a string, assign it a different color - return state.continueString ? 'variable-2' : 'variable'; - } - // Otherwise return an invalid variable - return "error"; - } - // Should we still be looking for the end of a string? - if (state.continueString) { - // If so, go through the loop again - stream.backUp(1); - return tokenString(stream, state); - } - // Are we in a definition (class, node, define)? - if (state.inDefinition) { - // If so, return def (i.e. for 'class myclass {' ; 'myclass' would be matched) - if (stream.match(/(\s+)?[\w:_]+(\s+)?/)) { - return 'def'; - } - // Match the rest it the next time around - stream.match(/\s+{/); - state.inDefinition = false; - } - // Are we in an 'include' statement? - if (state.inInclude) { - // Match and return the included class - stream.match(/(\s+)?\S+(\s+)?/); - state.inInclude = false; - return 'def'; - } - // Do we just have a function on our hands? - // In 'ensure_resource("myclass")', 'ensure_resource' is matched - if (stream.match(/(\s+)?\w+\(/)) { - stream.backUp(1); - return 'def'; - } - // Have we matched the prior attribute regex? - if (attribute) { - stream.match(/(\s+)?\w+/); - return 'tag'; - } - // Do we have Puppet specific words? - if (word && words.hasOwnProperty(word)) { - // Negates the initial next() - stream.backUp(1); - // rs move the stream - stream.match(/[\w]+/); - // We want to process these words differently - // do to the importance they have in Puppet - if (stream.match(/\s+\S+\s+{/, false)) { - state.inDefinition = true; - } - if (word == 'include') { - state.inInclude = true; - } - // Returns their value as state in the prior define methods - return words[word]; - } - // Is there a match on a reference? - if (/(^|\s+)[A-Z][\w:_]+/.test(word)) { - // Negate the next() - stream.backUp(1); - // Match the full reference - stream.match(/(^|\s+)[A-Z][\w:_]+/); - return 'def'; - } - // Have we matched the prior resource regex? - if (resource) { - stream.match(/(\s+)?[\w:_]+/); - return 'def'; - } - // Have we matched the prior special_resource regex? - if (special_resource) { - stream.match(/(\s+)?[@]{1,2}/); - return 'special'; - } - // Match all the comments. All of them. - if (ch == "#") { - stream.skipToEnd(); - return "comment"; - } - // Have we found a string? - if (ch == "'" || ch == '"') { - // Store the type (single or double) - state.pending = ch; - // Perform the looping function to find the end - return tokenString(stream, state); - } - // Match all the brackets - if (ch == '{' || ch == '}') { - return 'bracket'; - } - // Match characters that we are going to assume - // are trying to be regex - if (ch == '/') { - stream.match(/.*?\//); - return 'variable-3'; - } - // Match all the numbers - if (ch.match(/[0-9]/)) { - stream.eatWhile(/[0-9]+/); - return 'number'; - } - // Match the '=' and '=>' operators - if (ch == '=') { - if (stream.peek() == '>') { - stream.next(); - } - return "operator"; - } - // Keep advancing through all the rest - stream.eatWhile(/[\w-]/); - // Return a blank line for everything else - return null; - } - // Start it all - return { - startState: function () { - var state = {}; - state.inDefinition = false; - state.inInclude = false; - state.continueString = false; - state.pending = false; - return state; - }, - token: function (stream, state) { - // Strip the spaces, but regex will account for them eitherway - if (stream.eatSpace()) return null; - // Go through the main process - return tokenize(stream, state); - } - }; -}); - -CodeMirror.defineMIME("text/x-puppet", "puppet"); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/python/index.html b/public/plugins/codemirror-5.17.0/mode/python/index.html deleted file mode 100644 index 6116a13b6..000000000 --- a/public/plugins/codemirror-5.17.0/mode/python/index.html +++ /dev/null @@ -1,198 +0,0 @@ - - -CodeMirror: Python mode - - - - - - - - - - -
    -

    Python mode

    - -
    - - -

    Cython mode

    - -
    - - -

    Configuration Options for Python mode:

    -
      -
    • version - 2/3 - The version of Python to recognize. Default is 2.
    • -
    • singleLineStringErrors - true/false - If you have a single-line string that is not terminated at the end of the line, this will show subsequent lines as errors if true, otherwise it will consider the newline as the end of the string. Default is false.
    • -
    • hangingIndent - int - If you want to write long arguments to a function starting on a new line, how much that line should be indented. Defaults to one normal indentation unit.
    • -
    -

    Advanced Configuration Options:

    -

    Usefull for superset of python syntax like Enthought enaml, IPython magics and questionmark help

    -
      -
    • singleOperators - RegEx - Regular Expression for single operator matching, default :
      ^[\\+\\-\\*/%&|\\^~<>!]
      including
      @
      on Python 3
    • -
    • singleDelimiters - RegEx - Regular Expression for single delimiter matching, default :
      ^[\\(\\)\\[\\]\\{\\}@,:`=;\\.]
    • -
    • doubleOperators - RegEx - Regular Expression for double operators matching, default :
      ^((==)|(!=)|(<=)|(>=)|(<>)|(<<)|(>>)|(//)|(\\*\\*))
    • -
    • doubleDelimiters - RegEx - Regular Expression for double delimiters matching, default :
      ^((\\+=)|(\\-=)|(\\*=)|(%=)|(/=)|(&=)|(\\|=)|(\\^=))
    • -
    • tripleDelimiters - RegEx - Regular Expression for triple delimiters matching, default :
      ^((//=)|(>>=)|(<<=)|(\\*\\*=))
    • -
    • identifiers - RegEx - Regular Expression for identifier, default :
      ^[_A-Za-z][_A-Za-z0-9]*
      on Python 2 and
      ^[_A-Za-z\u00A1-\uFFFF][_A-Za-z0-9\u00A1-\uFFFF]*
      on Python 3.
    • -
    • extra_keywords - list of string - List of extra words ton consider as keywords
    • -
    • extra_builtins - list of string - List of extra words ton consider as builtins
    • -
    - - -

    MIME types defined: text/x-python and text/x-cython.

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/python/python.js b/public/plugins/codemirror-5.17.0/mode/python/python.js deleted file mode 100644 index be65ad768..000000000 --- a/public/plugins/codemirror-5.17.0/mode/python/python.js +++ /dev/null @@ -1,340 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - function wordRegexp(words) { - return new RegExp("^((" + words.join(")|(") + "))\\b"); - } - - var wordOperators = wordRegexp(["and", "or", "not", "is"]); - var commonKeywords = ["as", "assert", "break", "class", "continue", - "def", "del", "elif", "else", "except", "finally", - "for", "from", "global", "if", "import", - "lambda", "pass", "raise", "return", - "try", "while", "with", "yield", "in"]; - var commonBuiltins = ["abs", "all", "any", "bin", "bool", "bytearray", "callable", "chr", - "classmethod", "compile", "complex", "delattr", "dict", "dir", "divmod", - "enumerate", "eval", "filter", "float", "format", "frozenset", - "getattr", "globals", "hasattr", "hash", "help", "hex", "id", - "input", "int", "isinstance", "issubclass", "iter", "len", - "list", "locals", "map", "max", "memoryview", "min", "next", - "object", "oct", "open", "ord", "pow", "property", "range", - "repr", "reversed", "round", "set", "setattr", "slice", - "sorted", "staticmethod", "str", "sum", "super", "tuple", - "type", "vars", "zip", "__import__", "NotImplemented", - "Ellipsis", "__debug__"]; - CodeMirror.registerHelper("hintWords", "python", commonKeywords.concat(commonBuiltins)); - - function top(state) { - return state.scopes[state.scopes.length - 1]; - } - - CodeMirror.defineMode("python", function(conf, parserConf) { - var ERRORCLASS = "error"; - - var singleDelimiters = parserConf.singleDelimiters || /^[\(\)\[\]\{\}@,:`=;\.]/; - var doubleOperators = parserConf.doubleOperators || /^([!<>]==|<>|<<|>>|\/\/|\*\*)/; - var doubleDelimiters = parserConf.doubleDelimiters || /^(\+=|\-=|\*=|%=|\/=|&=|\|=|\^=)/; - var tripleDelimiters = parserConf.tripleDelimiters || /^(\/\/=|>>=|<<=|\*\*=)/; - - var hangingIndent = parserConf.hangingIndent || conf.indentUnit; - - var myKeywords = commonKeywords, myBuiltins = commonBuiltins; - if (parserConf.extra_keywords != undefined) - myKeywords = myKeywords.concat(parserConf.extra_keywords); - - if (parserConf.extra_builtins != undefined) - myBuiltins = myBuiltins.concat(parserConf.extra_builtins); - - var py3 = parserConf.version && parseInt(parserConf.version, 10) == 3 - if (py3) { - // since http://legacy.python.org/dev/peps/pep-0465/ @ is also an operator - var singleOperators = parserConf.singleOperators || /^[\+\-\*\/%&|\^~<>!@]/; - var identifiers = parserConf.identifiers|| /^[_A-Za-z\u00A1-\uFFFF][_A-Za-z0-9\u00A1-\uFFFF]*/; - myKeywords = myKeywords.concat(["nonlocal", "False", "True", "None", "async", "await"]); - myBuiltins = myBuiltins.concat(["ascii", "bytes", "exec", "print"]); - var stringPrefixes = new RegExp("^(([rbuf]|(br))?('{3}|\"{3}|['\"]))", "i"); - } else { - var singleOperators = parserConf.singleOperators || /^[\+\-\*\/%&|\^~<>!]/; - var identifiers = parserConf.identifiers|| /^[_A-Za-z][_A-Za-z0-9]*/; - myKeywords = myKeywords.concat(["exec", "print"]); - myBuiltins = myBuiltins.concat(["apply", "basestring", "buffer", "cmp", "coerce", "execfile", - "file", "intern", "long", "raw_input", "reduce", "reload", - "unichr", "unicode", "xrange", "False", "True", "None"]); - var stringPrefixes = new RegExp("^(([rub]|(ur)|(br))?('{3}|\"{3}|['\"]))", "i"); - } - var keywords = wordRegexp(myKeywords); - var builtins = wordRegexp(myBuiltins); - - // tokenizers - function tokenBase(stream, state) { - if (stream.sol()) state.indent = stream.indentation() - // Handle scope changes - if (stream.sol() && top(state).type == "py") { - var scopeOffset = top(state).offset; - if (stream.eatSpace()) { - var lineOffset = stream.indentation(); - if (lineOffset > scopeOffset) - pushPyScope(state); - else if (lineOffset < scopeOffset && dedent(stream, state)) - state.errorToken = true; - return null; - } else { - var style = tokenBaseInner(stream, state); - if (scopeOffset > 0 && dedent(stream, state)) - style += " " + ERRORCLASS; - return style; - } - } - return tokenBaseInner(stream, state); - } - - function tokenBaseInner(stream, state) { - if (stream.eatSpace()) return null; - - var ch = stream.peek(); - - // Handle Comments - if (ch == "#") { - stream.skipToEnd(); - return "comment"; - } - - // Handle Number Literals - if (stream.match(/^[0-9\.]/, false)) { - var floatLiteral = false; - // Floats - if (stream.match(/^\d*\.\d+(e[\+\-]?\d+)?/i)) { floatLiteral = true; } - if (stream.match(/^\d+\.\d*/)) { floatLiteral = true; } - if (stream.match(/^\.\d+/)) { floatLiteral = true; } - if (floatLiteral) { - // Float literals may be "imaginary" - stream.eat(/J/i); - return "number"; - } - // Integers - var intLiteral = false; - // Hex - if (stream.match(/^0x[0-9a-f]+/i)) intLiteral = true; - // Binary - if (stream.match(/^0b[01]+/i)) intLiteral = true; - // Octal - if (stream.match(/^0o[0-7]+/i)) intLiteral = true; - // Decimal - if (stream.match(/^[1-9]\d*(e[\+\-]?\d+)?/)) { - // Decimal literals may be "imaginary" - stream.eat(/J/i); - // TODO - Can you have imaginary longs? - intLiteral = true; - } - // Zero by itself with no other piece of number. - if (stream.match(/^0(?![\dx])/i)) intLiteral = true; - if (intLiteral) { - // Integer literals may be "long" - stream.eat(/L/i); - return "number"; - } - } - - // Handle Strings - if (stream.match(stringPrefixes)) { - state.tokenize = tokenStringFactory(stream.current()); - return state.tokenize(stream, state); - } - - // Handle operators and Delimiters - if (stream.match(tripleDelimiters) || stream.match(doubleDelimiters)) - return "punctuation"; - - if (stream.match(doubleOperators) || stream.match(singleOperators)) - return "operator"; - - if (stream.match(singleDelimiters)) - return "punctuation"; - - if (state.lastToken == "." && stream.match(identifiers)) - return "property"; - - if (stream.match(keywords) || stream.match(wordOperators)) - return "keyword"; - - if (stream.match(builtins)) - return "builtin"; - - if (stream.match(/^(self|cls)\b/)) - return "variable-2"; - - if (stream.match(identifiers)) { - if (state.lastToken == "def" || state.lastToken == "class") - return "def"; - return "variable"; - } - - // Handle non-detected items - stream.next(); - return ERRORCLASS; - } - - function tokenStringFactory(delimiter) { - while ("rub".indexOf(delimiter.charAt(0).toLowerCase()) >= 0) - delimiter = delimiter.substr(1); - - var singleline = delimiter.length == 1; - var OUTCLASS = "string"; - - function tokenString(stream, state) { - while (!stream.eol()) { - stream.eatWhile(/[^'"\\]/); - if (stream.eat("\\")) { - stream.next(); - if (singleline && stream.eol()) - return OUTCLASS; - } else if (stream.match(delimiter)) { - state.tokenize = tokenBase; - return OUTCLASS; - } else { - stream.eat(/['"]/); - } - } - if (singleline) { - if (parserConf.singleLineStringErrors) - return ERRORCLASS; - else - state.tokenize = tokenBase; - } - return OUTCLASS; - } - tokenString.isString = true; - return tokenString; - } - - function pushPyScope(state) { - while (top(state).type != "py") state.scopes.pop() - state.scopes.push({offset: top(state).offset + conf.indentUnit, - type: "py", - align: null}) - } - - function pushBracketScope(stream, state, type) { - var align = stream.match(/^([\s\[\{\(]|#.*)*$/, false) ? null : stream.column() + 1 - state.scopes.push({offset: state.indent + hangingIndent, - type: type, - align: align}) - } - - function dedent(stream, state) { - var indented = stream.indentation(); - while (state.scopes.length > 1 && top(state).offset > indented) { - if (top(state).type != "py") return true; - state.scopes.pop(); - } - return top(state).offset != indented; - } - - function tokenLexer(stream, state) { - if (stream.sol()) state.beginningOfLine = true; - - var style = state.tokenize(stream, state); - var current = stream.current(); - - // Handle decorators - if (state.beginningOfLine && current == "@") - return stream.match(identifiers, false) ? "meta" : py3 ? "operator" : ERRORCLASS; - - if (/\S/.test(current)) state.beginningOfLine = false; - - if ((style == "variable" || style == "builtin") - && state.lastToken == "meta") - style = "meta"; - - // Handle scope changes. - if (current == "pass" || current == "return") - state.dedent += 1; - - if (current == "lambda") state.lambda = true; - if (current == ":" && !state.lambda && top(state).type == "py") - pushPyScope(state); - - var delimiter_index = current.length == 1 ? "[({".indexOf(current) : -1; - if (delimiter_index != -1) - pushBracketScope(stream, state, "])}".slice(delimiter_index, delimiter_index+1)); - - delimiter_index = "])}".indexOf(current); - if (delimiter_index != -1) { - if (top(state).type == current) state.indent = state.scopes.pop().offset - hangingIndent - else return ERRORCLASS; - } - if (state.dedent > 0 && stream.eol() && top(state).type == "py") { - if (state.scopes.length > 1) state.scopes.pop(); - state.dedent -= 1; - } - - return style; - } - - var external = { - startState: function(basecolumn) { - return { - tokenize: tokenBase, - scopes: [{offset: basecolumn || 0, type: "py", align: null}], - indent: basecolumn || 0, - lastToken: null, - lambda: false, - dedent: 0 - }; - }, - - token: function(stream, state) { - var addErr = state.errorToken; - if (addErr) state.errorToken = false; - var style = tokenLexer(stream, state); - - if (style && style != "comment") - state.lastToken = (style == "keyword" || style == "punctuation") ? stream.current() : style; - if (style == "punctuation") style = null; - - if (stream.eol() && state.lambda) - state.lambda = false; - return addErr ? style + " " + ERRORCLASS : style; - }, - - indent: function(state, textAfter) { - if (state.tokenize != tokenBase) - return state.tokenize.isString ? CodeMirror.Pass : 0; - - var scope = top(state), closing = scope.type == textAfter.charAt(0) - if (scope.align != null) - return scope.align - (closing ? 1 : 0) - else - return scope.offset - (closing ? hangingIndent : 0) - }, - - electricInput: /^\s*[\}\]\)]$/, - closeBrackets: {triples: "'\""}, - lineComment: "#", - fold: "indent" - }; - return external; - }); - - CodeMirror.defineMIME("text/x-python", "python"); - - var words = function(str) { return str.split(" "); }; - - CodeMirror.defineMIME("text/x-cython", { - name: "python", - extra_keywords: words("by cdef cimport cpdef ctypedef enum except"+ - "extern gil include nogil property public"+ - "readonly struct union DEF IF ELIF ELSE") - }); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/python/test.js b/public/plugins/codemirror-5.17.0/mode/python/test.js deleted file mode 100644 index c1a9c6a99..000000000 --- a/public/plugins/codemirror-5.17.0/mode/python/test.js +++ /dev/null @@ -1,30 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function() { - var mode = CodeMirror.getMode({indentUnit: 4}, - {name: "python", - version: 3, - singleLineStringErrors: false}); - function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } - - // Error, because "foobarhello" is neither a known type or property, but - // property was expected (after "and"), and it should be in parentheses. - MT("decoratorStartOfLine", - "[meta @dec]", - "[keyword def] [def function]():", - " [keyword pass]"); - - MT("decoratorIndented", - "[keyword class] [def Foo]:", - " [meta @dec]", - " [keyword def] [def function]():", - " [keyword pass]"); - - MT("matmulWithSpace:", "[variable a] [operator @] [variable b]"); - MT("matmulWithoutSpace:", "[variable a][operator @][variable b]"); - MT("matmulSpaceBefore:", "[variable a] [operator @][variable b]"); - - MT("fValidStringPrefix", "[string f'this is a {formatted} string']"); - MT("uValidStringPrefix", "[string u'this is an unicode string']"); -})(); diff --git a/public/plugins/codemirror-5.17.0/mode/q/index.html b/public/plugins/codemirror-5.17.0/mode/q/index.html deleted file mode 100644 index 72785ba3b..000000000 --- a/public/plugins/codemirror-5.17.0/mode/q/index.html +++ /dev/null @@ -1,144 +0,0 @@ - - -CodeMirror: Q mode - - - - - - - - - - -
    -

    Q mode

    - - -
    - - - -

    MIME type defined: text/x-q.

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/q/q.js b/public/plugins/codemirror-5.17.0/mode/q/q.js deleted file mode 100644 index a4af9383e..000000000 --- a/public/plugins/codemirror-5.17.0/mode/q/q.js +++ /dev/null @@ -1,139 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("q",function(config){ - var indentUnit=config.indentUnit, - curPunc, - keywords=buildRE(["abs","acos","aj","aj0","all","and","any","asc","asin","asof","atan","attr","avg","avgs","bin","by","ceiling","cols","cor","cos","count","cov","cross","csv","cut","delete","deltas","desc","dev","differ","distinct","div","do","each","ej","enlist","eval","except","exec","exit","exp","fby","fills","first","fkeys","flip","floor","from","get","getenv","group","gtime","hclose","hcount","hdel","hopen","hsym","iasc","idesc","if","ij","in","insert","inter","inv","key","keys","last","like","list","lj","load","log","lower","lsq","ltime","ltrim","mavg","max","maxs","mcount","md5","mdev","med","meta","min","mins","mmax","mmin","mmu","mod","msum","neg","next","not","null","or","over","parse","peach","pj","plist","prd","prds","prev","prior","rand","rank","ratios","raze","read0","read1","reciprocal","reverse","rload","rotate","rsave","rtrim","save","scan","select","set","setenv","show","signum","sin","sqrt","ss","ssr","string","sublist","sum","sums","sv","system","tables","tan","til","trim","txf","type","uj","ungroup","union","update","upper","upsert","value","var","view","views","vs","wavg","where","where","while","within","wj","wj1","wsum","xasc","xbar","xcol","xcols","xdesc","xexp","xgroup","xkey","xlog","xprev","xrank"]), - E=/[|/&^!+:\\\-*%$=~#;@><,?_\'\"\[\(\]\)\s{}]/; - function buildRE(w){return new RegExp("^("+w.join("|")+")$");} - function tokenBase(stream,state){ - var sol=stream.sol(),c=stream.next(); - curPunc=null; - if(sol) - if(c=="/") - return(state.tokenize=tokenLineComment)(stream,state); - else if(c=="\\"){ - if(stream.eol()||/\s/.test(stream.peek())) - return stream.skipToEnd(),/^\\\s*$/.test(stream.current())?(state.tokenize=tokenCommentToEOF)(stream, state):state.tokenize=tokenBase,"comment"; - else - return state.tokenize=tokenBase,"builtin"; - } - if(/\s/.test(c)) - return stream.peek()=="/"?(stream.skipToEnd(),"comment"):"whitespace"; - if(c=='"') - return(state.tokenize=tokenString)(stream,state); - if(c=='`') - return stream.eatWhile(/[A-Z|a-z|\d|_|:|\/|\.]/),"symbol"; - if(("."==c&&/\d/.test(stream.peek()))||/\d/.test(c)){ - var t=null; - stream.backUp(1); - if(stream.match(/^\d{4}\.\d{2}(m|\.\d{2}([D|T](\d{2}(:\d{2}(:\d{2}(\.\d{1,9})?)?)?)?)?)/) - || stream.match(/^\d+D(\d{2}(:\d{2}(:\d{2}(\.\d{1,9})?)?)?)/) - || stream.match(/^\d{2}:\d{2}(:\d{2}(\.\d{1,9})?)?/) - || stream.match(/^\d+[ptuv]{1}/)) - t="temporal"; - else if(stream.match(/^0[NwW]{1}/) - || stream.match(/^0x[\d|a-f|A-F]*/) - || stream.match(/^[0|1]+[b]{1}/) - || stream.match(/^\d+[chijn]{1}/) - || stream.match(/-?\d*(\.\d*)?(e[+\-]?\d+)?(e|f)?/)) - t="number"; - return(t&&(!(c=stream.peek())||E.test(c)))?t:(stream.next(),"error"); - } - if(/[A-Z|a-z]|\./.test(c)) - return stream.eatWhile(/[A-Z|a-z|\.|_|\d]/),keywords.test(stream.current())?"keyword":"variable"; - if(/[|/&^!+:\\\-*%$=~#;@><\.,?_\']/.test(c)) - return null; - if(/[{}\(\[\]\)]/.test(c)) - return null; - return"error"; - } - function tokenLineComment(stream,state){ - return stream.skipToEnd(),/\/\s*$/.test(stream.current())?(state.tokenize=tokenBlockComment)(stream,state):(state.tokenize=tokenBase),"comment"; - } - function tokenBlockComment(stream,state){ - var f=stream.sol()&&stream.peek()=="\\"; - stream.skipToEnd(); - if(f&&/^\\\s*$/.test(stream.current())) - state.tokenize=tokenBase; - return"comment"; - } - function tokenCommentToEOF(stream){return stream.skipToEnd(),"comment";} - function tokenString(stream,state){ - var escaped=false,next,end=false; - while((next=stream.next())){ - if(next=="\""&&!escaped){end=true;break;} - escaped=!escaped&&next=="\\"; - } - if(end)state.tokenize=tokenBase; - return"string"; - } - function pushContext(state,type,col){state.context={prev:state.context,indent:state.indent,col:col,type:type};} - function popContext(state){state.indent=state.context.indent;state.context=state.context.prev;} - return{ - startState:function(){ - return{tokenize:tokenBase, - context:null, - indent:0, - col:0}; - }, - token:function(stream,state){ - if(stream.sol()){ - if(state.context&&state.context.align==null) - state.context.align=false; - state.indent=stream.indentation(); - } - //if (stream.eatSpace()) return null; - var style=state.tokenize(stream,state); - if(style!="comment"&&state.context&&state.context.align==null&&state.context.type!="pattern"){ - state.context.align=true; - } - if(curPunc=="(")pushContext(state,")",stream.column()); - else if(curPunc=="[")pushContext(state,"]",stream.column()); - else if(curPunc=="{")pushContext(state,"}",stream.column()); - else if(/[\]\}\)]/.test(curPunc)){ - while(state.context&&state.context.type=="pattern")popContext(state); - if(state.context&&curPunc==state.context.type)popContext(state); - } - else if(curPunc=="."&&state.context&&state.context.type=="pattern")popContext(state); - else if(/atom|string|variable/.test(style)&&state.context){ - if(/[\}\]]/.test(state.context.type)) - pushContext(state,"pattern",stream.column()); - else if(state.context.type=="pattern"&&!state.context.align){ - state.context.align=true; - state.context.col=stream.column(); - } - } - return style; - }, - indent:function(state,textAfter){ - var firstChar=textAfter&&textAfter.charAt(0); - var context=state.context; - if(/[\]\}]/.test(firstChar)) - while (context&&context.type=="pattern")context=context.prev; - var closing=context&&firstChar==context.type; - if(!context) - return 0; - else if(context.type=="pattern") - return context.col; - else if(context.align) - return context.col+(closing?0:1); - else - return context.indent+(closing?0:indentUnit); - } - }; -}); -CodeMirror.defineMIME("text/x-q","q"); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/r/index.html b/public/plugins/codemirror-5.17.0/mode/r/index.html deleted file mode 100644 index 6dd963465..000000000 --- a/public/plugins/codemirror-5.17.0/mode/r/index.html +++ /dev/null @@ -1,85 +0,0 @@ - - -CodeMirror: R mode - - - - - - - - - -
    -

    R mode

    -
    - - -

    MIME types defined: text/x-rsrc.

    - -

    Development of the CodeMirror R mode was kindly sponsored - by Ubalo.

    - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/r/r.js b/public/plugins/codemirror-5.17.0/mode/r/r.js deleted file mode 100644 index d41d1c54c..000000000 --- a/public/plugins/codemirror-5.17.0/mode/r/r.js +++ /dev/null @@ -1,164 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.registerHelper("wordChars", "r", /[\w.]/); - -CodeMirror.defineMode("r", function(config) { - function wordObj(str) { - var words = str.split(" "), res = {}; - for (var i = 0; i < words.length; ++i) res[words[i]] = true; - return res; - } - var atoms = wordObj("NULL NA Inf NaN NA_integer_ NA_real_ NA_complex_ NA_character_"); - var builtins = wordObj("list quote bquote eval return call parse deparse"); - var keywords = wordObj("if else repeat while function for in next break"); - var blockkeywords = wordObj("if else repeat while function for"); - var opChars = /[+\-*\/^<>=!&|~$:]/; - var curPunc; - - function tokenBase(stream, state) { - curPunc = null; - var ch = stream.next(); - if (ch == "#") { - stream.skipToEnd(); - return "comment"; - } else if (ch == "0" && stream.eat("x")) { - stream.eatWhile(/[\da-f]/i); - return "number"; - } else if (ch == "." && stream.eat(/\d/)) { - stream.match(/\d*(?:e[+\-]?\d+)?/); - return "number"; - } else if (/\d/.test(ch)) { - stream.match(/\d*(?:\.\d+)?(?:e[+\-]\d+)?L?/); - return "number"; - } else if (ch == "'" || ch == '"') { - state.tokenize = tokenString(ch); - return "string"; - } else if (ch == "." && stream.match(/.[.\d]+/)) { - return "keyword"; - } else if (/[\w\.]/.test(ch) && ch != "_") { - stream.eatWhile(/[\w\.]/); - var word = stream.current(); - if (atoms.propertyIsEnumerable(word)) return "atom"; - if (keywords.propertyIsEnumerable(word)) { - // Block keywords start new blocks, except 'else if', which only starts - // one new block for the 'if', no block for the 'else'. - if (blockkeywords.propertyIsEnumerable(word) && - !stream.match(/\s*if(\s+|$)/, false)) - curPunc = "block"; - return "keyword"; - } - if (builtins.propertyIsEnumerable(word)) return "builtin"; - return "variable"; - } else if (ch == "%") { - if (stream.skipTo("%")) stream.next(); - return "variable-2"; - } else if (ch == "<" && stream.eat("-")) { - return "arrow"; - } else if (ch == "=" && state.ctx.argList) { - return "arg-is"; - } else if (opChars.test(ch)) { - if (ch == "$") return "dollar"; - stream.eatWhile(opChars); - return "operator"; - } else if (/[\(\){}\[\];]/.test(ch)) { - curPunc = ch; - if (ch == ";") return "semi"; - return null; - } else { - return null; - } - } - - function tokenString(quote) { - return function(stream, state) { - if (stream.eat("\\")) { - var ch = stream.next(); - if (ch == "x") stream.match(/^[a-f0-9]{2}/i); - else if ((ch == "u" || ch == "U") && stream.eat("{") && stream.skipTo("}")) stream.next(); - else if (ch == "u") stream.match(/^[a-f0-9]{4}/i); - else if (ch == "U") stream.match(/^[a-f0-9]{8}/i); - else if (/[0-7]/.test(ch)) stream.match(/^[0-7]{1,2}/); - return "string-2"; - } else { - var next; - while ((next = stream.next()) != null) { - if (next == quote) { state.tokenize = tokenBase; break; } - if (next == "\\") { stream.backUp(1); break; } - } - return "string"; - } - }; - } - - function push(state, type, stream) { - state.ctx = {type: type, - indent: state.indent, - align: null, - column: stream.column(), - prev: state.ctx}; - } - function pop(state) { - state.indent = state.ctx.indent; - state.ctx = state.ctx.prev; - } - - return { - startState: function() { - return {tokenize: tokenBase, - ctx: {type: "top", - indent: -config.indentUnit, - align: false}, - indent: 0, - afterIdent: false}; - }, - - token: function(stream, state) { - if (stream.sol()) { - if (state.ctx.align == null) state.ctx.align = false; - state.indent = stream.indentation(); - } - if (stream.eatSpace()) return null; - var style = state.tokenize(stream, state); - if (style != "comment" && state.ctx.align == null) state.ctx.align = true; - - var ctype = state.ctx.type; - if ((curPunc == ";" || curPunc == "{" || curPunc == "}") && ctype == "block") pop(state); - if (curPunc == "{") push(state, "}", stream); - else if (curPunc == "(") { - push(state, ")", stream); - if (state.afterIdent) state.ctx.argList = true; - } - else if (curPunc == "[") push(state, "]", stream); - else if (curPunc == "block") push(state, "block", stream); - else if (curPunc == ctype) pop(state); - state.afterIdent = style == "variable" || style == "keyword"; - return style; - }, - - indent: function(state, textAfter) { - if (state.tokenize != tokenBase) return 0; - var firstChar = textAfter && textAfter.charAt(0), ctx = state.ctx, - closing = firstChar == ctx.type; - if (ctx.type == "block") return ctx.indent + (firstChar == "{" ? 0 : config.indentUnit); - else if (ctx.align) return ctx.column + (closing ? 0 : 1); - else return ctx.indent + (closing ? 0 : config.indentUnit); - }, - - lineComment: "#" - }; -}); - -CodeMirror.defineMIME("text/x-rsrc", "r"); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/rpm/changes/index.html b/public/plugins/codemirror-5.17.0/mode/rpm/changes/index.html deleted file mode 100644 index 6e5031bd1..000000000 --- a/public/plugins/codemirror-5.17.0/mode/rpm/changes/index.html +++ /dev/null @@ -1,66 +0,0 @@ - - -CodeMirror: RPM changes mode - - - - - - - - - - - -
    -

    RPM changes mode

    - -
    - - -

    MIME types defined: text/x-rpm-changes.

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/rpm/index.html b/public/plugins/codemirror-5.17.0/mode/rpm/index.html deleted file mode 100644 index 9a34e6dfb..000000000 --- a/public/plugins/codemirror-5.17.0/mode/rpm/index.html +++ /dev/null @@ -1,149 +0,0 @@ - - -CodeMirror: RPM changes mode - - - - - - - - - - - -
    -

    RPM changes mode

    - -
    - - -

    RPM spec mode

    - -
    - - -

    MIME types defined: text/x-rpm-spec, text/x-rpm-changes.

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/rpm/rpm.js b/public/plugins/codemirror-5.17.0/mode/rpm/rpm.js deleted file mode 100644 index 87cde591a..000000000 --- a/public/plugins/codemirror-5.17.0/mode/rpm/rpm.js +++ /dev/null @@ -1,109 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("rpm-changes", function() { - var headerSeperator = /^-+$/; - var headerLine = /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ?\d{1,2} \d{2}:\d{2}(:\d{2})? [A-Z]{3,4} \d{4} - /; - var simpleEmail = /^[\w+.-]+@[\w.-]+/; - - return { - token: function(stream) { - if (stream.sol()) { - if (stream.match(headerSeperator)) { return 'tag'; } - if (stream.match(headerLine)) { return 'tag'; } - } - if (stream.match(simpleEmail)) { return 'string'; } - stream.next(); - return null; - } - }; -}); - -CodeMirror.defineMIME("text/x-rpm-changes", "rpm-changes"); - -// Quick and dirty spec file highlighting - -CodeMirror.defineMode("rpm-spec", function() { - var arch = /^(i386|i586|i686|x86_64|ppc64le|ppc64|ppc|ia64|s390x|s390|sparc64|sparcv9|sparc|noarch|alphaev6|alpha|hppa|mipsel)/; - - var preamble = /^[a-zA-Z0-9()]+:/; - var section = /^%(debug_package|package|description|prep|build|install|files|clean|changelog|preinstall|preun|postinstall|postun|pretrans|posttrans|pre|post|triggerin|triggerun|verifyscript|check|triggerpostun|triggerprein|trigger)/; - var control_flow_complex = /^%(ifnarch|ifarch|if)/; // rpm control flow macros - var control_flow_simple = /^%(else|endif)/; // rpm control flow macros - var operators = /^(\!|\?|\<\=|\<|\>\=|\>|\=\=|\&\&|\|\|)/; // operators in control flow macros - - return { - startState: function () { - return { - controlFlow: false, - macroParameters: false, - section: false - }; - }, - token: function (stream, state) { - var ch = stream.peek(); - if (ch == "#") { stream.skipToEnd(); return "comment"; } - - if (stream.sol()) { - if (stream.match(preamble)) { return "header"; } - if (stream.match(section)) { return "atom"; } - } - - if (stream.match(/^\$\w+/)) { return "def"; } // Variables like '$RPM_BUILD_ROOT' - if (stream.match(/^\$\{\w+\}/)) { return "def"; } // Variables like '${RPM_BUILD_ROOT}' - - if (stream.match(control_flow_simple)) { return "keyword"; } - if (stream.match(control_flow_complex)) { - state.controlFlow = true; - return "keyword"; - } - if (state.controlFlow) { - if (stream.match(operators)) { return "operator"; } - if (stream.match(/^(\d+)/)) { return "number"; } - if (stream.eol()) { state.controlFlow = false; } - } - - if (stream.match(arch)) { - if (stream.eol()) { state.controlFlow = false; } - return "number"; - } - - // Macros like '%make_install' or '%attr(0775,root,root)' - if (stream.match(/^%[\w]+/)) { - if (stream.match(/^\(/)) { state.macroParameters = true; } - return "keyword"; - } - if (state.macroParameters) { - if (stream.match(/^\d+/)) { return "number";} - if (stream.match(/^\)/)) { - state.macroParameters = false; - return "keyword"; - } - } - - // Macros like '%{defined fedora}' - if (stream.match(/^%\{\??[\w \-\:\!]+\}/)) { - if (stream.eol()) { state.controlFlow = false; } - return "def"; - } - - //TODO: Include bash script sub-parser (CodeMirror supports that) - stream.next(); - return null; - } - }; -}); - -CodeMirror.defineMIME("text/x-rpm-spec", "rpm-spec"); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/rst/index.html b/public/plugins/codemirror-5.17.0/mode/rst/index.html deleted file mode 100644 index 2902dea23..000000000 --- a/public/plugins/codemirror-5.17.0/mode/rst/index.html +++ /dev/null @@ -1,535 +0,0 @@ - - -CodeMirror: reStructuredText mode - - - - - - - - - - -
    -

    reStructuredText mode

    -
    - - -

    - The python mode will be used for highlighting blocks - containing Python/IPython terminal sessions: blocks starting with - >>> (for Python) or In [num]: (for - IPython). - - Further, the stex mode will be used for highlighting - blocks containing LaTex code. -

    - -

    MIME types defined: text/x-rst.

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/rst/rst.js b/public/plugins/codemirror-5.17.0/mode/rst/rst.js deleted file mode 100644 index bcf110c1a..000000000 --- a/public/plugins/codemirror-5.17.0/mode/rst/rst.js +++ /dev/null @@ -1,557 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror"), require("../python/python"), require("../stex/stex"), require("../../addon/mode/overlay")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../python/python", "../stex/stex", "../../addon/mode/overlay"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode('rst', function (config, options) { - - var rx_strong = /^\*\*[^\*\s](?:[^\*]*[^\*\s])?\*\*/; - var rx_emphasis = /^\*[^\*\s](?:[^\*]*[^\*\s])?\*/; - var rx_literal = /^``[^`\s](?:[^`]*[^`\s])``/; - - var rx_number = /^(?:[\d]+(?:[\.,]\d+)*)/; - var rx_positive = /^(?:\s\+[\d]+(?:[\.,]\d+)*)/; - var rx_negative = /^(?:\s\-[\d]+(?:[\.,]\d+)*)/; - - var rx_uri_protocol = "[Hh][Tt][Tt][Pp][Ss]?://"; - var rx_uri_domain = "(?:[\\d\\w.-]+)\\.(?:\\w{2,6})"; - var rx_uri_path = "(?:/[\\d\\w\\#\\%\\&\\-\\.\\,\\/\\:\\=\\?\\~]+)*"; - var rx_uri = new RegExp("^" + rx_uri_protocol + rx_uri_domain + rx_uri_path); - - var overlay = { - token: function (stream) { - - if (stream.match(rx_strong) && stream.match (/\W+|$/, false)) - return 'strong'; - if (stream.match(rx_emphasis) && stream.match (/\W+|$/, false)) - return 'em'; - if (stream.match(rx_literal) && stream.match (/\W+|$/, false)) - return 'string-2'; - if (stream.match(rx_number)) - return 'number'; - if (stream.match(rx_positive)) - return 'positive'; - if (stream.match(rx_negative)) - return 'negative'; - if (stream.match(rx_uri)) - return 'link'; - - while (stream.next() != null) { - if (stream.match(rx_strong, false)) break; - if (stream.match(rx_emphasis, false)) break; - if (stream.match(rx_literal, false)) break; - if (stream.match(rx_number, false)) break; - if (stream.match(rx_positive, false)) break; - if (stream.match(rx_negative, false)) break; - if (stream.match(rx_uri, false)) break; - } - - return null; - } - }; - - var mode = CodeMirror.getMode( - config, options.backdrop || 'rst-base' - ); - - return CodeMirror.overlayMode(mode, overlay, true); // combine -}, 'python', 'stex'); - -/////////////////////////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////////// - -CodeMirror.defineMode('rst-base', function (config) { - - /////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////////////////// - - function format(string) { - var args = Array.prototype.slice.call(arguments, 1); - return string.replace(/{(\d+)}/g, function (match, n) { - return typeof args[n] != 'undefined' ? args[n] : match; - }); - } - - /////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////////////////// - - var mode_python = CodeMirror.getMode(config, 'python'); - var mode_stex = CodeMirror.getMode(config, 'stex'); - - /////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////////////////// - - var SEPA = "\\s+"; - var TAIL = "(?:\\s*|\\W|$)", - rx_TAIL = new RegExp(format('^{0}', TAIL)); - - var NAME = - "(?:[^\\W\\d_](?:[\\w!\"#$%&'()\\*\\+,\\-\\.\/:;<=>\\?]*[^\\W_])?)", - rx_NAME = new RegExp(format('^{0}', NAME)); - var NAME_WWS = - "(?:[^\\W\\d_](?:[\\w\\s!\"#$%&'()\\*\\+,\\-\\.\/:;<=>\\?]*[^\\W_])?)"; - var REF_NAME = format('(?:{0}|`{1}`)', NAME, NAME_WWS); - - var TEXT1 = "(?:[^\\s\\|](?:[^\\|]*[^\\s\\|])?)"; - var TEXT2 = "(?:[^\\`]+)", - rx_TEXT2 = new RegExp(format('^{0}', TEXT2)); - - var rx_section = new RegExp( - "^([!'#$%&\"()*+,-./:;<=>?@\\[\\\\\\]^_`{|}~])\\1{3,}\\s*$"); - var rx_explicit = new RegExp( - format('^\\.\\.{0}', SEPA)); - var rx_link = new RegExp( - format('^_{0}:{1}|^__:{1}', REF_NAME, TAIL)); - var rx_directive = new RegExp( - format('^{0}::{1}', REF_NAME, TAIL)); - var rx_substitution = new RegExp( - format('^\\|{0}\\|{1}{2}::{3}', TEXT1, SEPA, REF_NAME, TAIL)); - var rx_footnote = new RegExp( - format('^\\[(?:\\d+|#{0}?|\\*)]{1}', REF_NAME, TAIL)); - var rx_citation = new RegExp( - format('^\\[{0}\\]{1}', REF_NAME, TAIL)); - - var rx_substitution_ref = new RegExp( - format('^\\|{0}\\|', TEXT1)); - var rx_footnote_ref = new RegExp( - format('^\\[(?:\\d+|#{0}?|\\*)]_', REF_NAME)); - var rx_citation_ref = new RegExp( - format('^\\[{0}\\]_', REF_NAME)); - var rx_link_ref1 = new RegExp( - format('^{0}__?', REF_NAME)); - var rx_link_ref2 = new RegExp( - format('^`{0}`_', TEXT2)); - - var rx_role_pre = new RegExp( - format('^:{0}:`{1}`{2}', NAME, TEXT2, TAIL)); - var rx_role_suf = new RegExp( - format('^`{1}`:{0}:{2}', NAME, TEXT2, TAIL)); - var rx_role = new RegExp( - format('^:{0}:{1}', NAME, TAIL)); - - var rx_directive_name = new RegExp(format('^{0}', REF_NAME)); - var rx_directive_tail = new RegExp(format('^::{0}', TAIL)); - var rx_substitution_text = new RegExp(format('^\\|{0}\\|', TEXT1)); - var rx_substitution_sepa = new RegExp(format('^{0}', SEPA)); - var rx_substitution_name = new RegExp(format('^{0}', REF_NAME)); - var rx_substitution_tail = new RegExp(format('^::{0}', TAIL)); - var rx_link_head = new RegExp("^_"); - var rx_link_name = new RegExp(format('^{0}|_', REF_NAME)); - var rx_link_tail = new RegExp(format('^:{0}', TAIL)); - - var rx_verbatim = new RegExp('^::\\s*$'); - var rx_examples = new RegExp('^\\s+(?:>>>|In \\[\\d+\\]:)\\s'); - - /////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////////////////// - - function to_normal(stream, state) { - var token = null; - - if (stream.sol() && stream.match(rx_examples, false)) { - change(state, to_mode, { - mode: mode_python, local: CodeMirror.startState(mode_python) - }); - } else if (stream.sol() && stream.match(rx_explicit)) { - change(state, to_explicit); - token = 'meta'; - } else if (stream.sol() && stream.match(rx_section)) { - change(state, to_normal); - token = 'header'; - } else if (phase(state) == rx_role_pre || - stream.match(rx_role_pre, false)) { - - switch (stage(state)) { - case 0: - change(state, to_normal, context(rx_role_pre, 1)); - stream.match(/^:/); - token = 'meta'; - break; - case 1: - change(state, to_normal, context(rx_role_pre, 2)); - stream.match(rx_NAME); - token = 'keyword'; - - if (stream.current().match(/^(?:math|latex)/)) { - state.tmp_stex = true; - } - break; - case 2: - change(state, to_normal, context(rx_role_pre, 3)); - stream.match(/^:`/); - token = 'meta'; - break; - case 3: - if (state.tmp_stex) { - state.tmp_stex = undefined; state.tmp = { - mode: mode_stex, local: CodeMirror.startState(mode_stex) - }; - } - - if (state.tmp) { - if (stream.peek() == '`') { - change(state, to_normal, context(rx_role_pre, 4)); - state.tmp = undefined; - break; - } - - token = state.tmp.mode.token(stream, state.tmp.local); - break; - } - - change(state, to_normal, context(rx_role_pre, 4)); - stream.match(rx_TEXT2); - token = 'string'; - break; - case 4: - change(state, to_normal, context(rx_role_pre, 5)); - stream.match(/^`/); - token = 'meta'; - break; - case 5: - change(state, to_normal, context(rx_role_pre, 6)); - stream.match(rx_TAIL); - break; - default: - change(state, to_normal); - } - } else if (phase(state) == rx_role_suf || - stream.match(rx_role_suf, false)) { - - switch (stage(state)) { - case 0: - change(state, to_normal, context(rx_role_suf, 1)); - stream.match(/^`/); - token = 'meta'; - break; - case 1: - change(state, to_normal, context(rx_role_suf, 2)); - stream.match(rx_TEXT2); - token = 'string'; - break; - case 2: - change(state, to_normal, context(rx_role_suf, 3)); - stream.match(/^`:/); - token = 'meta'; - break; - case 3: - change(state, to_normal, context(rx_role_suf, 4)); - stream.match(rx_NAME); - token = 'keyword'; - break; - case 4: - change(state, to_normal, context(rx_role_suf, 5)); - stream.match(/^:/); - token = 'meta'; - break; - case 5: - change(state, to_normal, context(rx_role_suf, 6)); - stream.match(rx_TAIL); - break; - default: - change(state, to_normal); - } - } else if (phase(state) == rx_role || stream.match(rx_role, false)) { - - switch (stage(state)) { - case 0: - change(state, to_normal, context(rx_role, 1)); - stream.match(/^:/); - token = 'meta'; - break; - case 1: - change(state, to_normal, context(rx_role, 2)); - stream.match(rx_NAME); - token = 'keyword'; - break; - case 2: - change(state, to_normal, context(rx_role, 3)); - stream.match(/^:/); - token = 'meta'; - break; - case 3: - change(state, to_normal, context(rx_role, 4)); - stream.match(rx_TAIL); - break; - default: - change(state, to_normal); - } - } else if (phase(state) == rx_substitution_ref || - stream.match(rx_substitution_ref, false)) { - - switch (stage(state)) { - case 0: - change(state, to_normal, context(rx_substitution_ref, 1)); - stream.match(rx_substitution_text); - token = 'variable-2'; - break; - case 1: - change(state, to_normal, context(rx_substitution_ref, 2)); - if (stream.match(/^_?_?/)) token = 'link'; - break; - default: - change(state, to_normal); - } - } else if (stream.match(rx_footnote_ref)) { - change(state, to_normal); - token = 'quote'; - } else if (stream.match(rx_citation_ref)) { - change(state, to_normal); - token = 'quote'; - } else if (stream.match(rx_link_ref1)) { - change(state, to_normal); - if (!stream.peek() || stream.peek().match(/^\W$/)) { - token = 'link'; - } - } else if (phase(state) == rx_link_ref2 || - stream.match(rx_link_ref2, false)) { - - switch (stage(state)) { - case 0: - if (!stream.peek() || stream.peek().match(/^\W$/)) { - change(state, to_normal, context(rx_link_ref2, 1)); - } else { - stream.match(rx_link_ref2); - } - break; - case 1: - change(state, to_normal, context(rx_link_ref2, 2)); - stream.match(/^`/); - token = 'link'; - break; - case 2: - change(state, to_normal, context(rx_link_ref2, 3)); - stream.match(rx_TEXT2); - break; - case 3: - change(state, to_normal, context(rx_link_ref2, 4)); - stream.match(/^`_/); - token = 'link'; - break; - default: - change(state, to_normal); - } - } else if (stream.match(rx_verbatim)) { - change(state, to_verbatim); - } - - else { - if (stream.next()) change(state, to_normal); - } - - return token; - } - - /////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////////////////// - - function to_explicit(stream, state) { - var token = null; - - if (phase(state) == rx_substitution || - stream.match(rx_substitution, false)) { - - switch (stage(state)) { - case 0: - change(state, to_explicit, context(rx_substitution, 1)); - stream.match(rx_substitution_text); - token = 'variable-2'; - break; - case 1: - change(state, to_explicit, context(rx_substitution, 2)); - stream.match(rx_substitution_sepa); - break; - case 2: - change(state, to_explicit, context(rx_substitution, 3)); - stream.match(rx_substitution_name); - token = 'keyword'; - break; - case 3: - change(state, to_explicit, context(rx_substitution, 4)); - stream.match(rx_substitution_tail); - token = 'meta'; - break; - default: - change(state, to_normal); - } - } else if (phase(state) == rx_directive || - stream.match(rx_directive, false)) { - - switch (stage(state)) { - case 0: - change(state, to_explicit, context(rx_directive, 1)); - stream.match(rx_directive_name); - token = 'keyword'; - - if (stream.current().match(/^(?:math|latex)/)) - state.tmp_stex = true; - else if (stream.current().match(/^python/)) - state.tmp_py = true; - break; - case 1: - change(state, to_explicit, context(rx_directive, 2)); - stream.match(rx_directive_tail); - token = 'meta'; - - if (stream.match(/^latex\s*$/) || state.tmp_stex) { - state.tmp_stex = undefined; change(state, to_mode, { - mode: mode_stex, local: CodeMirror.startState(mode_stex) - }); - } - break; - case 2: - change(state, to_explicit, context(rx_directive, 3)); - if (stream.match(/^python\s*$/) || state.tmp_py) { - state.tmp_py = undefined; change(state, to_mode, { - mode: mode_python, local: CodeMirror.startState(mode_python) - }); - } - break; - default: - change(state, to_normal); - } - } else if (phase(state) == rx_link || stream.match(rx_link, false)) { - - switch (stage(state)) { - case 0: - change(state, to_explicit, context(rx_link, 1)); - stream.match(rx_link_head); - stream.match(rx_link_name); - token = 'link'; - break; - case 1: - change(state, to_explicit, context(rx_link, 2)); - stream.match(rx_link_tail); - token = 'meta'; - break; - default: - change(state, to_normal); - } - } else if (stream.match(rx_footnote)) { - change(state, to_normal); - token = 'quote'; - } else if (stream.match(rx_citation)) { - change(state, to_normal); - token = 'quote'; - } - - else { - stream.eatSpace(); - if (stream.eol()) { - change(state, to_normal); - } else { - stream.skipToEnd(); - change(state, to_comment); - token = 'comment'; - } - } - - return token; - } - - /////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////////////////// - - function to_comment(stream, state) { - return as_block(stream, state, 'comment'); - } - - function to_verbatim(stream, state) { - return as_block(stream, state, 'meta'); - } - - function as_block(stream, state, token) { - if (stream.eol() || stream.eatSpace()) { - stream.skipToEnd(); - return token; - } else { - change(state, to_normal); - return null; - } - } - - /////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////////////////// - - function to_mode(stream, state) { - - if (state.ctx.mode && state.ctx.local) { - - if (stream.sol()) { - if (!stream.eatSpace()) change(state, to_normal); - return null; - } - - return state.ctx.mode.token(stream, state.ctx.local); - } - - change(state, to_normal); - return null; - } - - /////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////////////////// - - function context(phase, stage, mode, local) { - return {phase: phase, stage: stage, mode: mode, local: local}; - } - - function change(state, tok, ctx) { - state.tok = tok; - state.ctx = ctx || {}; - } - - function stage(state) { - return state.ctx.stage || 0; - } - - function phase(state) { - return state.ctx.phase; - } - - /////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////////////////// - - return { - startState: function () { - return {tok: to_normal, ctx: context(undefined, 0)}; - }, - - copyState: function (state) { - var ctx = state.ctx, tmp = state.tmp; - if (ctx.local) - ctx = {mode: ctx.mode, local: CodeMirror.copyState(ctx.mode, ctx.local)}; - if (tmp) - tmp = {mode: tmp.mode, local: CodeMirror.copyState(tmp.mode, tmp.local)}; - return {tok: state.tok, ctx: ctx, tmp: tmp}; - }, - - innerMode: function (state) { - return state.tmp ? {state: state.tmp.local, mode: state.tmp.mode} - : state.ctx.mode ? {state: state.ctx.local, mode: state.ctx.mode} - : null; - }, - - token: function (stream, state) { - return state.tok(stream, state); - } - }; -}, 'python', 'stex'); - -/////////////////////////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////////// - -CodeMirror.defineMIME('text/x-rst', 'rst'); - -/////////////////////////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////////// - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/ruby/index.html b/public/plugins/codemirror-5.17.0/mode/ruby/index.html deleted file mode 100644 index 97544babc..000000000 --- a/public/plugins/codemirror-5.17.0/mode/ruby/index.html +++ /dev/null @@ -1,183 +0,0 @@ - - -CodeMirror: Ruby mode - - - - - - - - - - -
    -

    Ruby mode

    -
    - - -

    MIME types defined: text/x-ruby.

    - -

    Development of the CodeMirror Ruby mode was kindly sponsored - by Ubalo.

    - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/ruby/ruby.js b/public/plugins/codemirror-5.17.0/mode/ruby/ruby.js deleted file mode 100644 index 10cad8d9f..000000000 --- a/public/plugins/codemirror-5.17.0/mode/ruby/ruby.js +++ /dev/null @@ -1,285 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("ruby", function(config) { - function wordObj(words) { - var o = {}; - for (var i = 0, e = words.length; i < e; ++i) o[words[i]] = true; - return o; - } - var keywords = wordObj([ - "alias", "and", "BEGIN", "begin", "break", "case", "class", "def", "defined?", "do", "else", - "elsif", "END", "end", "ensure", "false", "for", "if", "in", "module", "next", "not", "or", - "redo", "rescue", "retry", "return", "self", "super", "then", "true", "undef", "unless", - "until", "when", "while", "yield", "nil", "raise", "throw", "catch", "fail", "loop", "callcc", - "caller", "lambda", "proc", "public", "protected", "private", "require", "load", - "require_relative", "extend", "autoload", "__END__", "__FILE__", "__LINE__", "__dir__" - ]); - var indentWords = wordObj(["def", "class", "case", "for", "while", "until", "module", "then", - "catch", "loop", "proc", "begin"]); - var dedentWords = wordObj(["end", "until"]); - var matching = {"[": "]", "{": "}", "(": ")"}; - var curPunc; - - function chain(newtok, stream, state) { - state.tokenize.push(newtok); - return newtok(stream, state); - } - - function tokenBase(stream, state) { - if (stream.sol() && stream.match("=begin") && stream.eol()) { - state.tokenize.push(readBlockComment); - return "comment"; - } - if (stream.eatSpace()) return null; - var ch = stream.next(), m; - if (ch == "`" || ch == "'" || ch == '"') { - return chain(readQuoted(ch, "string", ch == '"' || ch == "`"), stream, state); - } else if (ch == "/") { - var currentIndex = stream.current().length; - if (stream.skipTo("/")) { - var search_till = stream.current().length; - stream.backUp(stream.current().length - currentIndex); - var balance = 0; // balance brackets - while (stream.current().length < search_till) { - var chchr = stream.next(); - if (chchr == "(") balance += 1; - else if (chchr == ")") balance -= 1; - if (balance < 0) break; - } - stream.backUp(stream.current().length - currentIndex); - if (balance == 0) - return chain(readQuoted(ch, "string-2", true), stream, state); - } - return "operator"; - } else if (ch == "%") { - var style = "string", embed = true; - if (stream.eat("s")) style = "atom"; - else if (stream.eat(/[WQ]/)) style = "string"; - else if (stream.eat(/[r]/)) style = "string-2"; - else if (stream.eat(/[wxq]/)) { style = "string"; embed = false; } - var delim = stream.eat(/[^\w\s=]/); - if (!delim) return "operator"; - if (matching.propertyIsEnumerable(delim)) delim = matching[delim]; - return chain(readQuoted(delim, style, embed, true), stream, state); - } else if (ch == "#") { - stream.skipToEnd(); - return "comment"; - } else if (ch == "<" && (m = stream.match(/^<-?[\`\"\']?([a-zA-Z_?]\w*)[\`\"\']?(?:;|$)/))) { - return chain(readHereDoc(m[1]), stream, state); - } else if (ch == "0") { - if (stream.eat("x")) stream.eatWhile(/[\da-fA-F]/); - else if (stream.eat("b")) stream.eatWhile(/[01]/); - else stream.eatWhile(/[0-7]/); - return "number"; - } else if (/\d/.test(ch)) { - stream.match(/^[\d_]*(?:\.[\d_]+)?(?:[eE][+\-]?[\d_]+)?/); - return "number"; - } else if (ch == "?") { - while (stream.match(/^\\[CM]-/)) {} - if (stream.eat("\\")) stream.eatWhile(/\w/); - else stream.next(); - return "string"; - } else if (ch == ":") { - if (stream.eat("'")) return chain(readQuoted("'", "atom", false), stream, state); - if (stream.eat('"')) return chain(readQuoted('"', "atom", true), stream, state); - - // :> :>> :< :<< are valid symbols - if (stream.eat(/[\<\>]/)) { - stream.eat(/[\<\>]/); - return "atom"; - } - - // :+ :- :/ :* :| :& :! are valid symbols - if (stream.eat(/[\+\-\*\/\&\|\:\!]/)) { - return "atom"; - } - - // Symbols can't start by a digit - if (stream.eat(/[a-zA-Z$@_\xa1-\uffff]/)) { - stream.eatWhile(/[\w$\xa1-\uffff]/); - // Only one ? ! = is allowed and only as the last character - stream.eat(/[\?\!\=]/); - return "atom"; - } - return "operator"; - } else if (ch == "@" && stream.match(/^@?[a-zA-Z_\xa1-\uffff]/)) { - stream.eat("@"); - stream.eatWhile(/[\w\xa1-\uffff]/); - return "variable-2"; - } else if (ch == "$") { - if (stream.eat(/[a-zA-Z_]/)) { - stream.eatWhile(/[\w]/); - } else if (stream.eat(/\d/)) { - stream.eat(/\d/); - } else { - stream.next(); // Must be a special global like $: or $! - } - return "variable-3"; - } else if (/[a-zA-Z_\xa1-\uffff]/.test(ch)) { - stream.eatWhile(/[\w\xa1-\uffff]/); - stream.eat(/[\?\!]/); - if (stream.eat(":")) return "atom"; - return "ident"; - } else if (ch == "|" && (state.varList || state.lastTok == "{" || state.lastTok == "do")) { - curPunc = "|"; - return null; - } else if (/[\(\)\[\]{}\\;]/.test(ch)) { - curPunc = ch; - return null; - } else if (ch == "-" && stream.eat(">")) { - return "arrow"; - } else if (/[=+\-\/*:\.^%<>~|]/.test(ch)) { - var more = stream.eatWhile(/[=+\-\/*:\.^%<>~|]/); - if (ch == "." && !more) curPunc = "."; - return "operator"; - } else { - return null; - } - } - - function tokenBaseUntilBrace(depth) { - if (!depth) depth = 1; - return function(stream, state) { - if (stream.peek() == "}") { - if (depth == 1) { - state.tokenize.pop(); - return state.tokenize[state.tokenize.length-1](stream, state); - } else { - state.tokenize[state.tokenize.length - 1] = tokenBaseUntilBrace(depth - 1); - } - } else if (stream.peek() == "{") { - state.tokenize[state.tokenize.length - 1] = tokenBaseUntilBrace(depth + 1); - } - return tokenBase(stream, state); - }; - } - function tokenBaseOnce() { - var alreadyCalled = false; - return function(stream, state) { - if (alreadyCalled) { - state.tokenize.pop(); - return state.tokenize[state.tokenize.length-1](stream, state); - } - alreadyCalled = true; - return tokenBase(stream, state); - }; - } - function readQuoted(quote, style, embed, unescaped) { - return function(stream, state) { - var escaped = false, ch; - - if (state.context.type === 'read-quoted-paused') { - state.context = state.context.prev; - stream.eat("}"); - } - - while ((ch = stream.next()) != null) { - if (ch == quote && (unescaped || !escaped)) { - state.tokenize.pop(); - break; - } - if (embed && ch == "#" && !escaped) { - if (stream.eat("{")) { - if (quote == "}") { - state.context = {prev: state.context, type: 'read-quoted-paused'}; - } - state.tokenize.push(tokenBaseUntilBrace()); - break; - } else if (/[@\$]/.test(stream.peek())) { - state.tokenize.push(tokenBaseOnce()); - break; - } - } - escaped = !escaped && ch == "\\"; - } - return style; - }; - } - function readHereDoc(phrase) { - return function(stream, state) { - if (stream.match(phrase)) state.tokenize.pop(); - else stream.skipToEnd(); - return "string"; - }; - } - function readBlockComment(stream, state) { - if (stream.sol() && stream.match("=end") && stream.eol()) - state.tokenize.pop(); - stream.skipToEnd(); - return "comment"; - } - - return { - startState: function() { - return {tokenize: [tokenBase], - indented: 0, - context: {type: "top", indented: -config.indentUnit}, - continuedLine: false, - lastTok: null, - varList: false}; - }, - - token: function(stream, state) { - curPunc = null; - if (stream.sol()) state.indented = stream.indentation(); - var style = state.tokenize[state.tokenize.length-1](stream, state), kwtype; - var thisTok = curPunc; - if (style == "ident") { - var word = stream.current(); - style = state.lastTok == "." ? "property" - : keywords.propertyIsEnumerable(stream.current()) ? "keyword" - : /^[A-Z]/.test(word) ? "tag" - : (state.lastTok == "def" || state.lastTok == "class" || state.varList) ? "def" - : "variable"; - if (style == "keyword") { - thisTok = word; - if (indentWords.propertyIsEnumerable(word)) kwtype = "indent"; - else if (dedentWords.propertyIsEnumerable(word)) kwtype = "dedent"; - else if ((word == "if" || word == "unless") && stream.column() == stream.indentation()) - kwtype = "indent"; - else if (word == "do" && state.context.indented < state.indented) - kwtype = "indent"; - } - } - if (curPunc || (style && style != "comment")) state.lastTok = thisTok; - if (curPunc == "|") state.varList = !state.varList; - - if (kwtype == "indent" || /[\(\[\{]/.test(curPunc)) - state.context = {prev: state.context, type: curPunc || style, indented: state.indented}; - else if ((kwtype == "dedent" || /[\)\]\}]/.test(curPunc)) && state.context.prev) - state.context = state.context.prev; - - if (stream.eol()) - state.continuedLine = (curPunc == "\\" || style == "operator"); - return style; - }, - - indent: function(state, textAfter) { - if (state.tokenize[state.tokenize.length-1] != tokenBase) return 0; - var firstChar = textAfter && textAfter.charAt(0); - var ct = state.context; - var closing = ct.type == matching[firstChar] || - ct.type == "keyword" && /^(?:end|until|else|elsif|when|rescue)\b/.test(textAfter); - return ct.indented + (closing ? 0 : config.indentUnit) + - (state.continuedLine ? config.indentUnit : 0); - }, - - electricInput: /^\s*(?:end|rescue|\})$/, - lineComment: "#" - }; -}); - -CodeMirror.defineMIME("text/x-ruby", "ruby"); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/ruby/test.js b/public/plugins/codemirror-5.17.0/mode/ruby/test.js deleted file mode 100644 index cade864ff..000000000 --- a/public/plugins/codemirror-5.17.0/mode/ruby/test.js +++ /dev/null @@ -1,14 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function() { - var mode = CodeMirror.getMode({indentUnit: 2}, "ruby"); - function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } - - MT("divide_equal_operator", - "[variable bar] [operator /=] [variable foo]"); - - MT("divide_equal_operator_no_spacing", - "[variable foo][operator /=][number 42]"); - -})(); diff --git a/public/plugins/codemirror-5.17.0/mode/rust/index.html b/public/plugins/codemirror-5.17.0/mode/rust/index.html deleted file mode 100644 index 1fe0ad1e6..000000000 --- a/public/plugins/codemirror-5.17.0/mode/rust/index.html +++ /dev/null @@ -1,64 +0,0 @@ - - -CodeMirror: Rust mode - - - - - - - - - - -
    -

    Rust mode

    - - -
    - - - -

    MIME types defined: text/x-rustsrc.

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/rust/rust.js b/public/plugins/codemirror-5.17.0/mode/rust/rust.js deleted file mode 100644 index 8558b53fe..000000000 --- a/public/plugins/codemirror-5.17.0/mode/rust/rust.js +++ /dev/null @@ -1,71 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror"), require("../../addon/mode/simple")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../../addon/mode/simple"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineSimpleMode("rust",{ - start: [ - // string and byte string - {regex: /b?"/, token: "string", next: "string"}, - // raw string and raw byte string - {regex: /b?r"/, token: "string", next: "string_raw"}, - {regex: /b?r#+"/, token: "string", next: "string_raw_hash"}, - // character - {regex: /'(?:[^'\\]|\\(?:[nrt0'"]|x[\da-fA-F]{2}|u\{[\da-fA-F]{6}\}))'/, token: "string-2"}, - // byte - {regex: /b'(?:[^']|\\(?:['\\nrt0]|x[\da-fA-F]{2}))'/, token: "string-2"}, - - {regex: /(?:(?:[0-9][0-9_]*)(?:(?:[Ee][+-]?[0-9_]+)|\.[0-9_]+(?:[Ee][+-]?[0-9_]+)?)(?:f32|f64)?)|(?:0(?:b[01_]+|(?:o[0-7_]+)|(?:x[0-9a-fA-F_]+))|(?:[0-9][0-9_]*))(?:u8|u16|u32|u64|i8|i16|i32|i64|isize|usize)?/, - token: "number"}, - {regex: /(let(?:\s+mut)?|fn|enum|mod|struct|type)(\s+)([a-zA-Z_][a-zA-Z0-9_]*)/, token: ["keyword", null, "def"]}, - {regex: /(?:abstract|alignof|as|box|break|continue|const|crate|do|else|enum|extern|fn|for|final|if|impl|in|loop|macro|match|mod|move|offsetof|override|priv|proc|pub|pure|ref|return|self|sizeof|static|struct|super|trait|type|typeof|unsafe|unsized|use|virtual|where|while|yield)\b/, token: "keyword"}, - {regex: /\b(?:Self|isize|usize|char|bool|u8|u16|u32|u64|f16|f32|f64|i8|i16|i32|i64|str|Option)\b/, token: "atom"}, - {regex: /\b(?:true|false|Some|None|Ok|Err)\b/, token: "builtin"}, - {regex: /\b(fn)(\s+)([a-zA-Z_][a-zA-Z0-9_]*)/, - token: ["keyword", null ,"def"]}, - {regex: /#!?\[.*\]/, token: "meta"}, - {regex: /\/\/.*/, token: "comment"}, - {regex: /\/\*/, token: "comment", next: "comment"}, - {regex: /[-+\/*=<>!]+/, token: "operator"}, - {regex: /[a-zA-Z_]\w*!/,token: "variable-3"}, - {regex: /[a-zA-Z_]\w*/, token: "variable"}, - {regex: /[\{\[\(]/, indent: true}, - {regex: /[\}\]\)]/, dedent: true} - ], - string: [ - {regex: /"/, token: "string", next: "start"}, - {regex: /(?:[^\\"]|\\(?:.|$))*/, token: "string"} - ], - string_raw: [ - {regex: /"/, token: "string", next: "start"}, - {regex: /[^"]*/, token: "string"} - ], - string_raw_hash: [ - {regex: /"#+/, token: "string", next: "start"}, - {regex: /(?:[^"]|"(?!#))*/, token: "string"} - ], - comment: [ - {regex: /.*?\*\//, token: "comment", next: "start"}, - {regex: /.*/, token: "comment"} - ], - meta: { - dontIndentStates: ["comment"], - electricInput: /^\s*\}$/, - blockCommentStart: "/*", - blockCommentEnd: "*/", - lineComment: "//", - fold: "brace" - } -}); - - -CodeMirror.defineMIME("text/x-rustsrc", "rust"); -}); diff --git a/public/plugins/codemirror-5.17.0/mode/rust/test.js b/public/plugins/codemirror-5.17.0/mode/rust/test.js deleted file mode 100644 index eb256c47e..000000000 --- a/public/plugins/codemirror-5.17.0/mode/rust/test.js +++ /dev/null @@ -1,39 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function() { - var mode = CodeMirror.getMode({indentUnit: 4}, "rust"); - function MT(name) {test.mode(name, mode, Array.prototype.slice.call(arguments, 1));} - - MT('integer_test', - '[number 123i32]', - '[number 123u32]', - '[number 123_u32]', - '[number 0xff_u8]', - '[number 0o70_i16]', - '[number 0b1111_1111_1001_0000_i32]', - '[number 0usize]'); - - MT('float_test', - '[number 123.0f64]', - '[number 0.1f64]', - '[number 0.1f32]', - '[number 12E+99_f64]'); - - MT('string-literals-test', - '[string "foo"]', - '[string r"foo"]', - '[string "\\"foo\\""]', - '[string r#""foo""#]', - '[string "foo #\\"# bar"]', - - '[string b"foo"]', - '[string br"foo"]', - '[string b"\\"foo\\""]', - '[string br#""foo""#]', - '[string br##"foo #" bar"##]', - - "[string-2 'h']", - "[string-2 b'h']"); - -})(); diff --git a/public/plugins/codemirror-5.17.0/mode/sas/index.html b/public/plugins/codemirror-5.17.0/mode/sas/index.html deleted file mode 100644 index 636e06594..000000000 --- a/public/plugins/codemirror-5.17.0/mode/sas/index.html +++ /dev/null @@ -1,81 +0,0 @@ - - -CodeMirror: SAS mode - - - - - - - - - - -
    -

    SAS mode

    -
    - - - -

    MIME types defined: text/x-sas.

    - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/sas/sas.js b/public/plugins/codemirror-5.17.0/mode/sas/sas.js deleted file mode 100755 index fe114827c..000000000 --- a/public/plugins/codemirror-5.17.0/mode/sas/sas.js +++ /dev/null @@ -1,315 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - - -// SAS mode copyright (c) 2016 Jared Dean, SAS Institute -// Created by Jared Dean - -// TODO -// indent and de-indent -// identify macro variables - - -//Definitions -// comment -- text withing * ; or /* */ -// keyword -- SAS language variable -// variable -- macro variables starts with '&' or variable formats -// variable-2 -- DATA Step, proc, or macro names -// string -- text within ' ' or " " -// operator -- numeric operator + / - * ** le eq ge ... and so on -// builtin -- proc %macro data run mend -// atom -// def - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - CodeMirror.defineMode("sas", function () { - var words = {}; - var isDoubleOperatorSym = { - eq: 'operator', - lt: 'operator', - le: 'operator', - gt: 'operator', - ge: 'operator', - "in": 'operator', - ne: 'operator', - or: 'operator' - }; - var isDoubleOperatorChar = /(<=|>=|!=|<>)/; - var isSingleOperatorChar = /[=\(:\),{}.*<>+\-\/^\[\]]/; - - // Takes a string of words separated by spaces and adds them as - // keys with the value of the first argument 'style' - function define(style, string, context) { - if (context) { - var split = string.split(' '); - for (var i = 0; i < split.length; i++) { - words[split[i]] = {style: style, state: context}; - } - } - } - //datastep - define('def', 'stack pgm view source debug nesting nolist', ['inDataStep']); - define('def', 'if while until for do do; end end; then else cancel', ['inDataStep']); - define('def', 'label format _n_ _error_', ['inDataStep']); - define('def', 'ALTER BUFNO BUFSIZE CNTLLEV COMPRESS DLDMGACTION ENCRYPT ENCRYPTKEY EXTENDOBSCOUNTER GENMAX GENNUM INDEX LABEL OBSBUF OUTREP PW PWREQ READ REPEMPTY REPLACE REUSE ROLE SORTEDBY SPILL TOBSNO TYPE WRITE FILECLOSE FIRSTOBS IN OBS POINTOBS WHERE WHEREUP IDXNAME IDXWHERE DROP KEEP RENAME', ['inDataStep']); - define('def', 'filevar finfo finv fipname fipnamel fipstate first firstobs floor', ['inDataStep']); - define('def', 'varfmt varinfmt varlabel varlen varname varnum varray varrayx vartype verify vformat vformatd vformatdx vformatn vformatnx vformatw vformatwx vformatx vinarray vinarrayx vinformat vinformatd vinformatdx vinformatn vinformatnx vinformatw vinformatwx vinformatx vlabel vlabelx vlength vlengthx vname vnamex vnferr vtype vtypex weekday', ['inDataStep']); - define('def', 'zipfips zipname zipnamel zipstate', ['inDataStep']); - define('def', 'put putc putn', ['inDataStep']); - define('builtin', 'data run', ['inDataStep']); - - - //proc - define('def', 'data', ['inProc']); - - // flow control for macros - define('def', '%if %end %end; %else %else; %do %do; %then', ['inMacro']); - - //everywhere - define('builtin', 'proc run; quit; libname filename %macro %mend option options', ['ALL']); - - define('def', 'footnote title libname ods', ['ALL']); - define('def', '%let %put %global %sysfunc %eval ', ['ALL']); - // automatic macro variables http://support.sas.com/documentation/cdl/en/mcrolref/61885/HTML/default/viewer.htm#a003167023.htm - define('variable', '&sysbuffr &syscc &syscharwidth &syscmd &sysdate &sysdate9 &sysday &sysdevic &sysdmg &sysdsn &sysencoding &sysenv &syserr &syserrortext &sysfilrc &syshostname &sysindex &sysinfo &sysjobid &syslast &syslckrc &syslibrc &syslogapplname &sysmacroname &sysmenv &sysmsg &sysncpu &sysodspath &sysparm &syspbuff &sysprocessid &sysprocessname &sysprocname &sysrc &sysscp &sysscpl &sysscpl &syssite &sysstartid &sysstartname &systcpiphostname &systime &sysuserid &sysver &sysvlong &sysvlong4 &syswarningtext', ['ALL']); - - //footnote[1-9]? title[1-9]? - - //options statement - define('def', 'source2 nosource2 page pageno pagesize', ['ALL']); - - //proc and datastep - define('def', '_all_ _character_ _cmd_ _freq_ _i_ _infile_ _last_ _msg_ _null_ _numeric_ _temporary_ _type_ abort abs addr adjrsq airy alpha alter altlog altprint and arcos array arsin as atan attrc attrib attrn authserver autoexec awscontrol awsdef awsmenu awsmenumerge awstitle backward band base betainv between blocksize blshift bnot bor brshift bufno bufsize bxor by byerr byline byte calculated call cards cards4 catcache cbufno cdf ceil center cexist change chisq cinv class cleanup close cnonct cntllev coalesce codegen col collate collin column comamid comaux1 comaux2 comdef compbl compound compress config continue convert cos cosh cpuid create cross crosstab css curobs cv daccdb daccdbsl daccsl daccsyd dacctab dairy datalines datalines4 datejul datepart datetime day dbcslang dbcstype dclose ddm delete delimiter depdb depdbsl depsl depsyd deptab dequote descending descript design= device dflang dhms dif digamma dim dinfo display distinct dkricond dkrocond dlm dnum do dopen doptname doptnum dread drop dropnote dsname dsnferr echo else emaildlg emailid emailpw emailserver emailsys encrypt end endsas engine eof eov erf erfc error errorcheck errors exist exp fappend fclose fcol fdelete feedback fetch fetchobs fexist fget file fileclose fileexist filefmt filename fileref fmterr fmtsearch fnonct fnote font fontalias fopen foptname foptnum force formatted formchar formdelim formdlim forward fpoint fpos fput fread frewind frlen from fsep fuzz fwrite gaminv gamma getoption getvarc getvarn go goto group gwindow hbar hbound helpenv helploc hms honorappearance hosthelp hostprint hour hpct html hvar ibessel ibr id if index indexc indexw initcmd initstmt inner input inputc inputn inr insert int intck intnx into intrr invaliddata irr is jbessel join juldate keep kentb kurtosis label lag last lbound leave left length levels lgamma lib library libref line linesize link list log log10 log2 logpdf logpmf logsdf lostcard lowcase lrecl ls macro macrogen maps mautosource max maxdec maxr mdy mean measures median memtype merge merror min minute missing missover mlogic mod mode model modify month mopen mort mprint mrecall msglevel msymtabmax mvarsize myy n nest netpv new news nmiss no nobatch nobs nocaps nocardimage nocenter nocharcode nocmdmac nocol nocum nodate nodbcs nodetails nodmr nodms nodmsbatch nodup nodupkey noduplicates noechoauto noequals noerrorabend noexitwindows nofullstimer noicon noimplmac noint nolist noloadlist nomiss nomlogic nomprint nomrecall nomsgcase nomstored nomultenvappl nonotes nonumber noobs noovp nopad nopercent noprint noprintinit normal norow norsasuser nosetinit nosplash nosymbolgen note notes notitle notitles notsorted noverbose noxsync noxwait npv null number numkeys nummousekeys nway obs on open order ordinal otherwise out outer outp= output over ovp p(1 5 10 25 50 75 90 95 99) pad pad2 paired parm parmcards path pathdll pathname pdf peek peekc pfkey pmf point poisson poke position printer probbeta probbnml probchi probf probgam probhypr probit probnegb probnorm probsig probt procleave prt ps pw pwreq qtr quote r ranbin rancau ranexp rangam range ranks rannor ranpoi rantbl rantri ranuni read recfm register regr remote remove rename repeat replace resolve retain return reuse reverse rewind right round rsquare rtf rtrace rtraceloc s s2 samploc sasautos sascontrol sasfrscr sasmsg sasmstore sasscript sasuser saving scan sdf second select selection separated seq serror set setcomm setot sign simple sin sinh siteinfo skewness skip sle sls sortedby sortpgm sortseq sortsize soundex spedis splashlocation split spool sqrt start std stderr stdin stfips stimer stname stnamel stop stopover subgroup subpopn substr sum sumwgt symbol symbolgen symget symput sysget sysin sysleave sysmsg sysparm sysprint sysprintfont sysprod sysrc system t table tables tan tanh tapeclose tbufsize terminal test then timepart tinv tnonct to today tol tooldef totper transformout translate trantab tranwrd trigamma trim trimn trunc truncover type unformatted uniform union until upcase update user usericon uss validate value var weight when where while wincharset window work workinit workterm write wsum xsync xwait yearcutoff yes yyq min max', ['inDataStep', 'inProc']); - define('operator', 'and not ', ['inDataStep', 'inProc']); - - // Main function - function tokenize(stream, state) { - // Finally advance the stream - var ch = stream.next(); - - // BLOCKCOMMENT - if (ch === '/' && stream.eat('*')) { - state.continueComment = true; - return "comment"; - } else if (state.continueComment === true) { // in comment block - //comment ends at the beginning of the line - if (ch === '*' && stream.peek() === '/') { - stream.next(); - state.continueComment = false; - } else if (stream.skipTo('*')) { //comment is potentially later in line - stream.skipTo('*'); - stream.next(); - if (stream.eat('/')) - state.continueComment = false; - } else { - stream.skipToEnd(); - } - return "comment"; - } - - // DoubleOperator match - var doubleOperator = ch + stream.peek(); - - // Match all line comments. - var myString = stream.string; - var myRegexp = /(?:^\s*|[;]\s*)(\*.*?);/ig; - var match = myRegexp.exec(myString); - if (match !== null) { - if (match.index === 0 && (stream.column() !== (match.index + match[0].length - 1))) { - stream.backUp(stream.column()); - stream.skipTo(';'); - stream.next(); - return 'comment'; - } else if (match.index + 1 < stream.column() && stream.column() < match.index + match[0].length - 1) { - // the ';' triggers the match so move one past it to start - // the comment block that is why match.index+1 - stream.backUp(stream.column() - match.index - 1); - stream.skipTo(';'); - stream.next(); - return 'comment'; - } - } else if (!state.continueString && (ch === '"' || ch === "'")) { - // Have we found a string? - state.continueString = ch; //save the matching quote in the state - return "string"; - } else if (state.continueString !== null) { - if (stream.skipTo(state.continueString)) { - // quote found on this line - stream.next(); - state.continueString = null; - } else { - stream.skipToEnd(); - } - return "string"; - } else if (state.continueString !== null && stream.eol()) { - stream.skipTo(state.continueString) || stream.skipToEnd(); - return "string"; - } else if (/[\d\.]/.test(ch)) { //find numbers - if (ch === ".") - stream.match(/^[0-9]+([eE][\-+]?[0-9]+)?/); - else if (ch === "0") - stream.match(/^[xX][0-9a-fA-F]+/) || stream.match(/^0[0-7]+/); - else - stream.match(/^[0-9]*\.?[0-9]*([eE][\-+]?[0-9]+)?/); - return "number"; - } else if (isDoubleOperatorChar.test(ch + stream.peek())) { // TWO SYMBOL TOKENS - stream.next(); - return "operator"; - } else if (isDoubleOperatorSym.hasOwnProperty(doubleOperator)) { - stream.next(); - if (stream.peek() === ' ') - return isDoubleOperatorSym[doubleOperator.toLowerCase()]; - } else if (isSingleOperatorChar.test(ch)) { // SINGLE SYMBOL TOKENS - return "operator"; - } - - // Matches one whole word -- even if the word is a character - var word; - if (stream.match(/[%&;\w]+/, false) != null) { - word = ch + stream.match(/[%&;\w]+/, true); - if (/&/.test(word)) return 'variable' - } else { - word = ch; - } - // the word after DATA PROC or MACRO - if (state.nextword) { - stream.match(/[\w]+/); - // match memname.libname - if (stream.peek() === '.') stream.skipTo(' '); - state.nextword = false; - return 'variable-2'; - - } - - // Are we in a DATA Step? - if (state.inDataStep) { - if (word.toLowerCase() === 'run;' || stream.match(/run\s;/)) { - state.inDataStep = false; - return 'builtin'; - } - // variable formats - if ((word) && stream.next() === '.') { - //either a format or libname.memname - if (/\w/.test(stream.peek())) return 'variable-2'; - else return 'variable'; - } - // do we have a DATA Step keyword - if (word && words.hasOwnProperty(word.toLowerCase()) && - (words[word.toLowerCase()].state.indexOf("inDataStep") !== -1 || - words[word.toLowerCase()].state.indexOf("ALL") !== -1)) { - //backup to the start of the word - if (stream.start < stream.pos) - stream.backUp(stream.pos - stream.start); - //advance the length of the word and return - for (var i = 0; i < word.length; ++i) stream.next(); - return words[word.toLowerCase()].style; - } - } - // Are we in an Proc statement? - if (state.inProc) { - if (word.toLowerCase() === 'run;' || word.toLowerCase() === 'quit;') { - state.inProc = false; - return 'builtin'; - } - // do we have a proc keyword - if (word && words.hasOwnProperty(word.toLowerCase()) && - (words[word.toLowerCase()].state.indexOf("inProc") !== -1 || - words[word.toLowerCase()].state.indexOf("ALL") !== -1)) { - stream.match(/[\w]+/); - return words[word].style; - } - } - // Are we in a Macro statement? - if (state.inMacro) { - if (word.toLowerCase() === '%mend') { - if (stream.peek() === ';') stream.next(); - state.inMacro = false; - return 'builtin'; - } - if (word && words.hasOwnProperty(word.toLowerCase()) && - (words[word.toLowerCase()].state.indexOf("inMacro") !== -1 || - words[word.toLowerCase()].state.indexOf("ALL") !== -1)) { - stream.match(/[\w]+/); - return words[word.toLowerCase()].style; - } - - return 'atom'; - } - // Do we have Keywords specific words? - if (word && words.hasOwnProperty(word.toLowerCase())) { - // Negates the initial next() - stream.backUp(1); - // Actually move the stream - stream.match(/[\w]+/); - if (word.toLowerCase() === 'data' && /=/.test(stream.peek()) === false) { - state.inDataStep = true; - state.nextword = true; - return 'builtin'; - } - if (word.toLowerCase() === 'proc') { - state.inProc = true; - state.nextword = true; - return 'builtin'; - } - if (word.toLowerCase() === '%macro') { - state.inMacro = true; - state.nextword = true; - return 'builtin'; - } - if (/title[1-9]/i.test(word)) return 'def'; - - if (word.toLowerCase() === 'footnote') { - stream.eat(/[1-9]/); - return 'def'; - } - - // Returns their value as state in the prior define methods - if (state.inDataStep === true && words[word.toLowerCase()].state.indexOf("inDataStep") !== -1) - return words[word.toLowerCase()].style; - if (state.inProc === true && words[word.toLowerCase()].state.indexOf("inProc") !== -1) - return words[word.toLowerCase()].style; - if (state.inMacro === true && words[word.toLowerCase()].state.indexOf("inMacro") !== -1) - return words[word.toLowerCase()].style; - if (words[word.toLowerCase()].state.indexOf("ALL") !== -1) - return words[word.toLowerCase()].style; - return null; - } - // Unrecognized syntax - return null; - } - - return { - startState: function () { - return { - inDataStep: false, - inProc: false, - inMacro: false, - nextword: false, - continueString: null, - continueComment: false - }; - }, - token: function (stream, state) { - // Strip the spaces, but regex will account for them either way - if (stream.eatSpace()) return null; - // Go through the main process - return tokenize(stream, state); - }, - - blockCommentStart: "/*", - blockCommentEnd: "*/" - }; - - }); - - CodeMirror.defineMIME("text/x-sas", "sas"); -}); diff --git a/public/plugins/codemirror-5.17.0/mode/sass/index.html b/public/plugins/codemirror-5.17.0/mode/sass/index.html deleted file mode 100644 index 9f4a79022..000000000 --- a/public/plugins/codemirror-5.17.0/mode/sass/index.html +++ /dev/null @@ -1,66 +0,0 @@ - - -CodeMirror: Sass mode - - - - - - - - - - -
    -

    Sass mode

    -
    - - -

    MIME types defined: text/x-sass.

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/sass/sass.js b/public/plugins/codemirror-5.17.0/mode/sass/sass.js deleted file mode 100644 index 6973ece29..000000000 --- a/public/plugins/codemirror-5.17.0/mode/sass/sass.js +++ /dev/null @@ -1,414 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("sass", function(config) { - function tokenRegexp(words) { - return new RegExp("^" + words.join("|")); - } - - var keywords = ["true", "false", "null", "auto"]; - var keywordsRegexp = new RegExp("^" + keywords.join("|")); - - var operators = ["\\(", "\\)", "=", ">", "<", "==", ">=", "<=", "\\+", "-", - "\\!=", "/", "\\*", "%", "and", "or", "not", ";","\\{","\\}",":"]; - var opRegexp = tokenRegexp(operators); - - var pseudoElementsRegexp = /^::?[a-zA-Z_][\w\-]*/; - - function urlTokens(stream, state) { - var ch = stream.peek(); - - if (ch === ")") { - stream.next(); - state.tokenizer = tokenBase; - return "operator"; - } else if (ch === "(") { - stream.next(); - stream.eatSpace(); - - return "operator"; - } else if (ch === "'" || ch === '"') { - state.tokenizer = buildStringTokenizer(stream.next()); - return "string"; - } else { - state.tokenizer = buildStringTokenizer(")", false); - return "string"; - } - } - function comment(indentation, multiLine) { - return function(stream, state) { - if (stream.sol() && stream.indentation() <= indentation) { - state.tokenizer = tokenBase; - return tokenBase(stream, state); - } - - if (multiLine && stream.skipTo("*/")) { - stream.next(); - stream.next(); - state.tokenizer = tokenBase; - } else { - stream.skipToEnd(); - } - - return "comment"; - }; - } - - function buildStringTokenizer(quote, greedy) { - if (greedy == null) { greedy = true; } - - function stringTokenizer(stream, state) { - var nextChar = stream.next(); - var peekChar = stream.peek(); - var previousChar = stream.string.charAt(stream.pos-2); - - var endingString = ((nextChar !== "\\" && peekChar === quote) || (nextChar === quote && previousChar !== "\\")); - - if (endingString) { - if (nextChar !== quote && greedy) { stream.next(); } - state.tokenizer = tokenBase; - return "string"; - } else if (nextChar === "#" && peekChar === "{") { - state.tokenizer = buildInterpolationTokenizer(stringTokenizer); - stream.next(); - return "operator"; - } else { - return "string"; - } - } - - return stringTokenizer; - } - - function buildInterpolationTokenizer(currentTokenizer) { - return function(stream, state) { - if (stream.peek() === "}") { - stream.next(); - state.tokenizer = currentTokenizer; - return "operator"; - } else { - return tokenBase(stream, state); - } - }; - } - - function indent(state) { - if (state.indentCount == 0) { - state.indentCount++; - var lastScopeOffset = state.scopes[0].offset; - var currentOffset = lastScopeOffset + config.indentUnit; - state.scopes.unshift({ offset:currentOffset }); - } - } - - function dedent(state) { - if (state.scopes.length == 1) return; - - state.scopes.shift(); - } - - function tokenBase(stream, state) { - var ch = stream.peek(); - - // Comment - if (stream.match("/*")) { - state.tokenizer = comment(stream.indentation(), true); - return state.tokenizer(stream, state); - } - if (stream.match("//")) { - state.tokenizer = comment(stream.indentation(), false); - return state.tokenizer(stream, state); - } - - // Interpolation - if (stream.match("#{")) { - state.tokenizer = buildInterpolationTokenizer(tokenBase); - return "operator"; - } - - // Strings - if (ch === '"' || ch === "'") { - stream.next(); - state.tokenizer = buildStringTokenizer(ch); - return "string"; - } - - if(!state.cursorHalf){// state.cursorHalf === 0 - // first half i.e. before : for key-value pairs - // including selectors - - if (ch === ".") { - stream.next(); - if (stream.match(/^[\w-]+/)) { - indent(state); - return "atom"; - } else if (stream.peek() === "#") { - indent(state); - return "atom"; - } - } - - if (ch === "#") { - stream.next(); - // ID selectors - if (stream.match(/^[\w-]+/)) { - indent(state); - return "atom"; - } - if (stream.peek() === "#") { - indent(state); - return "atom"; - } - } - - // Variables - if (ch === "$") { - stream.next(); - stream.eatWhile(/[\w-]/); - return "variable-2"; - } - - // Numbers - if (stream.match(/^-?[0-9\.]+/)) - return "number"; - - // Units - if (stream.match(/^(px|em|in)\b/)) - return "unit"; - - if (stream.match(keywordsRegexp)) - return "keyword"; - - if (stream.match(/^url/) && stream.peek() === "(") { - state.tokenizer = urlTokens; - return "atom"; - } - - if (ch === "=") { - // Match shortcut mixin definition - if (stream.match(/^=[\w-]+/)) { - indent(state); - return "meta"; - } - } - - if (ch === "+") { - // Match shortcut mixin definition - if (stream.match(/^\+[\w-]+/)){ - return "variable-3"; - } - } - - if(ch === "@"){ - if(stream.match(/@extend/)){ - if(!stream.match(/\s*[\w]/)) - dedent(state); - } - } - - - // Indent Directives - if (stream.match(/^@(else if|if|media|else|for|each|while|mixin|function)/)) { - indent(state); - return "meta"; - } - - // Other Directives - if (ch === "@") { - stream.next(); - stream.eatWhile(/[\w-]/); - return "meta"; - } - - if (stream.eatWhile(/[\w-]/)){ - if(stream.match(/ *: *[\w-\+\$#!\("']/,false)){ - return "property"; - } - else if(stream.match(/ *:/,false)){ - indent(state); - state.cursorHalf = 1; - return "atom"; - } - else if(stream.match(/ *,/,false)){ - return "atom"; - } - else{ - indent(state); - return "atom"; - } - } - - if(ch === ":"){ - if (stream.match(pseudoElementsRegexp)){ // could be a pseudo-element - return "keyword"; - } - stream.next(); - state.cursorHalf=1; - return "operator"; - } - - } // cursorHalf===0 ends here - else{ - - if (ch === "#") { - stream.next(); - // Hex numbers - if (stream.match(/[0-9a-fA-F]{6}|[0-9a-fA-F]{3}/)){ - if(!stream.peek()){ - state.cursorHalf = 0; - } - return "number"; - } - } - - // Numbers - if (stream.match(/^-?[0-9\.]+/)){ - if(!stream.peek()){ - state.cursorHalf = 0; - } - return "number"; - } - - // Units - if (stream.match(/^(px|em|in)\b/)){ - if(!stream.peek()){ - state.cursorHalf = 0; - } - return "unit"; - } - - if (stream.match(keywordsRegexp)){ - if(!stream.peek()){ - state.cursorHalf = 0; - } - return "keyword"; - } - - if (stream.match(/^url/) && stream.peek() === "(") { - state.tokenizer = urlTokens; - if(!stream.peek()){ - state.cursorHalf = 0; - } - return "atom"; - } - - // Variables - if (ch === "$") { - stream.next(); - stream.eatWhile(/[\w-]/); - if(!stream.peek()){ - state.cursorHalf = 0; - } - return "variable-3"; - } - - // bang character for !important, !default, etc. - if (ch === "!") { - stream.next(); - if(!stream.peek()){ - state.cursorHalf = 0; - } - return stream.match(/^[\w]+/) ? "keyword": "operator"; - } - - if (stream.match(opRegexp)){ - if(!stream.peek()){ - state.cursorHalf = 0; - } - return "operator"; - } - - // attributes - if (stream.eatWhile(/[\w-]/)) { - if(!stream.peek()){ - state.cursorHalf = 0; - } - return "attribute"; - } - - //stream.eatSpace(); - if(!stream.peek()){ - state.cursorHalf = 0; - return null; - } - - } // else ends here - - if (stream.match(opRegexp)) - return "operator"; - - // If we haven't returned by now, we move 1 character - // and return an error - stream.next(); - return null; - } - - function tokenLexer(stream, state) { - if (stream.sol()) state.indentCount = 0; - var style = state.tokenizer(stream, state); - var current = stream.current(); - - if (current === "@return" || current === "}"){ - dedent(state); - } - - if (style !== null) { - var startOfToken = stream.pos - current.length; - - var withCurrentIndent = startOfToken + (config.indentUnit * state.indentCount); - - var newScopes = []; - - for (var i = 0; i < state.scopes.length; i++) { - var scope = state.scopes[i]; - - if (scope.offset <= withCurrentIndent) - newScopes.push(scope); - } - - state.scopes = newScopes; - } - - - return style; - } - - return { - startState: function() { - return { - tokenizer: tokenBase, - scopes: [{offset: 0, type: "sass"}], - indentCount: 0, - cursorHalf: 0, // cursor half tells us if cursor lies after (1) - // or before (0) colon (well... more or less) - definedVars: [], - definedMixins: [] - }; - }, - token: function(stream, state) { - var style = tokenLexer(stream, state); - - state.lastToken = { style: style, content: stream.current() }; - - return style; - }, - - indent: function(state) { - return state.scopes[0].offset; - } - }; -}); - -CodeMirror.defineMIME("text/x-sass", "sass"); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/scheme/index.html b/public/plugins/codemirror-5.17.0/mode/scheme/index.html deleted file mode 100644 index 04d5c6a2a..000000000 --- a/public/plugins/codemirror-5.17.0/mode/scheme/index.html +++ /dev/null @@ -1,77 +0,0 @@ - - -CodeMirror: Scheme mode - - - - - - - - - -
    -

    Scheme mode

    -
    - - -

    MIME types defined: text/x-scheme.

    - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/scheme/scheme.js b/public/plugins/codemirror-5.17.0/mode/scheme/scheme.js deleted file mode 100644 index 223464591..000000000 --- a/public/plugins/codemirror-5.17.0/mode/scheme/scheme.js +++ /dev/null @@ -1,249 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -/** - * Author: Koh Zi Han, based on implementation by Koh Zi Chun - */ - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("scheme", function () { - var BUILTIN = "builtin", COMMENT = "comment", STRING = "string", - ATOM = "atom", NUMBER = "number", BRACKET = "bracket"; - var INDENT_WORD_SKIP = 2; - - function makeKeywords(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - - var keywords = makeKeywords("λ case-lambda call/cc class define-class exit-handler field import inherit init-field interface let*-values let-values let/ec mixin opt-lambda override protect provide public rename require require-for-syntax syntax syntax-case syntax-error unit/sig unless when with-syntax and begin call-with-current-continuation call-with-input-file call-with-output-file case cond define define-syntax delay do dynamic-wind else for-each if lambda let let* let-syntax letrec letrec-syntax map or syntax-rules abs acos angle append apply asin assoc assq assv atan boolean? caar cadr call-with-input-file call-with-output-file call-with-values car cdddar cddddr cdr ceiling char->integer char-alphabetic? char-ci<=? char-ci=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char=? char>? char? close-input-port close-output-port complex? cons cos current-input-port current-output-port denominator display eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt #f floor force gcd imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lcm length list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file output-port? pair? peek-char port? positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string=? string>? string? substring symbol->string symbol? #t tan transcript-off transcript-on truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! with-input-from-file with-output-to-file write write-char zero?"); - var indentKeys = makeKeywords("define let letrec let* lambda"); - - function stateStack(indent, type, prev) { // represents a state stack object - this.indent = indent; - this.type = type; - this.prev = prev; - } - - function pushStack(state, indent, type) { - state.indentStack = new stateStack(indent, type, state.indentStack); - } - - function popStack(state) { - state.indentStack = state.indentStack.prev; - } - - var binaryMatcher = new RegExp(/^(?:[-+]i|[-+][01]+#*(?:\/[01]+#*)?i|[-+]?[01]+#*(?:\/[01]+#*)?@[-+]?[01]+#*(?:\/[01]+#*)?|[-+]?[01]+#*(?:\/[01]+#*)?[-+](?:[01]+#*(?:\/[01]+#*)?)?i|[-+]?[01]+#*(?:\/[01]+#*)?)(?=[()\s;"]|$)/i); - var octalMatcher = new RegExp(/^(?:[-+]i|[-+][0-7]+#*(?:\/[0-7]+#*)?i|[-+]?[0-7]+#*(?:\/[0-7]+#*)?@[-+]?[0-7]+#*(?:\/[0-7]+#*)?|[-+]?[0-7]+#*(?:\/[0-7]+#*)?[-+](?:[0-7]+#*(?:\/[0-7]+#*)?)?i|[-+]?[0-7]+#*(?:\/[0-7]+#*)?)(?=[()\s;"]|$)/i); - var hexMatcher = new RegExp(/^(?:[-+]i|[-+][\da-f]+#*(?:\/[\da-f]+#*)?i|[-+]?[\da-f]+#*(?:\/[\da-f]+#*)?@[-+]?[\da-f]+#*(?:\/[\da-f]+#*)?|[-+]?[\da-f]+#*(?:\/[\da-f]+#*)?[-+](?:[\da-f]+#*(?:\/[\da-f]+#*)?)?i|[-+]?[\da-f]+#*(?:\/[\da-f]+#*)?)(?=[()\s;"]|$)/i); - var decimalMatcher = new RegExp(/^(?:[-+]i|[-+](?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)i|[-+]?(?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)@[-+]?(?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)|[-+]?(?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)[-+](?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)?i|(?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*))(?=[()\s;"]|$)/i); - - function isBinaryNumber (stream) { - return stream.match(binaryMatcher); - } - - function isOctalNumber (stream) { - return stream.match(octalMatcher); - } - - function isDecimalNumber (stream, backup) { - if (backup === true) { - stream.backUp(1); - } - return stream.match(decimalMatcher); - } - - function isHexNumber (stream) { - return stream.match(hexMatcher); - } - - return { - startState: function () { - return { - indentStack: null, - indentation: 0, - mode: false, - sExprComment: false - }; - }, - - token: function (stream, state) { - if (state.indentStack == null && stream.sol()) { - // update indentation, but only if indentStack is empty - state.indentation = stream.indentation(); - } - - // skip spaces - if (stream.eatSpace()) { - return null; - } - var returnType = null; - - switch(state.mode){ - case "string": // multi-line string parsing mode - var next, escaped = false; - while ((next = stream.next()) != null) { - if (next == "\"" && !escaped) { - - state.mode = false; - break; - } - escaped = !escaped && next == "\\"; - } - returnType = STRING; // continue on in scheme-string mode - break; - case "comment": // comment parsing mode - var next, maybeEnd = false; - while ((next = stream.next()) != null) { - if (next == "#" && maybeEnd) { - - state.mode = false; - break; - } - maybeEnd = (next == "|"); - } - returnType = COMMENT; - break; - case "s-expr-comment": // s-expr commenting mode - state.mode = false; - if(stream.peek() == "(" || stream.peek() == "["){ - // actually start scheme s-expr commenting mode - state.sExprComment = 0; - }else{ - // if not we just comment the entire of the next token - stream.eatWhile(/[^/s]/); // eat non spaces - returnType = COMMENT; - break; - } - default: // default parsing mode - var ch = stream.next(); - - if (ch == "\"") { - state.mode = "string"; - returnType = STRING; - - } else if (ch == "'") { - returnType = ATOM; - } else if (ch == '#') { - if (stream.eat("|")) { // Multi-line comment - state.mode = "comment"; // toggle to comment mode - returnType = COMMENT; - } else if (stream.eat(/[tf]/i)) { // #t/#f (atom) - returnType = ATOM; - } else if (stream.eat(';')) { // S-Expr comment - state.mode = "s-expr-comment"; - returnType = COMMENT; - } else { - var numTest = null, hasExactness = false, hasRadix = true; - if (stream.eat(/[ei]/i)) { - hasExactness = true; - } else { - stream.backUp(1); // must be radix specifier - } - if (stream.match(/^#b/i)) { - numTest = isBinaryNumber; - } else if (stream.match(/^#o/i)) { - numTest = isOctalNumber; - } else if (stream.match(/^#x/i)) { - numTest = isHexNumber; - } else if (stream.match(/^#d/i)) { - numTest = isDecimalNumber; - } else if (stream.match(/^[-+0-9.]/, false)) { - hasRadix = false; - numTest = isDecimalNumber; - // re-consume the intial # if all matches failed - } else if (!hasExactness) { - stream.eat('#'); - } - if (numTest != null) { - if (hasRadix && !hasExactness) { - // consume optional exactness after radix - stream.match(/^#[ei]/i); - } - if (numTest(stream)) - returnType = NUMBER; - } - } - } else if (/^[-+0-9.]/.test(ch) && isDecimalNumber(stream, true)) { // match non-prefixed number, must be decimal - returnType = NUMBER; - } else if (ch == ";") { // comment - stream.skipToEnd(); // rest of the line is a comment - returnType = COMMENT; - } else if (ch == "(" || ch == "[") { - var keyWord = ''; var indentTemp = stream.column(), letter; - /** - Either - (indent-word .. - (non-indent-word .. - (;something else, bracket, etc. - */ - - while ((letter = stream.eat(/[^\s\(\[\;\)\]]/)) != null) { - keyWord += letter; - } - - if (keyWord.length > 0 && indentKeys.propertyIsEnumerable(keyWord)) { // indent-word - - pushStack(state, indentTemp + INDENT_WORD_SKIP, ch); - } else { // non-indent word - // we continue eating the spaces - stream.eatSpace(); - if (stream.eol() || stream.peek() == ";") { - // nothing significant after - // we restart indentation 1 space after - pushStack(state, indentTemp + 1, ch); - } else { - pushStack(state, indentTemp + stream.current().length, ch); // else we match - } - } - stream.backUp(stream.current().length - 1); // undo all the eating - - if(typeof state.sExprComment == "number") state.sExprComment++; - - returnType = BRACKET; - } else if (ch == ")" || ch == "]") { - returnType = BRACKET; - if (state.indentStack != null && state.indentStack.type == (ch == ")" ? "(" : "[")) { - popStack(state); - - if(typeof state.sExprComment == "number"){ - if(--state.sExprComment == 0){ - returnType = COMMENT; // final closing bracket - state.sExprComment = false; // turn off s-expr commenting mode - } - } - } - } else { - stream.eatWhile(/[\w\$_\-!$%&*+\.\/:<=>?@\^~]/); - - if (keywords && keywords.propertyIsEnumerable(stream.current())) { - returnType = BUILTIN; - } else returnType = "variable"; - } - } - return (typeof state.sExprComment == "number") ? COMMENT : returnType; - }, - - indent: function (state) { - if (state.indentStack == null) return state.indentation; - return state.indentStack.indent; - }, - - closeBrackets: {pairs: "()[]{}\"\""}, - lineComment: ";;" - }; -}); - -CodeMirror.defineMIME("text/x-scheme", "scheme"); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/shell/index.html b/public/plugins/codemirror-5.17.0/mode/shell/index.html deleted file mode 100644 index 0b56300b1..000000000 --- a/public/plugins/codemirror-5.17.0/mode/shell/index.html +++ /dev/null @@ -1,66 +0,0 @@ - - -CodeMirror: Shell mode - - - - - - - - - - -
    -

    Shell mode

    - - - - - - -

    MIME types defined: text/x-sh.

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/shell/shell.js b/public/plugins/codemirror-5.17.0/mode/shell/shell.js deleted file mode 100644 index a684e8c23..000000000 --- a/public/plugins/codemirror-5.17.0/mode/shell/shell.js +++ /dev/null @@ -1,139 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode('shell', function() { - - var words = {}; - function define(style, string) { - var split = string.split(' '); - for(var i = 0; i < split.length; i++) { - words[split[i]] = style; - } - }; - - // Atoms - define('atom', 'true false'); - - // Keywords - define('keyword', 'if then do else elif while until for in esac fi fin ' + - 'fil done exit set unset export function'); - - // Commands - define('builtin', 'ab awk bash beep cat cc cd chown chmod chroot clear cp ' + - 'curl cut diff echo find gawk gcc get git grep kill killall ln ls make ' + - 'mkdir openssl mv nc node npm ping ps restart rm rmdir sed service sh ' + - 'shopt shred source sort sleep ssh start stop su sudo tee telnet top ' + - 'touch vi vim wall wc wget who write yes zsh'); - - function tokenBase(stream, state) { - if (stream.eatSpace()) return null; - - var sol = stream.sol(); - var ch = stream.next(); - - if (ch === '\\') { - stream.next(); - return null; - } - if (ch === '\'' || ch === '"' || ch === '`') { - state.tokens.unshift(tokenString(ch)); - return tokenize(stream, state); - } - if (ch === '#') { - if (sol && stream.eat('!')) { - stream.skipToEnd(); - return 'meta'; // 'comment'? - } - stream.skipToEnd(); - return 'comment'; - } - if (ch === '$') { - state.tokens.unshift(tokenDollar); - return tokenize(stream, state); - } - if (ch === '+' || ch === '=') { - return 'operator'; - } - if (ch === '-') { - stream.eat('-'); - stream.eatWhile(/\w/); - return 'attribute'; - } - if (/\d/.test(ch)) { - stream.eatWhile(/\d/); - if(stream.eol() || !/\w/.test(stream.peek())) { - return 'number'; - } - } - stream.eatWhile(/[\w-]/); - var cur = stream.current(); - if (stream.peek() === '=' && /\w+/.test(cur)) return 'def'; - return words.hasOwnProperty(cur) ? words[cur] : null; - } - - function tokenString(quote) { - return function(stream, state) { - var next, end = false, escaped = false; - while ((next = stream.next()) != null) { - if (next === quote && !escaped) { - end = true; - break; - } - if (next === '$' && !escaped && quote !== '\'') { - escaped = true; - stream.backUp(1); - state.tokens.unshift(tokenDollar); - break; - } - escaped = !escaped && next === '\\'; - } - if (end || !escaped) { - state.tokens.shift(); - } - return (quote === '`' || quote === ')' ? 'quote' : 'string'); - }; - }; - - var tokenDollar = function(stream, state) { - if (state.tokens.length > 1) stream.eat('$'); - var ch = stream.next(), hungry = /\w/; - if (ch === '{') hungry = /[^}]/; - if (ch === '(') { - state.tokens[0] = tokenString(')'); - return tokenize(stream, state); - } - if (!/\d/.test(ch)) { - stream.eatWhile(hungry); - stream.eat('}'); - } - state.tokens.shift(); - return 'def'; - }; - - function tokenize(stream, state) { - return (state.tokens[0] || tokenBase) (stream, state); - }; - - return { - startState: function() {return {tokens:[]};}, - token: function(stream, state) { - return tokenize(stream, state); - }, - lineComment: '#', - fold: "brace" - }; -}); - -CodeMirror.defineMIME('text/x-sh', 'shell'); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/shell/test.js b/public/plugins/codemirror-5.17.0/mode/shell/test.js deleted file mode 100644 index a413b5a40..000000000 --- a/public/plugins/codemirror-5.17.0/mode/shell/test.js +++ /dev/null @@ -1,58 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function() { - var mode = CodeMirror.getMode({}, "shell"); - function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } - - MT("var", - "text [def $var] text"); - MT("varBraces", - "text[def ${var}]text"); - MT("varVar", - "text [def $a$b] text"); - MT("varBracesVarBraces", - "text[def ${a}${b}]text"); - - MT("singleQuotedVar", - "[string 'text $var text']"); - MT("singleQuotedVarBraces", - "[string 'text ${var} text']"); - - MT("doubleQuotedVar", - '[string "text ][def $var][string text"]'); - MT("doubleQuotedVarBraces", - '[string "text][def ${var}][string text"]'); - MT("doubleQuotedVarPunct", - '[string "text ][def $@][string text"]'); - MT("doubleQuotedVarVar", - '[string "][def $a$b][string "]'); - MT("doubleQuotedVarBracesVarBraces", - '[string "][def ${a}${b}][string "]'); - - MT("notAString", - "text\\'text"); - MT("escapes", - "outside\\'\\\"\\`\\\\[string \"inside\\`\\'\\\"\\\\`\\$notAVar\"]outside\\$\\(notASubShell\\)"); - - MT("subshell", - "[builtin echo] [quote $(whoami)] s log, stardate [quote `date`]."); - MT("doubleQuotedSubshell", - "[builtin echo] [string \"][quote $(whoami)][string 's log, stardate `date`.\"]"); - - MT("hashbang", - "[meta #!/bin/bash]"); - MT("comment", - "text [comment # Blurb]"); - - MT("numbers", - "[number 0] [number 1] [number 2]"); - MT("keywords", - "[keyword while] [atom true]; [keyword do]", - " [builtin sleep] [number 3]", - "[keyword done]"); - MT("options", - "[builtin ls] [attribute -l] [attribute --human-readable]"); - MT("operator", - "[def var][operator =]value"); -})(); diff --git a/public/plugins/codemirror-5.17.0/mode/sieve/index.html b/public/plugins/codemirror-5.17.0/mode/sieve/index.html deleted file mode 100644 index 6f029b623..000000000 --- a/public/plugins/codemirror-5.17.0/mode/sieve/index.html +++ /dev/null @@ -1,93 +0,0 @@ - - -CodeMirror: Sieve (RFC5228) mode - - - - - - - - - -
    -

    Sieve (RFC5228) mode

    -
    - - -

    MIME types defined: application/sieve.

    - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/sieve/sieve.js b/public/plugins/codemirror-5.17.0/mode/sieve/sieve.js deleted file mode 100644 index f67db2f55..000000000 --- a/public/plugins/codemirror-5.17.0/mode/sieve/sieve.js +++ /dev/null @@ -1,193 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("sieve", function(config) { - function words(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - - var keywords = words("if elsif else stop require"); - var atoms = words("true false not"); - var indentUnit = config.indentUnit; - - function tokenBase(stream, state) { - - var ch = stream.next(); - if (ch == "/" && stream.eat("*")) { - state.tokenize = tokenCComment; - return tokenCComment(stream, state); - } - - if (ch === '#') { - stream.skipToEnd(); - return "comment"; - } - - if (ch == "\"") { - state.tokenize = tokenString(ch); - return state.tokenize(stream, state); - } - - if (ch == "(") { - state._indent.push("("); - // add virtual angel wings so that editor behaves... - // ...more sane incase of broken brackets - state._indent.push("{"); - return null; - } - - if (ch === "{") { - state._indent.push("{"); - return null; - } - - if (ch == ")") { - state._indent.pop(); - state._indent.pop(); - } - - if (ch === "}") { - state._indent.pop(); - return null; - } - - if (ch == ",") - return null; - - if (ch == ";") - return null; - - - if (/[{}\(\),;]/.test(ch)) - return null; - - // 1*DIGIT "K" / "M" / "G" - if (/\d/.test(ch)) { - stream.eatWhile(/[\d]/); - stream.eat(/[KkMmGg]/); - return "number"; - } - - // ":" (ALPHA / "_") *(ALPHA / DIGIT / "_") - if (ch == ":") { - stream.eatWhile(/[a-zA-Z_]/); - stream.eatWhile(/[a-zA-Z0-9_]/); - - return "operator"; - } - - stream.eatWhile(/\w/); - var cur = stream.current(); - - // "text:" *(SP / HTAB) (hash-comment / CRLF) - // *(multiline-literal / multiline-dotstart) - // "." CRLF - if ((cur == "text") && stream.eat(":")) - { - state.tokenize = tokenMultiLineString; - return "string"; - } - - if (keywords.propertyIsEnumerable(cur)) - return "keyword"; - - if (atoms.propertyIsEnumerable(cur)) - return "atom"; - - return null; - } - - function tokenMultiLineString(stream, state) - { - state._multiLineString = true; - // the first line is special it may contain a comment - if (!stream.sol()) { - stream.eatSpace(); - - if (stream.peek() == "#") { - stream.skipToEnd(); - return "comment"; - } - - stream.skipToEnd(); - return "string"; - } - - if ((stream.next() == ".") && (stream.eol())) - { - state._multiLineString = false; - state.tokenize = tokenBase; - } - - return "string"; - } - - function tokenCComment(stream, state) { - var maybeEnd = false, ch; - while ((ch = stream.next()) != null) { - if (maybeEnd && ch == "/") { - state.tokenize = tokenBase; - break; - } - maybeEnd = (ch == "*"); - } - return "comment"; - } - - function tokenString(quote) { - return function(stream, state) { - var escaped = false, ch; - while ((ch = stream.next()) != null) { - if (ch == quote && !escaped) - break; - escaped = !escaped && ch == "\\"; - } - if (!escaped) state.tokenize = tokenBase; - return "string"; - }; - } - - return { - startState: function(base) { - return {tokenize: tokenBase, - baseIndent: base || 0, - _indent: []}; - }, - - token: function(stream, state) { - if (stream.eatSpace()) - return null; - - return (state.tokenize || tokenBase)(stream, state);; - }, - - indent: function(state, _textAfter) { - var length = state._indent.length; - if (_textAfter && (_textAfter[0] == "}")) - length--; - - if (length <0) - length = 0; - - return length * indentUnit; - }, - - electricChars: "}" - }; -}); - -CodeMirror.defineMIME("application/sieve", "sieve"); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/slim/index.html b/public/plugins/codemirror-5.17.0/mode/slim/index.html deleted file mode 100644 index 7fa4e50df..000000000 --- a/public/plugins/codemirror-5.17.0/mode/slim/index.html +++ /dev/null @@ -1,96 +0,0 @@ - - -CodeMirror: SLIM mode - - - - - - - - - - - - - - - - - - - - -
    -

    SLIM mode

    -
    - - -

    MIME types defined: application/x-slim.

    - -

    - Parsing/Highlighting Tests: - normal, - verbose. -

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/slim/slim.js b/public/plugins/codemirror-5.17.0/mode/slim/slim.js deleted file mode 100644 index 991a97efc..000000000 --- a/public/plugins/codemirror-5.17.0/mode/slim/slim.js +++ /dev/null @@ -1,575 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -// Slim Highlighting for CodeMirror copyright (c) HicknHack Software Gmbh - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed"), require("../ruby/ruby")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../htmlmixed/htmlmixed", "../ruby/ruby"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - - CodeMirror.defineMode("slim", function(config) { - var htmlMode = CodeMirror.getMode(config, {name: "htmlmixed"}); - var rubyMode = CodeMirror.getMode(config, "ruby"); - var modes = { html: htmlMode, ruby: rubyMode }; - var embedded = { - ruby: "ruby", - javascript: "javascript", - css: "text/css", - sass: "text/x-sass", - scss: "text/x-scss", - less: "text/x-less", - styl: "text/x-styl", // no highlighting so far - coffee: "coffeescript", - asciidoc: "text/x-asciidoc", - markdown: "text/x-markdown", - textile: "text/x-textile", // no highlighting so far - creole: "text/x-creole", // no highlighting so far - wiki: "text/x-wiki", // no highlighting so far - mediawiki: "text/x-mediawiki", // no highlighting so far - rdoc: "text/x-rdoc", // no highlighting so far - builder: "text/x-builder", // no highlighting so far - nokogiri: "text/x-nokogiri", // no highlighting so far - erb: "application/x-erb" - }; - var embeddedRegexp = function(map){ - var arr = []; - for(var key in map) arr.push(key); - return new RegExp("^("+arr.join('|')+"):"); - }(embedded); - - var styleMap = { - "commentLine": "comment", - "slimSwitch": "operator special", - "slimTag": "tag", - "slimId": "attribute def", - "slimClass": "attribute qualifier", - "slimAttribute": "attribute", - "slimSubmode": "keyword special", - "closeAttributeTag": null, - "slimDoctype": null, - "lineContinuation": null - }; - var closing = { - "{": "}", - "[": "]", - "(": ")" - }; - - var nameStartChar = "_a-zA-Z\xC0-\xD6\xD8-\xF6\xF8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD"; - var nameChar = nameStartChar + "\\-0-9\xB7\u0300-\u036F\u203F-\u2040"; - var nameRegexp = new RegExp("^[:"+nameStartChar+"](?::["+nameChar+"]|["+nameChar+"]*)"); - var attributeNameRegexp = new RegExp("^[:"+nameStartChar+"][:\\."+nameChar+"]*(?=\\s*=)"); - var wrappedAttributeNameRegexp = new RegExp("^[:"+nameStartChar+"][:\\."+nameChar+"]*"); - var classNameRegexp = /^\.-?[_a-zA-Z]+[\w\-]*/; - var classIdRegexp = /^#[_a-zA-Z]+[\w\-]*/; - - function backup(pos, tokenize, style) { - var restore = function(stream, state) { - state.tokenize = tokenize; - if (stream.pos < pos) { - stream.pos = pos; - return style; - } - return state.tokenize(stream, state); - }; - return function(stream, state) { - state.tokenize = restore; - return tokenize(stream, state); - }; - } - - function maybeBackup(stream, state, pat, offset, style) { - var cur = stream.current(); - var idx = cur.search(pat); - if (idx > -1) { - state.tokenize = backup(stream.pos, state.tokenize, style); - stream.backUp(cur.length - idx - offset); - } - return style; - } - - function continueLine(state, column) { - state.stack = { - parent: state.stack, - style: "continuation", - indented: column, - tokenize: state.line - }; - state.line = state.tokenize; - } - function finishContinue(state) { - if (state.line == state.tokenize) { - state.line = state.stack.tokenize; - state.stack = state.stack.parent; - } - } - - function lineContinuable(column, tokenize) { - return function(stream, state) { - finishContinue(state); - if (stream.match(/^\\$/)) { - continueLine(state, column); - return "lineContinuation"; - } - var style = tokenize(stream, state); - if (stream.eol() && stream.current().match(/(?:^|[^\\])(?:\\\\)*\\$/)) { - stream.backUp(1); - } - return style; - }; - } - function commaContinuable(column, tokenize) { - return function(stream, state) { - finishContinue(state); - var style = tokenize(stream, state); - if (stream.eol() && stream.current().match(/,$/)) { - continueLine(state, column); - } - return style; - }; - } - - function rubyInQuote(endQuote, tokenize) { - // TODO: add multi line support - return function(stream, state) { - var ch = stream.peek(); - if (ch == endQuote && state.rubyState.tokenize.length == 1) { - // step out of ruby context as it seems to complete processing all the braces - stream.next(); - state.tokenize = tokenize; - return "closeAttributeTag"; - } else { - return ruby(stream, state); - } - }; - } - function startRubySplat(tokenize) { - var rubyState; - var runSplat = function(stream, state) { - if (state.rubyState.tokenize.length == 1 && !state.rubyState.context.prev) { - stream.backUp(1); - if (stream.eatSpace()) { - state.rubyState = rubyState; - state.tokenize = tokenize; - return tokenize(stream, state); - } - stream.next(); - } - return ruby(stream, state); - }; - return function(stream, state) { - rubyState = state.rubyState; - state.rubyState = CodeMirror.startState(rubyMode); - state.tokenize = runSplat; - return ruby(stream, state); - }; - } - - function ruby(stream, state) { - return rubyMode.token(stream, state.rubyState); - } - - function htmlLine(stream, state) { - if (stream.match(/^\\$/)) { - return "lineContinuation"; - } - return html(stream, state); - } - function html(stream, state) { - if (stream.match(/^#\{/)) { - state.tokenize = rubyInQuote("}", state.tokenize); - return null; - } - return maybeBackup(stream, state, /[^\\]#\{/, 1, htmlMode.token(stream, state.htmlState)); - } - - function startHtmlLine(lastTokenize) { - return function(stream, state) { - var style = htmlLine(stream, state); - if (stream.eol()) state.tokenize = lastTokenize; - return style; - }; - } - - function startHtmlMode(stream, state, offset) { - state.stack = { - parent: state.stack, - style: "html", - indented: stream.column() + offset, // pipe + space - tokenize: state.line - }; - state.line = state.tokenize = html; - return null; - } - - function comment(stream, state) { - stream.skipToEnd(); - return state.stack.style; - } - - function commentMode(stream, state) { - state.stack = { - parent: state.stack, - style: "comment", - indented: state.indented + 1, - tokenize: state.line - }; - state.line = comment; - return comment(stream, state); - } - - function attributeWrapper(stream, state) { - if (stream.eat(state.stack.endQuote)) { - state.line = state.stack.line; - state.tokenize = state.stack.tokenize; - state.stack = state.stack.parent; - return null; - } - if (stream.match(wrappedAttributeNameRegexp)) { - state.tokenize = attributeWrapperAssign; - return "slimAttribute"; - } - stream.next(); - return null; - } - function attributeWrapperAssign(stream, state) { - if (stream.match(/^==?/)) { - state.tokenize = attributeWrapperValue; - return null; - } - return attributeWrapper(stream, state); - } - function attributeWrapperValue(stream, state) { - var ch = stream.peek(); - if (ch == '"' || ch == "\'") { - state.tokenize = readQuoted(ch, "string", true, false, attributeWrapper); - stream.next(); - return state.tokenize(stream, state); - } - if (ch == '[') { - return startRubySplat(attributeWrapper)(stream, state); - } - if (stream.match(/^(true|false|nil)\b/)) { - state.tokenize = attributeWrapper; - return "keyword"; - } - return startRubySplat(attributeWrapper)(stream, state); - } - - function startAttributeWrapperMode(state, endQuote, tokenize) { - state.stack = { - parent: state.stack, - style: "wrapper", - indented: state.indented + 1, - tokenize: tokenize, - line: state.line, - endQuote: endQuote - }; - state.line = state.tokenize = attributeWrapper; - return null; - } - - function sub(stream, state) { - if (stream.match(/^#\{/)) { - state.tokenize = rubyInQuote("}", state.tokenize); - return null; - } - var subStream = new CodeMirror.StringStream(stream.string.slice(state.stack.indented), stream.tabSize); - subStream.pos = stream.pos - state.stack.indented; - subStream.start = stream.start - state.stack.indented; - subStream.lastColumnPos = stream.lastColumnPos - state.stack.indented; - subStream.lastColumnValue = stream.lastColumnValue - state.stack.indented; - var style = state.subMode.token(subStream, state.subState); - stream.pos = subStream.pos + state.stack.indented; - return style; - } - function firstSub(stream, state) { - state.stack.indented = stream.column(); - state.line = state.tokenize = sub; - return state.tokenize(stream, state); - } - - function createMode(mode) { - var query = embedded[mode]; - var spec = CodeMirror.mimeModes[query]; - if (spec) { - return CodeMirror.getMode(config, spec); - } - var factory = CodeMirror.modes[query]; - if (factory) { - return factory(config, {name: query}); - } - return CodeMirror.getMode(config, "null"); - } - - function getMode(mode) { - if (!modes.hasOwnProperty(mode)) { - return modes[mode] = createMode(mode); - } - return modes[mode]; - } - - function startSubMode(mode, state) { - var subMode = getMode(mode); - var subState = CodeMirror.startState(subMode); - - state.subMode = subMode; - state.subState = subState; - - state.stack = { - parent: state.stack, - style: "sub", - indented: state.indented + 1, - tokenize: state.line - }; - state.line = state.tokenize = firstSub; - return "slimSubmode"; - } - - function doctypeLine(stream, _state) { - stream.skipToEnd(); - return "slimDoctype"; - } - - function startLine(stream, state) { - var ch = stream.peek(); - if (ch == '<') { - return (state.tokenize = startHtmlLine(state.tokenize))(stream, state); - } - if (stream.match(/^[|']/)) { - return startHtmlMode(stream, state, 1); - } - if (stream.match(/^\/(!|\[\w+])?/)) { - return commentMode(stream, state); - } - if (stream.match(/^(-|==?[<>]?)/)) { - state.tokenize = lineContinuable(stream.column(), commaContinuable(stream.column(), ruby)); - return "slimSwitch"; - } - if (stream.match(/^doctype\b/)) { - state.tokenize = doctypeLine; - return "keyword"; - } - - var m = stream.match(embeddedRegexp); - if (m) { - return startSubMode(m[1], state); - } - - return slimTag(stream, state); - } - - function slim(stream, state) { - if (state.startOfLine) { - return startLine(stream, state); - } - return slimTag(stream, state); - } - - function slimTag(stream, state) { - if (stream.eat('*')) { - state.tokenize = startRubySplat(slimTagExtras); - return null; - } - if (stream.match(nameRegexp)) { - state.tokenize = slimTagExtras; - return "slimTag"; - } - return slimClass(stream, state); - } - function slimTagExtras(stream, state) { - if (stream.match(/^(<>?|> state.indented && state.last != "slimSubmode") { - state.line = state.tokenize = state.stack.tokenize; - state.stack = state.stack.parent; - state.subMode = null; - state.subState = null; - } - } - if (stream.eatSpace()) return null; - var style = state.tokenize(stream, state); - state.startOfLine = false; - if (style) state.last = style; - return styleMap.hasOwnProperty(style) ? styleMap[style] : style; - }, - - blankLine: function(state) { - if (state.subMode && state.subMode.blankLine) { - return state.subMode.blankLine(state.subState); - } - }, - - innerMode: function(state) { - if (state.subMode) return {state: state.subState, mode: state.subMode}; - return {state: state, mode: mode}; - } - - //indent: function(state) { - // return state.indented; - //} - }; - return mode; - }, "htmlmixed", "ruby"); - - CodeMirror.defineMIME("text/x-slim", "slim"); - CodeMirror.defineMIME("application/x-slim", "slim"); -}); diff --git a/public/plugins/codemirror-5.17.0/mode/slim/test.js b/public/plugins/codemirror-5.17.0/mode/slim/test.js deleted file mode 100644 index be4ddacb6..000000000 --- a/public/plugins/codemirror-5.17.0/mode/slim/test.js +++ /dev/null @@ -1,96 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -// Slim Highlighting for CodeMirror copyright (c) HicknHack Software Gmbh - -(function() { - var mode = CodeMirror.getMode({tabSize: 4, indentUnit: 2}, "slim"); - function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } - - // Requires at least one media query - MT("elementName", - "[tag h1] Hey There"); - - MT("oneElementPerLine", - "[tag h1] Hey There .h2"); - - MT("idShortcut", - "[attribute&def #test] Hey There"); - - MT("tagWithIdShortcuts", - "[tag h1][attribute&def #test] Hey There"); - - MT("classShortcut", - "[attribute&qualifier .hello] Hey There"); - - MT("tagWithIdAndClassShortcuts", - "[tag h1][attribute&def #test][attribute&qualifier .hello] Hey There"); - - MT("docType", - "[keyword doctype] xml"); - - MT("comment", - "[comment / Hello WORLD]"); - - MT("notComment", - "[tag h1] This is not a / comment "); - - MT("attributes", - "[tag a]([attribute title]=[string \"test\"]) [attribute href]=[string \"link\"]}"); - - MT("multiLineAttributes", - "[tag a]([attribute title]=[string \"test\"]", - " ) [attribute href]=[string \"link\"]}"); - - MT("htmlCode", - "[tag&bracket <][tag h1][tag&bracket >]Title[tag&bracket ]"); - - MT("rubyBlock", - "[operator&special =][variable-2 @item]"); - - MT("selectorRubyBlock", - "[tag a][attribute&qualifier .test][operator&special =] [variable-2 @item]"); - - MT("nestedRubyBlock", - "[tag a]", - " [operator&special =][variable puts] [string \"test\"]"); - - MT("multilinePlaintext", - "[tag p]", - " | Hello,", - " World"); - - MT("multilineRuby", - "[tag p]", - " [comment /# this is a comment]", - " [comment and this is a comment too]", - " | Date/Time", - " [operator&special -] [variable now] [operator =] [tag DateTime][operator .][property now]", - " [tag strong][operator&special =] [variable now]", - " [operator&special -] [keyword if] [variable now] [operator >] [tag DateTime][operator .][property parse]([string \"December 31, 2006\"])", - " [operator&special =][string \"Happy\"]", - " [operator&special =][string \"Belated\"]", - " [operator&special =][string \"Birthday\"]"); - - MT("multilineComment", - "[comment /]", - " [comment Multiline]", - " [comment Comment]"); - - MT("hamlAfterRubyTag", - "[attribute&qualifier .block]", - " [tag strong][operator&special =] [variable now]", - " [attribute&qualifier .test]", - " [operator&special =][variable now]", - " [attribute&qualifier .right]"); - - MT("stretchedRuby", - "[operator&special =] [variable puts] [string \"Hello\"],", - " [string \"World\"]"); - - MT("interpolationInHashAttribute", - "[tag div]{[attribute id] = [string \"]#{[variable test]}[string _]#{[variable ting]}[string \"]} test"); - - MT("interpolationInHTMLAttribute", - "[tag div]([attribute title]=[string \"]#{[variable test]}[string _]#{[variable ting]()}[string \"]) Test"); -})(); diff --git a/public/plugins/codemirror-5.17.0/mode/smalltalk/index.html b/public/plugins/codemirror-5.17.0/mode/smalltalk/index.html deleted file mode 100644 index 2155ebc2a..000000000 --- a/public/plugins/codemirror-5.17.0/mode/smalltalk/index.html +++ /dev/null @@ -1,68 +0,0 @@ - - -CodeMirror: Smalltalk mode - - - - - - - - - - -
    -

    Smalltalk mode

    -
    - - - -

    Simple Smalltalk mode.

    - -

    MIME types defined: text/x-stsrc.

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/smalltalk/smalltalk.js b/public/plugins/codemirror-5.17.0/mode/smalltalk/smalltalk.js deleted file mode 100644 index bb510ba2e..000000000 --- a/public/plugins/codemirror-5.17.0/mode/smalltalk/smalltalk.js +++ /dev/null @@ -1,168 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode('smalltalk', function(config) { - - var specialChars = /[+\-\/\\*~<>=@%|&?!.,:;^]/; - var keywords = /true|false|nil|self|super|thisContext/; - - var Context = function(tokenizer, parent) { - this.next = tokenizer; - this.parent = parent; - }; - - var Token = function(name, context, eos) { - this.name = name; - this.context = context; - this.eos = eos; - }; - - var State = function() { - this.context = new Context(next, null); - this.expectVariable = true; - this.indentation = 0; - this.userIndentationDelta = 0; - }; - - State.prototype.userIndent = function(indentation) { - this.userIndentationDelta = indentation > 0 ? (indentation / config.indentUnit - this.indentation) : 0; - }; - - var next = function(stream, context, state) { - var token = new Token(null, context, false); - var aChar = stream.next(); - - if (aChar === '"') { - token = nextComment(stream, new Context(nextComment, context)); - - } else if (aChar === '\'') { - token = nextString(stream, new Context(nextString, context)); - - } else if (aChar === '#') { - if (stream.peek() === '\'') { - stream.next(); - token = nextSymbol(stream, new Context(nextSymbol, context)); - } else { - if (stream.eatWhile(/[^\s.{}\[\]()]/)) - token.name = 'string-2'; - else - token.name = 'meta'; - } - - } else if (aChar === '$') { - if (stream.next() === '<') { - stream.eatWhile(/[^\s>]/); - stream.next(); - } - token.name = 'string-2'; - - } else if (aChar === '|' && state.expectVariable) { - token.context = new Context(nextTemporaries, context); - - } else if (/[\[\]{}()]/.test(aChar)) { - token.name = 'bracket'; - token.eos = /[\[{(]/.test(aChar); - - if (aChar === '[') { - state.indentation++; - } else if (aChar === ']') { - state.indentation = Math.max(0, state.indentation - 1); - } - - } else if (specialChars.test(aChar)) { - stream.eatWhile(specialChars); - token.name = 'operator'; - token.eos = aChar !== ';'; // ; cascaded message expression - - } else if (/\d/.test(aChar)) { - stream.eatWhile(/[\w\d]/); - token.name = 'number'; - - } else if (/[\w_]/.test(aChar)) { - stream.eatWhile(/[\w\d_]/); - token.name = state.expectVariable ? (keywords.test(stream.current()) ? 'keyword' : 'variable') : null; - - } else { - token.eos = state.expectVariable; - } - - return token; - }; - - var nextComment = function(stream, context) { - stream.eatWhile(/[^"]/); - return new Token('comment', stream.eat('"') ? context.parent : context, true); - }; - - var nextString = function(stream, context) { - stream.eatWhile(/[^']/); - return new Token('string', stream.eat('\'') ? context.parent : context, false); - }; - - var nextSymbol = function(stream, context) { - stream.eatWhile(/[^']/); - return new Token('string-2', stream.eat('\'') ? context.parent : context, false); - }; - - var nextTemporaries = function(stream, context) { - var token = new Token(null, context, false); - var aChar = stream.next(); - - if (aChar === '|') { - token.context = context.parent; - token.eos = true; - - } else { - stream.eatWhile(/[^|]/); - token.name = 'variable'; - } - - return token; - }; - - return { - startState: function() { - return new State; - }, - - token: function(stream, state) { - state.userIndent(stream.indentation()); - - if (stream.eatSpace()) { - return null; - } - - var token = state.context.next(stream, state.context, state); - state.context = token.context; - state.expectVariable = token.eos; - - return token.name; - }, - - blankLine: function(state) { - state.userIndent(0); - }, - - indent: function(state, textAfter) { - var i = state.context.next === next && textAfter && textAfter.charAt(0) === ']' ? -1 : state.userIndentationDelta; - return (state.indentation + i) * config.indentUnit; - }, - - electricChars: ']' - }; - -}); - -CodeMirror.defineMIME('text/x-stsrc', {name: 'smalltalk'}); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/smarty/index.html b/public/plugins/codemirror-5.17.0/mode/smarty/index.html deleted file mode 100644 index b19c8f09b..000000000 --- a/public/plugins/codemirror-5.17.0/mode/smarty/index.html +++ /dev/null @@ -1,138 +0,0 @@ - - -CodeMirror: Smarty mode - - - - - - - - - - -
    -

    Smarty mode

    -
    - -

    Mode for Smarty version 2 or 3, which allows for custom delimiter tags.

    - -

    Several configuration parameters are supported:

    - -
      -
    • leftDelimiter and rightDelimiter, - which should be strings that determine where the Smarty syntax - starts and ends.
    • -
    • version, which should be 2 or 3.
    • -
    • baseMode, which can be a mode spec - like "text/html" to set a different background mode.
    • -
    - -

    MIME types defined: text/x-smarty

    - -

    Smarty 2, custom delimiters

    - -
    - -

    Smarty 3

    - - - - - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/smarty/smarty.js b/public/plugins/codemirror-5.17.0/mode/smarty/smarty.js deleted file mode 100644 index 6e0fbed42..000000000 --- a/public/plugins/codemirror-5.17.0/mode/smarty/smarty.js +++ /dev/null @@ -1,225 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -/** - * Smarty 2 and 3 mode. - */ - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - CodeMirror.defineMode("smarty", function(config, parserConf) { - var rightDelimiter = parserConf.rightDelimiter || "}"; - var leftDelimiter = parserConf.leftDelimiter || "{"; - var version = parserConf.version || 2; - var baseMode = CodeMirror.getMode(config, parserConf.baseMode || "null"); - - var keyFunctions = ["debug", "extends", "function", "include", "literal"]; - var regs = { - operatorChars: /[+\-*&%=<>!?]/, - validIdentifier: /[a-zA-Z0-9_]/, - stringChar: /['"]/ - }; - - var last; - function cont(style, lastType) { - last = lastType; - return style; - } - - function chain(stream, state, parser) { - state.tokenize = parser; - return parser(stream, state); - } - - // Smarty 3 allows { and } surrounded by whitespace to NOT slip into Smarty mode - function doesNotCount(stream, pos) { - if (pos == null) pos = stream.pos; - return version === 3 && leftDelimiter == "{" && - (pos == stream.string.length || /\s/.test(stream.string.charAt(pos))); - } - - function tokenTop(stream, state) { - var string = stream.string; - for (var scan = stream.pos;;) { - var nextMatch = string.indexOf(leftDelimiter, scan); - scan = nextMatch + leftDelimiter.length; - if (nextMatch == -1 || !doesNotCount(stream, nextMatch + leftDelimiter.length)) break; - } - if (nextMatch == stream.pos) { - stream.match(leftDelimiter); - if (stream.eat("*")) { - return chain(stream, state, tokenBlock("comment", "*" + rightDelimiter)); - } else { - state.depth++; - state.tokenize = tokenSmarty; - last = "startTag"; - return "tag"; - } - } - - if (nextMatch > -1) stream.string = string.slice(0, nextMatch); - var token = baseMode.token(stream, state.base); - if (nextMatch > -1) stream.string = string; - return token; - } - - // parsing Smarty content - function tokenSmarty(stream, state) { - if (stream.match(rightDelimiter, true)) { - if (version === 3) { - state.depth--; - if (state.depth <= 0) { - state.tokenize = tokenTop; - } - } else { - state.tokenize = tokenTop; - } - return cont("tag", null); - } - - if (stream.match(leftDelimiter, true)) { - state.depth++; - return cont("tag", "startTag"); - } - - var ch = stream.next(); - if (ch == "$") { - stream.eatWhile(regs.validIdentifier); - return cont("variable-2", "variable"); - } else if (ch == "|") { - return cont("operator", "pipe"); - } else if (ch == ".") { - return cont("operator", "property"); - } else if (regs.stringChar.test(ch)) { - state.tokenize = tokenAttribute(ch); - return cont("string", "string"); - } else if (regs.operatorChars.test(ch)) { - stream.eatWhile(regs.operatorChars); - return cont("operator", "operator"); - } else if (ch == "[" || ch == "]") { - return cont("bracket", "bracket"); - } else if (ch == "(" || ch == ")") { - return cont("bracket", "operator"); - } else if (/\d/.test(ch)) { - stream.eatWhile(/\d/); - return cont("number", "number"); - } else { - - if (state.last == "variable") { - if (ch == "@") { - stream.eatWhile(regs.validIdentifier); - return cont("property", "property"); - } else if (ch == "|") { - stream.eatWhile(regs.validIdentifier); - return cont("qualifier", "modifier"); - } - } else if (state.last == "pipe") { - stream.eatWhile(regs.validIdentifier); - return cont("qualifier", "modifier"); - } else if (state.last == "whitespace") { - stream.eatWhile(regs.validIdentifier); - return cont("attribute", "modifier"); - } if (state.last == "property") { - stream.eatWhile(regs.validIdentifier); - return cont("property", null); - } else if (/\s/.test(ch)) { - last = "whitespace"; - return null; - } - - var str = ""; - if (ch != "/") { - str += ch; - } - var c = null; - while (c = stream.eat(regs.validIdentifier)) { - str += c; - } - for (var i=0, j=keyFunctions.length; i - -CodeMirror: Solr mode - - - - - - - - - -
    -

    Solr mode

    - -
    - -
    - - - -

    MIME types defined: text/x-solr.

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/solr/solr.js b/public/plugins/codemirror-5.17.0/mode/solr/solr.js deleted file mode 100644 index f7f708789..000000000 --- a/public/plugins/codemirror-5.17.0/mode/solr/solr.js +++ /dev/null @@ -1,104 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("solr", function() { - "use strict"; - - var isStringChar = /[^\s\|\!\+\-\*\?\~\^\&\:\(\)\[\]\{\}\^\"\\]/; - var isOperatorChar = /[\|\!\+\-\*\?\~\^\&]/; - var isOperatorString = /^(OR|AND|NOT|TO)$/i; - - function isNumber(word) { - return parseFloat(word, 10).toString() === word; - } - - function tokenString(quote) { - return function(stream, state) { - var escaped = false, next; - while ((next = stream.next()) != null) { - if (next == quote && !escaped) break; - escaped = !escaped && next == "\\"; - } - - if (!escaped) state.tokenize = tokenBase; - return "string"; - }; - } - - function tokenOperator(operator) { - return function(stream, state) { - var style = "operator"; - if (operator == "+") - style += " positive"; - else if (operator == "-") - style += " negative"; - else if (operator == "|") - stream.eat(/\|/); - else if (operator == "&") - stream.eat(/\&/); - else if (operator == "^") - style += " boost"; - - state.tokenize = tokenBase; - return style; - }; - } - - function tokenWord(ch) { - return function(stream, state) { - var word = ch; - while ((ch = stream.peek()) && ch.match(isStringChar) != null) { - word += stream.next(); - } - - state.tokenize = tokenBase; - if (isOperatorString.test(word)) - return "operator"; - else if (isNumber(word)) - return "number"; - else if (stream.peek() == ":") - return "field"; - else - return "string"; - }; - } - - function tokenBase(stream, state) { - var ch = stream.next(); - if (ch == '"') - state.tokenize = tokenString(ch); - else if (isOperatorChar.test(ch)) - state.tokenize = tokenOperator(ch); - else if (isStringChar.test(ch)) - state.tokenize = tokenWord(ch); - - return (state.tokenize != tokenBase) ? state.tokenize(stream, state) : null; - } - - return { - startState: function() { - return { - tokenize: tokenBase - }; - }, - - token: function(stream, state) { - if (stream.eatSpace()) return null; - return state.tokenize(stream, state); - } - }; -}); - -CodeMirror.defineMIME("text/x-solr", "solr"); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/soy/index.html b/public/plugins/codemirror-5.17.0/mode/soy/index.html deleted file mode 100644 index f0216f097..000000000 --- a/public/plugins/codemirror-5.17.0/mode/soy/index.html +++ /dev/null @@ -1,68 +0,0 @@ - - -CodeMirror: Soy (Closure Template) mode - - - - - - - - - - - - - - -
    -

    Soy (Closure Template) mode

    -
    - - - -

    A mode for Closure Templates (Soy).

    -

    MIME type defined: text/x-soy.

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/soy/soy.js b/public/plugins/codemirror-5.17.0/mode/soy/soy.js deleted file mode 100644 index 580c306f1..000000000 --- a/public/plugins/codemirror-5.17.0/mode/soy/soy.js +++ /dev/null @@ -1,199 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../htmlmixed/htmlmixed"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - var indentingTags = ["template", "literal", "msg", "fallbackmsg", "let", "if", "elseif", - "else", "switch", "case", "default", "foreach", "ifempty", "for", - "call", "param", "deltemplate", "delcall", "log"]; - - CodeMirror.defineMode("soy", function(config) { - var textMode = CodeMirror.getMode(config, "text/plain"); - var modes = { - html: CodeMirror.getMode(config, {name: "text/html", multilineTagIndentFactor: 2, multilineTagIndentPastTag: false}), - attributes: textMode, - text: textMode, - uri: textMode, - css: CodeMirror.getMode(config, "text/css"), - js: CodeMirror.getMode(config, {name: "text/javascript", statementIndent: 2 * config.indentUnit}) - }; - - function last(array) { - return array[array.length - 1]; - } - - function tokenUntil(stream, state, untilRegExp) { - var oldString = stream.string; - var match = untilRegExp.exec(oldString.substr(stream.pos)); - if (match) { - // We don't use backUp because it backs up just the position, not the state. - // This uses an undocumented API. - stream.string = oldString.substr(0, stream.pos + match.index); - } - var result = stream.hideFirstChars(state.indent, function() { - return state.localMode.token(stream, state.localState); - }); - stream.string = oldString; - return result; - } - - return { - startState: function() { - return { - kind: [], - kindTag: [], - soyState: [], - indent: 0, - localMode: modes.html, - localState: CodeMirror.startState(modes.html) - }; - }, - - copyState: function(state) { - return { - tag: state.tag, // Last seen Soy tag. - kind: state.kind.concat([]), // Values of kind="" attributes. - kindTag: state.kindTag.concat([]), // Opened tags with kind="" attributes. - soyState: state.soyState.concat([]), - indent: state.indent, // Indentation of the following line. - localMode: state.localMode, - localState: CodeMirror.copyState(state.localMode, state.localState) - }; - }, - - token: function(stream, state) { - var match; - - switch (last(state.soyState)) { - case "comment": - if (stream.match(/^.*?\*\//)) { - state.soyState.pop(); - } else { - stream.skipToEnd(); - } - return "comment"; - - case "variable": - if (stream.match(/^}/)) { - state.indent -= 2 * config.indentUnit; - state.soyState.pop(); - return "variable-2"; - } - stream.next(); - return null; - - case "tag": - if (stream.match(/^\/?}/)) { - if (state.tag == "/template" || state.tag == "/deltemplate") state.indent = 0; - else state.indent -= (stream.current() == "/}" || indentingTags.indexOf(state.tag) == -1 ? 2 : 1) * config.indentUnit; - state.soyState.pop(); - return "keyword"; - } else if (stream.match(/^([\w?]+)(?==)/)) { - if (stream.current() == "kind" && (match = stream.match(/^="([^"]+)/, false))) { - var kind = match[1]; - state.kind.push(kind); - state.kindTag.push(state.tag); - state.localMode = modes[kind] || modes.html; - state.localState = CodeMirror.startState(state.localMode); - } - return "attribute"; - } else if (stream.match(/^"/)) { - state.soyState.push("string"); - return "string"; - } - stream.next(); - return null; - - case "literal": - if (stream.match(/^(?=\{\/literal})/)) { - state.indent -= config.indentUnit; - state.soyState.pop(); - return this.token(stream, state); - } - return tokenUntil(stream, state, /\{\/literal}/); - - case "string": - var match = stream.match(/^.*?("|\\[\s\S])/); - if (!match) { - stream.skipToEnd(); - } else if (match[1] == "\"") { - state.soyState.pop(); - } - return "string"; - } - - if (stream.match(/^\/\*/)) { - state.soyState.push("comment"); - return "comment"; - } else if (stream.match(stream.sol() ? /^\s*\/\/.*/ : /^\s+\/\/.*/)) { - return "comment"; - } else if (stream.match(/^\{\$[\w?]*/)) { - state.indent += 2 * config.indentUnit; - state.soyState.push("variable"); - return "variable-2"; - } else if (stream.match(/^\{literal}/)) { - state.indent += config.indentUnit; - state.soyState.push("literal"); - return "keyword"; - } else if (match = stream.match(/^\{([\/@\\]?[\w?]*)/)) { - if (match[1] != "/switch") - state.indent += (/^(\/|(else|elseif|case|default)$)/.test(match[1]) && state.tag != "switch" ? 1 : 2) * config.indentUnit; - state.tag = match[1]; - if (state.tag == "/" + last(state.kindTag)) { - // We found the tag that opened the current kind="". - state.kind.pop(); - state.kindTag.pop(); - state.localMode = modes[last(state.kind)] || modes.html; - state.localState = CodeMirror.startState(state.localMode); - } - state.soyState.push("tag"); - return "keyword"; - } - - return tokenUntil(stream, state, /\{|\s+\/\/|\/\*/); - }, - - indent: function(state, textAfter) { - var indent = state.indent, top = last(state.soyState); - if (top == "comment") return CodeMirror.Pass; - - if (top == "literal") { - if (/^\{\/literal}/.test(textAfter)) indent -= config.indentUnit; - } else { - if (/^\s*\{\/(template|deltemplate)\b/.test(textAfter)) return 0; - if (/^\{(\/|(fallbackmsg|elseif|else|ifempty)\b)/.test(textAfter)) indent -= config.indentUnit; - if (state.tag != "switch" && /^\{(case|default)\b/.test(textAfter)) indent -= config.indentUnit; - if (/^\{\/switch\b/.test(textAfter)) indent -= config.indentUnit; - } - if (indent && state.localMode.indent) - indent += state.localMode.indent(state.localState, textAfter); - return indent; - }, - - innerMode: function(state) { - if (state.soyState.length && last(state.soyState) != "literal") return null; - else return {state: state.localState, mode: state.localMode}; - }, - - electricInput: /^\s*\{(\/|\/template|\/deltemplate|\/switch|fallbackmsg|elseif|else|case|default|ifempty|\/literal\})$/, - lineComment: "//", - blockCommentStart: "/*", - blockCommentEnd: "*/", - blockCommentContinue: " * ", - fold: "indent" - }; - }, "htmlmixed"); - - CodeMirror.registerHelper("hintWords", "soy", indentingTags.concat( - ["delpackage", "namespace", "alias", "print", "css", "debugger"])); - - CodeMirror.defineMIME("text/x-soy", "soy"); -}); diff --git a/public/plugins/codemirror-5.17.0/mode/sparql/index.html b/public/plugins/codemirror-5.17.0/mode/sparql/index.html deleted file mode 100644 index 84ef4d363..000000000 --- a/public/plugins/codemirror-5.17.0/mode/sparql/index.html +++ /dev/null @@ -1,61 +0,0 @@ - - -CodeMirror: SPARQL mode - - - - - - - - - - -
    -

    SPARQL mode

    -
    - - -

    MIME types defined: application/sparql-query.

    - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/sparql/sparql.js b/public/plugins/codemirror-5.17.0/mode/sparql/sparql.js deleted file mode 100644 index 095dcca65..000000000 --- a/public/plugins/codemirror-5.17.0/mode/sparql/sparql.js +++ /dev/null @@ -1,180 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("sparql", function(config) { - var indentUnit = config.indentUnit; - var curPunc; - - function wordRegexp(words) { - return new RegExp("^(?:" + words.join("|") + ")$", "i"); - } - var ops = wordRegexp(["str", "lang", "langmatches", "datatype", "bound", "sameterm", "isiri", "isuri", - "iri", "uri", "bnode", "count", "sum", "min", "max", "avg", "sample", - "group_concat", "rand", "abs", "ceil", "floor", "round", "concat", "substr", "strlen", - "replace", "ucase", "lcase", "encode_for_uri", "contains", "strstarts", "strends", - "strbefore", "strafter", "year", "month", "day", "hours", "minutes", "seconds", - "timezone", "tz", "now", "uuid", "struuid", "md5", "sha1", "sha256", "sha384", - "sha512", "coalesce", "if", "strlang", "strdt", "isnumeric", "regex", "exists", - "isblank", "isliteral", "a", "bind"]); - var keywords = wordRegexp(["base", "prefix", "select", "distinct", "reduced", "construct", "describe", - "ask", "from", "named", "where", "order", "limit", "offset", "filter", "optional", - "graph", "by", "asc", "desc", "as", "having", "undef", "values", "group", - "minus", "in", "not", "service", "silent", "using", "insert", "delete", "union", - "true", "false", "with", - "data", "copy", "to", "move", "add", "create", "drop", "clear", "load"]); - var operatorChars = /[*+\-<>=&|\^\/!\?]/; - - function tokenBase(stream, state) { - var ch = stream.next(); - curPunc = null; - if (ch == "$" || ch == "?") { - if(ch == "?" && stream.match(/\s/, false)){ - return "operator"; - } - stream.match(/^[\w\d]*/); - return "variable-2"; - } - else if (ch == "<" && !stream.match(/^[\s\u00a0=]/, false)) { - stream.match(/^[^\s\u00a0>]*>?/); - return "atom"; - } - else if (ch == "\"" || ch == "'") { - state.tokenize = tokenLiteral(ch); - return state.tokenize(stream, state); - } - else if (/[{}\(\),\.;\[\]]/.test(ch)) { - curPunc = ch; - return "bracket"; - } - else if (ch == "#") { - stream.skipToEnd(); - return "comment"; - } - else if (operatorChars.test(ch)) { - stream.eatWhile(operatorChars); - return "operator"; - } - else if (ch == ":") { - stream.eatWhile(/[\w\d\._\-]/); - return "atom"; - } - else if (ch == "@") { - stream.eatWhile(/[a-z\d\-]/i); - return "meta"; - } - else { - stream.eatWhile(/[_\w\d]/); - if (stream.eat(":")) { - stream.eatWhile(/[\w\d_\-]/); - return "atom"; - } - var word = stream.current(); - if (ops.test(word)) - return "builtin"; - else if (keywords.test(word)) - return "keyword"; - else - return "variable"; - } - } - - function tokenLiteral(quote) { - return function(stream, state) { - var escaped = false, ch; - while ((ch = stream.next()) != null) { - if (ch == quote && !escaped) { - state.tokenize = tokenBase; - break; - } - escaped = !escaped && ch == "\\"; - } - return "string"; - }; - } - - function pushContext(state, type, col) { - state.context = {prev: state.context, indent: state.indent, col: col, type: type}; - } - function popContext(state) { - state.indent = state.context.indent; - state.context = state.context.prev; - } - - return { - startState: function() { - return {tokenize: tokenBase, - context: null, - indent: 0, - col: 0}; - }, - - token: function(stream, state) { - if (stream.sol()) { - if (state.context && state.context.align == null) state.context.align = false; - state.indent = stream.indentation(); - } - if (stream.eatSpace()) return null; - var style = state.tokenize(stream, state); - - if (style != "comment" && state.context && state.context.align == null && state.context.type != "pattern") { - state.context.align = true; - } - - if (curPunc == "(") pushContext(state, ")", stream.column()); - else if (curPunc == "[") pushContext(state, "]", stream.column()); - else if (curPunc == "{") pushContext(state, "}", stream.column()); - else if (/[\]\}\)]/.test(curPunc)) { - while (state.context && state.context.type == "pattern") popContext(state); - if (state.context && curPunc == state.context.type) { - popContext(state); - if (curPunc == "}" && state.context && state.context.type == "pattern") - popContext(state); - } - } - else if (curPunc == "." && state.context && state.context.type == "pattern") popContext(state); - else if (/atom|string|variable/.test(style) && state.context) { - if (/[\}\]]/.test(state.context.type)) - pushContext(state, "pattern", stream.column()); - else if (state.context.type == "pattern" && !state.context.align) { - state.context.align = true; - state.context.col = stream.column(); - } - } - - return style; - }, - - indent: function(state, textAfter) { - var firstChar = textAfter && textAfter.charAt(0); - var context = state.context; - if (/[\]\}]/.test(firstChar)) - while (context && context.type == "pattern") context = context.prev; - - var closing = context && firstChar == context.type; - if (!context) - return 0; - else if (context.type == "pattern") - return context.col; - else if (context.align) - return context.col + (closing ? 0 : 1); - else - return context.indent + (closing ? 0 : indentUnit); - }, - - lineComment: "#" - }; -}); - -CodeMirror.defineMIME("application/sparql-query", "sparql"); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/spreadsheet/index.html b/public/plugins/codemirror-5.17.0/mode/spreadsheet/index.html deleted file mode 100644 index a52f76f05..000000000 --- a/public/plugins/codemirror-5.17.0/mode/spreadsheet/index.html +++ /dev/null @@ -1,42 +0,0 @@ - - -CodeMirror: Spreadsheet mode - - - - - - - - - - -
    -

    Spreadsheet mode

    -
    - - - -

    MIME types defined: text/x-spreadsheet.

    - -

    The Spreadsheet Mode

    -

    Created by Robert Plummer

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/spreadsheet/spreadsheet.js b/public/plugins/codemirror-5.17.0/mode/spreadsheet/spreadsheet.js deleted file mode 100644 index 222f29766..000000000 --- a/public/plugins/codemirror-5.17.0/mode/spreadsheet/spreadsheet.js +++ /dev/null @@ -1,112 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - CodeMirror.defineMode("spreadsheet", function () { - return { - startState: function () { - return { - stringType: null, - stack: [] - }; - }, - token: function (stream, state) { - if (!stream) return; - - //check for state changes - if (state.stack.length === 0) { - //strings - if ((stream.peek() == '"') || (stream.peek() == "'")) { - state.stringType = stream.peek(); - stream.next(); // Skip quote - state.stack.unshift("string"); - } - } - - //return state - //stack has - switch (state.stack[0]) { - case "string": - while (state.stack[0] === "string" && !stream.eol()) { - if (stream.peek() === state.stringType) { - stream.next(); // Skip quote - state.stack.shift(); // Clear flag - } else if (stream.peek() === "\\") { - stream.next(); - stream.next(); - } else { - stream.match(/^.[^\\\"\']*/); - } - } - return "string"; - - case "characterClass": - while (state.stack[0] === "characterClass" && !stream.eol()) { - if (!(stream.match(/^[^\]\\]+/) || stream.match(/^\\./))) - state.stack.shift(); - } - return "operator"; - } - - var peek = stream.peek(); - - //no stack - switch (peek) { - case "[": - stream.next(); - state.stack.unshift("characterClass"); - return "bracket"; - case ":": - stream.next(); - return "operator"; - case "\\": - if (stream.match(/\\[a-z]+/)) return "string-2"; - else { - stream.next(); - return "atom"; - } - case ".": - case ",": - case ";": - case "*": - case "-": - case "+": - case "^": - case "<": - case "/": - case "=": - stream.next(); - return "atom"; - case "$": - stream.next(); - return "builtin"; - } - - if (stream.match(/\d+/)) { - if (stream.match(/^\w+/)) return "error"; - return "number"; - } else if (stream.match(/^[a-zA-Z_]\w*/)) { - if (stream.match(/(?=[\(.])/, false)) return "keyword"; - return "variable-2"; - } else if (["[", "]", "(", ")", "{", "}"].indexOf(peek) != -1) { - stream.next(); - return "bracket"; - } else if (!stream.eatSpace()) { - stream.next(); - } - return null; - } - }; - }); - - CodeMirror.defineMIME("text/x-spreadsheet", "spreadsheet"); -}); diff --git a/public/plugins/codemirror-5.17.0/mode/sql/index.html b/public/plugins/codemirror-5.17.0/mode/sql/index.html deleted file mode 100644 index dba069dc8..000000000 --- a/public/plugins/codemirror-5.17.0/mode/sql/index.html +++ /dev/null @@ -1,86 +0,0 @@ - - -CodeMirror: SQL Mode for CodeMirror - - - - - - - - - - - - -
    -

    SQL Mode for CodeMirror

    -
    - - -

    MIME types defined: - text/x-sql, - text/x-mysql, - text/x-mariadb, - text/x-cassandra, - text/x-plsql, - text/x-mssql, - text/x-hive, - text/x-pgsql, - text/x-gql. -

    - - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/sql/sql.js b/public/plugins/codemirror-5.17.0/mode/sql/sql.js deleted file mode 100644 index 01ebd80ae..000000000 --- a/public/plugins/codemirror-5.17.0/mode/sql/sql.js +++ /dev/null @@ -1,413 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("sql", function(config, parserConfig) { - "use strict"; - - var client = parserConfig.client || {}, - atoms = parserConfig.atoms || {"false": true, "true": true, "null": true}, - builtin = parserConfig.builtin || {}, - keywords = parserConfig.keywords || {}, - operatorChars = parserConfig.operatorChars || /^[*+\-%<>!=&|~^]/, - support = parserConfig.support || {}, - hooks = parserConfig.hooks || {}, - dateSQL = parserConfig.dateSQL || {"date" : true, "time" : true, "timestamp" : true}; - - function tokenBase(stream, state) { - var ch = stream.next(); - - // call hooks from the mime type - if (hooks[ch]) { - var result = hooks[ch](stream, state); - if (result !== false) return result; - } - - if (support.hexNumber == true && - ((ch == "0" && stream.match(/^[xX][0-9a-fA-F]+/)) - || (ch == "x" || ch == "X") && stream.match(/^'[0-9a-fA-F]+'/))) { - // hex - // ref: http://dev.mysql.com/doc/refman/5.5/en/hexadecimal-literals.html - return "number"; - } else if (support.binaryNumber == true && - (((ch == "b" || ch == "B") && stream.match(/^'[01]+'/)) - || (ch == "0" && stream.match(/^b[01]+/)))) { - // bitstring - // ref: http://dev.mysql.com/doc/refman/5.5/en/bit-field-literals.html - return "number"; - } else if (ch.charCodeAt(0) > 47 && ch.charCodeAt(0) < 58) { - // numbers - // ref: http://dev.mysql.com/doc/refman/5.5/en/number-literals.html - stream.match(/^[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?/); - support.decimallessFloat == true && stream.eat('.'); - return "number"; - } else if (ch == "?" && (stream.eatSpace() || stream.eol() || stream.eat(";"))) { - // placeholders - return "variable-3"; - } else if (ch == "'" || (ch == '"' && support.doubleQuote)) { - // strings - // ref: http://dev.mysql.com/doc/refman/5.5/en/string-literals.html - state.tokenize = tokenLiteral(ch); - return state.tokenize(stream, state); - } else if ((((support.nCharCast == true && (ch == "n" || ch == "N")) - || (support.charsetCast == true && ch == "_" && stream.match(/[a-z][a-z0-9]*/i))) - && (stream.peek() == "'" || stream.peek() == '"'))) { - // charset casting: _utf8'str', N'str', n'str' - // ref: http://dev.mysql.com/doc/refman/5.5/en/string-literals.html - return "keyword"; - } else if (/^[\(\),\;\[\]]/.test(ch)) { - // no highlighting - return null; - } else if (support.commentSlashSlash && ch == "/" && stream.eat("/")) { - // 1-line comment - stream.skipToEnd(); - return "comment"; - } else if ((support.commentHash && ch == "#") - || (ch == "-" && stream.eat("-") && (!support.commentSpaceRequired || stream.eat(" ")))) { - // 1-line comments - // ref: https://kb.askmonty.org/en/comment-syntax/ - stream.skipToEnd(); - return "comment"; - } else if (ch == "/" && stream.eat("*")) { - // multi-line comments - // ref: https://kb.askmonty.org/en/comment-syntax/ - state.tokenize = tokenComment; - return state.tokenize(stream, state); - } else if (ch == ".") { - // .1 for 0.1 - if (support.zerolessFloat == true && stream.match(/^(?:\d+(?:e[+-]?\d+)?)/i)) { - return "number"; - } - // .table_name (ODBC) - // // ref: http://dev.mysql.com/doc/refman/5.6/en/identifier-qualifiers.html - if (support.ODBCdotTable == true && stream.match(/^[a-zA-Z_]+/)) { - return "variable-2"; - } - } else if (operatorChars.test(ch)) { - // operators - stream.eatWhile(operatorChars); - return null; - } else if (ch == '{' && - (stream.match(/^( )*(d|D|t|T|ts|TS)( )*'[^']*'( )*}/) || stream.match(/^( )*(d|D|t|T|ts|TS)( )*"[^"]*"( )*}/))) { - // dates (weird ODBC syntax) - // ref: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-literals.html - return "number"; - } else { - stream.eatWhile(/^[_\w\d]/); - var word = stream.current().toLowerCase(); - // dates (standard SQL syntax) - // ref: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-literals.html - if (dateSQL.hasOwnProperty(word) && (stream.match(/^( )+'[^']*'/) || stream.match(/^( )+"[^"]*"/))) - return "number"; - if (atoms.hasOwnProperty(word)) return "atom"; - if (builtin.hasOwnProperty(word)) return "builtin"; - if (keywords.hasOwnProperty(word)) return "keyword"; - if (client.hasOwnProperty(word)) return "string-2"; - return null; - } - } - - // 'string', with char specified in quote escaped by '\' - function tokenLiteral(quote) { - return function(stream, state) { - var escaped = false, ch; - while ((ch = stream.next()) != null) { - if (ch == quote && !escaped) { - state.tokenize = tokenBase; - break; - } - escaped = !escaped && ch == "\\"; - } - return "string"; - }; - } - function tokenComment(stream, state) { - while (true) { - if (stream.skipTo("*")) { - stream.next(); - if (stream.eat("/")) { - state.tokenize = tokenBase; - break; - } - } else { - stream.skipToEnd(); - break; - } - } - return "comment"; - } - - function pushContext(stream, state, type) { - state.context = { - prev: state.context, - indent: stream.indentation(), - col: stream.column(), - type: type - }; - } - - function popContext(state) { - state.indent = state.context.indent; - state.context = state.context.prev; - } - - return { - startState: function() { - return {tokenize: tokenBase, context: null}; - }, - - token: function(stream, state) { - if (stream.sol()) { - if (state.context && state.context.align == null) - state.context.align = false; - } - if (stream.eatSpace()) return null; - - var style = state.tokenize(stream, state); - if (style == "comment") return style; - - if (state.context && state.context.align == null) - state.context.align = true; - - var tok = stream.current(); - if (tok == "(") - pushContext(stream, state, ")"); - else if (tok == "[") - pushContext(stream, state, "]"); - else if (state.context && state.context.type == tok) - popContext(state); - return style; - }, - - indent: function(state, textAfter) { - var cx = state.context; - if (!cx) return CodeMirror.Pass; - var closing = textAfter.charAt(0) == cx.type; - if (cx.align) return cx.col + (closing ? 0 : 1); - else return cx.indent + (closing ? 0 : config.indentUnit); - }, - - blockCommentStart: "/*", - blockCommentEnd: "*/", - lineComment: support.commentSlashSlash ? "//" : support.commentHash ? "#" : null - }; -}); - -(function() { - "use strict"; - - // `identifier` - function hookIdentifier(stream) { - // MySQL/MariaDB identifiers - // ref: http://dev.mysql.com/doc/refman/5.6/en/identifier-qualifiers.html - var ch; - while ((ch = stream.next()) != null) { - if (ch == "`" && !stream.eat("`")) return "variable-2"; - } - stream.backUp(stream.current().length - 1); - return stream.eatWhile(/\w/) ? "variable-2" : null; - } - - // variable token - function hookVar(stream) { - // variables - // @@prefix.varName @varName - // varName can be quoted with ` or ' or " - // ref: http://dev.mysql.com/doc/refman/5.5/en/user-variables.html - if (stream.eat("@")) { - stream.match(/^session\./); - stream.match(/^local\./); - stream.match(/^global\./); - } - - if (stream.eat("'")) { - stream.match(/^.*'/); - return "variable-2"; - } else if (stream.eat('"')) { - stream.match(/^.*"/); - return "variable-2"; - } else if (stream.eat("`")) { - stream.match(/^.*`/); - return "variable-2"; - } else if (stream.match(/^[0-9a-zA-Z$\.\_]+/)) { - return "variable-2"; - } - return null; - }; - - // short client keyword token - function hookClient(stream) { - // \N means NULL - // ref: http://dev.mysql.com/doc/refman/5.5/en/null-values.html - if (stream.eat("N")) { - return "atom"; - } - // \g, etc - // ref: http://dev.mysql.com/doc/refman/5.5/en/mysql-commands.html - return stream.match(/^[a-zA-Z.#!?]/) ? "variable-2" : null; - } - - // these keywords are used by all SQL dialects (however, a mode can still overwrite it) - var sqlKeywords = "alter and as asc between by count create delete desc distinct drop from group having in insert into is join like not on or order select set table union update values where limit "; - - // turn a space-separated list into an array - function set(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - - // A generic SQL Mode. It's not a standard, it just try to support what is generally supported - CodeMirror.defineMIME("text/x-sql", { - name: "sql", - keywords: set(sqlKeywords + "begin"), - builtin: set("bool boolean bit blob enum long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision real date datetime year unsigned signed decimal numeric"), - atoms: set("false true null unknown"), - operatorChars: /^[*+\-%<>!=]/, - dateSQL: set("date time timestamp"), - support: set("ODBCdotTable doubleQuote binaryNumber hexNumber") - }); - - CodeMirror.defineMIME("text/x-mssql", { - name: "sql", - client: set("charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee"), - keywords: set(sqlKeywords + "begin trigger proc view index for add constraint key primary foreign collate clustered nonclustered declare"), - builtin: set("bigint numeric bit smallint decimal smallmoney int tinyint money float real char varchar text nchar nvarchar ntext binary varbinary image cursor timestamp hierarchyid uniqueidentifier sql_variant xml table "), - atoms: set("false true null unknown"), - operatorChars: /^[*+\-%<>!=]/, - dateSQL: set("date datetimeoffset datetime2 smalldatetime datetime time"), - hooks: { - "@": hookVar - } - }); - - CodeMirror.defineMIME("text/x-mysql", { - name: "sql", - client: set("charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee"), - keywords: set(sqlKeywords + "accessible action add after algorithm all analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance diagnostics directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general get global grant grants group group_concat handler hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show signal slave slow smallint snapshot soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views warnings when while with work write xa xor year_month zerofill begin do then else loop repeat"), - builtin: set("bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric"), - atoms: set("false true null unknown"), - operatorChars: /^[*+\-%<>!=&|^]/, - dateSQL: set("date time timestamp"), - support: set("ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber doubleQuote nCharCast charsetCast commentHash commentSpaceRequired"), - hooks: { - "@": hookVar, - "`": hookIdentifier, - "\\": hookClient - } - }); - - CodeMirror.defineMIME("text/x-mariadb", { - name: "sql", - client: set("charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee"), - keywords: set(sqlKeywords + "accessible action add after algorithm all always analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance diagnostics directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general generated get global grant grants group groupby_concat handler hard hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password persistent phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show shutdown signal slave slow smallint snapshot soft soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views virtual warnings when while with work write xa xor year_month zerofill begin do then else loop repeat"), - builtin: set("bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric"), - atoms: set("false true null unknown"), - operatorChars: /^[*+\-%<>!=&|^]/, - dateSQL: set("date time timestamp"), - support: set("ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber doubleQuote nCharCast charsetCast commentHash commentSpaceRequired"), - hooks: { - "@": hookVar, - "`": hookIdentifier, - "\\": hookClient - } - }); - - // the query language used by Apache Cassandra is called CQL, but this mime type - // is called Cassandra to avoid confusion with Contextual Query Language - CodeMirror.defineMIME("text/x-cassandra", { - name: "sql", - client: { }, - keywords: set("add all allow alter and any apply as asc authorize batch begin by clustering columnfamily compact consistency count create custom delete desc distinct drop each_quorum exists filtering from grant if in index insert into key keyspace keyspaces level limit local_one local_quorum modify nan norecursive nosuperuser not of on one order password permission permissions primary quorum rename revoke schema select set storage superuser table three to token truncate ttl two type unlogged update use user users using values where with writetime"), - builtin: set("ascii bigint blob boolean counter decimal double float frozen inet int list map static text timestamp timeuuid tuple uuid varchar varint"), - atoms: set("false true infinity NaN"), - operatorChars: /^[<>=]/, - dateSQL: { }, - support: set("commentSlashSlash decimallessFloat"), - hooks: { } - }); - - // this is based on Peter Raganitsch's 'plsql' mode - CodeMirror.defineMIME("text/x-plsql", { - name: "sql", - client: set("appinfo arraysize autocommit autoprint autorecovery autotrace blockterminator break btitle cmdsep colsep compatibility compute concat copycommit copytypecheck define describe echo editfile embedded escape exec execute feedback flagger flush heading headsep instance linesize lno loboffset logsource long longchunksize markup native newpage numformat numwidth pagesize pause pno recsep recsepchar release repfooter repheader serveroutput shiftinout show showmode size spool sqlblanklines sqlcase sqlcode sqlcontinue sqlnumber sqlpluscompatibility sqlprefix sqlprompt sqlterminator suffix tab term termout time timing trimout trimspool ttitle underline verify version wrap"), - keywords: set("abort accept access add all alter and any array arraylen as asc assert assign at attributes audit authorization avg base_table begin between binary_integer body boolean by case cast char char_base check close cluster clusters colauth column comment commit compress connect connected constant constraint crash create current currval cursor data_base database date dba deallocate debugoff debugon decimal declare default definition delay delete desc digits dispose distinct do drop else elseif elsif enable end entry escape exception exception_init exchange exclusive exists exit external fast fetch file for force form from function generic goto grant group having identified if immediate in increment index indexes indicator initial initrans insert interface intersect into is key level library like limited local lock log logging long loop master maxextents maxtrans member minextents minus mislabel mode modify multiset new next no noaudit nocompress nologging noparallel not nowait number_base object of off offline on online only open option or order out package parallel partition pctfree pctincrease pctused pls_integer positive positiven pragma primary prior private privileges procedure public raise range raw read rebuild record ref references refresh release rename replace resource restrict return returning returns reverse revoke rollback row rowid rowlabel rownum rows run savepoint schema segment select separate session set share snapshot some space split sql start statement storage subtype successful synonym tabauth table tables tablespace task terminate then to trigger truncate type union unique unlimited unrecoverable unusable update use using validate value values variable view views when whenever where while with work"), - builtin: set("abs acos add_months ascii asin atan atan2 average bfile bfilename bigserial bit blob ceil character chartorowid chr clob concat convert cos cosh count dec decode deref dual dump dup_val_on_index empty error exp false float floor found glb greatest hextoraw initcap instr instrb int integer isopen last_day least length lengthb ln lower lpad ltrim lub make_ref max min mlslabel mod months_between natural naturaln nchar nclob new_time next_day nextval nls_charset_decl_len nls_charset_id nls_charset_name nls_initcap nls_lower nls_sort nls_upper nlssort no_data_found notfound null number numeric nvarchar2 nvl others power rawtohex real reftohex round rowcount rowidtochar rowtype rpad rtrim serial sign signtype sin sinh smallint soundex sqlcode sqlerrm sqrt stddev string substr substrb sum sysdate tan tanh to_char text to_date to_label to_multi_byte to_number to_single_byte translate true trunc uid unlogged upper user userenv varchar varchar2 variance varying vsize xml"), - operatorChars: /^[*+\-%<>!=~]/, - dateSQL: set("date time timestamp"), - support: set("doubleQuote nCharCast zerolessFloat binaryNumber hexNumber") - }); - - // Created to support specific hive keywords - CodeMirror.defineMIME("text/x-hive", { - name: "sql", - keywords: set("select alter $elem$ $key$ $value$ add after all analyze and archive as asc before between binary both bucket buckets by cascade case cast change cluster clustered clusterstatus collection column columns comment compute concatenate continue create cross cursor data database databases dbproperties deferred delete delimited desc describe directory disable distinct distribute drop else enable end escaped exclusive exists explain export extended external false fetch fields fileformat first format formatted from full function functions grant group having hold_ddltime idxproperties if import in index indexes inpath inputdriver inputformat insert intersect into is items join keys lateral left like limit lines load local location lock locks mapjoin materialized minus msck no_drop nocompress not of offline on option or order out outer outputdriver outputformat overwrite partition partitioned partitions percent plus preserve procedure purge range rcfile read readonly reads rebuild recordreader recordwriter recover reduce regexp rename repair replace restrict revoke right rlike row schema schemas semi sequencefile serde serdeproperties set shared show show_database sort sorted ssl statistics stored streamtable table tables tablesample tblproperties temporary terminated textfile then tmp to touch transform trigger true unarchive undo union uniquejoin unlock update use using utc utc_tmestamp view when where while with"), - builtin: set("bool boolean long timestamp tinyint smallint bigint int float double date datetime unsigned string array struct map uniontype"), - atoms: set("false true null unknown"), - operatorChars: /^[*+\-%<>!=]/, - dateSQL: set("date timestamp"), - support: set("ODBCdotTable doubleQuote binaryNumber hexNumber") - }); - - CodeMirror.defineMIME("text/x-pgsql", { - name: "sql", - client: set("source"), - // http://www.postgresql.org/docs/9.5/static/sql-keywords-appendix.html - keywords: set(sqlKeywords + "a abort abs absent absolute access according action ada add admin after aggregate all allocate also always analyse analyze any are array array_agg array_max_cardinality asensitive assertion assignment asymmetric at atomic attribute attributes authorization avg backward base64 before begin begin_frame begin_partition bernoulli binary bit_length blob blocked bom both breadth c cache call called cardinality cascade cascaded case cast catalog catalog_name ceil ceiling chain characteristics characters character_length character_set_catalog character_set_name character_set_schema char_length check checkpoint class class_origin clob close cluster coalesce cobol collate collation collation_catalog collation_name collation_schema collect column columns column_name command_function command_function_code comment comments commit committed concurrently condition condition_number configuration conflict connect connection connection_name constraint constraints constraint_catalog constraint_name constraint_schema constructor contains content continue control conversion convert copy corr corresponding cost covar_pop covar_samp cross csv cube cume_dist current current_catalog current_date current_default_transform_group current_path current_role current_row current_schema current_time current_timestamp current_transform_group_for_type current_user cursor cursor_name cycle data database datalink datetime_interval_code datetime_interval_precision day db deallocate dec declare default defaults deferrable deferred defined definer degree delimiter delimiters dense_rank depth deref derived describe descriptor deterministic diagnostics dictionary disable discard disconnect dispatch dlnewcopy dlpreviouscopy dlurlcomplete dlurlcompleteonly dlurlcompletewrite dlurlpath dlurlpathonly dlurlpathwrite dlurlscheme dlurlserver dlvalue do document domain dynamic dynamic_function dynamic_function_code each element else empty enable encoding encrypted end end-exec end_frame end_partition enforced enum equals escape event every except exception exclude excluding exclusive exec execute exists exp explain expression extension external extract false family fetch file filter final first first_value flag float floor following for force foreign fortran forward found frame_row free freeze fs full function functions fusion g general generated get global go goto grant granted greatest grouping groups handler header hex hierarchy hold hour id identity if ignore ilike immediate immediately immutable implementation implicit import including increment indent index indexes indicator inherit inherits initially inline inner inout input insensitive instance instantiable instead integrity intersect intersection invoker isnull isolation k key key_member key_type label lag language large last last_value lateral lead leading leakproof least left length level library like_regex link listen ln load local localtime localtimestamp location locator lock locked logged lower m map mapping match matched materialized max maxvalue max_cardinality member merge message_length message_octet_length message_text method min minute minvalue mod mode modifies module month more move multiset mumps name names namespace national natural nchar nclob nesting new next nfc nfd nfkc nfkd nil no none normalize normalized nothing notify notnull nowait nth_value ntile null nullable nullif nulls number object occurrences_regex octets octet_length of off offset oids old only open operator option options ordering ordinality others out outer output over overlaps overlay overriding owned owner p pad parameter parameter_mode parameter_name parameter_ordinal_position parameter_specific_catalog parameter_specific_name parameter_specific_schema parser partial partition pascal passing passthrough password percent percentile_cont percentile_disc percent_rank period permission placing plans pli policy portion position position_regex power precedes preceding prepare prepared preserve primary prior privileges procedural procedure program public quote range rank read reads reassign recheck recovery recursive ref references referencing refresh regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy regr_syy reindex relative release rename repeatable replace replica requiring reset respect restart restore restrict result return returned_cardinality returned_length returned_octet_length returned_sqlstate returning returns revoke right role rollback rollup routine routine_catalog routine_name routine_schema row rows row_count row_number rule savepoint scale schema schema_name scope scope_catalog scope_name scope_schema scroll search second section security selective self sensitive sequence sequences serializable server server_name session session_user setof sets share show similar simple size skip snapshot some source space specific specifictype specific_name sql sqlcode sqlerror sqlexception sqlstate sqlwarning sqrt stable standalone start state statement static statistics stddev_pop stddev_samp stdin stdout storage strict strip structure style subclass_origin submultiset substring substring_regex succeeds sum symmetric sysid system system_time system_user t tables tablesample tablespace table_name temp template temporary then ties timezone_hour timezone_minute to token top_level_count trailing transaction transactions_committed transactions_rolled_back transaction_active transform transforms translate translate_regex translation treat trigger trigger_catalog trigger_name trigger_schema trim trim_array true truncate trusted type types uescape unbounded uncommitted under unencrypted unique unknown unlink unlisten unlogged unnamed unnest until untyped upper uri usage user user_defined_type_catalog user_defined_type_code user_defined_type_name user_defined_type_schema using vacuum valid validate validator value value_of varbinary variadic var_pop var_samp verbose version versioning view views volatile when whenever whitespace width_bucket window within work wrapper write xmlagg xmlattributes xmlbinary xmlcast xmlcomment xmlconcat xmldeclaration xmldocument xmlelement xmlexists xmlforest xmliterate xmlnamespaces xmlparse xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltext xmlvalidate year yes loop repeat"), - // http://www.postgresql.org/docs/9.5/static/datatype.html - builtin: set("bigint int8 bigserial serial8 bit varying varbit boolean bool box bytea character char varchar cidr circle date double precision float8 inet integer int int4 interval json jsonb line lseg macaddr money numeric decimal path pg_lsn point polygon real float4 smallint int2 smallserial serial2 serial serial4 text time without zone with timetz timestamp timestamptz tsquery tsvector txid_snapshot uuid xml"), - atoms: set("false true null unknown"), - operatorChars: /^[*+\-%<>!=&|^\/#@?~]/, - dateSQL: set("date time timestamp"), - support: set("ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber nCharCast charsetCast") - }); - - // Google's SQL-like query language, GQL - CodeMirror.defineMIME("text/x-gql", { - name: "sql", - keywords: set("ancestor and asc by contains desc descendant distinct from group has in is limit offset on order select superset where"), - atoms: set("false true"), - builtin: set("blob datetime first key __key__ string integer double boolean null"), - operatorChars: /^[*+\-%<>!=]/ - }); -}()); - -}); - -/* - How Properties of Mime Types are used by SQL Mode - ================================================= - - keywords: - A list of keywords you want to be highlighted. - builtin: - A list of builtin types you want to be highlighted (if you want types to be of class "builtin" instead of "keyword"). - operatorChars: - All characters that must be handled as operators. - client: - Commands parsed and executed by the client (not the server). - support: - A list of supported syntaxes which are not common, but are supported by more than 1 DBMS. - * ODBCdotTable: .tableName - * zerolessFloat: .1 - * doubleQuote - * nCharCast: N'string' - * charsetCast: _utf8'string' - * commentHash: use # char for comments - * commentSlashSlash: use // for comments - * commentSpaceRequired: require a space after -- for comments - atoms: - Keywords that must be highlighted as atoms,. Some DBMS's support more atoms than others: - UNKNOWN, INFINITY, UNDERFLOW, NaN... - dateSQL: - Used for date/time SQL standard syntax, because not all DBMS's support same temporal types. -*/ diff --git a/public/plugins/codemirror-5.17.0/mode/stex/index.html b/public/plugins/codemirror-5.17.0/mode/stex/index.html deleted file mode 100644 index 14679da4f..000000000 --- a/public/plugins/codemirror-5.17.0/mode/stex/index.html +++ /dev/null @@ -1,110 +0,0 @@ - - -CodeMirror: sTeX mode - - - - - - - - - -
    -

    sTeX mode

    -
    - - -

    MIME types defined: text/x-stex.

    - -

    Parsing/Highlighting Tests: normal, verbose.

    - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/stex/stex.js b/public/plugins/codemirror-5.17.0/mode/stex/stex.js deleted file mode 100644 index 835ed46d1..000000000 --- a/public/plugins/codemirror-5.17.0/mode/stex/stex.js +++ /dev/null @@ -1,251 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -/* - * Author: Constantin Jucovschi (c.jucovschi@jacobs-university.de) - * Licence: MIT - */ - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - CodeMirror.defineMode("stex", function() { - "use strict"; - - function pushCommand(state, command) { - state.cmdState.push(command); - } - - function peekCommand(state) { - if (state.cmdState.length > 0) { - return state.cmdState[state.cmdState.length - 1]; - } else { - return null; - } - } - - function popCommand(state) { - var plug = state.cmdState.pop(); - if (plug) { - plug.closeBracket(); - } - } - - // returns the non-default plugin closest to the end of the list - function getMostPowerful(state) { - var context = state.cmdState; - for (var i = context.length - 1; i >= 0; i--) { - var plug = context[i]; - if (plug.name == "DEFAULT") { - continue; - } - return plug; - } - return { styleIdentifier: function() { return null; } }; - } - - function addPluginPattern(pluginName, cmdStyle, styles) { - return function () { - this.name = pluginName; - this.bracketNo = 0; - this.style = cmdStyle; - this.styles = styles; - this.argument = null; // \begin and \end have arguments that follow. These are stored in the plugin - - this.styleIdentifier = function() { - return this.styles[this.bracketNo - 1] || null; - }; - this.openBracket = function() { - this.bracketNo++; - return "bracket"; - }; - this.closeBracket = function() {}; - }; - } - - var plugins = {}; - - plugins["importmodule"] = addPluginPattern("importmodule", "tag", ["string", "builtin"]); - plugins["documentclass"] = addPluginPattern("documentclass", "tag", ["", "atom"]); - plugins["usepackage"] = addPluginPattern("usepackage", "tag", ["atom"]); - plugins["begin"] = addPluginPattern("begin", "tag", ["atom"]); - plugins["end"] = addPluginPattern("end", "tag", ["atom"]); - - plugins["DEFAULT"] = function () { - this.name = "DEFAULT"; - this.style = "tag"; - - this.styleIdentifier = this.openBracket = this.closeBracket = function() {}; - }; - - function setState(state, f) { - state.f = f; - } - - // called when in a normal (no environment) context - function normal(source, state) { - var plug; - // Do we look like '\command' ? If so, attempt to apply the plugin 'command' - if (source.match(/^\\[a-zA-Z@]+/)) { - var cmdName = source.current().slice(1); - plug = plugins[cmdName] || plugins["DEFAULT"]; - plug = new plug(); - pushCommand(state, plug); - setState(state, beginParams); - return plug.style; - } - - // escape characters - if (source.match(/^\\[$&%#{}_]/)) { - return "tag"; - } - - // white space control characters - if (source.match(/^\\[,;!\/\\]/)) { - return "tag"; - } - - // find if we're starting various math modes - if (source.match("\\[")) { - setState(state, function(source, state){ return inMathMode(source, state, "\\]"); }); - return "keyword"; - } - if (source.match("$$")) { - setState(state, function(source, state){ return inMathMode(source, state, "$$"); }); - return "keyword"; - } - if (source.match("$")) { - setState(state, function(source, state){ return inMathMode(source, state, "$"); }); - return "keyword"; - } - - var ch = source.next(); - if (ch == "%") { - source.skipToEnd(); - return "comment"; - } else if (ch == '}' || ch == ']') { - plug = peekCommand(state); - if (plug) { - plug.closeBracket(ch); - setState(state, beginParams); - } else { - return "error"; - } - return "bracket"; - } else if (ch == '{' || ch == '[') { - plug = plugins["DEFAULT"]; - plug = new plug(); - pushCommand(state, plug); - return "bracket"; - } else if (/\d/.test(ch)) { - source.eatWhile(/[\w.%]/); - return "atom"; - } else { - source.eatWhile(/[\w\-_]/); - plug = getMostPowerful(state); - if (plug.name == 'begin') { - plug.argument = source.current(); - } - return plug.styleIdentifier(); - } - } - - function inMathMode(source, state, endModeSeq) { - if (source.eatSpace()) { - return null; - } - if (source.match(endModeSeq)) { - setState(state, normal); - return "keyword"; - } - if (source.match(/^\\[a-zA-Z@]+/)) { - return "tag"; - } - if (source.match(/^[a-zA-Z]+/)) { - return "variable-2"; - } - // escape characters - if (source.match(/^\\[$&%#{}_]/)) { - return "tag"; - } - // white space control characters - if (source.match(/^\\[,;!\/]/)) { - return "tag"; - } - // special math-mode characters - if (source.match(/^[\^_&]/)) { - return "tag"; - } - // non-special characters - if (source.match(/^[+\-<>|=,\/@!*:;'"`~#?]/)) { - return null; - } - if (source.match(/^(\d+\.\d*|\d*\.\d+|\d+)/)) { - return "number"; - } - var ch = source.next(); - if (ch == "{" || ch == "}" || ch == "[" || ch == "]" || ch == "(" || ch == ")") { - return "bracket"; - } - - if (ch == "%") { - source.skipToEnd(); - return "comment"; - } - return "error"; - } - - function beginParams(source, state) { - var ch = source.peek(), lastPlug; - if (ch == '{' || ch == '[') { - lastPlug = peekCommand(state); - lastPlug.openBracket(ch); - source.eat(ch); - setState(state, normal); - return "bracket"; - } - if (/[ \t\r]/.test(ch)) { - source.eat(ch); - return null; - } - setState(state, normal); - popCommand(state); - - return normal(source, state); - } - - return { - startState: function() { - return { - cmdState: [], - f: normal - }; - }, - copyState: function(s) { - return { - cmdState: s.cmdState.slice(), - f: s.f - }; - }, - token: function(stream, state) { - return state.f(stream, state); - }, - blankLine: function(state) { - state.f = normal; - state.cmdState.length = 0; - }, - lineComment: "%" - }; - }); - - CodeMirror.defineMIME("text/x-stex", "stex"); - CodeMirror.defineMIME("text/x-latex", "stex"); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/stex/test.js b/public/plugins/codemirror-5.17.0/mode/stex/test.js deleted file mode 100644 index 22f027ec7..000000000 --- a/public/plugins/codemirror-5.17.0/mode/stex/test.js +++ /dev/null @@ -1,123 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function() { - var mode = CodeMirror.getMode({tabSize: 4}, "stex"); - function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } - - MT("word", - "foo"); - - MT("twoWords", - "foo bar"); - - MT("beginEndDocument", - "[tag \\begin][bracket {][atom document][bracket }]", - "[tag \\end][bracket {][atom document][bracket }]"); - - MT("beginEndEquation", - "[tag \\begin][bracket {][atom equation][bracket }]", - " E=mc^2", - "[tag \\end][bracket {][atom equation][bracket }]"); - - MT("beginModule", - "[tag \\begin][bracket {][atom module][bracket }[[]]]"); - - MT("beginModuleId", - "[tag \\begin][bracket {][atom module][bracket }[[]id=bbt-size[bracket ]]]"); - - MT("importModule", - "[tag \\importmodule][bracket [[][string b-b-t][bracket ]]{][builtin b-b-t][bracket }]"); - - MT("importModulePath", - "[tag \\importmodule][bracket [[][tag \\KWARCslides][bracket {][string dmath/en/cardinality][bracket }]]{][builtin card][bracket }]"); - - MT("psForPDF", - "[tag \\PSforPDF][bracket [[][atom 1][bracket ]]{]#1[bracket }]"); - - MT("comment", - "[comment % foo]"); - - MT("tagComment", - "[tag \\item][comment % bar]"); - - MT("commentTag", - " [comment % \\item]"); - - MT("commentLineBreak", - "[comment %]", - "foo"); - - MT("tagErrorCurly", - "[tag \\begin][error }][bracket {]"); - - MT("tagErrorSquare", - "[tag \\item][error ]]][bracket {]"); - - MT("commentCurly", - "[comment % }]"); - - MT("tagHash", - "the [tag \\#] key"); - - MT("tagNumber", - "a [tag \\$][atom 5] stetson"); - - MT("tagPercent", - "[atom 100][tag \\%] beef"); - - MT("tagAmpersand", - "L [tag \\&] N"); - - MT("tagUnderscore", - "foo[tag \\_]bar"); - - MT("tagBracketOpen", - "[tag \\emph][bracket {][tag \\{][bracket }]"); - - MT("tagBracketClose", - "[tag \\emph][bracket {][tag \\}][bracket }]"); - - MT("tagLetterNumber", - "section [tag \\S][atom 1]"); - - MT("textTagNumber", - "para [tag \\P][atom 2]"); - - MT("thinspace", - "x[tag \\,]y"); - - MT("thickspace", - "x[tag \\;]y"); - - MT("negativeThinspace", - "x[tag \\!]y"); - - MT("periodNotSentence", - "J.\\ L.\\ is"); - - MT("periodSentence", - "X[tag \\@]. The"); - - MT("italicCorrection", - "[bracket {][tag \\em] If[tag \\/][bracket }] I"); - - MT("tagBracket", - "[tag \\newcommand][bracket {][tag \\pop][bracket }]"); - - MT("inlineMathTagFollowedByNumber", - "[keyword $][tag \\pi][number 2][keyword $]"); - - MT("inlineMath", - "[keyword $][number 3][variable-2 x][tag ^][number 2.45]-[tag \\sqrt][bracket {][tag \\$\\alpha][bracket }] = [number 2][keyword $] other text"); - - MT("displayMath", - "More [keyword $$]\t[variable-2 S][tag ^][variable-2 n][tag \\sum] [variable-2 i][keyword $$] other text"); - - MT("mathWithComment", - "[keyword $][variable-2 x] [comment % $]", - "[variable-2 y][keyword $] other text"); - - MT("lineBreakArgument", - "[tag \\\\][bracket [[][atom 1cm][bracket ]]]"); -})(); diff --git a/public/plugins/codemirror-5.17.0/mode/stylus/index.html b/public/plugins/codemirror-5.17.0/mode/stylus/index.html deleted file mode 100644 index 862c18f25..000000000 --- a/public/plugins/codemirror-5.17.0/mode/stylus/index.html +++ /dev/null @@ -1,106 +0,0 @@ - - -CodeMirror: Stylus mode - - - - - - - - - - - -
    -

    Stylus mode

    -
    - - - -

    MIME types defined: text/x-styl.

    -

    Created by Dmitry Kiselyov

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/stylus/stylus.js b/public/plugins/codemirror-5.17.0/mode/stylus/stylus.js deleted file mode 100644 index 662cd03c0..000000000 --- a/public/plugins/codemirror-5.17.0/mode/stylus/stylus.js +++ /dev/null @@ -1,769 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -// Stylus mode created by Dmitry Kiselyov http://git.io/AaRB - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - CodeMirror.defineMode("stylus", function(config) { - var indentUnit = config.indentUnit, - tagKeywords = keySet(tagKeywords_), - tagVariablesRegexp = /^(a|b|i|s|col|em)$/i, - propertyKeywords = keySet(propertyKeywords_), - nonStandardPropertyKeywords = keySet(nonStandardPropertyKeywords_), - valueKeywords = keySet(valueKeywords_), - colorKeywords = keySet(colorKeywords_), - documentTypes = keySet(documentTypes_), - documentTypesRegexp = wordRegexp(documentTypes_), - mediaFeatures = keySet(mediaFeatures_), - mediaTypes = keySet(mediaTypes_), - fontProperties = keySet(fontProperties_), - operatorsRegexp = /^\s*([.]{2,3}|&&|\|\||\*\*|[?!=:]?=|[-+*\/%<>]=?|\?:|\~)/, - wordOperatorKeywordsRegexp = wordRegexp(wordOperatorKeywords_), - blockKeywords = keySet(blockKeywords_), - vendorPrefixesRegexp = new RegExp(/^\-(moz|ms|o|webkit)-/i), - commonAtoms = keySet(commonAtoms_), - firstWordMatch = "", - states = {}, - ch, - style, - type, - override; - - /** - * Tokenizers - */ - function tokenBase(stream, state) { - firstWordMatch = stream.string.match(/(^[\w-]+\s*=\s*$)|(^\s*[\w-]+\s*=\s*[\w-])|(^\s*(\.|#|@|\$|\&|\[|\d|\+|::?|\{|\>|~|\/)?\s*[\w-]*([a-z0-9-]|\*|\/\*)(\(|,)?)/); - state.context.line.firstWord = firstWordMatch ? firstWordMatch[0].replace(/^\s*/, "") : ""; - state.context.line.indent = stream.indentation(); - ch = stream.peek(); - - // Line comment - if (stream.match("//")) { - stream.skipToEnd(); - return ["comment", "comment"]; - } - // Block comment - if (stream.match("/*")) { - state.tokenize = tokenCComment; - return tokenCComment(stream, state); - } - // String - if (ch == "\"" || ch == "'") { - stream.next(); - state.tokenize = tokenString(ch); - return state.tokenize(stream, state); - } - // Def - if (ch == "@") { - stream.next(); - stream.eatWhile(/[\w\\-]/); - return ["def", stream.current()]; - } - // ID selector or Hex color - if (ch == "#") { - stream.next(); - // Hex color - if (stream.match(/^[0-9a-f]{6}|[0-9a-f]{3}/i)) { - return ["atom", "atom"]; - } - // ID selector - if (stream.match(/^[a-z][\w-]*/i)) { - return ["builtin", "hash"]; - } - } - // Vendor prefixes - if (stream.match(vendorPrefixesRegexp)) { - return ["meta", "vendor-prefixes"]; - } - // Numbers - if (stream.match(/^-?[0-9]?\.?[0-9]/)) { - stream.eatWhile(/[a-z%]/i); - return ["number", "unit"]; - } - // !important|optional - if (ch == "!") { - stream.next(); - return [stream.match(/^(important|optional)/i) ? "keyword": "operator", "important"]; - } - // Class - if (ch == "." && stream.match(/^\.[a-z][\w-]*/i)) { - return ["qualifier", "qualifier"]; - } - // url url-prefix domain regexp - if (stream.match(documentTypesRegexp)) { - if (stream.peek() == "(") state.tokenize = tokenParenthesized; - return ["property", "word"]; - } - // Mixins / Functions - if (stream.match(/^[a-z][\w-]*\(/i)) { - stream.backUp(1); - return ["keyword", "mixin"]; - } - // Block mixins - if (stream.match(/^(\+|-)[a-z][\w-]*\(/i)) { - stream.backUp(1); - return ["keyword", "block-mixin"]; - } - // Parent Reference BEM naming - if (stream.string.match(/^\s*&/) && stream.match(/^[-_]+[a-z][\w-]*/)) { - return ["qualifier", "qualifier"]; - } - // / Root Reference & Parent Reference - if (stream.match(/^(\/|&)(-|_|:|\.|#|[a-z])/)) { - stream.backUp(1); - return ["variable-3", "reference"]; - } - if (stream.match(/^&{1}\s*$/)) { - return ["variable-3", "reference"]; - } - // Word operator - if (stream.match(wordOperatorKeywordsRegexp)) { - return ["operator", "operator"]; - } - // Word - if (stream.match(/^\$?[-_]*[a-z0-9]+[\w-]*/i)) { - // Variable - if (stream.match(/^(\.|\[)[\w-\'\"\]]+/i, false)) { - if (!wordIsTag(stream.current())) { - stream.match(/\./); - return ["variable-2", "variable-name"]; - } - } - return ["variable-2", "word"]; - } - // Operators - if (stream.match(operatorsRegexp)) { - return ["operator", stream.current()]; - } - // Delimiters - if (/[:;,{}\[\]\(\)]/.test(ch)) { - stream.next(); - return [null, ch]; - } - // Non-detected items - stream.next(); - return [null, null]; - } - - /** - * Token comment - */ - function tokenCComment(stream, state) { - var maybeEnd = false, ch; - while ((ch = stream.next()) != null) { - if (maybeEnd && ch == "/") { - state.tokenize = null; - break; - } - maybeEnd = (ch == "*"); - } - return ["comment", "comment"]; - } - - /** - * Token string - */ - function tokenString(quote) { - return function(stream, state) { - var escaped = false, ch; - while ((ch = stream.next()) != null) { - if (ch == quote && !escaped) { - if (quote == ")") stream.backUp(1); - break; - } - escaped = !escaped && ch == "\\"; - } - if (ch == quote || !escaped && quote != ")") state.tokenize = null; - return ["string", "string"]; - }; - } - - /** - * Token parenthesized - */ - function tokenParenthesized(stream, state) { - stream.next(); // Must be "(" - if (!stream.match(/\s*[\"\')]/, false)) - state.tokenize = tokenString(")"); - else - state.tokenize = null; - return [null, "("]; - } - - /** - * Context management - */ - function Context(type, indent, prev, line) { - this.type = type; - this.indent = indent; - this.prev = prev; - this.line = line || {firstWord: "", indent: 0}; - } - - function pushContext(state, stream, type, indent) { - indent = indent >= 0 ? indent : indentUnit; - state.context = new Context(type, stream.indentation() + indent, state.context); - return type; - } - - function popContext(state, currentIndent) { - var contextIndent = state.context.indent - indentUnit; - currentIndent = currentIndent || false; - state.context = state.context.prev; - if (currentIndent) state.context.indent = contextIndent; - return state.context.type; - } - - function pass(type, stream, state) { - return states[state.context.type](type, stream, state); - } - - function popAndPass(type, stream, state, n) { - for (var i = n || 1; i > 0; i--) - state.context = state.context.prev; - return pass(type, stream, state); - } - - - /** - * Parser - */ - function wordIsTag(word) { - return word.toLowerCase() in tagKeywords; - } - - function wordIsProperty(word) { - word = word.toLowerCase(); - return word in propertyKeywords || word in fontProperties; - } - - function wordIsBlock(word) { - return word.toLowerCase() in blockKeywords; - } - - function wordIsVendorPrefix(word) { - return word.toLowerCase().match(vendorPrefixesRegexp); - } - - function wordAsValue(word) { - var wordLC = word.toLowerCase(); - var override = "variable-2"; - if (wordIsTag(word)) override = "tag"; - else if (wordIsBlock(word)) override = "block-keyword"; - else if (wordIsProperty(word)) override = "property"; - else if (wordLC in valueKeywords || wordLC in commonAtoms) override = "atom"; - else if (wordLC == "return" || wordLC in colorKeywords) override = "keyword"; - - // Font family - else if (word.match(/^[A-Z]/)) override = "string"; - return override; - } - - function typeIsBlock(type, stream) { - return ((endOfLine(stream) && (type == "{" || type == "]" || type == "hash" || type == "qualifier")) || type == "block-mixin"); - } - - function typeIsInterpolation(type, stream) { - return type == "{" && stream.match(/^\s*\$?[\w-]+/i, false); - } - - function typeIsPseudo(type, stream) { - return type == ":" && stream.match(/^[a-z-]+/, false); - } - - function startOfLine(stream) { - return stream.sol() || stream.string.match(new RegExp("^\\s*" + escapeRegExp(stream.current()))); - } - - function endOfLine(stream) { - return stream.eol() || stream.match(/^\s*$/, false); - } - - function firstWordOfLine(line) { - var re = /^\s*[-_]*[a-z0-9]+[\w-]*/i; - var result = typeof line == "string" ? line.match(re) : line.string.match(re); - return result ? result[0].replace(/^\s*/, "") : ""; - } - - - /** - * Block - */ - states.block = function(type, stream, state) { - if ((type == "comment" && startOfLine(stream)) || - (type == "," && endOfLine(stream)) || - type == "mixin") { - return pushContext(state, stream, "block", 0); - } - if (typeIsInterpolation(type, stream)) { - return pushContext(state, stream, "interpolation"); - } - if (endOfLine(stream) && type == "]") { - if (!/^\s*(\.|#|:|\[|\*|&)/.test(stream.string) && !wordIsTag(firstWordOfLine(stream))) { - return pushContext(state, stream, "block", 0); - } - } - if (typeIsBlock(type, stream, state)) { - return pushContext(state, stream, "block"); - } - if (type == "}" && endOfLine(stream)) { - return pushContext(state, stream, "block", 0); - } - if (type == "variable-name") { - if (stream.string.match(/^\s?\$[\w-\.\[\]\'\"]+$/) || wordIsBlock(firstWordOfLine(stream))) { - return pushContext(state, stream, "variableName"); - } - else { - return pushContext(state, stream, "variableName", 0); - } - } - if (type == "=") { - if (!endOfLine(stream) && !wordIsBlock(firstWordOfLine(stream))) { - return pushContext(state, stream, "block", 0); - } - return pushContext(state, stream, "block"); - } - if (type == "*") { - if (endOfLine(stream) || stream.match(/\s*(,|\.|#|\[|:|{)/,false)) { - override = "tag"; - return pushContext(state, stream, "block"); - } - } - if (typeIsPseudo(type, stream)) { - return pushContext(state, stream, "pseudo"); - } - if (/@(font-face|media|supports|(-moz-)?document)/.test(type)) { - return pushContext(state, stream, endOfLine(stream) ? "block" : "atBlock"); - } - if (/@(-(moz|ms|o|webkit)-)?keyframes$/.test(type)) { - return pushContext(state, stream, "keyframes"); - } - if (/@extends?/.test(type)) { - return pushContext(state, stream, "extend", 0); - } - if (type && type.charAt(0) == "@") { - - // Property Lookup - if (stream.indentation() > 0 && wordIsProperty(stream.current().slice(1))) { - override = "variable-2"; - return "block"; - } - if (/(@import|@require|@charset)/.test(type)) { - return pushContext(state, stream, "block", 0); - } - return pushContext(state, stream, "block"); - } - if (type == "reference" && endOfLine(stream)) { - return pushContext(state, stream, "block"); - } - if (type == "(") { - return pushContext(state, stream, "parens"); - } - - if (type == "vendor-prefixes") { - return pushContext(state, stream, "vendorPrefixes"); - } - if (type == "word") { - var word = stream.current(); - override = wordAsValue(word); - - if (override == "property") { - if (startOfLine(stream)) { - return pushContext(state, stream, "block", 0); - } else { - override = "atom"; - return "block"; - } - } - - if (override == "tag") { - - // tag is a css value - if (/embed|menu|pre|progress|sub|table/.test(word)) { - if (wordIsProperty(firstWordOfLine(stream))) { - override = "atom"; - return "block"; - } - } - - // tag is an attribute - if (stream.string.match(new RegExp("\\[\\s*" + word + "|" + word +"\\s*\\]"))) { - override = "atom"; - return "block"; - } - - // tag is a variable - if (tagVariablesRegexp.test(word)) { - if ((startOfLine(stream) && stream.string.match(/=/)) || - (!startOfLine(stream) && - !stream.string.match(/^(\s*\.|#|\&|\[|\/|>|\*)/) && - !wordIsTag(firstWordOfLine(stream)))) { - override = "variable-2"; - if (wordIsBlock(firstWordOfLine(stream))) return "block"; - return pushContext(state, stream, "block", 0); - } - } - - if (endOfLine(stream)) return pushContext(state, stream, "block"); - } - if (override == "block-keyword") { - override = "keyword"; - - // Postfix conditionals - if (stream.current(/(if|unless)/) && !startOfLine(stream)) { - return "block"; - } - return pushContext(state, stream, "block"); - } - if (word == "return") return pushContext(state, stream, "block", 0); - - // Placeholder selector - if (override == "variable-2" && stream.string.match(/^\s?\$[\w-\.\[\]\'\"]+$/)) { - return pushContext(state, stream, "block"); - } - } - return state.context.type; - }; - - - /** - * Parens - */ - states.parens = function(type, stream, state) { - if (type == "(") return pushContext(state, stream, "parens"); - if (type == ")") { - if (state.context.prev.type == "parens") { - return popContext(state); - } - if ((stream.string.match(/^[a-z][\w-]*\(/i) && endOfLine(stream)) || - wordIsBlock(firstWordOfLine(stream)) || - /(\.|#|:|\[|\*|&|>|~|\+|\/)/.test(firstWordOfLine(stream)) || - (!stream.string.match(/^-?[a-z][\w-\.\[\]\'\"]*\s*=/) && - wordIsTag(firstWordOfLine(stream)))) { - return pushContext(state, stream, "block"); - } - if (stream.string.match(/^[\$-]?[a-z][\w-\.\[\]\'\"]*\s*=/) || - stream.string.match(/^\s*(\(|\)|[0-9])/) || - stream.string.match(/^\s+[a-z][\w-]*\(/i) || - stream.string.match(/^\s+[\$-]?[a-z]/i)) { - return pushContext(state, stream, "block", 0); - } - if (endOfLine(stream)) return pushContext(state, stream, "block"); - else return pushContext(state, stream, "block", 0); - } - if (type && type.charAt(0) == "@" && wordIsProperty(stream.current().slice(1))) { - override = "variable-2"; - } - if (type == "word") { - var word = stream.current(); - override = wordAsValue(word); - if (override == "tag" && tagVariablesRegexp.test(word)) { - override = "variable-2"; - } - if (override == "property" || word == "to") override = "atom"; - } - if (type == "variable-name") { - return pushContext(state, stream, "variableName"); - } - if (typeIsPseudo(type, stream)) { - return pushContext(state, stream, "pseudo"); - } - return state.context.type; - }; - - - /** - * Vendor prefixes - */ - states.vendorPrefixes = function(type, stream, state) { - if (type == "word") { - override = "property"; - return pushContext(state, stream, "block", 0); - } - return popContext(state); - }; - - - /** - * Pseudo - */ - states.pseudo = function(type, stream, state) { - if (!wordIsProperty(firstWordOfLine(stream.string))) { - stream.match(/^[a-z-]+/); - override = "variable-3"; - if (endOfLine(stream)) return pushContext(state, stream, "block"); - return popContext(state); - } - return popAndPass(type, stream, state); - }; - - - /** - * atBlock - */ - states.atBlock = function(type, stream, state) { - if (type == "(") return pushContext(state, stream, "atBlock_parens"); - if (typeIsBlock(type, stream, state)) { - return pushContext(state, stream, "block"); - } - if (typeIsInterpolation(type, stream)) { - return pushContext(state, stream, "interpolation"); - } - if (type == "word") { - var word = stream.current().toLowerCase(); - if (/^(only|not|and|or)$/.test(word)) - override = "keyword"; - else if (documentTypes.hasOwnProperty(word)) - override = "tag"; - else if (mediaTypes.hasOwnProperty(word)) - override = "attribute"; - else if (mediaFeatures.hasOwnProperty(word)) - override = "property"; - else if (nonStandardPropertyKeywords.hasOwnProperty(word)) - override = "string-2"; - else override = wordAsValue(stream.current()); - if (override == "tag" && endOfLine(stream)) { - return pushContext(state, stream, "block"); - } - } - if (type == "operator" && /^(not|and|or)$/.test(stream.current())) { - override = "keyword"; - } - return state.context.type; - }; - - states.atBlock_parens = function(type, stream, state) { - if (type == "{" || type == "}") return state.context.type; - if (type == ")") { - if (endOfLine(stream)) return pushContext(state, stream, "block"); - else return pushContext(state, stream, "atBlock"); - } - if (type == "word") { - var word = stream.current().toLowerCase(); - override = wordAsValue(word); - if (/^(max|min)/.test(word)) override = "property"; - if (override == "tag") { - tagVariablesRegexp.test(word) ? override = "variable-2" : override = "atom"; - } - return state.context.type; - } - return states.atBlock(type, stream, state); - }; - - - /** - * Keyframes - */ - states.keyframes = function(type, stream, state) { - if (stream.indentation() == "0" && ((type == "}" && startOfLine(stream)) || type == "]" || type == "hash" - || type == "qualifier" || wordIsTag(stream.current()))) { - return popAndPass(type, stream, state); - } - if (type == "{") return pushContext(state, stream, "keyframes"); - if (type == "}") { - if (startOfLine(stream)) return popContext(state, true); - else return pushContext(state, stream, "keyframes"); - } - if (type == "unit" && /^[0-9]+\%$/.test(stream.current())) { - return pushContext(state, stream, "keyframes"); - } - if (type == "word") { - override = wordAsValue(stream.current()); - if (override == "block-keyword") { - override = "keyword"; - return pushContext(state, stream, "keyframes"); - } - } - if (/@(font-face|media|supports|(-moz-)?document)/.test(type)) { - return pushContext(state, stream, endOfLine(stream) ? "block" : "atBlock"); - } - if (type == "mixin") { - return pushContext(state, stream, "block", 0); - } - return state.context.type; - }; - - - /** - * Interpolation - */ - states.interpolation = function(type, stream, state) { - if (type == "{") popContext(state) && pushContext(state, stream, "block"); - if (type == "}") { - if (stream.string.match(/^\s*(\.|#|:|\[|\*|&|>|~|\+|\/)/i) || - (stream.string.match(/^\s*[a-z]/i) && wordIsTag(firstWordOfLine(stream)))) { - return pushContext(state, stream, "block"); - } - if (!stream.string.match(/^(\{|\s*\&)/) || - stream.match(/\s*[\w-]/,false)) { - return pushContext(state, stream, "block", 0); - } - return pushContext(state, stream, "block"); - } - if (type == "variable-name") { - return pushContext(state, stream, "variableName", 0); - } - if (type == "word") { - override = wordAsValue(stream.current()); - if (override == "tag") override = "atom"; - } - return state.context.type; - }; - - - /** - * Extend/s - */ - states.extend = function(type, stream, state) { - if (type == "[" || type == "=") return "extend"; - if (type == "]") return popContext(state); - if (type == "word") { - override = wordAsValue(stream.current()); - return "extend"; - } - return popContext(state); - }; - - - /** - * Variable name - */ - states.variableName = function(type, stream, state) { - if (type == "string" || type == "[" || type == "]" || stream.current().match(/^(\.|\$)/)) { - if (stream.current().match(/^\.[\w-]+/i)) override = "variable-2"; - return "variableName"; - } - return popAndPass(type, stream, state); - }; - - - return { - startState: function(base) { - return { - tokenize: null, - state: "block", - context: new Context("block", base || 0, null) - }; - }, - token: function(stream, state) { - if (!state.tokenize && stream.eatSpace()) return null; - style = (state.tokenize || tokenBase)(stream, state); - if (style && typeof style == "object") { - type = style[1]; - style = style[0]; - } - override = style; - state.state = states[state.state](type, stream, state); - return override; - }, - indent: function(state, textAfter, line) { - - var cx = state.context, - ch = textAfter && textAfter.charAt(0), - indent = cx.indent, - lineFirstWord = firstWordOfLine(textAfter), - lineIndent = line.length - line.replace(/^\s*/, "").length, - prevLineFirstWord = state.context.prev ? state.context.prev.line.firstWord : "", - prevLineIndent = state.context.prev ? state.context.prev.line.indent : lineIndent; - - if (cx.prev && - (ch == "}" && (cx.type == "block" || cx.type == "atBlock" || cx.type == "keyframes") || - ch == ")" && (cx.type == "parens" || cx.type == "atBlock_parens") || - ch == "{" && (cx.type == "at"))) { - indent = cx.indent - indentUnit; - cx = cx.prev; - } else if (!(/(\})/.test(ch))) { - if (/@|\$|\d/.test(ch) || - /^\{/.test(textAfter) || -/^\s*\/(\/|\*)/.test(textAfter) || - /^\s*\/\*/.test(prevLineFirstWord) || - /^\s*[\w-\.\[\]\'\"]+\s*(\?|:|\+)?=/i.test(textAfter) || -/^(\+|-)?[a-z][\w-]*\(/i.test(textAfter) || -/^return/.test(textAfter) || - wordIsBlock(lineFirstWord)) { - indent = lineIndent; - } else if (/(\.|#|:|\[|\*|&|>|~|\+|\/)/.test(ch) || wordIsTag(lineFirstWord)) { - if (/\,\s*$/.test(prevLineFirstWord)) { - indent = prevLineIndent; - } else if (/^\s+/.test(line) && (/(\.|#|:|\[|\*|&|>|~|\+|\/)/.test(prevLineFirstWord) || wordIsTag(prevLineFirstWord))) { - indent = lineIndent <= prevLineIndent ? prevLineIndent : prevLineIndent + indentUnit; - } else { - indent = lineIndent; - } - } else if (!/,\s*$/.test(line) && (wordIsVendorPrefix(lineFirstWord) || wordIsProperty(lineFirstWord))) { - if (wordIsBlock(prevLineFirstWord)) { - indent = lineIndent <= prevLineIndent ? prevLineIndent : prevLineIndent + indentUnit; - } else if (/^\{/.test(prevLineFirstWord)) { - indent = lineIndent <= prevLineIndent ? lineIndent : prevLineIndent + indentUnit; - } else if (wordIsVendorPrefix(prevLineFirstWord) || wordIsProperty(prevLineFirstWord)) { - indent = lineIndent >= prevLineIndent ? prevLineIndent : lineIndent; - } else if (/^(\.|#|:|\[|\*|&|@|\+|\-|>|~|\/)/.test(prevLineFirstWord) || - /=\s*$/.test(prevLineFirstWord) || - wordIsTag(prevLineFirstWord) || - /^\$[\w-\.\[\]\'\"]/.test(prevLineFirstWord)) { - indent = prevLineIndent + indentUnit; - } else { - indent = lineIndent; - } - } - } - return indent; - }, - electricChars: "}", - lineComment: "//", - fold: "indent" - }; - }); - - // developer.mozilla.org/en-US/docs/Web/HTML/Element - var tagKeywords_ = ["a","abbr","address","area","article","aside","audio", "b", "base","bdi", "bdo","bgsound","blockquote","body","br","button","canvas","caption","cite", "code","col","colgroup","data","datalist","dd","del","details","dfn","div", "dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1", "h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe", "img","input","ins","kbd","keygen","label","legend","li","link","main","map", "mark","marquee","menu","menuitem","meta","meter","nav","nobr","noframes", "noscript","object","ol","optgroup","option","output","p","param","pre", "progress","q","rp","rt","ruby","s","samp","script","section","select", "small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","track", "u","ul","var","video"]; - - // github.com/codemirror/CodeMirror/blob/master/mode/css/css.js - var documentTypes_ = ["domain", "regexp", "url", "url-prefix"]; - var mediaTypes_ = ["all","aural","braille","handheld","print","projection","screen","tty","tv","embossed"]; - var mediaFeatures_ = ["width","min-width","max-width","height","min-height","max-height","device-width","min-device-width","max-device-width","device-height","min-device-height","max-device-height","aspect-ratio","min-aspect-ratio","max-aspect-ratio","device-aspect-ratio","min-device-aspect-ratio","max-device-aspect-ratio","color","min-color","max-color","color-index","min-color-index","max-color-index","monochrome","min-monochrome","max-monochrome","resolution","min-resolution","max-resolution","scan","grid"]; - var propertyKeywords_ = ["align-content","align-items","align-self","alignment-adjust","alignment-baseline","anchor-point","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","appearance","azimuth","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","baseline-shift","binding","bleed","bookmark-label","bookmark-level","bookmark-state","bookmark-target","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","color","color-profile","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","crop","cue","cue-after","cue-before","cursor","direction","display","dominant-baseline","drop-initial-after-adjust","drop-initial-after-align","drop-initial-before-adjust","drop-initial-before-align","drop-initial-size","drop-initial-value","elevation","empty-cells","fit","fit-position","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","float-offset","flow-from","flow-into","font","font-feature-settings","font-family","font-kerning","font-language-override","font-size","font-size-adjust","font-stretch","font-style","font-synthesis","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-weight","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-position","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","inline-box-align","justify-content","left","letter-spacing","line-break","line-height","line-stacking","line-stacking-ruby","line-stacking-shift","line-stacking-strategy","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marker-offset","marks","marquee-direction","marquee-loop","marquee-play-count","marquee-speed","marquee-style","max-height","max-width","min-height","min-width","move-to","nav-down","nav-index","nav-left","nav-right","nav-up","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-style","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","page-policy","pause","pause-after","pause-before","perspective","perspective-origin","pitch","pitch-range","play-during","position","presentation-level","punctuation-trim","quotes","region-break-after","region-break-before","region-break-inside","region-fragment","rendering-intent","resize","rest","rest-after","rest-before","richness","right","rotation","rotation-point","ruby-align","ruby-overhang","ruby-position","ruby-span","shape-image-threshold","shape-inside","shape-margin","shape-outside","size","speak","speak-as","speak-header","speak-numeral","speak-punctuation","speech-rate","stress","string-set","tab-size","table-layout","target","target-name","target-new","target-position","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-height","text-indent","text-justify","text-outline","text-overflow","text-shadow","text-size-adjust","text-space-collapse","text-transform","text-underline-position","text-wrap","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","volume","white-space","widows","width","word-break","word-spacing","word-wrap","z-index","clip-path","clip-rule","mask","enable-background","filter","flood-color","flood-opacity","lighting-color","stop-color","stop-opacity","pointer-events","color-interpolation","color-interpolation-filters","color-rendering","fill","fill-opacity","fill-rule","image-rendering","marker","marker-end","marker-mid","marker-start","shape-rendering","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","text-rendering","baseline-shift","dominant-baseline","glyph-orientation-horizontal","glyph-orientation-vertical","text-anchor","writing-mode","font-smoothing","osx-font-smoothing"]; - var nonStandardPropertyKeywords_ = ["scrollbar-arrow-color","scrollbar-base-color","scrollbar-dark-shadow-color","scrollbar-face-color","scrollbar-highlight-color","scrollbar-shadow-color","scrollbar-3d-light-color","scrollbar-track-color","shape-inside","searchfield-cancel-button","searchfield-decoration","searchfield-results-button","searchfield-results-decoration","zoom"]; - var fontProperties_ = ["font-family","src","unicode-range","font-variant","font-feature-settings","font-stretch","font-weight","font-style"]; - var colorKeywords_ = ["aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen"]; - var valueKeywords_ = ["above","absolute","activeborder","additive","activecaption","afar","after-white-space","ahead","alias","all","all-scroll","alphabetic","alternate","always","amharic","amharic-abegede","antialiased","appworkspace","arabic-indic","armenian","asterisks","attr","auto","avoid","avoid-column","avoid-page","avoid-region","background","backwards","baseline","below","bidi-override","binary","bengali","blink","block","block-axis","bold","bolder","border","border-box","both","bottom","break","break-all","break-word","bullets","button","button-bevel","buttonface","buttonhighlight","buttonshadow","buttontext","calc","cambodian","capitalize","caps-lock-indicator","caption","captiontext","caret","cell","center","checkbox","circle","cjk-decimal","cjk-earthly-branch","cjk-heavenly-stem","cjk-ideographic","clear","clip","close-quote","col-resize","collapse","column","compact","condensed","contain","content","content-box","context-menu","continuous","copy","counter","counters","cover","crop","cross","crosshair","currentcolor","cursive","cyclic","dashed","decimal","decimal-leading-zero","default","default-button","destination-atop","destination-in","destination-out","destination-over","devanagari","disc","discard","disclosure-closed","disclosure-open","document","dot-dash","dot-dot-dash","dotted","double","down","e-resize","ease","ease-in","ease-in-out","ease-out","element","ellipse","ellipsis","embed","end","ethiopic","ethiopic-abegede","ethiopic-abegede-am-et","ethiopic-abegede-gez","ethiopic-abegede-ti-er","ethiopic-abegede-ti-et","ethiopic-halehame-aa-er","ethiopic-halehame-aa-et","ethiopic-halehame-am-et","ethiopic-halehame-gez","ethiopic-halehame-om-et","ethiopic-halehame-sid-et","ethiopic-halehame-so-et","ethiopic-halehame-ti-er","ethiopic-halehame-ti-et","ethiopic-halehame-tig","ethiopic-numeric","ew-resize","expanded","extends","extra-condensed","extra-expanded","fantasy","fast","fill","fixed","flat","flex","footnotes","forwards","from","geometricPrecision","georgian","graytext","groove","gujarati","gurmukhi","hand","hangul","hangul-consonant","hebrew","help","hidden","hide","higher","highlight","highlighttext","hiragana","hiragana-iroha","horizontal","hsl","hsla","icon","ignore","inactiveborder","inactivecaption","inactivecaptiontext","infinite","infobackground","infotext","inherit","initial","inline","inline-axis","inline-block","inline-flex","inline-table","inset","inside","intrinsic","invert","italic","japanese-formal","japanese-informal","justify","kannada","katakana","katakana-iroha","keep-all","khmer","korean-hangul-formal","korean-hanja-formal","korean-hanja-informal","landscape","lao","large","larger","left","level","lighter","line-through","linear","linear-gradient","lines","list-item","listbox","listitem","local","logical","loud","lower","lower-alpha","lower-armenian","lower-greek","lower-hexadecimal","lower-latin","lower-norwegian","lower-roman","lowercase","ltr","malayalam","match","matrix","matrix3d","media-controls-background","media-current-time-display","media-fullscreen-button","media-mute-button","media-play-button","media-return-to-realtime-button","media-rewind-button","media-seek-back-button","media-seek-forward-button","media-slider","media-sliderthumb","media-time-remaining-display","media-volume-slider","media-volume-slider-container","media-volume-sliderthumb","medium","menu","menulist","menulist-button","menulist-text","menulist-textfield","menutext","message-box","middle","min-intrinsic","mix","mongolian","monospace","move","multiple","myanmar","n-resize","narrower","ne-resize","nesw-resize","no-close-quote","no-drop","no-open-quote","no-repeat","none","normal","not-allowed","nowrap","ns-resize","numbers","numeric","nw-resize","nwse-resize","oblique","octal","open-quote","optimizeLegibility","optimizeSpeed","oriya","oromo","outset","outside","outside-shape","overlay","overline","padding","padding-box","painted","page","paused","persian","perspective","plus-darker","plus-lighter","pointer","polygon","portrait","pre","pre-line","pre-wrap","preserve-3d","progress","push-button","radial-gradient","radio","read-only","read-write","read-write-plaintext-only","rectangle","region","relative","repeat","repeating-linear-gradient","repeating-radial-gradient","repeat-x","repeat-y","reset","reverse","rgb","rgba","ridge","right","rotate","rotate3d","rotateX","rotateY","rotateZ","round","row-resize","rtl","run-in","running","s-resize","sans-serif","scale","scale3d","scaleX","scaleY","scaleZ","scroll","scrollbar","se-resize","searchfield","searchfield-cancel-button","searchfield-decoration","searchfield-results-button","searchfield-results-decoration","semi-condensed","semi-expanded","separate","serif","show","sidama","simp-chinese-formal","simp-chinese-informal","single","skew","skewX","skewY","skip-white-space","slide","slider-horizontal","slider-vertical","sliderthumb-horizontal","sliderthumb-vertical","slow","small","small-caps","small-caption","smaller","solid","somali","source-atop","source-in","source-out","source-over","space","spell-out","square","square-button","start","static","status-bar","stretch","stroke","sub","subpixel-antialiased","super","sw-resize","symbolic","symbols","table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row","table-row-group","tamil","telugu","text","text-bottom","text-top","textarea","textfield","thai","thick","thin","threeddarkshadow","threedface","threedhighlight","threedlightshadow","threedshadow","tibetan","tigre","tigrinya-er","tigrinya-er-abegede","tigrinya-et","tigrinya-et-abegede","to","top","trad-chinese-formal","trad-chinese-informal","translate","translate3d","translateX","translateY","translateZ","transparent","ultra-condensed","ultra-expanded","underline","up","upper-alpha","upper-armenian","upper-greek","upper-hexadecimal","upper-latin","upper-norwegian","upper-roman","uppercase","urdu","url","var","vertical","vertical-text","visible","visibleFill","visiblePainted","visibleStroke","visual","w-resize","wait","wave","wider","window","windowframe","windowtext","words","x-large","x-small","xor","xx-large","xx-small","bicubic","optimizespeed","grayscale","row","row-reverse","wrap","wrap-reverse","column-reverse","flex-start","flex-end","space-between","space-around"]; - - var wordOperatorKeywords_ = ["in","and","or","not","is not","is a","is","isnt","defined","if unless"], - blockKeywords_ = ["for","if","else","unless", "from", "to"], - commonAtoms_ = ["null","true","false","href","title","type","not-allowed","readonly","disabled"], - commonDef_ = ["@font-face", "@keyframes", "@media", "@viewport", "@page", "@host", "@supports", "@block", "@css"]; - - var hintWords = tagKeywords_.concat(documentTypes_,mediaTypes_,mediaFeatures_, - propertyKeywords_,nonStandardPropertyKeywords_, - colorKeywords_,valueKeywords_,fontProperties_, - wordOperatorKeywords_,blockKeywords_, - commonAtoms_,commonDef_); - - function wordRegexp(words) { - words = words.sort(function(a,b){return b > a;}); - return new RegExp("^((" + words.join(")|(") + "))\\b"); - } - - function keySet(array) { - var keys = {}; - for (var i = 0; i < array.length; ++i) keys[array[i]] = true; - return keys; - } - - function escapeRegExp(text) { - return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); - } - - CodeMirror.registerHelper("hintWords", "stylus", hintWords); - CodeMirror.defineMIME("text/x-styl", "stylus"); -}); diff --git a/public/plugins/codemirror-5.17.0/mode/swift/index.html b/public/plugins/codemirror-5.17.0/mode/swift/index.html deleted file mode 100644 index 109f3fdb0..000000000 --- a/public/plugins/codemirror-5.17.0/mode/swift/index.html +++ /dev/null @@ -1,88 +0,0 @@ - - -CodeMirror: Swift mode - - - - - - - - - - -
    -

    Swift mode

    -
    - - - -

    A simple mode for Swift

    - -

    MIME types defined: text/x-swift (Swift code)

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/swift/swift.js b/public/plugins/codemirror-5.17.0/mode/swift/swift.js deleted file mode 100644 index 3c28ced32..000000000 --- a/public/plugins/codemirror-5.17.0/mode/swift/swift.js +++ /dev/null @@ -1,202 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -// Swift mode created by Michael Kaminsky https://github.com/mkaminsky11 - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") - mod(require("../../lib/codemirror")) - else if (typeof define == "function" && define.amd) - define(["../../lib/codemirror"], mod) - else - mod(CodeMirror) -})(function(CodeMirror) { - "use strict" - - function wordSet(words) { - var set = {} - for (var i = 0; i < words.length; i++) set[words[i]] = true - return set - } - - var keywords = wordSet(["var","let","class","deinit","enum","extension","func","import","init","protocol", - "static","struct","subscript","typealias","as","dynamicType","is","new","super", - "self","Self","Type","__COLUMN__","__FILE__","__FUNCTION__","__LINE__","break","case", - "continue","default","do","else","fallthrough","if","in","for","return","switch", - "where","while","associativity","didSet","get","infix","inout","left","mutating", - "none","nonmutating","operator","override","postfix","precedence","prefix","right", - "set","unowned","weak","willSet"]) - var definingKeywords = wordSet(["var","let","class","enum","extension","func","import","protocol","struct", - "typealias","dynamicType","for"]) - var atoms = wordSet(["Infinity","NaN","undefined","null","true","false","on","off","yes","no","nil","null", - "this","super"]) - var types = wordSet(["String","bool","int","string","double","Double","Int","Float","float","public", - "private","extension"]) - var operators = "+-/*%=|&<>#" - var punc = ";,.(){}[]" - var number = /^-?(?:(?:[\d_]+\.[_\d]*|\.[_\d]+|0o[0-7_\.]+|0b[01_\.]+)(?:e-?[\d_]+)?|0x[\d_a-f\.]+(?:p-?[\d_]+)?)/i - var identifier = /^[_A-Za-z$][_A-Za-z$0-9]*/ - var property = /^[@\.][_A-Za-z$][_A-Za-z$0-9]*/ - var regexp = /^\/(?!\s)(?:\/\/)?(?:\\.|[^\/])+\// - - function tokenBase(stream, state, prev) { - if (stream.sol()) state.indented = stream.indentation() - if (stream.eatSpace()) return null - - var ch = stream.peek() - if (ch == "/") { - if (stream.match("//")) { - stream.skipToEnd() - return "comment" - } - if (stream.match("/*")) { - state.tokenize.push(tokenComment) - return tokenComment(stream, state) - } - if (stream.match(regexp)) return "string-2" - } - if (operators.indexOf(ch) > -1) { - stream.next() - return "operator" - } - if (punc.indexOf(ch) > -1) { - stream.next() - stream.match("..") - return "punctuation" - } - if (ch == '"' || ch == "'") { - stream.next() - var tokenize = tokenString(ch) - state.tokenize.push(tokenize) - return tokenize(stream, state) - } - - if (stream.match(number)) return "number" - if (stream.match(property)) return "property" - - if (stream.match(identifier)) { - var ident = stream.current() - if (keywords.hasOwnProperty(ident)) { - if (definingKeywords.hasOwnProperty(ident)) - state.prev = "define" - return "keyword" - } - if (types.hasOwnProperty(ident)) return "variable-2" - if (atoms.hasOwnProperty(ident)) return "atom" - if (prev == "define") return "def" - return "variable" - } - - stream.next() - return null - } - - function tokenUntilClosingParen() { - var depth = 0 - return function(stream, state, prev) { - var inner = tokenBase(stream, state, prev) - if (inner == "punctuation") { - if (stream.current() == "(") ++depth - else if (stream.current() == ")") { - if (depth == 0) { - stream.backUp(1) - state.tokenize.pop() - return state.tokenize[state.tokenize.length - 1](stream, state) - } - else --depth - } - } - return inner - } - } - - function tokenString(quote) { - return function(stream, state) { - var ch, escaped = false - while (ch = stream.next()) { - if (escaped) { - if (ch == "(") { - state.tokenize.push(tokenUntilClosingParen()) - return "string" - } - escaped = false - } else if (ch == quote) { - break - } else { - escaped = ch == "\\" - } - } - state.tokenize.pop() - return "string" - } - } - - function tokenComment(stream, state) { - stream.match(/^(?:[^*]|\*(?!\/))*/) - if (stream.match("*/")) state.tokenize.pop() - return "comment" - } - - function Context(prev, align, indented) { - this.prev = prev - this.align = align - this.indented = indented - } - - function pushContext(state, stream) { - var align = stream.match(/^\s*($|\/[\/\*])/, false) ? null : stream.column() + 1 - state.context = new Context(state.context, align, state.indented) - } - - function popContext(state) { - if (state.context) { - state.indented = state.context.indented - state.context = state.context.prev - } - } - - CodeMirror.defineMode("swift", function(config) { - return { - startState: function() { - return { - prev: null, - context: null, - indented: 0, - tokenize: [] - } - }, - - token: function(stream, state) { - var prev = state.prev - state.prev = null - var tokenize = state.tokenize[state.tokenize.length - 1] || tokenBase - var style = tokenize(stream, state, prev) - if (!style || style == "comment") state.prev = prev - else if (!state.prev) state.prev = style - - if (style == "punctuation") { - var bracket = /[\(\[\{]|([\]\)\}])/.exec(stream.current()) - if (bracket) (bracket[1] ? popContext : pushContext)(state, stream) - } - - return style - }, - - indent: function(state, textAfter) { - var cx = state.context - if (!cx) return 0 - var closing = /^[\]\}\)]/.test(textAfter) - if (cx.align != null) return cx.align - (closing ? 1 : 0) - return cx.indented + (closing ? 0 : config.indentUnit) - }, - - electricInput: /^\s*[\)\}\]]$/, - - lineComment: "//", - blockCommentStart: "/*", - blockCommentEnd: "*/" - } - }) - - CodeMirror.defineMIME("text/x-swift","swift") -}); diff --git a/public/plugins/codemirror-5.17.0/mode/tcl/index.html b/public/plugins/codemirror-5.17.0/mode/tcl/index.html deleted file mode 100644 index ce4ad3423..000000000 --- a/public/plugins/codemirror-5.17.0/mode/tcl/index.html +++ /dev/null @@ -1,142 +0,0 @@ - - -CodeMirror: Tcl mode - - - - - - - - - - -
    -

    Tcl mode

    -
    - - -

    MIME types defined: text/x-tcl.

    - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/tcl/tcl.js b/public/plugins/codemirror-5.17.0/mode/tcl/tcl.js deleted file mode 100644 index 8c76d52ca..000000000 --- a/public/plugins/codemirror-5.17.0/mode/tcl/tcl.js +++ /dev/null @@ -1,139 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -//tcl mode by Ford_Lawnmower :: Based on Velocity mode by Steve O'Hara - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("tcl", function() { - function parseWords(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - var keywords = parseWords("Tcl safe after append array auto_execok auto_import auto_load " + - "auto_mkindex auto_mkindex_old auto_qualify auto_reset bgerror " + - "binary break catch cd close concat continue dde eof encoding error " + - "eval exec exit expr fblocked fconfigure fcopy file fileevent filename " + - "filename flush for foreach format gets glob global history http if " + - "incr info interp join lappend lindex linsert list llength load lrange " + - "lreplace lsearch lset lsort memory msgcat namespace open package parray " + - "pid pkg::create pkg_mkIndex proc puts pwd re_syntax read regex regexp " + - "registry regsub rename resource return scan seek set socket source split " + - "string subst switch tcl_endOfWord tcl_findLibrary tcl_startOfNextWord " + - "tcl_wordBreakAfter tcl_startOfPreviousWord tcl_wordBreakBefore tcltest " + - "tclvars tell time trace unknown unset update uplevel upvar variable " + - "vwait"); - var functions = parseWords("if elseif else and not or eq ne in ni for foreach while switch"); - var isOperatorChar = /[+\-*&%=<>!?^\/\|]/; - function chain(stream, state, f) { - state.tokenize = f; - return f(stream, state); - } - function tokenBase(stream, state) { - var beforeParams = state.beforeParams; - state.beforeParams = false; - var ch = stream.next(); - if ((ch == '"' || ch == "'") && state.inParams) { - return chain(stream, state, tokenString(ch)); - } else if (/[\[\]{}\(\),;\.]/.test(ch)) { - if (ch == "(" && beforeParams) state.inParams = true; - else if (ch == ")") state.inParams = false; - return null; - } else if (/\d/.test(ch)) { - stream.eatWhile(/[\w\.]/); - return "number"; - } else if (ch == "#") { - if (stream.eat("*")) - return chain(stream, state, tokenComment); - if (ch == "#" && stream.match(/ *\[ *\[/)) - return chain(stream, state, tokenUnparsed); - stream.skipToEnd(); - return "comment"; - } else if (ch == '"') { - stream.skipTo(/"/); - return "comment"; - } else if (ch == "$") { - stream.eatWhile(/[$_a-z0-9A-Z\.{:]/); - stream.eatWhile(/}/); - state.beforeParams = true; - return "builtin"; - } else if (isOperatorChar.test(ch)) { - stream.eatWhile(isOperatorChar); - return "comment"; - } else { - stream.eatWhile(/[\w\$_{}\xa1-\uffff]/); - var word = stream.current().toLowerCase(); - if (keywords && keywords.propertyIsEnumerable(word)) - return "keyword"; - if (functions && functions.propertyIsEnumerable(word)) { - state.beforeParams = true; - return "keyword"; - } - return null; - } - } - function tokenString(quote) { - return function(stream, state) { - var escaped = false, next, end = false; - while ((next = stream.next()) != null) { - if (next == quote && !escaped) { - end = true; - break; - } - escaped = !escaped && next == "\\"; - } - if (end) state.tokenize = tokenBase; - return "string"; - }; - } - function tokenComment(stream, state) { - var maybeEnd = false, ch; - while (ch = stream.next()) { - if (ch == "#" && maybeEnd) { - state.tokenize = tokenBase; - break; - } - maybeEnd = (ch == "*"); - } - return "comment"; - } - function tokenUnparsed(stream, state) { - var maybeEnd = 0, ch; - while (ch = stream.next()) { - if (ch == "#" && maybeEnd == 2) { - state.tokenize = tokenBase; - break; - } - if (ch == "]") - maybeEnd++; - else if (ch != " ") - maybeEnd = 0; - } - return "meta"; - } - return { - startState: function() { - return { - tokenize: tokenBase, - beforeParams: false, - inParams: false - }; - }, - token: function(stream, state) { - if (stream.eatSpace()) return null; - return state.tokenize(stream, state); - } - }; -}); -CodeMirror.defineMIME("text/x-tcl", "tcl"); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/textile/index.html b/public/plugins/codemirror-5.17.0/mode/textile/index.html deleted file mode 100644 index 42b156b1e..000000000 --- a/public/plugins/codemirror-5.17.0/mode/textile/index.html +++ /dev/null @@ -1,191 +0,0 @@ - - -CodeMirror: Textile mode - - - - - - - - - -
    -

    Textile mode

    -
    - - -

    MIME types defined: text/x-textile.

    - -

    Parsing/Highlighting Tests: normal, verbose.

    - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/textile/test.js b/public/plugins/codemirror-5.17.0/mode/textile/test.js deleted file mode 100644 index 49cdaf9c9..000000000 --- a/public/plugins/codemirror-5.17.0/mode/textile/test.js +++ /dev/null @@ -1,417 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function() { - var mode = CodeMirror.getMode({tabSize: 4}, 'textile'); - function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } - - MT('simpleParagraphs', - 'Some text.', - '', - 'Some more text.'); - - /* - * Phrase Modifiers - */ - - MT('em', - 'foo [em _bar_]'); - - MT('emBoogus', - 'code_mirror'); - - MT('strong', - 'foo [strong *bar*]'); - - MT('strongBogus', - '3 * 3 = 9'); - - MT('italic', - 'foo [em __bar__]'); - - MT('italicBogus', - 'code__mirror'); - - MT('bold', - 'foo [strong **bar**]'); - - MT('boldBogus', - '3 ** 3 = 27'); - - MT('simpleLink', - '[link "CodeMirror":http://codemirror.net]'); - - MT('referenceLink', - '[link "CodeMirror":code_mirror]', - 'Normal Text.', - '[link [[code_mirror]]http://codemirror.net]'); - - MT('footCite', - 'foo bar[qualifier [[1]]]'); - - MT('footCiteBogus', - 'foo bar[[1a2]]'); - - MT('special-characters', - 'Registered [tag (r)], ' + - 'Trademark [tag (tm)], and ' + - 'Copyright [tag (c)] 2008'); - - MT('cite', - "A book is [keyword ??The Count of Monte Cristo??] by Dumas."); - - MT('additionAndDeletion', - 'The news networks declared [negative -Al Gore-] ' + - '[positive +George W. Bush+] the winner in Florida.'); - - MT('subAndSup', - 'f(x, n) = log [builtin ~4~] x [builtin ^n^]'); - - MT('spanAndCode', - 'A [quote %span element%] and [atom @code element@]'); - - MT('spanBogus', - 'Percentage 25% is not a span.'); - - MT('citeBogus', - 'Question? is not a citation.'); - - MT('codeBogus', - 'user@example.com'); - - MT('subBogus', - '~username'); - - MT('supBogus', - 'foo ^ bar'); - - MT('deletionBogus', - '3 - 3 = 0'); - - MT('additionBogus', - '3 + 3 = 6'); - - MT('image', - 'An image: [string !http://www.example.com/image.png!]'); - - MT('imageWithAltText', - 'An image: [string !http://www.example.com/image.png (Alt Text)!]'); - - MT('imageWithUrl', - 'An image: [string !http://www.example.com/image.png!:http://www.example.com/]'); - - /* - * Headers - */ - - MT('h1', - '[header&header-1 h1. foo]'); - - MT('h2', - '[header&header-2 h2. foo]'); - - MT('h3', - '[header&header-3 h3. foo]'); - - MT('h4', - '[header&header-4 h4. foo]'); - - MT('h5', - '[header&header-5 h5. foo]'); - - MT('h6', - '[header&header-6 h6. foo]'); - - MT('h7Bogus', - 'h7. foo'); - - MT('multipleHeaders', - '[header&header-1 h1. Heading 1]', - '', - 'Some text.', - '', - '[header&header-2 h2. Heading 2]', - '', - 'More text.'); - - MT('h1inline', - '[header&header-1 h1. foo ][header&header-1&em _bar_][header&header-1 baz]'); - - /* - * Lists - */ - - MT('ul', - 'foo', - 'bar', - '', - '[variable-2 * foo]', - '[variable-2 * bar]'); - - MT('ulNoBlank', - 'foo', - 'bar', - '[variable-2 * foo]', - '[variable-2 * bar]'); - - MT('ol', - 'foo', - 'bar', - '', - '[variable-2 # foo]', - '[variable-2 # bar]'); - - MT('olNoBlank', - 'foo', - 'bar', - '[variable-2 # foo]', - '[variable-2 # bar]'); - - MT('ulFormatting', - '[variable-2 * ][variable-2&em _foo_][variable-2 bar]', - '[variable-2 * ][variable-2&strong *][variable-2&em&strong _foo_]' + - '[variable-2&strong *][variable-2 bar]', - '[variable-2 * ][variable-2&strong *foo*][variable-2 bar]'); - - MT('olFormatting', - '[variable-2 # ][variable-2&em _foo_][variable-2 bar]', - '[variable-2 # ][variable-2&strong *][variable-2&em&strong _foo_]' + - '[variable-2&strong *][variable-2 bar]', - '[variable-2 # ][variable-2&strong *foo*][variable-2 bar]'); - - MT('ulNested', - '[variable-2 * foo]', - '[variable-3 ** bar]', - '[keyword *** bar]', - '[variable-2 **** bar]', - '[variable-3 ** bar]'); - - MT('olNested', - '[variable-2 # foo]', - '[variable-3 ## bar]', - '[keyword ### bar]', - '[variable-2 #### bar]', - '[variable-3 ## bar]'); - - MT('ulNestedWithOl', - '[variable-2 * foo]', - '[variable-3 ## bar]', - '[keyword *** bar]', - '[variable-2 #### bar]', - '[variable-3 ** bar]'); - - MT('olNestedWithUl', - '[variable-2 # foo]', - '[variable-3 ** bar]', - '[keyword ### bar]', - '[variable-2 **** bar]', - '[variable-3 ## bar]'); - - MT('definitionList', - '[number - coffee := Hot ][number&em _and_][number black]', - '', - 'Normal text.'); - - MT('definitionListSpan', - '[number - coffee :=]', - '', - '[number Hot ][number&em _and_][number black =:]', - '', - 'Normal text.'); - - MT('boo', - '[number - dog := woof woof]', - '[number - cat := meow meow]', - '[number - whale :=]', - '[number Whale noises.]', - '', - '[number Also, ][number&em _splashing_][number . =:]'); - - /* - * Attributes - */ - - MT('divWithAttribute', - '[punctuation div][punctuation&attribute (#my-id)][punctuation . foo bar]'); - - MT('divWithAttributeAnd2emRightPadding', - '[punctuation div][punctuation&attribute (#my-id)((][punctuation . foo bar]'); - - MT('divWithClassAndId', - '[punctuation div][punctuation&attribute (my-class#my-id)][punctuation . foo bar]'); - - MT('paragraphWithCss', - 'p[attribute {color:red;}]. foo bar'); - - MT('paragraphNestedStyles', - 'p. [strong *foo ][strong&em _bar_][strong *]'); - - MT('paragraphWithLanguage', - 'p[attribute [[fr]]]. Parlez-vous français?'); - - MT('paragraphLeftAlign', - 'p[attribute <]. Left'); - - MT('paragraphRightAlign', - 'p[attribute >]. Right'); - - MT('paragraphRightAlign', - 'p[attribute =]. Center'); - - MT('paragraphJustified', - 'p[attribute <>]. Justified'); - - MT('paragraphWithLeftIndent1em', - 'p[attribute (]. Left'); - - MT('paragraphWithRightIndent1em', - 'p[attribute )]. Right'); - - MT('paragraphWithLeftIndent2em', - 'p[attribute ((]. Left'); - - MT('paragraphWithRightIndent2em', - 'p[attribute ))]. Right'); - - MT('paragraphWithLeftIndent3emRightIndent2em', - 'p[attribute ((())]. Right'); - - MT('divFormatting', - '[punctuation div. ][punctuation&strong *foo ]' + - '[punctuation&strong&em _bar_][punctuation&strong *]'); - - MT('phraseModifierAttributes', - 'p[attribute (my-class)]. This is a paragraph that has a class and' + - ' this [em _][em&attribute (#special-phrase)][em emphasized phrase_]' + - ' has an id.'); - - MT('linkWithClass', - '[link "(my-class). This is a link with class":http://redcloth.org]'); - - /* - * Layouts - */ - - MT('paragraphLayouts', - 'p. This is one paragraph.', - '', - 'p. This is another.'); - - MT('div', - '[punctuation div. foo bar]'); - - MT('pre', - '[operator pre. Text]'); - - MT('bq.', - '[bracket bq. foo bar]', - '', - 'Normal text.'); - - MT('footnote', - '[variable fn123. foo ][variable&strong *bar*]'); - - /* - * Spanning Layouts - */ - - MT('bq..ThenParagraph', - '[bracket bq.. foo bar]', - '', - '[bracket More quote.]', - 'p. Normal Text'); - - MT('bq..ThenH1', - '[bracket bq.. foo bar]', - '', - '[bracket More quote.]', - '[header&header-1 h1. Header Text]'); - - MT('bc..ThenParagraph', - '[atom bc.. # Some ruby code]', - '[atom obj = {foo: :bar}]', - '[atom puts obj]', - '', - '[atom obj[[:love]] = "*love*"]', - '[atom puts obj.love.upcase]', - '', - 'p. Normal text.'); - - MT('fn1..ThenParagraph', - '[variable fn1.. foo bar]', - '', - '[variable More.]', - 'p. Normal Text'); - - MT('pre..ThenParagraph', - '[operator pre.. foo bar]', - '', - '[operator More.]', - 'p. Normal Text'); - - /* - * Tables - */ - - MT('table', - '[variable-3&operator |_. name |_. age|]', - '[variable-3 |][variable-3&strong *Walter*][variable-3 | 5 |]', - '[variable-3 |Florence| 6 |]', - '', - 'p. Normal text.'); - - MT('tableWithAttributes', - '[variable-3&operator |_. name |_. age|]', - '[variable-3 |][variable-3&attribute /2.][variable-3 Jim |]', - '[variable-3 |][variable-3&attribute \\2{color: red}.][variable-3 Sam |]'); - - /* - * HTML - */ - - MT('html', - '[comment
    ]', - '[comment
    ]', - '', - '[header&header-1 h1. Welcome]', - '', - '[variable-2 * Item one]', - '[variable-2 * Item two]', - '', - '[comment Example]', - '', - '[comment
    ]', - '[comment
    ]'); - - MT('inlineHtml', - 'I can use HTML directly in my [comment Textile].'); - - /* - * No-Textile - */ - - MT('notextile', - '[string-2 notextile. *No* formatting]'); - - MT('notextileInline', - 'Use [string-2 ==*asterisks*==] for [strong *strong*] text.'); - - MT('notextileWithPre', - '[operator pre. *No* formatting]'); - - MT('notextileWithSpanningPre', - '[operator pre.. *No* formatting]', - '', - '[operator *No* formatting]'); - - /* Only toggling phrases between non-word chars. */ - - MT('phrase-in-word', - 'foo_bar_baz'); - - MT('phrase-non-word', - '[negative -x-] aaa-bbb ccc-ddd [negative -eee-] fff [negative -ggg-]'); - - MT('phrase-lone-dash', - 'foo - bar - baz'); -})(); diff --git a/public/plugins/codemirror-5.17.0/mode/textile/textile.js b/public/plugins/codemirror-5.17.0/mode/textile/textile.js deleted file mode 100644 index a6f757658..000000000 --- a/public/plugins/codemirror-5.17.0/mode/textile/textile.js +++ /dev/null @@ -1,469 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") { // CommonJS - mod(require("../../lib/codemirror")); - } else if (typeof define == "function" && define.amd) { // AMD - define(["../../lib/codemirror"], mod); - } else { // Plain browser env - mod(CodeMirror); - } -})(function(CodeMirror) { - "use strict"; - - var TOKEN_STYLES = { - addition: "positive", - attributes: "attribute", - bold: "strong", - cite: "keyword", - code: "atom", - definitionList: "number", - deletion: "negative", - div: "punctuation", - em: "em", - footnote: "variable", - footCite: "qualifier", - header: "header", - html: "comment", - image: "string", - italic: "em", - link: "link", - linkDefinition: "link", - list1: "variable-2", - list2: "variable-3", - list3: "keyword", - notextile: "string-2", - pre: "operator", - p: "property", - quote: "bracket", - span: "quote", - specialChar: "tag", - strong: "strong", - sub: "builtin", - sup: "builtin", - table: "variable-3", - tableHeading: "operator" - }; - - function startNewLine(stream, state) { - state.mode = Modes.newLayout; - state.tableHeading = false; - - if (state.layoutType === "definitionList" && state.spanningLayout && - stream.match(RE("definitionListEnd"), false)) - state.spanningLayout = false; - } - - function handlePhraseModifier(stream, state, ch) { - if (ch === "_") { - if (stream.eat("_")) - return togglePhraseModifier(stream, state, "italic", /__/, 2); - else - return togglePhraseModifier(stream, state, "em", /_/, 1); - } - - if (ch === "*") { - if (stream.eat("*")) { - return togglePhraseModifier(stream, state, "bold", /\*\*/, 2); - } - return togglePhraseModifier(stream, state, "strong", /\*/, 1); - } - - if (ch === "[") { - if (stream.match(/\d+\]/)) state.footCite = true; - return tokenStyles(state); - } - - if (ch === "(") { - var spec = stream.match(/^(r|tm|c)\)/); - if (spec) - return tokenStylesWith(state, TOKEN_STYLES.specialChar); - } - - if (ch === "<" && stream.match(/(\w+)[^>]+>[^<]+<\/\1>/)) - return tokenStylesWith(state, TOKEN_STYLES.html); - - if (ch === "?" && stream.eat("?")) - return togglePhraseModifier(stream, state, "cite", /\?\?/, 2); - - if (ch === "=" && stream.eat("=")) - return togglePhraseModifier(stream, state, "notextile", /==/, 2); - - if (ch === "-" && !stream.eat("-")) - return togglePhraseModifier(stream, state, "deletion", /-/, 1); - - if (ch === "+") - return togglePhraseModifier(stream, state, "addition", /\+/, 1); - - if (ch === "~") - return togglePhraseModifier(stream, state, "sub", /~/, 1); - - if (ch === "^") - return togglePhraseModifier(stream, state, "sup", /\^/, 1); - - if (ch === "%") - return togglePhraseModifier(stream, state, "span", /%/, 1); - - if (ch === "@") - return togglePhraseModifier(stream, state, "code", /@/, 1); - - if (ch === "!") { - var type = togglePhraseModifier(stream, state, "image", /(?:\([^\)]+\))?!/, 1); - stream.match(/^:\S+/); // optional Url portion - return type; - } - return tokenStyles(state); - } - - function togglePhraseModifier(stream, state, phraseModifier, closeRE, openSize) { - var charBefore = stream.pos > openSize ? stream.string.charAt(stream.pos - openSize - 1) : null; - var charAfter = stream.peek(); - if (state[phraseModifier]) { - if ((!charAfter || /\W/.test(charAfter)) && charBefore && /\S/.test(charBefore)) { - var type = tokenStyles(state); - state[phraseModifier] = false; - return type; - } - } else if ((!charBefore || /\W/.test(charBefore)) && charAfter && /\S/.test(charAfter) && - stream.match(new RegExp("^.*\\S" + closeRE.source + "(?:\\W|$)"), false)) { - state[phraseModifier] = true; - state.mode = Modes.attributes; - } - return tokenStyles(state); - }; - - function tokenStyles(state) { - var disabled = textileDisabled(state); - if (disabled) return disabled; - - var styles = []; - if (state.layoutType) styles.push(TOKEN_STYLES[state.layoutType]); - - styles = styles.concat(activeStyles( - state, "addition", "bold", "cite", "code", "deletion", "em", "footCite", - "image", "italic", "link", "span", "strong", "sub", "sup", "table", "tableHeading")); - - if (state.layoutType === "header") - styles.push(TOKEN_STYLES.header + "-" + state.header); - - return styles.length ? styles.join(" ") : null; - } - - function textileDisabled(state) { - var type = state.layoutType; - - switch(type) { - case "notextile": - case "code": - case "pre": - return TOKEN_STYLES[type]; - default: - if (state.notextile) - return TOKEN_STYLES.notextile + (type ? (" " + TOKEN_STYLES[type]) : ""); - return null; - } - } - - function tokenStylesWith(state, extraStyles) { - var disabled = textileDisabled(state); - if (disabled) return disabled; - - var type = tokenStyles(state); - if (extraStyles) - return type ? (type + " " + extraStyles) : extraStyles; - else - return type; - } - - function activeStyles(state) { - var styles = []; - for (var i = 1; i < arguments.length; ++i) { - if (state[arguments[i]]) - styles.push(TOKEN_STYLES[arguments[i]]); - } - return styles; - } - - function blankLine(state) { - var spanningLayout = state.spanningLayout, type = state.layoutType; - - for (var key in state) if (state.hasOwnProperty(key)) - delete state[key]; - - state.mode = Modes.newLayout; - if (spanningLayout) { - state.layoutType = type; - state.spanningLayout = true; - } - } - - var REs = { - cache: {}, - single: { - bc: "bc", - bq: "bq", - definitionList: /- [^(?::=)]+:=+/, - definitionListEnd: /.*=:\s*$/, - div: "div", - drawTable: /\|.*\|/, - foot: /fn\d+/, - header: /h[1-6]/, - html: /\s*<(?:\/)?(\w+)(?:[^>]+)?>(?:[^<]+<\/\1>)?/, - link: /[^"]+":\S/, - linkDefinition: /\[[^\s\]]+\]\S+/, - list: /(?:#+|\*+)/, - notextile: "notextile", - para: "p", - pre: "pre", - table: "table", - tableCellAttributes: /[\/\\]\d+/, - tableHeading: /\|_\./, - tableText: /[^"_\*\[\(\?\+~\^%@|-]+/, - text: /[^!"_=\*\[\(<\?\+~\^%@-]+/ - }, - attributes: { - align: /(?:<>|<|>|=)/, - selector: /\([^\(][^\)]+\)/, - lang: /\[[^\[\]]+\]/, - pad: /(?:\(+|\)+){1,2}/, - css: /\{[^\}]+\}/ - }, - createRe: function(name) { - switch (name) { - case "drawTable": - return REs.makeRe("^", REs.single.drawTable, "$"); - case "html": - return REs.makeRe("^", REs.single.html, "(?:", REs.single.html, ")*", "$"); - case "linkDefinition": - return REs.makeRe("^", REs.single.linkDefinition, "$"); - case "listLayout": - return REs.makeRe("^", REs.single.list, RE("allAttributes"), "*\\s+"); - case "tableCellAttributes": - return REs.makeRe("^", REs.choiceRe(REs.single.tableCellAttributes, - RE("allAttributes")), "+\\."); - case "type": - return REs.makeRe("^", RE("allTypes")); - case "typeLayout": - return REs.makeRe("^", RE("allTypes"), RE("allAttributes"), - "*\\.\\.?", "(\\s+|$)"); - case "attributes": - return REs.makeRe("^", RE("allAttributes"), "+"); - - case "allTypes": - return REs.choiceRe(REs.single.div, REs.single.foot, - REs.single.header, REs.single.bc, REs.single.bq, - REs.single.notextile, REs.single.pre, REs.single.table, - REs.single.para); - - case "allAttributes": - return REs.choiceRe(REs.attributes.selector, REs.attributes.css, - REs.attributes.lang, REs.attributes.align, REs.attributes.pad); - - default: - return REs.makeRe("^", REs.single[name]); - } - }, - makeRe: function() { - var pattern = ""; - for (var i = 0; i < arguments.length; ++i) { - var arg = arguments[i]; - pattern += (typeof arg === "string") ? arg : arg.source; - } - return new RegExp(pattern); - }, - choiceRe: function() { - var parts = [arguments[0]]; - for (var i = 1; i < arguments.length; ++i) { - parts[i * 2 - 1] = "|"; - parts[i * 2] = arguments[i]; - } - - parts.unshift("(?:"); - parts.push(")"); - return REs.makeRe.apply(null, parts); - } - }; - - function RE(name) { - return (REs.cache[name] || (REs.cache[name] = REs.createRe(name))); - } - - var Modes = { - newLayout: function(stream, state) { - if (stream.match(RE("typeLayout"), false)) { - state.spanningLayout = false; - return (state.mode = Modes.blockType)(stream, state); - } - var newMode; - if (!textileDisabled(state)) { - if (stream.match(RE("listLayout"), false)) - newMode = Modes.list; - else if (stream.match(RE("drawTable"), false)) - newMode = Modes.table; - else if (stream.match(RE("linkDefinition"), false)) - newMode = Modes.linkDefinition; - else if (stream.match(RE("definitionList"))) - newMode = Modes.definitionList; - else if (stream.match(RE("html"), false)) - newMode = Modes.html; - } - return (state.mode = (newMode || Modes.text))(stream, state); - }, - - blockType: function(stream, state) { - var match, type; - state.layoutType = null; - - if (match = stream.match(RE("type"))) - type = match[0]; - else - return (state.mode = Modes.text)(stream, state); - - if (match = type.match(RE("header"))) { - state.layoutType = "header"; - state.header = parseInt(match[0][1]); - } else if (type.match(RE("bq"))) { - state.layoutType = "quote"; - } else if (type.match(RE("bc"))) { - state.layoutType = "code"; - } else if (type.match(RE("foot"))) { - state.layoutType = "footnote"; - } else if (type.match(RE("notextile"))) { - state.layoutType = "notextile"; - } else if (type.match(RE("pre"))) { - state.layoutType = "pre"; - } else if (type.match(RE("div"))) { - state.layoutType = "div"; - } else if (type.match(RE("table"))) { - state.layoutType = "table"; - } - - state.mode = Modes.attributes; - return tokenStyles(state); - }, - - text: function(stream, state) { - if (stream.match(RE("text"))) return tokenStyles(state); - - var ch = stream.next(); - if (ch === '"') - return (state.mode = Modes.link)(stream, state); - return handlePhraseModifier(stream, state, ch); - }, - - attributes: function(stream, state) { - state.mode = Modes.layoutLength; - - if (stream.match(RE("attributes"))) - return tokenStylesWith(state, TOKEN_STYLES.attributes); - else - return tokenStyles(state); - }, - - layoutLength: function(stream, state) { - if (stream.eat(".") && stream.eat(".")) - state.spanningLayout = true; - - state.mode = Modes.text; - return tokenStyles(state); - }, - - list: function(stream, state) { - var match = stream.match(RE("list")); - state.listDepth = match[0].length; - var listMod = (state.listDepth - 1) % 3; - if (!listMod) - state.layoutType = "list1"; - else if (listMod === 1) - state.layoutType = "list2"; - else - state.layoutType = "list3"; - - state.mode = Modes.attributes; - return tokenStyles(state); - }, - - link: function(stream, state) { - state.mode = Modes.text; - if (stream.match(RE("link"))) { - stream.match(/\S+/); - return tokenStylesWith(state, TOKEN_STYLES.link); - } - return tokenStyles(state); - }, - - linkDefinition: function(stream, state) { - stream.skipToEnd(); - return tokenStylesWith(state, TOKEN_STYLES.linkDefinition); - }, - - definitionList: function(stream, state) { - stream.match(RE("definitionList")); - - state.layoutType = "definitionList"; - - if (stream.match(/\s*$/)) - state.spanningLayout = true; - else - state.mode = Modes.attributes; - - return tokenStyles(state); - }, - - html: function(stream, state) { - stream.skipToEnd(); - return tokenStylesWith(state, TOKEN_STYLES.html); - }, - - table: function(stream, state) { - state.layoutType = "table"; - return (state.mode = Modes.tableCell)(stream, state); - }, - - tableCell: function(stream, state) { - if (stream.match(RE("tableHeading"))) - state.tableHeading = true; - else - stream.eat("|"); - - state.mode = Modes.tableCellAttributes; - return tokenStyles(state); - }, - - tableCellAttributes: function(stream, state) { - state.mode = Modes.tableText; - - if (stream.match(RE("tableCellAttributes"))) - return tokenStylesWith(state, TOKEN_STYLES.attributes); - else - return tokenStyles(state); - }, - - tableText: function(stream, state) { - if (stream.match(RE("tableText"))) - return tokenStyles(state); - - if (stream.peek() === "|") { // end of cell - state.mode = Modes.tableCell; - return tokenStyles(state); - } - return handlePhraseModifier(stream, state, stream.next()); - } - }; - - CodeMirror.defineMode("textile", function() { - return { - startState: function() { - return { mode: Modes.newLayout }; - }, - token: function(stream, state) { - if (stream.sol()) startNewLine(stream, state); - return state.mode(stream, state); - }, - blankLine: blankLine - }; - }); - - CodeMirror.defineMIME("text/x-textile", "textile"); -}); diff --git a/public/plugins/codemirror-5.17.0/mode/tiddlywiki/index.html b/public/plugins/codemirror-5.17.0/mode/tiddlywiki/index.html deleted file mode 100644 index 77dd0457c..000000000 --- a/public/plugins/codemirror-5.17.0/mode/tiddlywiki/index.html +++ /dev/null @@ -1,154 +0,0 @@ - - -CodeMirror: TiddlyWiki mode - - - - - - - - - - - -
    -

    TiddlyWiki mode

    - - -
    - - - -

    TiddlyWiki mode supports a single configuration.

    - -

    MIME types defined: text/x-tiddlywiki.

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/tiddlywiki/tiddlywiki.css b/public/plugins/codemirror-5.17.0/mode/tiddlywiki/tiddlywiki.css deleted file mode 100644 index 9a69b639f..000000000 --- a/public/plugins/codemirror-5.17.0/mode/tiddlywiki/tiddlywiki.css +++ /dev/null @@ -1,14 +0,0 @@ -span.cm-underlined { - text-decoration: underline; -} -span.cm-strikethrough { - text-decoration: line-through; -} -span.cm-brace { - color: #170; - font-weight: bold; -} -span.cm-table { - color: blue; - font-weight: bold; -} diff --git a/public/plugins/codemirror-5.17.0/mode/tiddlywiki/tiddlywiki.js b/public/plugins/codemirror-5.17.0/mode/tiddlywiki/tiddlywiki.js deleted file mode 100644 index 1a3b3bc68..000000000 --- a/public/plugins/codemirror-5.17.0/mode/tiddlywiki/tiddlywiki.js +++ /dev/null @@ -1,308 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -/*** - |''Name''|tiddlywiki.js| - |''Description''|Enables TiddlyWikiy syntax highlighting using CodeMirror| - |''Author''|PMario| - |''Version''|0.1.7| - |''Status''|''stable''| - |''Source''|[[GitHub|https://github.com/pmario/CodeMirror2/blob/tw-syntax/mode/tiddlywiki]]| - |''Documentation''|http://codemirror.tiddlyspace.com/| - |''License''|[[MIT License|http://www.opensource.org/licenses/mit-license.php]]| - |''CoreVersion''|2.5.0| - |''Requires''|codemirror.js| - |''Keywords''|syntax highlighting color code mirror codemirror| - ! Info - CoreVersion parameter is needed for TiddlyWiki only! -***/ - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("tiddlywiki", function () { - // Tokenizer - var textwords = {}; - - var keywords = { - "allTags": true, "closeAll": true, "list": true, - "newJournal": true, "newTiddler": true, - "permaview": true, "saveChanges": true, - "search": true, "slider": true, "tabs": true, - "tag": true, "tagging": true, "tags": true, - "tiddler": true, "timeline": true, - "today": true, "version": true, "option": true, - "with": true, "filter": true - }; - - var isSpaceName = /[\w_\-]/i, - reHR = /^\-\-\-\-+$/, //
    - reWikiCommentStart = /^\/\*\*\*$/, // /*** - reWikiCommentStop = /^\*\*\*\/$/, // ***/ - reBlockQuote = /^<<<$/, - - reJsCodeStart = /^\/\/\{\{\{$/, // //{{{ js block start - reJsCodeStop = /^\/\/\}\}\}$/, // //}}} js stop - reXmlCodeStart = /^$/, // xml block start - reXmlCodeStop = /^$/, // xml stop - - reCodeBlockStart = /^\{\{\{$/, // {{{ TW text div block start - reCodeBlockStop = /^\}\}\}$/, // }}} TW text stop - - reUntilCodeStop = /.*?\}\}\}/; - - function chain(stream, state, f) { - state.tokenize = f; - return f(stream, state); - } - - function tokenBase(stream, state) { - var sol = stream.sol(), ch = stream.peek(); - - state.block = false; // indicates the start of a code block. - - // check start of blocks - if (sol && /[<\/\*{}\-]/.test(ch)) { - if (stream.match(reCodeBlockStart)) { - state.block = true; - return chain(stream, state, twTokenCode); - } - if (stream.match(reBlockQuote)) - return 'quote'; - if (stream.match(reWikiCommentStart) || stream.match(reWikiCommentStop)) - return 'comment'; - if (stream.match(reJsCodeStart) || stream.match(reJsCodeStop) || stream.match(reXmlCodeStart) || stream.match(reXmlCodeStop)) - return 'comment'; - if (stream.match(reHR)) - return 'hr'; - } - - stream.next(); - if (sol && /[\/\*!#;:>|]/.test(ch)) { - if (ch == "!") { // tw header - stream.skipToEnd(); - return "header"; - } - if (ch == "*") { // tw list - stream.eatWhile('*'); - return "comment"; - } - if (ch == "#") { // tw numbered list - stream.eatWhile('#'); - return "comment"; - } - if (ch == ";") { // definition list, term - stream.eatWhile(';'); - return "comment"; - } - if (ch == ":") { // definition list, description - stream.eatWhile(':'); - return "comment"; - } - if (ch == ">") { // single line quote - stream.eatWhile(">"); - return "quote"; - } - if (ch == '|') - return 'header'; - } - - if (ch == '{' && stream.match(/\{\{/)) - return chain(stream, state, twTokenCode); - - // rudimentary html:// file:// link matching. TW knows much more ... - if (/[hf]/i.test(ch) && - /[ti]/i.test(stream.peek()) && - stream.match(/\b(ttps?|tp|ile):\/\/[\-A-Z0-9+&@#\/%?=~_|$!:,.;]*[A-Z0-9+&@#\/%=~_|$]/i)) - return "link"; - - // just a little string indicator, don't want to have the whole string covered - if (ch == '"') - return 'string'; - - if (ch == '~') // _no_ CamelCase indicator should be bold - return 'brace'; - - if (/[\[\]]/.test(ch) && stream.match(ch)) // check for [[..]] - return 'brace'; - - if (ch == "@") { // check for space link. TODO fix @@...@@ highlighting - stream.eatWhile(isSpaceName); - return "link"; - } - - if (/\d/.test(ch)) { // numbers - stream.eatWhile(/\d/); - return "number"; - } - - if (ch == "/") { // tw invisible comment - if (stream.eat("%")) { - return chain(stream, state, twTokenComment); - } else if (stream.eat("/")) { // - return chain(stream, state, twTokenEm); - } - } - - if (ch == "_" && stream.eat("_")) // tw underline - return chain(stream, state, twTokenUnderline); - - // strikethrough and mdash handling - if (ch == "-" && stream.eat("-")) { - // if strikethrough looks ugly, change CSS. - if (stream.peek() != ' ') - return chain(stream, state, twTokenStrike); - // mdash - if (stream.peek() == ' ') - return 'brace'; - } - - if (ch == "'" && stream.eat("'")) // tw bold - return chain(stream, state, twTokenStrong); - - if (ch == "<" && stream.eat("<")) // tw macro - return chain(stream, state, twTokenMacro); - - // core macro handling - stream.eatWhile(/[\w\$_]/); - return textwords.propertyIsEnumerable(stream.current()) ? "keyword" : null - } - - // tw invisible comment - function twTokenComment(stream, state) { - var maybeEnd = false, ch; - while (ch = stream.next()) { - if (ch == "/" && maybeEnd) { - state.tokenize = tokenBase; - break; - } - maybeEnd = (ch == "%"); - } - return "comment"; - } - - // tw strong / bold - function twTokenStrong(stream, state) { - var maybeEnd = false, - ch; - while (ch = stream.next()) { - if (ch == "'" && maybeEnd) { - state.tokenize = tokenBase; - break; - } - maybeEnd = (ch == "'"); - } - return "strong"; - } - - // tw code - function twTokenCode(stream, state) { - var sb = state.block; - - if (sb && stream.current()) { - return "comment"; - } - - if (!sb && stream.match(reUntilCodeStop)) { - state.tokenize = tokenBase; - return "comment"; - } - - if (sb && stream.sol() && stream.match(reCodeBlockStop)) { - state.tokenize = tokenBase; - return "comment"; - } - - stream.next(); - return "comment"; - } - - // tw em / italic - function twTokenEm(stream, state) { - var maybeEnd = false, - ch; - while (ch = stream.next()) { - if (ch == "/" && maybeEnd) { - state.tokenize = tokenBase; - break; - } - maybeEnd = (ch == "/"); - } - return "em"; - } - - // tw underlined text - function twTokenUnderline(stream, state) { - var maybeEnd = false, - ch; - while (ch = stream.next()) { - if (ch == "_" && maybeEnd) { - state.tokenize = tokenBase; - break; - } - maybeEnd = (ch == "_"); - } - return "underlined"; - } - - // tw strike through text looks ugly - // change CSS if needed - function twTokenStrike(stream, state) { - var maybeEnd = false, ch; - - while (ch = stream.next()) { - if (ch == "-" && maybeEnd) { - state.tokenize = tokenBase; - break; - } - maybeEnd = (ch == "-"); - } - return "strikethrough"; - } - - // macro - function twTokenMacro(stream, state) { - if (stream.current() == '<<') { - return 'macro'; - } - - var ch = stream.next(); - if (!ch) { - state.tokenize = tokenBase; - return null; - } - if (ch == ">") { - if (stream.peek() == '>') { - stream.next(); - state.tokenize = tokenBase; - return "macro"; - } - } - - stream.eatWhile(/[\w\$_]/); - return keywords.propertyIsEnumerable(stream.current()) ? "keyword" : null - } - - // Interface - return { - startState: function () { - return {tokenize: tokenBase}; - }, - - token: function (stream, state) { - if (stream.eatSpace()) return null; - var style = state.tokenize(stream, state); - return style; - } - }; -}); - -CodeMirror.defineMIME("text/x-tiddlywiki", "tiddlywiki"); -}); diff --git a/public/plugins/codemirror-5.17.0/mode/tiki/index.html b/public/plugins/codemirror-5.17.0/mode/tiki/index.html deleted file mode 100644 index 091c5fb2a..000000000 --- a/public/plugins/codemirror-5.17.0/mode/tiki/index.html +++ /dev/null @@ -1,95 +0,0 @@ - - -CodeMirror: Tiki wiki mode - - - - - - - - - - -
    -

    Tiki wiki mode

    - - -
    - - - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/tiki/tiki.css b/public/plugins/codemirror-5.17.0/mode/tiki/tiki.css deleted file mode 100644 index 1d8704c78..000000000 --- a/public/plugins/codemirror-5.17.0/mode/tiki/tiki.css +++ /dev/null @@ -1,26 +0,0 @@ -.cm-tw-syntaxerror { - color: #FFF; - background-color: #900; -} - -.cm-tw-deleted { - text-decoration: line-through; -} - -.cm-tw-header5 { - font-weight: bold; -} -.cm-tw-listitem:first-child { /*Added first child to fix duplicate padding when highlighting*/ - padding-left: 10px; -} - -.cm-tw-box { - border-top-width: 0px !important; - border-style: solid; - border-width: 1px; - border-color: inherit; -} - -.cm-tw-underline { - text-decoration: underline; -} \ No newline at end of file diff --git a/public/plugins/codemirror-5.17.0/mode/tiki/tiki.js b/public/plugins/codemirror-5.17.0/mode/tiki/tiki.js deleted file mode 100644 index 5e05b1ff0..000000000 --- a/public/plugins/codemirror-5.17.0/mode/tiki/tiki.js +++ /dev/null @@ -1,312 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode('tiki', function(config) { - function inBlock(style, terminator, returnTokenizer) { - return function(stream, state) { - while (!stream.eol()) { - if (stream.match(terminator)) { - state.tokenize = inText; - break; - } - stream.next(); - } - - if (returnTokenizer) state.tokenize = returnTokenizer; - - return style; - }; - } - - function inLine(style) { - return function(stream, state) { - while(!stream.eol()) { - stream.next(); - } - state.tokenize = inText; - return style; - }; - } - - function inText(stream, state) { - function chain(parser) { - state.tokenize = parser; - return parser(stream, state); - } - - var sol = stream.sol(); - var ch = stream.next(); - - //non start of line - switch (ch) { //switch is generally much faster than if, so it is used here - case "{": //plugin - stream.eat("/"); - stream.eatSpace(); - stream.eatWhile(/[^\s\u00a0=\"\'\/?(}]/); - state.tokenize = inPlugin; - return "tag"; - case "_": //bold - if (stream.eat("_")) - return chain(inBlock("strong", "__", inText)); - break; - case "'": //italics - if (stream.eat("'")) - return chain(inBlock("em", "''", inText)); - break; - case "(":// Wiki Link - if (stream.eat("(")) - return chain(inBlock("variable-2", "))", inText)); - break; - case "[":// Weblink - return chain(inBlock("variable-3", "]", inText)); - break; - case "|": //table - if (stream.eat("|")) - return chain(inBlock("comment", "||")); - break; - case "-": - if (stream.eat("=")) {//titleBar - return chain(inBlock("header string", "=-", inText)); - } else if (stream.eat("-")) {//deleted - return chain(inBlock("error tw-deleted", "--", inText)); - } - break; - case "=": //underline - if (stream.match("==")) - return chain(inBlock("tw-underline", "===", inText)); - break; - case ":": - if (stream.eat(":")) - return chain(inBlock("comment", "::")); - break; - case "^": //box - return chain(inBlock("tw-box", "^")); - break; - case "~": //np - if (stream.match("np~")) - return chain(inBlock("meta", "~/np~")); - break; - } - - //start of line types - if (sol) { - switch (ch) { - case "!": //header at start of line - if (stream.match('!!!!!')) { - return chain(inLine("header string")); - } else if (stream.match('!!!!')) { - return chain(inLine("header string")); - } else if (stream.match('!!!')) { - return chain(inLine("header string")); - } else if (stream.match('!!')) { - return chain(inLine("header string")); - } else { - return chain(inLine("header string")); - } - break; - case "*": //unordered list line item, or
  1. at start of line - case "#": //ordered list line item, or
  2. at start of line - case "+": //ordered list line item, or
  3. at start of line - return chain(inLine("tw-listitem bracket")); - break; - } - } - - //stream.eatWhile(/[&{]/); was eating up plugins, turned off to act less like html and more like tiki - return null; - } - - var indentUnit = config.indentUnit; - - // Return variables for tokenizers - var pluginName, type; - function inPlugin(stream, state) { - var ch = stream.next(); - var peek = stream.peek(); - - if (ch == "}") { - state.tokenize = inText; - //type = ch == ")" ? "endPlugin" : "selfclosePlugin"; inPlugin - return "tag"; - } else if (ch == "(" || ch == ")") { - return "bracket"; - } else if (ch == "=") { - type = "equals"; - - if (peek == ">") { - ch = stream.next(); - peek = stream.peek(); - } - - //here we detect values directly after equal character with no quotes - if (!/[\'\"]/.test(peek)) { - state.tokenize = inAttributeNoQuote(); - } - //end detect values - - return "operator"; - } else if (/[\'\"]/.test(ch)) { - state.tokenize = inAttribute(ch); - return state.tokenize(stream, state); - } else { - stream.eatWhile(/[^\s\u00a0=\"\'\/?]/); - return "keyword"; - } - } - - function inAttribute(quote) { - return function(stream, state) { - while (!stream.eol()) { - if (stream.next() == quote) { - state.tokenize = inPlugin; - break; - } - } - return "string"; - }; - } - - function inAttributeNoQuote() { - return function(stream, state) { - while (!stream.eol()) { - var ch = stream.next(); - var peek = stream.peek(); - if (ch == " " || ch == "," || /[ )}]/.test(peek)) { - state.tokenize = inPlugin; - break; - } - } - return "string"; -}; - } - -var curState, setStyle; -function pass() { - for (var i = arguments.length - 1; i >= 0; i--) curState.cc.push(arguments[i]); -} - -function cont() { - pass.apply(null, arguments); - return true; -} - -function pushContext(pluginName, startOfLine) { - var noIndent = curState.context && curState.context.noIndent; - curState.context = { - prev: curState.context, - pluginName: pluginName, - indent: curState.indented, - startOfLine: startOfLine, - noIndent: noIndent - }; -} - -function popContext() { - if (curState.context) curState.context = curState.context.prev; -} - -function element(type) { - if (type == "openPlugin") {curState.pluginName = pluginName; return cont(attributes, endplugin(curState.startOfLine));} - else if (type == "closePlugin") { - var err = false; - if (curState.context) { - err = curState.context.pluginName != pluginName; - popContext(); - } else { - err = true; - } - if (err) setStyle = "error"; - return cont(endcloseplugin(err)); - } - else if (type == "string") { - if (!curState.context || curState.context.name != "!cdata") pushContext("!cdata"); - if (curState.tokenize == inText) popContext(); - return cont(); - } - else return cont(); -} - -function endplugin(startOfLine) { - return function(type) { - if ( - type == "selfclosePlugin" || - type == "endPlugin" - ) - return cont(); - if (type == "endPlugin") {pushContext(curState.pluginName, startOfLine); return cont();} - return cont(); - }; -} - -function endcloseplugin(err) { - return function(type) { - if (err) setStyle = "error"; - if (type == "endPlugin") return cont(); - return pass(); - }; -} - -function attributes(type) { - if (type == "keyword") {setStyle = "attribute"; return cont(attributes);} - if (type == "equals") return cont(attvalue, attributes); - return pass(); -} -function attvalue(type) { - if (type == "keyword") {setStyle = "string"; return cont();} - if (type == "string") return cont(attvaluemaybe); - return pass(); -} -function attvaluemaybe(type) { - if (type == "string") return cont(attvaluemaybe); - else return pass(); -} -return { - startState: function() { - return {tokenize: inText, cc: [], indented: 0, startOfLine: true, pluginName: null, context: null}; - }, - token: function(stream, state) { - if (stream.sol()) { - state.startOfLine = true; - state.indented = stream.indentation(); - } - if (stream.eatSpace()) return null; - - setStyle = type = pluginName = null; - var style = state.tokenize(stream, state); - if ((style || type) && style != "comment") { - curState = state; - while (true) { - var comb = state.cc.pop() || element; - if (comb(type || style)) break; - } - } - state.startOfLine = false; - return setStyle || style; - }, - indent: function(state, textAfter) { - var context = state.context; - if (context && context.noIndent) return 0; - if (context && /^{\//.test(textAfter)) - context = context.prev; - while (context && !context.startOfLine) - context = context.prev; - if (context) return context.indent + indentUnit; - else return 0; - }, - electricChars: "/" - }; -}); - -CodeMirror.defineMIME("text/tiki", "tiki"); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/toml/index.html b/public/plugins/codemirror-5.17.0/mode/toml/index.html deleted file mode 100644 index 90a2a0215..000000000 --- a/public/plugins/codemirror-5.17.0/mode/toml/index.html +++ /dev/null @@ -1,73 +0,0 @@ - - -CodeMirror: TOML Mode - - - - - - - - - -
    -

    TOML Mode

    -
    - -

    The TOML Mode

    -

    Created by Forbes Lindesay.

    -

    MIME type defined: text/x-toml.

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/toml/toml.js b/public/plugins/codemirror-5.17.0/mode/toml/toml.js deleted file mode 100644 index baeca1556..000000000 --- a/public/plugins/codemirror-5.17.0/mode/toml/toml.js +++ /dev/null @@ -1,88 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("toml", function () { - return { - startState: function () { - return { - inString: false, - stringType: "", - lhs: true, - inArray: 0 - }; - }, - token: function (stream, state) { - //check for state changes - if (!state.inString && ((stream.peek() == '"') || (stream.peek() == "'"))) { - state.stringType = stream.peek(); - stream.next(); // Skip quote - state.inString = true; // Update state - } - if (stream.sol() && state.inArray === 0) { - state.lhs = true; - } - //return state - if (state.inString) { - while (state.inString && !stream.eol()) { - if (stream.peek() === state.stringType) { - stream.next(); // Skip quote - state.inString = false; // Clear flag - } else if (stream.peek() === '\\') { - stream.next(); - stream.next(); - } else { - stream.match(/^.[^\\\"\']*/); - } - } - return state.lhs ? "property string" : "string"; // Token style - } else if (state.inArray && stream.peek() === ']') { - stream.next(); - state.inArray--; - return 'bracket'; - } else if (state.lhs && stream.peek() === '[' && stream.skipTo(']')) { - stream.next();//skip closing ] - // array of objects has an extra open & close [] - if (stream.peek() === ']') stream.next(); - return "atom"; - } else if (stream.peek() === "#") { - stream.skipToEnd(); - return "comment"; - } else if (stream.eatSpace()) { - return null; - } else if (state.lhs && stream.eatWhile(function (c) { return c != '=' && c != ' '; })) { - return "property"; - } else if (state.lhs && stream.peek() === "=") { - stream.next(); - state.lhs = false; - return null; - } else if (!state.lhs && stream.match(/^\d\d\d\d[\d\-\:\.T]*Z/)) { - return 'atom'; //date - } else if (!state.lhs && (stream.match('true') || stream.match('false'))) { - return 'atom'; - } else if (!state.lhs && stream.peek() === '[') { - state.inArray++; - stream.next(); - return 'bracket'; - } else if (!state.lhs && stream.match(/^\-?\d+(?:\.\d+)?/)) { - return 'number'; - } else if (!stream.eatSpace()) { - stream.next(); - } - return null; - } - }; -}); - -CodeMirror.defineMIME('text/x-toml', 'toml'); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/tornado/index.html b/public/plugins/codemirror-5.17.0/mode/tornado/index.html deleted file mode 100644 index 8ee7ef56c..000000000 --- a/public/plugins/codemirror-5.17.0/mode/tornado/index.html +++ /dev/null @@ -1,63 +0,0 @@ - - -CodeMirror: Tornado template mode - - - - - - - - - - - - -
    -

    Tornado template mode

    -
    - - - -

    Mode for HTML with embedded Tornado template markup.

    - -

    MIME types defined: text/x-tornado

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/tornado/tornado.js b/public/plugins/codemirror-5.17.0/mode/tornado/tornado.js deleted file mode 100644 index dbfbc3489..000000000 --- a/public/plugins/codemirror-5.17.0/mode/tornado/tornado.js +++ /dev/null @@ -1,68 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed"), - require("../../addon/mode/overlay")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../htmlmixed/htmlmixed", - "../../addon/mode/overlay"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - CodeMirror.defineMode("tornado:inner", function() { - var keywords = ["and","as","assert","autoescape","block","break","class","comment","context", - "continue","datetime","def","del","elif","else","end","escape","except", - "exec","extends","false","finally","for","from","global","if","import","in", - "include","is","json_encode","lambda","length","linkify","load","module", - "none","not","or","pass","print","put","raise","raw","return","self","set", - "squeeze","super","true","try","url_escape","while","with","without","xhtml_escape","yield"]; - keywords = new RegExp("^((" + keywords.join(")|(") + "))\\b"); - - function tokenBase (stream, state) { - stream.eatWhile(/[^\{]/); - var ch = stream.next(); - if (ch == "{") { - if (ch = stream.eat(/\{|%|#/)) { - state.tokenize = inTag(ch); - return "tag"; - } - } - } - function inTag (close) { - if (close == "{") { - close = "}"; - } - return function (stream, state) { - var ch = stream.next(); - if ((ch == close) && stream.eat("}")) { - state.tokenize = tokenBase; - return "tag"; - } - if (stream.match(keywords)) { - return "keyword"; - } - return close == "#" ? "comment" : "string"; - }; - } - return { - startState: function () { - return {tokenize: tokenBase}; - }, - token: function (stream, state) { - return state.tokenize(stream, state); - } - }; - }); - - CodeMirror.defineMode("tornado", function(config) { - var htmlBase = CodeMirror.getMode(config, "text/html"); - var tornadoInner = CodeMirror.getMode(config, "tornado:inner"); - return CodeMirror.overlayMode(htmlBase, tornadoInner); - }); - - CodeMirror.defineMIME("text/x-tornado", "tornado"); -}); diff --git a/public/plugins/codemirror-5.17.0/mode/troff/index.html b/public/plugins/codemirror-5.17.0/mode/troff/index.html deleted file mode 100644 index 7c5a54e54..000000000 --- a/public/plugins/codemirror-5.17.0/mode/troff/index.html +++ /dev/null @@ -1,146 +0,0 @@ - - -CodeMirror: troff mode - - - - - - - - - - -
    -

    troff

    - - - - - - -

    MIME types defined: troff.

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/troff/troff.js b/public/plugins/codemirror-5.17.0/mode/troff/troff.js deleted file mode 100644 index 86154b6e1..000000000 --- a/public/plugins/codemirror-5.17.0/mode/troff/troff.js +++ /dev/null @@ -1,84 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) - define(["../../lib/codemirror"], mod); - else - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode('troff', function() { - - var words = {}; - - function tokenBase(stream) { - if (stream.eatSpace()) return null; - - var sol = stream.sol(); - var ch = stream.next(); - - if (ch === '\\') { - if (stream.match('fB') || stream.match('fR') || stream.match('fI') || - stream.match('u') || stream.match('d') || - stream.match('%') || stream.match('&')) { - return 'string'; - } - if (stream.match('m[')) { - stream.skipTo(']'); - stream.next(); - return 'string'; - } - if (stream.match('s+') || stream.match('s-')) { - stream.eatWhile(/[\d-]/); - return 'string'; - } - if (stream.match('\(') || stream.match('*\(')) { - stream.eatWhile(/[\w-]/); - return 'string'; - } - return 'string'; - } - if (sol && (ch === '.' || ch === '\'')) { - if (stream.eat('\\') && stream.eat('\"')) { - stream.skipToEnd(); - return 'comment'; - } - } - if (sol && ch === '.') { - if (stream.match('B ') || stream.match('I ') || stream.match('R ')) { - return 'attribute'; - } - if (stream.match('TH ') || stream.match('SH ') || stream.match('SS ') || stream.match('HP ')) { - stream.skipToEnd(); - return 'quote'; - } - if ((stream.match(/[A-Z]/) && stream.match(/[A-Z]/)) || (stream.match(/[a-z]/) && stream.match(/[a-z]/))) { - return 'attribute'; - } - } - stream.eatWhile(/[\w-]/); - var cur = stream.current(); - return words.hasOwnProperty(cur) ? words[cur] : null; - } - - function tokenize(stream, state) { - return (state.tokens[0] || tokenBase) (stream, state); - }; - - return { - startState: function() {return {tokens:[]};}, - token: function(stream, state) { - return tokenize(stream, state); - } - }; -}); - -CodeMirror.defineMIME('text/troff', 'troff'); -CodeMirror.defineMIME('text/x-troff', 'troff'); -CodeMirror.defineMIME('application/x-troff', 'troff'); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/ttcn-cfg/index.html b/public/plugins/codemirror-5.17.0/mode/ttcn-cfg/index.html deleted file mode 100644 index 4a4cd4571..000000000 --- a/public/plugins/codemirror-5.17.0/mode/ttcn-cfg/index.html +++ /dev/null @@ -1,115 +0,0 @@ - - -CodeMirror: TTCN-CFG mode - - - - - - - - -
    -

    TTCN-CFG example

    -
    - -
    - - -
    -

    Language: Testing and Test Control Notation - - Configuration files - (TTCN-CFG) -

    -

    MIME types defined: text/x-ttcn-cfg.

    - -
    -

    The development of this mode has been sponsored by Ericsson - .

    -

    Coded by Asmelash Tsegay Gebretsadkan

    -
    - diff --git a/public/plugins/codemirror-5.17.0/mode/ttcn-cfg/ttcn-cfg.js b/public/plugins/codemirror-5.17.0/mode/ttcn-cfg/ttcn-cfg.js deleted file mode 100644 index e10805119..000000000 --- a/public/plugins/codemirror-5.17.0/mode/ttcn-cfg/ttcn-cfg.js +++ /dev/null @@ -1,214 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - CodeMirror.defineMode("ttcn-cfg", function(config, parserConfig) { - var indentUnit = config.indentUnit, - keywords = parserConfig.keywords || {}, - fileNCtrlMaskOptions = parserConfig.fileNCtrlMaskOptions || {}, - externalCommands = parserConfig.externalCommands || {}, - multiLineStrings = parserConfig.multiLineStrings, - indentStatements = parserConfig.indentStatements !== false; - var isOperatorChar = /[\|]/; - var curPunc; - - function tokenBase(stream, state) { - var ch = stream.next(); - if (ch == '"' || ch == "'") { - state.tokenize = tokenString(ch); - return state.tokenize(stream, state); - } - if (/[:=]/.test(ch)) { - curPunc = ch; - return "punctuation"; - } - if (ch == "#"){ - stream.skipToEnd(); - return "comment"; - } - if (/\d/.test(ch)) { - stream.eatWhile(/[\w\.]/); - return "number"; - } - if (isOperatorChar.test(ch)) { - stream.eatWhile(isOperatorChar); - return "operator"; - } - if (ch == "["){ - stream.eatWhile(/[\w_\]]/); - return "number sectionTitle"; - } - - stream.eatWhile(/[\w\$_]/); - var cur = stream.current(); - if (keywords.propertyIsEnumerable(cur)) return "keyword"; - if (fileNCtrlMaskOptions.propertyIsEnumerable(cur)) - return "negative fileNCtrlMaskOptions"; - if (externalCommands.propertyIsEnumerable(cur)) return "negative externalCommands"; - - return "variable"; - } - - function tokenString(quote) { - return function(stream, state) { - var escaped = false, next, end = false; - while ((next = stream.next()) != null) { - if (next == quote && !escaped){ - var afterNext = stream.peek(); - //look if the character if the quote is like the B in '10100010'B - if (afterNext){ - afterNext = afterNext.toLowerCase(); - if(afterNext == "b" || afterNext == "h" || afterNext == "o") - stream.next(); - } - end = true; break; - } - escaped = !escaped && next == "\\"; - } - if (end || !(escaped || multiLineStrings)) - state.tokenize = null; - return "string"; - }; - } - - function Context(indented, column, type, align, prev) { - this.indented = indented; - this.column = column; - this.type = type; - this.align = align; - this.prev = prev; - } - function pushContext(state, col, type) { - var indent = state.indented; - if (state.context && state.context.type == "statement") - indent = state.context.indented; - return state.context = new Context(indent, col, type, null, state.context); - } - function popContext(state) { - var t = state.context.type; - if (t == ")" || t == "]" || t == "}") - state.indented = state.context.indented; - return state.context = state.context.prev; - } - - //Interface - return { - startState: function(basecolumn) { - return { - tokenize: null, - context: new Context((basecolumn || 0) - indentUnit, 0, "top", false), - indented: 0, - startOfLine: true - }; - }, - - token: function(stream, state) { - var ctx = state.context; - if (stream.sol()) { - if (ctx.align == null) ctx.align = false; - state.indented = stream.indentation(); - state.startOfLine = true; - } - if (stream.eatSpace()) return null; - curPunc = null; - var style = (state.tokenize || tokenBase)(stream, state); - if (style == "comment") return style; - if (ctx.align == null) ctx.align = true; - - if ((curPunc == ";" || curPunc == ":" || curPunc == ",") - && ctx.type == "statement"){ - popContext(state); - } - else if (curPunc == "{") pushContext(state, stream.column(), "}"); - else if (curPunc == "[") pushContext(state, stream.column(), "]"); - else if (curPunc == "(") pushContext(state, stream.column(), ")"); - else if (curPunc == "}") { - while (ctx.type == "statement") ctx = popContext(state); - if (ctx.type == "}") ctx = popContext(state); - while (ctx.type == "statement") ctx = popContext(state); - } - else if (curPunc == ctx.type) popContext(state); - else if (indentStatements && (((ctx.type == "}" || ctx.type == "top") - && curPunc != ';') || (ctx.type == "statement" - && curPunc == "newstatement"))) - pushContext(state, stream.column(), "statement"); - state.startOfLine = false; - return style; - }, - - electricChars: "{}", - lineComment: "#", - fold: "brace" - }; - }); - - function words(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) - obj[words[i]] = true; - return obj; - } - - CodeMirror.defineMIME("text/x-ttcn-cfg", { - name: "ttcn-cfg", - keywords: words("Yes No LogFile FileMask ConsoleMask AppendFile" + - " TimeStampFormat LogEventTypes SourceInfoFormat" + - " LogEntityName LogSourceInfo DiskFullAction" + - " LogFileNumber LogFileSize MatchingHints Detailed" + - " Compact SubCategories Stack Single None Seconds" + - " DateTime Time Stop Error Retry Delete TCPPort KillTimer" + - " NumHCs UnixSocketsEnabled LocalAddress"), - fileNCtrlMaskOptions: words("TTCN_EXECUTOR TTCN_ERROR TTCN_WARNING" + - " TTCN_PORTEVENT TTCN_TIMEROP TTCN_VERDICTOP" + - " TTCN_DEFAULTOP TTCN_TESTCASE TTCN_ACTION" + - " TTCN_USER TTCN_FUNCTION TTCN_STATISTICS" + - " TTCN_PARALLEL TTCN_MATCHING TTCN_DEBUG" + - " EXECUTOR ERROR WARNING PORTEVENT TIMEROP" + - " VERDICTOP DEFAULTOP TESTCASE ACTION USER" + - " FUNCTION STATISTICS PARALLEL MATCHING DEBUG" + - " LOG_ALL LOG_NOTHING ACTION_UNQUALIFIED" + - " DEBUG_ENCDEC DEBUG_TESTPORT" + - " DEBUG_UNQUALIFIED DEFAULTOP_ACTIVATE" + - " DEFAULTOP_DEACTIVATE DEFAULTOP_EXIT" + - " DEFAULTOP_UNQUALIFIED ERROR_UNQUALIFIED" + - " EXECUTOR_COMPONENT EXECUTOR_CONFIGDATA" + - " EXECUTOR_EXTCOMMAND EXECUTOR_LOGOPTIONS" + - " EXECUTOR_RUNTIME EXECUTOR_UNQUALIFIED" + - " FUNCTION_RND FUNCTION_UNQUALIFIED" + - " MATCHING_DONE MATCHING_MCSUCCESS" + - " MATCHING_MCUNSUCC MATCHING_MMSUCCESS" + - " MATCHING_MMUNSUCC MATCHING_PCSUCCESS" + - " MATCHING_PCUNSUCC MATCHING_PMSUCCESS" + - " MATCHING_PMUNSUCC MATCHING_PROBLEM" + - " MATCHING_TIMEOUT MATCHING_UNQUALIFIED" + - " PARALLEL_PORTCONN PARALLEL_PORTMAP" + - " PARALLEL_PTC PARALLEL_UNQUALIFIED" + - " PORTEVENT_DUALRECV PORTEVENT_DUALSEND" + - " PORTEVENT_MCRECV PORTEVENT_MCSEND" + - " PORTEVENT_MMRECV PORTEVENT_MMSEND" + - " PORTEVENT_MQUEUE PORTEVENT_PCIN" + - " PORTEVENT_PCOUT PORTEVENT_PMIN" + - " PORTEVENT_PMOUT PORTEVENT_PQUEUE" + - " PORTEVENT_STATE PORTEVENT_UNQUALIFIED" + - " STATISTICS_UNQUALIFIED STATISTICS_VERDICT" + - " TESTCASE_FINISH TESTCASE_START" + - " TESTCASE_UNQUALIFIED TIMEROP_GUARD" + - " TIMEROP_READ TIMEROP_START TIMEROP_STOP" + - " TIMEROP_TIMEOUT TIMEROP_UNQUALIFIED" + - " USER_UNQUALIFIED VERDICTOP_FINAL" + - " VERDICTOP_GETVERDICT VERDICTOP_SETVERDICT" + - " VERDICTOP_UNQUALIFIED WARNING_UNQUALIFIED"), - externalCommands: words("BeginControlPart EndControlPart BeginTestCase" + - " EndTestCase"), - multiLineStrings: true - }); -}); \ No newline at end of file diff --git a/public/plugins/codemirror-5.17.0/mode/ttcn/index.html b/public/plugins/codemirror-5.17.0/mode/ttcn/index.html deleted file mode 100644 index f1ef81131..000000000 --- a/public/plugins/codemirror-5.17.0/mode/ttcn/index.html +++ /dev/null @@ -1,118 +0,0 @@ - - -CodeMirror: TTCN mode - - - - - - - - -
    -

    TTCN example

    -
    - -
    - - -
    -

    Language: Testing and Test Control Notation - (TTCN) -

    -

    MIME types defined: text/x-ttcn, - text/x-ttcn3, text/x-ttcnpp.

    -
    -

    The development of this mode has been sponsored by Ericsson - .

    -

    Coded by Asmelash Tsegay Gebretsadkan

    -
    - diff --git a/public/plugins/codemirror-5.17.0/mode/ttcn/ttcn.js b/public/plugins/codemirror-5.17.0/mode/ttcn/ttcn.js deleted file mode 100644 index 305185177..000000000 --- a/public/plugins/codemirror-5.17.0/mode/ttcn/ttcn.js +++ /dev/null @@ -1,283 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - CodeMirror.defineMode("ttcn", function(config, parserConfig) { - var indentUnit = config.indentUnit, - keywords = parserConfig.keywords || {}, - builtin = parserConfig.builtin || {}, - timerOps = parserConfig.timerOps || {}, - portOps = parserConfig.portOps || {}, - configOps = parserConfig.configOps || {}, - verdictOps = parserConfig.verdictOps || {}, - sutOps = parserConfig.sutOps || {}, - functionOps = parserConfig.functionOps || {}, - - verdictConsts = parserConfig.verdictConsts || {}, - booleanConsts = parserConfig.booleanConsts || {}, - otherConsts = parserConfig.otherConsts || {}, - - types = parserConfig.types || {}, - visibilityModifiers = parserConfig.visibilityModifiers || {}, - templateMatch = parserConfig.templateMatch || {}, - multiLineStrings = parserConfig.multiLineStrings, - indentStatements = parserConfig.indentStatements !== false; - var isOperatorChar = /[+\-*&@=<>!\/]/; - var curPunc; - - function tokenBase(stream, state) { - var ch = stream.next(); - - if (ch == '"' || ch == "'") { - state.tokenize = tokenString(ch); - return state.tokenize(stream, state); - } - if (/[\[\]{}\(\),;\\:\?\.]/.test(ch)) { - curPunc = ch; - return "punctuation"; - } - if (ch == "#"){ - stream.skipToEnd(); - return "atom preprocessor"; - } - if (ch == "%"){ - stream.eatWhile(/\b/); - return "atom ttcn3Macros"; - } - if (/\d/.test(ch)) { - stream.eatWhile(/[\w\.]/); - return "number"; - } - if (ch == "/") { - if (stream.eat("*")) { - state.tokenize = tokenComment; - return tokenComment(stream, state); - } - if (stream.eat("/")) { - stream.skipToEnd(); - return "comment"; - } - } - if (isOperatorChar.test(ch)) { - if(ch == "@"){ - if(stream.match("try") || stream.match("catch") - || stream.match("lazy")){ - return "keyword"; - } - } - stream.eatWhile(isOperatorChar); - return "operator"; - } - stream.eatWhile(/[\w\$_\xa1-\uffff]/); - var cur = stream.current(); - - if (keywords.propertyIsEnumerable(cur)) return "keyword"; - if (builtin.propertyIsEnumerable(cur)) return "builtin"; - - if (timerOps.propertyIsEnumerable(cur)) return "def timerOps"; - if (configOps.propertyIsEnumerable(cur)) return "def configOps"; - if (verdictOps.propertyIsEnumerable(cur)) return "def verdictOps"; - if (portOps.propertyIsEnumerable(cur)) return "def portOps"; - if (sutOps.propertyIsEnumerable(cur)) return "def sutOps"; - if (functionOps.propertyIsEnumerable(cur)) return "def functionOps"; - - if (verdictConsts.propertyIsEnumerable(cur)) return "string verdictConsts"; - if (booleanConsts.propertyIsEnumerable(cur)) return "string booleanConsts"; - if (otherConsts.propertyIsEnumerable(cur)) return "string otherConsts"; - - if (types.propertyIsEnumerable(cur)) return "builtin types"; - if (visibilityModifiers.propertyIsEnumerable(cur)) - return "builtin visibilityModifiers"; - if (templateMatch.propertyIsEnumerable(cur)) return "atom templateMatch"; - - return "variable"; - } - - function tokenString(quote) { - return function(stream, state) { - var escaped = false, next, end = false; - while ((next = stream.next()) != null) { - if (next == quote && !escaped){ - var afterQuote = stream.peek(); - //look if the character after the quote is like the B in '10100010'B - if (afterQuote){ - afterQuote = afterQuote.toLowerCase(); - if(afterQuote == "b" || afterQuote == "h" || afterQuote == "o") - stream.next(); - } - end = true; break; - } - escaped = !escaped && next == "\\"; - } - if (end || !(escaped || multiLineStrings)) - state.tokenize = null; - return "string"; - }; - } - - function tokenComment(stream, state) { - var maybeEnd = false, ch; - while (ch = stream.next()) { - if (ch == "/" && maybeEnd) { - state.tokenize = null; - break; - } - maybeEnd = (ch == "*"); - } - return "comment"; - } - - function Context(indented, column, type, align, prev) { - this.indented = indented; - this.column = column; - this.type = type; - this.align = align; - this.prev = prev; - } - - function pushContext(state, col, type) { - var indent = state.indented; - if (state.context && state.context.type == "statement") - indent = state.context.indented; - return state.context = new Context(indent, col, type, null, state.context); - } - - function popContext(state) { - var t = state.context.type; - if (t == ")" || t == "]" || t == "}") - state.indented = state.context.indented; - return state.context = state.context.prev; - } - - //Interface - return { - startState: function(basecolumn) { - return { - tokenize: null, - context: new Context((basecolumn || 0) - indentUnit, 0, "top", false), - indented: 0, - startOfLine: true - }; - }, - - token: function(stream, state) { - var ctx = state.context; - if (stream.sol()) { - if (ctx.align == null) ctx.align = false; - state.indented = stream.indentation(); - state.startOfLine = true; - } - if (stream.eatSpace()) return null; - curPunc = null; - var style = (state.tokenize || tokenBase)(stream, state); - if (style == "comment") return style; - if (ctx.align == null) ctx.align = true; - - if ((curPunc == ";" || curPunc == ":" || curPunc == ",") - && ctx.type == "statement"){ - popContext(state); - } - else if (curPunc == "{") pushContext(state, stream.column(), "}"); - else if (curPunc == "[") pushContext(state, stream.column(), "]"); - else if (curPunc == "(") pushContext(state, stream.column(), ")"); - else if (curPunc == "}") { - while (ctx.type == "statement") ctx = popContext(state); - if (ctx.type == "}") ctx = popContext(state); - while (ctx.type == "statement") ctx = popContext(state); - } - else if (curPunc == ctx.type) popContext(state); - else if (indentStatements && - (((ctx.type == "}" || ctx.type == "top") && curPunc != ';') || - (ctx.type == "statement" && curPunc == "newstatement"))) - pushContext(state, stream.column(), "statement"); - - state.startOfLine = false; - - return style; - }, - - electricChars: "{}", - blockCommentStart: "/*", - blockCommentEnd: "*/", - lineComment: "//", - fold: "brace" - }; - }); - - function words(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - - function def(mimes, mode) { - if (typeof mimes == "string") mimes = [mimes]; - var words = []; - function add(obj) { - if (obj) for (var prop in obj) if (obj.hasOwnProperty(prop)) - words.push(prop); - } - - add(mode.keywords); - add(mode.builtin); - add(mode.timerOps); - add(mode.portOps); - - if (words.length) { - mode.helperType = mimes[0]; - CodeMirror.registerHelper("hintWords", mimes[0], words); - } - - for (var i = 0; i < mimes.length; ++i) - CodeMirror.defineMIME(mimes[i], mode); - } - - def(["text/x-ttcn", "text/x-ttcn3", "text/x-ttcnpp"], { - name: "ttcn", - keywords: words("activate address alive all alt altstep and and4b any" + - " break case component const continue control deactivate" + - " display do else encode enumerated except exception" + - " execute extends extension external for from function" + - " goto group if import in infinity inout interleave" + - " label language length log match message mixed mod" + - " modifies module modulepar mtc noblock not not4b nowait" + - " of on optional or or4b out override param pattern port" + - " procedure record recursive rem repeat return runs select" + - " self sender set signature system template testcase to" + - " type union value valueof var variant while with xor xor4b"), - builtin: words("bit2hex bit2int bit2oct bit2str char2int char2oct encvalue" + - " decomp decvalue float2int float2str hex2bit hex2int" + - " hex2oct hex2str int2bit int2char int2float int2hex" + - " int2oct int2str int2unichar isbound ischosen ispresent" + - " isvalue lengthof log2str oct2bit oct2char oct2hex oct2int" + - " oct2str regexp replace rnd sizeof str2bit str2float" + - " str2hex str2int str2oct substr unichar2int unichar2char" + - " enum2int"), - types: words("anytype bitstring boolean char charstring default float" + - " hexstring integer objid octetstring universal verdicttype timer"), - timerOps: words("read running start stop timeout"), - portOps: words("call catch check clear getcall getreply halt raise receive" + - " reply send trigger"), - configOps: words("create connect disconnect done kill killed map unmap"), - verdictOps: words("getverdict setverdict"), - sutOps: words("action"), - functionOps: words("apply derefers refers"), - - verdictConsts: words("error fail inconc none pass"), - booleanConsts: words("true false"), - otherConsts: words("null NULL omit"), - - visibilityModifiers: words("private public friend"), - templateMatch: words("complement ifpresent subset superset permutation"), - multiLineStrings: true - }); -}); diff --git a/public/plugins/codemirror-5.17.0/mode/turtle/index.html b/public/plugins/codemirror-5.17.0/mode/turtle/index.html deleted file mode 100644 index a4962b617..000000000 --- a/public/plugins/codemirror-5.17.0/mode/turtle/index.html +++ /dev/null @@ -1,50 +0,0 @@ - - -CodeMirror: Turtle mode - - - - - - - - - -
    -

    Turtle mode

    -
    - - -

    MIME types defined: text/turtle.

    - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/turtle/turtle.js b/public/plugins/codemirror-5.17.0/mode/turtle/turtle.js deleted file mode 100644 index 0988f0a44..000000000 --- a/public/plugins/codemirror-5.17.0/mode/turtle/turtle.js +++ /dev/null @@ -1,162 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("turtle", function(config) { - var indentUnit = config.indentUnit; - var curPunc; - - function wordRegexp(words) { - return new RegExp("^(?:" + words.join("|") + ")$", "i"); - } - var ops = wordRegexp([]); - var keywords = wordRegexp(["@prefix", "@base", "a"]); - var operatorChars = /[*+\-<>=&|]/; - - function tokenBase(stream, state) { - var ch = stream.next(); - curPunc = null; - if (ch == "<" && !stream.match(/^[\s\u00a0=]/, false)) { - stream.match(/^[^\s\u00a0>]*>?/); - return "atom"; - } - else if (ch == "\"" || ch == "'") { - state.tokenize = tokenLiteral(ch); - return state.tokenize(stream, state); - } - else if (/[{}\(\),\.;\[\]]/.test(ch)) { - curPunc = ch; - return null; - } - else if (ch == "#") { - stream.skipToEnd(); - return "comment"; - } - else if (operatorChars.test(ch)) { - stream.eatWhile(operatorChars); - return null; - } - else if (ch == ":") { - return "operator"; - } else { - stream.eatWhile(/[_\w\d]/); - if(stream.peek() == ":") { - return "variable-3"; - } else { - var word = stream.current(); - - if(keywords.test(word)) { - return "meta"; - } - - if(ch >= "A" && ch <= "Z") { - return "comment"; - } else { - return "keyword"; - } - } - var word = stream.current(); - if (ops.test(word)) - return null; - else if (keywords.test(word)) - return "meta"; - else - return "variable"; - } - } - - function tokenLiteral(quote) { - return function(stream, state) { - var escaped = false, ch; - while ((ch = stream.next()) != null) { - if (ch == quote && !escaped) { - state.tokenize = tokenBase; - break; - } - escaped = !escaped && ch == "\\"; - } - return "string"; - }; - } - - function pushContext(state, type, col) { - state.context = {prev: state.context, indent: state.indent, col: col, type: type}; - } - function popContext(state) { - state.indent = state.context.indent; - state.context = state.context.prev; - } - - return { - startState: function() { - return {tokenize: tokenBase, - context: null, - indent: 0, - col: 0}; - }, - - token: function(stream, state) { - if (stream.sol()) { - if (state.context && state.context.align == null) state.context.align = false; - state.indent = stream.indentation(); - } - if (stream.eatSpace()) return null; - var style = state.tokenize(stream, state); - - if (style != "comment" && state.context && state.context.align == null && state.context.type != "pattern") { - state.context.align = true; - } - - if (curPunc == "(") pushContext(state, ")", stream.column()); - else if (curPunc == "[") pushContext(state, "]", stream.column()); - else if (curPunc == "{") pushContext(state, "}", stream.column()); - else if (/[\]\}\)]/.test(curPunc)) { - while (state.context && state.context.type == "pattern") popContext(state); - if (state.context && curPunc == state.context.type) popContext(state); - } - else if (curPunc == "." && state.context && state.context.type == "pattern") popContext(state); - else if (/atom|string|variable/.test(style) && state.context) { - if (/[\}\]]/.test(state.context.type)) - pushContext(state, "pattern", stream.column()); - else if (state.context.type == "pattern" && !state.context.align) { - state.context.align = true; - state.context.col = stream.column(); - } - } - - return style; - }, - - indent: function(state, textAfter) { - var firstChar = textAfter && textAfter.charAt(0); - var context = state.context; - if (/[\]\}]/.test(firstChar)) - while (context && context.type == "pattern") context = context.prev; - - var closing = context && firstChar == context.type; - if (!context) - return 0; - else if (context.type == "pattern") - return context.col; - else if (context.align) - return context.col + (closing ? 0 : 1); - else - return context.indent + (closing ? 0 : indentUnit); - }, - - lineComment: "#" - }; -}); - -CodeMirror.defineMIME("text/turtle", "turtle"); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/twig/index.html b/public/plugins/codemirror-5.17.0/mode/twig/index.html deleted file mode 100644 index 02493a5cb..000000000 --- a/public/plugins/codemirror-5.17.0/mode/twig/index.html +++ /dev/null @@ -1,45 +0,0 @@ - - -CodeMirror: Twig mode - - - - - - - - - -
    -

    Twig mode

    -
    - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/twig/twig.js b/public/plugins/codemirror-5.17.0/mode/twig/twig.js deleted file mode 100644 index 1f2854bef..000000000 --- a/public/plugins/codemirror-5.17.0/mode/twig/twig.js +++ /dev/null @@ -1,141 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror"), require("../../addon/mode/multiplex")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../../addon/mode/multiplex"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - CodeMirror.defineMode("twig:inner", function() { - var keywords = ["and", "as", "autoescape", "endautoescape", "block", "do", "endblock", "else", "elseif", "extends", "for", "endfor", "embed", "endembed", "filter", "endfilter", "flush", "from", "if", "endif", "in", "is", "include", "import", "not", "or", "set", "spaceless", "endspaceless", "with", "endwith", "trans", "endtrans", "blocktrans", "endblocktrans", "macro", "endmacro", "use", "verbatim", "endverbatim"], - operator = /^[+\-*&%=<>!?|~^]/, - sign = /^[:\[\(\{]/, - atom = ["true", "false", "null", "empty", "defined", "divisibleby", "divisible by", "even", "odd", "iterable", "sameas", "same as"], - number = /^(\d[+\-\*\/])?\d+(\.\d+)?/; - - keywords = new RegExp("((" + keywords.join(")|(") + "))\\b"); - atom = new RegExp("((" + atom.join(")|(") + "))\\b"); - - function tokenBase (stream, state) { - var ch = stream.peek(); - - //Comment - if (state.incomment) { - if (!stream.skipTo("#}")) { - stream.skipToEnd(); - } else { - stream.eatWhile(/\#|}/); - state.incomment = false; - } - return "comment"; - //Tag - } else if (state.intag) { - //After operator - if (state.operator) { - state.operator = false; - if (stream.match(atom)) { - return "atom"; - } - if (stream.match(number)) { - return "number"; - } - } - //After sign - if (state.sign) { - state.sign = false; - if (stream.match(atom)) { - return "atom"; - } - if (stream.match(number)) { - return "number"; - } - } - - if (state.instring) { - if (ch == state.instring) { - state.instring = false; - } - stream.next(); - return "string"; - } else if (ch == "'" || ch == '"') { - state.instring = ch; - stream.next(); - return "string"; - } else if (stream.match(state.intag + "}") || stream.eat("-") && stream.match(state.intag + "}")) { - state.intag = false; - return "tag"; - } else if (stream.match(operator)) { - state.operator = true; - return "operator"; - } else if (stream.match(sign)) { - state.sign = true; - } else { - if (stream.eat(" ") || stream.sol()) { - if (stream.match(keywords)) { - return "keyword"; - } - if (stream.match(atom)) { - return "atom"; - } - if (stream.match(number)) { - return "number"; - } - if (stream.sol()) { - stream.next(); - } - } else { - stream.next(); - } - - } - return "variable"; - } else if (stream.eat("{")) { - if (ch = stream.eat("#")) { - state.incomment = true; - if (!stream.skipTo("#}")) { - stream.skipToEnd(); - } else { - stream.eatWhile(/\#|}/); - state.incomment = false; - } - return "comment"; - //Open tag - } else if (ch = stream.eat(/\{|%/)) { - //Cache close tag - state.intag = ch; - if (ch == "{") { - state.intag = "}"; - } - stream.eat("-"); - return "tag"; - } - } - stream.next(); - }; - - return { - startState: function () { - return {}; - }, - token: function (stream, state) { - return tokenBase(stream, state); - } - }; - }); - - CodeMirror.defineMode("twig", function(config, parserConfig) { - var twigInner = CodeMirror.getMode(config, "twig:inner"); - if (!parserConfig || !parserConfig.base) return twigInner; - return CodeMirror.multiplexingMode( - CodeMirror.getMode(config, parserConfig.base), { - open: /\{[{#%]/, close: /[}#%]\}/, mode: twigInner, parseDelimiters: true - } - ); - }); - CodeMirror.defineMIME("text/x-twig", "twig"); -}); diff --git a/public/plugins/codemirror-5.17.0/mode/vb/index.html b/public/plugins/codemirror-5.17.0/mode/vb/index.html deleted file mode 100644 index adcc44fd3..000000000 --- a/public/plugins/codemirror-5.17.0/mode/vb/index.html +++ /dev/null @@ -1,102 +0,0 @@ - - -CodeMirror: VB.NET mode - - - - - - - - - - - -
    -

    VB.NET mode

    - - - -
    - -
    -
    
    -  

    MIME type defined: text/x-vb.

    - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/vb/vb.js b/public/plugins/codemirror-5.17.0/mode/vb/vb.js deleted file mode 100644 index d78f91f70..000000000 --- a/public/plugins/codemirror-5.17.0/mode/vb/vb.js +++ /dev/null @@ -1,276 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("vb", function(conf, parserConf) { - var ERRORCLASS = 'error'; - - function wordRegexp(words) { - return new RegExp("^((" + words.join(")|(") + "))\\b", "i"); - } - - var singleOperators = new RegExp("^[\\+\\-\\*/%&\\\\|\\^~<>!]"); - var singleDelimiters = new RegExp('^[\\(\\)\\[\\]\\{\\}@,:`=;\\.]'); - var doubleOperators = new RegExp("^((==)|(<>)|(<=)|(>=)|(<>)|(<<)|(>>)|(//)|(\\*\\*))"); - var doubleDelimiters = new RegExp("^((\\+=)|(\\-=)|(\\*=)|(%=)|(/=)|(&=)|(\\|=)|(\\^=))"); - var tripleDelimiters = new RegExp("^((//=)|(>>=)|(<<=)|(\\*\\*=))"); - var identifiers = new RegExp("^[_A-Za-z][_A-Za-z0-9]*"); - - var openingKeywords = ['class','module', 'sub','enum','select','while','if','function', 'get','set','property', 'try']; - var middleKeywords = ['else','elseif','case', 'catch']; - var endKeywords = ['next','loop']; - - var operatorKeywords = ['and', 'or', 'not', 'xor', 'in']; - var wordOperators = wordRegexp(operatorKeywords); - var commonKeywords = ['as', 'dim', 'break', 'continue','optional', 'then', 'until', - 'goto', 'byval','byref','new','handles','property', 'return', - 'const','private', 'protected', 'friend', 'public', 'shared', 'static', 'true','false']; - var commontypes = ['integer','string','double','decimal','boolean','short','char', 'float','single']; - - var keywords = wordRegexp(commonKeywords); - var types = wordRegexp(commontypes); - var stringPrefixes = '"'; - - var opening = wordRegexp(openingKeywords); - var middle = wordRegexp(middleKeywords); - var closing = wordRegexp(endKeywords); - var doubleClosing = wordRegexp(['end']); - var doOpening = wordRegexp(['do']); - - var indentInfo = null; - - CodeMirror.registerHelper("hintWords", "vb", openingKeywords.concat(middleKeywords).concat(endKeywords) - .concat(operatorKeywords).concat(commonKeywords).concat(commontypes)); - - function indent(_stream, state) { - state.currentIndent++; - } - - function dedent(_stream, state) { - state.currentIndent--; - } - // tokenizers - function tokenBase(stream, state) { - if (stream.eatSpace()) { - return null; - } - - var ch = stream.peek(); - - // Handle Comments - if (ch === "'") { - stream.skipToEnd(); - return 'comment'; - } - - - // Handle Number Literals - if (stream.match(/^((&H)|(&O))?[0-9\.a-f]/i, false)) { - var floatLiteral = false; - // Floats - if (stream.match(/^\d*\.\d+F?/i)) { floatLiteral = true; } - else if (stream.match(/^\d+\.\d*F?/)) { floatLiteral = true; } - else if (stream.match(/^\.\d+F?/)) { floatLiteral = true; } - - if (floatLiteral) { - // Float literals may be "imaginary" - stream.eat(/J/i); - return 'number'; - } - // Integers - var intLiteral = false; - // Hex - if (stream.match(/^&H[0-9a-f]+/i)) { intLiteral = true; } - // Octal - else if (stream.match(/^&O[0-7]+/i)) { intLiteral = true; } - // Decimal - else if (stream.match(/^[1-9]\d*F?/)) { - // Decimal literals may be "imaginary" - stream.eat(/J/i); - // TODO - Can you have imaginary longs? - intLiteral = true; - } - // Zero by itself with no other piece of number. - else if (stream.match(/^0(?![\dx])/i)) { intLiteral = true; } - if (intLiteral) { - // Integer literals may be "long" - stream.eat(/L/i); - return 'number'; - } - } - - // Handle Strings - if (stream.match(stringPrefixes)) { - state.tokenize = tokenStringFactory(stream.current()); - return state.tokenize(stream, state); - } - - // Handle operators and Delimiters - if (stream.match(tripleDelimiters) || stream.match(doubleDelimiters)) { - return null; - } - if (stream.match(doubleOperators) - || stream.match(singleOperators) - || stream.match(wordOperators)) { - return 'operator'; - } - if (stream.match(singleDelimiters)) { - return null; - } - if (stream.match(doOpening)) { - indent(stream,state); - state.doInCurrentLine = true; - return 'keyword'; - } - if (stream.match(opening)) { - if (! state.doInCurrentLine) - indent(stream,state); - else - state.doInCurrentLine = false; - return 'keyword'; - } - if (stream.match(middle)) { - return 'keyword'; - } - - if (stream.match(doubleClosing)) { - dedent(stream,state); - dedent(stream,state); - return 'keyword'; - } - if (stream.match(closing)) { - dedent(stream,state); - return 'keyword'; - } - - if (stream.match(types)) { - return 'keyword'; - } - - if (stream.match(keywords)) { - return 'keyword'; - } - - if (stream.match(identifiers)) { - return 'variable'; - } - - // Handle non-detected items - stream.next(); - return ERRORCLASS; - } - - function tokenStringFactory(delimiter) { - var singleline = delimiter.length == 1; - var OUTCLASS = 'string'; - - return function(stream, state) { - while (!stream.eol()) { - stream.eatWhile(/[^'"]/); - if (stream.match(delimiter)) { - state.tokenize = tokenBase; - return OUTCLASS; - } else { - stream.eat(/['"]/); - } - } - if (singleline) { - if (parserConf.singleLineStringErrors) { - return ERRORCLASS; - } else { - state.tokenize = tokenBase; - } - } - return OUTCLASS; - }; - } - - - function tokenLexer(stream, state) { - var style = state.tokenize(stream, state); - var current = stream.current(); - - // Handle '.' connected identifiers - if (current === '.') { - style = state.tokenize(stream, state); - current = stream.current(); - if (style === 'variable') { - return 'variable'; - } else { - return ERRORCLASS; - } - } - - - var delimiter_index = '[({'.indexOf(current); - if (delimiter_index !== -1) { - indent(stream, state ); - } - if (indentInfo === 'dedent') { - if (dedent(stream, state)) { - return ERRORCLASS; - } - } - delimiter_index = '])}'.indexOf(current); - if (delimiter_index !== -1) { - if (dedent(stream, state)) { - return ERRORCLASS; - } - } - - return style; - } - - var external = { - electricChars:"dDpPtTfFeE ", - startState: function() { - return { - tokenize: tokenBase, - lastToken: null, - currentIndent: 0, - nextLineIndent: 0, - doInCurrentLine: false - - - }; - }, - - token: function(stream, state) { - if (stream.sol()) { - state.currentIndent += state.nextLineIndent; - state.nextLineIndent = 0; - state.doInCurrentLine = 0; - } - var style = tokenLexer(stream, state); - - state.lastToken = {style:style, content: stream.current()}; - - - - return style; - }, - - indent: function(state, textAfter) { - var trueText = textAfter.replace(/^\s+|\s+$/g, '') ; - if (trueText.match(closing) || trueText.match(doubleClosing) || trueText.match(middle)) return conf.indentUnit*(state.currentIndent-1); - if(state.currentIndent < 0) return 0; - return state.currentIndent * conf.indentUnit; - }, - - lineComment: "'" - }; - return external; -}); - -CodeMirror.defineMIME("text/x-vb", "vb"); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/vbscript/index.html b/public/plugins/codemirror-5.17.0/mode/vbscript/index.html deleted file mode 100644 index ad7532d7d..000000000 --- a/public/plugins/codemirror-5.17.0/mode/vbscript/index.html +++ /dev/null @@ -1,55 +0,0 @@ - - -CodeMirror: VBScript mode - - - - - - - - - -
    -

    VBScript mode

    - - -
    - - - -

    MIME types defined: text/vbscript.

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/vbscript/vbscript.js b/public/plugins/codemirror-5.17.0/mode/vbscript/vbscript.js deleted file mode 100644 index b66df2239..000000000 --- a/public/plugins/codemirror-5.17.0/mode/vbscript/vbscript.js +++ /dev/null @@ -1,350 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -/* -For extra ASP classic objects, initialize CodeMirror instance with this option: - isASP: true - -E.G.: - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - lineNumbers: true, - isASP: true - }); -*/ - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("vbscript", function(conf, parserConf) { - var ERRORCLASS = 'error'; - - function wordRegexp(words) { - return new RegExp("^((" + words.join(")|(") + "))\\b", "i"); - } - - var singleOperators = new RegExp("^[\\+\\-\\*/&\\\\\\^<>=]"); - var doubleOperators = new RegExp("^((<>)|(<=)|(>=))"); - var singleDelimiters = new RegExp('^[\\.,]'); - var brakets = new RegExp('^[\\(\\)]'); - var identifiers = new RegExp("^[A-Za-z][_A-Za-z0-9]*"); - - var openingKeywords = ['class','sub','select','while','if','function', 'property', 'with', 'for']; - var middleKeywords = ['else','elseif','case']; - var endKeywords = ['next','loop','wend']; - - var wordOperators = wordRegexp(['and', 'or', 'not', 'xor', 'is', 'mod', 'eqv', 'imp']); - var commonkeywords = ['dim', 'redim', 'then', 'until', 'randomize', - 'byval','byref','new','property', 'exit', 'in', - 'const','private', 'public', - 'get','set','let', 'stop', 'on error resume next', 'on error goto 0', 'option explicit', 'call', 'me']; - - //This list was from: http://msdn.microsoft.com/en-us/library/f8tbc79x(v=vs.84).aspx - var atomWords = ['true', 'false', 'nothing', 'empty', 'null']; - //This list was from: http://msdn.microsoft.com/en-us/library/3ca8tfek(v=vs.84).aspx - var builtinFuncsWords = ['abs', 'array', 'asc', 'atn', 'cbool', 'cbyte', 'ccur', 'cdate', 'cdbl', 'chr', 'cint', 'clng', 'cos', 'csng', 'cstr', 'date', 'dateadd', 'datediff', 'datepart', - 'dateserial', 'datevalue', 'day', 'escape', 'eval', 'execute', 'exp', 'filter', 'formatcurrency', 'formatdatetime', 'formatnumber', 'formatpercent', 'getlocale', 'getobject', - 'getref', 'hex', 'hour', 'inputbox', 'instr', 'instrrev', 'int', 'fix', 'isarray', 'isdate', 'isempty', 'isnull', 'isnumeric', 'isobject', 'join', 'lbound', 'lcase', 'left', - 'len', 'loadpicture', 'log', 'ltrim', 'rtrim', 'trim', 'maths', 'mid', 'minute', 'month', 'monthname', 'msgbox', 'now', 'oct', 'replace', 'rgb', 'right', 'rnd', 'round', - 'scriptengine', 'scriptenginebuildversion', 'scriptenginemajorversion', 'scriptengineminorversion', 'second', 'setlocale', 'sgn', 'sin', 'space', 'split', 'sqr', 'strcomp', - 'string', 'strreverse', 'tan', 'time', 'timer', 'timeserial', 'timevalue', 'typename', 'ubound', 'ucase', 'unescape', 'vartype', 'weekday', 'weekdayname', 'year']; - - //This list was from: http://msdn.microsoft.com/en-us/library/ydz4cfk3(v=vs.84).aspx - var builtinConsts = ['vbBlack', 'vbRed', 'vbGreen', 'vbYellow', 'vbBlue', 'vbMagenta', 'vbCyan', 'vbWhite', 'vbBinaryCompare', 'vbTextCompare', - 'vbSunday', 'vbMonday', 'vbTuesday', 'vbWednesday', 'vbThursday', 'vbFriday', 'vbSaturday', 'vbUseSystemDayOfWeek', 'vbFirstJan1', 'vbFirstFourDays', 'vbFirstFullWeek', - 'vbGeneralDate', 'vbLongDate', 'vbShortDate', 'vbLongTime', 'vbShortTime', 'vbObjectError', - 'vbOKOnly', 'vbOKCancel', 'vbAbortRetryIgnore', 'vbYesNoCancel', 'vbYesNo', 'vbRetryCancel', 'vbCritical', 'vbQuestion', 'vbExclamation', 'vbInformation', 'vbDefaultButton1', 'vbDefaultButton2', - 'vbDefaultButton3', 'vbDefaultButton4', 'vbApplicationModal', 'vbSystemModal', 'vbOK', 'vbCancel', 'vbAbort', 'vbRetry', 'vbIgnore', 'vbYes', 'vbNo', - 'vbCr', 'VbCrLf', 'vbFormFeed', 'vbLf', 'vbNewLine', 'vbNullChar', 'vbNullString', 'vbTab', 'vbVerticalTab', 'vbUseDefault', 'vbTrue', 'vbFalse', - 'vbEmpty', 'vbNull', 'vbInteger', 'vbLong', 'vbSingle', 'vbDouble', 'vbCurrency', 'vbDate', 'vbString', 'vbObject', 'vbError', 'vbBoolean', 'vbVariant', 'vbDataObject', 'vbDecimal', 'vbByte', 'vbArray']; - //This list was from: http://msdn.microsoft.com/en-us/library/hkc375ea(v=vs.84).aspx - var builtinObjsWords = ['WScript', 'err', 'debug', 'RegExp']; - var knownProperties = ['description', 'firstindex', 'global', 'helpcontext', 'helpfile', 'ignorecase', 'length', 'number', 'pattern', 'source', 'value', 'count']; - var knownMethods = ['clear', 'execute', 'raise', 'replace', 'test', 'write', 'writeline', 'close', 'open', 'state', 'eof', 'update', 'addnew', 'end', 'createobject', 'quit']; - - var aspBuiltinObjsWords = ['server', 'response', 'request', 'session', 'application']; - var aspKnownProperties = ['buffer', 'cachecontrol', 'charset', 'contenttype', 'expires', 'expiresabsolute', 'isclientconnected', 'pics', 'status', //response - 'clientcertificate', 'cookies', 'form', 'querystring', 'servervariables', 'totalbytes', //request - 'contents', 'staticobjects', //application - 'codepage', 'lcid', 'sessionid', 'timeout', //session - 'scripttimeout']; //server - var aspKnownMethods = ['addheader', 'appendtolog', 'binarywrite', 'end', 'flush', 'redirect', //response - 'binaryread', //request - 'remove', 'removeall', 'lock', 'unlock', //application - 'abandon', //session - 'getlasterror', 'htmlencode', 'mappath', 'transfer', 'urlencode']; //server - - var knownWords = knownMethods.concat(knownProperties); - - builtinObjsWords = builtinObjsWords.concat(builtinConsts); - - if (conf.isASP){ - builtinObjsWords = builtinObjsWords.concat(aspBuiltinObjsWords); - knownWords = knownWords.concat(aspKnownMethods, aspKnownProperties); - }; - - var keywords = wordRegexp(commonkeywords); - var atoms = wordRegexp(atomWords); - var builtinFuncs = wordRegexp(builtinFuncsWords); - var builtinObjs = wordRegexp(builtinObjsWords); - var known = wordRegexp(knownWords); - var stringPrefixes = '"'; - - var opening = wordRegexp(openingKeywords); - var middle = wordRegexp(middleKeywords); - var closing = wordRegexp(endKeywords); - var doubleClosing = wordRegexp(['end']); - var doOpening = wordRegexp(['do']); - var noIndentWords = wordRegexp(['on error resume next', 'exit']); - var comment = wordRegexp(['rem']); - - - function indent(_stream, state) { - state.currentIndent++; - } - - function dedent(_stream, state) { - state.currentIndent--; - } - // tokenizers - function tokenBase(stream, state) { - if (stream.eatSpace()) { - return 'space'; - //return null; - } - - var ch = stream.peek(); - - // Handle Comments - if (ch === "'") { - stream.skipToEnd(); - return 'comment'; - } - if (stream.match(comment)){ - stream.skipToEnd(); - return 'comment'; - } - - - // Handle Number Literals - if (stream.match(/^((&H)|(&O))?[0-9\.]/i, false) && !stream.match(/^((&H)|(&O))?[0-9\.]+[a-z_]/i, false)) { - var floatLiteral = false; - // Floats - if (stream.match(/^\d*\.\d+/i)) { floatLiteral = true; } - else if (stream.match(/^\d+\.\d*/)) { floatLiteral = true; } - else if (stream.match(/^\.\d+/)) { floatLiteral = true; } - - if (floatLiteral) { - // Float literals may be "imaginary" - stream.eat(/J/i); - return 'number'; - } - // Integers - var intLiteral = false; - // Hex - if (stream.match(/^&H[0-9a-f]+/i)) { intLiteral = true; } - // Octal - else if (stream.match(/^&O[0-7]+/i)) { intLiteral = true; } - // Decimal - else if (stream.match(/^[1-9]\d*F?/)) { - // Decimal literals may be "imaginary" - stream.eat(/J/i); - // TODO - Can you have imaginary longs? - intLiteral = true; - } - // Zero by itself with no other piece of number. - else if (stream.match(/^0(?![\dx])/i)) { intLiteral = true; } - if (intLiteral) { - // Integer literals may be "long" - stream.eat(/L/i); - return 'number'; - } - } - - // Handle Strings - if (stream.match(stringPrefixes)) { - state.tokenize = tokenStringFactory(stream.current()); - return state.tokenize(stream, state); - } - - // Handle operators and Delimiters - if (stream.match(doubleOperators) - || stream.match(singleOperators) - || stream.match(wordOperators)) { - return 'operator'; - } - if (stream.match(singleDelimiters)) { - return null; - } - - if (stream.match(brakets)) { - return "bracket"; - } - - if (stream.match(noIndentWords)) { - state.doInCurrentLine = true; - - return 'keyword'; - } - - if (stream.match(doOpening)) { - indent(stream,state); - state.doInCurrentLine = true; - - return 'keyword'; - } - if (stream.match(opening)) { - if (! state.doInCurrentLine) - indent(stream,state); - else - state.doInCurrentLine = false; - - return 'keyword'; - } - if (stream.match(middle)) { - return 'keyword'; - } - - - if (stream.match(doubleClosing)) { - dedent(stream,state); - dedent(stream,state); - - return 'keyword'; - } - if (stream.match(closing)) { - if (! state.doInCurrentLine) - dedent(stream,state); - else - state.doInCurrentLine = false; - - return 'keyword'; - } - - if (stream.match(keywords)) { - return 'keyword'; - } - - if (stream.match(atoms)) { - return 'atom'; - } - - if (stream.match(known)) { - return 'variable-2'; - } - - if (stream.match(builtinFuncs)) { - return 'builtin'; - } - - if (stream.match(builtinObjs)){ - return 'variable-2'; - } - - if (stream.match(identifiers)) { - return 'variable'; - } - - // Handle non-detected items - stream.next(); - return ERRORCLASS; - } - - function tokenStringFactory(delimiter) { - var singleline = delimiter.length == 1; - var OUTCLASS = 'string'; - - return function(stream, state) { - while (!stream.eol()) { - stream.eatWhile(/[^'"]/); - if (stream.match(delimiter)) { - state.tokenize = tokenBase; - return OUTCLASS; - } else { - stream.eat(/['"]/); - } - } - if (singleline) { - if (parserConf.singleLineStringErrors) { - return ERRORCLASS; - } else { - state.tokenize = tokenBase; - } - } - return OUTCLASS; - }; - } - - - function tokenLexer(stream, state) { - var style = state.tokenize(stream, state); - var current = stream.current(); - - // Handle '.' connected identifiers - if (current === '.') { - style = state.tokenize(stream, state); - - current = stream.current(); - if (style && (style.substr(0, 8) === 'variable' || style==='builtin' || style==='keyword')){//|| knownWords.indexOf(current.substring(1)) > -1) { - if (style === 'builtin' || style === 'keyword') style='variable'; - if (knownWords.indexOf(current.substr(1)) > -1) style='variable-2'; - - return style; - } else { - return ERRORCLASS; - } - } - - return style; - } - - var external = { - electricChars:"dDpPtTfFeE ", - startState: function() { - return { - tokenize: tokenBase, - lastToken: null, - currentIndent: 0, - nextLineIndent: 0, - doInCurrentLine: false, - ignoreKeyword: false - - - }; - }, - - token: function(stream, state) { - if (stream.sol()) { - state.currentIndent += state.nextLineIndent; - state.nextLineIndent = 0; - state.doInCurrentLine = 0; - } - var style = tokenLexer(stream, state); - - state.lastToken = {style:style, content: stream.current()}; - - if (style==='space') style=null; - - return style; - }, - - indent: function(state, textAfter) { - var trueText = textAfter.replace(/^\s+|\s+$/g, '') ; - if (trueText.match(closing) || trueText.match(doubleClosing) || trueText.match(middle)) return conf.indentUnit*(state.currentIndent-1); - if(state.currentIndent < 0) return 0; - return state.currentIndent * conf.indentUnit; - } - - }; - return external; -}); - -CodeMirror.defineMIME("text/vbscript", "vbscript"); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/velocity/index.html b/public/plugins/codemirror-5.17.0/mode/velocity/index.html deleted file mode 100644 index 7eba8f418..000000000 --- a/public/plugins/codemirror-5.17.0/mode/velocity/index.html +++ /dev/null @@ -1,120 +0,0 @@ - - -CodeMirror: Velocity mode - - - - - - - - - - -
    -

    Velocity mode

    -
    - - -

    MIME types defined: text/velocity.

    - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/velocity/velocity.js b/public/plugins/codemirror-5.17.0/mode/velocity/velocity.js deleted file mode 100644 index 12ee22124..000000000 --- a/public/plugins/codemirror-5.17.0/mode/velocity/velocity.js +++ /dev/null @@ -1,201 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("velocity", function() { - function parseWords(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - - var keywords = parseWords("#end #else #break #stop #[[ #]] " + - "#{end} #{else} #{break} #{stop}"); - var functions = parseWords("#if #elseif #foreach #set #include #parse #macro #define #evaluate " + - "#{if} #{elseif} #{foreach} #{set} #{include} #{parse} #{macro} #{define} #{evaluate}"); - var specials = parseWords("$foreach.count $foreach.hasNext $foreach.first $foreach.last $foreach.topmost $foreach.parent.count $foreach.parent.hasNext $foreach.parent.first $foreach.parent.last $foreach.parent $velocityCount $!bodyContent $bodyContent"); - var isOperatorChar = /[+\-*&%=<>!?:\/|]/; - - function chain(stream, state, f) { - state.tokenize = f; - return f(stream, state); - } - function tokenBase(stream, state) { - var beforeParams = state.beforeParams; - state.beforeParams = false; - var ch = stream.next(); - // start of unparsed string? - if ((ch == "'") && !state.inString && state.inParams) { - state.lastTokenWasBuiltin = false; - return chain(stream, state, tokenString(ch)); - } - // start of parsed string? - else if ((ch == '"')) { - state.lastTokenWasBuiltin = false; - if (state.inString) { - state.inString = false; - return "string"; - } - else if (state.inParams) - return chain(stream, state, tokenString(ch)); - } - // is it one of the special signs []{}().,;? Seperator? - else if (/[\[\]{}\(\),;\.]/.test(ch)) { - if (ch == "(" && beforeParams) - state.inParams = true; - else if (ch == ")") { - state.inParams = false; - state.lastTokenWasBuiltin = true; - } - return null; - } - // start of a number value? - else if (/\d/.test(ch)) { - state.lastTokenWasBuiltin = false; - stream.eatWhile(/[\w\.]/); - return "number"; - } - // multi line comment? - else if (ch == "#" && stream.eat("*")) { - state.lastTokenWasBuiltin = false; - return chain(stream, state, tokenComment); - } - // unparsed content? - else if (ch == "#" && stream.match(/ *\[ *\[/)) { - state.lastTokenWasBuiltin = false; - return chain(stream, state, tokenUnparsed); - } - // single line comment? - else if (ch == "#" && stream.eat("#")) { - state.lastTokenWasBuiltin = false; - stream.skipToEnd(); - return "comment"; - } - // variable? - else if (ch == "$") { - stream.eatWhile(/[\w\d\$_\.{}]/); - // is it one of the specials? - if (specials && specials.propertyIsEnumerable(stream.current())) { - return "keyword"; - } - else { - state.lastTokenWasBuiltin = true; - state.beforeParams = true; - return "builtin"; - } - } - // is it a operator? - else if (isOperatorChar.test(ch)) { - state.lastTokenWasBuiltin = false; - stream.eatWhile(isOperatorChar); - return "operator"; - } - else { - // get the whole word - stream.eatWhile(/[\w\$_{}@]/); - var word = stream.current(); - // is it one of the listed keywords? - if (keywords && keywords.propertyIsEnumerable(word)) - return "keyword"; - // is it one of the listed functions? - if (functions && functions.propertyIsEnumerable(word) || - (stream.current().match(/^#@?[a-z0-9_]+ *$/i) && stream.peek()=="(") && - !(functions && functions.propertyIsEnumerable(word.toLowerCase()))) { - state.beforeParams = true; - state.lastTokenWasBuiltin = false; - return "keyword"; - } - if (state.inString) { - state.lastTokenWasBuiltin = false; - return "string"; - } - if (stream.pos > word.length && stream.string.charAt(stream.pos-word.length-1)=="." && state.lastTokenWasBuiltin) - return "builtin"; - // default: just a "word" - state.lastTokenWasBuiltin = false; - return null; - } - } - - function tokenString(quote) { - return function(stream, state) { - var escaped = false, next, end = false; - while ((next = stream.next()) != null) { - if ((next == quote) && !escaped) { - end = true; - break; - } - if (quote=='"' && stream.peek() == '$' && !escaped) { - state.inString = true; - end = true; - break; - } - escaped = !escaped && next == "\\"; - } - if (end) state.tokenize = tokenBase; - return "string"; - }; - } - - function tokenComment(stream, state) { - var maybeEnd = false, ch; - while (ch = stream.next()) { - if (ch == "#" && maybeEnd) { - state.tokenize = tokenBase; - break; - } - maybeEnd = (ch == "*"); - } - return "comment"; - } - - function tokenUnparsed(stream, state) { - var maybeEnd = 0, ch; - while (ch = stream.next()) { - if (ch == "#" && maybeEnd == 2) { - state.tokenize = tokenBase; - break; - } - if (ch == "]") - maybeEnd++; - else if (ch != " ") - maybeEnd = 0; - } - return "meta"; - } - // Interface - - return { - startState: function() { - return { - tokenize: tokenBase, - beforeParams: false, - inParams: false, - inString: false, - lastTokenWasBuiltin: false - }; - }, - - token: function(stream, state) { - if (stream.eatSpace()) return null; - return state.tokenize(stream, state); - }, - blockCommentStart: "#*", - blockCommentEnd: "*#", - lineComment: "##", - fold: "velocity" - }; -}); - -CodeMirror.defineMIME("text/velocity", "velocity"); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/verilog/index.html b/public/plugins/codemirror-5.17.0/mode/verilog/index.html deleted file mode 100644 index 9c52722af..000000000 --- a/public/plugins/codemirror-5.17.0/mode/verilog/index.html +++ /dev/null @@ -1,120 +0,0 @@ - - -CodeMirror: Verilog/SystemVerilog mode - - - - - - - - - - -
    -

    SystemVerilog mode

    - -
    - - - -

    -Syntax highlighting and indentation for the Verilog and SystemVerilog languages (IEEE 1800). -

    Configuration options:

    -
      -
    • noIndentKeywords - List of keywords which should not cause indentation to increase. E.g. ["package", "module"]. Default: None
    • -
    -

    - -

    MIME types defined: text/x-verilog and text/x-systemverilog.

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/verilog/test.js b/public/plugins/codemirror-5.17.0/mode/verilog/test.js deleted file mode 100644 index 8334fab05..000000000 --- a/public/plugins/codemirror-5.17.0/mode/verilog/test.js +++ /dev/null @@ -1,273 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function() { - var mode = CodeMirror.getMode({indentUnit: 4}, "verilog"); - function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } - - MT("binary_literals", - "[number 1'b0]", - "[number 1'b1]", - "[number 1'bx]", - "[number 1'bz]", - "[number 1'bX]", - "[number 1'bZ]", - "[number 1'B0]", - "[number 1'B1]", - "[number 1'Bx]", - "[number 1'Bz]", - "[number 1'BX]", - "[number 1'BZ]", - "[number 1'b0]", - "[number 1'b1]", - "[number 2'b01]", - "[number 2'bxz]", - "[number 2'b11]", - "[number 2'b10]", - "[number 2'b1Z]", - "[number 12'b0101_0101_0101]", - "[number 1'b 0]", - "[number 'b0101]" - ); - - MT("octal_literals", - "[number 3'o7]", - "[number 3'O7]", - "[number 3'so7]", - "[number 3'SO7]" - ); - - MT("decimal_literals", - "[number 0]", - "[number 1]", - "[number 7]", - "[number 123_456]", - "[number 'd33]", - "[number 8'd255]", - "[number 8'D255]", - "[number 8'sd255]", - "[number 8'SD255]", - "[number 32'd123]", - "[number 32 'd123]", - "[number 32 'd 123]" - ); - - MT("hex_literals", - "[number 4'h0]", - "[number 4'ha]", - "[number 4'hF]", - "[number 4'hx]", - "[number 4'hz]", - "[number 4'hX]", - "[number 4'hZ]", - "[number 32'hdc78]", - "[number 32'hDC78]", - "[number 32 'hDC78]", - "[number 32'h DC78]", - "[number 32 'h DC78]", - "[number 32'h44x7]", - "[number 32'hFFF?]" - ); - - MT("real_number_literals", - "[number 1.2]", - "[number 0.1]", - "[number 2394.26331]", - "[number 1.2E12]", - "[number 1.2e12]", - "[number 1.30e-2]", - "[number 0.1e-0]", - "[number 23E10]", - "[number 29E-2]", - "[number 236.123_763_e-12]" - ); - - MT("operators", - "[meta ^]" - ); - - MT("keywords", - "[keyword logic]", - "[keyword logic] [variable foo]", - "[keyword reg] [variable abc]" - ); - - MT("variables", - "[variable _leading_underscore]", - "[variable _if]", - "[number 12] [variable foo]", - "[variable foo] [number 14]" - ); - - MT("tick_defines", - "[def `FOO]", - "[def `foo]", - "[def `FOO_bar]" - ); - - MT("system_calls", - "[meta $display]", - "[meta $vpi_printf]" - ); - - MT("line_comment", "[comment // Hello world]"); - - // Alignment tests - MT("align_port_map_style1", - /** - * mod mod(.a(a), - * .b(b) - * ); - */ - "[variable mod] [variable mod][bracket (].[variable a][bracket (][variable a][bracket )],", - " .[variable b][bracket (][variable b][bracket )]", - " [bracket )];", - "" - ); - - MT("align_port_map_style2", - /** - * mod mod( - * .a(a), - * .b(b) - * ); - */ - "[variable mod] [variable mod][bracket (]", - " .[variable a][bracket (][variable a][bracket )],", - " .[variable b][bracket (][variable b][bracket )]", - "[bracket )];", - "" - ); - - // Indentation tests - MT("indent_single_statement_if", - "[keyword if] [bracket (][variable foo][bracket )]", - " [keyword break];", - "" - ); - - MT("no_indent_after_single_line_if", - "[keyword if] [bracket (][variable foo][bracket )] [keyword break];", - "" - ); - - MT("indent_after_if_begin_same_line", - "[keyword if] [bracket (][variable foo][bracket )] [keyword begin]", - " [keyword break];", - " [keyword break];", - "[keyword end]", - "" - ); - - MT("indent_after_if_begin_next_line", - "[keyword if] [bracket (][variable foo][bracket )]", - " [keyword begin]", - " [keyword break];", - " [keyword break];", - " [keyword end]", - "" - ); - - MT("indent_single_statement_if_else", - "[keyword if] [bracket (][variable foo][bracket )]", - " [keyword break];", - "[keyword else]", - " [keyword break];", - "" - ); - - MT("indent_if_else_begin_same_line", - "[keyword if] [bracket (][variable foo][bracket )] [keyword begin]", - " [keyword break];", - " [keyword break];", - "[keyword end] [keyword else] [keyword begin]", - " [keyword break];", - " [keyword break];", - "[keyword end]", - "" - ); - - MT("indent_if_else_begin_next_line", - "[keyword if] [bracket (][variable foo][bracket )]", - " [keyword begin]", - " [keyword break];", - " [keyword break];", - " [keyword end]", - "[keyword else]", - " [keyword begin]", - " [keyword break];", - " [keyword break];", - " [keyword end]", - "" - ); - - MT("indent_if_nested_without_begin", - "[keyword if] [bracket (][variable foo][bracket )]", - " [keyword if] [bracket (][variable foo][bracket )]", - " [keyword if] [bracket (][variable foo][bracket )]", - " [keyword break];", - "" - ); - - MT("indent_case", - "[keyword case] [bracket (][variable state][bracket )]", - " [variable FOO]:", - " [keyword break];", - " [variable BAR]:", - " [keyword break];", - "[keyword endcase]", - "" - ); - - MT("unindent_after_end_with_preceding_text", - "[keyword begin]", - " [keyword break]; [keyword end]", - "" - ); - - MT("export_function_one_line_does_not_indent", - "[keyword export] [string \"DPI-C\"] [keyword function] [variable helloFromSV];", - "" - ); - - MT("export_task_one_line_does_not_indent", - "[keyword export] [string \"DPI-C\"] [keyword task] [variable helloFromSV];", - "" - ); - - MT("export_function_two_lines_indents_properly", - "[keyword export]", - " [string \"DPI-C\"] [keyword function] [variable helloFromSV];", - "" - ); - - MT("export_task_two_lines_indents_properly", - "[keyword export]", - " [string \"DPI-C\"] [keyword task] [variable helloFromSV];", - "" - ); - - MT("import_function_one_line_does_not_indent", - "[keyword import] [string \"DPI-C\"] [keyword function] [variable helloFromC];", - "" - ); - - MT("import_task_one_line_does_not_indent", - "[keyword import] [string \"DPI-C\"] [keyword task] [variable helloFromC];", - "" - ); - - MT("import_package_single_line_does_not_indent", - "[keyword import] [variable p]::[variable x];", - "[keyword import] [variable p]::[variable y];", - "" - ); - - MT("covergroup_with_function_indents_properly", - "[keyword covergroup] [variable cg] [keyword with] [keyword function] [variable sample][bracket (][keyword bit] [variable b][bracket )];", - " [variable c] : [keyword coverpoint] [variable c];", - "[keyword endgroup]: [variable cg]", - "" - ); - -})(); diff --git a/public/plugins/codemirror-5.17.0/mode/verilog/verilog.js b/public/plugins/codemirror-5.17.0/mode/verilog/verilog.js deleted file mode 100644 index 7513dcede..000000000 --- a/public/plugins/codemirror-5.17.0/mode/verilog/verilog.js +++ /dev/null @@ -1,537 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("verilog", function(config, parserConfig) { - - var indentUnit = config.indentUnit, - statementIndentUnit = parserConfig.statementIndentUnit || indentUnit, - dontAlignCalls = parserConfig.dontAlignCalls, - noIndentKeywords = parserConfig.noIndentKeywords || [], - multiLineStrings = parserConfig.multiLineStrings, - hooks = parserConfig.hooks || {}; - - function words(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - - /** - * Keywords from IEEE 1800-2012 - */ - var keywords = words( - "accept_on alias always always_comb always_ff always_latch and assert assign assume automatic before begin bind " + - "bins binsof bit break buf bufif0 bufif1 byte case casex casez cell chandle checker class clocking cmos config " + - "const constraint context continue cover covergroup coverpoint cross deassign default defparam design disable " + - "dist do edge else end endcase endchecker endclass endclocking endconfig endfunction endgenerate endgroup " + - "endinterface endmodule endpackage endprimitive endprogram endproperty endspecify endsequence endtable endtask " + - "enum event eventually expect export extends extern final first_match for force foreach forever fork forkjoin " + - "function generate genvar global highz0 highz1 if iff ifnone ignore_bins illegal_bins implements implies import " + - "incdir include initial inout input inside instance int integer interconnect interface intersect join join_any " + - "join_none large let liblist library local localparam logic longint macromodule matches medium modport module " + - "nand negedge nettype new nexttime nmos nor noshowcancelled not notif0 notif1 null or output package packed " + - "parameter pmos posedge primitive priority program property protected pull0 pull1 pulldown pullup " + - "pulsestyle_ondetect pulsestyle_onevent pure rand randc randcase randsequence rcmos real realtime ref reg " + - "reject_on release repeat restrict return rnmos rpmos rtran rtranif0 rtranif1 s_always s_eventually s_nexttime " + - "s_until s_until_with scalared sequence shortint shortreal showcancelled signed small soft solve specify " + - "specparam static string strong strong0 strong1 struct super supply0 supply1 sync_accept_on sync_reject_on " + - "table tagged task this throughout time timeprecision timeunit tran tranif0 tranif1 tri tri0 tri1 triand trior " + - "trireg type typedef union unique unique0 unsigned until until_with untyped use uwire var vectored virtual void " + - "wait wait_order wand weak weak0 weak1 while wildcard wire with within wor xnor xor"); - - /** Operators from IEEE 1800-2012 - unary_operator ::= - + | - | ! | ~ | & | ~& | | | ~| | ^ | ~^ | ^~ - binary_operator ::= - + | - | * | / | % | == | != | === | !== | ==? | !=? | && | || | ** - | < | <= | > | >= | & | | | ^ | ^~ | ~^ | >> | << | >>> | <<< - | -> | <-> - inc_or_dec_operator ::= ++ | -- - unary_module_path_operator ::= - ! | ~ | & | ~& | | | ~| | ^ | ~^ | ^~ - binary_module_path_operator ::= - == | != | && | || | & | | | ^ | ^~ | ~^ - */ - var isOperatorChar = /[\+\-\*\/!~&|^%=?:]/; - var isBracketChar = /[\[\]{}()]/; - - var unsignedNumber = /\d[0-9_]*/; - var decimalLiteral = /\d*\s*'s?d\s*\d[0-9_]*/i; - var binaryLiteral = /\d*\s*'s?b\s*[xz01][xz01_]*/i; - var octLiteral = /\d*\s*'s?o\s*[xz0-7][xz0-7_]*/i; - var hexLiteral = /\d*\s*'s?h\s*[0-9a-fxz?][0-9a-fxz?_]*/i; - var realLiteral = /(\d[\d_]*(\.\d[\d_]*)?E-?[\d_]+)|(\d[\d_]*\.\d[\d_]*)/i; - - var closingBracketOrWord = /^((\w+)|[)}\]])/; - var closingBracket = /[)}\]]/; - - var curPunc; - var curKeyword; - - // Block openings which are closed by a matching keyword in the form of ("end" + keyword) - // E.g. "task" => "endtask" - var blockKeywords = words( - "case checker class clocking config function generate interface module package" + - "primitive program property specify sequence table task" - ); - - // Opening/closing pairs - var openClose = {}; - for (var keyword in blockKeywords) { - openClose[keyword] = "end" + keyword; - } - openClose["begin"] = "end"; - openClose["casex"] = "endcase"; - openClose["casez"] = "endcase"; - openClose["do" ] = "while"; - openClose["fork" ] = "join;join_any;join_none"; - openClose["covergroup"] = "endgroup"; - - for (var i in noIndentKeywords) { - var keyword = noIndentKeywords[i]; - if (openClose[keyword]) { - openClose[keyword] = undefined; - } - } - - // Keywords which open statements that are ended with a semi-colon - var statementKeywords = words("always always_comb always_ff always_latch assert assign assume else export for foreach forever if import initial repeat while"); - - function tokenBase(stream, state) { - var ch = stream.peek(), style; - if (hooks[ch] && (style = hooks[ch](stream, state)) != false) return style; - if (hooks.tokenBase && (style = hooks.tokenBase(stream, state)) != false) - return style; - - if (/[,;:\.]/.test(ch)) { - curPunc = stream.next(); - return null; - } - if (isBracketChar.test(ch)) { - curPunc = stream.next(); - return "bracket"; - } - // Macros (tick-defines) - if (ch == '`') { - stream.next(); - if (stream.eatWhile(/[\w\$_]/)) { - return "def"; - } else { - return null; - } - } - // System calls - if (ch == '$') { - stream.next(); - if (stream.eatWhile(/[\w\$_]/)) { - return "meta"; - } else { - return null; - } - } - // Time literals - if (ch == '#') { - stream.next(); - stream.eatWhile(/[\d_.]/); - return "def"; - } - // Strings - if (ch == '"') { - stream.next(); - state.tokenize = tokenString(ch); - return state.tokenize(stream, state); - } - // Comments - if (ch == "/") { - stream.next(); - if (stream.eat("*")) { - state.tokenize = tokenComment; - return tokenComment(stream, state); - } - if (stream.eat("/")) { - stream.skipToEnd(); - return "comment"; - } - stream.backUp(1); - } - - // Numeric literals - if (stream.match(realLiteral) || - stream.match(decimalLiteral) || - stream.match(binaryLiteral) || - stream.match(octLiteral) || - stream.match(hexLiteral) || - stream.match(unsignedNumber) || - stream.match(realLiteral)) { - return "number"; - } - - // Operators - if (stream.eatWhile(isOperatorChar)) { - return "meta"; - } - - // Keywords / plain variables - if (stream.eatWhile(/[\w\$_]/)) { - var cur = stream.current(); - if (keywords[cur]) { - if (openClose[cur]) { - curPunc = "newblock"; - } - if (statementKeywords[cur]) { - curPunc = "newstatement"; - } - curKeyword = cur; - return "keyword"; - } - return "variable"; - } - - stream.next(); - return null; - } - - function tokenString(quote) { - return function(stream, state) { - var escaped = false, next, end = false; - while ((next = stream.next()) != null) { - if (next == quote && !escaped) {end = true; break;} - escaped = !escaped && next == "\\"; - } - if (end || !(escaped || multiLineStrings)) - state.tokenize = tokenBase; - return "string"; - }; - } - - function tokenComment(stream, state) { - var maybeEnd = false, ch; - while (ch = stream.next()) { - if (ch == "/" && maybeEnd) { - state.tokenize = tokenBase; - break; - } - maybeEnd = (ch == "*"); - } - return "comment"; - } - - function Context(indented, column, type, align, prev) { - this.indented = indented; - this.column = column; - this.type = type; - this.align = align; - this.prev = prev; - } - function pushContext(state, col, type) { - var indent = state.indented; - var c = new Context(indent, col, type, null, state.context); - return state.context = c; - } - function popContext(state) { - var t = state.context.type; - if (t == ")" || t == "]" || t == "}") { - state.indented = state.context.indented; - } - return state.context = state.context.prev; - } - - function isClosing(text, contextClosing) { - if (text == contextClosing) { - return true; - } else { - // contextClosing may be multiple keywords separated by ; - var closingKeywords = contextClosing.split(";"); - for (var i in closingKeywords) { - if (text == closingKeywords[i]) { - return true; - } - } - return false; - } - } - - function buildElectricInputRegEx() { - // Reindentation should occur on any bracket char: {}()[] - // or on a match of any of the block closing keywords, at - // the end of a line - var allClosings = []; - for (var i in openClose) { - if (openClose[i]) { - var closings = openClose[i].split(";"); - for (var j in closings) { - allClosings.push(closings[j]); - } - } - } - var re = new RegExp("[{}()\\[\\]]|(" + allClosings.join("|") + ")$"); - return re; - } - - // Interface - return { - - // Regex to force current line to reindent - electricInput: buildElectricInputRegEx(), - - startState: function(basecolumn) { - var state = { - tokenize: null, - context: new Context((basecolumn || 0) - indentUnit, 0, "top", false), - indented: 0, - startOfLine: true - }; - if (hooks.startState) hooks.startState(state); - return state; - }, - - token: function(stream, state) { - var ctx = state.context; - if (stream.sol()) { - if (ctx.align == null) ctx.align = false; - state.indented = stream.indentation(); - state.startOfLine = true; - } - if (hooks.token) hooks.token(stream, state); - if (stream.eatSpace()) return null; - curPunc = null; - curKeyword = null; - var style = (state.tokenize || tokenBase)(stream, state); - if (style == "comment" || style == "meta" || style == "variable") return style; - if (ctx.align == null) ctx.align = true; - - if (curPunc == ctx.type) { - popContext(state); - } else if ((curPunc == ";" && ctx.type == "statement") || - (ctx.type && isClosing(curKeyword, ctx.type))) { - ctx = popContext(state); - while (ctx && ctx.type == "statement") ctx = popContext(state); - } else if (curPunc == "{") { - pushContext(state, stream.column(), "}"); - } else if (curPunc == "[") { - pushContext(state, stream.column(), "]"); - } else if (curPunc == "(") { - pushContext(state, stream.column(), ")"); - } else if (ctx && ctx.type == "endcase" && curPunc == ":") { - pushContext(state, stream.column(), "statement"); - } else if (curPunc == "newstatement") { - pushContext(state, stream.column(), "statement"); - } else if (curPunc == "newblock") { - if (curKeyword == "function" && ctx && (ctx.type == "statement" || ctx.type == "endgroup")) { - // The 'function' keyword can appear in some other contexts where it actually does not - // indicate a function (import/export DPI and covergroup definitions). - // Do nothing in this case - } else if (curKeyword == "task" && ctx && ctx.type == "statement") { - // Same thing for task - } else { - var close = openClose[curKeyword]; - pushContext(state, stream.column(), close); - } - } - - state.startOfLine = false; - return style; - }, - - indent: function(state, textAfter) { - if (state.tokenize != tokenBase && state.tokenize != null) return CodeMirror.Pass; - if (hooks.indent) { - var fromHook = hooks.indent(state); - if (fromHook >= 0) return fromHook; - } - var ctx = state.context, firstChar = textAfter && textAfter.charAt(0); - if (ctx.type == "statement" && firstChar == "}") ctx = ctx.prev; - var closing = false; - var possibleClosing = textAfter.match(closingBracketOrWord); - if (possibleClosing) - closing = isClosing(possibleClosing[0], ctx.type); - if (ctx.type == "statement") return ctx.indented + (firstChar == "{" ? 0 : statementIndentUnit); - else if (closingBracket.test(ctx.type) && ctx.align && !dontAlignCalls) return ctx.column + (closing ? 0 : 1); - else if (ctx.type == ")" && !closing) return ctx.indented + statementIndentUnit; - else return ctx.indented + (closing ? 0 : indentUnit); - }, - - blockCommentStart: "/*", - blockCommentEnd: "*/", - lineComment: "//" - }; -}); - - CodeMirror.defineMIME("text/x-verilog", { - name: "verilog" - }); - - CodeMirror.defineMIME("text/x-systemverilog", { - name: "verilog" - }); - - // TLVVerilog mode - - var tlvchScopePrefixes = { - ">": "property", "->": "property", "-": "hr", "|": "link", "?$": "qualifier", "?*": "qualifier", - "@-": "variable-3", "@": "variable-3", "?": "qualifier" - }; - - function tlvGenIndent(stream, state) { - var tlvindentUnit = 2; - var rtnIndent = -1, indentUnitRq = 0, curIndent = stream.indentation(); - switch (state.tlvCurCtlFlowChar) { - case "\\": - curIndent = 0; - break; - case "|": - if (state.tlvPrevPrevCtlFlowChar == "@") { - indentUnitRq = -2; //-2 new pipe rq after cur pipe - break; - } - if (tlvchScopePrefixes[state.tlvPrevCtlFlowChar]) - indentUnitRq = 1; // +1 new scope - break; - case "M": // m4 - if (state.tlvPrevPrevCtlFlowChar == "@") { - indentUnitRq = -2; //-2 new inst rq after pipe - break; - } - if (tlvchScopePrefixes[state.tlvPrevCtlFlowChar]) - indentUnitRq = 1; // +1 new scope - break; - case "@": - if (state.tlvPrevCtlFlowChar == "S") - indentUnitRq = -1; // new pipe stage after stmts - if (state.tlvPrevCtlFlowChar == "|") - indentUnitRq = 1; // 1st pipe stage - break; - case "S": - if (state.tlvPrevCtlFlowChar == "@") - indentUnitRq = 1; // flow in pipe stage - if (tlvchScopePrefixes[state.tlvPrevCtlFlowChar]) - indentUnitRq = 1; // +1 new scope - break; - } - var statementIndentUnit = tlvindentUnit; - rtnIndent = curIndent + (indentUnitRq*statementIndentUnit); - return rtnIndent >= 0 ? rtnIndent : curIndent; - } - - CodeMirror.defineMIME("text/x-tlv", { - name: "verilog", - hooks: { - "\\": function(stream, state) { - var vxIndent = 0, style = false; - var curPunc = stream.string; - if ((stream.sol()) && ((/\\SV/.test(stream.string)) || (/\\TLV/.test(stream.string)))) { - curPunc = (/\\TLV_version/.test(stream.string)) - ? "\\TLV_version" : stream.string; - stream.skipToEnd(); - if (curPunc == "\\SV" && state.vxCodeActive) {state.vxCodeActive = false;}; - if ((/\\TLV/.test(curPunc) && !state.vxCodeActive) - || (curPunc=="\\TLV_version" && state.vxCodeActive)) {state.vxCodeActive = true;}; - style = "keyword"; - state.tlvCurCtlFlowChar = state.tlvPrevPrevCtlFlowChar - = state.tlvPrevCtlFlowChar = ""; - if (state.vxCodeActive == true) { - state.tlvCurCtlFlowChar = "\\"; - vxIndent = tlvGenIndent(stream, state); - } - state.vxIndentRq = vxIndent; - } - return style; - }, - tokenBase: function(stream, state) { - var vxIndent = 0, style = false; - var tlvisOperatorChar = /[\[\]=:]/; - var tlvkpScopePrefixs = { - "**":"variable-2", "*":"variable-2", "$$":"variable", "$":"variable", - "^^":"attribute", "^":"attribute"}; - var ch = stream.peek(); - var vxCurCtlFlowCharValueAtStart = state.tlvCurCtlFlowChar; - if (state.vxCodeActive == true) { - if (/[\[\]{}\(\);\:]/.test(ch)) { - // bypass nesting and 1 char punc - style = "meta"; - stream.next(); - } else if (ch == "/") { - stream.next(); - if (stream.eat("/")) { - stream.skipToEnd(); - style = "comment"; - state.tlvCurCtlFlowChar = "S"; - } else { - stream.backUp(1); - } - } else if (ch == "@") { - // pipeline stage - style = tlvchScopePrefixes[ch]; - state.tlvCurCtlFlowChar = "@"; - stream.next(); - stream.eatWhile(/[\w\$_]/); - } else if (stream.match(/\b[mM]4+/, true)) { // match: function(pattern, consume, caseInsensitive) - // m4 pre proc - stream.skipTo("("); - style = "def"; - state.tlvCurCtlFlowChar = "M"; - } else if (ch == "!" && stream.sol()) { - // v stmt in tlv region - // state.tlvCurCtlFlowChar = "S"; - style = "comment"; - stream.next(); - } else if (tlvisOperatorChar.test(ch)) { - // operators - stream.eatWhile(tlvisOperatorChar); - style = "operator"; - } else if (ch == "#") { - // phy hier - state.tlvCurCtlFlowChar = (state.tlvCurCtlFlowChar == "") - ? ch : state.tlvCurCtlFlowChar; - stream.next(); - stream.eatWhile(/[+-]\d/); - style = "tag"; - } else if (tlvkpScopePrefixs.propertyIsEnumerable(ch)) { - // special TLV operators - style = tlvkpScopePrefixs[ch]; - state.tlvCurCtlFlowChar = state.tlvCurCtlFlowChar == "" ? "S" : state.tlvCurCtlFlowChar; // stmt - stream.next(); - stream.match(/[a-zA-Z_0-9]+/); - } else if (style = tlvchScopePrefixes[ch] || false) { - // special TLV operators - state.tlvCurCtlFlowChar = state.tlvCurCtlFlowChar == "" ? ch : state.tlvCurCtlFlowChar; - stream.next(); - stream.match(/[a-zA-Z_0-9]+/); - } - if (state.tlvCurCtlFlowChar != vxCurCtlFlowCharValueAtStart) { // flow change - vxIndent = tlvGenIndent(stream, state); - state.vxIndentRq = vxIndent; - } - } - return style; - }, - token: function(stream, state) { - if (state.vxCodeActive == true && stream.sol() && state.tlvCurCtlFlowChar != "") { - state.tlvPrevPrevCtlFlowChar = state.tlvPrevCtlFlowChar; - state.tlvPrevCtlFlowChar = state.tlvCurCtlFlowChar; - state.tlvCurCtlFlowChar = ""; - } - }, - indent: function(state) { - return (state.vxCodeActive == true) ? state.vxIndentRq : -1; - }, - startState: function(state) { - state.tlvCurCtlFlowChar = ""; - state.tlvPrevCtlFlowChar = ""; - state.tlvPrevPrevCtlFlowChar = ""; - state.vxCodeActive = true; - state.vxIndentRq = 0; - } - } - }); -}); diff --git a/public/plugins/codemirror-5.17.0/mode/vhdl/index.html b/public/plugins/codemirror-5.17.0/mode/vhdl/index.html deleted file mode 100644 index 3051bc37e..000000000 --- a/public/plugins/codemirror-5.17.0/mode/vhdl/index.html +++ /dev/null @@ -1,95 +0,0 @@ - - -CodeMirror: VHDL mode - - - - - - - - - - -
    -

    VHDL mode

    - -
    - - - -

    -Syntax highlighting and indentation for the VHDL language. -

    Configuration options:

    -
      -
    • atoms - List of atom words. Default: "null"
    • -
    • hooks - List of meta hooks. Default: ["`", "$"]
    • -
    • multiLineStrings - Whether multi-line strings are accepted. Default: false
    • -
    -

    - -

    MIME types defined: text/x-vhdl.

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/vhdl/vhdl.js b/public/plugins/codemirror-5.17.0/mode/vhdl/vhdl.js deleted file mode 100644 index 97e086e42..000000000 --- a/public/plugins/codemirror-5.17.0/mode/vhdl/vhdl.js +++ /dev/null @@ -1,189 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -// Originally written by Alf Nielsen, re-written by Michael Zhou -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -function words(str) { - var obj = {}, words = str.split(","); - for (var i = 0; i < words.length; ++i) { - var allCaps = words[i].toUpperCase(); - var firstCap = words[i].charAt(0).toUpperCase() + words[i].slice(1); - obj[words[i]] = true; - obj[allCaps] = true; - obj[firstCap] = true; - } - return obj; -} - -function metaHook(stream) { - stream.eatWhile(/[\w\$_]/); - return "meta"; -} - -CodeMirror.defineMode("vhdl", function(config, parserConfig) { - var indentUnit = config.indentUnit, - atoms = parserConfig.atoms || words("null"), - hooks = parserConfig.hooks || {"`": metaHook, "$": metaHook}, - multiLineStrings = parserConfig.multiLineStrings; - - var keywords = words("abs,access,after,alias,all,and,architecture,array,assert,attribute,begin,block," + - "body,buffer,bus,case,component,configuration,constant,disconnect,downto,else,elsif,end,end block,end case," + - "end component,end for,end generate,end if,end loop,end process,end record,end units,entity,exit,file,for," + - "function,generate,generic,generic map,group,guarded,if,impure,in,inertial,inout,is,label,library,linkage," + - "literal,loop,map,mod,nand,new,next,nor,null,of,on,open,or,others,out,package,package body,port,port map," + - "postponed,procedure,process,pure,range,record,register,reject,rem,report,return,rol,ror,select,severity,signal," + - "sla,sll,sra,srl,subtype,then,to,transport,type,unaffected,units,until,use,variable,wait,when,while,with,xnor,xor"); - - var blockKeywords = words("architecture,entity,begin,case,port,else,elsif,end,for,function,if"); - - var isOperatorChar = /[&|~> - -CodeMirror: Vue.js mode - - - - - - - - - - - - - - - - - - - - - -
    -

    Vue.js mode

    -
    - - -

    MIME types defined: text/x-vue

    - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/vue/vue.js b/public/plugins/codemirror-5.17.0/mode/vue/vue.js deleted file mode 100644 index d89a55238..000000000 --- a/public/plugins/codemirror-5.17.0/mode/vue/vue.js +++ /dev/null @@ -1,69 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function (mod) { - "use strict"; - if (typeof exports === "object" && typeof module === "object") {// CommonJS - mod(require("../../lib/codemirror"), - require("../../addon/mode/overlay"), - require("../xml/xml"), - require("../javascript/javascript"), - require("../coffeescript/coffeescript"), - require("../css/css"), - require("../sass/sass"), - require("../stylus/stylus"), - require("../jade/jade"), - require("../handlebars/handlebars")); - } else if (typeof define === "function" && define.amd) { // AMD - define(["../../lib/codemirror", - "../../addon/mode/overlay", - "../xml/xml", - "../javascript/javascript", - "../coffeescript/coffeescript", - "../css/css", - "../sass/sass", - "../stylus/stylus", - "../jade/jade", - "../handlebars/handlebars"], mod); - } else { // Plain browser env - mod(CodeMirror); - } -})(function (CodeMirror) { - var tagLanguages = { - script: [ - ["lang", /coffee(script)?/, "coffeescript"], - ["type", /^(?:text|application)\/(?:x-)?coffee(?:script)?$/, "coffeescript"] - ], - style: [ - ["lang", /^stylus$/i, "stylus"], - ["lang", /^sass$/i, "sass"], - ["type", /^(text\/)?(x-)?styl(us)?$/i, "stylus"], - ["type", /^text\/sass/i, "sass"] - ], - template: [ - ["lang", /^vue-template$/i, "vue"], - ["lang", /^jade$/i, "jade"], - ["lang", /^handlebars$/i, "handlebars"], - ["type", /^(text\/)?(x-)?jade$/i, "jade"], - ["type", /^text\/x-handlebars-template$/i, "handlebars"], - [null, null, "vue-template"] - ] - }; - - CodeMirror.defineMode("vue-template", function (config, parserConfig) { - var mustacheOverlay = { - token: function (stream) { - if (stream.match(/^\{\{.*?\}\}/)) return "meta mustache"; - while (stream.next() && !stream.match("{{", false)) {} - return null; - } - }; - return CodeMirror.overlayMode(CodeMirror.getMode(config, parserConfig.backdrop || "text/html"), mustacheOverlay); - }); - - CodeMirror.defineMode("vue", function (config) { - return CodeMirror.getMode(config, {name: "htmlmixed", tags: tagLanguages}); - }, "htmlmixed", "xml", "javascript", "coffeescript", "css", "sass", "stylus", "jade", "handlebars"); - - CodeMirror.defineMIME("script/x-vue", "vue"); -}); diff --git a/public/plugins/codemirror-5.17.0/mode/webidl/index.html b/public/plugins/codemirror-5.17.0/mode/webidl/index.html deleted file mode 100644 index 1d4112e1c..000000000 --- a/public/plugins/codemirror-5.17.0/mode/webidl/index.html +++ /dev/null @@ -1,71 +0,0 @@ - - -CodeMirror: Web IDL mode - - - - - - - - - - -
    -

    Web IDL mode

    - -
    - -
    - - - -

    MIME type defined: text/x-webidl.

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/webidl/webidl.js b/public/plugins/codemirror-5.17.0/mode/webidl/webidl.js deleted file mode 100644 index 814333620..000000000 --- a/public/plugins/codemirror-5.17.0/mode/webidl/webidl.js +++ /dev/null @@ -1,195 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -function wordRegexp(words) { - return new RegExp("^((" + words.join(")|(") + "))\\b"); -}; - -var builtinArray = [ - "Clamp", - "Constructor", - "EnforceRange", - "Exposed", - "ImplicitThis", - "Global", "PrimaryGlobal", - "LegacyArrayClass", - "LegacyUnenumerableNamedProperties", - "LenientThis", - "NamedConstructor", - "NewObject", - "NoInterfaceObject", - "OverrideBuiltins", - "PutForwards", - "Replaceable", - "SameObject", - "TreatNonObjectAsNull", - "TreatNullAs", - "EmptyString", - "Unforgeable", - "Unscopeable" -]; -var builtins = wordRegexp(builtinArray); - -var typeArray = [ - "unsigned", "short", "long", // UnsignedIntegerType - "unrestricted", "float", "double", // UnrestrictedFloatType - "boolean", "byte", "octet", // Rest of PrimitiveType - "Promise", // PromiseType - "ArrayBuffer", "DataView", "Int8Array", "Int16Array", "Int32Array", - "Uint8Array", "Uint16Array", "Uint32Array", "Uint8ClampedArray", - "Float32Array", "Float64Array", // BufferRelatedType - "ByteString", "DOMString", "USVString", "sequence", "object", "RegExp", - "Error", "DOMException", "FrozenArray", // Rest of NonAnyType - "any", // Rest of SingleType - "void" // Rest of ReturnType -]; -var types = wordRegexp(typeArray); - -var keywordArray = [ - "attribute", "callback", "const", "deleter", "dictionary", "enum", "getter", - "implements", "inherit", "interface", "iterable", "legacycaller", "maplike", - "partial", "required", "serializer", "setlike", "setter", "static", - "stringifier", "typedef", // ArgumentNameKeyword except - // "unrestricted" - "optional", "readonly", "or" -]; -var keywords = wordRegexp(keywordArray); - -var atomArray = [ - "true", "false", // BooleanLiteral - "Infinity", "NaN", // FloatLiteral - "null" // Rest of ConstValue -]; -var atoms = wordRegexp(atomArray); - -CodeMirror.registerHelper("hintWords", "webidl", - builtinArray.concat(typeArray).concat(keywordArray).concat(atomArray)); - -var startDefArray = ["callback", "dictionary", "enum", "interface"]; -var startDefs = wordRegexp(startDefArray); - -var endDefArray = ["typedef"]; -var endDefs = wordRegexp(endDefArray); - -var singleOperators = /^[:<=>?]/; -var integers = /^-?([1-9][0-9]*|0[Xx][0-9A-Fa-f]+|0[0-7]*)/; -var floats = /^-?(([0-9]+\.[0-9]*|[0-9]*\.[0-9]+)([Ee][+-]?[0-9]+)?|[0-9]+[Ee][+-]?[0-9]+)/; -var identifiers = /^_?[A-Za-z][0-9A-Z_a-z-]*/; -var identifiersEnd = /^_?[A-Za-z][0-9A-Z_a-z-]*(?=\s*;)/; -var strings = /^"[^"]*"/; -var multilineComments = /^\/\*.*?\*\//; -var multilineCommentsStart = /^\/\*.*/; -var multilineCommentsEnd = /^.*?\*\//; - -function readToken(stream, state) { - // whitespace - if (stream.eatSpace()) return null; - - // comment - if (state.inComment) { - if (stream.match(multilineCommentsEnd)) { - state.inComment = false; - return "comment"; - } - stream.skipToEnd(); - return "comment"; - } - if (stream.match("//")) { - stream.skipToEnd(); - return "comment"; - } - if (stream.match(multilineComments)) return "comment"; - if (stream.match(multilineCommentsStart)) { - state.inComment = true; - return "comment"; - } - - // integer and float - if (stream.match(/^-?[0-9\.]/, false)) { - if (stream.match(integers) || stream.match(floats)) return "number"; - } - - // string - if (stream.match(strings)) return "string"; - - // identifier - if (state.startDef && stream.match(identifiers)) return "def"; - - if (state.endDef && stream.match(identifiersEnd)) { - state.endDef = false; - return "def"; - } - - if (stream.match(keywords)) return "keyword"; - - if (stream.match(types)) { - var lastToken = state.lastToken; - var nextToken = (stream.match(/^\s*(.+?)\b/, false) || [])[1]; - - if (lastToken === ":" || lastToken === "implements" || - nextToken === "implements" || nextToken === "=") { - // Used as identifier - return "builtin"; - } else { - // Used as type - return "variable-3"; - } - } - - if (stream.match(builtins)) return "builtin"; - if (stream.match(atoms)) return "atom"; - if (stream.match(identifiers)) return "variable"; - - // other - if (stream.match(singleOperators)) return "operator"; - - // unrecognized - stream.next(); - return null; -}; - -CodeMirror.defineMode("webidl", function() { - return { - startState: function() { - return { - // Is in multiline comment - inComment: false, - // Last non-whitespace, matched token - lastToken: "", - // Next token is a definition - startDef: false, - // Last token of the statement is a definition - endDef: false - }; - }, - token: function(stream, state) { - var style = readToken(stream, state); - - if (style) { - var cur = stream.current(); - state.lastToken = cur; - if (style === "keyword") { - state.startDef = startDefs.test(cur); - state.endDef = state.endDef || endDefs.test(cur); - } else { - state.startDef = false; - } - } - - return style; - } - }; -}); - -CodeMirror.defineMIME("text/x-webidl", "webidl"); -}); diff --git a/public/plugins/codemirror-5.17.0/mode/xml/index.html b/public/plugins/codemirror-5.17.0/mode/xml/index.html deleted file mode 100644 index c56b8b6eb..000000000 --- a/public/plugins/codemirror-5.17.0/mode/xml/index.html +++ /dev/null @@ -1,61 +0,0 @@ - - -CodeMirror: XML mode - - - - - - - - - -
    -

    XML mode

    -
    - -

    The XML mode supports these configuration parameters:

    -
    -
    htmlMode (boolean)
    -
    This switches the mode to parse HTML instead of XML. This - means attributes do not have to be quoted, and some elements - (such as br) do not require a closing tag.
    -
    matchClosing (boolean)
    -
    Controls whether the mode checks that close tags match the - corresponding opening tag, and highlights mismatches as errors. - Defaults to true.
    -
    alignCDATA (boolean)
    -
    Setting this to true will force the opening tag of CDATA - blocks to not be indented.
    -
    - -

    MIME types defined: application/xml, text/html.

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/xml/test.js b/public/plugins/codemirror-5.17.0/mode/xml/test.js deleted file mode 100644 index f48156b51..000000000 --- a/public/plugins/codemirror-5.17.0/mode/xml/test.js +++ /dev/null @@ -1,51 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function() { - var mode = CodeMirror.getMode({indentUnit: 2}, "xml"), mname = "xml"; - function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), mname); } - - MT("matching", - "[tag&bracket <][tag top][tag&bracket >]", - " text", - " [tag&bracket <][tag inner][tag&bracket />]", - "[tag&bracket ]"); - - MT("nonmatching", - "[tag&bracket <][tag top][tag&bracket >]", - " [tag&bracket <][tag inner][tag&bracket />]", - " [tag&bracket ]"); - - MT("doctype", - "[meta ]", - "[tag&bracket <][tag top][tag&bracket />]"); - - MT("cdata", - "[tag&bracket <][tag top][tag&bracket >]", - " [atom ]", - "[tag&bracket ]"); - - // HTML tests - mode = CodeMirror.getMode({indentUnit: 2}, "text/html"); - - MT("selfclose", - "[tag&bracket <][tag html][tag&bracket >]", - " [tag&bracket <][tag link] [attribute rel]=[string stylesheet] [attribute href]=[string \"/foobar\"][tag&bracket >]", - "[tag&bracket ]"); - - MT("list", - "[tag&bracket <][tag ol][tag&bracket >]", - " [tag&bracket <][tag li][tag&bracket >]one", - " [tag&bracket <][tag li][tag&bracket >]two", - "[tag&bracket ]"); - - MT("valueless", - "[tag&bracket <][tag input] [attribute type]=[string checkbox] [attribute checked][tag&bracket />]"); - - MT("pThenArticle", - "[tag&bracket <][tag p][tag&bracket >]", - " foo", - "[tag&bracket <][tag article][tag&bracket >]bar"); - -})(); diff --git a/public/plugins/codemirror-5.17.0/mode/xml/xml.js b/public/plugins/codemirror-5.17.0/mode/xml/xml.js deleted file mode 100644 index f987a3a3c..000000000 --- a/public/plugins/codemirror-5.17.0/mode/xml/xml.js +++ /dev/null @@ -1,394 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -var htmlConfig = { - autoSelfClosers: {'area': true, 'base': true, 'br': true, 'col': true, 'command': true, - 'embed': true, 'frame': true, 'hr': true, 'img': true, 'input': true, - 'keygen': true, 'link': true, 'meta': true, 'param': true, 'source': true, - 'track': true, 'wbr': true, 'menuitem': true}, - implicitlyClosed: {'dd': true, 'li': true, 'optgroup': true, 'option': true, 'p': true, - 'rp': true, 'rt': true, 'tbody': true, 'td': true, 'tfoot': true, - 'th': true, 'tr': true}, - contextGrabbers: { - 'dd': {'dd': true, 'dt': true}, - 'dt': {'dd': true, 'dt': true}, - 'li': {'li': true}, - 'option': {'option': true, 'optgroup': true}, - 'optgroup': {'optgroup': true}, - 'p': {'address': true, 'article': true, 'aside': true, 'blockquote': true, 'dir': true, - 'div': true, 'dl': true, 'fieldset': true, 'footer': true, 'form': true, - 'h1': true, 'h2': true, 'h3': true, 'h4': true, 'h5': true, 'h6': true, - 'header': true, 'hgroup': true, 'hr': true, 'menu': true, 'nav': true, 'ol': true, - 'p': true, 'pre': true, 'section': true, 'table': true, 'ul': true}, - 'rp': {'rp': true, 'rt': true}, - 'rt': {'rp': true, 'rt': true}, - 'tbody': {'tbody': true, 'tfoot': true}, - 'td': {'td': true, 'th': true}, - 'tfoot': {'tbody': true}, - 'th': {'td': true, 'th': true}, - 'thead': {'tbody': true, 'tfoot': true}, - 'tr': {'tr': true} - }, - doNotIndent: {"pre": true}, - allowUnquoted: true, - allowMissing: true, - caseFold: true -} - -var xmlConfig = { - autoSelfClosers: {}, - implicitlyClosed: {}, - contextGrabbers: {}, - doNotIndent: {}, - allowUnquoted: false, - allowMissing: false, - caseFold: false -} - -CodeMirror.defineMode("xml", function(editorConf, config_) { - var indentUnit = editorConf.indentUnit - var config = {} - var defaults = config_.htmlMode ? htmlConfig : xmlConfig - for (var prop in defaults) config[prop] = defaults[prop] - for (var prop in config_) config[prop] = config_[prop] - - // Return variables for tokenizers - var type, setStyle; - - function inText(stream, state) { - function chain(parser) { - state.tokenize = parser; - return parser(stream, state); - } - - var ch = stream.next(); - if (ch == "<") { - if (stream.eat("!")) { - if (stream.eat("[")) { - if (stream.match("CDATA[")) return chain(inBlock("atom", "]]>")); - else return null; - } else if (stream.match("--")) { - return chain(inBlock("comment", "-->")); - } else if (stream.match("DOCTYPE", true, true)) { - stream.eatWhile(/[\w\._\-]/); - return chain(doctype(1)); - } else { - return null; - } - } else if (stream.eat("?")) { - stream.eatWhile(/[\w\._\-]/); - state.tokenize = inBlock("meta", "?>"); - return "meta"; - } else { - type = stream.eat("/") ? "closeTag" : "openTag"; - state.tokenize = inTag; - return "tag bracket"; - } - } else if (ch == "&") { - var ok; - if (stream.eat("#")) { - if (stream.eat("x")) { - ok = stream.eatWhile(/[a-fA-F\d]/) && stream.eat(";"); - } else { - ok = stream.eatWhile(/[\d]/) && stream.eat(";"); - } - } else { - ok = stream.eatWhile(/[\w\.\-:]/) && stream.eat(";"); - } - return ok ? "atom" : "error"; - } else { - stream.eatWhile(/[^&<]/); - return null; - } - } - inText.isInText = true; - - function inTag(stream, state) { - var ch = stream.next(); - if (ch == ">" || (ch == "/" && stream.eat(">"))) { - state.tokenize = inText; - type = ch == ">" ? "endTag" : "selfcloseTag"; - return "tag bracket"; - } else if (ch == "=") { - type = "equals"; - return null; - } else if (ch == "<") { - state.tokenize = inText; - state.state = baseState; - state.tagName = state.tagStart = null; - var next = state.tokenize(stream, state); - return next ? next + " tag error" : "tag error"; - } else if (/[\'\"]/.test(ch)) { - state.tokenize = inAttribute(ch); - state.stringStartCol = stream.column(); - return state.tokenize(stream, state); - } else { - stream.match(/^[^\s\u00a0=<>\"\']*[^\s\u00a0=<>\"\'\/]/); - return "word"; - } - } - - function inAttribute(quote) { - var closure = function(stream, state) { - while (!stream.eol()) { - if (stream.next() == quote) { - state.tokenize = inTag; - break; - } - } - return "string"; - }; - closure.isInAttribute = true; - return closure; - } - - function inBlock(style, terminator) { - return function(stream, state) { - while (!stream.eol()) { - if (stream.match(terminator)) { - state.tokenize = inText; - break; - } - stream.next(); - } - return style; - }; - } - function doctype(depth) { - return function(stream, state) { - var ch; - while ((ch = stream.next()) != null) { - if (ch == "<") { - state.tokenize = doctype(depth + 1); - return state.tokenize(stream, state); - } else if (ch == ">") { - if (depth == 1) { - state.tokenize = inText; - break; - } else { - state.tokenize = doctype(depth - 1); - return state.tokenize(stream, state); - } - } - } - return "meta"; - }; - } - - function Context(state, tagName, startOfLine) { - this.prev = state.context; - this.tagName = tagName; - this.indent = state.indented; - this.startOfLine = startOfLine; - if (config.doNotIndent.hasOwnProperty(tagName) || (state.context && state.context.noIndent)) - this.noIndent = true; - } - function popContext(state) { - if (state.context) state.context = state.context.prev; - } - function maybePopContext(state, nextTagName) { - var parentTagName; - while (true) { - if (!state.context) { - return; - } - parentTagName = state.context.tagName; - if (!config.contextGrabbers.hasOwnProperty(parentTagName) || - !config.contextGrabbers[parentTagName].hasOwnProperty(nextTagName)) { - return; - } - popContext(state); - } - } - - function baseState(type, stream, state) { - if (type == "openTag") { - state.tagStart = stream.column(); - return tagNameState; - } else if (type == "closeTag") { - return closeTagNameState; - } else { - return baseState; - } - } - function tagNameState(type, stream, state) { - if (type == "word") { - state.tagName = stream.current(); - setStyle = "tag"; - return attrState; - } else { - setStyle = "error"; - return tagNameState; - } - } - function closeTagNameState(type, stream, state) { - if (type == "word") { - var tagName = stream.current(); - if (state.context && state.context.tagName != tagName && - config.implicitlyClosed.hasOwnProperty(state.context.tagName)) - popContext(state); - if ((state.context && state.context.tagName == tagName) || config.matchClosing === false) { - setStyle = "tag"; - return closeState; - } else { - setStyle = "tag error"; - return closeStateErr; - } - } else { - setStyle = "error"; - return closeStateErr; - } - } - - function closeState(type, _stream, state) { - if (type != "endTag") { - setStyle = "error"; - return closeState; - } - popContext(state); - return baseState; - } - function closeStateErr(type, stream, state) { - setStyle = "error"; - return closeState(type, stream, state); - } - - function attrState(type, _stream, state) { - if (type == "word") { - setStyle = "attribute"; - return attrEqState; - } else if (type == "endTag" || type == "selfcloseTag") { - var tagName = state.tagName, tagStart = state.tagStart; - state.tagName = state.tagStart = null; - if (type == "selfcloseTag" || - config.autoSelfClosers.hasOwnProperty(tagName)) { - maybePopContext(state, tagName); - } else { - maybePopContext(state, tagName); - state.context = new Context(state, tagName, tagStart == state.indented); - } - return baseState; - } - setStyle = "error"; - return attrState; - } - function attrEqState(type, stream, state) { - if (type == "equals") return attrValueState; - if (!config.allowMissing) setStyle = "error"; - return attrState(type, stream, state); - } - function attrValueState(type, stream, state) { - if (type == "string") return attrContinuedState; - if (type == "word" && config.allowUnquoted) {setStyle = "string"; return attrState;} - setStyle = "error"; - return attrState(type, stream, state); - } - function attrContinuedState(type, stream, state) { - if (type == "string") return attrContinuedState; - return attrState(type, stream, state); - } - - return { - startState: function(baseIndent) { - var state = {tokenize: inText, - state: baseState, - indented: baseIndent || 0, - tagName: null, tagStart: null, - context: null} - if (baseIndent != null) state.baseIndent = baseIndent - return state - }, - - token: function(stream, state) { - if (!state.tagName && stream.sol()) - state.indented = stream.indentation(); - - if (stream.eatSpace()) return null; - type = null; - var style = state.tokenize(stream, state); - if ((style || type) && style != "comment") { - setStyle = null; - state.state = state.state(type || style, stream, state); - if (setStyle) - style = setStyle == "error" ? style + " error" : setStyle; - } - return style; - }, - - indent: function(state, textAfter, fullLine) { - var context = state.context; - // Indent multi-line strings (e.g. css). - if (state.tokenize.isInAttribute) { - if (state.tagStart == state.indented) - return state.stringStartCol + 1; - else - return state.indented + indentUnit; - } - if (context && context.noIndent) return CodeMirror.Pass; - if (state.tokenize != inTag && state.tokenize != inText) - return fullLine ? fullLine.match(/^(\s*)/)[0].length : 0; - // Indent the starts of attribute names. - if (state.tagName) { - if (config.multilineTagIndentPastTag !== false) - return state.tagStart + state.tagName.length + 2; - else - return state.tagStart + indentUnit * (config.multilineTagIndentFactor || 1); - } - if (config.alignCDATA && /$/, - blockCommentStart: "", - - configuration: config.htmlMode ? "html" : "xml", - helperType: config.htmlMode ? "html" : "xml", - - skipAttribute: function(state) { - if (state.state == attrValueState) - state.state = attrState - } - }; -}); - -CodeMirror.defineMIME("text/xml", "xml"); -CodeMirror.defineMIME("application/xml", "xml"); -if (!CodeMirror.mimeModes.hasOwnProperty("text/html")) - CodeMirror.defineMIME("text/html", {name: "xml", htmlMode: true}); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/xquery/index.html b/public/plugins/codemirror-5.17.0/mode/xquery/index.html deleted file mode 100644 index 7ac5aaeff..000000000 --- a/public/plugins/codemirror-5.17.0/mode/xquery/index.html +++ /dev/null @@ -1,210 +0,0 @@ - - -CodeMirror: XQuery mode - - - - - - - - - - -
    -

    XQuery mode

    - - -
    - -
    - - - -

    MIME types defined: application/xquery.

    - -

    Development of the CodeMirror XQuery mode was sponsored by - MarkLogic and developed by - Mike Brevoort. -

    - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/xquery/test.js b/public/plugins/codemirror-5.17.0/mode/xquery/test.js deleted file mode 100644 index 1f148cdbb..000000000 --- a/public/plugins/codemirror-5.17.0/mode/xquery/test.js +++ /dev/null @@ -1,67 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -// Don't take these too seriously -- the expected results appear to be -// based on the results of actual runs without any serious manual -// verification. If a change you made causes them to fail, the test is -// as likely to wrong as the code. - -(function() { - var mode = CodeMirror.getMode({tabSize: 4}, "xquery"); - function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } - - MT("eviltest", - "[keyword xquery] [keyword version] [variable "1][keyword .][atom 0][keyword -][variable ml"][def&variable ;] [comment (: this is : a \"comment\" :)]", - " [keyword let] [variable $let] [keyword :=] [variable <x] [variable attr][keyword =][variable "value">"test"<func>][def&variable ;function]() [variable $var] {[keyword function]()} {[variable $var]}[variable <][keyword /][variable func><][keyword /][variable x>]", - " [keyword let] [variable $joe][keyword :=][atom 1]", - " [keyword return] [keyword element] [variable element] {", - " [keyword attribute] [variable attribute] { [atom 1] },", - " [keyword element] [variable test] { [variable 'a'] }, [keyword attribute] [variable foo] { [variable "bar"] },", - " [def&variable fn:doc]()[[ [variable foo][keyword /][variable @bar] [keyword eq] [variable $let] ]],", - " [keyword //][variable x] } [comment (: a more 'evil' test :)]", - " [comment (: Modified Blakeley example (: with nested comment :) ... :)]", - " [keyword declare] [keyword private] [keyword function] [def&variable local:declare]() {()}[variable ;]", - " [keyword declare] [keyword private] [keyword function] [def&variable local:private]() {()}[variable ;]", - " [keyword declare] [keyword private] [keyword function] [def&variable local:function]() {()}[variable ;]", - " [keyword declare] [keyword private] [keyword function] [def&variable local:local]() {()}[variable ;]", - " [keyword let] [variable $let] [keyword :=] [variable <let>let] [variable $let] [keyword :=] [variable "let"<][keyword /let][variable >]", - " [keyword return] [keyword element] [variable element] {", - " [keyword attribute] [variable attribute] { [keyword try] { [def&variable xdmp:version]() } [keyword catch]([variable $e]) { [def&variable xdmp:log]([variable $e]) } },", - " [keyword attribute] [variable fn:doc] { [variable "bar"] [variable castable] [keyword as] [atom xs:string] },", - " [keyword element] [variable text] { [keyword text] { [variable "text"] } },", - " [def&variable fn:doc]()[[ [qualifier child::][variable eq][keyword /]([variable @bar] [keyword |] [qualifier attribute::][variable attribute]) [keyword eq] [variable $let] ]],", - " [keyword //][variable fn:doc]", - " }"); - - MT("testEmptySequenceKeyword", - "[string \"foo\"] [keyword instance] [keyword of] [keyword empty-sequence]()"); - - MT("testMultiAttr", - "[tag

    ][variable hello] [variable world][tag

    ]"); - - MT("test namespaced variable", - "[keyword declare] [keyword namespace] [variable e] [keyword =] [string \"http://example.com/ANamespace\"][variable ;declare] [keyword variable] [variable $e:exampleComThisVarIsNotRecognized] [keyword as] [keyword element]([keyword *]) [variable external;]"); - - MT("test EQName variable", - "[keyword declare] [keyword variable] [variable $\"http://www.example.com/ns/my\":var] [keyword :=] [atom 12][variable ;]", - "[tag ]{[variable $\"http://www.example.com/ns/my\":var]}[tag ]"); - - MT("test EQName function", - "[keyword declare] [keyword function] [def&variable \"http://www.example.com/ns/my\":fn] ([variable $a] [keyword as] [atom xs:integer]) [keyword as] [atom xs:integer] {", - " [variable $a] [keyword +] [atom 2]", - "}[variable ;]", - "[tag ]{[def&variable \"http://www.example.com/ns/my\":fn]([atom 12])}[tag ]"); - - MT("test EQName function with single quotes", - "[keyword declare] [keyword function] [def&variable 'http://www.example.com/ns/my':fn] ([variable $a] [keyword as] [atom xs:integer]) [keyword as] [atom xs:integer] {", - " [variable $a] [keyword +] [atom 2]", - "}[variable ;]", - "[tag ]{[def&variable 'http://www.example.com/ns/my':fn]([atom 12])}[tag ]"); - - MT("testProcessingInstructions", - "[def&variable data]([comment&meta ]) [keyword instance] [keyword of] [atom xs:string]"); - - MT("testQuoteEscapeDouble", - "[keyword let] [variable $rootfolder] [keyword :=] [string \"c:\\builds\\winnt\\HEAD\\qa\\scripts\\\"]", - "[keyword let] [variable $keysfolder] [keyword :=] [def&variable concat]([variable $rootfolder], [string \"keys\\\"])"); -})(); diff --git a/public/plugins/codemirror-5.17.0/mode/xquery/xquery.js b/public/plugins/codemirror-5.17.0/mode/xquery/xquery.js deleted file mode 100644 index 75dcbee3e..000000000 --- a/public/plugins/codemirror-5.17.0/mode/xquery/xquery.js +++ /dev/null @@ -1,437 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("xquery", function() { - - // The keywords object is set to the result of this self executing - // function. Each keyword is a property of the keywords object whose - // value is {type: atype, style: astyle} - var keywords = function(){ - // convenience functions used to build keywords object - function kw(type) {return {type: type, style: "keyword"};} - var A = kw("keyword a") - , B = kw("keyword b") - , C = kw("keyword c") - , operator = kw("operator") - , atom = {type: "atom", style: "atom"} - , punctuation = {type: "punctuation", style: null} - , qualifier = {type: "axis_specifier", style: "qualifier"}; - - // kwObj is what is return from this function at the end - var kwObj = { - 'if': A, 'switch': A, 'while': A, 'for': A, - 'else': B, 'then': B, 'try': B, 'finally': B, 'catch': B, - 'element': C, 'attribute': C, 'let': C, 'implements': C, 'import': C, 'module': C, 'namespace': C, - 'return': C, 'super': C, 'this': C, 'throws': C, 'where': C, 'private': C, - ',': punctuation, - 'null': atom, 'fn:false()': atom, 'fn:true()': atom - }; - - // a list of 'basic' keywords. For each add a property to kwObj with the value of - // {type: basic[i], style: "keyword"} e.g. 'after' --> {type: "after", style: "keyword"} - var basic = ['after','ancestor','ancestor-or-self','and','as','ascending','assert','attribute','before', - 'by','case','cast','child','comment','declare','default','define','descendant','descendant-or-self', - 'descending','document','document-node','element','else','eq','every','except','external','following', - 'following-sibling','follows','for','function','if','import','in','instance','intersect','item', - 'let','module','namespace','node','node','of','only','or','order','parent','precedes','preceding', - 'preceding-sibling','processing-instruction','ref','return','returns','satisfies','schema','schema-element', - 'self','some','sortby','stable','text','then','to','treat','typeswitch','union','variable','version','where', - 'xquery', 'empty-sequence']; - for(var i=0, l=basic.length; i < l; i++) { kwObj[basic[i]] = kw(basic[i]);}; - - // a list of types. For each add a property to kwObj with the value of - // {type: "atom", style: "atom"} - var types = ['xs:string', 'xs:float', 'xs:decimal', 'xs:double', 'xs:integer', 'xs:boolean', 'xs:date', 'xs:dateTime', - 'xs:time', 'xs:duration', 'xs:dayTimeDuration', 'xs:time', 'xs:yearMonthDuration', 'numeric', 'xs:hexBinary', - 'xs:base64Binary', 'xs:anyURI', 'xs:QName', 'xs:byte','xs:boolean','xs:anyURI','xf:yearMonthDuration']; - for(var i=0, l=types.length; i < l; i++) { kwObj[types[i]] = atom;}; - - // each operator will add a property to kwObj with value of {type: "operator", style: "keyword"} - var operators = ['eq', 'ne', 'lt', 'le', 'gt', 'ge', ':=', '=', '>', '>=', '<', '<=', '.', '|', '?', 'and', 'or', 'div', 'idiv', 'mod', '*', '/', '+', '-']; - for(var i=0, l=operators.length; i < l; i++) { kwObj[operators[i]] = operator;}; - - // each axis_specifiers will add a property to kwObj with value of {type: "axis_specifier", style: "qualifier"} - var axis_specifiers = ["self::", "attribute::", "child::", "descendant::", "descendant-or-self::", "parent::", - "ancestor::", "ancestor-or-self::", "following::", "preceding::", "following-sibling::", "preceding-sibling::"]; - for(var i=0, l=axis_specifiers.length; i < l; i++) { kwObj[axis_specifiers[i]] = qualifier; }; - - return kwObj; - }(); - - function chain(stream, state, f) { - state.tokenize = f; - return f(stream, state); - } - - // the primary mode tokenizer - function tokenBase(stream, state) { - var ch = stream.next(), - mightBeFunction = false, - isEQName = isEQNameAhead(stream); - - // an XML tag (if not in some sub, chained tokenizer) - if (ch == "<") { - if(stream.match("!--", true)) - return chain(stream, state, tokenXMLComment); - - if(stream.match("![CDATA", false)) { - state.tokenize = tokenCDATA; - return "tag"; - } - - if(stream.match("?", false)) { - return chain(stream, state, tokenPreProcessing); - } - - var isclose = stream.eat("/"); - stream.eatSpace(); - var tagName = "", c; - while ((c = stream.eat(/[^\s\u00a0=<>\"\'\/?]/))) tagName += c; - - return chain(stream, state, tokenTag(tagName, isclose)); - } - // start code block - else if(ch == "{") { - pushStateStack(state,{ type: "codeblock"}); - return null; - } - // end code block - else if(ch == "}") { - popStateStack(state); - return null; - } - // if we're in an XML block - else if(isInXmlBlock(state)) { - if(ch == ">") - return "tag"; - else if(ch == "/" && stream.eat(">")) { - popStateStack(state); - return "tag"; - } - else - return "variable"; - } - // if a number - else if (/\d/.test(ch)) { - stream.match(/^\d*(?:\.\d*)?(?:E[+\-]?\d+)?/); - return "atom"; - } - // comment start - else if (ch === "(" && stream.eat(":")) { - pushStateStack(state, { type: "comment"}); - return chain(stream, state, tokenComment); - } - // quoted string - else if ( !isEQName && (ch === '"' || ch === "'")) - return chain(stream, state, tokenString(ch)); - // variable - else if(ch === "$") { - return chain(stream, state, tokenVariable); - } - // assignment - else if(ch ===":" && stream.eat("=")) { - return "keyword"; - } - // open paren - else if(ch === "(") { - pushStateStack(state, { type: "paren"}); - return null; - } - // close paren - else if(ch === ")") { - popStateStack(state); - return null; - } - // open paren - else if(ch === "[") { - pushStateStack(state, { type: "bracket"}); - return null; - } - // close paren - else if(ch === "]") { - popStateStack(state); - return null; - } - else { - var known = keywords.propertyIsEnumerable(ch) && keywords[ch]; - - // if there's a EQName ahead, consume the rest of the string portion, it's likely a function - if(isEQName && ch === '\"') while(stream.next() !== '"'){} - if(isEQName && ch === '\'') while(stream.next() !== '\''){} - - // gobble up a word if the character is not known - if(!known) stream.eatWhile(/[\w\$_-]/); - - // gobble a colon in the case that is a lib func type call fn:doc - var foundColon = stream.eat(":"); - - // if there's not a second colon, gobble another word. Otherwise, it's probably an axis specifier - // which should get matched as a keyword - if(!stream.eat(":") && foundColon) { - stream.eatWhile(/[\w\$_-]/); - } - // if the next non whitespace character is an open paren, this is probably a function (if not a keyword of other sort) - if(stream.match(/^[ \t]*\(/, false)) { - mightBeFunction = true; - } - // is the word a keyword? - var word = stream.current(); - known = keywords.propertyIsEnumerable(word) && keywords[word]; - - // if we think it's a function call but not yet known, - // set style to variable for now for lack of something better - if(mightBeFunction && !known) known = {type: "function_call", style: "variable def"}; - - // if the previous word was element, attribute, axis specifier, this word should be the name of that - if(isInXmlConstructor(state)) { - popStateStack(state); - return "variable"; - } - // as previously checked, if the word is element,attribute, axis specifier, call it an "xmlconstructor" and - // push the stack so we know to look for it on the next word - if(word == "element" || word == "attribute" || known.type == "axis_specifier") pushStateStack(state, {type: "xmlconstructor"}); - - // if the word is known, return the details of that else just call this a generic 'word' - return known ? known.style : "variable"; - } - } - - // handle comments, including nested - function tokenComment(stream, state) { - var maybeEnd = false, maybeNested = false, nestedCount = 0, ch; - while (ch = stream.next()) { - if (ch == ")" && maybeEnd) { - if(nestedCount > 0) - nestedCount--; - else { - popStateStack(state); - break; - } - } - else if(ch == ":" && maybeNested) { - nestedCount++; - } - maybeEnd = (ch == ":"); - maybeNested = (ch == "("); - } - - return "comment"; - } - - // tokenizer for string literals - // optionally pass a tokenizer function to set state.tokenize back to when finished - function tokenString(quote, f) { - return function(stream, state) { - var ch; - - if(isInString(state) && stream.current() == quote) { - popStateStack(state); - if(f) state.tokenize = f; - return "string"; - } - - pushStateStack(state, { type: "string", name: quote, tokenize: tokenString(quote, f) }); - - // if we're in a string and in an XML block, allow an embedded code block - if(stream.match("{", false) && isInXmlAttributeBlock(state)) { - state.tokenize = tokenBase; - return "string"; - } - - - while (ch = stream.next()) { - if (ch == quote) { - popStateStack(state); - if(f) state.tokenize = f; - break; - } - else { - // if we're in a string and in an XML block, allow an embedded code block in an attribute - if(stream.match("{", false) && isInXmlAttributeBlock(state)) { - state.tokenize = tokenBase; - return "string"; - } - - } - } - - return "string"; - }; - } - - // tokenizer for variables - function tokenVariable(stream, state) { - var isVariableChar = /[\w\$_-]/; - - // a variable may start with a quoted EQName so if the next character is quote, consume to the next quote - if(stream.eat("\"")) { - while(stream.next() !== '\"'){}; - stream.eat(":"); - } else { - stream.eatWhile(isVariableChar); - if(!stream.match(":=", false)) stream.eat(":"); - } - stream.eatWhile(isVariableChar); - state.tokenize = tokenBase; - return "variable"; - } - - // tokenizer for XML tags - function tokenTag(name, isclose) { - return function(stream, state) { - stream.eatSpace(); - if(isclose && stream.eat(">")) { - popStateStack(state); - state.tokenize = tokenBase; - return "tag"; - } - // self closing tag without attributes? - if(!stream.eat("/")) - pushStateStack(state, { type: "tag", name: name, tokenize: tokenBase}); - if(!stream.eat(">")) { - state.tokenize = tokenAttribute; - return "tag"; - } - else { - state.tokenize = tokenBase; - } - return "tag"; - }; - } - - // tokenizer for XML attributes - function tokenAttribute(stream, state) { - var ch = stream.next(); - - if(ch == "/" && stream.eat(">")) { - if(isInXmlAttributeBlock(state)) popStateStack(state); - if(isInXmlBlock(state)) popStateStack(state); - return "tag"; - } - if(ch == ">") { - if(isInXmlAttributeBlock(state)) popStateStack(state); - return "tag"; - } - if(ch == "=") - return null; - // quoted string - if (ch == '"' || ch == "'") - return chain(stream, state, tokenString(ch, tokenAttribute)); - - if(!isInXmlAttributeBlock(state)) - pushStateStack(state, { type: "attribute", tokenize: tokenAttribute}); - - stream.eat(/[a-zA-Z_:]/); - stream.eatWhile(/[-a-zA-Z0-9_:.]/); - stream.eatSpace(); - - // the case where the attribute has not value and the tag was closed - if(stream.match(">", false) || stream.match("/", false)) { - popStateStack(state); - state.tokenize = tokenBase; - } - - return "attribute"; - } - - // handle comments, including nested - function tokenXMLComment(stream, state) { - var ch; - while (ch = stream.next()) { - if (ch == "-" && stream.match("->", true)) { - state.tokenize = tokenBase; - return "comment"; - } - } - } - - - // handle CDATA - function tokenCDATA(stream, state) { - var ch; - while (ch = stream.next()) { - if (ch == "]" && stream.match("]", true)) { - state.tokenize = tokenBase; - return "comment"; - } - } - } - - // handle preprocessing instructions - function tokenPreProcessing(stream, state) { - var ch; - while (ch = stream.next()) { - if (ch == "?" && stream.match(">", true)) { - state.tokenize = tokenBase; - return "comment meta"; - } - } - } - - - // functions to test the current context of the state - function isInXmlBlock(state) { return isIn(state, "tag"); } - function isInXmlAttributeBlock(state) { return isIn(state, "attribute"); } - function isInXmlConstructor(state) { return isIn(state, "xmlconstructor"); } - function isInString(state) { return isIn(state, "string"); } - - function isEQNameAhead(stream) { - // assume we've already eaten a quote (") - if(stream.current() === '"') - return stream.match(/^[^\"]+\"\:/, false); - else if(stream.current() === '\'') - return stream.match(/^[^\"]+\'\:/, false); - else - return false; - } - - function isIn(state, type) { - return (state.stack.length && state.stack[state.stack.length - 1].type == type); - } - - function pushStateStack(state, newState) { - state.stack.push(newState); - } - - function popStateStack(state) { - state.stack.pop(); - var reinstateTokenize = state.stack.length && state.stack[state.stack.length-1].tokenize; - state.tokenize = reinstateTokenize || tokenBase; - } - - // the interface for the mode API - return { - startState: function() { - return { - tokenize: tokenBase, - cc: [], - stack: [] - }; - }, - - token: function(stream, state) { - if (stream.eatSpace()) return null; - var style = state.tokenize(stream, state); - return style; - }, - - blockCommentStart: "(:", - blockCommentEnd: ":)" - - }; - -}); - -CodeMirror.defineMIME("application/xquery", "xquery"); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/yacas/index.html b/public/plugins/codemirror-5.17.0/mode/yacas/index.html deleted file mode 100644 index 8e52cafb1..000000000 --- a/public/plugins/codemirror-5.17.0/mode/yacas/index.html +++ /dev/null @@ -1,87 +0,0 @@ - - -CodeMirror: yacas mode - - - - - - - - - - -
    -

    yacas mode

    - - - - - - -

    MIME types defined: text/x-yacas (yacas).

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/yacas/yacas.js b/public/plugins/codemirror-5.17.0/mode/yacas/yacas.js deleted file mode 100644 index 30bd60b2f..000000000 --- a/public/plugins/codemirror-5.17.0/mode/yacas/yacas.js +++ /dev/null @@ -1,204 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -// Yacas mode copyright (c) 2015 by Grzegorz Mazur -// Loosely based on mathematica mode by Calin Barbat - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode('yacas', function(_config, _parserConfig) { - - function words(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - - var bodiedOps = words("Assert BackQuote D Defun Deriv For ForEach FromFile " + - "FromString Function Integrate InverseTaylor Limit " + - "LocalSymbols Macro MacroRule MacroRulePattern " + - "NIntegrate Rule RulePattern Subst TD TExplicitSum " + - "TSum Taylor Taylor1 Taylor2 Taylor3 ToFile " + - "ToStdout ToString TraceRule Until While"); - - // patterns - var pFloatForm = "(?:(?:\\.\\d+|\\d+\\.\\d*|\\d+)(?:[eE][+-]?\\d+)?)"; - var pIdentifier = "(?:[a-zA-Z\\$'][a-zA-Z0-9\\$']*)"; - - // regular expressions - var reFloatForm = new RegExp(pFloatForm); - var reIdentifier = new RegExp(pIdentifier); - var rePattern = new RegExp(pIdentifier + "?_" + pIdentifier); - var reFunctionLike = new RegExp(pIdentifier + "\\s*\\("); - - function tokenBase(stream, state) { - var ch; - - // get next character - ch = stream.next(); - - // string - if (ch === '"') { - state.tokenize = tokenString; - return state.tokenize(stream, state); - } - - // comment - if (ch === '/') { - if (stream.eat('*')) { - state.tokenize = tokenComment; - return state.tokenize(stream, state); - } - if (stream.eat("/")) { - stream.skipToEnd(); - return "comment"; - } - } - - // go back one character - stream.backUp(1); - - // update scope info - var m = stream.match(/^(\w+)\s*\(/, false); - if (m !== null && bodiedOps.hasOwnProperty(m[1])) - state.scopes.push('bodied'); - - var scope = currentScope(state); - - if (scope === 'bodied' && ch === '[') - state.scopes.pop(); - - if (ch === '[' || ch === '{' || ch === '(') - state.scopes.push(ch); - - scope = currentScope(state); - - if (scope === '[' && ch === ']' || - scope === '{' && ch === '}' || - scope === '(' && ch === ')') - state.scopes.pop(); - - if (ch === ';') { - while (scope === 'bodied') { - state.scopes.pop(); - scope = currentScope(state); - } - } - - // look for ordered rules - if (stream.match(/\d+ *#/, true, false)) { - return 'qualifier'; - } - - // look for numbers - if (stream.match(reFloatForm, true, false)) { - return 'number'; - } - - // look for placeholders - if (stream.match(rePattern, true, false)) { - return 'variable-3'; - } - - // match all braces separately - if (stream.match(/(?:\[|\]|{|}|\(|\))/, true, false)) { - return 'bracket'; - } - - // literals looking like function calls - if (stream.match(reFunctionLike, true, false)) { - stream.backUp(1); - return 'variable'; - } - - // all other identifiers - if (stream.match(reIdentifier, true, false)) { - return 'variable-2'; - } - - // operators; note that operators like @@ or /; are matched separately for each symbol. - if (stream.match(/(?:\\|\+|\-|\*|\/|,|;|\.|:|@|~|=|>|<|&|\||_|`|'|\^|\?|!|%)/, true, false)) { - return 'operator'; - } - - // everything else is an error - return 'error'; - } - - function tokenString(stream, state) { - var next, end = false, escaped = false; - while ((next = stream.next()) != null) { - if (next === '"' && !escaped) { - end = true; - break; - } - escaped = !escaped && next === '\\'; - } - if (end && !escaped) { - state.tokenize = tokenBase; - } - return 'string'; - }; - - function tokenComment(stream, state) { - var prev, next; - while((next = stream.next()) != null) { - if (prev === '*' && next === '/') { - state.tokenize = tokenBase; - break; - } - prev = next; - } - return 'comment'; - } - - function currentScope(state) { - var scope = null; - if (state.scopes.length > 0) - scope = state.scopes[state.scopes.length - 1]; - return scope; - } - - return { - startState: function() { - return { - tokenize: tokenBase, - scopes: [] - }; - }, - token: function(stream, state) { - if (stream.eatSpace()) return null; - return state.tokenize(stream, state); - }, - indent: function(state, textAfter) { - if (state.tokenize !== tokenBase && state.tokenize !== null) - return CodeMirror.Pass; - - var delta = 0; - if (textAfter === ']' || textAfter === '];' || - textAfter === '}' || textAfter === '};' || - textAfter === ');') - delta = -1; - - return (state.scopes.length + delta) * _config.indentUnit; - }, - electricChars: "{}[]();", - blockCommentStart: "/*", - blockCommentEnd: "*/", - lineComment: "//" - }; -}); - -CodeMirror.defineMIME('text/x-yacas', { - name: 'yacas' -}); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/yaml-frontmatter/index.html b/public/plugins/codemirror-5.17.0/mode/yaml-frontmatter/index.html deleted file mode 100644 index 30cb294e8..000000000 --- a/public/plugins/codemirror-5.17.0/mode/yaml-frontmatter/index.html +++ /dev/null @@ -1,121 +0,0 @@ - - -CodeMirror: YAML front matter mode - - - - - - - - - - - - - -
    -

    YAML front matter mode

    -
    - -

    Defines a mode that parses -a YAML frontmatter -at the start of a file, switching to a base mode at the end of that. -Takes a mode configuration option base to configure the -base mode, which defaults to "gfm".

    - - - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/yaml-frontmatter/yaml-frontmatter.js b/public/plugins/codemirror-5.17.0/mode/yaml-frontmatter/yaml-frontmatter.js deleted file mode 100644 index 5f4977237..000000000 --- a/public/plugins/codemirror-5.17.0/mode/yaml-frontmatter/yaml-frontmatter.js +++ /dev/null @@ -1,68 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function (mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror"), require("../yaml/yaml")) - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../yaml/yaml"], mod) - else // Plain browser env - mod(CodeMirror) -})(function (CodeMirror) { - - var START = 0, FRONTMATTER = 1, BODY = 2 - - // a mixed mode for Markdown text with an optional YAML front matter - CodeMirror.defineMode("yaml-frontmatter", function (config, parserConfig) { - var yamlMode = CodeMirror.getMode(config, "yaml") - var innerMode = CodeMirror.getMode(config, parserConfig && parserConfig.base || "gfm") - - function curMode(state) { - return state.state == BODY ? innerMode : yamlMode - } - - return { - startState: function () { - return { - state: START, - inner: CodeMirror.startState(yamlMode) - } - }, - copyState: function (state) { - return { - state: state.state, - inner: CodeMirror.copyState(curMode(state), state.inner) - } - }, - token: function (stream, state) { - if (state.state == START) { - if (stream.match(/---/, false)) { - state.state = FRONTMATTER - return yamlMode.token(stream, state.inner) - } else { - state.state = BODY - state.inner = CodeMirror.startState(innerMode) - return innerMode.token(stream, state.inner) - } - } else if (state.state == FRONTMATTER) { - var end = stream.sol() && stream.match(/---/, false) - var style = yamlMode.token(stream, state.inner) - if (end) { - state.state = BODY - state.inner = CodeMirror.startState(innerMode) - } - return style - } else { - return innerMode.token(stream, state.inner) - } - }, - innerMode: function (state) { - return {mode: curMode(state), state: state.inner} - }, - blankLine: function (state) { - var mode = curMode(state) - if (mode.blankLine) return mode.blankLine(state.inner) - } - } - }) -}); diff --git a/public/plugins/codemirror-5.17.0/mode/yaml/index.html b/public/plugins/codemirror-5.17.0/mode/yaml/index.html deleted file mode 100644 index be9b63236..000000000 --- a/public/plugins/codemirror-5.17.0/mode/yaml/index.html +++ /dev/null @@ -1,80 +0,0 @@ - - -CodeMirror: YAML mode - - - - - - - - - -
    -

    YAML mode

    -
    - - -

    MIME types defined: text/x-yaml.

    - -
    diff --git a/public/plugins/codemirror-5.17.0/mode/yaml/yaml.js b/public/plugins/codemirror-5.17.0/mode/yaml/yaml.js deleted file mode 100644 index b7015e599..000000000 --- a/public/plugins/codemirror-5.17.0/mode/yaml/yaml.js +++ /dev/null @@ -1,117 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("yaml", function() { - - var cons = ['true', 'false', 'on', 'off', 'yes', 'no']; - var keywordRegex = new RegExp("\\b(("+cons.join(")|(")+"))$", 'i'); - - return { - token: function(stream, state) { - var ch = stream.peek(); - var esc = state.escaped; - state.escaped = false; - /* comments */ - if (ch == "#" && (stream.pos == 0 || /\s/.test(stream.string.charAt(stream.pos - 1)))) { - stream.skipToEnd(); - return "comment"; - } - - if (stream.match(/^('([^']|\\.)*'?|"([^"]|\\.)*"?)/)) - return "string"; - - if (state.literal && stream.indentation() > state.keyCol) { - stream.skipToEnd(); return "string"; - } else if (state.literal) { state.literal = false; } - if (stream.sol()) { - state.keyCol = 0; - state.pair = false; - state.pairStart = false; - /* document start */ - if(stream.match(/---/)) { return "def"; } - /* document end */ - if (stream.match(/\.\.\./)) { return "def"; } - /* array list item */ - if (stream.match(/\s*-\s+/)) { return 'meta'; } - } - /* inline pairs/lists */ - if (stream.match(/^(\{|\}|\[|\])/)) { - if (ch == '{') - state.inlinePairs++; - else if (ch == '}') - state.inlinePairs--; - else if (ch == '[') - state.inlineList++; - else - state.inlineList--; - return 'meta'; - } - - /* list seperator */ - if (state.inlineList > 0 && !esc && ch == ',') { - stream.next(); - return 'meta'; - } - /* pairs seperator */ - if (state.inlinePairs > 0 && !esc && ch == ',') { - state.keyCol = 0; - state.pair = false; - state.pairStart = false; - stream.next(); - return 'meta'; - } - - /* start of value of a pair */ - if (state.pairStart) { - /* block literals */ - if (stream.match(/^\s*(\||\>)\s*/)) { state.literal = true; return 'meta'; }; - /* references */ - if (stream.match(/^\s*(\&|\*)[a-z0-9\._-]+\b/i)) { return 'variable-2'; } - /* numbers */ - if (state.inlinePairs == 0 && stream.match(/^\s*-?[0-9\.\,]+\s?$/)) { return 'number'; } - if (state.inlinePairs > 0 && stream.match(/^\s*-?[0-9\.\,]+\s?(?=(,|}))/)) { return 'number'; } - /* keywords */ - if (stream.match(keywordRegex)) { return 'keyword'; } - } - - /* pairs (associative arrays) -> key */ - if (!state.pair && stream.match(/^\s*(?:[,\[\]{}&*!|>'"%@`][^\s'":]|[^,\[\]{}#&*!|>'"%@`])[^#]*?(?=\s*:($|\s))/)) { - state.pair = true; - state.keyCol = stream.indentation(); - return "atom"; - } - if (state.pair && stream.match(/^:\s*/)) { state.pairStart = true; return 'meta'; } - - /* nothing found, continue */ - state.pairStart = false; - state.escaped = (ch == '\\'); - stream.next(); - return null; - }, - startState: function() { - return { - pair: false, - pairStart: false, - keyCol: 0, - inlinePairs: 0, - inlineList: 0, - literal: false, - escaped: false - }; - } - }; -}); - -CodeMirror.defineMIME("text/x-yaml", "yaml"); - -}); diff --git a/public/plugins/codemirror-5.17.0/mode/z80/index.html b/public/plugins/codemirror-5.17.0/mode/z80/index.html deleted file mode 100644 index a41b7473e..000000000 --- a/public/plugins/codemirror-5.17.0/mode/z80/index.html +++ /dev/null @@ -1,53 +0,0 @@ - - -CodeMirror: Z80 assembly mode - - - - - - - - - -
    -

    Z80 assembly mode

    - - -
    - - - -

    MIME types defined: text/x-z80, text/x-ez80.

    -
    diff --git a/public/plugins/codemirror-5.17.0/mode/z80/z80.js b/public/plugins/codemirror-5.17.0/mode/z80/z80.js deleted file mode 100644 index aae70216f..000000000 --- a/public/plugins/codemirror-5.17.0/mode/z80/z80.js +++ /dev/null @@ -1,116 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode('z80', function(_config, parserConfig) { - var ez80 = parserConfig.ez80; - var keywords1, keywords2; - if (ez80) { - keywords1 = /^(exx?|(ld|cp)([di]r?)?|[lp]ea|pop|push|ad[cd]|cpl|daa|dec|inc|neg|sbc|sub|and|bit|[cs]cf|x?or|res|set|r[lr]c?a?|r[lr]d|s[lr]a|srl|djnz|nop|[de]i|halt|im|in([di]mr?|ir?|irx|2r?)|ot(dmr?|[id]rx|imr?)|out(0?|[di]r?|[di]2r?)|tst(io)?|slp)(\.([sl]?i)?[sl])?\b/i; - keywords2 = /^(((call|j[pr]|rst|ret[in]?)(\.([sl]?i)?[sl])?)|(rs|st)mix)\b/i; - } else { - keywords1 = /^(exx?|(ld|cp|in)([di]r?)?|pop|push|ad[cd]|cpl|daa|dec|inc|neg|sbc|sub|and|bit|[cs]cf|x?or|res|set|r[lr]c?a?|r[lr]d|s[lr]a|srl|djnz|nop|rst|[de]i|halt|im|ot[di]r|out[di]?)\b/i; - keywords2 = /^(call|j[pr]|ret[in]?|b_?(call|jump))\b/i; - } - - var variables1 = /^(af?|bc?|c|de?|e|hl?|l|i[xy]?|r|sp)\b/i; - var variables2 = /^(n?[zc]|p[oe]?|m)\b/i; - var errors = /^([hl][xy]|i[xy][hl]|slia|sll)\b/i; - var numbers = /^([\da-f]+h|[0-7]+o|[01]+b|\d+d?)\b/i; - - return { - startState: function() { - return { - context: 0 - }; - }, - token: function(stream, state) { - if (!stream.column()) - state.context = 0; - - if (stream.eatSpace()) - return null; - - var w; - - if (stream.eatWhile(/\w/)) { - if (ez80 && stream.eat('.')) { - stream.eatWhile(/\w/); - } - w = stream.current(); - - if (stream.indentation()) { - if ((state.context == 1 || state.context == 4) && variables1.test(w)) { - state.context = 4; - return 'var2'; - } - - if (state.context == 2 && variables2.test(w)) { - state.context = 4; - return 'var3'; - } - - if (keywords1.test(w)) { - state.context = 1; - return 'keyword'; - } else if (keywords2.test(w)) { - state.context = 2; - return 'keyword'; - } else if (state.context == 4 && numbers.test(w)) { - return 'number'; - } - - if (errors.test(w)) - return 'error'; - } else if (stream.match(numbers)) { - return 'number'; - } else { - return null; - } - } else if (stream.eat(';')) { - stream.skipToEnd(); - return 'comment'; - } else if (stream.eat('"')) { - while (w = stream.next()) { - if (w == '"') - break; - - if (w == '\\') - stream.next(); - } - return 'string'; - } else if (stream.eat('\'')) { - if (stream.match(/\\?.'/)) - return 'number'; - } else if (stream.eat('.') || stream.sol() && stream.eat('#')) { - state.context = 5; - - if (stream.eatWhile(/\w/)) - return 'def'; - } else if (stream.eat('$')) { - if (stream.eatWhile(/[\da-f]/i)) - return 'number'; - } else if (stream.eat('%')) { - if (stream.eatWhile(/[01]/)) - return 'number'; - } else { - stream.next(); - } - return null; - } - }; -}); - -CodeMirror.defineMIME("text/x-z80", "z80"); -CodeMirror.defineMIME("text/x-ez80", { name: "z80", ez80: true }); - -}); diff --git a/public/plugins/dropzone-4.2.0/dropzone.css b/public/plugins/dropzone-4.2.0/dropzone.css deleted file mode 100644 index 0494d1ccf..000000000 --- a/public/plugins/dropzone-4.2.0/dropzone.css +++ /dev/null @@ -1,388 +0,0 @@ -/* - * The MIT License - * Copyright (c) 2012 Matias Meno - */ -@-webkit-keyframes passing-through { - 0% { - opacity: 0; - -webkit-transform: translateY(40px); - -moz-transform: translateY(40px); - -ms-transform: translateY(40px); - -o-transform: translateY(40px); - transform: translateY(40px); } - 30%, 70% { - opacity: 1; - -webkit-transform: translateY(0px); - -moz-transform: translateY(0px); - -ms-transform: translateY(0px); - -o-transform: translateY(0px); - transform: translateY(0px); } - 100% { - opacity: 0; - -webkit-transform: translateY(-40px); - -moz-transform: translateY(-40px); - -ms-transform: translateY(-40px); - -o-transform: translateY(-40px); - transform: translateY(-40px); } } -@-moz-keyframes passing-through { - 0% { - opacity: 0; - -webkit-transform: translateY(40px); - -moz-transform: translateY(40px); - -ms-transform: translateY(40px); - -o-transform: translateY(40px); - transform: translateY(40px); } - 30%, 70% { - opacity: 1; - -webkit-transform: translateY(0px); - -moz-transform: translateY(0px); - -ms-transform: translateY(0px); - -o-transform: translateY(0px); - transform: translateY(0px); } - 100% { - opacity: 0; - -webkit-transform: translateY(-40px); - -moz-transform: translateY(-40px); - -ms-transform: translateY(-40px); - -o-transform: translateY(-40px); - transform: translateY(-40px); } } -@keyframes passing-through { - 0% { - opacity: 0; - -webkit-transform: translateY(40px); - -moz-transform: translateY(40px); - -ms-transform: translateY(40px); - -o-transform: translateY(40px); - transform: translateY(40px); } - 30%, 70% { - opacity: 1; - -webkit-transform: translateY(0px); - -moz-transform: translateY(0px); - -ms-transform: translateY(0px); - -o-transform: translateY(0px); - transform: translateY(0px); } - 100% { - opacity: 0; - -webkit-transform: translateY(-40px); - -moz-transform: translateY(-40px); - -ms-transform: translateY(-40px); - -o-transform: translateY(-40px); - transform: translateY(-40px); } } -@-webkit-keyframes slide-in { - 0% { - opacity: 0; - -webkit-transform: translateY(40px); - -moz-transform: translateY(40px); - -ms-transform: translateY(40px); - -o-transform: translateY(40px); - transform: translateY(40px); } - 30% { - opacity: 1; - -webkit-transform: translateY(0px); - -moz-transform: translateY(0px); - -ms-transform: translateY(0px); - -o-transform: translateY(0px); - transform: translateY(0px); } } -@-moz-keyframes slide-in { - 0% { - opacity: 0; - -webkit-transform: translateY(40px); - -moz-transform: translateY(40px); - -ms-transform: translateY(40px); - -o-transform: translateY(40px); - transform: translateY(40px); } - 30% { - opacity: 1; - -webkit-transform: translateY(0px); - -moz-transform: translateY(0px); - -ms-transform: translateY(0px); - -o-transform: translateY(0px); - transform: translateY(0px); } } -@keyframes slide-in { - 0% { - opacity: 0; - -webkit-transform: translateY(40px); - -moz-transform: translateY(40px); - -ms-transform: translateY(40px); - -o-transform: translateY(40px); - transform: translateY(40px); } - 30% { - opacity: 1; - -webkit-transform: translateY(0px); - -moz-transform: translateY(0px); - -ms-transform: translateY(0px); - -o-transform: translateY(0px); - transform: translateY(0px); } } -@-webkit-keyframes pulse { - 0% { - -webkit-transform: scale(1); - -moz-transform: scale(1); - -ms-transform: scale(1); - -o-transform: scale(1); - transform: scale(1); } - 10% { - -webkit-transform: scale(1.1); - -moz-transform: scale(1.1); - -ms-transform: scale(1.1); - -o-transform: scale(1.1); - transform: scale(1.1); } - 20% { - -webkit-transform: scale(1); - -moz-transform: scale(1); - -ms-transform: scale(1); - -o-transform: scale(1); - transform: scale(1); } } -@-moz-keyframes pulse { - 0% { - -webkit-transform: scale(1); - -moz-transform: scale(1); - -ms-transform: scale(1); - -o-transform: scale(1); - transform: scale(1); } - 10% { - -webkit-transform: scale(1.1); - -moz-transform: scale(1.1); - -ms-transform: scale(1.1); - -o-transform: scale(1.1); - transform: scale(1.1); } - 20% { - -webkit-transform: scale(1); - -moz-transform: scale(1); - -ms-transform: scale(1); - -o-transform: scale(1); - transform: scale(1); } } -@keyframes pulse { - 0% { - -webkit-transform: scale(1); - -moz-transform: scale(1); - -ms-transform: scale(1); - -o-transform: scale(1); - transform: scale(1); } - 10% { - -webkit-transform: scale(1.1); - -moz-transform: scale(1.1); - -ms-transform: scale(1.1); - -o-transform: scale(1.1); - transform: scale(1.1); } - 20% { - -webkit-transform: scale(1); - -moz-transform: scale(1); - -ms-transform: scale(1); - -o-transform: scale(1); - transform: scale(1); } } -.dropzone, .dropzone * { - box-sizing: border-box; } - -.dropzone { - min-height: 150px; - border: 2px solid rgba(0, 0, 0, 0.3); - background: white; - padding: 20px 20px; } - .dropzone.dz-clickable { - cursor: pointer; } - .dropzone.dz-clickable * { - cursor: default; } - .dropzone.dz-clickable .dz-message, .dropzone.dz-clickable .dz-message * { - cursor: pointer; } - .dropzone.dz-started .dz-message { - display: none; } - .dropzone.dz-drag-hover { - border-style: solid; } - .dropzone.dz-drag-hover .dz-message { - opacity: 0.5; } - .dropzone .dz-message { - text-align: center; - margin: 2em 0; } - .dropzone .dz-preview { - position: relative; - display: inline-block; - vertical-align: top; - margin: 16px; - min-height: 100px; } - .dropzone .dz-preview:hover { - z-index: 1000; } - .dropzone .dz-preview:hover .dz-details { - opacity: 1; } - .dropzone .dz-preview.dz-file-preview .dz-image { - border-radius: 20px; - background: #999; - background: linear-gradient(to bottom, #eee, #ddd); } - .dropzone .dz-preview.dz-file-preview .dz-details { - opacity: 1; } - .dropzone .dz-preview.dz-image-preview { - background: white; } - .dropzone .dz-preview.dz-image-preview .dz-details { - -webkit-transition: opacity 0.2s linear; - -moz-transition: opacity 0.2s linear; - -ms-transition: opacity 0.2s linear; - -o-transition: opacity 0.2s linear; - transition: opacity 0.2s linear; } - .dropzone .dz-preview .dz-remove { - font-size: 14px; - text-align: center; - display: block; - cursor: pointer; - border: none; } - .dropzone .dz-preview .dz-remove:hover { - text-decoration: underline; } - .dropzone .dz-preview:hover .dz-details { - opacity: 1; } - .dropzone .dz-preview .dz-details { - z-index: 20; - position: absolute; - top: 0; - left: 0; - opacity: 0; - font-size: 13px; - min-width: 100%; - max-width: 100%; - padding: 2em 1em; - text-align: center; - color: rgba(0, 0, 0, 0.9); - line-height: 150%; } - .dropzone .dz-preview .dz-details .dz-size { - margin-bottom: 1em; - font-size: 16px; } - .dropzone .dz-preview .dz-details .dz-filename { - white-space: nowrap; } - .dropzone .dz-preview .dz-details .dz-filename:hover span { - border: 1px solid rgba(200, 200, 200, 0.8); - background-color: rgba(255, 255, 255, 0.8); } - .dropzone .dz-preview .dz-details .dz-filename:not(:hover) { - overflow: hidden; - text-overflow: ellipsis; } - .dropzone .dz-preview .dz-details .dz-filename:not(:hover) span { - border: 1px solid transparent; } - .dropzone .dz-preview .dz-details .dz-filename span, .dropzone .dz-preview .dz-details .dz-size span { - background-color: rgba(255, 255, 255, 0.4); - padding: 0 0.4em; - border-radius: 3px; } - .dropzone .dz-preview:hover .dz-image img { - -webkit-transform: scale(1.05, 1.05); - -moz-transform: scale(1.05, 1.05); - -ms-transform: scale(1.05, 1.05); - -o-transform: scale(1.05, 1.05); - transform: scale(1.05, 1.05); - -webkit-filter: blur(8px); - filter: blur(8px); } - .dropzone .dz-preview .dz-image { - border-radius: 20px; - overflow: hidden; - width: 120px; - height: 120px; - position: relative; - display: block; - z-index: 10; } - .dropzone .dz-preview .dz-image img { - display: block; } - .dropzone .dz-preview.dz-success .dz-success-mark { - -webkit-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1); - -moz-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1); - -ms-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1); - -o-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1); - animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1); } - .dropzone .dz-preview.dz-error .dz-error-mark { - opacity: 1; - -webkit-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1); - -moz-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1); - -ms-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1); - -o-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1); - animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1); } - .dropzone .dz-preview .dz-success-mark, .dropzone .dz-preview .dz-error-mark { - pointer-events: none; - opacity: 0; - z-index: 500; - position: absolute; - display: block; - top: 50%; - left: 50%; - margin-left: -27px; - margin-top: -27px; } - .dropzone .dz-preview .dz-success-mark svg, .dropzone .dz-preview .dz-error-mark svg { - display: block; - width: 54px; - height: 54px; } - .dropzone .dz-preview.dz-processing .dz-progress { - opacity: 1; - -webkit-transition: all 0.2s linear; - -moz-transition: all 0.2s linear; - -ms-transition: all 0.2s linear; - -o-transition: all 0.2s linear; - transition: all 0.2s linear; } - .dropzone .dz-preview.dz-complete .dz-progress { - opacity: 0; - -webkit-transition: opacity 0.4s ease-in; - -moz-transition: opacity 0.4s ease-in; - -ms-transition: opacity 0.4s ease-in; - -o-transition: opacity 0.4s ease-in; - transition: opacity 0.4s ease-in; } - .dropzone .dz-preview:not(.dz-processing) .dz-progress { - -webkit-animation: pulse 6s ease infinite; - -moz-animation: pulse 6s ease infinite; - -ms-animation: pulse 6s ease infinite; - -o-animation: pulse 6s ease infinite; - animation: pulse 6s ease infinite; } - .dropzone .dz-preview .dz-progress { - opacity: 1; - z-index: 1000; - pointer-events: none; - position: absolute; - height: 16px; - left: 50%; - top: 50%; - margin-top: -8px; - width: 80px; - margin-left: -40px; - background: rgba(255, 255, 255, 0.9); - -webkit-transform: scale(1); - border-radius: 8px; - overflow: hidden; } - .dropzone .dz-preview .dz-progress .dz-upload { - background: #333; - background: linear-gradient(to bottom, #666, #444); - position: absolute; - top: 0; - left: 0; - bottom: 0; - width: 0; - -webkit-transition: width 300ms ease-in-out; - -moz-transition: width 300ms ease-in-out; - -ms-transition: width 300ms ease-in-out; - -o-transition: width 300ms ease-in-out; - transition: width 300ms ease-in-out; } - .dropzone .dz-preview.dz-error .dz-error-message { - display: block; } - .dropzone .dz-preview.dz-error:hover .dz-error-message { - opacity: 1; - pointer-events: auto; } - .dropzone .dz-preview .dz-error-message { - pointer-events: none; - z-index: 1000; - position: absolute; - display: block; - display: none; - opacity: 0; - -webkit-transition: opacity 0.3s ease; - -moz-transition: opacity 0.3s ease; - -ms-transition: opacity 0.3s ease; - -o-transition: opacity 0.3s ease; - transition: opacity 0.3s ease; - border-radius: 8px; - font-size: 13px; - top: 130px; - left: -10px; - width: 140px; - background: #be2626; - background: linear-gradient(to bottom, #be2626, #a92222); - padding: 0.5em 1.2em; - color: white; } - .dropzone .dz-preview .dz-error-message:after { - content: ''; - position: absolute; - top: -6px; - left: 64px; - width: 0; - height: 0; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-bottom: 6px solid #be2626; } diff --git a/public/plugins/dropzone-4.2.0/dropzone.js b/public/plugins/dropzone-4.2.0/dropzone.js deleted file mode 100644 index cd7855fbd..000000000 --- a/public/plugins/dropzone-4.2.0/dropzone.js +++ /dev/null @@ -1,1752 +0,0 @@ - -/* - * - * More info at [www.dropzonejs.com](http://www.dropzonejs.com) - * - * Copyright (c) 2012, Matias Meno - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ - -(function() { - var Dropzone, Emitter, camelize, contentLoaded, detectVerticalSquash, drawImageIOSFix, noop, without, - __slice = [].slice, - __hasProp = {}.hasOwnProperty, - __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; - - noop = function() {}; - - Emitter = (function() { - function Emitter() {} - - Emitter.prototype.addEventListener = Emitter.prototype.on; - - Emitter.prototype.on = function(event, fn) { - this._callbacks = this._callbacks || {}; - if (!this._callbacks[event]) { - this._callbacks[event] = []; - } - this._callbacks[event].push(fn); - return this; - }; - - Emitter.prototype.emit = function() { - var args, callback, callbacks, event, _i, _len; - event = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : []; - this._callbacks = this._callbacks || {}; - callbacks = this._callbacks[event]; - if (callbacks) { - for (_i = 0, _len = callbacks.length; _i < _len; _i++) { - callback = callbacks[_i]; - callback.apply(this, args); - } - } - return this; - }; - - Emitter.prototype.removeListener = Emitter.prototype.off; - - Emitter.prototype.removeAllListeners = Emitter.prototype.off; - - Emitter.prototype.removeEventListener = Emitter.prototype.off; - - Emitter.prototype.off = function(event, fn) { - var callback, callbacks, i, _i, _len; - if (!this._callbacks || arguments.length === 0) { - this._callbacks = {}; - return this; - } - callbacks = this._callbacks[event]; - if (!callbacks) { - return this; - } - if (arguments.length === 1) { - delete this._callbacks[event]; - return this; - } - for (i = _i = 0, _len = callbacks.length; _i < _len; i = ++_i) { - callback = callbacks[i]; - if (callback === fn) { - callbacks.splice(i, 1); - break; - } - } - return this; - }; - - return Emitter; - - })(); - - Dropzone = (function(_super) { - var extend, resolveOption; - - __extends(Dropzone, _super); - - Dropzone.prototype.Emitter = Emitter; - - - /* - This is a list of all available events you can register on a dropzone object. - - You can register an event handler like this: - - dropzone.on("dragEnter", function() { }); - */ - - Dropzone.prototype.events = ["drop", "dragstart", "dragend", "dragenter", "dragover", "dragleave", "addedfile", "addedfiles", "removedfile", "thumbnail", "error", "errormultiple", "processing", "processingmultiple", "uploadprogress", "totaluploadprogress", "sending", "sendingmultiple", "success", "successmultiple", "canceled", "canceledmultiple", "complete", "completemultiple", "reset", "maxfilesexceeded", "maxfilesreached", "queuecomplete"]; - - Dropzone.prototype.defaultOptions = { - url: null, - method: "post", - withCredentials: false, - parallelUploads: 2, - uploadMultiple: false, - maxFilesize: 256, - paramName: "file", - createImageThumbnails: true, - maxThumbnailFilesize: 10, - thumbnailWidth: 120, - thumbnailHeight: 120, - filesizeBase: 1000, - maxFiles: null, - params: {}, - clickable: true, - ignoreHiddenFiles: true, - acceptedFiles: null, - acceptedMimeTypes: null, - autoProcessQueue: true, - autoQueue: true, - addRemoveLinks: false, - previewsContainer: null, - hiddenInputContainer: "body", - capture: null, - dictDefaultMessage: "Drop files here to upload", - dictFallbackMessage: "Your browser does not support drag'n'drop file uploads.", - dictFallbackText: "Please use the fallback form below to upload your files like in the olden days.", - dictFileTooBig: "File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.", - dictInvalidFileType: "You can't upload files of this type.", - dictResponseError: "Server responded with {{statusCode}} code.", - dictCancelUpload: "Cancel upload", - dictCancelUploadConfirmation: "Are you sure you want to cancel this upload?", - dictRemoveFile: "Remove file", - dictRemoveFileConfirmation: null, - dictMaxFilesExceeded: "You can not upload any more files.", - accept: function(file, done) { - return done(); - }, - init: function() { - return noop; - }, - forceFallback: false, - fallback: function() { - var child, messageElement, span, _i, _len, _ref; - this.element.className = "" + this.element.className + " dz-browser-not-supported"; - _ref = this.element.getElementsByTagName("div"); - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - child = _ref[_i]; - if (/(^| )dz-message($| )/.test(child.className)) { - messageElement = child; - child.className = "dz-message"; - continue; - } - } - if (!messageElement) { - messageElement = Dropzone.createElement("
    "); - this.element.appendChild(messageElement); - } - span = messageElement.getElementsByTagName("span")[0]; - if (span) { - if (span.textContent != null) { - span.textContent = this.options.dictFallbackMessage; - } else if (span.innerText != null) { - span.innerText = this.options.dictFallbackMessage; - } - } - return this.element.appendChild(this.getFallbackForm()); - }, - resize: function(file) { - var info, srcRatio, trgRatio; - info = { - srcX: 0, - srcY: 0, - srcWidth: file.width, - srcHeight: file.height - }; - srcRatio = file.width / file.height; - info.optWidth = this.options.thumbnailWidth; - info.optHeight = this.options.thumbnailHeight; - if ((info.optWidth == null) && (info.optHeight == null)) { - info.optWidth = info.srcWidth; - info.optHeight = info.srcHeight; - } else if (info.optWidth == null) { - info.optWidth = srcRatio * info.optHeight; - } else if (info.optHeight == null) { - info.optHeight = (1 / srcRatio) * info.optWidth; - } - trgRatio = info.optWidth / info.optHeight; - if (file.height < info.optHeight || file.width < info.optWidth) { - info.trgHeight = info.srcHeight; - info.trgWidth = info.srcWidth; - } else { - if (srcRatio > trgRatio) { - info.srcHeight = file.height; - info.srcWidth = info.srcHeight * trgRatio; - } else { - info.srcWidth = file.width; - info.srcHeight = info.srcWidth / trgRatio; - } - } - info.srcX = (file.width - info.srcWidth) / 2; - info.srcY = (file.height - info.srcHeight) / 2; - return info; - }, - - /* - Those functions register themselves to the events on init and handle all - the user interface specific stuff. Overwriting them won't break the upload - but can break the way it's displayed. - You can overwrite them if you don't like the default behavior. If you just - want to add an additional event handler, register it on the dropzone object - and don't overwrite those options. - */ - drop: function(e) { - return this.element.classList.remove("dz-drag-hover"); - }, - dragstart: noop, - dragend: function(e) { - return this.element.classList.remove("dz-drag-hover"); - }, - dragenter: function(e) { - return this.element.classList.add("dz-drag-hover"); - }, - dragover: function(e) { - return this.element.classList.add("dz-drag-hover"); - }, - dragleave: function(e) { - return this.element.classList.remove("dz-drag-hover"); - }, - paste: noop, - reset: function() { - return this.element.classList.remove("dz-started"); - }, - addedfile: function(file) { - var node, removeFileEvent, removeLink, _i, _j, _k, _len, _len1, _len2, _ref, _ref1, _ref2, _results; - if (this.element === this.previewsContainer) { - this.element.classList.add("dz-started"); - } - if (this.previewsContainer) { - file.previewElement = Dropzone.createElement(this.options.previewTemplate.trim()); - file.previewTemplate = file.previewElement; - this.previewsContainer.appendChild(file.previewElement); - _ref = file.previewElement.querySelectorAll("[data-dz-name]"); - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - node = _ref[_i]; - node.textContent = file.name; - } - _ref1 = file.previewElement.querySelectorAll("[data-dz-size]"); - for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) { - node = _ref1[_j]; - node.innerHTML = this.filesize(file.size); - } - if (this.options.addRemoveLinks) { - file._removeLink = Dropzone.createElement("" + this.options.dictRemoveFile + ""); - file.previewElement.appendChild(file._removeLink); - } - removeFileEvent = (function(_this) { - return function(e) { - e.preventDefault(); - e.stopPropagation(); - if (file.status === Dropzone.UPLOADING) { - return Dropzone.confirm(_this.options.dictCancelUploadConfirmation, function() { - return _this.removeFile(file); - }); - } else { - if (_this.options.dictRemoveFileConfirmation) { - return Dropzone.confirm(_this.options.dictRemoveFileConfirmation, function() { - return _this.removeFile(file); - }); - } else { - return _this.removeFile(file); - } - } - }; - })(this); - _ref2 = file.previewElement.querySelectorAll("[data-dz-remove]"); - _results = []; - for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) { - removeLink = _ref2[_k]; - _results.push(removeLink.addEventListener("click", removeFileEvent)); - } - return _results; - } - }, - removedfile: function(file) { - var _ref; - if (file.previewElement) { - if ((_ref = file.previewElement) != null) { - _ref.parentNode.removeChild(file.previewElement); - } - } - return this._updateMaxFilesReachedClass(); - }, - thumbnail: function(file, dataUrl) { - var thumbnailElement, _i, _len, _ref; - if (file.previewElement) { - file.previewElement.classList.remove("dz-file-preview"); - _ref = file.previewElement.querySelectorAll("[data-dz-thumbnail]"); - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - thumbnailElement = _ref[_i]; - thumbnailElement.alt = file.name; - thumbnailElement.src = dataUrl; - } - return setTimeout(((function(_this) { - return function() { - return file.previewElement.classList.add("dz-image-preview"); - }; - })(this)), 1); - } - }, - error: function(file, message) { - var node, _i, _len, _ref, _results; - if (file.previewElement) { - file.previewElement.classList.add("dz-error"); - if (typeof message !== "String" && message.error) { - message = message.error; - } - _ref = file.previewElement.querySelectorAll("[data-dz-errormessage]"); - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - node = _ref[_i]; - _results.push(node.textContent = message); - } - return _results; - } - }, - errormultiple: noop, - processing: function(file) { - if (file.previewElement) { - file.previewElement.classList.add("dz-processing"); - if (file._removeLink) { - return file._removeLink.textContent = this.options.dictCancelUpload; - } - } - }, - processingmultiple: noop, - uploadprogress: function(file, progress, bytesSent) { - var node, _i, _len, _ref, _results; - if (file.previewElement) { - _ref = file.previewElement.querySelectorAll("[data-dz-uploadprogress]"); - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - node = _ref[_i]; - if (node.nodeName === 'PROGRESS') { - _results.push(node.value = progress); - } else { - _results.push(node.style.width = "" + progress + "%"); - } - } - return _results; - } - }, - totaluploadprogress: noop, - sending: noop, - sendingmultiple: noop, - success: function(file) { - if (file.previewElement) { - return file.previewElement.classList.add("dz-success"); - } - }, - successmultiple: noop, - canceled: function(file) { - return this.emit("error", file, "Upload canceled."); - }, - canceledmultiple: noop, - complete: function(file) { - if (file._removeLink) { - file._removeLink.textContent = this.options.dictRemoveFile; - } - if (file.previewElement) { - return file.previewElement.classList.add("dz-complete"); - } - }, - completemultiple: noop, - maxfilesexceeded: noop, - maxfilesreached: noop, - queuecomplete: noop, - addedfiles: noop, - previewTemplate: "
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n Check\n \n \n \n \n \n
    \n
    \n \n Error\n \n \n \n \n \n \n \n
    \n
    " - }; - - extend = function() { - var key, object, objects, target, val, _i, _len; - target = arguments[0], objects = 2 <= arguments.length ? __slice.call(arguments, 1) : []; - for (_i = 0, _len = objects.length; _i < _len; _i++) { - object = objects[_i]; - for (key in object) { - val = object[key]; - target[key] = val; - } - } - return target; - }; - - function Dropzone(element, options) { - var elementOptions, fallback, _ref; - this.element = element; - this.version = Dropzone.version; - this.defaultOptions.previewTemplate = this.defaultOptions.previewTemplate.replace(/\n*/g, ""); - this.clickableElements = []; - this.listeners = []; - this.files = []; - if (typeof this.element === "string") { - this.element = document.querySelector(this.element); - } - if (!(this.element && (this.element.nodeType != null))) { - throw new Error("Invalid dropzone element."); - } - if (this.element.dropzone) { - throw new Error("Dropzone already attached."); - } - Dropzone.instances.push(this); - this.element.dropzone = this; - elementOptions = (_ref = Dropzone.optionsForElement(this.element)) != null ? _ref : {}; - this.options = extend({}, this.defaultOptions, elementOptions, options != null ? options : {}); - if (this.options.forceFallback || !Dropzone.isBrowserSupported()) { - return this.options.fallback.call(this); - } - if (this.options.url == null) { - this.options.url = this.element.getAttribute("action"); - } - if (!this.options.url) { - throw new Error("No URL provided."); - } - if (this.options.acceptedFiles && this.options.acceptedMimeTypes) { - throw new Error("You can't provide both 'acceptedFiles' and 'acceptedMimeTypes'. 'acceptedMimeTypes' is deprecated."); - } - if (this.options.acceptedMimeTypes) { - this.options.acceptedFiles = this.options.acceptedMimeTypes; - delete this.options.acceptedMimeTypes; - } - this.options.method = this.options.method.toUpperCase(); - if ((fallback = this.getExistingFallback()) && fallback.parentNode) { - fallback.parentNode.removeChild(fallback); - } - if (this.options.previewsContainer !== false) { - if (this.options.previewsContainer) { - this.previewsContainer = Dropzone.getElement(this.options.previewsContainer, "previewsContainer"); - } else { - this.previewsContainer = this.element; - } - } - if (this.options.clickable) { - if (this.options.clickable === true) { - this.clickableElements = [this.element]; - } else { - this.clickableElements = Dropzone.getElements(this.options.clickable, "clickable"); - } - } - this.init(); - } - - Dropzone.prototype.getAcceptedFiles = function() { - var file, _i, _len, _ref, _results; - _ref = this.files; - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - file = _ref[_i]; - if (file.accepted) { - _results.push(file); - } - } - return _results; - }; - - Dropzone.prototype.getRejectedFiles = function() { - var file, _i, _len, _ref, _results; - _ref = this.files; - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - file = _ref[_i]; - if (!file.accepted) { - _results.push(file); - } - } - return _results; - }; - - Dropzone.prototype.getFilesWithStatus = function(status) { - var file, _i, _len, _ref, _results; - _ref = this.files; - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - file = _ref[_i]; - if (file.status === status) { - _results.push(file); - } - } - return _results; - }; - - Dropzone.prototype.getQueuedFiles = function() { - return this.getFilesWithStatus(Dropzone.QUEUED); - }; - - Dropzone.prototype.getUploadingFiles = function() { - return this.getFilesWithStatus(Dropzone.UPLOADING); - }; - - Dropzone.prototype.getAddedFiles = function() { - return this.getFilesWithStatus(Dropzone.ADDED); - }; - - Dropzone.prototype.getActiveFiles = function() { - var file, _i, _len, _ref, _results; - _ref = this.files; - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - file = _ref[_i]; - if (file.status === Dropzone.UPLOADING || file.status === Dropzone.QUEUED) { - _results.push(file); - } - } - return _results; - }; - - Dropzone.prototype.init = function() { - var eventName, noPropagation, setupHiddenFileInput, _i, _len, _ref, _ref1; - if (this.element.tagName === "form") { - this.element.setAttribute("enctype", "multipart/form-data"); - } - if (this.element.classList.contains("dropzone") && !this.element.querySelector(".dz-message")) { - this.element.appendChild(Dropzone.createElement("
    " + this.options.dictDefaultMessage + "
    ")); - } - if (this.clickableElements.length) { - setupHiddenFileInput = (function(_this) { - return function() { - if (_this.hiddenFileInput) { - _this.hiddenFileInput.parentNode.removeChild(_this.hiddenFileInput); - } - _this.hiddenFileInput = document.createElement("input"); - _this.hiddenFileInput.setAttribute("type", "file"); - if ((_this.options.maxFiles == null) || _this.options.maxFiles > 1) { - _this.hiddenFileInput.setAttribute("multiple", "multiple"); - } - _this.hiddenFileInput.className = "dz-hidden-input"; - if (_this.options.acceptedFiles != null) { - _this.hiddenFileInput.setAttribute("accept", _this.options.acceptedFiles); - } - if (_this.options.capture != null) { - _this.hiddenFileInput.setAttribute("capture", _this.options.capture); - } - _this.hiddenFileInput.style.visibility = "hidden"; - _this.hiddenFileInput.style.position = "absolute"; - _this.hiddenFileInput.style.top = "0"; - _this.hiddenFileInput.style.left = "0"; - _this.hiddenFileInput.style.height = "0"; - _this.hiddenFileInput.style.width = "0"; - document.querySelector(_this.options.hiddenInputContainer).appendChild(_this.hiddenFileInput); - return _this.hiddenFileInput.addEventListener("change", function() { - var file, files, _i, _len; - files = _this.hiddenFileInput.files; - if (files.length) { - for (_i = 0, _len = files.length; _i < _len; _i++) { - file = files[_i]; - _this.addFile(file); - } - } - _this.emit("addedfiles", files); - return setupHiddenFileInput(); - }); - }; - })(this); - setupHiddenFileInput(); - } - this.URL = (_ref = window.URL) != null ? _ref : window.webkitURL; - _ref1 = this.events; - for (_i = 0, _len = _ref1.length; _i < _len; _i++) { - eventName = _ref1[_i]; - this.on(eventName, this.options[eventName]); - } - this.on("uploadprogress", (function(_this) { - return function() { - return _this.updateTotalUploadProgress(); - }; - })(this)); - this.on("removedfile", (function(_this) { - return function() { - return _this.updateTotalUploadProgress(); - }; - })(this)); - this.on("canceled", (function(_this) { - return function(file) { - return _this.emit("complete", file); - }; - })(this)); - this.on("complete", (function(_this) { - return function(file) { - if (_this.getAddedFiles().length === 0 && _this.getUploadingFiles().length === 0 && _this.getQueuedFiles().length === 0) { - return setTimeout((function() { - return _this.emit("queuecomplete"); - }), 0); - } - }; - })(this)); - noPropagation = function(e) { - e.stopPropagation(); - if (e.preventDefault) { - return e.preventDefault(); - } else { - return e.returnValue = false; - } - }; - this.listeners = [ - { - element: this.element, - events: { - "dragstart": (function(_this) { - return function(e) { - return _this.emit("dragstart", e); - }; - })(this), - "dragenter": (function(_this) { - return function(e) { - noPropagation(e); - return _this.emit("dragenter", e); - }; - })(this), - "dragover": (function(_this) { - return function(e) { - var efct; - try { - efct = e.dataTransfer.effectAllowed; - } catch (_error) {} - e.dataTransfer.dropEffect = 'move' === efct || 'linkMove' === efct ? 'move' : 'copy'; - noPropagation(e); - return _this.emit("dragover", e); - }; - })(this), - "dragleave": (function(_this) { - return function(e) { - return _this.emit("dragleave", e); - }; - })(this), - "drop": (function(_this) { - return function(e) { - noPropagation(e); - return _this.drop(e); - }; - })(this), - "dragend": (function(_this) { - return function(e) { - return _this.emit("dragend", e); - }; - })(this) - } - } - ]; - this.clickableElements.forEach((function(_this) { - return function(clickableElement) { - return _this.listeners.push({ - element: clickableElement, - events: { - "click": function(evt) { - if ((clickableElement !== _this.element) || (evt.target === _this.element || Dropzone.elementInside(evt.target, _this.element.querySelector(".dz-message")))) { - _this.hiddenFileInput.click(); - } - return true; - } - } - }); - }; - })(this)); - this.enable(); - return this.options.init.call(this); - }; - - Dropzone.prototype.destroy = function() { - var _ref; - this.disable(); - this.removeAllFiles(true); - if ((_ref = this.hiddenFileInput) != null ? _ref.parentNode : void 0) { - this.hiddenFileInput.parentNode.removeChild(this.hiddenFileInput); - this.hiddenFileInput = null; - } - delete this.element.dropzone; - return Dropzone.instances.splice(Dropzone.instances.indexOf(this), 1); - }; - - Dropzone.prototype.updateTotalUploadProgress = function() { - var activeFiles, file, totalBytes, totalBytesSent, totalUploadProgress, _i, _len, _ref; - totalBytesSent = 0; - totalBytes = 0; - activeFiles = this.getActiveFiles(); - if (activeFiles.length) { - _ref = this.getActiveFiles(); - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - file = _ref[_i]; - totalBytesSent += file.upload.bytesSent; - totalBytes += file.upload.total; - } - totalUploadProgress = 100 * totalBytesSent / totalBytes; - } else { - totalUploadProgress = 100; - } - return this.emit("totaluploadprogress", totalUploadProgress, totalBytes, totalBytesSent); - }; - - Dropzone.prototype._getParamName = function(n) { - if (typeof this.options.paramName === "function") { - return this.options.paramName(n); - } else { - return "" + this.options.paramName + (this.options.uploadMultiple ? "[" + n + "]" : ""); - } - }; - - Dropzone.prototype.getFallbackForm = function() { - var existingFallback, fields, fieldsString, form; - if (existingFallback = this.getExistingFallback()) { - return existingFallback; - } - fieldsString = "
    "; - if (this.options.dictFallbackText) { - fieldsString += "

    " + this.options.dictFallbackText + "

    "; - } - fieldsString += "
    "; - fields = Dropzone.createElement(fieldsString); - if (this.element.tagName !== "FORM") { - form = Dropzone.createElement("
    "); - form.appendChild(fields); - } else { - this.element.setAttribute("enctype", "multipart/form-data"); - this.element.setAttribute("method", this.options.method); - } - return form != null ? form : fields; - }; - - Dropzone.prototype.getExistingFallback = function() { - var fallback, getFallback, tagName, _i, _len, _ref; - getFallback = function(elements) { - var el, _i, _len; - for (_i = 0, _len = elements.length; _i < _len; _i++) { - el = elements[_i]; - if (/(^| )fallback($| )/.test(el.className)) { - return el; - } - } - }; - _ref = ["div", "form"]; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - tagName = _ref[_i]; - if (fallback = getFallback(this.element.getElementsByTagName(tagName))) { - return fallback; - } - } - }; - - Dropzone.prototype.setupEventListeners = function() { - var elementListeners, event, listener, _i, _len, _ref, _results; - _ref = this.listeners; - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - elementListeners = _ref[_i]; - _results.push((function() { - var _ref1, _results1; - _ref1 = elementListeners.events; - _results1 = []; - for (event in _ref1) { - listener = _ref1[event]; - _results1.push(elementListeners.element.addEventListener(event, listener, false)); - } - return _results1; - })()); - } - return _results; - }; - - Dropzone.prototype.removeEventListeners = function() { - var elementListeners, event, listener, _i, _len, _ref, _results; - _ref = this.listeners; - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - elementListeners = _ref[_i]; - _results.push((function() { - var _ref1, _results1; - _ref1 = elementListeners.events; - _results1 = []; - for (event in _ref1) { - listener = _ref1[event]; - _results1.push(elementListeners.element.removeEventListener(event, listener, false)); - } - return _results1; - })()); - } - return _results; - }; - - Dropzone.prototype.disable = function() { - var file, _i, _len, _ref, _results; - this.clickableElements.forEach(function(element) { - return element.classList.remove("dz-clickable"); - }); - this.removeEventListeners(); - _ref = this.files; - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - file = _ref[_i]; - _results.push(this.cancelUpload(file)); - } - return _results; - }; - - Dropzone.prototype.enable = function() { - this.clickableElements.forEach(function(element) { - return element.classList.add("dz-clickable"); - }); - return this.setupEventListeners(); - }; - - Dropzone.prototype.filesize = function(size) { - var cutoff, i, selectedSize, selectedUnit, unit, units, _i, _len; - selectedSize = 0; - selectedUnit = "b"; - if (size > 0) { - units = ['TB', 'GB', 'MB', 'KB', 'b']; - for (i = _i = 0, _len = units.length; _i < _len; i = ++_i) { - unit = units[i]; - cutoff = Math.pow(this.options.filesizeBase, 4 - i) / 10; - if (size >= cutoff) { - selectedSize = size / Math.pow(this.options.filesizeBase, 4 - i); - selectedUnit = unit; - break; - } - } - selectedSize = Math.round(10 * selectedSize) / 10; - } - return "" + selectedSize + " " + selectedUnit; - }; - - Dropzone.prototype._updateMaxFilesReachedClass = function() { - if ((this.options.maxFiles != null) && this.getAcceptedFiles().length >= this.options.maxFiles) { - if (this.getAcceptedFiles().length === this.options.maxFiles) { - this.emit('maxfilesreached', this.files); - } - return this.element.classList.add("dz-max-files-reached"); - } else { - return this.element.classList.remove("dz-max-files-reached"); - } - }; - - Dropzone.prototype.drop = function(e) { - var files, items; - if (!e.dataTransfer) { - return; - } - this.emit("drop", e); - files = e.dataTransfer.files; - this.emit("addedfiles", files); - if (files.length) { - items = e.dataTransfer.items; - if (items && items.length && (items[0].webkitGetAsEntry != null)) { - this._addFilesFromItems(items); - } else { - this.handleFiles(files); - } - } - }; - - Dropzone.prototype.paste = function(e) { - var items, _ref; - if ((e != null ? (_ref = e.clipboardData) != null ? _ref.items : void 0 : void 0) == null) { - return; - } - this.emit("paste", e); - items = e.clipboardData.items; - if (items.length) { - return this._addFilesFromItems(items); - } - }; - - Dropzone.prototype.handleFiles = function(files) { - var file, _i, _len, _results; - _results = []; - for (_i = 0, _len = files.length; _i < _len; _i++) { - file = files[_i]; - _results.push(this.addFile(file)); - } - return _results; - }; - - Dropzone.prototype._addFilesFromItems = function(items) { - var entry, item, _i, _len, _results; - _results = []; - for (_i = 0, _len = items.length; _i < _len; _i++) { - item = items[_i]; - if ((item.webkitGetAsEntry != null) && (entry = item.webkitGetAsEntry())) { - if (entry.isFile) { - _results.push(this.addFile(item.getAsFile())); - } else if (entry.isDirectory) { - _results.push(this._addFilesFromDirectory(entry, entry.name)); - } else { - _results.push(void 0); - } - } else if (item.getAsFile != null) { - if ((item.kind == null) || item.kind === "file") { - _results.push(this.addFile(item.getAsFile())); - } else { - _results.push(void 0); - } - } else { - _results.push(void 0); - } - } - return _results; - }; - - Dropzone.prototype._addFilesFromDirectory = function(directory, path) { - var dirReader, entriesReader; - dirReader = directory.createReader(); - entriesReader = (function(_this) { - return function(entries) { - var entry, _i, _len; - for (_i = 0, _len = entries.length; _i < _len; _i++) { - entry = entries[_i]; - if (entry.isFile) { - entry.file(function(file) { - if (_this.options.ignoreHiddenFiles && file.name.substring(0, 1) === '.') { - return; - } - file.fullPath = "" + path + "/" + file.name; - return _this.addFile(file); - }); - } else if (entry.isDirectory) { - _this._addFilesFromDirectory(entry, "" + path + "/" + entry.name); - } - } - }; - })(this); - return dirReader.readEntries(entriesReader, function(error) { - return typeof console !== "undefined" && console !== null ? typeof console.log === "function" ? console.log(error) : void 0 : void 0; - }); - }; - - Dropzone.prototype.accept = function(file, done) { - if (file.size > this.options.maxFilesize * 1024 * 1024) { - return done(this.options.dictFileTooBig.replace("{{filesize}}", Math.round(file.size / 1024 / 10.24) / 100).replace("{{maxFilesize}}", this.options.maxFilesize)); - } else if (!Dropzone.isValidFile(file, this.options.acceptedFiles)) { - return done(this.options.dictInvalidFileType); - } else if ((this.options.maxFiles != null) && this.getAcceptedFiles().length >= this.options.maxFiles) { - done(this.options.dictMaxFilesExceeded.replace("{{maxFiles}}", this.options.maxFiles)); - return this.emit("maxfilesexceeded", file); - } else { - return this.options.accept.call(this, file, done); - } - }; - - Dropzone.prototype.addFile = function(file) { - file.upload = { - progress: 0, - total: file.size, - bytesSent: 0 - }; - this.files.push(file); - file.status = Dropzone.ADDED; - this.emit("addedfile", file); - this._enqueueThumbnail(file); - return this.accept(file, (function(_this) { - return function(error) { - if (error) { - file.accepted = false; - _this._errorProcessing([file], error); - } else { - file.accepted = true; - if (_this.options.autoQueue) { - _this.enqueueFile(file); - } - } - return _this._updateMaxFilesReachedClass(); - }; - })(this)); - }; - - Dropzone.prototype.enqueueFiles = function(files) { - var file, _i, _len; - for (_i = 0, _len = files.length; _i < _len; _i++) { - file = files[_i]; - this.enqueueFile(file); - } - return null; - }; - - Dropzone.prototype.enqueueFile = function(file) { - if (file.status === Dropzone.ADDED && file.accepted === true) { - file.status = Dropzone.QUEUED; - if (this.options.autoProcessQueue) { - return setTimeout(((function(_this) { - return function() { - return _this.processQueue(); - }; - })(this)), 0); - } - } else { - throw new Error("This file can't be queued because it has already been processed or was rejected."); - } - }; - - Dropzone.prototype._thumbnailQueue = []; - - Dropzone.prototype._processingThumbnail = false; - - Dropzone.prototype._enqueueThumbnail = function(file) { - if (this.options.createImageThumbnails && file.type.match(/image.*/) && file.size <= this.options.maxThumbnailFilesize * 1024 * 1024) { - this._thumbnailQueue.push(file); - return setTimeout(((function(_this) { - return function() { - return _this._processThumbnailQueue(); - }; - })(this)), 0); - } - }; - - Dropzone.prototype._processThumbnailQueue = function() { - if (this._processingThumbnail || this._thumbnailQueue.length === 0) { - return; - } - this._processingThumbnail = true; - return this.createThumbnail(this._thumbnailQueue.shift(), (function(_this) { - return function() { - _this._processingThumbnail = false; - return _this._processThumbnailQueue(); - }; - })(this)); - }; - - Dropzone.prototype.removeFile = function(file) { - if (file.status === Dropzone.UPLOADING) { - this.cancelUpload(file); - } - this.files = without(this.files, file); - this.emit("removedfile", file); - if (this.files.length === 0) { - return this.emit("reset"); - } - }; - - Dropzone.prototype.removeAllFiles = function(cancelIfNecessary) { - var file, _i, _len, _ref; - if (cancelIfNecessary == null) { - cancelIfNecessary = false; - } - _ref = this.files.slice(); - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - file = _ref[_i]; - if (file.status !== Dropzone.UPLOADING || cancelIfNecessary) { - this.removeFile(file); - } - } - return null; - }; - - Dropzone.prototype.createThumbnail = function(file, callback) { - var fileReader; - fileReader = new FileReader; - fileReader.onload = (function(_this) { - return function() { - if (file.type === "image/svg+xml") { - _this.emit("thumbnail", file, fileReader.result); - if (callback != null) { - callback(); - } - return; - } - return _this.createThumbnailFromUrl(file, fileReader.result, callback); - }; - })(this); - return fileReader.readAsDataURL(file); - }; - - Dropzone.prototype.createThumbnailFromUrl = function(file, imageUrl, callback, crossOrigin) { - var img; - img = document.createElement("img"); - if (crossOrigin) { - img.crossOrigin = crossOrigin; - } - img.onload = (function(_this) { - return function() { - var canvas, ctx, resizeInfo, thumbnail, _ref, _ref1, _ref2, _ref3; - file.width = img.width; - file.height = img.height; - resizeInfo = _this.options.resize.call(_this, file); - if (resizeInfo.trgWidth == null) { - resizeInfo.trgWidth = resizeInfo.optWidth; - } - if (resizeInfo.trgHeight == null) { - resizeInfo.trgHeight = resizeInfo.optHeight; - } - canvas = document.createElement("canvas"); - ctx = canvas.getContext("2d"); - canvas.width = resizeInfo.trgWidth; - canvas.height = resizeInfo.trgHeight; - drawImageIOSFix(ctx, img, (_ref = resizeInfo.srcX) != null ? _ref : 0, (_ref1 = resizeInfo.srcY) != null ? _ref1 : 0, resizeInfo.srcWidth, resizeInfo.srcHeight, (_ref2 = resizeInfo.trgX) != null ? _ref2 : 0, (_ref3 = resizeInfo.trgY) != null ? _ref3 : 0, resizeInfo.trgWidth, resizeInfo.trgHeight); - thumbnail = canvas.toDataURL("image/png"); - _this.emit("thumbnail", file, thumbnail); - if (callback != null) { - return callback(); - } - }; - })(this); - if (callback != null) { - img.onerror = callback; - } - return img.src = imageUrl; - }; - - Dropzone.prototype.processQueue = function() { - var i, parallelUploads, processingLength, queuedFiles; - parallelUploads = this.options.parallelUploads; - processingLength = this.getUploadingFiles().length; - i = processingLength; - if (processingLength >= parallelUploads) { - return; - } - queuedFiles = this.getQueuedFiles(); - if (!(queuedFiles.length > 0)) { - return; - } - if (this.options.uploadMultiple) { - return this.processFiles(queuedFiles.slice(0, parallelUploads - processingLength)); - } else { - while (i < parallelUploads) { - if (!queuedFiles.length) { - return; - } - this.processFile(queuedFiles.shift()); - i++; - } - } - }; - - Dropzone.prototype.processFile = function(file) { - return this.processFiles([file]); - }; - - Dropzone.prototype.processFiles = function(files) { - var file, _i, _len; - for (_i = 0, _len = files.length; _i < _len; _i++) { - file = files[_i]; - file.processing = true; - file.status = Dropzone.UPLOADING; - this.emit("processing", file); - } - if (this.options.uploadMultiple) { - this.emit("processingmultiple", files); - } - return this.uploadFiles(files); - }; - - Dropzone.prototype._getFilesWithXhr = function(xhr) { - var file, files; - return files = (function() { - var _i, _len, _ref, _results; - _ref = this.files; - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - file = _ref[_i]; - if (file.xhr === xhr) { - _results.push(file); - } - } - return _results; - }).call(this); - }; - - Dropzone.prototype.cancelUpload = function(file) { - var groupedFile, groupedFiles, _i, _j, _len, _len1, _ref; - if (file.status === Dropzone.UPLOADING) { - groupedFiles = this._getFilesWithXhr(file.xhr); - for (_i = 0, _len = groupedFiles.length; _i < _len; _i++) { - groupedFile = groupedFiles[_i]; - groupedFile.status = Dropzone.CANCELED; - } - file.xhr.abort(); - for (_j = 0, _len1 = groupedFiles.length; _j < _len1; _j++) { - groupedFile = groupedFiles[_j]; - this.emit("canceled", groupedFile); - } - if (this.options.uploadMultiple) { - this.emit("canceledmultiple", groupedFiles); - } - } else if ((_ref = file.status) === Dropzone.ADDED || _ref === Dropzone.QUEUED) { - file.status = Dropzone.CANCELED; - this.emit("canceled", file); - if (this.options.uploadMultiple) { - this.emit("canceledmultiple", [file]); - } - } - if (this.options.autoProcessQueue) { - return this.processQueue(); - } - }; - - resolveOption = function() { - var args, option; - option = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : []; - if (typeof option === 'function') { - return option.apply(this, args); - } - return option; - }; - - Dropzone.prototype.uploadFile = function(file) { - return this.uploadFiles([file]); - }; - - Dropzone.prototype.uploadFiles = function(files) { - var file, formData, handleError, headerName, headerValue, headers, i, input, inputName, inputType, key, method, option, progressObj, response, updateProgress, url, value, xhr, _i, _j, _k, _l, _len, _len1, _len2, _len3, _m, _ref, _ref1, _ref2, _ref3, _ref4, _ref5; - xhr = new XMLHttpRequest(); - for (_i = 0, _len = files.length; _i < _len; _i++) { - file = files[_i]; - file.xhr = xhr; - } - method = resolveOption(this.options.method, files); - url = resolveOption(this.options.url, files); - xhr.open(method, url, true); - xhr.withCredentials = !!this.options.withCredentials; - response = null; - handleError = (function(_this) { - return function() { - var _j, _len1, _results; - _results = []; - for (_j = 0, _len1 = files.length; _j < _len1; _j++) { - file = files[_j]; - _results.push(_this._errorProcessing(files, response || _this.options.dictResponseError.replace("{{statusCode}}", xhr.status), xhr)); - } - return _results; - }; - })(this); - updateProgress = (function(_this) { - return function(e) { - var allFilesFinished, progress, _j, _k, _l, _len1, _len2, _len3, _results; - if (e != null) { - progress = 100 * e.loaded / e.total; - for (_j = 0, _len1 = files.length; _j < _len1; _j++) { - file = files[_j]; - file.upload = { - progress: progress, - total: e.total, - bytesSent: e.loaded - }; - } - } else { - allFilesFinished = true; - progress = 100; - for (_k = 0, _len2 = files.length; _k < _len2; _k++) { - file = files[_k]; - if (!(file.upload.progress === 100 && file.upload.bytesSent === file.upload.total)) { - allFilesFinished = false; - } - file.upload.progress = progress; - file.upload.bytesSent = file.upload.total; - } - if (allFilesFinished) { - return; - } - } - _results = []; - for (_l = 0, _len3 = files.length; _l < _len3; _l++) { - file = files[_l]; - _results.push(_this.emit("uploadprogress", file, progress, file.upload.bytesSent)); - } - return _results; - }; - })(this); - xhr.onload = (function(_this) { - return function(e) { - var _ref; - if (files[0].status === Dropzone.CANCELED) { - return; - } - if (xhr.readyState !== 4) { - return; - } - response = xhr.responseText; - if (xhr.getResponseHeader("content-type") && ~xhr.getResponseHeader("content-type").indexOf("application/json")) { - try { - response = JSON.parse(response); - } catch (_error) { - e = _error; - response = "Invalid JSON response from server."; - } - } - updateProgress(); - if (!((200 <= (_ref = xhr.status) && _ref < 300))) { - return handleError(); - } else { - return _this._finished(files, response, e); - } - }; - })(this); - xhr.onerror = (function(_this) { - return function() { - if (files[0].status === Dropzone.CANCELED) { - return; - } - return handleError(); - }; - })(this); - progressObj = (_ref = xhr.upload) != null ? _ref : xhr; - progressObj.onprogress = updateProgress; - headers = { - "Accept": "application/json", - "Cache-Control": "no-cache", - "X-Requested-With": "XMLHttpRequest" - }; - if (this.options.headers) { - extend(headers, this.options.headers); - } - for (headerName in headers) { - headerValue = headers[headerName]; - if (headerValue) { - xhr.setRequestHeader(headerName, headerValue); - } - } - formData = new FormData(); - if (this.options.params) { - _ref1 = this.options.params; - for (key in _ref1) { - value = _ref1[key]; - formData.append(key, value); - } - } - for (_j = 0, _len1 = files.length; _j < _len1; _j++) { - file = files[_j]; - this.emit("sending", file, xhr, formData); - } - if (this.options.uploadMultiple) { - this.emit("sendingmultiple", files, xhr, formData); - } - if (this.element.tagName === "FORM") { - _ref2 = this.element.querySelectorAll("input, textarea, select, button"); - for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) { - input = _ref2[_k]; - inputName = input.getAttribute("name"); - inputType = input.getAttribute("type"); - if (input.tagName === "SELECT" && input.hasAttribute("multiple")) { - _ref3 = input.options; - for (_l = 0, _len3 = _ref3.length; _l < _len3; _l++) { - option = _ref3[_l]; - if (option.selected) { - formData.append(inputName, option.value); - } - } - } else if (!inputType || ((_ref4 = inputType.toLowerCase()) !== "checkbox" && _ref4 !== "radio") || input.checked) { - formData.append(inputName, input.value); - } - } - } - for (i = _m = 0, _ref5 = files.length - 1; 0 <= _ref5 ? _m <= _ref5 : _m >= _ref5; i = 0 <= _ref5 ? ++_m : --_m) { - formData.append(this._getParamName(i), files[i], files[i].name); - } - return this.submitRequest(xhr, formData, files); - }; - - Dropzone.prototype.submitRequest = function(xhr, formData, files) { - return xhr.send(formData); - }; - - Dropzone.prototype._finished = function(files, responseText, e) { - var file, _i, _len; - for (_i = 0, _len = files.length; _i < _len; _i++) { - file = files[_i]; - file.status = Dropzone.SUCCESS; - this.emit("success", file, responseText, e); - this.emit("complete", file); - } - if (this.options.uploadMultiple) { - this.emit("successmultiple", files, responseText, e); - this.emit("completemultiple", files); - } - if (this.options.autoProcessQueue) { - return this.processQueue(); - } - }; - - Dropzone.prototype._errorProcessing = function(files, message, xhr) { - var file, _i, _len; - for (_i = 0, _len = files.length; _i < _len; _i++) { - file = files[_i]; - file.status = Dropzone.ERROR; - this.emit("error", file, message, xhr); - this.emit("complete", file); - } - if (this.options.uploadMultiple) { - this.emit("errormultiple", files, message, xhr); - this.emit("completemultiple", files); - } - if (this.options.autoProcessQueue) { - return this.processQueue(); - } - }; - - return Dropzone; - - })(Emitter); - - Dropzone.version = "4.2.0"; - - Dropzone.options = {}; - - Dropzone.optionsForElement = function(element) { - if (element.getAttribute("id")) { - return Dropzone.options[camelize(element.getAttribute("id"))]; - } else { - return void 0; - } - }; - - Dropzone.instances = []; - - Dropzone.forElement = function(element) { - if (typeof element === "string") { - element = document.querySelector(element); - } - if ((element != null ? element.dropzone : void 0) == null) { - throw new Error("No Dropzone found for given element. This is probably because you're trying to access it before Dropzone had the time to initialize. Use the `init` option to setup any additional observers on your Dropzone."); - } - return element.dropzone; - }; - - Dropzone.autoDiscover = true; - - Dropzone.discover = function() { - var checkElements, dropzone, dropzones, _i, _len, _results; - if (document.querySelectorAll) { - dropzones = document.querySelectorAll(".dropzone"); - } else { - dropzones = []; - checkElements = function(elements) { - var el, _i, _len, _results; - _results = []; - for (_i = 0, _len = elements.length; _i < _len; _i++) { - el = elements[_i]; - if (/(^| )dropzone($| )/.test(el.className)) { - _results.push(dropzones.push(el)); - } else { - _results.push(void 0); - } - } - return _results; - }; - checkElements(document.getElementsByTagName("div")); - checkElements(document.getElementsByTagName("form")); - } - _results = []; - for (_i = 0, _len = dropzones.length; _i < _len; _i++) { - dropzone = dropzones[_i]; - if (Dropzone.optionsForElement(dropzone) !== false) { - _results.push(new Dropzone(dropzone)); - } else { - _results.push(void 0); - } - } - return _results; - }; - - Dropzone.blacklistedBrowsers = [/opera.*Macintosh.*version\/12/i]; - - Dropzone.isBrowserSupported = function() { - var capableBrowser, regex, _i, _len, _ref; - capableBrowser = true; - if (window.File && window.FileReader && window.FileList && window.Blob && window.FormData && document.querySelector) { - if (!("classList" in document.createElement("a"))) { - capableBrowser = false; - } else { - _ref = Dropzone.blacklistedBrowsers; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - regex = _ref[_i]; - if (regex.test(navigator.userAgent)) { - capableBrowser = false; - continue; - } - } - } - } else { - capableBrowser = false; - } - return capableBrowser; - }; - - without = function(list, rejectedItem) { - var item, _i, _len, _results; - _results = []; - for (_i = 0, _len = list.length; _i < _len; _i++) { - item = list[_i]; - if (item !== rejectedItem) { - _results.push(item); - } - } - return _results; - }; - - camelize = function(str) { - return str.replace(/[\-_](\w)/g, function(match) { - return match.charAt(1).toUpperCase(); - }); - }; - - Dropzone.createElement = function(string) { - var div; - div = document.createElement("div"); - div.innerHTML = string; - return div.childNodes[0]; - }; - - Dropzone.elementInside = function(element, container) { - if (element === container) { - return true; - } - while (element = element.parentNode) { - if (element === container) { - return true; - } - } - return false; - }; - - Dropzone.getElement = function(el, name) { - var element; - if (typeof el === "string") { - element = document.querySelector(el); - } else if (el.nodeType != null) { - element = el; - } - if (element == null) { - throw new Error("Invalid `" + name + "` option provided. Please provide a CSS selector or a plain HTML element."); - } - return element; - }; - - Dropzone.getElements = function(els, name) { - var e, el, elements, _i, _j, _len, _len1, _ref; - if (els instanceof Array) { - elements = []; - try { - for (_i = 0, _len = els.length; _i < _len; _i++) { - el = els[_i]; - elements.push(this.getElement(el, name)); - } - } catch (_error) { - e = _error; - elements = null; - } - } else if (typeof els === "string") { - elements = []; - _ref = document.querySelectorAll(els); - for (_j = 0, _len1 = _ref.length; _j < _len1; _j++) { - el = _ref[_j]; - elements.push(el); - } - } else if (els.nodeType != null) { - elements = [els]; - } - if (!((elements != null) && elements.length)) { - throw new Error("Invalid `" + name + "` option provided. Please provide a CSS selector, a plain HTML element or a list of those."); - } - return elements; - }; - - Dropzone.confirm = function(question, accepted, rejected) { - if (window.confirm(question)) { - return accepted(); - } else if (rejected != null) { - return rejected(); - } - }; - - Dropzone.isValidFile = function(file, acceptedFiles) { - var baseMimeType, mimeType, validType, _i, _len; - if (!acceptedFiles) { - return true; - } - acceptedFiles = acceptedFiles.split(","); - mimeType = file.type; - baseMimeType = mimeType.replace(/\/.*$/, ""); - for (_i = 0, _len = acceptedFiles.length; _i < _len; _i++) { - validType = acceptedFiles[_i]; - validType = validType.trim(); - if (validType.charAt(0) === ".") { - if (file.name.toLowerCase().indexOf(validType.toLowerCase(), file.name.length - validType.length) !== -1) { - return true; - } - } else if (/\/\*$/.test(validType)) { - if (baseMimeType === validType.replace(/\/.*$/, "")) { - return true; - } - } else { - if (mimeType === validType) { - return true; - } - } - } - return false; - }; - - if (typeof jQuery !== "undefined" && jQuery !== null) { - jQuery.fn.dropzone = function(options) { - return this.each(function() { - return new Dropzone(this, options); - }); - }; - } - - if (typeof module !== "undefined" && module !== null) { - module.exports = Dropzone; - } else { - window.Dropzone = Dropzone; - } - - Dropzone.ADDED = "added"; - - Dropzone.QUEUED = "queued"; - - Dropzone.ACCEPTED = Dropzone.QUEUED; - - Dropzone.UPLOADING = "uploading"; - - Dropzone.PROCESSING = Dropzone.UPLOADING; - - Dropzone.CANCELED = "canceled"; - - Dropzone.ERROR = "error"; - - Dropzone.SUCCESS = "success"; - - - /* - - Bugfix for iOS 6 and 7 - Source: http://stackoverflow.com/questions/11929099/html5-canvas-drawimage-ratio-bug-ios - based on the work of https://github.com/stomita/ios-imagefile-megapixel - */ - - detectVerticalSquash = function(img) { - var alpha, canvas, ctx, data, ey, ih, iw, py, ratio, sy; - iw = img.naturalWidth; - ih = img.naturalHeight; - canvas = document.createElement("canvas"); - canvas.width = 1; - canvas.height = ih; - ctx = canvas.getContext("2d"); - ctx.drawImage(img, 0, 0); - data = ctx.getImageData(0, 0, 1, ih).data; - sy = 0; - ey = ih; - py = ih; - while (py > sy) { - alpha = data[(py - 1) * 4 + 3]; - if (alpha === 0) { - ey = py; - } else { - sy = py; - } - py = (ey + sy) >> 1; - } - ratio = py / ih; - if (ratio === 0) { - return 1; - } else { - return ratio; - } - }; - - drawImageIOSFix = function(ctx, img, sx, sy, sw, sh, dx, dy, dw, dh) { - var vertSquashRatio; - vertSquashRatio = detectVerticalSquash(img); - return ctx.drawImage(img, sx, sy, sw, sh, dx, dy, dw, dh / vertSquashRatio); - }; - - - /* - * contentloaded.js - * - * Author: Diego Perini (diego.perini at gmail.com) - * Summary: cross-browser wrapper for DOMContentLoaded - * Updated: 20101020 - * License: MIT - * Version: 1.2 - * - * URL: - * http://javascript.nwbox.com/ContentLoaded/ - * http://javascript.nwbox.com/ContentLoaded/MIT-LICENSE - */ - - contentLoaded = function(win, fn) { - var add, doc, done, init, poll, pre, rem, root, top; - done = false; - top = true; - doc = win.document; - root = doc.documentElement; - add = (doc.addEventListener ? "addEventListener" : "attachEvent"); - rem = (doc.addEventListener ? "removeEventListener" : "detachEvent"); - pre = (doc.addEventListener ? "" : "on"); - init = function(e) { - if (e.type === "readystatechange" && doc.readyState !== "complete") { - return; - } - (e.type === "load" ? win : doc)[rem](pre + e.type, init, false); - if (!done && (done = true)) { - return fn.call(win, e.type || e); - } - }; - poll = function() { - var e; - try { - root.doScroll("left"); - } catch (_error) { - e = _error; - setTimeout(poll, 50); - return; - } - return init("poll"); - }; - if (doc.readyState !== "complete") { - if (doc.createEventObject && root.doScroll) { - try { - top = !win.frameElement; - } catch (_error) {} - if (top) { - poll(); - } - } - doc[add](pre + "DOMContentLoaded", init, false); - doc[add](pre + "readystatechange", init, false); - return win[add](pre + "load", init, false); - } - }; - - Dropzone._autoDiscoverFunction = function() { - if (Dropzone.autoDiscover) { - return Dropzone.discover(); - } - }; - - contentLoaded(window, Dropzone._autoDiscoverFunction); - -}).call(this); diff --git a/public/plugins/highlight-9.6.0/default.css b/public/plugins/highlight-9.6.0/default.css deleted file mode 100644 index f1bfade31..000000000 --- a/public/plugins/highlight-9.6.0/default.css +++ /dev/null @@ -1,99 +0,0 @@ -/* - -Original highlight.js style (c) Ivan Sagalaev - -*/ - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - background: #F0F0F0; -} - - -/* Base color: saturation 0; */ - -.hljs, -.hljs-subst { - color: #444; -} - -.hljs-comment { - color: #888888; -} - -.hljs-keyword, -.hljs-attribute, -.hljs-selector-tag, -.hljs-meta-keyword, -.hljs-doctag, -.hljs-name { - font-weight: bold; -} - - -/* User color: hue: 0 */ - -.hljs-type, -.hljs-string, -.hljs-number, -.hljs-selector-id, -.hljs-selector-class, -.hljs-quote, -.hljs-template-tag, -.hljs-deletion { - color: #880000; -} - -.hljs-title, -.hljs-section { - color: #880000; - font-weight: bold; -} - -.hljs-regexp, -.hljs-symbol, -.hljs-variable, -.hljs-template-variable, -.hljs-link, -.hljs-selector-attr, -.hljs-selector-pseudo { - color: #BC6060; -} - - -/* Language color: hue: 90; */ - -.hljs-literal { - color: #78A960; -} - -.hljs-built_in, -.hljs-bullet, -.hljs-code, -.hljs-addition { - color: #397300; -} - - -/* Meta color: hue: 200 */ - -.hljs-meta { - color: #1f7199; -} - -.hljs-meta-string { - color: #4d99bf; -} - - -/* Misc effects */ - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/public/plugins/highlight-9.6.0/github.css b/public/plugins/highlight-9.6.0/github.css deleted file mode 100644 index 791932b87..000000000 --- a/public/plugins/highlight-9.6.0/github.css +++ /dev/null @@ -1,99 +0,0 @@ -/* - -github.com style (c) Vasily Polovnyov - -*/ - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - color: #333; - background: #f8f8f8; -} - -.hljs-comment, -.hljs-quote { - color: #998; - font-style: italic; -} - -.hljs-keyword, -.hljs-selector-tag, -.hljs-subst { - color: #333; - font-weight: bold; -} - -.hljs-number, -.hljs-literal, -.hljs-variable, -.hljs-template-variable, -.hljs-tag .hljs-attr { - color: #008080; -} - -.hljs-string, -.hljs-doctag { - color: #d14; -} - -.hljs-title, -.hljs-section, -.hljs-selector-id { - color: #900; - font-weight: bold; -} - -.hljs-subst { - font-weight: normal; -} - -.hljs-type, -.hljs-class .hljs-title { - color: #458; - font-weight: bold; -} - -.hljs-tag, -.hljs-name, -.hljs-attribute { - color: #000080; - font-weight: normal; -} - -.hljs-regexp, -.hljs-link { - color: #009926; -} - -.hljs-symbol, -.hljs-bullet { - color: #990073; -} - -.hljs-built_in, -.hljs-builtin-name { - color: #0086b3; -} - -.hljs-meta { - color: #999; - font-weight: bold; -} - -.hljs-deletion { - background: #fdd; -} - -.hljs-addition { - background: #dfd; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/public/plugins/highlight-9.6.0/highlight.pack.js b/public/plugins/highlight-9.6.0/highlight.pack.js deleted file mode 100644 index 962b62822..000000000 --- a/public/plugins/highlight-9.6.0/highlight.pack.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! highlight.js v9.6.0 | BSD3 License | git.io/hljslicense */ -!function(e){var n="object"==typeof window&&window||"object"==typeof self&&self;"undefined"!=typeof exports?e(exports):n&&(n.hljs=e({}),"function"==typeof define&&define.amd&&define([],function(){return n.hljs}))}(function(e){function n(e){return e.replace(/[&<>]/gm,function(e){return I[e]})}function t(e){return e.nodeName.toLowerCase()}function r(e,n){var t=e&&e.exec(n);return t&&0===t.index}function a(e){return k.test(e)}function i(e){var n,t,r,i,o=e.className+" ";if(o+=e.parentNode?e.parentNode.className:"",t=B.exec(o))return R(t[1])?t[1]:"no-highlight";for(o=o.split(/\s+/),n=0,r=o.length;r>n;n++)if(i=o[n],a(i)||R(i))return i}function o(e,n){var t,r={};for(t in e)r[t]=e[t];if(n)for(t in n)r[t]=n[t];return r}function u(e){var n=[];return function r(e,a){for(var i=e.firstChild;i;i=i.nextSibling)3===i.nodeType?a+=i.nodeValue.length:1===i.nodeType&&(n.push({event:"start",offset:a,node:i}),a=r(i,a),t(i).match(/br|hr|img|input/)||n.push({event:"stop",offset:a,node:i}));return a}(e,0),n}function c(e,r,a){function i(){return e.length&&r.length?e[0].offset!==r[0].offset?e[0].offset"}function u(e){l+=""}function c(e){("start"===e.event?o:u)(e.node)}for(var s=0,l="",f=[];e.length||r.length;){var g=i();if(l+=n(a.substr(s,g[0].offset-s)),s=g[0].offset,g===e){f.reverse().forEach(u);do c(g.splice(0,1)[0]),g=i();while(g===e&&g.length&&g[0].offset===s);f.reverse().forEach(o)}else"start"===g[0].event?f.push(g[0].node):f.pop(),c(g.splice(0,1)[0])}return l+n(a.substr(s))}function s(e){function n(e){return e&&e.source||e}function t(t,r){return new RegExp(n(t),"m"+(e.cI?"i":"")+(r?"g":""))}function r(a,i){if(!a.compiled){if(a.compiled=!0,a.k=a.k||a.bK,a.k){var u={},c=function(n,t){e.cI&&(t=t.toLowerCase()),t.split(" ").forEach(function(e){var t=e.split("|");u[t[0]]=[n,t[1]?Number(t[1]):1]})};"string"==typeof a.k?c("keyword",a.k):E(a.k).forEach(function(e){c(e,a.k[e])}),a.k=u}a.lR=t(a.l||/\w+/,!0),i&&(a.bK&&(a.b="\\b("+a.bK.split(" ").join("|")+")\\b"),a.b||(a.b=/\B|\b/),a.bR=t(a.b),a.e||a.eW||(a.e=/\B|\b/),a.e&&(a.eR=t(a.e)),a.tE=n(a.e)||"",a.eW&&i.tE&&(a.tE+=(a.e?"|":"")+i.tE)),a.i&&(a.iR=t(a.i)),null==a.r&&(a.r=1),a.c||(a.c=[]);var s=[];a.c.forEach(function(e){e.v?e.v.forEach(function(n){s.push(o(e,n))}):s.push("self"===e?a:e)}),a.c=s,a.c.forEach(function(e){r(e,a)}),a.starts&&r(a.starts,i);var l=a.c.map(function(e){return e.bK?"\\.?("+e.b+")\\.?":e.b}).concat([a.tE,a.i]).map(n).filter(Boolean);a.t=l.length?t(l.join("|"),!0):{exec:function(){return null}}}}r(e)}function l(e,t,a,i){function o(e,n){var t,a;for(t=0,a=n.c.length;a>t;t++)if(r(n.c[t].bR,e))return n.c[t]}function u(e,n){if(r(e.eR,n)){for(;e.endsParent&&e.parent;)e=e.parent;return e}return e.eW?u(e.parent,n):void 0}function c(e,n){return!a&&r(n.iR,e)}function g(e,n){var t=N.cI?n[0].toLowerCase():n[0];return e.k.hasOwnProperty(t)&&e.k[t]}function h(e,n,t,r){var a=r?"":y.classPrefix,i='',i+n+o}function p(){var e,t,r,a;if(!E.k)return n(B);for(a="",t=0,E.lR.lastIndex=0,r=E.lR.exec(B);r;)a+=n(B.substr(t,r.index-t)),e=g(E,r),e?(M+=e[1],a+=h(e[0],n(r[0]))):a+=n(r[0]),t=E.lR.lastIndex,r=E.lR.exec(B);return a+n(B.substr(t))}function d(){var e="string"==typeof E.sL;if(e&&!x[E.sL])return n(B);var t=e?l(E.sL,B,!0,L[E.sL]):f(B,E.sL.length?E.sL:void 0);return E.r>0&&(M+=t.r),e&&(L[E.sL]=t.top),h(t.language,t.value,!1,!0)}function b(){k+=null!=E.sL?d():p(),B=""}function v(e){k+=e.cN?h(e.cN,"",!0):"",E=Object.create(e,{parent:{value:E}})}function m(e,n){if(B+=e,null==n)return b(),0;var t=o(n,E);if(t)return t.skip?B+=n:(t.eB&&(B+=n),b(),t.rB||t.eB||(B=n)),v(t,n),t.rB?0:n.length;var r=u(E,n);if(r){var a=E;a.skip?B+=n:(a.rE||a.eE||(B+=n),b(),a.eE&&(B=n));do E.cN&&(k+=C),E.skip||(M+=E.r),E=E.parent;while(E!==r.parent);return r.starts&&v(r.starts,""),a.rE?0:n.length}if(c(n,E))throw new Error('Illegal lexeme "'+n+'" for mode "'+(E.cN||"")+'"');return B+=n,n.length||1}var N=R(e);if(!N)throw new Error('Unknown language: "'+e+'"');s(N);var w,E=i||N,L={},k="";for(w=E;w!==N;w=w.parent)w.cN&&(k=h(w.cN,"",!0)+k);var B="",M=0;try{for(var I,j,O=0;;){if(E.t.lastIndex=O,I=E.t.exec(t),!I)break;j=m(t.substr(O,I.index-O),I[0]),O=I.index+j}for(m(t.substr(O)),w=E;w.parent;w=w.parent)w.cN&&(k+=C);return{r:M,value:k,language:e,top:E}}catch(T){if(T.message&&-1!==T.message.indexOf("Illegal"))return{r:0,value:n(t)};throw T}}function f(e,t){t=t||y.languages||E(x);var r={r:0,value:n(e)},a=r;return t.filter(R).forEach(function(n){var t=l(n,e,!1);t.language=n,t.r>a.r&&(a=t),t.r>r.r&&(a=r,r=t)}),a.language&&(r.second_best=a),r}function g(e){return y.tabReplace||y.useBR?e.replace(M,function(e,n){return y.useBR&&"\n"===e?"
    ":y.tabReplace?n.replace(/\t/g,y.tabReplace):void 0}):e}function h(e,n,t){var r=n?L[n]:t,a=[e.trim()];return e.match(/\bhljs\b/)||a.push("hljs"),-1===e.indexOf(r)&&a.push(r),a.join(" ").trim()}function p(e){var n,t,r,o,s,p=i(e);a(p)||(y.useBR?(n=document.createElementNS("http://www.w3.org/1999/xhtml","div"),n.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")):n=e,s=n.textContent,r=p?l(p,s,!0):f(s),t=u(n),t.length&&(o=document.createElementNS("http://www.w3.org/1999/xhtml","div"),o.innerHTML=r.value,r.value=c(t,u(o),s)),r.value=g(r.value),e.innerHTML=r.value,e.className=h(e.className,p,r.language),e.result={language:r.language,re:r.r},r.second_best&&(e.second_best={language:r.second_best.language,re:r.second_best.r}))}function d(e){y=o(y,e)}function b(){if(!b.called){b.called=!0;var e=document.querySelectorAll("pre code");w.forEach.call(e,p)}}function v(){addEventListener("DOMContentLoaded",b,!1),addEventListener("load",b,!1)}function m(n,t){var r=x[n]=t(e);r.aliases&&r.aliases.forEach(function(e){L[e]=n})}function N(){return E(x)}function R(e){return e=(e||"").toLowerCase(),x[e]||x[L[e]]}var w=[],E=Object.keys,x={},L={},k=/^(no-?highlight|plain|text)$/i,B=/\blang(?:uage)?-([\w-]+)\b/i,M=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,C="
    ",y={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0},I={"&":"&","<":"<",">":">"};return e.highlight=l,e.highlightAuto=f,e.fixMarkup=g,e.highlightBlock=p,e.configure=d,e.initHighlighting=b,e.initHighlightingOnLoad=v,e.registerLanguage=m,e.listLanguages=N,e.getLanguage=R,e.inherit=o,e.IR="[a-zA-Z]\\w*",e.UIR="[a-zA-Z_]\\w*",e.NR="\\b\\d+(\\.\\d+)?",e.CNR="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",e.BNR="\\b(0b[01]+)",e.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",e.BE={b:"\\\\[\\s\\S]",r:0},e.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[e.BE]},e.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[e.BE]},e.PWM={b:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|like)\b/},e.C=function(n,t,r){var a=e.inherit({cN:"comment",b:n,e:t,c:[]},r||{});return a.c.push(e.PWM),a.c.push({cN:"doctag",b:"(?:TODO|FIXME|NOTE|BUG|XXX):",r:0}),a},e.CLCM=e.C("//","$"),e.CBCM=e.C("/\\*","\\*/"),e.HCM=e.C("#","$"),e.NM={cN:"number",b:e.NR,r:0},e.CNM={cN:"number",b:e.CNR,r:0},e.BNM={cN:"number",b:e.BNR,r:0},e.CSSNM={cN:"number",b:e.NR+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",r:0},e.RM={cN:"regexp",b:/\//,e:/\/[gimuy]*/,i:/\n/,c:[e.BE,{b:/\[/,e:/\]/,r:0,c:[e.BE]}]},e.TM={cN:"title",b:e.IR,r:0},e.UTM={cN:"title",b:e.UIR,r:0},e.METHOD_GUARD={b:"\\.\\s*"+e.UIR,r:0},e});hljs.registerLanguage("http",function(e){var t="HTTP/[0-9\\.]+";return{aliases:["https"],i:"\\S",c:[{b:"^"+t,e:"$",c:[{cN:"number",b:"\\b\\d{3}\\b"}]},{b:"^[A-Z]+ (.*?) "+t+"$",rB:!0,e:"$",c:[{cN:"string",b:" ",e:" ",eB:!0,eE:!0},{b:t},{cN:"keyword",b:"[A-Z]+"}]},{cN:"attribute",b:"^\\w",e:": ",eE:!0,i:"\\n|\\s|=",starts:{e:"$",r:0}},{b:"\\n\\n",starts:{sL:[],eW:!0}}]}});hljs.registerLanguage("dns",function(d){return{aliases:["bind","zone"],k:{keyword:"IN A AAAA AFSDB APL CAA CDNSKEY CDS CERT CNAME DHCID DLV DNAME DNSKEY DS HIP IPSECKEY KEY KX LOC MX NAPTR NS NSEC NSEC3 NSEC3PARAM PTR RRSIG RP SIG SOA SRV SSHFP TA TKEY TLSA TSIG TXT"},c:[d.C(";","$",{r:0}),{cN:"meta",b:/^\$(TTL|GENERATE|INCLUDE|ORIGIN)\b/},{cN:"number",b:"((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))\\b"},{cN:"number",b:"((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]).){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\b"},d.inherit(d.NM,{b:/\b\d+[dhwm]?/})]}});hljs.registerLanguage("zephir",function(e){var i={cN:"string",c:[e.BE],v:[{b:'b"',e:'"'},{b:"b'",e:"'"},e.inherit(e.ASM,{i:null}),e.inherit(e.QSM,{i:null})]},n={v:[e.BNM,e.CNM]};return{aliases:["zep"],cI:!0,k:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var let while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally int uint long ulong char uchar double float bool boolean stringlikely unlikely",c:[e.CLCM,e.HCM,e.C("/\\*","\\*/",{c:[{cN:"doctag",b:"@[A-Za-z]+"}]}),e.C("__halt_compiler.+?;",!1,{eW:!0,k:"__halt_compiler",l:e.UIR}),{cN:"string",b:"<<<['\"]?\\w+['\"]?$",e:"^\\w+;",c:[e.BE]},{b:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{cN:"function",bK:"function",e:/[;{]/,eE:!0,i:"\\$|\\[|%",c:[e.UTM,{cN:"params",b:"\\(",e:"\\)",c:["self",e.CBCM,i,n]}]},{cN:"class",bK:"class interface",e:"{",eE:!0,i:/[:\(\$"]/,c:[{bK:"extends implements"},e.UTM]},{bK:"namespace",e:";",i:/[\.']/,c:[e.UTM]},{bK:"use",e:";",c:[e.UTM]},{b:"=>"},i,n]}});hljs.registerLanguage("cs",function(e){var i={keyword:"abstract as base bool break byte case catch char checked const continue decimal dynamic default delegate do double else enum event explicit extern finally fixed float for foreach goto if implicit in int interface internal is lock long when object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this try typeof uint ulong unchecked unsafe ushort using virtual volatile void while async nameof ascending descending from get group into join let orderby partial select set value var where yield",literal:"null false true"},r={cN:"string",b:'@"',e:'"',c:[{b:'""'}]},t=e.inherit(r,{i:/\n/}),n={cN:"subst",b:"{",e:"}",k:i},c=e.inherit(n,{i:/\n/}),a={cN:"string",b:/\$"/,e:'"',i:/\n/,c:[{b:"{{"},{b:"}}"},e.BE,c]},s={cN:"string",b:/\$@"/,e:'"',c:[{b:"{{"},{b:"}}"},{b:'""'},n]},o=e.inherit(s,{i:/\n/,c:[{b:"{{"},{b:"}}"},{b:'""'},c]});n.c=[s,a,r,e.ASM,e.QSM,e.CNM,e.CBCM],c.c=[o,a,t,e.ASM,e.QSM,e.CNM,e.inherit(e.CBCM,{i:/\n/})];var l={v:[s,a,r,e.ASM,e.QSM]},b=e.IR+"(<"+e.IR+">)?(\\[\\])?";return{aliases:["csharp"],k:i,i:/::/,c:[e.C("///","$",{rB:!0,c:[{cN:"doctag",v:[{b:"///",r:0},{b:""},{b:""}]}]}),e.CLCM,e.CBCM,{cN:"meta",b:"#",e:"$",k:{"meta-keyword":"if else elif endif define undef warning error line region endregion pragma checksum"}},l,e.CNM,{bK:"class interface",e:/[{;=]/,i:/[^\s:]/,c:[e.TM,e.CLCM,e.CBCM]},{bK:"namespace",e:/[{;=]/,i:/[^\s:]/,c:[e.inherit(e.TM,{b:"[a-zA-Z](\\.?\\w)*"}),e.CLCM,e.CBCM]},{bK:"new return throw await",r:0},{cN:"function",b:"("+b+"\\s+)+"+e.IR+"\\s*\\(",rB:!0,e:/[{;=]/,eE:!0,k:i,c:[{b:e.IR+"\\s*\\(",rB:!0,c:[e.TM],r:0},{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,k:i,r:0,c:[l,e.CNM,e.CBCM]},e.CLCM,e.CBCM]}]}});hljs.registerLanguage("basic",function(E){return{cI:!0,i:"^.",l:"[a-zA-Z][a-zA-Z0-9_$%!#]*",k:{keyword:"ABS ASC AND ATN AUTO|0 BEEP BLOAD|10 BSAVE|10 CALL CALLS CDBL CHAIN CHDIR CHR$|10 CINT CIRCLE CLEAR CLOSE CLS COLOR COM COMMON CONT COS CSNG CSRLIN CVD CVI CVS DATA DATE$ DEFDBL DEFINT DEFSNG DEFSTR DEF|0 SEG USR DELETE DIM DRAW EDIT END ENVIRON ENVIRON$ EOF EQV ERASE ERDEV ERDEV$ ERL ERR ERROR EXP FIELD FILES FIX FOR|0 FRE GET GOSUB|10 GOTO HEX$ IF|0 THEN ELSE|0 INKEY$ INP INPUT INPUT# INPUT$ INSTR IMP INT IOCTL IOCTL$ KEY ON OFF LIST KILL LEFT$ LEN LET LINE LLIST LOAD LOC LOCATE LOF LOG LPRINT USING LSET MERGE MID$ MKDIR MKD$ MKI$ MKS$ MOD NAME NEW NEXT NOISE NOT OCT$ ON OR PEN PLAY STRIG OPEN OPTION BASE OUT PAINT PALETTE PCOPY PEEK PMAP POINT POKE POS PRINT PRINT] PSET PRESET PUT RANDOMIZE READ REM RENUM RESET|0 RESTORE RESUME RETURN|0 RIGHT$ RMDIR RND RSET RUN SAVE SCREEN SGN SHELL SIN SOUND SPACE$ SPC SQR STEP STICK STOP STR$ STRING$ SWAP SYSTEM TAB TAN TIME$ TIMER TROFF TRON TO USR VAL VARPTR VARPTR$ VIEW WAIT WHILE WEND WIDTH WINDOW WRITE XOR"},c:[E.QSM,E.C("REM","$",{r:10}),E.C("'","$",{r:0}),{cN:"symbol",b:"^[0-9]+ ",r:10},{cN:"number",b:"\\b([0-9]+[0-9edED.]*[#!]?)",r:0},{cN:"number",b:"(&[hH][0-9a-fA-F]{1,4})"},{cN:"number",b:"(&[oO][0-7]{1,6})"}]}});hljs.registerLanguage("thrift",function(e){var t="bool byte i16 i32 i64 double string binary";return{k:{keyword:"namespace const typedef struct enum service exception void oneway set list map required optional",built_in:t,literal:"true false"},c:[e.QSM,e.NM,e.CLCM,e.CBCM,{cN:"class",bK:"struct enum service exception",e:/\{/,i:/\n/,c:[e.inherit(e.TM,{starts:{eW:!0,eE:!0}})]},{b:"\\b(set|list|map)\\s*<",e:">",k:t,c:["self"]}]}});hljs.registerLanguage("cos",function(e){var t={cN:"string",v:[{b:'"',e:'"',c:[{b:'""',r:0}]}]},r={cN:"number",b:"\\b(\\d+(\\.\\d*)?|\\.\\d+)",r:0},s="property parameter class classmethod clientmethod extends as break catch close continue do d|0 else elseif for goto halt hang h|0 if job j|0 kill k|0 lock l|0 merge new open quit q|0 read r|0 return set s|0 tcommit throw trollback try tstart use view while write w|0 xecute x|0 zkill znspace zn ztrap zwrite zw zzdump zzwrite print zbreak zinsert zload zprint zremove zsave zzprint mv mvcall mvcrt mvdim mvprint zquit zsync ascii";return{cI:!0,aliases:["cos","cls"],k:s,c:[r,t,e.CLCM,e.CBCM,{cN:"comment",b:/;/,e:"$",r:0},{cN:"built_in",b:/(?:\$\$?|\.\.)\^?[a-zA-Z]+/},{cN:"built_in",b:/\$\$\$[a-zA-Z]+/},{cN:"built_in",b:/%[a-z]+(?:\.[a-z]+)*/},{cN:"symbol",b:/\^%?[a-zA-Z][\w]*/},{cN:"keyword",b:/##class|##super|#define|#dim/},{b:/&sql\(/,e:/\)/,eB:!0,eE:!0,sL:"sql"},{b:/&(js|jscript|javascript)/,eB:!0,eE:!0,sL:"javascript"},{b:/&html<\s*\s*>/,sL:"xml"}]}});hljs.registerLanguage("gherkin",function(e){return{aliases:["feature"],k:"Feature Background Ability Business Need Scenario Scenarios Scenario Outline Scenario Template Examples Given And Then But When",c:[{cN:"symbol",b:"\\*",r:0},{cN:"meta",b:"@[^@\\s]+"},{b:"\\|",e:"\\|\\w*$",c:[{cN:"string",b:"[^|]+"}]},{cN:"variable",b:"<",e:">"},e.HCM,{cN:"string",b:'"""',e:'"""'},e.QSM]}});hljs.registerLanguage("elixir",function(e){var r="[a-zA-Z_][a-zA-Z0-9_]*(\\!|\\?)?",n="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",b="and false then defined module in return redo retry end for true self when next until do begin unless nil break not case cond alias while ensure or include use alias fn quote",c={cN:"subst",b:"#\\{",e:"}",l:r,k:b},a={cN:"string",c:[e.BE,c],v:[{b:/'/,e:/'/},{b:/"/,e:/"/}]},i={cN:"function",bK:"def defp defmacro",e:/\B\b/,c:[e.inherit(e.TM,{b:r,endsParent:!0})]},l=e.inherit(i,{cN:"class",bK:"defimpl defmodule defprotocol defrecord",e:/\bdo\b|$|;/}),s=[a,e.HCM,l,i,{cN:"symbol",b:":(?!\\s)",c:[a,{b:n}],r:0},{cN:"symbol",b:r+":",r:0},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{cN:"variable",b:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{b:"->"},{b:"("+e.RSR+")\\s*",c:[e.HCM,{cN:"regexp",i:"\\n",c:[e.BE,c],v:[{b:"/",e:"/[a-z]*"},{b:"%r\\[",e:"\\][a-z]*"}]}],r:0}];return c.c=s,{l:r,k:b,c:s}});hljs.registerLanguage("csp",function(r){return{cI:!1,l:"[a-zA-Z][a-zA-Z0-9_-]*",k:{keyword:"base-uri child-src connect-src default-src font-src form-action frame-ancestors frame-src img-src media-src object-src plugin-types report-uri sandbox script-src style-src"},c:[{cN:"string",b:"'",e:"'"},{cN:"attribute",b:"^Content",e:":",eE:!0}]}});hljs.registerLanguage("d",function(e){var t={keyword:"abstract alias align asm assert auto body break byte case cast catch class const continue debug default delete deprecated do else enum export extern final finally for foreach foreach_reverse|10 goto if immutable import in inout int interface invariant is lazy macro mixin module new nothrow out override package pragma private protected public pure ref return scope shared static struct super switch synchronized template this throw try typedef typeid typeof union unittest version void volatile while with __FILE__ __LINE__ __gshared|10 __thread __traits __DATE__ __EOF__ __TIME__ __TIMESTAMP__ __VENDOR__ __VERSION__",built_in:"bool cdouble cent cfloat char creal dchar delegate double dstring float function idouble ifloat ireal long real short string ubyte ucent uint ulong ushort wchar wstring",literal:"false null true"},r="(0|[1-9][\\d_]*)",a="(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)",i="0[bB][01_]+",n="([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*)",_="0[xX]"+n,c="([eE][+-]?"+a+")",d="("+a+"(\\.\\d*|"+c+")|\\d+\\."+a+a+"|\\."+r+c+"?)",o="(0[xX]("+n+"\\."+n+"|\\.?"+n+")[pP][+-]?"+a+")",s="("+r+"|"+i+"|"+_+")",l="("+o+"|"+d+")",u="\\\\(['\"\\?\\\\abfnrtv]|u[\\dA-Fa-f]{4}|[0-7]{1,3}|x[\\dA-Fa-f]{2}|U[\\dA-Fa-f]{8})|&[a-zA-Z\\d]{2,};",b={cN:"number",b:"\\b"+s+"(L|u|U|Lu|LU|uL|UL)?",r:0},f={cN:"number",b:"\\b("+l+"([fF]|L|i|[fF]i|Li)?|"+s+"(i|[fF]i|Li))",r:0},g={cN:"string",b:"'("+u+"|.)",e:"'",i:"."},h={b:u,r:0},p={cN:"string",b:'"',c:[h],e:'"[cwd]?'},m={cN:"string",b:'[rq]"',e:'"[cwd]?',r:5},w={cN:"string",b:"`",e:"`[cwd]?"},N={cN:"string",b:'x"[\\da-fA-F\\s\\n\\r]*"[cwd]?',r:10},A={cN:"string",b:'q"\\{',e:'\\}"'},F={cN:"meta",b:"^#!",e:"$",r:5},y={cN:"meta",b:"#(line)",e:"$",r:5},L={cN:"keyword",b:"@[a-zA-Z_][a-zA-Z_\\d]*"},v=e.C("\\/\\+","\\+\\/",{c:["self"],r:10});return{l:e.UIR,k:t,c:[e.CLCM,e.CBCM,v,N,p,m,w,A,f,b,g,F,y,L]}});hljs.registerLanguage("x86asm",function(s){return{cI:!0,l:"[.%]?"+s.IR,k:{keyword:"lock rep repe repz repne repnz xaquire xrelease bnd nobnd aaa aad aam aas adc add and arpl bb0_reset bb1_reset bound bsf bsr bswap bt btc btr bts call cbw cdq cdqe clc cld cli clts cmc cmp cmpsb cmpsd cmpsq cmpsw cmpxchg cmpxchg486 cmpxchg8b cmpxchg16b cpuid cpu_read cpu_write cqo cwd cwde daa das dec div dmint emms enter equ f2xm1 fabs fadd faddp fbld fbstp fchs fclex fcmovb fcmovbe fcmove fcmovnb fcmovnbe fcmovne fcmovnu fcmovu fcom fcomi fcomip fcomp fcompp fcos fdecstp fdisi fdiv fdivp fdivr fdivrp femms feni ffree ffreep fiadd ficom ficomp fidiv fidivr fild fimul fincstp finit fist fistp fisttp fisub fisubr fld fld1 fldcw fldenv fldl2e fldl2t fldlg2 fldln2 fldpi fldz fmul fmulp fnclex fndisi fneni fninit fnop fnsave fnstcw fnstenv fnstsw fpatan fprem fprem1 fptan frndint frstor fsave fscale fsetpm fsin fsincos fsqrt fst fstcw fstenv fstp fstsw fsub fsubp fsubr fsubrp ftst fucom fucomi fucomip fucomp fucompp fxam fxch fxtract fyl2x fyl2xp1 hlt ibts icebp idiv imul in inc incbin insb insd insw int int01 int1 int03 int3 into invd invpcid invlpg invlpga iret iretd iretq iretw jcxz jecxz jrcxz jmp jmpe lahf lar lds lea leave les lfence lfs lgdt lgs lidt lldt lmsw loadall loadall286 lodsb lodsd lodsq lodsw loop loope loopne loopnz loopz lsl lss ltr mfence monitor mov movd movq movsb movsd movsq movsw movsx movsxd movzx mul mwait neg nop not or out outsb outsd outsw packssdw packsswb packuswb paddb paddd paddsb paddsiw paddsw paddusb paddusw paddw pand pandn pause paveb pavgusb pcmpeqb pcmpeqd pcmpeqw pcmpgtb pcmpgtd pcmpgtw pdistib pf2id pfacc pfadd pfcmpeq pfcmpge pfcmpgt pfmax pfmin pfmul pfrcp pfrcpit1 pfrcpit2 pfrsqit1 pfrsqrt pfsub pfsubr pi2fd pmachriw pmaddwd pmagw pmulhriw pmulhrwa pmulhrwc pmulhw pmullw pmvgezb pmvlzb pmvnzb pmvzb pop popa popad popaw popf popfd popfq popfw por prefetch prefetchw pslld psllq psllw psrad psraw psrld psrlq psrlw psubb psubd psubsb psubsiw psubsw psubusb psubusw psubw punpckhbw punpckhdq punpckhwd punpcklbw punpckldq punpcklwd push pusha pushad pushaw pushf pushfd pushfq pushfw pxor rcl rcr rdshr rdmsr rdpmc rdtsc rdtscp ret retf retn rol ror rdm rsdc rsldt rsm rsts sahf sal salc sar sbb scasb scasd scasq scasw sfence sgdt shl shld shr shrd sidt sldt skinit smi smint smintold smsw stc std sti stosb stosd stosq stosw str sub svdc svldt svts swapgs syscall sysenter sysexit sysret test ud0 ud1 ud2b ud2 ud2a umov verr verw fwait wbinvd wrshr wrmsr xadd xbts xchg xlatb xlat xor cmove cmovz cmovne cmovnz cmova cmovnbe cmovae cmovnb cmovb cmovnae cmovbe cmovna cmovg cmovnle cmovge cmovnl cmovl cmovnge cmovle cmovng cmovc cmovnc cmovo cmovno cmovs cmovns cmovp cmovpe cmovnp cmovpo je jz jne jnz ja jnbe jae jnb jb jnae jbe jna jg jnle jge jnl jl jnge jle jng jc jnc jo jno js jns jpo jnp jpe jp sete setz setne setnz seta setnbe setae setnb setnc setb setnae setcset setbe setna setg setnle setge setnl setl setnge setle setng sets setns seto setno setpe setp setpo setnp addps addss andnps andps cmpeqps cmpeqss cmpleps cmpless cmpltps cmpltss cmpneqps cmpneqss cmpnleps cmpnless cmpnltps cmpnltss cmpordps cmpordss cmpunordps cmpunordss cmpps cmpss comiss cvtpi2ps cvtps2pi cvtsi2ss cvtss2si cvttps2pi cvttss2si divps divss ldmxcsr maxps maxss minps minss movaps movhps movlhps movlps movhlps movmskps movntps movss movups mulps mulss orps rcpps rcpss rsqrtps rsqrtss shufps sqrtps sqrtss stmxcsr subps subss ucomiss unpckhps unpcklps xorps fxrstor fxrstor64 fxsave fxsave64 xgetbv xsetbv xsave xsave64 xsaveopt xsaveopt64 xrstor xrstor64 prefetchnta prefetcht0 prefetcht1 prefetcht2 maskmovq movntq pavgb pavgw pextrw pinsrw pmaxsw pmaxub pminsw pminub pmovmskb pmulhuw psadbw pshufw pf2iw pfnacc pfpnacc pi2fw pswapd maskmovdqu clflush movntdq movnti movntpd movdqa movdqu movdq2q movq2dq paddq pmuludq pshufd pshufhw pshuflw pslldq psrldq psubq punpckhqdq punpcklqdq addpd addsd andnpd andpd cmpeqpd cmpeqsd cmplepd cmplesd cmpltpd cmpltsd cmpneqpd cmpneqsd cmpnlepd cmpnlesd cmpnltpd cmpnltsd cmpordpd cmpordsd cmpunordpd cmpunordsd cmppd comisd cvtdq2pd cvtdq2ps cvtpd2dq cvtpd2pi cvtpd2ps cvtpi2pd cvtps2dq cvtps2pd cvtsd2si cvtsd2ss cvtsi2sd cvtss2sd cvttpd2pi cvttpd2dq cvttps2dq cvttsd2si divpd divsd maxpd maxsd minpd minsd movapd movhpd movlpd movmskpd movupd mulpd mulsd orpd shufpd sqrtpd sqrtsd subpd subsd ucomisd unpckhpd unpcklpd xorpd addsubpd addsubps haddpd haddps hsubpd hsubps lddqu movddup movshdup movsldup clgi stgi vmcall vmclear vmfunc vmlaunch vmload vmmcall vmptrld vmptrst vmread vmresume vmrun vmsave vmwrite vmxoff vmxon invept invvpid pabsb pabsw pabsd palignr phaddw phaddd phaddsw phsubw phsubd phsubsw pmaddubsw pmulhrsw pshufb psignb psignw psignd extrq insertq movntsd movntss lzcnt blendpd blendps blendvpd blendvps dppd dpps extractps insertps movntdqa mpsadbw packusdw pblendvb pblendw pcmpeqq pextrb pextrd pextrq phminposuw pinsrb pinsrd pinsrq pmaxsb pmaxsd pmaxud pmaxuw pminsb pminsd pminud pminuw pmovsxbw pmovsxbd pmovsxbq pmovsxwd pmovsxwq pmovsxdq pmovzxbw pmovzxbd pmovzxbq pmovzxwd pmovzxwq pmovzxdq pmuldq pmulld ptest roundpd roundps roundsd roundss crc32 pcmpestri pcmpestrm pcmpistri pcmpistrm pcmpgtq popcnt getsec pfrcpv pfrsqrtv movbe aesenc aesenclast aesdec aesdeclast aesimc aeskeygenassist vaesenc vaesenclast vaesdec vaesdeclast vaesimc vaeskeygenassist vaddpd vaddps vaddsd vaddss vaddsubpd vaddsubps vandpd vandps vandnpd vandnps vblendpd vblendps vblendvpd vblendvps vbroadcastss vbroadcastsd vbroadcastf128 vcmpeq_ospd vcmpeqpd vcmplt_ospd vcmpltpd vcmple_ospd vcmplepd vcmpunord_qpd vcmpunordpd vcmpneq_uqpd vcmpneqpd vcmpnlt_uspd vcmpnltpd vcmpnle_uspd vcmpnlepd vcmpord_qpd vcmpordpd vcmpeq_uqpd vcmpnge_uspd vcmpngepd vcmpngt_uspd vcmpngtpd vcmpfalse_oqpd vcmpfalsepd vcmpneq_oqpd vcmpge_ospd vcmpgepd vcmpgt_ospd vcmpgtpd vcmptrue_uqpd vcmptruepd vcmplt_oqpd vcmple_oqpd vcmpunord_spd vcmpneq_uspd vcmpnlt_uqpd vcmpnle_uqpd vcmpord_spd vcmpeq_uspd vcmpnge_uqpd vcmpngt_uqpd vcmpfalse_ospd vcmpneq_ospd vcmpge_oqpd vcmpgt_oqpd vcmptrue_uspd vcmppd vcmpeq_osps vcmpeqps vcmplt_osps vcmpltps vcmple_osps vcmpleps vcmpunord_qps vcmpunordps vcmpneq_uqps vcmpneqps vcmpnlt_usps vcmpnltps vcmpnle_usps vcmpnleps vcmpord_qps vcmpordps vcmpeq_uqps vcmpnge_usps vcmpngeps vcmpngt_usps vcmpngtps vcmpfalse_oqps vcmpfalseps vcmpneq_oqps vcmpge_osps vcmpgeps vcmpgt_osps vcmpgtps vcmptrue_uqps vcmptrueps vcmplt_oqps vcmple_oqps vcmpunord_sps vcmpneq_usps vcmpnlt_uqps vcmpnle_uqps vcmpord_sps vcmpeq_usps vcmpnge_uqps vcmpngt_uqps vcmpfalse_osps vcmpneq_osps vcmpge_oqps vcmpgt_oqps vcmptrue_usps vcmpps vcmpeq_ossd vcmpeqsd vcmplt_ossd vcmpltsd vcmple_ossd vcmplesd vcmpunord_qsd vcmpunordsd vcmpneq_uqsd vcmpneqsd vcmpnlt_ussd vcmpnltsd vcmpnle_ussd vcmpnlesd vcmpord_qsd vcmpordsd vcmpeq_uqsd vcmpnge_ussd vcmpngesd vcmpngt_ussd vcmpngtsd vcmpfalse_oqsd vcmpfalsesd vcmpneq_oqsd vcmpge_ossd vcmpgesd vcmpgt_ossd vcmpgtsd vcmptrue_uqsd vcmptruesd vcmplt_oqsd vcmple_oqsd vcmpunord_ssd vcmpneq_ussd vcmpnlt_uqsd vcmpnle_uqsd vcmpord_ssd vcmpeq_ussd vcmpnge_uqsd vcmpngt_uqsd vcmpfalse_ossd vcmpneq_ossd vcmpge_oqsd vcmpgt_oqsd vcmptrue_ussd vcmpsd vcmpeq_osss vcmpeqss vcmplt_osss vcmpltss vcmple_osss vcmpless vcmpunord_qss vcmpunordss vcmpneq_uqss vcmpneqss vcmpnlt_usss vcmpnltss vcmpnle_usss vcmpnless vcmpord_qss vcmpordss vcmpeq_uqss vcmpnge_usss vcmpngess vcmpngt_usss vcmpngtss vcmpfalse_oqss vcmpfalsess vcmpneq_oqss vcmpge_osss vcmpgess vcmpgt_osss vcmpgtss vcmptrue_uqss vcmptruess vcmplt_oqss vcmple_oqss vcmpunord_sss vcmpneq_usss vcmpnlt_uqss vcmpnle_uqss vcmpord_sss vcmpeq_usss vcmpnge_uqss vcmpngt_uqss vcmpfalse_osss vcmpneq_osss vcmpge_oqss vcmpgt_oqss vcmptrue_usss vcmpss vcomisd vcomiss vcvtdq2pd vcvtdq2ps vcvtpd2dq vcvtpd2ps vcvtps2dq vcvtps2pd vcvtsd2si vcvtsd2ss vcvtsi2sd vcvtsi2ss vcvtss2sd vcvtss2si vcvttpd2dq vcvttps2dq vcvttsd2si vcvttss2si vdivpd vdivps vdivsd vdivss vdppd vdpps vextractf128 vextractps vhaddpd vhaddps vhsubpd vhsubps vinsertf128 vinsertps vlddqu vldqqu vldmxcsr vmaskmovdqu vmaskmovps vmaskmovpd vmaxpd vmaxps vmaxsd vmaxss vminpd vminps vminsd vminss vmovapd vmovaps vmovd vmovq vmovddup vmovdqa vmovqqa vmovdqu vmovqqu vmovhlps vmovhpd vmovhps vmovlhps vmovlpd vmovlps vmovmskpd vmovmskps vmovntdq vmovntqq vmovntdqa vmovntpd vmovntps vmovsd vmovshdup vmovsldup vmovss vmovupd vmovups vmpsadbw vmulpd vmulps vmulsd vmulss vorpd vorps vpabsb vpabsw vpabsd vpacksswb vpackssdw vpackuswb vpackusdw vpaddb vpaddw vpaddd vpaddq vpaddsb vpaddsw vpaddusb vpaddusw vpalignr vpand vpandn vpavgb vpavgw vpblendvb vpblendw vpcmpestri vpcmpestrm vpcmpistri vpcmpistrm vpcmpeqb vpcmpeqw vpcmpeqd vpcmpeqq vpcmpgtb vpcmpgtw vpcmpgtd vpcmpgtq vpermilpd vpermilps vperm2f128 vpextrb vpextrw vpextrd vpextrq vphaddw vphaddd vphaddsw vphminposuw vphsubw vphsubd vphsubsw vpinsrb vpinsrw vpinsrd vpinsrq vpmaddwd vpmaddubsw vpmaxsb vpmaxsw vpmaxsd vpmaxub vpmaxuw vpmaxud vpminsb vpminsw vpminsd vpminub vpminuw vpminud vpmovmskb vpmovsxbw vpmovsxbd vpmovsxbq vpmovsxwd vpmovsxwq vpmovsxdq vpmovzxbw vpmovzxbd vpmovzxbq vpmovzxwd vpmovzxwq vpmovzxdq vpmulhuw vpmulhrsw vpmulhw vpmullw vpmulld vpmuludq vpmuldq vpor vpsadbw vpshufb vpshufd vpshufhw vpshuflw vpsignb vpsignw vpsignd vpslldq vpsrldq vpsllw vpslld vpsllq vpsraw vpsrad vpsrlw vpsrld vpsrlq vptest vpsubb vpsubw vpsubd vpsubq vpsubsb vpsubsw vpsubusb vpsubusw vpunpckhbw vpunpckhwd vpunpckhdq vpunpckhqdq vpunpcklbw vpunpcklwd vpunpckldq vpunpcklqdq vpxor vrcpps vrcpss vrsqrtps vrsqrtss vroundpd vroundps vroundsd vroundss vshufpd vshufps vsqrtpd vsqrtps vsqrtsd vsqrtss vstmxcsr vsubpd vsubps vsubsd vsubss vtestps vtestpd vucomisd vucomiss vunpckhpd vunpckhps vunpcklpd vunpcklps vxorpd vxorps vzeroall vzeroupper pclmullqlqdq pclmulhqlqdq pclmullqhqdq pclmulhqhqdq pclmulqdq vpclmullqlqdq vpclmulhqlqdq vpclmullqhqdq vpclmulhqhqdq vpclmulqdq vfmadd132ps vfmadd132pd vfmadd312ps vfmadd312pd vfmadd213ps vfmadd213pd vfmadd123ps vfmadd123pd vfmadd231ps vfmadd231pd vfmadd321ps vfmadd321pd vfmaddsub132ps vfmaddsub132pd vfmaddsub312ps vfmaddsub312pd vfmaddsub213ps vfmaddsub213pd vfmaddsub123ps vfmaddsub123pd vfmaddsub231ps vfmaddsub231pd vfmaddsub321ps vfmaddsub321pd vfmsub132ps vfmsub132pd vfmsub312ps vfmsub312pd vfmsub213ps vfmsub213pd vfmsub123ps vfmsub123pd vfmsub231ps vfmsub231pd vfmsub321ps vfmsub321pd vfmsubadd132ps vfmsubadd132pd vfmsubadd312ps vfmsubadd312pd vfmsubadd213ps vfmsubadd213pd vfmsubadd123ps vfmsubadd123pd vfmsubadd231ps vfmsubadd231pd vfmsubadd321ps vfmsubadd321pd vfnmadd132ps vfnmadd132pd vfnmadd312ps vfnmadd312pd vfnmadd213ps vfnmadd213pd vfnmadd123ps vfnmadd123pd vfnmadd231ps vfnmadd231pd vfnmadd321ps vfnmadd321pd vfnmsub132ps vfnmsub132pd vfnmsub312ps vfnmsub312pd vfnmsub213ps vfnmsub213pd vfnmsub123ps vfnmsub123pd vfnmsub231ps vfnmsub231pd vfnmsub321ps vfnmsub321pd vfmadd132ss vfmadd132sd vfmadd312ss vfmadd312sd vfmadd213ss vfmadd213sd vfmadd123ss vfmadd123sd vfmadd231ss vfmadd231sd vfmadd321ss vfmadd321sd vfmsub132ss vfmsub132sd vfmsub312ss vfmsub312sd vfmsub213ss vfmsub213sd vfmsub123ss vfmsub123sd vfmsub231ss vfmsub231sd vfmsub321ss vfmsub321sd vfnmadd132ss vfnmadd132sd vfnmadd312ss vfnmadd312sd vfnmadd213ss vfnmadd213sd vfnmadd123ss vfnmadd123sd vfnmadd231ss vfnmadd231sd vfnmadd321ss vfnmadd321sd vfnmsub132ss vfnmsub132sd vfnmsub312ss vfnmsub312sd vfnmsub213ss vfnmsub213sd vfnmsub123ss vfnmsub123sd vfnmsub231ss vfnmsub231sd vfnmsub321ss vfnmsub321sd rdfsbase rdgsbase rdrand wrfsbase wrgsbase vcvtph2ps vcvtps2ph adcx adox rdseed clac stac xstore xcryptecb xcryptcbc xcryptctr xcryptcfb xcryptofb montmul xsha1 xsha256 llwpcb slwpcb lwpval lwpins vfmaddpd vfmaddps vfmaddsd vfmaddss vfmaddsubpd vfmaddsubps vfmsubaddpd vfmsubaddps vfmsubpd vfmsubps vfmsubsd vfmsubss vfnmaddpd vfnmaddps vfnmaddsd vfnmaddss vfnmsubpd vfnmsubps vfnmsubsd vfnmsubss vfrczpd vfrczps vfrczsd vfrczss vpcmov vpcomb vpcomd vpcomq vpcomub vpcomud vpcomuq vpcomuw vpcomw vphaddbd vphaddbq vphaddbw vphadddq vphaddubd vphaddubq vphaddubw vphaddudq vphadduwd vphadduwq vphaddwd vphaddwq vphsubbw vphsubdq vphsubwd vpmacsdd vpmacsdqh vpmacsdql vpmacssdd vpmacssdqh vpmacssdql vpmacsswd vpmacssww vpmacswd vpmacsww vpmadcsswd vpmadcswd vpperm vprotb vprotd vprotq vprotw vpshab vpshad vpshaq vpshaw vpshlb vpshld vpshlq vpshlw vbroadcasti128 vpblendd vpbroadcastb vpbroadcastw vpbroadcastd vpbroadcastq vpermd vpermpd vpermps vpermq vperm2i128 vextracti128 vinserti128 vpmaskmovd vpmaskmovq vpsllvd vpsllvq vpsravd vpsrlvd vpsrlvq vgatherdpd vgatherqpd vgatherdps vgatherqps vpgatherdd vpgatherqd vpgatherdq vpgatherqq xabort xbegin xend xtest andn bextr blci blcic blsi blsic blcfill blsfill blcmsk blsmsk blsr blcs bzhi mulx pdep pext rorx sarx shlx shrx tzcnt tzmsk t1mskc valignd valignq vblendmpd vblendmps vbroadcastf32x4 vbroadcastf64x4 vbroadcasti32x4 vbroadcasti64x4 vcompresspd vcompressps vcvtpd2udq vcvtps2udq vcvtsd2usi vcvtss2usi vcvttpd2udq vcvttps2udq vcvttsd2usi vcvttss2usi vcvtudq2pd vcvtudq2ps vcvtusi2sd vcvtusi2ss vexpandpd vexpandps vextractf32x4 vextractf64x4 vextracti32x4 vextracti64x4 vfixupimmpd vfixupimmps vfixupimmsd vfixupimmss vgetexppd vgetexpps vgetexpsd vgetexpss vgetmantpd vgetmantps vgetmantsd vgetmantss vinsertf32x4 vinsertf64x4 vinserti32x4 vinserti64x4 vmovdqa32 vmovdqa64 vmovdqu32 vmovdqu64 vpabsq vpandd vpandnd vpandnq vpandq vpblendmd vpblendmq vpcmpltd vpcmpled vpcmpneqd vpcmpnltd vpcmpnled vpcmpd vpcmpltq vpcmpleq vpcmpneqq vpcmpnltq vpcmpnleq vpcmpq vpcmpequd vpcmpltud vpcmpleud vpcmpnequd vpcmpnltud vpcmpnleud vpcmpud vpcmpequq vpcmpltuq vpcmpleuq vpcmpnequq vpcmpnltuq vpcmpnleuq vpcmpuq vpcompressd vpcompressq vpermi2d vpermi2pd vpermi2ps vpermi2q vpermt2d vpermt2pd vpermt2ps vpermt2q vpexpandd vpexpandq vpmaxsq vpmaxuq vpminsq vpminuq vpmovdb vpmovdw vpmovqb vpmovqd vpmovqw vpmovsdb vpmovsdw vpmovsqb vpmovsqd vpmovsqw vpmovusdb vpmovusdw vpmovusqb vpmovusqd vpmovusqw vpord vporq vprold vprolq vprolvd vprolvq vprord vprorq vprorvd vprorvq vpscatterdd vpscatterdq vpscatterqd vpscatterqq vpsraq vpsravq vpternlogd vpternlogq vptestmd vptestmq vptestnmd vptestnmq vpxord vpxorq vrcp14pd vrcp14ps vrcp14sd vrcp14ss vrndscalepd vrndscaleps vrndscalesd vrndscaless vrsqrt14pd vrsqrt14ps vrsqrt14sd vrsqrt14ss vscalefpd vscalefps vscalefsd vscalefss vscatterdpd vscatterdps vscatterqpd vscatterqps vshuff32x4 vshuff64x2 vshufi32x4 vshufi64x2 kandnw kandw kmovw knotw kortestw korw kshiftlw kshiftrw kunpckbw kxnorw kxorw vpbroadcastmb2q vpbroadcastmw2d vpconflictd vpconflictq vplzcntd vplzcntq vexp2pd vexp2ps vrcp28pd vrcp28ps vrcp28sd vrcp28ss vrsqrt28pd vrsqrt28ps vrsqrt28sd vrsqrt28ss vgatherpf0dpd vgatherpf0dps vgatherpf0qpd vgatherpf0qps vgatherpf1dpd vgatherpf1dps vgatherpf1qpd vgatherpf1qps vscatterpf0dpd vscatterpf0dps vscatterpf0qpd vscatterpf0qps vscatterpf1dpd vscatterpf1dps vscatterpf1qpd vscatterpf1qps prefetchwt1 bndmk bndcl bndcu bndcn bndmov bndldx bndstx sha1rnds4 sha1nexte sha1msg1 sha1msg2 sha256rnds2 sha256msg1 sha256msg2 hint_nop0 hint_nop1 hint_nop2 hint_nop3 hint_nop4 hint_nop5 hint_nop6 hint_nop7 hint_nop8 hint_nop9 hint_nop10 hint_nop11 hint_nop12 hint_nop13 hint_nop14 hint_nop15 hint_nop16 hint_nop17 hint_nop18 hint_nop19 hint_nop20 hint_nop21 hint_nop22 hint_nop23 hint_nop24 hint_nop25 hint_nop26 hint_nop27 hint_nop28 hint_nop29 hint_nop30 hint_nop31 hint_nop32 hint_nop33 hint_nop34 hint_nop35 hint_nop36 hint_nop37 hint_nop38 hint_nop39 hint_nop40 hint_nop41 hint_nop42 hint_nop43 hint_nop44 hint_nop45 hint_nop46 hint_nop47 hint_nop48 hint_nop49 hint_nop50 hint_nop51 hint_nop52 hint_nop53 hint_nop54 hint_nop55 hint_nop56 hint_nop57 hint_nop58 hint_nop59 hint_nop60 hint_nop61 hint_nop62 hint_nop63",built_in:"ip eip rip al ah bl bh cl ch dl dh sil dil bpl spl r8b r9b r10b r11b r12b r13b r14b r15b ax bx cx dx si di bp sp r8w r9w r10w r11w r12w r13w r14w r15w eax ebx ecx edx esi edi ebp esp eip r8d r9d r10d r11d r12d r13d r14d r15d rax rbx rcx rdx rsi rdi rbp rsp r8 r9 r10 r11 r12 r13 r14 r15 cs ds es fs gs ss st st0 st1 st2 st3 st4 st5 st6 st7 mm0 mm1 mm2 mm3 mm4 mm5 mm6 mm7 xmm0 xmm1 xmm2 xmm3 xmm4 xmm5 xmm6 xmm7 xmm8 xmm9 xmm10 xmm11 xmm12 xmm13 xmm14 xmm15 xmm16 xmm17 xmm18 xmm19 xmm20 xmm21 xmm22 xmm23 xmm24 xmm25 xmm26 xmm27 xmm28 xmm29 xmm30 xmm31 ymm0 ymm1 ymm2 ymm3 ymm4 ymm5 ymm6 ymm7 ymm8 ymm9 ymm10 ymm11 ymm12 ymm13 ymm14 ymm15 ymm16 ymm17 ymm18 ymm19 ymm20 ymm21 ymm22 ymm23 ymm24 ymm25 ymm26 ymm27 ymm28 ymm29 ymm30 ymm31 zmm0 zmm1 zmm2 zmm3 zmm4 zmm5 zmm6 zmm7 zmm8 zmm9 zmm10 zmm11 zmm12 zmm13 zmm14 zmm15 zmm16 zmm17 zmm18 zmm19 zmm20 zmm21 zmm22 zmm23 zmm24 zmm25 zmm26 zmm27 zmm28 zmm29 zmm30 zmm31 k0 k1 k2 k3 k4 k5 k6 k7 bnd0 bnd1 bnd2 bnd3 cr0 cr1 cr2 cr3 cr4 cr8 dr0 dr1 dr2 dr3 dr8 tr3 tr4 tr5 tr6 tr7 r0 r1 r2 r3 r4 r5 r6 r7 r0b r1b r2b r3b r4b r5b r6b r7b r0w r1w r2w r3w r4w r5w r6w r7w r0d r1d r2d r3d r4d r5d r6d r7d r0h r1h r2h r3h r0l r1l r2l r3l r4l r5l r6l r7l r8l r9l r10l r11l r12l r13l r14l r15l db dw dd dq dt ddq do dy dz resb resw resd resq rest resdq reso resy resz incbin equ times byte word dword qword nosplit rel abs seg wrt strict near far a32 ptr",meta:"%define %xdefine %+ %undef %defstr %deftok %assign %strcat %strlen %substr %rotate %elif %else %endif %if %ifmacro %ifctx %ifidn %ifidni %ifid %ifnum %ifstr %iftoken %ifempty %ifenv %error %warning %fatal %rep %endrep %include %push %pop %repl %pathsearch %depend %use %arg %stacksize %local %line %comment %endcomment .nolist __FILE__ __LINE__ __SECT__ __BITS__ __OUTPUT_FORMAT__ __DATE__ __TIME__ __DATE_NUM__ __TIME_NUM__ __UTC_DATE__ __UTC_TIME__ __UTC_DATE_NUM__ __UTC_TIME_NUM__ __PASS__ struc endstruc istruc at iend align alignb sectalign daz nodaz up down zero default option assume public bits use16 use32 use64 default section segment absolute extern global common cpu float __utf16__ __utf16le__ __utf16be__ __utf32__ __utf32le__ __utf32be__ __float8__ __float16__ __float32__ __float64__ __float80m__ __float80e__ __float128l__ __float128h__ __Infinity__ __QNaN__ __SNaN__ Inf NaN QNaN SNaN float8 float16 float32 float64 float80m float80e float128l float128h __FLOAT_DAZ__ __FLOAT_ROUND__ __FLOAT__"},c:[s.C(";","$",{r:0}),{cN:"number",v:[{b:"\\b(?:([0-9][0-9_]*)?\\.[0-9_]*(?:[eE][+-]?[0-9_]+)?|(0[Xx])?[0-9][0-9_]*\\.?[0-9_]*(?:[pP](?:[+-]?[0-9_]+)?)?)\\b",r:0},{b:"\\$[0-9][0-9A-Fa-f]*",r:0},{b:"\\b(?:[0-9A-Fa-f][0-9A-Fa-f_]*[Hh]|[0-9][0-9_]*[DdTt]?|[0-7][0-7_]*[QqOo]|[0-1][0-1_]*[BbYy])\\b"},{b:"\\b(?:0[Xx][0-9A-Fa-f_]+|0[DdTt][0-9_]+|0[QqOo][0-7_]+|0[BbYy][0-1_]+)\\b"}]},s.QSM,{cN:"string",v:[{b:"'",e:"[^\\\\]'"},{b:"`",e:"[^\\\\]`"}],r:0},{cN:"symbol",v:[{b:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)"},{b:"^\\s*%%[A-Za-z0-9_$#@~.?]*:"}],r:0},{cN:"subst",b:"%[0-9]+",r:0},{cN:"subst",b:"%!S+",r:0},{cN:"meta",b:/^\s*\.[\w_-]+/}]}});hljs.registerLanguage("pony",function(e){var r={keyword:"actor addressof and as be break class compile_error compile_intrinsicconsume continue delegate digestof do else elseif embed end errorfor fun if ifdef in interface is isnt lambda let match new not objector primitive recover repeat return struct then trait try type until use var where while with xor",meta:"iso val tag trn box ref",literal:"this false true"},t={cN:"string",b:'"""',e:'"""',r:10},c={cN:"string",b:'"',e:'"',c:[e.BE]},i={cN:"string",b:"'",e:"'",c:[e.BE],r:0},n={cN:"type",b:"\\b_?[A-Z][\\w]*",r:0},s={b:e.IR+"'",r:0},a={cN:"class",bK:"class actor",e:"$",c:[e.TM,e.CLCM]},o={cN:"function",bK:"new fun",e:"=>",c:[e.TM,{b:/\(/,e:/\)/,c:[n,s,e.CNM,e.CBCM]},{b:/:/,eW:!0,c:[n]},e.CLCM]};return{k:r,c:[a,o,n,t,c,i,s,e.CNM,e.CLCM,e.CBCM]}});hljs.registerLanguage("stata",function(e){return{aliases:["do","ado"],cI:!0,k:"if else in foreach for forv forva forval forvalu forvalue forvalues by bys bysort xi quietly qui capture about ac ac_7 acprplot acprplot_7 adjust ado adopath adoupdate alpha ameans an ano anov anova anova_estat anova_terms anovadef aorder ap app appe appen append arch arch_dr arch_estat arch_p archlm areg areg_p args arima arima_dr arima_estat arima_p as asmprobit asmprobit_estat asmprobit_lf asmprobit_mfx__dlg asmprobit_p ass asse asser assert avplot avplot_7 avplots avplots_7 bcskew0 bgodfrey binreg bip0_lf biplot bipp_lf bipr_lf bipr_p biprobit bitest bitesti bitowt blogit bmemsize boot bootsamp bootstrap bootstrap_8 boxco_l boxco_p boxcox boxcox_6 boxcox_p bprobit br break brier bro brow brows browse brr brrstat bs bs_7 bsampl_w bsample bsample_7 bsqreg bstat bstat_7 bstat_8 bstrap bstrap_7 ca ca_estat ca_p cabiplot camat canon canon_8 canon_8_p canon_estat canon_p cap caprojection capt captu captur capture cat cc cchart cchart_7 cci cd censobs_table centile cf char chdir checkdlgfiles checkestimationsample checkhlpfiles checksum chelp ci cii cl class classutil clear cli clis clist clo clog clog_lf clog_p clogi clogi_sw clogit clogit_lf clogit_p clogitp clogl_sw cloglog clonevar clslistarray cluster cluster_measures cluster_stop cluster_tree cluster_tree_8 clustermat cmdlog cnr cnre cnreg cnreg_p cnreg_sw cnsreg codebook collaps4 collapse colormult_nb colormult_nw compare compress conf confi confir confirm conren cons const constr constra constrai constrain constraint continue contract copy copyright copysource cor corc corr corr2data corr_anti corr_kmo corr_smc corre correl correla correlat correlate corrgram cou coun count cox cox_p cox_sw coxbase coxhaz coxvar cprplot cprplot_7 crc cret cretu cretur creturn cross cs cscript cscript_log csi ct ct_is ctset ctst_5 ctst_st cttost cumsp cumsp_7 cumul cusum cusum_7 cutil d|0 datasig datasign datasigna datasignat datasignatu datasignatur datasignature datetof db dbeta de dec deco decod decode deff des desc descr descri describ describe destring dfbeta dfgls dfuller di di_g dir dirstats dis discard disp disp_res disp_s displ displa display distinct do doe doed doedi doedit dotplot dotplot_7 dprobit drawnorm drop ds ds_util dstdize duplicates durbina dwstat dydx e|0 ed edi edit egen eivreg emdef en enc enco encod encode eq erase ereg ereg_lf ereg_p ereg_sw ereghet ereghet_glf ereghet_glf_sh ereghet_gp ereghet_ilf ereghet_ilf_sh ereghet_ip eret eretu eretur ereturn err erro error est est_cfexist est_cfname est_clickable est_expand est_hold est_table est_unhold est_unholdok estat estat_default estat_summ estat_vce_only esti estimates etodow etof etomdy ex exi exit expand expandcl fac fact facto factor factor_estat factor_p factor_pca_rotated factor_rotate factormat fcast fcast_compute fcast_graph fdades fdadesc fdadescr fdadescri fdadescrib fdadescribe fdasav fdasave fdause fh_st file open file read file close file filefilter fillin find_hlp_file findfile findit findit_7 fit fl fli flis flist for5_0 form forma format fpredict frac_154 frac_adj frac_chk frac_cox frac_ddp frac_dis frac_dv frac_in frac_mun frac_pp frac_pq frac_pv frac_wgt frac_xo fracgen fracplot fracplot_7 fracpoly fracpred fron_ex fron_hn fron_p fron_tn fron_tn2 frontier ftodate ftoe ftomdy ftowdate g|0 gamhet_glf gamhet_gp gamhet_ilf gamhet_ip gamma gamma_d2 gamma_p gamma_sw gammahet gdi_hexagon gdi_spokes ge gen gene gener genera generat generate genrank genstd genvmean gettoken gl gladder gladder_7 glim_l01 glim_l02 glim_l03 glim_l04 glim_l05 glim_l06 glim_l07 glim_l08 glim_l09 glim_l10 glim_l11 glim_l12 glim_lf glim_mu glim_nw1 glim_nw2 glim_nw3 glim_p glim_v1 glim_v2 glim_v3 glim_v4 glim_v5 glim_v6 glim_v7 glm glm_6 glm_p glm_sw glmpred glo glob globa global glogit glogit_8 glogit_p gmeans gnbre_lf gnbreg gnbreg_5 gnbreg_p gomp_lf gompe_sw gomper_p gompertz gompertzhet gomphet_glf gomphet_glf_sh gomphet_gp gomphet_ilf gomphet_ilf_sh gomphet_ip gphdot gphpen gphprint gprefs gprobi_p gprobit gprobit_8 gr gr7 gr_copy gr_current gr_db gr_describe gr_dir gr_draw gr_draw_replay gr_drop gr_edit gr_editviewopts gr_example gr_example2 gr_export gr_print gr_qscheme gr_query gr_read gr_rename gr_replay gr_save gr_set gr_setscheme gr_table gr_undo gr_use graph graph7 grebar greigen greigen_7 greigen_8 grmeanby grmeanby_7 gs_fileinfo gs_filetype gs_graphinfo gs_stat gsort gwood h|0 hadimvo hareg hausman haver he heck_d2 heckma_p heckman heckp_lf heckpr_p heckprob hel help hereg hetpr_lf hetpr_p hetprob hettest hexdump hilite hist hist_7 histogram hlogit hlu hmeans hotel hotelling hprobit hreg hsearch icd9 icd9_ff icd9p iis impute imtest inbase include inf infi infil infile infix inp inpu input ins insheet insp inspe inspec inspect integ inten intreg intreg_7 intreg_p intrg2_ll intrg_ll intrg_ll2 ipolate iqreg ir irf irf_create irfm iri is_svy is_svysum isid istdize ivprob_1_lf ivprob_lf ivprobit ivprobit_p ivreg ivreg_footnote ivtob_1_lf ivtob_lf ivtobit ivtobit_p jackknife jacknife jknife jknife_6 jknife_8 jkstat joinby kalarma1 kap kap_3 kapmeier kappa kapwgt kdensity kdensity_7 keep ksm ksmirnov ktau kwallis l|0 la lab labe label labelbook ladder levels levelsof leverage lfit lfit_p li lincom line linktest lis list lloghet_glf lloghet_glf_sh lloghet_gp lloghet_ilf lloghet_ilf_sh lloghet_ip llogi_sw llogis_p llogist llogistic llogistichet lnorm_lf lnorm_sw lnorma_p lnormal lnormalhet lnormhet_glf lnormhet_glf_sh lnormhet_gp lnormhet_ilf lnormhet_ilf_sh lnormhet_ip lnskew0 loadingplot loc loca local log logi logis_lf logistic logistic_p logit logit_estat logit_p loglogs logrank loneway lookfor lookup lowess lowess_7 lpredict lrecomp lroc lroc_7 lrtest ls lsens lsens_7 lsens_x lstat ltable ltable_7 ltriang lv lvr2plot lvr2plot_7 m|0 ma mac macr macro makecns man manova manova_estat manova_p manovatest mantel mark markin markout marksample mat mat_capp mat_order mat_put_rr mat_rapp mata mata_clear mata_describe mata_drop mata_matdescribe mata_matsave mata_matuse mata_memory mata_mlib mata_mosave mata_rename mata_which matalabel matcproc matlist matname matr matri matrix matrix_input__dlg matstrik mcc mcci md0_ md1_ md1debug_ md2_ md2debug_ mds mds_estat mds_p mdsconfig mdslong mdsmat mdsshepard mdytoe mdytof me_derd mean means median memory memsize meqparse mer merg merge mfp mfx mhelp mhodds minbound mixed_ll mixed_ll_reparm mkassert mkdir mkmat mkspline ml ml_5 ml_adjs ml_bhhhs ml_c_d ml_check ml_clear ml_cnt ml_debug ml_defd ml_e0 ml_e0_bfgs ml_e0_cycle ml_e0_dfp ml_e0i ml_e1 ml_e1_bfgs ml_e1_bhhh ml_e1_cycle ml_e1_dfp ml_e2 ml_e2_cycle ml_ebfg0 ml_ebfr0 ml_ebfr1 ml_ebh0q ml_ebhh0 ml_ebhr0 ml_ebr0i ml_ecr0i ml_edfp0 ml_edfr0 ml_edfr1 ml_edr0i ml_eds ml_eer0i ml_egr0i ml_elf ml_elf_bfgs ml_elf_bhhh ml_elf_cycle ml_elf_dfp ml_elfi ml_elfs ml_enr0i ml_enrr0 ml_erdu0 ml_erdu0_bfgs ml_erdu0_bhhh ml_erdu0_bhhhq ml_erdu0_cycle ml_erdu0_dfp ml_erdu0_nrbfgs ml_exde ml_footnote ml_geqnr ml_grad0 ml_graph ml_hbhhh ml_hd0 ml_hold ml_init ml_inv ml_log ml_max ml_mlout ml_mlout_8 ml_model ml_nb0 ml_opt ml_p ml_plot ml_query ml_rdgrd ml_repor ml_s_e ml_score ml_searc ml_technique ml_unhold mleval mlf_ mlmatbysum mlmatsum mlog mlogi mlogit mlogit_footnote mlogit_p mlopts mlsum mlvecsum mnl0_ mor more mov move mprobit mprobit_lf mprobit_p mrdu0_ mrdu1_ mvdecode mvencode mvreg mvreg_estat n|0 nbreg nbreg_al nbreg_lf nbreg_p nbreg_sw nestreg net newey newey_7 newey_p news nl nl_7 nl_9 nl_9_p nl_p nl_p_7 nlcom nlcom_p nlexp2 nlexp2_7 nlexp2a nlexp2a_7 nlexp3 nlexp3_7 nlgom3 nlgom3_7 nlgom4 nlgom4_7 nlinit nllog3 nllog3_7 nllog4 nllog4_7 nlog_rd nlogit nlogit_p nlogitgen nlogittree nlpred no nobreak noi nois noisi noisil noisily note notes notes_dlg nptrend numlabel numlist odbc old_ver olo olog ologi ologi_sw ologit ologit_p ologitp on one onew onewa oneway op_colnm op_comp op_diff op_inv op_str opr opro oprob oprob_sw oprobi oprobi_p oprobit oprobitp opts_exclusive order orthog orthpoly ou out outf outfi outfil outfile outs outsh outshe outshee outsheet ovtest pac pac_7 palette parse parse_dissim pause pca pca_8 pca_display pca_estat pca_p pca_rotate pcamat pchart pchart_7 pchi pchi_7 pcorr pctile pentium pergram pergram_7 permute permute_8 personal peto_st pkcollapse pkcross pkequiv pkexamine pkexamine_7 pkshape pksumm pksumm_7 pl plo plot plugin pnorm pnorm_7 poisgof poiss_lf poiss_sw poisso_p poisson poisson_estat post postclose postfile postutil pperron pr prais prais_e prais_e2 prais_p predict predictnl preserve print pro prob probi probit probit_estat probit_p proc_time procoverlay procrustes procrustes_estat procrustes_p profiler prog progr progra program prop proportion prtest prtesti pwcorr pwd q\\s qby qbys qchi qchi_7 qladder qladder_7 qnorm qnorm_7 qqplot qqplot_7 qreg qreg_c qreg_p qreg_sw qu quadchk quantile quantile_7 que quer query range ranksum ratio rchart rchart_7 rcof recast reclink recode reg reg3 reg3_p regdw regr regre regre_p2 regres regres_p regress regress_estat regriv_p remap ren rena renam rename renpfix repeat replace report reshape restore ret retu retur return rm rmdir robvar roccomp roccomp_7 roccomp_8 rocf_lf rocfit rocfit_8 rocgold rocplot rocplot_7 roctab roctab_7 rolling rologit rologit_p rot rota rotat rotate rotatemat rreg rreg_p ru run runtest rvfplot rvfplot_7 rvpplot rvpplot_7 sa safesum sample sampsi sav save savedresults saveold sc sca scal scala scalar scatter scm_mine sco scob_lf scob_p scobi_sw scobit scor score scoreplot scoreplot_help scree screeplot screeplot_help sdtest sdtesti se search separate seperate serrbar serrbar_7 serset set set_defaults sfrancia sh she shel shell shewhart shewhart_7 signestimationsample signrank signtest simul simul_7 simulate simulate_8 sktest sleep slogit slogit_d2 slogit_p smooth snapspan so sor sort spearman spikeplot spikeplot_7 spikeplt spline_x split sqreg sqreg_p sret sretu sretur sreturn ssc st st_ct st_hc st_hcd st_hcd_sh st_is st_issys st_note st_promo st_set st_show st_smpl st_subid stack statsby statsby_8 stbase stci stci_7 stcox stcox_estat stcox_fr stcox_fr_ll stcox_p stcox_sw stcoxkm stcoxkm_7 stcstat stcurv stcurve stcurve_7 stdes stem stepwise stereg stfill stgen stir stjoin stmc stmh stphplot stphplot_7 stphtest stphtest_7 stptime strate strate_7 streg streg_sw streset sts sts_7 stset stsplit stsum sttocc sttoct stvary stweib su suest suest_8 sum summ summa summar summari summariz summarize sunflower sureg survcurv survsum svar svar_p svmat svy svy_disp svy_dreg svy_est svy_est_7 svy_estat svy_get svy_gnbreg_p svy_head svy_header svy_heckman_p svy_heckprob_p svy_intreg_p svy_ivreg_p svy_logistic_p svy_logit_p svy_mlogit_p svy_nbreg_p svy_ologit_p svy_oprobit_p svy_poisson_p svy_probit_p svy_regress_p svy_sub svy_sub_7 svy_x svy_x_7 svy_x_p svydes svydes_8 svygen svygnbreg svyheckman svyheckprob svyintreg svyintreg_7 svyintrg svyivreg svylc svylog_p svylogit svymarkout svymarkout_8 svymean svymlog svymlogit svynbreg svyolog svyologit svyoprob svyoprobit svyopts svypois svypois_7 svypoisson svyprobit svyprobt svyprop svyprop_7 svyratio svyreg svyreg_p svyregress svyset svyset_7 svyset_8 svytab svytab_7 svytest svytotal sw sw_8 swcnreg swcox swereg swilk swlogis swlogit swologit swoprbt swpois swprobit swqreg swtobit swweib symmetry symmi symplot symplot_7 syntax sysdescribe sysdir sysuse szroeter ta tab tab1 tab2 tab_or tabd tabdi tabdis tabdisp tabi table tabodds tabodds_7 tabstat tabu tabul tabula tabulat tabulate te tempfile tempname tempvar tes test testnl testparm teststd tetrachoric time_it timer tis tob tobi tobit tobit_p tobit_sw token tokeni tokeniz tokenize tostring total translate translator transmap treat_ll treatr_p treatreg trim trnb_cons trnb_mean trpoiss_d2 trunc_ll truncr_p truncreg tsappend tset tsfill tsline tsline_ex tsreport tsrevar tsrline tsset tssmooth tsunab ttest ttesti tut_chk tut_wait tutorial tw tware_st two twoway twoway__fpfit_serset twoway__function_gen twoway__histogram_gen twoway__ipoint_serset twoway__ipoints_serset twoway__kdensity_gen twoway__lfit_serset twoway__normgen_gen twoway__pci_serset twoway__qfit_serset twoway__scatteri_serset twoway__sunflower_gen twoway_ksm_serset ty typ type typeof u|0 unab unabbrev unabcmd update us use uselabel var var_mkcompanion var_p varbasic varfcast vargranger varirf varirf_add varirf_cgraph varirf_create varirf_ctable varirf_describe varirf_dir varirf_drop varirf_erase varirf_graph varirf_ograph varirf_rename varirf_set varirf_table varlist varlmar varnorm varsoc varstable varstable_w varstable_w2 varwle vce vec vec_fevd vec_mkphi vec_p vec_p_w vecirf_create veclmar veclmar_w vecnorm vecnorm_w vecrank vecstable verinst vers versi versio version view viewsource vif vwls wdatetof webdescribe webseek webuse weib1_lf weib2_lf weib_lf weib_lf0 weibhet_glf weibhet_glf_sh weibhet_glfa weibhet_glfa_sh weibhet_gp weibhet_ilf weibhet_ilf_sh weibhet_ilfa weibhet_ilfa_sh weibhet_ip weibu_sw weibul_p weibull weibull_c weibull_s weibullhet wh whelp whi which whil while wilc_st wilcoxon win wind windo window winexec wntestb wntestb_7 wntestq xchart xchart_7 xcorr xcorr_7 xi xi_6 xmlsav xmlsave xmluse xpose xsh xshe xshel xshell xt_iis xt_tis xtab_p xtabond xtbin_p xtclog xtcloglog xtcloglog_8 xtcloglog_d2 xtcloglog_pa_p xtcloglog_re_p xtcnt_p xtcorr xtdata xtdes xtfront_p xtfrontier xtgee xtgee_elink xtgee_estat xtgee_makeivar xtgee_p xtgee_plink xtgls xtgls_p xthaus xthausman xtht_p xthtaylor xtile xtint_p xtintreg xtintreg_8 xtintreg_d2 xtintreg_p xtivp_1 xtivp_2 xtivreg xtline xtline_ex xtlogit xtlogit_8 xtlogit_d2 xtlogit_fe_p xtlogit_pa_p xtlogit_re_p xtmixed xtmixed_estat xtmixed_p xtnb_fe xtnb_lf xtnbreg xtnbreg_pa_p xtnbreg_refe_p xtpcse xtpcse_p xtpois xtpoisson xtpoisson_d2 xtpoisson_pa_p xtpoisson_refe_p xtpred xtprobit xtprobit_8 xtprobit_d2 xtprobit_re_p xtps_fe xtps_lf xtps_ren xtps_ren_8 xtrar_p xtrc xtrc_p xtrchh xtrefe_p xtreg xtreg_be xtreg_fe xtreg_ml xtreg_pa_p xtreg_re xtregar xtrere_p xtset xtsf_ll xtsf_llti xtsum xttab xttest0 xttobit xttobit_8 xttobit_p xttrans yx yxview__barlike_draw yxview_area_draw yxview_bar_draw yxview_dot_draw yxview_dropline_draw yxview_function_draw yxview_iarrow_draw yxview_ilabels_draw yxview_normal_draw yxview_pcarrow_draw yxview_pcbarrow_draw yxview_pccapsym_draw yxview_pcscatter_draw yxview_pcspike_draw yxview_rarea_draw yxview_rbar_draw yxview_rbarm_draw yxview_rcap_draw yxview_rcapsym_draw yxview_rconnected_draw yxview_rline_draw yxview_rscatter_draw yxview_rspike_draw yxview_spike_draw yxview_sunflower_draw zap_s zinb zinb_llf zinb_plf zip zip_llf zip_p zip_plf zt_ct_5 zt_hc_5 zt_hcd_5 zt_is_5 zt_iss_5 zt_sho_5 zt_smp_5 ztbase_5 ztcox_5 ztdes_5 ztereg_5 ztfill_5 ztgen_5 ztir_5 ztjoin_5 ztnb ztnb_p ztp ztp_p zts_5 ztset_5 ztspli_5 ztsum_5 zttoct_5 ztvary_5 ztweib_5",c:[{cN:"symbol",b:/`[a-zA-Z0-9_]+'/},{cN:"variable",b:/\$\{?[a-zA-Z0-9_]+\}?/},{cN:"string",v:[{b:'`"[^\r\n]*?"\''},{b:'"[^\r\n"]*"'}]},{cN:"built_in",v:[{b:"\\b(abs|acos|asin|atan|atan2|atanh|ceil|cloglog|comb|cos|digamma|exp|floor|invcloglog|invlogit|ln|lnfact|lnfactorial|lngamma|log|log10|max|min|mod|reldif|round|sign|sin|sqrt|sum|tan|tanh|trigamma|trunc|betaden|Binomial|binorm|binormal|chi2|chi2tail|dgammapda|dgammapdada|dgammapdadx|dgammapdx|dgammapdxdx|F|Fden|Ftail|gammaden|gammap|ibeta|invbinomial|invchi2|invchi2tail|invF|invFtail|invgammap|invibeta|invnchi2|invnFtail|invnibeta|invnorm|invnormal|invttail|nbetaden|nchi2|nFden|nFtail|nibeta|norm|normal|normalden|normd|npnchi2|tden|ttail|uniform|abbrev|char|index|indexnot|length|lower|ltrim|match|plural|proper|real|regexm|regexr|regexs|reverse|rtrim|string|strlen|strlower|strltrim|strmatch|strofreal|strpos|strproper|strreverse|strrtrim|strtrim|strupper|subinstr|subinword|substr|trim|upper|word|wordcount|_caller|autocode|byteorder|chop|clip|cond|e|epsdouble|epsfloat|group|inlist|inrange|irecode|matrix|maxbyte|maxdouble|maxfloat|maxint|maxlong|mi|minbyte|mindouble|minfloat|minint|minlong|missing|r|recode|replay|return|s|scalar|d|date|day|dow|doy|halfyear|mdy|month|quarter|week|year|d|daily|dofd|dofh|dofm|dofq|dofw|dofy|h|halfyearly|hofd|m|mofd|monthly|q|qofd|quarterly|tin|twithin|w|weekly|wofd|y|yearly|yh|ym|yofd|yq|yw|cholesky|colnumb|colsof|corr|det|diag|diag0cnt|el|get|hadamard|I|inv|invsym|issym|issymmetric|J|matmissing|matuniform|mreldif|nullmat|rownumb|rowsof|sweep|syminv|trace|vec|vecdiag)(?=\\(|$)"}]},e.C("^[ ]*\\*.*$",!1),e.CLCM,e.CBCM]}});hljs.registerLanguage("accesslog",function(T){return{c:[{cN:"number",b:"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b"},{cN:"number",b:"\\b\\d+\\b",r:0},{cN:"string",b:'"(GET|POST|HEAD|PUT|DELETE|CONNECT|OPTIONS|PATCH|TRACE)',e:'"',k:"GET POST HEAD PUT DELETE CONNECT OPTIONS PATCH TRACE",i:"\\n",r:10},{cN:"string",b:/\[/,e:/\]/,i:"\\n"},{cN:"string",b:'"',e:'"',i:"\\n"}]}});hljs.registerLanguage("abnf",function(e){var r={ruleDeclaration:"^[a-zA-Z][a-zA-Z0-9-]*",unexpectedChars:"[!@#$^&',?+~`|:]"},a=["ALPHA","BIT","CHAR","CR","CRLF","CTL","DIGIT","DQUOTE","HEXDIG","HTAB","LF","LWSP","OCTET","SP","VCHAR","WSP"],b=e.C(";","$"),c={cN:"symbol",b:/%b[0-1]+(-[0-1]+|(\.[0-1]+)+){0,1}/},l={cN:"symbol",b:/%d[0-9]+(-[0-9]+|(\.[0-9]+)+){0,1}/},n={cN:"symbol",b:/%x[0-9A-F]+(-[0-9A-F]+|(\.[0-9A-F]+)+){0,1}/},t={cN:"symbol",b:/%[si]/},s={b:r.ruleDeclaration+"\\s*=",rB:!0,e:/=/,r:0,c:[{cN:"attribute",b:r.ruleDeclaration}]};return{i:r.unexpectedChars,k:a.join(" "),c:[s,b,c,l,n,t,e.QSM,e.NM]}});hljs.registerLanguage("ruby",function(e){var r="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",b={keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor",literal:"true false nil"},c={cN:"doctag",b:"@[A-Za-z]+"},a={b:"#<",e:">"},s=[e.C("#","$",{c:[c]}),e.C("^\\=begin","^\\=end",{c:[c],r:10}),e.C("^__END__","\\n$")],n={cN:"subst",b:"#\\{",e:"}",k:b},t={cN:"string",c:[e.BE,n],v:[{b:/'/,e:/'/},{b:/"/,e:/"/},{b:/`/,e:/`/},{b:"%[qQwWx]?\\(",e:"\\)"},{b:"%[qQwWx]?\\[",e:"\\]"},{b:"%[qQwWx]?{",e:"}"},{b:"%[qQwWx]?<",e:">"},{b:"%[qQwWx]?/",e:"/"},{b:"%[qQwWx]?%",e:"%"},{b:"%[qQwWx]?-",e:"-"},{b:"%[qQwWx]?\\|",e:"\\|"},{b:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/}]},i={cN:"params",b:"\\(",e:"\\)",endsParent:!0,k:b},d=[t,a,{cN:"class",bK:"class module",e:"$|;",i:/=/,c:[e.inherit(e.TM,{b:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{b:"<\\s*",c:[{b:"("+e.IR+"::)?"+e.IR}]}].concat(s)},{cN:"function",bK:"def",e:"$|;",c:[e.inherit(e.TM,{b:r}),i].concat(s)},{b:e.IR+"::"},{cN:"symbol",b:e.UIR+"(\\!|\\?)?:",r:0},{cN:"symbol",b:":(?!\\s)",c:[t,{b:r}],r:0},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{b:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{cN:"params",b:/\|/,e:/\|/,k:b},{b:"("+e.RSR+")\\s*",c:[a,{cN:"regexp",c:[e.BE,n],i:/\n/,v:[{b:"/",e:"/[a-z]*"},{b:"%r{",e:"}[a-z]*"},{b:"%r\\(",e:"\\)[a-z]*"},{b:"%r!",e:"![a-z]*"},{b:"%r\\[",e:"\\][a-z]*"}]}].concat(s),r:0}].concat(s);n.c=d,i.c=d;var l="[>?]>",o="[\\w#]+\\(\\w+\\):\\d+:\\d+>",u="(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>",w=[{b:/^\s*=>/,starts:{e:"$",c:d}},{cN:"meta",b:"^("+l+"|"+o+"|"+u+")",starts:{e:"$",c:d}}];return{aliases:["rb","gemspec","podspec","thor","irb"],k:b,i:/\/\*/,c:s.concat(w).concat(d)}});hljs.registerLanguage("haml",function(s){return{cI:!0,c:[{cN:"meta",b:"^!!!( (5|1\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\b.*))?$",r:10},s.C("^\\s*(!=#|=#|-#|/).*$",!1,{r:0}),{b:"^\\s*(-|=|!=)(?!#)",starts:{e:"\\n",sL:"ruby"}},{cN:"tag",b:"^\\s*%",c:[{cN:"selector-tag",b:"\\w+"},{cN:"selector-id",b:"#[\\w-]+"},{cN:"selector-class",b:"\\.[\\w-]+"},{b:"{\\s*",e:"\\s*}",c:[{b:":\\w+\\s*=>",e:",\\s+",rB:!0,eW:!0,c:[{cN:"attr",b:":\\w+"},s.ASM,s.QSM,{b:"\\w+",r:0}]}]},{b:"\\(\\s*",e:"\\s*\\)",eE:!0,c:[{b:"\\w+\\s*=",e:"\\s+",rB:!0,eW:!0,c:[{cN:"attr",b:"\\w+",r:0},s.ASM,s.QSM,{b:"\\w+",r:0}]}]}]},{b:"^\\s*[=~]\\s*"},{b:"#{",starts:{e:"}",sL:"ruby"}}]}});hljs.registerLanguage("ruleslanguage",function(T){return{k:{keyword:"BILL_PERIOD BILL_START BILL_STOP RS_EFFECTIVE_START RS_EFFECTIVE_STOP RS_JURIS_CODE RS_OPCO_CODE INTDADDATTRIBUTE|5 INTDADDVMSG|5 INTDBLOCKOP|5 INTDBLOCKOPNA|5 INTDCLOSE|5 INTDCOUNT|5 INTDCOUNTSTATUSCODE|5 INTDCREATEMASK|5 INTDCREATEDAYMASK|5 INTDCREATEFACTORMASK|5 INTDCREATEHANDLE|5 INTDCREATEOVERRIDEDAYMASK|5 INTDCREATEOVERRIDEMASK|5 INTDCREATESTATUSCODEMASK|5 INTDCREATETOUPERIOD|5 INTDDELETE|5 INTDDIPTEST|5 INTDEXPORT|5 INTDGETERRORCODE|5 INTDGETERRORMESSAGE|5 INTDISEQUAL|5 INTDJOIN|5 INTDLOAD|5 INTDLOADACTUALCUT|5 INTDLOADDATES|5 INTDLOADHIST|5 INTDLOADLIST|5 INTDLOADLISTDATES|5 INTDLOADLISTENERGY|5 INTDLOADLISTHIST|5 INTDLOADRELATEDCHANNEL|5 INTDLOADSP|5 INTDLOADSTAGING|5 INTDLOADUOM|5 INTDLOADUOMDATES|5 INTDLOADUOMHIST|5 INTDLOADVERSION|5 INTDOPEN|5 INTDREADFIRST|5 INTDREADNEXT|5 INTDRECCOUNT|5 INTDRELEASE|5 INTDREPLACE|5 INTDROLLAVG|5 INTDROLLPEAK|5 INTDSCALAROP|5 INTDSCALE|5 INTDSETATTRIBUTE|5 INTDSETDSTPARTICIPANT|5 INTDSETSTRING|5 INTDSETVALUE|5 INTDSETVALUESTATUS|5 INTDSHIFTSTARTTIME|5 INTDSMOOTH|5 INTDSORT|5 INTDSPIKETEST|5 INTDSUBSET|5 INTDTOU|5 INTDTOURELEASE|5 INTDTOUVALUE|5 INTDUPDATESTATS|5 INTDVALUE|5 STDEV INTDDELETEEX|5 INTDLOADEXACTUAL|5 INTDLOADEXCUT|5 INTDLOADEXDATES|5 INTDLOADEX|5 INTDLOADEXRELATEDCHANNEL|5 INTDSAVEEX|5 MVLOAD|5 MVLOADACCT|5 MVLOADACCTDATES|5 MVLOADACCTHIST|5 MVLOADDATES|5 MVLOADHIST|5 MVLOADLIST|5 MVLOADLISTDATES|5 MVLOADLISTHIST|5 IF FOR NEXT DONE SELECT END CALL ABORT CLEAR CHANNEL FACTOR LIST NUMBER OVERRIDE SET WEEK DISTRIBUTIONNODE ELSE WHEN THEN OTHERWISE IENUM CSV INCLUDE LEAVE RIDER SAVE DELETE NOVALUE SECTION WARN SAVE_UPDATE DETERMINANT LABEL REPORT REVENUE EACH IN FROM TOTAL CHARGE BLOCK AND OR CSV_FILE RATE_CODE AUXILIARY_DEMAND UIDACCOUNT RS BILL_PERIOD_SELECT HOURS_PER_MONTH INTD_ERROR_STOP SEASON_SCHEDULE_NAME ACCOUNTFACTOR ARRAYUPPERBOUND CALLSTOREDPROC GETADOCONNECTION GETCONNECT GETDATASOURCE GETQUALIFIER GETUSERID HASVALUE LISTCOUNT LISTOP LISTUPDATE LISTVALUE PRORATEFACTOR RSPRORATE SETBINPATH SETDBMONITOR WQ_OPEN BILLINGHOURS DATE DATEFROMFLOAT DATETIMEFROMSTRING DATETIMETOSTRING DATETOFLOAT DAY DAYDIFF DAYNAME DBDATETIME HOUR MINUTE MONTH MONTHDIFF MONTHHOURS MONTHNAME ROUNDDATE SAMEWEEKDAYLASTYEAR SECOND WEEKDAY WEEKDIFF YEAR YEARDAY YEARSTR COMPSUM HISTCOUNT HISTMAX HISTMIN HISTMINNZ HISTVALUE MAXNRANGE MAXRANGE MINRANGE COMPIKVA COMPKVA COMPKVARFROMKQKW COMPLF IDATTR FLAG LF2KW LF2KWH MAXKW POWERFACTOR READING2USAGE AVGSEASON MAXSEASON MONTHLYMERGE SEASONVALUE SUMSEASON ACCTREADDATES ACCTTABLELOAD CONFIGADD CONFIGGET CREATEOBJECT CREATEREPORT EMAILCLIENT EXPBLKMDMUSAGE EXPMDMUSAGE EXPORT_USAGE FACTORINEFFECT GETUSERSPECIFIEDSTOP INEFFECT ISHOLIDAY RUNRATE SAVE_PROFILE SETREPORTTITLE USEREXIT WATFORRUNRATE TO TABLE ACOS ASIN ATAN ATAN2 BITAND CEIL COS COSECANT COSH COTANGENT DIVQUOT DIVREM EXP FABS FLOOR FMOD FREPM FREXPN LOG LOG10 MAX MAXN MIN MINNZ MODF POW ROUND ROUND2VALUE ROUNDINT SECANT SIN SINH SQROOT TAN TANH FLOAT2STRING FLOAT2STRINGNC INSTR LEFT LEN LTRIM MID RIGHT RTRIM STRING STRINGNC TOLOWER TOUPPER TRIM NUMDAYS READ_DATE STAGING",built_in:"IDENTIFIER OPTIONS XML_ELEMENT XML_OP XML_ELEMENT_OF DOMDOCCREATE DOMDOCLOADFILE DOMDOCLOADXML DOMDOCSAVEFILE DOMDOCGETROOT DOMDOCADDPI DOMNODEGETNAME DOMNODEGETTYPE DOMNODEGETVALUE DOMNODEGETCHILDCT DOMNODEGETFIRSTCHILD DOMNODEGETSIBLING DOMNODECREATECHILDELEMENT DOMNODESETATTRIBUTE DOMNODEGETCHILDELEMENTCT DOMNODEGETFIRSTCHILDELEMENT DOMNODEGETSIBLINGELEMENT DOMNODEGETATTRIBUTECT DOMNODEGETATTRIBUTEI DOMNODEGETATTRIBUTEBYNAME DOMNODEGETBYNAME"},c:[T.CLCM,T.CBCM,T.ASM,T.QSM,T.CNM,{cN:"literal",v:[{b:"#\\s+[a-zA-Z\\ \\.]*",r:0},{b:"#[a-zA-Z\\ \\.]+"}]}]}});hljs.registerLanguage("crystal",function(e){function r(e,r){var b=[{b:e,e:r}];return b[0].c=b,b}var b="(_[uif](8|16|32|64))?",c="[a-zA-Z_]\\w*[!?=]?",n="!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",i="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\][=?]?",s={keyword:"abstract alias as asm begin break case class def do else elsif end ensure enum extend for fun if ifdef include instance_sizeof is_a? lib macro module next of out pointerof private protected rescue responds_to? return require self sizeof struct super then type typeof union unless until when while with yield __DIR__ __FILE__ __LINE__",literal:"false nil true"},t={cN:"subst",b:"#{",e:"}",k:s},a={cN:"template-variable",v:[{b:"\\{\\{",e:"\\}\\}"},{b:"\\{%",e:"%\\}"}],k:s},l={cN:"string",c:[e.BE,t],v:[{b:/'/,e:/'/},{b:/"/,e:/"/},{b:/`/,e:/`/},{b:"%w?\\(",e:"\\)",c:r("\\(","\\)")},{b:"%w?\\[",e:"\\]",c:r("\\[","\\]")},{b:"%w?{",e:"}",c:r("{","}")},{b:"%w?<",e:">",c:r("<",">")},{b:"%w?/",e:"/"},{b:"%w?%",e:"%"},{b:"%w?-",e:"-"},{b:"%w?\\|",e:"\\|"}],r:0},u={b:"("+n+")\\s*",c:[{cN:"regexp",c:[e.BE,t],v:[{b:"//[a-z]*",r:0},{b:"/",e:"/[a-z]*"},{b:"%r\\(",e:"\\)",c:r("\\(","\\)")},{b:"%r\\[",e:"\\]",c:r("\\[","\\]")},{b:"%r{",e:"}",c:r("{","}")},{b:"%r<",e:">",c:r("<",">")},{b:"%r/",e:"/"},{b:"%r%",e:"%"},{b:"%r-",e:"-"},{b:"%r\\|",e:"\\|"}]}],r:0},o={cN:"regexp",c:[e.BE,t],v:[{b:"%r\\(",e:"\\)",c:r("\\(","\\)")},{b:"%r\\[",e:"\\]",c:r("\\[","\\]")},{b:"%r{",e:"}",c:r("{","}")},{b:"%r<",e:">",c:r("<",">")},{b:"%r/",e:"/"},{b:"%r%",e:"%"},{b:"%r-",e:"-"},{b:"%r\\|",e:"\\|"}],r:0},_={cN:"meta",b:"@\\[",e:"\\]",c:[e.inherit(e.QSM,{cN:"meta-string"})]},f=[a,l,u,o,_,e.HCM,{cN:"class",bK:"class module struct",e:"$|;",i:/=/,c:[e.HCM,e.inherit(e.TM,{b:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{b:"<"}]},{cN:"class",bK:"lib enum union",e:"$|;",i:/=/,c:[e.HCM,e.inherit(e.TM,{b:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"})],r:10},{cN:"function",bK:"def",e:/\B\b/,c:[e.inherit(e.TM,{b:i,endsParent:!0})]},{cN:"function",bK:"fun macro",e:/\B\b/,c:[e.inherit(e.TM,{b:i,endsParent:!0})],r:5},{cN:"symbol",b:e.UIR+"(\\!|\\?)?:",r:0},{cN:"symbol",b:":",c:[l,{b:i}],r:0},{cN:"number",v:[{b:"\\b0b([01_]*[01])"+b},{b:"\\b0o([0-7_]*[0-7])"+b},{b:"\\b0x([A-Fa-f0-9_]*[A-Fa-f0-9])"+b},{b:"\\b(([0-9][0-9_]*[0-9]|[0-9])(\\.[0-9_]*[0-9])?([eE][+-]?[0-9_]*[0-9])?)"+b}],r:0}];return t.c=f,a.c=f.slice(1),{aliases:["cr"],l:c,k:s,c:f}});hljs.registerLanguage("perl",function(e){var t="getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qqfileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmgetsub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedirioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when",r={cN:"subst",b:"[$@]\\{",e:"\\}",k:t},s={b:"->{",e:"}"},n={v:[{b:/\$\d/},{b:/[\$%@](\^\w\b|#\w+(::\w+)*|{\w+}|\w+(::\w*)*)/},{b:/[\$%@][^\s\w{]/,r:0}]},i=[e.BE,r,n],o=[n,e.HCM,e.C("^\\=\\w","\\=cut",{eW:!0}),s,{cN:"string",c:i,v:[{b:"q[qwxr]?\\s*\\(",e:"\\)",r:5},{b:"q[qwxr]?\\s*\\[",e:"\\]",r:5},{b:"q[qwxr]?\\s*\\{",e:"\\}",r:5},{b:"q[qwxr]?\\s*\\|",e:"\\|",r:5},{b:"q[qwxr]?\\s*\\<",e:"\\>",r:5},{b:"qw\\s+q",e:"q",r:5},{b:"'",e:"'",c:[e.BE]},{b:'"',e:'"'},{b:"`",e:"`",c:[e.BE]},{b:"{\\w+}",c:[],r:0},{b:"-?\\w+\\s*\\=\\>",c:[],r:0}]},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{b:"(\\/\\/|"+e.RSR+"|\\b(split|return|print|reverse|grep)\\b)\\s*",k:"split return print reverse grep",r:0,c:[e.HCM,{cN:"regexp",b:"(s|tr|y)/(\\\\.|[^/])*/(\\\\.|[^/])*/[a-z]*",r:10},{cN:"regexp",b:"(m|qr)?/",e:"/[a-z]*",c:[e.BE],r:0}]},{cN:"function",bK:"sub",e:"(\\s*\\(.*?\\))?[;{]",eE:!0,r:5,c:[e.TM]},{b:"-\\w\\b",r:0},{b:"^__DATA__$",e:"^__END__$",sL:"mojolicious",c:[{b:"^@@.*",e:"$",cN:"comment"}]}];return r.c=o,s.c=o,{aliases:["pl","pm"],l:/[\w\.]+/,k:t,c:o}});hljs.registerLanguage("nginx",function(e){var r={cN:"variable",v:[{b:/\$\d+/},{b:/\$\{/,e:/}/},{b:"[\\$\\@]"+e.UIR}]},b={eW:!0,l:"[a-z/_]+",k:{literal:"on off yes no true false none blocked debug info notice warn error crit select break last permanent redirect kqueue rtsig epoll poll /dev/poll"},r:0,i:"=>",c:[e.HCM,{cN:"string",c:[e.BE,r],v:[{b:/"/,e:/"/},{b:/'/,e:/'/}]},{b:"([a-z]+):/",e:"\\s",eW:!0,eE:!0,c:[r]},{cN:"regexp",c:[e.BE,r],v:[{b:"\\s\\^",e:"\\s|{|;",rE:!0},{b:"~\\*?\\s+",e:"\\s|{|;",rE:!0},{b:"\\*(\\.[a-z\\-]+)+"},{b:"([a-z\\-]+\\.)+\\*"}]},{cN:"number",b:"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b"},{cN:"number",b:"\\b\\d+[kKmMgGdshdwy]*\\b",r:0},r]};return{aliases:["nginxconf"],c:[e.HCM,{b:e.UIR+"\\s+{",rB:!0,e:"{",c:[{cN:"section",b:e.UIR}],r:0},{b:e.UIR+"\\s",e:";|{",rB:!0,c:[{cN:"attribute",b:e.UIR,starts:b}],r:0}],i:"[^\\s\\}]"}});hljs.registerLanguage("xml",function(s){var e="[A-Za-z0-9\\._:-]+",t={eW:!0,i:/`]+/}]}]}]};return{aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist"],cI:!0,c:[{cN:"meta",b:"",r:10,c:[{b:"\\[",e:"\\]"}]},s.C("",{r:10}),{b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{b:/<\?(php)?/,e:/\?>/,sL:"php",c:[{b:"/\\*",e:"\\*/",skip:!0}]},{cN:"tag",b:"|$)",e:">",k:{name:"style"},c:[t],starts:{e:"",rE:!0,sL:["css","xml"]}},{cN:"tag",b:"|$)",e:">",k:{name:"script"},c:[t],starts:{e:"",rE:!0,sL:["actionscript","javascript","handlebars","xml"]}},{cN:"meta",v:[{b:/<\?xml/,e:/\?>/,r:10},{b:/<\?\w+/,e:/\?>/}]},{cN:"tag",b:"",c:[{cN:"name",b:/[^\/><\s]+/,r:0},t]}]}});hljs.registerLanguage("crmsh",function(t){var e="primitive rsc_template",r="group clone ms master location colocation order fencing_topology rsc_ticket acl_target acl_group user role tag xml",s="property rsc_defaults op_defaults",a="params meta operations op rule attributes utilization",i="read write deny defined not_defined in_range date spec in ref reference attribute type xpath version and or lt gt tag lte gte eq ne \\",o="number string",n="Master Started Slave Stopped start promote demote stop monitor true false";return{aliases:["crm","pcmk"],cI:!0,k:{keyword:a+" "+i+" "+o,literal:n},c:[t.HCM,{bK:"node",starts:{e:"\\s*([\\w_-]+:)?",starts:{cN:"title",e:"\\s*[\\$\\w_][\\w_-]*"}}},{bK:e,starts:{cN:"title",e:"\\s*[\\$\\w_][\\w_-]*",starts:{e:"\\s*@?[\\w_][\\w_\\.:-]*"}}},{b:"\\b("+r.split(" ").join("|")+")\\s+",k:r,starts:{cN:"title",e:"[\\$\\w_][\\w_-]*"}},{bK:s,starts:{cN:"title",e:"\\s*([\\w_-]+:)?"}},t.QSM,{cN:"meta",b:"(ocf|systemd|service|lsb):[\\w_:-]+",r:0},{cN:"number",b:"\\b\\d+(\\.\\d+)?(ms|s|h|m)?",r:0},{cN:"literal",b:"[-]?(infinity|inf)",r:0},{cN:"attr",b:/([A-Za-z\$_\#][\w_-]+)=/,r:0},{cN:"tag",b:"",r:0}]}});hljs.registerLanguage("ebnf",function(a){var e=a.C(/\(\*/,/\*\)/),t={cN:"attribute",b:/^[ ]*[a-zA-Z][a-zA-Z-]*([\s-]+[a-zA-Z][a-zA-Z]*)*/},r={cN:"meta",b:/\?.*\?/},b={b:/=/,e:/;/,c:[e,r,a.ASM,a.QSM]};return{i:/\S/,c:[e,t,b]}});hljs.registerLanguage("matlab",function(e){var a=[e.CNM,{cN:"string",b:"'",e:"'",c:[e.BE,{b:"''"}]}],s={r:0,c:[{b:/'['\.]*/}]};return{k:{keyword:"break case catch classdef continue else elseif end enumerated events for function global if methods otherwise parfor persistent properties return spmd switch try while",built_in:"sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i inf nan isnan isinf isfinite j why compan gallery hadamard hankel hilb invhilb magic pascal rosser toeplitz vander wilkinson"},i:'(//|"|#|/\\*|\\s+/\\w+)',c:[{cN:"function",bK:"function",e:"$",c:[e.UTM,{cN:"params",v:[{b:"\\(",e:"\\)"},{b:"\\[",e:"\\]"}]}]},{b:/[a-zA-Z_][a-zA-Z_0-9]*'['\.]*/,rB:!0,r:0,c:[{b:/[a-zA-Z_][a-zA-Z_0-9]*/,r:0},s.c[0]]},{b:"\\[",e:"\\]",c:a,r:0,starts:s},{b:"\\{",e:/}/,c:a,r:0,starts:s},{b:/\)/,r:0,starts:s},e.C("^\\s*\\%\\{\\s*$","^\\s*\\%\\}\\s*$"),e.C("\\%","$")].concat(a)}});hljs.registerLanguage("q",function(e){var s={keyword:"do while select delete by update from",literal:"0b 1b",built_in:"neg not null string reciprocal floor ceiling signum mod xbar xlog and or each scan over prior mmu lsq inv md5 ltime gtime count first var dev med cov cor all any rand sums prds mins maxs fills deltas ratios avgs differ prev next rank reverse iasc idesc asc desc msum mcount mavg mdev xrank mmin mmax xprev rotate distinct group where flip type key til get value attr cut set upsert raze union inter except cross sv vs sublist enlist read0 read1 hopen hclose hdel hsym hcount peach system ltrim rtrim trim lower upper ssr view tables views cols xcols keys xkey xcol xasc xdesc fkeys meta lj aj aj0 ij pj asof uj ww wj wj1 fby xgroup ungroup ej save load rsave rload show csv parse eval min max avg wavg wsum sin cos tan sum",type:"`float `double int `timestamp `timespan `datetime `time `boolean `symbol `char `byte `short `long `real `month `date `minute `second `guid"};return{aliases:["k","kdb"],k:s,l:/(`?)[A-Za-z0-9_]+\b/,c:[e.CLCM,e.QSM,e.CNM]}});hljs.registerLanguage("json",function(e){var i={literal:"true false null"},n=[e.QSM,e.CNM],r={e:",",eW:!0,eE:!0,c:n,k:i},t={b:"{",e:"}",c:[{cN:"attr",b:/"/,e:/"/,c:[e.BE],i:"\\n"},e.inherit(r,{b:/:/})],i:"\\S"},c={b:"\\[",e:"\\]",c:[e.inherit(r)],i:"\\S"};return n.splice(n.length,0,t,c),{c:n,k:i,i:"\\S"}});hljs.registerLanguage("applescript",function(e){var t=e.inherit(e.QSM,{i:""}),r={cN:"params",b:"\\(",e:"\\)",c:["self",e.CNM,t]},i=e.C("--","$"),o=e.C("\\(\\*","\\*\\)",{c:["self",i]}),n=[i,o,e.HCM];return{aliases:["osascript"],k:{keyword:"about above after against and around as at back before beginning behind below beneath beside between but by considering contain contains continue copy div does eighth else end equal equals error every exit fifth first for fourth from front get given global if ignoring in into is it its last local me middle mod my ninth not of on onto or over prop property put ref reference repeat returning script second set seventh since sixth some tell tenth that the|0 then third through thru timeout times to transaction try until where while whose with without",literal:"AppleScript false linefeed return pi quote result space tab true",built_in:"alias application boolean class constant date file integer list number real record string text activate beep count delay launch log offset read round run say summarize write character characters contents day frontmost id item length month name paragraph paragraphs rest reverse running time version weekday word words year"},c:[t,e.CNM,{cN:"built_in",b:"\\b(clipboard info|the clipboard|info for|list (disks|folder)|mount volume|path to|(close|open for) access|(get|set) eof|current date|do shell script|get volume settings|random number|set volume|system attribute|system info|time to GMT|(load|run|store) script|scripting components|ASCII (character|number)|localized string|choose (application|color|file|file name|folder|from list|remote application|URL)|display (alert|dialog))\\b|^\\s*return\\b"},{cN:"literal",b:"\\b(text item delimiters|current application|missing value)\\b"},{cN:"keyword",b:"\\b(apart from|aside from|instead of|out of|greater than|isn't|(doesn't|does not) (equal|come before|come after|contain)|(greater|less) than( or equal)?|(starts?|ends|begins?) with|contained by|comes (before|after)|a (ref|reference)|POSIX file|POSIX path|(date|time) string|quoted form)\\b"},{bK:"on",i:"[${=;\\n]",c:[e.UTM,r]}].concat(n),i:"//|->|=>|\\[\\["}});hljs.registerLanguage("autohotkey",function(e){var r={b:/`[\s\S]/};return{cI:!0,k:{keyword:"Break Continue Else Gosub If Loop Return While",literal:"A|0 true false NOT AND OR",built_in:"ComSpec Clipboard ClipboardAll ErrorLevel"},c:[{cN:"built_in",b:"A_[a-zA-Z0-9]+"},r,e.inherit(e.QSM,{c:[r]}),e.C(";","$",{r:0}),{cN:"number",b:e.NR,r:0},{cN:"variable",b:"%",e:"%",i:"\\n",c:[r]},{cN:"symbol",c:[r],v:[{b:'^[^\\n";]+::(?!=)'},{b:'^[^\\n";]+:(?!=)',r:0}]},{b:",\\s*,"}]}});hljs.registerLanguage("moonscript",function(e){var t={keyword:"if then not for in while do return else elseif break continue switch and or unless when class extends super local import export from using",literal:"true false nil",built_in:"_G _VERSION assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall coroutine debug io math os package string table"},r="[A-Za-z$_][0-9A-Za-z$_]*",s={cN:"subst",b:/#\{/,e:/}/,k:t},a=[e.inherit(e.CNM,{starts:{e:"(\\s*/)?",r:0}}),{cN:"string",v:[{b:/'/,e:/'/,c:[e.BE]},{b:/"/,e:/"/,c:[e.BE,s]}]},{cN:"built_in",b:"@__"+e.IR},{b:"@"+e.IR},{b:e.IR+"\\\\"+e.IR}];s.c=a;var c=e.inherit(e.TM,{b:r}),n="(\\(.*\\))?\\s*\\B[-=]>",i={cN:"params",b:"\\([^\\(]",rB:!0,c:[{b:/\(/,e:/\)/,k:t,c:["self"].concat(a)}]};return{aliases:["moon"],k:t,i:/\/\*/,c:a.concat([e.C("--","$"),{cN:"function",b:"^\\s*"+r+"\\s*=\\s*"+n,e:"[-=]>",rB:!0,c:[c,i]},{b:/[\(,:=]\s*/,r:0,c:[{cN:"function",b:n,e:"[-=]>",rB:!0,c:[i]}]},{cN:"class",bK:"class",e:"$",i:/[:="\[\]]/,c:[{bK:"extends",eW:!0,i:/[:="\[\]]/,c:[c]},c]},{cN:"name",b:r+":",e:":",rB:!0,rE:!0,r:0}])}});hljs.registerLanguage("xl",function(e){var t="ObjectLoader Animate MovieCredits Slides Filters Shading Materials LensFlare Mapping VLCAudioVideo StereoDecoder PointCloud NetworkAccess RemoteControl RegExp ChromaKey Snowfall NodeJS Speech Charts",o={keyword:"if then else do while until for loop import with is as where when by data constant integer real text name boolean symbol infix prefix postfix block tree",literal:"true false nil",built_in:"in mod rem and or xor not abs sign floor ceil sqrt sin cos tan asin acos atan exp expm1 log log2 log10 log1p pi at text_length text_range text_find text_replace contains page slide basic_slide title_slide title subtitle fade_in fade_out fade_at clear_color color line_color line_width texture_wrap texture_transform texture scale_?x scale_?y scale_?z? translate_?x translate_?y translate_?z? rotate_?x rotate_?y rotate_?z? rectangle circle ellipse sphere path line_to move_to quad_to curve_to theme background contents locally time mouse_?x mouse_?y mouse_buttons "+t},a={cN:"string",b:'"',e:'"',i:"\\n"},r={cN:"string",b:"'",e:"'",i:"\\n"},i={cN:"string",b:"<<",e:">>"},l={cN:"number",b:"[0-9]+#[0-9A-Z_]+(\\.[0-9-A-Z_]+)?#?([Ee][+-]?[0-9]+)?"},n={bK:"import",e:"$",k:o,c:[a]},s={cN:"function",b:/[a-z][^\n]*->/,rB:!0,e:/->/,c:[e.inherit(e.TM,{starts:{eW:!0,k:o}})]};return{aliases:["tao"],l:/[a-zA-Z][a-zA-Z0-9_?]*/,k:o,c:[e.CLCM,e.CBCM,a,r,i,s,n,l,e.NM]}});hljs.registerLanguage("avrasm",function(r){return{cI:!0,l:"\\.?"+r.IR,k:{keyword:"adc add adiw and andi asr bclr bld brbc brbs brcc brcs break breq brge brhc brhs brid brie brlo brlt brmi brne brpl brsh brtc brts brvc brvs bset bst call cbi cbr clc clh cli cln clr cls clt clv clz com cp cpc cpi cpse dec eicall eijmp elpm eor fmul fmuls fmulsu icall ijmp in inc jmp ld ldd ldi lds lpm lsl lsr mov movw mul muls mulsu neg nop or ori out pop push rcall ret reti rjmp rol ror sbc sbr sbrc sbrs sec seh sbi sbci sbic sbis sbiw sei sen ser ses set sev sez sleep spm st std sts sub subi swap tst wdr",built_in:"r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 r16 r17 r18 r19 r20 r21 r22 r23 r24 r25 r26 r27 r28 r29 r30 r31 x|0 xh xl y|0 yh yl z|0 zh zl ucsr1c udr1 ucsr1a ucsr1b ubrr1l ubrr1h ucsr0c ubrr0h tccr3c tccr3a tccr3b tcnt3h tcnt3l ocr3ah ocr3al ocr3bh ocr3bl ocr3ch ocr3cl icr3h icr3l etimsk etifr tccr1c ocr1ch ocr1cl twcr twdr twar twsr twbr osccal xmcra xmcrb eicra spmcsr spmcr portg ddrg ping portf ddrf sreg sph spl xdiv rampz eicrb eimsk gimsk gicr eifr gifr timsk tifr mcucr mcucsr tccr0 tcnt0 ocr0 assr tccr1a tccr1b tcnt1h tcnt1l ocr1ah ocr1al ocr1bh ocr1bl icr1h icr1l tccr2 tcnt2 ocr2 ocdr wdtcr sfior eearh eearl eedr eecr porta ddra pina portb ddrb pinb portc ddrc pinc portd ddrd pind spdr spsr spcr udr0 ucsr0a ucsr0b ubrr0l acsr admux adcsr adch adcl porte ddre pine pinf",meta:".byte .cseg .db .def .device .dseg .dw .endmacro .equ .eseg .exit .include .list .listmac .macro .nolist .org .set"},c:[r.CBCM,r.C(";","$",{r:0}),r.CNM,r.BNM,{cN:"number",b:"\\b(\\$[a-zA-Z0-9]+|0o[0-7]+)"},r.QSM,{cN:"string",b:"'",e:"[^\\\\]'",i:"[^\\\\][^']"},{cN:"symbol",b:"^[A-Za-z0-9_.$]+:"},{cN:"meta",b:"#",e:"$"},{cN:"subst",b:"@[0-9]+"}]}});hljs.registerLanguage("vhdl",function(e){var r="\\d(_|\\d)*",t="[eE][-+]?"+r,o=r+"(\\."+r+")?("+t+")?",n="\\w+",i=r+"#"+n+"(\\."+n+")?#("+t+")?",a="\\b("+i+"|"+o+")";return{cI:!0,k:{keyword:"abs access after alias all and architecture array assert attribute begin block body buffer bus case component configuration constant context cover disconnect downto default else elsif end entity exit fairness file for force function generate generic group guarded if impure in inertial inout is label library linkage literal loop map mod nand new next nor not null of on open or others out package port postponed procedure process property protected pure range record register reject release rem report restrict restrict_guarantee return rol ror select sequence severity shared signal sla sll sra srl strong subtype then to transport type unaffected units until use variable vmode vprop vunit wait when while with xnor xor",built_in:"boolean bit character severity_level integer time delay_length natural positive string bit_vector file_open_kind file_open_status std_ulogic std_ulogic_vector std_logic std_logic_vector unsigned signed boolean_vector integer_vector real_vector time_vector"},i:"{",c:[e.CBCM,e.C("--","$"),e.QSM,{cN:"number",b:a,r:0},{cN:"literal",b:"'(U|X|0|1|Z|W|L|H|-)'",c:[e.BE]},{cN:"symbol",b:"'[A-Za-z](_?[A-Za-z0-9])*",c:[e.BE]}]}});hljs.registerLanguage("erb",function(e){return{sL:"xml",c:[e.C("<%#","%>"),{b:"<%[%=-]?",e:"[%-]?%>",sL:"ruby",eB:!0,eE:!0}]}});hljs.registerLanguage("twig",function(e){var t={cN:"params",b:"\\(",e:"\\)"},a="attribute block constant cycle date dump include max min parent random range source template_from_string",r={bK:a,k:{name:a},r:0,c:[t]},c={b:/\|[A-Za-z_]+:?/,k:"abs batch capitalize convert_encoding date date_modify default escape first format join json_encode keys last length lower merge nl2br number_format raw replace reverse round slice sort split striptags title trim upper url_encode",c:[r]},s="autoescape block do embed extends filter flush for if import include macro sandbox set spaceless use verbatim";return s=s+" "+s.split(" ").map(function(e){return"end"+e}).join(" "),{aliases:["craftcms"],cI:!0,sL:"xml",c:[e.C(/\{#/,/#}/),{cN:"template-tag",b:/\{%/,e:/%}/,c:[{cN:"name",b:/\w+/,k:s,starts:{eW:!0,c:[c,r],r:0}}]},{cN:"template-variable",b:/\{\{/,e:/}}/,c:["self",c,r]}]}});hljs.registerLanguage("apache",function(e){var r={cN:"number",b:"[\\$%]\\d+"};return{aliases:["apacheconf"],cI:!0,c:[e.HCM,{cN:"section",b:""},{cN:"attribute",b:/\w+/,r:0,k:{nomarkup:"order deny allow setenv rewriterule rewriteengine rewritecond documentroot sethandler errordocument loadmodule options header listen serverroot servername"},starts:{e:/$/,r:0,k:{literal:"on off all"},c:[{cN:"meta",b:"\\s\\[",e:"\\]$"},{cN:"variable",b:"[\\$%]\\{",e:"\\}",c:["self",r]},r,e.QSM]}}],i:/\S/}});hljs.registerLanguage("nsis",function(e){var t={cN:"variable",b:"\\$(ADMINTOOLS|APPDATA|CDBURN_AREA|CMDLINE|COMMONFILES32|COMMONFILES64|COMMONFILES|COOKIES|DESKTOP|DOCUMENTS|EXEDIR|EXEFILE|EXEPATH|FAVORITES|FONTS|HISTORY|HWNDPARENT|INSTDIR|INTERNET_CACHE|LANGUAGE|LOCALAPPDATA|MUSIC|NETHOOD|OUTDIR|PICTURES|PLUGINSDIR|PRINTHOOD|PROFILE|PROGRAMFILES32|PROGRAMFILES64|PROGRAMFILES|QUICKLAUNCH|RECENT|RESOURCES_LOCALIZED|RESOURCES|SENDTO|SMPROGRAMS|SMSTARTUP|STARTMENU|SYSDIR|TEMP|TEMPLATES|VIDEOS|WINDIR)"},i={cN:"variable",b:"\\$+{[a-zA-Z0-9_]+}"},n={cN:"variable",b:"\\$+[a-zA-Z0-9_]+",i:"\\(\\){}"},r={cN:"variable",b:"\\$+\\([a-zA-Z0-9_]+\\)"},l={cN:"built_in",b:"(ARCHIVE|FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_NORMAL|FILE_ATTRIBUTE_OFFLINE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_TEMPORARY|HKCR|HKCU|HKDD|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_DYN_DATA|HKEY_LOCAL_MACHINE|HKEY_PERFORMANCE_DATA|HKEY_USERS|HKLM|HKPD|HKU|IDABORT|IDCANCEL|IDIGNORE|IDNO|IDOK|IDRETRY|IDYES|MB_ABORTRETRYIGNORE|MB_DEFBUTTON1|MB_DEFBUTTON2|MB_DEFBUTTON3|MB_DEFBUTTON4|MB_ICONEXCLAMATION|MB_ICONINFORMATION|MB_ICONQUESTION|MB_ICONSTOP|MB_OK|MB_OKCANCEL|MB_RETRYCANCEL|MB_RIGHT|MB_RTLREADING|MB_SETFOREGROUND|MB_TOPMOST|MB_USERICON|MB_YESNO|NORMAL|OFFLINE|READONLY|SHCTX|SHELL_CONTEXT|SYSTEM|TEMPORARY)"},o={cN:"keyword",b:"\\!(addincludedir|addplugindir|appendfile|cd|define|delfile|echo|else|endif|error|execute|finalize|getdllversionsystem|ifdef|ifmacrodef|ifmacrondef|ifndef|if|include|insertmacro|macroend|macro|makensis|packhdr|searchparse|searchreplace|tempfile|undef|verbose|warning)"};return{cI:!1,k:{keyword:"Abort AddBrandingImage AddSize AllowRootDirInstall AllowSkipFiles AutoCloseWindow BGFont BGGradient BrandingText BringToFront Call CallInstDLL Caption ChangeUI CheckBitmap ClearErrors CompletedText ComponentText CopyFiles CRCCheck CreateDirectory CreateFont CreateShortCut Delete DeleteINISec DeleteINIStr DeleteRegKey DeleteRegValue DetailPrint DetailsButtonText DirText DirVar DirVerify EnableWindow EnumRegKey EnumRegValue Exch Exec ExecShell ExecWait ExpandEnvStrings File FileBufSize FileClose FileErrorText FileOpen FileRead FileReadByte FileReadUTF16LE FileReadWord FileSeek FileWrite FileWriteByte FileWriteUTF16LE FileWriteWord FindClose FindFirst FindNext FindWindow FlushINI FunctionEnd GetCurInstType GetCurrentAddress GetDlgItem GetDLLVersion GetDLLVersionLocal GetErrorLevel GetFileTime GetFileTimeLocal GetFullPathName GetFunctionAddress GetInstDirError GetLabelAddress GetTempFileName Goto HideWindow Icon IfAbort IfErrors IfFileExists IfRebootFlag IfSilent InitPluginsDir InstallButtonText InstallColors InstallDir InstallDirRegKey InstProgressFlags InstType InstTypeGetText InstTypeSetText IntCmp IntCmpU IntFmt IntOp IsWindow LangString LicenseBkColor LicenseData LicenseForceSelection LicenseLangString LicenseText LoadLanguageFile LockWindow LogSet LogText ManifestDPIAware ManifestSupportedOS MessageBox MiscButtonText Name Nop OutFile Page PageCallbacks PageExEnd Pop Push Quit ReadEnvStr ReadINIStr ReadRegDWORD ReadRegStr Reboot RegDLL Rename RequestExecutionLevel ReserveFile Return RMDir SearchPath SectionEnd SectionGetFlags SectionGetInstTypes SectionGetSize SectionGetText SectionGroupEnd SectionIn SectionSetFlags SectionSetInstTypes SectionSetSize SectionSetText SendMessage SetAutoClose SetBrandingImage SetCompress SetCompressor SetCompressorDictSize SetCtlColors SetCurInstType SetDatablockOptimize SetDateSave SetDetailsPrint SetDetailsView SetErrorLevel SetErrors SetFileAttributes SetFont SetOutPath SetOverwrite SetPluginUnload SetRebootFlag SetRegView SetShellVarContext SetSilent ShowInstDetails ShowUninstDetails ShowWindow SilentInstall SilentUnInstall Sleep SpaceTexts StrCmp StrCmpS StrCpy StrLen SubCaption SubSectionEnd Unicode UninstallButtonText UninstallCaption UninstallIcon UninstallSubCaption UninstallText UninstPage UnRegDLL Var VIAddVersionKey VIFileVersion VIProductVersion WindowIcon WriteINIStr WriteRegBin WriteRegDWORD WriteRegExpandStr WriteRegStr WriteUninstaller XPStyle",literal:"admin all auto both colored current false force hide highest lastused leave listonly none normal notset off on open print show silent silentlog smooth textonly true user "},c:[e.HCM,e.CBCM,{cN:"string",b:'"',e:'"',i:"\\n",c:[{b:"\\$(\\\\(n|r|t)|\\$)"},t,i,n,r]},e.C(";","$",{r:0}),{cN:"function",bK:"Function PageEx Section SectionGroup SubSection",e:"$"},o,i,n,r,l,e.NM,{b:e.IR+"::"+e.IR}]}});hljs.registerLanguage("aspectj",function(e){var t="false synchronized int abstract float private char boolean static null if const for true while long throw strictfp finally protected import native final return void enum else extends implements break transient new catch instanceof byte super volatile case assert short package default double public try this switch continue throws privileged aspectOf adviceexecution proceed cflowbelow cflow initialization preinitialization staticinitialization withincode target within execution getWithinTypeName handler thisJoinPoint thisJoinPointStaticPart thisEnclosingJoinPointStaticPart declare parents warning error soft precedence thisAspectInstance",i="get set args call";return{k:t,i:/<\/|#/,c:[e.C("/\\*\\*","\\*/",{r:0,c:[{b:/\w+@/,r:0},{cN:"doctag",b:"@[A-Za-z]+"}]}),e.CLCM,e.CBCM,e.ASM,e.QSM,{cN:"class",bK:"aspect",e:/[{;=]/,eE:!0,i:/[:;"\[\]]/,c:[{bK:"extends implements pertypewithin perthis pertarget percflowbelow percflow issingleton"},e.UTM,{b:/\([^\)]*/,e:/[)]+/,k:t+" "+i,eE:!1}]},{cN:"class",bK:"class interface",e:/[{;=]/,eE:!0,r:0,k:"class interface",i:/[:"\[\]]/,c:[{bK:"extends implements"},e.UTM]},{bK:"pointcut after before around throwing returning",e:/[)]/,eE:!1,i:/["\[\]]/,c:[{b:e.UIR+"\\s*\\(",rB:!0,c:[e.UTM]}]},{b:/[:]/,rB:!0,e:/[{;]/,r:0,eE:!1,k:t,i:/["\[\]]/,c:[{b:e.UIR+"\\s*\\(",k:t+" "+i},e.QSM]},{bK:"new throw",r:0},{cN:"function",b:/\w+ +\w+(\.)?\w+\s*\([^\)]*\)\s*((throws)[\w\s,]+)?[\{;]/,rB:!0,e:/[{;=]/,k:t,eE:!0,c:[{b:e.UIR+"\\s*\\(",rB:!0,r:0,c:[e.UTM]},{cN:"params",b:/\(/,e:/\)/,r:0,k:t,c:[e.ASM,e.QSM,e.CNM,e.CBCM]},e.CLCM,e.CBCM]},e.CNM,{cN:"meta",b:"@[A-Za-z]+"}]}});hljs.registerLanguage("cpp",function(t){var e={cN:"keyword",b:"\\b[a-z\\d_]*_t\\b"},r={cN:"string",v:[{b:'(u8?|U)?L?"',e:'"',i:"\\n",c:[t.BE]},{b:'(u8?|U)?R"',e:'"',c:[t.BE]},{b:"'\\\\?.",e:"'",i:"."}]},s={cN:"number",v:[{b:"\\b(0b[01'_]+)"},{b:"\\b([\\d'_]+(\\.[\\d'_]*)?|\\.[\\d'_]+)(u|U|l|L|ul|UL|f|F|b|B)"},{b:"(-?)(\\b0[xX][a-fA-F0-9'_]+|(\\b[\\d'_]+(\\.[\\d'_]*)?|\\.[\\d'_]+)([eE][-+]?[\\d'_]+)?)"}],r:0},i={cN:"meta",b:/#\s*[a-z]+\b/,e:/$/,k:{"meta-keyword":"if else elif endif define undef warning error line pragma ifdef ifndef include"},c:[{b:/\\\n/,r:0},t.inherit(r,{cN:"meta-string"}),{cN:"meta-string",b:"<",e:">",i:"\\n"},t.CLCM,t.CBCM]},a=t.IR+"\\s*\\(",c={keyword:"int float while private char catch import module export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const struct for static_cast|10 union namespace unsigned long volatile static protected bool template mutable if public friend do goto auto void enum else break extern using class asm case typeid short reinterpret_cast|10 default double register explicit signed typename try this switch continue inline delete alignof constexpr decltype noexcept static_assert thread_local restrict _Bool complex _Complex _Imaginary atomic_bool atomic_char atomic_schar atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong new throw return",built_in:"std string cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap array shared_ptr abort abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr",literal:"true false nullptr NULL"},n=[e,t.CLCM,t.CBCM,s,r];return{aliases:["c","cc","h","c++","h++","hpp"],k:c,i:"",k:c,c:["self",e]},{b:t.IR+"::",k:c},{v:[{b:/=/,e:/;/},{b:/\(/,e:/\)/},{bK:"new throw return else",e:/;/}],k:c,c:n.concat([{b:/\(/,e:/\)/,k:c,c:n.concat(["self"]),r:0}]),r:0},{cN:"function",b:"("+t.IR+"[\\*&\\s]+)+"+a,rB:!0,e:/[{;=]/,eE:!0,k:c,i:/[^\w\s\*&]/,c:[{b:a,rB:!0,c:[t.TM],r:0},{cN:"params",b:/\(/,e:/\)/,k:c,r:0,c:[t.CLCM,t.CBCM,r,s,e]},t.CLCM,t.CBCM,i]}]),exports:{preprocessor:i,strings:r,k:c}}});hljs.registerLanguage("arduino",function(e){var t=e.getLanguage("cpp").exports;return{k:{keyword:"boolean byte word string String array "+t.k.keyword,built_in:"setup loop while catch for if do goto try switch case else default break continue return KeyboardController MouseController SoftwareSerial EthernetServer EthernetClient LiquidCrystal RobotControl GSMVoiceCall EthernetUDP EsploraTFT HttpClient RobotMotor WiFiClient GSMScanner FileSystem Scheduler GSMServer YunClient YunServer IPAddress GSMClient GSMModem Keyboard Ethernet Console GSMBand Esplora Stepper Process WiFiUDP GSM_SMS Mailbox USBHost Firmata PImage Client Server GSMPIN FileIO Bridge Serial EEPROM Stream Mouse Audio Servo File Task GPRS WiFi Wire TFT GSM SPI SD runShellCommandAsynchronously analogWriteResolution retrieveCallingNumber printFirmwareVersion analogReadResolution sendDigitalPortPair noListenOnLocalhost readJoystickButton setFirmwareVersion readJoystickSwitch scrollDisplayRight getVoiceCallStatus scrollDisplayLeft writeMicroseconds delayMicroseconds beginTransmission getSignalStrength runAsynchronously getAsynchronously listenOnLocalhost getCurrentCarrier readAccelerometer messageAvailable sendDigitalPorts lineFollowConfig countryNameWrite runShellCommand readStringUntil rewindDirectory readTemperature setClockDivider readLightSensor endTransmission analogReference detachInterrupt countryNameRead attachInterrupt encryptionType readBytesUntil robotNameWrite readMicrophone robotNameRead cityNameWrite userNameWrite readJoystickY readJoystickX mouseReleased openNextFile scanNetworks noInterrupts digitalWrite beginSpeaker mousePressed isActionDone mouseDragged displayLogos noAutoscroll addParameter remoteNumber getModifiers keyboardRead userNameRead waitContinue processInput parseCommand printVersion readNetworks writeMessage blinkVersion cityNameRead readMessage setDataMode parsePacket isListening setBitOrder beginPacket isDirectory motorsWrite drawCompass digitalRead clearScreen serialEvent rightToLeft setTextSize leftToRight requestFrom keyReleased compassRead analogWrite interrupts WiFiServer disconnect playMelody parseFloat autoscroll getPINUsed setPINUsed setTimeout sendAnalog readSlider analogRead beginWrite createChar motorsStop keyPressed tempoWrite readButton subnetMask debugPrint macAddress writeGreen randomSeed attachGPRS readString sendString remotePort releaseAll mouseMoved background getXChange getYChange answerCall getResult voiceCall endPacket constrain getSocket writeJSON getButton available connected findUntil readBytes exitValue readGreen writeBlue startLoop IPAddress isPressed sendSysex pauseMode gatewayIP setCursor getOemKey tuneWrite noDisplay loadImage switchPIN onRequest onReceive changePIN playFile noBuffer parseInt overflow checkPIN knobRead beginTFT bitClear updateIR bitWrite position writeRGB highByte writeRed setSpeed readBlue noStroke remoteIP transfer shutdown hangCall beginSMS endWrite attached maintain noCursor checkReg checkPUK shiftOut isValid shiftIn pulseIn connect println localIP pinMode getIMEI display noBlink process getBand running beginSD drawBMP lowByte setBand release bitRead prepare pointTo readRed setMode noFill remove listen stroke detach attach noTone exists buffer height bitSet circle config cursor random IRread setDNS endSMS getKey micros millis begin print write ready flush width isPIN blink clear press mkdir rmdir close point yield image BSSID click delay read text move peek beep rect line open seek fill size turn stop home find step tone sqrt RSSI SSID end bit tan cos sin pow map abs max min get run put",literal:"DIGITAL_MESSAGE FIRMATA_STRING ANALOG_MESSAGE REPORT_DIGITAL REPORT_ANALOG INPUT_PULLUP SET_PIN_MODE INTERNAL2V56 SYSTEM_RESET LED_BUILTIN INTERNAL1V1 SYSEX_START INTERNAL EXTERNAL DEFAULT OUTPUT INPUT HIGH LOW"},c:[t.preprocessor,e.CLCM,e.CBCM,e.ASM,e.QSM,e.CNM]}});hljs.registerLanguage("stan",function(e){return{c:[e.HCM,e.CLCM,e.CBCM,{b:e.UIR,l:e.UIR,k:{name:"for in while repeat until if then else",symbol:"bernoulli bernoulli_logit binomial binomial_logit beta_binomial hypergeometric categorical categorical_logit ordered_logistic neg_binomial neg_binomial_2 neg_binomial_2_log poisson poisson_log multinomial normal exp_mod_normal skew_normal student_t cauchy double_exponential logistic gumbel lognormal chi_square inv_chi_square scaled_inv_chi_square exponential inv_gamma weibull frechet rayleigh wiener pareto pareto_type_2 von_mises uniform multi_normal multi_normal_prec multi_normal_cholesky multi_gp multi_gp_cholesky multi_student_t gaussian_dlm_obs dirichlet lkj_corr lkj_corr_cholesky wishart inv_wishart","selector-tag":"int real vector simplex unit_vector ordered positive_ordered row_vector matrix cholesky_factor_corr cholesky_factor_cov corr_matrix cov_matrix",title:"functions model data parameters quantities transformed generated",literal:"true false"},r:0},{cN:"number",b:"0[xX][0-9a-fA-F]+[Li]?\\b",r:0},{cN:"number",b:"0[xX][0-9a-fA-F]+[Li]?\\b",r:0},{cN:"number",b:"\\d+(?:[eE][+\\-]?\\d*)?L\\b",r:0},{cN:"number",b:"\\d+\\.(?!\\d)(?:i\\b)?",r:0},{cN:"number",b:"\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d*)?i?\\b",r:0},{cN:"number",b:"\\.\\d+(?:[eE][+\\-]?\\d*)?i?\\b",r:0}]}});hljs.registerLanguage("inform7",function(e){var r="\\[",o="\\]";return{aliases:["i7"],cI:!0,k:{keyword:"thing room person man woman animal container supporter backdrop door scenery open closed locked inside gender is are say understand kind of rule"},c:[{cN:"string",b:'"',e:'"',r:0,c:[{cN:"subst",b:r,e:o}]},{cN:"section",b:/^(Volume|Book|Part|Chapter|Section|Table)\b/,e:"$"},{b:/^(Check|Carry out|Report|Instead of|To|Rule|When|Before|After)\b/,e:":",c:[{b:"\\(This",e:"\\)"}]},{cN:"comment",b:r,e:o,c:["self"]}]}});hljs.registerLanguage("stylus",function(e){var t={cN:"variable",b:"\\$"+e.IR},o={cN:"number",b:"#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})"},i=["charset","css","debug","extend","font-face","for","import","include","media","mixin","page","warn","while"],r=["after","before","first-letter","first-line","active","first-child","focus","hover","lang","link","visited"],n=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],a="[\\.\\s\\n\\[\\:,]",l=["align-content","align-items","align-self","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","auto","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","clip-path","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","font","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-variant-ligatures","font-weight","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inherit","initial","justify-content","left","letter-spacing","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","max-height","max-width","min-height","min-width","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","perspective","perspective-origin","pointer-events","position","quotes","resize","right","tab-size","table-layout","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-indent","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","white-space","widows","width","word-break","word-spacing","word-wrap","z-index"],d=["\\?","(\\bReturn\\b)","(\\bEnd\\b)","(\\bend\\b)","(\\bdef\\b)",";","#\\s","\\*\\s","===\\s","\\|","%"];return{aliases:["styl"],cI:!1,k:"if else for in",i:"("+d.join("|")+")",c:[e.QSM,e.ASM,e.CLCM,e.CBCM,o,{b:"\\.[a-zA-Z][a-zA-Z0-9_-]*"+a,rB:!0,c:[{cN:"selector-class",b:"\\.[a-zA-Z][a-zA-Z0-9_-]*"}]},{b:"\\#[a-zA-Z][a-zA-Z0-9_-]*"+a,rB:!0,c:[{cN:"selector-id",b:"\\#[a-zA-Z][a-zA-Z0-9_-]*"}]},{b:"\\b("+n.join("|")+")"+a,rB:!0,c:[{cN:"selector-tag",b:"\\b[a-zA-Z][a-zA-Z0-9_-]*"}]},{b:"&?:?:\\b("+r.join("|")+")"+a},{b:"@("+i.join("|")+")\\b"},t,e.CSSNM,e.NM,{cN:"function",b:"^[a-zA-Z][a-zA-Z0-9_-]*\\(.*\\)",i:"[\\n]",rB:!0,c:[{cN:"title",b:"\\b[a-zA-Z][a-zA-Z0-9_-]*"},{cN:"params",b:/\(/,e:/\)/,c:[o,t,e.ASM,e.CSSNM,e.NM,e.QSM]}]},{cN:"attribute",b:"\\b("+l.reverse().join("|")+")\\b",starts:{e:/;|$/,c:[o,t,e.ASM,e.QSM,e.CSSNM,e.NM,e.CBCM],i:/\./,r:0}}]}});hljs.registerLanguage("erlang-repl",function(e){return{k:{built_in:"spawn spawn_link self",keyword:"after and andalso|10 band begin bnot bor bsl bsr bxor case catch cond div end fun if let not of or orelse|10 query receive rem try when xor"},c:[{cN:"meta",b:"^[0-9]+> ",r:10},e.C("%","$"),{cN:"number",b:"\\b(\\d+#[a-fA-F0-9]+|\\d+(\\.\\d+)?([eE][-+]?\\d+)?)",r:0},e.ASM,e.QSM,{b:"\\?(::)?([A-Z]\\w*(::)?)+"},{b:"->"},{b:"ok"},{b:"!"},{b:"(\\b[a-z'][a-zA-Z0-9_']*:[a-z'][a-zA-Z0-9_']*)|(\\b[a-z'][a-zA-Z0-9_']*)",r:0},{b:"[A-Z][a-zA-Z0-9_']*",r:0}]}});hljs.registerLanguage("groovy",function(e){return{k:{literal:"true false null",keyword:"byte short char int long boolean float double void def as in assert trait super this abstract static volatile transient public private protected synchronized final class interface enum if else for while switch case break default continue throw throws try catch finally implements extends new import package return instanceof"},c:[e.C("/\\*\\*","\\*/",{r:0,c:[{b:/\w+@/,r:0},{cN:"doctag",b:"@[A-Za-z]+"}]}),e.CLCM,e.CBCM,{cN:"string",b:'"""',e:'"""'},{cN:"string",b:"'''",e:"'''"},{cN:"string",b:"\\$/",e:"/\\$",r:10},e.ASM,{cN:"regexp",b:/~?\/[^\/\n]+\//,c:[e.BE]},e.QSM,{cN:"meta",b:"^#!/usr/bin/env",e:"$",i:"\n"},e.BNM,{cN:"class",bK:"class interface trait enum",e:"{",i:":",c:[{bK:"extends implements"},e.UTM]},e.CNM,{cN:"meta",b:"@[A-Za-z]+"},{cN:"string",b:/[^\?]{0}[A-Za-z0-9_$]+ *:/},{b:/\?/,e:/\:/},{cN:"symbol",b:"^\\s*[A-Za-z0-9_$]+:",r:0}],i:/#|<\//}});hljs.registerLanguage("lisp",function(b){var e="[a-zA-Z_\\-\\+\\*\\/\\<\\=\\>\\&\\#][a-zA-Z0-9_\\-\\+\\*\\/\\<\\=\\>\\&\\#!]*",c="\\|[^]*?\\|",r="(\\-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|\\-)?\\d+)?",a={cN:"meta",b:"^#!",e:"$"},l={cN:"literal",b:"\\b(t{1}|nil)\\b"},n={cN:"number",v:[{b:r,r:0},{b:"#(b|B)[0-1]+(/[0-1]+)?"},{b:"#(o|O)[0-7]+(/[0-7]+)?"},{b:"#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?"},{b:"#(c|C)\\("+r+" +"+r,e:"\\)"}]},i=b.inherit(b.QSM,{i:null}),t=b.C(";","$",{r:0}),s={b:"\\*",e:"\\*"},u={cN:"symbol",b:"[:&]"+e},d={b:e,r:0},f={b:c},m={b:"\\(",e:"\\)",c:["self",l,i,n,d]},o={c:[n,i,s,u,m,d],v:[{b:"['`]\\(",e:"\\)"},{b:"\\(quote ",e:"\\)",k:{name:"quote"}},{b:"'"+c}]},v={v:[{b:"'"+e},{b:"#'"+e+"(::"+e+")*"}]},N={b:"\\(\\s*",e:"\\)"},A={eW:!0,r:0};return N.c=[{cN:"name",v:[{b:e},{b:c}]},A],A.c=[o,v,N,l,n,i,t,s,u,f,d],{i:/\S/,c:[n,a,l,i,t,o,v,N,d]}});hljs.registerLanguage("tex",function(c){var e={cN:"tag",b:/\\/,r:0,c:[{cN:"name",v:[{b:/[a-zA-Zа-яА-я]+[*]?/},{b:/[^a-zA-Zа-яА-я0-9]/}],starts:{eW:!0,r:0,c:[{cN:"string",v:[{b:/\[/,e:/\]/},{b:/\{/,e:/\}/}]},{b:/\s*=\s*/,eW:!0,r:0,c:[{cN:"number",b:/-?\d*\.?\d+(pt|pc|mm|cm|in|dd|cc|ex|em)?/}]}]}}]};return{c:[e,{cN:"formula",c:[e],r:0,v:[{b:/\$\$/,e:/\$\$/},{b:/\$/,e:/\$/}]},c.C("%","$",{r:0})]}});hljs.registerLanguage("livescript",function(e){var t={keyword:"in if for while finally new do return else break catch instanceof throw try this switch continue typeof delete debugger case default function var with then unless until loop of by when and or is isnt not it that otherwise from to til fallthrough super case default function var void const let enum export import native __hasProp __extends __slice __bind __indexOf",literal:"true false null undefined yes no on off it that void",built_in:"npm require console print module global window document"},s="[A-Za-z$_](?:-[0-9A-Za-z$_]|[0-9A-Za-z$_])*",n=e.inherit(e.TM,{b:s}),i={cN:"subst",b:/#\{/,e:/}/,k:t},r={cN:"subst",b:/#[A-Za-z$_]/,e:/(?:\-[0-9A-Za-z$_]|[0-9A-Za-z$_])*/,k:t},c=[e.BNM,{cN:"number",b:"(\\b0[xX][a-fA-F0-9_]+)|(\\b\\d(\\d|_\\d)*(\\.(\\d(\\d|_\\d)*)?)?(_*[eE]([-+]\\d(_\\d|\\d)*)?)?[_a-z]*)",r:0,starts:{e:"(\\s*/)?",r:0}},{cN:"string",v:[{b:/'''/,e:/'''/,c:[e.BE]},{b:/'/,e:/'/,c:[e.BE]},{b:/"""/,e:/"""/,c:[e.BE,i,r]},{b:/"/,e:/"/,c:[e.BE,i,r]},{b:/\\/,e:/(\s|$)/,eE:!0}]},{cN:"regexp",v:[{b:"//",e:"//[gim]*",c:[i,e.HCM]},{b:/\/(?![ *])(\\\/|.)*?\/[gim]*(?=\W|$)/}]},{b:"@"+s},{b:"``",e:"``",eB:!0,eE:!0,sL:"javascript"}];i.c=c;var a={cN:"params",b:"\\(",rB:!0,c:[{b:/\(/,e:/\)/,k:t,c:["self"].concat(c)}]};return{aliases:["ls"],k:t,i:/\/\*/,c:c.concat([e.C("\\/\\*","\\*\\/"),e.HCM,{cN:"function",c:[n,a],rB:!0,v:[{b:"("+s+"\\s*(?:=|:=)\\s*)?(\\(.*\\))?\\s*\\B\\->\\*?",e:"\\->\\*?"},{b:"("+s+"\\s*(?:=|:=)\\s*)?!?(\\(.*\\))?\\s*\\B[-~]{1,2}>\\*?",e:"[-~]{1,2}>\\*?"},{b:"("+s+"\\s*(?:=|:=)\\s*)?(\\(.*\\))?\\s*\\B!?[-~]{1,2}>\\*?",e:"!?[-~]{1,2}>\\*?"}]},{cN:"class",bK:"class",e:"$",i:/[:="\[\]]/,c:[{bK:"extends",eW:!0,i:/[:="\[\]]/,c:[n]},n]},{b:s+":",e:":",rB:!0,rE:!0,r:0}])}});hljs.registerLanguage("less",function(e){var r="[\\w-]+",t="("+r+"|@{"+r+"})",a=[],c=[],s=function(e){return{cN:"string",b:"~?"+e+".*?"+e}},b=function(e,r,t){return{cN:e,b:r,r:t}},n={b:"\\(",e:"\\)",c:c,r:0};c.push(e.CLCM,e.CBCM,s("'"),s('"'),e.CSSNM,{b:"(url|data-uri)\\(",starts:{cN:"string",e:"[\\)\\n]",eE:!0}},b("number","#[0-9A-Fa-f]+\\b"),n,b("variable","@@?"+r,10),b("variable","@{"+r+"}"),b("built_in","~?`[^`]*?`"),{cN:"attribute",b:r+"\\s*:",e:":",rB:!0,eE:!0},{cN:"meta",b:"!important"});var i=c.concat({b:"{",e:"}",c:a}),o={bK:"when",eW:!0,c:[{bK:"and not"}].concat(c)},u={b:t+"\\s*:",rB:!0,e:"[;}]",r:0,c:[{cN:"attribute",b:t,e:":",eE:!0,starts:{eW:!0,i:"[<=$]",r:0,c:c}}]},l={cN:"keyword",b:"@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b",starts:{e:"[;{}]",rE:!0,c:c,r:0}},C={cN:"variable",v:[{b:"@"+r+"\\s*:",r:15},{b:"@"+r}],starts:{e:"[;}]",rE:!0,c:i}},p={v:[{b:"[\\.#:&\\[>]",e:"[;{}]"},{b:t+"[^;]*{",e:"{"}],rB:!0,rE:!0,i:"[<='$\"]",c:[e.CLCM,e.CBCM,o,b("keyword","all\\b"),b("variable","@{"+r+"}"),b("selector-tag",t+"%?",0),b("selector-id","#"+t),b("selector-class","\\."+t,0),b("selector-tag","&",0),{cN:"selector-attr",b:"\\[",e:"\\]"},{cN:"selector-pseudo",b:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{b:"\\(",e:"\\)",c:i},{b:"!important"}]};return a.push(e.CLCM,e.CBCM,l,C,u,p),{cI:!0,i:"[=>'/<($\"]",c:a}});hljs.registerLanguage("dust",function(e){var t="if eq ne lt lte gt gte select default math sep";return{aliases:["dst"],cI:!0,sL:"xml",c:[{cN:"template-tag",b:/\{[#\/]/,e:/\}/,i:/;/,c:[{cN:"name",b:/[a-zA-Z\.-]+/,starts:{eW:!0,r:0,c:[e.QSM]}}]},{cN:"template-variable",b:/\{/,e:/\}/,i:/;/,k:t}]}});hljs.registerLanguage("verilog",function(e){var n={keyword:"accept_on alias always always_comb always_ff always_latch and assert assign assume automatic before begin bind bins binsof bit break buf|0 bufif0 bufif1 byte case casex casez cell chandle checker class clocking cmos config const constraint context continue cover covergroup coverpoint cross deassign default defparam design disable dist do edge else end endcase endchecker endclass endclocking endconfig endfunction endgenerate endgroup endinterface endmodule endpackage endprimitive endprogram endproperty endspecify endsequence endtable endtask enum event eventually expect export extends extern final first_match for force foreach forever fork forkjoin function generate|5 genvar global highz0 highz1 if iff ifnone ignore_bins illegal_bins implements implies import incdir include initial inout input inside instance int integer interconnect interface intersect join join_any join_none large let liblist library local localparam logic longint macromodule matches medium modport module nand negedge nettype new nexttime nmos nor noshowcancelled not notif0 notif1 or output package packed parameter pmos posedge primitive priority program property protected pull0 pull1 pulldown pullup pulsestyle_ondetect pulsestyle_onevent pure rand randc randcase randsequence rcmos real realtime ref reg reject_on release repeat restrict return rnmos rpmos rtran rtranif0 rtranif1 s_always s_eventually s_nexttime s_until s_until_with scalared sequence shortint shortreal showcancelled signed small soft solve specify specparam static string strong strong0 strong1 struct super supply0 supply1 sync_accept_on sync_reject_on table tagged task this throughout time timeprecision timeunit tran tranif0 tranif1 tri tri0 tri1 triand trior trireg type typedef union unique unique0 unsigned until until_with untyped use uwire var vectored virtual void wait wait_order wand weak weak0 weak1 while wildcard wire with within wor xnor xor",literal:"null",built_in:"$finish $stop $exit $fatal $error $warning $info $realtime $time $printtimescale $bitstoreal $bitstoshortreal $itor $signed $cast $bits $stime $timeformat $realtobits $shortrealtobits $rtoi $unsigned $asserton $assertkill $assertpasson $assertfailon $assertnonvacuouson $assertoff $assertcontrol $assertpassoff $assertfailoff $assertvacuousoff $isunbounded $sampled $fell $changed $past_gclk $fell_gclk $changed_gclk $rising_gclk $steady_gclk $coverage_control $coverage_get $coverage_save $set_coverage_db_name $rose $stable $past $rose_gclk $stable_gclk $future_gclk $falling_gclk $changing_gclk $display $coverage_get_max $coverage_merge $get_coverage $load_coverage_db $typename $unpacked_dimensions $left $low $increment $clog2 $ln $log10 $exp $sqrt $pow $floor $ceil $sin $cos $tan $countbits $onehot $isunknown $fatal $warning $dimensions $right $high $size $asin $acos $atan $atan2 $hypot $sinh $cosh $tanh $asinh $acosh $atanh $countones $onehot0 $error $info $random $dist_chi_square $dist_erlang $dist_exponential $dist_normal $dist_poisson $dist_t $dist_uniform $q_initialize $q_remove $q_exam $async$and$array $async$nand$array $async$or$array $async$nor$array $sync$and$array $sync$nand$array $sync$or$array $sync$nor$array $q_add $q_full $psprintf $async$and$plane $async$nand$plane $async$or$plane $async$nor$plane $sync$and$plane $sync$nand$plane $sync$or$plane $sync$nor$plane $system $display $displayb $displayh $displayo $strobe $strobeb $strobeh $strobeo $write $readmemb $readmemh $writememh $value$plusargs $dumpvars $dumpon $dumplimit $dumpports $dumpportson $dumpportslimit $writeb $writeh $writeo $monitor $monitorb $monitorh $monitoro $writememb $dumpfile $dumpoff $dumpall $dumpflush $dumpportsoff $dumpportsall $dumpportsflush $fclose $fdisplay $fdisplayb $fdisplayh $fdisplayo $fstrobe $fstrobeb $fstrobeh $fstrobeo $swrite $swriteb $swriteh $swriteo $fscanf $fread $fseek $fflush $feof $fopen $fwrite $fwriteb $fwriteh $fwriteo $fmonitor $fmonitorb $fmonitorh $fmonitoro $sformat $sformatf $fgetc $ungetc $fgets $sscanf $rewind $ftell $ferror"};return{aliases:["v","sv","svh"],cI:!1,k:n,l:/[\w\$]+/,c:[e.CBCM,e.CLCM,e.QSM,{cN:"number",c:[e.BE],v:[{b:"\\b((\\d+'(b|h|o|d|B|H|O|D))[0-9xzXZa-fA-F_]+)"},{b:"\\B(('(b|h|o|d|B|H|O|D))[0-9xzXZa-fA-F_]+)"},{b:"\\b([0-9_])+",r:0}]},{cN:"variable",v:[{b:"#\\((?!parameter).+\\)"},{b:"\\.\\w+",r:0}]},{cN:"meta",b:"`",e:"$",k:{"meta-keyword":"define __FILE__ __LINE__ begin_keywords celldefine default_nettype define else elsif end_keywords endcelldefine endif ifdef ifndef include line nounconnected_drive pragma resetall timescale unconnected_drive undef undefineall"},r:0}]}});hljs.registerLanguage("php",function(e){var c={b:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*"},i={cN:"meta",b:/<\?(php)?|\?>/},t={cN:"string",c:[e.BE,i],v:[{b:'b"',e:'"'},{b:"b'",e:"'"},e.inherit(e.ASM,{i:null}),e.inherit(e.QSM,{i:null})]},a={v:[e.BNM,e.CNM]};return{aliases:["php3","php4","php5","php6"],cI:!0,k:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",c:[e.HCM,e.C("//","$",{c:[i]}),e.C("/\\*","\\*/",{c:[{cN:"doctag",b:"@[A-Za-z]+"}]}),e.C("__halt_compiler.+?;",!1,{eW:!0,k:"__halt_compiler",l:e.UIR}),{cN:"string",b:/<<<['"]?\w+['"]?$/,e:/^\w+;?$/,c:[e.BE,{cN:"subst",v:[{b:/\$\w+/},{b:/\{\$/,e:/\}/}]}]},i,{cN:"keyword",b:/\$this\b/},c,{b:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{cN:"function",bK:"function",e:/[;{]/,eE:!0,i:"\\$|\\[|%",c:[e.UTM,{cN:"params",b:"\\(",e:"\\)",c:["self",c,e.CBCM,t,a]}]},{cN:"class",bK:"class interface",e:"{",eE:!0,i:/[:\(\$"]/,c:[{bK:"extends implements"},e.UTM]},{bK:"namespace",e:";",i:/[\.']/,c:[e.UTM]},{bK:"use",e:";",c:[e.UTM]},{b:"=>"},t,a]}});hljs.registerLanguage("openscad",function(e){var r={cN:"keyword",b:"\\$(f[asn]|t|vp[rtd]|children)"},n={cN:"literal",b:"false|true|PI|undef"},o={cN:"number",b:"\\b\\d+(\\.\\d+)?(e-?\\d+)?",r:0},i=e.inherit(e.QSM,{i:null}),t={cN:"meta",k:{"meta-keyword":"include use"},b:"include|use <",e:">"},s={cN:"params",b:"\\(",e:"\\)",c:["self",o,i,r,n]},c={b:"[*!#%]",r:0},a={cN:"function",bK:"module function",e:"\\=|\\{",c:[s,e.UTM]};return{aliases:["scad"],k:{keyword:"function module include use for intersection_for if else \\%",literal:"false true PI undef",built_in:"circle square polygon text sphere cube cylinder polyhedron translate rotate scale resize mirror multmatrix color offset hull minkowski union difference intersection abs sign sin cos tan acos asin atan atan2 floor round ceil ln log pow sqrt exp rands min max concat lookup str chr search version version_num norm cross parent_module echo import import_dxf dxf_linear_extrude linear_extrude rotate_extrude surface projection render children dxf_cross dxf_dim let assign"},c:[e.CLCM,e.CBCM,o,t,i,r,c,a]}});hljs.registerLanguage("mathematica",function(e){return{aliases:["mma"],l:"(\\$|\\b)"+e.IR+"\\b",k:"AbelianGroup Abort AbortKernels AbortProtect Above Abs Absolute AbsoluteCorrelation AbsoluteCorrelationFunction AbsoluteCurrentValue AbsoluteDashing AbsoluteFileName AbsoluteOptions AbsolutePointSize AbsoluteThickness AbsoluteTime AbsoluteTiming AccountingForm Accumulate Accuracy AccuracyGoal ActionDelay ActionMenu ActionMenuBox ActionMenuBoxOptions Active ActiveItem ActiveStyle AcyclicGraphQ AddOnHelpPath AddTo AdjacencyGraph AdjacencyList AdjacencyMatrix AdjustmentBox AdjustmentBoxOptions AdjustTimeSeriesForecast AffineTransform After AiryAi AiryAiPrime AiryAiZero AiryBi AiryBiPrime AiryBiZero AlgebraicIntegerQ AlgebraicNumber AlgebraicNumberDenominator AlgebraicNumberNorm AlgebraicNumberPolynomial AlgebraicNumberTrace AlgebraicRules AlgebraicRulesData Algebraics AlgebraicUnitQ Alignment AlignmentMarker AlignmentPoint All AllowedDimensions AllowGroupClose AllowInlineCells AllowKernelInitialization AllowReverseGroupClose AllowScriptLevelChange AlphaChannel AlternatingGroup AlternativeHypothesis Alternatives AmbientLight Analytic AnchoredSearch And AndersonDarlingTest AngerJ AngleBracket AngularGauge Animate AnimationCycleOffset AnimationCycleRepetitions AnimationDirection AnimationDisplayTime AnimationRate AnimationRepetitions AnimationRunning Animator AnimatorBox AnimatorBoxOptions AnimatorElements Annotation Annuity AnnuityDue Antialiasing Antisymmetric Apart ApartSquareFree Appearance AppearanceElements AppellF1 Append AppendTo Apply ArcCos ArcCosh ArcCot ArcCoth ArcCsc ArcCsch ArcSec ArcSech ArcSin ArcSinDistribution ArcSinh ArcTan ArcTanh Arg ArgMax ArgMin ArgumentCountQ ARIMAProcess ArithmeticGeometricMean ARMAProcess ARProcess Array ArrayComponents ArrayDepth ArrayFlatten ArrayPad ArrayPlot ArrayQ ArrayReshape ArrayRules Arrays Arrow Arrow3DBox ArrowBox Arrowheads AspectRatio AspectRatioFixed Assert Assuming Assumptions AstronomicalData Asynchronous AsynchronousTaskObject AsynchronousTasks AtomQ Attributes AugmentedSymmetricPolynomial AutoAction AutoDelete AutoEvaluateEvents AutoGeneratedPackage AutoIndent AutoIndentSpacings AutoItalicWords AutoloadPath AutoMatch Automatic AutomaticImageSize AutoMultiplicationSymbol AutoNumberFormatting AutoOpenNotebooks AutoOpenPalettes AutorunSequencing AutoScaling AutoScroll AutoSpacing AutoStyleOptions AutoStyleWords Axes AxesEdge AxesLabel AxesOrigin AxesStyle Axis BabyMonsterGroupB Back Background BackgroundTasksSettings Backslash Backsubstitution Backward Band BandpassFilter BandstopFilter BarabasiAlbertGraphDistribution BarChart BarChart3D BarLegend BarlowProschanImportance BarnesG BarOrigin BarSpacing BartlettHannWindow BartlettWindow BaseForm Baseline BaselinePosition BaseStyle BatesDistribution BattleLemarieWavelet Because BeckmannDistribution Beep Before Begin BeginDialogPacket BeginFrontEndInteractionPacket BeginPackage BellB BellY Below BenfordDistribution BeniniDistribution BenktanderGibratDistribution BenktanderWeibullDistribution BernoulliB BernoulliDistribution BernoulliGraphDistribution BernoulliProcess BernsteinBasis BesselFilterModel BesselI BesselJ BesselJZero BesselK BesselY BesselYZero Beta BetaBinomialDistribution BetaDistribution BetaNegativeBinomialDistribution BetaPrimeDistribution BetaRegularized BetweennessCentrality BezierCurve BezierCurve3DBox BezierCurve3DBoxOptions BezierCurveBox BezierCurveBoxOptions BezierFunction BilateralFilter Binarize BinaryFormat BinaryImageQ BinaryRead BinaryReadList BinaryWrite BinCounts BinLists Binomial BinomialDistribution BinomialProcess BinormalDistribution BiorthogonalSplineWavelet BipartiteGraphQ BirnbaumImportance BirnbaumSaundersDistribution BitAnd BitClear BitGet BitLength BitNot BitOr BitSet BitShiftLeft BitShiftRight BitXor Black BlackmanHarrisWindow BlackmanNuttallWindow BlackmanWindow Blank BlankForm BlankNullSequence BlankSequence Blend Block BlockRandom BlomqvistBeta BlomqvistBetaTest Blue Blur BodePlot BohmanWindow Bold Bookmarks Boole BooleanConsecutiveFunction BooleanConvert BooleanCountingFunction BooleanFunction BooleanGraph BooleanMaxterms BooleanMinimize BooleanMinterms Booleans BooleanTable BooleanVariables BorderDimensions BorelTannerDistribution Bottom BottomHatTransform BoundaryStyle Bounds Box BoxBaselineShift BoxData BoxDimensions Boxed Boxes BoxForm BoxFormFormatTypes BoxFrame BoxID BoxMargins BoxMatrix BoxRatios BoxRotation BoxRotationPoint BoxStyle BoxWhiskerChart Bra BracketingBar BraKet BrayCurtisDistance BreadthFirstScan Break Brown BrownForsytheTest BrownianBridgeProcess BrowserCategory BSplineBasis BSplineCurve BSplineCurve3DBox BSplineCurveBox BSplineCurveBoxOptions BSplineFunction BSplineSurface BSplineSurface3DBox BubbleChart BubbleChart3D BubbleScale BubbleSizes BulletGauge BusinessDayQ ButterflyGraph ButterworthFilterModel Button ButtonBar ButtonBox ButtonBoxOptions ButtonCell ButtonContents ButtonData ButtonEvaluator ButtonExpandable ButtonFrame ButtonFunction ButtonMargins ButtonMinHeight ButtonNote ButtonNotebook ButtonSource ButtonStyle ButtonStyleMenuListing Byte ByteCount ByteOrdering C CachedValue CacheGraphics CalendarData CalendarType CallPacket CanberraDistance Cancel CancelButton CandlestickChart Cap CapForm CapitalDifferentialD CardinalBSplineBasis CarmichaelLambda Cases Cashflow Casoratian Catalan CatalanNumber Catch CauchyDistribution CauchyWindow CayleyGraph CDF CDFDeploy CDFInformation CDFWavelet Ceiling Cell CellAutoOverwrite CellBaseline CellBoundingBox CellBracketOptions CellChangeTimes CellContents CellContext CellDingbat CellDynamicExpression CellEditDuplicate CellElementsBoundingBox CellElementSpacings CellEpilog CellEvaluationDuplicate CellEvaluationFunction CellEventActions CellFrame CellFrameColor CellFrameLabelMargins CellFrameLabels CellFrameMargins CellGroup CellGroupData CellGrouping CellGroupingRules CellHorizontalScrolling CellID CellLabel CellLabelAutoDelete CellLabelMargins CellLabelPositioning CellMargins CellObject CellOpen CellPrint CellProlog Cells CellSize CellStyle CellTags CellularAutomaton CensoredDistribution Censoring Center CenterDot CentralMoment CentralMomentGeneratingFunction CForm ChampernowneNumber ChanVeseBinarize Character CharacterEncoding CharacterEncodingsPath CharacteristicFunction CharacteristicPolynomial CharacterRange Characters ChartBaseStyle ChartElementData ChartElementDataFunction ChartElementFunction ChartElements ChartLabels ChartLayout ChartLegends ChartStyle Chebyshev1FilterModel Chebyshev2FilterModel ChebyshevDistance ChebyshevT ChebyshevU Check CheckAbort CheckAll Checkbox CheckboxBar CheckboxBox CheckboxBoxOptions ChemicalData ChessboardDistance ChiDistribution ChineseRemainder ChiSquareDistribution ChoiceButtons ChoiceDialog CholeskyDecomposition Chop Circle CircleBox CircleDot CircleMinus CirclePlus CircleTimes CirculantGraph CityData Clear ClearAll ClearAttributes ClearSystemCache ClebschGordan ClickPane Clip ClipboardNotebook ClipFill ClippingStyle ClipPlanes ClipRange Clock ClockGauge ClockwiseContourIntegral Close Closed CloseKernels ClosenessCentrality Closing ClosingAutoSave ClosingEvent ClusteringComponents CMYKColor Coarse Coefficient CoefficientArrays CoefficientDomain CoefficientList CoefficientRules CoifletWavelet Collect Colon ColonForm ColorCombine ColorConvert ColorData ColorDataFunction ColorFunction ColorFunctionScaling Colorize ColorNegate ColorOutput ColorProfileData ColorQuantize ColorReplace ColorRules ColorSelectorSettings ColorSeparate ColorSetter ColorSetterBox ColorSetterBoxOptions ColorSlider ColorSpace Column ColumnAlignments ColumnBackgrounds ColumnForm ColumnLines ColumnsEqual ColumnSpacings ColumnWidths CommonDefaultFormatTypes Commonest CommonestFilter CommonUnits CommunityBoundaryStyle CommunityGraphPlot CommunityLabels CommunityRegionStyle CompatibleUnitQ CompilationOptions CompilationTarget Compile Compiled CompiledFunction Complement CompleteGraph CompleteGraphQ CompleteKaryTree CompletionsListPacket Complex Complexes ComplexExpand ComplexInfinity ComplexityFunction ComponentMeasurements ComponentwiseContextMenu Compose ComposeList ComposeSeries Composition CompoundExpression CompoundPoissonDistribution CompoundPoissonProcess CompoundRenewalProcess Compress CompressedData Condition ConditionalExpression Conditioned Cone ConeBox ConfidenceLevel ConfidenceRange ConfidenceTransform ConfigurationPath Congruent Conjugate ConjugateTranspose Conjunction Connect ConnectedComponents ConnectedGraphQ ConnesWindow ConoverTest ConsoleMessage ConsoleMessagePacket ConsolePrint Constant ConstantArray Constants ConstrainedMax ConstrainedMin ContentPadding ContentsBoundingBox ContentSelectable ContentSize Context ContextMenu Contexts ContextToFilename ContextToFileName Continuation Continue ContinuedFraction ContinuedFractionK ContinuousAction ContinuousMarkovProcess ContinuousTimeModelQ ContinuousWaveletData ContinuousWaveletTransform ContourDetect ContourGraphics ContourIntegral ContourLabels ContourLines ContourPlot ContourPlot3D Contours ContourShading ContourSmoothing ContourStyle ContraharmonicMean Control ControlActive ControlAlignment ControllabilityGramian ControllabilityMatrix ControllableDecomposition ControllableModelQ ControllerDuration ControllerInformation ControllerInformationData ControllerLinking ControllerManipulate ControllerMethod ControllerPath ControllerState ControlPlacement ControlsRendering ControlType Convergents ConversionOptions ConversionRules ConvertToBitmapPacket ConvertToPostScript ConvertToPostScriptPacket Convolve ConwayGroupCo1 ConwayGroupCo2 ConwayGroupCo3 CoordinateChartData CoordinatesToolOptions CoordinateTransform CoordinateTransformData CoprimeQ Coproduct CopulaDistribution Copyable CopyDirectory CopyFile CopyTag CopyToClipboard CornerFilter CornerNeighbors Correlation CorrelationDistance CorrelationFunction CorrelationTest Cos Cosh CoshIntegral CosineDistance CosineWindow CosIntegral Cot Coth Count CounterAssignments CounterBox CounterBoxOptions CounterClockwiseContourIntegral CounterEvaluator CounterFunction CounterIncrements CounterStyle CounterStyleMenuListing CountRoots CountryData Covariance CovarianceEstimatorFunction CovarianceFunction CoxianDistribution CoxIngersollRossProcess CoxModel CoxModelFit CramerVonMisesTest CreateArchive CreateDialog CreateDirectory CreateDocument CreateIntermediateDirectories CreatePalette CreatePalettePacket CreateScheduledTask CreateTemporary CreateWindow CriticalityFailureImportance CriticalitySuccessImportance CriticalSection Cross CrossingDetect CrossMatrix Csc Csch CubeRoot Cubics Cuboid CuboidBox Cumulant CumulantGeneratingFunction Cup CupCap Curl CurlyDoubleQuote CurlyQuote CurrentImage CurrentlySpeakingPacket CurrentValue CurvatureFlowFilter CurveClosed Cyan CycleGraph CycleIndexPolynomial Cycles CyclicGroup Cyclotomic Cylinder CylinderBox CylindricalDecomposition D DagumDistribution DamerauLevenshteinDistance DampingFactor Darker Dashed Dashing DataCompression DataDistribution DataRange DataReversed Date DateDelimiters DateDifference DateFunction DateList DateListLogPlot DateListPlot DatePattern DatePlus DateRange DateString DateTicksFormat DaubechiesWavelet DavisDistribution DawsonF DayCount DayCountConvention DayMatchQ DayName DayPlus DayRange DayRound DeBruijnGraph Debug DebugTag Decimal DeclareKnownSymbols DeclarePackage Decompose Decrement DedekindEta Default DefaultAxesStyle DefaultBaseStyle DefaultBoxStyle DefaultButton DefaultColor DefaultControlPlacement DefaultDuplicateCellStyle DefaultDuration DefaultElement DefaultFaceGridsStyle DefaultFieldHintStyle DefaultFont DefaultFontProperties DefaultFormatType DefaultFormatTypeForStyle DefaultFrameStyle DefaultFrameTicksStyle DefaultGridLinesStyle DefaultInlineFormatType DefaultInputFormatType DefaultLabelStyle DefaultMenuStyle DefaultNaturalLanguage DefaultNewCellStyle DefaultNewInlineCellStyle DefaultNotebook DefaultOptions DefaultOutputFormatType DefaultStyle DefaultStyleDefinitions DefaultTextFormatType DefaultTextInlineFormatType DefaultTicksStyle DefaultTooltipStyle DefaultValues Defer DefineExternal DefineInputStreamMethod DefineOutputStreamMethod Definition Degree DegreeCentrality DegreeGraphDistribution DegreeLexicographic DegreeReverseLexicographic Deinitialization Del Deletable Delete DeleteBorderComponents DeleteCases DeleteContents DeleteDirectory DeleteDuplicates DeleteFile DeleteSmallComponents DeleteWithContents DeletionWarning Delimiter DelimiterFlashTime DelimiterMatching Delimiters Denominator DensityGraphics DensityHistogram DensityPlot DependentVariables Deploy Deployed Depth DepthFirstScan Derivative DerivativeFilter DescriptorStateSpace DesignMatrix Det DGaussianWavelet DiacriticalPositioning Diagonal DiagonalMatrix Dialog DialogIndent DialogInput DialogLevel DialogNotebook DialogProlog DialogReturn DialogSymbols Diamond DiamondMatrix DiceDissimilarity DictionaryLookup DifferenceDelta DifferenceOrder DifferenceRoot DifferenceRootReduce Differences DifferentialD DifferentialRoot DifferentialRootReduce DifferentiatorFilter DigitBlock DigitBlockMinimum DigitCharacter DigitCount DigitQ DihedralGroup Dilation Dimensions DiracComb DiracDelta DirectedEdge DirectedEdges DirectedGraph DirectedGraphQ DirectedInfinity Direction Directive Directory DirectoryName DirectoryQ DirectoryStack DirichletCharacter DirichletConvolve DirichletDistribution DirichletL DirichletTransform DirichletWindow DisableConsolePrintPacket DiscreteChirpZTransform DiscreteConvolve DiscreteDelta DiscreteHadamardTransform DiscreteIndicator DiscreteLQEstimatorGains DiscreteLQRegulatorGains DiscreteLyapunovSolve DiscreteMarkovProcess DiscretePlot DiscretePlot3D DiscreteRatio DiscreteRiccatiSolve DiscreteShift DiscreteTimeModelQ DiscreteUniformDistribution DiscreteVariables DiscreteWaveletData DiscreteWaveletPacketTransform DiscreteWaveletTransform Discriminant Disjunction Disk DiskBox DiskMatrix Dispatch DispersionEstimatorFunction Display DisplayAllSteps DisplayEndPacket DisplayFlushImagePacket DisplayForm DisplayFunction DisplayPacket DisplayRules DisplaySetSizePacket DisplayString DisplayTemporary DisplayWith DisplayWithRef DisplayWithVariable DistanceFunction DistanceTransform Distribute Distributed DistributedContexts DistributeDefinitions DistributionChart DistributionDomain DistributionFitTest DistributionParameterAssumptions DistributionParameterQ Dithering Div Divergence Divide DivideBy Dividers Divisible Divisors DivisorSigma DivisorSum DMSList DMSString Do DockedCells DocumentNotebook DominantColors DOSTextFormat Dot DotDashed DotEqual Dotted DoubleBracketingBar DoubleContourIntegral DoubleDownArrow DoubleLeftArrow DoubleLeftRightArrow DoubleLeftTee DoubleLongLeftArrow DoubleLongLeftRightArrow DoubleLongRightArrow DoubleRightArrow DoubleRightTee DoubleUpArrow DoubleUpDownArrow DoubleVerticalBar DoublyInfinite Down DownArrow DownArrowBar DownArrowUpArrow DownLeftRightVector DownLeftTeeVector DownLeftVector DownLeftVectorBar DownRightTeeVector DownRightVector DownRightVectorBar Downsample DownTee DownTeeArrow DownValues DragAndDrop DrawEdges DrawFrontFaces DrawHighlighted Drop DSolve Dt DualLinearProgramming DualSystemsModel DumpGet DumpSave DuplicateFreeQ Dynamic DynamicBox DynamicBoxOptions DynamicEvaluationTimeout DynamicLocation DynamicModule DynamicModuleBox DynamicModuleBoxOptions DynamicModuleParent DynamicModuleValues DynamicName DynamicNamespace DynamicReference DynamicSetting DynamicUpdating DynamicWrapper DynamicWrapperBox DynamicWrapperBoxOptions E EccentricityCentrality EdgeAdd EdgeBetweennessCentrality EdgeCapacity EdgeCapForm EdgeColor EdgeConnectivity EdgeCost EdgeCount EdgeCoverQ EdgeDashing EdgeDelete EdgeDetect EdgeForm EdgeIndex EdgeJoinForm EdgeLabeling EdgeLabels EdgeLabelStyle EdgeList EdgeOpacity EdgeQ EdgeRenderingFunction EdgeRules EdgeShapeFunction EdgeStyle EdgeThickness EdgeWeight Editable EditButtonSettings EditCellTagsSettings EditDistance EffectiveInterest Eigensystem Eigenvalues EigenvectorCentrality Eigenvectors Element ElementData Eliminate EliminationOrder EllipticE EllipticExp EllipticExpPrime EllipticF EllipticFilterModel EllipticK EllipticLog EllipticNomeQ EllipticPi EllipticReducedHalfPeriods EllipticTheta EllipticThetaPrime EmitSound EmphasizeSyntaxErrors EmpiricalDistribution Empty EmptyGraphQ EnableConsolePrintPacket Enabled Encode End EndAdd EndDialogPacket EndFrontEndInteractionPacket EndOfFile EndOfLine EndOfString EndPackage EngineeringForm Enter EnterExpressionPacket EnterTextPacket Entropy EntropyFilter Environment Epilog Equal EqualColumns EqualRows EqualTilde EquatedTo Equilibrium EquirippleFilterKernel Equivalent Erf Erfc Erfi ErlangB ErlangC ErlangDistribution Erosion ErrorBox ErrorBoxOptions ErrorNorm ErrorPacket ErrorsDialogSettings EstimatedDistribution EstimatedProcess EstimatorGains EstimatorRegulator EuclideanDistance EulerE EulerGamma EulerianGraphQ EulerPhi Evaluatable Evaluate Evaluated EvaluatePacket EvaluationCell EvaluationCompletionAction EvaluationElements EvaluationMode EvaluationMonitor EvaluationNotebook EvaluationObject EvaluationOrder Evaluator EvaluatorNames EvenQ EventData EventEvaluator EventHandler EventHandlerTag EventLabels ExactBlackmanWindow ExactNumberQ ExactRootIsolation ExampleData Except ExcludedForms ExcludePods Exclusions ExclusionsStyle Exists Exit ExitDialog Exp Expand ExpandAll ExpandDenominator ExpandFileName ExpandNumerator Expectation ExpectationE ExpectedValue ExpGammaDistribution ExpIntegralE ExpIntegralEi Exponent ExponentFunction ExponentialDistribution ExponentialFamily ExponentialGeneratingFunction ExponentialMovingAverage ExponentialPowerDistribution ExponentPosition ExponentStep Export ExportAutoReplacements ExportPacket ExportString Expression ExpressionCell ExpressionPacket ExpToTrig ExtendedGCD Extension ExtentElementFunction ExtentMarkers ExtentSize ExternalCall ExternalDataCharacterEncoding Extract ExtractArchive ExtremeValueDistribution FaceForm FaceGrids FaceGridsStyle Factor FactorComplete Factorial Factorial2 FactorialMoment FactorialMomentGeneratingFunction FactorialPower FactorInteger FactorList FactorSquareFree FactorSquareFreeList FactorTerms FactorTermsList Fail FailureDistribution False FARIMAProcess FEDisableConsolePrintPacket FeedbackSector FeedbackSectorStyle FeedbackType FEEnableConsolePrintPacket Fibonacci FieldHint FieldHintStyle FieldMasked FieldSize File FileBaseName FileByteCount FileDate FileExistsQ FileExtension FileFormat FileHash FileInformation FileName FileNameDepth FileNameDialogSettings FileNameDrop FileNameJoin FileNames FileNameSetter FileNameSplit FileNameTake FilePrint FileType FilledCurve FilledCurveBox Filling FillingStyle FillingTransform FilterRules FinancialBond FinancialData FinancialDerivative FinancialIndicator Find FindArgMax FindArgMin FindClique FindClusters FindCurvePath FindDistributionParameters FindDivisions FindEdgeCover FindEdgeCut FindEulerianCycle FindFaces FindFile FindFit FindGeneratingFunction FindGeoLocation FindGeometricTransform FindGraphCommunities FindGraphIsomorphism FindGraphPartition FindHamiltonianCycle FindIndependentEdgeSet FindIndependentVertexSet FindInstance FindIntegerNullVector FindKClan FindKClique FindKClub FindKPlex FindLibrary FindLinearRecurrence FindList FindMaximum FindMaximumFlow FindMaxValue FindMinimum FindMinimumCostFlow FindMinimumCut FindMinValue FindPermutation FindPostmanTour FindProcessParameters FindRoot FindSequenceFunction FindSettings FindShortestPath FindShortestTour FindThreshold FindVertexCover FindVertexCut Fine FinishDynamic FiniteAbelianGroupCount FiniteGroupCount FiniteGroupData First FirstPassageTimeDistribution FischerGroupFi22 FischerGroupFi23 FischerGroupFi24Prime FisherHypergeometricDistribution FisherRatioTest FisherZDistribution Fit FitAll FittedModel FixedPoint FixedPointList FlashSelection Flat Flatten FlattenAt FlatTopWindow FlipView Floor FlushPrintOutputPacket Fold FoldList Font FontColor FontFamily FontForm FontName FontOpacity FontPostScriptName FontProperties FontReencoding FontSize FontSlant FontSubstitutions FontTracking FontVariations FontWeight For ForAll Format FormatRules FormatType FormatTypeAutoConvert FormatValues FormBox FormBoxOptions FortranForm Forward ForwardBackward Fourier FourierCoefficient FourierCosCoefficient FourierCosSeries FourierCosTransform FourierDCT FourierDCTFilter FourierDCTMatrix FourierDST FourierDSTMatrix FourierMatrix FourierParameters FourierSequenceTransform FourierSeries FourierSinCoefficient FourierSinSeries FourierSinTransform FourierTransform FourierTrigSeries FractionalBrownianMotionProcess FractionalPart FractionBox FractionBoxOptions FractionLine Frame FrameBox FrameBoxOptions Framed FrameInset FrameLabel Frameless FrameMargins FrameStyle FrameTicks FrameTicksStyle FRatioDistribution FrechetDistribution FreeQ FrequencySamplingFilterKernel FresnelC FresnelS Friday FrobeniusNumber FrobeniusSolve FromCharacterCode FromCoefficientRules FromContinuedFraction FromDate FromDigits FromDMS Front FrontEndDynamicExpression FrontEndEventActions FrontEndExecute FrontEndObject FrontEndResource FrontEndResourceString FrontEndStackSize FrontEndToken FrontEndTokenExecute FrontEndValueCache FrontEndVersion FrontFaceColor FrontFaceOpacity Full FullAxes FullDefinition FullForm FullGraphics FullOptions FullSimplify Function FunctionExpand FunctionInterpolation FunctionSpace FussellVeselyImportance GaborFilter GaborMatrix GaborWavelet GainMargins GainPhaseMargins Gamma GammaDistribution GammaRegularized GapPenalty Gather GatherBy GaugeFaceElementFunction GaugeFaceStyle GaugeFrameElementFunction GaugeFrameSize GaugeFrameStyle GaugeLabels GaugeMarkers GaugeStyle GaussianFilter GaussianIntegers GaussianMatrix GaussianWindow GCD GegenbauerC General GeneralizedLinearModelFit GenerateConditions GeneratedCell GeneratedParameters GeneratingFunction Generic GenericCylindricalDecomposition GenomeData GenomeLookup GeodesicClosing GeodesicDilation GeodesicErosion GeodesicOpening GeoDestination GeodesyData GeoDirection GeoDistance GeoGridPosition GeometricBrownianMotionProcess GeometricDistribution GeometricMean GeometricMeanFilter GeometricTransformation GeometricTransformation3DBox GeometricTransformation3DBoxOptions GeometricTransformationBox GeometricTransformationBoxOptions GeoPosition GeoPositionENU GeoPositionXYZ GeoProjectionData GestureHandler GestureHandlerTag Get GetBoundingBoxSizePacket GetContext GetEnvironment GetFileName GetFrontEndOptionsDataPacket GetLinebreakInformationPacket GetMenusPacket GetPageBreakInformationPacket Glaisher GlobalClusteringCoefficient GlobalPreferences GlobalSession Glow GoldenRatio GompertzMakehamDistribution GoodmanKruskalGamma GoodmanKruskalGammaTest Goto Grad Gradient GradientFilter GradientOrientationFilter Graph GraphAssortativity GraphCenter GraphComplement GraphData GraphDensity GraphDiameter GraphDifference GraphDisjointUnion GraphDistance GraphDistanceMatrix GraphElementData GraphEmbedding GraphHighlight GraphHighlightStyle GraphHub Graphics Graphics3D Graphics3DBox Graphics3DBoxOptions GraphicsArray GraphicsBaseline GraphicsBox GraphicsBoxOptions GraphicsColor GraphicsColumn GraphicsComplex GraphicsComplex3DBox GraphicsComplex3DBoxOptions GraphicsComplexBox GraphicsComplexBoxOptions GraphicsContents GraphicsData GraphicsGrid GraphicsGridBox GraphicsGroup GraphicsGroup3DBox GraphicsGroup3DBoxOptions GraphicsGroupBox GraphicsGroupBoxOptions GraphicsGrouping GraphicsHighlightColor GraphicsRow GraphicsSpacing GraphicsStyle GraphIntersection GraphLayout GraphLinkEfficiency GraphPeriphery GraphPlot GraphPlot3D GraphPower GraphPropertyDistribution GraphQ GraphRadius GraphReciprocity GraphRoot GraphStyle GraphUnion Gray GrayLevel GreatCircleDistance Greater GreaterEqual GreaterEqualLess GreaterFullEqual GreaterGreater GreaterLess GreaterSlantEqual GreaterTilde Green Grid GridBaseline GridBox GridBoxAlignment GridBoxBackground GridBoxDividers GridBoxFrame GridBoxItemSize GridBoxItemStyle GridBoxOptions GridBoxSpacings GridCreationSettings GridDefaultElement GridElementStyleOptions GridFrame GridFrameMargins GridGraph GridLines GridLinesStyle GroebnerBasis GroupActionBase GroupCentralizer GroupElementFromWord GroupElementPosition GroupElementQ GroupElements GroupElementToWord GroupGenerators GroupMultiplicationTable GroupOrbits GroupOrder GroupPageBreakWithin GroupSetwiseStabilizer GroupStabilizer GroupStabilizerChain Gudermannian GumbelDistribution HaarWavelet HadamardMatrix HalfNormalDistribution HamiltonianGraphQ HammingDistance HammingWindow HankelH1 HankelH2 HankelMatrix HannPoissonWindow HannWindow HaradaNortonGroupHN HararyGraph HarmonicMean HarmonicMeanFilter HarmonicNumber Hash HashTable Haversine HazardFunction Head HeadCompose Heads HeavisideLambda HeavisidePi HeavisideTheta HeldGroupHe HeldPart HelpBrowserLookup HelpBrowserNotebook HelpBrowserSettings HermiteDecomposition HermiteH HermitianMatrixQ HessenbergDecomposition Hessian HexadecimalCharacter Hexahedron HexahedronBox HexahedronBoxOptions HiddenSurface HighlightGraph HighlightImage HighpassFilter HigmanSimsGroupHS HilbertFilter HilbertMatrix Histogram Histogram3D HistogramDistribution HistogramList HistogramTransform HistogramTransformInterpolation HitMissTransform HITSCentrality HodgeDual HoeffdingD HoeffdingDTest Hold HoldAll HoldAllComplete HoldComplete HoldFirst HoldForm HoldPattern HoldRest HolidayCalendar HomeDirectory HomePage Horizontal HorizontalForm HorizontalGauge HorizontalScrollPosition HornerForm HotellingTSquareDistribution HoytDistribution HTMLSave Hue HumpDownHump HumpEqual HurwitzLerchPhi HurwitzZeta HyperbolicDistribution HypercubeGraph HyperexponentialDistribution Hyperfactorial Hypergeometric0F1 Hypergeometric0F1Regularized Hypergeometric1F1 Hypergeometric1F1Regularized Hypergeometric2F1 Hypergeometric2F1Regularized HypergeometricDistribution HypergeometricPFQ HypergeometricPFQRegularized HypergeometricU Hyperlink HyperlinkCreationSettings Hyphenation HyphenationOptions HypoexponentialDistribution HypothesisTestData I Identity IdentityMatrix If IgnoreCase Im Image Image3D Image3DSlices ImageAccumulate ImageAdd ImageAdjust ImageAlign ImageApply ImageAspectRatio ImageAssemble ImageCache ImageCacheValid ImageCapture ImageChannels ImageClip ImageColorSpace ImageCompose ImageConvolve ImageCooccurrence ImageCorners ImageCorrelate ImageCorrespondingPoints ImageCrop ImageData ImageDataPacket ImageDeconvolve ImageDemosaic ImageDifference ImageDimensions ImageDistance ImageEffect ImageFeatureTrack ImageFileApply ImageFileFilter ImageFileScan ImageFilter ImageForestingComponents ImageForwardTransformation ImageHistogram ImageKeypoints ImageLevels ImageLines ImageMargins ImageMarkers ImageMeasurements ImageMultiply ImageOffset ImagePad ImagePadding ImagePartition ImagePeriodogram ImagePerspectiveTransformation ImageQ ImageRangeCache ImageReflect ImageRegion ImageResize ImageResolution ImageRotate ImageRotated ImageScaled ImageScan ImageSize ImageSizeAction ImageSizeCache ImageSizeMultipliers ImageSizeRaw ImageSubtract ImageTake ImageTransformation ImageTrim ImageType ImageValue ImageValuePositions Implies Import ImportAutoReplacements ImportString ImprovementImportance In IncidenceGraph IncidenceList IncidenceMatrix IncludeConstantBasis IncludeFileExtension IncludePods IncludeSingularTerm Increment Indent IndentingNewlineSpacings IndentMaxFraction IndependenceTest IndependentEdgeSetQ IndependentUnit IndependentVertexSetQ Indeterminate IndexCreationOptions Indexed IndexGraph IndexTag Inequality InexactNumberQ InexactNumbers Infinity Infix Information Inherited InheritScope Initialization InitializationCell InitializationCellEvaluation InitializationCellWarning InlineCounterAssignments InlineCounterIncrements InlineRules Inner Inpaint Input InputAliases InputAssumptions InputAutoReplacements InputField InputFieldBox InputFieldBoxOptions InputForm InputGrouping InputNamePacket InputNotebook InputPacket InputSettings InputStream InputString InputStringPacket InputToBoxFormPacket Insert InsertionPointObject InsertResults Inset Inset3DBox Inset3DBoxOptions InsetBox InsetBoxOptions Install InstallService InString Integer IntegerDigits IntegerExponent IntegerLength IntegerPart IntegerPartitions IntegerQ Integers IntegerString Integral Integrate Interactive InteractiveTradingChart Interlaced Interleaving InternallyBalancedDecomposition InterpolatingFunction InterpolatingPolynomial Interpolation InterpolationOrder InterpolationPoints InterpolationPrecision Interpretation InterpretationBox InterpretationBoxOptions InterpretationFunction InterpretTemplate InterquartileRange Interrupt InterruptSettings Intersection Interval IntervalIntersection IntervalMemberQ IntervalUnion Inverse InverseBetaRegularized InverseCDF InverseChiSquareDistribution InverseContinuousWaveletTransform InverseDistanceTransform InverseEllipticNomeQ InverseErf InverseErfc InverseFourier InverseFourierCosTransform InverseFourierSequenceTransform InverseFourierSinTransform InverseFourierTransform InverseFunction InverseFunctions InverseGammaDistribution InverseGammaRegularized InverseGaussianDistribution InverseGudermannian InverseHaversine InverseJacobiCD InverseJacobiCN InverseJacobiCS InverseJacobiDC InverseJacobiDN InverseJacobiDS InverseJacobiNC InverseJacobiND InverseJacobiNS InverseJacobiSC InverseJacobiSD InverseJacobiSN InverseLaplaceTransform InversePermutation InverseRadon InverseSeries InverseSurvivalFunction InverseWaveletTransform InverseWeierstrassP InverseZTransform Invisible InvisibleApplication InvisibleTimes IrreduciblePolynomialQ IsolatingInterval IsomorphicGraphQ IsotopeData Italic Item ItemBox ItemBoxOptions ItemSize ItemStyle ItoProcess JaccardDissimilarity JacobiAmplitude Jacobian JacobiCD JacobiCN JacobiCS JacobiDC JacobiDN JacobiDS JacobiNC JacobiND JacobiNS JacobiP JacobiSC JacobiSD JacobiSN JacobiSymbol JacobiZeta JankoGroupJ1 JankoGroupJ2 JankoGroupJ3 JankoGroupJ4 JarqueBeraALMTest JohnsonDistribution Join Joined JoinedCurve JoinedCurveBox JoinForm JordanDecomposition JordanModelDecomposition K KagiChart KaiserBesselWindow KaiserWindow KalmanEstimator KalmanFilter KarhunenLoeveDecomposition KaryTree KatzCentrality KCoreComponents KDistribution KelvinBei KelvinBer KelvinKei KelvinKer KendallTau KendallTauTest KernelExecute KernelMixtureDistribution KernelObject Kernels Ket Khinchin KirchhoffGraph KirchhoffMatrix KleinInvariantJ KnightTourGraph KnotData KnownUnitQ KolmogorovSmirnovTest KroneckerDelta KroneckerModelDecomposition KroneckerProduct KroneckerSymbol KuiperTest KumaraswamyDistribution Kurtosis KuwaharaFilter Label Labeled LabeledSlider LabelingFunction LabelStyle LaguerreL LambdaComponents LambertW LanczosWindow LandauDistribution Language LanguageCategory LaplaceDistribution LaplaceTransform Laplacian LaplacianFilter LaplacianGaussianFilter Large Larger Last Latitude LatitudeLongitude LatticeData LatticeReduce Launch LaunchKernels LayeredGraphPlot LayerSizeFunction LayoutInformation LCM LeafCount LeapYearQ LeastSquares LeastSquaresFilterKernel Left LeftArrow LeftArrowBar LeftArrowRightArrow LeftDownTeeVector LeftDownVector LeftDownVectorBar LeftRightArrow LeftRightVector LeftTee LeftTeeArrow LeftTeeVector LeftTriangle LeftTriangleBar LeftTriangleEqual LeftUpDownVector LeftUpTeeVector LeftUpVector LeftUpVectorBar LeftVector LeftVectorBar LegendAppearance Legended LegendFunction LegendLabel LegendLayout LegendMargins LegendMarkers LegendMarkerSize LegendreP LegendreQ LegendreType Length LengthWhile LerchPhi Less LessEqual LessEqualGreater LessFullEqual LessGreater LessLess LessSlantEqual LessTilde LetterCharacter LetterQ Level LeveneTest LeviCivitaTensor LevyDistribution Lexicographic LibraryFunction LibraryFunctionError LibraryFunctionInformation LibraryFunctionLoad LibraryFunctionUnload LibraryLoad LibraryUnload LicenseID LiftingFilterData LiftingWaveletTransform LightBlue LightBrown LightCyan Lighter LightGray LightGreen Lighting LightingAngle LightMagenta LightOrange LightPink LightPurple LightRed LightSources LightYellow Likelihood Limit LimitsPositioning LimitsPositioningTokens LindleyDistribution Line Line3DBox LinearFilter LinearFractionalTransform LinearModelFit LinearOffsetFunction LinearProgramming LinearRecurrence LinearSolve LinearSolveFunction LineBox LineBreak LinebreakAdjustments LineBreakChart LineBreakWithin LineColor LineForm LineGraph LineIndent LineIndentMaxFraction LineIntegralConvolutionPlot LineIntegralConvolutionScale LineLegend LineOpacity LineSpacing LineWrapParts LinkActivate LinkClose LinkConnect LinkConnectedQ LinkCreate LinkError LinkFlush LinkFunction LinkHost LinkInterrupt LinkLaunch LinkMode LinkObject LinkOpen LinkOptions LinkPatterns LinkProtocol LinkRead LinkReadHeld LinkReadyQ Links LinkWrite LinkWriteHeld LiouvilleLambda List Listable ListAnimate ListContourPlot ListContourPlot3D ListConvolve ListCorrelate ListCurvePathPlot ListDeconvolve ListDensityPlot Listen ListFourierSequenceTransform ListInterpolation ListLineIntegralConvolutionPlot ListLinePlot ListLogLinearPlot ListLogLogPlot ListLogPlot ListPicker ListPickerBox ListPickerBoxBackground ListPickerBoxOptions ListPlay ListPlot ListPlot3D ListPointPlot3D ListPolarPlot ListQ ListStreamDensityPlot ListStreamPlot ListSurfacePlot3D ListVectorDensityPlot ListVectorPlot ListVectorPlot3D ListZTransform Literal LiteralSearch LocalClusteringCoefficient LocalizeVariables LocationEquivalenceTest LocationTest Locator LocatorAutoCreate LocatorBox LocatorBoxOptions LocatorCentering LocatorPane LocatorPaneBox LocatorPaneBoxOptions LocatorRegion Locked Log Log10 Log2 LogBarnesG LogGamma LogGammaDistribution LogicalExpand LogIntegral LogisticDistribution LogitModelFit LogLikelihood LogLinearPlot LogLogisticDistribution LogLogPlot LogMultinormalDistribution LogNormalDistribution LogPlot LogRankTest LogSeriesDistribution LongEqual Longest LongestAscendingSequence LongestCommonSequence LongestCommonSequencePositions LongestCommonSubsequence LongestCommonSubsequencePositions LongestMatch LongForm Longitude LongLeftArrow LongLeftRightArrow LongRightArrow Loopback LoopFreeGraphQ LowerCaseQ LowerLeftArrow LowerRightArrow LowerTriangularize LowpassFilter LQEstimatorGains LQGRegulator LQOutputRegulatorGains LQRegulatorGains LUBackSubstitution LucasL LuccioSamiComponents LUDecomposition LyapunovSolve LyonsGroupLy MachineID MachineName MachineNumberQ MachinePrecision MacintoshSystemPageSetup Magenta Magnification Magnify MainSolve MaintainDynamicCaches Majority MakeBoxes MakeExpression MakeRules MangoldtLambda ManhattanDistance Manipulate Manipulator MannWhitneyTest MantissaExponent Manual Map MapAll MapAt MapIndexed MAProcess MapThread MarcumQ MardiaCombinedTest MardiaKurtosisTest MardiaSkewnessTest MarginalDistribution MarkovProcessProperties Masking MatchingDissimilarity MatchLocalNameQ MatchLocalNames MatchQ Material MathematicaNotation MathieuC MathieuCharacteristicA MathieuCharacteristicB MathieuCharacteristicExponent MathieuCPrime MathieuGroupM11 MathieuGroupM12 MathieuGroupM22 MathieuGroupM23 MathieuGroupM24 MathieuS MathieuSPrime MathMLForm MathMLText Matrices MatrixExp MatrixForm MatrixFunction MatrixLog MatrixPlot MatrixPower MatrixQ MatrixRank Max MaxBend MaxDetect MaxExtraBandwidths MaxExtraConditions MaxFeatures MaxFilter Maximize MaxIterations MaxMemoryUsed MaxMixtureKernels MaxPlotPoints MaxPoints MaxRecursion MaxStableDistribution MaxStepFraction MaxSteps MaxStepSize MaxValue MaxwellDistribution McLaughlinGroupMcL Mean MeanClusteringCoefficient MeanDegreeConnectivity MeanDeviation MeanFilter MeanGraphDistance MeanNeighborDegree MeanShift MeanShiftFilter Median MedianDeviation MedianFilter Medium MeijerG MeixnerDistribution MemberQ MemoryConstrained MemoryInUse Menu MenuAppearance MenuCommandKey MenuEvaluator MenuItem MenuPacket MenuSortingValue MenuStyle MenuView MergeDifferences Mesh MeshFunctions MeshRange MeshShading MeshStyle Message MessageDialog MessageList MessageName MessageOptions MessagePacket Messages MessagesNotebook MetaCharacters MetaInformation Method MethodOptions MexicanHatWavelet MeyerWavelet Min MinDetect MinFilter MinimalPolynomial MinimalStateSpaceModel Minimize Minors MinRecursion MinSize MinStableDistribution Minus MinusPlus MinValue Missing MissingDataMethod MittagLefflerE MixedRadix MixedRadixQuantity MixtureDistribution Mod Modal Mode Modular ModularLambda Module Modulus MoebiusMu Moment Momentary MomentConvert MomentEvaluate MomentGeneratingFunction Monday Monitor MonomialList MonomialOrder MonsterGroupM MorletWavelet MorphologicalBinarize MorphologicalBranchPoints MorphologicalComponents MorphologicalEulerNumber MorphologicalGraph MorphologicalPerimeter MorphologicalTransform Most MouseAnnotation MouseAppearance MouseAppearanceTag MouseButtons Mouseover MousePointerNote MousePosition MovingAverage MovingMedian MoyalDistribution MultiedgeStyle MultilaunchWarning MultiLetterItalics MultiLetterStyle MultilineFunction Multinomial MultinomialDistribution MultinormalDistribution MultiplicativeOrder Multiplicity Multiselection MultivariateHypergeometricDistribution MultivariatePoissonDistribution MultivariateTDistribution N NakagamiDistribution NameQ Names NamespaceBox Nand NArgMax NArgMin NBernoulliB NCache NDSolve NDSolveValue Nearest NearestFunction NeedCurrentFrontEndPackagePacket NeedCurrentFrontEndSymbolsPacket NeedlemanWunschSimilarity Needs Negative NegativeBinomialDistribution NegativeMultinomialDistribution NeighborhoodGraph Nest NestedGreaterGreater NestedLessLess NestedScriptRules NestList NestWhile NestWhileList NevilleThetaC NevilleThetaD NevilleThetaN NevilleThetaS NewPrimitiveStyle NExpectation Next NextPrime NHoldAll NHoldFirst NHoldRest NicholsGridLines NicholsPlot NIntegrate NMaximize NMaxValue NMinimize NMinValue NominalVariables NonAssociative NoncentralBetaDistribution NoncentralChiSquareDistribution NoncentralFRatioDistribution NoncentralStudentTDistribution NonCommutativeMultiply NonConstants None NonlinearModelFit NonlocalMeansFilter NonNegative NonPositive Nor NorlundB Norm Normal NormalDistribution NormalGrouping Normalize NormalizedSquaredEuclideanDistance NormalsFunction NormFunction Not NotCongruent NotCupCap NotDoubleVerticalBar Notebook NotebookApply NotebookAutoSave NotebookClose NotebookConvertSettings NotebookCreate NotebookCreateReturnObject NotebookDefault NotebookDelete NotebookDirectory NotebookDynamicExpression NotebookEvaluate NotebookEventActions NotebookFileName NotebookFind NotebookFindReturnObject NotebookGet NotebookGetLayoutInformationPacket NotebookGetMisspellingsPacket NotebookInformation NotebookInterfaceObject NotebookLocate NotebookObject NotebookOpen NotebookOpenReturnObject NotebookPath NotebookPrint NotebookPut NotebookPutReturnObject NotebookRead NotebookResetGeneratedCells Notebooks NotebookSave NotebookSaveAs NotebookSelection NotebookSetupLayoutInformationPacket NotebooksMenu NotebookWrite NotElement NotEqualTilde NotExists NotGreater NotGreaterEqual NotGreaterFullEqual NotGreaterGreater NotGreaterLess NotGreaterSlantEqual NotGreaterTilde NotHumpDownHump NotHumpEqual NotLeftTriangle NotLeftTriangleBar NotLeftTriangleEqual NotLess NotLessEqual NotLessFullEqual NotLessGreater NotLessLess NotLessSlantEqual NotLessTilde NotNestedGreaterGreater NotNestedLessLess NotPrecedes NotPrecedesEqual NotPrecedesSlantEqual NotPrecedesTilde NotReverseElement NotRightTriangle NotRightTriangleBar NotRightTriangleEqual NotSquareSubset NotSquareSubsetEqual NotSquareSuperset NotSquareSupersetEqual NotSubset NotSubsetEqual NotSucceeds NotSucceedsEqual NotSucceedsSlantEqual NotSucceedsTilde NotSuperset NotSupersetEqual NotTilde NotTildeEqual NotTildeFullEqual NotTildeTilde NotVerticalBar NProbability NProduct NProductFactors NRoots NSolve NSum NSumTerms Null NullRecords NullSpace NullWords Number NumberFieldClassNumber NumberFieldDiscriminant NumberFieldFundamentalUnits NumberFieldIntegralBasis NumberFieldNormRepresentatives NumberFieldRegulator NumberFieldRootsOfUnity NumberFieldSignature NumberForm NumberFormat NumberMarks NumberMultiplier NumberPadding NumberPoint NumberQ NumberSeparator NumberSigns NumberString Numerator NumericFunction NumericQ NuttallWindow NValues NyquistGridLines NyquistPlot O ObservabilityGramian ObservabilityMatrix ObservableDecomposition ObservableModelQ OddQ Off Offset OLEData On ONanGroupON OneIdentity Opacity Open OpenAppend Opener OpenerBox OpenerBoxOptions OpenerView OpenFunctionInspectorPacket Opening OpenRead OpenSpecialOptions OpenTemporary OpenWrite Operate OperatingSystem OptimumFlowData Optional OptionInspectorSettings OptionQ Options OptionsPacket OptionsPattern OptionValue OptionValueBox OptionValueBoxOptions Or Orange Order OrderDistribution OrderedQ Ordering Orderless OrnsteinUhlenbeckProcess Orthogonalize Out Outer OutputAutoOverwrite OutputControllabilityMatrix OutputControllableModelQ OutputForm OutputFormData OutputGrouping OutputMathEditExpression OutputNamePacket OutputResponse OutputSizeLimit OutputStream Over OverBar OverDot Overflow OverHat Overlaps Overlay OverlayBox OverlayBoxOptions Overscript OverscriptBox OverscriptBoxOptions OverTilde OverVector OwenT OwnValues PackingMethod PaddedForm Padding PadeApproximant PadLeft PadRight PageBreakAbove PageBreakBelow PageBreakWithin PageFooterLines PageFooters PageHeaderLines PageHeaders PageHeight PageRankCentrality PageWidth PairedBarChart PairedHistogram PairedSmoothHistogram PairedTTest PairedZTest PaletteNotebook PalettePath Pane PaneBox PaneBoxOptions Panel PanelBox PanelBoxOptions Paneled PaneSelector PaneSelectorBox PaneSelectorBoxOptions PaperWidth ParabolicCylinderD ParagraphIndent ParagraphSpacing ParallelArray ParallelCombine ParallelDo ParallelEvaluate Parallelization Parallelize ParallelMap ParallelNeeds ParallelProduct ParallelSubmit ParallelSum ParallelTable ParallelTry Parameter ParameterEstimator ParameterMixtureDistribution ParameterVariables ParametricFunction ParametricNDSolve ParametricNDSolveValue ParametricPlot ParametricPlot3D ParentConnect ParentDirectory ParentForm Parenthesize ParentList ParetoDistribution Part PartialCorrelationFunction PartialD ParticleData Partition PartitionsP PartitionsQ ParzenWindow PascalDistribution PassEventsDown PassEventsUp Paste PasteBoxFormInlineCells PasteButton Path PathGraph PathGraphQ Pattern PatternSequence PatternTest PauliMatrix PaulWavelet Pause PausedTime PDF PearsonChiSquareTest PearsonCorrelationTest PearsonDistribution PerformanceGoal PeriodicInterpolation Periodogram PeriodogramArray PermutationCycles PermutationCyclesQ PermutationGroup PermutationLength PermutationList PermutationListQ PermutationMax PermutationMin PermutationOrder PermutationPower PermutationProduct PermutationReplace Permutations PermutationSupport Permute PeronaMalikFilter Perpendicular PERTDistribution PetersenGraph PhaseMargins Pi Pick PIDData PIDDerivativeFilter PIDFeedforward PIDTune Piecewise PiecewiseExpand PieChart PieChart3D PillaiTrace PillaiTraceTest Pink Pivoting PixelConstrained PixelValue PixelValuePositions Placed Placeholder PlaceholderReplace Plain PlanarGraphQ Play PlayRange Plot Plot3D Plot3Matrix PlotDivision PlotJoined PlotLabel PlotLayout PlotLegends PlotMarkers PlotPoints PlotRange PlotRangeClipping PlotRangePadding PlotRegion PlotStyle Plus PlusMinus Pochhammer PodStates PodWidth Point Point3DBox PointBox PointFigureChart PointForm PointLegend PointSize PoissonConsulDistribution PoissonDistribution PoissonProcess PoissonWindow PolarAxes PolarAxesOrigin PolarGridLines PolarPlot PolarTicks PoleZeroMarkers PolyaAeppliDistribution PolyGamma Polygon Polygon3DBox Polygon3DBoxOptions PolygonBox PolygonBoxOptions PolygonHoleScale PolygonIntersections PolygonScale PolyhedronData PolyLog PolynomialExtendedGCD PolynomialForm PolynomialGCD PolynomialLCM PolynomialMod PolynomialQ PolynomialQuotient PolynomialQuotientRemainder PolynomialReduce PolynomialRemainder Polynomials PopupMenu PopupMenuBox PopupMenuBoxOptions PopupView PopupWindow Position Positive PositiveDefiniteMatrixQ PossibleZeroQ Postfix PostScript Power PowerDistribution PowerExpand PowerMod PowerModList PowerSpectralDensity PowersRepresentations PowerSymmetricPolynomial Precedence PrecedenceForm Precedes PrecedesEqual PrecedesSlantEqual PrecedesTilde Precision PrecisionGoal PreDecrement PredictionRoot PreemptProtect PreferencesPath Prefix PreIncrement Prepend PrependTo PreserveImageOptions Previous PriceGraphDistribution PrimaryPlaceholder Prime PrimeNu PrimeOmega PrimePi PrimePowerQ PrimeQ Primes PrimeZetaP PrimitiveRoot PrincipalComponents PrincipalValue Print PrintAction PrintForm PrintingCopies PrintingOptions PrintingPageRange PrintingStartingPageNumber PrintingStyleEnvironment PrintPrecision PrintTemporary Prism PrismBox PrismBoxOptions PrivateCellOptions PrivateEvaluationOptions PrivateFontOptions PrivateFrontEndOptions PrivateNotebookOptions PrivatePaths Probability ProbabilityDistribution ProbabilityPlot ProbabilityPr ProbabilityScalePlot ProbitModelFit ProcessEstimator ProcessParameterAssumptions ProcessParameterQ ProcessStateDomain ProcessTimeDomain Product ProductDistribution ProductLog ProgressIndicator ProgressIndicatorBox ProgressIndicatorBoxOptions Projection Prolog PromptForm Properties Property PropertyList PropertyValue Proportion Proportional Protect Protected ProteinData Pruning PseudoInverse Purple Put PutAppend Pyramid PyramidBox PyramidBoxOptions QBinomial QFactorial QGamma QHypergeometricPFQ QPochhammer QPolyGamma QRDecomposition QuadraticIrrationalQ Quantile QuantilePlot Quantity QuantityForm QuantityMagnitude QuantityQ QuantityUnit Quartics QuartileDeviation Quartiles QuartileSkewness QueueingNetworkProcess QueueingProcess QueueProperties Quiet Quit Quotient QuotientRemainder RadialityCentrality RadicalBox RadicalBoxOptions RadioButton RadioButtonBar RadioButtonBox RadioButtonBoxOptions Radon RamanujanTau RamanujanTauL RamanujanTauTheta RamanujanTauZ Random RandomChoice RandomComplex RandomFunction RandomGraph RandomImage RandomInteger RandomPermutation RandomPrime RandomReal RandomSample RandomSeed RandomVariate RandomWalkProcess Range RangeFilter RangeSpecification RankedMax RankedMin Raster Raster3D Raster3DBox Raster3DBoxOptions RasterArray RasterBox RasterBoxOptions Rasterize RasterSize Rational RationalFunctions Rationalize Rationals Ratios Raw RawArray RawBoxes RawData RawMedium RayleighDistribution Re Read ReadList ReadProtected Real RealBlockDiagonalForm RealDigits RealExponent Reals Reap Record RecordLists RecordSeparators Rectangle RectangleBox RectangleBoxOptions RectangleChart RectangleChart3D RecurrenceFilter RecurrenceTable RecurringDigitsForm Red Reduce RefBox ReferenceLineStyle ReferenceMarkers ReferenceMarkerStyle Refine ReflectionMatrix ReflectionTransform Refresh RefreshRate RegionBinarize RegionFunction RegionPlot RegionPlot3D RegularExpression Regularization Reinstall Release ReleaseHold ReliabilityDistribution ReliefImage ReliefPlot Remove RemoveAlphaChannel RemoveAsynchronousTask Removed RemoveInputStreamMethod RemoveOutputStreamMethod RemoveProperty RemoveScheduledTask RenameDirectory RenameFile RenderAll RenderingOptions RenewalProcess RenkoChart Repeated RepeatedNull RepeatedString Replace ReplaceAll ReplaceHeldPart ReplaceImageValue ReplaceList ReplacePart ReplacePixelValue ReplaceRepeated Resampling Rescale RescalingTransform ResetDirectory ResetMenusPacket ResetScheduledTask Residue Resolve Rest Resultant ResumePacket Return ReturnExpressionPacket ReturnInputFormPacket ReturnPacket ReturnTextPacket Reverse ReverseBiorthogonalSplineWavelet ReverseElement ReverseEquilibrium ReverseGraph ReverseUpEquilibrium RevolutionAxis RevolutionPlot3D RGBColor RiccatiSolve RiceDistribution RidgeFilter RiemannR RiemannSiegelTheta RiemannSiegelZ Riffle Right RightArrow RightArrowBar RightArrowLeftArrow RightCosetRepresentative RightDownTeeVector RightDownVector RightDownVectorBar RightTee RightTeeArrow RightTeeVector RightTriangle RightTriangleBar RightTriangleEqual RightUpDownVector RightUpTeeVector RightUpVector RightUpVectorBar RightVector RightVectorBar RiskAchievementImportance RiskReductionImportance RogersTanimotoDissimilarity Root RootApproximant RootIntervals RootLocusPlot RootMeanSquare RootOfUnityQ RootReduce Roots RootSum Rotate RotateLabel RotateLeft RotateRight RotationAction RotationBox RotationBoxOptions RotationMatrix RotationTransform Round RoundImplies RoundingRadius Row RowAlignments RowBackgrounds RowBox RowHeights RowLines RowMinHeight RowReduce RowsEqual RowSpacings RSolve RudvalisGroupRu Rule RuleCondition RuleDelayed RuleForm RulerUnits Run RunScheduledTask RunThrough RuntimeAttributes RuntimeOptions RussellRaoDissimilarity SameQ SameTest SampleDepth SampledSoundFunction SampledSoundList SampleRate SamplingPeriod SARIMAProcess SARMAProcess SatisfiabilityCount SatisfiabilityInstances SatisfiableQ Saturday Save Saveable SaveAutoDelete SaveDefinitions SawtoothWave Scale Scaled ScaleDivisions ScaledMousePosition ScaleOrigin ScalePadding ScaleRanges ScaleRangeStyle ScalingFunctions ScalingMatrix ScalingTransform Scan ScheduledTaskActiveQ ScheduledTaskData ScheduledTaskObject ScheduledTasks SchurDecomposition ScientificForm ScreenRectangle ScreenStyleEnvironment ScriptBaselineShifts ScriptLevel ScriptMinSize ScriptRules ScriptSizeMultipliers Scrollbars ScrollingOptions ScrollPosition Sec Sech SechDistribution SectionGrouping SectorChart SectorChart3D SectorOrigin SectorSpacing SeedRandom Select Selectable SelectComponents SelectedCells SelectedNotebook Selection SelectionAnimate SelectionCell SelectionCellCreateCell SelectionCellDefaultStyle SelectionCellParentStyle SelectionCreateCell SelectionDebuggerTag SelectionDuplicateCell SelectionEvaluate SelectionEvaluateCreateCell SelectionMove SelectionPlaceholder SelectionSetStyle SelectWithContents SelfLoops SelfLoopStyle SemialgebraicComponentInstances SendMail Sequence SequenceAlignment SequenceForm SequenceHold SequenceLimit Series SeriesCoefficient SeriesData SessionTime Set SetAccuracy SetAlphaChannel SetAttributes Setbacks SetBoxFormNamesPacket SetDelayed SetDirectory SetEnvironment SetEvaluationNotebook SetFileDate SetFileLoadingContext SetNotebookStatusLine SetOptions SetOptionsPacket SetPrecision SetProperty SetSelectedNotebook SetSharedFunction SetSharedVariable SetSpeechParametersPacket SetStreamPosition SetSystemOptions Setter SetterBar SetterBox SetterBoxOptions Setting SetValue Shading Shallow ShannonWavelet ShapiroWilkTest Share Sharpen ShearingMatrix ShearingTransform ShenCastanMatrix Short ShortDownArrow Shortest ShortestMatch ShortestPathFunction ShortLeftArrow ShortRightArrow ShortUpArrow Show ShowAutoStyles ShowCellBracket ShowCellLabel ShowCellTags ShowClosedCellArea ShowContents ShowControls ShowCursorTracker ShowGroupOpenCloseIcon ShowGroupOpener ShowInvisibleCharacters ShowPageBreaks ShowPredictiveInterface ShowSelection ShowShortBoxForm ShowSpecialCharacters ShowStringCharacters ShowSyntaxStyles ShrinkingDelay ShrinkWrapBoundingBox SiegelTheta SiegelTukeyTest Sign Signature SignedRankTest SignificanceLevel SignPadding SignTest SimilarityRules SimpleGraph SimpleGraphQ Simplify Sin Sinc SinghMaddalaDistribution SingleEvaluation SingleLetterItalics SingleLetterStyle SingularValueDecomposition SingularValueList SingularValuePlot SingularValues Sinh SinhIntegral SinIntegral SixJSymbol Skeleton SkeletonTransform SkellamDistribution Skewness SkewNormalDistribution Skip SliceDistribution Slider Slider2D Slider2DBox Slider2DBoxOptions SliderBox SliderBoxOptions SlideView Slot SlotSequence Small SmallCircle Smaller SmithDelayCompensator SmithWatermanSimilarity SmoothDensityHistogram SmoothHistogram SmoothHistogram3D SmoothKernelDistribution SocialMediaData Socket SokalSneathDissimilarity Solve SolveAlways SolveDelayed Sort SortBy Sound SoundAndGraphics SoundNote SoundVolume Sow Space SpaceForm Spacer Spacings Span SpanAdjustments SpanCharacterRounding SpanFromAbove SpanFromBoth SpanFromLeft SpanLineThickness SpanMaxSize SpanMinSize SpanningCharacters SpanSymmetric SparseArray SpatialGraphDistribution Speak SpeakTextPacket SpearmanRankTest SpearmanRho Spectrogram SpectrogramArray Specularity SpellingCorrection SpellingDictionaries SpellingDictionariesPath SpellingOptions SpellingSuggestionsPacket Sphere SphereBox SphericalBesselJ SphericalBesselY SphericalHankelH1 SphericalHankelH2 SphericalHarmonicY SphericalPlot3D SphericalRegion SpheroidalEigenvalue SpheroidalJoiningFactor SpheroidalPS SpheroidalPSPrime SpheroidalQS SpheroidalQSPrime SpheroidalRadialFactor SpheroidalS1 SpheroidalS1Prime SpheroidalS2 SpheroidalS2Prime Splice SplicedDistribution SplineClosed SplineDegree SplineKnots SplineWeights Split SplitBy SpokenString Sqrt SqrtBox SqrtBoxOptions Square SquaredEuclideanDistance SquareFreeQ SquareIntersection SquaresR SquareSubset SquareSubsetEqual SquareSuperset SquareSupersetEqual SquareUnion SquareWave StabilityMargins StabilityMarginsStyle StableDistribution Stack StackBegin StackComplete StackInhibit StandardDeviation StandardDeviationFilter StandardForm Standardize StandbyDistribution Star StarGraph StartAsynchronousTask StartingStepSize StartOfLine StartOfString StartScheduledTask StartupSound StateDimensions StateFeedbackGains StateOutputEstimator StateResponse StateSpaceModel StateSpaceRealization StateSpaceTransform StationaryDistribution StationaryWaveletPacketTransform StationaryWaveletTransform StatusArea StatusCentrality StepMonitor StieltjesGamma StirlingS1 StirlingS2 StopAsynchronousTask StopScheduledTask StrataVariables StratonovichProcess StreamColorFunction StreamColorFunctionScaling StreamDensityPlot StreamPlot StreamPoints StreamPosition Streams StreamScale StreamStyle String StringBreak StringByteCount StringCases StringCount StringDrop StringExpression StringForm StringFormat StringFreeQ StringInsert StringJoin StringLength StringMatchQ StringPosition StringQ StringReplace StringReplaceList StringReplacePart StringReverse StringRotateLeft StringRotateRight StringSkeleton StringSplit StringTake StringToStream StringTrim StripBoxes StripOnInput StripWrapperBoxes StrokeForm StructuralImportance StructuredArray StructuredSelection StruveH StruveL Stub StudentTDistribution Style StyleBox StyleBoxAutoDelete StyleBoxOptions StyleData StyleDefinitions StyleForm StyleKeyMapping StyleMenuListing StyleNameDialogSettings StyleNames StylePrint StyleSheetPath Subfactorial Subgraph SubMinus SubPlus SubresultantPolynomialRemainders SubresultantPolynomials Subresultants Subscript SubscriptBox SubscriptBoxOptions Subscripted Subset SubsetEqual Subsets SubStar Subsuperscript SubsuperscriptBox SubsuperscriptBoxOptions Subtract SubtractFrom SubValues Succeeds SucceedsEqual SucceedsSlantEqual SucceedsTilde SuchThat Sum SumConvergence Sunday SuperDagger SuperMinus SuperPlus Superscript SuperscriptBox SuperscriptBoxOptions Superset SupersetEqual SuperStar Surd SurdForm SurfaceColor SurfaceGraphics SurvivalDistribution SurvivalFunction SurvivalModel SurvivalModelFit SuspendPacket SuzukiDistribution SuzukiGroupSuz SwatchLegend Switch Symbol SymbolName SymletWavelet Symmetric SymmetricGroup SymmetricMatrixQ SymmetricPolynomial SymmetricReduction Symmetrize SymmetrizedArray SymmetrizedArrayRules SymmetrizedDependentComponents SymmetrizedIndependentComponents SymmetrizedReplacePart SynchronousInitialization SynchronousUpdating Syntax SyntaxForm SyntaxInformation SyntaxLength SyntaxPacket SyntaxQ SystemDialogInput SystemException SystemHelpPath SystemInformation SystemInformationData SystemOpen SystemOptions SystemsModelDelay SystemsModelDelayApproximate SystemsModelDelete SystemsModelDimensions SystemsModelExtract SystemsModelFeedbackConnect SystemsModelLabels SystemsModelOrder SystemsModelParallelConnect SystemsModelSeriesConnect SystemsModelStateFeedbackConnect SystemStub Tab TabFilling Table TableAlignments TableDepth TableDirections TableForm TableHeadings TableSpacing TableView TableViewBox TabSpacings TabView TabViewBox TabViewBoxOptions TagBox TagBoxNote TagBoxOptions TaggingRules TagSet TagSetDelayed TagStyle TagUnset Take TakeWhile Tally Tan Tanh TargetFunctions TargetUnits TautologyQ TelegraphProcess TemplateBox TemplateBoxOptions TemplateSlotSequence TemporalData Temporary TemporaryVariable TensorContract TensorDimensions TensorExpand TensorProduct TensorQ TensorRank TensorReduce TensorSymmetry TensorTranspose TensorWedge Tetrahedron TetrahedronBox TetrahedronBoxOptions TeXForm TeXSave Text Text3DBox Text3DBoxOptions TextAlignment TextBand TextBoundingBox TextBox TextCell TextClipboardType TextData TextForm TextJustification TextLine TextPacket TextParagraph TextRecognize TextRendering TextStyle Texture TextureCoordinateFunction TextureCoordinateScaling Therefore ThermometerGauge Thick Thickness Thin Thinning ThisLink ThompsonGroupTh Thread ThreeJSymbol Threshold Through Throw Thumbnail Thursday Ticks TicksStyle Tilde TildeEqual TildeFullEqual TildeTilde TimeConstrained TimeConstraint Times TimesBy TimeSeriesForecast TimeSeriesInvertibility TimeUsed TimeValue TimeZone Timing Tiny TitleGrouping TitsGroupT ToBoxes ToCharacterCode ToColor ToContinuousTimeModel ToDate ToDiscreteTimeModel ToeplitzMatrix ToExpression ToFileName Together Toggle ToggleFalse Toggler TogglerBar TogglerBox TogglerBoxOptions ToHeldExpression ToInvertibleTimeSeries TokenWords Tolerance ToLowerCase ToNumberField TooBig Tooltip TooltipBox TooltipBoxOptions TooltipDelay TooltipStyle Top TopHatTransform TopologicalSort ToRadicals ToRules ToString Total TotalHeight TotalVariationFilter TotalWidth TouchscreenAutoZoom TouchscreenControlPlacement ToUpperCase Tr Trace TraceAbove TraceAction TraceBackward TraceDepth TraceDialog TraceForward TraceInternal TraceLevel TraceOff TraceOn TraceOriginal TracePrint TraceScan TrackedSymbols TradingChart TraditionalForm TraditionalFunctionNotation TraditionalNotation TraditionalOrder TransferFunctionCancel TransferFunctionExpand TransferFunctionFactor TransferFunctionModel TransferFunctionPoles TransferFunctionTransform TransferFunctionZeros TransformationFunction TransformationFunctions TransformationMatrix TransformedDistribution TransformedField Translate TranslationTransform TransparentColor Transpose TreeForm TreeGraph TreeGraphQ TreePlot TrendStyle TriangleWave TriangularDistribution Trig TrigExpand TrigFactor TrigFactorList Trigger TrigReduce TrigToExp TrimmedMean True TrueQ TruncatedDistribution TsallisQExponentialDistribution TsallisQGaussianDistribution TTest Tube TubeBezierCurveBox TubeBezierCurveBoxOptions TubeBox TubeBSplineCurveBox TubeBSplineCurveBoxOptions Tuesday TukeyLambdaDistribution TukeyWindow Tuples TuranGraph TuringMachine Transparent UnateQ Uncompress Undefined UnderBar Underflow Underlined Underoverscript UnderoverscriptBox UnderoverscriptBoxOptions Underscript UnderscriptBox UnderscriptBoxOptions UndirectedEdge UndirectedGraph UndirectedGraphQ UndocumentedTestFEParserPacket UndocumentedTestGetSelectionPacket Unequal Unevaluated UniformDistribution UniformGraphDistribution UniformSumDistribution Uninstall Union UnionPlus Unique UnitBox UnitConvert UnitDimensions Unitize UnitRootTest UnitSimplify UnitStep UnitTriangle UnitVector Unprotect UnsameQ UnsavedVariables Unset UnsetShared UntrackedVariables Up UpArrow UpArrowBar UpArrowDownArrow Update UpdateDynamicObjects UpdateDynamicObjectsSynchronous UpdateInterval UpDownArrow UpEquilibrium UpperCaseQ UpperLeftArrow UpperRightArrow UpperTriangularize Upsample UpSet UpSetDelayed UpTee UpTeeArrow UpValues URL URLFetch URLFetchAsynchronous URLSave URLSaveAsynchronous UseGraphicsRange Using UsingFrontEnd V2Get ValidationLength Value ValueBox ValueBoxOptions ValueForm ValueQ ValuesData Variables Variance VarianceEquivalenceTest VarianceEstimatorFunction VarianceGammaDistribution VarianceTest VectorAngle VectorColorFunction VectorColorFunctionScaling VectorDensityPlot VectorGlyphData VectorPlot VectorPlot3D VectorPoints VectorQ Vectors VectorScale VectorStyle Vee Verbatim Verbose VerboseConvertToPostScriptPacket VerifyConvergence VerifySolutions VerifyTestAssumptions Version VersionNumber VertexAdd VertexCapacity VertexColors VertexComponent VertexConnectivity VertexCoordinateRules VertexCoordinates VertexCorrelationSimilarity VertexCosineSimilarity VertexCount VertexCoverQ VertexDataCoordinates VertexDegree VertexDelete VertexDiceSimilarity VertexEccentricity VertexInComponent VertexInDegree VertexIndex VertexJaccardSimilarity VertexLabeling VertexLabels VertexLabelStyle VertexList VertexNormals VertexOutComponent VertexOutDegree VertexQ VertexRenderingFunction VertexReplace VertexShape VertexShapeFunction VertexSize VertexStyle VertexTextureCoordinates VertexWeight Vertical VerticalBar VerticalForm VerticalGauge VerticalSeparator VerticalSlider VerticalTilde ViewAngle ViewCenter ViewMatrix ViewPoint ViewPointSelectorSettings ViewPort ViewRange ViewVector ViewVertical VirtualGroupData Visible VisibleCell VoigtDistribution VonMisesDistribution WaitAll WaitAsynchronousTask WaitNext WaitUntil WakebyDistribution WalleniusHypergeometricDistribution WaringYuleDistribution WatershedComponents WatsonUSquareTest WattsStrogatzGraphDistribution WaveletBestBasis WaveletFilterCoefficients WaveletImagePlot WaveletListPlot WaveletMapIndexed WaveletMatrixPlot WaveletPhi WaveletPsi WaveletScale WaveletScalogram WaveletThreshold WeaklyConnectedComponents WeaklyConnectedGraphQ WeakStationarity WeatherData WeberE Wedge Wednesday WeibullDistribution WeierstrassHalfPeriods WeierstrassInvariants WeierstrassP WeierstrassPPrime WeierstrassSigma WeierstrassZeta WeightedAdjacencyGraph WeightedAdjacencyMatrix WeightedData WeightedGraphQ Weights WelchWindow WheelGraph WhenEvent Which While White Whitespace WhitespaceCharacter WhittakerM WhittakerW WienerFilter WienerProcess WignerD WignerSemicircleDistribution WilksW WilksWTest WindowClickSelect WindowElements WindowFloating WindowFrame WindowFrameElements WindowMargins WindowMovable WindowOpacity WindowSelected WindowSize WindowStatusArea WindowTitle WindowToolbars WindowWidth With WolframAlpha WolframAlphaDate WolframAlphaQuantity WolframAlphaResult Word WordBoundary WordCharacter WordData WordSearch WordSeparators WorkingPrecision Write WriteString Wronskian XMLElement XMLObject Xnor Xor Yellow YuleDissimilarity ZernikeR ZeroSymmetric ZeroTest ZeroWidthTimes Zeta ZetaZero ZipfDistribution ZTest ZTransform $Aborted $ActivationGroupID $ActivationKey $ActivationUserRegistered $AddOnsDirectory $AssertFunction $Assumptions $AsynchronousTask $BaseDirectory $BatchInput $BatchOutput $BoxForms $ByteOrdering $Canceled $CharacterEncoding $CharacterEncodings $CommandLine $CompilationTarget $ConditionHold $ConfiguredKernels $Context $ContextPath $ControlActiveSetting $CreationDate $CurrentLink $DateStringFormat $DefaultFont $DefaultFrontEnd $DefaultImagingDevice $DefaultPath $Display $DisplayFunction $DistributedContexts $DynamicEvaluation $Echo $Epilog $ExportFormats $Failed $FinancialDataSource $FormatType $FrontEnd $FrontEndSession $GeoLocation $HistoryLength $HomeDirectory $HTTPCookies $IgnoreEOF $ImagingDevices $ImportFormats $InitialDirectory $Input $InputFileName $InputStreamMethods $Inspector $InstallationDate $InstallationDirectory $InterfaceEnvironment $IterationLimit $KernelCount $KernelID $Language $LaunchDirectory $LibraryPath $LicenseExpirationDate $LicenseID $LicenseProcesses $LicenseServer $LicenseSubprocesses $LicenseType $Line $Linked $LinkSupported $LoadedFiles $MachineAddresses $MachineDomain $MachineDomains $MachineEpsilon $MachineID $MachineName $MachinePrecision $MachineType $MaxExtraPrecision $MaxLicenseProcesses $MaxLicenseSubprocesses $MaxMachineNumber $MaxNumber $MaxPiecewiseCases $MaxPrecision $MaxRootDegree $MessageGroups $MessageList $MessagePrePrint $Messages $MinMachineNumber $MinNumber $MinorReleaseNumber $MinPrecision $ModuleNumber $NetworkLicense $NewMessage $NewSymbol $Notebooks $NumberMarks $Off $OperatingSystem $Output $OutputForms $OutputSizeLimit $OutputStreamMethods $Packages $ParentLink $ParentProcessID $PasswordFile $PatchLevelID $Path $PathnameSeparator $PerformanceGoal $PipeSupported $Post $Pre $PreferencesDirectory $PrePrint $PreRead $PrintForms $PrintLiteral $ProcessID $ProcessorCount $ProcessorType $ProductInformation $ProgramName $RandomState $RecursionLimit $ReleaseNumber $RootDirectory $ScheduledTask $ScriptCommandLine $SessionID $SetParentLink $SharedFunctions $SharedVariables $SoundDisplay $SoundDisplayFunction $SuppressInputFormHeads $SynchronousEvaluation $SyntaxHandler $System $SystemCharacterEncoding $SystemID $SystemWordLength $TemporaryDirectory $TemporaryPrefix $TextStyle $TimedOut $TimeUnit $TimeZone $TopDirectory $TraceOff $TraceOn $TracePattern $TracePostAction $TracePreAction $Urgent $UserAddOnsDirectory $UserBaseDirectory $UserDocumentsDirectory $UserName $Version $VersionNumber", -c:[{cN:"comment",b:/\(\*/,e:/\*\)/},e.ASM,e.QSM,e.CNM,{b:/\{/,e:/\}/,i:/:/}]}});hljs.registerLanguage("maxima",function(e){var t="if then else elseif for thru do while unless step in and or not",a="true false unknown inf minf ind und %e %i %pi %phi %gamma",r=" abasep abs absint absolute_real_time acos acosh acot acoth acsc acsch activate addcol add_edge add_edges addmatrices addrow add_vertex add_vertices adjacency_matrix adjoin adjoint af agd airy airy_ai airy_bi airy_dai airy_dbi algsys alg_type alias allroots alphacharp alphanumericp amortization %and annuity_fv annuity_pv antid antidiff AntiDifference append appendfile apply apply1 apply2 applyb1 apropos args arit_amortization arithmetic arithsum array arrayapply arrayinfo arraymake arraysetapply ascii asec asech asin asinh askinteger asksign assoc assoc_legendre_p assoc_legendre_q assume assume_external_byte_order asympa at atan atan2 atanh atensimp atom atvalue augcoefmatrix augmented_lagrangian_method av average_degree backtrace bars barsplot barsplot_description base64 base64_decode bashindices batch batchload bc2 bdvac belln benefit_cost bern bernpoly bernstein_approx bernstein_expand bernstein_poly bessel bessel_i bessel_j bessel_k bessel_simplify bessel_y beta beta_incomplete beta_incomplete_generalized beta_incomplete_regularized bezout bfallroots bffac bf_find_root bf_fmin_cobyla bfhzeta bfloat bfloatp bfpsi bfpsi0 bfzeta biconnected_components bimetric binomial bipartition block blockmatrixp bode_gain bode_phase bothcoef box boxplot boxplot_description break bug_report build_info|10 buildq build_sample burn cabs canform canten cardinality carg cartan cartesian_product catch cauchy_matrix cbffac cdf_bernoulli cdf_beta cdf_binomial cdf_cauchy cdf_chi2 cdf_continuous_uniform cdf_discrete_uniform cdf_exp cdf_f cdf_gamma cdf_general_finite_discrete cdf_geometric cdf_gumbel cdf_hypergeometric cdf_laplace cdf_logistic cdf_lognormal cdf_negative_binomial cdf_noncentral_chi2 cdf_noncentral_student_t cdf_normal cdf_pareto cdf_poisson cdf_rank_sum cdf_rayleigh cdf_signed_rank cdf_student_t cdf_weibull cdisplay ceiling central_moment cequal cequalignore cf cfdisrep cfexpand cgeodesic cgreaterp cgreaterpignore changename changevar chaosgame charat charfun charfun2 charlist charp charpoly chdir chebyshev_t chebyshev_u checkdiv check_overlaps chinese cholesky christof chromatic_index chromatic_number cint circulant_graph clear_edge_weight clear_rules clear_vertex_label clebsch_gordan clebsch_graph clessp clesspignore close closefile cmetric coeff coefmatrix cograd col collapse collectterms columnop columnspace columnswap columnvector combination combine comp2pui compare compfile compile compile_file complement_graph complete_bipartite_graph complete_graph complex_number_p components compose_functions concan concat conjugate conmetderiv connected_components connect_vertices cons constant constantp constituent constvalue cont2part content continuous_freq contortion contour_plot contract contract_edge contragrad contrib_ode convert coord copy copy_file copy_graph copylist copymatrix cor cos cosh cot coth cov cov1 covdiff covect covers crc24sum create_graph create_list csc csch csetup cspline ctaylor ct_coordsys ctransform ctranspose cube_graph cuboctahedron_graph cunlisp cv cycle_digraph cycle_graph cylindrical days360 dblint deactivate declare declare_constvalue declare_dimensions declare_fundamental_dimensions declare_fundamental_units declare_qty declare_translated declare_unit_conversion declare_units declare_weights decsym defcon define define_alt_display define_variable defint defmatch defrule defstruct deftaylor degree_sequence del delete deleten delta demo demoivre denom depends derivdegree derivlist describe desolve determinant dfloat dgauss_a dgauss_b dgeev dgemm dgeqrf dgesv dgesvd diag diagmatrix diag_matrix diagmatrixp diameter diff digitcharp dimacs_export dimacs_import dimension dimensionless dimensions dimensions_as_list direct directory discrete_freq disjoin disjointp disolate disp dispcon dispform dispfun dispJordan display disprule dispterms distrib divide divisors divsum dkummer_m dkummer_u dlange dodecahedron_graph dotproduct dotsimp dpart draw draw2d draw3d drawdf draw_file draw_graph dscalar echelon edge_coloring edge_connectivity edges eigens_by_jacobi eigenvalues eigenvectors eighth einstein eivals eivects elapsed_real_time elapsed_run_time ele2comp ele2polynome ele2pui elem elementp elevation_grid elim elim_allbut eliminate eliminate_using ellipse elliptic_e elliptic_ec elliptic_eu elliptic_f elliptic_kc elliptic_pi ematrix empty_graph emptyp endcons entermatrix entertensor entier equal equalp equiv_classes erf erfc erf_generalized erfi errcatch error errormsg errors euler ev eval_string evenp every evolution evolution2d evundiff example exp expand expandwrt expandwrt_factored expint expintegral_chi expintegral_ci expintegral_e expintegral_e1 expintegral_ei expintegral_e_simplify expintegral_li expintegral_shi expintegral_si explicit explose exponentialize express expt exsec extdiff extract_linear_equations extremal_subset ezgcd %f f90 facsum factcomb factor factorfacsum factorial factorout factorsum facts fast_central_elements fast_linsolve fasttimes featurep fernfale fft fib fibtophi fifth filename_merge file_search file_type fillarray findde find_root find_root_abs find_root_error find_root_rel first fix flatten flength float floatnump floor flower_snark flush flush1deriv flushd flushnd flush_output fmin_cobyla forget fortran fourcos fourexpand fourier fourier_elim fourint fourintcos fourintsin foursimp foursin fourth fposition frame_bracket freeof freshline fresnel_c fresnel_s from_adjacency_matrix frucht_graph full_listify fullmap fullmapl fullratsimp fullratsubst fullsetify funcsolve fundamental_dimensions fundamental_units fundef funmake funp fv g0 g1 gamma gamma_greek gamma_incomplete gamma_incomplete_generalized gamma_incomplete_regularized gauss gauss_a gauss_b gaussprob gcd gcdex gcdivide gcfac gcfactor gd generalized_lambert_w genfact gen_laguerre genmatrix gensym geo_amortization geo_annuity_fv geo_annuity_pv geomap geometric geometric_mean geosum get getcurrentdirectory get_edge_weight getenv get_lu_factors get_output_stream_string get_pixel get_plot_option get_tex_environment get_tex_environment_default get_vertex_label gfactor gfactorsum ggf girth global_variances gn gnuplot_close gnuplot_replot gnuplot_reset gnuplot_restart gnuplot_start go Gosper GosperSum gr2d gr3d gradef gramschmidt graph6_decode graph6_encode graph6_export graph6_import graph_center graph_charpoly graph_eigenvalues graph_flow graph_order graph_periphery graph_product graph_size graph_union great_rhombicosidodecahedron_graph great_rhombicuboctahedron_graph grid_graph grind grobner_basis grotzch_graph hamilton_cycle hamilton_path hankel hankel_1 hankel_2 harmonic harmonic_mean hav heawood_graph hermite hessian hgfred hilbertmap hilbert_matrix hipow histogram histogram_description hodge horner hypergeometric i0 i1 %ibes ic1 ic2 ic_convert ichr1 ichr2 icosahedron_graph icosidodecahedron_graph icurvature ident identfor identity idiff idim idummy ieqn %if ifactors iframes ifs igcdex igeodesic_coords ilt image imagpart imetric implicit implicit_derivative implicit_plot indexed_tensor indices induced_subgraph inferencep inference_result infix info_display init_atensor init_ctensor in_neighbors innerproduct inpart inprod inrt integerp integer_partitions integrate intersect intersection intervalp intopois intosum invariant1 invariant2 inverse_fft inverse_jacobi_cd inverse_jacobi_cn inverse_jacobi_cs inverse_jacobi_dc inverse_jacobi_dn inverse_jacobi_ds inverse_jacobi_nc inverse_jacobi_nd inverse_jacobi_ns inverse_jacobi_sc inverse_jacobi_sd inverse_jacobi_sn invert invert_by_adjoint invert_by_lu inv_mod irr is is_biconnected is_bipartite is_connected is_digraph is_edge_in_graph is_graph is_graph_or_digraph ishow is_isomorphic isolate isomorphism is_planar isqrt isreal_p is_sconnected is_tree is_vertex_in_graph items_inference %j j0 j1 jacobi jacobian jacobi_cd jacobi_cn jacobi_cs jacobi_dc jacobi_dn jacobi_ds jacobi_nc jacobi_nd jacobi_ns jacobi_p jacobi_sc jacobi_sd jacobi_sn JF jn join jordan julia julia_set julia_sin %k kdels kdelta kill killcontext kostka kron_delta kronecker_product kummer_m kummer_u kurtosis kurtosis_bernoulli kurtosis_beta kurtosis_binomial kurtosis_chi2 kurtosis_continuous_uniform kurtosis_discrete_uniform kurtosis_exp kurtosis_f kurtosis_gamma kurtosis_general_finite_discrete kurtosis_geometric kurtosis_gumbel kurtosis_hypergeometric kurtosis_laplace kurtosis_logistic kurtosis_lognormal kurtosis_negative_binomial kurtosis_noncentral_chi2 kurtosis_noncentral_student_t kurtosis_normal kurtosis_pareto kurtosis_poisson kurtosis_rayleigh kurtosis_student_t kurtosis_weibull label labels lagrange laguerre lambda lambert_w laplace laplacian_matrix last lbfgs lc2kdt lcharp lc_l lcm lc_u ldefint ldisp ldisplay legendre_p legendre_q leinstein length let letrules letsimp levi_civita lfreeof lgtreillis lhs li liediff limit Lindstedt linear linearinterpol linear_program linear_regression line_graph linsolve listarray list_correlations listify list_matrix_entries list_nc_monomials listoftens listofvars listp lmax lmin load loadfile local locate_matrix_entry log logcontract log_gamma lopow lorentz_gauge lowercasep lpart lratsubst lreduce lriemann lsquares_estimates lsquares_estimates_approximate lsquares_estimates_exact lsquares_mse lsquares_residual_mse lsquares_residuals lsum ltreillis lu_backsub lucas lu_factor %m macroexpand macroexpand1 make_array makebox makefact makegamma make_graph make_level_picture makelist makeOrders make_poly_continent make_poly_country make_polygon make_random_state make_rgb_picture makeset make_string_input_stream make_string_output_stream make_transform mandelbrot mandelbrot_set map mapatom maplist matchdeclare matchfix mat_cond mat_fullunblocker mat_function mathml_display mat_norm matrix matrixmap matrixp matrix_size mattrace mat_trace mat_unblocker max max_clique max_degree max_flow maximize_lp max_independent_set max_matching maybe md5sum mean mean_bernoulli mean_beta mean_binomial mean_chi2 mean_continuous_uniform mean_deviation mean_discrete_uniform mean_exp mean_f mean_gamma mean_general_finite_discrete mean_geometric mean_gumbel mean_hypergeometric mean_laplace mean_logistic mean_lognormal mean_negative_binomial mean_noncentral_chi2 mean_noncentral_student_t mean_normal mean_pareto mean_poisson mean_rayleigh mean_student_t mean_weibull median median_deviation member mesh metricexpandall mgf1_sha1 min min_degree min_edge_cut minfactorial minimalPoly minimize_lp minimum_spanning_tree minor minpack_lsquares minpack_solve min_vertex_cover min_vertex_cut mkdir mnewton mod mode_declare mode_identity ModeMatrix moebius mon2schur mono monomial_dimensions multibernstein_poly multi_display_for_texinfo multi_elem multinomial multinomial_coeff multi_orbit multiplot_mode multi_pui multsym multthru mycielski_graph nary natural_unit nc_degree ncexpt ncharpoly negative_picture neighbors new newcontext newdet new_graph newline newton new_variable next_prime nicedummies niceindices ninth nofix nonarray noncentral_moment nonmetricity nonnegintegerp nonscalarp nonzeroandfreeof notequal nounify nptetrad npv nroots nterms ntermst nthroot nullity nullspace num numbered_boundaries numberp number_to_octets num_distinct_partitions numerval numfactor num_partitions nusum nzeta nzetai nzetar octets_to_number octets_to_oid odd_girth oddp ode2 ode_check odelin oid_to_octets op opena opena_binary openr openr_binary openw openw_binary operatorp opsubst optimize %or orbit orbits ordergreat ordergreatp orderless orderlessp orthogonal_complement orthopoly_recur orthopoly_weight outermap out_neighbors outofpois pade parabolic_cylinder_d parametric parametric_surface parg parGosper parse_string parse_timedate part part2cont partfrac partition partition_set partpol path_digraph path_graph pathname_directory pathname_name pathname_type pdf_bernoulli pdf_beta pdf_binomial pdf_cauchy pdf_chi2 pdf_continuous_uniform pdf_discrete_uniform pdf_exp pdf_f pdf_gamma pdf_general_finite_discrete pdf_geometric pdf_gumbel pdf_hypergeometric pdf_laplace pdf_logistic pdf_lognormal pdf_negative_binomial pdf_noncentral_chi2 pdf_noncentral_student_t pdf_normal pdf_pareto pdf_poisson pdf_rank_sum pdf_rayleigh pdf_signed_rank pdf_student_t pdf_weibull pearson_skewness permanent permut permutation permutations petersen_graph petrov pickapart picture_equalp picturep piechart piechart_description planar_embedding playback plog plot2d plot3d plotdf ploteq plsquares pochhammer points poisdiff poisexpt poisint poismap poisplus poissimp poissubst poistimes poistrim polar polarform polartorect polar_to_xy poly_add poly_buchberger poly_buchberger_criterion poly_colon_ideal poly_content polydecomp poly_depends_p poly_elimination_ideal poly_exact_divide poly_expand poly_expt poly_gcd polygon poly_grobner poly_grobner_equal poly_grobner_member poly_grobner_subsetp poly_ideal_intersection poly_ideal_polysaturation poly_ideal_polysaturation1 poly_ideal_saturation poly_ideal_saturation1 poly_lcm poly_minimization polymod poly_multiply polynome2ele polynomialp poly_normal_form poly_normalize poly_normalize_list poly_polysaturation_extension poly_primitive_part poly_pseudo_divide poly_reduced_grobner poly_reduction poly_saturation_extension poly_s_polynomial poly_subtract polytocompanion pop postfix potential power_mod powerseries powerset prefix prev_prime primep primes principal_components print printf printfile print_graph printpois printprops prodrac product properties propvars psi psubst ptriangularize pui pui2comp pui2ele pui2polynome pui_direct puireduc push put pv qput qrange qty quad_control quad_qag quad_qagi quad_qagp quad_qags quad_qawc quad_qawf quad_qawo quad_qaws quadrilateral quantile quantile_bernoulli quantile_beta quantile_binomial quantile_cauchy quantile_chi2 quantile_continuous_uniform quantile_discrete_uniform quantile_exp quantile_f quantile_gamma quantile_general_finite_discrete quantile_geometric quantile_gumbel quantile_hypergeometric quantile_laplace quantile_logistic quantile_lognormal quantile_negative_binomial quantile_noncentral_chi2 quantile_noncentral_student_t quantile_normal quantile_pareto quantile_poisson quantile_rayleigh quantile_student_t quantile_weibull quartile_skewness quit qunit quotient racah_v racah_w radcan radius random random_bernoulli random_beta random_binomial random_bipartite_graph random_cauchy random_chi2 random_continuous_uniform random_digraph random_discrete_uniform random_exp random_f random_gamma random_general_finite_discrete random_geometric random_graph random_graph1 random_gumbel random_hypergeometric random_laplace random_logistic random_lognormal random_negative_binomial random_network random_noncentral_chi2 random_noncentral_student_t random_normal random_pareto random_permutation random_poisson random_rayleigh random_regular_graph random_student_t random_tournament random_tree random_weibull range rank rat ratcoef ratdenom ratdiff ratdisrep ratexpand ratinterpol rational rationalize ratnumer ratnump ratp ratsimp ratsubst ratvars ratweight read read_array read_binary_array read_binary_list read_binary_matrix readbyte readchar read_hashed_array readline read_list read_matrix read_nested_list readonly read_xpm real_imagpart_to_conjugate realpart realroots rearray rectangle rectform rectform_log_if_constant recttopolar rediff reduce_consts reduce_order region region_boundaries region_boundaries_plus rem remainder remarray rembox remcomps remcon remcoord remfun remfunction remlet remove remove_constvalue remove_dimensions remove_edge remove_fundamental_dimensions remove_fundamental_units remove_plot_option remove_vertex rempart remrule remsym remvalue rename rename_file reset reset_displays residue resolvante resolvante_alternee1 resolvante_bipartite resolvante_diedrale resolvante_klein resolvante_klein3 resolvante_produit_sym resolvante_unitaire resolvante_vierer rest resultant return reveal reverse revert revert2 rgb2level rhs ricci riemann rinvariant risch rk rmdir rncombine romberg room rootscontract round row rowop rowswap rreduce run_testsuite %s save saving scalarp scaled_bessel_i scaled_bessel_i0 scaled_bessel_i1 scalefactors scanmap scatterplot scatterplot_description scene schur2comp sconcat scopy scsimp scurvature sdowncase sec sech second sequal sequalignore set_alt_display setdifference set_draw_defaults set_edge_weight setelmx setequalp setify setp set_partitions set_plot_option set_prompt set_random_state set_tex_environment set_tex_environment_default setunits setup_autoload set_up_dot_simplifications set_vertex_label seventh sexplode sf sha1sum sha256sum shortest_path shortest_weighted_path show showcomps showratvars sierpinskiale sierpinskimap sign signum similaritytransform simp_inequality simplify_sum simplode simpmetderiv simtran sin sinh sinsert sinvertcase sixth skewness skewness_bernoulli skewness_beta skewness_binomial skewness_chi2 skewness_continuous_uniform skewness_discrete_uniform skewness_exp skewness_f skewness_gamma skewness_general_finite_discrete skewness_geometric skewness_gumbel skewness_hypergeometric skewness_laplace skewness_logistic skewness_lognormal skewness_negative_binomial skewness_noncentral_chi2 skewness_noncentral_student_t skewness_normal skewness_pareto skewness_poisson skewness_rayleigh skewness_student_t skewness_weibull slength smake small_rhombicosidodecahedron_graph small_rhombicuboctahedron_graph smax smin smismatch snowmap snub_cube_graph snub_dodecahedron_graph solve solve_rec solve_rec_rat some somrac sort sparse6_decode sparse6_encode sparse6_export sparse6_import specint spherical spherical_bessel_j spherical_bessel_y spherical_hankel1 spherical_hankel2 spherical_harmonic spherical_to_xyz splice split sposition sprint sqfr sqrt sqrtdenest sremove sremovefirst sreverse ssearch ssort sstatus ssubst ssubstfirst staircase standardize standardize_inverse_trig starplot starplot_description status std std1 std_bernoulli std_beta std_binomial std_chi2 std_continuous_uniform std_discrete_uniform std_exp std_f std_gamma std_general_finite_discrete std_geometric std_gumbel std_hypergeometric std_laplace std_logistic std_lognormal std_negative_binomial std_noncentral_chi2 std_noncentral_student_t std_normal std_pareto std_poisson std_rayleigh std_student_t std_weibull stemplot stirling stirling1 stirling2 strim striml strimr string stringout stringp strong_components struve_h struve_l sublis sublist sublist_indices submatrix subsample subset subsetp subst substinpart subst_parallel substpart substring subvar subvarp sum sumcontract summand_to_rec supcase supcontext symbolp symmdifference symmetricp system take_channel take_inference tan tanh taylor taylorinfo taylorp taylor_simplifier taytorat tcl_output tcontract tellrat tellsimp tellsimpafter tentex tenth test_mean test_means_difference test_normality test_proportion test_proportions_difference test_rank_sum test_sign test_signed_rank test_variance test_variance_ratio tex tex1 tex_display texput %th third throw time timedate timer timer_info tldefint tlimit todd_coxeter toeplitz tokens to_lisp topological_sort to_poly to_poly_solve totaldisrep totalfourier totient tpartpol trace tracematrix trace_options transform_sample translate translate_file transpose treefale tree_reduce treillis treinat triangle triangularize trigexpand trigrat trigreduce trigsimp trunc truncate truncated_cube_graph truncated_dodecahedron_graph truncated_icosahedron_graph truncated_tetrahedron_graph tr_warnings_get tube tutte_graph ueivects uforget ultraspherical underlying_graph undiff union unique uniteigenvectors unitp units unit_step unitvector unorder unsum untellrat untimer untrace uppercasep uricci uriemann uvect vandermonde_matrix var var1 var_bernoulli var_beta var_binomial var_chi2 var_continuous_uniform var_discrete_uniform var_exp var_f var_gamma var_general_finite_discrete var_geometric var_gumbel var_hypergeometric var_laplace var_logistic var_lognormal var_negative_binomial var_noncentral_chi2 var_noncentral_student_t var_normal var_pareto var_poisson var_rayleigh var_student_t var_weibull vector vectorpotential vectorsimp verbify vers vertex_coloring vertex_connectivity vertex_degree vertex_distance vertex_eccentricity vertex_in_degree vertex_out_degree vertices vertices_to_cycle vertices_to_path %w weyl wheel_graph wiener_index wigner_3j wigner_6j wigner_9j with_stdout write_binary_data writebyte write_data writefile wronskian xreduce xthru %y Zeilberger zeroequiv zerofor zeromatrix zeromatrixp zeta zgeev zheev zlange zn_add_table zn_carmichael_lambda zn_characteristic_factors zn_determinant zn_factor_generators zn_invert_by_lu zn_log zn_mult_table absboxchar activecontexts adapt_depth additive adim aform algebraic algepsilon algexact aliases allbut all_dotsimp_denoms allocation allsym alphabetic animation antisymmetric arrays askexp assume_pos assume_pos_pred assumescalar asymbol atomgrad atrig1 axes axis_3d axis_bottom axis_left axis_right axis_top azimuth background background_color backsubst berlefact bernstein_explicit besselexpand beta_args_sum_to_integer beta_expand bftorat bftrunc bindtest border boundaries_array box boxchar breakup %c capping cauchysum cbrange cbtics center cflength cframe_flag cnonmet_flag color color_bar color_bar_tics colorbox columns commutative complex cone context contexts contour contour_levels cosnpiflag ctaypov ctaypt ctayswitch ctayvar ct_coords ctorsion_flag ctrgsimp cube current_let_rule_package cylinder data_file_name debugmode decreasing default_let_rule_package delay dependencies derivabbrev derivsubst detout diagmetric diff dim dimensions dispflag display2d|10 display_format_internal distribute_over doallmxops domain domxexpt domxmxops domxnctimes dontfactor doscmxops doscmxplus dot0nscsimp dot0simp dot1simp dotassoc dotconstrules dotdistrib dotexptsimp dotident dotscrules draw_graph_program draw_realpart edge_color edge_coloring edge_partition edge_type edge_width %edispflag elevation %emode endphi endtheta engineering_format_floats enhanced3d %enumer epsilon_lp erfflag erf_representation errormsg error_size error_syms error_type %e_to_numlog eval even evenfun evflag evfun ev_point expandwrt_denom expintexpand expintrep expon expop exptdispflag exptisolate exptsubst facexpand facsum_combine factlim factorflag factorial_expand factors_only fb feature features file_name file_output_append file_search_demo file_search_lisp file_search_maxima|10 file_search_tests file_search_usage file_type_lisp file_type_maxima|10 fill_color fill_density filled_func fixed_vertices flipflag float2bf font font_size fortindent fortspaces fpprec fpprintprec functions gamma_expand gammalim gdet genindex gensumnum GGFCFMAX GGFINFINITY globalsolve gnuplot_command gnuplot_curve_styles gnuplot_curve_titles gnuplot_default_term_command gnuplot_dumb_term_command gnuplot_file_args gnuplot_file_name gnuplot_out_file gnuplot_pdf_term_command gnuplot_pm3d gnuplot_png_term_command gnuplot_postamble gnuplot_preamble gnuplot_ps_term_command gnuplot_svg_term_command gnuplot_term gnuplot_view_args Gosper_in_Zeilberger gradefs grid grid2d grind halfangles head_angle head_both head_length head_type height hypergeometric_representation %iargs ibase icc1 icc2 icounter idummyx ieqnprint ifb ifc1 ifc2 ifg ifgi ifr iframe_bracket_form ifri igeowedge_flag ikt1 ikt2 imaginary inchar increasing infeval infinity inflag infolists inm inmc1 inmc2 intanalysis integer integervalued integrate_use_rootsof integration_constant integration_constant_counter interpolate_color intfaclim ip_grid ip_grid_in irrational isolate_wrt_times iterations itr julia_parameter %k1 %k2 keepfloat key key_pos kinvariant kt label label_alignment label_orientation labels lassociative lbfgs_ncorrections lbfgs_nfeval_max leftjust legend letrat let_rule_packages lfg lg lhospitallim limsubst linear linear_solver linechar linel|10 linenum line_type linewidth line_width linsolve_params linsolvewarn lispdisp listarith listconstvars listdummyvars lmxchar load_pathname loadprint logabs logarc logcb logconcoeffp logexpand lognegint logsimp logx logx_secondary logy logy_secondary logz lriem m1pbranch macroexpansion macros mainvar manual_demo maperror mapprint matrix_element_add matrix_element_mult matrix_element_transpose maxapplydepth maxapplyheight maxima_tempdir|10 maxima_userdir|10 maxnegex MAX_ORD maxposex maxpsifracdenom maxpsifracnum maxpsinegint maxpsiposint maxtayorder mesh_lines_color method mod_big_prime mode_check_errorp mode_checkp mode_check_warnp mod_test mod_threshold modular_linear_solver modulus multiplicative multiplicities myoptions nary negdistrib negsumdispflag newline newtonepsilon newtonmaxiter nextlayerfactor niceindicespref nm nmc noeval nolabels nonegative_lp noninteger nonscalar noun noundisp nouns np npi nticks ntrig numer numer_pbranch obase odd oddfun opacity opproperties opsubst optimprefix optionset orientation origin orthopoly_returns_intervals outative outchar packagefile palette partswitch pdf_file pfeformat phiresolution %piargs piece pivot_count_sx pivot_max_sx plot_format plot_options plot_realpart png_file pochhammer_max_index points pointsize point_size points_joined point_type poislim poisson poly_coefficient_ring poly_elimination_order polyfactor poly_grobner_algorithm poly_grobner_debug poly_monomial_order poly_primary_elimination_order poly_return_term_list poly_secondary_elimination_order poly_top_reduction_only posfun position powerdisp pred prederror primep_number_of_tests product_use_gamma program programmode promote_float_to_bigfloat prompt proportional_axes props psexpand ps_file radexpand radius radsubstflag rassociative ratalgdenom ratchristof ratdenomdivide rateinstein ratepsilon ratfac rational ratmx ratprint ratriemann ratsimpexpons ratvarswitch ratweights ratweyl ratwtlvl real realonly redraw refcheck resolution restart resultant ric riem rmxchar %rnum_list rombergabs rombergit rombergmin rombergtol rootsconmode rootsepsilon run_viewer same_xy same_xyz savedef savefactors scalar scalarmatrixp scale scale_lp setcheck setcheckbreak setval show_edge_color show_edges show_edge_type show_edge_width show_id show_label showtime show_vertex_color show_vertex_size show_vertex_type show_vertices show_weight simp simplified_output simplify_products simpproduct simpsum sinnpiflag solvedecomposes solveexplicit solvefactors solvenullwarn solveradcan solvetrigwarn space sparse sphere spring_embedding_depth sqrtdispflag stardisp startphi starttheta stats_numer stringdisp structures style sublis_apply_lambda subnumsimp sumexpand sumsplitfact surface surface_hide svg_file symmetric tab taylordepth taylor_logexpand taylor_order_coefficients taylor_truncate_polynomials tensorkill terminal testsuite_files thetaresolution timer_devalue title tlimswitch tr track transcompile transform transform_xy translate_fast_arrays transparent transrun tr_array_as_ref tr_bound_function_applyp tr_file_tty_messagesp tr_float_can_branch_complex tr_function_call_default trigexpandplus trigexpandtimes triginverses trigsign trivial_solutions tr_numer tr_optimize_max_loop tr_semicompile tr_state_vars tr_warn_bad_function_calls tr_warn_fexpr tr_warn_meval tr_warn_mode tr_warn_undeclared tr_warn_undefined_variable tstep ttyoff tube_extremes ufg ug %unitexpand unit_vectors uric uriem use_fast_arrays user_preamble usersetunits values vect_cross verbose vertex_color vertex_coloring vertex_partition vertex_size vertex_type view warnings weyl width windowname windowtitle wired_surface wireframe xaxis xaxis_color xaxis_secondary xaxis_type xaxis_width xlabel xlabel_secondary xlength xrange xrange_secondary xtics xtics_axis xtics_rotate xtics_rotate_secondary xtics_secondary xtics_secondary_axis xu_grid x_voxel xy_file xyplane xy_scale yaxis yaxis_color yaxis_secondary yaxis_type yaxis_width ylabel ylabel_secondary ylength yrange yrange_secondary ytics ytics_axis ytics_rotate ytics_rotate_secondary ytics_secondary ytics_secondary_axis yv_grid y_voxel yx_ratio zaxis zaxis_color zaxis_type zaxis_width zeroa zerob zerobern zeta%pi zlabel zlabel_rotate zlength zmin zn_primroot_limit zn_primroot_pretest",i="_ __ %|0 %%|0";return{l:"[A-Za-z_%][0-9A-Za-z_%]*",k:{keyword:t,literal:a,built_in:r,symbol:i},c:[{cN:"comment",b:"/\\*",e:"\\*/",c:["self"]},e.QSM,{cN:"number",r:0,v:[{b:"\\b(\\d+|\\d+\\.|\\.\\d+|\\d+\\.\\d+)[Ee][-+]?\\d+\\b"},{b:"\\b(\\d+|\\d+\\.|\\.\\d+|\\d+\\.\\d+)[Bb][-+]?\\d+\\b",r:10},{b:"\\b(\\.\\d+|\\d+\\.\\d+)\\b"},{b:"\\b(\\d+|0[0-9A-Za-z]+)\\.?\\b"}]}],i:/@/}});hljs.registerLanguage("fsharp",function(e){var t={b:"<",e:">",c:[e.inherit(e.TM,{b:/'[a-zA-Z0-9_]+/})]};return{aliases:["fs"],k:"abstract and as assert base begin class default delegate do done downcast downto elif else end exception extern false finally for fun function global if in inherit inline interface internal lazy let match member module mutable namespace new null of open or override private public rec return sig static struct then to true try type upcast use val void when while with yield",i:/\/\*/,c:[{cN:"keyword",b:/\b(yield|return|let|do)!/},{cN:"string",b:'@"',e:'"',c:[{b:'""'}]},{cN:"string",b:'"""',e:'"""'},e.C("\\(\\*","\\*\\)"),{cN:"class",bK:"type",e:"\\(|=|$",eE:!0,c:[e.UTM,t]},{cN:"meta",b:"\\[<",e:">\\]",r:10},{cN:"symbol",b:"\\B('[A-Za-z])\\b",c:[e.BE]},e.CLCM,e.inherit(e.QSM,{i:null}),e.CNM]}});hljs.registerLanguage("processing",function(e){return{k:{keyword:"BufferedReader PVector PFont PImage PGraphics HashMap boolean byte char color double float int long String Array FloatDict FloatList IntDict IntList JSONArray JSONObject Object StringDict StringList Table TableRow XML false synchronized int abstract float private char boolean static null if const for true while long throw strictfp finally protected import native final return void enum else break transient new catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private",literal:"P2D P3D HALF_PI PI QUARTER_PI TAU TWO_PI",title:"setup draw",built_in:"displayHeight displayWidth mouseY mouseX mousePressed pmouseX pmouseY key keyCode pixels focused frameCount frameRate height width size createGraphics beginDraw createShape loadShape PShape arc ellipse line point quad rect triangle bezier bezierDetail bezierPoint bezierTangent curve curveDetail curvePoint curveTangent curveTightness shape shapeMode beginContour beginShape bezierVertex curveVertex endContour endShape quadraticVertex vertex ellipseMode noSmooth rectMode smooth strokeCap strokeJoin strokeWeight mouseClicked mouseDragged mouseMoved mousePressed mouseReleased mouseWheel keyPressed keyPressedkeyReleased keyTyped print println save saveFrame day hour millis minute month second year background clear colorMode fill noFill noStroke stroke alpha blue brightness color green hue lerpColor red saturation modelX modelY modelZ screenX screenY screenZ ambient emissive shininess specular add createImage beginCamera camera endCamera frustum ortho perspective printCamera printProjection cursor frameRate noCursor exit loop noLoop popStyle pushStyle redraw binary boolean byte char float hex int str unbinary unhex join match matchAll nf nfc nfp nfs split splitTokens trim append arrayCopy concat expand reverse shorten sort splice subset box sphere sphereDetail createInput createReader loadBytes loadJSONArray loadJSONObject loadStrings loadTable loadXML open parseXML saveTable selectFolder selectInput beginRaw beginRecord createOutput createWriter endRaw endRecord PrintWritersaveBytes saveJSONArray saveJSONObject saveStream saveStrings saveXML selectOutput popMatrix printMatrix pushMatrix resetMatrix rotate rotateX rotateY rotateZ scale shearX shearY translate ambientLight directionalLight lightFalloff lights lightSpecular noLights normal pointLight spotLight image imageMode loadImage noTint requestImage tint texture textureMode textureWrap blend copy filter get loadPixels set updatePixels blendMode loadShader PShaderresetShader shader createFont loadFont text textFont textAlign textLeading textMode textSize textWidth textAscent textDescent abs ceil constrain dist exp floor lerp log mag map max min norm pow round sq sqrt acos asin atan atan2 cos degrees radians sin tan noise noiseDetail noiseSeed random randomGaussian randomSeed"},c:[e.CLCM,e.CBCM,e.ASM,e.QSM,e.CNM]}});hljs.registerLanguage("julia",function(e){var r={keyword:"in abstract baremodule begin bitstype break catch ccall const continue do else elseif end export finally for function global if immutable import importall let local macro module quote return try type typealias using while",literal:"true false ARGS CPU_CORES C_NULL DL_LOAD_PATH DevNull ENDIAN_BOM ENV I|0 Inf Inf16 Inf32 InsertionSort JULIA_HOME LOAD_PATH MS_ASYNC MS_INVALIDATE MS_SYNC MergeSort NaN NaN16 NaN32 OS_NAME QuickSort RTLD_DEEPBIND RTLD_FIRST RTLD_GLOBAL RTLD_LAZY RTLD_LOCAL RTLD_NODELETE RTLD_NOLOAD RTLD_NOW RoundDown RoundFromZero RoundNearest RoundToZero RoundUp STDERR STDIN STDOUT VERSION WORD_SIZE catalan cglobal e|0 eu|0 eulergamma golden im nothing pi γ π φ Inf64 NaN64 RoundNearestTiesAway RoundNearestTiesUp ",built_in:"ANY ASCIIString AbstractArray AbstractRNG AbstractSparseArray Any ArgumentError Array Associative Base64Pipe Bidiagonal BigFloat BigInt BitArray BitMatrix BitVector Bool BoundsError Box CFILE Cchar Cdouble Cfloat Char CharString Cint Clong Clonglong ClusterManager Cmd Coff_t Colon Complex Complex128 Complex32 Complex64 Condition Cptrdiff_t Cshort Csize_t Cssize_t Cuchar Cuint Culong Culonglong Cushort Cwchar_t DArray DataType DenseArray Diagonal Dict DimensionMismatch DirectIndexString Display DivideError DomainError EOFError EachLine Enumerate ErrorException Exception Expr Factorization FileMonitor FileOffset Filter Float16 Float32 Float64 FloatRange FloatingPoint Function GetfieldNode GotoNode Hermitian IO IOBuffer IOStream IPv4 IPv6 InexactError Int Int128 Int16 Int32 Int64 Int8 IntSet Integer InterruptException IntrinsicFunction KeyError LabelNode LambdaStaticData LineNumberNode LoadError LocalProcess MIME MathConst MemoryError MersenneTwister Method MethodError MethodTable Module NTuple NewvarNode Nothing Number ObjectIdDict OrdinalRange OverflowError ParseError PollingFileWatcher ProcessExitedException ProcessGroup Ptr QuoteNode Range Range1 Ranges Rational RawFD Real Regex RegexMatch RemoteRef RepString RevString RopeString RoundingMode Set SharedArray Signed SparseMatrixCSC StackOverflowError Stat StatStruct StepRange String SubArray SubString SymTridiagonal Symbol SymbolNode Symmetric SystemError Task TextDisplay Timer TmStruct TopNode Triangular Tridiagonal Type TypeConstructor TypeError TypeName TypeVar UTF16String UTF32String UTF8String UdpSocket Uint Uint128 Uint16 Uint32 Uint64 Uint8 UndefRefError UndefVarError UniformScaling UnionType UnitRange Unsigned Vararg VersionNumber WString WeakKeyDict WeakRef Woodbury Zip AbstractChannel AbstractFloat AbstractString AssertionError Base64DecodePipe Base64EncodePipe BufferStream CapturedException CartesianIndex CartesianRange Channel Cintmax_t CompositeException Cstring Cuintmax_t Cwstring Date DateTime Dims Enum GenSym GlobalRef HTML InitError InvalidStateException Irrational LinSpace LowerTriangular NullException Nullable OutOfMemoryError Pair PartialQuickSort Pipe RandomDevice ReadOnlyMemoryError ReentrantLock Ref RemoteException SegmentationFault SerializationState SimpleVector TCPSocket Text Tuple UDPSocket UInt UInt128 UInt16 UInt32 UInt64 UInt8 UnicodeError Union UpperTriangular Val Void WorkerConfig AbstractMatrix AbstractSparseMatrix AbstractSparseVector AbstractVecOrMat AbstractVector DenseMatrix DenseVecOrMat DenseVector Matrix SharedMatrix SharedVector StridedArray StridedMatrix StridedVecOrMat StridedVector VecOrMat Vector "},t="[A-Za-z_\\u00A1-\\uFFFF][A-Za-z_0-9\\u00A1-\\uFFFF]*",a={l:t,k:r,i:/<\//},n={cN:"type",b:/::/},o={cN:"type",b:/<:/},i={cN:"number",b:/(\b0x[\d_]*(\.[\d_]*)?|0x\.\d[\d_]*)p[-+]?\d+|\b0[box][a-fA-F0-9][a-fA-F0-9_]*|(\b\d[\d_]*(\.[\d_]*)?|\.\d[\d_]*)([eEfF][-+]?\d+)?/,r:0},l={cN:"string",b:/'(.|\\[xXuU][a-zA-Z0-9]+)'/},c={cN:"subst",b:/\$\(/,e:/\)/,k:r},s={cN:"variable",b:"\\$"+t},d={cN:"string",c:[e.BE,c,s],v:[{b:/\w*"""/,e:/"""\w*/,r:10},{b:/\w*"/,e:/"\w*/}]},S={cN:"string",c:[e.BE,c,s],b:"`",e:"`"},u={cN:"meta",b:"@"+t},g={cN:"comment",v:[{b:"#=",e:"=#",r:10},{b:"#",e:"$"}]};return a.c=[i,l,n,o,d,S,u,g,e.HCM],c.c=a.c,a});hljs.registerLanguage("fix",function(u){return{c:[{b:/[^\u2401\u0001]+/,e:/[\u2401\u0001]/,eE:!0,rB:!0,rE:!1,c:[{b:/([^\u2401\u0001=]+)/,e:/=([^\u2401\u0001=]+)/,rE:!0,rB:!1,cN:"attr"},{b:/=/,e:/([\u2401\u0001])/,eE:!0,eB:!0,cN:"string"}]}],cI:!0}});hljs.registerLanguage("awk",function(e){var r={cN:"variable",v:[{b:/\$[\w\d#@][\w\d_]*/},{b:/\$\{(.*?)}/}]},b="BEGIN END if else while do for in break continue delete next nextfile function func exit|10",n={cN:"string",c:[e.BE],v:[{b:/(u|b)?r?'''/,e:/'''/,r:10},{b:/(u|b)?r?"""/,e:/"""/,r:10},{b:/(u|r|ur)'/,e:/'/,r:10},{b:/(u|r|ur)"/,e:/"/,r:10},{b:/(b|br)'/,e:/'/},{b:/(b|br)"/,e:/"/},e.ASM,e.QSM]};return{k:{keyword:b},c:[r,n,e.RM,e.HCM,e.NM]}});hljs.registerLanguage("puppet",function(e){var s={keyword:"and case default else elsif false if in import enherits node or true undef unless main settings $string ",literal:"alias audit before loglevel noop require subscribe tag owner ensure group mode name|0 changes context force incl lens load_path onlyif provider returns root show_diff type_check en_address ip_address realname command environment hour monute month monthday special target weekday creates cwd ogoutput refresh refreshonly tries try_sleep umask backup checksum content ctime force ignore links mtime purge recurse recurselimit replace selinux_ignore_defaults selrange selrole seltype seluser source souirce_permissions sourceselect validate_cmd validate_replacement allowdupe attribute_membership auth_membership forcelocal gid ia_load_module members system host_aliases ip allowed_trunk_vlans description device_url duplex encapsulation etherchannel native_vlan speed principals allow_root auth_class auth_type authenticate_user k_of_n mechanisms rule session_owner shared options device fstype enable hasrestart directory present absent link atboot blockdevice device dump pass remounts poller_tag use message withpath adminfile allow_virtual allowcdrom category configfiles flavor install_options instance package_settings platform responsefile status uninstall_options vendor unless_system_user unless_uid binary control flags hasstatus manifest pattern restart running start stop allowdupe auths expiry gid groups home iterations key_membership keys managehome membership password password_max_age password_min_age profile_membership profiles project purge_ssh_keys role_membership roles salt shell uid baseurl cost descr enabled enablegroups exclude failovermethod gpgcheck gpgkey http_caching include includepkgs keepalive metadata_expire metalink mirrorlist priority protect proxy proxy_password proxy_username repo_gpgcheck s3_enabled skip_if_unavailable sslcacert sslclientcert sslclientkey sslverify mounted",built_in:"architecture augeasversion blockdevices boardmanufacturer boardproductname boardserialnumber cfkey dhcp_servers domain ec2_ ec2_userdata facterversion filesystems ldom fqdn gid hardwareisa hardwaremodel hostname id|0 interfaces ipaddress ipaddress_ ipaddress6 ipaddress6_ iphostnumber is_virtual kernel kernelmajversion kernelrelease kernelversion kernelrelease kernelversion lsbdistcodename lsbdistdescription lsbdistid lsbdistrelease lsbmajdistrelease lsbminordistrelease lsbrelease macaddress macaddress_ macosx_buildversion macosx_productname macosx_productversion macosx_productverson_major macosx_productversion_minor manufacturer memoryfree memorysize netmask metmask_ network_ operatingsystem operatingsystemmajrelease operatingsystemrelease osfamily partitions path physicalprocessorcount processor processorcount productname ps puppetversion rubysitedir rubyversion selinux selinux_config_mode selinux_config_policy selinux_current_mode selinux_current_mode selinux_enforced selinux_policyversion serialnumber sp_ sshdsakey sshecdsakey sshrsakey swapencrypted swapfree swapsize timezone type uniqueid uptime uptime_days uptime_hours uptime_seconds uuid virtual vlans xendomains zfs_version zonenae zones zpool_version"},r=e.C("#","$"),a="([A-Za-z_]|::)(\\w|::)*",i=e.inherit(e.TM,{b:a}),o={cN:"variable",b:"\\$"+a},t={cN:"string",c:[e.BE,o],v:[{b:/'/,e:/'/},{b:/"/,e:/"/}]};return{aliases:["pp"],c:[r,o,t,{bK:"class",e:"\\{|;",i:/=/,c:[i,r]},{bK:"define",e:/\{/,c:[{cN:"section",b:e.IR,endsParent:!0}]},{b:e.IR+"\\s+\\{",rB:!0,e:/\S/,c:[{cN:"keyword",b:e.IR},{b:/\{/,e:/\}/,k:s,r:0,c:[t,r,{b:"[a-zA-Z_]+\\s*=>",rB:!0,e:"=>",c:[{cN:"attr",b:e.IR}]},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},o]}],r:0}]}});hljs.registerLanguage("cal",function(e){var r="div mod in and or not xor asserterror begin case do downto else end exit for if of repeat then to until while with var",t="false true",c=[e.CLCM,e.C(/\{/,/\}/,{r:0}),e.C(/\(\*/,/\*\)/,{r:10})],n={cN:"string",b:/'/,e:/'/,c:[{b:/''/}]},o={cN:"string",b:/(#\d+)+/},a={cN:"number",b:"\\b\\d+(\\.\\d+)?(DT|D|T)",r:0},i={cN:"string",b:'"',e:'"'},d={cN:"function",bK:"procedure",e:/[:;]/,k:"procedure|10",c:[e.TM,{cN:"params",b:/\(/,e:/\)/,k:r,c:[n,o]}].concat(c)},s={cN:"class",b:"OBJECT (Table|Form|Report|Dataport|Codeunit|XMLport|MenuSuite|Page|Query) (\\d+) ([^\\r\\n]+)",rB:!0,c:[e.TM,d]};return{cI:!0,k:{keyword:r,literal:t},i:/\/\*/,c:[n,o,a,i,e.NM,s,d]}});hljs.registerLanguage("autoit",function(e){var t="ByRef Case Const ContinueCase ContinueLoop Default Dim Do Else ElseIf EndFunc EndIf EndSelect EndSwitch EndWith Enum Exit ExitLoop For Func Global If In Local Next ReDim Return Select Static Step Switch Then To Until Volatile WEnd While With",r="True False And Null Not Or",i="Abs ACos AdlibRegister AdlibUnRegister Asc AscW ASin Assign ATan AutoItSetOption AutoItWinGetTitle AutoItWinSetTitle Beep Binary BinaryLen BinaryMid BinaryToString BitAND BitNOT BitOR BitRotate BitShift BitXOR BlockInput Break Call CDTray Ceiling Chr ChrW ClipGet ClipPut ConsoleRead ConsoleWrite ConsoleWriteError ControlClick ControlCommand ControlDisable ControlEnable ControlFocus ControlGetFocus ControlGetHandle ControlGetPos ControlGetText ControlHide ControlListView ControlMove ControlSend ControlSetText ControlShow ControlTreeView Cos Dec DirCopy DirCreate DirGetSize DirMove DirRemove DllCall DllCallAddress DllCallbackFree DllCallbackGetPtr DllCallbackRegister DllClose DllOpen DllStructCreate DllStructGetData DllStructGetPtr DllStructGetSize DllStructSetData DriveGetDrive DriveGetFileSystem DriveGetLabel DriveGetSerial DriveGetType DriveMapAdd DriveMapDel DriveMapGet DriveSetLabel DriveSpaceFree DriveSpaceTotal DriveStatus EnvGet EnvSet EnvUpdate Eval Execute Exp FileChangeDir FileClose FileCopy FileCreateNTFSLink FileCreateShortcut FileDelete FileExists FileFindFirstFile FileFindNextFile FileFlush FileGetAttrib FileGetEncoding FileGetLongName FileGetPos FileGetShortcut FileGetShortName FileGetSize FileGetTime FileGetVersion FileInstall FileMove FileOpen FileOpenDialog FileRead FileReadLine FileReadToArray FileRecycle FileRecycleEmpty FileSaveDialog FileSelectFolder FileSetAttrib FileSetEnd FileSetPos FileSetTime FileWrite FileWriteLine Floor FtpSetProxy FuncName GUICreate GUICtrlCreateAvi GUICtrlCreateButton GUICtrlCreateCheckbox GUICtrlCreateCombo GUICtrlCreateContextMenu GUICtrlCreateDate GUICtrlCreateDummy GUICtrlCreateEdit GUICtrlCreateGraphic GUICtrlCreateGroup GUICtrlCreateIcon GUICtrlCreateInput GUICtrlCreateLabel GUICtrlCreateList GUICtrlCreateListView GUICtrlCreateListViewItem GUICtrlCreateMenu GUICtrlCreateMenuItem GUICtrlCreateMonthCal GUICtrlCreateObj GUICtrlCreatePic GUICtrlCreateProgress GUICtrlCreateRadio GUICtrlCreateSlider GUICtrlCreateTab GUICtrlCreateTabItem GUICtrlCreateTreeView GUICtrlCreateTreeViewItem GUICtrlCreateUpdown GUICtrlDelete GUICtrlGetHandle GUICtrlGetState GUICtrlRead GUICtrlRecvMsg GUICtrlRegisterListViewSort GUICtrlSendMsg GUICtrlSendToDummy GUICtrlSetBkColor GUICtrlSetColor GUICtrlSetCursor GUICtrlSetData GUICtrlSetDefBkColor GUICtrlSetDefColor GUICtrlSetFont GUICtrlSetGraphic GUICtrlSetImage GUICtrlSetLimit GUICtrlSetOnEvent GUICtrlSetPos GUICtrlSetResizing GUICtrlSetState GUICtrlSetStyle GUICtrlSetTip GUIDelete GUIGetCursorInfo GUIGetMsg GUIGetStyle GUIRegisterMsg GUISetAccelerators GUISetBkColor GUISetCoord GUISetCursor GUISetFont GUISetHelp GUISetIcon GUISetOnEvent GUISetState GUISetStyle GUIStartGroup GUISwitch Hex HotKeySet HttpSetProxy HttpSetUserAgent HWnd InetClose InetGet InetGetInfo InetGetSize InetRead IniDelete IniRead IniReadSection IniReadSectionNames IniRenameSection IniWrite IniWriteSection InputBox Int IsAdmin IsArray IsBinary IsBool IsDeclared IsDllStruct IsFloat IsFunc IsHWnd IsInt IsKeyword IsNumber IsObj IsPtr IsString Log MemGetStats Mod MouseClick MouseClickDrag MouseDown MouseGetCursor MouseGetPos MouseMove MouseUp MouseWheel MsgBox Number ObjCreate ObjCreateInterface ObjEvent ObjGet ObjName OnAutoItExitRegister OnAutoItExitUnRegister Ping PixelChecksum PixelGetColor PixelSearch ProcessClose ProcessExists ProcessGetStats ProcessList ProcessSetPriority ProcessWait ProcessWaitClose ProgressOff ProgressOn ProgressSet Ptr Random RegDelete RegEnumKey RegEnumVal RegRead RegWrite Round Run RunAs RunAsWait RunWait Send SendKeepActive SetError SetExtended ShellExecute ShellExecuteWait Shutdown Sin Sleep SoundPlay SoundSetWaveVolume SplashImageOn SplashOff SplashTextOn Sqrt SRandom StatusbarGetText StderrRead StdinWrite StdioClose StdoutRead String StringAddCR StringCompare StringFormat StringFromASCIIArray StringInStr StringIsAlNum StringIsAlpha StringIsASCII StringIsDigit StringIsFloat StringIsInt StringIsLower StringIsSpace StringIsUpper StringIsXDigit StringLeft StringLen StringLower StringMid StringRegExp StringRegExpReplace StringReplace StringReverse StringRight StringSplit StringStripCR StringStripWS StringToASCIIArray StringToBinary StringTrimLeft StringTrimRight StringUpper Tan TCPAccept TCPCloseSocket TCPConnect TCPListen TCPNameToIP TCPRecv TCPSend TCPShutdown, UDPShutdown TCPStartup, UDPStartup TimerDiff TimerInit ToolTip TrayCreateItem TrayCreateMenu TrayGetMsg TrayItemDelete TrayItemGetHandle TrayItemGetState TrayItemGetText TrayItemSetOnEvent TrayItemSetState TrayItemSetText TraySetClick TraySetIcon TraySetOnEvent TraySetPauseIcon TraySetState TraySetToolTip TrayTip UBound UDPBind UDPCloseSocket UDPOpen UDPRecv UDPSend VarGetType WinActivate WinActive WinClose WinExists WinFlash WinGetCaretPos WinGetClassList WinGetClientSize WinGetHandle WinGetPos WinGetProcess WinGetState WinGetText WinGetTitle WinKill WinList WinMenuSelectItem WinMinimizeAll WinMinimizeAllUndo WinMove WinSetOnTop WinSetState WinSetTitle WinSetTrans WinWait",l={v:[e.C(";","$",{r:0}),e.C("#cs","#ce"),e.C("#comments-start","#comments-end")]},n={b:"\\$[A-z0-9_]+"},o={cN:"string",v:[{b:/"/,e:/"/,c:[{b:/""/,r:0}]},{b:/'/,e:/'/,c:[{b:/''/,r:0}]}]},a={v:[e.BNM,e.CNM]},S={cN:"meta",b:"#",e:"$",k:{"meta-keyword":"comments include include-once NoTrayIcon OnAutoItStartRegister pragma compile RequireAdmin"},c:[{b:/\\\n/,r:0},{bK:"include",k:{"meta-keyword":"include"},e:"$",c:[o,{cN:"meta-string",v:[{b:"<",e:">"},{b:/"/,e:/"/,c:[{b:/""/,r:0}]},{b:/'/,e:/'/,c:[{b:/''/,r:0}]}]}]},o,l]},C={cN:"symbol",b:"@[A-z0-9_]+"},s={cN:"function",bK:"Func",e:"$",i:"\\$|\\[|%",c:[e.UTM,{cN:"params",b:"\\(",e:"\\)",c:[n,o,a]}]};return{cI:!0,i:/\/\*/,k:{keyword:t,built_in:i,literal:r},c:[l,n,o,a,S,C,s]}});hljs.registerLanguage("mel",function(e){return{k:"int float string vector matrix if else switch case default while do for in break continue global proc return about abs addAttr addAttributeEditorNodeHelp addDynamic addNewShelfTab addPP addPanelCategory addPrefixToName advanceToNextDrivenKey affectedNet affects aimConstraint air alias aliasAttr align alignCtx alignCurve alignSurface allViewFit ambientLight angle angleBetween animCone animCurveEditor animDisplay animView annotate appendStringArray applicationName applyAttrPreset applyTake arcLenDimContext arcLengthDimension arclen arrayMapper art3dPaintCtx artAttrCtx artAttrPaintVertexCtx artAttrSkinPaintCtx artAttrTool artBuildPaintMenu artFluidAttrCtx artPuttyCtx artSelectCtx artSetPaintCtx artUserPaintCtx assignCommand assignInputDevice assignViewportFactories attachCurve attachDeviceAttr attachSurface attrColorSliderGrp attrCompatibility attrControlGrp attrEnumOptionMenu attrEnumOptionMenuGrp attrFieldGrp attrFieldSliderGrp attrNavigationControlGrp attrPresetEditWin attributeExists attributeInfo attributeMenu attributeQuery autoKeyframe autoPlace bakeClip bakeFluidShading bakePartialHistory bakeResults bakeSimulation basename basenameEx batchRender bessel bevel bevelPlus binMembership bindSkin blend2 blendShape blendShapeEditor blendShapePanel blendTwoAttr blindDataType boneLattice boundary boxDollyCtx boxZoomCtx bufferCurve buildBookmarkMenu buildKeyframeMenu button buttonManip CBG cacheFile cacheFileCombine cacheFileMerge cacheFileTrack camera cameraView canCreateManip canvas capitalizeString catch catchQuiet ceil changeSubdivComponentDisplayLevel changeSubdivRegion channelBox character characterMap characterOutlineEditor characterize chdir checkBox checkBoxGrp checkDefaultRenderGlobals choice circle circularFillet clamp clear clearCache clip clipEditor clipEditorCurrentTimeCtx clipSchedule clipSchedulerOutliner clipTrimBefore closeCurve closeSurface cluster cmdFileOutput cmdScrollFieldExecuter cmdScrollFieldReporter cmdShell coarsenSubdivSelectionList collision color colorAtPoint colorEditor colorIndex colorIndexSliderGrp colorSliderButtonGrp colorSliderGrp columnLayout commandEcho commandLine commandPort compactHairSystem componentEditor compositingInterop computePolysetVolume condition cone confirmDialog connectAttr connectControl connectDynamic connectJoint connectionInfo constrain constrainValue constructionHistory container containsMultibyte contextInfo control convertFromOldLayers convertIffToPsd convertLightmap convertSolidTx convertTessellation convertUnit copyArray copyFlexor copyKey copySkinWeights cos cpButton cpCache cpClothSet cpCollision cpConstraint cpConvClothToMesh cpForces cpGetSolverAttr cpPanel cpProperty cpRigidCollisionFilter cpSeam cpSetEdit cpSetSolverAttr cpSolver cpSolverTypes cpTool cpUpdateClothUVs createDisplayLayer createDrawCtx createEditor createLayeredPsdFile createMotionField createNewShelf createNode createRenderLayer createSubdivRegion cross crossProduct ctxAbort ctxCompletion ctxEditMode ctxTraverse currentCtx currentTime currentTimeCtx currentUnit curve curveAddPtCtx curveCVCtx curveEPCtx curveEditorCtx curveIntersect curveMoveEPCtx curveOnSurface curveSketchCtx cutKey cycleCheck cylinder dagPose date defaultLightListCheckBox defaultNavigation defineDataServer defineVirtualDevice deformer deg_to_rad delete deleteAttr deleteShadingGroupsAndMaterials deleteShelfTab deleteUI deleteUnusedBrushes delrandstr detachCurve detachDeviceAttr detachSurface deviceEditor devicePanel dgInfo dgdirty dgeval dgtimer dimWhen directKeyCtx directionalLight dirmap dirname disable disconnectAttr disconnectJoint diskCache displacementToPoly displayAffected displayColor displayCull displayLevelOfDetail displayPref displayRGBColor displaySmoothness displayStats displayString displaySurface distanceDimContext distanceDimension doBlur dolly dollyCtx dopeSheetEditor dot dotProduct doubleProfileBirailSurface drag dragAttrContext draggerContext dropoffLocator duplicate duplicateCurve duplicateSurface dynCache dynControl dynExport dynExpression dynGlobals dynPaintEditor dynParticleCtx dynPref dynRelEdPanel dynRelEditor dynamicLoad editAttrLimits editDisplayLayerGlobals editDisplayLayerMembers editRenderLayerAdjustment editRenderLayerGlobals editRenderLayerMembers editor editorTemplate effector emit emitter enableDevice encodeString endString endsWith env equivalent equivalentTol erf error eval evalDeferred evalEcho event exactWorldBoundingBox exclusiveLightCheckBox exec executeForEachObject exists exp expression expressionEditorListen extendCurve extendSurface extrude fcheck fclose feof fflush fgetline fgetword file fileBrowserDialog fileDialog fileExtension fileInfo filetest filletCurve filter filterCurve filterExpand filterStudioImport findAllIntersections findAnimCurves findKeyframe findMenuItem findRelatedSkinCluster finder firstParentOf fitBspline flexor floatEq floatField floatFieldGrp floatScrollBar floatSlider floatSlider2 floatSliderButtonGrp floatSliderGrp floor flow fluidCacheInfo fluidEmitter fluidVoxelInfo flushUndo fmod fontDialog fopen formLayout format fprint frameLayout fread freeFormFillet frewind fromNativePath fwrite gamma gauss geometryConstraint getApplicationVersionAsFloat getAttr getClassification getDefaultBrush getFileList getFluidAttr getInputDeviceRange getMayaPanelTypes getModifiers getPanel getParticleAttr getPluginResource getenv getpid glRender glRenderEditor globalStitch gmatch goal gotoBindPose grabColor gradientControl gradientControlNoAttr graphDollyCtx graphSelectContext graphTrackCtx gravity grid gridLayout group groupObjectsByName HfAddAttractorToAS HfAssignAS HfBuildEqualMap HfBuildFurFiles HfBuildFurImages HfCancelAFR HfConnectASToHF HfCreateAttractor HfDeleteAS HfEditAS HfPerformCreateAS HfRemoveAttractorFromAS HfSelectAttached HfSelectAttractors HfUnAssignAS hardenPointCurve hardware hardwareRenderPanel headsUpDisplay headsUpMessage help helpLine hermite hide hilite hitTest hotBox hotkey hotkeyCheck hsv_to_rgb hudButton hudSlider hudSliderButton hwReflectionMap hwRender hwRenderLoad hyperGraph hyperPanel hyperShade hypot iconTextButton iconTextCheckBox iconTextRadioButton iconTextRadioCollection iconTextScrollList iconTextStaticLabel ikHandle ikHandleCtx ikHandleDisplayScale ikSolver ikSplineHandleCtx ikSystem ikSystemInfo ikfkDisplayMethod illustratorCurves image imfPlugins inheritTransform insertJoint insertJointCtx insertKeyCtx insertKnotCurve insertKnotSurface instance instanceable instancer intField intFieldGrp intScrollBar intSlider intSliderGrp interToUI internalVar intersect iprEngine isAnimCurve isConnected isDirty isParentOf isSameObject isTrue isValidObjectName isValidString isValidUiName isolateSelect itemFilter itemFilterAttr itemFilterRender itemFilterType joint jointCluster jointCtx jointDisplayScale jointLattice keyTangent keyframe keyframeOutliner keyframeRegionCurrentTimeCtx keyframeRegionDirectKeyCtx keyframeRegionDollyCtx keyframeRegionInsertKeyCtx keyframeRegionMoveKeyCtx keyframeRegionScaleKeyCtx keyframeRegionSelectKeyCtx keyframeRegionSetKeyCtx keyframeRegionTrackCtx keyframeStats lassoContext lattice latticeDeformKeyCtx launch launchImageEditor layerButton layeredShaderPort layeredTexturePort layout layoutDialog lightList lightListEditor lightListPanel lightlink lineIntersection linearPrecision linstep listAnimatable listAttr listCameras listConnections listDeviceAttachments listHistory listInputDeviceAxes listInputDeviceButtons listInputDevices listMenuAnnotation listNodeTypes listPanelCategories listRelatives listSets listTransforms listUnselected listerEditor loadFluid loadNewShelf loadPlugin loadPluginLanguageResources loadPrefObjects localizedPanelLabel lockNode loft log longNameOf lookThru ls lsThroughFilter lsType lsUI Mayatomr mag makeIdentity makeLive makePaintable makeRoll makeSingleSurface makeTubeOn makebot manipMoveContext manipMoveLimitsCtx manipOptions manipRotateContext manipRotateLimitsCtx manipScaleContext manipScaleLimitsCtx marker match max memory menu menuBarLayout menuEditor menuItem menuItemToShelf menuSet menuSetPref messageLine min minimizeApp mirrorJoint modelCurrentTimeCtx modelEditor modelPanel mouse movIn movOut move moveIKtoFK moveKeyCtx moveVertexAlongDirection multiProfileBirailSurface mute nParticle nameCommand nameField namespace namespaceInfo newPanelItems newton nodeCast nodeIconButton nodeOutliner nodePreset nodeType noise nonLinear normalConstraint normalize nurbsBoolean nurbsCopyUVSet nurbsCube nurbsEditUV nurbsPlane nurbsSelect nurbsSquare nurbsToPoly nurbsToPolygonsPref nurbsToSubdiv nurbsToSubdivPref nurbsUVSet nurbsViewDirectionVector objExists objectCenter objectLayer objectType objectTypeUI obsoleteProc oceanNurbsPreviewPlane offsetCurve offsetCurveOnSurface offsetSurface openGLExtension openMayaPref optionMenu optionMenuGrp optionVar orbit orbitCtx orientConstraint outlinerEditor outlinerPanel overrideModifier paintEffectsDisplay pairBlend palettePort paneLayout panel panelConfiguration panelHistory paramDimContext paramDimension paramLocator parent parentConstraint particle particleExists particleInstancer particleRenderInfo partition pasteKey pathAnimation pause pclose percent performanceOptions pfxstrokes pickWalk picture pixelMove planarSrf plane play playbackOptions playblast plugAttr plugNode pluginInfo pluginResourceUtil pointConstraint pointCurveConstraint pointLight pointMatrixMult pointOnCurve pointOnSurface pointPosition poleVectorConstraint polyAppend polyAppendFacetCtx polyAppendVertex polyAutoProjection polyAverageNormal polyAverageVertex polyBevel polyBlendColor polyBlindData polyBoolOp polyBridgeEdge polyCacheMonitor polyCheck polyChipOff polyClipboard polyCloseBorder polyCollapseEdge polyCollapseFacet polyColorBlindData polyColorDel polyColorPerVertex polyColorSet polyCompare polyCone polyCopyUV polyCrease polyCreaseCtx polyCreateFacet polyCreateFacetCtx polyCube polyCut polyCutCtx polyCylinder polyCylindricalProjection polyDelEdge polyDelFacet polyDelVertex polyDuplicateAndConnect polyDuplicateEdge polyEditUV polyEditUVShell polyEvaluate polyExtrudeEdge polyExtrudeFacet polyExtrudeVertex polyFlipEdge polyFlipUV polyForceUV polyGeoSampler polyHelix polyInfo polyInstallAction polyLayoutUV polyListComponentConversion polyMapCut polyMapDel polyMapSew polyMapSewMove polyMergeEdge polyMergeEdgeCtx polyMergeFacet polyMergeFacetCtx polyMergeUV polyMergeVertex polyMirrorFace polyMoveEdge polyMoveFacet polyMoveFacetUV polyMoveUV polyMoveVertex polyNormal polyNormalPerVertex polyNormalizeUV polyOptUvs polyOptions polyOutput polyPipe polyPlanarProjection polyPlane polyPlatonicSolid polyPoke polyPrimitive polyPrism polyProjection polyPyramid polyQuad polyQueryBlindData polyReduce polySelect polySelectConstraint polySelectConstraintMonitor polySelectCtx polySelectEditCtx polySeparate polySetToFaceNormal polySewEdge polyShortestPathCtx polySmooth polySoftEdge polySphere polySphericalProjection polySplit polySplitCtx polySplitEdge polySplitRing polySplitVertex polyStraightenUVBorder polySubdivideEdge polySubdivideFacet polyToSubdiv polyTorus polyTransfer polyTriangulate polyUVSet polyUnite polyWedgeFace popen popupMenu pose pow preloadRefEd print progressBar progressWindow projFileViewer projectCurve projectTangent projectionContext projectionManip promptDialog propModCtx propMove psdChannelOutliner psdEditTextureFile psdExport psdTextureFile putenv pwd python querySubdiv quit rad_to_deg radial radioButton radioButtonGrp radioCollection radioMenuItemCollection rampColorPort rand randomizeFollicles randstate rangeControl readTake rebuildCurve rebuildSurface recordAttr recordDevice redo reference referenceEdit referenceQuery refineSubdivSelectionList refresh refreshAE registerPluginResource rehash reloadImage removeJoint removeMultiInstance removePanelCategory rename renameAttr renameSelectionList renameUI render renderGlobalsNode renderInfo renderLayerButton renderLayerParent renderLayerPostProcess renderLayerUnparent renderManip renderPartition renderQualityNode renderSettings renderThumbnailUpdate renderWindowEditor renderWindowSelectContext renderer reorder reorderDeformers requires reroot resampleFluid resetAE resetPfxToPolyCamera resetTool resolutionNode retarget reverseCurve reverseSurface revolve rgb_to_hsv rigidBody rigidSolver roll rollCtx rootOf rot rotate rotationInterpolation roundConstantRadius rowColumnLayout rowLayout runTimeCommand runup sampleImage saveAllShelves saveAttrPreset saveFluid saveImage saveInitialState saveMenu savePrefObjects savePrefs saveShelf saveToolSettings scale scaleBrushBrightness scaleComponents scaleConstraint scaleKey scaleKeyCtx sceneEditor sceneUIReplacement scmh scriptCtx scriptEditorInfo scriptJob scriptNode scriptTable scriptToShelf scriptedPanel scriptedPanelType scrollField scrollLayout sculpt searchPathArray seed selLoadSettings select selectContext selectCurveCV selectKey selectKeyCtx selectKeyframeRegionCtx selectMode selectPref selectPriority selectType selectedNodes selectionConnection separator setAttr setAttrEnumResource setAttrMapping setAttrNiceNameResource setConstraintRestPosition setDefaultShadingGroup setDrivenKeyframe setDynamic setEditCtx setEditor setFluidAttr setFocus setInfinity setInputDeviceMapping setKeyCtx setKeyPath setKeyframe setKeyframeBlendshapeTargetWts setMenuMode setNodeNiceNameResource setNodeTypeFlag setParent setParticleAttr setPfxToPolyCamera setPluginResource setProject setStampDensity setStartupMessage setState setToolTo setUITemplate setXformManip sets shadingConnection shadingGeometryRelCtx shadingLightRelCtx shadingNetworkCompare shadingNode shapeCompare shelfButton shelfLayout shelfTabLayout shellField shortNameOf showHelp showHidden showManipCtx showSelectionInTitle showShadingGroupAttrEditor showWindow sign simplify sin singleProfileBirailSurface size sizeBytes skinCluster skinPercent smoothCurve smoothTangentSurface smoothstep snap2to2 snapKey snapMode snapTogetherCtx snapshot soft softMod softModCtx sort sound soundControl source spaceLocator sphere sphrand spotLight spotLightPreviewPort spreadSheetEditor spring sqrt squareSurface srtContext stackTrace startString startsWith stitchAndExplodeShell stitchSurface stitchSurfacePoints strcmp stringArrayCatenate stringArrayContains stringArrayCount stringArrayInsertAtIndex stringArrayIntersector stringArrayRemove stringArrayRemoveAtIndex stringArrayRemoveDuplicates stringArrayRemoveExact stringArrayToString stringToStringArray strip stripPrefixFromName stroke subdAutoProjection subdCleanTopology subdCollapse subdDuplicateAndConnect subdEditUV subdListComponentConversion subdMapCut subdMapSewMove subdMatchTopology subdMirror subdToBlind subdToPoly subdTransferUVsToCache subdiv subdivCrease subdivDisplaySmoothness substitute substituteAllString substituteGeometry substring surface surfaceSampler surfaceShaderList swatchDisplayPort switchTable symbolButton symbolCheckBox sysFile system tabLayout tan tangentConstraint texLatticeDeformContext texManipContext texMoveContext texMoveUVShellContext texRotateContext texScaleContext texSelectContext texSelectShortestPathCtx texSmudgeUVContext texWinToolCtx text textCurves textField textFieldButtonGrp textFieldGrp textManip textScrollList textToShelf textureDisplacePlane textureHairColor texturePlacementContext textureWindow threadCount threePointArcCtx timeControl timePort timerX toNativePath toggle toggleAxis toggleWindowVisibility tokenize tokenizeList tolerance tolower toolButton toolCollection toolDropped toolHasOptions toolPropertyWindow torus toupper trace track trackCtx transferAttributes transformCompare transformLimits translator trim trunc truncateFluidCache truncateHairCache tumble tumbleCtx turbulence twoPointArcCtx uiRes uiTemplate unassignInputDevice undo undoInfo ungroup uniform unit unloadPlugin untangleUV untitledFileName untrim upAxis updateAE userCtx uvLink uvSnapshot validateShelfName vectorize view2dToolCtx viewCamera viewClipPlane viewFit viewHeadOn viewLookAt viewManip viewPlace viewSet visor volumeAxis vortex waitCursor warning webBrowser webBrowserPrefs whatIs window windowPref wire wireContext workspace wrinkle wrinkleContext writeTake xbmLangPathList xform",i:"",rB:!0,i:"\\(|#|//|/\\*|\\\\|:|;",c:[h,e.inherit(e.TM,{b:r})],starts:{e:";|\\.",k:b,c:u}},i,{b:"^-",e:"\\.",r:0,eE:!0,rB:!0,l:"-"+e.IR,k:"-module -record -undef -export -ifdef -ifndef -author -copyright -doc -vsn -import -include -include_lib -compile -define -else -endif -file -behaviour -behavior -spec",c:[h]},n,e.QSM,l,t,f,o,{b:/\.$/}]}});hljs.registerLanguage("glsl",function(e){return{k:{keyword:"break continue discard do else for if return whileattribute binding buffer ccw centroid centroid varying coherent column_major const cw depth_any depth_greater depth_less depth_unchanged early_fragment_tests equal_spacing flat fractional_even_spacing fractional_odd_spacing highp in index inout invariant invocations isolines layout line_strip lines lines_adjacency local_size_x local_size_y local_size_z location lowp max_vertices mediump noperspective offset origin_upper_left out packed patch pixel_center_integer point_mode points precise precision quads r11f_g11f_b10f r16 r16_snorm r16f r16i r16ui r32f r32i r32ui r8 r8_snorm r8i r8ui readonly restrict rg16 rg16_snorm rg16f rg16i rg16ui rg32f rg32i rg32ui rg8 rg8_snorm rg8i rg8ui rgb10_a2 rgb10_a2ui rgba16 rgba16_snorm rgba16f rgba16i rgba16ui rgba32f rgba32i rgba32ui rgba8 rgba8_snorm rgba8i rgba8ui row_major sample shared smooth std140 std430 stream triangle_strip triangles triangles_adjacency uniform varying vertices volatile writeonly",type:"atomic_uint bool bvec2 bvec3 bvec4 dmat2 dmat2x2 dmat2x3 dmat2x4 dmat3 dmat3x2 dmat3x3 dmat3x4 dmat4 dmat4x2 dmat4x3 dmat4x4 double dvec2 dvec3 dvec4 float iimage1D iimage1DArray iimage2D iimage2DArray iimage2DMS iimage2DMSArray iimage2DRect iimage3D iimageBufferiimageCube iimageCubeArray image1D image1DArray image2D image2DArray image2DMS image2DMSArray image2DRect image3D imageBuffer imageCube imageCubeArray int isampler1D isampler1DArray isampler2D isampler2DArray isampler2DMS isampler2DMSArray isampler2DRect isampler3D isamplerBuffer isamplerCube isamplerCubeArray ivec2 ivec3 ivec4 mat2 mat2x2 mat2x3 mat2x4 mat3 mat3x2 mat3x3 mat3x4 mat4 mat4x2 mat4x3 mat4x4 sampler1D sampler1DArray sampler1DArrayShadow sampler1DShadow sampler2D sampler2DArray sampler2DArrayShadow sampler2DMS sampler2DMSArray sampler2DRect sampler2DRectShadow sampler2DShadow sampler3D samplerBuffer samplerCube samplerCubeArray samplerCubeArrayShadow samplerCubeShadow image1D uimage1DArray uimage2D uimage2DArray uimage2DMS uimage2DMSArray uimage2DRect uimage3D uimageBuffer uimageCube uimageCubeArray uint usampler1D usampler1DArray usampler2D usampler2DArray usampler2DMS usampler2DMSArray usampler2DRect usampler3D samplerBuffer usamplerCube usamplerCubeArray uvec2 uvec3 uvec4 vec2 vec3 vec4 void",built_in:"gl_MaxAtomicCounterBindings gl_MaxAtomicCounterBufferSize gl_MaxClipDistances gl_MaxClipPlanes gl_MaxCombinedAtomicCounterBuffers gl_MaxCombinedAtomicCounters gl_MaxCombinedImageUniforms gl_MaxCombinedImageUnitsAndFragmentOutputs gl_MaxCombinedTextureImageUnits gl_MaxComputeAtomicCounterBuffers gl_MaxComputeAtomicCounters gl_MaxComputeImageUniforms gl_MaxComputeTextureImageUnits gl_MaxComputeUniformComponents gl_MaxComputeWorkGroupCount gl_MaxComputeWorkGroupSize gl_MaxDrawBuffers gl_MaxFragmentAtomicCounterBuffers gl_MaxFragmentAtomicCounters gl_MaxFragmentImageUniforms gl_MaxFragmentInputComponents gl_MaxFragmentInputVectors gl_MaxFragmentUniformComponents gl_MaxFragmentUniformVectors gl_MaxGeometryAtomicCounterBuffers gl_MaxGeometryAtomicCounters gl_MaxGeometryImageUniforms gl_MaxGeometryInputComponents gl_MaxGeometryOutputComponents gl_MaxGeometryOutputVertices gl_MaxGeometryTextureImageUnits gl_MaxGeometryTotalOutputComponents gl_MaxGeometryUniformComponents gl_MaxGeometryVaryingComponents gl_MaxImageSamples gl_MaxImageUnits gl_MaxLights gl_MaxPatchVertices gl_MaxProgramTexelOffset gl_MaxTessControlAtomicCounterBuffers gl_MaxTessControlAtomicCounters gl_MaxTessControlImageUniforms gl_MaxTessControlInputComponents gl_MaxTessControlOutputComponents gl_MaxTessControlTextureImageUnits gl_MaxTessControlTotalOutputComponents gl_MaxTessControlUniformComponents gl_MaxTessEvaluationAtomicCounterBuffers gl_MaxTessEvaluationAtomicCounters gl_MaxTessEvaluationImageUniforms gl_MaxTessEvaluationInputComponents gl_MaxTessEvaluationOutputComponents gl_MaxTessEvaluationTextureImageUnits gl_MaxTessEvaluationUniformComponents gl_MaxTessGenLevel gl_MaxTessPatchComponents gl_MaxTextureCoords gl_MaxTextureImageUnits gl_MaxTextureUnits gl_MaxVaryingComponents gl_MaxVaryingFloats gl_MaxVaryingVectors gl_MaxVertexAtomicCounterBuffers gl_MaxVertexAtomicCounters gl_MaxVertexAttribs gl_MaxVertexImageUniforms gl_MaxVertexOutputComponents gl_MaxVertexOutputVectors gl_MaxVertexTextureImageUnits gl_MaxVertexUniformComponents gl_MaxVertexUniformVectors gl_MaxViewports gl_MinProgramTexelOffset gl_BackColor gl_BackLightModelProduct gl_BackLightProduct gl_BackMaterial gl_BackSecondaryColor gl_ClipDistance gl_ClipPlane gl_ClipVertex gl_Color gl_DepthRange gl_EyePlaneQ gl_EyePlaneR gl_EyePlaneS gl_EyePlaneT gl_Fog gl_FogCoord gl_FogFragCoord gl_FragColor gl_FragCoord gl_FragData gl_FragDepth gl_FrontColor gl_FrontFacing gl_FrontLightModelProduct gl_FrontLightProduct gl_FrontMaterial gl_FrontSecondaryColor gl_GlobalInvocationID gl_InstanceID gl_InvocationID gl_Layer gl_LightModel gl_LightSource gl_LocalInvocationID gl_LocalInvocationIndex gl_ModelViewMatrix gl_ModelViewMatrixInverse gl_ModelViewMatrixInverseTranspose gl_ModelViewMatrixTranspose gl_ModelViewProjectionMatrix gl_ModelViewProjectionMatrixInverse gl_ModelViewProjectionMatrixInverseTranspose gl_ModelViewProjectionMatrixTranspose gl_MultiTexCoord0 gl_MultiTexCoord1 gl_MultiTexCoord2 gl_MultiTexCoord3 gl_MultiTexCoord4 gl_MultiTexCoord5 gl_MultiTexCoord6 gl_MultiTexCoord7 gl_Normal gl_NormalMatrix gl_NormalScale gl_NumSamples gl_NumWorkGroups gl_ObjectPlaneQ gl_ObjectPlaneR gl_ObjectPlaneS gl_ObjectPlaneT gl_PatchVerticesIn gl_Point gl_PointCoord gl_PointSize gl_Position gl_PrimitiveID gl_PrimitiveIDIn gl_ProjectionMatrix gl_ProjectionMatrixInverse gl_ProjectionMatrixInverseTranspose gl_ProjectionMatrixTranspose gl_SampleID gl_SampleMask gl_SampleMaskIn gl_SamplePosition gl_SecondaryColor gl_TessCoord gl_TessLevelInner gl_TessLevelOuter gl_TexCoord gl_TextureEnvColor gl_TextureMatrix gl_TextureMatrixInverse gl_TextureMatrixInverseTranspose gl_TextureMatrixTranspose gl_Vertex gl_VertexID gl_ViewportIndex gl_WorkGroupID gl_WorkGroupSize gl_in gl_out EmitStreamVertex EmitVertex EndPrimitive EndStreamPrimitive abs acos acosh all any asin asinh atan atanh atomicAdd atomicAnd atomicCompSwap atomicCounter atomicCounterDecrement atomicCounterIncrement atomicExchange atomicMax atomicMin atomicOr atomicXor barrier bitCount bitfieldExtract bitfieldInsert bitfieldReverse ceil clamp cos cosh cross dFdx dFdy degrees determinant distance dot equal exp exp2 faceforward findLSB findMSB floatBitsToInt floatBitsToUint floor fma fract frexp ftransform fwidth greaterThan greaterThanEqual groupMemoryBarrier imageAtomicAdd imageAtomicAnd imageAtomicCompSwap imageAtomicExchange imageAtomicMax imageAtomicMin imageAtomicOr imageAtomicXor imageLoad imageSize imageStore imulExtended intBitsToFloat interpolateAtCentroid interpolateAtOffset interpolateAtSample inverse inversesqrt isinf isnan ldexp length lessThan lessThanEqual log log2 matrixCompMult max memoryBarrier memoryBarrierAtomicCounter memoryBarrierBuffer memoryBarrierImage memoryBarrierShared min mix mod modf noise1 noise2 noise3 noise4 normalize not notEqual outerProduct packDouble2x32 packHalf2x16 packSnorm2x16 packSnorm4x8 packUnorm2x16 packUnorm4x8 pow radians reflect refract round roundEven shadow1D shadow1DLod shadow1DProj shadow1DProjLod shadow2D shadow2DLod shadow2DProj shadow2DProjLod sign sin sinh smoothstep sqrt step tan tanh texelFetch texelFetchOffset texture texture1D texture1DLod texture1DProj texture1DProjLod texture2D texture2DLod texture2DProj texture2DProjLod texture3D texture3DLod texture3DProj texture3DProjLod textureCube textureCubeLod textureGather textureGatherOffset textureGatherOffsets textureGrad textureGradOffset textureLod textureLodOffset textureOffset textureProj textureProjGrad textureProjGradOffset textureProjLod textureProjLodOffset textureProjOffset textureQueryLevels textureQueryLod textureSize transpose trunc uaddCarry uintBitsToFloat umulExtended unpackDouble2x32 unpackHalf2x16 unpackSnorm2x16 unpackSnorm4x8 unpackUnorm2x16 unpackUnorm4x8 usubBorrow",literal:"true false"},i:'"',c:[e.CLCM,e.CBCM,e.CNM,{cN:"meta",b:"#",e:"$"}]}});hljs.registerLanguage("roboconf",function(a){var e="[a-zA-Z-_][^\\n{]+\\{",n={cN:"attribute",b:/[a-zA-Z-_]+/,e:/\s*:/,eE:!0,starts:{e:";",r:0,c:[{cN:"variable",b:/\.[a-zA-Z-_]+/},{cN:"keyword",b:/\(optional\)/}]}};return{aliases:["graph","instances"],cI:!0,k:"import",c:[{b:"^facet "+e,e:"}",k:"facet",c:[n,a.HCM]},{b:"^\\s*instance of "+e,e:"}",k:"name count channels instance-data instance-state instance of",i:/\S/,c:["self",n,a.HCM]},{b:"^"+e,e:"}",c:[n,a.HCM]},a.HCM]}});hljs.registerLanguage("monkey",function(e){var n={cN:"number",r:0,v:[{b:"[$][a-fA-F0-9]+"},e.NM]};return{cI:!0,k:{keyword:"public private property continue exit extern new try catch eachin not abstract final select case default const local global field end if then else elseif endif while wend repeat until forever for to step next return module inline throw import",built_in:"DebugLog DebugStop Error Print ACos ACosr ASin ASinr ATan ATan2 ATan2r ATanr Abs Abs Ceil Clamp Clamp Cos Cosr Exp Floor Log Max Max Min Min Pow Sgn Sgn Sin Sinr Sqrt Tan Tanr Seed PI HALFPI TWOPI",literal:"true false null and or shl shr mod"},i:/\/\*/,c:[e.C("#rem","#end"),e.C("'","$",{r:0}),{cN:"function",bK:"function method",e:"[(=:]|$",i:/\n/,c:[e.UTM]},{cN:"class",bK:"class interface",e:"$",c:[{bK:"extends implements"},e.UTM]},{cN:"built_in",b:"\\b(self|super)\\b"},{cN:"meta",b:"\\s*#",e:"$",k:{"meta-keyword":"if else elseif endif end then"}},{cN:"meta",b:"^\\s*strict\\b"},{bK:"alias",e:"=",c:[e.UTM]},e.QSM,n]}});hljs.registerLanguage("coq",function(e){return{k:{keyword:"_ as at cofix else end exists exists2 fix for forall fun if IF in let match mod Prop return Set then Type using where with Abort About Add Admit Admitted All Arguments Assumptions Axiom Back BackTo Backtrack Bind Blacklist Canonical Cd Check Class Classes Close Coercion Coercions CoFixpoint CoInductive Collection Combined Compute Conjecture Conjectures Constant constr Constraint Constructors Context Corollary CreateHintDb Cut Declare Defined Definition Delimit Dependencies DependentDerive Drop eauto End Equality Eval Example Existential Existentials Existing Export exporting Extern Extract Extraction Fact Field Fields File Fixpoint Focus for From Function Functional Generalizable Global Goal Grab Grammar Graph Guarded Heap Hint HintDb Hints Hypotheses Hypothesis ident Identity If Immediate Implicit Import Include Inductive Infix Info Initial Inline Inspect Instance Instances Intro Intros Inversion Inversion_clear Language Left Lemma Let Libraries Library Load LoadPath Local Locate Ltac ML Mode Module Modules Monomorphic Morphism Next NoInline Notation Obligation Obligations Opaque Open Optimize Options Parameter Parameters Parametric Path Paths pattern Polymorphic Preterm Print Printing Program Projections Proof Proposition Pwd Qed Quit Rec Record Recursive Redirect Relation Remark Remove Require Reserved Reset Resolve Restart Rewrite Right Ring Rings Save Scheme Scope Scopes Script Search SearchAbout SearchHead SearchPattern SearchRewrite Section Separate Set Setoid Show Solve Sorted Step Strategies Strategy Structure SubClass Table Tables Tactic Term Test Theorem Time Timeout Transparent Type Typeclasses Types Undelimit Undo Unfocus Unfocused Unfold Universe Universes Unset Unshelve using Variable Variables Variant Verbose Visibility where with",built_in:"abstract absurd admit after apply as assert assumption at auto autorewrite autounfold before bottom btauto by case case_eq cbn cbv change classical_left classical_right clear clearbody cofix compare compute congruence constr_eq constructor contradict contradiction cut cutrewrite cycle decide decompose dependent destruct destruction dintuition discriminate discrR do double dtauto eapply eassumption eauto ecase econstructor edestruct ediscriminate eelim eexact eexists einduction einjection eleft elim elimtype enough equality erewrite eright esimplify_eq esplit evar exact exactly_once exfalso exists f_equal fail field field_simplify field_simplify_eq first firstorder fix fold fourier functional generalize generalizing gfail give_up has_evar hnf idtac in induction injection instantiate intro intro_pattern intros intuition inversion inversion_clear is_evar is_var lapply lazy left lia lra move native_compute nia nsatz omega once pattern pose progress proof psatz quote record red refine reflexivity remember rename repeat replace revert revgoals rewrite rewrite_strat right ring ring_simplify rtauto set setoid_reflexivity setoid_replace setoid_rewrite setoid_symmetry setoid_transitivity shelve shelve_unifiable simpl simple simplify_eq solve specialize split split_Rabs split_Rmult stepl stepr subst sum swap symmetry tactic tauto time timeout top transitivity trivial try tryif unfold unify until using vm_compute with"},c:[e.QSM,e.C("\\(\\*","\\*\\)"),e.CNM,{cN:"type",eB:!0,b:"\\|\\s*",e:"\\w+"},{b:/[-=]>/}]}});hljs.registerLanguage("mojolicious",function(e){return{sL:"xml",c:[{cN:"meta",b:"^__(END|DATA)__$"},{b:"^\\s*%{1,2}={0,2}",e:"$",sL:"perl"},{b:"<%{1,2}={0,2}",e:"={0,1}%>",sL:"perl",eB:!0,eE:!0}]}});hljs.registerLanguage("rsl",function(e){return{k:{keyword:"float color point normal vector matrix while for if do return else break extern continue",built_in:"abs acos ambient area asin atan atmosphere attribute calculatenormal ceil cellnoise clamp comp concat cos degrees depth Deriv diffuse distance Du Dv environment exp faceforward filterstep floor format fresnel incident length lightsource log match max min mod noise normalize ntransform opposite option phong pnoise pow printf ptlined radians random reflect refract renderinfo round setcomp setxcomp setycomp setzcomp shadow sign sin smoothstep specular specularbrdf spline sqrt step tan texture textureinfo trace transform vtransform xcomp ycomp zcomp"},i:"",o={cN:"params",b:"\\([^\\(]",rB:!0,c:[{b:/\(/,e:/\)/,k:c,c:["self"].concat(s)}]};return{aliases:["coffee","cson","iced"],k:c,i:/\/\*/,c:s.concat([e.C("###","###"),e.HCM,{cN:"function",b:"^\\s*"+n+"\\s*=\\s*"+t,e:"[-=]>",rB:!0,c:[i,o]},{b:/[:\(,=]\s*/,r:0,c:[{cN:"function",b:t,e:"[-=]>",rB:!0,c:[o]}]},{cN:"class",bK:"class",e:"$",i:/[:="\[\]]/,c:[{bK:"extends",eW:!0,i:/[:="\[\]]/,c:[i]},i]},{b:n+":",e:":",rB:!0,rE:!0,r:0}])}});hljs.registerLanguage("dos",function(e){var r=e.C(/^\s*@?rem\b/,/$/,{r:10}),t={cN:"symbol",b:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)",r:0};return{aliases:["bat","cmd"],cI:!0,i:/\/\*/,k:{keyword:"if else goto for in do call exit not exist errorlevel defined equ neq lss leq gtr geq",built_in:"prn nul lpt3 lpt2 lpt1 con com4 com3 com2 com1 aux shift cd dir echo setlocal endlocal set pause copy append assoc at attrib break cacls cd chcp chdir chkdsk chkntfs cls cmd color comp compact convert date dir diskcomp diskcopy doskey erase fs find findstr format ftype graftabl help keyb label md mkdir mode more move path pause print popd pushd promt rd recover rem rename replace restore rmdir shiftsort start subst time title tree type ver verify vol ping net ipconfig taskkill xcopy ren del"},c:[{cN:"variable",b:/%%[^ ]|%[^ ]+?%|![^ ]+?!/},{cN:"function",b:t.b,e:"goto:eof",c:[e.inherit(e.TM,{b:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),r]},{cN:"number",b:"\\b\\d+",r:0},r]}});hljs.registerLanguage("lua",function(e){var t="\\[=*\\[",a="\\]=*\\]",r={b:t,e:a,c:["self"]},n=[e.C("--(?!"+t+")","$"),e.C("--"+t,a,{c:[r],r:10})];return{l:e.UIR,k:{keyword:"and break do else elseif end false for if in local nil not or repeat return then true until while",built_in:"_G _VERSION assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall coroutine debug io math os package string table"},c:n.concat([{cN:"function",bK:"function",e:"\\)",c:[e.inherit(e.TM,{b:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),{cN:"params",b:"\\(",eW:!0,c:n}].concat(n)},e.CNM,e.ASM,e.QSM,{cN:"string",b:t,e:a,c:[r],r:5}])}});hljs.registerLanguage("brainfuck",function(r){var n={cN:"literal",b:"[\\+\\-]",r:0};return{aliases:["bf"],c:[r.C("[^\\[\\]\\.,\\+\\-<> \r\n]","[\\[\\]\\.,\\+\\-<> \r\n]",{rE:!0,r:0}),{cN:"title",b:"[\\[\\]]",r:0},{cN:"string",b:"[\\.,]",r:0},{b:/\+\+|\-\-/,rB:!0,c:[n]},n]}});hljs.registerLanguage("oxygene",function(e){var r="abstract add and array as asc aspect assembly async begin break block by case class concat const copy constructor continue create default delegate desc distinct div do downto dynamic each else empty end ensure enum equals event except exit extension external false final finalize finalizer finally flags for forward from function future global group has if implementation implements implies in index inherited inline interface into invariants is iterator join locked locking loop matching method mod module namespace nested new nil not notify nullable of old on operator or order out override parallel params partial pinned private procedure property protected public queryable raise read readonly record reintroduce remove repeat require result reverse sealed select self sequence set shl shr skip static step soft take then to true try tuple type union unit unsafe until uses using var virtual raises volatile where while with write xor yield await mapped deprecated stdcall cdecl pascal register safecall overload library platform reference packed strict published autoreleasepool selector strong weak unretained",t=e.C("{","}",{r:0}),a=e.C("\\(\\*","\\*\\)",{r:10}),n={cN:"string",b:"'",e:"'",c:[{b:"''"}]},o={cN:"string",b:"(#\\d+)+"},i={cN:"function",bK:"function constructor destructor procedure method",e:"[:;]",k:"function constructor|10 destructor|10 procedure|10 method|10",c:[e.TM,{cN:"params",b:"\\(",e:"\\)",k:r,c:[n,o]},t,a]};return{cI:!0,l:/\.?\w+/,k:r,i:'("|\\$[G-Zg-z]|\\/\\*||->)',c:[t,a,e.CLCM,n,o,e.NM,i,{cN:"class",b:"=\\bclass\\b",e:"end;",k:r,c:[n,o,t,a,e.CLCM,i]}]}});hljs.registerLanguage("markdown",function(e){return{aliases:["md","mkdown","mkd"],c:[{cN:"section",v:[{b:"^#{1,6}",e:"$"},{b:"^.+?\\n[=-]{2,}$"}]},{b:"<",e:">",sL:"xml",r:0},{cN:"bullet",b:"^([*+-]|(\\d+\\.))\\s+"},{cN:"strong",b:"[*_]{2}.+?[*_]{2}"},{cN:"emphasis",v:[{b:"\\*.+?\\*"},{b:"_.+?_",r:0}]},{cN:"quote",b:"^>\\s+",e:"$"},{cN:"code",v:[{b:"^```w*s*$",e:"^```s*$"},{b:"`.+?`"},{b:"^( {4}| )",e:"$",r:0}]},{b:"^[-\\*]{3,}",e:"$"},{b:"\\[.+?\\][\\(\\[].*?[\\)\\]]",rB:!0,c:[{cN:"string",b:"\\[",e:"\\]",eB:!0,rE:!0,r:0},{cN:"link",b:"\\]\\(",e:"\\)",eB:!0,eE:!0},{cN:"symbol",b:"\\]\\[",e:"\\]",eB:!0,eE:!0}],r:10},{b:/^\[[^\n]+\]:/,rB:!0,c:[{cN:"symbol",b:/\[/,e:/\]/,eB:!0,eE:!0},{cN:"link",b:/:\s*/,e:/$/,eB:!0}]}]}});hljs.registerLanguage("dart",function(e){var t={cN:"subst",b:"\\$\\{",e:"}",k:"true false null this is new super"},r={cN:"string",v:[{b:"r'''",e:"'''"},{b:'r"""',e:'"""'},{b:"r'",e:"'",i:"\\n"},{b:'r"',e:'"',i:"\\n"},{b:"'''",e:"'''",c:[e.BE,t]},{b:'"""',e:'"""',c:[e.BE,t]},{b:"'",e:"'",i:"\\n",c:[e.BE,t]},{b:'"',e:'"',i:"\\n",c:[e.BE,t]}]};t.c=[e.CNM,r];var n={keyword:"assert async await break case catch class const continue default do else enum extends false final finally for if in is new null rethrow return super switch sync this throw true try var void while with yield abstract as dynamic export external factory get implements import library operator part set static typedef",built_in:"print Comparable DateTime Duration Function Iterable Iterator List Map Match Null Object Pattern RegExp Set Stopwatch String StringBuffer StringSink Symbol Type Uri bool double int num document window querySelector querySelectorAll Element ElementList"};return{k:n,c:[r,e.C("/\\*\\*","\\*/",{sL:"markdown"}),e.C("///","$",{sL:"markdown"}),e.CLCM,e.CBCM,{cN:"class",bK:"class interface",e:"{",eE:!0,c:[{bK:"extends implements"},e.UTM]},e.CNM,{cN:"meta",b:"@[A-Za-z]+"},{b:"=>"}]}});hljs.registerLanguage("fortran",function(e){var t={cN:"params",b:"\\(",e:"\\)"},n={literal:".False. .True.",keyword:"kind do while private call intrinsic where elsewhere type endtype endmodule endselect endinterface end enddo endif if forall endforall only contains default return stop then public subroutine|10 function program .and. .or. .not. .le. .eq. .ge. .gt. .lt. goto save else use module select case access blank direct exist file fmt form formatted iostat name named nextrec number opened rec recl sequential status unformatted unit continue format pause cycle exit c_null_char c_alert c_backspace c_form_feed flush wait decimal round iomsg synchronous nopass non_overridable pass protected volatile abstract extends import non_intrinsic value deferred generic final enumerator class associate bind enum c_int c_short c_long c_long_long c_signed_char c_size_t c_int8_t c_int16_t c_int32_t c_int64_t c_int_least8_t c_int_least16_t c_int_least32_t c_int_least64_t c_int_fast8_t c_int_fast16_t c_int_fast32_t c_int_fast64_t c_intmax_t C_intptr_t c_float c_double c_long_double c_float_complex c_double_complex c_long_double_complex c_bool c_char c_null_ptr c_null_funptr c_new_line c_carriage_return c_horizontal_tab c_vertical_tab iso_c_binding c_loc c_funloc c_associated c_f_pointer c_ptr c_funptr iso_fortran_env character_storage_size error_unit file_storage_size input_unit iostat_end iostat_eor numeric_storage_size output_unit c_f_procpointer ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode newunit contiguous recursive pad position action delim readwrite eor advance nml interface procedure namelist include sequence elemental pure integer real character complex logical dimension allocatable|10 parameter external implicit|10 none double precision assign intent optional pointer target in out common equivalence data",built_in:"alog alog10 amax0 amax1 amin0 amin1 amod cabs ccos cexp clog csin csqrt dabs dacos dasin datan datan2 dcos dcosh ddim dexp dint dlog dlog10 dmax1 dmin1 dmod dnint dsign dsin dsinh dsqrt dtan dtanh float iabs idim idint idnint ifix isign max0 max1 min0 min1 sngl algama cdabs cdcos cdexp cdlog cdsin cdsqrt cqabs cqcos cqexp cqlog cqsin cqsqrt dcmplx dconjg derf derfc dfloat dgamma dimag dlgama iqint qabs qacos qasin qatan qatan2 qcmplx qconjg qcos qcosh qdim qerf qerfc qexp qgamma qimag qlgama qlog qlog10 qmax1 qmin1 qmod qnint qsign qsin qsinh qsqrt qtan qtanh abs acos aimag aint anint asin atan atan2 char cmplx conjg cos cosh exp ichar index int log log10 max min nint sign sin sinh sqrt tan tanh print write dim lge lgt lle llt mod nullify allocate deallocate adjustl adjustr all allocated any associated bit_size btest ceiling count cshift date_and_time digits dot_product eoshift epsilon exponent floor fraction huge iand ibclr ibits ibset ieor ior ishft ishftc lbound len_trim matmul maxexponent maxloc maxval merge minexponent minloc minval modulo mvbits nearest pack present product radix random_number random_seed range repeat reshape rrspacing scale scan selected_int_kind selected_real_kind set_exponent shape size spacing spread sum system_clock tiny transpose trim ubound unpack verify achar iachar transfer dble entry dprod cpu_time command_argument_count get_command get_command_argument get_environment_variable is_iostat_end ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode is_iostat_eor move_alloc new_line selected_char_kind same_type_as extends_type_ofacosh asinh atanh bessel_j0 bessel_j1 bessel_jn bessel_y0 bessel_y1 bessel_yn erf erfc erfc_scaled gamma log_gamma hypot norm2 atomic_define atomic_ref execute_command_line leadz trailz storage_size merge_bits bge bgt ble blt dshiftl dshiftr findloc iall iany iparity image_index lcobound ucobound maskl maskr num_images parity popcnt poppar shifta shiftl shiftr this_image"};return{cI:!0,aliases:["f90","f95"],k:n,i:/\/\*/,c:[e.inherit(e.ASM,{cN:"string",r:0}),e.inherit(e.QSM,{cN:"string",r:0}),{cN:"function",bK:"subroutine function program",i:"[${=\\n]",c:[e.UTM,t]},e.C("!","$",{r:0}),{cN:"number",b:"(?=\\b|\\+|\\-|\\.)(?=\\.\\d|\\d)(?:\\d+)?(?:\\.?\\d*)(?:[de][+-]?\\d+)?\\b\\.?",r:0}]}});hljs.registerLanguage("pf",function(t){var o={cN:"variable",b:/\$[\w\d#@][\w\d_]*/},e={cN:"variable",b:/<(?!\/)/,e:/>/};return{aliases:["pf.conf"],l:/[a-z0-9_<>-]+/,k:{built_in:"block match pass load anchor|5 antispoof|10 set table",keyword:"in out log quick on rdomain inet inet6 proto from port os to routeallow-opts divert-packet divert-reply divert-to flags group icmp-typeicmp6-type label once probability recieved-on rtable prio queuetos tag tagged user keep fragment for os dropaf-to|10 binat-to|10 nat-to|10 rdr-to|10 bitmask least-stats random round-robinsource-hash static-portdup-to reply-to route-toparent bandwidth default min max qlimitblock-policy debug fingerprints hostid limit loginterface optimizationreassemble ruleset-optimization basic none profile skip state-defaultsstate-policy timeoutconst counters persistno modulate synproxy state|5 floating if-bound no-sync pflow|10 sloppysource-track global rule max-src-nodes max-src-states max-src-connmax-src-conn-rate overload flushscrub|5 max-mss min-ttl no-df|10 random-id",literal:"all any no-route self urpf-failed egress|5 unknown"},c:[t.HCM,t.NM,t.QSM,o,e]}});hljs.registerLanguage("nimrod",function(t){return{aliases:["nim"],k:{keyword:"addr and as asm bind block break case cast const continue converter discard distinct div do elif else end enum except export finally for from generic if import in include interface is isnot iterator let macro method mixin mod nil not notin object of or out proc ptr raise ref return shl shr static template try tuple type using var when while with without xor yield",literal:"shared guarded stdin stdout stderr result true false",built_in:"int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 float float32 float64 bool char string cstring pointer expr stmt void auto any range array openarray varargs seq set clong culong cchar cschar cshort cint csize clonglong cfloat cdouble clongdouble cuchar cushort cuint culonglong cstringarray semistatic"},c:[{cN:"meta",b:/{\./,e:/\.}/,r:10},{cN:"string",b:/[a-zA-Z]\w*"/,e:/"/,c:[{b:/""/}]},{cN:"string",b:/([a-zA-Z]\w*)?"""/,e:/"""/},t.QSM,{cN:"type",b:/\b[A-Z]\w+\b/,r:0},{cN:"number",r:0,v:[{b:/\b(0[xX][0-9a-fA-F][_0-9a-fA-F]*)('?[iIuU](8|16|32|64))?/},{b:/\b(0o[0-7][_0-7]*)('?[iIuUfF](8|16|32|64))?/},{b:/\b(0(b|B)[01][_01]*)('?[iIuUfF](8|16|32|64))?/},{b:/\b(\d[_\d]*)('?[iIuUfF](8|16|32|64))?/}]},t.HCM]}});hljs.registerLanguage("java",function(e){var t=e.UIR+"(<"+e.UIR+"(\\s*,\\s*"+e.UIR+")*>)?",a="false synchronized int abstract float private char boolean static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports",r="\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",s={cN:"number",b:r,r:0};return{aliases:["jsp"],k:a,i:/<\/|#/,c:[e.C("/\\*\\*","\\*/",{r:0,c:[{b:/\w+@/,r:0},{cN:"doctag",b:"@[A-Za-z]+"}]}),e.CLCM,e.CBCM,e.ASM,e.QSM,{cN:"class",bK:"class interface",e:/[{;=]/,eE:!0,k:"class interface",i:/[:"\[\]]/,c:[{bK:"extends implements"},e.UTM]},{bK:"new throw return else",r:0},{cN:"function",b:"("+t+"\\s+)+"+e.UIR+"\\s*\\(",rB:!0,e:/[{;=]/,eE:!0,k:a,c:[{b:e.UIR+"\\s*\\(",rB:!0,r:0,c:[e.UTM]},{cN:"params",b:/\(/,e:/\)/,k:a,r:0,c:[e.ASM,e.QSM,e.CNM,e.CBCM]},e.CLCM,e.CBCM]},s,{cN:"meta",b:"@[A-Za-z]+"}]}});hljs.registerLanguage("javascript",function(e){return{aliases:["js","jsx"],k:{keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},c:[{cN:"meta",r:10,b:/^\s*['"]use (strict|asm)['"]/},{cN:"meta",b:/^#!/,e:/$/},e.ASM,e.QSM,{cN:"string",b:"`",e:"`",c:[e.BE,{cN:"subst",b:"\\$\\{",e:"\\}"}]},e.CLCM,e.CBCM,{cN:"number",v:[{b:"\\b(0[bB][01]+)"},{b:"\\b(0[oO][0-7]+)"},{b:e.CNR}],r:0},{b:"("+e.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[e.CLCM,e.CBCM,e.RM,{b://,sL:"xml",c:[{b:/<\w+\s*\/>/,skip:!0},{b:/<\w+/,e:/(\/\w+|\w+\/)>/,skip:!0,c:["self"]}]}],r:0},{cN:"function",bK:"function",e:/\{/,eE:!0,c:[e.inherit(e.TM,{b:/[A-Za-z$_][0-9A-Za-z$_]*/}),{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,c:[e.CLCM,e.CBCM]}],i:/\[|%/},{b:/\$[(.]/},e.METHOD_GUARD,{cN:"class",bK:"class",e:/[{;=]/,eE:!0,i:/[:"\[\]]/,c:[{bK:"extends"},e.UTM]},{bK:"constructor",e:/\{/,eE:!0}],i:/#(?!!)/}});hljs.registerLanguage("qml",function(r){var e={keyword:"in of on if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await import",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Behavior bool color coordinate date double enumeration font geocircle georectangle geoshape int list matrix4x4 parent point quaternion real rect size string url var variant vector2d vector3d vector4dPromise"},t="[a-zA-Z_][a-zA-Z0-9\\._]*",a={cN:"keyword",b:"\\bproperty\\b",starts:{cN:"string",e:"(:|=|;|,|//|/\\*|$)",rE:!0}},n={cN:"keyword",b:"\\bsignal\\b",starts:{cN:"string",e:"(\\(|:|=|;|,|//|/\\*|$)",rE:!0}},o={cN:"attribute",b:"\\bid\\s*:",starts:{cN:"string",e:t,rE:!1}},i={b:t+"\\s*:",rB:!0,c:[{cN:"attribute",b:t,e:"\\s*:",eE:!0,r:0}],r:0},c={b:t+"\\s*{",e:"{",rB:!0,r:0,c:[r.inherit(r.TM,{b:t})]};return{aliases:["qt"],cI:!1,k:e,c:[{cN:"meta",b:/^\s*['"]use (strict|asm)['"]/},r.ASM,r.QSM,{cN:"string",b:"`",e:"`",c:[r.BE,{cN:"subst",b:"\\$\\{",e:"\\}"}]},r.CLCM,r.CBCM,{cN:"number",v:[{b:"\\b(0[bB][01]+)"},{b:"\\b(0[oO][0-7]+)"},{b:r.CNR}],r:0},{b:"("+r.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[r.CLCM,r.CBCM,r.RM,{b:/\s*[);\]]/,r:0,sL:"xml"}],r:0},n,a,{cN:"function",bK:"function",e:/\{/,eE:!0,c:[r.inherit(r.TM,{b:/[A-Za-z$_][0-9A-Za-z$_]*/}),{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,c:[r.CLCM,r.CBCM]}],i:/\[|%/},{b:"\\."+r.IR,r:0},o,i,c],i:/#/}});hljs.registerLanguage("bash",function(e){var t={cN:"variable",v:[{b:/\$[\w\d#@][\w\d_]*/},{b:/\$\{(.*?)}/}]},s={cN:"string",b:/"/,e:/"/,c:[e.BE,t,{cN:"variable",b:/\$\(/,e:/\)/,c:[e.BE]}]},a={cN:"string",b:/'/,e:/'/};return{aliases:["sh","zsh"],l:/-?[a-z\._]+/,k:{keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp",_:"-ne -eq -lt -gt -f -d -e -s -l -a"},c:[{cN:"meta",b:/^#![^\n]+sh\s*$/,r:10},{cN:"function",b:/\w[\w\d_]*\s*\(\s*\)\s*\{/,rB:!0,c:[e.inherit(e.TM,{b:/\w[\w\d_]*/})],r:0},e.HCM,s,a,t]}});hljs.registerLanguage("dockerfile",function(e){return{aliases:["docker"],cI:!0,k:"from maintainer cmd expose add copy entrypoint volume user workdir onbuild run env label",c:[e.HCM,{k:"run cmd entrypoint volume add copy workdir onbuild label",b:/^ *(onbuild +)?(run|cmd|entrypoint|volume|add|copy|workdir|label) +/,starts:{e:/[^\\]\n/,sL:"bash"}},{k:"from maintainer expose env user onbuild",b:/^ *(onbuild +)?(from|maintainer|expose|env|user|onbuild) +/,e:/[^\\]\n/,c:[e.ASM,e.QSM,e.NM,e.HCM]}]}});hljs.registerLanguage("nix",function(e){var r={keyword:"rec with let in inherit assert if else then",literal:"true false or and null",built_in:"import abort baseNameOf dirOf isNull builtins map removeAttrs throw toString derivation"},t={cN:"subst",b:/\$\{/,e:/}/,k:r},i={b:/[a-zA-Z0-9-_]+(\s*=)/,rB:!0,r:0,c:[{cN:"attr",b:/\S+/}]},s={cN:"string",c:[t],v:[{b:"''",e:"''"},{b:'"',e:'"'}]},a=[e.NM,e.HCM,e.CBCM,s,i];return t.c=a,{aliases:["nixos"],k:r,c:a}});hljs.registerLanguage("tp",function(O){var R={cN:"number",b:"[1-9][0-9]*",r:0},E={cN:"symbol",b:":[^\\]]+"},T={cN:"built_in",b:"(AR|P|PAYLOAD|PR|R|SR|RSR|LBL|VR|UALM|MESSAGE|UTOOL|UFRAME|TIMER| TIMER_OVERFLOW|JOINT_MAX_SPEED|RESUME_PROG|DIAG_REC)\\[",e:"\\]",c:["self",R,E]},N={cN:"built_in",b:"(AI|AO|DI|DO|F|RI|RO|UI|UO|GI|GO|SI|SO)\\[",e:"\\]",c:["self",R,O.QSM,E]};return{k:{keyword:"ABORT ACC ADJUST AND AP_LD BREAK CALL CNT COL CONDITION CONFIG DA DB DIV DETECT ELSE END ENDFOR ERR_NUM ERROR_PROG FINE FOR GP GUARD INC IF JMP LINEAR_MAX_SPEED LOCK MOD MONITOR OFFSET Offset OR OVERRIDE PAUSE PREG PTH RT_LD RUN SELECT SKIP Skip TA TB TO TOOL_OFFSET Tool_Offset UF UT UFRAME_NUM UTOOL_NUM UNLOCK WAIT X Y Z W P R STRLEN SUBSTR FINDSTR VOFFSET PROG ATTR MN POS",literal:"ON OFF max_speed LPOS JPOS ENABLE DISABLE START STOP RESET"},c:[T,N,{cN:"keyword",b:"/(PROG|ATTR|MN|POS|END)\\b"},{cN:"keyword",b:"(CALL|RUN|POINT_LOGIC|LBL)\\b"},{cN:"keyword",b:"\\b(ACC|CNT|Skip|Offset|PSPD|RT_LD|AP_LD|Tool_Offset)"},{cN:"number",b:"\\d+(sec|msec|mm/sec|cm/min|inch/min|deg/sec|mm|in|cm)?\\b",r:0},O.C("//","[;$]"),O.C("!","[;$]"),O.C("--eg:","$"),O.QSM,{cN:"string",b:"'",e:"'"},O.CNM,{cN:"variable",b:"\\$[A-Za-z0-9_]+"}]}});hljs.registerLanguage("delphi",function(e){var r="exports register file shl array record property for mod while set ally label uses raise not stored class safecall var interface or private static exit index inherited to else stdcall override shr asm far resourcestring finalization packed virtual out and protected library do xorwrite goto near function end div overload object unit begin string on inline repeat until destructor write message program with read initialization except default nil if case cdecl in downto threadvar of try pascal const external constructor type public then implementation finally published procedure",t=[e.CLCM,e.C(/\{/,/\}/,{r:0}),e.C(/\(\*/,/\*\)/,{r:10})],a={cN:"string",b:/'/,e:/'/,c:[{b:/''/}]},i={cN:"string",b:/(#\d+)+/},c={b:e.IR+"\\s*=\\s*class\\s*\\(",rB:!0,c:[e.TM]},o={cN:"function",bK:"function constructor destructor procedure",e:/[:;]/,k:"function constructor|10 destructor|10 procedure|10",c:[e.TM,{cN:"params",b:/\(/,e:/\)/,k:r,c:[a,i]}].concat(t)};return{aliases:["dpr","dfm","pas","pascal","freepascal","lazarus","lpr","lfm"],cI:!0,k:r,i:/"|\$[G-Zg-z]|\/\*|<\/|\|/,c:[a,i,e.NM,c,o].concat(t)}});hljs.registerLanguage("css",function(e){var c="[a-zA-Z-][a-zA-Z0-9_-]*",t={b:/[A-Z\_\.\-]+\s*:/,rB:!0,e:";",eW:!0,c:[{cN:"attribute",b:/\S/,e:":",eE:!0,starts:{eW:!0,eE:!0,c:[{b:/[\w-]+\(/,rB:!0,c:[{cN:"built_in",b:/[\w-]+/},{b:/\(/,e:/\)/,c:[e.ASM,e.QSM]}]},e.CSSNM,e.QSM,e.ASM,e.CBCM,{cN:"number",b:"#[0-9A-Fa-f]+"},{cN:"meta",b:"!important"}]}}]};return{cI:!0,i:/[=\/|'\$]/,c:[e.CBCM,{cN:"selector-id",b:/#[A-Za-z0-9_-]+/},{cN:"selector-class",b:/\.[A-Za-z0-9_-]+/},{cN:"selector-attr",b:/\[/,e:/\]/,i:"$"},{cN:"selector-pseudo",b:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{b:"@(font-face|page)",l:"[a-z-]+",k:"font-face page"},{b:"@",e:"[{;]",i:/:/,c:[{cN:"keyword",b:/\w+/},{b:/\s/,eW:!0,eE:!0,r:0,c:[e.ASM,e.QSM,e.CSSNM]}]},{cN:"selector-tag",b:c,r:0},{b:"{",e:"}",i:/\S/,c:[e.CBCM,t]}]}});hljs.registerLanguage("haxe",function(e){var a="([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)";return{aliases:["hx"],k:{keyword:"break callback case cast catch class continue default do dynamic else enum extends extern for function here if implements import in inline interface never new override package private public return static super switch this throw trace try typedef untyped using var while",literal:"true false null"},c:[e.ASM,e.QSM,e.CLCM,e.CBCM,e.CNM,{cN:"class",bK:"class interface",e:"{",eE:!0,c:[{bK:"extends implements"},e.TM]},{cN:"meta",b:"#",e:"$",k:{"meta-keyword":"if else elseif end error"}},{cN:"function",bK:"function",e:"[{;]",eE:!0,i:"\\S",c:[e.TM,{cN:"params",b:"\\(",e:"\\)",c:[e.ASM,e.QSM,e.CLCM,e.CBCM]},{b:":\\s*"+a}]}]}});hljs.registerLanguage("ocaml",function(e){return{aliases:["ml"],k:{keyword:"and as assert asr begin class constraint do done downto else end exception external for fun function functor if in include inherit! inherit initializer land lazy let lor lsl lsr lxor match method!|10 method mod module mutable new object of open! open or private rec sig struct then to try type val! val virtual when while with parser value",built_in:"array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 string unit in_channel out_channel ref",literal:"true false"},i:/\/\/|>>/,l:"[a-z_]\\w*!?",c:[{cN:"literal",b:"\\[(\\|\\|)?\\]|\\(\\)",r:0},e.C("\\(\\*","\\*\\)",{c:["self"]}),{cN:"symbol",b:"'[A-Za-z_](?!')[\\w']*"},{cN:"type",b:"`[A-Z][\\w']*"},{cN:"type",b:"\\b[A-Z][\\w']*",r:0},{b:"[a-z_]\\w*'[\\w']*",r:0},e.inherit(e.ASM,{cN:"string",r:0}),e.inherit(e.QSM,{i:null}),{cN:"number",b:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)",r:0},{b:/[-=]>/}]}});hljs.registerLanguage("yaml",function(e){var a={literal:"{ } true false yes no Yes No True False null"},b="^[ \\-]*",r="[a-zA-Z_][\\w\\-]*",t={cN:"attr",v:[{b:b+r+":"},{b:b+'"'+r+'":'},{b:b+"'"+r+"':"}]},c={cN:"template-variable",v:[{b:"{{",e:"}}"},{b:"%{",e:"}"}]},l={cN:"string",r:0,v:[{b:/'/,e:/'/},{b:/"/,e:/"/}],c:[e.BE,c]};return{cI:!0,aliases:["yml","YAML","yaml"],c:[t,{cN:"meta",b:"^---s*$",r:10},{cN:"string",b:"[\\|>] *$",rE:!0,c:l.c,e:t.v[0].b},{b:"<%[%=-]?",e:"[%-]?%>",sL:"ruby",eB:!0,eE:!0,r:0},{cN:"type",b:"!!"+e.UIR},{cN:"meta",b:"&"+e.UIR+"$"},{cN:"meta",b:"\\*"+e.UIR+"$"},{cN:"bullet",b:"^ *-",r:0},l,e.HCM,e.CNM],k:a}});hljs.registerLanguage("smali",function(t){var s=["add","and","cmp","cmpg","cmpl","const","div","double","float","goto","if","int","long","move","mul","neg","new","nop","not","or","rem","return","shl","shr","sput","sub","throw","ushr","xor"],e=["aget","aput","array","check","execute","fill","filled","goto/16","goto/32","iget","instance","invoke","iput","monitor","packed","sget","sparse"],r=["transient","constructor","abstract","final","synthetic","public","private","protected","static","bridge","system"];return{aliases:["smali"],c:[{cN:"string",b:'"',e:'"',r:0},t.C("#","$",{r:0}),{cN:"keyword",v:[{b:"\\s*\\.end\\s[a-zA-Z0-9]*"},{b:"^[ ]*\\.[a-zA-Z]*",r:0},{b:"\\s:[a-zA-Z_0-9]*",r:0},{b:"\\s("+r.join("|")+")"}]},{cN:"built_in",v:[{b:"\\s("+s.join("|")+")\\s"},{b:"\\s("+s.join("|")+")((\\-|/)[a-zA-Z0-9]+)+\\s",r:10},{b:"\\s("+e.join("|")+")((\\-|/)[a-zA-Z0-9]+)*\\s",r:10}]},{cN:"class",b:"L[^(;:\n]*;",r:0},{b:"[vp][0-9]+"}]}});hljs.registerLanguage("ldif",function(e){return{c:[{cN:"attribute",b:"^dn",e:": ",eE:!0,starts:{e:"$",r:0},r:10},{cN:"attribute",b:"^\\w",e:": ",eE:!0,starts:{e:"$",r:0}},{cN:"literal",b:"^-",e:"$"},e.HCM]}});hljs.registerLanguage("livecodeserver",function(e){var r={b:"\\b[gtps][A-Z]+[A-Za-z0-9_\\-]*\\b|\\$_[A-Z]+",r:0},t=[e.CBCM,e.HCM,e.C("--","$"),e.C("[^:]//","$")],a=e.inherit(e.TM,{v:[{b:"\\b_*rig[A-Z]+[A-Za-z0-9_\\-]*"},{b:"\\b_[a-z0-9\\-]+"}]}),o=e.inherit(e.TM,{b:"\\b([A-Za-z0-9_\\-]+)\\b"});return{cI:!1,k:{keyword:"$_COOKIE $_FILES $_GET $_GET_BINARY $_GET_RAW $_POST $_POST_BINARY $_POST_RAW $_SESSION $_SERVER codepoint codepoints segment segments codeunit codeunits sentence sentences trueWord trueWords paragraph after byte bytes english the until http forever descending using line real8 with seventh for stdout finally element word words fourth before black ninth sixth characters chars stderr uInt1 uInt1s uInt2 uInt2s stdin string lines relative rel any fifth items from middle mid at else of catch then third it file milliseconds seconds second secs sec int1 int1s int4 int4s internet int2 int2s normal text item last long detailed effective uInt4 uInt4s repeat end repeat URL in try into switch to words https token binfile each tenth as ticks tick system real4 by dateItems without char character ascending eighth whole dateTime numeric short first ftp integer abbreviated abbr abbrev private case while if div mod wrap and or bitAnd bitNot bitOr bitXor among not in a an within contains ends with begins the keys of keys",literal:"SIX TEN FORMFEED NINE ZERO NONE SPACE FOUR FALSE COLON CRLF PI COMMA ENDOFFILE EOF EIGHT FIVE QUOTE EMPTY ONE TRUE RETURN CR LINEFEED RIGHT BACKSLASH NULL SEVEN TAB THREE TWO six ten formfeed nine zero none space four false colon crlf pi comma endoffile eof eight five quote empty one true return cr linefeed right backslash null seven tab three two RIVERSION RISTATE FILE_READ_MODE FILE_WRITE_MODE FILE_WRITE_MODE DIR_WRITE_MODE FILE_READ_UMASK FILE_WRITE_UMASK DIR_READ_UMASK DIR_WRITE_UMASK",built_in:"put abs acos aliasReference annuity arrayDecode arrayEncode asin atan atan2 average avg avgDev base64Decode base64Encode baseConvert binaryDecode binaryEncode byteOffset byteToNum cachedURL cachedURLs charToNum cipherNames codepointOffset codepointProperty codepointToNum codeunitOffset commandNames compound compress constantNames cos date dateFormat decompress directories diskSpace DNSServers exp exp1 exp2 exp10 extents files flushEvents folders format functionNames geometricMean global globals hasMemory harmonicMean hostAddress hostAddressToName hostName hostNameToAddress isNumber ISOToMac itemOffset keys len length libURLErrorData libUrlFormData libURLftpCommand libURLLastHTTPHeaders libURLLastRHHeaders libUrlMultipartFormAddPart libUrlMultipartFormData libURLVersion lineOffset ln ln1 localNames log log2 log10 longFilePath lower macToISO matchChunk matchText matrixMultiply max md5Digest median merge millisec millisecs millisecond milliseconds min monthNames nativeCharToNum normalizeText num number numToByte numToChar numToCodepoint numToNativeChar offset open openfiles openProcesses openProcessIDs openSockets paragraphOffset paramCount param params peerAddress pendingMessages platform popStdDev populationStandardDeviation populationVariance popVariance processID random randomBytes replaceText result revCreateXMLTree revCreateXMLTreeFromFile revCurrentRecord revCurrentRecordIsFirst revCurrentRecordIsLast revDatabaseColumnCount revDatabaseColumnIsNull revDatabaseColumnLengths revDatabaseColumnNames revDatabaseColumnNamed revDatabaseColumnNumbered revDatabaseColumnTypes revDatabaseConnectResult revDatabaseCursors revDatabaseID revDatabaseTableNames revDatabaseType revDataFromQuery revdb_closeCursor revdb_columnbynumber revdb_columncount revdb_columnisnull revdb_columnlengths revdb_columnnames revdb_columntypes revdb_commit revdb_connect revdb_connections revdb_connectionerr revdb_currentrecord revdb_cursorconnection revdb_cursorerr revdb_cursors revdb_dbtype revdb_disconnect revdb_execute revdb_iseof revdb_isbof revdb_movefirst revdb_movelast revdb_movenext revdb_moveprev revdb_query revdb_querylist revdb_recordcount revdb_rollback revdb_tablenames revGetDatabaseDriverPath revNumberOfRecords revOpenDatabase revOpenDatabases revQueryDatabase revQueryDatabaseBlob revQueryResult revQueryIsAtStart revQueryIsAtEnd revUnixFromMacPath revXMLAttribute revXMLAttributes revXMLAttributeValues revXMLChildContents revXMLChildNames revXMLCreateTreeFromFileWithNamespaces revXMLCreateTreeWithNamespaces revXMLDataFromXPathQuery revXMLEvaluateXPath revXMLFirstChild revXMLMatchingNode revXMLNextSibling revXMLNodeContents revXMLNumberOfChildren revXMLParent revXMLPreviousSibling revXMLRootNode revXMLRPC_CreateRequest revXMLRPC_Documents revXMLRPC_Error revXMLRPC_GetHost revXMLRPC_GetMethod revXMLRPC_GetParam revXMLText revXMLRPC_Execute revXMLRPC_GetParamCount revXMLRPC_GetParamNode revXMLRPC_GetParamType revXMLRPC_GetPath revXMLRPC_GetPort revXMLRPC_GetProtocol revXMLRPC_GetRequest revXMLRPC_GetResponse revXMLRPC_GetSocket revXMLTree revXMLTrees revXMLValidateDTD revZipDescribeItem revZipEnumerateItems revZipOpenArchives round sampVariance sec secs seconds sentenceOffset sha1Digest shell shortFilePath sin specialFolderPath sqrt standardDeviation statRound stdDev sum sysError systemVersion tan tempName textDecode textEncode tick ticks time to tokenOffset toLower toUpper transpose truewordOffset trunc uniDecode uniEncode upper URLDecode URLEncode URLStatus uuid value variableNames variance version waitDepth weekdayNames wordOffset xsltApplyStylesheet xsltApplyStylesheetFromFile xsltLoadStylesheet xsltLoadStylesheetFromFile add breakpoint cancel clear local variable file word line folder directory URL close socket process combine constant convert create new alias folder directory decrypt delete variable word line folder directory URL dispatch divide do encrypt filter get include intersect kill libURLDownloadToFile libURLFollowHttpRedirects libURLftpUpload libURLftpUploadFile libURLresetAll libUrlSetAuthCallback libURLSetCustomHTTPHeaders libUrlSetExpect100 libURLSetFTPListCommand libURLSetFTPMode libURLSetFTPStopTime libURLSetStatusCallback load multiply socket prepare process post seek rel relative read from process rename replace require resetAll resolve revAddXMLNode revAppendXML revCloseCursor revCloseDatabase revCommitDatabase revCopyFile revCopyFolder revCopyXMLNode revDeleteFolder revDeleteXMLNode revDeleteAllXMLTrees revDeleteXMLTree revExecuteSQL revGoURL revInsertXMLNode revMoveFolder revMoveToFirstRecord revMoveToLastRecord revMoveToNextRecord revMoveToPreviousRecord revMoveToRecord revMoveXMLNode revPutIntoXMLNode revRollBackDatabase revSetDatabaseDriverPath revSetXMLAttribute revXMLRPC_AddParam revXMLRPC_DeleteAllDocuments revXMLAddDTD revXMLRPC_Free revXMLRPC_FreeAll revXMLRPC_DeleteDocument revXMLRPC_DeleteParam revXMLRPC_SetHost revXMLRPC_SetMethod revXMLRPC_SetPort revXMLRPC_SetProtocol revXMLRPC_SetSocket revZipAddItemWithData revZipAddItemWithFile revZipAddUncompressedItemWithData revZipAddUncompressedItemWithFile revZipCancel revZipCloseArchive revZipDeleteItem revZipExtractItemToFile revZipExtractItemToVariable revZipSetProgressCallback revZipRenameItem revZipReplaceItemWithData revZipReplaceItemWithFile revZipOpenArchive send set sort split start stop subtract union unload wait write"},c:[r,{cN:"keyword",b:"\\bend\\sif\\b"},{cN:"function",bK:"function",e:"$",c:[r,o,e.ASM,e.QSM,e.BNM,e.CNM,a]},{cN:"function",b:"\\bend\\s+",e:"$",k:"end",c:[o,a],r:0},{bK:"command on",e:"$",c:[r,o,e.ASM,e.QSM,e.BNM,e.CNM,a]},{cN:"meta",v:[{b:"<\\?(rev|lc|livecode)",r:10},{b:"<\\?"},{b:"\\?>"}]},e.ASM,e.QSM,e.BNM,e.CNM,a].concat(t),i:";$|^\\[|^=|&|{"}});hljs.registerLanguage("gams",function(e){var a={keyword:"abort acronym acronyms alias all and assign binary card diag display else eq file files for free ge gt if integer le loop lt maximizing minimizing model models ne negative no not option options or ord positive prod put putpage puttl repeat sameas semicont semiint smax smin solve sos1 sos2 sum system table then until using while xor yes",literal:"eps inf na","built-in":"abs arccos arcsin arctan arctan2 Beta betaReg binomial ceil centropy cos cosh cvPower div div0 eDist entropy errorf execSeed exp fact floor frac gamma gammaReg log logBeta logGamma log10 log2 mapVal max min mod ncpCM ncpF ncpVUpow ncpVUsin normal pi poly power randBinomial randLinear randTriangle round rPower sigmoid sign signPower sin sinh slexp sllog10 slrec sqexp sqlog10 sqr sqrec sqrt tan tanh trunc uniform uniformInt vcPower bool_and bool_eqv bool_imp bool_not bool_or bool_xor ifThen rel_eq rel_ge rel_gt rel_le rel_lt rel_ne gday gdow ghour gleap gmillisec gminute gmonth gsecond gyear jdate jnow jstart jtime errorLevel execError gamsRelease gamsVersion handleCollect handleDelete handleStatus handleSubmit heapFree heapLimit heapSize jobHandle jobKill jobStatus jobTerminate licenseLevel licenseStatus maxExecError sleep timeClose timeComp timeElapsed timeExec timeStart"},o={cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0},r={cN:"symbol",v:[{b:/\=[lgenxc]=/},{b:/\$/}]},t={cN:"comment",v:[{b:"'",e:"'"},{b:'"',e:'"'}],i:"\\n",c:[e.BE]},i={b:"/",e:"/",k:a,c:[t,e.CLCM,e.CBCM,e.QSM,e.ASM,e.CNM]},l={b:/[a-z][a-z0-9_]*(\([a-z0-9_, ]*\))?[ \t]+/,eB:!0,e:"$",eW:!0,c:[t,i,{cN:"comment",b:/([ ]*[a-z0-9&#*=?@>\\<:\-,()$\[\]_.{}!+%^]+)+/,r:0}]};return{aliases:["gms"],cI:!0,k:a,c:[e.C(/^\$ontext/,/^\$offtext/),{cN:"meta",b:"^\\$[a-z0-9]+",e:"$",rB:!0,c:[{cN:"meta-keyword",b:"^\\$[a-z0-9]+"}]},e.C("^\\*","$"),e.CLCM,e.CBCM,e.QSM,e.ASM,{bK:"set sets parameter parameters variable variables scalar scalars equation equations",e:";",c:[e.C("^\\*","$"),e.CLCM,e.CBCM,e.QSM,e.ASM,i,l]},{bK:"table",e:";",rB:!0,c:[{bK:"table",e:"$",c:[l]},e.C("^\\*","$"),e.CLCM,e.CBCM,e.QSM,e.ASM,e.CNM]},{cN:"function",b:/^[a-z][a-z0-9_,\-+' ()$]+\.{2}/,rB:!0,c:[{cN:"title",b:/^[a-z][a-z0-9_]+/},o,r]},e.CNM,r]}});hljs.registerLanguage("prolog",function(c){var b={b:/[a-z][A-Za-z0-9_]*/,r:0},r={cN:"symbol",v:[{b:/[A-Z][a-zA-Z0-9_]*/},{b:/_[A-Za-z0-9_]*/}],r:0},e={b:/\(/,e:/\)/,r:0},n={b:/\[/,e:/\]/},a={cN:"comment",b:/%/,e:/$/,c:[c.PWM]},t={cN:"string",b:/`/,e:/`/,c:[c.BE]},g={cN:"string",b:/0\'(\\\'|.)/},s={cN:"string",b:/0\'\\s/},o={b:/:-/},N=[b,r,e,o,n,a,c.CBCM,c.QSM,c.ASM,t,g,s,c.CNM];return e.c=N,n.c=N,{c:N.concat([{b:/\.$/}])}});hljs.registerLanguage("rust",function(e){var t="([uif](8|16|32|64|size))?",r=e.inherit(e.CBCM);r.c.push("self");var i="alignof as be box break const continue crate do else enum extern false fn for if impl in let loop match mod mut offsetof once priv proc pub pure ref return self Self sizeof static struct super trait true type typeof unsafe unsized use virtual while where yield move default int i8 i16 i32 i64 isize uint u8 u32 u64 usize float f32 f64 str char bool",n="Copy Send Sized Sync Drop Fn FnMut FnOnce drop Box ToOwned Clone PartialEq PartialOrd Eq Ord AsRef AsMut Into From Default Iterator Extend IntoIterator DoubleEndedIterator ExactSizeIterator Option Result SliceConcatExt String ToString Vec assert! assert_eq! bitflags! bytes! cfg! col! concat! concat_idents! debug_assert! debug_assert_eq! env! panic! file! format! format_args! include_bin! include_str! line! local_data_key! module_path! option_env! print! println! select! stringify! try! unimplemented! unreachable! vec! write! writeln! macro_rules!";return{aliases:["rs"],k:{keyword:i,literal:"true false Some None Ok Err",built_in:n},l:e.IR+"!?",i:""}]}});hljs.registerLanguage("gradle",function(e){return{cI:!0,k:{keyword:"task project allprojects subprojects artifacts buildscript configurations dependencies repositories sourceSets description delete from into include exclude source classpath destinationDir includes options sourceCompatibility targetCompatibility group flatDir doLast doFirst flatten todir fromdir ant def abstract break case catch continue default do else extends final finally for if implements instanceof native new private protected public return static switch synchronized throw throws transient try volatile while strictfp package import false null super this true antlrtask checkstyle codenarc copy boolean byte char class double float int interface long short void compile runTime file fileTree abs any append asList asWritable call collect compareTo count div dump each eachByte eachFile eachLine every find findAll flatten getAt getErr getIn getOut getText grep immutable inject inspect intersect invokeMethods isCase join leftShift minus multiply newInputStream newOutputStream newPrintWriter newReader newWriter next plus pop power previous print println push putAt read readBytes readLines reverse reverseEach round size sort splitEachLine step subMap times toInteger toList tokenize upto waitForOrKill withPrintWriter withReader withStream withWriter withWriterAppend write writeLine"},c:[e.CLCM,e.CBCM,e.ASM,e.QSM,e.NM,e.RM]}});hljs.registerLanguage("golo",function(e){return{k:{keyword:"println readln print import module function local return let var while for foreach times in case when match with break continue augment augmentation each find filter reduce if then else otherwise try catch finally raise throw orIfNull DynamicObject|10 DynamicVariable struct Observable map set vector list array",literal:"true false null"},c:[e.HCM,e.QSM,e.CNM,{cN:"meta",b:"@[A-Za-z]+"}]}});hljs.registerLanguage("vala",function(t){return{k:{keyword:"char uchar unichar int uint long ulong short ushort int8 int16 int32 int64 uint8 uint16 uint32 uint64 float double bool struct enum string void weak unowned owned async signal static abstract interface override virtual delegate if while do for foreach else switch case break default return try catch public private protected internal using new this get set const stdout stdin stderr var",built_in:"DBus GLib CCode Gee Object Gtk Posix",literal:"false true null"},c:[{cN:"class",bK:"class interface namespace",e:"{",eE:!0,i:"[^,:\\n\\s\\.]",c:[t.UTM]},t.CLCM,t.CBCM,{cN:"string",b:'"""',e:'"""',r:5},t.ASM,t.QSM,t.CNM,{cN:"meta",b:"^#",e:"$",r:2}]}});hljs.registerLanguage("capnproto",function(t){return{aliases:["capnp"],k:{keyword:"struct enum interface union group import using const annotation extends in of on as with from fixed",built_in:"Void Bool Int8 Int16 Int32 Int64 UInt8 UInt16 UInt32 UInt64 Float32 Float64 Text Data AnyPointer AnyStruct Capability List",literal:"true false"},c:[t.QSM,t.NM,t.HCM,{cN:"meta",b:/@0x[\w\d]{16};/,i:/\n/},{cN:"symbol",b:/@\d+\b/},{cN:"class",bK:"struct enum",e:/\{/,i:/\n/,c:[t.inherit(t.TM,{starts:{eW:!0,eE:!0}})]},{cN:"class",bK:"interface",e:/\{/,i:/\n/,c:[t.inherit(t.TM,{starts:{eW:!0,eE:!0}})]}]}});hljs.registerLanguage("parser3",function(r){var e=r.C("{","}",{c:["self"]});return{sL:"xml",r:0,c:[r.C("^#","$"),r.C("\\^rem{","}",{r:10,c:[e]}),{cN:"meta",b:"^@(?:BASE|USE|CLASS|OPTIONS)$",r:10},{cN:"title",b:"@[\\w\\-]+\\[[\\w^;\\-]*\\](?:\\[[\\w^;\\-]*\\])?(?:.*)$"},{cN:"variable",b:"\\$\\{?[\\w\\-\\.\\:]+\\}?"},{cN:"keyword",b:"\\^[\\w\\-\\.\\:]+"},{cN:"number",b:"\\^#[0-9a-fA-F]+"},r.CNM]}});hljs.registerLanguage("1c",function(c){var e="[a-zA-Zа-яА-Я][a-zA-Z0-9_а-яА-Я]*",n="возврат дата для если и или иначе иначеесли исключение конецесли конецпопытки конецпроцедуры конецфункции конеццикла константа не перейти перем перечисление по пока попытка прервать продолжить процедура строка тогда фс функция цикл число экспорт",b="ansitooem oemtoansi ввестивидсубконто ввестидату ввестизначение ввестиперечисление ввестипериод ввестиплансчетов ввестистроку ввестичисло вопрос восстановитьзначение врег выбранныйплансчетов вызватьисключение датагод датамесяц датачисло добавитьмесяц завершитьработусистемы заголовоксистемы записьжурналарегистрации запуститьприложение зафиксироватьтранзакцию значениевстроку значениевстрокувнутр значениевфайл значениеизстроки значениеизстрокивнутр значениеизфайла имякомпьютера имяпользователя каталогвременныхфайлов каталогиб каталогпользователя каталогпрограммы кодсимв командасистемы конгода конецпериодаби конецрассчитанногопериодаби конецстандартногоинтервала конквартала конмесяца коннедели лев лог лог10 макс максимальноеколичествосубконто мин монопольныйрежим названиеинтерфейса названиенабораправ назначитьвид назначитьсчет найти найтипомеченныенаудаление найтиссылки началопериодаби началостандартногоинтервала начатьтранзакцию начгода начквартала начмесяца начнедели номерднягода номерднянедели номернеделигода нрег обработкаожидания окр описаниеошибки основнойжурналрасчетов основнойплансчетов основнойязык открытьформу открытьформумодально отменитьтранзакцию очиститьокносообщений периодстр полноеимяпользователя получитьвремята получитьдатута получитьдокументта получитьзначенияотбора получитьпозициюта получитьпустоезначение получитьта прав праводоступа предупреждение префиксавтонумерации пустаястрока пустоезначение рабочаядаттьпустоезначение рабочаядата разделительстраниц разделительстрок разм разобратьпозициюдокумента рассчитатьрегистрына рассчитатьрегистрыпо сигнал симв символтабуляции создатьобъект сокрл сокрлп сокрп сообщить состояние сохранитьзначение сред статусвозврата стрдлина стрзаменить стрколичествострок стрполучитьстроку стрчисловхождений сформироватьпозициюдокумента счетпокоду текущаядата текущеевремя типзначения типзначениястр удалитьобъекты установитьтана установитьтапо фиксшаблон формат цел шаблон",i={b:'""'},r={cN:"string",b:'"',e:'"|$',c:[i]},t={cN:"string",b:"\\|",e:'"|$',c:[i]};return{cI:!0,l:e,k:{keyword:n,built_in:b},c:[c.CLCM,c.NM,r,t,{cN:"function",b:"(процедура|функция)",e:"$",l:e,k:"процедура функция",c:[{b:"экспорт",eW:!0,l:e,k:"экспорт",c:[c.CLCM]},{cN:"params",b:"\\(",e:"\\)",l:e,k:"знач",c:[r,t]},c.CLCM,c.inherit(c.TM,{b:e})]},{cN:"meta",b:"#",e:"$"},{cN:"number",b:"'\\d{2}\\.\\d{2}\\.(\\d{2}|\\d{4})'"}]}});hljs.registerLanguage("gauss",function(e){var t={keyword:"and bool break call callexe checkinterrupt clear clearg closeall cls comlog compile continue create debug declare delete disable dlibrary dllcall do dos ed edit else elseif enable end endfor endif endp endo errorlog errorlogat expr external fn for format goto gosub graph if keyword let lib library line load loadarray loadexe loadf loadk loadm loadp loads loadx local locate loopnextindex lprint lpwidth lshow matrix msym ndpclex new not open or output outwidth plot plotsym pop prcsn print printdos proc push retp return rndcon rndmod rndmult rndseed run save saveall screen scroll setarray show sparse stop string struct system trace trap threadfor threadendfor threadbegin threadjoin threadstat threadend until use while winprint",built_in:"abs acf aconcat aeye amax amean AmericanBinomCall AmericanBinomCall_Greeks AmericanBinomCall_ImpVol AmericanBinomPut AmericanBinomPut_Greeks AmericanBinomPut_ImpVol AmericanBSCall AmericanBSCall_Greeks AmericanBSCall_ImpVol AmericanBSPut AmericanBSPut_Greeks AmericanBSPut_ImpVol amin amult annotationGetDefaults annotationSetBkd annotationSetFont annotationSetLineColor annotationSetLineStyle annotationSetLineThickness annualTradingDays arccos arcsin areshape arrayalloc arrayindex arrayinit arraytomat asciiload asclabel astd astds asum atan atan2 atranspose axmargin balance band bandchol bandcholsol bandltsol bandrv bandsolpd bar base10 begwind besselj bessely beta box boxcox cdfBeta cdfBetaInv cdfBinomial cdfBinomialInv cdfBvn cdfBvn2 cdfBvn2e cdfCauchy cdfCauchyInv cdfChic cdfChii cdfChinc cdfChincInv cdfExp cdfExpInv cdfFc cdfFnc cdfFncInv cdfGam cdfGenPareto cdfHyperGeo cdfLaplace cdfLaplaceInv cdfLogistic cdfLogisticInv cdfmControlCreate cdfMvn cdfMvn2e cdfMvnce cdfMvne cdfMvt2e cdfMvtce cdfMvte cdfN cdfN2 cdfNc cdfNegBinomial cdfNegBinomialInv cdfNi cdfPoisson cdfPoissonInv cdfRayleigh cdfRayleighInv cdfTc cdfTci cdfTnc cdfTvn cdfWeibull cdfWeibullInv cdir ceil ChangeDir chdir chiBarSquare chol choldn cholsol cholup chrs close code cols colsf combinate combinated complex con cond conj cons ConScore contour conv convertsatostr convertstrtosa corrm corrms corrvc corrx corrxs cos cosh counts countwts crossprd crout croutp csrcol csrlin csvReadM csvReadSA cumprodc cumsumc curve cvtos datacreate datacreatecomplex datalist dataload dataloop dataopen datasave date datestr datestring datestrymd dayinyr dayofweek dbAddDatabase dbClose dbCommit dbCreateQuery dbExecQuery dbGetConnectOptions dbGetDatabaseName dbGetDriverName dbGetDrivers dbGetHostName dbGetLastErrorNum dbGetLastErrorText dbGetNumericalPrecPolicy dbGetPassword dbGetPort dbGetTableHeaders dbGetTables dbGetUserName dbHasFeature dbIsDriverAvailable dbIsOpen dbIsOpenError dbOpen dbQueryBindValue dbQueryClear dbQueryCols dbQueryExecPrepared dbQueryFetchAllM dbQueryFetchAllSA dbQueryFetchOneM dbQueryFetchOneSA dbQueryFinish dbQueryGetBoundValue dbQueryGetBoundValues dbQueryGetField dbQueryGetLastErrorNum dbQueryGetLastErrorText dbQueryGetLastInsertID dbQueryGetLastQuery dbQueryGetPosition dbQueryIsActive dbQueryIsForwardOnly dbQueryIsNull dbQueryIsSelect dbQueryIsValid dbQueryPrepare dbQueryRows dbQuerySeek dbQuerySeekFirst dbQuerySeekLast dbQuerySeekNext dbQuerySeekPrevious dbQuerySetForwardOnly dbRemoveDatabase dbRollback dbSetConnectOptions dbSetDatabaseName dbSetHostName dbSetNumericalPrecPolicy dbSetPort dbSetUserName dbTransaction DeleteFile delif delrows denseToSp denseToSpRE denToZero design det detl dfft dffti diag diagrv digamma doswin DOSWinCloseall DOSWinOpen dotfeq dotfeqmt dotfge dotfgemt dotfgt dotfgtmt dotfle dotflemt dotflt dotfltmt dotfne dotfnemt draw drop dsCreate dstat dstatmt dstatmtControlCreate dtdate dtday dttime dttodtv dttostr dttoutc dtvnormal dtvtodt dtvtoutc dummy dummybr dummydn eig eigh eighv eigv elapsedTradingDays endwind envget eof eqSolve eqSolvemt eqSolvemtControlCreate eqSolvemtOutCreate eqSolveset erf erfc erfccplx erfcplx error etdays ethsec etstr EuropeanBinomCall EuropeanBinomCall_Greeks EuropeanBinomCall_ImpVol EuropeanBinomPut EuropeanBinomPut_Greeks EuropeanBinomPut_ImpVol EuropeanBSCall EuropeanBSCall_Greeks EuropeanBSCall_ImpVol EuropeanBSPut EuropeanBSPut_Greeks EuropeanBSPut_ImpVol exctsmpl exec execbg exp extern eye fcheckerr fclearerr feq feqmt fflush fft ffti fftm fftmi fftn fge fgemt fgets fgetsa fgetsat fgetst fgt fgtmt fileinfo filesa fle flemt floor flt fltmt fmod fne fnemt fonts fopen formatcv formatnv fputs fputst fseek fstrerror ftell ftocv ftos ftostrC gamma gammacplx gammaii gausset gdaAppend gdaCreate gdaDStat gdaDStatMat gdaGetIndex gdaGetName gdaGetNames gdaGetOrders gdaGetType gdaGetTypes gdaGetVarInfo gdaIsCplx gdaLoad gdaPack gdaRead gdaReadByIndex gdaReadSome gdaReadSparse gdaReadStruct gdaReportVarInfo gdaSave gdaUpdate gdaUpdateAndPack gdaVars gdaWrite gdaWrite32 gdaWriteSome getarray getdims getf getGAUSShome getmatrix getmatrix4D getname getnamef getNextTradingDay getNextWeekDay getnr getorders getpath getPreviousTradingDay getPreviousWeekDay getRow getscalar3D getscalar4D getTrRow getwind glm gradcplx gradMT gradMTm gradMTT gradMTTm gradp graphprt graphset hasimag header headermt hess hessMT hessMTg hessMTgw hessMTm hessMTmw hessMTT hessMTTg hessMTTgw hessMTTm hessMTw hessp hist histf histp hsec imag indcv indexcat indices indices2 indicesf indicesfn indnv indsav indx integrate1d integrateControlCreate intgrat2 intgrat3 inthp1 inthp2 inthp3 inthp4 inthpControlCreate intquad1 intquad2 intquad3 intrleav intrleavsa intrsect intsimp inv invpd invswp iscplx iscplxf isden isinfnanmiss ismiss key keyav keyw lag lag1 lagn lapEighb lapEighi lapEighvb lapEighvi lapgEig lapgEigh lapgEighv lapgEigv lapgSchur lapgSvdcst lapgSvds lapgSvdst lapSvdcusv lapSvds lapSvdusv ldlp ldlsol linSolve listwise ln lncdfbvn lncdfbvn2 lncdfmvn lncdfn lncdfn2 lncdfnc lnfact lngammacplx lnpdfmvn lnpdfmvt lnpdfn lnpdft loadd loadstruct loadwind loess loessmt loessmtControlCreate log loglog logx logy lower lowmat lowmat1 ltrisol lu lusol machEpsilon make makevars makewind margin matalloc matinit mattoarray maxbytes maxc maxindc maxv maxvec mbesselei mbesselei0 mbesselei1 mbesseli mbesseli0 mbesseli1 meanc median mergeby mergevar minc minindc minv miss missex missrv moment momentd movingave movingaveExpwgt movingaveWgt nextindex nextn nextnevn nextwind ntos null null1 numCombinations ols olsmt olsmtControlCreate olsqr olsqr2 olsqrmt ones optn optnevn orth outtyp pacf packedToSp packr parse pause pdfCauchy pdfChi pdfExp pdfGenPareto pdfHyperGeo pdfLaplace pdfLogistic pdfn pdfPoisson pdfRayleigh pdfWeibull pi pinv pinvmt plotAddArrow plotAddBar plotAddBox plotAddHist plotAddHistF plotAddHistP plotAddPolar plotAddScatter plotAddShape plotAddTextbox plotAddTS plotAddXY plotArea plotBar plotBox plotClearLayout plotContour plotCustomLayout plotGetDefaults plotHist plotHistF plotHistP plotLayout plotLogLog plotLogX plotLogY plotOpenWindow plotPolar plotSave plotScatter plotSetAxesPen plotSetBar plotSetBarFill plotSetBarStacked plotSetBkdColor plotSetFill plotSetGrid plotSetLegend plotSetLineColor plotSetLineStyle plotSetLineSymbol plotSetLineThickness plotSetNewWindow plotSetTitle plotSetWhichYAxis plotSetXAxisShow plotSetXLabel plotSetXRange plotSetXTicInterval plotSetXTicLabel plotSetYAxisShow plotSetYLabel plotSetYRange plotSetZAxisShow plotSetZLabel plotSurface plotTS plotXY polar polychar polyeval polygamma polyint polymake polymat polymroot polymult polyroot pqgwin previousindex princomp printfm printfmt prodc psi putarray putf putvals pvCreate pvGetIndex pvGetParNames pvGetParVector pvLength pvList pvPack pvPacki pvPackm pvPackmi pvPacks pvPacksi pvPacksm pvPacksmi pvPutParVector pvTest pvUnpack QNewton QNewtonmt QNewtonmtControlCreate QNewtonmtOutCreate QNewtonSet QProg QProgmt QProgmtInCreate qqr qqre qqrep qr qre qrep qrsol qrtsol qtyr qtyre qtyrep quantile quantiled qyr qyre qyrep qz rank rankindx readr real reclassify reclassifyCuts recode recserar recsercp recserrc rerun rescale reshape rets rev rfft rffti rfftip rfftn rfftnp rfftp rndBernoulli rndBeta rndBinomial rndCauchy rndChiSquare rndCon rndCreateState rndExp rndGamma rndGeo rndGumbel rndHyperGeo rndi rndKMbeta rndKMgam rndKMi rndKMn rndKMnb rndKMp rndKMu rndKMvm rndLaplace rndLCbeta rndLCgam rndLCi rndLCn rndLCnb rndLCp rndLCu rndLCvm rndLogNorm rndMTu rndMVn rndMVt rndn rndnb rndNegBinomial rndp rndPoisson rndRayleigh rndStateSkip rndu rndvm rndWeibull rndWishart rotater round rows rowsf rref sampleData satostrC saved saveStruct savewind scale scale3d scalerr scalinfnanmiss scalmiss schtoc schur searchsourcepath seekr select selif seqa seqm setdif setdifsa setvars setvwrmode setwind shell shiftr sin singleindex sinh sleep solpd sortc sortcc sortd sorthc sorthcc sortind sortindc sortmc sortr sortrc spBiconjGradSol spChol spConjGradSol spCreate spDenseSubmat spDiagRvMat spEigv spEye spLDL spline spLU spNumNZE spOnes spreadSheetReadM spreadSheetReadSA spreadSheetWrite spScale spSubmat spToDense spTrTDense spTScalar spZeros sqpSolve sqpSolveMT sqpSolveMTControlCreate sqpSolveMTlagrangeCreate sqpSolveMToutCreate sqpSolveSet sqrt statements stdc stdsc stocv stof strcombine strindx strlen strput strrindx strsect strsplit strsplitPad strtodt strtof strtofcplx strtriml strtrimr strtrunc strtruncl strtruncpad strtruncr submat subscat substute subvec sumc sumr surface svd svd1 svd2 svdcusv svds svdusv sysstate tab tan tanh tempname threadBegin threadEnd threadEndFor threadFor threadJoin threadStat time timedt timestr timeutc title tkf2eps tkf2ps tocart todaydt toeplitz token topolar trapchk trigamma trimr trunc type typecv typef union unionsa uniqindx uniqindxsa unique uniquesa upmat upmat1 upper utctodt utctodtv utrisol vals varCovMS varCovXS varget vargetl varmall varmares varput varputl vartypef vcm vcms vcx vcxs vec vech vecr vector vget view viewxyz vlist vnamecv volume vput vread vtypecv wait waitc walkindex where window writer xlabel xlsGetSheetCount xlsGetSheetSize xlsGetSheetTypes xlsMakeRange xlsReadM xlsReadSA xlsWrite xlsWriteM xlsWriteSA xpnd xtics xy xyz ylabel ytics zeros zeta zlabel ztics",literal:"DB_AFTER_LAST_ROW DB_ALL_TABLES DB_BATCH_OPERATIONS DB_BEFORE_FIRST_ROW DB_BLOB DB_EVENT_NOTIFICATIONS DB_FINISH_QUERY DB_HIGH_PRECISION DB_LAST_INSERT_ID DB_LOW_PRECISION_DOUBLE DB_LOW_PRECISION_INT32 DB_LOW_PRECISION_INT64 DB_LOW_PRECISION_NUMBERS DB_MULTIPLE_RESULT_SETS DB_NAMED_PLACEHOLDERS DB_POSITIONAL_PLACEHOLDERS DB_PREPARED_QUERIES DB_QUERY_SIZE DB_SIMPLE_LOCKING DB_SYSTEM_TABLES DB_TABLES DB_TRANSACTIONS DB_UNICODE DB_VIEWS"},a={cN:"meta",b:"#",e:"$",k:{"meta-keyword":"define definecs|10 undef ifdef ifndef iflight ifdllcall ifmac ifos2win ifunix else endif lineson linesoff srcfile srcline"},c:[{b:/\\\n/,r:0},{bK:"include",e:"$",k:{"meta-keyword":"include"},c:[{cN:"meta-string",b:'"',e:'"',i:"\\n"}]},e.CLCM,e.CBCM]},r=e.UIR+"\\s*\\(?",o=[{cN:"params",b:/\(/,e:/\)/,k:t,r:0,c:[e.CNM,e.CLCM,e.CBCM]}];return{aliases:["gss"],cI:!0,k:t,i:"(\\{[%#]|[%#]\\})",c:[e.CNM,e.CLCM,e.CBCM,e.C("@","@"),a,{cN:"string",b:'"',e:'"',c:[e.BE]},{cN:"function",bK:"proc keyword",e:";",eE:!0,k:t,c:[{b:r,rB:!0,c:[e.UTM],r:0},e.CNM,e.CLCM,e.CBCM,a].concat(o)},{cN:"function",bK:"fn",e:";",eE:!0,k:t,c:[{b:r+e.IR+"\\)?\\s*\\=\\s*",rB:!0,c:[e.UTM],r:0},e.CNM,e.CLCM,e.CBCM].concat(o)},{cN:"function",b:"\\bexternal (proc|keyword|fn)\\s+",e:";",eE:!0,k:t,c:[{b:r,rB:!0,c:[e.UTM],r:0},e.CLCM,e.CBCM]},{cN:"function",b:"\\bexternal (matrix|string|array|sparse matrix|struct "+e.IR+")\\s+",e:";",eE:!0,k:t,c:[e.CLCM,e.CBCM]}]}});hljs.registerLanguage("haskell",function(e){var i={v:[e.C("--","$"),e.C("{-","-}",{c:["self"]})]},a={cN:"meta",b:"{-#",e:"#-}"},l={cN:"meta",b:"^#",e:"$"},c={cN:"type",b:"\\b[A-Z][\\w']*",r:0},n={b:"\\(",e:"\\)",i:'"',c:[a,l,{cN:"type",b:"\\b[A-Z][\\w]*(\\((\\.\\.|,|\\w+)\\))?"},e.inherit(e.TM,{b:"[_a-z][\\w']*"}),i]},s={b:"{",e:"}",c:n.c};return{aliases:["hs"],k:"let in if then else case of where do module import hiding qualified type data newtype deriving class instance as default infix infixl infixr foreign export ccall stdcall cplusplus jvm dotnet safe unsafe family forall mdo proc rec",c:[{bK:"module",e:"where",k:"module where",c:[n,i],i:"\\W\\.|;"},{b:"\\bimport\\b",e:"$",k:"import qualified as hiding",c:[n,i],i:"\\W\\.|;"},{cN:"class",b:"^(\\s*)?(class|instance)\\b",e:"where",k:"class family instance where",c:[c,n,i]},{cN:"class",b:"\\b(data|(new)?type)\\b",e:"$",k:"data family type newtype deriving",c:[a,c,n,s,i]},{bK:"default",e:"$",c:[c,n,i]},{bK:"infix infixl infixr",e:"$",c:[e.CNM,i]},{b:"\\bforeign\\b",e:"$",k:"foreign import export ccall stdcall cplusplus jvm dotnet safe unsafe",c:[c,e.QSM,i]},{cN:"meta",b:"#!\\/usr\\/bin\\/env runhaskell",e:"$"},a,l,e.QSM,e.CNM,c,e.inherit(e.TM,{b:"^[_a-z][\\w']*"}),i,{b:"->|<-"}]}});hljs.registerLanguage("clojure",function(e){var t={"builtin-name":"def defonce cond apply if-not if-let if not not= = < > <= >= == + / * - rem quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last drop-while while intern condp case reduced cycle split-at split-with repeat replicate iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter monitor-exit defmacro defn defn- macroexpand macroexpand-1 for dosync and or when when-not when-let comp juxt partial sequence memoize constantly complement identity assert peek pop doto proxy defstruct first rest cons defprotocol cast coll deftype defrecord last butlast sigs reify second ffirst fnext nfirst nnext defmulti defmethod meta with-meta ns in-ns create-ns import refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! assoc! dissoc! pop! disj! use class type num float double short byte boolean bigint biginteger bigdec print-method print-dup throw-if printf format load compile get-in update-in pr pr-on newline flush read slurp read-line subvec with-open memfn time re-find re-groups rand-int rand mod locking assert-valid-fdecl alias resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! new next conj set! to-array future future-call into-array aset gen-class reduce map filter find empty hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize"},r="a-zA-Z_\\-!.?+*=<>&#'",n="["+r+"]["+r+"0-9/;:]*",a="[-+]?\\d+(\\.\\d+)?",o={b:n,r:0},s={cN:"number",b:a,r:0},i=e.inherit(e.QSM,{i:null}),c=e.C(";","$",{r:0}),d={cN:"literal",b:/\b(true|false|nil)\b/},l={b:"[\\[\\{]",e:"[\\]\\}]"},m={cN:"comment",b:"\\^"+n},p=e.C("\\^\\{","\\}"),u={cN:"symbol",b:"[:]{1,2}"+n},f={b:"\\(",e:"\\)"},h={eW:!0,r:0},y={k:t,l:n,cN:"name",b:n,starts:h},b=[f,i,m,p,c,u,l,s,d,o];return f.c=[e.C("comment",""),y,h],h.c=b,l.c=b,{aliases:["clj"],i:/\S/,c:[f,i,m,p,c,u,l,s,d]}});hljs.registerLanguage("clojure-repl",function(e){return{c:[{cN:"meta",b:/^([\w.-]+|\s*#_)=>/,starts:{e:/$/,sL:"clojure"}}]}});hljs.registerLanguage("python",function(e){var r={cN:"meta",b:/^(>>>|\.\.\.) /},b={cN:"string",c:[e.BE],v:[{b:/(u|b)?r?'''/,e:/'''/,c:[r],r:10},{b:/(u|b)?r?"""/,e:/"""/,c:[r],r:10},{b:/(u|r|ur)'/,e:/'/,r:10},{b:/(u|r|ur)"/,e:/"/,r:10},{b:/(b|br)'/,e:/'/},{b:/(b|br)"/,e:/"/},e.ASM,e.QSM]},a={cN:"number",r:0,v:[{b:e.BNR+"[lLjJ]?"},{b:"\\b(0o[0-7]+)[lLjJ]?"},{b:e.CNR+"[lLjJ]?"}]},l={cN:"params",b:/\(/,e:/\)/,c:["self",r,a,b]};return{aliases:["py","gyp"],k:{keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda async await nonlocal|10 None True False",built_in:"Ellipsis NotImplemented"},i:/(<\/|->|\?)/,c:[r,a,b,e.HCM,{v:[{cN:"function",bK:"def",r:10},{cN:"class",bK:"class"}],e:/:/,i:/[${=;\n,]/,c:[e.UTM,l,{b:/->/,eW:!0,k:"None"}]},{cN:"meta",b:/^[\t ]*@/,e:/$/},{b:/\b(print|exec)\(/}]}});hljs.registerLanguage("lasso",function(e){var r="[a-zA-Z_][\\w.]*",a="<\\?(lasso(script)?|=)",t="\\]|\\?>",n={literal:"true false none minimal full all void and or not bw nbw ew new cn ncn lt lte gt gte eq neq rx nrx ft",built_in:"array date decimal duration integer map pair string tag xml null boolean bytes keyword list locale queue set stack staticarray local var variable global data self inherited currentcapture givenblock",keyword:"cache database_names database_schemanames database_tablenames define_tag define_type email_batch encode_set html_comment handle handle_error header if inline iterate ljax_target link link_currentaction link_currentgroup link_currentrecord link_detail link_firstgroup link_firstrecord link_lastgroup link_lastrecord link_nextgroup link_nextrecord link_prevgroup link_prevrecord log loop namespace_using output_none portal private protect records referer referrer repeating resultset rows search_args search_arguments select sort_args sort_arguments thread_atomic value_list while abort case else fail_if fail_ifnot fail if_empty if_false if_null if_true loop_abort loop_continue loop_count params params_up return return_value run_children soap_definetag soap_lastrequest soap_lastresponse tag_name ascending average by define descending do equals frozen group handle_failure import in into join let match max min on order parent protected provide public require returnhome skip split_thread sum take thread to trait type where with yield yieldhome"},i=e.C("",{r:0}),s={cN:"meta",b:"\\[noprocess\\]",starts:{e:"\\[/noprocess\\]",rE:!0,c:[i]}},l={cN:"meta",b:"\\[/noprocess|"+a},o={cN:"symbol",b:"'"+r+"'"},c=[e.CLCM,e.CBCM,e.inherit(e.CNM,{b:e.CNR+"|(-?infinity|NaN)\\b"}),e.inherit(e.ASM,{i:null}),e.inherit(e.QSM,{i:null}),{cN:"string",b:"`",e:"`"},{v:[{b:"[#$]"+r},{b:"#",e:"\\d+",i:"\\W"}]},{cN:"type",b:"::\\s*",e:r,i:"\\W"},{cN:"params",v:[{b:"-(?!infinity)"+r,r:0},{b:"(\\.\\.\\.)"}]},{b:/(->|\.)\s*/,r:0,c:[o]},{cN:"class",bK:"define",rE:!0,e:"\\(|=>",c:[e.inherit(e.TM,{b:r+"(=(?!>))?|[-+*/%](?!>)"})]}];return{aliases:["ls","lassoscript"],cI:!0,l:r+"|&[lg]t;",k:n,c:[{cN:"meta",b:t,r:0,starts:{e:"\\[|"+a,rE:!0,r:0,c:[i]}},s,l,{cN:"meta",b:"\\[no_square_brackets",starts:{e:"\\[/no_square_brackets\\]",l:r+"|&[lg]t;",k:n,c:[{cN:"meta",b:t,r:0,starts:{e:"\\[noprocess\\]|"+a,rE:!0,c:[i]}},s,l].concat(c)}},{cN:"meta",b:"\\[",r:0},{cN:"meta",b:"^#!",e:"lasso9$",r:10}].concat(c)}});hljs.registerLanguage("django",function(e){var t={b:/\|[A-Za-z]+:?/,k:{name:"truncatewords removetags linebreaksbr yesno get_digit timesince random striptags filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort dictsortreversed default_if_none pluralize lower join center default truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize localtime utc timezone"},c:[e.QSM,e.ASM]};return{aliases:["jinja"],cI:!0,sL:"xml",c:[e.C(/\{%\s*comment\s*%}/,/\{%\s*endcomment\s*%}/),e.C(/\{#/,/#}/),{cN:"template-tag",b:/\{%/,e:/%}/,c:[{cN:"name",b:/\w+/,k:{name:"comment endcomment load templatetag ifchanged endifchanged if endif firstof for endfor ifnotequal endifnotequal widthratio extends include spaceless endspaceless regroup ifequal endifequal ssi now with cycle url filter endfilter debug block endblock else autoescape endautoescape csrf_token empty elif endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix plural get_current_language language get_available_languages get_current_language_bidi get_language_info get_language_info_list localize endlocalize localtime endlocaltime timezone endtimezone get_current_timezone verbatim"},starts:{eW:!0,k:"in by as",c:[t],r:0}}]},{cN:"template-variable",b:/\{\{/,e:/}}/,c:[t]}]}});hljs.registerLanguage("sqf",function(e){var t=e.getLanguage("cpp").exports,a={cN:"string",v:[{b:'"',e:'"',c:[{b:'""',r:0}]},{b:"'",e:"'",c:[{b:"''",r:0}]}]};return{aliases:["sqf"],cI:!0,k:{keyword:"case catch default do else exit exitWith for forEach from if switch then throw to try while with",built_in:"or plus abs accTime acos action actionKeys actionKeysImages actionKeysNames actionKeysNamesArray actionName activateAddons activatedAddons activateKey addAction addBackpack addBackpackCargo addBackpackCargoGlobal addBackpackGlobal addCamShake addCuratorAddons addCuratorCameraArea addCuratorEditableObjects addCuratorEditingArea addCuratorPoints addEditorObject addEventHandler addGoggles addGroupIcon addHandgunItem addHeadgear addItem addItemCargo addItemCargoGlobal addItemPool addItemToBackpack addItemToUniform addItemToVest addLiveStats addMagazine addMagazine array addMagazineAmmoCargo addMagazineCargo addMagazineCargoGlobal addMagazineGlobal addMagazinePool addMagazines addMagazineTurret addMenu addMenuItem addMissionEventHandler addMPEventHandler addMusicEventHandler addPrimaryWeaponItem addPublicVariableEventHandler addRating addResources addScore addScoreSide addSecondaryWeaponItem addSwitchableUnit addTeamMember addToRemainsCollector addUniform addVehicle addVest addWaypoint addWeapon addWeaponCargo addWeaponCargoGlobal addWeaponGlobal addWeaponPool addWeaponTurret agent agents AGLToASL aimedAtTarget aimPos airDensityRTD airportSide AISFinishHeal alive allControls allCurators allDead allDeadMen allDisplays allGroups allMapMarkers allMines allMissionObjects allow3DMode allowCrewInImmobile allowCuratorLogicIgnoreAreas allowDamage allowDammage allowFileOperations allowFleeing allowGetIn allPlayers allSites allTurrets allUnits allUnitsUAV allVariables ammo and animate animateDoor animationPhase animationState append armoryPoints arrayIntersect asin ASLToAGL ASLToATL assert assignAsCargo assignAsCargoIndex assignAsCommander assignAsDriver assignAsGunner assignAsTurret assignCurator assignedCargo assignedCommander assignedDriver assignedGunner assignedItems assignedTarget assignedTeam assignedVehicle assignedVehicleRole assignItem assignTeam assignToAirport atan atan2 atg ATLToASL attachedObject attachedObjects attachedTo attachObject attachTo attackEnabled backpack backpackCargo backpackContainer backpackItems backpackMagazines backpackSpaceFor behaviour benchmark binocular blufor boundingBox boundingBoxReal boundingCenter breakOut breakTo briefingName buildingExit buildingPos buttonAction buttonSetAction cadetMode call callExtension camCommand camCommit camCommitPrepared camCommitted camConstuctionSetParams camCreate camDestroy cameraEffect cameraEffectEnableHUD cameraInterest cameraOn cameraView campaignConfigFile camPreload camPreloaded camPrepareBank camPrepareDir camPrepareDive camPrepareFocus camPrepareFov camPrepareFovRange camPreparePos camPrepareRelPos camPrepareTarget camSetBank camSetDir camSetDive camSetFocus camSetFov camSetFovRange camSetPos camSetRelPos camSetTarget camTarget camUseNVG canAdd canAddItemToBackpack canAddItemToUniform canAddItemToVest cancelSimpleTaskDestination canFire canMove canSlingLoad canStand canUnloadInCombat captive captiveNum cbChecked cbSetChecked ceil cheatsEnabled checkAIFeature civilian className clearAllItemsFromBackpack clearBackpackCargo clearBackpackCargoGlobal clearGroupIcons clearItemCargo clearItemCargoGlobal clearItemPool clearMagazineCargo clearMagazineCargoGlobal clearMagazinePool clearOverlay clearRadio clearWeaponCargo clearWeaponCargoGlobal clearWeaponPool closeDialog closeDisplay closeOverlay collapseObjectTree combatMode commandArtilleryFire commandChat commander commandFire commandFollow commandFSM commandGetOut commandingMenu commandMove commandRadio commandStop commandTarget commandWatch comment commitOverlay compile compileFinal completedFSM composeText configClasses configFile configHierarchy configName configProperties configSourceMod configSourceModList connectTerminalToUAV controlNull controlsGroupCtrl copyFromClipboard copyToClipboard copyWaypoints cos count countEnemy countFriendly countSide countType countUnknown createAgent createCenter createDialog createDiaryLink createDiaryRecord createDiarySubject createDisplay createGearDialog createGroup createGuardedPoint createLocation createMarker createMarkerLocal createMenu createMine createMissionDisplay createSimpleTask createSite createSoundSource createTask createTeam createTrigger createUnit createUnit array createVehicle createVehicle array createVehicleCrew createVehicleLocal crew ctrlActivate ctrlAddEventHandler ctrlAutoScrollDelay ctrlAutoScrollRewind ctrlAutoScrollSpeed ctrlChecked ctrlClassName ctrlCommit ctrlCommitted ctrlCreate ctrlDelete ctrlEnable ctrlEnabled ctrlFade ctrlHTMLLoaded ctrlIDC ctrlIDD ctrlMapAnimAdd ctrlMapAnimClear ctrlMapAnimCommit ctrlMapAnimDone ctrlMapCursor ctrlMapMouseOver ctrlMapScale ctrlMapScreenToWorld ctrlMapWorldToScreen ctrlModel ctrlModelDirAndUp ctrlModelScale ctrlParent ctrlPosition ctrlRemoveAllEventHandlers ctrlRemoveEventHandler ctrlScale ctrlSetActiveColor ctrlSetAutoScrollDelay ctrlSetAutoScrollRewind ctrlSetAutoScrollSpeed ctrlSetBackgroundColor ctrlSetChecked ctrlSetEventHandler ctrlSetFade ctrlSetFocus ctrlSetFont ctrlSetFontH1 ctrlSetFontH1B ctrlSetFontH2 ctrlSetFontH2B ctrlSetFontH3 ctrlSetFontH3B ctrlSetFontH4 ctrlSetFontH4B ctrlSetFontH5 ctrlSetFontH5B ctrlSetFontH6 ctrlSetFontH6B ctrlSetFontHeight ctrlSetFontHeightH1 ctrlSetFontHeightH2 ctrlSetFontHeightH3 ctrlSetFontHeightH4 ctrlSetFontHeightH5 ctrlSetFontHeightH6 ctrlSetFontP ctrlSetFontPB ctrlSetForegroundColor ctrlSetModel ctrlSetModelDirAndUp ctrlSetModelScale ctrlSetPosition ctrlSetScale ctrlSetStructuredText ctrlSetText ctrlSetTextColor ctrlSetTooltip ctrlSetTooltipColorBox ctrlSetTooltipColorShade ctrlSetTooltipColorText ctrlShow ctrlShown ctrlText ctrlTextHeight ctrlType ctrlVisible curatorAddons curatorCamera curatorCameraArea curatorCameraAreaCeiling curatorCoef curatorEditableObjects curatorEditingArea curatorEditingAreaType curatorMouseOver curatorPoints curatorRegisteredObjects curatorSelected curatorWaypointCost currentChannel currentCommand currentMagazine currentMagazineDetail currentMagazineDetailTurret currentMagazineTurret currentMuzzle currentNamespace currentTask currentTasks currentThrowable currentVisionMode currentWaypoint currentWeapon currentWeaponMode currentWeaponTurret currentZeroing cursorTarget customChat customRadio cutFadeOut cutObj cutRsc cutText damage date dateToNumber daytime deActivateKey debriefingText debugFSM debugLog deg deleteAt deleteCenter deleteCollection deleteEditorObject deleteGroup deleteIdentity deleteLocation deleteMarker deleteMarkerLocal deleteRange deleteResources deleteSite deleteStatus deleteTeam deleteVehicle deleteVehicleCrew deleteWaypoint detach detectedMines diag activeMissionFSMs diag activeSQFScripts diag activeSQSScripts diag captureFrame diag captureSlowFrame diag fps diag fpsMin diag frameNo diag log diag logSlowFrame diag tickTime dialog diarySubjectExists didJIP didJIPOwner difficulty difficultyEnabled difficultyEnabledRTD direction directSay disableAI disableCollisionWith disableConversation disableDebriefingStats disableSerialization disableTIEquipment disableUAVConnectability disableUserInput displayAddEventHandler displayCtrl displayNull displayRemoveAllEventHandlers displayRemoveEventHandler displaySetEventHandler dissolveTeam distance distance2D distanceSqr distributionRegion doArtilleryFire doFire doFollow doFSM doGetOut doMove doorPhase doStop doTarget doWatch drawArrow drawEllipse drawIcon drawIcon3D drawLine drawLine3D drawLink drawLocation drawRectangle driver drop east echo editObject editorSetEventHandler effectiveCommander emptyPositions enableAI enableAIFeature enableAttack enableCamShake enableCaustics enableCollisionWith enableCopilot enableDebriefingStats enableDiagLegend enableEndDialog enableEngineArtillery enableEnvironment enableFatigue enableGunLights enableIRLasers enableMimics enablePersonTurret enableRadio enableReload enableRopeAttach enableSatNormalOnDetail enableSaving enableSentences enableSimulation enableSimulationGlobal enableTeamSwitch enableUAVConnectability enableUAVWaypoints endLoadingScreen endMission engineOn enginesIsOnRTD enginesRpmRTD enginesTorqueRTD entities estimatedEndServerTime estimatedTimeLeft evalObjectArgument everyBackpack everyContainer exec execEditorScript execFSM execVM exp expectedDestination eyeDirection eyePos face faction fadeMusic fadeRadio fadeSound fadeSpeech failMission fillWeaponsFromPool find findCover findDisplay findEditorObject findEmptyPosition findEmptyPositionReady findNearestEnemy finishMissionInit finite fire fireAtTarget firstBackpack flag flagOwner fleeing floor flyInHeight fog fogForecast fogParams forceAddUniform forceEnd forceMap forceRespawn forceSpeed forceWalk forceWeaponFire forceWeatherChange forEachMember forEachMemberAgent forEachMemberTeam format formation formationDirection formationLeader formationMembers formationPosition formationTask formatText formLeader freeLook fromEditor fuel fullCrew gearSlotAmmoCount gearSlotData getAllHitPointsDamage getAmmoCargo getArray getArtilleryAmmo getArtilleryComputerSettings getArtilleryETA getAssignedCuratorLogic getAssignedCuratorUnit getBackpackCargo getBleedingRemaining getBurningValue getCargoIndex getCenterOfMass getClientState getConnectedUAV getDammage getDescription getDir getDirVisual getDLCs getEditorCamera getEditorMode getEditorObjectScope getElevationOffset getFatigue getFriend getFSMVariable getFuelCargo getGroupIcon getGroupIconParams getGroupIcons getHideFrom getHit getHitIndex getHitPointDamage getItemCargo getMagazineCargo getMarkerColor getMarkerPos getMarkerSize getMarkerType getMass getModelInfo getNumber getObjectArgument getObjectChildren getObjectDLC getObjectMaterials getObjectProxy getObjectTextures getObjectType getObjectViewDistance getOxygenRemaining getPersonUsedDLCs getPlayerChannel getPlayerUID getPos getPosASL getPosASLVisual getPosASLW getPosATL getPosATLVisual getPosVisual getPosWorld getRepairCargo getResolution getShadowDistance getSlingLoad getSpeed getSuppression getTerrainHeightASL getText getVariable getWeaponCargo getWPPos glanceAt globalChat globalRadio goggles goto group groupChat groupFromNetId groupIconSelectable groupIconsVisible groupId groupOwner groupRadio groupSelectedUnits groupSelectUnit grpNull gunner gusts halt handgunItems handgunMagazine handgunWeapon handsHit hasInterface hasWeapon hcAllGroups hcGroupParams hcLeader hcRemoveAllGroups hcRemoveGroup hcSelected hcSelectGroup hcSetGroup hcShowBar hcShownBar headgear hideBody hideObject hideObjectGlobal hint hintC hintCadet hintSilent hmd hostMission htmlLoad HUDMovementLevels humidity image importAllGroups importance in incapacitatedState independent inflame inflamed inGameUISetEventHandler inheritsFrom initAmbientLife inputAction inRangeOfArtillery insertEditorObject intersect isAbleToBreathe isAgent isArray isAutoHoverOn isAutonomous isAutotest isBleeding isBurning isClass isCollisionLightOn isCopilotEnabled isDedicated isDLCAvailable isEngineOn isEqualTo isFlashlightOn isFlatEmpty isForcedWalk isFormationLeader isHidden isInRemainsCollector isInstructorFigureEnabled isIRLaserOn isKeyActive isKindOf isLightOn isLocalized isManualFire isMarkedForCollection isMultiplayer isNil isNull isNumber isObjectHidden isObjectRTD isOnRoad isPipEnabled isPlayer isRealTime isServer isShowing3DIcons isSteamMission isStreamFriendlyUIEnabled isText isTouchingGround isTurnedOut isTutHintsEnabled isUAVConnectable isUAVConnected isUniformAllowed isWalking isWeaponDeployed isWeaponRested itemCargo items itemsWithMagazines join joinAs joinAsSilent joinSilent joinString kbAddDatabase kbAddDatabaseTargets kbAddTopic kbHasTopic kbReact kbRemoveTopic kbTell kbWasSaid keyImage keyName knowsAbout land landAt landResult language laserTarget lbAdd lbClear lbColor lbCurSel lbData lbDelete lbIsSelected lbPicture lbSelection lbSetColor lbSetCurSel lbSetData lbSetPicture lbSetPictureColor lbSetPictureColorDisabled lbSetPictureColorSelected lbSetSelectColor lbSetSelectColorRight lbSetSelected lbSetTooltip lbSetValue lbSize lbSort lbSortByValue lbText lbValue leader leaderboardDeInit leaderboardGetRows leaderboardInit leaveVehicle libraryCredits libraryDisclaimers lifeState lightAttachObject lightDetachObject lightIsOn lightnings limitSpeed linearConversion lineBreak lineIntersects lineIntersectsObjs lineIntersectsSurfaces lineIntersectsWith linkItem list listObjects ln lnbAddArray lnbAddColumn lnbAddRow lnbClear lnbColor lnbCurSelRow lnbData lnbDeleteColumn lnbDeleteRow lnbGetColumnsPosition lnbPicture lnbSetColor lnbSetColumnsPos lnbSetCurSelRow lnbSetData lnbSetPicture lnbSetText lnbSetValue lnbSize lnbText lnbValue load loadAbs loadBackpack loadFile loadGame loadIdentity loadMagazine loadOverlay loadStatus loadUniform loadVest local localize locationNull locationPosition lock lockCameraTo lockCargo lockDriver locked lockedCargo lockedDriver lockedTurret lockTurret lockWP log logEntities lookAt lookAtPos magazineCargo magazines magazinesAllTurrets magazinesAmmo magazinesAmmoCargo magazinesAmmoFull magazinesDetail magazinesDetailBackpack magazinesDetailUniform magazinesDetailVest magazinesTurret magazineTurretAmmo mapAnimAdd mapAnimClear mapAnimCommit mapAnimDone mapCenterOnCamera mapGridPosition markAsFinishedOnSteam markerAlpha markerBrush markerColor markerDir markerPos markerShape markerSize markerText markerType max members min mineActive mineDetectedBy missionConfigFile missionName missionNamespace missionStart mod modelToWorld modelToWorldVisual moonIntensity morale move moveInAny moveInCargo moveInCommander moveInDriver moveInGunner moveInTurret moveObjectToEnd moveOut moveTime moveTo moveToCompleted moveToFailed musicVolume name name location nameSound nearEntities nearestBuilding nearestLocation nearestLocations nearestLocationWithDubbing nearestObject nearestObjects nearObjects nearObjectsReady nearRoads nearSupplies nearTargets needReload netId netObjNull newOverlay nextMenuItemIndex nextWeatherChange nMenuItems not numberToDate objectCurators objectFromNetId objectParent objNull objStatus onBriefingGroup onBriefingNotes onBriefingPlan onBriefingTeamSwitch onCommandModeChanged onDoubleClick onEachFrame onGroupIconClick onGroupIconOverEnter onGroupIconOverLeave onHCGroupSelectionChanged onMapSingleClick onPlayerConnected onPlayerDisconnected onPreloadFinished onPreloadStarted onShowNewObject onTeamSwitch openCuratorInterface openMap openYoutubeVideo opfor or orderGetIn overcast overcastForecast owner param params parseNumber parseText parsingNamespace particlesQuality pi pickWeaponPool pitch playableSlotsNumber playableUnits playAction playActionNow player playerRespawnTime playerSide playersNumber playGesture playMission playMove playMoveNow playMusic playScriptedMission playSound playSound3D position positionCameraToWorld posScreenToWorld posWorldToScreen ppEffectAdjust ppEffectCommit ppEffectCommitted ppEffectCreate ppEffectDestroy ppEffectEnable ppEffectForceInNVG precision preloadCamera preloadObject preloadSound preloadTitleObj preloadTitleRsc preprocessFile preprocessFileLineNumbers primaryWeapon primaryWeaponItems primaryWeaponMagazine priority private processDiaryLink productVersion profileName profileNamespace profileNameSteam progressLoadingScreen progressPosition progressSetPosition publicVariable publicVariableClient publicVariableServer pushBack putWeaponPool queryItemsPool queryMagazinePool queryWeaponPool rad radioChannelAdd radioChannelCreate radioChannelRemove radioChannelSetCallSign radioChannelSetLabel radioVolume rain rainbow random rank rankId rating rectangular registeredTasks registerTask reload reloadEnabled remoteControl remoteExec remoteExecCall removeAction removeAllActions removeAllAssignedItems removeAllContainers removeAllCuratorAddons removeAllCuratorCameraAreas removeAllCuratorEditingAreas removeAllEventHandlers removeAllHandgunItems removeAllItems removeAllItemsWithMagazines removeAllMissionEventHandlers removeAllMPEventHandlers removeAllMusicEventHandlers removeAllPrimaryWeaponItems removeAllWeapons removeBackpack removeBackpackGlobal removeCuratorAddons removeCuratorCameraArea removeCuratorEditableObjects removeCuratorEditingArea removeDrawIcon removeDrawLinks removeEventHandler removeFromRemainsCollector removeGoggles removeGroupIcon removeHandgunItem removeHeadgear removeItem removeItemFromBackpack removeItemFromUniform removeItemFromVest removeItems removeMagazine removeMagazineGlobal removeMagazines removeMagazinesTurret removeMagazineTurret removeMenuItem removeMissionEventHandler removeMPEventHandler removeMusicEventHandler removePrimaryWeaponItem removeSecondaryWeaponItem removeSimpleTask removeSwitchableUnit removeTeamMember removeUniform removeVest removeWeapon removeWeaponGlobal removeWeaponTurret requiredVersion resetCamShake resetSubgroupDirection resistance resize resources respawnVehicle restartEditorCamera reveal revealMine reverse reversedMouseY roadsConnectedTo roleDescription ropeAttachedObjects ropeAttachedTo ropeAttachEnabled ropeAttachTo ropeCreate ropeCut ropeEndPosition ropeLength ropes ropeUnwind ropeUnwound rotorsForcesRTD rotorsRpmRTD round runInitScript safeZoneH safeZoneW safeZoneWAbs safeZoneX safeZoneXAbs safeZoneY saveGame saveIdentity saveJoysticks saveOverlay saveProfileNamespace saveStatus saveVar savingEnabled say say2D say3D scopeName score scoreSide screenToWorld scriptDone scriptName scriptNull scudState secondaryWeapon secondaryWeaponItems secondaryWeaponMagazine select selectBestPlaces selectDiarySubject selectedEditorObjects selectEditorObject selectionPosition selectLeader selectNoPlayer selectPlayer selectWeapon selectWeaponTurret sendAUMessage sendSimpleCommand sendTask sendTaskResult sendUDPMessage serverCommand serverCommandAvailable serverCommandExecutable serverName serverTime set setAccTime setAirportSide setAmmo setAmmoCargo setAperture setApertureNew setArmoryPoints setAttributes setAutonomous setBehaviour setBleedingRemaining setCameraInterest setCamShakeDefParams setCamShakeParams setCamUseTi setCaptive setCenterOfMass setCollisionLight setCombatMode setCompassOscillation setCuratorCameraAreaCeiling setCuratorCoef setCuratorEditingAreaType setCuratorWaypointCost setCurrentChannel setCurrentTask setCurrentWaypoint setDamage setDammage setDate setDebriefingText setDefaultCamera setDestination setDetailMapBlendPars setDir setDirection setDrawIcon setDropInterval setEditorMode setEditorObjectScope setEffectCondition setFace setFaceAnimation setFatigue setFlagOwner setFlagSide setFlagTexture setFog setFog array setFormation setFormationTask setFormDir setFriend setFromEditor setFSMVariable setFuel setFuelCargo setGroupIcon setGroupIconParams setGroupIconsSelectable setGroupIconsVisible setGroupId setGroupIdGlobal setGroupOwner setGusts setHideBehind setHit setHitIndex setHitPointDamage setHorizonParallaxCoef setHUDMovementLevels setIdentity setImportance setLeader setLightAmbient setLightAttenuation setLightBrightness setLightColor setLightDayLight setLightFlareMaxDistance setLightFlareSize setLightIntensity setLightnings setLightUseFlare setLocalWindParams setMagazineTurretAmmo setMarkerAlpha setMarkerAlphaLocal setMarkerBrush setMarkerBrushLocal setMarkerColor setMarkerColorLocal setMarkerDir setMarkerDirLocal setMarkerPos setMarkerPosLocal setMarkerShape setMarkerShapeLocal setMarkerSize setMarkerSizeLocal setMarkerText setMarkerTextLocal setMarkerType setMarkerTypeLocal setMass setMimic setMousePosition setMusicEffect setMusicEventHandler setName setNameSound setObjectArguments setObjectMaterial setObjectProxy setObjectTexture setObjectTextureGlobal setObjectViewDistance setOvercast setOwner setOxygenRemaining setParticleCircle setParticleClass setParticleFire setParticleParams setParticleRandom setPilotLight setPiPEffect setPitch setPlayable setPlayerRespawnTime setPos setPosASL setPosASL2 setPosASLW setPosATL setPosition setPosWorld setRadioMsg setRain setRainbow setRandomLip setRank setRectangular setRepairCargo setShadowDistance setSide setSimpleTaskDescription setSimpleTaskDestination setSimpleTaskTarget setSimulWeatherLayers setSize setSkill setSkill array setSlingLoad setSoundEffect setSpeaker setSpeech setSpeedMode setStatValue setSuppression setSystemOfUnits setTargetAge setTaskResult setTaskState setTerrainGrid setText setTimeMultiplier setTitleEffect setTriggerActivation setTriggerArea setTriggerStatements setTriggerText setTriggerTimeout setTriggerType setType setUnconscious setUnitAbility setUnitPos setUnitPosWeak setUnitRank setUnitRecoilCoefficient setUnloadInCombat setUserActionText setVariable setVectorDir setVectorDirAndUp setVectorUp setVehicleAmmo setVehicleAmmoDef setVehicleArmor setVehicleId setVehicleLock setVehiclePosition setVehicleTiPars setVehicleVarName setVelocity setVelocityTransformation setViewDistance setVisibleIfTreeCollapsed setWaves setWaypointBehaviour setWaypointCombatMode setWaypointCompletionRadius setWaypointDescription setWaypointFormation setWaypointHousePosition setWaypointLoiterRadius setWaypointLoiterType setWaypointName setWaypointPosition setWaypointScript setWaypointSpeed setWaypointStatements setWaypointTimeout setWaypointType setWaypointVisible setWeaponReloadingTime setWind setWindDir setWindForce setWindStr setWPPos show3DIcons showChat showCinemaBorder showCommandingMenu showCompass showCuratorCompass showGPS showHUD showLegend showMap shownArtilleryComputer shownChat shownCompass shownCuratorCompass showNewEditorObject shownGPS shownHUD shownMap shownPad shownRadio shownUAVFeed shownWarrant shownWatch showPad showRadio showSubtitles showUAVFeed showWarrant showWatch showWaypoint side sideChat sideEnemy sideFriendly sideLogic sideRadio sideUnknown simpleTasks simulationEnabled simulCloudDensity simulCloudOcclusion simulInClouds simulWeatherSync sin size sizeOf skill skillFinal skipTime sleep sliderPosition sliderRange sliderSetPosition sliderSetRange sliderSetSpeed sliderSpeed slingLoadAssistantShown soldierMagazines someAmmo sort soundVolume spawn speaker speed speedMode splitString sqrt squadParams stance startLoadingScreen step stop stopped str sunOrMoon supportInfo suppressFor surfaceIsWater surfaceNormal surfaceType swimInDepth switchableUnits switchAction switchCamera switchGesture switchLight switchMove synchronizedObjects synchronizedTriggers synchronizedWaypoints synchronizeObjectsAdd synchronizeObjectsRemove synchronizeTrigger synchronizeWaypoint synchronizeWaypoint trigger systemChat systemOfUnits tan targetKnowledge targetsAggregate targetsQuery taskChildren taskCompleted taskDescription taskDestination taskHint taskNull taskParent taskResult taskState teamMember teamMemberNull teamName teams teamSwitch teamSwitchEnabled teamType terminate terrainIntersect terrainIntersectASL text text location textLog textLogFormat tg time timeMultiplier titleCut titleFadeOut titleObj titleRsc titleText toArray toLower toString toUpper triggerActivated triggerActivation triggerArea triggerAttachedVehicle triggerAttachObject triggerAttachVehicle triggerStatements triggerText triggerTimeout triggerTimeoutCurrent triggerType turretLocal turretOwner turretUnit tvAdd tvClear tvCollapse tvCount tvCurSel tvData tvDelete tvExpand tvPicture tvSetCurSel tvSetData tvSetPicture tvSetPictureColor tvSetTooltip tvSetValue tvSort tvSortByValue tvText tvValue type typeName typeOf UAVControl uiNamespace uiSleep unassignCurator unassignItem unassignTeam unassignVehicle underwater uniform uniformContainer uniformItems uniformMagazines unitAddons unitBackpack unitPos unitReady unitRecoilCoefficient units unitsBelowHeight unlinkItem unlockAchievement unregisterTask updateDrawIcon updateMenuItem updateObjectTree useAudioTimeForMoves vectorAdd vectorCos vectorCrossProduct vectorDiff vectorDir vectorDirVisual vectorDistance vectorDistanceSqr vectorDotProduct vectorFromTo vectorMagnitude vectorMagnitudeSqr vectorMultiply vectorNormalized vectorUp vectorUpVisual vehicle vehicleChat vehicleRadio vehicles vehicleVarName velocity velocityModelSpace verifySignature vest vestContainer vestItems vestMagazines viewDistance visibleCompass visibleGPS visibleMap visiblePosition visiblePositionASL visibleWatch waitUntil waves waypointAttachedObject waypointAttachedVehicle waypointAttachObject waypointAttachVehicle waypointBehaviour waypointCombatMode waypointCompletionRadius waypointDescription waypointFormation waypointHousePosition waypointLoiterRadius waypointLoiterType waypointName waypointPosition waypoints waypointScript waypointsEnabledUAV waypointShow waypointSpeed waypointStatements waypointTimeout waypointTimeoutCurrent waypointType waypointVisible weaponAccessories weaponCargo weaponDirection weaponLowered weapons weaponsItems weaponsItemsCargo weaponState weaponsTurret weightRTD west WFSideText wind windDir windStr wingsForcesRTD worldName worldSize worldToModel worldToModelVisual worldToScreen _forEachIndex _this _x",literal:"true false nil"},c:[e.CLCM,e.CBCM,e.NM,a,t.preprocessor],i:/#/}});hljs.registerLanguage("vim",function(e){return{l:/[!#@\w]+/,k:{keyword:"N|0 P|0 X|0 a|0 ab abc abo al am an|0 ar arga argd arge argdo argg argl argu as au aug aun b|0 bN ba bad bd be bel bf bl bm bn bo bp br brea breaka breakd breakl bro bufdo buffers bun bw c|0 cN cNf ca cabc caddb cad caddf cal cat cb cc ccl cd ce cex cf cfir cgetb cgete cg changes chd che checkt cl cla clo cm cmapc cme cn cnew cnf cno cnorea cnoreme co col colo com comc comp con conf cope cp cpf cq cr cs cst cu cuna cunme cw delm deb debugg delc delf dif diffg diffo diffp diffpu diffs diffthis dig di dl dell dj dli do doautoa dp dr ds dsp e|0 ea ec echoe echoh echom echon el elsei em en endfo endf endt endw ene ex exe exi exu f|0 files filet fin fina fini fir fix fo foldc foldd folddoc foldo for fu go gr grepa gu gv ha helpf helpg helpt hi hid his ia iabc if ij il im imapc ime ino inorea inoreme int is isp iu iuna iunme j|0 ju k|0 keepa kee keepj lN lNf l|0 lad laddb laddf la lan lat lb lc lch lcl lcs le lefta let lex lf lfir lgetb lgete lg lgr lgrepa lh ll lla lli lmak lm lmapc lne lnew lnf ln loadk lo loc lockv lol lope lp lpf lr ls lt lu lua luad luaf lv lvimgrepa lw m|0 ma mak map mapc marks mat me menut mes mk mks mksp mkv mkvie mod mz mzf nbc nb nbs new nm nmapc nme nn nnoreme noa no noh norea noreme norm nu nun nunme ol o|0 om omapc ome on ono onoreme opt ou ounme ow p|0 profd prof pro promptr pc ped pe perld po popu pp pre prev ps pt ptN ptf ptj ptl ptn ptp ptr pts pu pw py3 python3 py3d py3f py pyd pyf quita qa rec red redi redr redraws reg res ret retu rew ri rightb rub rubyd rubyf rund ru rv sN san sa sal sav sb sbN sba sbf sbl sbm sbn sbp sbr scrip scripte scs se setf setg setl sf sfir sh sim sig sil sl sla sm smap smapc sme sn sni sno snor snoreme sor so spelld spe spelli spellr spellu spellw sp spr sre st sta startg startr star stopi stj sts sun sunm sunme sus sv sw sy synti sync tN tabN tabc tabdo tabe tabf tabfir tabl tabm tabnew tabn tabo tabp tabr tabs tab ta tags tc tcld tclf te tf th tj tl tm tn to tp tr try ts tu u|0 undoj undol una unh unl unlo unm unme uns up ve verb vert vim vimgrepa vi viu vie vm vmapc vme vne vn vnoreme vs vu vunme windo w|0 wN wa wh wi winc winp wn wp wq wqa ws wu wv x|0 xa xmapc xm xme xn xnoreme xu xunme y|0 z|0 ~ Next Print append abbreviate abclear aboveleft all amenu anoremenu args argadd argdelete argedit argglobal arglocal argument ascii autocmd augroup aunmenu buffer bNext ball badd bdelete behave belowright bfirst blast bmodified bnext botright bprevious brewind break breakadd breakdel breaklist browse bunload bwipeout change cNext cNfile cabbrev cabclear caddbuffer caddexpr caddfile call catch cbuffer cclose center cexpr cfile cfirst cgetbuffer cgetexpr cgetfile chdir checkpath checktime clist clast close cmap cmapclear cmenu cnext cnewer cnfile cnoremap cnoreabbrev cnoremenu copy colder colorscheme command comclear compiler continue confirm copen cprevious cpfile cquit crewind cscope cstag cunmap cunabbrev cunmenu cwindow delete delmarks debug debuggreedy delcommand delfunction diffupdate diffget diffoff diffpatch diffput diffsplit digraphs display deletel djump dlist doautocmd doautoall deletep drop dsearch dsplit edit earlier echo echoerr echohl echomsg else elseif emenu endif endfor endfunction endtry endwhile enew execute exit exusage file filetype find finally finish first fixdel fold foldclose folddoopen folddoclosed foldopen function global goto grep grepadd gui gvim hardcopy help helpfind helpgrep helptags highlight hide history insert iabbrev iabclear ijump ilist imap imapclear imenu inoremap inoreabbrev inoremenu intro isearch isplit iunmap iunabbrev iunmenu join jumps keepalt keepmarks keepjumps lNext lNfile list laddexpr laddbuffer laddfile last language later lbuffer lcd lchdir lclose lcscope left leftabove lexpr lfile lfirst lgetbuffer lgetexpr lgetfile lgrep lgrepadd lhelpgrep llast llist lmake lmap lmapclear lnext lnewer lnfile lnoremap loadkeymap loadview lockmarks lockvar lolder lopen lprevious lpfile lrewind ltag lunmap luado luafile lvimgrep lvimgrepadd lwindow move mark make mapclear match menu menutranslate messages mkexrc mksession mkspell mkvimrc mkview mode mzscheme mzfile nbclose nbkey nbsart next nmap nmapclear nmenu nnoremap nnoremenu noautocmd noremap nohlsearch noreabbrev noremenu normal number nunmap nunmenu oldfiles open omap omapclear omenu only onoremap onoremenu options ounmap ounmenu ownsyntax print profdel profile promptfind promptrepl pclose pedit perl perldo pop popup ppop preserve previous psearch ptag ptNext ptfirst ptjump ptlast ptnext ptprevious ptrewind ptselect put pwd py3do py3file python pydo pyfile quit quitall qall read recover redo redir redraw redrawstatus registers resize retab return rewind right rightbelow ruby rubydo rubyfile rundo runtime rviminfo substitute sNext sandbox sargument sall saveas sbuffer sbNext sball sbfirst sblast sbmodified sbnext sbprevious sbrewind scriptnames scriptencoding scscope set setfiletype setglobal setlocal sfind sfirst shell simalt sign silent sleep slast smagic smapclear smenu snext sniff snomagic snoremap snoremenu sort source spelldump spellgood spellinfo spellrepall spellundo spellwrong split sprevious srewind stop stag startgreplace startreplace startinsert stopinsert stjump stselect sunhide sunmap sunmenu suspend sview swapname syntax syntime syncbind tNext tabNext tabclose tabedit tabfind tabfirst tablast tabmove tabnext tabonly tabprevious tabrewind tag tcl tcldo tclfile tearoff tfirst throw tjump tlast tmenu tnext topleft tprevious trewind tselect tunmenu undo undojoin undolist unabbreviate unhide unlet unlockvar unmap unmenu unsilent update vglobal version verbose vertical vimgrep vimgrepadd visual viusage view vmap vmapclear vmenu vnew vnoremap vnoremenu vsplit vunmap vunmenu write wNext wall while winsize wincmd winpos wnext wprevious wqall wsverb wundo wviminfo xit xall xmapclear xmap xmenu xnoremap xnoremenu xunmap xunmenu yank",built_in:"synIDtrans atan2 range matcharg did_filetype asin feedkeys xor argv complete_check add getwinposx getqflist getwinposy screencol clearmatches empty extend getcmdpos mzeval garbagecollect setreg ceil sqrt diff_hlID inputsecret get getfperm getpid filewritable shiftwidth max sinh isdirectory synID system inputrestore winline atan visualmode inputlist tabpagewinnr round getregtype mapcheck hasmapto histdel argidx findfile sha256 exists toupper getcmdline taglist string getmatches bufnr strftime winwidth bufexists strtrans tabpagebuflist setcmdpos remote_read printf setloclist getpos getline bufwinnr float2nr len getcmdtype diff_filler luaeval resolve libcallnr foldclosedend reverse filter has_key bufname str2float strlen setline getcharmod setbufvar index searchpos shellescape undofile foldclosed setqflist buflisted strchars str2nr virtcol floor remove undotree remote_expr winheight gettabwinvar reltime cursor tabpagenr finddir localtime acos getloclist search tanh matchend rename gettabvar strdisplaywidth type abs py3eval setwinvar tolower wildmenumode log10 spellsuggest bufloaded synconcealed nextnonblank server2client complete settabwinvar executable input wincol setmatches getftype hlID inputsave searchpair or screenrow line settabvar histadd deepcopy strpart remote_peek and eval getftime submatch screenchar winsaveview matchadd mkdir screenattr getfontname libcall reltimestr getfsize winnr invert pow getbufline byte2line soundfold repeat fnameescape tagfiles sin strwidth spellbadword trunc maparg log lispindent hostname setpos globpath remote_foreground getchar synIDattr fnamemodify cscope_connection stridx winbufnr indent min complete_add nr2char searchpairpos inputdialog values matchlist items hlexists strridx browsedir expand fmod pathshorten line2byte argc count getwinvar glob foldtextresult getreg foreground cosh matchdelete has char2nr simplify histget searchdecl iconv winrestcmd pumvisible writefile foldlevel haslocaldir keys cos matchstr foldtext histnr tan tempname getcwd byteidx getbufvar islocked escape eventhandler remote_send serverlist winrestview synstack pyeval prevnonblank readfile cindent filereadable changenr exp"},i:/;/,c:[e.NM,e.ASM,{cN:"string",b:/"(\\"|\n\\|[^"\n])*"/},e.C('"',"$"),{cN:"variable",b:/[bwtglsav]:[\w\d_]*/},{cN:"function",bK:"function function!",e:"$",r:0,c:[e.TM,{cN:"params",b:"\\(",e:"\\)"}]},{cN:"symbol",b:/<[\w-]+>/}]}});hljs.registerLanguage("irpf90",function(e){var t={cN:"params",b:"\\(",e:"\\)"},n={literal:".False. .True.",keyword:"kind do while private call intrinsic where elsewhere type endtype endmodule endselect endinterface end enddo endif if forall endforall only contains default return stop then public subroutine|10 function program .and. .or. .not. .le. .eq. .ge. .gt. .lt. goto save else use module select case access blank direct exist file fmt form formatted iostat name named nextrec number opened rec recl sequential status unformatted unit continue format pause cycle exit c_null_char c_alert c_backspace c_form_feed flush wait decimal round iomsg synchronous nopass non_overridable pass protected volatile abstract extends import non_intrinsic value deferred generic final enumerator class associate bind enum c_int c_short c_long c_long_long c_signed_char c_size_t c_int8_t c_int16_t c_int32_t c_int64_t c_int_least8_t c_int_least16_t c_int_least32_t c_int_least64_t c_int_fast8_t c_int_fast16_t c_int_fast32_t c_int_fast64_t c_intmax_t C_intptr_t c_float c_double c_long_double c_float_complex c_double_complex c_long_double_complex c_bool c_char c_null_ptr c_null_funptr c_new_line c_carriage_return c_horizontal_tab c_vertical_tab iso_c_binding c_loc c_funloc c_associated c_f_pointer c_ptr c_funptr iso_fortran_env character_storage_size error_unit file_storage_size input_unit iostat_end iostat_eor numeric_storage_size output_unit c_f_procpointer ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode newunit contiguous recursive pad position action delim readwrite eor advance nml interface procedure namelist include sequence elemental pure integer real character complex logical dimension allocatable|10 parameter external implicit|10 none double precision assign intent optional pointer target in out common equivalence data begin_provider &begin_provider end_provider begin_shell end_shell begin_template end_template subst assert touch soft_touch provide no_dep free irp_if irp_else irp_endif irp_write irp_read",built_in:"alog alog10 amax0 amax1 amin0 amin1 amod cabs ccos cexp clog csin csqrt dabs dacos dasin datan datan2 dcos dcosh ddim dexp dint dlog dlog10 dmax1 dmin1 dmod dnint dsign dsin dsinh dsqrt dtan dtanh float iabs idim idint idnint ifix isign max0 max1 min0 min1 sngl algama cdabs cdcos cdexp cdlog cdsin cdsqrt cqabs cqcos cqexp cqlog cqsin cqsqrt dcmplx dconjg derf derfc dfloat dgamma dimag dlgama iqint qabs qacos qasin qatan qatan2 qcmplx qconjg qcos qcosh qdim qerf qerfc qexp qgamma qimag qlgama qlog qlog10 qmax1 qmin1 qmod qnint qsign qsin qsinh qsqrt qtan qtanh abs acos aimag aint anint asin atan atan2 char cmplx conjg cos cosh exp ichar index int log log10 max min nint sign sin sinh sqrt tan tanh print write dim lge lgt lle llt mod nullify allocate deallocate adjustl adjustr all allocated any associated bit_size btest ceiling count cshift date_and_time digits dot_product eoshift epsilon exponent floor fraction huge iand ibclr ibits ibset ieor ior ishft ishftc lbound len_trim matmul maxexponent maxloc maxval merge minexponent minloc minval modulo mvbits nearest pack present product radix random_number random_seed range repeat reshape rrspacing scale scan selected_int_kind selected_real_kind set_exponent shape size spacing spread sum system_clock tiny transpose trim ubound unpack verify achar iachar transfer dble entry dprod cpu_time command_argument_count get_command get_command_argument get_environment_variable is_iostat_end ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode is_iostat_eor move_alloc new_line selected_char_kind same_type_as extends_type_ofacosh asinh atanh bessel_j0 bessel_j1 bessel_jn bessel_y0 bessel_y1 bessel_yn erf erfc erfc_scaled gamma log_gamma hypot norm2 atomic_define atomic_ref execute_command_line leadz trailz storage_size merge_bits bge bgt ble blt dshiftl dshiftr findloc iall iany iparity image_index lcobound ucobound maskl maskr num_images parity popcnt poppar shifta shiftl shiftr this_image IRP_ALIGN irp_here"};return{cI:!0,k:n,i:/\/\*/,c:[e.inherit(e.ASM,{cN:"string",r:0}),e.inherit(e.QSM,{cN:"string",r:0}),{cN:"function",bK:"subroutine function program",i:"[${=\\n]",c:[e.UTM,t]},e.C("!","$",{r:0}),e.C("begin_doc","end_doc",{r:10}),{cN:"number",b:"(?=\\b|\\+|\\-|\\.)(?=\\.\\d|\\d)(?:\\d+)?(?:\\.?\\d*)(?:[de][+-]?\\d+)?\\b\\.?",r:0}]}});hljs.registerLanguage("sql",function(e){var t=e.C("--","$");return{cI:!0,i:/[<>{}*#]/,c:[{bK:"begin end start commit rollback savepoint lock alter create drop rename call delete do handler insert load replace select truncate update set show pragma grant merge describe use explain help declare prepare execute deallocate release unlock purge reset change stop analyze cache flush optimize repair kill install uninstall checksum restore check backup revoke comment",e:/;/,eW:!0,l:/[\w\.]+/,k:{keyword:"abort abs absolute acc acce accep accept access accessed accessible account acos action activate add addtime admin administer advanced advise aes_decrypt aes_encrypt after agent aggregate ali alia alias allocate allow alter always analyze ancillary and any anydata anydataset anyschema anytype apply archive archived archivelog are as asc ascii asin assembly assertion associate asynchronous at atan atn2 attr attri attrib attribu attribut attribute attributes audit authenticated authentication authid authors auto autoallocate autodblink autoextend automatic availability avg backup badfile basicfile before begin beginning benchmark between bfile bfile_base big bigfile bin binary_double binary_float binlog bit_and bit_count bit_length bit_or bit_xor bitmap blob_base block blocksize body both bound buffer_cache buffer_pool build bulk by byte byteordermark bytes cache caching call calling cancel capacity cascade cascaded case cast catalog category ceil ceiling chain change changed char_base char_length character_length characters characterset charindex charset charsetform charsetid check checksum checksum_agg child choose chr chunk class cleanup clear client clob clob_base clone close cluster_id cluster_probability cluster_set clustering coalesce coercibility col collate collation collect colu colum column column_value columns columns_updated comment commit compact compatibility compiled complete composite_limit compound compress compute concat concat_ws concurrent confirm conn connec connect connect_by_iscycle connect_by_isleaf connect_by_root connect_time connection consider consistent constant constraint constraints constructor container content contents context contributors controlfile conv convert convert_tz corr corr_k corr_s corresponding corruption cos cost count count_big counted covar_pop covar_samp cpu_per_call cpu_per_session crc32 create creation critical cross cube cume_dist curdate current current_date current_time current_timestamp current_user cursor curtime customdatum cycle data database databases datafile datafiles datalength date_add date_cache date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts day day_to_second dayname dayofmonth dayofweek dayofyear days db_role_change dbtimezone ddl deallocate declare decode decompose decrement decrypt deduplicate def defa defau defaul default defaults deferred defi defin define degrees delayed delegate delete delete_all delimited demand dense_rank depth dequeue des_decrypt des_encrypt des_key_file desc descr descri describ describe descriptor deterministic diagnostics difference dimension direct_load directory disable disable_all disallow disassociate discardfile disconnect diskgroup distinct distinctrow distribute distributed div do document domain dotnet double downgrade drop dumpfile duplicate duration each edition editionable editions element ellipsis else elsif elt empty enable enable_all enclosed encode encoding encrypt end end-exec endian enforced engine engines enqueue enterprise entityescaping eomonth error errors escaped evalname evaluate event eventdata events except exception exceptions exchange exclude excluding execu execut execute exempt exists exit exp expire explain export export_set extended extent external external_1 external_2 externally extract failed failed_login_attempts failover failure far fast feature_set feature_value fetch field fields file file_name_convert filesystem_like_logging final finish first first_value fixed flash_cache flashback floor flush following follows for forall force form forma format found found_rows freelist freelists freepools fresh from from_base64 from_days ftp full function general generated get get_format get_lock getdate getutcdate global global_name globally go goto grant grants greatest group group_concat group_id grouping grouping_id groups gtid_subtract guarantee guard handler hash hashkeys having hea head headi headin heading heap help hex hierarchy high high_priority hosts hour http id ident_current ident_incr ident_seed identified identity idle_time if ifnull ignore iif ilike ilm immediate import in include including increment index indexes indexing indextype indicator indices inet6_aton inet6_ntoa inet_aton inet_ntoa infile initial initialized initially initrans inmemory inner innodb input insert install instance instantiable instr interface interleaved intersect into invalidate invisible is is_free_lock is_ipv4 is_ipv4_compat is_not is_not_null is_used_lock isdate isnull isolation iterate java join json json_exists keep keep_duplicates key keys kill language large last last_day last_insert_id last_value lax lcase lead leading least leaves left len lenght length less level levels library like like2 like4 likec limit lines link list listagg little ln load load_file lob lobs local localtime localtimestamp locate locator lock locked log log10 log2 logfile logfiles logging logical logical_reads_per_call logoff logon logs long loop low low_priority lower lpad lrtrim ltrim main make_set makedate maketime managed management manual map mapping mask master master_pos_wait match matched materialized max maxextents maximize maxinstances maxlen maxlogfiles maxloghistory maxlogmembers maxsize maxtrans md5 measures median medium member memcompress memory merge microsecond mid migration min minextents minimum mining minus minute minvalue missing mod mode model modification modify module monitoring month months mount move movement multiset mutex name name_const names nan national native natural nav nchar nclob nested never new newline next nextval no no_write_to_binlog noarchivelog noaudit nobadfile nocheck nocompress nocopy nocycle nodelay nodiscardfile noentityescaping noguarantee nokeep nologfile nomapping nomaxvalue nominimize nominvalue nomonitoring none noneditionable nonschema noorder nopr nopro noprom nopromp noprompt norely noresetlogs noreverse normal norowdependencies noschemacheck noswitch not nothing notice notrim novalidate now nowait nth_value nullif nulls num numb numbe nvarchar nvarchar2 object ocicoll ocidate ocidatetime ociduration ociinterval ociloblocator ocinumber ociref ocirefcursor ocirowid ocistring ocitype oct octet_length of off offline offset oid oidindex old on online only opaque open operations operator optimal optimize option optionally or oracle oracle_date oradata ord ordaudio orddicom orddoc order ordimage ordinality ordvideo organization orlany orlvary out outer outfile outline output over overflow overriding package pad parallel parallel_enable parameters parent parse partial partition partitions pascal passing password password_grace_time password_lock_time password_reuse_max password_reuse_time password_verify_function patch path patindex pctincrease pctthreshold pctused pctversion percent percent_rank percentile_cont percentile_disc performance period period_add period_diff permanent physical pi pipe pipelined pivot pluggable plugin policy position post_transaction pow power pragma prebuilt precedes preceding precision prediction prediction_cost prediction_details prediction_probability prediction_set prepare present preserve prior priority private private_sga privileges procedural procedure procedure_analyze processlist profiles project prompt protection public publishingservername purge quarter query quick quiesce quota quotename radians raise rand range rank raw read reads readsize rebuild record records recover recovery recursive recycle redo reduced ref reference referenced references referencing refresh regexp_like register regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy reject rekey relational relative relaylog release release_lock relies_on relocate rely rem remainder rename repair repeat replace replicate replication required reset resetlogs resize resource respect restore restricted result result_cache resumable resume retention return returning returns reuse reverse revoke right rlike role roles rollback rolling rollup round row row_count rowdependencies rowid rownum rows rtrim rules safe salt sample save savepoint sb1 sb2 sb4 scan schema schemacheck scn scope scroll sdo_georaster sdo_topo_geometry search sec_to_time second section securefile security seed segment select self sequence sequential serializable server servererror session session_user sessions_per_user set sets settings sha sha1 sha2 share shared shared_pool short show shrink shutdown si_averagecolor si_colorhistogram si_featurelist si_positionalcolor si_stillimage si_texture siblings sid sign sin size size_t sizes skip slave sleep smalldatetimefromparts smallfile snapshot some soname sort soundex source space sparse spfile split sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_small_result sql_variant_property sqlcode sqldata sqlerror sqlname sqlstate sqrt square standalone standby start starting startup statement static statistics stats_binomial_test stats_crosstab stats_ks_test stats_mode stats_mw_test stats_one_way_anova stats_t_test_ stats_t_test_indep stats_t_test_one stats_t_test_paired stats_wsr_test status std stddev stddev_pop stddev_samp stdev stop storage store stored str str_to_date straight_join strcmp strict string struct stuff style subdate subpartition subpartitions substitutable substr substring subtime subtring_index subtype success sum suspend switch switchoffset switchover sync synchronous synonym sys sys_xmlagg sysasm sysaux sysdate sysdatetimeoffset sysdba sysoper system system_user sysutcdatetime table tables tablespace tan tdo template temporary terminated tertiary_weights test than then thread through tier ties time time_format time_zone timediff timefromparts timeout timestamp timestampadd timestampdiff timezone_abbr timezone_minute timezone_region to to_base64 to_date to_days to_seconds todatetimeoffset trace tracking transaction transactional translate translation treat trigger trigger_nestlevel triggers trim truncate try_cast try_convert try_parse type ub1 ub2 ub4 ucase unarchived unbounded uncompress under undo unhex unicode uniform uninstall union unique unix_timestamp unknown unlimited unlock unpivot unrecoverable unsafe unsigned until untrusted unusable unused update updated upgrade upped upper upsert url urowid usable usage use use_stored_outlines user user_data user_resources users using utc_date utc_timestamp uuid uuid_short validate validate_password_strength validation valist value values var var_samp varcharc vari varia variab variabl variable variables variance varp varraw varrawc varray verify version versions view virtual visible void wait wallet warning warnings week weekday weekofyear wellformed when whene whenev wheneve whenever where while whitespace with within without work wrapped xdb xml xmlagg xmlattributes xmlcast xmlcolattval xmlelement xmlexists xmlforest xmlindex xmlnamespaces xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltype xor year year_to_month years yearweek",literal:"true false null",built_in:"array bigint binary bit blob boolean char character date dec decimal float int int8 integer interval number numeric real record serial serial8 smallint text varchar varying void"},c:[{cN:"string",b:"'",e:"'",c:[e.BE,{b:"''"}]},{cN:"string",b:'"',e:'"',c:[e.BE,{b:'""'}]},{cN:"string",b:"`",e:"`",c:[e.BE]},e.CNM,e.CBCM,t]},e.CBCM,t]}});hljs.registerLanguage("objectivec",function(e){var t={cN:"built_in",b:"\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\w+"},_={keyword:"int float while char export sizeof typedef const struct for union unsigned long volatile static bool mutable if do return goto void enum else break extern asm case short default double register explicit signed typename this switch continue wchar_t inline readonly assign readwrite self @synchronized id typeof nonatomic super unichar IBOutlet IBAction strong weak copy in out inout bycopy byref oneway __strong __weak __block __autoreleasing @private @protected @public @try @property @end @throw @catch @finally @autoreleasepool @synthesize @dynamic @selector @optional @required @encode @package @import @defs @compatibility_alias __bridge __bridge_transfer __bridge_retained __bridge_retain __covariant __contravariant __kindof _Nonnull _Nullable _Null_unspecified __FUNCTION__ __PRETTY_FUNCTION__ __attribute__ getter setter retain unsafe_unretained nonnull nullable null_unspecified null_resettable class instancetype NS_DESIGNATED_INITIALIZER NS_UNAVAILABLE NS_REQUIRES_SUPER NS_RETURNS_INNER_POINTER NS_INLINE NS_AVAILABLE NS_DEPRECATED NS_ENUM NS_OPTIONS NS_SWIFT_UNAVAILABLE NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_END NS_REFINED_FOR_SWIFT NS_SWIFT_NAME NS_SWIFT_NOTHROW NS_DURING NS_HANDLER NS_ENDHANDLER NS_VALUERETURN NS_VOIDRETURN",literal:"false true FALSE TRUE nil YES NO NULL",built_in:"BOOL dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once"},i=/[a-zA-Z@][a-zA-Z0-9_]*/,n="@interface @class @protocol @implementation";return{aliases:["mm","objc","obj-c"],k:_,l:i,i:""}]}]},{cN:"class",b:"("+n.split(" ").join("|")+")\\b",e:"({|$)",eE:!0,k:n,l:i,c:[e.UTM]},{b:"\\."+e.UIR,r:0}]}});hljs.registerLanguage("swift",function(e){var t={keyword:"__COLUMN__ __FILE__ __FUNCTION__ __LINE__ as as! as? associativity break case catch class continue convenience default defer deinit didSet do dynamic dynamicType else enum extension fallthrough false final for func get guard if import in indirect infix init inout internal is lazy left let mutating nil none nonmutating operator optional override postfix precedence prefix private protocol Protocol public repeat required rethrows return right self Self set static struct subscript super switch throw throws true try try! try? Type typealias unowned var weak where while willSet",literal:"true false nil",built_in:"abs advance alignof alignofValue anyGenerator assert assertionFailure bridgeFromObjectiveC bridgeFromObjectiveCUnconditional bridgeToObjectiveC bridgeToObjectiveCUnconditional c contains count countElements countLeadingZeros debugPrint debugPrintln distance dropFirst dropLast dump encodeBitsAsWords enumerate equal fatalError filter find getBridgedObjectiveCType getVaList indices insertionSort isBridgedToObjectiveC isBridgedVerbatimToObjectiveC isUniquelyReferenced isUniquelyReferencedNonObjC join lazy lexicographicalCompare map max maxElement min minElement numericCast overlaps partition posix precondition preconditionFailure print println quickSort readLine reduce reflect reinterpretCast reverse roundUpToAlignment sizeof sizeofValue sort split startsWith stride strideof strideofValue swap toString transcode underestimateCount unsafeAddressOf unsafeBitCast unsafeDowncast unsafeUnwrap unsafeReflect withExtendedLifetime withObjectAtPlusZero withUnsafePointer withUnsafePointerToObject withUnsafeMutablePointer withUnsafeMutablePointers withUnsafePointer withUnsafePointers withVaList zip"},i={cN:"type",b:"\\b[A-Z][\\w']*",r:0},n=e.C("/\\*","\\*/",{c:["self"]}),r={cN:"subst",b:/\\\(/,e:"\\)",k:t,c:[]},a={cN:"number",b:"\\b([\\d_]+(\\.[\\deE_]+)?|0x[a-fA-F0-9_]+(\\.[a-fA-F0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\b",r:0},o=e.inherit(e.QSM,{c:[r,e.BE]});return r.c=[a],{k:t,c:[o,e.CLCM,n,i,a,{cN:"function",bK:"func",e:"{",eE:!0,c:[e.inherit(e.TM,{b:/[A-Za-z$_][0-9A-Za-z$_]*/}),{b://},{cN:"params",b:/\(/,e:/\)/,endsParent:!0,k:t,c:["self",a,o,e.CBCM,{b:":"}],i:/["']/}],i:/\[|%/},{cN:"class",bK:"struct protocol class extension enum",k:t,e:"\\{",eE:!0,c:[e.inherit(e.TM,{b:/[A-Za-z$_][0-9A-Za-z$_]*/})]},{cN:"meta",b:"(@warn_unused_result|@exported|@lazy|@noescape|@NSCopying|@NSManaged|@objc|@convention|@required|@noreturn|@IBAction|@IBDesignable|@IBInspectable|@IBOutlet|@infix|@prefix|@postfix|@autoclosure|@testable|@available|@nonobjc|@NSApplicationMain|@UIApplicationMain)"},{bK:"import",e:/$/,c:[e.CLCM,n]}]}});hljs.registerLanguage("mizar",function(e){return{k:"environ vocabularies notations constructors definitions registrations theorems schemes requirements begin end definition registration cluster existence pred func defpred deffunc theorem proof let take assume then thus hence ex for st holds consider reconsider such that and in provided of as from be being by means equals implies iff redefine define now not or attr is mode suppose per cases set thesis contradiction scheme reserve struct correctness compatibility coherence symmetry assymetry reflexivity irreflexivity connectedness uniqueness commutativity idempotence involutiveness projectivity",c:[e.C("::","$")]}});hljs.registerLanguage("dts",function(e){var a={cN:"string",v:[e.inherit(e.QSM,{b:'((u8?|U)|L)?"'}),{b:'(u8?|U)?R"',e:'"',c:[e.BE]},{b:"'\\\\?.",e:"'",i:"."}]},c={cN:"number",v:[{b:"\\b(\\d+(\\.\\d*)?|\\.\\d+)(u|U|l|L|ul|UL|f|F)"},{b:e.CNR}],r:0},b={cN:"meta",b:"#",e:"$",k:{"meta-keyword":"if else elif endif define undef ifdef ifndef"},c:[{b:/\\\n/,r:0},{bK:"include",e:"$",k:{"meta-keyword":"include"},c:[e.inherit(a,{cN:"meta-string"}),{cN:"meta-string",b:"<",e:">",i:"\\n"}]},a,e.CLCM,e.CBCM]},i={cN:"variable",b:"\\&[a-z\\d_]*\\b"},r={cN:"meta-keyword",b:"/[a-z][a-z\\d-]*/"},d={cN:"symbol",b:"^\\s*[a-zA-Z_][a-zA-Z\\d_]*:"},n={cN:"params",b:"<",e:">",c:[c,i]},s={cN:"class",b:/[a-zA-Z_][a-zA-Z\d_@]*\s{/,e:/[{;=]/,rB:!0,eE:!0},t={cN:"class",b:"/\\s*{",e:"};",r:10,c:[i,r,d,s,n,e.CLCM,e.CBCM,c,a]};return{k:"",c:[t,i,r,d,s,n,e.CLCM,e.CBCM,c,a,b,{b:e.IR+"::",k:""}]}});hljs.registerLanguage("step21",function(e){var i="[A-Z_][A-Z0-9_.]*",r={keyword:"HEADER ENDSEC DATA"},t={cN:"meta",b:"ISO-10303-21;",r:10},n={cN:"meta",b:"END-ISO-10303-21;",r:10};return{aliases:["p21","step","stp"],cI:!0,l:i,k:r,c:[t,n,e.CLCM,e.CBCM,e.C("/\\*\\*!","\\*/"),e.CNM,e.inherit(e.ASM,{i:null}),e.inherit(e.QSM,{i:null}),{cN:"string",b:"'",e:"'"},{cN:"symbol",v:[{b:"#",e:"\\d+",i:"\\W"}]}]}});hljs.registerLanguage("tap",function(b){return{cI:!0,c:[b.HCM,{cN:"meta",v:[{b:"^TAP version (\\d+)$"},{b:"^1\\.\\.(\\d+)$"}]},{b:"(s+)?---$",e:"\\.\\.\\.$",sL:"yaml",r:0},{cN:"number",b:" (\\d+) "},{cN:"symbol",v:[{b:"^ok"},{b:"^not ok"}]}]}});hljs.registerLanguage("rib",function(e){return{k:"ArchiveRecord AreaLightSource Atmosphere Attribute AttributeBegin AttributeEnd Basis Begin Blobby Bound Clipping ClippingPlane Color ColorSamples ConcatTransform Cone CoordinateSystem CoordSysTransform CropWindow Curves Cylinder DepthOfField Detail DetailRange Disk Displacement Display End ErrorHandler Exposure Exterior Format FrameAspectRatio FrameBegin FrameEnd GeneralPolygon GeometricApproximation Geometry Hider Hyperboloid Identity Illuminate Imager Interior LightSource MakeCubeFaceEnvironment MakeLatLongEnvironment MakeShadow MakeTexture Matte MotionBegin MotionEnd NuPatch ObjectBegin ObjectEnd ObjectInstance Opacity Option Orientation Paraboloid Patch PatchMesh Perspective PixelFilter PixelSamples PixelVariance Points PointsGeneralPolygons PointsPolygons Polygon Procedural Projection Quantize ReadArchive RelativeDetail ReverseOrientation Rotate Scale ScreenWindow ShadingInterpolation ShadingRate Shutter Sides Skew SolidBegin SolidEnd Sphere SubdivisionMesh Surface TextureCoordinates Torus Transform TransformBegin TransformEnd TransformPoints Translate TrimCurve WorldBegin WorldEnd",i:">/,l:"[a-z_]\\w*!?",c:[{cN:"literal",b:/\[(\|\|)?\]|\(\)/,r:0},e.C("\\(\\*","\\*\\)",{c:["self"]}),{cN:"symbol",b:"'[A-Za-z_](?!')[\\w']*"},{cN:"type",b:"`[A-Z][\\w']*"},{cN:"type",b:"\\b[A-Z][\\w']*",r:0},{b:"[a-z_]\\w*'[\\w']*"},e.inherit(e.ASM,{cN:"string",r:0}),e.inherit(e.QSM,{i:null}),{cN:"number",b:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)",r:0},{b:/[-=]>/}]}});hljs.registerLanguage("mipsasm",function(s){return{cI:!0,aliases:["mips"],l:"\\.?"+s.IR,k:{meta:".2byte .4byte .align .ascii .asciz .balign .byte .code .data .else .end .endif .endm .endr .equ .err .exitm .extern .global .hword .if .ifdef .ifndef .include .irp .long .macro .rept .req .section .set .skip .space .text .word .ltorg ",built_in:"$0 $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14 $15 $16 $17 $18 $19 $20 $21 $22 $23 $24 $25 $26 $27 $28 $29 $30 $31 zero at v0 v1 a0 a1 a2 a3 a4 a5 a6 a7 t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 s0 s1 s2 s3 s4 s5 s6 s7 s8 k0 k1 gp sp fp ra $f0 $f1 $f2 $f2 $f4 $f5 $f6 $f7 $f8 $f9 $f10 $f11 $f12 $f13 $f14 $f15 $f16 $f17 $f18 $f19 $f20 $f21 $f22 $f23 $f24 $f25 $f26 $f27 $f28 $f29 $f30 $f31 Context Random EntryLo0 EntryLo1 Context PageMask Wired EntryHi HWREna BadVAddr Count Compare SR IntCtl SRSCtl SRSMap Cause EPC PRId EBase Config Config1 Config2 Config3 LLAddr Debug DEPC DESAVE CacheErr ECC ErrorEPC TagLo DataLo TagHi DataHi WatchLo WatchHi PerfCtl PerfCnt "},c:[{cN:"keyword",b:"\\b(addi?u?|andi?|b(al)?|beql?|bgez(al)?l?|bgtzl?|blezl?|bltz(al)?l?|bnel?|cl[oz]|divu?|ext|ins|j(al)?|jalr(.hb)?|jr(.hb)?|lbu?|lhu?|ll|lui|lw[lr]?|maddu?|mfhi|mflo|movn|movz|move|msubu?|mthi|mtlo|mul|multu?|nop|nor|ori?|rotrv?|sb|sc|se[bh]|sh|sllv?|slti?u?|srav?|srlv?|subu?|sw[lr]?|xori?|wsbh|abs.[sd]|add.[sd]|alnv.ps|bc1[ft]l?|c.(s?f|un|u?eq|[ou]lt|[ou]le|ngle?|seq|l[et]|ng[et]).[sd]|(ceil|floor|round|trunc).[lw].[sd]|cfc1|cvt.d.[lsw]|cvt.l.[dsw]|cvt.ps.s|cvt.s.[dlw]|cvt.s.p[lu]|cvt.w.[dls]|div.[ds]|ldx?c1|luxc1|lwx?c1|madd.[sd]|mfc1|mov[fntz]?.[ds]|msub.[sd]|mth?c1|mul.[ds]|neg.[ds]|nmadd.[ds]|nmsub.[ds]|p[lu][lu].ps|recip.fmt|r?sqrt.[ds]|sdx?c1|sub.[ds]|suxc1|swx?c1|break|cache|d?eret|[de]i|ehb|mfc0|mtc0|pause|prefx?|rdhwr|rdpgpr|sdbbp|ssnop|synci?|syscall|teqi?|tgei?u?|tlb(p|r|w[ir])|tlti?u?|tnei?|wait|wrpgpr)",e:"\\s"},s.C("[;#]","$"),s.CBCM,s.QSM,{cN:"string",b:"'",e:"[^\\\\]'",r:0},{cN:"title",b:"\\|",e:"\\|",i:"\\n",r:0},{cN:"number",v:[{b:"0x[0-9a-f]+"},{b:"\\b-?\\d+"}],r:0},{cN:"symbol",v:[{b:"^\\s*[a-z_\\.\\$][a-z0-9_\\.\\$]+:"},{b:"^\\s*[0-9]+:"},{b:"[0-9]+[bf]"}],r:0}],i:"/"}});hljs.registerLanguage("subunit",function(s){var r={cN:"string",b:"\\[\n(multipart)?",e:"\\]\n"},t={cN:"string",b:"\\d{4}-\\d{2}-\\d{2}(\\s+)\\d{2}:\\d{2}:\\d{2}.\\d+Z"},e={cN:"string",b:"(\\+|-)\\d+"},c={cN:"keyword",r:10,v:[{b:"^(test|testing|success|successful|failure|error|skip|xfail|uxsuccess)(:?)\\s+(test)?"},{b:"^progress(:?)(\\s+)?(pop|push)?"},{b:"^tags:"},{b:"^time:"}]};return{cI:!0,c:[r,t,e,c]}});hljs.registerLanguage("vbscript",function(e){return{aliases:["vbs"],cI:!0,k:{keyword:"call class const dim do loop erase execute executeglobal exit for each next function if then else on error option explicit new private property let get public randomize redim rem select case set stop sub while wend with end to elseif is or xor and not class_initialize class_terminate default preserve in me byval byref step resume goto",built_in:"lcase month vartype instrrev ubound setlocale getobject rgb getref string weekdayname rnd dateadd monthname now day minute isarray cbool round formatcurrency conversions csng timevalue second year space abs clng timeserial fixs len asc isempty maths dateserial atn timer isobject filter weekday datevalue ccur isdate instr datediff formatdatetime replace isnull right sgn array snumeric log cdbl hex chr lbound msgbox ucase getlocale cos cdate cbyte rtrim join hour oct typename trim strcomp int createobject loadpicture tan formatnumber mid scriptenginebuildversion scriptengine split scriptengineminorversion cint sin datepart ltrim sqr scriptenginemajorversion time derived eval date formatpercent exp inputbox left ascw chrw regexp server response request cstr err",literal:"true false null nothing empty"},i:"//",c:[e.inherit(e.QSM,{c:[{b:'""'}]}),e.C(/'/,/$/,{r:0}),e.CNM]}});hljs.registerLanguage("vbscript-html",function(r){return{sL:"xml",c:[{b:"<%",e:"%>",sL:"vbscript"}]}});hljs.registerLanguage("typescript",function(e){var r={keyword:"in if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const class public private protected get set super static implements enum export import declare type namespace abstract",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document any number boolean string void"};return{aliases:["ts"],k:r,c:[{cN:"meta",b:/^\s*['"]use strict['"]/},e.ASM,e.QSM,{cN:"string",b:"`",e:"`",c:[e.BE,{cN:"subst",b:"\\$\\{",e:"\\}"}]},e.CLCM,e.CBCM,{cN:"number",v:[{b:"\\b(0[bB][01]+)"},{b:"\\b(0[oO][0-7]+)"},{b:e.CNR}],r:0},{b:"("+e.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[e.CLCM,e.CBCM,e.RM],r:0},{cN:"function",b:"function",e:/[\{;]/,eE:!0,k:r,c:["self",e.inherit(e.TM,{b:/[A-Za-z$_][0-9A-Za-z$_]*/}),{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,k:r,c:[e.CLCM,e.CBCM],i:/["'\(]/}],i:/%/,r:0},{bK:"constructor",e:/\{/,eE:!0},{b:/module\./,k:{built_in:"module"},r:0},{bK:"module",e:/\{/,eE:!0},{bK:"interface",e:/\{/,eE:!0,k:"interface extends"},{b:/\$[(.]/},{b:"\\."+e.IR,r:0}]}});hljs.registerLanguage("tcl",function(e){return{aliases:["tk"],k:"after append apply array auto_execok auto_import auto_load auto_mkindex auto_mkindex_old auto_qualify auto_reset bgerror binary break catch cd chan clock close concat continue dde dict encoding eof error eval exec exit expr fblocked fconfigure fcopy file fileevent filename flush for foreach format gets glob global history http if incr info interp join lappend|10 lassign|10 lindex|10 linsert|10 list llength|10 load lrange|10 lrepeat|10 lreplace|10 lreverse|10 lsearch|10 lset|10 lsort|10 mathfunc mathop memory msgcat namespace open package parray pid pkg::create pkg_mkIndex platform platform::shell proc puts pwd read refchan regexp registry regsub|10 rename return safe scan seek set socket source split string subst switch tcl_endOfWord tcl_findLibrary tcl_startOfNextWord tcl_startOfPreviousWord tcl_wordBreakAfter tcl_wordBreakBefore tcltest tclvars tell time tm trace unknown unload unset update uplevel upvar variable vwait while",c:[e.C(";[ \\t]*#","$"),e.C("^[ \\t]*#","$"),{bK:"proc",e:"[\\{]",eE:!0,c:[{cN:"title",b:"[ \\t\\n\\r]+(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*",e:"[ \\t\\n\\r]",eW:!0,eE:!0}]},{eE:!0,v:[{b:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*\\(([a-zA-Z0-9_])*\\)",e:"[^a-zA-Z0-9_\\}\\$]"},{b:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*",e:"(\\))?[^a-zA-Z0-9_\\}\\$]"}]},{cN:"string",c:[e.BE],v:[e.inherit(e.ASM,{i:null}),e.inherit(e.QSM,{i:null})]},{cN:"number",v:[e.BNM,e.CNM]}]}});hljs.registerLanguage("axapta",function(e){return{k:"false int abstract private char boolean static null if for true while long throw finally protected final return void enum else break new catch byte super case short default double public try this switch continue reverse firstfast firstonly forupdate nofetch sum avg minof maxof count order group by asc desc index hint like dispaly edit client server ttsbegin ttscommit str real date container anytype common div mod",c:[e.CLCM,e.CBCM,e.ASM,e.QSM,e.CNM,{cN:"meta",b:"#",e:"$"},{cN:"class",bK:"class interface",e:"{",eE:!0,i:":",c:[{bK:"extends implements"},e.UTM]}]}});hljs.registerLanguage("vbnet",function(e){return{aliases:["vb"],cI:!0,k:{keyword:"addhandler addressof alias and andalso aggregate ansi as assembly auto binary by byref byval call case catch class compare const continue custom declare default delegate dim distinct do each equals else elseif end enum erase error event exit explicit finally for friend from function get global goto group handles if implements imports in inherits interface into is isfalse isnot istrue join key let lib like loop me mid mod module mustinherit mustoverride mybase myclass namespace narrowing new next not notinheritable notoverridable of off on operator option optional or order orelse overloads overridable overrides paramarray partial preserve private property protected public raiseevent readonly redim rem removehandler resume return select set shadows shared skip static step stop structure strict sub synclock take text then throw to try unicode until using when where while widening with withevents writeonly xor",built_in:"boolean byte cbool cbyte cchar cdate cdec cdbl char cint clng cobj csbyte cshort csng cstr ctype date decimal directcast double gettype getxmlnamespace iif integer long object sbyte short single string trycast typeof uinteger ulong ushort",literal:"true false nothing"},i:"//|{|}|endif|gosub|variant|wend",c:[e.inherit(e.QSM,{c:[{b:'""'}]}),e.C("'","$",{rB:!0,c:[{cN:"doctag",b:"'''|",c:[e.PWM]},{cN:"doctag",b:"",c:[e.PWM]}]}),e.CNM,{cN:"meta",b:"#",e:"$",k:{"meta-keyword":"if else elseif end region externalsource"}}]}});hljs.registerLanguage("protobuf",function(e){return{k:{keyword:"package import option optional required repeated group",built_in:"double float int32 int64 uint32 uint64 sint32 sint64 fixed32 fixed64 sfixed32 sfixed64 bool string bytes",literal:"true false"},c:[e.QSM,e.NM,e.CLCM,{cN:"class",bK:"message enum service",e:/\{/,i:/\n/,c:[e.inherit(e.TM,{starts:{eW:!0,eE:!0}})]},{cN:"function",bK:"rpc",e:/;/,eE:!0,k:"rpc returns"},{b:/^\s*[A-Z_]+/,e:/\s*=/,eE:!0}]}});hljs.registerLanguage("hsp",function(e){return{cI:!0,l:/[\w\._]+/,k:"goto gosub return break repeat loop continue wait await dim sdim foreach dimtype dup dupptr end stop newmod delmod mref run exgoto on mcall assert logmes newlab resume yield onexit onerror onkey onclick oncmd exist delete mkdir chdir dirlist bload bsave bcopy memfile if else poke wpoke lpoke getstr chdpm memexpand memcpy memset notesel noteadd notedel noteload notesave randomize noteunsel noteget split strrep setease button chgdisp exec dialog mmload mmplay mmstop mci pset pget syscolor mes print title pos circle cls font sysfont objsize picload color palcolor palette redraw width gsel gcopy gzoom gmode bmpsave hsvcolor getkey listbox chkbox combox input mesbox buffer screen bgscr mouse objsel groll line clrobj boxf objprm objmode stick grect grotate gsquare gradf objimage objskip objenable celload celdiv celput newcom querycom delcom cnvstow comres axobj winobj sendmsg comevent comevarg sarrayconv callfunc cnvwtos comevdisp libptr system hspstat hspver stat cnt err strsize looplev sublev iparam wparam lparam refstr refdval int rnd strlen length length2 length3 length4 vartype gettime peek wpeek lpeek varptr varuse noteinfo instr abs limit getease str strmid strf getpath strtrim sin cos tan atan sqrt double absf expf logf limitf powf geteasef mousex mousey mousew hwnd hinstance hdc ginfo objinfo dirinfo sysinfo thismod __hspver__ __hsp30__ __date__ __time__ __line__ __file__ _debug __hspdef__ and or xor not screen_normal screen_palette screen_hide screen_fixedsize screen_tool screen_frame gmode_gdi gmode_mem gmode_rgb0 gmode_alpha gmode_rgb0alpha gmode_add gmode_sub gmode_pixela ginfo_mx ginfo_my ginfo_act ginfo_sel ginfo_wx1 ginfo_wy1 ginfo_wx2 ginfo_wy2 ginfo_vx ginfo_vy ginfo_sizex ginfo_sizey ginfo_winx ginfo_winy ginfo_mesx ginfo_mesy ginfo_r ginfo_g ginfo_b ginfo_paluse ginfo_dispx ginfo_dispy ginfo_cx ginfo_cy ginfo_intid ginfo_newid ginfo_sx ginfo_sy objinfo_mode objinfo_bmscr objinfo_hwnd notemax notesize dir_cur dir_exe dir_win dir_sys dir_cmdline dir_desktop dir_mydoc dir_tv font_normal font_bold font_italic font_underline font_strikeout font_antialias objmode_normal objmode_guifont objmode_usefont gsquare_grad msgothic msmincho do until while wend for next _break _continue switch case default swbreak swend ddim ldim alloc m_pi rad2deg deg2rad ease_linear ease_quad_in ease_quad_out ease_quad_inout ease_cubic_in ease_cubic_out ease_cubic_inout ease_quartic_in ease_quartic_out ease_quartic_inout ease_bounce_in ease_bounce_out ease_bounce_inout ease_shake_in ease_shake_out ease_shake_inout ease_loop",c:[e.CLCM,e.CBCM,e.QSM,e.ASM,{cN:"string",b:'{"',e:'"}',c:[e.BE]},e.C(";","$",{r:0}),{cN:"meta",b:"#",e:"$",k:{"meta-keyword":"addion cfunc cmd cmpopt comfunc const defcfunc deffunc define else endif enum epack func global if ifdef ifndef include modcfunc modfunc modinit modterm module pack packopt regcmd runtime undef usecom uselib"},c:[e.inherit(e.QSM,{cN:"meta-string"}),e.NM,e.CNM,e.CLCM,e.CBCM]},{cN:"symbol",b:"^\\*(\\w+|@)"},e.NM,e.CNM]}});hljs.registerLanguage("dsconfig",function(e){var i={cN:"string",b:/"/,e:/"/},r={cN:"string",b:/'/,e:/'/},s={cN:"string",b:"[\\w-?]+:\\w+",e:"\\W",r:0},t={cN:"string",b:"\\w+-?\\w+",e:"\\W",r:0};return{k:"dsconfig",c:[{cN:"keyword",b:"^dsconfig",e:"\\s",eE:!0,r:10},{cN:"built_in",b:"(list|create|get|set|delete)-(\\w+)",e:"\\s",eE:!0,i:"!@#$%^&*()",r:10},{cN:"built_in",b:"--(\\w+)",e:"\\s",eE:!0},i,r,s,t,e.HCM]}});hljs.registerLanguage("bnf",function(e){return{c:[{cN:"attribute",b://},{b:/::=/,starts:{e:/$/,c:[{b://},e.CLCM,e.CBCM,e.ASM,e.QSM]}}]}});hljs.registerLanguage("gcode",function(N){var e="[A-Z_][A-Z0-9_.]*",c="\\%",E="IF DO WHILE ENDWHILE CALL ENDIF SUB ENDSUB GOTO REPEAT ENDREPEAT EQ LT GT NE GE LE OR XOR",i={cN:"meta",b:"([O])([0-9]+)"},n=[N.CLCM,N.CBCM,N.C(/\(/,/\)/),N.inherit(N.CNM,{b:"([-+]?([0-9]*\\.?[0-9]+\\.?))|"+N.CNR}),N.inherit(N.ASM,{i:null}),N.inherit(N.QSM,{i:null}),{cN:"name",b:"([G])([0-9]+\\.?[0-9]?)"},{cN:"name",b:"([M])([0-9]+\\.?[0-9]?)"},{cN:"attr",b:"(VC|VS|#)",e:"(\\d+)"},{cN:"attr",b:"(VZOFX|VZOFY|VZOFZ)"},{cN:"built_in",b:"(ATAN|ABS|ACOS|ASIN|SIN|COS|EXP|FIX|FUP|ROUND|LN|TAN)(\\[)",e:"([-+]?([0-9]*\\.?[0-9]+\\.?))(\\])"},{cN:"symbol",v:[{b:"N",e:"\\d+",i:"\\W"}]}];return{aliases:["nc"],cI:!0,l:e,k:E,c:[{cN:"meta",b:c},i].concat(n)}});hljs.registerLanguage("ada",function(e){var r="\\d(_|\\d)*",t="[eE][-+]?"+r,s=r+"(\\."+r+")?("+t+")?",n="\\w+",a=r+"#"+n+"(\\."+n+")?#("+t+")?",i="\\b("+a+"|"+s+")",c="[A-Za-z](_?[A-Za-z0-9.])*",o="[]{}%#'\"",b=e.C("--","$"),d={b:"\\s+:\\s+",e:"\\s*(:=|;|\\)|=>|$)",i:o,c:[{bK:"loop for declare others",endsParent:!0},{cN:"keyword",bK:"not null constant access function procedure in out aliased exception"},{cN:"type",b:c,endsParent:!0,r:0}]};return{cI:!0,k:{keyword:"abort else new return abs elsif not reverse abstract end accept entry select access exception of separate aliased exit or some all others subtype and for out synchronized array function overriding at tagged generic package task begin goto pragma terminate body private then if procedure type case in protected constant interface is raise use declare range delay limited record when delta loop rem while digits renames with do mod requeue xor",literal:"True False"},c:[b,{cN:"string",b:/"/,e:/"/,c:[{b:/""/,r:0}]},{cN:"string",b:/'.'/},{cN:"number",b:i,r:0},{cN:"symbol",b:"'"+c},{cN:"title",b:"(\\bwith\\s+)?(\\bprivate\\s+)?\\bpackage\\s+(\\bbody\\s+)?",e:"(is|$)",k:"package body",eB:!0,eE:!0,i:o},{b:"(\\b(with|overriding)\\s+)?\\b(function|procedure)\\s+",e:"(\\bis|\\bwith|\\brenames|\\)\\s*;)",k:"overriding function procedure with is renames return",rB:!0,c:[b,{cN:"title",b:"(\\bwith\\s+)?\\b(function|procedure)\\s+",e:"(\\(|\\s+|$)",eB:!0,eE:!0,i:o},d,{cN:"type",b:"\\breturn\\s+",e:"(\\s+|;|$)",k:"return",eB:!0,eE:!0,endsParent:!0,i:o}]},{cN:"type",b:"\\b(sub)?type\\s+",e:"\\s+",k:"type",eB:!0,i:o},d]}});hljs.registerLanguage("powershell",function(e){var t={b:"`[\\s\\S]",r:0},o={cN:"variable",v:[{b:/\$[\w\d][\w\d_:]*/}]},n={cN:"literal",b:/\$(null|true|false)\b/},r={cN:"string",v:[{b:/"/,e:/"/},{b:/@"/,e:/^"@/}],c:[t,o,{cN:"variable",b:/\$[A-z]/,e:/[^A-z]/}]},i={cN:"string",v:[{b:/'/,e:/'/},{b:/@'/,e:/^'@/}]},a={cN:"doctag",v:[{b:/\.(synopsis|description|example|inputs|outputs|notes|link|component|role|functionality)/},{b:/\.(parameter|forwardhelptargetname|forwardhelpcategory|remotehelprunspace|externalhelp)\s+\S+/}]},s=e.inherit(e.C(null,null),{v:[{b:/#/,e:/$/},{b:/<#/,e:/#>/}],c:[a]});return{aliases:["ps"],l:/-?[A-z\.\-]+/,cI:!0,k:{keyword:"if else foreach return function do while until elseif begin for trap data dynamicparam end break throw param continue finally in switch exit filter try process catch",built_in:"Add-Computer Add-Content Add-History Add-JobTrigger Add-Member Add-PSSnapin Add-Type Checkpoint-Computer Clear-Content Clear-EventLog Clear-History Clear-Host Clear-Item Clear-ItemProperty Clear-Variable Compare-Object Complete-Transaction Connect-PSSession Connect-WSMan Convert-Path ConvertFrom-Csv ConvertFrom-Json ConvertFrom-SecureString ConvertFrom-StringData ConvertTo-Csv ConvertTo-Html ConvertTo-Json ConvertTo-SecureString ConvertTo-Xml Copy-Item Copy-ItemProperty Debug-Process Disable-ComputerRestore Disable-JobTrigger Disable-PSBreakpoint Disable-PSRemoting Disable-PSSessionConfiguration Disable-WSManCredSSP Disconnect-PSSession Disconnect-WSMan Disable-ScheduledJob Enable-ComputerRestore Enable-JobTrigger Enable-PSBreakpoint Enable-PSRemoting Enable-PSSessionConfiguration Enable-ScheduledJob Enable-WSManCredSSP Enter-PSSession Exit-PSSession Export-Alias Export-Clixml Export-Console Export-Counter Export-Csv Export-FormatData Export-ModuleMember Export-PSSession ForEach-Object Format-Custom Format-List Format-Table Format-Wide Get-Acl Get-Alias Get-AuthenticodeSignature Get-ChildItem Get-Command Get-ComputerRestorePoint Get-Content Get-ControlPanelItem Get-Counter Get-Credential Get-Culture Get-Date Get-Event Get-EventLog Get-EventSubscriber Get-ExecutionPolicy Get-FormatData Get-Host Get-HotFix Get-Help Get-History Get-IseSnippet Get-Item Get-ItemProperty Get-Job Get-JobTrigger Get-Location Get-Member Get-Module Get-PfxCertificate Get-Process Get-PSBreakpoint Get-PSCallStack Get-PSDrive Get-PSProvider Get-PSSession Get-PSSessionConfiguration Get-PSSnapin Get-Random Get-ScheduledJob Get-ScheduledJobOption Get-Service Get-TraceSource Get-Transaction Get-TypeData Get-UICulture Get-Unique Get-Variable Get-Verb Get-WinEvent Get-WmiObject Get-WSManCredSSP Get-WSManInstance Group-Object Import-Alias Import-Clixml Import-Counter Import-Csv Import-IseSnippet Import-LocalizedData Import-PSSession Import-Module Invoke-AsWorkflow Invoke-Command Invoke-Expression Invoke-History Invoke-Item Invoke-RestMethod Invoke-WebRequest Invoke-WmiMethod Invoke-WSManAction Join-Path Limit-EventLog Measure-Command Measure-Object Move-Item Move-ItemProperty New-Alias New-Event New-EventLog New-IseSnippet New-Item New-ItemProperty New-JobTrigger New-Object New-Module New-ModuleManifest New-PSDrive New-PSSession New-PSSessionConfigurationFile New-PSSessionOption New-PSTransportOption New-PSWorkflowExecutionOption New-PSWorkflowSession New-ScheduledJobOption New-Service New-TimeSpan New-Variable New-WebServiceProxy New-WinEvent New-WSManInstance New-WSManSessionOption Out-Default Out-File Out-GridView Out-Host Out-Null Out-Printer Out-String Pop-Location Push-Location Read-Host Receive-Job Register-EngineEvent Register-ObjectEvent Register-PSSessionConfiguration Register-ScheduledJob Register-WmiEvent Remove-Computer Remove-Event Remove-EventLog Remove-Item Remove-ItemProperty Remove-Job Remove-JobTrigger Remove-Module Remove-PSBreakpoint Remove-PSDrive Remove-PSSession Remove-PSSnapin Remove-TypeData Remove-Variable Remove-WmiObject Remove-WSManInstance Rename-Computer Rename-Item Rename-ItemProperty Reset-ComputerMachinePassword Resolve-Path Restart-Computer Restart-Service Restore-Computer Resume-Job Resume-Service Save-Help Select-Object Select-String Select-Xml Send-MailMessage Set-Acl Set-Alias Set-AuthenticodeSignature Set-Content Set-Date Set-ExecutionPolicy Set-Item Set-ItemProperty Set-JobTrigger Set-Location Set-PSBreakpoint Set-PSDebug Set-PSSessionConfiguration Set-ScheduledJob Set-ScheduledJobOption Set-Service Set-StrictMode Set-TraceSource Set-Variable Set-WmiInstance Set-WSManInstance Set-WSManQuickConfig Show-Command Show-ControlPanelItem Show-EventLog Sort-Object Split-Path Start-Job Start-Process Start-Service Start-Sleep Start-Transaction Start-Transcript Stop-Computer Stop-Job Stop-Process Stop-Service Stop-Transcript Suspend-Job Suspend-Service Tee-Object Test-ComputerSecureChannel Test-Connection Test-ModuleManifest Test-Path Test-PSSessionConfigurationFile Trace-Command Unblock-File Undo-Transaction Unregister-Event Unregister-PSSessionConfiguration Unregister-ScheduledJob Update-FormatData Update-Help Update-List Update-TypeData Use-Transaction Wait-Event Wait-Job Wait-Process Where-Object Write-Debug Write-Error Write-EventLog Write-Host Write-Output Write-Progress Write-Verbose Write-Warning",nomarkup:"-ne -eq -lt -gt -ge -le -not -like -notlike -match -notmatch -contains -notcontains -in -notin -replace"},c:[t,e.NM,r,i,n,o,s]}});hljs.registerLanguage("ceylon",function(e){var a="assembly module package import alias class interface object given value assign void function new of extends satisfies abstracts in out return break continue throw assert dynamic if else switch case for while try catch finally then let this outer super is exists nonempty",t="shared abstract formal default actual variable late native deprecatedfinal sealed annotation suppressWarnings small",s="doc by license see throws tagged",n={cN:"subst",eB:!0,eE:!0,b:/``/,e:/``/,k:a,r:10},r=[{cN:"string",b:'"""',e:'"""',r:10},{cN:"string",b:'"',e:'"',c:[n]},{cN:"string",b:"'",e:"'"},{cN:"number",b:"#[0-9a-fA-F_]+|\\$[01_]+|[0-9_]+(?:\\.[0-9_](?:[eE][+-]?\\d+)?)?[kMGTPmunpf]?",r:0}];return n.c=r,{k:{keyword:a+" "+t,meta:s},i:"\\$[^01]|#[^0-9a-fA-F]",c:[e.CLCM,e.C("/\\*","\\*/",{c:["self"]}),{cN:"meta",b:'@[a-z]\\w*(?:\\:"[^"]*")?'}].concat(r)}});hljs.registerLanguage("go",function(e){var t={keyword:"break default func interface select case map struct chan else goto package switch const fallthrough if range type continue for import return var go defer bool byte complex64 complex128 float32 float64 int8 int16 int32 int64 string uint8 uint16 uint32 uint64 int uint uintptr rune",literal:"true false iota nil",built_in:"append cap close complex copy imag len make new panic print println real recover delete"};return{aliases:["golang"],k:t,i:"",sL:"xml",r:0}],r:10},{cN:"bullet",b:"^(\\*+|\\-+|\\.+|[^\\n]+?::)\\s+"},{cN:"symbol",b:"^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\s+",r:10},{cN:"strong",b:"\\B\\*(?![\\*\\s])",e:"(\\n{2}|\\*)",c:[{b:"\\\\*\\w",r:0}]},{cN:"emphasis",b:"\\B'(?!['\\s])",e:"(\\n{2}|')",c:[{b:"\\\\'\\w",r:0}],r:0},{cN:"emphasis",b:"_(?![_\\s])",e:"(\\n{2}|_)",r:0},{cN:"string",v:[{b:"``.+?''"},{b:"`.+?'"}]},{cN:"code",b:"(`.+?`|\\+.+?\\+)",r:0},{cN:"code",b:"^[ \\t]",e:"$",r:0},{b:"^'{3,}[ \\t]*$",r:10},{b:"(link:)?(http|https|ftp|file|irc|image:?):\\S+\\[.*?\\]",rB:!0,c:[{b:"(link|image:?):",r:0},{cN:"link",b:"\\w",e:"[^\\[]+",r:0},{cN:"string",b:"\\[",e:"\\]",eB:!0,eE:!0,r:0}],r:10}]}});hljs.registerLanguage("purebasic",function(e){var r={cN:"string",b:'(~)?"',e:'"',i:"\\n"},t={cN:"symbol",b:"#[a-zA-Z_]\\w*\\$?"};return{aliases:["pb","pbi"],k:"And As Break CallDebugger Case CompilerCase CompilerDefault CompilerElse CompilerEndIf CompilerEndSelect CompilerError CompilerIf CompilerSelect Continue Data DataSection EndDataSection Debug DebugLevel Default Define Dim DisableASM DisableDebugger DisableExplicit Else ElseIf EnableASM EnableDebugger EnableExplicit End EndEnumeration EndIf EndImport EndInterface EndMacro EndProcedure EndSelect EndStructure EndStructureUnion EndWith Enumeration Extends FakeReturn For Next ForEach ForEver Global Gosub Goto If Import ImportC IncludeBinary IncludeFile IncludePath Interface Macro NewList Not Or ProcedureReturn Protected Prototype PrototypeC Read ReDim Repeat Until Restore Return Select Shared Static Step Structure StructureUnion Swap To Wend While With XIncludeFile XOr Procedure ProcedureC ProcedureCDLL ProcedureDLL Declare DeclareC DeclareCDLL DeclareDLL",c:[e.C(";","$",{r:0}),{cN:"function",b:"\\b(Procedure|Declare)(C|CDLL|DLL)?\\b",e:"\\(",eE:!0,rB:!0,c:[{cN:"keyword",b:"(Procedure|Declare)(C|CDLL|DLL)?",eE:!0},{cN:"type",b:"\\.\\w*"},e.UTM]},r,t]}});hljs.registerLanguage("scheme",function(e){var t="[^\\(\\)\\[\\]\\{\\}\",'`;#|\\\\\\s]+",r="(\\-|\\+)?\\d+([./]\\d+)?",a=r+"[+\\-]"+r+"i",i={"builtin-name":"case-lambda call/cc class define-class exit-handler field import inherit init-field interface let*-values let-values let/ec mixin opt-lambda override protect provide public rename require require-for-syntax syntax syntax-case syntax-error unit/sig unless when with-syntax and begin call-with-current-continuation call-with-input-file call-with-output-file case cond define define-syntax delay do dynamic-wind else for-each if lambda let let* let-syntax letrec letrec-syntax map or syntax-rules ' * + , ,@ - ... / ; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan boolean? caar cadr call-with-input-file call-with-output-file call-with-values car cdddar cddddr cdr ceiling char->integer char-alphabetic? char-ci<=? char-ci=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char=? char>? char? close-input-port close-output-port complex? cons cos current-input-port current-output-port denominator display eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt floor force gcd imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lcm length list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file output-port? pair? peek-char port? positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string=? string>? string? substring symbol->string symbol? tan transcript-off transcript-on truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! with-input-from-file with-output-to-file write write-char zero?"},n={cN:"meta",b:"^#!",e:"$"},c={cN:"literal",b:"(#t|#f|#\\\\"+t+"|#\\\\.)"},l={cN:"number",v:[{b:r,r:0},{b:a,r:0},{b:"#b[0-1]+(/[0-1]+)?"},{b:"#o[0-7]+(/[0-7]+)?"},{b:"#x[0-9a-f]+(/[0-9a-f]+)?"}]},s=e.QSM,o=[e.C(";","$",{r:0}),e.C("#\\|","\\|#")],u={b:t,r:0},p={cN:"symbol",b:"'"+t},d={eW:!0,r:0},m={b:/'/,c:[{b:"\\(",e:"\\)",c:["self",c,s,l,u,p]}]},g={cN:"name",b:t,l:t,k:i},h={b:/lambda/,eW:!0,rB:!0,c:[g,{b:/\(/,e:/\)/,endsParent:!0,c:[u]}]},b={v:[{b:"\\(",e:"\\)"},{b:"\\[",e:"\\]"}],c:[h,g,d]};return d.c=[c,l,s,u,p,m,b].concat(o),{i:/\S/,c:[n,l,s,p,m,b].concat(o)}});hljs.registerLanguage("scss",function(e){var t="[a-zA-Z-][a-zA-Z0-9_-]*",i={cN:"variable",b:"(\\$"+t+")\\b"},r={cN:"number",b:"#[0-9A-Fa-f]+"};({cN:"attribute",b:"[A-Z\\_\\.\\-]+",e:":",eE:!0,i:"[^\\s]",starts:{eW:!0,eE:!0,c:[r,e.CSSNM,e.QSM,e.ASM,e.CBCM,{cN:"meta",b:"!important"}]}});return{cI:!0,i:"[=/|']",c:[e.CLCM,e.CBCM,{cN:"selector-id",b:"\\#[A-Za-z0-9_-]+",r:0},{cN:"selector-class",b:"\\.[A-Za-z0-9_-]+",r:0},{cN:"selector-attr",b:"\\[",e:"\\]",i:"$"},{cN:"selector-tag",b:"\\b(a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|div|dl|dt|em|embed|fieldset|figcaption|figure|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|keygen|label|legend|li|link|map|mark|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|samp|script|section|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)\\b",r:0},{b:":(visited|valid|root|right|required|read-write|read-only|out-range|optional|only-of-type|only-child|nth-of-type|nth-last-of-type|nth-last-child|nth-child|not|link|left|last-of-type|last-child|lang|invalid|indeterminate|in-range|hover|focus|first-of-type|first-line|first-letter|first-child|first|enabled|empty|disabled|default|checked|before|after|active)"},{b:"::(after|before|choices|first-letter|first-line|repeat-index|repeat-item|selection|value)"},i,{cN:"attribute",b:"\\b(z-index|word-wrap|word-spacing|word-break|width|widows|white-space|visibility|vertical-align|unicode-bidi|transition-timing-function|transition-property|transition-duration|transition-delay|transition|transform-style|transform-origin|transform|top|text-underline-position|text-transform|text-shadow|text-rendering|text-overflow|text-indent|text-decoration-style|text-decoration-line|text-decoration-color|text-decoration|text-align-last|text-align|tab-size|table-layout|right|resize|quotes|position|pointer-events|perspective-origin|perspective|page-break-inside|page-break-before|page-break-after|padding-top|padding-right|padding-left|padding-bottom|padding|overflow-y|overflow-x|overflow-wrap|overflow|outline-width|outline-style|outline-offset|outline-color|outline|orphans|order|opacity|object-position|object-fit|normal|none|nav-up|nav-right|nav-left|nav-index|nav-down|min-width|min-height|max-width|max-height|mask|marks|margin-top|margin-right|margin-left|margin-bottom|margin|list-style-type|list-style-position|list-style-image|list-style|line-height|letter-spacing|left|justify-content|initial|inherit|ime-mode|image-orientation|image-resolution|image-rendering|icon|hyphens|height|font-weight|font-variant-ligatures|font-variant|font-style|font-stretch|font-size-adjust|font-size|font-language-override|font-kerning|font-feature-settings|font-family|font|float|flex-wrap|flex-shrink|flex-grow|flex-flow|flex-direction|flex-basis|flex|filter|empty-cells|display|direction|cursor|counter-reset|counter-increment|content|column-width|column-span|column-rule-width|column-rule-style|column-rule-color|column-rule|column-gap|column-fill|column-count|columns|color|clip-path|clip|clear|caption-side|break-inside|break-before|break-after|box-sizing|box-shadow|box-decoration-break|bottom|border-width|border-top-width|border-top-style|border-top-right-radius|border-top-left-radius|border-top-color|border-top|border-style|border-spacing|border-right-width|border-right-style|border-right-color|border-right|border-radius|border-left-width|border-left-style|border-left-color|border-left|border-image-width|border-image-source|border-image-slice|border-image-repeat|border-image-outset|border-image|border-color|border-collapse|border-bottom-width|border-bottom-style|border-bottom-right-radius|border-bottom-left-radius|border-bottom-color|border-bottom|border|background-size|background-repeat|background-position|background-origin|background-image|background-color|background-clip|background-attachment|background-blend-mode|background|backface-visibility|auto|animation-timing-function|animation-play-state|animation-name|animation-iteration-count|animation-fill-mode|animation-duration|animation-direction|animation-delay|animation|align-self|align-items|align-content)\\b",i:"[^\\s]"},{b:"\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b"},{b:":",e:";",c:[i,r,e.CSSNM,e.QSM,e.ASM,{cN:"meta",b:"!important"}]},{b:"@",e:"[{;]",k:"mixin include extend for if else each while charset import debug media page content font-face namespace warn",c:[i,e.QSM,e.ASM,r,e.CSSNM,{b:"\\s[A-Za-z0-9_.-]+",r:0}]}]}});hljs.registerLanguage("xquery",function(e){var t="for let if while then else return where group by xquery encoding versionmodule namespace boundary-space preserve strip default collation base-uri orderingcopy-namespaces order declare import schema namespace function option in allowing emptyat tumbling window sliding window start when only end when previous next stable ascendingdescending empty greatest least some every satisfies switch case typeswitch try catch andor to union intersect instance of treat as castable cast map array delete insert intoreplace value rename copy modify update",a="false true xs:string xs:integer element item xs:date xs:datetime xs:float xs:double xs:decimal QName xs:anyURI xs:long xs:int xs:short xs:byte attribute",s={b:/\$[a-zA-Z0-9\-]+/},n={cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},r={cN:"string",v:[{b:/"/,e:/"/,c:[{b:/""/,r:0}]},{b:/'/,e:/'/,c:[{b:/''/,r:0}]}]},i={cN:"meta",b:"%\\w+"},c={cN:"comment",b:"\\(:",e:":\\)",r:10,c:[{cN:"doctag",b:"@\\w+"}]},o={b:"{",e:"}"},l=[s,r,n,c,i,o];return o.c=l,{aliases:["xpath","xq"],cI:!1,l:/[a-zA-Z\$][a-zA-Z0-9_:\-]*/,i:/(proc)|(abstract)|(extends)|(until)|(#)/,k:{keyword:t,literal:a},c:l}});hljs.registerLanguage("taggerscript",function(e){var c={cN:"comment",b:/\$noop\(/,e:/\)/,c:[{b:/\(/,e:/\)/,c:["self",{b:/\\./}]}],r:10},r={cN:"keyword",b:/\$(?!noop)[a-zA-Z][_a-zA-Z0-9]*/,e:/\(/,eE:!0},a={cN:"variable",b:/%[_a-zA-Z0-9:]*/,e:"%"},b={cN:"symbol",b:/\\./};return{c:[c,r,a,b]}});hljs.registerLanguage("smalltalk",function(e){var s="[a-z][a-zA-Z0-9_]*",a={cN:"string",b:"\\$.{1}"},r={cN:"symbol",b:"#"+e.UIR};return{aliases:["st"],k:"self super nil true false thisContext",c:[e.C('"','"'),e.ASM,{cN:"type",b:"\\b[A-Z][A-Za-z0-9_]*",r:0},{b:s+":",r:0},e.CNM,r,a,{b:"\\|[ ]*"+s+"([ ]+"+s+")*[ ]*\\|",rB:!0,e:/\|/,i:/\S/,c:[{b:"(\\|[ ]*)?"+s}]},{b:"\\#\\(",e:"\\)",c:[e.ASM,a,e.CNM,r]}]}});hljs.registerLanguage("ini",function(e){var b={cN:"string",c:[e.BE],v:[{b:"'''",e:"'''",r:10},{b:'"""',e:'"""',r:10},{b:'"',e:'"'},{b:"'",e:"'"}]};return{aliases:["toml"],cI:!0,i:/\S/,c:[e.C(";","$"),e.HCM,{cN:"section",b:/^\s*\[+/,e:/\]+/},{b:/^[a-z0-9\[\]_-]+\s*=\s*/,e:"$",rB:!0,c:[{cN:"attr",b:/[a-z0-9\[\]_-]+/},{b:/=/,eW:!0,r:0,c:[{cN:"literal",b:/\bon|off|true|false|yes|no\b/},{cN:"variable",v:[{b:/\$[\w\d"][\w\d_]*/},{b:/\$\{(.*?)}/}]},b,{cN:"number",b:/([\+\-]+)?[\d]+_[\d_]+/},e.NM]}]}]}});hljs.registerLanguage("actionscript",function(e){var a="[a-zA-Z_$][a-zA-Z0-9_$]*",t="([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)",c={cN:"rest_arg",b:"[.]{3}",e:a,r:10};return{aliases:["as"],k:{keyword:"as break case catch class const continue default delete do dynamic each else extends final finally for function get if implements import in include instanceof interface internal is namespace native new override package private protected public return set static super switch this throw try typeof use var void while with",literal:"true false null undefined"},c:[e.ASM,e.QSM,e.CLCM,e.CBCM,e.CNM,{cN:"class",bK:"package",e:"{",c:[e.TM]},{cN:"class",bK:"class interface",e:"{",eE:!0,c:[{bK:"extends implements"},e.TM]},{cN:"meta",bK:"import include",e:";",k:{"meta-keyword":"import include"}},{cN:"function",bK:"function",e:"[{;]",eE:!0,i:"\\S",c:[e.TM,{cN:"params",b:"\\(",e:"\\)",c:[e.ASM,e.QSM,e.CLCM,e.CBCM,c]},{b:":\\s*"+t}]},e.METHOD_GUARD],i:/#/}});hljs.registerLanguage("mercury",function(e){var i={keyword:"module use_module import_module include_module end_module initialise mutable initialize finalize finalise interface implementation pred mode func type inst solver any_pred any_func is semidet det nondet multi erroneous failure cc_nondet cc_multi typeclass instance where pragma promise external trace atomic or_else require_complete_switch require_det require_semidet require_multi require_nondet require_cc_multi require_cc_nondet require_erroneous require_failure",meta:"inline no_inline type_spec source_file fact_table obsolete memo loop_check minimal_model terminates does_not_terminate check_termination promise_equivalent_clauses foreign_proc foreign_decl foreign_code foreign_type foreign_import_module foreign_export_enum foreign_export foreign_enum may_call_mercury will_not_call_mercury thread_safe not_thread_safe maybe_thread_safe promise_pure promise_semipure tabled_for_io local untrailed trailed attach_to_io_state can_pass_as_mercury_type stable will_not_throw_exception may_modify_trail will_not_modify_trail may_duplicate may_not_duplicate affects_liveness does_not_affect_liveness doesnt_affect_liveness no_sharing unknown_sharing sharing",built_in:"some all not if then else true fail false try catch catch_any semidet_true semidet_false semidet_fail impure_true impure semipure"},r=e.C("%","$"),t={cN:"number",b:"0'.\\|0[box][0-9a-fA-F]*"},_=e.inherit(e.ASM,{r:0}),n=e.inherit(e.QSM,{r:0}),a={cN:"subst",b:"\\\\[abfnrtv]\\|\\\\x[0-9a-fA-F]*\\\\\\|%[-+# *.0-9]*[dioxXucsfeEgGp]",r:0};n.c.push(a);var o={cN:"built_in",v:[{b:"<=>"},{b:"<=",r:0},{b:"=>",r:0},{b:"/\\\\"},{b:"\\\\/"}]},l={cN:"built_in",v:[{b:":-\\|-->"},{b:"=",r:0}]};return{aliases:["m","moo"],k:i,c:[o,l,r,e.CBCM,t,e.NM,_,n,{b:/:-/}]}});hljs.registerLanguage("scilab",function(e){var s=[e.CNM,{cN:"string",b:"'|\"",e:"'|\"",c:[e.BE,{b:"''"}]}];return{aliases:["sci"],l:/%?\w+/,k:{keyword:"abort break case clear catch continue do elseif else endfunction end for function global if pause return resume select try then while",literal:"%f %F %t %T %pi %eps %inf %nan %e %i %z %s",built_in:"abs and acos asin atan ceil cd chdir clearglobal cosh cos cumprod deff disp error exec execstr exists exp eye gettext floor fprintf fread fsolve imag isdef isempty isinfisnan isvector lasterror length load linspace list listfiles log10 log2 log max min msprintf mclose mopen ones or pathconvert poly printf prod pwd rand real round sinh sin size gsort sprintf sqrt strcat strcmps tring sum system tanh tan type typename warning zeros matrix"},i:'("|#|/\\*|\\s+/\\w+)',c:[{cN:"function",bK:"function",e:"$",c:[e.UTM,{cN:"params",b:"\\(",e:"\\)"}]},{b:"[a-zA-Z_][a-zA-Z_0-9]*('+[\\.']*|[\\.']+)",e:"",r:0},{b:"\\[",e:"\\]'*[\\.']*",r:0,c:s},e.C("//","$")].concat(s)}});hljs.registerLanguage("htmlbars",function(e){var a="action collection component concat debugger each each-in else get hash if input link-to loc log mut outlet partial query-params render textarea unbound unless with yield view",t={i:/\}\}/,b:/[a-zA-Z0-9_]+=/,rB:!0,r:0,c:[{cN:"attr",b:/[a-zA-Z0-9_]+/}]},i=({i:/\}\}/,b:/\)/,e:/\)/,c:[{b:/[a-zA-Z\.\-]+/,k:{built_in:a},starts:{eW:!0,r:0,c:[e.QSM]}}]},{eW:!0,r:0,k:{keyword:"as",built_in:a},c:[e.QSM,t,e.NM]});return{cI:!0,sL:"xml",c:[e.C("{{!(--)?","(--)?}}"),{cN:"template-tag",b:/\{\{[#\/]/,e:/\}\}/,c:[{cN:"name",b:/[a-zA-Z\.\-]+/,k:{"builtin-name":a},starts:i}]},{cN:"template-variable",b:/\{\{[a-zA-Z][a-zA-Z\-]+/,e:/\}\}/,k:{keyword:"as",built_in:a},c:[e.QSM]}]}});hljs.registerLanguage("kotlin",function(e){var t={keyword:"abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline interface annotation data sealed internal infix operator out by constructor super trait volatile transient native default",built_in:"Byte Short Char Int Long Boolean Float Double Void Unit Nothing",literal:"true false null"},r={cN:"keyword",b:/\b(break|continue|return|this)\b/,starts:{c:[{cN:"symbol",b:/@\w+/}]}},n={cN:"symbol",b:e.UIR+"@"},i={cN:"subst",v:[{b:"\\$"+e.UIR},{b:"\\${",e:"}",c:[e.ASM,e.CNM]}]},a={cN:"string",v:[{b:'"""',e:'"""',c:[i]},{b:"'",e:"'",i:/\n/,c:[e.BE]},{b:'"',e:'"',i:/\n/,c:[e.BE,i]}]},c={cN:"meta",b:"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*"+e.UIR+")?"},s={cN:"meta",b:"@"+e.UIR,c:[{b:/\(/,e:/\)/,c:[e.inherit(a,{cN:"meta-string"})]}]};return{k:t,c:[e.C("/\\*\\*","\\*/",{r:0,c:[{cN:"doctag",b:"@[A-Za-z]+"}]}),e.CLCM,e.CBCM,r,n,c,s,{cN:"function",bK:"fun",e:"[(]|$",rB:!0,eE:!0,k:t,i:/fun\s+(<.*>)?[^\s\(]+(\s+[^\s\(]+)\s*=/,r:5,c:[{b:e.UIR+"\\s*\\(",rB:!0,r:0,c:[e.UTM]},{cN:"type",b://,k:"reified",r:0},{cN:"params",b:/\(/,e:/\)/,endsParent:!0,k:t,r:0,c:[{b:/:/,e:/[=,\/]/,eW:!0,c:[{cN:"type",b:e.UIR},e.CLCM,e.CBCM],r:0},e.CLCM,e.CBCM,c,s,a,e.CNM]},e.CBCM]},{cN:"class",bK:"class interface trait",e:/[:\{(]|$/,eE:!0,i:"extends implements",c:[{bK:"public protected internal private constructor"},e.UTM,{cN:"type",b://,eB:!0,eE:!0,r:0},{cN:"type",b:/[,:]\s*/,e:/[<\(,]|$/,eB:!0,rE:!0},c,s]},a,{cN:"meta",b:"^#!/usr/bin/env",e:"$",i:"\n"},e.CNM]}});hljs.registerLanguage("profile",function(e){return{c:[e.CNM,{b:"[a-zA-Z_][\\da-zA-Z_]+\\.[\\da-zA-Z_]{1,3}",e:":",eE:!0},{b:"(ncalls|tottime|cumtime)",e:"$",k:"ncalls tottime|10 cumtime|10 filename",r:10},{b:"function calls",e:"$",c:[e.CNM],r:10},e.ASM,e.QSM,{cN:"string",b:"\\(",e:"\\)$",eB:!0,eE:!0,r:0}]}});hljs.registerLanguage("cmake",function(e){return{aliases:["cmake.in"],cI:!0,k:{keyword:"add_custom_command add_custom_target add_definitions add_dependencies add_executable add_library add_subdirectory add_test aux_source_directory break build_command cmake_minimum_required cmake_policy configure_file create_test_sourcelist define_property else elseif enable_language enable_testing endforeach endfunction endif endmacro endwhile execute_process export find_file find_library find_package find_path find_program fltk_wrap_ui foreach function get_cmake_property get_directory_property get_filename_component get_property get_source_file_property get_target_property get_test_property if include include_directories include_external_msproject include_regular_expression install link_directories load_cache load_command macro mark_as_advanced message option output_required_files project qt_wrap_cpp qt_wrap_ui remove_definitions return separate_arguments set set_directory_properties set_property set_source_files_properties set_target_properties set_tests_properties site_name source_group string target_link_libraries try_compile try_run unset variable_watch while build_name exec_program export_library_dependencies install_files install_programs install_targets link_libraries make_directory remove subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file qt5_use_modules qt5_use_package qt5_wrap_cpp on off true false and or equal less greater strless strgreater strequal matches"},c:[{cN:"variable",b:"\\${",e:"}"},e.HCM,e.QSM,e.NM]}});hljs.registerLanguage("elm",function(e){var i={v:[e.C("--","$"),e.C("{-","-}",{c:["self"]})]},t={cN:"type",b:"\\b[A-Z][\\w']*",r:0},c={b:"\\(",e:"\\)",i:'"',c:[{cN:"type",b:"\\b[A-Z][\\w]*(\\((\\.\\.|,|\\w+)\\))?"},i]},n={b:"{",e:"}",c:c.c};return{k:"let in if then else case of where module import exposing type alias as infix infixl infixr port effect command subscription",c:[{bK:"port effect module",e:"exposing",k:"port effect module where command subscription exposing",c:[c,i],i:"\\W\\.|;"},{b:"import",e:"$",k:"import as exposing",c:[c,i],i:"\\W\\.|;"},{b:"type",e:"$",k:"type alias",c:[t,c,n,i]},{bK:"infix infixl infixr",e:"$",c:[e.CNM,i]},{b:"port",e:"$",k:"port",c:[i]},e.QSM,e.CNM,t,e.inherit(e.TM,{b:"^[_a-z][\\w']*"}),i,{b:"->|<-"}]}});hljs.registerLanguage("excel",function(E){return{aliases:["xlsx","xls"],cI:!0,l:/[a-zA-Z][\w\.]*/,k:{built_in:"ABS ACCRINT ACCRINTM ACOS ACOSH ACOT ACOTH AGGREGATE ADDRESS AMORDEGRC AMORLINC AND ARABIC AREAS ASC ASIN ASINH ATAN ATAN2 ATANH AVEDEV AVERAGE AVERAGEA AVERAGEIF AVERAGEIFS BAHTTEXT BASE BESSELI BESSELJ BESSELK BESSELY BETADIST BETA.DIST BETAINV BETA.INV BIN2DEC BIN2HEX BIN2OCT BINOMDIST BINOM.DIST BINOM.DIST.RANGE BINOM.INV BITAND BITLSHIFT BITOR BITRSHIFT BITXOR CALL CEILING CEILING.MATH CEILING.PRECISE CELL CHAR CHIDIST CHIINV CHITEST CHISQ.DIST CHISQ.DIST.RT CHISQ.INV CHISQ.INV.RT CHISQ.TEST CHOOSE CLEAN CODE COLUMN COLUMNS COMBIN COMBINA COMPLEX CONCAT CONCATENATE CONFIDENCE CONFIDENCE.NORM CONFIDENCE.T CONVERT CORREL COS COSH COT COTH COUNT COUNTA COUNTBLANK COUNTIF COUNTIFS COUPDAYBS COUPDAYS COUPDAYSNC COUPNCD COUPNUM COUPPCD COVAR COVARIANCE.P COVARIANCE.S CRITBINOM CSC CSCH CUBEKPIMEMBER CUBEMEMBER CUBEMEMBERPROPERTY CUBERANKEDMEMBER CUBESET CUBESETCOUNT CUBEVALUE CUMIPMT CUMPRINC DATE DATEDIF DATEVALUE DAVERAGE DAY DAYS DAYS360 DB DBCS DCOUNT DCOUNTA DDB DEC2BIN DEC2HEX DEC2OCT DECIMAL DEGREES DELTA DEVSQ DGET DISC DMAX DMIN DOLLAR DOLLARDE DOLLARFR DPRODUCT DSTDEV DSTDEVP DSUM DURATION DVAR DVARP EDATE EFFECT ENCODEURL EOMONTH ERF ERF.PRECISE ERFC ERFC.PRECISE ERROR.TYPE EUROCONVERT EVEN EXACT EXP EXPON.DIST EXPONDIST FACT FACTDOUBLE FALSE|0 F.DIST FDIST F.DIST.RT FILTERXML FIND FINDB F.INV F.INV.RT FINV FISHER FISHERINV FIXED FLOOR FLOOR.MATH FLOOR.PRECISE FORECAST FORECAST.ETS FORECAST.ETS.CONFINT FORECAST.ETS.SEASONALITY FORECAST.ETS.STAT FORECAST.LINEAR FORMULATEXT FREQUENCY F.TEST FTEST FV FVSCHEDULE GAMMA GAMMA.DIST GAMMADIST GAMMA.INV GAMMAINV GAMMALN GAMMALN.PRECISE GAUSS GCD GEOMEAN GESTEP GETPIVOTDATA GROWTH HARMEAN HEX2BIN HEX2DEC HEX2OCT HLOOKUP HOUR HYPERLINK HYPGEOM.DIST HYPGEOMDIST IF|0 IFERROR IFNA IFS IMABS IMAGINARY IMARGUMENT IMCONJUGATE IMCOS IMCOSH IMCOT IMCSC IMCSCH IMDIV IMEXP IMLN IMLOG10 IMLOG2 IMPOWER IMPRODUCT IMREAL IMSEC IMSECH IMSIN IMSINH IMSQRT IMSUB IMSUM IMTAN INDEX INDIRECT INFO INT INTERCEPT INTRATE IPMT IRR ISBLANK ISERR ISERROR ISEVEN ISFORMULA ISLOGICAL ISNA ISNONTEXT ISNUMBER ISODD ISREF ISTEXT ISO.CEILING ISOWEEKNUM ISPMT JIS KURT LARGE LCM LEFT LEFTB LEN LENB LINEST LN LOG LOG10 LOGEST LOGINV LOGNORM.DIST LOGNORMDIST LOGNORM.INV LOOKUP LOWER MATCH MAX MAXA MAXIFS MDETERM MDURATION MEDIAN MID MIDBs MIN MINIFS MINA MINUTE MINVERSE MIRR MMULT MOD MODE MODE.MULT MODE.SNGL MONTH MROUND MULTINOMIAL MUNIT N NA NEGBINOM.DIST NEGBINOMDIST NETWORKDAYS NETWORKDAYS.INTL NOMINAL NORM.DIST NORMDIST NORMINV NORM.INV NORM.S.DIST NORMSDIST NORM.S.INV NORMSINV NOT NOW NPER NPV NUMBERVALUE OCT2BIN OCT2DEC OCT2HEX ODD ODDFPRICE ODDFYIELD ODDLPRICE ODDLYIELD OFFSET OR PDURATION PEARSON PERCENTILE.EXC PERCENTILE.INC PERCENTILE PERCENTRANK.EXC PERCENTRANK.INC PERCENTRANK PERMUT PERMUTATIONA PHI PHONETIC PI PMT POISSON.DIST POISSON POWER PPMT PRICE PRICEDISC PRICEMAT PROB PRODUCT PROPER PV QUARTILE QUARTILE.EXC QUARTILE.INC QUOTIENT RADIANS RAND RANDBETWEEN RANK.AVG RANK.EQ RANK RATE RECEIVED REGISTER.ID REPLACE REPLACEB REPT RIGHT RIGHTB ROMAN ROUND ROUNDDOWN ROUNDUP ROW ROWS RRI RSQ RTD SEARCH SEARCHB SEC SECH SECOND SERIESSUM SHEET SHEETS SIGN SIN SINH SKEW SKEW.P SLN SLOPE SMALL SQL.REQUEST SQRT SQRTPI STANDARDIZE STDEV STDEV.P STDEV.S STDEVA STDEVP STDEVPA STEYX SUBSTITUTE SUBTOTAL SUM SUMIF SUMIFS SUMPRODUCT SUMSQ SUMX2MY2 SUMX2PY2 SUMXMY2 SWITCH SYD T TAN TANH TBILLEQ TBILLPRICE TBILLYIELD T.DIST T.DIST.2T T.DIST.RT TDIST TEXT TEXTJOIN TIME TIMEVALUE T.INV T.INV.2T TINV TODAY TRANSPOSE TREND TRIM TRIMMEAN TRUE|0 TRUNC T.TEST TTEST TYPE UNICHAR UNICODE UPPER VALUE VAR VAR.P VAR.S VARA VARP VARPA VDB VLOOKUP WEBSERVICE WEEKDAY WEEKNUM WEIBULL WEIBULL.DIST WORKDAY WORKDAY.INTL XIRR XNPV XOR YEAR YEARFRAC YIELD YIELDDISC YIELDMAT Z.TEST ZTEST"},c:[{b:/^=/,e:/[^=]/,rE:!0,i:/=/,r:10},{cN:"symbol",b:/\b[A-Z]{1,2}\d+\b/,e:/[^\d]/,eE:!0,r:0},{cN:"symbol",b:/[A-Z]{0,2}\d*:[A-Z]{0,2}\d*/,r:0},E.BE,E.QSM,{cN:"number",b:E.NR+"(%)?",r:0},E.C(/\bN\(/,/\)/,{eB:!0,eE:!0,i:/\n/})]}});hljs.registerLanguage("r",function(e){var r="([a-zA-Z]|\\.[a-zA-Z.])[a-zA-Z0-9._]*";return{c:[e.HCM,{b:r,l:r,k:{keyword:"function if in break next repeat else for return switch while try tryCatch stop warning require library attach detach source setMethod setGeneric setGroupGeneric setClass ...",literal:"NULL NA TRUE FALSE T F Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10"},r:0},{cN:"number",b:"0[xX][0-9a-fA-F]+[Li]?\\b",r:0},{cN:"number",b:"\\d+(?:[eE][+\\-]?\\d*)?L\\b",r:0},{cN:"number",b:"\\d+\\.(?!\\d)(?:i\\b)?",r:0},{cN:"number",b:"\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d*)?i?\\b",r:0},{cN:"number",b:"\\.\\d+(?:[eE][+\\-]?\\d*)?i?\\b",r:0},{b:"`",e:"`",r:0},{cN:"string",c:[e.BE],v:[{b:'"',e:'"'},{b:"'",e:"'"}]}]}}); \ No newline at end of file diff --git a/public/plugins/jquery.datetimepicker-2.4.5/jquery.datetimepicker.css b/public/plugins/jquery.datetimepicker-2.4.5/jquery.datetimepicker.css deleted file mode 100644 index a26fccec4..000000000 --- a/public/plugins/jquery.datetimepicker-2.4.5/jquery.datetimepicker.css +++ /dev/null @@ -1,545 +0,0 @@ -.xdsoft_datetimepicker { - box-shadow: 0 5px 15px -5px rgba(0, 0, 0, 0.506); - background: #fff; - border-bottom: 1px solid #bbb; - border-left: 1px solid #ccc; - border-right: 1px solid #ccc; - border-top: 1px solid #ccc; - color: #333; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - padding: 8px; - padding-left: 0; - padding-top: 2px; - position: absolute; - z-index: 9999; - -moz-box-sizing: border-box; - box-sizing: border-box; - display: none; -} - -.xdsoft_datetimepicker iframe { - position: absolute; - left: 0; - top: 0; - width: 75px; - height: 210px; - background: transparent; - border: none; -} - -/*For IE8 or lower*/ -.xdsoft_datetimepicker button { - border: none !important; -} - -.xdsoft_noselect { - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - -o-user-select: none; - user-select: none; -} - -.xdsoft_noselect::selection { background: transparent } -.xdsoft_noselect::-moz-selection { background: transparent } - -.xdsoft_datetimepicker.xdsoft_inline { - display: inline-block; - position: static; - box-shadow: none; -} - -.xdsoft_datetimepicker * { - -moz-box-sizing: border-box; - box-sizing: border-box; - padding: 0; - margin: 0; -} - -.xdsoft_datetimepicker .xdsoft_datepicker, .xdsoft_datetimepicker .xdsoft_timepicker { - display: none; -} - -.xdsoft_datetimepicker .xdsoft_datepicker.active, .xdsoft_datetimepicker .xdsoft_timepicker.active { - display: block; -} - -.xdsoft_datetimepicker .xdsoft_datepicker { - width: 224px; - float: left; - margin-left: 8px; -} - -.xdsoft_datetimepicker.xdsoft_showweeks .xdsoft_datepicker { - width: 256px; -} - -.xdsoft_datetimepicker .xdsoft_timepicker { - width: 58px; - float: left; - text-align: center; - margin-left: 8px; - margin-top: 0; -} - -.xdsoft_datetimepicker .xdsoft_datepicker.active+.xdsoft_timepicker { - margin-top: 8px; - margin-bottom: 3px -} - -.xdsoft_datetimepicker .xdsoft_mounthpicker { - position: relative; - text-align: center; -} - -.xdsoft_datetimepicker .xdsoft_label i, -.xdsoft_datetimepicker .xdsoft_prev, -.xdsoft_datetimepicker .xdsoft_next, -.xdsoft_datetimepicker .xdsoft_today_button { - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAAeCAYAAADaW7vzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Q0NBRjI1NjM0M0UwMTFFNDk4NkFGMzJFQkQzQjEwRUIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Q0NBRjI1NjQ0M0UwMTFFNDk4NkFGMzJFQkQzQjEwRUIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpDQ0FGMjU2MTQzRTAxMUU0OTg2QUYzMkVCRDNCMTBFQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpDQ0FGMjU2MjQzRTAxMUU0OTg2QUYzMkVCRDNCMTBFQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PoNEP54AAAIOSURBVHja7Jq9TsMwEMcxrZD4WpBYeKUCe+kTMCACHZh4BFfHO/AAIHZGFhYkBBsSEqxsLCAgXKhbXYOTxh9pfJVP+qutnZ5s/5Lz2Y5I03QhWji2GIcgAokWgfCxNvcOCCGKqiSqhUp0laHOne05vdEyGMfkdxJDVjgwDlEQgYQBgx+ULJaWSXXS6r/ER5FBVR8VfGftTKcITNs+a1XpcFoExREIDF14AVIFxgQUS+h520cdud6wNkC0UBw6BCO/HoCYwBhD8QCkQ/x1mwDyD4plh4D6DDV0TAGyo4HcawLIBBSLDkHeH0Mg2yVP3l4TQMZQDDsEOl/MgHQqhMNuE0D+oBh0CIr8MAKyazBH9WyBuKxDWgbXfjNf32TZ1KWm/Ap1oSk/R53UtQ5xTh3LUlMmT8gt6g51Q9p+SobxgJQ/qmsfZhWywGFSl0yBjCLJCMgXail3b7+rumdVJ2YRss4cN+r6qAHDkPWjPjdJCF4n9RmAD/V9A/Wp4NQassDjwlB6XBiCxcJQWmZZb8THFilfy/lfrTvLghq2TqTHrRMTKNJ0sIhdo15RT+RpyWwFdY96UZ/LdQKBGjcXpcc1AlSFEfLmouD+1knuxBDUVrvOBmoOC/rEcN7OQxKVeJTCiAdUzUJhA2Oez9QTkp72OTVcxDcXY8iKNkxGAJXmJCOQwOa6dhyXsOa6XwEGAKdeb5ET3rQdAAAAAElFTkSuQmCC); -} - -.xdsoft_datetimepicker .xdsoft_label i { - opacity: 0.5; - background-position: -92px -19px; - display: inline-block; - width: 9px; - height: 20px; - vertical-align: middle; -} - -.xdsoft_datetimepicker .xdsoft_prev { - float: left; - background-position: -20px 0; -} -.xdsoft_datetimepicker .xdsoft_today_button { - float: left; - background-position: -70px 0; - margin-left: 5px; -} - -.xdsoft_datetimepicker .xdsoft_next { - float: right; - background-position: 0 0; -} - -.xdsoft_datetimepicker .xdsoft_next, -.xdsoft_datetimepicker .xdsoft_prev , -.xdsoft_datetimepicker .xdsoft_today_button { - background-color: transparent; - background-repeat: no-repeat; - border: 0 none; - cursor: pointer; - display: block; - height: 30px; - opacity: 0.5; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; - outline: medium none; - overflow: hidden; - padding: 0; - position: relative; - text-indent: 100%; - white-space: nowrap; - width: 20px; - min-width: 0; -} - -.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_prev, -.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_next { - float: none; - background-position: -40px -15px; - height: 15px; - width: 30px; - display: block; - margin-left: 14px; - margin-top: 7px; -} - -.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_prev { - background-position: -40px 0; - margin-bottom: 7px; - margin-top: 0; -} - -.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box { - height: 151px; - overflow: hidden; - border-bottom: 1px solid #ddd; -} - -.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div >div { - background: #f5f5f5; - border-top: 1px solid #ddd; - color: #666; - font-size: 12px; - text-align: center; - border-collapse: collapse; - cursor: pointer; - border-bottom-width: 0; - height: 25px; - line-height: 25px; -} - -.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div > div:first-child { - border-top-width: 0; -} - -.xdsoft_datetimepicker .xdsoft_today_button:hover, -.xdsoft_datetimepicker .xdsoft_next:hover, -.xdsoft_datetimepicker .xdsoft_prev:hover { - opacity: 1; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; -} - -.xdsoft_datetimepicker .xdsoft_label { - display: inline; - position: relative; - z-index: 9999; - margin: 0; - padding: 5px 3px; - font-size: 14px; - line-height: 20px; - font-weight: bold; - background-color: #fff; - float: left; - width: 182px; - text-align: center; - cursor: pointer; -} - -.xdsoft_datetimepicker .xdsoft_label:hover>span { - text-decoration: underline; -} - -.xdsoft_datetimepicker .xdsoft_label:hover i { - opacity: 1.0; -} - -.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select { - border: 1px solid #ccc; - position: absolute; - right: 0; - top: 30px; - z-index: 101; - display: none; - background: #fff; - max-height: 160px; - overflow-y: hidden; -} - -.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select.xdsoft_monthselect{ right: -7px } -.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select.xdsoft_yearselect{ right: 2px } -.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select > div > .xdsoft_option:hover { - color: #fff; - background: #ff8000; -} - -.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select > div > .xdsoft_option { - padding: 2px 10px 2px 5px; - text-decoration: none !important; -} - -.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select > div > .xdsoft_option.xdsoft_current { - background: #33aaff; - box-shadow: #178fe5 0 1px 3px 0 inset; - color: #fff; - font-weight: 700; -} - -.xdsoft_datetimepicker .xdsoft_month { - width: 100px; - text-align: right; -} - -.xdsoft_datetimepicker .xdsoft_calendar { - clear: both; -} - -.xdsoft_datetimepicker .xdsoft_year{ - width: 48px; - margin-left: 5px; -} - -.xdsoft_datetimepicker .xdsoft_calendar table { - border-collapse: collapse; - width: 100%; - -} - -.xdsoft_datetimepicker .xdsoft_calendar td > div { - padding-right: 5px; -} - -.xdsoft_datetimepicker .xdsoft_calendar th { - height: 25px; -} - -.xdsoft_datetimepicker .xdsoft_calendar td,.xdsoft_datetimepicker .xdsoft_calendar th { - width: 14.2857142%; - background: #f5f5f5; - border: 1px solid #ddd; - color: #666; - font-size: 12px; - text-align: right; - vertical-align: middle; - padding: 0; - border-collapse: collapse; - cursor: pointer; - height: 25px; -} -.xdsoft_datetimepicker.xdsoft_showweeks .xdsoft_calendar td,.xdsoft_datetimepicker.xdsoft_showweeks .xdsoft_calendar th { - width: 12.5%; -} - -.xdsoft_datetimepicker .xdsoft_calendar th { - background: #f1f1f1; -} - -.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_today { - color: #33aaff; -} - -.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_highlighted_default { - background: #ffe9d2; - box-shadow: #ffb871 0 1px 4px 0 inset; - color: #000; -} -.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_highlighted_mint { - background: #c1ffc9; - box-shadow: #00dd1c 0 1px 4px 0 inset; - color: #000; -} - -.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_default, -.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_current, -.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div >div.xdsoft_current { - background: #33aaff; - box-shadow: #178fe5 0 1px 3px 0 inset; - color: #fff; - font-weight: 700; -} - -.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_other_month, -.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_disabled, -.xdsoft_datetimepicker .xdsoft_time_box >div >div.xdsoft_disabled { - opacity: 0.5; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; - cursor: default; -} - -.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_other_month.xdsoft_disabled { - opacity: 0.2; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=20)"; -} - -.xdsoft_datetimepicker .xdsoft_calendar td:hover, -.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div >div:hover { - color: #fff !important; - background: #ff8000 !important; - box-shadow: none !important; -} - -.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_current.xdsoft_disabled:hover, -.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box>div>div.xdsoft_current.xdsoft_disabled:hover { - background: #33aaff !important; - box-shadow: #178fe5 0 1px 3px 0 inset !important; - color: #fff !important; -} - -.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_disabled:hover, -.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div >div.xdsoft_disabled:hover { - color: inherit !important; - background: inherit !important; - box-shadow: inherit !important; -} - -.xdsoft_datetimepicker .xdsoft_calendar th { - font-weight: 700; - text-align: center; - color: #999; - cursor: default; -} - -.xdsoft_datetimepicker .xdsoft_copyright { - color: #ccc !important; - font-size: 10px; - clear: both; - float: none; - margin-left: 8px; -} - -.xdsoft_datetimepicker .xdsoft_copyright a { color: #eee !important } -.xdsoft_datetimepicker .xdsoft_copyright a:hover { color: #aaa !important } - -.xdsoft_time_box { - position: relative; - border: 1px solid #ccc; -} -.xdsoft_scrollbar >.xdsoft_scroller { - background: #ccc !important; - height: 20px; - border-radius: 3px; -} -.xdsoft_scrollbar { - position: absolute; - width: 7px; - right: 0; - top: 0; - bottom: 0; - cursor: pointer; -} -.xdsoft_scroller_box { - position: relative; -} - -.xdsoft_datetimepicker.xdsoft_dark { - box-shadow: 0 5px 15px -5px rgba(255, 255, 255, 0.506); - background: #000; - border-bottom: 1px solid #444; - border-left: 1px solid #333; - border-right: 1px solid #333; - border-top: 1px solid #333; - color: #ccc; -} - -.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box { - border-bottom: 1px solid #222; -} -.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box >div >div { - background: #0a0a0a; - border-top: 1px solid #222; - color: #999; -} - -.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label { - background-color: #000; -} -.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label > .xdsoft_select { - border: 1px solid #333; - background: #000; -} - -.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label > .xdsoft_select > div > .xdsoft_option:hover { - color: #000; - background: #007fff; -} - -.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label > .xdsoft_select > div > .xdsoft_option.xdsoft_current { - background: #cc5500; - box-shadow: #b03e00 0 1px 3px 0 inset; - color: #000; -} - -.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label i, -.xdsoft_datetimepicker.xdsoft_dark .xdsoft_prev, -.xdsoft_datetimepicker.xdsoft_dark .xdsoft_next, -.xdsoft_datetimepicker.xdsoft_dark .xdsoft_today_button { - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAAeCAYAAADaW7vzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUExQUUzOTA0M0UyMTFFNDlBM0FFQTJENTExRDVBODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUExQUUzOTE0M0UyMTFFNDlBM0FFQTJENTExRDVBODYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBQTFBRTM4RTQzRTIxMUU0OUEzQUVBMkQ1MTFENUE4NiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBQTFBRTM4RjQzRTIxMUU0OUEzQUVBMkQ1MTFENUE4NiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pp0VxGEAAAIASURBVHja7JrNSgMxEMebtgh+3MSLr1T1Xn2CHoSKB08+QmR8Bx9A8e7RixdB9CKCoNdexIugxFlJa7rNZneTbLIpM/CnNLsdMvNjM8l0mRCiQ9Ye61IKCAgZAUnH+mU3MMZaHYChBnJUDzWOFZdVfc5+ZFLbrWDeXPwbxIqrLLfaeS0hEBVGIRQCEiZoHQwtlGSByCCdYBl8g8egTTAWoKQMRBRBcZxYlhzhKegqMOageErsCHVkk3hXIFooDgHB1KkHIHVgzKB4ADJQ/A1jAFmAYhkQqA5TOBtocrKrgXwQA8gcFIuAIO8sQSA7hidvPwaQGZSaAYHOUWJABhWWw2EMIH9QagQERU4SArJXo0ZZL18uvaxejXt/Em8xjVBXmvFr1KVm/AJ10tRe2XnraNqaJvKE3KHuUbfK1E+VHB0q40/y3sdQSxY4FHWeKJCunP8UyDdqJZenT3ntVV5jIYCAh20vT7ioP8tpf6E2lfEMwERe+whV1MHjwZB7PBiCxcGQWwKZKD62lfGNnP/1poFAA60T7rF1UgcKd2id3KDeUS+oLWV8DfWAepOfq00CgQabi9zjcgJVYVD7PVzQUAUGAQkbNJTBICDhgwYTjDYD6XeW08ZKh+A4pYkzenOxXUbvZcWz7E8ykRMnIHGX1XPl+1m2vPYpL+2qdb8CDAARlKFEz/ZVkAAAAABJRU5ErkJggg==); -} - -.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td, -.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th { - background: #0a0a0a; - border: 1px solid #222; - color: #999; -} - -.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th { - background: #0e0e0e; -} - -.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_today { - color: #cc5500; -} - -.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_highlighted_default { - background: #ffe9d2; - box-shadow: #ffb871 0 1px 4px 0 inset; - color:#000; -} -.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_highlighted_mint { - background: #c1ffc9; - box-shadow: #00dd1c 0 1px 4px 0 inset; - color:#000; -} - -.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_default, -.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_current, -.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box >div >div.xdsoft_current { - background: #cc5500; - box-shadow: #b03e00 0 1px 3px 0 inset; - color: #000; -} - -.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td:hover, -.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box >div >div:hover { - color: #000 !important; - background: #007fff !important; -} - -.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th { - color: #666; -} - -.xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright { color: #333 !important } -.xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright a { color: #111 !important } -.xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright a:hover { color: #555 !important } - -.xdsoft_dark .xdsoft_time_box { - border: 1px solid #333; -} - -.xdsoft_dark .xdsoft_scrollbar >.xdsoft_scroller { - background: #333 !important; -} -.xdsoft_datetimepicker .xdsoft_save_selected { - display: block; - border: 1px solid #dddddd !important; - margin-top: 5px; - width: 100%; - color: #454551; - font-size: 13px; -} -.xdsoft_datetimepicker .blue-gradient-button { - font-family: "museo-sans", "Book Antiqua", sans-serif; - font-size: 12px; - font-weight: 300; - color: #82878c; - height: 28px; - position: relative; - padding: 4px 17px 4px 33px; - border: 1px solid #d7d8da; - background: -moz-linear-gradient(top, #fff 0%, #f4f8fa 73%); - /* FF3.6+ */ - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fff), color-stop(73%, #f4f8fa)); - /* Chrome,Safari4+ */ - background: -webkit-linear-gradient(top, #fff 0%, #f4f8fa 73%); - /* Chrome10+,Safari5.1+ */ - background: -o-linear-gradient(top, #fff 0%, #f4f8fa 73%); - /* Opera 11.10+ */ - background: -ms-linear-gradient(top, #fff 0%, #f4f8fa 73%); - /* IE10+ */ - background: linear-gradient(to bottom, #fff 0%, #f4f8fa 73%); - /* W3C */ - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fff', endColorstr='#f4f8fa',GradientType=0 ); -/* IE6-9 */ -} -.xdsoft_datetimepicker .blue-gradient-button:hover, .xdsoft_datetimepicker .blue-gradient-button:focus, .xdsoft_datetimepicker .blue-gradient-button:hover span, .xdsoft_datetimepicker .blue-gradient-button:focus span { - color: #454551; - background: -moz-linear-gradient(top, #f4f8fa 0%, #FFF 73%); - /* FF3.6+ */ - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #f4f8fa), color-stop(73%, #FFF)); - /* Chrome,Safari4+ */ - background: -webkit-linear-gradient(top, #f4f8fa 0%, #FFF 73%); - /* Chrome10+,Safari5.1+ */ - background: -o-linear-gradient(top, #f4f8fa 0%, #FFF 73%); - /* Opera 11.10+ */ - background: -ms-linear-gradient(top, #f4f8fa 0%, #FFF 73%); - /* IE10+ */ - background: linear-gradient(to bottom, #f4f8fa 0%, #FFF 73%); - /* W3C */ - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f4f8fa', endColorstr='#FFF',GradientType=0 ); - /* IE6-9 */ -} diff --git a/public/plugins/jquery.datetimepicker-2.4.5/jquery.datetimepicker.js b/public/plugins/jquery.datetimepicker-2.4.5/jquery.datetimepicker.js deleted file mode 100644 index 9c00413c2..000000000 --- a/public/plugins/jquery.datetimepicker-2.4.5/jquery.datetimepicker.js +++ /dev/null @@ -1,2073 +0,0 @@ -/** - * @preserve jQuery DateTimePicker plugin v2.4.5 - * @homepage http://xdsoft.net/jqplugins/datetimepicker/ - * (c) 2014, Chupurnov Valeriy. - */ -/*global document,window,jQuery,setTimeout,clearTimeout,HighlightedDate,getCurrentValue*/ -(function ($) { - 'use strict'; - var default_options = { - i18n: { - ar: { // Arabic - months: [ - "كانون الثاني", "شباط", "آذار", "نيسان", "مايو", "حزيران", "تموز", "آب", "أيلول", "تشرين الأول", "تشرين الثاني", "كانون الأول" - ], - dayOfWeek: [ - "ن", "ث", "ع", "خ", "ج", "س", "ح" - ] - }, - ro: { // Romanian - months: [ - "ianuarie", "februarie", "martie", "aprilie", "mai", "iunie", "iulie", "august", "septembrie", "octombrie", "noiembrie", "decembrie" - ], - dayOfWeek: [ - "l", "ma", "mi", "j", "v", "s", "d" - ] - }, - id: { // Indonesian - months: [ - "Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember" - ], - dayOfWeek: [ - "Min", "Sen", "Sel", "Rab", "Kam", "Jum", "Sab" - ] - }, - is: { // Icelandic - months: [ - "Janúar", "Febrúar", "Mars", "Apríl", "Maí", "Júní", "Júlí", "Ágúst", "September", "Október", "Nóvember", "Desember" - ], - dayOfWeek: [ - "Sun", "Mán", "Þrið", "Mið", "Fim", "Fös", "Lau" - ] - }, - bg: { // Bulgarian - months: [ - "Януари", "Февруари", "Март", "Април", "Май", "Юни", "Юли", "Август", "Септември", "Октомври", "Ноември", "Декември" - ], - dayOfWeek: [ - "Нд", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб" - ] - }, - fa: { // Persian/Farsi - months: [ - 'فروردین', 'اردیبهشت', 'خرداد', 'تیر', 'مرداد', 'شهریور', 'مهر', 'آبان', 'آذر', 'دی', 'بهمن', 'اسفند' - ], - dayOfWeek: [ - 'یکشنبه', 'دوشنبه', 'سه شنبه', 'چهارشنبه', 'پنجشنبه', 'جمعه', 'شنبه' - ] - }, - ru: { // Russian - months: [ - 'Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь' - ], - dayOfWeek: [ - "Вск", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб" - ] - }, - uk: { // Ukrainian - months: [ - 'Січень', 'Лютий', 'Березень', 'Квітень', 'Травень', 'Червень', 'Липень', 'Серпень', 'Вересень', 'Жовтень', 'Листопад', 'Грудень' - ], - dayOfWeek: [ - "Ндл", "Пнд", "Втр", "Срд", "Чтв", "Птн", "Сбт" - ] - }, - en: { // English - months: [ - "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" - ], - dayOfWeek: [ - "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" - ] - }, - el: { // Ελληνικά - months: [ - "Ιανουάριος", "Φεβρουάριος", "Μάρτιος", "Απρίλιος", "Μάιος", "Ιούνιος", "Ιούλιος", "Αύγουστος", "Σεπτέμβριος", "Οκτώβριος", "Νοέμβριος", "Δεκέμβριος" - ], - dayOfWeek: [ - "Κυρ", "Δευ", "Τρι", "Τετ", "Πεμ", "Παρ", "Σαβ" - ] - }, - de: { // German - months: [ - 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember' - ], - dayOfWeek: [ - "So", "Mo", "Di", "Mi", "Do", "Fr", "Sa" - ] - }, - nl: { // Dutch - months: [ - "januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december" - ], - dayOfWeek: [ - "zo", "ma", "di", "wo", "do", "vr", "za" - ] - }, - tr: { // Turkish - months: [ - "Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık" - ], - dayOfWeek: [ - "Paz", "Pts", "Sal", "Çar", "Per", "Cum", "Cts" - ] - }, - fr: { //French - months: [ - "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre" - ], - dayOfWeek: [ - "Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam" - ] - }, - es: { // Spanish - months: [ - "Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre" - ], - dayOfWeek: [ - "Dom", "Lun", "Mar", "Mié", "Jue", "Vie", "Sáb" - ] - }, - th: { // Thai - months: [ - 'มกราคม', 'กุมภาพันธ์', 'มีนาคม', 'เมษายน', 'พฤษภาคม', 'มิถุนายน', 'กรกฎาคม', 'สิงหาคม', 'กันยายน', 'ตุลาคม', 'พฤศจิกายน', 'ธันวาคม' - ], - dayOfWeek: [ - 'อา.', 'จ.', 'อ.', 'พ.', 'พฤ.', 'ศ.', 'ส.' - ] - }, - pl: { // Polish - months: [ - "styczeń", "luty", "marzec", "kwiecień", "maj", "czerwiec", "lipiec", "sierpień", "wrzesień", "październik", "listopad", "grudzień" - ], - dayOfWeek: [ - "nd", "pn", "wt", "śr", "cz", "pt", "sb" - ] - }, - pt: { // Portuguese - months: [ - "Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro" - ], - dayOfWeek: [ - "Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sab" - ] - }, - ch: { // Simplified Chinese - months: [ - "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月" - ], - dayOfWeek: [ - "日", "一", "二", "三", "四", "五", "六" - ] - }, - se: { // Swedish - months: [ - "Januari", "Februari", "Mars", "April", "Maj", "Juni", "Juli", "Augusti", "September", "Oktober", "November", "December" - ], - dayOfWeek: [ - "Sön", "Mån", "Tis", "Ons", "Tor", "Fre", "Lör" - ] - }, - kr: { // Korean - months: [ - "1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월" - ], - dayOfWeek: [ - "일", "월", "화", "수", "목", "금", "토" - ] - }, - it: { // Italian - months: [ - "Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre" - ], - dayOfWeek: [ - "Dom", "Lun", "Mar", "Mer", "Gio", "Ven", "Sab" - ] - }, - da: { // Dansk - months: [ - "January", "Februar", "Marts", "April", "Maj", "Juni", "July", "August", "September", "Oktober", "November", "December" - ], - dayOfWeek: [ - "Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør" - ] - }, - no: { // Norwegian - months: [ - "Januar", "Februar", "Mars", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Desember" - ], - dayOfWeek: [ - "Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør" - ] - }, - ja: { // Japanese - months: [ - "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月" - ], - dayOfWeek: [ - "日", "月", "火", "水", "木", "金", "土" - ] - }, - vi: { // Vietnamese - months: [ - "Tháng 1", "Tháng 2", "Tháng 3", "Tháng 4", "Tháng 5", "Tháng 6", "Tháng 7", "Tháng 8", "Tháng 9", "Tháng 10", "Tháng 11", "Tháng 12" - ], - dayOfWeek: [ - "CN", "T2", "T3", "T4", "T5", "T6", "T7" - ] - }, - sl: { // Slovenščina - months: [ - "Januar", "Februar", "Marec", "April", "Maj", "Junij", "Julij", "Avgust", "September", "Oktober", "November", "December" - ], - dayOfWeek: [ - "Ned", "Pon", "Tor", "Sre", "Čet", "Pet", "Sob" - ] - }, - cs: { // Čeština - months: [ - "Leden", "Únor", "Březen", "Duben", "Květen", "Červen", "Červenec", "Srpen", "Září", "Říjen", "Listopad", "Prosinec" - ], - dayOfWeek: [ - "Ne", "Po", "Út", "St", "Čt", "Pá", "So" - ] - }, - hu: { // Hungarian - months: [ - "Január", "Február", "Március", "Április", "Május", "Június", "Július", "Augusztus", "Szeptember", "Október", "November", "December" - ], - dayOfWeek: [ - "Va", "Hé", "Ke", "Sze", "Cs", "Pé", "Szo" - ] - }, - az: { //Azerbaijanian (Azeri) - months: [ - "Yanvar", "Fevral", "Mart", "Aprel", "May", "Iyun", "Iyul", "Avqust", "Sentyabr", "Oktyabr", "Noyabr", "Dekabr" - ], - dayOfWeek: [ - "B", "Be", "Ça", "Ç", "Ca", "C", "Ş" - ] - }, - bs: { //Bosanski - months: [ - "Januar", "Februar", "Mart", "April", "Maj", "Jun", "Jul", "Avgust", "Septembar", "Oktobar", "Novembar", "Decembar" - ], - dayOfWeek: [ - "Ned", "Pon", "Uto", "Sri", "Čet", "Pet", "Sub" - ] - }, - ca: { //Català - months: [ - "Gener", "Febrer", "Març", "Abril", "Maig", "Juny", "Juliol", "Agost", "Setembre", "Octubre", "Novembre", "Desembre" - ], - dayOfWeek: [ - "Dg", "Dl", "Dt", "Dc", "Dj", "Dv", "Ds" - ] - }, - 'en-GB': { //English (British) - months: [ - "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" - ], - dayOfWeek: [ - "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" - ] - }, - et: { //"Eesti" - months: [ - "Jaanuar", "Veebruar", "Märts", "Aprill", "Mai", "Juuni", "Juuli", "August", "September", "Oktoober", "November", "Detsember" - ], - dayOfWeek: [ - "P", "E", "T", "K", "N", "R", "L" - ] - }, - eu: { //Euskara - months: [ - "Urtarrila", "Otsaila", "Martxoa", "Apirila", "Maiatza", "Ekaina", "Uztaila", "Abuztua", "Iraila", "Urria", "Azaroa", "Abendua" - ], - dayOfWeek: [ - "Ig.", "Al.", "Ar.", "Az.", "Og.", "Or.", "La." - ] - }, - fi: { //Finnish (Suomi) - months: [ - "Tammikuu", "Helmikuu", "Maaliskuu", "Huhtikuu", "Toukokuu", "Kesäkuu", "Heinäkuu", "Elokuu", "Syyskuu", "Lokakuu", "Marraskuu", "Joulukuu" - ], - dayOfWeek: [ - "Su", "Ma", "Ti", "Ke", "To", "Pe", "La" - ] - }, - gl: { //Galego - months: [ - "Xan", "Feb", "Maz", "Abr", "Mai", "Xun", "Xul", "Ago", "Set", "Out", "Nov", "Dec" - ], - dayOfWeek: [ - "Dom", "Lun", "Mar", "Mer", "Xov", "Ven", "Sab" - ] - }, - hr: { //Hrvatski - months: [ - "Siječanj", "Veljača", "Ožujak", "Travanj", "Svibanj", "Lipanj", "Srpanj", "Kolovoz", "Rujan", "Listopad", "Studeni", "Prosinac" - ], - dayOfWeek: [ - "Ned", "Pon", "Uto", "Sri", "Čet", "Pet", "Sub" - ] - }, - ko: { //Korean (한국어) - months: [ - "1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월" - ], - dayOfWeek: [ - "일", "월", "화", "수", "목", "금", "토" - ] - }, - lt: { //Lithuanian (lietuvių) - months: [ - "Sausio", "Vasario", "Kovo", "Balandžio", "Gegužės", "Birželio", "Liepos", "Rugpjūčio", "Rugsėjo", "Spalio", "Lapkričio", "Gruodžio" - ], - dayOfWeek: [ - "Sek", "Pir", "Ant", "Tre", "Ket", "Pen", "Šeš" - ] - }, - lv: { //Latvian (Latviešu) - months: [ - "Janvāris", "Februāris", "Marts", "Aprīlis ", "Maijs", "Jūnijs", "Jūlijs", "Augusts", "Septembris", "Oktobris", "Novembris", "Decembris" - ], - dayOfWeek: [ - "Sv", "Pr", "Ot", "Tr", "Ct", "Pk", "St" - ] - }, - mk: { //Macedonian (Македонски) - months: [ - "јануари", "февруари", "март", "април", "мај", "јуни", "јули", "август", "септември", "октомври", "ноември", "декември" - ], - dayOfWeek: [ - "нед", "пон", "вто", "сре", "чет", "пет", "саб" - ] - }, - mn: { //Mongolian (Монгол) - months: [ - "1-р сар", "2-р сар", "3-р сар", "4-р сар", "5-р сар", "6-р сар", "7-р сар", "8-р сар", "9-р сар", "10-р сар", "11-р сар", "12-р сар" - ], - dayOfWeek: [ - "Дав", "Мяг", "Лха", "Пүр", "Бсн", "Бям", "Ням" - ] - }, - 'pt-BR': { //Português(Brasil) - months: [ - "Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro" - ], - dayOfWeek: [ - "Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb" - ] - }, - sk: { //Slovenčina - months: [ - "Január", "Február", "Marec", "Apríl", "Máj", "Jún", "Júl", "August", "September", "Október", "November", "December" - ], - dayOfWeek: [ - "Ne", "Po", "Ut", "St", "Št", "Pi", "So" - ] - }, - sq: { //Albanian (Shqip) - months: [ - "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" - ], - dayOfWeek: [ - "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" - ] - }, - 'sr-YU': { //Serbian (Srpski) - months: [ - "Januar", "Februar", "Mart", "April", "Maj", "Jun", "Jul", "Avgust", "Septembar", "Oktobar", "Novembar", "Decembar" - ], - dayOfWeek: [ - "Ned", "Pon", "Uto", "Sre", "čet", "Pet", "Sub" - ] - }, - sr: { //Serbian Cyrillic (Српски) - months: [ - "јануар", "фебруар", "март", "април", "мај", "јун", "јул", "август", "септембар", "октобар", "новембар", "децембар" - ], - dayOfWeek: [ - "нед", "пон", "уто", "сре", "чет", "пет", "суб" - ] - }, - sv: { //Svenska - months: [ - "Januari", "Februari", "Mars", "April", "Maj", "Juni", "Juli", "Augusti", "September", "Oktober", "November", "December" - ], - dayOfWeek: [ - "Sön", "Mån", "Tis", "Ons", "Tor", "Fre", "Lör" - ] - }, - 'zh-TW': { //Traditional Chinese (繁體中文) - months: [ - "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月" - ], - dayOfWeek: [ - "日", "一", "二", "三", "四", "五", "六" - ] - }, - zh: { //Simplified Chinese (简体中文) - months: [ - "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月" - ], - dayOfWeek: [ - "日", "一", "二", "三", "四", "五", "六" - ] - }, - he: { //Hebrew (עברית) - months: [ - 'ינואר', 'פברואר', 'מרץ', 'אפריל', 'מאי', 'יוני', 'יולי', 'אוגוסט', 'ספטמבר', 'אוקטובר', 'נובמבר', 'דצמבר' - ], - dayOfWeek: [ - 'א\'', 'ב\'', 'ג\'', 'ד\'', 'ה\'', 'ו\'', 'שבת' - ] - }, - hy: { // Armenian - months: [ - "Հունվար", "Փետրվար", "Մարտ", "Ապրիլ", "Մայիս", "Հունիս", "Հուլիս", "Օգոստոս", "Սեպտեմբեր", "Հոկտեմբեր", "Նոյեմբեր", "Դեկտեմբեր" - ], - dayOfWeek: [ - "Կի", "Երկ", "Երք", "Չոր", "Հնգ", "Ուրբ", "Շբթ" - ] - }, - kg: { // Kyrgyz - months: [ - 'Үчтүн айы', 'Бирдин айы', 'Жалган Куран', 'Чын Куран', 'Бугу', 'Кулжа', 'Теке', 'Баш Оона', 'Аяк Оона', 'Тогуздун айы', 'Жетинин айы', 'Бештин айы' - ], - dayOfWeek: [ - "Жек", "Дүй", "Шей", "Шар", "Бей", "Жум", "Ише" - ] - } - }, - value: '', - lang: 'en', - - format: 'Y/m/d H:i', - formatTime: 'H:i', - formatDate: 'Y/m/d', - - startDate: false, // new Date(), '1986/12/08', '-1970/01/05','-1970/01/05', - step: 60, - monthChangeSpinner: true, - - closeOnDateSelect: false, - closeOnTimeSelect: true, - closeOnWithoutClick: true, - closeOnInputClick: true, - - timepicker: true, - datepicker: true, - weeks: false, - - defaultTime: false, // use formatTime format (ex. '10:00' for formatTime: 'H:i') - defaultDate: false, // use formatDate format (ex new Date() or '1986/12/08' or '-1970/01/05' or '-1970/01/05') - - minDate: false, - maxDate: false, - minTime: false, - maxTime: false, - disabledMinTime: false, - disabledMaxTime: false, - - allowTimes: [], - opened: false, - initTime: true, - inline: false, - theme: '', - - onSelectDate: function () {}, - onSelectTime: function () {}, - onChangeMonth: function () {}, - onChangeYear: function () {}, - onChangeDateTime: function () {}, - onShow: function () {}, - onClose: function () {}, - onGenerate: function () {}, - - withoutCopyright: true, - inverseButton: false, - hours12: false, - next: 'xdsoft_next', - prev : 'xdsoft_prev', - dayOfWeekStart: 0, - parentID: 'body', - timeHeightInTimePicker: 25, - timepickerScrollbar: true, - todayButton: true, - prevButton: true, - nextButton: true, - defaultSelect: true, - - scrollMonth: true, - scrollTime: true, - scrollInput: true, - - lazyInit: false, - mask: false, - validateOnBlur: true, - allowBlank: true, - yearStart: 1950, - yearEnd: 2050, - monthStart: 0, - monthEnd: 11, - style: '', - id: '', - fixed: false, - roundTime: 'round', // ceil, floor - className: '', - weekends: [], - highlightedDates: [], - highlightedPeriods: [], - disabledDates : [], - disabledWeekDays: [], - yearOffset: 0, - beforeShowDay: null, - - enterLikeTab: true, - showApplyButton: false - }; - // fix for ie8 - if (!window.getComputedStyle) { - window.getComputedStyle = function (el, pseudo) { - this.el = el; - this.getPropertyValue = function (prop) { - var re = /(\-([a-z]){1})/g; - if (prop === 'float') { - prop = 'styleFloat'; - } - if (re.test(prop)) { - prop = prop.replace(re, function (a, b, c) { - return c.toUpperCase(); - }); - } - return el.currentStyle[prop] || null; - }; - return this; - }; - } - if (!Array.prototype.indexOf) { - Array.prototype.indexOf = function (obj, start) { - var i, j; - for (i = (start || 0), j = this.length; i < j; i += 1) { - if (this[i] === obj) { return i; } - } - return -1; - }; - } - Date.prototype.countDaysInMonth = function () { - return new Date(this.getFullYear(), this.getMonth() + 1, 0).getDate(); - }; - $.fn.xdsoftScroller = function (percent) { - return this.each(function () { - var timeboxparent = $(this), - pointerEventToXY = function (e) { - var out = {x: 0, y: 0}, - touch; - if (e.type === 'touchstart' || e.type === 'touchmove' || e.type === 'touchend' || e.type === 'touchcancel') { - touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0]; - out.x = touch.clientX; - out.y = touch.clientY; - } else if (e.type === 'mousedown' || e.type === 'mouseup' || e.type === 'mousemove' || e.type === 'mouseover' || e.type === 'mouseout' || e.type === 'mouseenter' || e.type === 'mouseleave') { - out.x = e.clientX; - out.y = e.clientY; - } - return out; - }, - move = 0, - timebox, - parentHeight, - height, - scrollbar, - scroller, - maximumOffset = 100, - start = false, - startY = 0, - startTop = 0, - h1 = 0, - touchStart = false, - startTopScroll = 0, - calcOffset = function () {}; - if (percent === 'hide') { - timeboxparent.find('.xdsoft_scrollbar').hide(); - return; - } - if (!$(this).hasClass('xdsoft_scroller_box')) { - timebox = timeboxparent.children().eq(0); - parentHeight = timeboxparent[0].clientHeight; - height = timebox[0].offsetHeight; - scrollbar = $('
    '); - scroller = $('
    '); - scrollbar.append(scroller); - - timeboxparent.addClass('xdsoft_scroller_box').append(scrollbar); - calcOffset = function calcOffset(event) { - var offset = pointerEventToXY(event).y - startY + startTopScroll; - if (offset < 0) { - offset = 0; - } - if (offset + scroller[0].offsetHeight > h1) { - offset = h1 - scroller[0].offsetHeight; - } - timeboxparent.trigger('scroll_element.xdsoft_scroller', [maximumOffset ? offset / maximumOffset : 0]); - }; - - scroller - .on('touchstart.xdsoft_scroller mousedown.xdsoft_scroller', function (event) { - if (!parentHeight) { - timeboxparent.trigger('resize_scroll.xdsoft_scroller', [percent]); - } - - startY = pointerEventToXY(event).y; - startTopScroll = parseInt(scroller.css('margin-top'), 10); - h1 = scrollbar[0].offsetHeight; - - if (event.type === 'mousedown') { - if (document) { - $(document.body).addClass('xdsoft_noselect'); - } - $([document.body, window]).on('mouseup.xdsoft_scroller', function arguments_callee() { - $([document.body, window]).off('mouseup.xdsoft_scroller', arguments_callee) - .off('mousemove.xdsoft_scroller', calcOffset) - .removeClass('xdsoft_noselect'); - }); - $(document.body).on('mousemove.xdsoft_scroller', calcOffset); - } else { - touchStart = true; - event.stopPropagation(); - event.preventDefault(); - } - }) - .on('touchmove', function (event) { - if (touchStart) { - event.preventDefault(); - calcOffset(event); - } - }) - .on('touchend touchcancel', function (event) { - touchStart = false; - startTopScroll = 0; - }); - - timeboxparent - .on('scroll_element.xdsoft_scroller', function (event, percentage) { - if (!parentHeight) { - timeboxparent.trigger('resize_scroll.xdsoft_scroller', [percentage, true]); - } - percentage = percentage > 1 ? 1 : (percentage < 0 || isNaN(percentage)) ? 0 : percentage; - - scroller.css('margin-top', maximumOffset * percentage); - - setTimeout(function () { - timebox.css('marginTop', -parseInt((timebox[0].offsetHeight - parentHeight) * percentage, 10)); - }, 10); - }) - .on('resize_scroll.xdsoft_scroller', function (event, percentage, noTriggerScroll) { - var percent, sh; - parentHeight = timeboxparent[0].clientHeight; - height = timebox[0].offsetHeight; - percent = parentHeight / height; - sh = percent * scrollbar[0].offsetHeight; - if (percent > 1) { - scroller.hide(); - } else { - scroller.show(); - scroller.css('height', parseInt(sh > 10 ? sh : 10, 10)); - maximumOffset = scrollbar[0].offsetHeight - scroller[0].offsetHeight; - if (noTriggerScroll !== true) { - timeboxparent.trigger('scroll_element.xdsoft_scroller', [percentage || Math.abs(parseInt(timebox.css('marginTop'), 10)) / (height - parentHeight)]); - } - } - }); - - timeboxparent.on('mousewheel', function (event) { - var top = Math.abs(parseInt(timebox.css('marginTop'), 10)); - - top = top - (event.deltaY * 20); - if (top < 0) { - top = 0; - } - - timeboxparent.trigger('scroll_element.xdsoft_scroller', [top / (height - parentHeight)]); - event.stopPropagation(); - return false; - }); - - timeboxparent.on('touchstart', function (event) { - start = pointerEventToXY(event); - startTop = Math.abs(parseInt(timebox.css('marginTop'), 10)); - }); - - timeboxparent.on('touchmove', function (event) { - if (start) { - event.preventDefault(); - var coord = pointerEventToXY(event); - timeboxparent.trigger('scroll_element.xdsoft_scroller', [(startTop - (coord.y - start.y)) / (height - parentHeight)]); - } - }); - - timeboxparent.on('touchend touchcancel', function (event) { - start = false; - startTop = 0; - }); - } - timeboxparent.trigger('resize_scroll.xdsoft_scroller', [percent]); - }); - }; - - $.fn.datetimepicker = function (opt) { - var KEY0 = 48, - KEY9 = 57, - _KEY0 = 96, - _KEY9 = 105, - CTRLKEY = 17, - DEL = 46, - ENTER = 13, - ESC = 27, - BACKSPACE = 8, - ARROWLEFT = 37, - ARROWUP = 38, - ARROWRIGHT = 39, - ARROWDOWN = 40, - TAB = 9, - F5 = 116, - AKEY = 65, - CKEY = 67, - VKEY = 86, - ZKEY = 90, - YKEY = 89, - ctrlDown = false, - options = ($.isPlainObject(opt) || !opt) ? $.extend(true, {}, default_options, opt) : $.extend(true, {}, default_options), - - lazyInitTimer = 0, - createDateTimePicker, - destroyDateTimePicker, - - lazyInit = function (input) { - input - .on('open.xdsoft focusin.xdsoft mousedown.xdsoft', function initOnActionCallback(event) { - if (input.is(':disabled') || input.data('xdsoft_datetimepicker')) { - return; - } - clearTimeout(lazyInitTimer); - lazyInitTimer = setTimeout(function () { - - if (!input.data('xdsoft_datetimepicker')) { - createDateTimePicker(input); - } - input - .off('open.xdsoft focusin.xdsoft mousedown.xdsoft', initOnActionCallback) - .trigger('open.xdsoft'); - }, 100); - }); - }; - - createDateTimePicker = function (input) { - var datetimepicker = $('
    '), - xdsoft_copyright = $(''), - datepicker = $('
    '), - mounth_picker = $('
    ' + - '
    ' + - '
    ' + - '
    '), - calendar = $('
    '), - timepicker = $('
    '), - timeboxparent = timepicker.find('.xdsoft_time_box').eq(0), - timebox = $('
    '), - applyButton = $(''), - /*scrollbar = $('
    '), - scroller = $('
    '),*/ - monthselect = $('
    '), - yearselect = $('
    '), - triggerAfterOpen = false, - XDSoft_datetime, - //scroll_element, - xchangeTimer, - timerclick, - current_time_index, - setPos, - timer = 0, - timer1 = 0, - _xdsoft_datetime; - - if (options.id) { - datetimepicker.attr('id', options.id); - } - if (options.style) { - datetimepicker.attr('style', options.style); - } - if (options.weeks) { - datetimepicker.addClass('xdsoft_showweeks'); - } - - datetimepicker.addClass('xdsoft_' + options.theme); - datetimepicker.addClass(options.className); - - mounth_picker - .find('.xdsoft_month span') - .after(monthselect); - mounth_picker - .find('.xdsoft_year span') - .after(yearselect); - - mounth_picker - .find('.xdsoft_month,.xdsoft_year') - .on('mousedown.xdsoft', function (event) { - var select = $(this).find('.xdsoft_select').eq(0), - val = 0, - top = 0, - visible = select.is(':visible'), - items, - i; - - mounth_picker - .find('.xdsoft_select') - .hide(); - if (_xdsoft_datetime.currentTime) { - val = _xdsoft_datetime.currentTime[$(this).hasClass('xdsoft_month') ? 'getMonth' : 'getFullYear'](); - } - - select[visible ? 'hide' : 'show'](); - for (items = select.find('div.xdsoft_option'), i = 0; i < items.length; i += 1) { - if (items.eq(i).data('value') === val) { - break; - } else { - top += items[0].offsetHeight; - } - } - - select.xdsoftScroller(top / (select.children()[0].offsetHeight - (select[0].clientHeight))); - event.stopPropagation(); - return false; - }); - - mounth_picker - .find('.xdsoft_select') - .xdsoftScroller() - .on('mousedown.xdsoft', function (event) { - event.stopPropagation(); - event.preventDefault(); - }) - .on('mousedown.xdsoft', '.xdsoft_option', function (event) { - - if (_xdsoft_datetime.currentTime === undefined || _xdsoft_datetime.currentTime === null) { - _xdsoft_datetime.currentTime = _xdsoft_datetime.now(); - } - - var year = _xdsoft_datetime.currentTime.getFullYear(); - if (_xdsoft_datetime && _xdsoft_datetime.currentTime) { - _xdsoft_datetime.currentTime[$(this).parent().parent().hasClass('xdsoft_monthselect') ? 'setMonth' : 'setFullYear']($(this).data('value')); - } - - $(this).parent().parent().hide(); - - datetimepicker.trigger('xchange.xdsoft'); - if (options.onChangeMonth && $.isFunction(options.onChangeMonth)) { - options.onChangeMonth.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input')); - } - - if (year !== _xdsoft_datetime.currentTime.getFullYear() && $.isFunction(options.onChangeYear)) { - options.onChangeYear.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input')); - } - }); - - datetimepicker.setOptions = function (_options) { - var highlightedDates = {}, - getCaretPos = function (input) { - try { - if (document.selection && document.selection.createRange) { - var range = document.selection.createRange(); - return range.getBookmark().charCodeAt(2) - 2; - } - if (input.setSelectionRange) { - return input.selectionStart; - } - } catch (e) { - return 0; - } - }, - setCaretPos = function (node, pos) { - node = (typeof node === "string" || node instanceof String) ? document.getElementById(node) : node; - if (!node) { - return false; - } - if (node.createTextRange) { - var textRange = node.createTextRange(); - textRange.collapse(true); - textRange.moveEnd('character', pos); - textRange.moveStart('character', pos); - textRange.select(); - return true; - } - if (node.setSelectionRange) { - node.setSelectionRange(pos, pos); - return true; - } - return false; - }, - isValidValue = function (mask, value) { - var reg = mask - .replace(/([\[\]\/\{\}\(\)\-\.\+]{1})/g, '\\$1') - .replace(/_/g, '{digit+}') - .replace(/([0-9]{1})/g, '{digit$1}') - .replace(/\{digit([0-9]{1})\}/g, '[0-$1_]{1}') - .replace(/\{digit[\+]\}/g, '[0-9_]{1}'); - return (new RegExp(reg)).test(value); - }; - options = $.extend(true, {}, options, _options); - - if (_options.allowTimes && $.isArray(_options.allowTimes) && _options.allowTimes.length) { - options.allowTimes = $.extend(true, [], _options.allowTimes); - } - - if (_options.weekends && $.isArray(_options.weekends) && _options.weekends.length) { - options.weekends = $.extend(true, [], _options.weekends); - } - - if (_options.highlightedDates && $.isArray(_options.highlightedDates) && _options.highlightedDates.length) { - $.each(_options.highlightedDates, function (index, value) { - var splitData = $.map(value.split(','), $.trim), - exDesc, - hDate = new HighlightedDate(Date.parseDate(splitData[0], options.formatDate), splitData[1], splitData[2]), // date, desc, style - keyDate = hDate.date.dateFormat(options.formatDate); - if (highlightedDates[keyDate] !== undefined) { - exDesc = highlightedDates[keyDate].desc; - if (exDesc && exDesc.length && hDate.desc && hDate.desc.length) { - highlightedDates[keyDate].desc = exDesc + "\n" + hDate.desc; - } - } else { - highlightedDates[keyDate] = hDate; - } - }); - - options.highlightedDates = $.extend(true, [], highlightedDates); - } - - if (_options.highlightedPeriods && $.isArray(_options.highlightedPeriods) && _options.highlightedPeriods.length) { - highlightedDates = $.extend(true, [], options.highlightedDates); - $.each(_options.highlightedPeriods, function (index, value) { - var splitData = $.map(value.split(','), $.trim), - dateTest = Date.parseDate(splitData[0], options.formatDate), // start date - dateEnd = Date.parseDate(splitData[1], options.formatDate), - desc = splitData[2], - hDate, - keyDate, - exDesc, - style = splitData[3]; - - while (dateTest <= dateEnd) { - hDate = new HighlightedDate(dateTest, desc, style); - keyDate = dateTest.dateFormat(options.formatDate); - dateTest.setDate(dateTest.getDate() + 1); - if (highlightedDates[keyDate] !== undefined) { - exDesc = highlightedDates[keyDate].desc; - if (exDesc && exDesc.length && hDate.desc && hDate.desc.length) { - highlightedDates[keyDate].desc = exDesc + "\n" + hDate.desc; - } - } else { - highlightedDates[keyDate] = hDate; - } - } - }); - - options.highlightedDates = $.extend(true, [], highlightedDates); - } - - if (_options.disabledDates && $.isArray(_options.disabledDates) && _options.disabledDates.length) { - options.disabledDates = $.extend(true, [], _options.disabledDates); - } - - if (_options.disabledWeekDays && $.isArray(_options.disabledWeekDays) && _options.disabledWeekDays.length) { - options.disabledWeekDays = $.extend(true, [], _options.disabledWeekDays); - } - - if ((options.open || options.opened) && (!options.inline)) { - input.trigger('open.xdsoft'); - } - - if (options.inline) { - triggerAfterOpen = true; - datetimepicker.addClass('xdsoft_inline'); - input.after(datetimepicker).hide(); - } - - if (options.inverseButton) { - options.next = 'xdsoft_prev'; - options.prev = 'xdsoft_next'; - } - - if (options.datepicker) { - datepicker.addClass('active'); - } else { - datepicker.removeClass('active'); - } - - if (options.timepicker) { - timepicker.addClass('active'); - } else { - timepicker.removeClass('active'); - } - - if (options.value) { - _xdsoft_datetime.setCurrentTime(options.value); - if (input && input.val) { - input.val(_xdsoft_datetime.str); - } - } - - if (isNaN(options.dayOfWeekStart)) { - options.dayOfWeekStart = 0; - } else { - options.dayOfWeekStart = parseInt(options.dayOfWeekStart, 10) % 7; - } - - if (!options.timepickerScrollbar) { - timeboxparent.xdsoftScroller('hide'); - } - - if (options.minDate && /^-(.*)$/.test(options.minDate)) { - options.minDate = _xdsoft_datetime.strToDateTime(options.minDate).dateFormat(options.formatDate); - } - - if (options.maxDate && /^\+(.*)$/.test(options.maxDate)) { - options.maxDate = _xdsoft_datetime.strToDateTime(options.maxDate).dateFormat(options.formatDate); - } - - applyButton.toggle(options.showApplyButton); - - mounth_picker - .find('.xdsoft_today_button') - .css('visibility', !options.todayButton ? 'hidden' : 'visible'); - - mounth_picker - .find('.' + options.prev) - .css('visibility', !options.prevButton ? 'hidden' : 'visible'); - - mounth_picker - .find('.' + options.next) - .css('visibility', !options.nextButton ? 'hidden' : 'visible'); - - if (options.mask) { - input.off('keydown.xdsoft'); - - if (options.mask === true) { - options.mask = options.format - .replace(/Y/g, '9999') - .replace(/F/g, '9999') - .replace(/m/g, '19') - .replace(/d/g, '39') - .replace(/H/g, '29') - .replace(/i/g, '59') - .replace(/s/g, '59'); - } - - if ($.type(options.mask) === 'string') { - if (!isValidValue(options.mask, input.val())) { - input.val(options.mask.replace(/[0-9]/g, '_')); - } - - input.on('keydown.xdsoft', function (event) { - var val = this.value, - key = event.which, - pos, - digit; - - if (((key >= KEY0 && key <= KEY9) || (key >= _KEY0 && key <= _KEY9)) || (key === BACKSPACE || key === DEL)) { - pos = getCaretPos(this); - digit = (key !== BACKSPACE && key !== DEL) ? String.fromCharCode((_KEY0 <= key && key <= _KEY9) ? key - KEY0 : key) : '_'; - - if ((key === BACKSPACE || key === DEL) && pos) { - pos -= 1; - digit = '_'; - } - - while (/[^0-9_]/.test(options.mask.substr(pos, 1)) && pos < options.mask.length && pos > 0) { - pos += (key === BACKSPACE || key === DEL) ? -1 : 1; - } - - val = val.substr(0, pos) + digit + val.substr(pos + 1); - if ($.trim(val) === '') { - val = options.mask.replace(/[0-9]/g, '_'); - } else { - if (pos === options.mask.length) { - event.preventDefault(); - return false; - } - } - - pos += (key === BACKSPACE || key === DEL) ? 0 : 1; - while (/[^0-9_]/.test(options.mask.substr(pos, 1)) && pos < options.mask.length && pos > 0) { - pos += (key === BACKSPACE || key === DEL) ? -1 : 1; - } - - if (isValidValue(options.mask, val)) { - this.value = val; - setCaretPos(this, pos); - } else if ($.trim(val) === '') { - this.value = options.mask.replace(/[0-9]/g, '_'); - } else { - input.trigger('error_input.xdsoft'); - } - } else { - if (([AKEY, CKEY, VKEY, ZKEY, YKEY].indexOf(key) !== -1 && ctrlDown) || [ESC, ARROWUP, ARROWDOWN, ARROWLEFT, ARROWRIGHT, F5, CTRLKEY, TAB, ENTER].indexOf(key) !== -1) { - return true; - } - } - - event.preventDefault(); - return false; - }); - } - } - if (options.validateOnBlur) { - input - .off('blur.xdsoft') - .on('blur.xdsoft', function () { - if (options.allowBlank && !$.trim($(this).val()).length) { - $(this).val(null); - datetimepicker.data('xdsoft_datetime').empty(); - } else if (!Date.parseDate($(this).val(), options.format)) { - var splittedHours = +([$(this).val()[0], $(this).val()[1]].join('')), - splittedMinutes = +([$(this).val()[2], $(this).val()[3]].join('')); - - // parse the numbers as 0312 => 03:12 - if (!options.datepicker && options.timepicker && splittedHours >= 0 && splittedHours < 24 && splittedMinutes >= 0 && splittedMinutes < 60) { - $(this).val([splittedHours, splittedMinutes].map(function (item) { - return item > 9 ? item : '0' + item; - }).join(':')); - } else { - $(this).val((_xdsoft_datetime.now()).dateFormat(options.format)); - } - - datetimepicker.data('xdsoft_datetime').setCurrentTime($(this).val()); - } else { - datetimepicker.data('xdsoft_datetime').setCurrentTime($(this).val()); - } - - datetimepicker.trigger('changedatetime.xdsoft'); - }); - } - options.dayOfWeekStartPrev = (options.dayOfWeekStart === 0) ? 6 : options.dayOfWeekStart - 1; - - datetimepicker - .trigger('xchange.xdsoft') - .trigger('afterOpen.xdsoft'); - }; - - datetimepicker - .data('options', options) - .on('mousedown.xdsoft', function (event) { - event.stopPropagation(); - event.preventDefault(); - yearselect.hide(); - monthselect.hide(); - return false; - }); - - //scroll_element = timepicker.find('.xdsoft_time_box'); - timeboxparent.append(timebox); - timeboxparent.xdsoftScroller(); - - datetimepicker.on('afterOpen.xdsoft', function () { - timeboxparent.xdsoftScroller(); - }); - - datetimepicker - .append(datepicker) - .append(timepicker); - - if (options.withoutCopyright !== true) { - datetimepicker - .append(xdsoft_copyright); - } - - datepicker - .append(mounth_picker) - .append(calendar) - .append(applyButton); - - $(options.parentID) - .append(datetimepicker); - - XDSoft_datetime = function () { - var _this = this; - _this.now = function (norecursion) { - var d = new Date(), - date, - time; - - if (!norecursion && options.defaultDate) { - date = _this.strToDateTime(options.defaultDate); - d.setFullYear(date.getFullYear()); - d.setMonth(date.getMonth()); - d.setDate(date.getDate()); - } - - if (options.yearOffset) { - d.setFullYear(d.getFullYear() + options.yearOffset); - } - - if (!norecursion && options.defaultTime) { - time = _this.strtotime(options.defaultTime); - d.setHours(time.getHours()); - d.setMinutes(time.getMinutes()); - } - return d; - }; - - _this.isValidDate = function (d) { - if (Object.prototype.toString.call(d) !== "[object Date]") { - return false; - } - return !isNaN(d.getTime()); - }; - - _this.setCurrentTime = function (dTime) { - _this.currentTime = (typeof dTime === 'string') ? _this.strToDateTime(dTime) : _this.isValidDate(dTime) ? dTime : _this.now(); - datetimepicker.trigger('xchange.xdsoft'); - }; - - _this.empty = function () { - _this.currentTime = null; - }; - - _this.getCurrentTime = function (dTime) { - return _this.currentTime; - }; - - _this.nextMonth = function () { - - if (_this.currentTime === undefined || _this.currentTime === null) { - _this.currentTime = _this.now(); - } - - var month = _this.currentTime.getMonth() + 1, - year; - if (month === 12) { - _this.currentTime.setFullYear(_this.currentTime.getFullYear() + 1); - month = 0; - } - - year = _this.currentTime.getFullYear(); - - _this.currentTime.setDate( - Math.min( - new Date(_this.currentTime.getFullYear(), month + 1, 0).getDate(), - _this.currentTime.getDate() - ) - ); - _this.currentTime.setMonth(month); - - if (options.onChangeMonth && $.isFunction(options.onChangeMonth)) { - options.onChangeMonth.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input')); - } - - if (year !== _this.currentTime.getFullYear() && $.isFunction(options.onChangeYear)) { - options.onChangeYear.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input')); - } - - datetimepicker.trigger('xchange.xdsoft'); - return month; - }; - - _this.prevMonth = function () { - - if (_this.currentTime === undefined || _this.currentTime === null) { - _this.currentTime = _this.now(); - } - - var month = _this.currentTime.getMonth() - 1; - if (month === -1) { - _this.currentTime.setFullYear(_this.currentTime.getFullYear() - 1); - month = 11; - } - _this.currentTime.setDate( - Math.min( - new Date(_this.currentTime.getFullYear(), month + 1, 0).getDate(), - _this.currentTime.getDate() - ) - ); - _this.currentTime.setMonth(month); - if (options.onChangeMonth && $.isFunction(options.onChangeMonth)) { - options.onChangeMonth.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input')); - } - datetimepicker.trigger('xchange.xdsoft'); - return month; - }; - - _this.getWeekOfYear = function (datetime) { - var onejan = new Date(datetime.getFullYear(), 0, 1); - return Math.ceil((((datetime - onejan) / 86400000) + onejan.getDay() + 1) / 7); - }; - - _this.strToDateTime = function (sDateTime) { - var tmpDate = [], timeOffset, currentTime; - - if (sDateTime && sDateTime instanceof Date && _this.isValidDate(sDateTime)) { - return sDateTime; - } - - tmpDate = /^(\+|\-)(.*)$/.exec(sDateTime); - if (tmpDate) { - tmpDate[2] = Date.parseDate(tmpDate[2], options.formatDate); - } - if (tmpDate && tmpDate[2]) { - timeOffset = tmpDate[2].getTime() - (tmpDate[2].getTimezoneOffset()) * 60000; - currentTime = new Date((_this.now(true)).getTime() + parseInt(tmpDate[1] + '1', 10) * timeOffset); - } else { - currentTime = sDateTime ? Date.parseDate(sDateTime, options.format) : _this.now(); - } - - if (!_this.isValidDate(currentTime)) { - currentTime = _this.now(); - } - - return currentTime; - }; - - _this.strToDate = function (sDate) { - if (sDate && sDate instanceof Date && _this.isValidDate(sDate)) { - return sDate; - } - - var currentTime = sDate ? Date.parseDate(sDate, options.formatDate) : _this.now(true); - if (!_this.isValidDate(currentTime)) { - currentTime = _this.now(true); - } - return currentTime; - }; - - _this.strtotime = function (sTime) { - if (sTime && sTime instanceof Date && _this.isValidDate(sTime)) { - return sTime; - } - var currentTime = sTime ? Date.parseDate(sTime, options.formatTime) : _this.now(true); - if (!_this.isValidDate(currentTime)) { - currentTime = _this.now(true); - } - return currentTime; - }; - - _this.str = function () { - return _this.currentTime.dateFormat(options.format); - }; - _this.currentTime = this.now(); - }; - - _xdsoft_datetime = new XDSoft_datetime(); - - applyButton.on('click', function (e) {//pathbrite - e.preventDefault(); - datetimepicker.data('changed', true); - _xdsoft_datetime.setCurrentTime(getCurrentValue()); - input.val(_xdsoft_datetime.str()); - datetimepicker.trigger('close.xdsoft'); - }); - mounth_picker - .find('.xdsoft_today_button') - .on('mousedown.xdsoft', function () { - datetimepicker.data('changed', true); - _xdsoft_datetime.setCurrentTime(0); - datetimepicker.trigger('afterOpen.xdsoft'); - }).on('dblclick.xdsoft', function () { - var currentDate = _xdsoft_datetime.getCurrentTime(), minDate, maxDate; - currentDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate()); - minDate = _xdsoft_datetime.strToDate(options.minDate); - minDate = new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate()); - if (currentDate < minDate) { - return; - } - maxDate = _xdsoft_datetime.strToDate(options.maxDate); - maxDate = new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate()); - if (currentDate > maxDate) { - return; - } - input.val(_xdsoft_datetime.str()); - datetimepicker.trigger('close.xdsoft'); - }); - mounth_picker - .find('.xdsoft_prev,.xdsoft_next') - .on('mousedown.xdsoft', function () { - var $this = $(this), - timer = 0, - stop = false; - - (function arguments_callee1(v) { - if ($this.hasClass(options.next)) { - _xdsoft_datetime.nextMonth(); - } else if ($this.hasClass(options.prev)) { - _xdsoft_datetime.prevMonth(); - } - if (options.monthChangeSpinner) { - if (!stop) { - timer = setTimeout(arguments_callee1, v || 100); - } - } - }(500)); - - $([document.body, window]).on('mouseup.xdsoft', function arguments_callee2() { - clearTimeout(timer); - stop = true; - $([document.body, window]).off('mouseup.xdsoft', arguments_callee2); - }); - }); - - timepicker - .find('.xdsoft_prev,.xdsoft_next') - .on('mousedown.xdsoft', function () { - var $this = $(this), - timer = 0, - stop = false, - period = 110; - (function arguments_callee4(v) { - var pheight = timeboxparent[0].clientHeight, - height = timebox[0].offsetHeight, - top = Math.abs(parseInt(timebox.css('marginTop'), 10)); - if ($this.hasClass(options.next) && (height - pheight) - options.timeHeightInTimePicker >= top) { - timebox.css('marginTop', '-' + (top + options.timeHeightInTimePicker) + 'px'); - } else if ($this.hasClass(options.prev) && top - options.timeHeightInTimePicker >= 0) { - timebox.css('marginTop', '-' + (top - options.timeHeightInTimePicker) + 'px'); - } - timeboxparent.trigger('scroll_element.xdsoft_scroller', [Math.abs(parseInt(timebox.css('marginTop'), 10) / (height - pheight))]); - period = (period > 10) ? 10 : period - 10; - if (!stop) { - timer = setTimeout(arguments_callee4, v || period); - } - }(500)); - $([document.body, window]).on('mouseup.xdsoft', function arguments_callee5() { - clearTimeout(timer); - stop = true; - $([document.body, window]) - .off('mouseup.xdsoft', arguments_callee5); - }); - }); - - xchangeTimer = 0; - // base handler - generating a calendar and timepicker - datetimepicker - .on('xchange.xdsoft', function (event) { - clearTimeout(xchangeTimer); - xchangeTimer = setTimeout(function () { - - if (_xdsoft_datetime.currentTime === undefined || _xdsoft_datetime.currentTime === null) { - _xdsoft_datetime.currentTime = _xdsoft_datetime.now(); - } - - var table = '', - start = new Date(_xdsoft_datetime.currentTime.getFullYear(), _xdsoft_datetime.currentTime.getMonth(), 1, 12, 0, 0), - i = 0, - j, - today = _xdsoft_datetime.now(), - maxDate = false, - minDate = false, - hDate, - day, - d, - y, - m, - w, - classes = [], - customDateSettings, - newRow = true, - time = '', - h = '', - line_time, - description; - - while (start.getDay() !== options.dayOfWeekStart) { - start.setDate(start.getDate() - 1); - } - - table += '
  4. '; - - if (options.weeks) { - table += ''; - } - - for (j = 0; j < 7; j += 1) { - table += ''; - } - - table += ''; - table += ''; - - if (options.maxDate !== false) { - maxDate = _xdsoft_datetime.strToDate(options.maxDate); - maxDate = new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate(), 23, 59, 59, 999); - } - - if (options.minDate !== false) { - minDate = _xdsoft_datetime.strToDate(options.minDate); - minDate = new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate()); - } - - while (i < _xdsoft_datetime.currentTime.countDaysInMonth() || start.getDay() !== options.dayOfWeekStart || _xdsoft_datetime.currentTime.getMonth() === start.getMonth()) { - classes = []; - i += 1; - - day = start.getDay(); - d = start.getDate(); - y = start.getFullYear(); - m = start.getMonth(); - w = _xdsoft_datetime.getWeekOfYear(start); - description = ''; - - classes.push('xdsoft_date'); - - if (options.beforeShowDay && $.isFunction(options.beforeShowDay.call)) { - customDateSettings = options.beforeShowDay.call(datetimepicker, start); - } else { - customDateSettings = null; - } - - if ((maxDate !== false && start > maxDate) || (minDate !== false && start < minDate) || (customDateSettings && customDateSettings[0] === false)) { - classes.push('xdsoft_disabled'); - } else if (options.disabledDates.indexOf(start.dateFormat(options.formatDate)) !== -1) { - classes.push('xdsoft_disabled'); - } else if (options.disabledWeekDays.indexOf(day) !== -1) { - classes.push('xdsoft_disabled'); - } - - if (customDateSettings && customDateSettings[1] !== "") { - classes.push(customDateSettings[1]); - } - - if (_xdsoft_datetime.currentTime.getMonth() !== m) { - classes.push('xdsoft_other_month'); - } - - if ((options.defaultSelect || datetimepicker.data('changed')) && _xdsoft_datetime.currentTime.dateFormat(options.formatDate) === start.dateFormat(options.formatDate)) { - classes.push('xdsoft_current'); - } - - if (today.dateFormat(options.formatDate) === start.dateFormat(options.formatDate)) { - classes.push('xdsoft_today'); - } - - if (start.getDay() === 0 || start.getDay() === 6 || options.weekends.indexOf(start.dateFormat(options.formatDate)) !== -1) { - classes.push('xdsoft_weekend'); - } - - if (options.highlightedDates[start.dateFormat(options.formatDate)] !== undefined) { - hDate = options.highlightedDates[start.dateFormat(options.formatDate)]; - classes.push(hDate.style === undefined ? 'xdsoft_highlighted_default' : hDate.style); - description = hDate.desc === undefined ? '' : hDate.desc; - } - - if (options.beforeShowDay && $.isFunction(options.beforeShowDay)) { - classes.push(options.beforeShowDay(start)); - } - - if (newRow) { - table += ''; - newRow = false; - if (options.weeks) { - table += ''; - } - } - - table += ''; - - if (start.getDay() === options.dayOfWeekStartPrev) { - table += ''; - newRow = true; - } - - start.setDate(d + 1); - } - table += '
    ' + options.i18n[options.lang].dayOfWeek[(j + options.dayOfWeekStart) % 7] + '
    ' + w + '' + - '
    ' + d + '
    ' + - '
    '; - - calendar.html(table); - - mounth_picker.find('.xdsoft_label span').eq(0).text(options.i18n[options.lang].months[_xdsoft_datetime.currentTime.getMonth()]); - mounth_picker.find('.xdsoft_label span').eq(1).text(_xdsoft_datetime.currentTime.getFullYear()); - - // generate timebox - time = ''; - h = ''; - m = ''; - line_time = function line_time(h, m) { - var now = _xdsoft_datetime.now(), optionDateTime, current_time; - now.setHours(h); - h = parseInt(now.getHours(), 10); - now.setMinutes(m); - m = parseInt(now.getMinutes(), 10); - optionDateTime = new Date(_xdsoft_datetime.currentTime); - optionDateTime.setHours(h); - optionDateTime.setMinutes(m); - classes = []; - if ((options.minDateTime !== false && options.minDateTime > optionDateTime) || (options.maxTime !== false && _xdsoft_datetime.strtotime(options.maxTime).getTime() < now.getTime()) || (options.minTime !== false && _xdsoft_datetime.strtotime(options.minTime).getTime() > now.getTime())) { - classes.push('xdsoft_disabled'); - } - if ((options.minDateTime !== false && options.minDateTime > optionDateTime) || ((options.disabledMinTime !== false && now.getTime() > _xdsoft_datetime.strtotime(options.disabledMinTime).getTime()) && (options.disabledMaxTime !== false && now.getTime() < _xdsoft_datetime.strtotime(options.disabledMaxTime).getTime()))) { - classes.push('xdsoft_disabled'); - } - - current_time = new Date(_xdsoft_datetime.currentTime); - current_time.setHours(parseInt(_xdsoft_datetime.currentTime.getHours(), 10)); - current_time.setMinutes(Math[options.roundTime](_xdsoft_datetime.currentTime.getMinutes() / options.step) * options.step); - - if ((options.initTime || options.defaultSelect || datetimepicker.data('changed')) && current_time.getHours() === parseInt(h, 10) && (options.step > 59 || current_time.getMinutes() === parseInt(m, 10))) { - if (options.defaultSelect || datetimepicker.data('changed')) { - classes.push('xdsoft_current'); - } else if (options.initTime) { - classes.push('xdsoft_init_time'); - } - } - if (parseInt(today.getHours(), 10) === parseInt(h, 10) && parseInt(today.getMinutes(), 10) === parseInt(m, 10)) { - classes.push('xdsoft_today'); - } - time += '
    ' + now.dateFormat(options.formatTime) + '
    '; - }; - - if (!options.allowTimes || !$.isArray(options.allowTimes) || !options.allowTimes.length) { - for (i = 0, j = 0; i < (options.hours12 ? 12 : 24); i += 1) { - for (j = 0; j < 60; j += options.step) { - h = (i < 10 ? '0' : '') + i; - m = (j < 10 ? '0' : '') + j; - line_time(h, m); - } - } - } else { - for (i = 0; i < options.allowTimes.length; i += 1) { - h = _xdsoft_datetime.strtotime(options.allowTimes[i]).getHours(); - m = _xdsoft_datetime.strtotime(options.allowTimes[i]).getMinutes(); - line_time(h, m); - } - } - - timebox.html(time); - - opt = ''; - i = 0; - - for (i = parseInt(options.yearStart, 10) + options.yearOffset; i <= parseInt(options.yearEnd, 10) + options.yearOffset; i += 1) { - opt += '
    ' + i + '
    '; - } - yearselect.children().eq(0) - .html(opt); - - for (i = parseInt(options.monthStart, 10), opt = ''; i <= parseInt(options.monthEnd, 10); i += 1) { - opt += '
    ' + options.i18n[options.lang].months[i] + '
    '; - } - monthselect.children().eq(0).html(opt); - $(datetimepicker) - .trigger('generate.xdsoft'); - }, 10); - event.stopPropagation(); - }) - .on('afterOpen.xdsoft', function () { - if (options.timepicker) { - var classType, pheight, height, top; - if (timebox.find('.xdsoft_current').length) { - classType = '.xdsoft_current'; - } else if (timebox.find('.xdsoft_init_time').length) { - classType = '.xdsoft_init_time'; - } - if (classType) { - pheight = timeboxparent[0].clientHeight; - height = timebox[0].offsetHeight; - top = timebox.find(classType).index() * options.timeHeightInTimePicker + 1; - if ((height - pheight) < top) { - top = height - pheight; - } - timeboxparent.trigger('scroll_element.xdsoft_scroller', [parseInt(top, 10) / (height - pheight)]); - } else { - timeboxparent.trigger('scroll_element.xdsoft_scroller', [0]); - } - } - }); - - timerclick = 0; - calendar - .on('click.xdsoft', 'td', function (xdevent) { - xdevent.stopPropagation(); // Prevents closing of Pop-ups, Modals and Flyouts in Bootstrap - timerclick += 1; - var $this = $(this), - currentTime = _xdsoft_datetime.currentTime; - - if (currentTime === undefined || currentTime === null) { - _xdsoft_datetime.currentTime = _xdsoft_datetime.now(); - currentTime = _xdsoft_datetime.currentTime; - } - - if ($this.hasClass('xdsoft_disabled')) { - return false; - } - - currentTime.setDate(1); - currentTime.setFullYear($this.data('year')); - currentTime.setMonth($this.data('month')); - currentTime.setDate($this.data('date')); - - datetimepicker.trigger('select.xdsoft', [currentTime]); - - input.val(_xdsoft_datetime.str()); - if ((timerclick > 1 || (options.closeOnDateSelect === true || (options.closeOnDateSelect === false && !options.timepicker))) && !options.inline) { - datetimepicker.trigger('close.xdsoft'); - } - - if (options.onSelectDate && $.isFunction(options.onSelectDate)) { - options.onSelectDate.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), xdevent); - } - - datetimepicker.data('changed', true); - datetimepicker.trigger('xchange.xdsoft'); - datetimepicker.trigger('changedatetime.xdsoft'); - setTimeout(function () { - timerclick = 0; - }, 200); - }); - - timebox - .on('click.xdsoft', 'div', function (xdevent) { - xdevent.stopPropagation(); - var $this = $(this), - currentTime = _xdsoft_datetime.currentTime; - - if (currentTime === undefined || currentTime === null) { - _xdsoft_datetime.currentTime = _xdsoft_datetime.now(); - currentTime = _xdsoft_datetime.currentTime; - } - - if ($this.hasClass('xdsoft_disabled')) { - return false; - } - currentTime.setHours($this.data('hour')); - currentTime.setMinutes($this.data('minute')); - datetimepicker.trigger('select.xdsoft', [currentTime]); - - datetimepicker.data('input').val(_xdsoft_datetime.str()); - - if (options.inline !== true && options.closeOnTimeSelect === true) { - datetimepicker.trigger('close.xdsoft'); - } - - if (options.onSelectTime && $.isFunction(options.onSelectTime)) { - options.onSelectTime.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), xdevent); - } - datetimepicker.data('changed', true); - datetimepicker.trigger('xchange.xdsoft'); - datetimepicker.trigger('changedatetime.xdsoft'); - }); - - - datepicker - .on('mousewheel.xdsoft', function (event) { - if (!options.scrollMonth) { - return true; - } - if (event.deltaY < 0) { - _xdsoft_datetime.nextMonth(); - } else { - _xdsoft_datetime.prevMonth(); - } - return false; - }); - - input - .on('mousewheel.xdsoft', function (event) { - if (!options.scrollInput) { - return true; - } - if (!options.datepicker && options.timepicker) { - current_time_index = timebox.find('.xdsoft_current').length ? timebox.find('.xdsoft_current').eq(0).index() : 0; - if (current_time_index + event.deltaY >= 0 && current_time_index + event.deltaY < timebox.children().length) { - current_time_index += event.deltaY; - } - if (timebox.children().eq(current_time_index).length) { - timebox.children().eq(current_time_index).trigger('mousedown'); - } - return false; - } - if (options.datepicker && !options.timepicker) { - datepicker.trigger(event, [event.deltaY, event.deltaX, event.deltaY]); - if (input.val) { - input.val(_xdsoft_datetime.str()); - } - datetimepicker.trigger('changedatetime.xdsoft'); - return false; - } - }); - - datetimepicker - .on('changedatetime.xdsoft', function (event) { - if (options.onChangeDateTime && $.isFunction(options.onChangeDateTime)) { - var $input = datetimepicker.data('input'); - options.onChangeDateTime.call(datetimepicker, _xdsoft_datetime.currentTime, $input, event); - delete options.value; - $input.trigger('change'); - } - }) - .on('generate.xdsoft', function () { - if (options.onGenerate && $.isFunction(options.onGenerate)) { - options.onGenerate.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input')); - } - if (triggerAfterOpen) { - datetimepicker.trigger('afterOpen.xdsoft'); - triggerAfterOpen = false; - } - }) - .on('click.xdsoft', function (xdevent) { - xdevent.stopPropagation(); - }); - - current_time_index = 0; - - setPos = function () { - var offset = datetimepicker.data('input').offset(), top = offset.top + datetimepicker.data('input')[0].offsetHeight - 1, left = offset.left, position = "absolute", node; - if (options.fixed) { - top -= $(window).scrollTop(); - left -= $(window).scrollLeft(); - position = "fixed"; - } else { - if (top + datetimepicker[0].offsetHeight > $(window).height() + $(window).scrollTop()) { - top = offset.top - datetimepicker[0].offsetHeight + 1; - } - if (top < 0) { - top = 0; - } - if (left + datetimepicker[0].offsetWidth > $(window).width()) { - left = $(window).width() - datetimepicker[0].offsetWidth; - } - } - - node = datetimepicker[0]; - do { - node = node.parentNode; - if (window.getComputedStyle(node).getPropertyValue('position') === 'relative' && $(window).width() >= node.offsetWidth) { - left = left - (($(window).width() - node.offsetWidth) / 2); - break; - } - } while (node.nodeName !== 'HTML'); - datetimepicker.css({ - left: left, - top: top, - position: position - }); - }; - datetimepicker - .on('open.xdsoft', function (event) { - var onShow = true; - if (options.onShow && $.isFunction(options.onShow)) { - onShow = options.onShow.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), event); - } - if (onShow !== false) { - datetimepicker.show(); - setPos(); - $(window) - .off('resize.xdsoft', setPos) - .on('resize.xdsoft', setPos); - - if (options.closeOnWithoutClick) { - $([document.body, window]).on('mousedown.xdsoft', function arguments_callee6() { - datetimepicker.trigger('close.xdsoft'); - $([document.body, window]).off('mousedown.xdsoft', arguments_callee6); - }); - } - } - }) - .on('close.xdsoft', function (event) { - var onClose = true; - mounth_picker - .find('.xdsoft_month,.xdsoft_year') - .find('.xdsoft_select') - .hide(); - if (options.onClose && $.isFunction(options.onClose)) { - onClose = options.onClose.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), event); - } - if (onClose !== false && !options.opened && !options.inline) { - datetimepicker.hide(); - } - event.stopPropagation(); - }) - .on('toggle.xdsoft', function (event) { - if (datetimepicker.is(':visible')) { - datetimepicker.trigger('close.xdsoft'); - } else { - datetimepicker.trigger('open.xdsoft'); - } - }) - .data('input', input); - - timer = 0; - timer1 = 0; - - datetimepicker.data('xdsoft_datetime', _xdsoft_datetime); - datetimepicker.setOptions(options); - - function getCurrentValue() { - var ct = false, time; - - if (options.startDate) { - ct = _xdsoft_datetime.strToDate(options.startDate); - } else { - ct = options.value || ((input && input.val && input.val()) ? input.val() : ''); - if (ct) { - ct = _xdsoft_datetime.strToDateTime(ct); - } else if (options.defaultDate) { - ct = _xdsoft_datetime.strToDateTime(options.defaultDate); - if (options.defaultTime) { - time = _xdsoft_datetime.strtotime(options.defaultTime); - ct.setHours(time.getHours()); - ct.setMinutes(time.getMinutes()); - } - } - } - - if (ct && _xdsoft_datetime.isValidDate(ct)) { - datetimepicker.data('changed', true); - } else { - ct = ''; - } - - return ct || 0; - } - - _xdsoft_datetime.setCurrentTime(getCurrentValue()); - - input - .data('xdsoft_datetimepicker', datetimepicker) - .on('open.xdsoft focusin.xdsoft mousedown.xdsoft', function (event) { - if (input.is(':disabled') || (input.data('xdsoft_datetimepicker').is(':visible') && options.closeOnInputClick)) { - return; - } - clearTimeout(timer); - timer = setTimeout(function () { - if (input.is(':disabled')) { - return; - } - - triggerAfterOpen = true; - _xdsoft_datetime.setCurrentTime(getCurrentValue()); - - datetimepicker.trigger('open.xdsoft'); - }, 100); - }) - .on('keydown.xdsoft', function (event) { - var val = this.value, elementSelector, - key = event.which; - if ([ENTER].indexOf(key) !== -1 && options.enterLikeTab) { - elementSelector = $("input:visible,textarea:visible"); - datetimepicker.trigger('close.xdsoft'); - elementSelector.eq(elementSelector.index(this) + 1).focus(); - return false; - } - if ([TAB].indexOf(key) !== -1) { - datetimepicker.trigger('close.xdsoft'); - return true; - } - }); - }; - destroyDateTimePicker = function (input) { - var datetimepicker = input.data('xdsoft_datetimepicker'); - if (datetimepicker) { - datetimepicker.data('xdsoft_datetime', null); - datetimepicker.remove(); - input - .data('xdsoft_datetimepicker', null) - .off('.xdsoft'); - $(window).off('resize.xdsoft'); - $([window, document.body]).off('mousedown.xdsoft'); - if (input.unmousewheel) { - input.unmousewheel(); - } - } - }; - $(document) - .off('keydown.xdsoftctrl keyup.xdsoftctrl') - .on('keydown.xdsoftctrl', function (e) { - if (e.keyCode === CTRLKEY) { - ctrlDown = true; - } - }) - .on('keyup.xdsoftctrl', function (e) { - if (e.keyCode === CTRLKEY) { - ctrlDown = false; - } - }); - return this.each(function () { - var datetimepicker = $(this).data('xdsoft_datetimepicker'), $input; - if (datetimepicker) { - if ($.type(opt) === 'string') { - switch (opt) { - case 'show': - $(this).select().focus(); - datetimepicker.trigger('open.xdsoft'); - break; - case 'hide': - datetimepicker.trigger('close.xdsoft'); - break; - case 'toggle': - datetimepicker.trigger('toggle.xdsoft'); - break; - case 'destroy': - destroyDateTimePicker($(this)); - break; - case 'reset': - this.value = this.defaultValue; - if (!this.value || !datetimepicker.data('xdsoft_datetime').isValidDate(Date.parseDate(this.value, options.format))) { - datetimepicker.data('changed', false); - } - datetimepicker.data('xdsoft_datetime').setCurrentTime(this.value); - break; - case 'validate': - $input = datetimepicker.data('input'); - $input.trigger('blur.xdsoft'); - break; - } - } else { - datetimepicker - .setOptions(opt); - } - return 0; - } - if ($.type(opt) !== 'string') { - if (!options.lazyInit || options.open || options.inline) { - createDateTimePicker($(this)); - } else { - lazyInit($(this)); - } - } - }); - }; - $.fn.datetimepicker.defaults = default_options; -}(jQuery)); - -function HighlightedDate(date, desc, style) { - "use strict"; - this.date = date; - this.desc = desc; - this.style = style; -} - -(function () { - -/*! Copyright (c) 2013 Brandon Aaron (http://brandon.aaron.sh) - * Licensed under the MIT License (LICENSE.txt). - * - * Version: 3.1.12 - * - * Requires: jQuery 1.2.2+ - */ -!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?module.exports=a:a(jQuery)}(function(a){function b(b){var g=b||window.event,h=i.call(arguments,1),j=0,l=0,m=0,n=0,o=0,p=0;if(b=a.event.fix(g),b.type="mousewheel","detail"in g&&(m=-1*g.detail),"wheelDelta"in g&&(m=g.wheelDelta),"wheelDeltaY"in g&&(m=g.wheelDeltaY),"wheelDeltaX"in g&&(l=-1*g.wheelDeltaX),"axis"in g&&g.axis===g.HORIZONTAL_AXIS&&(l=-1*m,m=0),j=0===m?l:m,"deltaY"in g&&(m=-1*g.deltaY,j=m),"deltaX"in g&&(l=g.deltaX,0===m&&(j=-1*l)),0!==m||0!==l){if(1===g.deltaMode){var q=a.data(this,"mousewheel-line-height");j*=q,m*=q,l*=q}else if(2===g.deltaMode){var r=a.data(this,"mousewheel-page-height");j*=r,m*=r,l*=r}if(n=Math.max(Math.abs(m),Math.abs(l)),(!f||f>n)&&(f=n,d(g,n)&&(f/=40)),d(g,n)&&(j/=40,l/=40,m/=40),j=Math[j>=1?"floor":"ceil"](j/f),l=Math[l>=1?"floor":"ceil"](l/f),m=Math[m>=1?"floor":"ceil"](m/f),k.settings.normalizeOffset&&this.getBoundingClientRect){var s=this.getBoundingClientRect();o=b.clientX-s.left,p=b.clientY-s.top}return b.deltaX=l,b.deltaY=m,b.deltaFactor=f,b.offsetX=o,b.offsetY=p,b.deltaMode=0,h.unshift(b,j,l,m),e&&clearTimeout(e),e=setTimeout(c,200),(a.event.dispatch||a.event.handle).apply(this,h)}}function c(){f=null}function d(a,b){return k.settings.adjustOldDeltas&&"mousewheel"===a.type&&b%120===0}var e,f,g=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],h="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],i=Array.prototype.slice;if(a.event.fixHooks)for(var j=g.length;j;)a.event.fixHooks[g[--j]]=a.event.mouseHooks;var k=a.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var c=h.length;c;)this.addEventListener(h[--c],b,!1);else this.onmousewheel=b;a.data(this,"mousewheel-line-height",k.getLineHeight(this)),a.data(this,"mousewheel-page-height",k.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var c=h.length;c;)this.removeEventListener(h[--c],b,!1);else this.onmousewheel=null;a.removeData(this,"mousewheel-line-height"),a.removeData(this,"mousewheel-page-height")},getLineHeight:function(b){var c=a(b),d=c["offsetParent"in a.fn?"offsetParent":"parent"]();return d.length||(d=a("body")),parseInt(d.css("fontSize"),10)||parseInt(c.css("fontSize"),10)||16},getPageHeight:function(b){return a(b).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})}); - -// Parse and Format Library -//http://www.xaprb.com/blog/2005/12/12/javascript-closures-for-runtime-efficiency/ -/* - * Copyright (C) 2004 Baron Schwartz - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published by the - * Free Software Foundation, version 2.1. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more - * details. - */ -Date.parseFunctions={count:0};Date.parseRegexes=[];Date.formatFunctions={count:0};Date.prototype.dateFormat=function(b){if(b=="unixtime"){return parseInt(this.getTime()/1000);}if(Date.formatFunctions[b]==null){Date.createNewFormat(b);}var a=Date.formatFunctions[b];return this[a]();};Date.createNewFormat=function(format){var funcName="format"+Date.formatFunctions.count++;Date.formatFunctions[format]=funcName;var codePrefix="Date.prototype."+funcName+" = function() {return ";var code="";var special=false;var ch="";for(var i=0;i 0) {";var regex="";var special=false;var ch="";for(var i=0;i 0 && z > 0){\nvar doyDate = new Date(y,0);\ndoyDate.setDate(z);\nm = doyDate.getMonth();\nd = doyDate.getDate();\n}";code+="if (y > 0 && m >= 0 && d > 0 && h >= 0 && i >= 0 && s >= 0)\n{return new Date(y, m, d, h, i, s);}\nelse if (y > 0 && m >= 0 && d > 0 && h >= 0 && i >= 0)\n{return new Date(y, m, d, h, i);}\nelse if (y > 0 && m >= 0 && d > 0 && h >= 0)\n{return new Date(y, m, d, h);}\nelse if (y > 0 && m >= 0 && d > 0)\n{return new Date(y, m, d);}\nelse if (y > 0 && m >= 0)\n{return new Date(y, m);}\nelse if (y > 0)\n{return new Date(y);}\n}return null;}";Date.parseRegexes[regexNum]=new RegExp("^"+regex+"$",'i');eval(code);};Date.formatCodeToRegex=function(b,a){switch(b){case"D":return{g:0,c:null,s:"(?:Sun|Mon|Tue|Wed|Thu|Fri|Sat)"};case"j":case"d":return{g:1,c:"d = parseInt(results["+a+"], 10);\n",s:"(\\d{1,2})"};case"l":return{g:0,c:null,s:"(?:"+Date.dayNames.join("|")+")"};case"S":return{g:0,c:null,s:"(?:st|nd|rd|th)"};case"w":return{g:0,c:null,s:"\\d"};case"z":return{g:1,c:"z = parseInt(results["+a+"], 10);\n",s:"(\\d{1,3})"};case"W":return{g:0,c:null,s:"(?:\\d{2})"};case"F":return{g:1,c:"m = parseInt(Date.monthNumbers[results["+a+"].substring(0, 3)], 10);\n",s:"("+Date.monthNames.join("|")+")"};case"M":return{g:1,c:"m = parseInt(Date.monthNumbers[results["+a+"]], 10);\n",s:"(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)"};case"n":case"m":return{g:1,c:"m = parseInt(results["+a+"], 10) - 1;\n",s:"(\\d{1,2})"};case"t":return{g:0,c:null,s:"\\d{1,2}"};case"L":return{g:0,c:null,s:"(?:1|0)"};case"Y":return{g:1,c:"y = parseInt(results["+a+"], 10);\n",s:"(\\d{4})"};case"y":return{g:1,c:"var ty = parseInt(results["+a+"], 10);\ny = ty > Date.y2kYear ? 1900 + ty : 2000 + ty;\n",s:"(\\d{1,2})"};case"a":return{g:1,c:"if (results["+a+"] == 'am') {\nif (h == 12) { h = 0; }\n} else { if (h < 12) { h += 12; }}",s:"(am|pm)"};case"A":return{g:1,c:"if (results["+a+"] == 'AM') {\nif (h == 12) { h = 0; }\n} else { if (h < 12) { h += 12; }}",s:"(AM|PM)"};case"g":case"G":case"h":case"H":return{g:1,c:"h = parseInt(results["+a+"], 10);\n",s:"(\\d{1,2})"};case"i":return{g:1,c:"i = parseInt(results["+a+"], 10);\n",s:"(\\d{2})"};case"s":return{g:1,c:"s = parseInt(results["+a+"], 10);\n",s:"(\\d{2})"};case"O":return{g:0,c:null,s:"[+-]\\d{4}"};case"T":return{g:0,c:null,s:"[A-Z]{3}"};case"Z":return{g:0,c:null,s:"[+-]\\d{1,5}"};default:return{g:0,c:null,s:String.escape(b)};}};Date.prototype.getTimezone=function(){return this.toString().replace(/^.*? ([A-Z]{3}) [0-9]{4}.*$/,"$1").replace(/^.*?\(([A-Z])[a-z]+ ([A-Z])[a-z]+ ([A-Z])[a-z]+\)$/,"$1$2$3");};Date.prototype.getGMTOffset=function(){return(this.getTimezoneOffset()>0?"-":"+")+String.leftPad(Math.floor(Math.abs(this.getTimezoneOffset())/60),2,"0")+String.leftPad(Math.abs(this.getTimezoneOffset())%60,2,"0");};Date.prototype.getDayOfYear=function(){var a=0;Date.daysInMonth[1]=this.isLeapYear()?29:28;for(var b=0;b div { - position: absolute; - top: 0; - left: 0; - width: 8px; - height: 8px; - border-radius: 8px; - border: solid 2px white; - -moz-box-sizing: content-box; - -webkit-box-sizing: content-box; - box-sizing: content-box; -} - -.minicolors-picker { - position: absolute; - top: 0; - left: 0; - width: 18px; - height: 2px; - background: white; - border: solid 1px black; - margin-top: -2px; - -moz-box-sizing: content-box; - -webkit-box-sizing: content-box; - box-sizing: content-box; -} - -/* Swatches */ -.minicolors-swatches,.minicolors-swatches li { - margin: 0; - padding: 0; - list-style: none; - overflow: hidden; - position: absolute; - top: 157px; - left: 5px; -} - -.minicolors-swatches .minicolors-swatch { - position: relative; - float: left; - cursor: pointer; - margin:0 4px 0 0; -} - -.minicolors-with-opacity .minicolors-swatches .minicolors-swatch { - margin-right:7px; -} - -.minicolors-swatch.selected { - border-color:#000; -} - -/* Inline controls */ -.minicolors-inline { - display: inline-block; -} - -.minicolors-inline .minicolors-input { - display: none !important; -} - -.minicolors-inline .minicolors-panel { - position: relative; - top: auto; - left: auto; - box-shadow: none; - z-index: auto; - display: inline-block; -} - -/* Default theme */ -.minicolors-theme-default .minicolors-swatch { - top: 5px; - left: 5px; - width: 18px; - height: 18px; -} -.minicolors-theme-default .minicolors-swatches .minicolors-swatch { - top: 0; - left: 0; - width: 18px; - height: 18px; -} -.minicolors-theme-default .minicolors-swatches { - height: 20px; -} -.minicolors-theme-default.minicolors-position-right .minicolors-swatch { - left: auto; - right: 5px; -} -.minicolors-theme-default.minicolors { - width: auto; - display: inline-block; -} -.minicolors-theme-default .minicolors-input { - height: 20px; - width: auto; - display: inline-block; - padding-left: 26px; -} -.minicolors-theme-default.minicolors-position-right .minicolors-input { - padding-right: 26px; - padding-left: inherit; -} - -/* Bootstrap theme */ -.minicolors-theme-bootstrap .minicolors-swatch { - z-index: 2; - top: 3px; - left: 3px; - width: 28px; - height: 28px; - border-radius: 3px; -} -.minicolors-theme-bootstrap .minicolors-swatches .minicolors-swatch { - top: 0; - left: 0; - width: 20px; - height: 20px; -} -.minicolors-theme-bootstrap .minicolors-swatch-color { - border-radius: inherit; -} -.minicolors-theme-bootstrap.minicolors-position-right .minicolors-swatch { - left: auto; - right: 3px; -} -.minicolors-theme-bootstrap .minicolors-input { - float: none; - padding-left: 44px; -} -.minicolors-theme-bootstrap.minicolors-position-right .minicolors-input { - padding-right: 44px; - padding-left: 12px; -} -.minicolors-theme-bootstrap .minicolors-input.input-lg + .minicolors-swatch { - top: 4px; - left: 4px; - width: 37px; - height: 37px; - border-radius: 5px; -} -.minicolors-theme-bootstrap .minicolors-input.input-sm + .minicolors-swatch { - width: 24px; - height: 24px; -} -.input-group .minicolors-theme-bootstrap:not(:first-child) .minicolors-input { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} diff --git a/public/plugins/jquery.minicolors-2.2.3/jquery.minicolors.min.js b/public/plugins/jquery.minicolors-2.2.3/jquery.minicolors.min.js deleted file mode 100644 index 5e5d7c9e3..000000000 --- a/public/plugins/jquery.minicolors-2.2.3/jquery.minicolors.min.js +++ /dev/null @@ -1,11 +0,0 @@ -/* - * jQuery MiniColors: A tiny color picker built on jQuery - * - * Copyright: Cory LaViska for A Beautiful Site, LLC: http://www.abeautifulsite.net/ - * - * Contribute: https://github.com/claviska/jquery-minicolors - * - * @license: http://opensource.org/licenses/MIT - * - */ -!function(i){"function"==typeof define&&define.amd?define(["jquery"],i):"object"==typeof exports?module.exports=i(require("jquery")):i(jQuery)}(function($){"use strict";function i(i,t){var o=$('
    '),a=$.minicolors.defaults,s=i.attr("data-opacity"),n;i.data("minicolors-initialized")||(t=$.extend(!0,{},a,t),o.addClass("minicolors-theme-"+t.theme).toggleClass("minicolors-with-opacity",t.opacity).toggleClass("minicolors-no-data-uris",t.dataUris!==!0),void 0!==t.position&&$.each(t.position.split(" "),function(){o.addClass("minicolors-position-"+this)}),n="rgb"===t.format?t.opacity?"25":"20":t.keywords?"11":"7",i.addClass("minicolors-input").data("minicolors-initialized",!1).data("minicolors-settings",t).prop("size",n).wrap(o).after('
    '),t.inline||(i.after(''),i.next(".minicolors-swatch").on("click",function(t){t.preventDefault(),i.focus()})),i.parent().find(".minicolors-panel").on("selectstart",function(){return!1}).end(),t.inline&&i.parent().addClass("minicolors-inline"),r(i,!1),i.data("minicolors-initialized",!0))}function t(i){var t=i.parent();i.removeData("minicolors-initialized").removeData("minicolors-settings").removeProp("size").removeClass("minicolors-input"),t.before(i).remove()}function o(i){var t=i.parent(),o=t.find(".minicolors-panel"),s=i.data("minicolors-settings");!i.data("minicolors-initialized")||i.prop("disabled")||t.hasClass("minicolors-inline")||t.hasClass("minicolors-focus")||(a(),t.addClass("minicolors-focus"),o.stop(!0,!0).fadeIn(s.showSpeed,function(){s.show&&s.show.call(i.get(0))}))}function a(){$(".minicolors-focus").each(function(){var i=$(this),t=i.find(".minicolors-input"),o=i.find(".minicolors-panel"),a=t.data("minicolors-settings");o.fadeOut(a.hideSpeed,function(){a.hide&&a.hide.call(t.get(0)),i.removeClass("minicolors-focus")})})}function s(i,t,o){var a=i.parents(".minicolors").find(".minicolors-input"),s=a.data("minicolors-settings"),r=i.find("[class$=-picker]"),e=i.offset().left,c=i.offset().top,l=Math.round(t.pageX-e),h=Math.round(t.pageY-c),d=o?s.animationSpeed:0,u,p,g,m;t.originalEvent.changedTouches&&(l=t.originalEvent.changedTouches[0].pageX-e,h=t.originalEvent.changedTouches[0].pageY-c),0>l&&(l=0),0>h&&(h=0),l>i.width()&&(l=i.width()),h>i.height()&&(h=i.height()),i.parent().is(".minicolors-slider-wheel")&&r.parent().is(".minicolors-grid")&&(u=75-l,p=75-h,g=Math.sqrt(u*u+p*p),m=Math.atan2(p,u),0>m&&(m+=2*Math.PI),g>75&&(g=75,l=75-75*Math.cos(m),h=75-75*Math.sin(m)),l=Math.round(l),h=Math.round(h)),i.is(".minicolors-grid")?r.stop(!0).animate({top:h+"px",left:l+"px"},d,s.animationEasing,function(){n(a,i)}):r.stop(!0).animate({top:h+"px"},d,s.animationEasing,function(){n(a,i)})}function n(i,t){function o(i,t){var o,a;return i.length&&t?(o=i.offset().left,a=i.offset().top,{x:o-t.offset().left+i.outerWidth()/2,y:a-t.offset().top+i.outerHeight()/2}):null}var a,s,n,r,c,l,d,u=i.val(),p=i.attr("data-opacity"),m,f=i.parent(),v=i.data("minicolors-settings"),b=f.find(".minicolors-swatch"),y=f.find(".minicolors-grid"),C=f.find(".minicolors-slider"),M=f.find(".minicolors-opacity-slider"),x=y.find("[class$=-picker]"),I=C.find("[class$=-picker]"),S=M.find("[class$=-picker]"),z=o(x,y),F=o(I,C),j=o(S,M);if(t.is(".minicolors-grid, .minicolors-slider, .minicolors-opacity-slider")){switch(v.control){case"wheel":r=y.width()/2-z.x,c=y.height()/2-z.y,l=Math.sqrt(r*r+c*c),d=Math.atan2(c,r),0>d&&(d+=2*Math.PI),l>75&&(l=75,z.x=69-75*Math.cos(d),z.y=69-75*Math.sin(d)),s=g(l/.75,0,100),a=g(180*d/Math.PI,0,360),n=g(100-Math.floor(F.y*(100/C.height())),0,100),u=w({h:a,s:s,b:n}),C.css("backgroundColor",w({h:a,s:s,b:100}));break;case"saturation":a=g(parseInt(z.x*(360/y.width()),10),0,360),s=g(100-Math.floor(F.y*(100/C.height())),0,100),n=g(100-Math.floor(z.y*(100/y.height())),0,100),u=w({h:a,s:s,b:n}),C.css("backgroundColor",w({h:a,s:100,b:n})),f.find(".minicolors-grid-inner").css("opacity",s/100);break;case"brightness":a=g(parseInt(z.x*(360/y.width()),10),0,360),s=g(100-Math.floor(z.y*(100/y.height())),0,100),n=g(100-Math.floor(F.y*(100/C.height())),0,100),u=w({h:a,s:s,b:n}),C.css("backgroundColor",w({h:a,s:s,b:100})),f.find(".minicolors-grid-inner").css("opacity",1-n/100);break;default:a=g(360-parseInt(F.y*(360/C.height()),10),0,360),s=g(Math.floor(z.x*(100/y.width())),0,100),n=g(100-Math.floor(z.y*(100/y.height())),0,100),u=w({h:a,s:s,b:n}),y.css("backgroundColor",w({h:a,s:100,b:100}))}if(p=v.opacity?parseFloat(1-j.y/M.height()).toFixed(2):1,v.opacity&&i.attr("data-opacity",p),"rgb"===v.format){var D=k(u),p=""===i.attr("data-opacity")?1:g(parseFloat(i.attr("data-opacity")).toFixed(2),0,1);(isNaN(p)||!v.opacity)&&(p=1),m=i.minicolors("rgbObject").a<=1&&D&&v.opacity?"rgba("+D.r+", "+D.g+", "+D.b+", "+parseFloat(p)+")":"rgb("+D.r+", "+D.g+", "+D.b+")"}else m=h(u,v.letterCase);i.val(m)}b.find("span").css({backgroundColor:u,opacity:p}),e(i,m,p)}function r(i,t){var o,a,s,n,r,c,l,v,y,M,k=i.parent(),x=i.data("minicolors-settings"),I=k.find(".minicolors-swatch"),S=k.find(".minicolors-grid"),z=k.find(".minicolors-slider"),F=k.find(".minicolors-opacity-slider"),j=S.find("[class$=-picker]"),D=z.find("[class$=-picker]"),T=F.find("[class$=-picker]");switch(m(i.val())?(o=b(i.val()),r=g(parseFloat(f(i.val())).toFixed(2),0,1),r&&i.attr("data-opacity",r)):o=h(d(i.val(),!0),x.letterCase),o||(o=h(p(x.defaultValue,!0),x.letterCase)),a=C(o),n=x.keywords?$.map(x.keywords.split(","),function(i){return $.trim(i.toLowerCase())}):[],c=""!==i.val()&&$.inArray(i.val().toLowerCase(),n)>-1?h(i.val()):m(i.val())?u(i.val()):o,t||i.val(c),x.opacity&&(s=""===i.attr("data-opacity")?1:g(parseFloat(i.attr("data-opacity")).toFixed(2),0,1),isNaN(s)&&(s=1),i.attr("data-opacity",s),I.find("span").css("opacity",s),v=g(F.height()-F.height()*s,0,F.height()),T.css("top",v+"px")),"transparent"===i.val().toLowerCase()&&I.find("span").css("opacity",0),I.find("span").css("backgroundColor",o),x.control){case"wheel":y=g(Math.ceil(.75*a.s),0,S.height()/2),M=a.h*Math.PI/180,l=g(75-Math.cos(M)*y,0,S.width()),v=g(75-Math.sin(M)*y,0,S.height()),j.css({top:v+"px",left:l+"px"}),v=150-a.b/(100/S.height()),""===o&&(v=0),D.css("top",v+"px"),z.css("backgroundColor",w({h:a.h,s:a.s,b:100}));break;case"saturation":l=g(5*a.h/12,0,150),v=g(S.height()-Math.ceil(a.b/(100/S.height())),0,S.height()),j.css({top:v+"px",left:l+"px"}),v=g(z.height()-a.s*(z.height()/100),0,z.height()),D.css("top",v+"px"),z.css("backgroundColor",w({h:a.h,s:100,b:a.b})),k.find(".minicolors-grid-inner").css("opacity",a.s/100);break;case"brightness":l=g(5*a.h/12,0,150),v=g(S.height()-Math.ceil(a.s/(100/S.height())),0,S.height()),j.css({top:v+"px",left:l+"px"}),v=g(z.height()-a.b*(z.height()/100),0,z.height()),D.css("top",v+"px"),z.css("backgroundColor",w({h:a.h,s:a.s,b:100})),k.find(".minicolors-grid-inner").css("opacity",1-a.b/100);break;default:l=g(Math.ceil(a.s/(100/S.width())),0,S.width()),v=g(S.height()-Math.ceil(a.b/(100/S.height())),0,S.height()),j.css({top:v+"px",left:l+"px"}),v=g(z.height()-a.h/(360/z.height()),0,z.height()),D.css("top",v+"px"),S.css("backgroundColor",w({h:a.h,s:100,b:100}))}i.data("minicolors-initialized")&&e(i,c,s)}function e(i,t,o){var a=i.data("minicolors-settings"),s=i.data("minicolors-lastChange");s&&s.value===t&&s.opacity===o||(i.data("minicolors-lastChange",{value:t,opacity:o}),a.change&&(a.changeDelay?(clearTimeout(i.data("minicolors-changeTimeout")),i.data("minicolors-changeTimeout",setTimeout(function(){a.change.call(i.get(0),t,o)},a.changeDelay))):a.change.call(i.get(0),t,o)),i.trigger("change").trigger("input"))}function c(i){var t=d($(i).val(),!0),o=k(t),a=$(i).attr("data-opacity");return o?(void 0!==a&&$.extend(o,{a:parseFloat(a)}),o):null}function l(i,t){var o=d($(i).val(),!0),a=k(o),s=$(i).attr("data-opacity");return a?(void 0===s&&(s=1),t?"rgba("+a.r+", "+a.g+", "+a.b+", "+parseFloat(s)+")":"rgb("+a.r+", "+a.g+", "+a.b+")"):null}function h(i,t){return"uppercase"===t?i.toUpperCase():i.toLowerCase()}function d(i,t){return i=i.replace(/^#/g,""),i.match(/^[A-F0-9]{3,6}/gi)?3!==i.length&&6!==i.length?"":(3===i.length&&t&&(i=i[0]+i[0]+i[1]+i[1]+i[2]+i[2]),"#"+i):""}function u(i,t){var o=i.replace(/[^\d,.]/g,""),a=o.split(","),s;return a[0]=g(parseInt(a[0],10),0,255),a[1]=g(parseInt(a[1],10),0,255),a[2]=g(parseInt(a[2],10),0,255),a[3]&&(a[3]=g(parseFloat(a[3],10),0,1)),t?{r:a[0],g:a[1],b:a[2],a:a[3]?a[3]:null}:"undefined"!=typeof a[3]&&a[3]<=1?"rgba("+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+")":"rgb("+a[0]+", "+a[1]+", "+a[2]+")"}function p(i,t){return m(i)?u(i):d(i,t)}function g(i,t,o){return t>i&&(i=t),i>o&&(i=o),i}function m(i){var t=i.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i);return t&&4===t.length?!0:!1}function f(i){var i=i.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+(\.\d{1,2})?|\.\d{1,2})[\s+]?/i);return i&&6===i.length?i[4]:"1"}function v(i){var t={},o=Math.round(i.h),a=Math.round(255*i.s/100),s=Math.round(255*i.b/100);if(0===a)t.r=t.g=t.b=s;else{var n=s,r=(255-a)*s/255,e=(n-r)*(o%60)/60;360===o&&(o=0),60>o?(t.r=n,t.b=r,t.g=r+e):120>o?(t.g=n,t.b=r,t.r=n-e):180>o?(t.g=n,t.r=r,t.b=r+e):240>o?(t.b=n,t.r=r,t.g=n-e):300>o?(t.b=n,t.g=r,t.r=r+e):360>o?(t.r=n,t.g=r,t.b=n-e):(t.r=0,t.g=0,t.b=0)}return{r:Math.round(t.r),g:Math.round(t.g),b:Math.round(t.b)}}function b(i){return i=i.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i),i&&4===i.length?"#"+("0"+parseInt(i[1],10).toString(16)).slice(-2)+("0"+parseInt(i[2],10).toString(16)).slice(-2)+("0"+parseInt(i[3],10).toString(16)).slice(-2):""}function y(i){var t=[i.r.toString(16),i.g.toString(16),i.b.toString(16)];return $.each(t,function(i,o){1===o.length&&(t[i]="0"+o)}),"#"+t.join("")}function w(i){return y(v(i))}function C(i){var t=M(k(i));return 0===t.s&&(t.h=360),t}function M(i){var t={h:0,s:0,b:0},o=Math.min(i.r,i.g,i.b),a=Math.max(i.r,i.g,i.b),s=a-o;return t.b=a,t.s=0!==a?255*s/a:0,0!==t.s?i.r===a?t.h=(i.g-i.b)/s:i.g===a?t.h=2+(i.b-i.r)/s:t.h=4+(i.r-i.g)/s:t.h=-1,t.h*=60,t.h<0&&(t.h+=360),t.s*=100/255,t.b*=100/255,t}function k(i){return i=parseInt(i.indexOf("#")>-1?i.substring(1):i,16),{r:i>>16,g:(65280&i)>>8,b:255&i}}$.minicolors={defaults:{animationSpeed:50,animationEasing:"swing",change:null,changeDelay:0,control:"hue",dataUris:!0,defaultValue:"",format:"hex",hide:null,hideSpeed:100,inline:!1,keywords:"",letterCase:"lowercase",opacity:!1,position:"bottom left",show:null,showSpeed:100,theme:"default"}},$.extend($.fn,{minicolors:function(s,n){switch(s){case"destroy":return $(this).each(function(){t($(this))}),$(this);case"hide":return a(),$(this);case"opacity":return void 0===n?$(this).attr("data-opacity"):($(this).each(function(){r($(this).attr("data-opacity",n))}),$(this));case"rgbObject":return c($(this),"rgbaObject"===s);case"rgbString":case"rgbaString":return l($(this),"rgbaString"===s);case"settings":return void 0===n?$(this).data("minicolors-settings"):($(this).each(function(){var i=$(this).data("minicolors-settings")||{};t($(this)),$(this).minicolors($.extend(!0,i,n))}),$(this));case"show":return o($(this).eq(0)),$(this);case"value":return void 0===n?$(this).val():($(this).each(function(){"object"==typeof n?(n.opacity&&$(this).attr("data-opacity",g(n.opacity,0,1)),n.color&&$(this).val(n.color)):$(this).val(n),r($(this))}),$(this));default:return"create"!==s&&(n=s),$(this).each(function(){i($(this),n)}),$(this)}}}),$(document).on("mousedown.minicolors touchstart.minicolors",function(i){$(i.target).parents().add(i.target).hasClass("minicolors")||a()}).on("mousedown.minicolors touchstart.minicolors",".minicolors-grid, .minicolors-slider, .minicolors-opacity-slider",function(i){var t=$(this);i.preventDefault(),$(document).data("minicolors-target",t),s(t,i,!0)}).on("mousemove.minicolors touchmove.minicolors",function(i){var t=$(document).data("minicolors-target");t&&s(t,i)}).on("mouseup.minicolors touchend.minicolors",function(){$(this).removeData("minicolors-target")}).on("mousedown.minicolors touchstart.minicolors",".minicolors-swatch",function(i){var t=$(this).parent().find(".minicolors-input");i.preventDefault(),o(t)}).on("focus.minicolors",".minicolors-input",function(){var i=$(this);i.data("minicolors-initialized")&&o(i)}).on("blur.minicolors",".minicolors-input",function(){var i=$(this),t=i.data("minicolors-settings"),o,a,s,n,r;i.data("minicolors-initialized")&&(o=t.keywords?$.map(t.keywords.split(","),function(i){return $.trim(i.toLowerCase())}):[],""!==i.val()&&$.inArray(i.val().toLowerCase(),o)>-1?r=i.val():(m(i.val())?s=u(i.val(),!0):(a=d(i.val(),!0),s=a?k(a):null),r=null===s?t.defaultValue:"rgb"===t.format?u(t.opacity?"rgba("+s.r+","+s.g+","+s.b+","+i.attr("data-opacity")+")":"rgb("+s.r+","+s.g+","+s.b+")"):y(s)),n=t.opacity?i.attr("data-opacity"):1,"transparent"===r.toLowerCase()&&(n=0),i.closest(".minicolors").find(".minicolors-swatch > span").css("opacity",n),i.val(r),""===i.val()&&i.val(p(t.defaultValue,!0)),i.val(h(i.val(),t.letterCase)))}).on("keydown.minicolors",".minicolors-input",function(i){var t=$(this);if(t.data("minicolors-initialized"))switch(i.keyCode){case 9:a();break;case 13:case 27:a(),t.blur()}}).on("keyup.minicolors",".minicolors-input",function(){var i=$(this);i.data("minicolors-initialized")&&r(i,!0)}).on("paste.minicolors",".minicolors-input",function(){var i=$(this);i.data("minicolors-initialized")&&setTimeout(function(){r(i,!0)},1)})}); \ No newline at end of file diff --git a/public/plugins/jquery.minicolors-2.2.3/jquery.minicolors.png b/public/plugins/jquery.minicolors-2.2.3/jquery.minicolors.png deleted file mode 100644 index bccc2012af78a0358e893f004e0207cac8f9e642..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68627 zcmX7vWmuG5*M^7g&Y_V9rI}#>=@e81q&tQhxD-q-&_5q#LDMy5ZwJ zz908K_V2y#wXU_!b?q-|s&9$#>F@yn0MYw*Z!`b^4A}EN6&L$?ZK%%l1)vcuyniFB z<&CzHftA28M%GtO{LRqscq}#_1bLMY3MhP2;hzA4K-}M$!2}p?ZLGPbTb$iKjzI!U zd`5UvqJ4eKy!_W69jl)X2b=oqnzn@L$;_7jk@J38SIaOvaw1F3_`CbM(URoJx5qJL z{jK!v1o<7m??jBCv-_5z;Q=nu{l+V4FeATr7r}u6%5UW?yWg|%KUOczK~|EMc2#<^ zFwxIMz4VvdjWgPn;1_%QQ;vs+-|T)YwU{yQ%VJkU;_Ow%pE`nopFM9nZ3di&gS*&X zCcR%2RPpohpv1w!Ib2yWX+a<+vqjxs2A*ZE)*pM%iYFY@&ugiEjkIw%TFRJT`8MyA zLBr#zj3wMF&ManCawh3`y~vr#`Gk~kf7sug^paR(lz_*jmdYKPEl>y0y9@sREq^d!urM7 zzVyH0!cnj_=XGOGrYHMBZ@Hm>9q4y1rVkP4pIOd1ruu)uqS_*QI(lC<794X6Caqf# z+=m%*{)Lrea|X)z)hf_Cgt0Uo%y`fB@~|KNXq-Yj98g$D)*W%r9W)JjI-RmW1qAH% zTd9y6=Ny{_4eYlQ28kaY|H)4JvXpt7D|9>K(Yu$UFc~sY|LlWJvw75cw>V> z@V|cleU$U8tim4I&KFTYExMz7kMV{YD9K)tvCQZHr^c(%|{Em#?CA)Kh_D!eV#9+zwB8ozT0!r{yEe z(?rLL+OH>1!JZr1Na1K78DTMfqgY5nB$^REY(TSs5XNCcqLAxN9tR1yM4;vaL58Z$ z;+vz%;6cv$;y8S7v^mTHj(7&9U2;e1JXUl|bZ2;i2!XRl_d;=3THwxzAM+&o&*0ev zt#+HKALBs*W}~JUeC7UYXM6z3PqhTzGXowsMdGO=$T~!ITQ%jJVDTe`UuQ)qdNe@% zUlXe#06`>fyMzU@;GpMD{34k_gPKc?O9ce6aO8gvUewNy|&ycGloU zd#W$@MT8+His=_EYDs)2l(&GNM#SQ7M4DQg(TUUd)8czQTq91Gfyxf4EG z?R>K!MeY<*O^%UB4M1?F^>#|3HRpdqcm2lL+v1%2WN7Zy{ZC`+{i;lk`PA29yro1o z5Cx0-OJ!uv*x!!}G*Szq`qQId8N>onjCB0_a+~E(r=s6udbJIMYjck0Ie+h?i zQ#k2Q4qHKAZ$C6&@lS1bwyIXl-aq*zV{Ti6lYSRT5XUAp;4Ug*QB``l z6v!R5trCCRhYbe@%i1fqZxe0-9o)f|EiE@@GebI|=`A=ylpk-abT#sI{{pW_j{aWPjd#&IWmYK0O^Rn+Cpt7v1kEn6JA zFclWXSGEJ955e4Zz~jJeK~VtC&mZ0CA%XU}YxNYwa^CX%ry>cI_afq99};o8c-x>Cdz>yYSVoceRvxpm*Gbv zeIm}fpEx;PMppi$R^Vptg`R8cPRxM;A35M{^(R3|d25Eub6k{bbg*CS3tS~PqEtBP z+{@|qwSr?EvFd4mYdJ6UpO&M7ST`rrpHzodMlfI>ecq4HT4Nl4NRz1{2iJ~?qdQd2o1VzpH@mT%y4uzr>d0rqRsO3gWg5lKt zO<3yD7s-IFy|Vh$mf<{Y2gSdB7aDX|?bV}gub8W##WIwkgd=|Ad9w)wj#8aBS2KPJ zW7;n|366U3r*yhvx6ehrKkAJ=bVC*FyNocMF<~<>(w+<2eh8dv1`TO2DMtfDDY78{ z!~`Q!Qc|#CDq#AM`R|`r^qqd~79S<)`Um3W$(|C`8-jF~Tti=@w`ePM(FLo(4YeHX z&gNHeD%#%U$$pyq#qu~PbuWQ|2&h!UEeO%6ZO^oRd1KYwwsX*hA&=dQAugjsdNe@a zyT~9+xecHHw1dOYhYE1xrJNCAj1=(28gIY{xLe6ks=ahWoz_}(mH&)YT^cKtnhkn9 zXon^+$BP{Hq?1^-Yox-K)f9PMg_Dx3g{}X@_V>KLIU_>BupD8+s3>jP$v_N9^cx*O zQnL*8o1lpyR{FFcur-^MY^~cpC2Tn*G+ho(iRX%$2u`+oG196xymZ^} z2-u_Rer1zaPRnCCLEqm+0XUY#UzxO7elcO*yjV$GrGLYv4cOVq23MV;Nd7`NuL0(o z+%Op7`t*Tg2+X}ba~WbV{CeDpgA@a}pc)Tk@)g49l*#V$Lr3CH$z;AOPUu8slectM zd+W&2%zmhz&f@^|@qoRtg17p_toCXA1_$w6RnPXh<|hh>_ud56bmu2TfDCX=Nd)k9 zqEAx}4YnI;w`*i1aH2@!kspff9gD{$9b&2fsG8KUIZ5nY@r09|6*QX^lgb;($mvpB zaZ#R%Xi?-$%K9cHDm)O=Bw2E40Lte!O?#DB|z@QTMqd*Z*3Q z<|yU$Cp-IeFDk*H?@1PodwDXT$VO{`oA}$O=0+gRLdSVPFodW{2SAXhND1k{tce7p zLEZ(QHFCnpO7B7pgt@a~+a&@3ur5=DI}S-1U=L6oCe>>4bjC>lyDI;8y4>*ayEs;x z6tc4i^ss%84J)v(#4f#26P^;4_E2{pq3i`YV;!m@#nBtwe0YU6z)wz$Ehm&%2;H>g zzTyg~@CWH@FVd%vCv~q6mRYx$0fhw=gs{URgH9e|<2Ta5+{W}F+HOY_Vd+xVm;oGm z^yR+aao(sEf^_dNWgdlmp8zQQu$1MN+~qBLhP*gYJfAm}tkHn?*ob^bZB&Kgb$%$2 zK2WfsqJh4U3LbYJEF^|o)fdQXA4M+UyQ(>WL_g{E5Ph29Ll!ncjsit-coZT>1U(n}fbgJ-MN7rP;iXC=YHXPqC( z+M$e|4zPdpvr)y^_*!((Q8a&FNl2!uxW8qE%YAsogNd)Wn|xm-5SKP`RRrBPslEFBLv1iYTfpfD`z6 zC+dnNrz@Ah1G6y-N27m89LSWE6&Kufs*c3YHDe~<_a0;*2ks$0-=+GAOpwBY-?*m9 z?lz!v$g}oUG+Abfe)}z*s!4=07@Z5MT(92KSXm7w#0NsT0g&B0p#_UFE2+fyl|#T= zdmZuMnJoj8h0MMC)tTC>ECc9ejq@9|CJSBd^Ky>HVYjpKQ>!P5hMrCb&>&RDJq!Rt zrvt+W#Uisuv}rC_UppWVHSvI*Kl~VK?+|2#^wiZLRI<=w2ji0C_4cnsPxNeP}WjKW^W6XJelI zCos40J%`2oV*cZQzp7n)b)dn7@}#)ReFr6n8AKSEZUQx-K4*bR=10Iu-0Ici3PTa*gfRd@thqtN+Rqak*4>b+d@I&gxU#n= z;^a3|&*eO_rgkR~Y2yEVwELS}OBPq2r8Pi4XLG4>A_J;|n81TxB0 z0=&c(MYy8?an?k~BUEW(@nI<_mkMBD-_f?R{yK`Y?QRNyhr_ zs?n6o4Nc?T&4tV7D3}pAej0@mjHhnUfvAz+aA0)p17*OFx$!+6P#VAr9absGK_A!P zq8L1{OS0neIaZ1%d1Arg5?ofK{KY&{NULcdXN|lRCJBo1|MH=j1;p>LUTNYK;5(?l zGBxP0s5+g#d0%(UUcynTznp&4Z-?%UhN{6!?fy+qDxJv)sM$#K z{kI+X%7(pM4x8X%gbGq>mWg~#WD|>$R@Rp1u&8A~JPt)u$8wc;4@gEfB0#%kUxv!s^B^#ujYdB7K0QqfPC2K{~G*qgiS?GV< ztiC@&5n~`yp0nl6jZbiTI0$)pY!aVt!W=GOE`e_vOY-sM4qh$^mu|V>Dxtf)W)1*a zxom6bj-qTYJ?1q3Ii{u!K?5JXik)baNFm&Ra8Urtg~?Haw?g$bhYVWcM4{NaNZ}Pg zr54EE2exeG-oy~wuFm%-CaxskRV6Q0q2N)^g}h0Th~&km8!RkD>(}IQrbi=8bPd{d zSSoNbFdjI+8TP_To;E?AK^q+AX!t6##vuoxv4vsSh8U{Y3SR6+D0H#*?^X%X>mXJ#;bkMTQZ;VgEg*UyMMdp7F zT8{&c2|(OrZ}4b$8FF7m{E4m=&;k6X`p(?D4FJE4n&Ok{y-{OtHgfvRKI2={$3+`f zUS^4IGQm3j<<{X}h*TAtKWB2@81y+C+sPC4(xTQn=Vn0g26T{oyZ#7-TWGA}Ztu_H z5ehtkE7DuBW5h(;iIY|{%Exe>L25)4hU1<&nI=+M;tJ*7gnzvVm}l9{ z3gL0j>59!$WqG}X!xDI zqkK;LC%Zzb^A{tbEU`MA4iU!bAE;;sO9|khkh)CH(z7^r(h1P9;Mu$c<%-;LMZZShIV9h$k$G{ zDCcN1medq=4qE>yXrsn2?ZSl=v6*$)(ZM<>`~`hOV=S4-9CW$EQNOz~4FL^hUVZr0JB8BhJKo7T4#6KslGDB-1z?J!_z;Y$^ z-K%TYPf6(2L=RBoirIm%U3~r0hN}2w;lJB){Fh_2@*HfkuVhdyCHI#eSSF?(H|=i^ zKAjG{XyCEi_fR=pn49qzSfc`Rz}on(SY;UiET~qH6WUl3AKymb4o=<%Zt=x*JBIfoGBckY~= z>=($C&OFpf`igS8=)RA6uA^rZYzTk8-0QzFZ=oOrliva$js5-l zuwXEO1q0pxdMRuxs?l+$GW}2Uf4?^s1Ic2v*fSUIH;Z>fj&!Sy52xj-VzcLZ@#%)@ z!~|g&5c-7G??kADeYq7J0LCaLR;DPCmfZs`%97$&B>6!NYbWr{%ONlYfnBh^IVj1$ zZi3-KR4L0qJ};I{gn~52{JWYp3F;sILg&E%*+YSv?!hr*f_ETz>?d&=mYN)mVq=ID z1aBgD)I-v=EC&yZG^biz7dJYNq^Ml&-Ew|fZGNd<_=2c+FeQJ*f8RW-l2&cKGrV-l z{a2Wgt{-mxyL~wFJJ>zSY%4qG_{H~}VU^th$1}g{{rCMLyl&rthb;cYde{r$P-=^~ z&~(iL-t{i*w9g_WhPyMSwqqf6{2vcegJT#)+&g2L+MPi&x*TVn6%7hP+?ClMcgNzD z(cx`{mq7*S^KA5q4Qj{*Rby%v`9(CaItq8?+sOBK90l!dM8QLrC((g=0?N z<>F3J;p0_N{l4Ut6kKvEf#7LY?7TeR3g2O8`x!;`sQWB_#x3e`pnA zk^I5wb+pB=hd3!>?&X|fKS7>AEErj`VEI7({iYLaGd5btC#3M~LV*NgIF)4OZ%13E zUbsPXQ3_|2^-tPK!em1cmGZmMJ# zp4eH?m`XUXr}_SPjRAI0+0CM4oZMG@8&+YSX4JYjkOLAwj5p$2~krz6i z2P9nZfa5j-Si;?YF+A?cF^jn!>ZNXsg?RFTW{ybTK5KXFa$aoIDq6U(Dhsw#?t}Y^eZEOr61nh%RDjZ$62ndPz@}ZAw~CqivUJn<^L8>`s~) zfi%xO>iq%(0+SZX|=T&!oQ=HdY`CAlrw|~u(1;ne%{WdMvY?+@0Ed2pW zTn^@SWUG!Hlc4`ka;jk}ZbMiR+GrifCwsQ$|FTmrWc)9lM7mfbK9}+qyBB}BY#9?< zv!w^O3#+*F-_eY+KIV_s34?(GynK}LpZ~ST;`F#Dy-1m+6}6(DlyA}wnG8@@W#Ufg zlVpy)WZ_Dyd};kgookcnyfs_yhuZFPlr*!7Lv{oTlI?*+s%>)JaR?k&hnW`xw%mwj z2pK?Urzm1ye&8@{xE4lc?;zJE67fQPuZp1jO5WSlb~I9*0R ztQK|(4%UD{g-JQW4B4WuXvDt#W?uDl4w;wVzm={cy<9S&3!kpl+3pS25rCGbpc+E; zEOV+s!d@KfGnJ1*Fn7WLEL>$6LEyu z6;6vc2d}eg{|Cqfr3b5GU$6QjNMOVjfMftgp^Yb@6}GNC2Hv@$*$1D0m`D5B#)@lw z!I}(rz8mpGjIR{|+1t^dMI*;ulKr%4Fc3NvfE*~{kUA9uO?>z7tvIW1^Oeix6YNeB+| z%X1EZKZLkZZ`kLyIW*qHFbvT~MvSaQyj`L-2FWwLA}cz}0Dva%YeOK7Wun%VDqc5p zQ*tj`?pu1^b<9|ImlL_bIu&lrF>TrXw>PBCK6dgni3L(A%(0~hyO<5}*pB7Ndv{sa zu>9_VSDI7Ahwh8~QYV2qd76pXO9%75)+W$&e7P9M`62pnl~H7ko*m532`7cWKn>RC z+eqXeB}@rpbn(c9z3ov`ui?!4^lD6j^vfMJmXN?r;wsqy)l)xN0%0iO8eODP5Jm;Y zyXbk`wP}>{sQ>Bw<;S{0L1WB;Q1YsE21q|l4xl`Zc=r~@>ocm9_Ag1rUW}U<^Lz~b z^Vi4`Y3#w9W34ITDFl1IiaTt{xdot+&!oGmiRCB;fN1t}gu8a)>u2I5HoP#4&CibO zrgek_c`vr1!B!1eDlxjW9o+g;*A!I z+}7sy#};Jbmk5^%)32Nc6xO2$W5B!ad!TV$4jx3E6*C}!Ep#Tp3KS$Muam8Q-OYe} z5Y--5%Z0P{*{wxDUeXQg5oCvmvvI=W>;=(fg6cx_{~WujcWYWt6zi$tps>@;2wAAx zcRo|v(369D621?)VROPd-)Rp_#etPuYEJ^i@T2+wLja4NGhb8sPEnX23Dddb&br#q zIi@GfFk%b(YsW9e=RKDmPbY!vZ@)a;t?#^T<1-O`B)PWBe3V<*UYY;cF~0H_4Q5;^ z{=odRa-MKzgDza)Ry{E9no>m2EwNeza(Q@P2bs1p>5zy{1_$vx3u>*5iu-4Z!g<3` zwgT*!{z&G9%k8;)i%K-095rW&gNz*z-v~JIQjI$pGW6O$^X9?u=shU&#|6ps=_J0T zRBnTpD*F|Bk#c|Yc~&BlvI|IzBFf_#;MWu(kOPYE;)q&lkmRLCuz!u7xf^`0)z!@$ zT*gA?lUA%u6Rfs7YO98mGD~9`ZYKG~{GvEvIM0gU)Ow=$j0gN{$r*&(*ssYu&j_Wi z#jZrhVSUQUwQE^m^`Wc<^|5?UR{sfx^3Muq1LsVws>CUmfXYN);bi~1&{}Mr9nCp& zYtOQaacBjU7^?GOc4kUy6oLWYOm)88?D}KhlND==tF*)IEek%QYOHGl6T%hR>lLo^ z@s&9o(wrY&f<}ajzi33{!mWn=IdI7`kbi#r${4P-#5DjQois}ECJqefj8p|G9I$U- zd-}aUEgmdIo1bs0t^2NoT)HX>10he)B8RirA|?cV$_{5VgsQrZ)KA^MJ1XtvQXH1Wh)Z1t%qs zg!EA_GEPv@jS^k-Y&qau|4V58XIG750f!wS%S7q8DY?{R2kZnnj29nHx92y7`^R$X zf&~KS7z`}lshIlCJZOkjmIJhNGk|c{?~OXeM^*63o9Ae=Ej5I42YDZF9FV~dNf9|2_S079Lp#@rOsEJR(aSQk>XQ$s-!cklGdJ~Nf{%gulxc!Ic zUgb0i1hh{P3rxg=t7i%)s}GxU@)w`Cyk6FX3Ttn#s^#tXVVYoDJ{Z(B6rG>i7{3K5 zS|@Yn=8gOE{*3=K9446DI(;v2UbJF>Yq2(fJ4a6HP6avopF~u1|LE`<3!YDs?iGb) zD3q@ioov!J+5bwGzBq9A`fMx(*sXeoIr~*D#C|Y6m%Ksn9}WQaQqN4iLFdqG^sWby zG{U@ibki!I0g<6JvA4dXF-+%p!9V;8MxQIRZ@M}=QL?Bo;c#|4({8#Lu}y;9IBIt( zeLp5C<%Lcni~f;oHd*#C4V}9ms`6m_3md{{Afb$%c);%5*YeZ)ENS7*U>#fs|H@~2 zxfdl6P4>CLYT2#MyzCj}&dvKNYW(g;`EqFD!!j(kI@2A7(ytU=ny0f0cYEEifB!mn z&$f^D8yxs&;w*pBw^eKu~ z7h*;%Ntw$k*BPL0xG9g78*PK`@?t!H)|$AokO9=iw7|_0?>?fDh|SmWT53NI`Z-w? z13XqI^$J@OTkF`Ui6@_K?8G#6Em=`0EgntpY_Trfeu$s<`&}zevEX;i-f<=aG7*Ag z2q&&p>UG#K+h|7{4)zVu?K2nYJ|+v$?x|0> z!?~h@E=eS-lXzWrGgvv=Y=n$`YvtGO?Utf5QB4o$7RaUIN2#9;jpJyU-HeMBW_kWp zCvV!HB|iNXMNh= z(HAknK>U$Eox504i(2}{pNWJ_fC8K_g+C}+I&{GoTIdiwD~9nNbN{vGoUdni2d6Y= zV#5rxx^D2G6%YApG8(LDbu=Skoe7te z#jE?XtmcUjwSl#$Ug5Wi2Uq409*wmclPro4eDGP2OT@j<5H9^Jzm|8M8s)pYt_+R+Ohu_8yLt%{(W8)kevc&58j9#I{j)|;EinfOIx#;(*3mUFz7(Tq>0L}>HXAQjk2`CFnv`E;nBkp>G~@52zh z8JZ4>O6+H?{9*A{X|JOqbiQAe4=#B)j19{VZay?1za`&;^Y$NDBuE5BF@gf_{%a9n z5^;g@fGF1EyZ?oP@58OXn2n-Am^7_M+Hx?AT6NIgNk!$XMsOIEjF&zSX{v*Zu5cI7 z?JxrgVLJq!K0a2U$6)Bp0@nAL>WDj{Zh(EwK>u^OCy5T;$PtPlgzDT84UrE0B!<}& z=-OoKy%-(;aUYIp*6NlIMsdI?=hYe&^ro{5zN7-NK_*k%A>bMzNNRknDC(?72L11zU$2RpYFZoTD+i-cZAgtE&v=gAciUX;M0jY5C zVEr$#iHbKSG5|58dv(?A!1nZUe@eOS+LKl08O~~p2U^eBkNysj5!uTyfenp zt%~@dxnBJ^X;>?ZjO5QaylL>0ng|6ODT+wK)G;#*bFQ<30z}`X$*Qa9XNLj$2__H6 zDw@k-gTT`lgjm8zIBaf_#Q{P%U8cM54*6rzRf?UPt^Bk8=DuxvAvGq_?o;z}6oIUl zn!RSGcyf4(JAWY|gjoI}5i?f!2kox~qFj0{=^}zZNTRKahF68x{;U{Igg4GWO3Slq>x*riq&aX1~!YQe)6fL&0r>5e~*rHv67?R&DB2*LfiNBWG1BWGGnx z4KaRhVIjkfZVeDvJ-~3UHSi*r2Ra_=JWqMv)0bJXV}oNAppiFhST0^}od;Xrd@mx| z->xpbHlzOXz`hcyAbSV}YY%(J^PXUhf~5Wv;l?%w;n^z9jj!=chxQcZ zeT%zQVZ|r~!vnk=Pq;I5Q`v-KyJAy>3^Z;0H{51K!v9p%i*bF6fkiLYrPGe;FFrYE zQVij8414ILrw(3?<->;UkazZwh|+d0z}I4YTt^@W|o2P2`!ninAK@o3(Fdo{(U z909xZlCz9BPg2R!__NAnY*=|R2EFA!)#sB}+H#d%@W|-msRkv>@=}QO^blhrElmOh zgDy@FaS)P3Lk8F8nnM6XwLw~x+JCdkP-WyhpoPrYh|J$aB<}c&VgJsV>u4Z8a>ihB zy-$N6QT>ZTl3C z4qCVAKv&KCgf$9bll_u_7S=LvWck>Y7b{}?YSLc*YZg%n$WczxUZ^uxxF^6qjRjR( zV}LCZLjs@C73K=An}O+NhRPN9%``PT`~m>Dy$va}<5C)^!eyiTxtKGE4P>w2_NTQ?|C@?{r=_QE%3u~gClD8Amj3QH zM#LdcMV?`8TKmmy!hsV?!Ug@=j?Zz%>Veg1a{RA>!%by2uq}b=>r9__xz^V8&BhAE&Fe`S&AW7+1fw9b9BtjaUzm3@`;tp8~3*RjpDMhQn3@GfGX^cYYK zNbERInGZNhtuNhH=@E^y)iWH=w z@Mn25tH9@D9L0paH!Qf{^eV~X&G8)WbU1@WdFGpYo$7gFH2kud>}wki@*CZQKWyoH zS^4*In}9J9gr5}?Q%4u=4Imn*Ew>>D-k>0EkmDVaYhI$h=ub@g2Mh6gPfR|i|HfV0 zGplebFx?HLgp+Hzt-`^FDQABt7Gfa4lFcPLG@v4p+X+cotFu!{r4^bJokLMh!hAJz! zeo64#PUG>ZVR7^6kS9ALEIml!>|S7do7hrgsNRbK{s(qv)N!&>ZERM~)Z1sLa`@o2 zDLFviRGbCo?+^K)e6x>Cn)-!Z?L{+~=^fl9&%2|J@x}Nc68uh!%mtpc=!dDq*eJ^UMbvIfZl)hdh5@yUJKOOJ)Iwb zSZ+=|c}r}OF`E$v>_Ttd}9!)oXbk4E@`OOcTD1zv_b=!rjy@hgRL<#_X#&pwHzhIawCc~^; zo|fm5815vd7R>wK^JlJyozF9vYPKt)XiYJ)?!-*uz)}y@wd$PLw-p%9Q4ns@e}4Ta00cN3Xi9 z&V#R#uL*@v2Ql$mTPcvJ2F@AI*qhfP$9HsdCvyf_HBU;xBnRZw0Wnmxq3$43)o^Qity&dbo5=59;o zqX^rT-uEp=_@SRf=xy;gst);4`SWv0G!OxKL2}*9FQrJyUQ5Y$eeyf^p)_ex)yXL_ zwH#M{=Dv)Y0~)x)^1%KrW|MUXL+GO!Xp1<`Yr%i1PE8Rp)Iax87Jk*FHO1p_@+LSn z6u7;G#+$8eaYHRcjdKD@IJI{EHO~p_3)?D3jaY zY4|8|Pj0MQ{T`C;B(#hxV>0&?JHCUj)fYlh>`~P+92O#QpVci~4bJ)-sS)~MNA#Fq zIm8xw`*h&-0S@moI@k}3f*CB+P!UdOK>G+@V}14Iqf^_3e!ucVRbsET#CaPw%n_eIx5o?d0Dv~$9mN?xA& z9K5s;!h?AydfGG2ltqcdf|Oo^2&B!)%E&f2(s3X_f3vtDeU^S@d|K^ViLF6FRr*)Z zOYV+u)NlDrSPUqN#uy#*Im7WO*(xT+VRpw#du)XlH;pB~6aVfw61cT4jmrguo1t@9 z?oF5$Z5JrCu4v9)O>w6O?y$3r$GbG__>gVw3ZFah-cLf+`YH=@oigP>LQRWNV{h$Y zv|E6F2ZVvslJ!K?7r*I|D|?oM+OajdqT>e==F|9afxd2aS;$2NhJm>5;)?WvnpeZc zT`MIdG`;CwQjt;Lao1PiHqLZh7<9MK2$$p+RTgH zFHRJK+bPj#)m;#QxC8jU1@2bWnddCX0cQmt|4DyBLxK7k5L7`?uI-mM`D#dvci#5l z{N_g91sqr{4Qfy zUR)J#eZgq8%MoM^O*Q-*71!o9Z&X=F6pWGwihAweXFOX;>)F=!_U4LbAxY#fb&)z*g3>N0841WbL)sPfHhgWB^E-2H+lYjijG?M)e;leCR zp_!`gRz^*k7dRG%{-a!zUJDKZl<=+EWNSleq>arkv~iC(o`$FYAb%77XA29)ICEd@ z_;KH!&>Be!e>mk|bp!Wp&kt|)D~ordy^uhL~r{Fs=A07L7?kzvbO&sM1x+CWP`O@KKCQj_#It|Q6Os8cW9 zp=8GF9$SGINPLJJG2T~s@%q8E_LgW0)ArgJ8?JJb@|0MjBbY+w_44RCpEJ^iD;n zcq}f;HQBTU8^-?9SGHF911z*~Mk&i!7xmbKG5q8|N{KL)ih&{n5YJ%Z?rQ|SuW4Q| zXKA{@)~xydnZD^P1HJ#oP{xtFS`H7Uj?uah^h-{JK(SK#NJ+!+Hv?FB)AG-pN@ny1 zuK+HaLrVDILBRzh>Q_;qkLrPR$!Ivo)=+vv`X}Tp8mjo^3t6LY){5*s99Jkp8Pbbc zWZDN3D-{0aUMV`{r@+k38{bYErUCLzC4Nw4re~Q}MKLm8J=6#WaBH3gh*bO`sg=0R z^cAY$(dfp`ixIV-OsVb75DVtCdCX09h81~zcv{e3)a^69@8gi|;^Nh=Q20i~$dh|M z@E@BSdzA*69AmW@M>?V2yUG0e12yw9(~#a*SaBAuq^Wlow0ebYL8hm1g6qNACA%n= zA|VgYskgl)e8xp(vW5dgBocm-ly4Vq7S+c`RxspBZo@mDPSuY?I?_QN6Fsz$3zR%v zQMPfMUL}3KIyj7WWz8PPtWEko+4Gal{@cUw)QZPVrcrMpK2MOin`OA27uw!DUo2Tb z*Fss(JXxWqT2IGqk3#RGCvJ-h*F2rhwS5RMI5wb;MB^8_4=hG#Kh0|8>%q38m@bwp z^^o4B4;>hNY8)L2a+WR0IlrF_o2O)E9`5_pFUZRi?m7-**~*Qq{f=$Be9uN=yJ7T< zFZtr4$SR#>bc|Rt%dLdzhrFlJM%GYMh|Dtm#@Y*IMhx$`&Wi6*i*PBa{QH3)T?bUo z{){M6)XvGZ$77$FrZM;~XUynv*8N$V4sCrLKXb~l+qV16`Cp)g5`{k8d zw!b7=8N(_0S%OSZduP2c%fZC0(%zV8}eH<3Hymhc(!bSf5qq-T)!# z%jV5wyZQ1y!M1SL7;zy7LK}HfglE-!tCkQ>ov4iX5#gmf3!2mOi={f*8 z9i9+8*E7Fldyyk9t$vA|{7F$&R!`0717=P$e#pU+nZECjN*(~qi&V5zvk zGFKaV8H3$x@K|YJ5(qzG zuZ5fNrhW+4C$AF$)PdowtAxC{M2ak5BHA}IzPFEitT2m$$w&W>qU(HQ!|kH>-mCVg z)=$w2F>6!Qs=c=myY}AHD6wkAs#UQmLG3M+*n8LByQux<&4>H}xp|&@&pG#;r>(Re zGjo=y=bNkiH7S}xF zV0+Izv}c(_WaAl$%%!~#1fy+uA&oN1q1@osDgZ_SkiA>=C&$MW?V>K#M|MD~)HMrP zNRpat5YoQmCQ_fA~|J5>D+53*(` z;I%70-R;v5a^fwdXk-BJ&E&1~39yWIFA5P1oj*Jo!xmigy@}Km<($I_OTcVzl*&&X zcs_r_68_v(5k_a7k-LD~%|mF9mH%5dNxNDJ++?u5xIkX?Q|4h1Uk{v!K8 zKLX@5Owub35X(pJ^JgK*l4aD_BzaN07sZl71s@floL3miM9}468;34(=U{(9CkFm}DlJo==Vlu}w zEX@72PyrC3CV7Wr_g{FOTmlm!P?hXb0}&=4j0=>Wn>L<)$It?Bhj>%NmX9pZ^jL|~VjqwVMSwgnJgsbP!RqY)-#!l92!KydqQk1c?J6_xsl`2VbHb>+)<#b}eV`5#m=OTpzYbO$>D%stutJS0=w^v%@B|i0)n0Jq?zx98ND4 zUtp`+MZNpyvKJD9P{ivy8z>?%&(f~l*X{RbP;}AUbei!PNp+{LbWn&p* z!I`I3K6;2aK9-*$o_M!z;0%2EWugczy_g$pL(*p<_BFeoxgIFLvbr1Q zp5m||Hc&{N>@ANR@H;#cs&)iB!qe|wJFum$s8$;yx1ebS=h0zwqlTBHV{dwma!SF5 zBv#c4qR?$edKN24`$1>W2S20bK27GEJF$ME^EI=8Ny@BCYg=k)@Go0l^J5ceNLTU` z3g|pNJ*kBmQY`MFA^h?{=49WvJazi>;m8*3kd5rt|fdy}5p4y+T@LixEy5ge_r$O?kK)wfrbuKc)-s=!p2~P0lM+B@Ul0 zvGO)ITvI6?Ru4~)enYYNAh_7->=njA7u4h*g(s~(MKLu#NR}Luv6~t;#0Vci`q7gx zs_AJ>vf`UjL6uf}N9IUCnc)i35kz|vA_og1m8ZU8`%2Me0t5i2g4UA?3 z&+br)DU!cq>$TfXf?MC8XDNhUdPqs$aYfLz;(zOLzoA`?Rta=>6$h5_OvsnGa7kQ1 zZyQ24;F~I}j)4%V{OfmOFxPyO5yCD{v2{|MmDmC%iZaE~5+bbA@gGI6-++t6s_s_^ zTc%&6j$oVVWUH%lfyDrD1{05WE{{Ix+;*{Jfj9RqILLQ>I>CZ8aUpK*fZ>~5Kx*ZKYrzB^9v1`fMWL;`Ev+(vYT+8i+#;Xxmw3{2{-B`3Zg2L{#axp;siTR9Nm;oJK|Su!h}725yvo>)&*{tESg&FK5Nhmv9DRic z9fH!jMcORbx@QP0G+aMyAUZ>*u1b*Ch415|8O%jFRPx`a$#@>Rl1fXF@&YN60wD{JJ z7z{gQ-;_f1p4kXprWd-1Id)mWYtA`upv>H>iuEhr_8X7 z_^OrBu*^3g<57@!QC5&y{6)N5Ptn8Rp;($diT5L=% zC2!oSf3s5$WHy^B75?Ida3=#E-{71VS0@cequX2aP%Na`b_jPeK@~{i5;-%&o=lqxk(5E7_bKF zCYswJXX?O1Wjb*ZlzZ05kHf|=*5j~RLS@sb^Acuza+9%PzZ{Ayz5Y2U@EtGGyBIrK zzyje-j&4_SF#x!bgvhK05#)(~G={ilQp zEYh~qAg~eWN3!&ULM~saU#yh-IIiFqGB8!j5Gr7Mx@-b;8i5GQ$(vEMHyb)kx43gIwBbP2rnG83{W@3byk+7I5Oa>CaX7dWZ%T?1P@sXr4FY< zI1$PqGov*S+M;0WTkGoBHv^STJ$W&?{b(boU<=oNtjX|868qItws@CdThZhd#WzxP z!~FrR1PW;ErQ~%FIl}j6b5!9*xLr0F*2~6=v`K=ZF_wX`vQrTc{MW>N%SV{k|N5uv zq&pj!5{Qso>qCnUWZojU)}J$60(jca2OLvLPkKR#7b7()08n_%e^`l60|rI2&VkpL z=`{f)NGZIJV`9S=-Zv{gq}`RjR(H)zL9-9NmraZaaZfkKYCE!MGDQ?g)x-3HsZKlt znOZwI&7T#LU*iU*c=_uCu7uIrl+hYB(8szm(<-X{OWgrTd))4ct*OWzaZb{Q1wIf4 z+~4jWOdUU`qVbQgd%8tRUSC`t&9(Cks8;boS_K`yIZ{k-Gd5LK&FyrB83;EuwH8geDSG1<@{tbMhJz5}B|6(Z1jW&v~Jj zgQ?Ad9!}o%-Xe|;3)_d-u)O=6Yer!QS9!KnG9QSRf2T-}Nc~DEm5&ThKYqVuDA_ui z#XWI7H&n>!i41poIZeODL*%4=Z-^W=vEbqcg3$K zznSR93~NOv__fFN&oEii{Dxcd(jT&1PBDsRf+kp5?8?EpgtAUh!3Cea_N?9T{|e^W zfa_khD%ZMzP8F_8)8cBnUdU!?L;`4F>Ew$&C|)52-Jmx3CzCveBo<)!q8Cda#na}A z)*==#fbHIf>qE4T4J5X-9toFEt%PjJF8}_fgf848tnPkO{Y+;RgT~9e)gMy0zTNDZ zTH^1HberP{MO^+ZfJ7|Uy&7;DK3CgK8)*fM8gJZx?@fuwp#o`0s=-2ao}R7ZI@fI3xU2Hm31hWb;o%-3WqqB$-T4ZM z`U~+#oULl?cci8Thga3rrv21R35RrK=Le9g-RAtP2TE4w81>6)Y#I+D_dWX1wFf9+_#<7LT@f7b5=9 z^A}HY^Dj%mDO&1(41(DHn}v=(U)F{HEsjNO=voR6E%Vcc9En0}odGmR(Zkrx=QwGz z%xL~{7soOf#2=hp4Hbn>{OxTxBLGY>&SJUXfN83IS*ej0$h(4CVB(`1*ezd-G0Tq@ zx~^z2jp7i3P!1F|jLLG%#l=wM4Tt4o&HXgR0Lw4=H)DzY8#C?zkACFrfHY#(A>(a9 z4EZFUmByI&4LUm+p^dnz9DM{^d^?IKriu7DcsVRSz(Z`ABm6*S;5JGu>6=KsNi;q` zHh}XPBoZJKe{si7*>iDQ1G3Qj`JUj2cUjxV;`(aLyrWyR0(5-@KN|YC8}hXK2HMbT zN(=WIV_`tg&HjR%;q&;Vzy+4%IQu8jQs|XqDtRNad@d>awKh8(f|QmWQ<>j@%KyNx zdE{*8EhXIgHnAl)S0DzG7M)@)vpn|nf_NNrzO5v`1y3Nb;3c2*^S%XEl>G8{&Aqk8 zbNo^lbxQ))kBgxF*U#om2JmSPuo0&%+VsZ3z!+V&`WBQy_;&qss|6l=*syW7$Kivd zP(KegP+TS|O#^{t8d@9PS=4GODN9!jwTIL|bGX~p-{w1fr-mCREWp1nT;{F_^xWaC zFTLODs}FeGsv)c?!S?z}bD|pO5L6ESSy6NHs*rgNC*?`i_(KV!?K`dUGR0y{>yR;~ z8KO%MbE2K#WRK;*2q5+i_6)fP$)|yi+pbjkqP8AJb6w>tf3SV*5<_6`ivyqJuHi5g z**@(aOeg}pI%;$_DaL)%&C@WXX@1$TbPzx-{TKz@((+YrG`LGU8T_Z;%lyff?ErjT&K@lh_g2Lsq}PPt^oTXJ-cgpt&`c`9}Rs zj{)8=v?Bv~i+-{d3YLb=WxEX;2y*B76C+>3idwjebIf?-TH;RwyD#EL>7Wvqs39Tm zX+Mvd5PVX%N0xpx(xv)#O$DvdtpV9fy>iQ^y)BZ#>ETfTDSD4uSTIj?%EQ#t(s&=) zf`y!(gIXwT$KBg;ZXD39tAK{(4+F$p8{`Cs{kgYQf5JSLt|^h<#Z7}K()b3szADe& zLx0U#uuuUN?zSJki3z=jYVr*epPKM_R0PUqd@2PU5C%Y`g$X10WV53A^~U56FU(me zk?&CMAa*8hKP|clc6N{7)8@6jfb6h3{%7s1F`Vf#M)=OlY%;?)X7_Q^{N^oA9UOn1 zupI!|A>F){wNbw~u4@YgGJl*QEE;v)YMz4IQ$Xb&q$lAowz%;!jznT3r5h5%OQY%S zu$E@4em{~`KNyN@Y3IvJPD!x&ka4|YOXYPR7!rQk;k{ynOIAB9%t>lbH-_?uW_1zC z|IiL#EXF@NZ0Nt+GKGi%jEQBwpQ3_fiGyxn*BZ3>Gxvyycvw)H z7>eml;viV@^T`K4nc3ax6hH)?Xs3Cn=EIO`QjOpBcThLS<$%Ht^DgJbv+LRIkFwDLj?t)yx{TxCo zi4jdNKX(awHO+m z+9y)Yrt@8iIi4CHcOs-z2g&GY@){^RBS-UVn3n_utqH9?xU~_%2ZQ>NJ+!#4JL;MN zVpzZkI3JX}tPE<}_WV>jqf6_iaCkN>LZI#wQ`*{YFwotDX#9hn<5H?VBaJ~}6#kXO zF;mtWiV8qR_@xz9gbZbWwQz5d3Hs!bj!{6#l1t*(RPGEw=G^vUr|LjfBD#HpGM)29Lk|0ZRyUVlQdR>bivv z`Vzj4VEu{_9dQ{*qvqU#X>IRVMXLMB@k>$oeLlY)zKS37V&GmO8mjefs8th5^Qo|KqS2|lm3o&!ELw-_!(UkCLfHdAtTnhjKHa5=At9>Isu-D<=&+oqa z(-ozm0HV{M2uy56wpt0jf7e`6U@P;7ZO^(#l4TqzHQRO@{?sP$QG|V%s2iezBd@w1 z_aJsRG<%(&W3Mh2hm`sQXX( zG#nF>hJ&O;A{KX={F11}%~JM|wZM2&aodB`d0WEod|uL95*M)EYNxSPx&Q7NCG~uY zk2W`&-O4PZjRF$8#wMgNL)^ZfrYEmu2hGi~I!(k{9+UTo>~byA)Rf#R9(5gQbOs>N zK2&7}(f)Lc59<(|{c44H;6GUYd@WPV1K_A6N9IHE>&Jc4AeW&v-xCp!-@#n1fnhVn zv$E$ylNr0S7oC^nNNZBRq&HSL78t->|9B}A$C?ihO9L5$i8iSh;opsC+3?vQt$aHI zQdmv3G9M=iMtL4;UlC;Gp<l00`v|Fj z5mZPljU1^o<(--VFYHePnIU*NE&kpDE-(hOA1wzOYaj<5g<=GhU=M%2%lw1 z^23axu$fLgITHX<_>qxh5scrK`zKspP4C7n92|s`mMLKgby0My4!0@dwhpdF>)rU0 zCUa@i(K7F)KQ~;nM7M`1hXj*t`4&CkH4x^h{9b1Bf_qkcVJI#*G7dbQ%jW0RB?6U# zVBgUZWId%%k=0PccMIrLaGo}|c)q!KOY5gv%tq(vcf6i#01vW?*&Vicl!7@xbT(ty zzs|#mtS>nokjrdllcig+sfFg#0jB;6?qu7OR%b+H_Ciy(!;}JPTQ_EpE}r{AyIn_* zD1G3ofj=`{n4>k$20+Nuq2A9p4>eTkD@517Z`MM%SxANf<0%`QMmbQ#U$v16+NH;= zAKw@oTyJ;38#za;Dq(vp!M>3|gzbRilPX@YerR zgPSbR|FUs_3T2Me|E`uXvB-7qO!^ZoybqXc7rQ@fI{+bvqLG z`}Sz=CuCx4-2Q*P{bCx#Xc*R#OY*jh7aXJ7nMcem`W{`J?OL5erHoIy>s`mzA@|d# z_v2EWB-WT3ptV#uIP+Op;)k2l(>dM_^xP4Xnc#v|X{xxl(WSL-s6S|L^g3BxT}rWFzl*}r@W{8xqCmIkIDvMv^jsuS z>(bJ^(O`X*Ce8k_JD>-~Oj_7XVa;sPH6vwOBG{rtMypLOf>>HI5S~ZisUO|weKji% z0joZ733pXf8O*%s;SQtDOT0j8VG~Qa1T*W_bT>TsIgZ6o(L=OW4{$pSm6Rl~YTuU@ zyw2A(UURQD-u~s-$Q%D!`}g>qksvGlC*p%{>*W2?JSt!DHHIFQ{@`Lxb}(8W*R)`G z4i$XkfOh?;Yxg$~gnp}S7djF1F$r64%?h%-L&!*vZ`m*Vvw|Cp#oOAwZsY=gyjr|X zJRR(=?0ZCw5BOnmp$NZG;-kNc>xrehQEmjzhUfNZ*=4p3gK2IDu@vqjIFT^*RP(5g zGSJUKpWei9f9sq$lszV4)9;`1Og)uk(4*^9mXAW;(g*j{IeQBQeT26Db0-OSEM(%s zc{J=67kz(sj2|j-U7PqCO6R)W3_h@}5e+kanoWaKE^gl+?&{Q1 zL3INh^dTFW`2Eq301tVqW=uH!FGX~%$>|6YL$3^2!gi$uI&ykr=j}5x4gOGJ=j?^7 z&TR-=nELMBtBS$qp1xOU_Cw-$A&cG0au5XgGRFE@*d1Uo!YhLH$(h&!5kOVz>=J62 z`5y1(m+=c+&#TFk)~3(4)B5*j=o;p~GSH$VDTO9Gp|DpFCTSP_H&9F4b zoAz6EV5JF9zVX1E$-T3!{5cW~L<0tOT-#qY|GJ$xMbo%S5gcyXac#6k(creTJETl4 zSk`3@v)5__C)+L8obxaGVa3qx%p&J15vQy36E7^`9Nn5ZUW@RBu4@Q)IgvHxtI<&+$D*Lt5bUxP5a}xPP!Wu*)Lzgvz4wnuWwn`6_BhJcjwn zv{^O_rU504yhn;$0J+;`&Q`2W!3 z7zI6;e3so%UgAMH57x^^`jXMFB=$G~GgTMB*JE<5e%6+W1|EXL$Jf!ZhVD&S9IjeY z*fQOT-&Y(`o!>^k#nTP{?=ZTD{a)!0rLQL6)QI5V#vvCIeE@^2!*W%_we5>&skc81 zeLb!JC70UkdVJw0wbvm8uwyhe)w^^dnxj=yZVyq3U6K^BbXDiCpYc%~mhTxvPdJX_ z8NKTc)9!Qb_pg>Q%rI_S5-`n>FFrPmA*p!*wd*`H$2>~Dc>ac}e zcak~ao*#(%ko^BE04lN9EyjEX_>Rt!NNOgITFi%RI-jO zoGmxaOwKG;zB)O%yGwk4yXrzDkslWee}n8T#VFKPs@GurW0DCbbnuYcv^Jk zW#l4f1gt)0qN-~f?SPC3V7hV7FF}SfPwa(+(=_KY%B)~fEcORhE&rj!P5bD)xolTN zrbf)Ir?s#8I2SVnpkByG+*3P75ImLaCG!#G0$4snly zk98&zi|UY%HmOWqfB7&{WJC*)R~Q6_WwyFwMCb1Bzs9*brsmdP3WEF7cdlDAzu@Eb zVv<=PUAOo`4GBOks}SeNT4YLsBeJ?(uLPvM|1qBZZ(8CDS9@ZsV+~*353l9!tOCkr zr&n^`qHF7UJ@FizK6ySen!BBfz5sJ@$WxC?lw|dl@vI(Tx=DOm8yw5AouBNlay>|zFHp*sBiTe7~@U^Gee&?*|7wRw`)gdE`C*)e zmCh54Hp5*gR6y{(Q9eg8bV2ccCK}TC?}1o}RU2=L{Z6ShE5u}4RhkQAH@8KJ4fk_I z_WkSq^H?L@*u0La3m#a)Qk7$K$^V^nBpiQ8V*~^Ffk4#OrU)8o1S^wGuH&p_iUxSt zzBnx6=)~~-QF(kYJ6N~KnwsTw;BB>A-HgD%X#Ct=Jga>|MoIF6e5Yp1D3Y+xfm5m2 z(*^3jcP9utto6ZK7a5#ZYVZ8`CUvP_kn%sJY&^r38Nu4G48Di=kTd6GNjG^D-e`el zsp=&aRvN#QeMag7m&;@y+4VY+zT^qVfaDGl#a2!`%M8*z+00OmtAFog4Q1j#$741) zT^Y|joMH9s)t1|Gfpv!MFtk4Z@RGDt?Jpe?=#eUZvMiGdn+dXt%PY}xtdqwa#{+*F zU&IEpe(K(i(f^2<<9xuPHP;qkI2Y1&w`vo#@cARiG~w3S*@Fy0Uk0)B$O_Y$K~j%T z%H`q-M%LP-bW+4UI05bZG(Jb5)&q>@o+y_V4~M*E9O#fI4m)`QZGnc=z-UuIPWjer z0;4*_(H80ii-D>kc@kiK1j}tQOC||eE)leY>^S@NrHFg>l8p z``MWWSZ~^y$(e%~RE&(#cS@oAb(L}Rold)06D9Pa z)5MGAgFgsUk?GXDW2ei%DyI|Iwoeak!xqrmxN_v_rVTyY={82K--Tu_?f&{|ly{4K zY7ReoU3{&vfay4zcKHi!k+pDxMfrl{zF6@<&0f2MFN=i5Wjw#_>&c4}(_4M>0eaCR z!}hshhF+JO^BWC5u`96o=h4ugoE6^`$k>~(r{9j~eW~HdsjcMvGeUedXWUQ3iX$QJ zX4v;b$GIJRq12`ba7GJns2d zPY9pjY9Z(LJ z@4I?3=2Z)@Hk_+{V_;)Jv&lY6JAjbc6M#uMute4^Mr(l4P3%B-g)n}F6{-2E)n6)) z?x9Ahxks|JMckVda}@fBxJ_4>1AU@I_fgvq!u=1rqU>pt??T9hX;Wl#x9FT-hgLQM zuae6k{Z8Ar^l*VR^7MaMPn1Cp_o6)v%=e73bR2Bekit^*Dw`mB4xR2J?L1}bOcR?0 z$L8b~!BO*`)V1Y@4Ek1;+oYNYnk&rt8|s`H|I_Pe7{%O!VZ)Tc=~>y0+*OaZ|SNO zx#%`0SWKqOztHPND)ar5rt^wuvTt!p8c2VQoc*0u8+Qc;eX9*wAnCDg|5&~md2=4J z#3Fdwv3B=#Gotq!&%#-k=!^p(+-QgjpV|3t>k2-aiZ4;|Z~>~>ylN8AqC*FLL(tmC zerqYc5>eMgUO?&7k-EcrMQ&^4Yd?UC=7MnZ#=DCrbLSB$0TQqxWL2NT=ALT4)fOMuG7{&Q9 z7XS3wX}-8jbYs5)>?HhlNl{x8THFVUo2SlGBZv|mqMS(8ucAPN>)b=b)!1oXX6Qu3xf`vYBS zfd}*2VHwpH@-+-e?{FaIPA?MT}u`95hp((>cBFDnxw1^r|dx^Gn8Q zTGY=6(qxsD{VY;B{5Z@j51rA!$m8OehNv-rBWTu|c{`HBITM z3nv4XC;r2R*QWL#Wf7>qbxjcjpLf(Y3tB?JEN+kUzVy=i_nVA6OqRvwbA`lcyo43O zp_$~%XrOa`3~0~%j;if|8rSCi{Z%XIa<7gGfD(!4MI~Q+pp&J%!-Y14I6LsD+qR(r zT2~QTGo#U~Sb(@xwiQn`Z{)SA5EiuT$cHb_f+FP#Oma#3+og1erE@seRQ9CBDkvn$xeJnJaCH>c}w(DfFrESxtC5@TUrTWdfoRR_d>eTUM^mtmc-Bm4m!4eLQO2 zkXmP{tG<^p{@ZEJ=2ZVKX=XV!3$*x0hyl4pWT3)G-wMD;j)!57;z=AX|0|NEN5${Z zR-uEj>K?mQ6K?~O8!V8!T?@RVJ0T0m;1wkD_;ZC7M;YWeuQ@*TtosP`C@~7<-c(Fj zNIO5Ms38HgD#^I{MCR~=pJa+lWvRyaqUJ~k3A_|*oauCCdUXt~GF|1+UWp6p2&`1_ zs41q_>U2hZkO!F#w~QIKNl5k5f{w;~O}MQz^>rc2rlGoDpo_F*B@8+q+76*6jBdHv zT}SPYcU;!zGe86Er0svsM*kqvQHH_mUO4E$Co@~s=BVSAiN7wIe2y^wr|K5lh2n+J z^Es>u?}8KtH$Nq7z>!rSH*D(v?zBuj8y9>O5@;vz0Srm#PK!uiy@uxbH}}MVYPkRYmVV*&!NY}Gy1(oIx$u8{Q#7$!=8RJ(YP zQs1PMP*YMEv1E7UTj*4H=lo*&m6(?Ec}8ZlcxMF2U6aO(7=JhdvmDKOMyN9{9yO zy@*gkgkeA;P{}5hKUCG?l{V6ItnQ`bFwX&o$wD)hfxN^CW-L^n@X0OU-a9}{s3Zu` zTAaC3&s(?jct{Ua!f~k{v0>R%KIlF==x_f&l-YxJAFZ4Q|2lb_UcxP8LAquV~e5cru(vT}|3v4MC~)DFLtxR$*uYgT&VnSS^gmCiB&`0PqJt4JVkH zvWp)0U@8%+I=YMJFw*%^F`)JnvsC0ezfoOa!x$;>i~t-*8tnS~Me=$?g52kpb?Bqo zU$ODG_Nr?E8!C$Xsxx8arnawfluMab{^zSCE$Su-)Qc`Y9X)%wrzj(HwR35_s5Wr~mCL5XsO|*|#8Xh@X zSYq)>G@zE_0^xxCRAs8(mv=h5 z?Khw~b2tXUTubI=^~)JY{rVd+7fbi!${_`&HRREV=ork7jl1_8Qqx2qhCccoJsJP< z4?sgXa_g*(K-1WN(45>jnTS+$k&Dto@+r5@acV{kyp?<^P8V0F^;p2~@=wNtAFQmz zELE)vvnCwAF{lF5k`o}}zP4Wk`ut|=e()cR^n5a(;iv!dGZ@{Xv9AAqEoAVham|lO zhRf1;wbjq;<~FMaO~d}6um{?$kVh89ug#WG+`^Azg5qGVc+jC&oRo`rD7ff(3`LCD zn^Hmx8oye3Yf=OG&e4{Bt|t-`M!807qmUttrKYR zBqQy=h5{M7`lhI2@XaLb()f~>Lx=WG8bK^TK^jX4D|Mh{b`z&n(U9S?4=M(bQJ_k* zrkND#mM0WMDw{;Bbavn?V6^fh1^(w%)sD9tRV(i5aHQx7iWMD zjVzzFm|v<~lH1_!t8#bU-e^j;^eM?7`?xB|72DY*TbE{z zV`0x|Ai?Cv(|5q?;bX^og{~Psnj8|N-hxb4p7;Z65{(7N0qw9;oIB>cyZKZ%O^Yy{ z7WG)M#SUkNlYCkI!g#SXm;f{c#IWYq>w@^GG<_2pT{Jh$vJreHYf!cB_&GdcM`62o zq;Yo;n)8!yX%BUR1NCmjVKTM=0KbyqfJFJG|! znA^SM%?i?ZEf;8EsKxqrHcei173f%Twk_CLePem}Hq6je+gqDXfpul+{wiBdm$$0o zJ;#Bep#v9)(JI4yD-2OoN%EJfP=`+&AlE&Uc3#)g!4vq14l0k@hdC`o^MB-GFHo7w z-bVJaYteB-mAL4s;3^EiKcQ^x5~B3}(%x__9Eg4EJY2{5Pan;xU*f|z(eM{1+nl*{ z3-;p9n)i%P)%Au9Bw|ilbGU(*&(kG-m85dH?nw8T4g!#WwZ&{WF9Oerz`bSvgA8LC zq*dSyjjyrzaQKy8;`{&-O^+u4A-q>Yrua&EE@c6N_<38=_kSgRZDRFR2Gn!%~Q-B0ifY5z>QxVJp$5wK$T!b`CYzL7jR*Z|HN zDy6xl0YrI$!Tl!G{9!+Fpi1|i#`nE7bSi5lrp&PmYXCTlYXCVaY{J|Cbp6mDF$y(( zYE48ywi$*XCp; z7dYXq^-B8s1dgB+szqRUW+ARlYQ_tFdq|DFi;;;z{Y3I0qW3WA! zo{^wbo!pb&QQw)WT}n_~nV_ys7co4Y$#-{tSKn@{Y}1vUj*0A3=nPQl4A#Cj1~wII z@X56@GY(&9bQ6u?@>Hm&rvsM)vEklaAcO4;rxK?ivW-5yaa3-d`>osp zauNx$oO)*urtW%2SP{rfVCHIRVl=^9JjYG&e&m(gVe$WX|G7)G1GCioD_2wm8g4NW?$tIiG?Ijw6+5>yxd*zDV6Z#qNc6o& z7f;<@=+Dnmi}jw0h008oj~=Rbjsi3=fOsCTfUT>jx;!^`Zyjx^XB z&HbzP=)wZ6i|?IiTS98RgW6850oqMj_Y{Ja)Flz@OL*@7qpAFj!gE=*pDF?yDUsDj zb1s0#6!0|mXkC#slSiMGJt{ASbjBgo#dBen*ruY?loT-h{PSdqN};o|+&bd~@VAr? z)W*g#tAntnh?xlIA0e2Ihk3=*2|Kw4 ziKg=dRmS8uiAh8si`%DSe6ZC^TJKcM4Z$5XHL8nHNd zxDjJ6eHfI}wk0HUg2Q|^4g1S}W>Q0E#fJF53pp+;(Do@WIArNK*N>|RW6`%Qe4&>n z@&AqQ8rAq}?ptaYaN(GFS9hqFv>c^#oy%J^_v_rw7CY7Mj-9`by*JnCaG2Q}qCI$# z57`cv7y2>3=96dftu0;qll~HRno3=yL=0T4nkJ~#E(_?;Ogc|bV({~{Cm?!x9gp*oU=47 zi}lNXz5_1nceM_0*r7+gQim^kzn@Zk821?pIiawLVBiWYS{h>nyHA~94#8$+Fi2!q*R^hLzr8ez zHE3;H>^vpSS}^wtcy7rGft(76TJ6_k!|$&X|F2rk{=eR+QCt&{jcrGhcCMoknbc?n zJHDKQPI#N00*4%W&7nem7J%WoWF=ISodgK8VFS713X`@0G`v3qQMm!W&rP#OMFDc1 z9X;XNO?o_G{OU{e<2e0JjOaS8L=v zeK(3SNMyEJFF#8@f@SpTb8pLso41=F!)amXVWQPIM|jrug#B{H)=&{|pt&9S&I zjq4|key2QA>JAtQNAvY#VLnxtC4mlPz@al2MZpgN$WcFrzI3;D8som4IsJ5HkUF!< z9-0o++b$ADj?;MH^Oe|Bhf4Aa+lgedxL}p}?V{&DWEoa+`x;1k44uEdABx^0YUq8ql^>p3{PTEFyQ&-b6zO- z<|;2I*vC+Or^}*I901K_oKHI+89=SwM+vvdbUXcB#(;~?vF7XvQf`vQf-zUe@bvFX zEf>|TGG7XlZGn3XhiUr?38{hD4LoVJ*wzqv6GnRbr&>y+#+(<}-?Qd$u4V$4-lfc@ zFv_qIM~xcjPDstS{i2aCo_rhSxk_KuX*g=54Ys?p+PP7`buEj{T=q=eH=wwMI;n4W z4?f9pv42m%L^^O4S#0lJNUn;qCB)LP#ZfBHeitNt>G^~IE_;aC{$KqmA38=5yT)l8D_tnslZR}2$MPpJ&^tb&WrJ>QdYfXpo=JR%+%hZN zn0QTe@R6eQkfdC6kG#h0mBWJGA6W7o&0=i!`hC;+!JQX;;Axsv7M-w3*6-^GJiT`( zhZB7CUsX50*Cyris|ucjJ7smw&?95H?-_7ZC}Yr|BB}j(>d^LrF>pln<^4S zHUI6J!eXaqFySKVe;i$PAl(1|7sK>SGd0s4$8=4{baOaPGmLGzJEuCS1!snc`1 zhjC)2KKggx-~adD`(Cft^ZCexvDv)kA514X7tK(?BO@5Ix177>d=olIf4U}grM$i) z%zM3@nPny;u1eb=*ye|Q4NMGbFNVVdTW(*LN$Y06p<;8M{6u(IqTGJJCU$Z`4*f+B zw4fq~UvI|MSZo5ZoUhN9`O6P%_K4gT5&B9u*KI75lnBVW?|BDiP7pV-%aex#zu!D+ zOGR4VbXLYLSEz}c=UNmv`sqx&T(L>;flp)aWlfuIg$K%Ty~7#NrKs}YX3kJo^m6o1 z6{6NWQ#1DkN ze)J!`5Q|S(%^5bV8UIyw;j$^N4E;v6Q6%7Ks&yfy(b>C#O;oQ1NU2i8S+N=&%sx=N z8mGLrihLZ`nk(ftn0|eNc13#x`ZIo<;4VyjHL5O~Bt}2?vlJ7Vug#0rfl35nO^2g- zQY4e}Bp>d4&XzXHeMM2}eQx+ca?L$NcTYA=9(~%G5fMPn>9y26F&RpECB7eCsZCH_ zrT;fDoIzP8*bZ)?Q`JDh5s9be(N)fw$Il>}=~#Gm*A&P-N7v5w?aUOa)^T|IU%{g_ zr_J5FKIRisxkOM|ofYi)7TrAI%I;82Gc+gI1eY}V16^Emm3_Ei{mGT-PWNvZ?KP>u zjW#&ObBLPx>~FR<{H=jbNHvzFdZ`%fy{FKC#%3<*Rtn0~De#;;=KrwpJl1*2rM&oE z)ejR|D(S-mGuuNzIPQ!0a&(bdIaYCw>Ex$1UZW#o(@);&KY8lXAjJnF=%n6; znkt&1|DJLZtO??{ZRyJ3!t!m61F!HJtgRlfj$ZA>sij|kOj9OZ@VJgDH3&FdXnnra ziLWMl@4L)~D&l(uKQdXPp5+Z@wPy+UB*m(^3hJfqS1aO)A!RUzsZADdDR$5pz%u5H zjywqJ_!Vc~E+!isQJI*vIj`Y{aOxnLtYFI1RQ9g~@-xjrFk0;fK^7GR?Uv!utwOzj z%GKk=g|HIObc`lW4|u$^$|^u8uSqA#)A!dT)Dau?nyn}5!;H=LyRJECrSyxkG0lG# z$sr3t4~lL;y+sJXHIK%5I<{2sX<|5anhMf$je=zX_1`pU;rn5b#5m*uBee0I1qqZ& z&-LHUM`v5b`*u+3Nb5*x6$B%VrP9j0dTho_jM1a4esVR_Y!qZI*k;V? zCaE_?Q%dbT6AKuK$JIK~(9?AP#b;5Ol*9IdH;*g{tijrx0Q88UyDS49bn6t!bse9B zwGptG4=2CvCpmDBKbD-RJ9bI43u}0@hMKq?6`!dGxX;=D{SADi4mFfKj6&KZ$n~0p z>y^mo6iI)OK!NCIiP6=O+}hA!iU3?sOt)|_gC$aXuEA5kcfvVGk@hYf53JQ;s%Wwx zfI&5l;e`IhxPG5&X*W}2IEf7Akja<%S7^0lgDIUvl)a@=*XoTLn=8H1m$Y9|MSx{2C5soCN%mZn|9BNf8wkP))X)p?~Jp(uYc zzU?9xMqDbutAdUJ9^ee-d#U-Ah_PF>lR432xF$5q!j!yO-E*2h{T5d7+4#3MENz(G zt2ld;%=>hr#u-iqANtFT)rhUk_Z=lR3X!*9oD!GQ#I=!;4n(C~KRQ`Rmqi@vW>)d0 z6PqI8>>P&@iJSOh#bp{Lgb>p#VFk4ZTYG8mRp!U!8Q4_v!iMEebw zdu;0kxDt+{)&p(79l1aF@0zs~zPY|ZYxm;DSyH99B<8PWx0sgs-#F*O=@h`gOM|ssw`~S-3J**s0L99a+PFWfv zc`8IMMm-Pnh?_5r@RoVvRe=cRgx1xo?D_hIUU$T*;k^@q;QM*%1de$9(XXtfzZs$Z zJ}>7JFwvIKLr&)1Hskb_He0{RjMErhB=t3Zy`%QB^Is6?5)2$R@*mdX&%rQ0rB7EV z6NFXU7D5+CPyWr{4*+u7?m9&@?>Vhn?_xqmE7USN1z9;wHKHHM{u+PW#&4|2MK>zW z-?O@I3VgHy(SXuO0Vv9+9Mcj+T^E0cO!3Yb;kk0}Z*(gcbW7rYjt+oli+rDWv9uN4 zbSj39)gUtO5SW@BY@WvU3r{E0^WG$IZAn`kQ(zmEU`CnRPt*MM;r9n&LsX@p_^JJV zThqT-qaECh)xc94-Mm-;xwq-P7hpqh+@^y4WDM$!^;M}mzdFALt4O2P`&3UC!Sy98@zOXI zyR~h5V={||Booy`)C>l*oofXr<1A2>T7Qlvgo+ihpe7Ns;NKovQy$Rk#u}n&bLcM!)DyaSz&*D_*}Nt8m-?*GSq{T%$&P&mlt!ciA#h zbT_R1>wK>UYe))S&9T(rm-x&HBJzy_PG__yjd=6qK*ij);azA#0uPMQbV1@fMIp6> zU>QAfp_^M|ARygC3i4Pv-2A^c>lpQBbt3Clal!X>VxT@H2@~c!qF^RXFBh>7RTfXS z4yeDxez{nizCceYjJ)MfU9@J&9*w62hDJB`N^9Rq^oX4Hyt6QQGvyZ~<>=YB+^gyQ zm5&A@nvQD-Bf6kGPh7*|{4s=;$=uo%`3&~Q0T){KOvCrPmUf?6$F5&$bK2!q#(VU` zK`dffkUv^i@z{)P*%=honhsCf{E-awctoA^>2~kf)SN&Tlq0|$LNUqcatd}3h!uIm+NT=4GS1-CfpSY^CZL_wuZ4A(BIg&-uKZ01sM zMTF?f-CK*+`}4b01Z4OiU0fK?3Rf0d8K=961r`*+X{Pi>9#Eo&q}t6~Uq+-m)1&jM zn$VMNg2`?pgQ-SZ%6NwmL-p#GhRZYoC5-y|YJA8ka0?!GoC zob!VPhxzWiwsS3ms2mxEEYjeL#UbeYR|TDj7vCKo-O#DJ`RZwO0( z;LtkeRT+yE*L$FQWAq(*UFMK+l&4`QkfxZ6dOM6?7W0LQr&+eDFM zme$AL+h&zL4;1Gq6gWyWgW2tNW{i<6^Vr3Nrt*@5ui*&3Zb^DLvt|PZ-VLI-sR2WXASAxSBtdBJ`={4l zi4~CiU`%GKv3!p<4$_Rhjh?>&m}<^dZ#N_uUx|`mQ~~3BA6F8S%ovG-bN#W=m*RoF zlCuSRg`uBNYanJT%LEleW&FRq*{2Jv#pFFJC`VEbReGa;0@bRi^W>}fr!dkgeQJf= z6AUoNz3f-h!*w-_9bYht&V&C4i}B0|GuHdZ#oqV(whGd^P$k@EKW-!KBV%`rre?M} z)%Ve$Y2n$Z;WHZf>E9bI{;qSFHr%B?b7ilfYZ!kTC9~N>VJly6_cC!_rI3RaOy{Ig z9s}~`MgTZ9kJ8(%)?*#JR$@60}PJk32Yj zApD_y#bslx$GR)bP{xf0CVDRf5Xgn_M|p!?FNi~_=c%&nD}%HaRaF8QA?Jm@ux1T4 zwh~V(x6GuzvM%Y~)-y|eA^Gf8HF`c=bFQxw=dddWc5tT5W({M^B$B2HEk^qbhP1rJ zcf#z{R_pRbPfpk3jTdty!FZPvpC)}=%%O?rdJDYc@+#ya2KcexUXa-k4ZoCL6A&k> z(KOR$m1cV<^j*tB@(@3n_mo50R27Y!DmW1MV!P- zs>5$*R8vv3aZ6921BKnKeA!WtDr03da9@7C04Q-J?K7;%Wm0D9v6r$yfZuNe1&&^Jv-j)OZPtlA&rrcb@De*T2fi9uWsI4#natUb6nf?4 ziiWUXeg9FqHXtizin(7O{4rfEkt3D+z#;e+(;A~muk?cwDl;q{O;#l}951R!HmmA7 z%UV#sIC)38F9=nb*1@c;V@K+cHko@%l+XXY<4{62?P4I#2+knmP*!{f4RB^L#YClU znJ`pFhjSZ@y;5dq<0FIDgqom3&Lx;p9i)8db`G1kUKrr-+0l@bNP)|A1wHC-LgD-{ zGrScip-65_elxj>w61&tYkG~mn-g+)DAn$M4=ny%gT-v@PVh}8@X68a@(Wc|`Xiy( zel?KCcx98{w$tLdNn9u&roL#MB#2I;eA|z=h|ZL}m&25P4l7XRWKKO#HEO%TAE{Xc zxBmy?``>1ki@F*QBoD-*FoZG=N(Etz8(~Eji;xpv;+%py$Vi!Mw>!nEj2j4LsCb;U zg$FP7qTCc-B+e#>)p(0C?X>xpKB1YT0*Cr6EFuRo?p@4lnrf(Kz zS2iaq_mfv&YJ2_kI}WmYTQqs|qfGmr>=+|6Q+~W8Y?r|i3;8=2h%uKyxMO*D?>4~p zO`hUuUP6}~7npD-Kfq1D_M%O2OJ1Va`P~Laa~TE=Yoy>Rt@yW?Hq^C(OQq+NGS-k_ zhrsXW)q{UBGWLsnzcLE<{RGpnBj`}mqe`d0Dl~;^-#kzn^5;0~1-)FoS6ZEPpX4*V zk9IADJJWzF(RRQ;w{OUDHUe{Bsqo)>aDp#@Yo9%-;BM#kz(DN(k8l!4DUz<63#5p^ zb5N&W#*!;*0dAZibpZtd99Ss>epro14!#?Ds)#^($|EHIJrUSdMTkzp>lLTN-FGT$ zw`3pEzfFJI@ZtIE#2@vPVtjqb5UmV0FWOqGO_&s+zF=B8`1TIfL{kTh`|%2ad! zP1NeEZbfH6iij{#pl2>mqR8pW463tr(;#Nhqp?j+z3+w4KY`(O?!lQnj>jc+F zUmeVZ1lDU$0njoI$2)uxLh`{jG?s2tquz=-|1iAa%wm!`fuj}=4J7!M$_taE@k&b&8+9=^!X za{axXqdOUlUCSq&X;1=0^0vG`BB3$-OEEDMpDy*ej72c~$6ZsIfO^iz6=d9j7n=bW zRw(t+P8$-}Njyax<;yA{Hn*fUR7Gx1ZE;4!P^(P+SeidnShzq4oeY8KXg6Za)jU4tLNb9wyvEdGVxj&+;e|}LFd#P$C8A8HPy8@g*4U4D=*Uzqg!oY zH;15kfsg;WKRoe3hPiNBY^NzrbX*Mwj_Z5=p~!k6l%6;L7H+R)2;a{M5?-in)Q2(c zL}|lUJm@6qq8r~EXp-)6MgZtmRa}Knaw_eZIZ_d54XA!=*=3Ao`|F>2G=(f4n!uVp ztVy|+ph146Or>vYi^dU6R9<1W&wCPk*Whxci>CAJQv<_kdRP64aAEcOfAr|wteL4` zPQiu1F&d$$wl74=Rk3!#8JDvFFqY_1cjF}&)QZ&=2ec~)QK7&`@5 z2Jdp@!RPPDpqGl5D);pA!xKsei~KQA${XSI&*n^TdX~F6K7Hq@e<QQSn>l-ww7Il0KL7r8GE-$MUe;qpg^M{2_*RoyRdY1N;B#VsW8UP4s9AMV6L6r~4< z!0P%27yvu|SKtG$i)XkURrU!r@k>~eyhvhCLNg85qnhu5ds?~Fv4KeI%XTkcn~ouM z^N{1C-#FtBwRMik?oi7;E;pEw;!|#R_^bc453cUZZ+@nd^_!|ejQI6b@DpPM?`@O* z`Obs{8VoUhXnWaJ)CBjPqiODpGI4zOK(6)r6UBKnVL*?-*s%HbTDHUfvBtPQf0z># z7xHa~g-Eig@)b?2$!Tv#)fKtn)SpQt`fdHSh13vBzaod?b_1sssI(55U0<9 z>0cxj)({a_6?u*_SQI2-t_bQa92OKAJ3MdklEZm#4~$TDBfoLf7!f6XS!7`a)`LqI3wjg4X6=#DML8(j>BIdUB{gI=R;U*mg8M9f_wv#OTLH>$&+s5UOyqR%%=1?sx{o#<^kmOmSVD$ab#csiEwnr}DlC5Zi(nAnbB5>-a0`wai< ztHy7R^Y8hOjOVm@Rhm(~KGoYy*;i9388kfIOXNZONx4;4_?*^+irnlWk6Cz?DC*=< zC-O%Wzg7a}^`b%}S_4azECp*}keg~aMe!tWjl;lj5+|n=I6hi{}ZjGqAoq@ z{|1N?Lzh2e5rVEi+6l{}fl#x*zL+Czf@Tz|IDHPOyZc_A8#v z*Ls(DmMRlG@W;cbkqfclWR_r-8CH$?=KL^|H)4ywqXtb%MX)D+*P}J#+3{+{M`#}*brcdM&mL*;6n0H>G?iVBCg$igA0y%+(SVFjLSk!;V z`X=N_p5vmc&U=@(S-vaW)e|e^sA9s~VN5*q1CZsnIhCh;!=T!fP?;31TX z2{sVJy~HV}3XJ+hM^PjDeS#85eH{2(&YJ zYPbS+E8(iSD|L2x`m}JGeMp?K^&r)FRiR=Y8b#soZyss2@pmi0GPLFqDc+VM{@g+= z@jRZko?=4(aBn5=+=5tjDur-CzRs9)k-C2JEA73Vb&U58=pRKs$%(j(n@h+V=z<7{ zwG)28j0NNdqzYF4ssrnHf23ShlFRVPnWcA7e{nGme*C>-DK)2z3tdvKC0k3N6$!;2 z_g!P~k+^{Pb${swYG7O>_|+8rgig>tjTdNcsmV?Jv`*2E6ukFz=@3-<$NQ+#gV3DD zvvH&;O{A@fvPgn5we^Lm7at)%hM);m*|v={p*qHGFkG{!cR0zKU$mjw-HuFCAH7G* z4b8fHLK+p7p8M-!xqb||s;xmvivk~4f@+QLO=;XOrx%1007P|c)ldctz{8(T73;Np zTn3gzO*-V{CH$v-m3_jmk)QPz65OMN;C9chzvni2tNUB(lTx+EXOR$aMRD z-h%oOdLf8Kz}12)zjKbS@ItFnUT#swZB<2?)3UiNh$Uyb!!B^656c~7SEcHX67 zXuJYBW{kM9srqzy@92`riNg8O>Vs@VC0AY=lEpdEO~10u1yaD8g7lpKz1y^Ip-y}890_OE-#Z=GlPtvxlwTFZx&1}#ug z01Vsa8IN85)OdGPEA6iIz=Yo(P47}kj7baia>CNr|AUPDigK=y-xpRTSVHT6@#<5Y zt*oiXLUkJm{Y3<=rq_inu@xtOJ=#m_pUAJEZs3rWGRcdvN5tzzg<~`9S8`RBGfa0B zRhl`?osw=l112BXmJ<^i4m*sv{wODN?ud^yA@@IZv{_H#fxUe{6E35pqTyVz8)PCD zL?2uGte_ts@k>In8TF{a^Fi8b{eU(QPTcb>Q4a*la9hA*_@_RAY%TWb6)0&356-Q9#8Yw%)aALm$c71{>xC{WiKCoQr{X=wp_Jv z-qZs3kAah}waB_GS7p>&>6>u#MT1`RcWs(YElGouq*2c65t*lR z4v1oi2gZzsHppT?Lrz1EXPj&XwoWy|q_L_@Jpq%T>!g>321C_oTu(K(J|2{Bk!Kpc zqO}NOb%s-&F>Deh2|lsv|93=+nXGuJ*UBA)pt8^0qNtN%P98I~BIw`clF4HOKpH;7_x4@AwI*5NkYcZLmLr@l<|EKZ%$e1f#gTVwq3(YJ? zOB|8oQN5n3EYl>N+?7?6`ftbq;{#fUV9GS!A|uv{q8?gk|BL$w!55)AdidA4wyDDg z0-P^LD;Wpw^3m*AaME{za~($fGH43_8Rh!x|MjrKGP~p=Ng=GV-qMjD;9RD75ecWM zidE|P-McYsAY&uX+pmsGgl9K!VA4n9{jhH>vR z+<}50JFpYB49VnLYLd$YO1XV6<<=@7DT;>gloG06rRSkLtJrDSGiztusDfDnBoPq1 zZyCK>`T}KYlM@=O*Wp}Gao+3RZGXBfsun&wI1if7mD4dq2_Me0EY6jvlc7if_S3ev z5NZqRqU?c}rN4Snh5@YRH=|@LFu7U_8ULf*OJr@e%{7q$93HzLk5uAfM@oY;B_CYv z;k?f&BLv{2fMbyIK)mbeRMaEcR#Rt}S%oDY@K41}@jfFS?>)xK`M24am=XqbE#S2RUP)*c8kIhOk=C!~_Z&j7 z&HtjKs)>8#4J@8tEU-2=v87U<9FyqBc@xP3eMa)emO6}v(85nu=xV&sMn@TB?U<4N zLUxr~;ybu=!u?6TN_O81?8V0!dk*d6ka9(2@39x1xY5WR;}pxY{dvPpe=dSn{~`LG zMRBdNX(>IfXMGHoA?m1R3j6+a<^=&mr${Q6-IqSC=8(w3&DNMH3)7j5Ey76|vZ>#! zUhkPl81t`o#hZqC_q{8lWXF0PgE+xmZo<>k8g4YCsjAZ3t(nM=P3g_} z+GHR_uAX$etIF-W$7Zrz8zU=%IukTiCSnF7vE>{IV#$s!#c{iG2_J~+TOL&e?#85*gZpxkwsD+4nTyLGEvR``&Raodw6LMy3cDCq9Pz5AC7jNWCHLFb zqUSi|4eSb1Ug7|G?WRB+xIp@BI!N2lfveMA$l}egjm?3N5k9-!!H{=jZEP87%-zfY z4G=y4M;6PJ1ieE=h1}aWTN{)Jv=Xxk@->eojL}S%9pj>%rCL?C?Q8`57L;_{aDMG? zLloXqsb3u6lL98U!w&&pN`h8pCzoq{%%o?QO=b251;6*|-1J+`Z+m)Bkzsj!57);j zRVqtIl^F|Uun2s3rCtdqSS+_vO$lM0Ye^l88+LWo<#%r(vG&<;WH=&}`Wddf%a1wx z-xk=!_pQ6(9Ie;2Dl1Cx7@{#N?Q+3f^6Mfgd#?;xPk2emAIEI+F;b9?=|`r`iH%%Y zQo!TBYtSG?oJ?K{=|iy>Ty)b9ZpVcNR>@12#JEn!YpK*p%r)q$>-Wp|{A zV%#Tdy)w`Fn{rPml!l*od(*<;VbdRfpoOL5RA<%0 zgQiwAl>;v$vAML5cIbZZoITh-GwRpT1u2lQo7w6okGx&*2)>K(w&uqoxzae|Cf)hU z``|`KHPPFQ&&V@A>}xQkFTh;QNSLyd5=^=Bjy0F`agOijCFD(2)Bn^bllsHP>KXD` zvSxYy$sBCYe?)!uuPu?3H+mf_?UL(og$WZEbB_5&3>#h40-_SPJ<^HK=#0`OkbF{N zXHHf$H>Ytn2kGg(`APCm+j)*CW9N^Lfq)-mHR1pZa)><#%IF=VX}0ls8b14Ci9_TVkvW*X8HPHGt*U8!&Xu3^ z3N_Ia&+0*BaQaz7VxsGpN@Iy+8%J3l^he_ztPs1Pbg)JLNwF_DzDv;QZ6PmY9u?FW zrg9}$F508Iode;vlYNseSdv6T&k0$$viot;Q!=FhLU(dICQXV%cfb-o6l`>0gWM*j z6*+Wm%MojQNMY8_p;?^rZyrtQU7nACUgp4*hSi8eJX@uQ#%6VAEcioo#iC*O8!-sxYTl z#f55^uNOT}kU10l>F3t#e;M(44=>0RfurBKTvMOWzv)m&k69B)Hj7j^twT{Z1-%X4Z3_3-qRmhV(Ow3%`$xSq_0rwU$MxxsG~nkF(}5+# zc_NM&?9hcs(sCQhHm?D!@Gu25o_=n{aUXwAhQMcQO=>rqR5f>s)F>M${vZ0lvYh3h zhTdm2q#pxNS;Xt7J&*JK`}l+(yl>MR?V>gnH($Vgxz;pH^{8=0!<$eN7pjnGb!J(V z`F$6g>E7(j`B)b5Km)9we9FsuWN1e+Skz<|*lJJdQ%?Z(;TyhJs2A-X^`iCc@wn^o zH#_|m;D~5Mx7RNr`}6WmXI;FvlFzP{f+& zXsClZJ*6K|RlIPcujtyM!SClFx&|cY4b2wFNpg&zgZ5b)2$+#{hT11DC0&jf2b(CRIZt1RX5CTM2)*yGnV|q8Vz$rzu;1uX z@K<|aH9s&#(rT-FW?Yg=G4>w^-q2;58C$#D?JxtbW|-zTfmN@@{uwdT{pPtSmbts(E=+PH+hYOV{^s0<$4elaZRo8F_^t3 zSRVRoA*Bk$`>Mz96`X~qdAMo&(kAzFU6XZ>si#qAoZRl{N~57>KLMvvU<(^e)!{j+ zZyn{k%vnuxL$Bbpn)J4NQCF4C(>eb{H{eX-O0~LxRIG6xSoQ}c)pY+n{^?Ik>s!h< zo`Rt|%gji~%7||FLMW8drZSY`s`y-TAq50mtT_A%yZIQ#4Gvm?2d18?P1W>t_U) zXB7I!z#V)?W*QhB$24=${w}Y44~h#igJGC1^%wcf(5(180xQ=_ zrz+QDP0h+V{Y{qFE{(wX_!8nmMsRp?kQZntEt@G#PnM_8@CZmJN!`YbJNp`oFL`Rmv850N>iD=h%NjLJ)wF?Z426j_Wf`J**A6zWCF)67#hbr0Ki~H} z_dVTzJ)(@kY7|MccEQDa#h?1yVmlpx@}~-4I-{Fz7w8CTN=(I{_fw&Q3KX|B`r((_ z0x<#JgKW#*FTtMWyg(>IW2WwkMKmobr-f9f$7$JP-f~(IJptz*fWem(k|%mo-`M-? zw~HJhD})ugn!8RAM@T~ae&bOi@$8(gLrR*_ohJ~|GU+L?%dtv~8!wvQ%#_w`0o+~{ zgJAPCt5+tjoBHsl+ANDtT~EAb{9fpSle_dc7?r4GtpB!9$HxzKd@R20rDK3G^f8Jx6=3S7E6|CiB2&1O*ukFK}4|Hw+S%Q$0WFHRa z&hfxS?~WcDB!gU0$^^`S4)=e`#^`*m?xhl}YAbkyI-Kuy#KLAi+c<<}VqZH?SvJxV zAri{erw=WQNz;1u;p}_Xdmg*Vsv|F|pJk+T(f0{Fa5!?mFm5Ppoa&owIpuw=~ z)=Mc>O*xx~tD8=Ht^n6SqPHNL7_W|Kha^FcVPHLMbTV0W6iEQ7$n@wUrWEJR99afnJJNsa@`&S-TTVuJN-EVT_TgIwU^{>%R+NI0&2$ zoW1nRCpO;P^m_w`A$MuzxcoiVjTajR%l~DBP_IbDd@D!EDm6@Xsp$UBYuJ&s5`2Pc zi;PO!AN^W-AvB~U#~szyy%BqBIde@f3JNflhC;VWZw9W(lF6XgqUTgb z>oftLf5!$OH`%qKTsD@=ZNH~M91RH^?tfNg`lI}C+Q0J2lOSTs@Tk#wtZ6$0)%Jl{ z{5Y%H=DJuscPnlF%z<)gAFhZugN(t^lcieNvDvS{u0KP?NC$uAP$W7IWSi;|s$uwPKOIZWh{e|y4qV`BLL%pD^P*j>Qt-yvPZVQ z5?CvA(Zw=THg!7CU0{574zQ6Q)#iNkd#GI|4I^rrzwTjsb<-2aJZmTxR_d-q!a~*@ z%p(@3V!4Yn*)kMPPZ5oT^>Pg`#L92g!hoF?_S z#LW9RYj}j{wrhaIZ**%zTl6$RQnGc|L0b~LW_$FAFAN9(SgaJV^4%Ckb>{yx#hgL& zKnF^4b;m3#v)hOH^&1CgaoTlmdlA`V#>=AFE1J{9wGU_nb4LjbtwzZj#@s#ii_ASw zfv;Is3rrWEtE(XCO7fDJcwmycg5S5#7qde9<6mz;K6c%kkEf#eaP54ePq%jfz;oeu zg|B+A^Z}~qB>+mmyp>;SdrKphkIv$?A<*;2rMXzY;&Ixsq}=D=f$;#Z@4RL=0^ z;p7E$*=JAyqJjsuzP29QTxh?duT0QM?Df6m7E0G4Z4q|WF`WKm)G)K2;tW6aG2-e= z&0NAB%Xto5x_q8kR6g@JV+Y|`#VcD(lwwslrmV1AwTbLLfAWQ}j`gyhQ}HF^@ax%e zN7X7;$vNg$QKOdLamj7S`%)r`SOEcPxXe-Bh%!}hgzral_+l!c>Cg7K%D8^$FV#OQ zf_d>1IG>)YciP8*&2{$_$omV`qwOJI1%UIJTt>Bx?`K>{%q@<7W1Cd3k)OY}&2gbI z){L+owHImf0-BK$yIp0vbV$vQeS(0O?w+a^t7$I6y+8njnio@ zY6%=)3pwa$uMpn|UYFO&={3JD{aUx(G%EJ@@%t6(IFO)MS>u!*_B!Y-G!F-KZqskD zA&0&umQc=ez!W#>@AJLOxtmXIzL7t5Qqa~a;q7Wqf6hx{_%Dx&$>t-ND?wig;CNj) z>g)5$zCB)5^@+6-fC`$Y(tFPpE*v7(nX^TM)~uz`LdzkKVnCK*A9&1)3y_*4CCqH; zCCxj{kO-IEg1(77;!NZAAn77RtE1#W(6j2_s`xWNV<<8lV_&>m3Rvr8d;JdJrO(!L z@+!UN=flU{-7j4V{>&~!X{08skJK4xw1X(ydbqR?4G~%4mH_M7;-1B6LS7-rADjAggJA1?-mt(9#jK- zn2^LG+4IoWGrJclJa>@K!hoP+I`tw5T-P*Kn9YE2nSWR2j-0zR_gOk}>WJ)CI@*O+ z9j4P3z_S&|9v=V)Q7w2IqMPA zT$juqZefUQU&+==kYHrSKngF9A}2{fgMh?TQ!4z%0)M9hQPZ|Wc!pD z{v~Pnz-}$N>#oN^ ztP>S}$sOdncmrW+&}8vb0~k);4`NPdvarWeb_B zSA9YF;KnI#bu;+7%#0HMee1_O^b2B)IXcvXcKU7FFA>!OI_ECllF&9QDKE#pQVhJ8 z%1#CcL#=bWv>kvzoF*WWhFcU}ciUi9{$X4$A>>>HOW8z5#EzkDSgLcImx57ImQ;iT z!;YixT|b30JWbtpByj8%8IZ6OKyi6>c`iQ6->;!d4JtkiOA0n;u*DmW56^P7#o%}) zipQx)0AfjRG`jaQnEdmTwK4(SQEJs{)IyJXo2?x?dOMQp=Pnc@$E#J-V5+X~=gEB3 z>5uMGS3GQ!g4?Vxzs@UX(S%kvXL0{lo(rAkoTE=OO z_FcNg=k5-{PR26ZgzF`4nq=%mEgPtnp{<26FXoY0f$`jd<=Mf{b08{}W11pv*cuTJ z(4(GL=;xLp8*173Vyp)pX>(mS>1~VWN320ibg9)R138-Nm-mxf!CnL0J4g|TqXw}7 z+Un!K#&3Nm`p>ahkMH~8gXyTAp}=Ao==$3|95pMhqGrYQ$I~zFp(a0TJ+6J5DgM(@ z)unxe0bm=z>B%+%vea)$mIYq3Z6qr5RB|x_0G-)st-HN(#2YJ86AsU%oBe8P`r zzhrgBrH#_AUloCorcZFpv!CTROZukUc>4Wqtnk@%0Zgs{?THlGr?p1RUms3hFAaVX z>I<9y4Ev*;hMVk+@rhHV-m}9dQ-f6 zc8)FzV*T;VhrAEs;Ad?Bkj@C_GuZqY=)f=@LN}wKE>-6V54uH4P7F9KWvA?1IA>;=(xr?^F-sGKYB3DnqyUi$@P7bN;dv zqVm{I5t$Oce1!|7Q`#F?);&XLpX~;6-LM352|e^SD(y`F?BcYr<8~~U4U(Hv%-hOn zh^Id1ipHc5up>Xrw-ga<#Il2hFGuId=?c?NZD->3h?8^XJ75_7$t^5h60ZHnBJEC3 z8!?e+Z@o%y$N|-y6if=f@2aU1YIt%<0R9Zj1rREu7N68(Qdm|D3)3I|2&6~w%7{t#j}@OZ1NIad}`5AWge zu4Qe=l_#-%6{;~2+1LOO{|LftTB$M_mrv1IDszT^|2!P}6)ktb2KXGG@-r8`O{t&D zO?yX>Rf0G>l|^H)t*A{WjfQNrSmRXnzpp>Z6doM{KFrjd_$JV+nbrt6PkhZSO}1ZB zoooHT=6yq4#ql$>=FD={aBQWY#d+el`8}JfSfO|P391Mw#FyQ^7=k`}^rNxyGS)E! z&kib!Xqawy=`nG`9_$>{Tm3=ep)7Idlp}9c*OY*<3WA^TL}s#s?@QzVV9)!UppK#0 z{}7L3JH8wY@QSdIw@yFaUTIP+7_{ibspa2CVHH#Ib_F&qw4w{()neXl&9Zn=>M85C zURBDb^bH7b^;oQ1lg1QOh(DP!Zbwe%O0t;*MO?SmOl(Ro$dsT=${pL}=LT zEsEj_z#UnY9a+-nJmUnM5%$fNeiyV|&mRod>JKKLzgf{I0r|+xn(ISh{5lECc&VxN zrxr4=p94~+mI5-b9$C=UjPC)nCMl0l30{$-A9PRA7jKjJ(W$>nO=xdQq91>5?)yUb^gBrvs9XK^+`|Y@M1E@MrM1Br)W7E(>r% zQ7ZN3qzOlx;)L8!?7}F>>BY=zn}GdGbrS^qdKPd zhPqr;C0jPr>^=XcZqI#chgK{Kghp1|h*)2whIlfvfwKl9J<5~d7B+sHBuy0%MX_%# z$QeEZ`1hC!qW%xO3z!wT=MT5fcfjNQZZ#I^c_({=z{)CjW!@ejZCEn`5W4)VptwvsPY8a;axOcI&p}e>llx|; z(DidMN?Gi!Gt~KRgQglU8`fH5A8K5Hnf1*cD@PS`W{4H2OKo-!K`G>~Ua7>T!7|jD zkz-kQ7!X7bBh(ex?RhN|x7;W6?UtcqV_en#0bg*QV1=*VLJh!80}s6F4!A`fp=VFH z)%6Z#-+P>9kq&mN1Ss!O7D3uoic^&@?q%!gs?RzXx-LvZ0v{gXY?EsjTq?Nl#9&S@ z7Rj50=TqgB$l;N?%kJER3;uFE?)ndhHUrdS+{ViMHEQ?ph#g)GiwJMj-PIoxW}d-< zUsleU$4gl~4CLtg3Tq__#B*4zg(ssn$ruf23ndhlTVs>9j&EBj2(5xl)#Z(kDj*;L zl{A4Wx4y@M=Tw*CHylnRT&PfZg1vqEO(6q24=hYoa^ddJqEy)I_~~y0Q1tKX$#S0> z0FmJy&jx2219B$-u*|0}_GZ(~?5!`?-TgXlWoI4lTT2O}uW^@(^&tJRxp#^IW2Tbk z)4%geegWD$p8k!wJ<@!)ErOG-QX57^4GGFep2=QiOtSl5x)-mPAyt!px9Q&*xwf4s8sOSp^Ll3LF zPgTdcOn2UB0=NMXEeK7mJ8@#^zN}|ykC=*4!S?Zd1Aj744_=_aSyv%5q zHt$at*AdJH@&9MSdfcGWr~sM(9#R?2dI78@Vt}m#(lCxO`SQkNBp*YW!f0qOY^&vn zMFN+mJpT57{EzWn9gqK#$QHmNnRI>%O-0v}as5-kkJqaf07LLz^v%#q;LE+D0f3DQ z*a{pWW9?dij%41|>z;y4@p>28VlKpD9C6Jn-Nm=R3$BzbnUdghI+=L8JeAVjyl}2w z%YndrHXVzz6#=4OXw6D+uf992{m^tn8 zse}n^nT<0|-ahcpEY!7=zkF%RB5pXw$oN_>u)H4<(82_SV{$M-U6`n z+vD5K?C+;M^)IitQo69P(S^ghmO4xM$GE}lYtGwOpRs++{=+f5GT!#Kx19uLhiun} z{=8rFat&x~?g6H7SeV|It5NOq7_jM>UGXF&pw-@5pmnRV*IL8}&RxL^?I~a?m`T6I z?Y#U~3vNN`qQi(#v->DGIqPU=-@)^AMO|+e@d1W~xkUvQ5@+%NQx^?}AD-r5Lh|c$ zQJqdqV5^=}Nf7PLwP$7#Q@i{wHTekWa*0{Q#g$PRS{1VaYsDhQHDRZo8spYoXt7ht6zmbWh?osnzIQk~dsU}~a(+o*G!d{+gSF+rK%#c6&f+M_?m z7S+%TZh&kuKmij4Erqje9Mm@X65uY##RRqBV}Y?00m8bM6Y0%A>bkOsWzc|FA-#O)bo_No-jZber{Iwmot(X=gIs0`cVbLZ`UoH4un ze|OAacI#W;It8<-E{rJW;}oFMb!E~`){QBUwB7@$gj#26VT|M2GJG^bSOx@*81H zFmrIr6q008p&-`5StbdQwp8Ozh6;{wRdn#LoD2LE`;0kD#VkOCTTZ(BzLFO}{4z}z z^q;@htv>#>jqxisHuvHt(yJ<20cPlH6M8Iw8C@9%Hj~!$_yS~bVf@FVT^Si?hSd20 zw7e(i0IdhJY{R)t4sv{oeIy3?qcD4nnZ3-4!(WN%@?F#T^2-*k?uPHwt=X4dw(q-O zVD_Bz3}*k~Km3PPFgsc`qn$PZ(rndz(UsiR)VQbsiSCP1ZvkrcT)iAwW}Pu*`!YHr zflAIf+f~79w=pQ;t7*?Ztz)W}{=!_{kD&YEWD_ura8CR10_J>MBV&h^YD;fZ zK2&RHL5pq9cZfuZFYf>N^=^9)e>dA~K9DK!nT?TM^gPY$y0@s8&95w_>>*Uzksga4WK zlu>k1%sk9Kt-|DO)p6=h5`H?u+H?rC|2b5zpU=Mnf5-;FDqXO;JY$ntE5k z3~Uok^Z?`2w7%V&l~G+48$V3?U$Q@B!7;4j7ywscBXMYOWz+>CT|Sa&7hYNlY=xr} z%lei%Ctp0ofoq=8j~KO(F)w@8GZIjgkaoUz$~gM3Df=S?v?8Xh7yr0qd|tbN6SvUr z2?_}#be+tyNJBz*;f{DOtU{mDTpGZgX0q>>Lwpl3NjjSL67w~o2%yE6X|_S!LxXa2 zAW98`p}$2WOewVGb4SicAU4cHV(-kdK9j#FZo9s>_Wkek?q;KatKnD9U>bm%fY^Qt zi2mcukH6Ttlw;OIYy`}TCl|=ldV?&@H6$xzhFcM?NSCUJxwMG2)u@$WbniW!tM*;pEQix7mhjiw1?QVxwXTLZIg@5(6c1T}&gZ5m)>U#ewp*O=Mg z?gg{Ax=qsM$D#YT$k*`p%H!i-(SGQR!EAHJV0L=OVD^mj3}!EW@rxDAj4@JLPn%Aa zk~V^iCblrz;;i7)JqOd|6Kv||tS;5KH^ROHo|Q4R8)maU)>U0hm9L473%V@sQ3Cm# z#XS2&D+*>W8Sz~F?}ut8eA0jz>S8aMm7=?;+4H4H*GIGi%nEuu5xP9VWILiP78V21 z!$I(>fvs3H7L3I-zdUp1JsY!M6*EN2aKdZ1q*~Vm;eY##rzeB}SwJQV7Sd)`sWx(@ z1U3^W5D;=D6o_ylpUtKQG{7NX55X7(P(Cl`Vp66;SfrMOQYiL-U%b`|s1zh+<&I?v z$O#xzSLAykkQtr>6}tAor&~CmCoIHDOF#Jj?@cAlY!n1Af&_49nO_519$_JXRsN-; zEVhUvGfkgkTLHBINSSVMLC{+HWJ4bh0W%X8sXyAXml^wtI+V6r@lx1g-W7fWtG&_2 z1kBqnR`I#SI~PTNfHq(H&2IhiZZ=Xi>*1_~E^Y|TYY@cxy~?1FK{@jYXtOVT>;W=~ zH8W{9o|$l%ab`GYtl2itjZ5Q}KxP*6c>^FOFjl)T63iOKtXI%lrA$@3cQCV$wC3=4 zy>0$a8Vj2~Mzf*h{9)olUeSK!jFW$C&N%tUsh#cdwDX*m@txoKodwML6p30tFy^eY zWt;Z3*Psg^A%t^L8+Bn6J5SJ{ZRegS&qr9Ht%7gH+c{k_xgT1!$61#yUzSdwYTs9R z?#{MNj*?*Zq7l!rL4nB3RVAx9MaqOXm;M;~g*nSX_|krLU#x%WQg6a7zrP%lO2rJs zDfC#WWAXxEp{F(%un)qJVlrx%#cHvd@L^+t+b*UD&~lHL1LsYtm~C6=Vx&zzR7umv z%bxaB!_jOojd-%K-lj<(56hx`?Z9MKjM-9WKwR4+42o615;m=`wzpgip6f@!Y-t9( zg4q1<2fZKvut@{TEVNU#O`y(ooJGYV{1iw%VQX7PZU*XfW$Zx<3xNCMu;|8yK$ogz z+lFzr@Ccmsa{TOXXU)f$a>0GI@qxi`OCGVa`0;G&v1|vpZHKiyBW=A) zqec(ci&3W}x+L<~X8ny_`@6Twb+UR!du!8x+smHvWTb&N3*G;#0up9z)RUI2I*^f& zSuZpnBNI&!z})9^#k6g98FTDsX0)w&)aU$Sop;(KCN66TW;X00Pu)y0cbC_|nd%v7 z@{O-G+GWP_y!w8tJ0=I@6@T=@K6ru^APe;@7vEVpBO3+cQ;JUk>MpvoLRn~8#<+qR zQv3`_<^i`vIwMb;99Qa4Q7?cA3q80nCi*Dr3T6!5odrT$#XD4Q6Op_*%=t=yYX-Z3$%4&NmjrCD})l9)CH$ zjO9i(s~_UZDCzUVELJS~UM-WuKk8Ns&zmA{|3UZ? zaMRm&g|oN2Y(IX%!0gHA8O+}P?cd(qT{G-uJ=K#Ipwy0MT%%1mp%8)gEGjJM{G2X+ z>fR^Ubseg6QHaa5@~Lz+85E6eeP0POt~L>&Af{kRcSFhRo^^UT$8rhMx}sR7Il9zEKd5p_}v%f?ZAx=B*5C0 zvDp1G_AJ`+Xaq{ke&Kia!CSmqF!v8 zXojTnYD2gI@+_=N_c8;tEgZ0Iq$xG7Ghd@Lt;IP$>EFuxnQ3z9J1l_zoP{+i8cE^+niiixGpwe1|XwNcc#1IfXzNI z^Ajfg&~*5HjF}ZNX5M9FEK=n+`V*HVbz%A9mCc)0Oc}FWXOEFfe=Kc?Yu&y4csLW_>z&Ucc|70>m+kE{|GvP1FHE zbOFjkHoIQ#(~8Vv@7`#|c!f1>GX+X)KOoR4W2H}E%me^=4FaV0RbY1VT#ski#*FTa zs+5UaBX<5IA*2VP*tvdTLLd?kzSAnbt@6&aCC32FMCOAU76365a%?e2iBo+VbTMCnRS{j|pVq;Upl*z4QGf|xBw3X$TJ@EB%BMu^A zpH0&HnXt;@8NVyBhbGsb_a{E)BcYg8f8>yE2wyC#(grZoa>FgQ?QPf(Exi2{OPzfH zIF1kB0awhkx15Gv3LypIvXE1x)w|(0sFx$gsY@pq~ zYqa)kC(P6k)XzmLj0NL07-!Y0fzq~55u`omq-XT?Y+Nf?EhJ*zv|o))W0`g*&l&bK z+w6g_p`b<@sLxc+%;6($fH84h1dO3iJpZzu?s0m=P%>oPSmCaSa)&c9WRg(Ia&b#% z-uc0mQJkDo=^7RVE=qaYuz#Puw-b{#^t)}5XHLorW{-bdk?4Y0(chT23~@BS@c$zx zn3@@%kNM;IeCtolTp?!#a+=(v#m?}R7rZxRf8aF;rh#Nz{~ojbr#|6h^dqWSCIDd) zL&lFaflTYeEiCAgDCbgVE>h{hUg}WH#8nZKlQy62A@4zzZrE z%azAps2c~|U^7Bn|C2fuvkt)4l`-Dl$!WSiEV zV_L;*;hPopRWPf|bXn9z!bF8%kx-wWh9Vs z&$8|C1Tj7LE{xf4v#jS%EvvIK)~WN=eNoHvoFUjz#+m`dSjV~B=S4f_9eDBFf*EE)XUnP& zb*2*-P|QMaFZ&73M=U99FT3G-C{j{j`gKinubUuSSU9pQhMPN5)SGF_eXTH2hCGkS z{N#CEXEKvhxSMm%nkb*jQMwaiKQ>AIFLMyv?8jzf9xlmI!gP~v-MrbPTx>IKA%W#; zpEeP0Vj`nvyS{&B+@o$5WA}Q=#o)?lk|rM_pYGK*ui+AV_OqY<$@4=Idw>h7*}%qH z<#(9ugEn12sdBX_u<$A2Sz&6I-d+GKR#B!X@4ziQCkBO#vZ&LcmIq}&F0^^Kp811r2Oa)iw%NR|ZJKoWePWL$>tg51NFc))pK4jU zFD8&dH7m0*8p?78m@UMa5zrd73^8Yms#zUlRs)%US>5-K4XBCjyPDgF*a3%s#{@GU zMKrQEbsllWmGOm_?H4W>m|b_C!R+Zze|oEcX>$)Cy$j@miyg~*ufKQ=+GbjM)3UlN z5eU?`KZ1WT%D9LoN^V8?dMt(#s4WzC>^Ji+W4!=4xwka<(5D&~wUQyaM%5m6~Z zVQZE{%T+vCp}fIAd(xvonIpzbl6(N-MD`Py6T28SghlT#<0L z2j=RDCIp;tlPT@lh94*TcnA6aU z^SKnZjqp1SC`d{%*HvEAEL`X4^SuxIh0p#B+|l#*6r=}qO$?%HSqXIcS`^7T_VA2o z#?inT$A)~u6Q*(^4xPJK)?g!0=LS}Z`a4L)r7XMhjXVmNt7pPC!rGqx5&Ur~k0qVaFx&@gug`JmD^5%DjfKdShvVSOaU0rF> z)(o*_d%;Y~0SF_coz8PeTp9K^%e4j7H0u>KCNBC*;AkT)Pr3U4|GrL%l)+oWllFgg)TEQ?h7^n z$E)X1cSKc|WREdkmta@LrrjlkX{!9vJ(B$_V-0Mg%}SZ;=xxh3EuTDf*yEK;Y~Vpw zDUyM>s%m1F8Rnz=_gVG%tOuRtFn0FK_Z$2zbzw4L_SH1X7eZ)IC{tY-xv&c0l1ytc zDvwg>sv}U`ylT%CW#SOIUMgmq=p*p%xP_=`0Ja5n?WV^*R&T_4qt1Uu3MFk2mekND z5aZI??)S`tDwFGQl)Lya1v*kFCctaJym>Ncb_6Kc>juvH96E->cr=i;egOqyFQ(g# z5BtT>`)qzkkzG^;n`ic+?h0l*z!E4!teJj#>Q4pg(@x+mG+u0$`$_Vl>GY|M=k-(t zW9(Q1Tq;O~Y^{4)*+rfwbJM+!2 z*k$Rc^JWMJBGR|Hb5rrdQOFm*%+5y85qIR06}J>@A+ zxoXHFh!o{|9FuBb9Bi~qkT@D7Sw1i0n%FfrGX=Ri){U?yz{xVlAroUe?>)-f$y0_s zZpSDEpU4AkG6oMoU3m`>jhkXfxk7+IpXouh%RJo~b#b(lN7EJxS(Nq=cNW;AEIKs} zVAeQR_Ooo-aogs&kqLQM+#=fmaLrvDT^S$y=#+JIdlq$UZ@ioF_LM)735qm_kaVdtl~AH6N0mUiV;=@s^20wi(~;q9UnVVXyOdL;jTL2eu-mMexKIfD_ zl+BxTGv7VmFMZ+XA<0Mo{bO!W*t{O=k}kjci$^(d-oiO}_mG>S6XR`ICx^YPN$n zv2XQo*r-GYS&!lp`=yTy*Yeov+c6)m-lp1)dipQKEW3K5PF9KeoCLG6H4Bjf1;9ie z)Ve@fp=CbhC*7{<@K?97`2r;W0FX`i(mlye2vwCUBl>(^%Qt&n8571zAR9H1Q8l|d zSH}9x$Ej{Oy)6MP+a<BR4nmzWi{ptlvm;dPVoR#s7-}sGtFl!(J)uUY!VOw4^+W~9~6VWQ?aQBrlm)5p} z9rj_ony(fsfCJzjz#a0Zt+nJ}ci zJX8M5iMmLBzE3feZ}kw8R8rJQ>mt2apwTvu#-nrJ*`{KJ{~S;35xwFnnud5xI*Up9jK zl`r{1N;Ex`Z3N6*T^i?WH9!vzo@sPpJVZ%Td-f-!WdaY44a*5rNpmiU3ta*;*Nlo} zn5_y+4UlblO;Njw_^_dMeYu-4`4)LpiWw#ud)mBvw~B>4>8IST?r^j5g|^weY64iN zhRL~A$eO*%_(%$sAGXNTZY}J)Q)9G2&QeS2U`GR1`V?+NF{6U!MzJtHt+t9n79E>^icDWmy@< z8$i>tGLD;VhX_q%l*qoq`)_;YA4x3hH4ZJa>0bl6H61Yf^^zxEYhD&ILi z0ShjS?pja#C78=2-KUKo;{(A=vowadHQpKP>PVgMl4;SIZL#=?rF+z1)wwUEoeE0| zZycNO{zD%Q9(ifWc~1fX@UjMCqO*}|sOZr>Ce`%lMY zqxCs-k@?+R5XGT{8tE>`hw4kOA13 z37C3s{sJ)?qnnps!e}#}qiAq+w0->D?;bIb~+MAmW z$h>uB^qhdE&8N#^)6PX!D%;B*{xAy@_cmxy(jp#y_;*z%t&)NirG@6w2Vz6^Kg^QQ zR$Liwm4*e=d$F3jJV|-ga3N9SEJTy4UmtX!2`XN*2ABY!w9>uyutT+ed-Vkj`}ME> zO7Kb0H;#3QA1e}qcmZ&5Pt;F9WLY9GcOQMR2K+KfBOvLfe8jBjL!nP6-A|y5_%wF&HUax}?RBahtnlh>fKi4sHAi(+Y*Y3-G*OGf@dx6H) zknLx^zOL`&#$k^&-q5%LS`$a+0%1_sGFzkR4*nXFrFB)x&=%q?s2Cu2h);6Kvgo>> znJyBO_8Nb<*bq32P>K{lE0|^5JzyiV@CENu*7>M}O}9`uOP5BCfLWVx6A9z8-#r1blW!LwZYbHCW-tl3F@h?~NkdW7Mc;Tdn3?&>_2wtvW@B@o|98`9 z!d9CepX~x;VlyEwWY01H8Peke%J{J6Oofc)=;5pfGrBV>ob|D0A#2)pu8gwAfMQmh z|1dW8;@H?P+mVO=-5sus8~L#d2Y-F!moC%gzrsE2cP<#1J>)!t+3UQ{>nz-)_X?WE zd$A98O-vJDMB19Y%hqGZ4vcN%MZ0=`jpcb9v6gyn^Ms@ycL|DH+R+dhEK4xEe%Pap zVGO9NkGfoF)PW_KI9Y0G3M~yMF327nmX6sN!TLH6&JP49eue?wxL8TegHuX(94t z!yzuRn7$mma^J=YuOE~ZSErqdos3_;0A`H2_wSR8D^$JT{>HCk0MlJVnj_AP0LQXy zC>^q)w7Mcj{qY8*8R0F*w4YW1E&($Wg>Cgy-+ojj>!QFIn8%}Y-6ojHxq6A&*LcK> zjU1#(Ol)7UT+l~TzMxYwy#7~?1+zJ0e|;O9&uGDHtn6F19$O|rCYcun$aLSbBjU@J z(&f{gk!4B#ArMw5W~!t$v1Wv_4$MsZT35!`GPln+x1$gLhno`2j{AWsCYYW4bNk(k z0A>P14?fRX8Lz$e+E&S8Uk_~^V669v(IL;tajnu*WP(I}4b140$hxR5&!?j0OUjrFc-8i9baqlOb9KN%d8Z5PU+lCAIDLiP^xy}X z&)*J05_C8cz1vJ0VK!5_69Gc(Op|=L#ja1%c1Y$#m*+K?4U`|sbl@VWZJvYbJI3dYb=JSjD zq$rp9S|?{>Q|jI8Gdt&dzD)|%gqx0pEcy>XI9Bt!$b5eHTfW)MLnweBhDt390-Dr0 zKFl&rK4Qigc^T5a&n8ps8@>t>zRFK8`nIOu29Av|DjLmCyDDVLFY4(BkHBD=U&ty- zr2@v873{m`W%nvH5a8wonBmo|;4Bx`yZ~~IYk$@4%#M?HvvKl)0%8EPEH|!F9GE+oE^GNp_K&?i&DY%3~R(3Mdiq3uP#$bzz%vEr=-Fr#CWi=&jAX|#&M7GMk$ zU4gXXCh6t}KEQ(iYF6T{q$E|keiSCWnA8i!#wyPejH^oR!S!L}{uxyvUc4A)F(ED2 z?FmF-d`7t@RjgvFv4-M3@?hNEsv3!Pz$JVj8ns{g(Wckp$CGhm zbDsUr7QhJfbrY3xV@F&4Bl@v9-Rm`v$YM1rI z+rDdl`7FWA%un9c{N#i7C}&j65Qnx`9b?-SHLQ*;tFtni*+14m#xj+%J^@G+XO;!f zPUo4a^A*wvXmzZaf)``Yns_sUSwh(*`v?@jW++j}oSKtqy{FsVazi`-Hyf87$X0j`M2IMN4rLl_r$2I=Kw;$BUx z>XSVG-OZ7@GDbASiF#`T&;yv!Ba496-pV!ozJJ2v(ijDpNe=F2!7qEj{mjfoElD*+ z_bC$vO;sC7AFnBdH7$I&B)^D4v0-X`-9O9Zc@n7RHO<^yt}kYu2h0dy0K*cv zT=r{ou?g3S=Nw()yJXVRcI74V6a;gHs_MxEvEj7TjewLYq?=rO&N>XxCpjElw+`5~ z;?_gA2*73q`UZ&N`3K+i?ZqE9()zinjr2)f{p*wpEKG0rfdkN%`IpaFGu4wrpSgt8O+h`3~SwqW+_%*xonn4`Z^%pPffbiu&ve&-p? z9`&e4H2`otoB=pi>sJL`tMx3>wQ(K9*44fv=D4)}BS3X^Ir|j47R(;y_K=-8M5rR; zSRH=l4&HIK>3Kze?<`y!xfM@wEgo`{lVk|Q>2apE&qeJ8tANA@s)V{Gfpt{OLcq*z zW14F+0A~)TsF-#xc9J?k##15Vt)*MkX$|z95LnA{M&-Qhe)r`+o867NAC!un2X6SA zWEN6JPM*QLTeYboh z0b*3{Yd{kkuvtf@iB5wl(&jM7sg6@XGf5n>R{;}8W`62j>_c4|cP@`()^dz6iN=j7 zmykT$b162}KOQ+5c+YD2*0E1hmwG5g7Q~s0LjWCYN&c*G-CK&-T>`l&iCsYMvG3KvJITd1F}YxHUt z>a7Yk%g#DgwZ-_g)xVXKN4h;IA<7-L3AN>Z%lAgFmqXnz!&1hytb8DhpbfX z$~!MOXBGW&3p%km#|Y4!+Aa6JuY_b}=nk?RN;H%lG60)SOR0k;a@g|!zy(_>IKH^a z7>f1S+DguxU!N_K)W*vkh^sy5g5Va8rTMV&kAC3$@DUgPw@yOVay355!0Ydzx{fj; zF6n5eKQg(hUeJd+lnHZYag;H%UsUnAm=v3Ij0#qvOd~2+5%Op1mZ%9a(IzXwTdMoR z^XEKc&>I)BzVJu>+}!|Xm-6wh=9>>{Tp1f66SYlLGl8)R$OOjFr!i)ZhoQYpm5=sd zx_kk#?CWC9W?$pRh<0&foa^ZUt&1@eD7$2K_kh`t6U>_L_D)HgirMDL_NNytE91S- zb5_PzdZkxd2aDc@SrpZVE`wz@$7)iUPG;mcI+b;d`%eF=T^8iCckoyh((hGA~}2YF=bB2Klza#njcMZT{P1& zT^yy32ix;|O)@ePuA=(+f}a?HGu;;16e;lYO0Cx00%f}HPKb0rX5N2!S3$qt6OZ$!FgxT0E3*c1~z#`$g*ese~#1H?OyA#aJ;^YdPoiL`X%f={a z^8L;+;jXFhk^EymR$LgfzmG3lOP9YMXVyQqb+$&TW;yrJbCU!l6wKy)W7s?RCHu&H zi|!sU`+kd|(UJr)L)~#Em_6J6?1F*Wz0Nb3{h$Bye;Vjohcz}cvtif9`dKPdecSoJ z&UzbFuw@&Us#4=IbGq~}xBHVv+$4q!P-d!>%`)4SEa=L({;zT`(4nk{BoH7o&@e{R@n!7yQtly1T*bj`Q2v*xcdT zcu(1%Ok&HRkO`1wJ$$NV3T9r^waw4Ml@Snjyenf3WCCMU%Cwz(n*~9v-+=m0w{9P3 zm+a&HlG)u0X5VfxyjI259N@EYx-!1l{^E?mY@9KeZS8E2e|Mh2?0^2x|4HRa)vU&C z4e@2Lvu5B@I{M?`=7{Gwr`K=Vt_H}m&NjM5@^akstZ4fu4{^Is@LoXO60Jy!pJfC4 zOj}cLLFE+B@0UF{F`8+f{ZTN{w1?~h70fyL^_wEsh0JoLc$rM5gtU+aLIO0jneSF$ zRkbfeKqMD?zm-PDtFkzWg@fs68s`qz0hV1_agV4-YiEA3I&*fCB9lf~pVbzd2$1~$PY))pXX^`%c!@ee9s z4y{if3SZ@_gMDV?UJZzLfbI_ znVkzMeEoUR;z~l&6@{_+wkvhr51%)5XJHTohs+k9u88emZP-4HXOaOT{{@)+} zp%gWS$s=G3?AO>uoe8t-XNEZd#m;llhS;DRQO5ZNlU?fD>j)ii-1uxAc@n z3^+-f0`r1{BWx6DyxfAZvK87|#LN^J)sBEsf>Lb5JaS3T_q)dhX4>q(+-CbV8unfX z5i(m*jy>ftKPGM{U8TV7uDUFPxAyU?lnAL?qa;T&*;@vab|E1j1 z2gQN@VzbrpfZ6vD%%)QrrFwm?rQscQ?`abMkaWwE!R)Qy`mK)@5GY_l;g4OP?=}7J#x#=xMOyBfcJXKV6#YM`s zWR~_J&ao{U%RPVoCsH7H4&}+;SyXG6?ramf1beLw>)3B?K!%W?N5y7*ht=C=8J4TZ z)0s9^*4r?hF;u%0z{W5Sotf)pjKr2;*e;KVGu=_i54>vG*>0 zAUguL^$-_F!G;!)S(z)LZ7P)!a5h&mf0eLx*Iwkzpv>B=V_K!L)PK7U^d7nQ42&Hc zn2q1A90mf|Wkk&0UH9)8%!VC<*?PySj5jS=mGQZs`?+@l06T*Vt6qRFurJY<{_$z< zwB6-re)!y>+Yn&FKEym^WkKvv%owzYmkiRf0c=@e9*d+YY`+d>aE#G0cTmiQng+Vu zuGt4I+7k+lg0z0b#dQELNmiD^1U)=rMhNr1!Bj|#bTQf`B}BmGQ8CErmjT26*v&T= zI|chxS7Iy`o)!mL`cmg?aZK05}FxAQgkGBajJy=Po?- zA2w1EzLZLzyxG9cQWG;24q(M;&RfQ@avaHb@(f5bM36cq z=Y31v`GA0^{_fWc}5C;;;l@0-D9Wxw;rgR-vo?*#2^OeETiSPje%i0% zIr>bui0eh$;oYHI82OS+pb*)C&)5NP+dkWNYNs+1zQ`}k^z(PpLdYPjDEhfW{gg)4 zp)A_{nqVebl*~jt(n&O&Kua61D}#2A@UB>NALYXLw_5}@(*UieF-JW*RpXN^r&0o> zJ$B;_^&6kEf0^wDEVpagt*jVjKhq3}38U3?cwQc+N2X9uIgF~$2IaN!QjwA^`ihUV zO%I!<_QmM+qoM9=?|k?F^NeeupwXjFQ<+x{xdhM!gZ zj&{4(wZJTrAm%Gl7G>|Gsq{m8W(LMIjIj>;U}*WuXH=#y_A$C|v;KGg#<7AKB4;nS zS-(%Q_e#~&#@N&7@08WVKf=pUX(WIV*fb4igt7K}X3edwX5%|%1hU#b1VLKSvJCx> z_VkY0*FSGo>1u%4`pcCeT6^k@SO{hxt_M%qJZ3j68O-jw>#pgCeat_`4s+@_SJ{LZ zNE6Ud=LH_SDLWq#@;a}cd4Bfk*G)&M*w4!`6;WIOtRCJOx;er*#sW+PHbNHzP?dYSI!GDeQLESnfK^!A zfoxq(atcpnl=_d5m%3J=?$H}=;IDv;lv%xl8k}d-U>UnS?&SPu2F+@R$`DKI`{k*U zLjN*OEGArnXqF$mYDoobaGgE31&Wj)jnRx&>m{C~d5N|WH9K~1Ds0ggQ=NR^@BbF? z<@ zM1-soDMNYNuQq>~DKB1cxp*QVo_T`r|KiY}Qf^@~n_T4xp9j9|XnC$nvEs3Qf{_$CQLj#D z@gaFozytnv&J;%io6HVuWlR8N69Tb1Jf5PD+aJH~Lh+zP<7I)EEH(B%l(sNnGWQZw z{faG21SE@p;d7;BW76oXOyFF0j91bkJJ9e~6lXIGw!`4Cw98Z@Ezyo8NlB0_WA=k? z`v=Bj=XcQaW5(7OKO7S;DM*r%DwB9egnMX{T-V=slk#Hxb8(c?nQAVaDuBa%_+S3H zLjVTZRWLJgk}x_@_9JG5Ev74$x_Z5ocI_SFq#%F+vT(-()Yymh5>poWDe2rw&shfVoiwVCs59r02IWFO|8YzvV^k?fqpBwx7uH08@Pg(|;eRKh{WKG>Rm2eebq(@KL zJZ9&YtjhSNZ~CUk2}k`l#}6ziDR$^{LTU0+)F`WIk~{tUj{h@0yhXYoXA-~_|954C zOx1Pq}v7O!M#r||Tx?cd%Sk>9*9097+s^FBeGQhO99Avoj{-9)r@V89x zhz74vZ#ImO@xkO3KwN-j-4=0ZTITcZVXwR6t-PmIDKl#oX55BB)}okmi2a) zEy~Mb_8>Q-oCLHMnb{z;T^r#*aUdOFyXBV_0%l&fcjuV#G2@{3978vcgM(Ln9<$Yy zDx&~wD%;k(W(2X|du7w9jBVNcN-Cqnmz7NzgrIiMX8&8p&==*t{%`xyEeFg#NEwq~ zvaofYf`_lsW2X$v&Mg_t-sDZ*Wbxp|c8dqcYoFJdo1}9L6a`Wdn@{?Luv%M2#ISAJ z$T^kv?ZHA~P3^(V+RxCmsBq!mluFyD7KA(}Y`&X&2 zA5&kslKyiH|5%pS8SrW%ZeMj+|f|mH})2!))-^*H z)l@|Bw{)b-G2uysIKD}PPn!u^Y3Fe}>)iI_*|U8HV0rdj!@HV#nt`F|m{?5La)189 z?)^yId|wG`bBF6ZNT^nd=_VXDtBVn`+=hH+Ghobj*O?g&{bVl9d$MFr-v zfLH+b7~}T+_P`Q0CNztWd5M%o1fCqkf^`$Wq(x47+_yCoFTmv}*gC`3+ur!|O9r!T zI^hefqz@cJ@BMTHjT21EB4-9|y~x>oHAdRn>WnMR0U8M9_eo`h_y^P)Es}Q6X8X;f z^tCJLU$)0zESTjx<9?m~!t5$H#&_w7QwC;dmJDWZ@CI*i*-)^oKG)8%fIergmk!c? zFeby4y1EudBJ)p7gG2<(7$j<7HkA78gIY;vq<#XavJ_da6J#6IL@2=B=U747%W zBn)z!-w1&W|4p2bRjpSY*y@*1YkzwNae=a$Ck|}v<1x0>Q)kYoz3{?O-LKxhYPCHI zfUvP&!m_~_f`0TpU?t1*79LjY}q~uY1RH5NE(v#-z5`&o~eEVNHqv!Fv)CIAFaMc9-m*%Lv${M z$kFu-Qr35t;)s}{IDfm{zy4T|Mg$L`>?%K z7+9j8y=en>-f#C~lcZgJCTA{4`_3$Vu0bG5Qx8b(K$Eb~fD_wro87QS-7%K?ZD{8} z=KQ~39ay`4%TvTkd`k$cw((>19p<+5^8J4Qrw$J><5uwSt_X0HffNn{+n%mQ=zc^+ z-JMG)wZ??WL9EmEKq0CsTGL3&$K!ZX8O3vR3JI1ocn&~StbP;@tvi4D$gA%NPj1DePlf3qxm?pHK&;m9+~8eG59K>%m^^$)Z(884%-5=}IgRm|#0OA^HT4fs(xHCC;GXhf?s7kdZKSu>yg@s{ihBNbTXD*M!K#I ziPM|ydU^7}2fDX1D8MPA-B$Hf#{PGZLm0sfa9lkGBVAQe%4 zl{V^jtZI5vYFT=t8lk!5m8p(dVf*#Dzo7IXgsC_=b#KNq45j!_i4lGP?r_>g3cI1* zUAnB`m}_ydy!ieU`}DJWo_geA0+*E$8B-0&vR>Dk)2&vx<0%8Py(NR$;o+frOGHq@ zJ-s|SA?gG2u(1~NL@WQEab^S-{UTOTzSz*fIqzfrOgo%B&R+R=XaW6u^a z^Xb0>%q&v_j|uL3(Q{SRbGV;*1HC?VaZ^2aB#5H=*-FW>zZHt z`>mSj+oQr9ttF#jpHITdS)zAy^G2TIr1KXjxs6 z5fQRS%J!F5sr$#!_iwiMjiKM%zBA_Md)9&3V=ty0E-{rc8O=}pryA0^zftZO%wor2 zmOBQsSTdOH?d@ryfS{ART>HF+_On^t9{o0Rd4}yGr9AeB>lqHVfuZhb&KpEup$Ywv zus3J4Xb;qze$e4axXp;&UqT$=+OjKNJUO59dR)yP-xXeRCKhGeF{Y&Ah;e1#B}~m; zBIlnxW(?ri2DA6Wrvc0~maUa= PDFJS.VERBOSITY_LEVELS.infos) { - console.log('Info: ' + msg); - } -} - -// Non-fatal warnings. -function warn(msg) { - if (PDFJS.verbosity >= PDFJS.VERBOSITY_LEVELS.warnings) { - console.log('Warning: ' + msg); - } -} - -// Deprecated API function -- treated as warnings. -function deprecated(details) { - warn('Deprecated API usage: ' + details); -} - -// Fatal errors that should trigger the fallback UI and halt execution by -// throwing an exception. -function error(msg) { - if (PDFJS.verbosity >= PDFJS.VERBOSITY_LEVELS.errors) { - console.log('Error: ' + msg); - console.log(backtrace()); - } - throw new Error(msg); -} - -function backtrace() { - try { - throw new Error(); - } catch (e) { - return e.stack ? e.stack.split('\n').slice(2).join('\n') : ''; - } -} - -function assert(cond, msg) { - if (!cond) { - error(msg); - } -} - -var UNSUPPORTED_FEATURES = PDFJS.UNSUPPORTED_FEATURES = { - unknown: 'unknown', - forms: 'forms', - javaScript: 'javaScript', - smask: 'smask', - shadingPattern: 'shadingPattern', - font: 'font' -}; - -// Combines two URLs. The baseUrl shall be absolute URL. If the url is an -// absolute URL, it will be returned as is. -function combineUrl(baseUrl, url) { - if (!url) { - return baseUrl; - } - return new URL(url, baseUrl).href; -} - -// Validates if URL is safe and allowed, e.g. to avoid XSS. -function isValidUrl(url, allowRelative) { - if (!url) { - return false; - } - // RFC 3986 (http://tools.ietf.org/html/rfc3986#section-3.1) - // scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." ) - var protocol = /^[a-z][a-z0-9+\-.]*(?=:)/i.exec(url); - if (!protocol) { - return allowRelative; - } - protocol = protocol[0].toLowerCase(); - switch (protocol) { - case 'http': - case 'https': - case 'ftp': - case 'mailto': - case 'tel': - return true; - default: - return false; - } -} -PDFJS.isValidUrl = isValidUrl; - -/** - * Adds various attributes (href, title, target, rel) to hyperlinks. - * @param {HTMLLinkElement} link - The link element. - * @param {Object} params - An object with the properties: - * @param {string} params.url - An absolute URL. - */ -function addLinkAttributes(link, params) { - var url = params && params.url; - link.href = link.title = (url ? removeNullCharacters(url) : ''); - - if (url) { - if (isExternalLinkTargetSet()) { - link.target = LinkTargetStringMap[PDFJS.externalLinkTarget]; - } - // Strip referrer from the URL. - link.rel = PDFJS.externalLinkRel; - } -} -PDFJS.addLinkAttributes = addLinkAttributes; - -function shadow(obj, prop, value) { - Object.defineProperty(obj, prop, { value: value, - enumerable: true, - configurable: true, - writable: false }); - return value; -} -PDFJS.shadow = shadow; - -var LinkTarget = PDFJS.LinkTarget = { - NONE: 0, // Default value. - SELF: 1, - BLANK: 2, - PARENT: 3, - TOP: 4, -}; -var LinkTargetStringMap = [ - '', - '_self', - '_blank', - '_parent', - '_top' -]; - -function isExternalLinkTargetSet() { - if (PDFJS.openExternalLinksInNewWindow) { - deprecated('PDFJS.openExternalLinksInNewWindow, please use ' + - '"PDFJS.externalLinkTarget = PDFJS.LinkTarget.BLANK" instead.'); - if (PDFJS.externalLinkTarget === LinkTarget.NONE) { - PDFJS.externalLinkTarget = LinkTarget.BLANK; - } - // Reset the deprecated parameter, to suppress further warnings. - PDFJS.openExternalLinksInNewWindow = false; - } - switch (PDFJS.externalLinkTarget) { - case LinkTarget.NONE: - return false; - case LinkTarget.SELF: - case LinkTarget.BLANK: - case LinkTarget.PARENT: - case LinkTarget.TOP: - return true; - } - warn('PDFJS.externalLinkTarget is invalid: ' + PDFJS.externalLinkTarget); - // Reset the external link target, to suppress further warnings. - PDFJS.externalLinkTarget = LinkTarget.NONE; - return false; -} -PDFJS.isExternalLinkTargetSet = isExternalLinkTargetSet; - -var PasswordResponses = PDFJS.PasswordResponses = { - NEED_PASSWORD: 1, - INCORRECT_PASSWORD: 2 -}; - -var PasswordException = (function PasswordExceptionClosure() { - function PasswordException(msg, code) { - this.name = 'PasswordException'; - this.message = msg; - this.code = code; - } - - PasswordException.prototype = new Error(); - PasswordException.constructor = PasswordException; - - return PasswordException; -})(); -PDFJS.PasswordException = PasswordException; - -var UnknownErrorException = (function UnknownErrorExceptionClosure() { - function UnknownErrorException(msg, details) { - this.name = 'UnknownErrorException'; - this.message = msg; - this.details = details; - } - - UnknownErrorException.prototype = new Error(); - UnknownErrorException.constructor = UnknownErrorException; - - return UnknownErrorException; -})(); -PDFJS.UnknownErrorException = UnknownErrorException; - -var InvalidPDFException = (function InvalidPDFExceptionClosure() { - function InvalidPDFException(msg) { - this.name = 'InvalidPDFException'; - this.message = msg; - } - - InvalidPDFException.prototype = new Error(); - InvalidPDFException.constructor = InvalidPDFException; - - return InvalidPDFException; -})(); -PDFJS.InvalidPDFException = InvalidPDFException; - -var MissingPDFException = (function MissingPDFExceptionClosure() { - function MissingPDFException(msg) { - this.name = 'MissingPDFException'; - this.message = msg; - } - - MissingPDFException.prototype = new Error(); - MissingPDFException.constructor = MissingPDFException; - - return MissingPDFException; -})(); -PDFJS.MissingPDFException = MissingPDFException; - -var UnexpectedResponseException = - (function UnexpectedResponseExceptionClosure() { - function UnexpectedResponseException(msg, status) { - this.name = 'UnexpectedResponseException'; - this.message = msg; - this.status = status; - } - - UnexpectedResponseException.prototype = new Error(); - UnexpectedResponseException.constructor = UnexpectedResponseException; - - return UnexpectedResponseException; -})(); -PDFJS.UnexpectedResponseException = UnexpectedResponseException; - -var NotImplementedException = (function NotImplementedExceptionClosure() { - function NotImplementedException(msg) { - this.message = msg; - } - - NotImplementedException.prototype = new Error(); - NotImplementedException.prototype.name = 'NotImplementedException'; - NotImplementedException.constructor = NotImplementedException; - - return NotImplementedException; -})(); - -var MissingDataException = (function MissingDataExceptionClosure() { - function MissingDataException(begin, end) { - this.begin = begin; - this.end = end; - this.message = 'Missing data [' + begin + ', ' + end + ')'; - } - - MissingDataException.prototype = new Error(); - MissingDataException.prototype.name = 'MissingDataException'; - MissingDataException.constructor = MissingDataException; - - return MissingDataException; -})(); - -var XRefParseException = (function XRefParseExceptionClosure() { - function XRefParseException(msg) { - this.message = msg; - } - - XRefParseException.prototype = new Error(); - XRefParseException.prototype.name = 'XRefParseException'; - XRefParseException.constructor = XRefParseException; - - return XRefParseException; -})(); - -var NullCharactersRegExp = /\x00/g; - -function removeNullCharacters(str) { - if (typeof str !== 'string') { - warn('The argument for removeNullCharacters must be a string.'); - return str; - } - return str.replace(NullCharactersRegExp, ''); -} -PDFJS.removeNullCharacters = removeNullCharacters; - -function bytesToString(bytes) { - assert(bytes !== null && typeof bytes === 'object' && - bytes.length !== undefined, 'Invalid argument for bytesToString'); - var length = bytes.length; - var MAX_ARGUMENT_COUNT = 8192; - if (length < MAX_ARGUMENT_COUNT) { - return String.fromCharCode.apply(null, bytes); - } - var strBuf = []; - for (var i = 0; i < length; i += MAX_ARGUMENT_COUNT) { - var chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length); - var chunk = bytes.subarray(i, chunkEnd); - strBuf.push(String.fromCharCode.apply(null, chunk)); - } - return strBuf.join(''); -} - -function stringToBytes(str) { - assert(typeof str === 'string', 'Invalid argument for stringToBytes'); - var length = str.length; - var bytes = new Uint8Array(length); - for (var i = 0; i < length; ++i) { - bytes[i] = str.charCodeAt(i) & 0xFF; - } - return bytes; -} - -function string32(value) { - return String.fromCharCode((value >> 24) & 0xff, (value >> 16) & 0xff, - (value >> 8) & 0xff, value & 0xff); -} - -function log2(x) { - var n = 1, i = 0; - while (x > n) { - n <<= 1; - i++; - } - return i; -} - -function readInt8(data, start) { - return (data[start] << 24) >> 24; -} - -function readUint16(data, offset) { - return (data[offset] << 8) | data[offset + 1]; -} - -function readUint32(data, offset) { - return ((data[offset] << 24) | (data[offset + 1] << 16) | - (data[offset + 2] << 8) | data[offset + 3]) >>> 0; -} - -// Lazy test the endianness of the platform -// NOTE: This will be 'true' for simulated TypedArrays -function isLittleEndian() { - var buffer8 = new Uint8Array(2); - buffer8[0] = 1; - var buffer16 = new Uint16Array(buffer8.buffer); - return (buffer16[0] === 1); -} - -Object.defineProperty(PDFJS, 'isLittleEndian', { - configurable: true, - get: function PDFJS_isLittleEndian() { - return shadow(PDFJS, 'isLittleEndian', isLittleEndian()); - } -}); - - // Lazy test if the userAgent support CanvasTypedArrays -function hasCanvasTypedArrays() { - var canvas = document.createElement('canvas'); - canvas.width = canvas.height = 1; - var ctx = canvas.getContext('2d'); - var imageData = ctx.createImageData(1, 1); - return (typeof imageData.data.buffer !== 'undefined'); -} - -Object.defineProperty(PDFJS, 'hasCanvasTypedArrays', { - configurable: true, - get: function PDFJS_hasCanvasTypedArrays() { - return shadow(PDFJS, 'hasCanvasTypedArrays', hasCanvasTypedArrays()); - } -}); - -var Uint32ArrayView = (function Uint32ArrayViewClosure() { - - function Uint32ArrayView(buffer, length) { - this.buffer = buffer; - this.byteLength = buffer.length; - this.length = length === undefined ? (this.byteLength >> 2) : length; - ensureUint32ArrayViewProps(this.length); - } - Uint32ArrayView.prototype = Object.create(null); - - var uint32ArrayViewSetters = 0; - function createUint32ArrayProp(index) { - return { - get: function () { - var buffer = this.buffer, offset = index << 2; - return (buffer[offset] | (buffer[offset + 1] << 8) | - (buffer[offset + 2] << 16) | (buffer[offset + 3] << 24)) >>> 0; - }, - set: function (value) { - var buffer = this.buffer, offset = index << 2; - buffer[offset] = value & 255; - buffer[offset + 1] = (value >> 8) & 255; - buffer[offset + 2] = (value >> 16) & 255; - buffer[offset + 3] = (value >>> 24) & 255; - } - }; - } - - function ensureUint32ArrayViewProps(length) { - while (uint32ArrayViewSetters < length) { - Object.defineProperty(Uint32ArrayView.prototype, - uint32ArrayViewSetters, - createUint32ArrayProp(uint32ArrayViewSetters)); - uint32ArrayViewSetters++; - } - } - - return Uint32ArrayView; -})(); - -exports.Uint32ArrayView = Uint32ArrayView; - -var IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0]; - -var Util = PDFJS.Util = (function UtilClosure() { - function Util() {} - - var rgbBuf = ['rgb(', 0, ',', 0, ',', 0, ')']; - - // makeCssRgb() can be called thousands of times. Using |rgbBuf| avoids - // creating many intermediate strings. - Util.makeCssRgb = function Util_makeCssRgb(r, g, b) { - rgbBuf[1] = r; - rgbBuf[3] = g; - rgbBuf[5] = b; - return rgbBuf.join(''); - }; - - // Concatenates two transformation matrices together and returns the result. - Util.transform = function Util_transform(m1, m2) { - return [ - m1[0] * m2[0] + m1[2] * m2[1], - m1[1] * m2[0] + m1[3] * m2[1], - m1[0] * m2[2] + m1[2] * m2[3], - m1[1] * m2[2] + m1[3] * m2[3], - m1[0] * m2[4] + m1[2] * m2[5] + m1[4], - m1[1] * m2[4] + m1[3] * m2[5] + m1[5] - ]; - }; - - // For 2d affine transforms - Util.applyTransform = function Util_applyTransform(p, m) { - var xt = p[0] * m[0] + p[1] * m[2] + m[4]; - var yt = p[0] * m[1] + p[1] * m[3] + m[5]; - return [xt, yt]; - }; - - Util.applyInverseTransform = function Util_applyInverseTransform(p, m) { - var d = m[0] * m[3] - m[1] * m[2]; - var xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d; - var yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d; - return [xt, yt]; - }; - - // Applies the transform to the rectangle and finds the minimum axially - // aligned bounding box. - Util.getAxialAlignedBoundingBox = - function Util_getAxialAlignedBoundingBox(r, m) { - - var p1 = Util.applyTransform(r, m); - var p2 = Util.applyTransform(r.slice(2, 4), m); - var p3 = Util.applyTransform([r[0], r[3]], m); - var p4 = Util.applyTransform([r[2], r[1]], m); - return [ - Math.min(p1[0], p2[0], p3[0], p4[0]), - Math.min(p1[1], p2[1], p3[1], p4[1]), - Math.max(p1[0], p2[0], p3[0], p4[0]), - Math.max(p1[1], p2[1], p3[1], p4[1]) - ]; - }; - - Util.inverseTransform = function Util_inverseTransform(m) { - var d = m[0] * m[3] - m[1] * m[2]; - return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, - (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d]; - }; - - // Apply a generic 3d matrix M on a 3-vector v: - // | a b c | | X | - // | d e f | x | Y | - // | g h i | | Z | - // M is assumed to be serialized as [a,b,c,d,e,f,g,h,i], - // with v as [X,Y,Z] - Util.apply3dTransform = function Util_apply3dTransform(m, v) { - return [ - m[0] * v[0] + m[1] * v[1] + m[2] * v[2], - m[3] * v[0] + m[4] * v[1] + m[5] * v[2], - m[6] * v[0] + m[7] * v[1] + m[8] * v[2] - ]; - }; - - // This calculation uses Singular Value Decomposition. - // The SVD can be represented with formula A = USV. We are interested in the - // matrix S here because it represents the scale values. - Util.singularValueDecompose2dScale = - function Util_singularValueDecompose2dScale(m) { - - var transpose = [m[0], m[2], m[1], m[3]]; - - // Multiply matrix m with its transpose. - var a = m[0] * transpose[0] + m[1] * transpose[2]; - var b = m[0] * transpose[1] + m[1] * transpose[3]; - var c = m[2] * transpose[0] + m[3] * transpose[2]; - var d = m[2] * transpose[1] + m[3] * transpose[3]; - - // Solve the second degree polynomial to get roots. - var first = (a + d) / 2; - var second = Math.sqrt((a + d) * (a + d) - 4 * (a * d - c * b)) / 2; - var sx = first + second || 1; - var sy = first - second || 1; - - // Scale values are the square roots of the eigenvalues. - return [Math.sqrt(sx), Math.sqrt(sy)]; - }; - - // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2) - // For coordinate systems whose origin lies in the bottom-left, this - // means normalization to (BL,TR) ordering. For systems with origin in the - // top-left, this means (TL,BR) ordering. - Util.normalizeRect = function Util_normalizeRect(rect) { - var r = rect.slice(0); // clone rect - if (rect[0] > rect[2]) { - r[0] = rect[2]; - r[2] = rect[0]; - } - if (rect[1] > rect[3]) { - r[1] = rect[3]; - r[3] = rect[1]; - } - return r; - }; - - // Returns a rectangle [x1, y1, x2, y2] corresponding to the - // intersection of rect1 and rect2. If no intersection, returns 'false' - // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2] - Util.intersect = function Util_intersect(rect1, rect2) { - function compare(a, b) { - return a - b; - } - - // Order points along the axes - var orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare), - orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare), - result = []; - - rect1 = Util.normalizeRect(rect1); - rect2 = Util.normalizeRect(rect2); - - // X: first and second points belong to different rectangles? - if ((orderedX[0] === rect1[0] && orderedX[1] === rect2[0]) || - (orderedX[0] === rect2[0] && orderedX[1] === rect1[0])) { - // Intersection must be between second and third points - result[0] = orderedX[1]; - result[2] = orderedX[2]; - } else { - return false; - } - - // Y: first and second points belong to different rectangles? - if ((orderedY[0] === rect1[1] && orderedY[1] === rect2[1]) || - (orderedY[0] === rect2[1] && orderedY[1] === rect1[1])) { - // Intersection must be between second and third points - result[1] = orderedY[1]; - result[3] = orderedY[2]; - } else { - return false; - } - - return result; - }; - - Util.sign = function Util_sign(num) { - return num < 0 ? -1 : 1; - }; - - var ROMAN_NUMBER_MAP = [ - '', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM', - '', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC', - '', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX' - ]; - /** - * Converts positive integers to (upper case) Roman numerals. - * @param {integer} number - The number that should be converted. - * @param {boolean} lowerCase - Indicates if the result should be converted - * to lower case letters. The default is false. - * @return {string} The resulting Roman number. - */ - Util.toRoman = function Util_toRoman(number, lowerCase) { - assert(isInt(number) && number > 0, - 'The number should be a positive integer.'); - var pos, romanBuf = []; - // Thousands - while (number >= 1000) { - number -= 1000; - romanBuf.push('M'); - } - // Hundreds - pos = (number / 100) | 0; - number %= 100; - romanBuf.push(ROMAN_NUMBER_MAP[pos]); - // Tens - pos = (number / 10) | 0; - number %= 10; - romanBuf.push(ROMAN_NUMBER_MAP[10 + pos]); - // Ones - romanBuf.push(ROMAN_NUMBER_MAP[20 + number]); - - var romanStr = romanBuf.join(''); - return (lowerCase ? romanStr.toLowerCase() : romanStr); - }; - - Util.appendToArray = function Util_appendToArray(arr1, arr2) { - Array.prototype.push.apply(arr1, arr2); - }; - - Util.prependToArray = function Util_prependToArray(arr1, arr2) { - Array.prototype.unshift.apply(arr1, arr2); - }; - - Util.extendObj = function extendObj(obj1, obj2) { - for (var key in obj2) { - obj1[key] = obj2[key]; - } - }; - - Util.getInheritableProperty = function Util_getInheritableProperty(dict, - name) { - while (dict && !dict.has(name)) { - dict = dict.get('Parent'); - } - if (!dict) { - return null; - } - return dict.get(name); - }; - - Util.inherit = function Util_inherit(sub, base, prototype) { - sub.prototype = Object.create(base.prototype); - sub.prototype.constructor = sub; - for (var prop in prototype) { - sub.prototype[prop] = prototype[prop]; - } - }; - - Util.loadScript = function Util_loadScript(src, callback) { - var script = document.createElement('script'); - var loaded = false; - script.setAttribute('src', src); - if (callback) { - script.onload = function() { - if (!loaded) { - callback(); - } - loaded = true; - }; - } - document.getElementsByTagName('head')[0].appendChild(script); - }; - - return Util; -})(); - -/** - * PDF page viewport created based on scale, rotation and offset. - * @class - * @alias PDFJS.PageViewport - */ -var PageViewport = PDFJS.PageViewport = (function PageViewportClosure() { - /** - * @constructor - * @private - * @param viewBox {Array} xMin, yMin, xMax and yMax coordinates. - * @param scale {number} scale of the viewport. - * @param rotation {number} rotations of the viewport in degrees. - * @param offsetX {number} offset X - * @param offsetY {number} offset Y - * @param dontFlip {boolean} if true, axis Y will not be flipped. - */ - function PageViewport(viewBox, scale, rotation, offsetX, offsetY, dontFlip) { - this.viewBox = viewBox; - this.scale = scale; - this.rotation = rotation; - this.offsetX = offsetX; - this.offsetY = offsetY; - - // creating transform to convert pdf coordinate system to the normal - // canvas like coordinates taking in account scale and rotation - var centerX = (viewBox[2] + viewBox[0]) / 2; - var centerY = (viewBox[3] + viewBox[1]) / 2; - var rotateA, rotateB, rotateC, rotateD; - rotation = rotation % 360; - rotation = rotation < 0 ? rotation + 360 : rotation; - switch (rotation) { - case 180: - rotateA = -1; rotateB = 0; rotateC = 0; rotateD = 1; - break; - case 90: - rotateA = 0; rotateB = 1; rotateC = 1; rotateD = 0; - break; - case 270: - rotateA = 0; rotateB = -1; rotateC = -1; rotateD = 0; - break; - //case 0: - default: - rotateA = 1; rotateB = 0; rotateC = 0; rotateD = -1; - break; - } - - if (dontFlip) { - rotateC = -rotateC; rotateD = -rotateD; - } - - var offsetCanvasX, offsetCanvasY; - var width, height; - if (rotateA === 0) { - offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX; - offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY; - width = Math.abs(viewBox[3] - viewBox[1]) * scale; - height = Math.abs(viewBox[2] - viewBox[0]) * scale; - } else { - offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX; - offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY; - width = Math.abs(viewBox[2] - viewBox[0]) * scale; - height = Math.abs(viewBox[3] - viewBox[1]) * scale; - } - // creating transform for the following operations: - // translate(-centerX, -centerY), rotate and flip vertically, - // scale, and translate(offsetCanvasX, offsetCanvasY) - this.transform = [ - rotateA * scale, - rotateB * scale, - rotateC * scale, - rotateD * scale, - offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY, - offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY - ]; - - this.width = width; - this.height = height; - this.fontScale = scale; - } - PageViewport.prototype = /** @lends PDFJS.PageViewport.prototype */ { - /** - * Clones viewport with additional properties. - * @param args {Object} (optional) If specified, may contain the 'scale' or - * 'rotation' properties to override the corresponding properties in - * the cloned viewport. - * @returns {PDFJS.PageViewport} Cloned viewport. - */ - clone: function PageViewPort_clone(args) { - args = args || {}; - var scale = 'scale' in args ? args.scale : this.scale; - var rotation = 'rotation' in args ? args.rotation : this.rotation; - return new PageViewport(this.viewBox.slice(), scale, rotation, - this.offsetX, this.offsetY, args.dontFlip); - }, - /** - * Converts PDF point to the viewport coordinates. For examples, useful for - * converting PDF location into canvas pixel coordinates. - * @param x {number} X coordinate. - * @param y {number} Y coordinate. - * @returns {Object} Object that contains 'x' and 'y' properties of the - * point in the viewport coordinate space. - * @see {@link convertToPdfPoint} - * @see {@link convertToViewportRectangle} - */ - convertToViewportPoint: function PageViewport_convertToViewportPoint(x, y) { - return Util.applyTransform([x, y], this.transform); - }, - /** - * Converts PDF rectangle to the viewport coordinates. - * @param rect {Array} xMin, yMin, xMax and yMax coordinates. - * @returns {Array} Contains corresponding coordinates of the rectangle - * in the viewport coordinate space. - * @see {@link convertToViewportPoint} - */ - convertToViewportRectangle: - function PageViewport_convertToViewportRectangle(rect) { - var tl = Util.applyTransform([rect[0], rect[1]], this.transform); - var br = Util.applyTransform([rect[2], rect[3]], this.transform); - return [tl[0], tl[1], br[0], br[1]]; - }, - /** - * Converts viewport coordinates to the PDF location. For examples, useful - * for converting canvas pixel location into PDF one. - * @param x {number} X coordinate. - * @param y {number} Y coordinate. - * @returns {Object} Object that contains 'x' and 'y' properties of the - * point in the PDF coordinate space. - * @see {@link convertToViewportPoint} - */ - convertToPdfPoint: function PageViewport_convertToPdfPoint(x, y) { - return Util.applyInverseTransform([x, y], this.transform); - } - }; - return PageViewport; -})(); - -var PDFStringTranslateTable = [ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0x2D8, 0x2C7, 0x2C6, 0x2D9, 0x2DD, 0x2DB, 0x2DA, 0x2DC, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, - 0x2013, 0x192, 0x2044, 0x2039, 0x203A, 0x2212, 0x2030, 0x201E, 0x201C, - 0x201D, 0x2018, 0x2019, 0x201A, 0x2122, 0xFB01, 0xFB02, 0x141, 0x152, 0x160, - 0x178, 0x17D, 0x131, 0x142, 0x153, 0x161, 0x17E, 0, 0x20AC -]; - -function stringToPDFString(str) { - var i, n = str.length, strBuf = []; - if (str[0] === '\xFE' && str[1] === '\xFF') { - // UTF16BE BOM - for (i = 2; i < n; i += 2) { - strBuf.push(String.fromCharCode( - (str.charCodeAt(i) << 8) | str.charCodeAt(i + 1))); - } - } else { - for (i = 0; i < n; ++i) { - var code = PDFStringTranslateTable[str.charCodeAt(i)]; - strBuf.push(code ? String.fromCharCode(code) : str.charAt(i)); - } - } - return strBuf.join(''); -} - -function stringToUTF8String(str) { - return decodeURIComponent(escape(str)); -} - -function utf8StringToString(str) { - return unescape(encodeURIComponent(str)); -} - -function isEmptyObj(obj) { - for (var key in obj) { - return false; - } - return true; -} - -function isBool(v) { - return typeof v === 'boolean'; -} - -function isInt(v) { - return typeof v === 'number' && ((v | 0) === v); -} - -function isNum(v) { - return typeof v === 'number'; -} - -function isString(v) { - return typeof v === 'string'; -} - -function isArray(v) { - return v instanceof Array; -} - -function isArrayBuffer(v) { - return typeof v === 'object' && v !== null && v.byteLength !== undefined; -} - -/** - * Promise Capability object. - * - * @typedef {Object} PromiseCapability - * @property {Promise} promise - A promise object. - * @property {function} resolve - Fullfills the promise. - * @property {function} reject - Rejects the promise. - */ - -/** - * Creates a promise capability object. - * @alias PDFJS.createPromiseCapability - * - * @return {PromiseCapability} A capability object contains: - * - a Promise, resolve and reject methods. - */ -function createPromiseCapability() { - var capability = {}; - capability.promise = new Promise(function (resolve, reject) { - capability.resolve = resolve; - capability.reject = reject; - }); - return capability; -} - -PDFJS.createPromiseCapability = createPromiseCapability; - -/** - * Polyfill for Promises: - * The following promise implementation tries to generally implement the - * Promise/A+ spec. Some notable differences from other promise libaries are: - * - There currently isn't a seperate deferred and promise object. - * - Unhandled rejections eventually show an error if they aren't handled. - * - * Based off of the work in: - * https://bugzilla.mozilla.org/show_bug.cgi?id=810490 - */ -(function PromiseClosure() { - if (globalScope.Promise) { - // Promises existing in the DOM/Worker, checking presence of all/resolve - if (typeof globalScope.Promise.all !== 'function') { - globalScope.Promise.all = function (iterable) { - var count = 0, results = [], resolve, reject; - var promise = new globalScope.Promise(function (resolve_, reject_) { - resolve = resolve_; - reject = reject_; - }); - iterable.forEach(function (p, i) { - count++; - p.then(function (result) { - results[i] = result; - count--; - if (count === 0) { - resolve(results); - } - }, reject); - }); - if (count === 0) { - resolve(results); - } - return promise; - }; - } - if (typeof globalScope.Promise.resolve !== 'function') { - globalScope.Promise.resolve = function (value) { - return new globalScope.Promise(function (resolve) { resolve(value); }); - }; - } - if (typeof globalScope.Promise.reject !== 'function') { - globalScope.Promise.reject = function (reason) { - return new globalScope.Promise(function (resolve, reject) { - reject(reason); - }); - }; - } - if (typeof globalScope.Promise.prototype.catch !== 'function') { - globalScope.Promise.prototype.catch = function (onReject) { - return globalScope.Promise.prototype.then(undefined, onReject); - }; - } - return; - } - var STATUS_PENDING = 0; - var STATUS_RESOLVED = 1; - var STATUS_REJECTED = 2; - - // In an attempt to avoid silent exceptions, unhandled rejections are - // tracked and if they aren't handled in a certain amount of time an - // error is logged. - var REJECTION_TIMEOUT = 500; - - var HandlerManager = { - handlers: [], - running: false, - unhandledRejections: [], - pendingRejectionCheck: false, - - scheduleHandlers: function scheduleHandlers(promise) { - if (promise._status === STATUS_PENDING) { - return; - } - - this.handlers = this.handlers.concat(promise._handlers); - promise._handlers = []; - - if (this.running) { - return; - } - this.running = true; - - setTimeout(this.runHandlers.bind(this), 0); - }, - - runHandlers: function runHandlers() { - var RUN_TIMEOUT = 1; // ms - var timeoutAt = Date.now() + RUN_TIMEOUT; - while (this.handlers.length > 0) { - var handler = this.handlers.shift(); - - var nextStatus = handler.thisPromise._status; - var nextValue = handler.thisPromise._value; - - try { - if (nextStatus === STATUS_RESOLVED) { - if (typeof handler.onResolve === 'function') { - nextValue = handler.onResolve(nextValue); - } - } else if (typeof handler.onReject === 'function') { - nextValue = handler.onReject(nextValue); - nextStatus = STATUS_RESOLVED; - - if (handler.thisPromise._unhandledRejection) { - this.removeUnhandeledRejection(handler.thisPromise); - } - } - } catch (ex) { - nextStatus = STATUS_REJECTED; - nextValue = ex; - } - - handler.nextPromise._updateStatus(nextStatus, nextValue); - if (Date.now() >= timeoutAt) { - break; - } - } - - if (this.handlers.length > 0) { - setTimeout(this.runHandlers.bind(this), 0); - return; - } - - this.running = false; - }, - - addUnhandledRejection: function addUnhandledRejection(promise) { - this.unhandledRejections.push({ - promise: promise, - time: Date.now() - }); - this.scheduleRejectionCheck(); - }, - - removeUnhandeledRejection: function removeUnhandeledRejection(promise) { - promise._unhandledRejection = false; - for (var i = 0; i < this.unhandledRejections.length; i++) { - if (this.unhandledRejections[i].promise === promise) { - this.unhandledRejections.splice(i); - i--; - } - } - }, - - scheduleRejectionCheck: function scheduleRejectionCheck() { - if (this.pendingRejectionCheck) { - return; - } - this.pendingRejectionCheck = true; - setTimeout(function rejectionCheck() { - this.pendingRejectionCheck = false; - var now = Date.now(); - for (var i = 0; i < this.unhandledRejections.length; i++) { - if (now - this.unhandledRejections[i].time > REJECTION_TIMEOUT) { - var unhandled = this.unhandledRejections[i].promise._value; - var msg = 'Unhandled rejection: ' + unhandled; - if (unhandled.stack) { - msg += '\n' + unhandled.stack; - } - warn(msg); - this.unhandledRejections.splice(i); - i--; - } - } - if (this.unhandledRejections.length) { - this.scheduleRejectionCheck(); - } - }.bind(this), REJECTION_TIMEOUT); - } - }; - - function Promise(resolver) { - this._status = STATUS_PENDING; - this._handlers = []; - try { - resolver.call(this, this._resolve.bind(this), this._reject.bind(this)); - } catch (e) { - this._reject(e); - } - } - /** - * Builds a promise that is resolved when all the passed in promises are - * resolved. - * @param {array} array of data and/or promises to wait for. - * @return {Promise} New dependant promise. - */ - Promise.all = function Promise_all(promises) { - var resolveAll, rejectAll; - var deferred = new Promise(function (resolve, reject) { - resolveAll = resolve; - rejectAll = reject; - }); - var unresolved = promises.length; - var results = []; - if (unresolved === 0) { - resolveAll(results); - return deferred; - } - function reject(reason) { - if (deferred._status === STATUS_REJECTED) { - return; - } - results = []; - rejectAll(reason); - } - for (var i = 0, ii = promises.length; i < ii; ++i) { - var promise = promises[i]; - var resolve = (function(i) { - return function(value) { - if (deferred._status === STATUS_REJECTED) { - return; - } - results[i] = value; - unresolved--; - if (unresolved === 0) { - resolveAll(results); - } - }; - })(i); - if (Promise.isPromise(promise)) { - promise.then(resolve, reject); - } else { - resolve(promise); - } - } - return deferred; - }; - - /** - * Checks if the value is likely a promise (has a 'then' function). - * @return {boolean} true if value is thenable - */ - Promise.isPromise = function Promise_isPromise(value) { - return value && typeof value.then === 'function'; - }; - - /** - * Creates resolved promise - * @param value resolve value - * @returns {Promise} - */ - Promise.resolve = function Promise_resolve(value) { - return new Promise(function (resolve) { resolve(value); }); - }; - - /** - * Creates rejected promise - * @param reason rejection value - * @returns {Promise} - */ - Promise.reject = function Promise_reject(reason) { - return new Promise(function (resolve, reject) { reject(reason); }); - }; - - Promise.prototype = { - _status: null, - _value: null, - _handlers: null, - _unhandledRejection: null, - - _updateStatus: function Promise__updateStatus(status, value) { - if (this._status === STATUS_RESOLVED || - this._status === STATUS_REJECTED) { - return; - } - - if (status === STATUS_RESOLVED && - Promise.isPromise(value)) { - value.then(this._updateStatus.bind(this, STATUS_RESOLVED), - this._updateStatus.bind(this, STATUS_REJECTED)); - return; - } - - this._status = status; - this._value = value; - - if (status === STATUS_REJECTED && this._handlers.length === 0) { - this._unhandledRejection = true; - HandlerManager.addUnhandledRejection(this); - } - - HandlerManager.scheduleHandlers(this); - }, - - _resolve: function Promise_resolve(value) { - this._updateStatus(STATUS_RESOLVED, value); - }, - - _reject: function Promise_reject(reason) { - this._updateStatus(STATUS_REJECTED, reason); - }, - - then: function Promise_then(onResolve, onReject) { - var nextPromise = new Promise(function (resolve, reject) { - this.resolve = resolve; - this.reject = reject; - }); - this._handlers.push({ - thisPromise: this, - onResolve: onResolve, - onReject: onReject, - nextPromise: nextPromise - }); - HandlerManager.scheduleHandlers(this); - return nextPromise; - }, - - catch: function Promise_catch(onReject) { - return this.then(undefined, onReject); - } - }; - - globalScope.Promise = Promise; -})(); - -var StatTimer = (function StatTimerClosure() { - function rpad(str, pad, length) { - while (str.length < length) { - str += pad; - } - return str; - } - function StatTimer() { - this.started = {}; - this.times = []; - this.enabled = true; - } - StatTimer.prototype = { - time: function StatTimer_time(name) { - if (!this.enabled) { - return; - } - if (name in this.started) { - warn('Timer is already running for ' + name); - } - this.started[name] = Date.now(); - }, - timeEnd: function StatTimer_timeEnd(name) { - if (!this.enabled) { - return; - } - if (!(name in this.started)) { - warn('Timer has not been started for ' + name); - } - this.times.push({ - 'name': name, - 'start': this.started[name], - 'end': Date.now() - }); - // Remove timer from started so it can be called again. - delete this.started[name]; - }, - toString: function StatTimer_toString() { - var i, ii; - var times = this.times; - var out = ''; - // Find the longest name for padding purposes. - var longest = 0; - for (i = 0, ii = times.length; i < ii; ++i) { - var name = times[i]['name']; - if (name.length > longest) { - longest = name.length; - } - } - for (i = 0, ii = times.length; i < ii; ++i) { - var span = times[i]; - var duration = span.end - span.start; - out += rpad(span['name'], ' ', longest) + ' ' + duration + 'ms\n'; - } - return out; - } - }; - return StatTimer; -})(); - -PDFJS.createBlob = function createBlob(data, contentType) { - if (typeof Blob !== 'undefined') { - return new Blob([data], { type: contentType }); - } - // Blob builder is deprecated in FF14 and removed in FF18. - var bb = new MozBlobBuilder(); - bb.append(data); - return bb.getBlob(contentType); -}; - -PDFJS.createObjectURL = (function createObjectURLClosure() { - // Blob/createObjectURL is not available, falling back to data schema. - var digits = - 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; - - return function createObjectURL(data, contentType) { - if (!PDFJS.disableCreateObjectURL && - typeof URL !== 'undefined' && URL.createObjectURL) { - var blob = PDFJS.createBlob(data, contentType); - return URL.createObjectURL(blob); - } - - var buffer = 'data:' + contentType + ';base64,'; - for (var i = 0, ii = data.length; i < ii; i += 3) { - var b1 = data[i] & 0xFF; - var b2 = data[i + 1] & 0xFF; - var b3 = data[i + 2] & 0xFF; - var d1 = b1 >> 2, d2 = ((b1 & 3) << 4) | (b2 >> 4); - var d3 = i + 1 < ii ? ((b2 & 0xF) << 2) | (b3 >> 6) : 64; - var d4 = i + 2 < ii ? (b3 & 0x3F) : 64; - buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4]; - } - return buffer; - }; -})(); - -function MessageHandler(sourceName, targetName, comObj) { - this.sourceName = sourceName; - this.targetName = targetName; - this.comObj = comObj; - this.callbackIndex = 1; - this.postMessageTransfers = true; - var callbacksCapabilities = this.callbacksCapabilities = {}; - var ah = this.actionHandler = {}; - - this._onComObjOnMessage = function messageHandlerComObjOnMessage(event) { - var data = event.data; - if (data.targetName !== this.sourceName) { - return; - } - if (data.isReply) { - var callbackId = data.callbackId; - if (data.callbackId in callbacksCapabilities) { - var callback = callbacksCapabilities[callbackId]; - delete callbacksCapabilities[callbackId]; - if ('error' in data) { - callback.reject(data.error); - } else { - callback.resolve(data.data); - } - } else { - error('Cannot resolve callback ' + callbackId); - } - } else if (data.action in ah) { - var action = ah[data.action]; - if (data.callbackId) { - var sourceName = this.sourceName; - var targetName = data.sourceName; - Promise.resolve().then(function () { - return action[0].call(action[1], data.data); - }).then(function (result) { - comObj.postMessage({ - sourceName: sourceName, - targetName: targetName, - isReply: true, - callbackId: data.callbackId, - data: result - }); - }, function (reason) { - if (reason instanceof Error) { - // Serialize error to avoid "DataCloneError" - reason = reason + ''; - } - comObj.postMessage({ - sourceName: sourceName, - targetName: targetName, - isReply: true, - callbackId: data.callbackId, - error: reason - }); - }); - } else { - action[0].call(action[1], data.data); - } - } else { - error('Unknown action from worker: ' + data.action); - } - }.bind(this); - comObj.addEventListener('message', this._onComObjOnMessage); -} - -MessageHandler.prototype = { - on: function messageHandlerOn(actionName, handler, scope) { - var ah = this.actionHandler; - if (ah[actionName]) { - error('There is already an actionName called "' + actionName + '"'); - } - ah[actionName] = [handler, scope]; - }, - /** - * Sends a message to the comObj to invoke the action with the supplied data. - * @param {String} actionName Action to call. - * @param {JSON} data JSON data to send. - * @param {Array} [transfers] Optional list of transfers/ArrayBuffers - */ - send: function messageHandlerSend(actionName, data, transfers) { - var message = { - sourceName: this.sourceName, - targetName: this.targetName, - action: actionName, - data: data - }; - this.postMessage(message, transfers); - }, - /** - * Sends a message to the comObj to invoke the action with the supplied data. - * Expects that other side will callback with the response. - * @param {String} actionName Action to call. - * @param {JSON} data JSON data to send. - * @param {Array} [transfers] Optional list of transfers/ArrayBuffers. - * @returns {Promise} Promise to be resolved with response data. - */ - sendWithPromise: - function messageHandlerSendWithPromise(actionName, data, transfers) { - var callbackId = this.callbackIndex++; - var message = { - sourceName: this.sourceName, - targetName: this.targetName, - action: actionName, - data: data, - callbackId: callbackId - }; - var capability = createPromiseCapability(); - this.callbacksCapabilities[callbackId] = capability; - try { - this.postMessage(message, transfers); - } catch (e) { - capability.reject(e); - } - return capability.promise; - }, - /** - * Sends raw message to the comObj. - * @private - * @param message {Object} Raw message. - * @param transfers List of transfers/ArrayBuffers, or undefined. - */ - postMessage: function (message, transfers) { - if (transfers && this.postMessageTransfers) { - this.comObj.postMessage(message, transfers); - } else { - this.comObj.postMessage(message); - } - }, - - destroy: function () { - this.comObj.removeEventListener('message', this._onComObjOnMessage); - } -}; - -function loadJpegStream(id, imageUrl, objs) { - var img = new Image(); - img.onload = (function loadJpegStream_onloadClosure() { - objs.resolve(id, img); - }); - img.onerror = (function loadJpegStream_onerrorClosure() { - objs.resolve(id, null); - warn('Error during JPEG image loading'); - }); - img.src = imageUrl; -} - - // Polyfill from https://github.com/Polymer/URL -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ */ -(function checkURLConstructor(scope) { - /* jshint ignore:start */ - - // feature detect for URL constructor - var hasWorkingUrl = false; - try { - if (typeof URL === 'function' && - typeof URL.prototype === 'object' && - ('origin' in URL.prototype)) { - var u = new URL('b', 'http://a'); - u.pathname = 'c%20d'; - hasWorkingUrl = u.href === 'http://a/c%20d'; - } - } catch(e) { } - - if (hasWorkingUrl) - return; - - var relative = Object.create(null); - relative['ftp'] = 21; - relative['file'] = 0; - relative['gopher'] = 70; - relative['http'] = 80; - relative['https'] = 443; - relative['ws'] = 80; - relative['wss'] = 443; - - var relativePathDotMapping = Object.create(null); - relativePathDotMapping['%2e'] = '.'; - relativePathDotMapping['.%2e'] = '..'; - relativePathDotMapping['%2e.'] = '..'; - relativePathDotMapping['%2e%2e'] = '..'; - - function isRelativeScheme(scheme) { - return relative[scheme] !== undefined; - } - - function invalid() { - clear.call(this); - this._isInvalid = true; - } - - function IDNAToASCII(h) { - if ('' == h) { - invalid.call(this) - } - // XXX - return h.toLowerCase() - } - - function percentEscape(c) { - var unicode = c.charCodeAt(0); - if (unicode > 0x20 && - unicode < 0x7F && - // " # < > ? ` - [0x22, 0x23, 0x3C, 0x3E, 0x3F, 0x60].indexOf(unicode) == -1 - ) { - return c; - } - return encodeURIComponent(c); - } - - function percentEscapeQuery(c) { - // XXX This actually needs to encode c using encoding and then - // convert the bytes one-by-one. - - var unicode = c.charCodeAt(0); - if (unicode > 0x20 && - unicode < 0x7F && - // " # < > ` (do not escape '?') - [0x22, 0x23, 0x3C, 0x3E, 0x60].indexOf(unicode) == -1 - ) { - return c; - } - return encodeURIComponent(c); - } - - var EOF = undefined, - ALPHA = /[a-zA-Z]/, - ALPHANUMERIC = /[a-zA-Z0-9\+\-\.]/; - - function parse(input, stateOverride, base) { - function err(message) { - errors.push(message) - } - - var state = stateOverride || 'scheme start', - cursor = 0, - buffer = '', - seenAt = false, - seenBracket = false, - errors = []; - - loop: while ((input[cursor - 1] != EOF || cursor == 0) && !this._isInvalid) { - var c = input[cursor]; - switch (state) { - case 'scheme start': - if (c && ALPHA.test(c)) { - buffer += c.toLowerCase(); // ASCII-safe - state = 'scheme'; - } else if (!stateOverride) { - buffer = ''; - state = 'no scheme'; - continue; - } else { - err('Invalid scheme.'); - break loop; - } - break; - - case 'scheme': - if (c && ALPHANUMERIC.test(c)) { - buffer += c.toLowerCase(); // ASCII-safe - } else if (':' == c) { - this._scheme = buffer; - buffer = ''; - if (stateOverride) { - break loop; - } - if (isRelativeScheme(this._scheme)) { - this._isRelative = true; - } - if ('file' == this._scheme) { - state = 'relative'; - } else if (this._isRelative && base && base._scheme == this._scheme) { - state = 'relative or authority'; - } else if (this._isRelative) { - state = 'authority first slash'; - } else { - state = 'scheme data'; - } - } else if (!stateOverride) { - buffer = ''; - cursor = 0; - state = 'no scheme'; - continue; - } else if (EOF == c) { - break loop; - } else { - err('Code point not allowed in scheme: ' + c) - break loop; - } - break; - - case 'scheme data': - if ('?' == c) { - this._query = '?'; - state = 'query'; - } else if ('#' == c) { - this._fragment = '#'; - state = 'fragment'; - } else { - // XXX error handling - if (EOF != c && '\t' != c && '\n' != c && '\r' != c) { - this._schemeData += percentEscape(c); - } - } - break; - - case 'no scheme': - if (!base || !(isRelativeScheme(base._scheme))) { - err('Missing scheme.'); - invalid.call(this); - } else { - state = 'relative'; - continue; - } - break; - - case 'relative or authority': - if ('/' == c && '/' == input[cursor+1]) { - state = 'authority ignore slashes'; - } else { - err('Expected /, got: ' + c); - state = 'relative'; - continue - } - break; - - case 'relative': - this._isRelative = true; - if ('file' != this._scheme) - this._scheme = base._scheme; - if (EOF == c) { - this._host = base._host; - this._port = base._port; - this._path = base._path.slice(); - this._query = base._query; - this._username = base._username; - this._password = base._password; - break loop; - } else if ('/' == c || '\\' == c) { - if ('\\' == c) - err('\\ is an invalid code point.'); - state = 'relative slash'; - } else if ('?' == c) { - this._host = base._host; - this._port = base._port; - this._path = base._path.slice(); - this._query = '?'; - this._username = base._username; - this._password = base._password; - state = 'query'; - } else if ('#' == c) { - this._host = base._host; - this._port = base._port; - this._path = base._path.slice(); - this._query = base._query; - this._fragment = '#'; - this._username = base._username; - this._password = base._password; - state = 'fragment'; - } else { - var nextC = input[cursor+1] - var nextNextC = input[cursor+2] - if ( - 'file' != this._scheme || !ALPHA.test(c) || - (nextC != ':' && nextC != '|') || - (EOF != nextNextC && '/' != nextNextC && '\\' != nextNextC && '?' != nextNextC && '#' != nextNextC)) { - this._host = base._host; - this._port = base._port; - this._username = base._username; - this._password = base._password; - this._path = base._path.slice(); - this._path.pop(); - } - state = 'relative path'; - continue; - } - break; - - case 'relative slash': - if ('/' == c || '\\' == c) { - if ('\\' == c) { - err('\\ is an invalid code point.'); - } - if ('file' == this._scheme) { - state = 'file host'; - } else { - state = 'authority ignore slashes'; - } - } else { - if ('file' != this._scheme) { - this._host = base._host; - this._port = base._port; - this._username = base._username; - this._password = base._password; - } - state = 'relative path'; - continue; - } - break; - - case 'authority first slash': - if ('/' == c) { - state = 'authority second slash'; - } else { - err("Expected '/', got: " + c); - state = 'authority ignore slashes'; - continue; - } - break; - - case 'authority second slash': - state = 'authority ignore slashes'; - if ('/' != c) { - err("Expected '/', got: " + c); - continue; - } - break; - - case 'authority ignore slashes': - if ('/' != c && '\\' != c) { - state = 'authority'; - continue; - } else { - err('Expected authority, got: ' + c); - } - break; - - case 'authority': - if ('@' == c) { - if (seenAt) { - err('@ already seen.'); - buffer += '%40'; - } - seenAt = true; - for (var i = 0; i < buffer.length; i++) { - var cp = buffer[i]; - if ('\t' == cp || '\n' == cp || '\r' == cp) { - err('Invalid whitespace in authority.'); - continue; - } - // XXX check URL code points - if (':' == cp && null === this._password) { - this._password = ''; - continue; - } - var tempC = percentEscape(cp); - (null !== this._password) ? this._password += tempC : this._username += tempC; - } - buffer = ''; - } else if (EOF == c || '/' == c || '\\' == c || '?' == c || '#' == c) { - cursor -= buffer.length; - buffer = ''; - state = 'host'; - continue; - } else { - buffer += c; - } - break; - - case 'file host': - if (EOF == c || '/' == c || '\\' == c || '?' == c || '#' == c) { - if (buffer.length == 2 && ALPHA.test(buffer[0]) && (buffer[1] == ':' || buffer[1] == '|')) { - state = 'relative path'; - } else if (buffer.length == 0) { - state = 'relative path start'; - } else { - this._host = IDNAToASCII.call(this, buffer); - buffer = ''; - state = 'relative path start'; - } - continue; - } else if ('\t' == c || '\n' == c || '\r' == c) { - err('Invalid whitespace in file host.'); - } else { - buffer += c; - } - break; - - case 'host': - case 'hostname': - if (':' == c && !seenBracket) { - // XXX host parsing - this._host = IDNAToASCII.call(this, buffer); - buffer = ''; - state = 'port'; - if ('hostname' == stateOverride) { - break loop; - } - } else if (EOF == c || '/' == c || '\\' == c || '?' == c || '#' == c) { - this._host = IDNAToASCII.call(this, buffer); - buffer = ''; - state = 'relative path start'; - if (stateOverride) { - break loop; - } - continue; - } else if ('\t' != c && '\n' != c && '\r' != c) { - if ('[' == c) { - seenBracket = true; - } else if (']' == c) { - seenBracket = false; - } - buffer += c; - } else { - err('Invalid code point in host/hostname: ' + c); - } - break; - - case 'port': - if (/[0-9]/.test(c)) { - buffer += c; - } else if (EOF == c || '/' == c || '\\' == c || '?' == c || '#' == c || stateOverride) { - if ('' != buffer) { - var temp = parseInt(buffer, 10); - if (temp != relative[this._scheme]) { - this._port = temp + ''; - } - buffer = ''; - } - if (stateOverride) { - break loop; - } - state = 'relative path start'; - continue; - } else if ('\t' == c || '\n' == c || '\r' == c) { - err('Invalid code point in port: ' + c); - } else { - invalid.call(this); - } - break; - - case 'relative path start': - if ('\\' == c) - err("'\\' not allowed in path."); - state = 'relative path'; - if ('/' != c && '\\' != c) { - continue; - } - break; - - case 'relative path': - if (EOF == c || '/' == c || '\\' == c || (!stateOverride && ('?' == c || '#' == c))) { - if ('\\' == c) { - err('\\ not allowed in relative path.'); - } - var tmp; - if (tmp = relativePathDotMapping[buffer.toLowerCase()]) { - buffer = tmp; - } - if ('..' == buffer) { - this._path.pop(); - if ('/' != c && '\\' != c) { - this._path.push(''); - } - } else if ('.' == buffer && '/' != c && '\\' != c) { - this._path.push(''); - } else if ('.' != buffer) { - if ('file' == this._scheme && this._path.length == 0 && buffer.length == 2 && ALPHA.test(buffer[0]) && buffer[1] == '|') { - buffer = buffer[0] + ':'; - } - this._path.push(buffer); - } - buffer = ''; - if ('?' == c) { - this._query = '?'; - state = 'query'; - } else if ('#' == c) { - this._fragment = '#'; - state = 'fragment'; - } - } else if ('\t' != c && '\n' != c && '\r' != c) { - buffer += percentEscape(c); - } - break; - - case 'query': - if (!stateOverride && '#' == c) { - this._fragment = '#'; - state = 'fragment'; - } else if (EOF != c && '\t' != c && '\n' != c && '\r' != c) { - this._query += percentEscapeQuery(c); - } - break; - - case 'fragment': - if (EOF != c && '\t' != c && '\n' != c && '\r' != c) { - this._fragment += c; - } - break; - } - - cursor++; - } - } - - function clear() { - this._scheme = ''; - this._schemeData = ''; - this._username = ''; - this._password = null; - this._host = ''; - this._port = ''; - this._path = []; - this._query = ''; - this._fragment = ''; - this._isInvalid = false; - this._isRelative = false; - } - - // Does not process domain names or IP addresses. - // Does not handle encoding for the query parameter. - function jURL(url, base /* , encoding */) { - if (base !== undefined && !(base instanceof jURL)) - base = new jURL(String(base)); - - this._url = url; - clear.call(this); - - var input = url.replace(/^[ \t\r\n\f]+|[ \t\r\n\f]+$/g, ''); - // encoding = encoding || 'utf-8' - - parse.call(this, input, null, base); - } - - jURL.prototype = { - toString: function() { - return this.href; - }, - get href() { - if (this._isInvalid) - return this._url; - - var authority = ''; - if ('' != this._username || null != this._password) { - authority = this._username + - (null != this._password ? ':' + this._password : '') + '@'; - } - - return this.protocol + - (this._isRelative ? '//' + authority + this.host : '') + - this.pathname + this._query + this._fragment; - }, - set href(href) { - clear.call(this); - parse.call(this, href); - }, - - get protocol() { - return this._scheme + ':'; - }, - set protocol(protocol) { - if (this._isInvalid) - return; - parse.call(this, protocol + ':', 'scheme start'); - }, - - get host() { - return this._isInvalid ? '' : this._port ? - this._host + ':' + this._port : this._host; - }, - set host(host) { - if (this._isInvalid || !this._isRelative) - return; - parse.call(this, host, 'host'); - }, - - get hostname() { - return this._host; - }, - set hostname(hostname) { - if (this._isInvalid || !this._isRelative) - return; - parse.call(this, hostname, 'hostname'); - }, - - get port() { - return this._port; - }, - set port(port) { - if (this._isInvalid || !this._isRelative) - return; - parse.call(this, port, 'port'); - }, - - get pathname() { - return this._isInvalid ? '' : this._isRelative ? - '/' + this._path.join('/') : this._schemeData; - }, - set pathname(pathname) { - if (this._isInvalid || !this._isRelative) - return; - this._path = []; - parse.call(this, pathname, 'relative path start'); - }, - - get search() { - return this._isInvalid || !this._query || '?' == this._query ? - '' : this._query; - }, - set search(search) { - if (this._isInvalid || !this._isRelative) - return; - this._query = '?'; - if ('?' == search[0]) - search = search.slice(1); - parse.call(this, search, 'query'); - }, - - get hash() { - return this._isInvalid || !this._fragment || '#' == this._fragment ? - '' : this._fragment; - }, - set hash(hash) { - if (this._isInvalid) - return; - this._fragment = '#'; - if ('#' == hash[0]) - hash = hash.slice(1); - parse.call(this, hash, 'fragment'); - }, - - get origin() { - var host; - if (this._isInvalid || !this._scheme) { - return ''; - } - // javascript: Gecko returns String(""), WebKit/Blink String("null") - // Gecko throws error for "data://" - // data: Gecko returns "", Blink returns "data://", WebKit returns "null" - // Gecko returns String("") for file: mailto: - // WebKit/Blink returns String("SCHEME://") for file: mailto: - switch (this._scheme) { - case 'data': - case 'file': - case 'javascript': - case 'mailto': - return 'null'; - } - host = this.host; - if (!host) { - return ''; - } - return this._scheme + '://' + host; - } - }; - - // Copy over the static methods - var OriginalURL = scope.URL; - if (OriginalURL) { - jURL.createObjectURL = function(blob) { - // IE extension allows a second optional options argument. - // http://msdn.microsoft.com/en-us/library/ie/hh772302(v=vs.85).aspx - return OriginalURL.createObjectURL.apply(OriginalURL, arguments); - }; - jURL.revokeObjectURL = function(url) { - OriginalURL.revokeObjectURL(url); - }; - } - - scope.URL = jURL; - /* jshint ignore:end */ -})(globalScope); - -exports.FONT_IDENTITY_MATRIX = FONT_IDENTITY_MATRIX; -exports.IDENTITY_MATRIX = IDENTITY_MATRIX; -exports.OPS = OPS; -exports.UNSUPPORTED_FEATURES = UNSUPPORTED_FEATURES; -exports.AnnotationBorderStyleType = AnnotationBorderStyleType; -exports.AnnotationFlag = AnnotationFlag; -exports.AnnotationType = AnnotationType; -exports.FontType = FontType; -exports.ImageKind = ImageKind; -exports.InvalidPDFException = InvalidPDFException; -exports.LinkTarget = LinkTarget; -exports.LinkTargetStringMap = LinkTargetStringMap; -exports.MessageHandler = MessageHandler; -exports.MissingDataException = MissingDataException; -exports.MissingPDFException = MissingPDFException; -exports.NotImplementedException = NotImplementedException; -exports.PasswordException = PasswordException; -exports.PasswordResponses = PasswordResponses; -exports.StatTimer = StatTimer; -exports.StreamType = StreamType; -exports.TextRenderingMode = TextRenderingMode; -exports.UnexpectedResponseException = UnexpectedResponseException; -exports.UnknownErrorException = UnknownErrorException; -exports.Util = Util; -exports.XRefParseException = XRefParseException; -exports.assert = assert; -exports.bytesToString = bytesToString; -exports.combineUrl = combineUrl; -exports.createPromiseCapability = createPromiseCapability; -exports.deprecated = deprecated; -exports.error = error; -exports.info = info; -exports.isArray = isArray; -exports.isArrayBuffer = isArrayBuffer; -exports.isBool = isBool; -exports.isEmptyObj = isEmptyObj; -exports.isExternalLinkTargetSet = isExternalLinkTargetSet; -exports.isInt = isInt; -exports.isNum = isNum; -exports.isString = isString; -exports.isValidUrl = isValidUrl; -exports.addLinkAttributes = addLinkAttributes; -exports.loadJpegStream = loadJpegStream; -exports.log2 = log2; -exports.readInt8 = readInt8; -exports.readUint16 = readUint16; -exports.readUint32 = readUint32; -exports.removeNullCharacters = removeNullCharacters; -exports.shadow = shadow; -exports.string32 = string32; -exports.stringToBytes = stringToBytes; -exports.stringToPDFString = stringToPDFString; -exports.stringToUTF8String = stringToUTF8String; -exports.utf8StringToString = utf8StringToString; -exports.warn = warn; -})); - - -(function (root, factory) { - { - factory((root.pdfjsDisplayAnnotationLayer = {}), root.pdfjsSharedUtil, - root.pdfjsDisplayDOMUtils); - } -}(this, function (exports, sharedUtil, displayDOMUtils) { - -var AnnotationBorderStyleType = sharedUtil.AnnotationBorderStyleType; -var AnnotationType = sharedUtil.AnnotationType; -var Util = sharedUtil.Util; -var addLinkAttributes = sharedUtil.addLinkAttributes; -var warn = sharedUtil.warn; -var CustomStyle = displayDOMUtils.CustomStyle; - -/** - * @typedef {Object} AnnotationElementParameters - * @property {Object} data - * @property {HTMLDivElement} layer - * @property {PDFPage} page - * @property {PageViewport} viewport - * @property {IPDFLinkService} linkService - */ - -/** - * @class - * @alias AnnotationElementFactory - */ -function AnnotationElementFactory() {} -AnnotationElementFactory.prototype = - /** @lends AnnotationElementFactory.prototype */ { - /** - * @param {AnnotationElementParameters} parameters - * @returns {AnnotationElement} - */ - create: function AnnotationElementFactory_create(parameters) { - var subtype = parameters.data.annotationType; - - switch (subtype) { - case AnnotationType.LINK: - return new LinkAnnotationElement(parameters); - - case AnnotationType.TEXT: - return new TextAnnotationElement(parameters); - - case AnnotationType.WIDGET: - return new WidgetAnnotationElement(parameters); - - case AnnotationType.POPUP: - return new PopupAnnotationElement(parameters); - - case AnnotationType.HIGHLIGHT: - return new HighlightAnnotationElement(parameters); - - case AnnotationType.UNDERLINE: - return new UnderlineAnnotationElement(parameters); - - case AnnotationType.SQUIGGLY: - return new SquigglyAnnotationElement(parameters); - - case AnnotationType.STRIKEOUT: - return new StrikeOutAnnotationElement(parameters); - - default: - throw new Error('Unimplemented annotation type "' + subtype + '"'); - } - } -}; - -/** - * @class - * @alias AnnotationElement - */ -var AnnotationElement = (function AnnotationElementClosure() { - function AnnotationElement(parameters) { - this.data = parameters.data; - this.layer = parameters.layer; - this.page = parameters.page; - this.viewport = parameters.viewport; - this.linkService = parameters.linkService; - - this.container = this._createContainer(); - } - - AnnotationElement.prototype = /** @lends AnnotationElement.prototype */ { - /** - * Create an empty container for the annotation's HTML element. - * - * @private - * @memberof AnnotationElement - * @returns {HTMLSectionElement} - */ - _createContainer: function AnnotationElement_createContainer() { - var data = this.data, page = this.page, viewport = this.viewport; - var container = document.createElement('section'); - var width = data.rect[2] - data.rect[0]; - var height = data.rect[3] - data.rect[1]; - - container.setAttribute('data-annotation-id', data.id); - - // Do *not* modify `data.rect`, since that will corrupt the annotation - // position on subsequent calls to `_createContainer` (see issue 6804). - var rect = Util.normalizeRect([ - data.rect[0], - page.view[3] - data.rect[1] + page.view[1], - data.rect[2], - page.view[3] - data.rect[3] + page.view[1] - ]); - - CustomStyle.setProp('transform', container, - 'matrix(' + viewport.transform.join(',') + ')'); - CustomStyle.setProp('transformOrigin', container, - -rect[0] + 'px ' + -rect[1] + 'px'); - - if (data.borderStyle.width > 0) { - container.style.borderWidth = data.borderStyle.width + 'px'; - if (data.borderStyle.style !== AnnotationBorderStyleType.UNDERLINE) { - // Underline styles only have a bottom border, so we do not need - // to adjust for all borders. This yields a similar result as - // Adobe Acrobat/Reader. - width = width - 2 * data.borderStyle.width; - height = height - 2 * data.borderStyle.width; - } - - var horizontalRadius = data.borderStyle.horizontalCornerRadius; - var verticalRadius = data.borderStyle.verticalCornerRadius; - if (horizontalRadius > 0 || verticalRadius > 0) { - var radius = horizontalRadius + 'px / ' + verticalRadius + 'px'; - CustomStyle.setProp('borderRadius', container, radius); - } - - switch (data.borderStyle.style) { - case AnnotationBorderStyleType.SOLID: - container.style.borderStyle = 'solid'; - break; - - case AnnotationBorderStyleType.DASHED: - container.style.borderStyle = 'dashed'; - break; - - case AnnotationBorderStyleType.BEVELED: - warn('Unimplemented border style: beveled'); - break; - - case AnnotationBorderStyleType.INSET: - warn('Unimplemented border style: inset'); - break; - - case AnnotationBorderStyleType.UNDERLINE: - container.style.borderBottomStyle = 'solid'; - break; - - default: - break; - } - - if (data.color) { - container.style.borderColor = - Util.makeCssRgb(data.color[0] | 0, - data.color[1] | 0, - data.color[2] | 0); - } else { - // Transparent (invisible) border, so do not draw it at all. - container.style.borderWidth = 0; - } - } - - container.style.left = rect[0] + 'px'; - container.style.top = rect[1] + 'px'; - - container.style.width = width + 'px'; - container.style.height = height + 'px'; - - return container; - }, - - /** - * Render the annotation's HTML element in the empty container. - * - * @public - * @memberof AnnotationElement - */ - render: function AnnotationElement_render() { - throw new Error('Abstract method AnnotationElement.render called'); - } - }; - - return AnnotationElement; -})(); - -/** - * @class - * @alias LinkAnnotationElement - */ -var LinkAnnotationElement = (function LinkAnnotationElementClosure() { - function LinkAnnotationElement(parameters) { - AnnotationElement.call(this, parameters); - } - - Util.inherit(LinkAnnotationElement, AnnotationElement, { - /** - * Render the link annotation's HTML element in the empty container. - * - * @public - * @memberof LinkAnnotationElement - * @returns {HTMLSectionElement} - */ - render: function LinkAnnotationElement_render() { - this.container.className = 'linkAnnotation'; - - var link = document.createElement('a'); - addLinkAttributes(link, { url: this.data.url }); - - if (!this.data.url) { - if (this.data.action) { - this._bindNamedAction(link, this.data.action); - } else { - this._bindLink(link, ('dest' in this.data) ? this.data.dest : null); - } - } - - this.container.appendChild(link); - return this.container; - }, - - /** - * Bind internal links to the link element. - * - * @private - * @param {Object} link - * @param {Object} destination - * @memberof LinkAnnotationElement - */ - _bindLink: function LinkAnnotationElement_bindLink(link, destination) { - var self = this; - - link.href = this.linkService.getDestinationHash(destination); - link.onclick = function() { - if (destination) { - self.linkService.navigateTo(destination); - } - return false; - }; - if (destination) { - link.className = 'internalLink'; - } - }, - - /** - * Bind named actions to the link element. - * - * @private - * @param {Object} link - * @param {Object} action - * @memberof LinkAnnotationElement - */ - _bindNamedAction: - function LinkAnnotationElement_bindNamedAction(link, action) { - var self = this; - - link.href = this.linkService.getAnchorUrl(''); - link.onclick = function() { - self.linkService.executeNamedAction(action); - return false; - }; - link.className = 'internalLink'; - } - }); - - return LinkAnnotationElement; -})(); - -/** - * @class - * @alias TextAnnotationElement - */ -var TextAnnotationElement = (function TextAnnotationElementClosure() { - function TextAnnotationElement(parameters) { - AnnotationElement.call(this, parameters); - } - - Util.inherit(TextAnnotationElement, AnnotationElement, { - /** - * Render the text annotation's HTML element in the empty container. - * - * @public - * @memberof TextAnnotationElement - * @returns {HTMLSectionElement} - */ - render: function TextAnnotationElement_render() { - this.container.className = 'textAnnotation'; - - var image = document.createElement('img'); - image.style.height = this.container.style.height; - image.style.width = this.container.style.width; - image.src = PDFJS.imageResourcesPath + 'annotation-' + - this.data.name.toLowerCase() + '.svg'; - image.alt = '[{{type}} Annotation]'; - image.dataset.l10nId = 'text_annotation_type'; - image.dataset.l10nArgs = JSON.stringify({type: this.data.name}); - - if (!this.data.hasPopup) { - var popupElement = new PopupElement({ - container: this.container, - trigger: image, - color: this.data.color, - title: this.data.title, - contents: this.data.contents, - hideWrapper: true - }); - var popup = popupElement.render(); - - // Position the popup next to the Text annotation's container. - popup.style.left = image.style.width; - - this.container.appendChild(popup); - } - - this.container.appendChild(image); - return this.container; - } - }); - - return TextAnnotationElement; -})(); - -/** - * @class - * @alias WidgetAnnotationElement - */ -var WidgetAnnotationElement = (function WidgetAnnotationElementClosure() { - function WidgetAnnotationElement(parameters) { - AnnotationElement.call(this, parameters); - } - - Util.inherit(WidgetAnnotationElement, AnnotationElement, { - /** - * Render the widget annotation's HTML element in the empty container. - * - * @public - * @memberof WidgetAnnotationElement - * @returns {HTMLSectionElement} - */ - render: function WidgetAnnotationElement_render() { - var content = document.createElement('div'); - content.textContent = this.data.fieldValue; - var textAlignment = this.data.textAlignment; - content.style.textAlign = ['left', 'center', 'right'][textAlignment]; - content.style.verticalAlign = 'middle'; - content.style.display = 'table-cell'; - - var font = (this.data.fontRefName ? - this.page.commonObjs.getData(this.data.fontRefName) : null); - this._setTextStyle(content, font); - - this.container.appendChild(content); - return this.container; - }, - - /** - * Apply text styles to the text in the element. - * - * @private - * @param {HTMLDivElement} element - * @param {Object} font - * @memberof WidgetAnnotationElement - */ - _setTextStyle: - function WidgetAnnotationElement_setTextStyle(element, font) { - // TODO: This duplicates some of the logic in CanvasGraphics.setFont(). - var style = element.style; - style.fontSize = this.data.fontSize + 'px'; - style.direction = (this.data.fontDirection < 0 ? 'rtl': 'ltr'); - - if (!font) { - return; - } - - style.fontWeight = (font.black ? - (font.bold ? '900' : 'bold') : - (font.bold ? 'bold' : 'normal')); - style.fontStyle = (font.italic ? 'italic' : 'normal'); - - // Use a reasonable default font if the font doesn't specify a fallback. - var fontFamily = font.loadedName ? '"' + font.loadedName + '", ' : ''; - var fallbackName = font.fallbackName || 'Helvetica, sans-serif'; - style.fontFamily = fontFamily + fallbackName; - } - }); - - return WidgetAnnotationElement; -})(); - -/** - * @class - * @alias PopupAnnotationElement - */ -var PopupAnnotationElement = (function PopupAnnotationElementClosure() { - function PopupAnnotationElement(parameters) { - AnnotationElement.call(this, parameters); - } - - Util.inherit(PopupAnnotationElement, AnnotationElement, { - /** - * Render the popup annotation's HTML element in the empty container. - * - * @public - * @memberof PopupAnnotationElement - * @returns {HTMLSectionElement} - */ - render: function PopupAnnotationElement_render() { - this.container.className = 'popupAnnotation'; - - var selector = '[data-annotation-id="' + this.data.parentId + '"]'; - var parentElement = this.layer.querySelector(selector); - if (!parentElement) { - return this.container; - } - - var popup = new PopupElement({ - container: this.container, - trigger: parentElement, - color: this.data.color, - title: this.data.title, - contents: this.data.contents - }); - - // Position the popup next to the parent annotation's container. - // PDF viewers ignore a popup annotation's rectangle. - var parentLeft = parseFloat(parentElement.style.left); - var parentWidth = parseFloat(parentElement.style.width); - CustomStyle.setProp('transformOrigin', this.container, - -(parentLeft + parentWidth) + 'px -' + - parentElement.style.top); - this.container.style.left = (parentLeft + parentWidth) + 'px'; - - this.container.appendChild(popup.render()); - return this.container; - } - }); - - return PopupAnnotationElement; -})(); - -/** - * @class - * @alias PopupElement - */ -var PopupElement = (function PopupElementClosure() { - var BACKGROUND_ENLIGHT = 0.7; - - function PopupElement(parameters) { - this.container = parameters.container; - this.trigger = parameters.trigger; - this.color = parameters.color; - this.title = parameters.title; - this.contents = parameters.contents; - this.hideWrapper = parameters.hideWrapper || false; - - this.pinned = false; - } - - PopupElement.prototype = /** @lends PopupElement.prototype */ { - /** - * Render the popup's HTML element. - * - * @public - * @memberof PopupElement - * @returns {HTMLSectionElement} - */ - render: function PopupElement_render() { - var wrapper = document.createElement('div'); - wrapper.className = 'popupWrapper'; - - // For Popup annotations we hide the entire section because it contains - // only the popup. However, for Text annotations without a separate Popup - // annotation, we cannot hide the entire container as the image would - // disappear too. In that special case, hiding the wrapper suffices. - this.hideElement = (this.hideWrapper ? wrapper : this.container); - this.hideElement.setAttribute('hidden', true); - - var popup = document.createElement('div'); - popup.className = 'popup'; - - var color = this.color; - if (color) { - // Enlighten the color. - var r = BACKGROUND_ENLIGHT * (255 - color[0]) + color[0]; - var g = BACKGROUND_ENLIGHT * (255 - color[1]) + color[1]; - var b = BACKGROUND_ENLIGHT * (255 - color[2]) + color[2]; - popup.style.backgroundColor = Util.makeCssRgb(r | 0, g | 0, b | 0); - } - - var contents = this._formatContents(this.contents); - var title = document.createElement('h1'); - title.textContent = this.title; - - // Attach the event listeners to the trigger element. - this.trigger.addEventListener('click', this._toggle.bind(this)); - this.trigger.addEventListener('mouseover', this._show.bind(this, false)); - this.trigger.addEventListener('mouseout', this._hide.bind(this, false)); - popup.addEventListener('click', this._hide.bind(this, true)); - - popup.appendChild(title); - popup.appendChild(contents); - wrapper.appendChild(popup); - return wrapper; - }, - - /** - * Format the contents of the popup by adding newlines where necessary. - * - * @private - * @param {string} contents - * @memberof PopupElement - * @returns {HTMLParagraphElement} - */ - _formatContents: function PopupElement_formatContents(contents) { - var p = document.createElement('p'); - var lines = contents.split(/(?:\r\n?|\n)/); - for (var i = 0, ii = lines.length; i < ii; ++i) { - var line = lines[i]; - p.appendChild(document.createTextNode(line)); - if (i < (ii - 1)) { - p.appendChild(document.createElement('br')); - } - } - return p; - }, - - /** - * Toggle the visibility of the popup. - * - * @private - * @memberof PopupElement - */ - _toggle: function PopupElement_toggle() { - if (this.pinned) { - this._hide(true); - } else { - this._show(true); - } - }, - - /** - * Show the popup. - * - * @private - * @param {boolean} pin - * @memberof PopupElement - */ - _show: function PopupElement_show(pin) { - if (pin) { - this.pinned = true; - } - if (this.hideElement.hasAttribute('hidden')) { - this.hideElement.removeAttribute('hidden'); - this.container.style.zIndex += 1; - } - }, - - /** - * Hide the popup. - * - * @private - * @param {boolean} unpin - * @memberof PopupElement - */ - _hide: function PopupElement_hide(unpin) { - if (unpin) { - this.pinned = false; - } - if (!this.hideElement.hasAttribute('hidden') && !this.pinned) { - this.hideElement.setAttribute('hidden', true); - this.container.style.zIndex -= 1; - } - } - }; - - return PopupElement; -})(); - -/** - * @class - * @alias HighlightAnnotationElement - */ -var HighlightAnnotationElement = ( - function HighlightAnnotationElementClosure() { - function HighlightAnnotationElement(parameters) { - AnnotationElement.call(this, parameters); - } - - Util.inherit(HighlightAnnotationElement, AnnotationElement, { - /** - * Render the highlight annotation's HTML element in the empty container. - * - * @public - * @memberof HighlightAnnotationElement - * @returns {HTMLSectionElement} - */ - render: function HighlightAnnotationElement_render() { - this.container.className = 'highlightAnnotation'; - return this.container; - } - }); - - return HighlightAnnotationElement; -})(); - -/** - * @class - * @alias UnderlineAnnotationElement - */ -var UnderlineAnnotationElement = ( - function UnderlineAnnotationElementClosure() { - function UnderlineAnnotationElement(parameters) { - AnnotationElement.call(this, parameters); - } - - Util.inherit(UnderlineAnnotationElement, AnnotationElement, { - /** - * Render the underline annotation's HTML element in the empty container. - * - * @public - * @memberof UnderlineAnnotationElement - * @returns {HTMLSectionElement} - */ - render: function UnderlineAnnotationElement_render() { - this.container.className = 'underlineAnnotation'; - return this.container; - } - }); - - return UnderlineAnnotationElement; -})(); - -/** - * @class - * @alias SquigglyAnnotationElement - */ -var SquigglyAnnotationElement = (function SquigglyAnnotationElementClosure() { - function SquigglyAnnotationElement(parameters) { - AnnotationElement.call(this, parameters); - } - - Util.inherit(SquigglyAnnotationElement, AnnotationElement, { - /** - * Render the squiggly annotation's HTML element in the empty container. - * - * @public - * @memberof SquigglyAnnotationElement - * @returns {HTMLSectionElement} - */ - render: function SquigglyAnnotationElement_render() { - this.container.className = 'squigglyAnnotation'; - return this.container; - } - }); - - return SquigglyAnnotationElement; -})(); - -/** - * @class - * @alias StrikeOutAnnotationElement - */ -var StrikeOutAnnotationElement = ( - function StrikeOutAnnotationElementClosure() { - function StrikeOutAnnotationElement(parameters) { - AnnotationElement.call(this, parameters); - } - - Util.inherit(StrikeOutAnnotationElement, AnnotationElement, { - /** - * Render the strikeout annotation's HTML element in the empty container. - * - * @public - * @memberof StrikeOutAnnotationElement - * @returns {HTMLSectionElement} - */ - render: function StrikeOutAnnotationElement_render() { - this.container.className = 'strikeoutAnnotation'; - return this.container; - } - }); - - return StrikeOutAnnotationElement; -})(); - -/** - * @typedef {Object} AnnotationLayerParameters - * @property {PageViewport} viewport - * @property {HTMLDivElement} div - * @property {Array} annotations - * @property {PDFPage} page - * @property {IPDFLinkService} linkService - */ - -/** - * @class - * @alias AnnotationLayer - */ -var AnnotationLayer = (function AnnotationLayerClosure() { - return { - /** - * Render a new annotation layer with all annotation elements. - * - * @public - * @param {AnnotationLayerParameters} parameters - * @memberof AnnotationLayer - */ - render: function AnnotationLayer_render(parameters) { - var annotationElementFactory = new AnnotationElementFactory(); - - for (var i = 0, ii = parameters.annotations.length; i < ii; i++) { - var data = parameters.annotations[i]; - if (!data || !data.hasHtml) { - continue; - } - - var properties = { - data: data, - layer: parameters.div, - page: parameters.page, - viewport: parameters.viewport, - linkService: parameters.linkService - }; - var element = annotationElementFactory.create(properties); - parameters.div.appendChild(element.render()); - } - }, - - /** - * Update the annotation elements on existing annotation layer. - * - * @public - * @param {AnnotationLayerParameters} parameters - * @memberof AnnotationLayer - */ - update: function AnnotationLayer_update(parameters) { - for (var i = 0, ii = parameters.annotations.length; i < ii; i++) { - var data = parameters.annotations[i]; - var element = parameters.div.querySelector( - '[data-annotation-id="' + data.id + '"]'); - if (element) { - CustomStyle.setProp('transform', element, - 'matrix(' + parameters.viewport.transform.join(',') + ')'); - } - } - parameters.div.removeAttribute('hidden'); - } - }; -})(); - -PDFJS.AnnotationLayer = AnnotationLayer; - -exports.AnnotationLayer = AnnotationLayer; -})); - - -(function (root, factory) { - { - factory((root.pdfjsDisplayFontLoader = {}), root.pdfjsSharedUtil, - root.pdfjsSharedGlobal); - } -}(this, function (exports, sharedUtil, sharedGlobal) { - -var assert = sharedUtil.assert; -var bytesToString = sharedUtil.bytesToString; -var string32 = sharedUtil.string32; -var shadow = sharedUtil.shadow; -var warn = sharedUtil.warn; - -var PDFJS = sharedGlobal.PDFJS; -var globalScope = sharedGlobal.globalScope; -var isWorker = sharedGlobal.isWorker; - -function FontLoader(docId) { - this.docId = docId; - this.styleElement = null; - this.nativeFontFaces = []; - this.loadTestFontId = 0; - this.loadingContext = { - requests: [], - nextRequestId: 0 - }; -} -FontLoader.prototype = { - insertRule: function fontLoaderInsertRule(rule) { - var styleElement = this.styleElement; - if (!styleElement) { - styleElement = this.styleElement = document.createElement('style'); - styleElement.id = 'PDFJS_FONT_STYLE_TAG_' + this.docId; - document.documentElement.getElementsByTagName('head')[0].appendChild( - styleElement); - } - - var styleSheet = styleElement.sheet; - styleSheet.insertRule(rule, styleSheet.cssRules.length); - }, - - clear: function fontLoaderClear() { - var styleElement = this.styleElement; - if (styleElement) { - styleElement.parentNode.removeChild(styleElement); - styleElement = this.styleElement = null; - } - this.nativeFontFaces.forEach(function(nativeFontFace) { - document.fonts.delete(nativeFontFace); - }); - this.nativeFontFaces.length = 0; - }, - get loadTestFont() { - // This is a CFF font with 1 glyph for '.' that fills its entire width and - // height. - return shadow(this, 'loadTestFont', atob( - 'T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQAFQ' + - 'AABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAAALwA' + - 'AAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgAAAAGbm' + - 'FtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1AAsD6AAA' + - 'AADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD6AAAAAAD6A' + - 'ABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACMAooCvAAAAeAA' + - 'MQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4DIP84AFoDIQAAAA' + - 'AAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAAAAEAAQAAAAEAAAAA' + - 'AAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUAAQAAAAEAAAAAAAYAAQ' + - 'AAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgABAAMAAQQJAAMAAgABAAMA' + - 'AQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABYAAAAAAAAAwAAAAMAAAAcAA' + - 'EAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAAAC7////TAAEAAAAAAAABBgAA' + - 'AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAA' + - 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + - 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + - 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + - 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAA' + - 'AAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAAAAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgc' + - 'A/gXBIwMAYuL+nz5tQXkD5j3CBLnEQACAQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWF' + - 'hYWFhYWFhYAAABAQAADwACAQEEE/t3Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQA' + - 'AAAAAAABAAAAAMmJbzEAAAAAzgTjFQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAg' + - 'ABAAAAAAAAAAAD6AAAAAAAAA==' - )); - }, - - addNativeFontFace: function fontLoader_addNativeFontFace(nativeFontFace) { - this.nativeFontFaces.push(nativeFontFace); - document.fonts.add(nativeFontFace); - }, - - bind: function fontLoaderBind(fonts, callback) { - assert(!isWorker, 'bind() shall be called from main thread'); - - var rules = []; - var fontsToLoad = []; - var fontLoadPromises = []; - var getNativeFontPromise = function(nativeFontFace) { - // Return a promise that is always fulfilled, even when the font fails to - // load. - return nativeFontFace.loaded.catch(function(e) { - warn('Failed to load font "' + nativeFontFace.family + '": ' + e); - }); - }; - for (var i = 0, ii = fonts.length; i < ii; i++) { - var font = fonts[i]; - - // Add the font to the DOM only once or skip if the font - // is already loaded. - if (font.attached || font.loading === false) { - continue; - } - font.attached = true; - - if (FontLoader.isFontLoadingAPISupported) { - var nativeFontFace = font.createNativeFontFace(); - if (nativeFontFace) { - this.addNativeFontFace(nativeFontFace); - fontLoadPromises.push(getNativeFontPromise(nativeFontFace)); - } - } else { - var rule = font.createFontFaceRule(); - if (rule) { - this.insertRule(rule); - rules.push(rule); - fontsToLoad.push(font); - } - } - } - - var request = this.queueLoadingCallback(callback); - if (FontLoader.isFontLoadingAPISupported) { - Promise.all(fontLoadPromises).then(function() { - request.complete(); - }); - } else if (rules.length > 0 && !FontLoader.isSyncFontLoadingSupported) { - this.prepareFontLoadEvent(rules, fontsToLoad, request); - } else { - request.complete(); - } - }, - - queueLoadingCallback: function FontLoader_queueLoadingCallback(callback) { - function LoadLoader_completeRequest() { - assert(!request.end, 'completeRequest() cannot be called twice'); - request.end = Date.now(); - - // sending all completed requests in order how they were queued - while (context.requests.length > 0 && context.requests[0].end) { - var otherRequest = context.requests.shift(); - setTimeout(otherRequest.callback, 0); - } - } - - var context = this.loadingContext; - var requestId = 'pdfjs-font-loading-' + (context.nextRequestId++); - var request = { - id: requestId, - complete: LoadLoader_completeRequest, - callback: callback, - started: Date.now() - }; - context.requests.push(request); - return request; - }, - - prepareFontLoadEvent: function fontLoaderPrepareFontLoadEvent(rules, - fonts, - request) { - /** Hack begin */ - // There's currently no event when a font has finished downloading so the - // following code is a dirty hack to 'guess' when a font is - // ready. It's assumed fonts are loaded in order, so add a known test - // font after the desired fonts and then test for the loading of that - // test font. - - function int32(data, offset) { - return (data.charCodeAt(offset) << 24) | - (data.charCodeAt(offset + 1) << 16) | - (data.charCodeAt(offset + 2) << 8) | - (data.charCodeAt(offset + 3) & 0xff); - } - - function spliceString(s, offset, remove, insert) { - var chunk1 = s.substr(0, offset); - var chunk2 = s.substr(offset + remove); - return chunk1 + insert + chunk2; - } - - var i, ii; - - var canvas = document.createElement('canvas'); - canvas.width = 1; - canvas.height = 1; - var ctx = canvas.getContext('2d'); - - var called = 0; - function isFontReady(name, callback) { - called++; - // With setTimeout clamping this gives the font ~100ms to load. - if(called > 30) { - warn('Load test font never loaded.'); - callback(); - return; - } - ctx.font = '30px ' + name; - ctx.fillText('.', 0, 20); - var imageData = ctx.getImageData(0, 0, 1, 1); - if (imageData.data[3] > 0) { - callback(); - return; - } - setTimeout(isFontReady.bind(null, name, callback)); - } - - var loadTestFontId = 'lt' + Date.now() + this.loadTestFontId++; - // Chromium seems to cache fonts based on a hash of the actual font data, - // so the font must be modified for each load test else it will appear to - // be loaded already. - // TODO: This could maybe be made faster by avoiding the btoa of the full - // font by splitting it in chunks before hand and padding the font id. - var data = this.loadTestFont; - var COMMENT_OFFSET = 976; // has to be on 4 byte boundary (for checksum) - data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, - loadTestFontId); - // CFF checksum is important for IE, adjusting it - var CFF_CHECKSUM_OFFSET = 16; - var XXXX_VALUE = 0x58585858; // the "comment" filled with 'X' - var checksum = int32(data, CFF_CHECKSUM_OFFSET); - for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) { - checksum = (checksum - XXXX_VALUE + int32(loadTestFontId, i)) | 0; - } - if (i < loadTestFontId.length) { // align to 4 bytes boundary - checksum = (checksum - XXXX_VALUE + - int32(loadTestFontId + 'XXX', i)) | 0; - } - data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, string32(checksum)); - - var url = 'url(data:font/opentype;base64,' + btoa(data) + ');'; - var rule = '@font-face { font-family:"' + loadTestFontId + '";src:' + - url + '}'; - this.insertRule(rule); - - var names = []; - for (i = 0, ii = fonts.length; i < ii; i++) { - names.push(fonts[i].loadedName); - } - names.push(loadTestFontId); - - var div = document.createElement('div'); - div.setAttribute('style', - 'visibility: hidden;' + - 'width: 10px; height: 10px;' + - 'position: absolute; top: 0px; left: 0px;'); - for (i = 0, ii = names.length; i < ii; ++i) { - var span = document.createElement('span'); - span.textContent = 'Hi'; - span.style.fontFamily = names[i]; - div.appendChild(span); - } - document.body.appendChild(div); - - isFontReady(loadTestFontId, function() { - document.body.removeChild(div); - request.complete(); - }); - /** Hack end */ - } -}; -FontLoader.isFontLoadingAPISupported = (!isWorker && - typeof document !== 'undefined' && !!document.fonts); -Object.defineProperty(FontLoader, 'isSyncFontLoadingSupported', { - get: function () { - var supported = false; - - // User agent string sniffing is bad, but there is no reliable way to tell - // if font is fully loaded and ready to be used with canvas. - var userAgent = window.navigator.userAgent; - var m = /Mozilla\/5.0.*?rv:(\d+).*? Gecko/.exec(userAgent); - if (m && m[1] >= 14) { - supported = true; - } - // TODO other browsers - if (userAgent === 'node') { - supported = true; - } - return shadow(FontLoader, 'isSyncFontLoadingSupported', supported); - }, - enumerable: true, - configurable: true -}); - -var FontFaceObject = (function FontFaceObjectClosure() { - function FontFaceObject(translatedData) { - this.compiledGlyphs = {}; - // importing translated data - for (var i in translatedData) { - this[i] = translatedData[i]; - } - } - Object.defineProperty(FontFaceObject, 'isEvalSupported', { - get: function () { - var evalSupport = false; - if (PDFJS.isEvalSupported) { - try { - /* jshint evil: true */ - new Function(''); - evalSupport = true; - } catch (e) {} - } - return shadow(this, 'isEvalSupported', evalSupport); - }, - enumerable: true, - configurable: true - }); - FontFaceObject.prototype = { - createNativeFontFace: function FontFaceObject_createNativeFontFace() { - if (!this.data) { - return null; - } - - if (PDFJS.disableFontFace) { - this.disableFontFace = true; - return null; - } - - var nativeFontFace = new FontFace(this.loadedName, this.data, {}); - - if (PDFJS.pdfBug && 'FontInspector' in globalScope && - globalScope['FontInspector'].enabled) { - globalScope['FontInspector'].fontAdded(this); - } - return nativeFontFace; - }, - - createFontFaceRule: function FontFaceObject_createFontFaceRule() { - if (!this.data) { - return null; - } - - if (PDFJS.disableFontFace) { - this.disableFontFace = true; - return null; - } - - var data = bytesToString(new Uint8Array(this.data)); - var fontName = this.loadedName; - - // Add the font-face rule to the document - var url = ('url(data:' + this.mimetype + ';base64,' + - window.btoa(data) + ');'); - var rule = '@font-face { font-family:"' + fontName + '";src:' + url + '}'; - - if (PDFJS.pdfBug && 'FontInspector' in globalScope && - globalScope['FontInspector'].enabled) { - globalScope['FontInspector'].fontAdded(this, url); - } - - return rule; - }, - - getPathGenerator: - function FontFaceObject_getPathGenerator(objs, character) { - if (!(character in this.compiledGlyphs)) { - var cmds = objs.get(this.loadedName + '_path_' + character); - var current, i, len; - - // If we can, compile cmds into JS for MAXIMUM SPEED - if (FontFaceObject.isEvalSupported) { - var args, js = ''; - for (i = 0, len = cmds.length; i < len; i++) { - current = cmds[i]; - - if (current.args !== undefined) { - args = current.args.join(','); - } else { - args = ''; - } - - js += 'c.' + current.cmd + '(' + args + ');\n'; - } - /* jshint -W054 */ - this.compiledGlyphs[character] = new Function('c', 'size', js); - } else { - // But fall back on using Function.prototype.apply() if we're - // blocked from using eval() for whatever reason (like CSP policies) - this.compiledGlyphs[character] = function(c, size) { - for (i = 0, len = cmds.length; i < len; i++) { - current = cmds[i]; - - if (current.cmd === 'scale') { - current.args = [size, -size]; - } - - c[current.cmd].apply(c, current.args); - } - }; - } - } - return this.compiledGlyphs[character]; - } - }; - return FontFaceObject; -})(); - -exports.FontFaceObject = FontFaceObject; -exports.FontLoader = FontLoader; -})); - - -(function (root, factory) { - { - factory((root.pdfjsDisplayMetadata = {}), root.pdfjsSharedUtil); - } -}(this, function (exports, sharedUtil) { - -var error = sharedUtil.error; - -var Metadata = PDFJS.Metadata = (function MetadataClosure() { - function fixMetadata(meta) { - return meta.replace(/>\\376\\377([^<]+)/g, function(all, codes) { - var bytes = codes.replace(/\\([0-3])([0-7])([0-7])/g, - function(code, d1, d2, d3) { - return String.fromCharCode(d1 * 64 + d2 * 8 + d3 * 1); - }); - var chars = ''; - for (var i = 0; i < bytes.length; i += 2) { - var code = bytes.charCodeAt(i) * 256 + bytes.charCodeAt(i + 1); - chars += code >= 32 && code < 127 && code !== 60 && code !== 62 && - code !== 38 && false ? String.fromCharCode(code) : - '&#x' + (0x10000 + code).toString(16).substring(1) + ';'; - } - return '>' + chars; - }); - } - - function Metadata(meta) { - if (typeof meta === 'string') { - // Ghostscript produces invalid metadata - meta = fixMetadata(meta); - - var parser = new DOMParser(); - meta = parser.parseFromString(meta, 'application/xml'); - } else if (!(meta instanceof Document)) { - error('Metadata: Invalid metadata object'); - } - - this.metaDocument = meta; - this.metadata = {}; - this.parse(); - } - - Metadata.prototype = { - parse: function Metadata_parse() { - var doc = this.metaDocument; - var rdf = doc.documentElement; - - if (rdf.nodeName.toLowerCase() !== 'rdf:rdf') { // Wrapped in - rdf = rdf.firstChild; - while (rdf && rdf.nodeName.toLowerCase() !== 'rdf:rdf') { - rdf = rdf.nextSibling; - } - } - - var nodeName = (rdf) ? rdf.nodeName.toLowerCase() : null; - if (!rdf || nodeName !== 'rdf:rdf' || !rdf.hasChildNodes()) { - return; - } - - var children = rdf.childNodes, desc, entry, name, i, ii, length, iLength; - for (i = 0, length = children.length; i < length; i++) { - desc = children[i]; - if (desc.nodeName.toLowerCase() !== 'rdf:description') { - continue; - } - - for (ii = 0, iLength = desc.childNodes.length; ii < iLength; ii++) { - if (desc.childNodes[ii].nodeName.toLowerCase() !== '#text') { - entry = desc.childNodes[ii]; - name = entry.nodeName.toLowerCase(); - this.metadata[name] = entry.textContent.trim(); - } - } - } - }, - - get: function Metadata_get(name) { - return this.metadata[name] || null; - }, - - has: function Metadata_has(name) { - return typeof this.metadata[name] !== 'undefined'; - } - }; - - return Metadata; -})(); - -exports.Metadata = Metadata; -})); - - -(function (root, factory) { - { - factory((root.pdfjsDisplaySVG = {}), root.pdfjsSharedUtil); - } -}(this, function (exports, sharedUtil) { - -var FONT_IDENTITY_MATRIX = sharedUtil.FONT_IDENTITY_MATRIX; -var IDENTITY_MATRIX = sharedUtil.IDENTITY_MATRIX; -var ImageKind = sharedUtil.ImageKind; -var OPS = sharedUtil.OPS; -var Util = sharedUtil.Util; -var isNum = sharedUtil.isNum; -var isArray = sharedUtil.isArray; -var warn = sharedUtil.warn; - -var SVG_DEFAULTS = { - fontStyle: 'normal', - fontWeight: 'normal', - fillColor: '#000000' -}; - -var convertImgDataToPng = (function convertImgDataToPngClosure() { - var PNG_HEADER = - new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]); - - var CHUNK_WRAPPER_SIZE = 12; - - var crcTable = new Int32Array(256); - for (var i = 0; i < 256; i++) { - var c = i; - for (var h = 0; h < 8; h++) { - if (c & 1) { - c = 0xedB88320 ^ ((c >> 1) & 0x7fffffff); - } else { - c = (c >> 1) & 0x7fffffff; - } - } - crcTable[i] = c; - } - - function crc32(data, start, end) { - var crc = -1; - for (var i = start; i < end; i++) { - var a = (crc ^ data[i]) & 0xff; - var b = crcTable[a]; - crc = (crc >>> 8) ^ b; - } - return crc ^ -1; - } - - function writePngChunk(type, body, data, offset) { - var p = offset; - var len = body.length; - - data[p] = len >> 24 & 0xff; - data[p + 1] = len >> 16 & 0xff; - data[p + 2] = len >> 8 & 0xff; - data[p + 3] = len & 0xff; - p += 4; - - data[p] = type.charCodeAt(0) & 0xff; - data[p + 1] = type.charCodeAt(1) & 0xff; - data[p + 2] = type.charCodeAt(2) & 0xff; - data[p + 3] = type.charCodeAt(3) & 0xff; - p += 4; - - data.set(body, p); - p += body.length; - - var crc = crc32(data, offset + 4, p); - - data[p] = crc >> 24 & 0xff; - data[p + 1] = crc >> 16 & 0xff; - data[p + 2] = crc >> 8 & 0xff; - data[p + 3] = crc & 0xff; - } - - function adler32(data, start, end) { - var a = 1; - var b = 0; - for (var i = start; i < end; ++i) { - a = (a + (data[i] & 0xff)) % 65521; - b = (b + a) % 65521; - } - return (b << 16) | a; - } - - function encode(imgData, kind) { - var width = imgData.width; - var height = imgData.height; - var bitDepth, colorType, lineSize; - var bytes = imgData.data; - - switch (kind) { - case ImageKind.GRAYSCALE_1BPP: - colorType = 0; - bitDepth = 1; - lineSize = (width + 7) >> 3; - break; - case ImageKind.RGB_24BPP: - colorType = 2; - bitDepth = 8; - lineSize = width * 3; - break; - case ImageKind.RGBA_32BPP: - colorType = 6; - bitDepth = 8; - lineSize = width * 4; - break; - default: - throw new Error('invalid format'); - } - - // prefix every row with predictor 0 - var literals = new Uint8Array((1 + lineSize) * height); - var offsetLiterals = 0, offsetBytes = 0; - var y, i; - for (y = 0; y < height; ++y) { - literals[offsetLiterals++] = 0; // no prediction - literals.set(bytes.subarray(offsetBytes, offsetBytes + lineSize), - offsetLiterals); - offsetBytes += lineSize; - offsetLiterals += lineSize; - } - - if (kind === ImageKind.GRAYSCALE_1BPP) { - // inverting for B/W - offsetLiterals = 0; - for (y = 0; y < height; y++) { - offsetLiterals++; // skipping predictor - for (i = 0; i < lineSize; i++) { - literals[offsetLiterals++] ^= 0xFF; - } - } - } - - var ihdr = new Uint8Array([ - width >> 24 & 0xff, - width >> 16 & 0xff, - width >> 8 & 0xff, - width & 0xff, - height >> 24 & 0xff, - height >> 16 & 0xff, - height >> 8 & 0xff, - height & 0xff, - bitDepth, // bit depth - colorType, // color type - 0x00, // compression method - 0x00, // filter method - 0x00 // interlace method - ]); - - var len = literals.length; - var maxBlockLength = 0xFFFF; - - var deflateBlocks = Math.ceil(len / maxBlockLength); - var idat = new Uint8Array(2 + len + deflateBlocks * 5 + 4); - var pi = 0; - idat[pi++] = 0x78; // compression method and flags - idat[pi++] = 0x9c; // flags - - var pos = 0; - while (len > maxBlockLength) { - // writing non-final DEFLATE blocks type 0 and length of 65535 - idat[pi++] = 0x00; - idat[pi++] = 0xff; - idat[pi++] = 0xff; - idat[pi++] = 0x00; - idat[pi++] = 0x00; - idat.set(literals.subarray(pos, pos + maxBlockLength), pi); - pi += maxBlockLength; - pos += maxBlockLength; - len -= maxBlockLength; - } - - // writing non-final DEFLATE blocks type 0 - idat[pi++] = 0x01; - idat[pi++] = len & 0xff; - idat[pi++] = len >> 8 & 0xff; - idat[pi++] = (~len & 0xffff) & 0xff; - idat[pi++] = (~len & 0xffff) >> 8 & 0xff; - idat.set(literals.subarray(pos), pi); - pi += literals.length - pos; - - var adler = adler32(literals, 0, literals.length); // checksum - idat[pi++] = adler >> 24 & 0xff; - idat[pi++] = adler >> 16 & 0xff; - idat[pi++] = adler >> 8 & 0xff; - idat[pi++] = adler & 0xff; - - // PNG will consists: header, IHDR+data, IDAT+data, and IEND. - var pngLength = PNG_HEADER.length + (CHUNK_WRAPPER_SIZE * 3) + - ihdr.length + idat.length; - var data = new Uint8Array(pngLength); - var offset = 0; - data.set(PNG_HEADER, offset); - offset += PNG_HEADER.length; - writePngChunk('IHDR', ihdr, data, offset); - offset += CHUNK_WRAPPER_SIZE + ihdr.length; - writePngChunk('IDATA', idat, data, offset); - offset += CHUNK_WRAPPER_SIZE + idat.length; - writePngChunk('IEND', new Uint8Array(0), data, offset); - - return PDFJS.createObjectURL(data, 'image/png'); - } - - return function convertImgDataToPng(imgData) { - var kind = (imgData.kind === undefined ? - ImageKind.GRAYSCALE_1BPP : imgData.kind); - return encode(imgData, kind); - }; -})(); - -var SVGExtraState = (function SVGExtraStateClosure() { - function SVGExtraState() { - this.fontSizeScale = 1; - this.fontWeight = SVG_DEFAULTS.fontWeight; - this.fontSize = 0; - - this.textMatrix = IDENTITY_MATRIX; - this.fontMatrix = FONT_IDENTITY_MATRIX; - this.leading = 0; - - // Current point (in user coordinates) - this.x = 0; - this.y = 0; - - // Start of text line (in text coordinates) - this.lineX = 0; - this.lineY = 0; - - // Character and word spacing - this.charSpacing = 0; - this.wordSpacing = 0; - this.textHScale = 1; - this.textRise = 0; - - // Default foreground and background colors - this.fillColor = SVG_DEFAULTS.fillColor; - this.strokeColor = '#000000'; - - this.fillAlpha = 1; - this.strokeAlpha = 1; - this.lineWidth = 1; - this.lineJoin = ''; - this.lineCap = ''; - this.miterLimit = 0; - - this.dashArray = []; - this.dashPhase = 0; - - this.dependencies = []; - - // Clipping - this.clipId = ''; - this.pendingClip = false; - - this.maskId = ''; - } - - SVGExtraState.prototype = { - clone: function SVGExtraState_clone() { - return Object.create(this); - }, - setCurrentPoint: function SVGExtraState_setCurrentPoint(x, y) { - this.x = x; - this.y = y; - } - }; - return SVGExtraState; -})(); - -var SVGGraphics = (function SVGGraphicsClosure() { - function createScratchSVG(width, height) { - var NS = 'http://www.w3.org/2000/svg'; - var svg = document.createElementNS(NS, 'svg:svg'); - svg.setAttributeNS(null, 'version', '1.1'); - svg.setAttributeNS(null, 'width', width + 'px'); - svg.setAttributeNS(null, 'height', height + 'px'); - svg.setAttributeNS(null, 'viewBox', '0 0 ' + width + ' ' + height); - return svg; - } - - function opListToTree(opList) { - var opTree = []; - var tmp = []; - var opListLen = opList.length; - - for (var x = 0; x < opListLen; x++) { - if (opList[x].fn === 'save') { - opTree.push({'fnId': 92, 'fn': 'group', 'items': []}); - tmp.push(opTree); - opTree = opTree[opTree.length - 1].items; - continue; - } - - if(opList[x].fn === 'restore') { - opTree = tmp.pop(); - } else { - opTree.push(opList[x]); - } - } - return opTree; - } - - /** - * Formats float number. - * @param value {number} number to format. - * @returns {string} - */ - function pf(value) { - if (value === (value | 0)) { // integer number - return value.toString(); - } - var s = value.toFixed(10); - var i = s.length - 1; - if (s[i] !== '0') { - return s; - } - // removing trailing zeros - do { - i--; - } while (s[i] === '0'); - return s.substr(0, s[i] === '.' ? i : i + 1); - } - - /** - * Formats transform matrix. The standard rotation, scale and translate - * matrices are replaced by their shorter forms, and for identity matrix - * returns empty string to save the memory. - * @param m {Array} matrix to format. - * @returns {string} - */ - function pm(m) { - if (m[4] === 0 && m[5] === 0) { - if (m[1] === 0 && m[2] === 0) { - if (m[0] === 1 && m[3] === 1) { - return ''; - } - return 'scale(' + pf(m[0]) + ' ' + pf(m[3]) + ')'; - } - if (m[0] === m[3] && m[1] === -m[2]) { - var a = Math.acos(m[0]) * 180 / Math.PI; - return 'rotate(' + pf(a) + ')'; - } - } else { - if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1) { - return 'translate(' + pf(m[4]) + ' ' + pf(m[5]) + ')'; - } - } - return 'matrix(' + pf(m[0]) + ' ' + pf(m[1]) + ' ' + pf(m[2]) + ' ' + - pf(m[3]) + ' ' + pf(m[4]) + ' ' + pf(m[5]) + ')'; - } - - function SVGGraphics(commonObjs, objs) { - this.current = new SVGExtraState(); - this.transformMatrix = IDENTITY_MATRIX; // Graphics state matrix - this.transformStack = []; - this.extraStack = []; - this.commonObjs = commonObjs; - this.objs = objs; - this.pendingEOFill = false; - - this.embedFonts = false; - this.embeddedFonts = {}; - this.cssStyle = null; - } - - var NS = 'http://www.w3.org/2000/svg'; - var XML_NS = 'http://www.w3.org/XML/1998/namespace'; - var XLINK_NS = 'http://www.w3.org/1999/xlink'; - var LINE_CAP_STYLES = ['butt', 'round', 'square']; - var LINE_JOIN_STYLES = ['miter', 'round', 'bevel']; - var clipCount = 0; - var maskCount = 0; - - SVGGraphics.prototype = { - save: function SVGGraphics_save() { - this.transformStack.push(this.transformMatrix); - var old = this.current; - this.extraStack.push(old); - this.current = old.clone(); - }, - - restore: function SVGGraphics_restore() { - this.transformMatrix = this.transformStack.pop(); - this.current = this.extraStack.pop(); - - this.tgrp = document.createElementNS(NS, 'svg:g'); - this.tgrp.setAttributeNS(null, 'transform', pm(this.transformMatrix)); - this.pgrp.appendChild(this.tgrp); - }, - - group: function SVGGraphics_group(items) { - this.save(); - this.executeOpTree(items); - this.restore(); - }, - - loadDependencies: function SVGGraphics_loadDependencies(operatorList) { - var fnArray = operatorList.fnArray; - var fnArrayLen = fnArray.length; - var argsArray = operatorList.argsArray; - - var self = this; - for (var i = 0; i < fnArrayLen; i++) { - if (OPS.dependency === fnArray[i]) { - var deps = argsArray[i]; - for (var n = 0, nn = deps.length; n < nn; n++) { - var obj = deps[n]; - var common = obj.substring(0, 2) === 'g_'; - var promise; - if (common) { - promise = new Promise(function(resolve) { - self.commonObjs.get(obj, resolve); - }); - } else { - promise = new Promise(function(resolve) { - self.objs.get(obj, resolve); - }); - } - this.current.dependencies.push(promise); - } - } - } - return Promise.all(this.current.dependencies); - }, - - transform: function SVGGraphics_transform(a, b, c, d, e, f) { - var transformMatrix = [a, b, c, d, e, f]; - this.transformMatrix = PDFJS.Util.transform(this.transformMatrix, - transformMatrix); - - this.tgrp = document.createElementNS(NS, 'svg:g'); - this.tgrp.setAttributeNS(null, 'transform', pm(this.transformMatrix)); - }, - - getSVG: function SVGGraphics_getSVG(operatorList, viewport) { - this.svg = createScratchSVG(viewport.width, viewport.height); - this.viewport = viewport; - - return this.loadDependencies(operatorList).then(function () { - this.transformMatrix = IDENTITY_MATRIX; - this.pgrp = document.createElementNS(NS, 'svg:g'); // Parent group - this.pgrp.setAttributeNS(null, 'transform', pm(viewport.transform)); - this.tgrp = document.createElementNS(NS, 'svg:g'); // Transform group - this.tgrp.setAttributeNS(null, 'transform', pm(this.transformMatrix)); - this.defs = document.createElementNS(NS, 'svg:defs'); - this.pgrp.appendChild(this.defs); - this.pgrp.appendChild(this.tgrp); - this.svg.appendChild(this.pgrp); - var opTree = this.convertOpList(operatorList); - this.executeOpTree(opTree); - return this.svg; - }.bind(this)); - }, - - convertOpList: function SVGGraphics_convertOpList(operatorList) { - var argsArray = operatorList.argsArray; - var fnArray = operatorList.fnArray; - var fnArrayLen = fnArray.length; - var REVOPS = []; - var opList = []; - - for (var op in OPS) { - REVOPS[OPS[op]] = op; - } - - for (var x = 0; x < fnArrayLen; x++) { - var fnId = fnArray[x]; - opList.push({'fnId' : fnId, 'fn': REVOPS[fnId], 'args': argsArray[x]}); - } - return opListToTree(opList); - }, - - executeOpTree: function SVGGraphics_executeOpTree(opTree) { - var opTreeLen = opTree.length; - for(var x = 0; x < opTreeLen; x++) { - var fn = opTree[x].fn; - var fnId = opTree[x].fnId; - var args = opTree[x].args; - - switch (fnId | 0) { - case OPS.beginText: - this.beginText(); - break; - case OPS.setLeading: - this.setLeading(args); - break; - case OPS.setLeadingMoveText: - this.setLeadingMoveText(args[0], args[1]); - break; - case OPS.setFont: - this.setFont(args); - break; - case OPS.showText: - this.showText(args[0]); - break; - case OPS.showSpacedText: - this.showText(args[0]); - break; - case OPS.endText: - this.endText(); - break; - case OPS.moveText: - this.moveText(args[0], args[1]); - break; - case OPS.setCharSpacing: - this.setCharSpacing(args[0]); - break; - case OPS.setWordSpacing: - this.setWordSpacing(args[0]); - break; - case OPS.setHScale: - this.setHScale(args[0]); - break; - case OPS.setTextMatrix: - this.setTextMatrix(args[0], args[1], args[2], - args[3], args[4], args[5]); - break; - case OPS.setLineWidth: - this.setLineWidth(args[0]); - break; - case OPS.setLineJoin: - this.setLineJoin(args[0]); - break; - case OPS.setLineCap: - this.setLineCap(args[0]); - break; - case OPS.setMiterLimit: - this.setMiterLimit(args[0]); - break; - case OPS.setFillRGBColor: - this.setFillRGBColor(args[0], args[1], args[2]); - break; - case OPS.setStrokeRGBColor: - this.setStrokeRGBColor(args[0], args[1], args[2]); - break; - case OPS.setDash: - this.setDash(args[0], args[1]); - break; - case OPS.setGState: - this.setGState(args[0]); - break; - case OPS.fill: - this.fill(); - break; - case OPS.eoFill: - this.eoFill(); - break; - case OPS.stroke: - this.stroke(); - break; - case OPS.fillStroke: - this.fillStroke(); - break; - case OPS.eoFillStroke: - this.eoFillStroke(); - break; - case OPS.clip: - this.clip('nonzero'); - break; - case OPS.eoClip: - this.clip('evenodd'); - break; - case OPS.paintSolidColorImageMask: - this.paintSolidColorImageMask(); - break; - case OPS.paintJpegXObject: - this.paintJpegXObject(args[0], args[1], args[2]); - break; - case OPS.paintImageXObject: - this.paintImageXObject(args[0]); - break; - case OPS.paintInlineImageXObject: - this.paintInlineImageXObject(args[0]); - break; - case OPS.paintImageMaskXObject: - this.paintImageMaskXObject(args[0]); - break; - case OPS.paintFormXObjectBegin: - this.paintFormXObjectBegin(args[0], args[1]); - break; - case OPS.paintFormXObjectEnd: - this.paintFormXObjectEnd(); - break; - case OPS.closePath: - this.closePath(); - break; - case OPS.closeStroke: - this.closeStroke(); - break; - case OPS.closeFillStroke: - this.closeFillStroke(); - break; - case OPS.nextLine: - this.nextLine(); - break; - case OPS.transform: - this.transform(args[0], args[1], args[2], args[3], - args[4], args[5]); - break; - case OPS.constructPath: - this.constructPath(args[0], args[1]); - break; - case OPS.endPath: - this.endPath(); - break; - case 92: - this.group(opTree[x].items); - break; - default: - warn('Unimplemented method '+ fn); - break; - } - } - }, - - setWordSpacing: function SVGGraphics_setWordSpacing(wordSpacing) { - this.current.wordSpacing = wordSpacing; - }, - - setCharSpacing: function SVGGraphics_setCharSpacing(charSpacing) { - this.current.charSpacing = charSpacing; - }, - - nextLine: function SVGGraphics_nextLine() { - this.moveText(0, this.current.leading); - }, - - setTextMatrix: function SVGGraphics_setTextMatrix(a, b, c, d, e, f) { - var current = this.current; - this.current.textMatrix = this.current.lineMatrix = [a, b, c, d, e, f]; - - this.current.x = this.current.lineX = 0; - this.current.y = this.current.lineY = 0; - - current.xcoords = []; - current.tspan = document.createElementNS(NS, 'svg:tspan'); - current.tspan.setAttributeNS(null, 'font-family', current.fontFamily); - current.tspan.setAttributeNS(null, 'font-size', - pf(current.fontSize) + 'px'); - current.tspan.setAttributeNS(null, 'y', pf(-current.y)); - - current.txtElement = document.createElementNS(NS, 'svg:text'); - current.txtElement.appendChild(current.tspan); - }, - - beginText: function SVGGraphics_beginText() { - this.current.x = this.current.lineX = 0; - this.current.y = this.current.lineY = 0; - this.current.textMatrix = IDENTITY_MATRIX; - this.current.lineMatrix = IDENTITY_MATRIX; - this.current.tspan = document.createElementNS(NS, 'svg:tspan'); - this.current.txtElement = document.createElementNS(NS, 'svg:text'); - this.current.txtgrp = document.createElementNS(NS, 'svg:g'); - this.current.xcoords = []; - }, - - moveText: function SVGGraphics_moveText(x, y) { - var current = this.current; - this.current.x = this.current.lineX += x; - this.current.y = this.current.lineY += y; - - current.xcoords = []; - current.tspan = document.createElementNS(NS, 'svg:tspan'); - current.tspan.setAttributeNS(null, 'font-family', current.fontFamily); - current.tspan.setAttributeNS(null, 'font-size', - pf(current.fontSize) + 'px'); - current.tspan.setAttributeNS(null, 'y', pf(-current.y)); - }, - - showText: function SVGGraphics_showText(glyphs) { - var current = this.current; - var font = current.font; - var fontSize = current.fontSize; - - if (fontSize === 0) { - return; - } - - var charSpacing = current.charSpacing; - var wordSpacing = current.wordSpacing; - var fontDirection = current.fontDirection; - var textHScale = current.textHScale * fontDirection; - var glyphsLength = glyphs.length; - var vertical = font.vertical; - var widthAdvanceScale = fontSize * current.fontMatrix[0]; - - var x = 0, i; - for (i = 0; i < glyphsLength; ++i) { - var glyph = glyphs[i]; - if (glyph === null) { - // word break - x += fontDirection * wordSpacing; - continue; - } else if (isNum(glyph)) { - x += -glyph * fontSize * 0.001; - continue; - } - current.xcoords.push(current.x + x * textHScale); - - var width = glyph.width; - var character = glyph.fontChar; - var charWidth = width * widthAdvanceScale + charSpacing * fontDirection; - x += charWidth; - - current.tspan.textContent += character; - } - if (vertical) { - current.y -= x * textHScale; - } else { - current.x += x * textHScale; - } - - current.tspan.setAttributeNS(null, 'x', - current.xcoords.map(pf).join(' ')); - current.tspan.setAttributeNS(null, 'y', pf(-current.y)); - current.tspan.setAttributeNS(null, 'font-family', current.fontFamily); - current.tspan.setAttributeNS(null, 'font-size', - pf(current.fontSize) + 'px'); - if (current.fontStyle !== SVG_DEFAULTS.fontStyle) { - current.tspan.setAttributeNS(null, 'font-style', current.fontStyle); - } - if (current.fontWeight !== SVG_DEFAULTS.fontWeight) { - current.tspan.setAttributeNS(null, 'font-weight', current.fontWeight); - } - if (current.fillColor !== SVG_DEFAULTS.fillColor) { - current.tspan.setAttributeNS(null, 'fill', current.fillColor); - } - - current.txtElement.setAttributeNS(null, 'transform', - pm(current.textMatrix) + - ' scale(1, -1)' ); - current.txtElement.setAttributeNS(XML_NS, 'xml:space', 'preserve'); - current.txtElement.appendChild(current.tspan); - current.txtgrp.appendChild(current.txtElement); - - this.tgrp.appendChild(current.txtElement); - - }, - - setLeadingMoveText: function SVGGraphics_setLeadingMoveText(x, y) { - this.setLeading(-y); - this.moveText(x, y); - }, - - addFontStyle: function SVGGraphics_addFontStyle(fontObj) { - if (!this.cssStyle) { - this.cssStyle = document.createElementNS(NS, 'svg:style'); - this.cssStyle.setAttributeNS(null, 'type', 'text/css'); - this.defs.appendChild(this.cssStyle); - } - - var url = PDFJS.createObjectURL(fontObj.data, fontObj.mimetype); - this.cssStyle.textContent += - '@font-face { font-family: "' + fontObj.loadedName + '";' + - ' src: url(' + url + '); }\n'; - }, - - setFont: function SVGGraphics_setFont(details) { - var current = this.current; - var fontObj = this.commonObjs.get(details[0]); - var size = details[1]; - this.current.font = fontObj; - - if (this.embedFonts && fontObj.data && - !this.embeddedFonts[fontObj.loadedName]) { - this.addFontStyle(fontObj); - this.embeddedFonts[fontObj.loadedName] = fontObj; - } - - current.fontMatrix = (fontObj.fontMatrix ? - fontObj.fontMatrix : FONT_IDENTITY_MATRIX); - - var bold = fontObj.black ? (fontObj.bold ? 'bolder' : 'bold') : - (fontObj.bold ? 'bold' : 'normal'); - var italic = fontObj.italic ? 'italic' : 'normal'; - - if (size < 0) { - size = -size; - current.fontDirection = -1; - } else { - current.fontDirection = 1; - } - current.fontSize = size; - current.fontFamily = fontObj.loadedName; - current.fontWeight = bold; - current.fontStyle = italic; - - current.tspan = document.createElementNS(NS, 'svg:tspan'); - current.tspan.setAttributeNS(null, 'y', pf(-current.y)); - current.xcoords = []; - }, - - endText: function SVGGraphics_endText() { - if (this.current.pendingClip) { - this.cgrp.appendChild(this.tgrp); - this.pgrp.appendChild(this.cgrp); - } else { - this.pgrp.appendChild(this.tgrp); - } - this.tgrp = document.createElementNS(NS, 'svg:g'); - this.tgrp.setAttributeNS(null, 'transform', pm(this.transformMatrix)); - }, - - // Path properties - setLineWidth: function SVGGraphics_setLineWidth(width) { - this.current.lineWidth = width; - }, - setLineCap: function SVGGraphics_setLineCap(style) { - this.current.lineCap = LINE_CAP_STYLES[style]; - }, - setLineJoin: function SVGGraphics_setLineJoin(style) { - this.current.lineJoin = LINE_JOIN_STYLES[style]; - }, - setMiterLimit: function SVGGraphics_setMiterLimit(limit) { - this.current.miterLimit = limit; - }, - setStrokeRGBColor: function SVGGraphics_setStrokeRGBColor(r, g, b) { - var color = Util.makeCssRgb(r, g, b); - this.current.strokeColor = color; - }, - setFillRGBColor: function SVGGraphics_setFillRGBColor(r, g, b) { - var color = Util.makeCssRgb(r, g, b); - this.current.fillColor = color; - this.current.tspan = document.createElementNS(NS, 'svg:tspan'); - this.current.xcoords = []; - }, - setDash: function SVGGraphics_setDash(dashArray, dashPhase) { - this.current.dashArray = dashArray; - this.current.dashPhase = dashPhase; - }, - - constructPath: function SVGGraphics_constructPath(ops, args) { - var current = this.current; - var x = current.x, y = current.y; - current.path = document.createElementNS(NS, 'svg:path'); - var d = []; - var opLength = ops.length; - - for (var i = 0, j = 0; i < opLength; i++) { - switch (ops[i] | 0) { - case OPS.rectangle: - x = args[j++]; - y = args[j++]; - var width = args[j++]; - var height = args[j++]; - var xw = x + width; - var yh = y + height; - d.push('M', pf(x), pf(y), 'L', pf(xw) , pf(y), 'L', pf(xw), pf(yh), - 'L', pf(x), pf(yh), 'Z'); - break; - case OPS.moveTo: - x = args[j++]; - y = args[j++]; - d.push('M', pf(x), pf(y)); - break; - case OPS.lineTo: - x = args[j++]; - y = args[j++]; - d.push('L', pf(x) , pf(y)); - break; - case OPS.curveTo: - x = args[j + 4]; - y = args[j + 5]; - d.push('C', pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), - pf(args[j + 3]), pf(x), pf(y)); - j += 6; - break; - case OPS.curveTo2: - x = args[j + 2]; - y = args[j + 3]; - d.push('C', pf(x), pf(y), pf(args[j]), pf(args[j + 1]), - pf(args[j + 2]), pf(args[j + 3])); - j += 4; - break; - case OPS.curveTo3: - x = args[j + 2]; - y = args[j + 3]; - d.push('C', pf(args[j]), pf(args[j + 1]), pf(x), pf(y), - pf(x), pf(y)); - j += 4; - break; - case OPS.closePath: - d.push('Z'); - break; - } - } - current.path.setAttributeNS(null, 'd', d.join(' ')); - current.path.setAttributeNS(null, 'stroke-miterlimit', - pf(current.miterLimit)); - current.path.setAttributeNS(null, 'stroke-linecap', current.lineCap); - current.path.setAttributeNS(null, 'stroke-linejoin', current.lineJoin); - current.path.setAttributeNS(null, 'stroke-width', - pf(current.lineWidth) + 'px'); - current.path.setAttributeNS(null, 'stroke-dasharray', - current.dashArray.map(pf).join(' ')); - current.path.setAttributeNS(null, 'stroke-dashoffset', - pf(current.dashPhase) + 'px'); - current.path.setAttributeNS(null, 'fill', 'none'); - - this.tgrp.appendChild(current.path); - if (current.pendingClip) { - this.cgrp.appendChild(this.tgrp); - this.pgrp.appendChild(this.cgrp); - } else { - this.pgrp.appendChild(this.tgrp); - } - // Saving a reference in current.element so that it can be addressed - // in 'fill' and 'stroke' - current.element = current.path; - current.setCurrentPoint(x, y); - }, - - endPath: function SVGGraphics_endPath() { - var current = this.current; - if (current.pendingClip) { - this.cgrp.appendChild(this.tgrp); - this.pgrp.appendChild(this.cgrp); - } else { - this.pgrp.appendChild(this.tgrp); - } - this.tgrp = document.createElementNS(NS, 'svg:g'); - this.tgrp.setAttributeNS(null, 'transform', pm(this.transformMatrix)); - }, - - clip: function SVGGraphics_clip(type) { - var current = this.current; - // Add current path to clipping path - current.clipId = 'clippath' + clipCount; - clipCount++; - this.clippath = document.createElementNS(NS, 'svg:clipPath'); - this.clippath.setAttributeNS(null, 'id', current.clipId); - var clipElement = current.element.cloneNode(); - if (type === 'evenodd') { - clipElement.setAttributeNS(null, 'clip-rule', 'evenodd'); - } else { - clipElement.setAttributeNS(null, 'clip-rule', 'nonzero'); - } - this.clippath.setAttributeNS(null, 'transform', pm(this.transformMatrix)); - this.clippath.appendChild(clipElement); - this.defs.appendChild(this.clippath); - - // Create a new group with that attribute - current.pendingClip = true; - this.cgrp = document.createElementNS(NS, 'svg:g'); - this.cgrp.setAttributeNS(null, 'clip-path', - 'url(#' + current.clipId + ')'); - this.pgrp.appendChild(this.cgrp); - }, - - closePath: function SVGGraphics_closePath() { - var current = this.current; - var d = current.path.getAttributeNS(null, 'd'); - d += 'Z'; - current.path.setAttributeNS(null, 'd', d); - }, - - setLeading: function SVGGraphics_setLeading(leading) { - this.current.leading = -leading; - }, - - setTextRise: function SVGGraphics_setTextRise(textRise) { - this.current.textRise = textRise; - }, - - setHScale: function SVGGraphics_setHScale(scale) { - this.current.textHScale = scale / 100; - }, - - setGState: function SVGGraphics_setGState(states) { - for (var i = 0, ii = states.length; i < ii; i++) { - var state = states[i]; - var key = state[0]; - var value = state[1]; - - switch (key) { - case 'LW': - this.setLineWidth(value); - break; - case 'LC': - this.setLineCap(value); - break; - case 'LJ': - this.setLineJoin(value); - break; - case 'ML': - this.setMiterLimit(value); - break; - case 'D': - this.setDash(value[0], value[1]); - break; - case 'RI': - break; - case 'FL': - break; - case 'Font': - this.setFont(value); - break; - case 'CA': - break; - case 'ca': - break; - case 'BM': - break; - case 'SMask': - break; - } - } - }, - - fill: function SVGGraphics_fill() { - var current = this.current; - current.element.setAttributeNS(null, 'fill', current.fillColor); - }, - - stroke: function SVGGraphics_stroke() { - var current = this.current; - current.element.setAttributeNS(null, 'stroke', current.strokeColor); - current.element.setAttributeNS(null, 'fill', 'none'); - }, - - eoFill: function SVGGraphics_eoFill() { - var current = this.current; - current.element.setAttributeNS(null, 'fill', current.fillColor); - current.element.setAttributeNS(null, 'fill-rule', 'evenodd'); - }, - - fillStroke: function SVGGraphics_fillStroke() { - // Order is important since stroke wants fill to be none. - // First stroke, then if fill needed, it will be overwritten. - this.stroke(); - this.fill(); - }, - - eoFillStroke: function SVGGraphics_eoFillStroke() { - this.current.element.setAttributeNS(null, 'fill-rule', 'evenodd'); - this.fillStroke(); - }, - - closeStroke: function SVGGraphics_closeStroke() { - this.closePath(); - this.stroke(); - }, - - closeFillStroke: function SVGGraphics_closeFillStroke() { - this.closePath(); - this.fillStroke(); - }, - - paintSolidColorImageMask: - function SVGGraphics_paintSolidColorImageMask() { - var current = this.current; - var rect = document.createElementNS(NS, 'svg:rect'); - rect.setAttributeNS(null, 'x', '0'); - rect.setAttributeNS(null, 'y', '0'); - rect.setAttributeNS(null, 'width', '1px'); - rect.setAttributeNS(null, 'height', '1px'); - rect.setAttributeNS(null, 'fill', current.fillColor); - this.tgrp.appendChild(rect); - }, - - paintJpegXObject: function SVGGraphics_paintJpegXObject(objId, w, h) { - var current = this.current; - var imgObj = this.objs.get(objId); - var imgEl = document.createElementNS(NS, 'svg:image'); - imgEl.setAttributeNS(XLINK_NS, 'xlink:href', imgObj.src); - imgEl.setAttributeNS(null, 'width', imgObj.width + 'px'); - imgEl.setAttributeNS(null, 'height', imgObj.height + 'px'); - imgEl.setAttributeNS(null, 'x', '0'); - imgEl.setAttributeNS(null, 'y', pf(-h)); - imgEl.setAttributeNS(null, 'transform', - 'scale(' + pf(1 / w) + ' ' + pf(-1 / h) + ')'); - - this.tgrp.appendChild(imgEl); - if (current.pendingClip) { - this.cgrp.appendChild(this.tgrp); - this.pgrp.appendChild(this.cgrp); - } else { - this.pgrp.appendChild(this.tgrp); - } - }, - - paintImageXObject: function SVGGraphics_paintImageXObject(objId) { - var imgData = this.objs.get(objId); - if (!imgData) { - warn('Dependent image isn\'t ready yet'); - return; - } - this.paintInlineImageXObject(imgData); - }, - - paintInlineImageXObject: - function SVGGraphics_paintInlineImageXObject(imgData, mask) { - var current = this.current; - var width = imgData.width; - var height = imgData.height; - - var imgSrc = convertImgDataToPng(imgData); - var cliprect = document.createElementNS(NS, 'svg:rect'); - cliprect.setAttributeNS(null, 'x', '0'); - cliprect.setAttributeNS(null, 'y', '0'); - cliprect.setAttributeNS(null, 'width', pf(width)); - cliprect.setAttributeNS(null, 'height', pf(height)); - current.element = cliprect; - this.clip('nonzero'); - var imgEl = document.createElementNS(NS, 'svg:image'); - imgEl.setAttributeNS(XLINK_NS, 'xlink:href', imgSrc); - imgEl.setAttributeNS(null, 'x', '0'); - imgEl.setAttributeNS(null, 'y', pf(-height)); - imgEl.setAttributeNS(null, 'width', pf(width) + 'px'); - imgEl.setAttributeNS(null, 'height', pf(height) + 'px'); - imgEl.setAttributeNS(null, 'transform', - 'scale(' + pf(1 / width) + ' ' + - pf(-1 / height) + ')'); - if (mask) { - mask.appendChild(imgEl); - } else { - this.tgrp.appendChild(imgEl); - } - if (current.pendingClip) { - this.cgrp.appendChild(this.tgrp); - this.pgrp.appendChild(this.cgrp); - } else { - this.pgrp.appendChild(this.tgrp); - } - }, - - paintImageMaskXObject: - function SVGGraphics_paintImageMaskXObject(imgData) { - var current = this.current; - var width = imgData.width; - var height = imgData.height; - var fillColor = current.fillColor; - - current.maskId = 'mask' + maskCount++; - var mask = document.createElementNS(NS, 'svg:mask'); - mask.setAttributeNS(null, 'id', current.maskId); - - var rect = document.createElementNS(NS, 'svg:rect'); - rect.setAttributeNS(null, 'x', '0'); - rect.setAttributeNS(null, 'y', '0'); - rect.setAttributeNS(null, 'width', pf(width)); - rect.setAttributeNS(null, 'height', pf(height)); - rect.setAttributeNS(null, 'fill', fillColor); - rect.setAttributeNS(null, 'mask', 'url(#' + current.maskId +')'); - this.defs.appendChild(mask); - this.tgrp.appendChild(rect); - - this.paintInlineImageXObject(imgData, mask); - }, - - paintFormXObjectBegin: - function SVGGraphics_paintFormXObjectBegin(matrix, bbox) { - this.save(); - - if (isArray(matrix) && matrix.length === 6) { - this.transform(matrix[0], matrix[1], matrix[2], - matrix[3], matrix[4], matrix[5]); - } - - if (isArray(bbox) && bbox.length === 4) { - var width = bbox[2] - bbox[0]; - var height = bbox[3] - bbox[1]; - - var cliprect = document.createElementNS(NS, 'svg:rect'); - cliprect.setAttributeNS(null, 'x', bbox[0]); - cliprect.setAttributeNS(null, 'y', bbox[1]); - cliprect.setAttributeNS(null, 'width', pf(width)); - cliprect.setAttributeNS(null, 'height', pf(height)); - this.current.element = cliprect; - this.clip('nonzero'); - this.endPath(); - } - }, - - paintFormXObjectEnd: - function SVGGraphics_paintFormXObjectEnd() { - this.restore(); - } - }; - return SVGGraphics; -})(); - -PDFJS.SVGGraphics = SVGGraphics; - -exports.SVGGraphics = SVGGraphics; -})); - - -(function (root, factory) { - { - factory((root.pdfjsDisplayTextLayer = {}), root.pdfjsSharedUtil, - root.pdfjsDisplayDOMUtils, root.pdfjsSharedGlobal); - } -}(this, function (exports, sharedUtil, displayDOMUtils, sharedGlobal) { - -var Util = sharedUtil.Util; -var createPromiseCapability = sharedUtil.createPromiseCapability; -var CustomStyle = displayDOMUtils.CustomStyle; -var PDFJS = sharedGlobal.PDFJS; - -/** - * Text layer render parameters. - * - * @typedef {Object} TextLayerRenderParameters - * @property {TextContent} textContent - Text content to render (the object is - * returned by the page's getTextContent() method). - * @property {HTMLElement} container - HTML element that will contain text runs. - * @property {PDFJS.PageViewport} viewport - The target viewport to properly - * layout the text runs. - * @property {Array} textDivs - (optional) HTML elements that are correspond - * the text items of the textContent input. This is output and shall be - * initially be set to empty array. - * @property {number} timeout - (optional) Delay in milliseconds before - * rendering of the text runs occurs. - */ -var renderTextLayer = (function renderTextLayerClosure() { - var MAX_TEXT_DIVS_TO_RENDER = 100000; - - var NonWhitespaceRegexp = /\S/; - - function isAllWhitespace(str) { - return !NonWhitespaceRegexp.test(str); - } - - function appendText(textDivs, viewport, geom, styles) { - var style = styles[geom.fontName]; - var textDiv = document.createElement('div'); - textDivs.push(textDiv); - if (isAllWhitespace(geom.str)) { - textDiv.dataset.isWhitespace = true; - return; - } - var tx = Util.transform(viewport.transform, geom.transform); - var angle = Math.atan2(tx[1], tx[0]); - if (style.vertical) { - angle += Math.PI / 2; - } - var fontHeight = Math.sqrt((tx[2] * tx[2]) + (tx[3] * tx[3])); - var fontAscent = fontHeight; - if (style.ascent) { - fontAscent = style.ascent * fontAscent; - } else if (style.descent) { - fontAscent = (1 + style.descent) * fontAscent; - } - - var left; - var top; - if (angle === 0) { - left = tx[4]; - top = tx[5] - fontAscent; - } else { - left = tx[4] + (fontAscent * Math.sin(angle)); - top = tx[5] - (fontAscent * Math.cos(angle)); - } - textDiv.style.left = left + 'px'; - textDiv.style.top = top + 'px'; - textDiv.style.fontSize = fontHeight + 'px'; - textDiv.style.fontFamily = style.fontFamily; - - textDiv.textContent = geom.str; - // |fontName| is only used by the Font Inspector. This test will succeed - // when e.g. the Font Inspector is off but the Stepper is on, but it's - // not worth the effort to do a more accurate test. - if (PDFJS.pdfBug) { - textDiv.dataset.fontName = geom.fontName; - } - // Storing into dataset will convert number into string. - if (angle !== 0) { - textDiv.dataset.angle = angle * (180 / Math.PI); - } - // We don't bother scaling single-char text divs, because it has very - // little effect on text highlighting. This makes scrolling on docs with - // lots of such divs a lot faster. - if (geom.str.length > 1) { - if (style.vertical) { - textDiv.dataset.canvasWidth = geom.height * viewport.scale; - } else { - textDiv.dataset.canvasWidth = geom.width * viewport.scale; - } - } - } - - function render(task) { - if (task._canceled) { - return; - } - var textLayerFrag = task._container; - var textDivs = task._textDivs; - var capability = task._capability; - var textDivsLength = textDivs.length; - - // No point in rendering many divs as it would make the browser - // unusable even after the divs are rendered. - if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) { - capability.resolve(); - return; - } - - var canvas = document.createElement('canvas'); - canvas.mozOpaque = true; - var ctx = canvas.getContext('2d', {alpha: false}); - - var lastFontSize; - var lastFontFamily; - for (var i = 0; i < textDivsLength; i++) { - var textDiv = textDivs[i]; - if (textDiv.dataset.isWhitespace !== undefined) { - continue; - } - - var fontSize = textDiv.style.fontSize; - var fontFamily = textDiv.style.fontFamily; - - // Only build font string and set to context if different from last. - if (fontSize !== lastFontSize || fontFamily !== lastFontFamily) { - ctx.font = fontSize + ' ' + fontFamily; - lastFontSize = fontSize; - lastFontFamily = fontFamily; - } - - var width = ctx.measureText(textDiv.textContent).width; - if (width > 0) { - textLayerFrag.appendChild(textDiv); - var transform; - if (textDiv.dataset.canvasWidth !== undefined) { - // Dataset values come of type string. - var textScale = textDiv.dataset.canvasWidth / width; - transform = 'scaleX(' + textScale + ')'; - } else { - transform = ''; - } - var rotation = textDiv.dataset.angle; - if (rotation) { - transform = 'rotate(' + rotation + 'deg) ' + transform; - } - if (transform) { - CustomStyle.setProp('transform' , textDiv, transform); - } - } - } - capability.resolve(); - } - - /** - * Text layer rendering task. - * - * @param {TextContent} textContent - * @param {HTMLElement} container - * @param {PDFJS.PageViewport} viewport - * @param {Array} textDivs - * @private - */ - function TextLayerRenderTask(textContent, container, viewport, textDivs) { - this._textContent = textContent; - this._container = container; - this._viewport = viewport; - textDivs = textDivs || []; - this._textDivs = textDivs; - this._canceled = false; - this._capability = createPromiseCapability(); - this._renderTimer = null; - } - TextLayerRenderTask.prototype = { - get promise() { - return this._capability.promise; - }, - - cancel: function TextLayer_cancel() { - this._canceled = true; - if (this._renderTimer !== null) { - clearTimeout(this._renderTimer); - this._renderTimer = null; - } - this._capability.reject('canceled'); - }, - - _render: function TextLayer_render(timeout) { - var textItems = this._textContent.items; - var styles = this._textContent.styles; - var textDivs = this._textDivs; - var viewport = this._viewport; - for (var i = 0, len = textItems.length; i < len; i++) { - appendText(textDivs, viewport, textItems[i], styles); - } - - if (!timeout) { // Render right away - render(this); - } else { // Schedule - var self = this; - this._renderTimer = setTimeout(function() { - render(self); - self._renderTimer = null; - }, timeout); - } - } - }; - - - /** - * Starts rendering of the text layer. - * - * @param {TextLayerRenderParameters} renderParameters - * @returns {TextLayerRenderTask} - */ - function renderTextLayer(renderParameters) { - var task = new TextLayerRenderTask(renderParameters.textContent, - renderParameters.container, - renderParameters.viewport, - renderParameters.textDivs); - task._render(renderParameters.timeout); - return task; - } - - return renderTextLayer; -})(); - -PDFJS.renderTextLayer = renderTextLayer; - -exports.renderTextLayer = renderTextLayer; -})); - - -(function (root, factory) { - { - factory((root.pdfjsDisplayWebGL = {}), root.pdfjsSharedUtil); - } -}(this, function (exports, sharedUtil) { - -var shadow = sharedUtil.shadow; - -var WebGLUtils = (function WebGLUtilsClosure() { - function loadShader(gl, code, shaderType) { - var shader = gl.createShader(shaderType); - gl.shaderSource(shader, code); - gl.compileShader(shader); - var compiled = gl.getShaderParameter(shader, gl.COMPILE_STATUS); - if (!compiled) { - var errorMsg = gl.getShaderInfoLog(shader); - throw new Error('Error during shader compilation: ' + errorMsg); - } - return shader; - } - function createVertexShader(gl, code) { - return loadShader(gl, code, gl.VERTEX_SHADER); - } - function createFragmentShader(gl, code) { - return loadShader(gl, code, gl.FRAGMENT_SHADER); - } - function createProgram(gl, shaders) { - var program = gl.createProgram(); - for (var i = 0, ii = shaders.length; i < ii; ++i) { - gl.attachShader(program, shaders[i]); - } - gl.linkProgram(program); - var linked = gl.getProgramParameter(program, gl.LINK_STATUS); - if (!linked) { - var errorMsg = gl.getProgramInfoLog(program); - throw new Error('Error during program linking: ' + errorMsg); - } - return program; - } - function createTexture(gl, image, textureId) { - gl.activeTexture(textureId); - var texture = gl.createTexture(); - gl.bindTexture(gl.TEXTURE_2D, texture); - - // Set the parameters so we can render any size image. - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); - - // Upload the image into the texture. - gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image); - return texture; - } - - var currentGL, currentCanvas; - function generateGL() { - if (currentGL) { - return; - } - currentCanvas = document.createElement('canvas'); - currentGL = currentCanvas.getContext('webgl', - { premultipliedalpha: false }); - } - - var smaskVertexShaderCode = '\ - attribute vec2 a_position; \ - attribute vec2 a_texCoord; \ - \ - uniform vec2 u_resolution; \ - \ - varying vec2 v_texCoord; \ - \ - void main() { \ - vec2 clipSpace = (a_position / u_resolution) * 2.0 - 1.0; \ - gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1); \ - \ - v_texCoord = a_texCoord; \ - } '; - - var smaskFragmentShaderCode = '\ - precision mediump float; \ - \ - uniform vec4 u_backdrop; \ - uniform int u_subtype; \ - uniform sampler2D u_image; \ - uniform sampler2D u_mask; \ - \ - varying vec2 v_texCoord; \ - \ - void main() { \ - vec4 imageColor = texture2D(u_image, v_texCoord); \ - vec4 maskColor = texture2D(u_mask, v_texCoord); \ - if (u_backdrop.a > 0.0) { \ - maskColor.rgb = maskColor.rgb * maskColor.a + \ - u_backdrop.rgb * (1.0 - maskColor.a); \ - } \ - float lum; \ - if (u_subtype == 0) { \ - lum = maskColor.a; \ - } else { \ - lum = maskColor.r * 0.3 + maskColor.g * 0.59 + \ - maskColor.b * 0.11; \ - } \ - imageColor.a *= lum; \ - imageColor.rgb *= imageColor.a; \ - gl_FragColor = imageColor; \ - } '; - - var smaskCache = null; - - function initSmaskGL() { - var canvas, gl; - - generateGL(); - canvas = currentCanvas; - currentCanvas = null; - gl = currentGL; - currentGL = null; - - // setup a GLSL program - var vertexShader = createVertexShader(gl, smaskVertexShaderCode); - var fragmentShader = createFragmentShader(gl, smaskFragmentShaderCode); - var program = createProgram(gl, [vertexShader, fragmentShader]); - gl.useProgram(program); - - var cache = {}; - cache.gl = gl; - cache.canvas = canvas; - cache.resolutionLocation = gl.getUniformLocation(program, 'u_resolution'); - cache.positionLocation = gl.getAttribLocation(program, 'a_position'); - cache.backdropLocation = gl.getUniformLocation(program, 'u_backdrop'); - cache.subtypeLocation = gl.getUniformLocation(program, 'u_subtype'); - - var texCoordLocation = gl.getAttribLocation(program, 'a_texCoord'); - var texLayerLocation = gl.getUniformLocation(program, 'u_image'); - var texMaskLocation = gl.getUniformLocation(program, 'u_mask'); - - // provide texture coordinates for the rectangle. - var texCoordBuffer = gl.createBuffer(); - gl.bindBuffer(gl.ARRAY_BUFFER, texCoordBuffer); - gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([ - 0.0, 0.0, - 1.0, 0.0, - 0.0, 1.0, - 0.0, 1.0, - 1.0, 0.0, - 1.0, 1.0]), gl.STATIC_DRAW); - gl.enableVertexAttribArray(texCoordLocation); - gl.vertexAttribPointer(texCoordLocation, 2, gl.FLOAT, false, 0, 0); - - gl.uniform1i(texLayerLocation, 0); - gl.uniform1i(texMaskLocation, 1); - - smaskCache = cache; - } - - function composeSMask(layer, mask, properties) { - var width = layer.width, height = layer.height; - - if (!smaskCache) { - initSmaskGL(); - } - var cache = smaskCache,canvas = cache.canvas, gl = cache.gl; - canvas.width = width; - canvas.height = height; - gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight); - gl.uniform2f(cache.resolutionLocation, width, height); - - if (properties.backdrop) { - gl.uniform4f(cache.resolutionLocation, properties.backdrop[0], - properties.backdrop[1], properties.backdrop[2], 1); - } else { - gl.uniform4f(cache.resolutionLocation, 0, 0, 0, 0); - } - gl.uniform1i(cache.subtypeLocation, - properties.subtype === 'Luminosity' ? 1 : 0); - - // Create a textures - var texture = createTexture(gl, layer, gl.TEXTURE0); - var maskTexture = createTexture(gl, mask, gl.TEXTURE1); - - - // Create a buffer and put a single clipspace rectangle in - // it (2 triangles) - var buffer = gl.createBuffer(); - gl.bindBuffer(gl.ARRAY_BUFFER, buffer); - gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([ - 0, 0, - width, 0, - 0, height, - 0, height, - width, 0, - width, height]), gl.STATIC_DRAW); - gl.enableVertexAttribArray(cache.positionLocation); - gl.vertexAttribPointer(cache.positionLocation, 2, gl.FLOAT, false, 0, 0); - - // draw - gl.clearColor(0, 0, 0, 0); - gl.enable(gl.BLEND); - gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA); - gl.clear(gl.COLOR_BUFFER_BIT); - - gl.drawArrays(gl.TRIANGLES, 0, 6); - - gl.flush(); - - gl.deleteTexture(texture); - gl.deleteTexture(maskTexture); - gl.deleteBuffer(buffer); - - return canvas; - } - - var figuresVertexShaderCode = '\ - attribute vec2 a_position; \ - attribute vec3 a_color; \ - \ - uniform vec2 u_resolution; \ - uniform vec2 u_scale; \ - uniform vec2 u_offset; \ - \ - varying vec4 v_color; \ - \ - void main() { \ - vec2 position = (a_position + u_offset) * u_scale; \ - vec2 clipSpace = (position / u_resolution) * 2.0 - 1.0; \ - gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1); \ - \ - v_color = vec4(a_color / 255.0, 1.0); \ - } '; - - var figuresFragmentShaderCode = '\ - precision mediump float; \ - \ - varying vec4 v_color; \ - \ - void main() { \ - gl_FragColor = v_color; \ - } '; - - var figuresCache = null; - - function initFiguresGL() { - var canvas, gl; - - generateGL(); - canvas = currentCanvas; - currentCanvas = null; - gl = currentGL; - currentGL = null; - - // setup a GLSL program - var vertexShader = createVertexShader(gl, figuresVertexShaderCode); - var fragmentShader = createFragmentShader(gl, figuresFragmentShaderCode); - var program = createProgram(gl, [vertexShader, fragmentShader]); - gl.useProgram(program); - - var cache = {}; - cache.gl = gl; - cache.canvas = canvas; - cache.resolutionLocation = gl.getUniformLocation(program, 'u_resolution'); - cache.scaleLocation = gl.getUniformLocation(program, 'u_scale'); - cache.offsetLocation = gl.getUniformLocation(program, 'u_offset'); - cache.positionLocation = gl.getAttribLocation(program, 'a_position'); - cache.colorLocation = gl.getAttribLocation(program, 'a_color'); - - figuresCache = cache; - } - - function drawFigures(width, height, backgroundColor, figures, context) { - if (!figuresCache) { - initFiguresGL(); - } - var cache = figuresCache, canvas = cache.canvas, gl = cache.gl; - - canvas.width = width; - canvas.height = height; - gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight); - gl.uniform2f(cache.resolutionLocation, width, height); - - // count triangle points - var count = 0; - var i, ii, rows; - for (i = 0, ii = figures.length; i < ii; i++) { - switch (figures[i].type) { - case 'lattice': - rows = (figures[i].coords.length / figures[i].verticesPerRow) | 0; - count += (rows - 1) * (figures[i].verticesPerRow - 1) * 6; - break; - case 'triangles': - count += figures[i].coords.length; - break; - } - } - // transfer data - var coords = new Float32Array(count * 2); - var colors = new Uint8Array(count * 3); - var coordsMap = context.coords, colorsMap = context.colors; - var pIndex = 0, cIndex = 0; - for (i = 0, ii = figures.length; i < ii; i++) { - var figure = figures[i], ps = figure.coords, cs = figure.colors; - switch (figure.type) { - case 'lattice': - var cols = figure.verticesPerRow; - rows = (ps.length / cols) | 0; - for (var row = 1; row < rows; row++) { - var offset = row * cols + 1; - for (var col = 1; col < cols; col++, offset++) { - coords[pIndex] = coordsMap[ps[offset - cols - 1]]; - coords[pIndex + 1] = coordsMap[ps[offset - cols - 1] + 1]; - coords[pIndex + 2] = coordsMap[ps[offset - cols]]; - coords[pIndex + 3] = coordsMap[ps[offset - cols] + 1]; - coords[pIndex + 4] = coordsMap[ps[offset - 1]]; - coords[pIndex + 5] = coordsMap[ps[offset - 1] + 1]; - colors[cIndex] = colorsMap[cs[offset - cols - 1]]; - colors[cIndex + 1] = colorsMap[cs[offset - cols - 1] + 1]; - colors[cIndex + 2] = colorsMap[cs[offset - cols - 1] + 2]; - colors[cIndex + 3] = colorsMap[cs[offset - cols]]; - colors[cIndex + 4] = colorsMap[cs[offset - cols] + 1]; - colors[cIndex + 5] = colorsMap[cs[offset - cols] + 2]; - colors[cIndex + 6] = colorsMap[cs[offset - 1]]; - colors[cIndex + 7] = colorsMap[cs[offset - 1] + 1]; - colors[cIndex + 8] = colorsMap[cs[offset - 1] + 2]; - - coords[pIndex + 6] = coords[pIndex + 2]; - coords[pIndex + 7] = coords[pIndex + 3]; - coords[pIndex + 8] = coords[pIndex + 4]; - coords[pIndex + 9] = coords[pIndex + 5]; - coords[pIndex + 10] = coordsMap[ps[offset]]; - coords[pIndex + 11] = coordsMap[ps[offset] + 1]; - colors[cIndex + 9] = colors[cIndex + 3]; - colors[cIndex + 10] = colors[cIndex + 4]; - colors[cIndex + 11] = colors[cIndex + 5]; - colors[cIndex + 12] = colors[cIndex + 6]; - colors[cIndex + 13] = colors[cIndex + 7]; - colors[cIndex + 14] = colors[cIndex + 8]; - colors[cIndex + 15] = colorsMap[cs[offset]]; - colors[cIndex + 16] = colorsMap[cs[offset] + 1]; - colors[cIndex + 17] = colorsMap[cs[offset] + 2]; - pIndex += 12; - cIndex += 18; - } - } - break; - case 'triangles': - for (var j = 0, jj = ps.length; j < jj; j++) { - coords[pIndex] = coordsMap[ps[j]]; - coords[pIndex + 1] = coordsMap[ps[j] + 1]; - colors[cIndex] = colorsMap[cs[j]]; - colors[cIndex + 1] = colorsMap[cs[j] + 1]; - colors[cIndex + 2] = colorsMap[cs[j] + 2]; - pIndex += 2; - cIndex += 3; - } - break; - } - } - - // draw - if (backgroundColor) { - gl.clearColor(backgroundColor[0] / 255, backgroundColor[1] / 255, - backgroundColor[2] / 255, 1.0); - } else { - gl.clearColor(0, 0, 0, 0); - } - gl.clear(gl.COLOR_BUFFER_BIT); - - var coordsBuffer = gl.createBuffer(); - gl.bindBuffer(gl.ARRAY_BUFFER, coordsBuffer); - gl.bufferData(gl.ARRAY_BUFFER, coords, gl.STATIC_DRAW); - gl.enableVertexAttribArray(cache.positionLocation); - gl.vertexAttribPointer(cache.positionLocation, 2, gl.FLOAT, false, 0, 0); - - var colorsBuffer = gl.createBuffer(); - gl.bindBuffer(gl.ARRAY_BUFFER, colorsBuffer); - gl.bufferData(gl.ARRAY_BUFFER, colors, gl.STATIC_DRAW); - gl.enableVertexAttribArray(cache.colorLocation); - gl.vertexAttribPointer(cache.colorLocation, 3, gl.UNSIGNED_BYTE, false, - 0, 0); - - gl.uniform2f(cache.scaleLocation, context.scaleX, context.scaleY); - gl.uniform2f(cache.offsetLocation, context.offsetX, context.offsetY); - - gl.drawArrays(gl.TRIANGLES, 0, count); - - gl.flush(); - - gl.deleteBuffer(coordsBuffer); - gl.deleteBuffer(colorsBuffer); - - return canvas; - } - - function cleanup() { - if (smaskCache && smaskCache.canvas) { - smaskCache.canvas.width = 0; - smaskCache.canvas.height = 0; - } - if (figuresCache && figuresCache.canvas) { - figuresCache.canvas.width = 0; - figuresCache.canvas.height = 0; - } - smaskCache = null; - figuresCache = null; - } - - return { - get isEnabled() { - if (PDFJS.disableWebGL) { - return false; - } - var enabled = false; - try { - generateGL(); - enabled = !!currentGL; - } catch (e) { } - return shadow(this, 'isEnabled', enabled); - }, - composeSMask: composeSMask, - drawFigures: drawFigures, - clear: cleanup - }; -})(); - -exports.WebGLUtils = WebGLUtils; -})); - - -(function (root, factory) { - { - factory((root.pdfjsDisplayPatternHelper = {}), root.pdfjsSharedUtil, - root.pdfjsDisplayWebGL); - } -}(this, function (exports, sharedUtil, displayWebGL) { - -var Util = sharedUtil.Util; -var info = sharedUtil.info; -var isArray = sharedUtil.isArray; -var error = sharedUtil.error; -var WebGLUtils = displayWebGL.WebGLUtils; - -var ShadingIRs = {}; - -ShadingIRs.RadialAxial = { - fromIR: function RadialAxial_fromIR(raw) { - var type = raw[1]; - var colorStops = raw[2]; - var p0 = raw[3]; - var p1 = raw[4]; - var r0 = raw[5]; - var r1 = raw[6]; - return { - type: 'Pattern', - getPattern: function RadialAxial_getPattern(ctx) { - var grad; - if (type === 'axial') { - grad = ctx.createLinearGradient(p0[0], p0[1], p1[0], p1[1]); - } else if (type === 'radial') { - grad = ctx.createRadialGradient(p0[0], p0[1], r0, p1[0], p1[1], r1); - } - - for (var i = 0, ii = colorStops.length; i < ii; ++i) { - var c = colorStops[i]; - grad.addColorStop(c[0], c[1]); - } - return grad; - } - }; - } -}; - -var createMeshCanvas = (function createMeshCanvasClosure() { - function drawTriangle(data, context, p1, p2, p3, c1, c2, c3) { - // Very basic Gouraud-shaded triangle rasterization algorithm. - var coords = context.coords, colors = context.colors; - var bytes = data.data, rowSize = data.width * 4; - var tmp; - if (coords[p1 + 1] > coords[p2 + 1]) { - tmp = p1; p1 = p2; p2 = tmp; tmp = c1; c1 = c2; c2 = tmp; - } - if (coords[p2 + 1] > coords[p3 + 1]) { - tmp = p2; p2 = p3; p3 = tmp; tmp = c2; c2 = c3; c3 = tmp; - } - if (coords[p1 + 1] > coords[p2 + 1]) { - tmp = p1; p1 = p2; p2 = tmp; tmp = c1; c1 = c2; c2 = tmp; - } - var x1 = (coords[p1] + context.offsetX) * context.scaleX; - var y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY; - var x2 = (coords[p2] + context.offsetX) * context.scaleX; - var y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY; - var x3 = (coords[p3] + context.offsetX) * context.scaleX; - var y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY; - if (y1 >= y3) { - return; - } - var c1r = colors[c1], c1g = colors[c1 + 1], c1b = colors[c1 + 2]; - var c2r = colors[c2], c2g = colors[c2 + 1], c2b = colors[c2 + 2]; - var c3r = colors[c3], c3g = colors[c3 + 1], c3b = colors[c3 + 2]; - - var minY = Math.round(y1), maxY = Math.round(y3); - var xa, car, cag, cab; - var xb, cbr, cbg, cbb; - var k; - for (var y = minY; y <= maxY; y++) { - if (y < y2) { - k = y < y1 ? 0 : y1 === y2 ? 1 : (y1 - y) / (y1 - y2); - xa = x1 - (x1 - x2) * k; - car = c1r - (c1r - c2r) * k; - cag = c1g - (c1g - c2g) * k; - cab = c1b - (c1b - c2b) * k; - } else { - k = y > y3 ? 1 : y2 === y3 ? 0 : (y2 - y) / (y2 - y3); - xa = x2 - (x2 - x3) * k; - car = c2r - (c2r - c3r) * k; - cag = c2g - (c2g - c3g) * k; - cab = c2b - (c2b - c3b) * k; - } - k = y < y1 ? 0 : y > y3 ? 1 : (y1 - y) / (y1 - y3); - xb = x1 - (x1 - x3) * k; - cbr = c1r - (c1r - c3r) * k; - cbg = c1g - (c1g - c3g) * k; - cbb = c1b - (c1b - c3b) * k; - var x1_ = Math.round(Math.min(xa, xb)); - var x2_ = Math.round(Math.max(xa, xb)); - var j = rowSize * y + x1_ * 4; - for (var x = x1_; x <= x2_; x++) { - k = (xa - x) / (xa - xb); - k = k < 0 ? 0 : k > 1 ? 1 : k; - bytes[j++] = (car - (car - cbr) * k) | 0; - bytes[j++] = (cag - (cag - cbg) * k) | 0; - bytes[j++] = (cab - (cab - cbb) * k) | 0; - bytes[j++] = 255; - } - } - } - - function drawFigure(data, figure, context) { - var ps = figure.coords; - var cs = figure.colors; - var i, ii; - switch (figure.type) { - case 'lattice': - var verticesPerRow = figure.verticesPerRow; - var rows = Math.floor(ps.length / verticesPerRow) - 1; - var cols = verticesPerRow - 1; - for (i = 0; i < rows; i++) { - var q = i * verticesPerRow; - for (var j = 0; j < cols; j++, q++) { - drawTriangle(data, context, - ps[q], ps[q + 1], ps[q + verticesPerRow], - cs[q], cs[q + 1], cs[q + verticesPerRow]); - drawTriangle(data, context, - ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow], - cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]); - } - } - break; - case 'triangles': - for (i = 0, ii = ps.length; i < ii; i += 3) { - drawTriangle(data, context, - ps[i], ps[i + 1], ps[i + 2], - cs[i], cs[i + 1], cs[i + 2]); - } - break; - default: - error('illigal figure'); - break; - } - } - - function createMeshCanvas(bounds, combinesScale, coords, colors, figures, - backgroundColor, cachedCanvases) { - // we will increase scale on some weird factor to let antialiasing take - // care of "rough" edges - var EXPECTED_SCALE = 1.1; - // MAX_PATTERN_SIZE is used to avoid OOM situation. - var MAX_PATTERN_SIZE = 3000; // 10in @ 300dpi shall be enough - - var offsetX = Math.floor(bounds[0]); - var offsetY = Math.floor(bounds[1]); - var boundsWidth = Math.ceil(bounds[2]) - offsetX; - var boundsHeight = Math.ceil(bounds[3]) - offsetY; - - var width = Math.min(Math.ceil(Math.abs(boundsWidth * combinesScale[0] * - EXPECTED_SCALE)), MAX_PATTERN_SIZE); - var height = Math.min(Math.ceil(Math.abs(boundsHeight * combinesScale[1] * - EXPECTED_SCALE)), MAX_PATTERN_SIZE); - var scaleX = boundsWidth / width; - var scaleY = boundsHeight / height; - - var context = { - coords: coords, - colors: colors, - offsetX: -offsetX, - offsetY: -offsetY, - scaleX: 1 / scaleX, - scaleY: 1 / scaleY - }; - - var canvas, tmpCanvas, i, ii; - if (WebGLUtils.isEnabled) { - canvas = WebGLUtils.drawFigures(width, height, backgroundColor, - figures, context); - - // https://bugzilla.mozilla.org/show_bug.cgi?id=972126 - tmpCanvas = cachedCanvases.getCanvas('mesh', width, height, false); - tmpCanvas.context.drawImage(canvas, 0, 0); - canvas = tmpCanvas.canvas; - } else { - tmpCanvas = cachedCanvases.getCanvas('mesh', width, height, false); - var tmpCtx = tmpCanvas.context; - - var data = tmpCtx.createImageData(width, height); - if (backgroundColor) { - var bytes = data.data; - for (i = 0, ii = bytes.length; i < ii; i += 4) { - bytes[i] = backgroundColor[0]; - bytes[i + 1] = backgroundColor[1]; - bytes[i + 2] = backgroundColor[2]; - bytes[i + 3] = 255; - } - } - for (i = 0; i < figures.length; i++) { - drawFigure(data, figures[i], context); - } - tmpCtx.putImageData(data, 0, 0); - canvas = tmpCanvas.canvas; - } - - return {canvas: canvas, offsetX: offsetX, offsetY: offsetY, - scaleX: scaleX, scaleY: scaleY}; - } - return createMeshCanvas; -})(); - -ShadingIRs.Mesh = { - fromIR: function Mesh_fromIR(raw) { - //var type = raw[1]; - var coords = raw[2]; - var colors = raw[3]; - var figures = raw[4]; - var bounds = raw[5]; - var matrix = raw[6]; - //var bbox = raw[7]; - var background = raw[8]; - return { - type: 'Pattern', - getPattern: function Mesh_getPattern(ctx, owner, shadingFill) { - var scale; - if (shadingFill) { - scale = Util.singularValueDecompose2dScale(ctx.mozCurrentTransform); - } else { - // Obtain scale from matrix and current transformation matrix. - scale = Util.singularValueDecompose2dScale(owner.baseTransform); - if (matrix) { - var matrixScale = Util.singularValueDecompose2dScale(matrix); - scale = [scale[0] * matrixScale[0], - scale[1] * matrixScale[1]]; - } - } - - - // Rasterizing on the main thread since sending/queue large canvases - // might cause OOM. - var temporaryPatternCanvas = createMeshCanvas(bounds, scale, coords, - colors, figures, shadingFill ? null : background, - owner.cachedCanvases); - - if (!shadingFill) { - ctx.setTransform.apply(ctx, owner.baseTransform); - if (matrix) { - ctx.transform.apply(ctx, matrix); - } - } - - ctx.translate(temporaryPatternCanvas.offsetX, - temporaryPatternCanvas.offsetY); - ctx.scale(temporaryPatternCanvas.scaleX, - temporaryPatternCanvas.scaleY); - - return ctx.createPattern(temporaryPatternCanvas.canvas, 'no-repeat'); - } - }; - } -}; - -ShadingIRs.Dummy = { - fromIR: function Dummy_fromIR() { - return { - type: 'Pattern', - getPattern: function Dummy_fromIR_getPattern() { - return 'hotpink'; - } - }; - } -}; - -function getShadingPatternFromIR(raw) { - var shadingIR = ShadingIRs[raw[0]]; - if (!shadingIR) { - error('Unknown IR type: ' + raw[0]); - } - return shadingIR.fromIR(raw); -} - -var TilingPattern = (function TilingPatternClosure() { - var PaintType = { - COLORED: 1, - UNCOLORED: 2 - }; - - var MAX_PATTERN_SIZE = 3000; // 10in @ 300dpi shall be enough - - function TilingPattern(IR, color, ctx, canvasGraphicsFactory, baseTransform) { - this.operatorList = IR[2]; - this.matrix = IR[3] || [1, 0, 0, 1, 0, 0]; - this.bbox = IR[4]; - this.xstep = IR[5]; - this.ystep = IR[6]; - this.paintType = IR[7]; - this.tilingType = IR[8]; - this.color = color; - this.canvasGraphicsFactory = canvasGraphicsFactory; - this.baseTransform = baseTransform; - this.type = 'Pattern'; - this.ctx = ctx; - } - - TilingPattern.prototype = { - createPatternCanvas: function TilinPattern_createPatternCanvas(owner) { - var operatorList = this.operatorList; - var bbox = this.bbox; - var xstep = this.xstep; - var ystep = this.ystep; - var paintType = this.paintType; - var tilingType = this.tilingType; - var color = this.color; - var canvasGraphicsFactory = this.canvasGraphicsFactory; - - info('TilingType: ' + tilingType); - - var x0 = bbox[0], y0 = bbox[1], x1 = bbox[2], y1 = bbox[3]; - - var topLeft = [x0, y0]; - // we want the canvas to be as large as the step size - var botRight = [x0 + xstep, y0 + ystep]; - - var width = botRight[0] - topLeft[0]; - var height = botRight[1] - topLeft[1]; - - // Obtain scale from matrix and current transformation matrix. - var matrixScale = Util.singularValueDecompose2dScale(this.matrix); - var curMatrixScale = Util.singularValueDecompose2dScale( - this.baseTransform); - var combinedScale = [matrixScale[0] * curMatrixScale[0], - matrixScale[1] * curMatrixScale[1]]; - - // MAX_PATTERN_SIZE is used to avoid OOM situation. - // Use width and height values that are as close as possible to the end - // result when the pattern is used. Too low value makes the pattern look - // blurry. Too large value makes it look too crispy. - width = Math.min(Math.ceil(Math.abs(width * combinedScale[0])), - MAX_PATTERN_SIZE); - - height = Math.min(Math.ceil(Math.abs(height * combinedScale[1])), - MAX_PATTERN_SIZE); - - var tmpCanvas = owner.cachedCanvases.getCanvas('pattern', - width, height, true); - var tmpCtx = tmpCanvas.context; - var graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx); - graphics.groupLevel = owner.groupLevel; - - this.setFillAndStrokeStyleToContext(tmpCtx, paintType, color); - - this.setScale(width, height, xstep, ystep); - this.transformToScale(graphics); - - // transform coordinates to pattern space - var tmpTranslate = [1, 0, 0, 1, -topLeft[0], -topLeft[1]]; - graphics.transform.apply(graphics, tmpTranslate); - - this.clipBbox(graphics, bbox, x0, y0, x1, y1); - - graphics.executeOperatorList(operatorList); - return tmpCanvas.canvas; - }, - - setScale: function TilingPattern_setScale(width, height, xstep, ystep) { - this.scale = [width / xstep, height / ystep]; - }, - - transformToScale: function TilingPattern_transformToScale(graphics) { - var scale = this.scale; - var tmpScale = [scale[0], 0, 0, scale[1], 0, 0]; - graphics.transform.apply(graphics, tmpScale); - }, - - scaleToContext: function TilingPattern_scaleToContext() { - var scale = this.scale; - this.ctx.scale(1 / scale[0], 1 / scale[1]); - }, - - clipBbox: function clipBbox(graphics, bbox, x0, y0, x1, y1) { - if (bbox && isArray(bbox) && bbox.length === 4) { - var bboxWidth = x1 - x0; - var bboxHeight = y1 - y0; - graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight); - graphics.clip(); - graphics.endPath(); - } - }, - - setFillAndStrokeStyleToContext: - function setFillAndStrokeStyleToContext(context, paintType, color) { - switch (paintType) { - case PaintType.COLORED: - var ctx = this.ctx; - context.fillStyle = ctx.fillStyle; - context.strokeStyle = ctx.strokeStyle; - break; - case PaintType.UNCOLORED: - var cssColor = Util.makeCssRgb(color[0], color[1], color[2]); - context.fillStyle = cssColor; - context.strokeStyle = cssColor; - break; - default: - error('Unsupported paint type: ' + paintType); - } - }, - - getPattern: function TilingPattern_getPattern(ctx, owner) { - var temporaryPatternCanvas = this.createPatternCanvas(owner); - - ctx = this.ctx; - ctx.setTransform.apply(ctx, this.baseTransform); - ctx.transform.apply(ctx, this.matrix); - this.scaleToContext(); - - return ctx.createPattern(temporaryPatternCanvas, 'repeat'); - } - }; - - return TilingPattern; -})(); - -exports.getShadingPatternFromIR = getShadingPatternFromIR; -exports.TilingPattern = TilingPattern; -})); - - -(function (root, factory) { - { - factory((root.pdfjsDisplayCanvas = {}), root.pdfjsSharedUtil, - root.pdfjsDisplayPatternHelper, root.pdfjsDisplayWebGL); - } -}(this, function (exports, sharedUtil, displayPatternHelper, displayWebGL) { - -var FONT_IDENTITY_MATRIX = sharedUtil.FONT_IDENTITY_MATRIX; -var IDENTITY_MATRIX = sharedUtil.IDENTITY_MATRIX; -var ImageKind = sharedUtil.ImageKind; -var OPS = sharedUtil.OPS; -var TextRenderingMode = sharedUtil.TextRenderingMode; -var Uint32ArrayView = sharedUtil.Uint32ArrayView; -var Util = sharedUtil.Util; -var assert = sharedUtil.assert; -var info = sharedUtil.info; -var isNum = sharedUtil.isNum; -var isArray = sharedUtil.isArray; -var error = sharedUtil.error; -var shadow = sharedUtil.shadow; -var warn = sharedUtil.warn; -var TilingPattern = displayPatternHelper.TilingPattern; -var getShadingPatternFromIR = displayPatternHelper.getShadingPatternFromIR; -var WebGLUtils = displayWebGL.WebGLUtils; - -// contexts store most of the state we need natively. -// However, PDF needs a bit more state, which we store here. - -// Minimal font size that would be used during canvas fillText operations. -var MIN_FONT_SIZE = 16; -// Maximum font size that would be used during canvas fillText operations. -var MAX_FONT_SIZE = 100; -var MAX_GROUP_SIZE = 4096; - -// Heuristic value used when enforcing minimum line widths. -var MIN_WIDTH_FACTOR = 0.65; - -var COMPILE_TYPE3_GLYPHS = true; -var MAX_SIZE_TO_COMPILE = 1000; - -var FULL_CHUNK_HEIGHT = 16; - -function createScratchCanvas(width, height) { - var canvas = document.createElement('canvas'); - canvas.width = width; - canvas.height = height; - return canvas; -} - -function addContextCurrentTransform(ctx) { - // If the context doesn't expose a `mozCurrentTransform`, add a JS based one. - if (!ctx.mozCurrentTransform) { - ctx._originalSave = ctx.save; - ctx._originalRestore = ctx.restore; - ctx._originalRotate = ctx.rotate; - ctx._originalScale = ctx.scale; - ctx._originalTranslate = ctx.translate; - ctx._originalTransform = ctx.transform; - ctx._originalSetTransform = ctx.setTransform; - - ctx._transformMatrix = ctx._transformMatrix || [1, 0, 0, 1, 0, 0]; - ctx._transformStack = []; - - Object.defineProperty(ctx, 'mozCurrentTransform', { - get: function getCurrentTransform() { - return this._transformMatrix; - } - }); - - Object.defineProperty(ctx, 'mozCurrentTransformInverse', { - get: function getCurrentTransformInverse() { - // Calculation done using WolframAlpha: - // http://www.wolframalpha.com/input/? - // i=Inverse+{{a%2C+c%2C+e}%2C+{b%2C+d%2C+f}%2C+{0%2C+0%2C+1}} - - var m = this._transformMatrix; - var a = m[0], b = m[1], c = m[2], d = m[3], e = m[4], f = m[5]; - - var ad_bc = a * d - b * c; - var bc_ad = b * c - a * d; - - return [ - d / ad_bc, - b / bc_ad, - c / bc_ad, - a / ad_bc, - (d * e - c * f) / bc_ad, - (b * e - a * f) / ad_bc - ]; - } - }); - - ctx.save = function ctxSave() { - var old = this._transformMatrix; - this._transformStack.push(old); - this._transformMatrix = old.slice(0, 6); - - this._originalSave(); - }; - - ctx.restore = function ctxRestore() { - var prev = this._transformStack.pop(); - if (prev) { - this._transformMatrix = prev; - this._originalRestore(); - } - }; - - ctx.translate = function ctxTranslate(x, y) { - var m = this._transformMatrix; - m[4] = m[0] * x + m[2] * y + m[4]; - m[5] = m[1] * x + m[3] * y + m[5]; - - this._originalTranslate(x, y); - }; - - ctx.scale = function ctxScale(x, y) { - var m = this._transformMatrix; - m[0] = m[0] * x; - m[1] = m[1] * x; - m[2] = m[2] * y; - m[3] = m[3] * y; - - this._originalScale(x, y); - }; - - ctx.transform = function ctxTransform(a, b, c, d, e, f) { - var m = this._transformMatrix; - this._transformMatrix = [ - m[0] * a + m[2] * b, - m[1] * a + m[3] * b, - m[0] * c + m[2] * d, - m[1] * c + m[3] * d, - m[0] * e + m[2] * f + m[4], - m[1] * e + m[3] * f + m[5] - ]; - - ctx._originalTransform(a, b, c, d, e, f); - }; - - ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) { - this._transformMatrix = [a, b, c, d, e, f]; - - ctx._originalSetTransform(a, b, c, d, e, f); - }; - - ctx.rotate = function ctxRotate(angle) { - var cosValue = Math.cos(angle); - var sinValue = Math.sin(angle); - - var m = this._transformMatrix; - this._transformMatrix = [ - m[0] * cosValue + m[2] * sinValue, - m[1] * cosValue + m[3] * sinValue, - m[0] * (-sinValue) + m[2] * cosValue, - m[1] * (-sinValue) + m[3] * cosValue, - m[4], - m[5] - ]; - - this._originalRotate(angle); - }; - } -} - -var CachedCanvases = (function CachedCanvasesClosure() { - function CachedCanvases() { - this.cache = Object.create(null); - } - CachedCanvases.prototype = { - getCanvas: function CachedCanvases_getCanvas(id, width, height, - trackTransform) { - var canvasEntry; - if (this.cache[id] !== undefined) { - canvasEntry = this.cache[id]; - canvasEntry.canvas.width = width; - canvasEntry.canvas.height = height; - // reset canvas transform for emulated mozCurrentTransform, if needed - canvasEntry.context.setTransform(1, 0, 0, 1, 0, 0); - } else { - var canvas = createScratchCanvas(width, height); - var ctx = canvas.getContext('2d'); - if (trackTransform) { - addContextCurrentTransform(ctx); - } - this.cache[id] = canvasEntry = {canvas: canvas, context: ctx}; - } - return canvasEntry; - }, - clear: function () { - for (var id in this.cache) { - var canvasEntry = this.cache[id]; - // Zeroing the width and height causes Firefox to release graphics - // resources immediately, which can greatly reduce memory consumption. - canvasEntry.canvas.width = 0; - canvasEntry.canvas.height = 0; - delete this.cache[id]; - } - } - }; - return CachedCanvases; -})(); - -function compileType3Glyph(imgData) { - var POINT_TO_PROCESS_LIMIT = 1000; - - var width = imgData.width, height = imgData.height; - var i, j, j0, width1 = width + 1; - var points = new Uint8Array(width1 * (height + 1)); - var POINT_TYPES = - new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]); - - // decodes bit-packed mask data - var lineSize = (width + 7) & ~7, data0 = imgData.data; - var data = new Uint8Array(lineSize * height), pos = 0, ii; - for (i = 0, ii = data0.length; i < ii; i++) { - var mask = 128, elem = data0[i]; - while (mask > 0) { - data[pos++] = (elem & mask) ? 0 : 255; - mask >>= 1; - } - } - - // finding iteresting points: every point is located between mask pixels, - // so there will be points of the (width + 1)x(height + 1) grid. Every point - // will have flags assigned based on neighboring mask pixels: - // 4 | 8 - // --P-- - // 2 | 1 - // We are interested only in points with the flags: - // - outside corners: 1, 2, 4, 8; - // - inside corners: 7, 11, 13, 14; - // - and, intersections: 5, 10. - var count = 0; - pos = 0; - if (data[pos] !== 0) { - points[0] = 1; - ++count; - } - for (j = 1; j < width; j++) { - if (data[pos] !== data[pos + 1]) { - points[j] = data[pos] ? 2 : 1; - ++count; - } - pos++; - } - if (data[pos] !== 0) { - points[j] = 2; - ++count; - } - for (i = 1; i < height; i++) { - pos = i * lineSize; - j0 = i * width1; - if (data[pos - lineSize] !== data[pos]) { - points[j0] = data[pos] ? 1 : 8; - ++count; - } - // 'sum' is the position of the current pixel configuration in the 'TYPES' - // array (in order 8-1-2-4, so we can use '>>2' to shift the column). - var sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0); - for (j = 1; j < width; j++) { - sum = (sum >> 2) + (data[pos + 1] ? 4 : 0) + - (data[pos - lineSize + 1] ? 8 : 0); - if (POINT_TYPES[sum]) { - points[j0 + j] = POINT_TYPES[sum]; - ++count; - } - pos++; - } - if (data[pos - lineSize] !== data[pos]) { - points[j0 + j] = data[pos] ? 2 : 4; - ++count; - } - - if (count > POINT_TO_PROCESS_LIMIT) { - return null; - } - } - - pos = lineSize * (height - 1); - j0 = i * width1; - if (data[pos] !== 0) { - points[j0] = 8; - ++count; - } - for (j = 1; j < width; j++) { - if (data[pos] !== data[pos + 1]) { - points[j0 + j] = data[pos] ? 4 : 8; - ++count; - } - pos++; - } - if (data[pos] !== 0) { - points[j0 + j] = 4; - ++count; - } - if (count > POINT_TO_PROCESS_LIMIT) { - return null; - } - - // building outlines - var steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]); - var outlines = []; - for (i = 0; count && i <= height; i++) { - var p = i * width1; - var end = p + width; - while (p < end && !points[p]) { - p++; - } - if (p === end) { - continue; - } - var coords = [p % width1, i]; - - var type = points[p], p0 = p, pp; - do { - var step = steps[type]; - do { - p += step; - } while (!points[p]); - - pp = points[p]; - if (pp !== 5 && pp !== 10) { - // set new direction - type = pp; - // delete mark - points[p] = 0; - } else { // type is 5 or 10, ie, a crossing - // set new direction - type = pp & ((0x33 * type) >> 4); - // set new type for "future hit" - points[p] &= (type >> 2 | type << 2); - } - - coords.push(p % width1); - coords.push((p / width1) | 0); - --count; - } while (p0 !== p); - outlines.push(coords); - --i; - } - - var drawOutline = function(c) { - c.save(); - // the path shall be painted in [0..1]x[0..1] space - c.scale(1 / width, -1 / height); - c.translate(0, -height); - c.beginPath(); - for (var i = 0, ii = outlines.length; i < ii; i++) { - var o = outlines[i]; - c.moveTo(o[0], o[1]); - for (var j = 2, jj = o.length; j < jj; j += 2) { - c.lineTo(o[j], o[j+1]); - } - } - c.fill(); - c.beginPath(); - c.restore(); - }; - - return drawOutline; -} - -var CanvasExtraState = (function CanvasExtraStateClosure() { - function CanvasExtraState(old) { - // Are soft masks and alpha values shapes or opacities? - this.alphaIsShape = false; - this.fontSize = 0; - this.fontSizeScale = 1; - this.textMatrix = IDENTITY_MATRIX; - this.textMatrixScale = 1; - this.fontMatrix = FONT_IDENTITY_MATRIX; - this.leading = 0; - // Current point (in user coordinates) - this.x = 0; - this.y = 0; - // Start of text line (in text coordinates) - this.lineX = 0; - this.lineY = 0; - // Character and word spacing - this.charSpacing = 0; - this.wordSpacing = 0; - this.textHScale = 1; - this.textRenderingMode = TextRenderingMode.FILL; - this.textRise = 0; - // Default fore and background colors - this.fillColor = '#000000'; - this.strokeColor = '#000000'; - this.patternFill = false; - // Note: fill alpha applies to all non-stroking operations - this.fillAlpha = 1; - this.strokeAlpha = 1; - this.lineWidth = 1; - this.activeSMask = null; // nonclonable field (see the save method below) - - this.old = old; - } - - CanvasExtraState.prototype = { - clone: function CanvasExtraState_clone() { - return Object.create(this); - }, - setCurrentPoint: function CanvasExtraState_setCurrentPoint(x, y) { - this.x = x; - this.y = y; - } - }; - return CanvasExtraState; -})(); - -var CanvasGraphics = (function CanvasGraphicsClosure() { - // Defines the time the executeOperatorList is going to be executing - // before it stops and shedules a continue of execution. - var EXECUTION_TIME = 15; - // Defines the number of steps before checking the execution time - var EXECUTION_STEPS = 10; - - function CanvasGraphics(canvasCtx, commonObjs, objs, imageLayer) { - this.ctx = canvasCtx; - this.current = new CanvasExtraState(); - this.stateStack = []; - this.pendingClip = null; - this.pendingEOFill = false; - this.res = null; - this.xobjs = null; - this.commonObjs = commonObjs; - this.objs = objs; - this.imageLayer = imageLayer; - this.groupStack = []; - this.processingType3 = null; - // Patterns are painted relative to the initial page/form transform, see pdf - // spec 8.7.2 NOTE 1. - this.baseTransform = null; - this.baseTransformStack = []; - this.groupLevel = 0; - this.smaskStack = []; - this.smaskCounter = 0; - this.tempSMask = null; - this.cachedCanvases = new CachedCanvases(); - if (canvasCtx) { - // NOTE: if mozCurrentTransform is polyfilled, then the current state of - // the transformation must already be set in canvasCtx._transformMatrix. - addContextCurrentTransform(canvasCtx); - } - this.cachedGetSinglePixelWidth = null; - } - - function putBinaryImageData(ctx, imgData) { - if (typeof ImageData !== 'undefined' && imgData instanceof ImageData) { - ctx.putImageData(imgData, 0, 0); - return; - } - - // Put the image data to the canvas in chunks, rather than putting the - // whole image at once. This saves JS memory, because the ImageData object - // is smaller. It also possibly saves C++ memory within the implementation - // of putImageData(). (E.g. in Firefox we make two short-lived copies of - // the data passed to putImageData()). |n| shouldn't be too small, however, - // because too many putImageData() calls will slow things down. - // - // Note: as written, if the last chunk is partial, the putImageData() call - // will (conceptually) put pixels past the bounds of the canvas. But - // that's ok; any such pixels are ignored. - - var height = imgData.height, width = imgData.width; - var partialChunkHeight = height % FULL_CHUNK_HEIGHT; - var fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT; - var totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1; - - var chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT); - var srcPos = 0, destPos; - var src = imgData.data; - var dest = chunkImgData.data; - var i, j, thisChunkHeight, elemsInThisChunk; - - // There are multiple forms in which the pixel data can be passed, and - // imgData.kind tells us which one this is. - if (imgData.kind === ImageKind.GRAYSCALE_1BPP) { - // Grayscale, 1 bit per pixel (i.e. black-and-white). - var srcLength = src.byteLength; - var dest32 = PDFJS.hasCanvasTypedArrays ? new Uint32Array(dest.buffer) : - new Uint32ArrayView(dest); - var dest32DataLength = dest32.length; - var fullSrcDiff = (width + 7) >> 3; - var white = 0xFFFFFFFF; - var black = (PDFJS.isLittleEndian || !PDFJS.hasCanvasTypedArrays) ? - 0xFF000000 : 0x000000FF; - for (i = 0; i < totalChunks; i++) { - thisChunkHeight = - (i < fullChunks) ? FULL_CHUNK_HEIGHT : partialChunkHeight; - destPos = 0; - for (j = 0; j < thisChunkHeight; j++) { - var srcDiff = srcLength - srcPos; - var k = 0; - var kEnd = (srcDiff > fullSrcDiff) ? width : srcDiff * 8 - 7; - var kEndUnrolled = kEnd & ~7; - var mask = 0; - var srcByte = 0; - for (; k < kEndUnrolled; k += 8) { - srcByte = src[srcPos++]; - dest32[destPos++] = (srcByte & 128) ? white : black; - dest32[destPos++] = (srcByte & 64) ? white : black; - dest32[destPos++] = (srcByte & 32) ? white : black; - dest32[destPos++] = (srcByte & 16) ? white : black; - dest32[destPos++] = (srcByte & 8) ? white : black; - dest32[destPos++] = (srcByte & 4) ? white : black; - dest32[destPos++] = (srcByte & 2) ? white : black; - dest32[destPos++] = (srcByte & 1) ? white : black; - } - for (; k < kEnd; k++) { - if (mask === 0) { - srcByte = src[srcPos++]; - mask = 128; - } - - dest32[destPos++] = (srcByte & mask) ? white : black; - mask >>= 1; - } - } - // We ran out of input. Make all remaining pixels transparent. - while (destPos < dest32DataLength) { - dest32[destPos++] = 0; - } - - ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT); - } - } else if (imgData.kind === ImageKind.RGBA_32BPP) { - // RGBA, 32-bits per pixel. - - j = 0; - elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4; - for (i = 0; i < fullChunks; i++) { - dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk)); - srcPos += elemsInThisChunk; - - ctx.putImageData(chunkImgData, 0, j); - j += FULL_CHUNK_HEIGHT; - } - if (i < totalChunks) { - elemsInThisChunk = width * partialChunkHeight * 4; - dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk)); - ctx.putImageData(chunkImgData, 0, j); - } - - } else if (imgData.kind === ImageKind.RGB_24BPP) { - // RGB, 24-bits per pixel. - thisChunkHeight = FULL_CHUNK_HEIGHT; - elemsInThisChunk = width * thisChunkHeight; - for (i = 0; i < totalChunks; i++) { - if (i >= fullChunks) { - thisChunkHeight = partialChunkHeight; - elemsInThisChunk = width * thisChunkHeight; - } - - destPos = 0; - for (j = elemsInThisChunk; j--;) { - dest[destPos++] = src[srcPos++]; - dest[destPos++] = src[srcPos++]; - dest[destPos++] = src[srcPos++]; - dest[destPos++] = 255; - } - ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT); - } - } else { - error('bad image kind: ' + imgData.kind); - } - } - - function putBinaryImageMask(ctx, imgData) { - var height = imgData.height, width = imgData.width; - var partialChunkHeight = height % FULL_CHUNK_HEIGHT; - var fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT; - var totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1; - - var chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT); - var srcPos = 0; - var src = imgData.data; - var dest = chunkImgData.data; - - for (var i = 0; i < totalChunks; i++) { - var thisChunkHeight = - (i < fullChunks) ? FULL_CHUNK_HEIGHT : partialChunkHeight; - - // Expand the mask so it can be used by the canvas. Any required - // inversion has already been handled. - var destPos = 3; // alpha component offset - for (var j = 0; j < thisChunkHeight; j++) { - var mask = 0; - for (var k = 0; k < width; k++) { - if (!mask) { - var elem = src[srcPos++]; - mask = 128; - } - dest[destPos] = (elem & mask) ? 0 : 255; - destPos += 4; - mask >>= 1; - } - } - ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT); - } - } - - function copyCtxState(sourceCtx, destCtx) { - var properties = ['strokeStyle', 'fillStyle', 'fillRule', 'globalAlpha', - 'lineWidth', 'lineCap', 'lineJoin', 'miterLimit', - 'globalCompositeOperation', 'font']; - for (var i = 0, ii = properties.length; i < ii; i++) { - var property = properties[i]; - if (sourceCtx[property] !== undefined) { - destCtx[property] = sourceCtx[property]; - } - } - if (sourceCtx.setLineDash !== undefined) { - destCtx.setLineDash(sourceCtx.getLineDash()); - destCtx.lineDashOffset = sourceCtx.lineDashOffset; - } else if (sourceCtx.mozDashOffset !== undefined) { - destCtx.mozDash = sourceCtx.mozDash; - destCtx.mozDashOffset = sourceCtx.mozDashOffset; - } - } - - function composeSMaskBackdrop(bytes, r0, g0, b0) { - var length = bytes.length; - for (var i = 3; i < length; i += 4) { - var alpha = bytes[i]; - if (alpha === 0) { - bytes[i - 3] = r0; - bytes[i - 2] = g0; - bytes[i - 1] = b0; - } else if (alpha < 255) { - var alpha_ = 255 - alpha; - bytes[i - 3] = (bytes[i - 3] * alpha + r0 * alpha_) >> 8; - bytes[i - 2] = (bytes[i - 2] * alpha + g0 * alpha_) >> 8; - bytes[i - 1] = (bytes[i - 1] * alpha + b0 * alpha_) >> 8; - } - } - } - - function composeSMaskAlpha(maskData, layerData, transferMap) { - var length = maskData.length; - var scale = 1 / 255; - for (var i = 3; i < length; i += 4) { - var alpha = transferMap ? transferMap[maskData[i]] : maskData[i]; - layerData[i] = (layerData[i] * alpha * scale) | 0; - } - } - - function composeSMaskLuminosity(maskData, layerData, transferMap) { - var length = maskData.length; - for (var i = 3; i < length; i += 4) { - var y = (maskData[i - 3] * 77) + // * 0.3 / 255 * 0x10000 - (maskData[i - 2] * 152) + // * 0.59 .... - (maskData[i - 1] * 28); // * 0.11 .... - layerData[i] = transferMap ? - (layerData[i] * transferMap[y >> 8]) >> 8 : - (layerData[i] * y) >> 16; - } - } - - function genericComposeSMask(maskCtx, layerCtx, width, height, - subtype, backdrop, transferMap) { - var hasBackdrop = !!backdrop; - var r0 = hasBackdrop ? backdrop[0] : 0; - var g0 = hasBackdrop ? backdrop[1] : 0; - var b0 = hasBackdrop ? backdrop[2] : 0; - - var composeFn; - if (subtype === 'Luminosity') { - composeFn = composeSMaskLuminosity; - } else { - composeFn = composeSMaskAlpha; - } - - // processing image in chunks to save memory - var PIXELS_TO_PROCESS = 1048576; - var chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width)); - for (var row = 0; row < height; row += chunkSize) { - var chunkHeight = Math.min(chunkSize, height - row); - var maskData = maskCtx.getImageData(0, row, width, chunkHeight); - var layerData = layerCtx.getImageData(0, row, width, chunkHeight); - - if (hasBackdrop) { - composeSMaskBackdrop(maskData.data, r0, g0, b0); - } - composeFn(maskData.data, layerData.data, transferMap); - - maskCtx.putImageData(layerData, 0, row); - } - } - - function composeSMask(ctx, smask, layerCtx) { - var mask = smask.canvas; - var maskCtx = smask.context; - - ctx.setTransform(smask.scaleX, 0, 0, smask.scaleY, - smask.offsetX, smask.offsetY); - - var backdrop = smask.backdrop || null; - if (!smask.transferMap && WebGLUtils.isEnabled) { - var composed = WebGLUtils.composeSMask(layerCtx.canvas, mask, - {subtype: smask.subtype, backdrop: backdrop}); - ctx.setTransform(1, 0, 0, 1, 0, 0); - ctx.drawImage(composed, smask.offsetX, smask.offsetY); - return; - } - genericComposeSMask(maskCtx, layerCtx, mask.width, mask.height, - smask.subtype, backdrop, smask.transferMap); - ctx.drawImage(mask, 0, 0); - } - - var LINE_CAP_STYLES = ['butt', 'round', 'square']; - var LINE_JOIN_STYLES = ['miter', 'round', 'bevel']; - var NORMAL_CLIP = {}; - var EO_CLIP = {}; - - CanvasGraphics.prototype = { - - beginDrawing: function CanvasGraphics_beginDrawing(transform, viewport, - transparency) { - // For pdfs that use blend modes we have to clear the canvas else certain - // blend modes can look wrong since we'd be blending with a white - // backdrop. The problem with a transparent backdrop though is we then - // don't get sub pixel anti aliasing on text, creating temporary - // transparent canvas when we have blend modes. - var width = this.ctx.canvas.width; - var height = this.ctx.canvas.height; - - this.ctx.save(); - this.ctx.fillStyle = 'rgb(255, 255, 255)'; - this.ctx.fillRect(0, 0, width, height); - this.ctx.restore(); - - if (transparency) { - var transparentCanvas = this.cachedCanvases.getCanvas( - 'transparent', width, height, true); - this.compositeCtx = this.ctx; - this.transparentCanvas = transparentCanvas.canvas; - this.ctx = transparentCanvas.context; - this.ctx.save(); - // The transform can be applied before rendering, transferring it to - // the new canvas. - this.ctx.transform.apply(this.ctx, - this.compositeCtx.mozCurrentTransform); - } - - this.ctx.save(); - if (transform) { - this.ctx.transform.apply(this.ctx, transform); - } - this.ctx.transform.apply(this.ctx, viewport.transform); - - this.baseTransform = this.ctx.mozCurrentTransform.slice(); - - if (this.imageLayer) { - this.imageLayer.beginLayout(); - } - }, - - executeOperatorList: function CanvasGraphics_executeOperatorList( - operatorList, - executionStartIdx, continueCallback, - stepper) { - var argsArray = operatorList.argsArray; - var fnArray = operatorList.fnArray; - var i = executionStartIdx || 0; - var argsArrayLen = argsArray.length; - - // Sometimes the OperatorList to execute is empty. - if (argsArrayLen === i) { - return i; - } - - var chunkOperations = (argsArrayLen - i > EXECUTION_STEPS && - typeof continueCallback === 'function'); - var endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0; - var steps = 0; - - var commonObjs = this.commonObjs; - var objs = this.objs; - var fnId; - - while (true) { - if (stepper !== undefined && i === stepper.nextBreakPoint) { - stepper.breakIt(i, continueCallback); - return i; - } - - fnId = fnArray[i]; - - if (fnId !== OPS.dependency) { - this[fnId].apply(this, argsArray[i]); - } else { - var deps = argsArray[i]; - for (var n = 0, nn = deps.length; n < nn; n++) { - var depObjId = deps[n]; - var common = depObjId[0] === 'g' && depObjId[1] === '_'; - var objsPool = common ? commonObjs : objs; - - // If the promise isn't resolved yet, add the continueCallback - // to the promise and bail out. - if (!objsPool.isResolved(depObjId)) { - objsPool.get(depObjId, continueCallback); - return i; - } - } - } - - i++; - - // If the entire operatorList was executed, stop as were done. - if (i === argsArrayLen) { - return i; - } - - // If the execution took longer then a certain amount of time and - // `continueCallback` is specified, interrupt the execution. - if (chunkOperations && ++steps > EXECUTION_STEPS) { - if (Date.now() > endTime) { - continueCallback(); - return i; - } - steps = 0; - } - - // If the operatorList isn't executed completely yet OR the execution - // time was short enough, do another execution round. - } - }, - - endDrawing: function CanvasGraphics_endDrawing() { - this.ctx.restore(); - - if (this.transparentCanvas) { - this.ctx = this.compositeCtx; - this.ctx.drawImage(this.transparentCanvas, 0, 0); - this.transparentCanvas = null; - } - - this.cachedCanvases.clear(); - WebGLUtils.clear(); - - if (this.imageLayer) { - this.imageLayer.endLayout(); - } - }, - - // Graphics state - setLineWidth: function CanvasGraphics_setLineWidth(width) { - this.current.lineWidth = width; - this.ctx.lineWidth = width; - }, - setLineCap: function CanvasGraphics_setLineCap(style) { - this.ctx.lineCap = LINE_CAP_STYLES[style]; - }, - setLineJoin: function CanvasGraphics_setLineJoin(style) { - this.ctx.lineJoin = LINE_JOIN_STYLES[style]; - }, - setMiterLimit: function CanvasGraphics_setMiterLimit(limit) { - this.ctx.miterLimit = limit; - }, - setDash: function CanvasGraphics_setDash(dashArray, dashPhase) { - var ctx = this.ctx; - if (ctx.setLineDash !== undefined) { - ctx.setLineDash(dashArray); - ctx.lineDashOffset = dashPhase; - } else { - ctx.mozDash = dashArray; - ctx.mozDashOffset = dashPhase; - } - }, - setRenderingIntent: function CanvasGraphics_setRenderingIntent(intent) { - // Maybe if we one day fully support color spaces this will be important - // for now we can ignore. - // TODO set rendering intent? - }, - setFlatness: function CanvasGraphics_setFlatness(flatness) { - // There's no way to control this with canvas, but we can safely ignore. - // TODO set flatness? - }, - setGState: function CanvasGraphics_setGState(states) { - for (var i = 0, ii = states.length; i < ii; i++) { - var state = states[i]; - var key = state[0]; - var value = state[1]; - - switch (key) { - case 'LW': - this.setLineWidth(value); - break; - case 'LC': - this.setLineCap(value); - break; - case 'LJ': - this.setLineJoin(value); - break; - case 'ML': - this.setMiterLimit(value); - break; - case 'D': - this.setDash(value[0], value[1]); - break; - case 'RI': - this.setRenderingIntent(value); - break; - case 'FL': - this.setFlatness(value); - break; - case 'Font': - this.setFont(value[0], value[1]); - break; - case 'CA': - this.current.strokeAlpha = state[1]; - break; - case 'ca': - this.current.fillAlpha = state[1]; - this.ctx.globalAlpha = state[1]; - break; - case 'BM': - if (value && value.name && (value.name !== 'Normal')) { - var mode = value.name.replace(/([A-Z])/g, - function(c) { - return '-' + c.toLowerCase(); - } - ).substring(1); - this.ctx.globalCompositeOperation = mode; - if (this.ctx.globalCompositeOperation !== mode) { - warn('globalCompositeOperation "' + mode + - '" is not supported'); - } - } else { - this.ctx.globalCompositeOperation = 'source-over'; - } - break; - case 'SMask': - if (this.current.activeSMask) { - this.endSMaskGroup(); - } - this.current.activeSMask = value ? this.tempSMask : null; - if (this.current.activeSMask) { - this.beginSMaskGroup(); - } - this.tempSMask = null; - break; - } - } - }, - beginSMaskGroup: function CanvasGraphics_beginSMaskGroup() { - - var activeSMask = this.current.activeSMask; - var drawnWidth = activeSMask.canvas.width; - var drawnHeight = activeSMask.canvas.height; - var cacheId = 'smaskGroupAt' + this.groupLevel; - var scratchCanvas = this.cachedCanvases.getCanvas( - cacheId, drawnWidth, drawnHeight, true); - - var currentCtx = this.ctx; - var currentTransform = currentCtx.mozCurrentTransform; - this.ctx.save(); - - var groupCtx = scratchCanvas.context; - groupCtx.scale(1 / activeSMask.scaleX, 1 / activeSMask.scaleY); - groupCtx.translate(-activeSMask.offsetX, -activeSMask.offsetY); - groupCtx.transform.apply(groupCtx, currentTransform); - - copyCtxState(currentCtx, groupCtx); - this.ctx = groupCtx; - this.setGState([ - ['BM', 'Normal'], - ['ca', 1], - ['CA', 1] - ]); - this.groupStack.push(currentCtx); - this.groupLevel++; - }, - endSMaskGroup: function CanvasGraphics_endSMaskGroup() { - var groupCtx = this.ctx; - this.groupLevel--; - this.ctx = this.groupStack.pop(); - - composeSMask(this.ctx, this.current.activeSMask, groupCtx); - this.ctx.restore(); - copyCtxState(groupCtx, this.ctx); - }, - save: function CanvasGraphics_save() { - this.ctx.save(); - var old = this.current; - this.stateStack.push(old); - this.current = old.clone(); - this.current.activeSMask = null; - }, - restore: function CanvasGraphics_restore() { - if (this.stateStack.length !== 0) { - if (this.current.activeSMask !== null) { - this.endSMaskGroup(); - } - - this.current = this.stateStack.pop(); - this.ctx.restore(); - - // Ensure that the clipping path is reset (fixes issue6413.pdf). - this.pendingClip = null; - - this.cachedGetSinglePixelWidth = null; - } - }, - transform: function CanvasGraphics_transform(a, b, c, d, e, f) { - this.ctx.transform(a, b, c, d, e, f); - - this.cachedGetSinglePixelWidth = null; - }, - - // Path - constructPath: function CanvasGraphics_constructPath(ops, args) { - var ctx = this.ctx; - var current = this.current; - var x = current.x, y = current.y; - for (var i = 0, j = 0, ii = ops.length; i < ii; i++) { - switch (ops[i] | 0) { - case OPS.rectangle: - x = args[j++]; - y = args[j++]; - var width = args[j++]; - var height = args[j++]; - if (width === 0) { - width = this.getSinglePixelWidth(); - } - if (height === 0) { - height = this.getSinglePixelWidth(); - } - var xw = x + width; - var yh = y + height; - this.ctx.moveTo(x, y); - this.ctx.lineTo(xw, y); - this.ctx.lineTo(xw, yh); - this.ctx.lineTo(x, yh); - this.ctx.lineTo(x, y); - this.ctx.closePath(); - break; - case OPS.moveTo: - x = args[j++]; - y = args[j++]; - ctx.moveTo(x, y); - break; - case OPS.lineTo: - x = args[j++]; - y = args[j++]; - ctx.lineTo(x, y); - break; - case OPS.curveTo: - x = args[j + 4]; - y = args[j + 5]; - ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3], - x, y); - j += 6; - break; - case OPS.curveTo2: - ctx.bezierCurveTo(x, y, args[j], args[j + 1], - args[j + 2], args[j + 3]); - x = args[j + 2]; - y = args[j + 3]; - j += 4; - break; - case OPS.curveTo3: - x = args[j + 2]; - y = args[j + 3]; - ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y); - j += 4; - break; - case OPS.closePath: - ctx.closePath(); - break; - } - } - current.setCurrentPoint(x, y); - }, - closePath: function CanvasGraphics_closePath() { - this.ctx.closePath(); - }, - stroke: function CanvasGraphics_stroke(consumePath) { - consumePath = typeof consumePath !== 'undefined' ? consumePath : true; - var ctx = this.ctx; - var strokeColor = this.current.strokeColor; - // Prevent drawing too thin lines by enforcing a minimum line width. - ctx.lineWidth = Math.max(this.getSinglePixelWidth() * MIN_WIDTH_FACTOR, - this.current.lineWidth); - // For stroke we want to temporarily change the global alpha to the - // stroking alpha. - ctx.globalAlpha = this.current.strokeAlpha; - if (strokeColor && strokeColor.hasOwnProperty('type') && - strokeColor.type === 'Pattern') { - // for patterns, we transform to pattern space, calculate - // the pattern, call stroke, and restore to user space - ctx.save(); - ctx.strokeStyle = strokeColor.getPattern(ctx, this); - ctx.stroke(); - ctx.restore(); - } else { - ctx.stroke(); - } - if (consumePath) { - this.consumePath(); - } - // Restore the global alpha to the fill alpha - ctx.globalAlpha = this.current.fillAlpha; - }, - closeStroke: function CanvasGraphics_closeStroke() { - this.closePath(); - this.stroke(); - }, - fill: function CanvasGraphics_fill(consumePath) { - consumePath = typeof consumePath !== 'undefined' ? consumePath : true; - var ctx = this.ctx; - var fillColor = this.current.fillColor; - var isPatternFill = this.current.patternFill; - var needRestore = false; - - if (isPatternFill) { - ctx.save(); - if (this.baseTransform) { - ctx.setTransform.apply(ctx, this.baseTransform); - } - ctx.fillStyle = fillColor.getPattern(ctx, this); - needRestore = true; - } - - if (this.pendingEOFill) { - if (ctx.mozFillRule !== undefined) { - ctx.mozFillRule = 'evenodd'; - ctx.fill(); - ctx.mozFillRule = 'nonzero'; - } else { - ctx.fill('evenodd'); - } - this.pendingEOFill = false; - } else { - ctx.fill(); - } - - if (needRestore) { - ctx.restore(); - } - if (consumePath) { - this.consumePath(); - } - }, - eoFill: function CanvasGraphics_eoFill() { - this.pendingEOFill = true; - this.fill(); - }, - fillStroke: function CanvasGraphics_fillStroke() { - this.fill(false); - this.stroke(false); - - this.consumePath(); - }, - eoFillStroke: function CanvasGraphics_eoFillStroke() { - this.pendingEOFill = true; - this.fillStroke(); - }, - closeFillStroke: function CanvasGraphics_closeFillStroke() { - this.closePath(); - this.fillStroke(); - }, - closeEOFillStroke: function CanvasGraphics_closeEOFillStroke() { - this.pendingEOFill = true; - this.closePath(); - this.fillStroke(); - }, - endPath: function CanvasGraphics_endPath() { - this.consumePath(); - }, - - // Clipping - clip: function CanvasGraphics_clip() { - this.pendingClip = NORMAL_CLIP; - }, - eoClip: function CanvasGraphics_eoClip() { - this.pendingClip = EO_CLIP; - }, - - // Text - beginText: function CanvasGraphics_beginText() { - this.current.textMatrix = IDENTITY_MATRIX; - this.current.textMatrixScale = 1; - this.current.x = this.current.lineX = 0; - this.current.y = this.current.lineY = 0; - }, - endText: function CanvasGraphics_endText() { - var paths = this.pendingTextPaths; - var ctx = this.ctx; - if (paths === undefined) { - ctx.beginPath(); - return; - } - - ctx.save(); - ctx.beginPath(); - for (var i = 0; i < paths.length; i++) { - var path = paths[i]; - ctx.setTransform.apply(ctx, path.transform); - ctx.translate(path.x, path.y); - path.addToPath(ctx, path.fontSize); - } - ctx.restore(); - ctx.clip(); - ctx.beginPath(); - delete this.pendingTextPaths; - }, - setCharSpacing: function CanvasGraphics_setCharSpacing(spacing) { - this.current.charSpacing = spacing; - }, - setWordSpacing: function CanvasGraphics_setWordSpacing(spacing) { - this.current.wordSpacing = spacing; - }, - setHScale: function CanvasGraphics_setHScale(scale) { - this.current.textHScale = scale / 100; - }, - setLeading: function CanvasGraphics_setLeading(leading) { - this.current.leading = -leading; - }, - setFont: function CanvasGraphics_setFont(fontRefName, size) { - var fontObj = this.commonObjs.get(fontRefName); - var current = this.current; - - if (!fontObj) { - error('Can\'t find font for ' + fontRefName); - } - - current.fontMatrix = (fontObj.fontMatrix ? - fontObj.fontMatrix : FONT_IDENTITY_MATRIX); - - // A valid matrix needs all main diagonal elements to be non-zero - // This also ensures we bypass FF bugzilla bug #719844. - if (current.fontMatrix[0] === 0 || - current.fontMatrix[3] === 0) { - warn('Invalid font matrix for font ' + fontRefName); - } - - // The spec for Tf (setFont) says that 'size' specifies the font 'scale', - // and in some docs this can be negative (inverted x-y axes). - if (size < 0) { - size = -size; - current.fontDirection = -1; - } else { - current.fontDirection = 1; - } - - this.current.font = fontObj; - this.current.fontSize = size; - - if (fontObj.isType3Font) { - return; // we don't need ctx.font for Type3 fonts - } - - var name = fontObj.loadedName || 'sans-serif'; - var bold = fontObj.black ? (fontObj.bold ? '900' : 'bold') : - (fontObj.bold ? 'bold' : 'normal'); - - var italic = fontObj.italic ? 'italic' : 'normal'; - var typeface = '"' + name + '", ' + fontObj.fallbackName; - - // Some font backends cannot handle fonts below certain size. - // Keeping the font at minimal size and using the fontSizeScale to change - // the current transformation matrix before the fillText/strokeText. - // See https://bugzilla.mozilla.org/show_bug.cgi?id=726227 - var browserFontSize = size < MIN_FONT_SIZE ? MIN_FONT_SIZE : - size > MAX_FONT_SIZE ? MAX_FONT_SIZE : size; - this.current.fontSizeScale = size / browserFontSize; - - var rule = italic + ' ' + bold + ' ' + browserFontSize + 'px ' + typeface; - this.ctx.font = rule; - }, - setTextRenderingMode: function CanvasGraphics_setTextRenderingMode(mode) { - this.current.textRenderingMode = mode; - }, - setTextRise: function CanvasGraphics_setTextRise(rise) { - this.current.textRise = rise; - }, - moveText: function CanvasGraphics_moveText(x, y) { - this.current.x = this.current.lineX += x; - this.current.y = this.current.lineY += y; - }, - setLeadingMoveText: function CanvasGraphics_setLeadingMoveText(x, y) { - this.setLeading(-y); - this.moveText(x, y); - }, - setTextMatrix: function CanvasGraphics_setTextMatrix(a, b, c, d, e, f) { - this.current.textMatrix = [a, b, c, d, e, f]; - this.current.textMatrixScale = Math.sqrt(a * a + b * b); - - this.current.x = this.current.lineX = 0; - this.current.y = this.current.lineY = 0; - }, - nextLine: function CanvasGraphics_nextLine() { - this.moveText(0, this.current.leading); - }, - - paintChar: function CanvasGraphics_paintChar(character, x, y) { - var ctx = this.ctx; - var current = this.current; - var font = current.font; - var textRenderingMode = current.textRenderingMode; - var fontSize = current.fontSize / current.fontSizeScale; - var fillStrokeMode = textRenderingMode & - TextRenderingMode.FILL_STROKE_MASK; - var isAddToPathSet = !!(textRenderingMode & - TextRenderingMode.ADD_TO_PATH_FLAG); - - var addToPath; - if (font.disableFontFace || isAddToPathSet) { - addToPath = font.getPathGenerator(this.commonObjs, character); - } - - if (font.disableFontFace) { - ctx.save(); - ctx.translate(x, y); - ctx.beginPath(); - addToPath(ctx, fontSize); - if (fillStrokeMode === TextRenderingMode.FILL || - fillStrokeMode === TextRenderingMode.FILL_STROKE) { - ctx.fill(); - } - if (fillStrokeMode === TextRenderingMode.STROKE || - fillStrokeMode === TextRenderingMode.FILL_STROKE) { - ctx.stroke(); - } - ctx.restore(); - } else { - if (fillStrokeMode === TextRenderingMode.FILL || - fillStrokeMode === TextRenderingMode.FILL_STROKE) { - ctx.fillText(character, x, y); - } - if (fillStrokeMode === TextRenderingMode.STROKE || - fillStrokeMode === TextRenderingMode.FILL_STROKE) { - ctx.strokeText(character, x, y); - } - } - - if (isAddToPathSet) { - var paths = this.pendingTextPaths || (this.pendingTextPaths = []); - paths.push({ - transform: ctx.mozCurrentTransform, - x: x, - y: y, - fontSize: fontSize, - addToPath: addToPath - }); - } - }, - - get isFontSubpixelAAEnabled() { - // Checks if anti-aliasing is enabled when scaled text is painted. - // On Windows GDI scaled fonts looks bad. - var ctx = document.createElement('canvas').getContext('2d'); - ctx.scale(1.5, 1); - ctx.fillText('I', 0, 10); - var data = ctx.getImageData(0, 0, 10, 10).data; - var enabled = false; - for (var i = 3; i < data.length; i += 4) { - if (data[i] > 0 && data[i] < 255) { - enabled = true; - break; - } - } - return shadow(this, 'isFontSubpixelAAEnabled', enabled); - }, - - showText: function CanvasGraphics_showText(glyphs) { - var current = this.current; - var font = current.font; - if (font.isType3Font) { - return this.showType3Text(glyphs); - } - - var fontSize = current.fontSize; - if (fontSize === 0) { - return; - } - - var ctx = this.ctx; - var fontSizeScale = current.fontSizeScale; - var charSpacing = current.charSpacing; - var wordSpacing = current.wordSpacing; - var fontDirection = current.fontDirection; - var textHScale = current.textHScale * fontDirection; - var glyphsLength = glyphs.length; - var vertical = font.vertical; - var spacingDir = vertical ? 1 : -1; - var defaultVMetrics = font.defaultVMetrics; - var widthAdvanceScale = fontSize * current.fontMatrix[0]; - - var simpleFillText = - current.textRenderingMode === TextRenderingMode.FILL && - !font.disableFontFace; - - ctx.save(); - ctx.transform.apply(ctx, current.textMatrix); - ctx.translate(current.x, current.y + current.textRise); - - if (current.patternFill) { - // TODO: Some shading patterns are not applied correctly to text, - // e.g. issues 3988 and 5432, and ShowText-ShadingPattern.pdf. - ctx.fillStyle = current.fillColor.getPattern(ctx, this); - } - - if (fontDirection > 0) { - ctx.scale(textHScale, -1); - } else { - ctx.scale(textHScale, 1); - } - - var lineWidth = current.lineWidth; - var scale = current.textMatrixScale; - if (scale === 0 || lineWidth === 0) { - var fillStrokeMode = current.textRenderingMode & - TextRenderingMode.FILL_STROKE_MASK; - if (fillStrokeMode === TextRenderingMode.STROKE || - fillStrokeMode === TextRenderingMode.FILL_STROKE) { - this.cachedGetSinglePixelWidth = null; - lineWidth = this.getSinglePixelWidth() * MIN_WIDTH_FACTOR; - } - } else { - lineWidth /= scale; - } - - if (fontSizeScale !== 1.0) { - ctx.scale(fontSizeScale, fontSizeScale); - lineWidth /= fontSizeScale; - } - - ctx.lineWidth = lineWidth; - - var x = 0, i; - for (i = 0; i < glyphsLength; ++i) { - var glyph = glyphs[i]; - if (isNum(glyph)) { - x += spacingDir * glyph * fontSize / 1000; - continue; - } - - var restoreNeeded = false; - var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing; - var character = glyph.fontChar; - var accent = glyph.accent; - var scaledX, scaledY, scaledAccentX, scaledAccentY; - var width = glyph.width; - if (vertical) { - var vmetric, vx, vy; - vmetric = glyph.vmetric || defaultVMetrics; - vx = glyph.vmetric ? vmetric[1] : width * 0.5; - vx = -vx * widthAdvanceScale; - vy = vmetric[2] * widthAdvanceScale; - - width = vmetric ? -vmetric[0] : width; - scaledX = vx / fontSizeScale; - scaledY = (x + vy) / fontSizeScale; - } else { - scaledX = x / fontSizeScale; - scaledY = 0; - } - - if (font.remeasure && width > 0) { - // Some standard fonts may not have the exact width: rescale per - // character if measured width is greater than expected glyph width - // and subpixel-aa is enabled, otherwise just center the glyph. - var measuredWidth = ctx.measureText(character).width * 1000 / - fontSize * fontSizeScale; - if (width < measuredWidth && this.isFontSubpixelAAEnabled) { - var characterScaleX = width / measuredWidth; - restoreNeeded = true; - ctx.save(); - ctx.scale(characterScaleX, 1); - scaledX /= characterScaleX; - } else if (width !== measuredWidth) { - scaledX += (width - measuredWidth) / 2000 * - fontSize / fontSizeScale; - } - } - - if (simpleFillText && !accent) { - // common case - ctx.fillText(character, scaledX, scaledY); - } else { - this.paintChar(character, scaledX, scaledY); - if (accent) { - scaledAccentX = scaledX + accent.offset.x / fontSizeScale; - scaledAccentY = scaledY - accent.offset.y / fontSizeScale; - this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY); - } - } - - var charWidth = width * widthAdvanceScale + spacing * fontDirection; - x += charWidth; - - if (restoreNeeded) { - ctx.restore(); - } - } - if (vertical) { - current.y -= x * textHScale; - } else { - current.x += x * textHScale; - } - ctx.restore(); - }, - - showType3Text: function CanvasGraphics_showType3Text(glyphs) { - // Type3 fonts - each glyph is a "mini-PDF" - var ctx = this.ctx; - var current = this.current; - var font = current.font; - var fontSize = current.fontSize; - var fontDirection = current.fontDirection; - var spacingDir = font.vertical ? 1 : -1; - var charSpacing = current.charSpacing; - var wordSpacing = current.wordSpacing; - var textHScale = current.textHScale * fontDirection; - var fontMatrix = current.fontMatrix || FONT_IDENTITY_MATRIX; - var glyphsLength = glyphs.length; - var isTextInvisible = - current.textRenderingMode === TextRenderingMode.INVISIBLE; - var i, glyph, width, spacingLength; - - if (isTextInvisible || fontSize === 0) { - return; - } - this.cachedGetSinglePixelWidth = null; - - ctx.save(); - ctx.transform.apply(ctx, current.textMatrix); - ctx.translate(current.x, current.y); - - ctx.scale(textHScale, fontDirection); - - for (i = 0; i < glyphsLength; ++i) { - glyph = glyphs[i]; - if (isNum(glyph)) { - spacingLength = spacingDir * glyph * fontSize / 1000; - this.ctx.translate(spacingLength, 0); - current.x += spacingLength * textHScale; - continue; - } - - var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing; - var operatorList = font.charProcOperatorList[glyph.operatorListId]; - if (!operatorList) { - warn('Type3 character \"' + glyph.operatorListId + - '\" is not available'); - continue; - } - this.processingType3 = glyph; - this.save(); - ctx.scale(fontSize, fontSize); - ctx.transform.apply(ctx, fontMatrix); - this.executeOperatorList(operatorList); - this.restore(); - - var transformed = Util.applyTransform([glyph.width, 0], fontMatrix); - width = transformed[0] * fontSize + spacing; - - ctx.translate(width, 0); - current.x += width * textHScale; - } - ctx.restore(); - this.processingType3 = null; - }, - - // Type3 fonts - setCharWidth: function CanvasGraphics_setCharWidth(xWidth, yWidth) { - // We can safely ignore this since the width should be the same - // as the width in the Widths array. - }, - setCharWidthAndBounds: function CanvasGraphics_setCharWidthAndBounds(xWidth, - yWidth, - llx, - lly, - urx, - ury) { - // TODO According to the spec we're also suppose to ignore any operators - // that set color or include images while processing this type3 font. - this.ctx.rect(llx, lly, urx - llx, ury - lly); - this.clip(); - this.endPath(); - }, - - // Color - getColorN_Pattern: function CanvasGraphics_getColorN_Pattern(IR) { - var pattern; - if (IR[0] === 'TilingPattern') { - var color = IR[1]; - var baseTransform = this.baseTransform || - this.ctx.mozCurrentTransform.slice(); - var self = this; - var canvasGraphicsFactory = { - createCanvasGraphics: function (ctx) { - return new CanvasGraphics(ctx, self.commonObjs, self.objs); - } - }; - pattern = new TilingPattern(IR, color, this.ctx, canvasGraphicsFactory, - baseTransform); - } else { - pattern = getShadingPatternFromIR(IR); - } - return pattern; - }, - setStrokeColorN: function CanvasGraphics_setStrokeColorN(/*...*/) { - this.current.strokeColor = this.getColorN_Pattern(arguments); - }, - setFillColorN: function CanvasGraphics_setFillColorN(/*...*/) { - this.current.fillColor = this.getColorN_Pattern(arguments); - this.current.patternFill = true; - }, - setStrokeRGBColor: function CanvasGraphics_setStrokeRGBColor(r, g, b) { - var color = Util.makeCssRgb(r, g, b); - this.ctx.strokeStyle = color; - this.current.strokeColor = color; - }, - setFillRGBColor: function CanvasGraphics_setFillRGBColor(r, g, b) { - var color = Util.makeCssRgb(r, g, b); - this.ctx.fillStyle = color; - this.current.fillColor = color; - this.current.patternFill = false; - }, - - shadingFill: function CanvasGraphics_shadingFill(patternIR) { - var ctx = this.ctx; - - this.save(); - var pattern = getShadingPatternFromIR(patternIR); - ctx.fillStyle = pattern.getPattern(ctx, this, true); - - var inv = ctx.mozCurrentTransformInverse; - if (inv) { - var canvas = ctx.canvas; - var width = canvas.width; - var height = canvas.height; - - var bl = Util.applyTransform([0, 0], inv); - var br = Util.applyTransform([0, height], inv); - var ul = Util.applyTransform([width, 0], inv); - var ur = Util.applyTransform([width, height], inv); - - var x0 = Math.min(bl[0], br[0], ul[0], ur[0]); - var y0 = Math.min(bl[1], br[1], ul[1], ur[1]); - var x1 = Math.max(bl[0], br[0], ul[0], ur[0]); - var y1 = Math.max(bl[1], br[1], ul[1], ur[1]); - - this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0); - } else { - // HACK to draw the gradient onto an infinite rectangle. - // PDF gradients are drawn across the entire image while - // Canvas only allows gradients to be drawn in a rectangle - // The following bug should allow us to remove this. - // https://bugzilla.mozilla.org/show_bug.cgi?id=664884 - - this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10); - } - - this.restore(); - }, - - // Images - beginInlineImage: function CanvasGraphics_beginInlineImage() { - error('Should not call beginInlineImage'); - }, - beginImageData: function CanvasGraphics_beginImageData() { - error('Should not call beginImageData'); - }, - - paintFormXObjectBegin: function CanvasGraphics_paintFormXObjectBegin(matrix, - bbox) { - this.save(); - this.baseTransformStack.push(this.baseTransform); - - if (isArray(matrix) && 6 === matrix.length) { - this.transform.apply(this, matrix); - } - - this.baseTransform = this.ctx.mozCurrentTransform; - - if (isArray(bbox) && 4 === bbox.length) { - var width = bbox[2] - bbox[0]; - var height = bbox[3] - bbox[1]; - this.ctx.rect(bbox[0], bbox[1], width, height); - this.clip(); - this.endPath(); - } - }, - - paintFormXObjectEnd: function CanvasGraphics_paintFormXObjectEnd() { - this.restore(); - this.baseTransform = this.baseTransformStack.pop(); - }, - - beginGroup: function CanvasGraphics_beginGroup(group) { - this.save(); - var currentCtx = this.ctx; - // TODO non-isolated groups - according to Rik at adobe non-isolated - // group results aren't usually that different and they even have tools - // that ignore this setting. Notes from Rik on implmenting: - // - When you encounter an transparency group, create a new canvas with - // the dimensions of the bbox - // - copy the content from the previous canvas to the new canvas - // - draw as usual - // - remove the backdrop alpha: - // alphaNew = 1 - (1 - alpha)/(1 - alphaBackdrop) with 'alpha' the alpha - // value of your transparency group and 'alphaBackdrop' the alpha of the - // backdrop - // - remove background color: - // colorNew = color - alphaNew *colorBackdrop /(1 - alphaNew) - if (!group.isolated) { - info('TODO: Support non-isolated groups.'); - } - - // TODO knockout - supposedly possible with the clever use of compositing - // modes. - if (group.knockout) { - warn('Knockout groups not supported.'); - } - - var currentTransform = currentCtx.mozCurrentTransform; - if (group.matrix) { - currentCtx.transform.apply(currentCtx, group.matrix); - } - assert(group.bbox, 'Bounding box is required.'); - - // Based on the current transform figure out how big the bounding box - // will actually be. - var bounds = Util.getAxialAlignedBoundingBox( - group.bbox, - currentCtx.mozCurrentTransform); - // Clip the bounding box to the current canvas. - var canvasBounds = [0, - 0, - currentCtx.canvas.width, - currentCtx.canvas.height]; - bounds = Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0]; - // Use ceil in case we're between sizes so we don't create canvas that is - // too small and make the canvas at least 1x1 pixels. - var offsetX = Math.floor(bounds[0]); - var offsetY = Math.floor(bounds[1]); - var drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1); - var drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1); - var scaleX = 1, scaleY = 1; - if (drawnWidth > MAX_GROUP_SIZE) { - scaleX = drawnWidth / MAX_GROUP_SIZE; - drawnWidth = MAX_GROUP_SIZE; - } - if (drawnHeight > MAX_GROUP_SIZE) { - scaleY = drawnHeight / MAX_GROUP_SIZE; - drawnHeight = MAX_GROUP_SIZE; - } - - var cacheId = 'groupAt' + this.groupLevel; - if (group.smask) { - // Using two cache entries is case if masks are used one after another. - cacheId += '_smask_' + ((this.smaskCounter++) % 2); - } - var scratchCanvas = this.cachedCanvases.getCanvas( - cacheId, drawnWidth, drawnHeight, true); - var groupCtx = scratchCanvas.context; - - // Since we created a new canvas that is just the size of the bounding box - // we have to translate the group ctx. - groupCtx.scale(1 / scaleX, 1 / scaleY); - groupCtx.translate(-offsetX, -offsetY); - groupCtx.transform.apply(groupCtx, currentTransform); - - if (group.smask) { - // Saving state and cached mask to be used in setGState. - this.smaskStack.push({ - canvas: scratchCanvas.canvas, - context: groupCtx, - offsetX: offsetX, - offsetY: offsetY, - scaleX: scaleX, - scaleY: scaleY, - subtype: group.smask.subtype, - backdrop: group.smask.backdrop, - transferMap: group.smask.transferMap || null - }); - } else { - // Setup the current ctx so when the group is popped we draw it at the - // right location. - currentCtx.setTransform(1, 0, 0, 1, 0, 0); - currentCtx.translate(offsetX, offsetY); - currentCtx.scale(scaleX, scaleY); - } - // The transparency group inherits all off the current graphics state - // except the blend mode, soft mask, and alpha constants. - copyCtxState(currentCtx, groupCtx); - this.ctx = groupCtx; - this.setGState([ - ['BM', 'Normal'], - ['ca', 1], - ['CA', 1] - ]); - this.groupStack.push(currentCtx); - this.groupLevel++; - }, - - endGroup: function CanvasGraphics_endGroup(group) { - this.groupLevel--; - var groupCtx = this.ctx; - this.ctx = this.groupStack.pop(); - // Turn off image smoothing to avoid sub pixel interpolation which can - // look kind of blurry for some pdfs. - if (this.ctx.imageSmoothingEnabled !== undefined) { - this.ctx.imageSmoothingEnabled = false; - } else { - this.ctx.mozImageSmoothingEnabled = false; - } - if (group.smask) { - this.tempSMask = this.smaskStack.pop(); - } else { - this.ctx.drawImage(groupCtx.canvas, 0, 0); - } - this.restore(); - }, - - beginAnnotations: function CanvasGraphics_beginAnnotations() { - this.save(); - this.current = new CanvasExtraState(); - - if (this.baseTransform) { - this.ctx.setTransform.apply(this.ctx, this.baseTransform); - } - }, - - endAnnotations: function CanvasGraphics_endAnnotations() { - this.restore(); - }, - - beginAnnotation: function CanvasGraphics_beginAnnotation(rect, transform, - matrix) { - this.save(); - - if (isArray(rect) && 4 === rect.length) { - var width = rect[2] - rect[0]; - var height = rect[3] - rect[1]; - this.ctx.rect(rect[0], rect[1], width, height); - this.clip(); - this.endPath(); - } - - this.transform.apply(this, transform); - this.transform.apply(this, matrix); - }, - - endAnnotation: function CanvasGraphics_endAnnotation() { - this.restore(); - }, - - paintJpegXObject: function CanvasGraphics_paintJpegXObject(objId, w, h) { - var domImage = this.objs.get(objId); - if (!domImage) { - warn('Dependent image isn\'t ready yet'); - return; - } - - this.save(); - - var ctx = this.ctx; - // scale the image to the unit square - ctx.scale(1 / w, -1 / h); - - ctx.drawImage(domImage, 0, 0, domImage.width, domImage.height, - 0, -h, w, h); - if (this.imageLayer) { - var currentTransform = ctx.mozCurrentTransformInverse; - var position = this.getCanvasPosition(0, 0); - this.imageLayer.appendImage({ - objId: objId, - left: position[0], - top: position[1], - width: w / currentTransform[0], - height: h / currentTransform[3] - }); - } - this.restore(); - }, - - paintImageMaskXObject: function CanvasGraphics_paintImageMaskXObject(img) { - var ctx = this.ctx; - var width = img.width, height = img.height; - var fillColor = this.current.fillColor; - var isPatternFill = this.current.patternFill; - - var glyph = this.processingType3; - - if (COMPILE_TYPE3_GLYPHS && glyph && glyph.compiled === undefined) { - if (width <= MAX_SIZE_TO_COMPILE && height <= MAX_SIZE_TO_COMPILE) { - glyph.compiled = - compileType3Glyph({data: img.data, width: width, height: height}); - } else { - glyph.compiled = null; - } - } - - if (glyph && glyph.compiled) { - glyph.compiled(ctx); - return; - } - - var maskCanvas = this.cachedCanvases.getCanvas('maskCanvas', - width, height); - var maskCtx = maskCanvas.context; - maskCtx.save(); - - putBinaryImageMask(maskCtx, img); - - maskCtx.globalCompositeOperation = 'source-in'; - - maskCtx.fillStyle = isPatternFill ? - fillColor.getPattern(maskCtx, this) : fillColor; - maskCtx.fillRect(0, 0, width, height); - - maskCtx.restore(); - - this.paintInlineImageXObject(maskCanvas.canvas); - }, - - paintImageMaskXObjectRepeat: - function CanvasGraphics_paintImageMaskXObjectRepeat(imgData, scaleX, - scaleY, positions) { - var width = imgData.width; - var height = imgData.height; - var fillColor = this.current.fillColor; - var isPatternFill = this.current.patternFill; - - var maskCanvas = this.cachedCanvases.getCanvas('maskCanvas', - width, height); - var maskCtx = maskCanvas.context; - maskCtx.save(); - - putBinaryImageMask(maskCtx, imgData); - - maskCtx.globalCompositeOperation = 'source-in'; - - maskCtx.fillStyle = isPatternFill ? - fillColor.getPattern(maskCtx, this) : fillColor; - maskCtx.fillRect(0, 0, width, height); - - maskCtx.restore(); - - var ctx = this.ctx; - for (var i = 0, ii = positions.length; i < ii; i += 2) { - ctx.save(); - ctx.transform(scaleX, 0, 0, scaleY, positions[i], positions[i + 1]); - ctx.scale(1, -1); - ctx.drawImage(maskCanvas.canvas, 0, 0, width, height, - 0, -1, 1, 1); - ctx.restore(); - } - }, - - paintImageMaskXObjectGroup: - function CanvasGraphics_paintImageMaskXObjectGroup(images) { - var ctx = this.ctx; - - var fillColor = this.current.fillColor; - var isPatternFill = this.current.patternFill; - for (var i = 0, ii = images.length; i < ii; i++) { - var image = images[i]; - var width = image.width, height = image.height; - - var maskCanvas = this.cachedCanvases.getCanvas('maskCanvas', - width, height); - var maskCtx = maskCanvas.context; - maskCtx.save(); - - putBinaryImageMask(maskCtx, image); - - maskCtx.globalCompositeOperation = 'source-in'; - - maskCtx.fillStyle = isPatternFill ? - fillColor.getPattern(maskCtx, this) : fillColor; - maskCtx.fillRect(0, 0, width, height); - - maskCtx.restore(); - - ctx.save(); - ctx.transform.apply(ctx, image.transform); - ctx.scale(1, -1); - ctx.drawImage(maskCanvas.canvas, 0, 0, width, height, - 0, -1, 1, 1); - ctx.restore(); - } - }, - - paintImageXObject: function CanvasGraphics_paintImageXObject(objId) { - var imgData = this.objs.get(objId); - if (!imgData) { - warn('Dependent image isn\'t ready yet'); - return; - } - - this.paintInlineImageXObject(imgData); - }, - - paintImageXObjectRepeat: - function CanvasGraphics_paintImageXObjectRepeat(objId, scaleX, scaleY, - positions) { - var imgData = this.objs.get(objId); - if (!imgData) { - warn('Dependent image isn\'t ready yet'); - return; - } - - var width = imgData.width; - var height = imgData.height; - var map = []; - for (var i = 0, ii = positions.length; i < ii; i += 2) { - map.push({transform: [scaleX, 0, 0, scaleY, positions[i], - positions[i + 1]], x: 0, y: 0, w: width, h: height}); - } - this.paintInlineImageXObjectGroup(imgData, map); - }, - - paintInlineImageXObject: - function CanvasGraphics_paintInlineImageXObject(imgData) { - var width = imgData.width; - var height = imgData.height; - var ctx = this.ctx; - - this.save(); - // scale the image to the unit square - ctx.scale(1 / width, -1 / height); - - var currentTransform = ctx.mozCurrentTransformInverse; - var a = currentTransform[0], b = currentTransform[1]; - var widthScale = Math.max(Math.sqrt(a * a + b * b), 1); - var c = currentTransform[2], d = currentTransform[3]; - var heightScale = Math.max(Math.sqrt(c * c + d * d), 1); - - var imgToPaint, tmpCanvas; - // instanceof HTMLElement does not work in jsdom node.js module - if (imgData instanceof HTMLElement || !imgData.data) { - imgToPaint = imgData; - } else { - tmpCanvas = this.cachedCanvases.getCanvas('inlineImage', - width, height); - var tmpCtx = tmpCanvas.context; - putBinaryImageData(tmpCtx, imgData); - imgToPaint = tmpCanvas.canvas; - } - - var paintWidth = width, paintHeight = height; - var tmpCanvasId = 'prescale1'; - // Vertial or horizontal scaling shall not be more than 2 to not loose the - // pixels during drawImage operation, painting on the temporary canvas(es) - // that are twice smaller in size - while ((widthScale > 2 && paintWidth > 1) || - (heightScale > 2 && paintHeight > 1)) { - var newWidth = paintWidth, newHeight = paintHeight; - if (widthScale > 2 && paintWidth > 1) { - newWidth = Math.ceil(paintWidth / 2); - widthScale /= paintWidth / newWidth; - } - if (heightScale > 2 && paintHeight > 1) { - newHeight = Math.ceil(paintHeight / 2); - heightScale /= paintHeight / newHeight; - } - tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, - newWidth, newHeight); - tmpCtx = tmpCanvas.context; - tmpCtx.clearRect(0, 0, newWidth, newHeight); - tmpCtx.drawImage(imgToPaint, 0, 0, paintWidth, paintHeight, - 0, 0, newWidth, newHeight); - imgToPaint = tmpCanvas.canvas; - paintWidth = newWidth; - paintHeight = newHeight; - tmpCanvasId = tmpCanvasId === 'prescale1' ? 'prescale2' : 'prescale1'; - } - ctx.drawImage(imgToPaint, 0, 0, paintWidth, paintHeight, - 0, -height, width, height); - - if (this.imageLayer) { - var position = this.getCanvasPosition(0, -height); - this.imageLayer.appendImage({ - imgData: imgData, - left: position[0], - top: position[1], - width: width / currentTransform[0], - height: height / currentTransform[3] - }); - } - this.restore(); - }, - - paintInlineImageXObjectGroup: - function CanvasGraphics_paintInlineImageXObjectGroup(imgData, map) { - var ctx = this.ctx; - var w = imgData.width; - var h = imgData.height; - - var tmpCanvas = this.cachedCanvases.getCanvas('inlineImage', w, h); - var tmpCtx = tmpCanvas.context; - putBinaryImageData(tmpCtx, imgData); - - for (var i = 0, ii = map.length; i < ii; i++) { - var entry = map[i]; - ctx.save(); - ctx.transform.apply(ctx, entry.transform); - ctx.scale(1, -1); - ctx.drawImage(tmpCanvas.canvas, entry.x, entry.y, entry.w, entry.h, - 0, -1, 1, 1); - if (this.imageLayer) { - var position = this.getCanvasPosition(entry.x, entry.y); - this.imageLayer.appendImage({ - imgData: imgData, - left: position[0], - top: position[1], - width: w, - height: h - }); - } - ctx.restore(); - } - }, - - paintSolidColorImageMask: - function CanvasGraphics_paintSolidColorImageMask() { - this.ctx.fillRect(0, 0, 1, 1); - }, - - paintXObject: function CanvasGraphics_paintXObject() { - warn('Unsupported \'paintXObject\' command.'); - }, - - // Marked content - - markPoint: function CanvasGraphics_markPoint(tag) { - // TODO Marked content. - }, - markPointProps: function CanvasGraphics_markPointProps(tag, properties) { - // TODO Marked content. - }, - beginMarkedContent: function CanvasGraphics_beginMarkedContent(tag) { - // TODO Marked content. - }, - beginMarkedContentProps: function CanvasGraphics_beginMarkedContentProps( - tag, properties) { - // TODO Marked content. - }, - endMarkedContent: function CanvasGraphics_endMarkedContent() { - // TODO Marked content. - }, - - // Compatibility - - beginCompat: function CanvasGraphics_beginCompat() { - // TODO ignore undefined operators (should we do that anyway?) - }, - endCompat: function CanvasGraphics_endCompat() { - // TODO stop ignoring undefined operators - }, - - // Helper functions - - consumePath: function CanvasGraphics_consumePath() { - var ctx = this.ctx; - if (this.pendingClip) { - if (this.pendingClip === EO_CLIP) { - if (ctx.mozFillRule !== undefined) { - ctx.mozFillRule = 'evenodd'; - ctx.clip(); - ctx.mozFillRule = 'nonzero'; - } else { - ctx.clip('evenodd'); - } - } else { - ctx.clip(); - } - this.pendingClip = null; - } - ctx.beginPath(); - }, - getSinglePixelWidth: function CanvasGraphics_getSinglePixelWidth(scale) { - if (this.cachedGetSinglePixelWidth === null) { - var inverse = this.ctx.mozCurrentTransformInverse; - // max of the current horizontal and vertical scale - this.cachedGetSinglePixelWidth = Math.sqrt(Math.max( - (inverse[0] * inverse[0] + inverse[1] * inverse[1]), - (inverse[2] * inverse[2] + inverse[3] * inverse[3]))); - } - return this.cachedGetSinglePixelWidth; - }, - getCanvasPosition: function CanvasGraphics_getCanvasPosition(x, y) { - var transform = this.ctx.mozCurrentTransform; - return [ - transform[0] * x + transform[2] * y + transform[4], - transform[1] * x + transform[3] * y + transform[5] - ]; - } - }; - - for (var op in OPS) { - CanvasGraphics.prototype[OPS[op]] = CanvasGraphics.prototype[op]; - } - - return CanvasGraphics; -})(); - -exports.CanvasGraphics = CanvasGraphics; -exports.createScratchCanvas = createScratchCanvas; -})); - - -(function (root, factory) { - { - factory((root.pdfjsDisplayAPI = {}), root.pdfjsSharedUtil, - root.pdfjsDisplayFontLoader, root.pdfjsDisplayCanvas, - root.pdfjsDisplayMetadata, root.pdfjsSharedGlobal); - } -}(this, function (exports, sharedUtil, displayFontLoader, displayCanvas, - displayMetadata, sharedGlobal, amdRequire) { - -var InvalidPDFException = sharedUtil.InvalidPDFException; -var MessageHandler = sharedUtil.MessageHandler; -var MissingPDFException = sharedUtil.MissingPDFException; -var PasswordResponses = sharedUtil.PasswordResponses; -var PasswordException = sharedUtil.PasswordException; -var StatTimer = sharedUtil.StatTimer; -var UnexpectedResponseException = sharedUtil.UnexpectedResponseException; -var UnknownErrorException = sharedUtil.UnknownErrorException; -var Util = sharedUtil.Util; -var createPromiseCapability = sharedUtil.createPromiseCapability; -var combineUrl = sharedUtil.combineUrl; -var error = sharedUtil.error; -var deprecated = sharedUtil.deprecated; -var info = sharedUtil.info; -var isArrayBuffer = sharedUtil.isArrayBuffer; -var loadJpegStream = sharedUtil.loadJpegStream; -var stringToBytes = sharedUtil.stringToBytes; -var warn = sharedUtil.warn; -var FontFaceObject = displayFontLoader.FontFaceObject; -var FontLoader = displayFontLoader.FontLoader; -var CanvasGraphics = displayCanvas.CanvasGraphics; -var createScratchCanvas = displayCanvas.createScratchCanvas; -var Metadata = displayMetadata.Metadata; -var PDFJS = sharedGlobal.PDFJS; -var globalScope = sharedGlobal.globalScope; - -var DEFAULT_RANGE_CHUNK_SIZE = 65536; // 2^16 = 65536 - - -var useRequireEnsure = false; -if (typeof module !== 'undefined' && module.require) { - // node.js - disable worker and set require.ensure. - PDFJS.disableWorker = true; - if (typeof require.ensure === 'undefined') { - require.ensure = require('node-ensure'); - } - useRequireEnsure = true; -} -if (typeof __webpack_require__ !== 'undefined') { - // Webpack - get/bundle pdf.worker.js as additional file. - PDFJS.workerSrc = require('entry?name=[hash]-worker.js!./pdf.worker.js'); - useRequireEnsure = true; -} -if (typeof requirejs !== 'undefined' && requirejs.toUrl) { - PDFJS.workerSrc = requirejs.toUrl('pdfjs-dist/build/pdf.worker.js'); -} -var fakeWorkerFilesLoader = useRequireEnsure ? (function (callback) { - require.ensure([], function () { - require('./pdf.worker.js'); - callback(); - }); -}) : (typeof requirejs !== 'undefined') ? (function (callback) { - requirejs(['pdfjs-dist/build/pdf.worker'], function (worker) { - callback(); - }); -}) : null; - - -/** - * The maximum allowed image size in total pixels e.g. width * height. Images - * above this value will not be drawn. Use -1 for no limit. - * @var {number} - */ -PDFJS.maxImageSize = (PDFJS.maxImageSize === undefined ? - -1 : PDFJS.maxImageSize); - -/** - * The url of where the predefined Adobe CMaps are located. Include trailing - * slash. - * @var {string} - */ -PDFJS.cMapUrl = (PDFJS.cMapUrl === undefined ? null : PDFJS.cMapUrl); - -/** - * Specifies if CMaps are binary packed. - * @var {boolean} - */ -PDFJS.cMapPacked = PDFJS.cMapPacked === undefined ? false : PDFJS.cMapPacked; - -/** - * By default fonts are converted to OpenType fonts and loaded via font face - * rules. If disabled, the font will be rendered using a built in font renderer - * that constructs the glyphs with primitive path commands. - * @var {boolean} - */ -PDFJS.disableFontFace = (PDFJS.disableFontFace === undefined ? - false : PDFJS.disableFontFace); - -/** - * Path for image resources, mainly for annotation icons. Include trailing - * slash. - * @var {string} - */ -PDFJS.imageResourcesPath = (PDFJS.imageResourcesPath === undefined ? - '' : PDFJS.imageResourcesPath); - -/** - * Disable the web worker and run all code on the main thread. This will happen - * automatically if the browser doesn't support workers or sending typed arrays - * to workers. - * @var {boolean} - */ -PDFJS.disableWorker = (PDFJS.disableWorker === undefined ? - false : PDFJS.disableWorker); - -/** - * Path and filename of the worker file. Required when the worker is enabled in - * development mode. If unspecified in the production build, the worker will be - * loaded based on the location of the pdf.js file. It is recommended that - * the workerSrc is set in a custom application to prevent issues caused by - * third-party frameworks and libraries. - * @var {string} - */ -PDFJS.workerSrc = (PDFJS.workerSrc === undefined ? null : PDFJS.workerSrc); - -/** - * Disable range request loading of PDF files. When enabled and if the server - * supports partial content requests then the PDF will be fetched in chunks. - * Enabled (false) by default. - * @var {boolean} - */ -PDFJS.disableRange = (PDFJS.disableRange === undefined ? - false : PDFJS.disableRange); - -/** - * Disable streaming of PDF file data. By default PDF.js attempts to load PDF - * in chunks. This default behavior can be disabled. - * @var {boolean} - */ -PDFJS.disableStream = (PDFJS.disableStream === undefined ? - false : PDFJS.disableStream); - -/** - * Disable pre-fetching of PDF file data. When range requests are enabled PDF.js - * will automatically keep fetching more data even if it isn't needed to display - * the current page. This default behavior can be disabled. - * - * NOTE: It is also necessary to disable streaming, see above, - * in order for disabling of pre-fetching to work correctly. - * @var {boolean} - */ -PDFJS.disableAutoFetch = (PDFJS.disableAutoFetch === undefined ? - false : PDFJS.disableAutoFetch); - -/** - * Enables special hooks for debugging PDF.js. - * @var {boolean} - */ -PDFJS.pdfBug = (PDFJS.pdfBug === undefined ? false : PDFJS.pdfBug); - -/** - * Enables transfer usage in postMessage for ArrayBuffers. - * @var {boolean} - */ -PDFJS.postMessageTransfers = (PDFJS.postMessageTransfers === undefined ? - true : PDFJS.postMessageTransfers); - -/** - * Disables URL.createObjectURL usage. - * @var {boolean} - */ -PDFJS.disableCreateObjectURL = (PDFJS.disableCreateObjectURL === undefined ? - false : PDFJS.disableCreateObjectURL); - -/** - * Disables WebGL usage. - * @var {boolean} - */ -PDFJS.disableWebGL = (PDFJS.disableWebGL === undefined ? - true : PDFJS.disableWebGL); - -/** - * Disables fullscreen support, and by extension Presentation Mode, - * in browsers which support the fullscreen API. - * @var {boolean} - */ -PDFJS.disableFullscreen = (PDFJS.disableFullscreen === undefined ? - false : PDFJS.disableFullscreen); - -/** - * Enables CSS only zooming. - * @var {boolean} - */ -PDFJS.useOnlyCssZoom = (PDFJS.useOnlyCssZoom === undefined ? - false : PDFJS.useOnlyCssZoom); - -/** - * Controls the logging level. - * The constants from PDFJS.VERBOSITY_LEVELS should be used: - * - errors - * - warnings [default] - * - infos - * @var {number} - */ -PDFJS.verbosity = (PDFJS.verbosity === undefined ? - PDFJS.VERBOSITY_LEVELS.warnings : PDFJS.verbosity); - -/** - * The maximum supported canvas size in total pixels e.g. width * height. - * The default value is 4096 * 4096. Use -1 for no limit. - * @var {number} - */ -PDFJS.maxCanvasPixels = (PDFJS.maxCanvasPixels === undefined ? - 16777216 : PDFJS.maxCanvasPixels); - -/** - * (Deprecated) Opens external links in a new window if enabled. - * The default behavior opens external links in the PDF.js window. - * - * NOTE: This property has been deprecated, please use - * `PDFJS.externalLinkTarget = PDFJS.LinkTarget.BLANK` instead. - * @var {boolean} - */ -PDFJS.openExternalLinksInNewWindow = ( - PDFJS.openExternalLinksInNewWindow === undefined ? - false : PDFJS.openExternalLinksInNewWindow); - -/** - * Specifies the |target| attribute for external links. - * The constants from PDFJS.LinkTarget should be used: - * - NONE [default] - * - SELF - * - BLANK - * - PARENT - * - TOP - * @var {number} - */ -PDFJS.externalLinkTarget = (PDFJS.externalLinkTarget === undefined ? - PDFJS.LinkTarget.NONE : PDFJS.externalLinkTarget); - -/** - * Specifies the |rel| attribute for external links. Defaults to stripping - * the referrer. - * @var {string} - */ -PDFJS.externalLinkRel = (PDFJS.externalLinkRel === undefined ? - 'noreferrer' : PDFJS.externalLinkRel); - -/** - * Determines if we can eval strings as JS. Primarily used to improve - * performance for font rendering. - * @var {boolean} - */ -PDFJS.isEvalSupported = (PDFJS.isEvalSupported === undefined ? - true : PDFJS.isEvalSupported); - -/** - * Document initialization / loading parameters object. - * - * @typedef {Object} DocumentInitParameters - * @property {string} url - The URL of the PDF. - * @property {TypedArray|Array|string} data - Binary PDF data. Use typed arrays - * (Uint8Array) to improve the memory usage. If PDF data is BASE64-encoded, - * use atob() to convert it to a binary string first. - * @property {Object} httpHeaders - Basic authentication headers. - * @property {boolean} withCredentials - Indicates whether or not cross-site - * Access-Control requests should be made using credentials such as cookies - * or authorization headers. The default is false. - * @property {string} password - For decrypting password-protected PDFs. - * @property {TypedArray} initialData - A typed array with the first portion or - * all of the pdf data. Used by the extension since some data is already - * loaded before the switch to range requests. - * @property {number} length - The PDF file length. It's used for progress - * reports and range requests operations. - * @property {PDFDataRangeTransport} range - * @property {number} rangeChunkSize - Optional parameter to specify - * maximum number of bytes fetched per range request. The default value is - * 2^16 = 65536. - * @property {PDFWorker} worker - The worker that will be used for the loading - * and parsing of the PDF data. - */ - -/** - * @typedef {Object} PDFDocumentStats - * @property {Array} streamTypes - Used stream types in the document (an item - * is set to true if specific stream ID was used in the document). - * @property {Array} fontTypes - Used font type in the document (an item is set - * to true if specific font ID was used in the document). - */ - -/** - * This is the main entry point for loading a PDF and interacting with it. - * NOTE: If a URL is used to fetch the PDF data a standard XMLHttpRequest(XHR) - * is used, which means it must follow the same origin rules that any XHR does - * e.g. No cross domain requests without CORS. - * - * @param {string|TypedArray|DocumentInitParameters|PDFDataRangeTransport} src - * Can be a url to where a PDF is located, a typed array (Uint8Array) - * already populated with data or parameter object. - * - * @param {PDFDataRangeTransport} pdfDataRangeTransport (deprecated) It is used - * if you want to manually serve range requests for data in the PDF. - * - * @param {function} passwordCallback (deprecated) It is used to request a - * password if wrong or no password was provided. The callback receives two - * parameters: function that needs to be called with new password and reason - * (see {PasswordResponses}). - * - * @param {function} progressCallback (deprecated) It is used to be able to - * monitor the loading progress of the PDF file (necessary to implement e.g. - * a loading bar). The callback receives an {Object} with the properties: - * {number} loaded and {number} total. - * - * @return {PDFDocumentLoadingTask} - */ -PDFJS.getDocument = function getDocument(src, - pdfDataRangeTransport, - passwordCallback, - progressCallback) { - var task = new PDFDocumentLoadingTask(); - - // Support of the obsolete arguments (for compatibility with API v1.0) - if (arguments.length > 1) { - deprecated('getDocument is called with pdfDataRangeTransport, ' + - 'passwordCallback or progressCallback argument'); - } - if (pdfDataRangeTransport) { - if (!(pdfDataRangeTransport instanceof PDFDataRangeTransport)) { - // Not a PDFDataRangeTransport instance, trying to add missing properties. - pdfDataRangeTransport = Object.create(pdfDataRangeTransport); - pdfDataRangeTransport.length = src.length; - pdfDataRangeTransport.initialData = src.initialData; - if (!pdfDataRangeTransport.abort) { - pdfDataRangeTransport.abort = function () {}; - } - } - src = Object.create(src); - src.range = pdfDataRangeTransport; - } - task.onPassword = passwordCallback || null; - task.onProgress = progressCallback || null; - - var source; - if (typeof src === 'string') { - source = { url: src }; - } else if (isArrayBuffer(src)) { - source = { data: src }; - } else if (src instanceof PDFDataRangeTransport) { - source = { range: src }; - } else { - if (typeof src !== 'object') { - error('Invalid parameter in getDocument, need either Uint8Array, ' + - 'string or a parameter object'); - } - if (!src.url && !src.data && !src.range) { - error('Invalid parameter object: need either .data, .range or .url'); - } - - source = src; - } - - var params = {}; - var rangeTransport = null; - var worker = null; - for (var key in source) { - if (key === 'url' && typeof window !== 'undefined') { - // The full path is required in the 'url' field. - params[key] = combineUrl(window.location.href, source[key]); - continue; - } else if (key === 'range') { - rangeTransport = source[key]; - continue; - } else if (key === 'worker') { - worker = source[key]; - continue; - } else if (key === 'data' && !(source[key] instanceof Uint8Array)) { - // Converting string or array-like data to Uint8Array. - var pdfBytes = source[key]; - if (typeof pdfBytes === 'string') { - params[key] = stringToBytes(pdfBytes); - } else if (typeof pdfBytes === 'object' && pdfBytes !== null && - !isNaN(pdfBytes.length)) { - params[key] = new Uint8Array(pdfBytes); - } else if (isArrayBuffer(pdfBytes)) { - params[key] = new Uint8Array(pdfBytes); - } else { - error('Invalid PDF binary data: either typed array, string or ' + - 'array-like object is expected in the data property.'); - } - continue; - } - params[key] = source[key]; - } - - params.rangeChunkSize = params.rangeChunkSize || DEFAULT_RANGE_CHUNK_SIZE; - - if (!worker) { - // Worker was not provided -- creating and owning our own. - worker = new PDFWorker(); - task._worker = worker; - } - var docId = task.docId; - worker.promise.then(function () { - if (task.destroyed) { - throw new Error('Loading aborted'); - } - return _fetchDocument(worker, params, rangeTransport, docId).then( - function (workerId) { - if (task.destroyed) { - throw new Error('Loading aborted'); - } - var messageHandler = new MessageHandler(docId, workerId, worker.port); - messageHandler.send('Ready', null); - var transport = new WorkerTransport(messageHandler, task, rangeTransport); - task._transport = transport; - }); - }).catch(task._capability.reject); - - return task; -}; - -/** - * Starts fetching of specified PDF document/data. - * @param {PDFWorker} worker - * @param {Object} source - * @param {PDFDataRangeTransport} pdfDataRangeTransport - * @param {string} docId Unique document id, used as MessageHandler id. - * @returns {Promise} The promise, which is resolved when worker id of - * MessageHandler is known. - * @private - */ -function _fetchDocument(worker, source, pdfDataRangeTransport, docId) { - if (worker.destroyed) { - return Promise.reject(new Error('Worker was destroyed')); - } - - source.disableAutoFetch = PDFJS.disableAutoFetch; - source.disableStream = PDFJS.disableStream; - source.chunkedViewerLoading = !!pdfDataRangeTransport; - if (pdfDataRangeTransport) { - source.length = pdfDataRangeTransport.length; - source.initialData = pdfDataRangeTransport.initialData; - } - return worker.messageHandler.sendWithPromise('GetDocRequest', { - docId: docId, - source: source, - disableRange: PDFJS.disableRange, - maxImageSize: PDFJS.maxImageSize, - cMapUrl: PDFJS.cMapUrl, - cMapPacked: PDFJS.cMapPacked, - disableFontFace: PDFJS.disableFontFace, - disableCreateObjectURL: PDFJS.disableCreateObjectURL, - verbosity: PDFJS.verbosity - }).then(function (workerId) { - if (worker.destroyed) { - throw new Error('Worker was destroyed'); - } - return workerId; - }); -} - -/** - * PDF document loading operation. - * @class - * @alias PDFDocumentLoadingTask - */ -var PDFDocumentLoadingTask = (function PDFDocumentLoadingTaskClosure() { - var nextDocumentId = 0; - - /** @constructs PDFDocumentLoadingTask */ - function PDFDocumentLoadingTask() { - this._capability = createPromiseCapability(); - this._transport = null; - this._worker = null; - - /** - * Unique document loading task id -- used in MessageHandlers. - * @type {string} - */ - this.docId = 'd' + (nextDocumentId++); - - /** - * Shows if loading task is destroyed. - * @type {boolean} - */ - this.destroyed = false; - - /** - * Callback to request a password if wrong or no password was provided. - * The callback receives two parameters: function that needs to be called - * with new password and reason (see {PasswordResponses}). - */ - this.onPassword = null; - - /** - * Callback to be able to monitor the loading progress of the PDF file - * (necessary to implement e.g. a loading bar). The callback receives - * an {Object} with the properties: {number} loaded and {number} total. - */ - this.onProgress = null; - - /** - * Callback to when unsupported feature is used. The callback receives - * an {PDFJS.UNSUPPORTED_FEATURES} argument. - */ - this.onUnsupportedFeature = null; - } - - PDFDocumentLoadingTask.prototype = - /** @lends PDFDocumentLoadingTask.prototype */ { - /** - * @return {Promise} - */ - get promise() { - return this._capability.promise; - }, - - /** - * Aborts all network requests and destroys worker. - * @return {Promise} A promise that is resolved after destruction activity - * is completed. - */ - destroy: function () { - this.destroyed = true; - - var transportDestroyed = !this._transport ? Promise.resolve() : - this._transport.destroy(); - return transportDestroyed.then(function () { - this._transport = null; - if (this._worker) { - this._worker.destroy(); - this._worker = null; - } - }.bind(this)); - }, - - /** - * Registers callbacks to indicate the document loading completion. - * - * @param {function} onFulfilled The callback for the loading completion. - * @param {function} onRejected The callback for the loading failure. - * @return {Promise} A promise that is resolved after the onFulfilled or - * onRejected callback. - */ - then: function PDFDocumentLoadingTask_then(onFulfilled, onRejected) { - return this.promise.then.apply(this.promise, arguments); - } - }; - - return PDFDocumentLoadingTask; -})(); - -/** - * Abstract class to support range requests file loading. - * @class - * @alias PDFJS.PDFDataRangeTransport - * @param {number} length - * @param {Uint8Array} initialData - */ -var PDFDataRangeTransport = (function pdfDataRangeTransportClosure() { - function PDFDataRangeTransport(length, initialData) { - this.length = length; - this.initialData = initialData; - - this._rangeListeners = []; - this._progressListeners = []; - this._progressiveReadListeners = []; - this._readyCapability = createPromiseCapability(); - } - PDFDataRangeTransport.prototype = - /** @lends PDFDataRangeTransport.prototype */ { - addRangeListener: - function PDFDataRangeTransport_addRangeListener(listener) { - this._rangeListeners.push(listener); - }, - - addProgressListener: - function PDFDataRangeTransport_addProgressListener(listener) { - this._progressListeners.push(listener); - }, - - addProgressiveReadListener: - function PDFDataRangeTransport_addProgressiveReadListener(listener) { - this._progressiveReadListeners.push(listener); - }, - - onDataRange: function PDFDataRangeTransport_onDataRange(begin, chunk) { - var listeners = this._rangeListeners; - for (var i = 0, n = listeners.length; i < n; ++i) { - listeners[i](begin, chunk); - } - }, - - onDataProgress: function PDFDataRangeTransport_onDataProgress(loaded) { - this._readyCapability.promise.then(function () { - var listeners = this._progressListeners; - for (var i = 0, n = listeners.length; i < n; ++i) { - listeners[i](loaded); - } - }.bind(this)); - }, - - onDataProgressiveRead: - function PDFDataRangeTransport_onDataProgress(chunk) { - this._readyCapability.promise.then(function () { - var listeners = this._progressiveReadListeners; - for (var i = 0, n = listeners.length; i < n; ++i) { - listeners[i](chunk); - } - }.bind(this)); - }, - - transportReady: function PDFDataRangeTransport_transportReady() { - this._readyCapability.resolve(); - }, - - requestDataRange: - function PDFDataRangeTransport_requestDataRange(begin, end) { - throw new Error('Abstract method PDFDataRangeTransport.requestDataRange'); - }, - - abort: function PDFDataRangeTransport_abort() { - } - }; - return PDFDataRangeTransport; -})(); - -PDFJS.PDFDataRangeTransport = PDFDataRangeTransport; - -/** - * Proxy to a PDFDocument in the worker thread. Also, contains commonly used - * properties that can be read synchronously. - * @class - * @alias PDFDocumentProxy - */ -var PDFDocumentProxy = (function PDFDocumentProxyClosure() { - function PDFDocumentProxy(pdfInfo, transport, loadingTask) { - this.pdfInfo = pdfInfo; - this.transport = transport; - this.loadingTask = loadingTask; - } - PDFDocumentProxy.prototype = /** @lends PDFDocumentProxy.prototype */ { - /** - * @return {number} Total number of pages the PDF contains. - */ - get numPages() { - return this.pdfInfo.numPages; - }, - /** - * @return {string} A unique ID to identify a PDF. Not guaranteed to be - * unique. - */ - get fingerprint() { - return this.pdfInfo.fingerprint; - }, - /** - * @param {number} pageNumber The page number to get. The first page is 1. - * @return {Promise} A promise that is resolved with a {@link PDFPageProxy} - * object. - */ - getPage: function PDFDocumentProxy_getPage(pageNumber) { - return this.transport.getPage(pageNumber); - }, - /** - * @param {{num: number, gen: number}} ref The page reference. Must have - * the 'num' and 'gen' properties. - * @return {Promise} A promise that is resolved with the page index that is - * associated with the reference. - */ - getPageIndex: function PDFDocumentProxy_getPageIndex(ref) { - return this.transport.getPageIndex(ref); - }, - /** - * @return {Promise} A promise that is resolved with a lookup table for - * mapping named destinations to reference numbers. - * - * This can be slow for large documents: use getDestination instead - */ - getDestinations: function PDFDocumentProxy_getDestinations() { - return this.transport.getDestinations(); - }, - /** - * @param {string} id The named destination to get. - * @return {Promise} A promise that is resolved with all information - * of the given named destination. - */ - getDestination: function PDFDocumentProxy_getDestination(id) { - return this.transport.getDestination(id); - }, - /** - * @return {Promise} A promise that is resolved with: - * an Array containing the pageLabels that correspond to the pageIndexes, - * or `null` when no pageLabels are present in the PDF file. - */ - getPageLabels: function PDFDocumentProxy_getPageLabels() { - return this.transport.getPageLabels(); - }, - /** - * @return {Promise} A promise that is resolved with a lookup table for - * mapping named attachments to their content. - */ - getAttachments: function PDFDocumentProxy_getAttachments() { - return this.transport.getAttachments(); - }, - /** - * @return {Promise} A promise that is resolved with an array of all the - * JavaScript strings in the name tree. - */ - getJavaScript: function PDFDocumentProxy_getJavaScript() { - return this.transport.getJavaScript(); - }, - /** - * @return {Promise} A promise that is resolved with an {Array} that is a - * tree outline (if it has one) of the PDF. The tree is in the format of: - * [ - * { - * title: string, - * bold: boolean, - * italic: boolean, - * color: rgb array, - * dest: dest obj, - * url: string, - * items: array of more items like this - * }, - * ... - * ]. - */ - getOutline: function PDFDocumentProxy_getOutline() { - return this.transport.getOutline(); - }, - /** - * @return {Promise} A promise that is resolved with an {Object} that has - * info and metadata properties. Info is an {Object} filled with anything - * available in the information dictionary and similarly metadata is a - * {Metadata} object with information from the metadata section of the PDF. - */ - getMetadata: function PDFDocumentProxy_getMetadata() { - return this.transport.getMetadata(); - }, - /** - * @return {Promise} A promise that is resolved with a TypedArray that has - * the raw data from the PDF. - */ - getData: function PDFDocumentProxy_getData() { - return this.transport.getData(); - }, - /** - * @return {Promise} A promise that is resolved when the document's data - * is loaded. It is resolved with an {Object} that contains the length - * property that indicates size of the PDF data in bytes. - */ - getDownloadInfo: function PDFDocumentProxy_getDownloadInfo() { - return this.transport.downloadInfoCapability.promise; - }, - /** - * @return {Promise} A promise this is resolved with current stats about - * document structures (see {@link PDFDocumentStats}). - */ - getStats: function PDFDocumentProxy_getStats() { - return this.transport.getStats(); - }, - /** - * Cleans up resources allocated by the document, e.g. created @font-face. - */ - cleanup: function PDFDocumentProxy_cleanup() { - this.transport.startCleanup(); - }, - /** - * Destroys current document instance and terminates worker. - */ - destroy: function PDFDocumentProxy_destroy() { - return this.loadingTask.destroy(); - } - }; - return PDFDocumentProxy; -})(); - -/** - * Page getTextContent parameters. - * - * @typedef {Object} getTextContentParameters - * @param {boolean} normalizeWhitespace - replaces all occurrences of - * whitespace with standard spaces (0x20). The default value is `false`. - */ - -/** - * Page text content. - * - * @typedef {Object} TextContent - * @property {array} items - array of {@link TextItem} - * @property {Object} styles - {@link TextStyles} objects, indexed by font - * name. - */ - -/** - * Page text content part. - * - * @typedef {Object} TextItem - * @property {string} str - text content. - * @property {string} dir - text direction: 'ttb', 'ltr' or 'rtl'. - * @property {array} transform - transformation matrix. - * @property {number} width - width in device space. - * @property {number} height - height in device space. - * @property {string} fontName - font name used by pdf.js for converted font. - */ - -/** - * Text style. - * - * @typedef {Object} TextStyle - * @property {number} ascent - font ascent. - * @property {number} descent - font descent. - * @property {boolean} vertical - text is in vertical mode. - * @property {string} fontFamily - possible font family - */ - -/** - * Page annotation parameters. - * - * @typedef {Object} GetAnnotationsParameters - * @param {string} intent - Determines the annotations that will be fetched, - * can be either 'display' (viewable annotations) or 'print' - * (printable annotations). - * If the parameter is omitted, all annotations are fetched. - */ - -/** - * Page render parameters. - * - * @typedef {Object} RenderParameters - * @property {Object} canvasContext - A 2D context of a DOM Canvas object. - * @property {PDFJS.PageViewport} viewport - Rendering viewport obtained by - * calling of PDFPage.getViewport method. - * @property {string} intent - Rendering intent, can be 'display' or 'print' - * (default value is 'display'). - * @property {Array} transform - (optional) Additional transform, applied - * just before viewport transform. - * @property {Object} imageLayer - (optional) An object that has beginLayout, - * endLayout and appendImage functions. - * @property {function} continueCallback - (deprecated) A function that will be - * called each time the rendering is paused. To continue - * rendering call the function that is the first argument - * to the callback. - */ - -/** - * PDF page operator list. - * - * @typedef {Object} PDFOperatorList - * @property {Array} fnArray - Array containing the operator functions. - * @property {Array} argsArray - Array containing the arguments of the - * functions. - */ - -/** - * Proxy to a PDFPage in the worker thread. - * @class - * @alias PDFPageProxy - */ -var PDFPageProxy = (function PDFPageProxyClosure() { - function PDFPageProxy(pageIndex, pageInfo, transport) { - this.pageIndex = pageIndex; - this.pageInfo = pageInfo; - this.transport = transport; - this.stats = new StatTimer(); - this.stats.enabled = !!globalScope.PDFJS.enableStats; - this.commonObjs = transport.commonObjs; - this.objs = new PDFObjects(); - this.cleanupAfterRender = false; - this.pendingCleanup = false; - this.intentStates = {}; - this.destroyed = false; - } - PDFPageProxy.prototype = /** @lends PDFPageProxy.prototype */ { - /** - * @return {number} Page number of the page. First page is 1. - */ - get pageNumber() { - return this.pageIndex + 1; - }, - /** - * @return {number} The number of degrees the page is rotated clockwise. - */ - get rotate() { - return this.pageInfo.rotate; - }, - /** - * @return {Object} The reference that points to this page. It has 'num' and - * 'gen' properties. - */ - get ref() { - return this.pageInfo.ref; - }, - /** - * @return {Array} An array of the visible portion of the PDF page in the - * user space units - [x1, y1, x2, y2]. - */ - get view() { - return this.pageInfo.view; - }, - /** - * @param {number} scale The desired scale of the viewport. - * @param {number} rotate Degrees to rotate the viewport. If omitted this - * defaults to the page rotation. - * @return {PDFJS.PageViewport} Contains 'width' and 'height' properties - * along with transforms required for rendering. - */ - getViewport: function PDFPageProxy_getViewport(scale, rotate) { - if (arguments.length < 2) { - rotate = this.rotate; - } - return new PDFJS.PageViewport(this.view, scale, rotate, 0, 0); - }, - /** - * @param {GetAnnotationsParameters} params - Annotation parameters. - * @return {Promise} A promise that is resolved with an {Array} of the - * annotation objects. - */ - getAnnotations: function PDFPageProxy_getAnnotations(params) { - var intent = (params && params.intent) || null; - - if (!this.annotationsPromise || this.annotationsIntent !== intent) { - this.annotationsPromise = this.transport.getAnnotations(this.pageIndex, - intent); - this.annotationsIntent = intent; - } - return this.annotationsPromise; - }, - /** - * Begins the process of rendering a page to the desired context. - * @param {RenderParameters} params Page render parameters. - * @return {RenderTask} An object that contains the promise, which - * is resolved when the page finishes rendering. - */ - render: function PDFPageProxy_render(params) { - var stats = this.stats; - stats.time('Overall'); - - // If there was a pending destroy cancel it so no cleanup happens during - // this call to render. - this.pendingCleanup = false; - - var renderingIntent = (params.intent === 'print' ? 'print' : 'display'); - - if (!this.intentStates[renderingIntent]) { - this.intentStates[renderingIntent] = {}; - } - var intentState = this.intentStates[renderingIntent]; - - // If there's no displayReadyCapability yet, then the operatorList - // was never requested before. Make the request and create the promise. - if (!intentState.displayReadyCapability) { - intentState.receivingOperatorList = true; - intentState.displayReadyCapability = createPromiseCapability(); - intentState.operatorList = { - fnArray: [], - argsArray: [], - lastChunk: false - }; - - this.stats.time('Page Request'); - this.transport.messageHandler.send('RenderPageRequest', { - pageIndex: this.pageNumber - 1, - intent: renderingIntent - }); - } - - var internalRenderTask = new InternalRenderTask(complete, params, - this.objs, - this.commonObjs, - intentState.operatorList, - this.pageNumber); - internalRenderTask.useRequestAnimationFrame = renderingIntent !== 'print'; - if (!intentState.renderTasks) { - intentState.renderTasks = []; - } - intentState.renderTasks.push(internalRenderTask); - var renderTask = internalRenderTask.task; - - // Obsolete parameter support - if (params.continueCallback) { - deprecated('render is used with continueCallback parameter'); - renderTask.onContinue = params.continueCallback; - } - - var self = this; - intentState.displayReadyCapability.promise.then( - function pageDisplayReadyPromise(transparency) { - if (self.pendingCleanup) { - complete(); - return; - } - stats.time('Rendering'); - internalRenderTask.initalizeGraphics(transparency); - internalRenderTask.operatorListChanged(); - }, - function pageDisplayReadPromiseError(reason) { - complete(reason); - } - ); - - function complete(error) { - var i = intentState.renderTasks.indexOf(internalRenderTask); - if (i >= 0) { - intentState.renderTasks.splice(i, 1); - } - - if (self.cleanupAfterRender) { - self.pendingCleanup = true; - } - self._tryCleanup(); - - if (error) { - internalRenderTask.capability.reject(error); - } else { - internalRenderTask.capability.resolve(); - } - stats.timeEnd('Rendering'); - stats.timeEnd('Overall'); - } - - return renderTask; - }, - - /** - * @return {Promise} A promise resolved with an {@link PDFOperatorList} - * object that represents page's operator list. - */ - getOperatorList: function PDFPageProxy_getOperatorList() { - function operatorListChanged() { - if (intentState.operatorList.lastChunk) { - intentState.opListReadCapability.resolve(intentState.operatorList); - } - } - - var renderingIntent = 'oplist'; - if (!this.intentStates[renderingIntent]) { - this.intentStates[renderingIntent] = {}; - } - var intentState = this.intentStates[renderingIntent]; - - if (!intentState.opListReadCapability) { - var opListTask = {}; - opListTask.operatorListChanged = operatorListChanged; - intentState.receivingOperatorList = true; - intentState.opListReadCapability = createPromiseCapability(); - intentState.renderTasks = []; - intentState.renderTasks.push(opListTask); - intentState.operatorList = { - fnArray: [], - argsArray: [], - lastChunk: false - }; - - this.transport.messageHandler.send('RenderPageRequest', { - pageIndex: this.pageIndex, - intent: renderingIntent - }); - } - return intentState.opListReadCapability.promise; - }, - - /** - * @param {getTextContentParameters} params - getTextContent parameters. - * @return {Promise} That is resolved a {@link TextContent} - * object that represent the page text content. - */ - getTextContent: function PDFPageProxy_getTextContent(params) { - var normalizeWhitespace = (params && params.normalizeWhitespace) || false; - - return this.transport.messageHandler.sendWithPromise('GetTextContent', { - pageIndex: this.pageNumber - 1, - normalizeWhitespace: normalizeWhitespace, - }); - }, - - /** - * Destroys page object. - */ - _destroy: function PDFPageProxy_destroy() { - this.destroyed = true; - this.transport.pageCache[this.pageIndex] = null; - - var waitOn = []; - Object.keys(this.intentStates).forEach(function(intent) { - var intentState = this.intentStates[intent]; - intentState.renderTasks.forEach(function(renderTask) { - var renderCompleted = renderTask.capability.promise. - catch(function () {}); // ignoring failures - waitOn.push(renderCompleted); - renderTask.cancel(); - }); - }, this); - this.objs.clear(); - this.annotationsPromise = null; - this.pendingCleanup = false; - return Promise.all(waitOn); - }, - - /** - * Cleans up resources allocated by the page. (deprecated) - */ - destroy: function() { - deprecated('page destroy method, use cleanup() instead'); - this.cleanup(); - }, - - /** - * Cleans up resources allocated by the page. - */ - cleanup: function PDFPageProxy_cleanup() { - this.pendingCleanup = true; - this._tryCleanup(); - }, - /** - * For internal use only. Attempts to clean up if rendering is in a state - * where that's possible. - * @ignore - */ - _tryCleanup: function PDFPageProxy_tryCleanup() { - if (!this.pendingCleanup || - Object.keys(this.intentStates).some(function(intent) { - var intentState = this.intentStates[intent]; - return (intentState.renderTasks.length !== 0 || - intentState.receivingOperatorList); - }, this)) { - return; - } - - Object.keys(this.intentStates).forEach(function(intent) { - delete this.intentStates[intent]; - }, this); - this.objs.clear(); - this.annotationsPromise = null; - this.pendingCleanup = false; - }, - /** - * For internal use only. - * @ignore - */ - _startRenderPage: function PDFPageProxy_startRenderPage(transparency, - intent) { - var intentState = this.intentStates[intent]; - // TODO Refactor RenderPageRequest to separate rendering - // and operator list logic - if (intentState.displayReadyCapability) { - intentState.displayReadyCapability.resolve(transparency); - } - }, - /** - * For internal use only. - * @ignore - */ - _renderPageChunk: function PDFPageProxy_renderPageChunk(operatorListChunk, - intent) { - var intentState = this.intentStates[intent]; - var i, ii; - // Add the new chunk to the current operator list. - for (i = 0, ii = operatorListChunk.length; i < ii; i++) { - intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]); - intentState.operatorList.argsArray.push( - operatorListChunk.argsArray[i]); - } - intentState.operatorList.lastChunk = operatorListChunk.lastChunk; - - // Notify all the rendering tasks there are more operators to be consumed. - for (i = 0; i < intentState.renderTasks.length; i++) { - intentState.renderTasks[i].operatorListChanged(); - } - - if (operatorListChunk.lastChunk) { - intentState.receivingOperatorList = false; - this._tryCleanup(); - } - } - }; - return PDFPageProxy; -})(); - -/** - * PDF.js web worker abstraction, it controls instantiation of PDF documents and - * WorkerTransport for them. If creation of a web worker is not possible, - * a "fake" worker will be used instead. - * @class - */ -var PDFWorker = (function PDFWorkerClosure() { - var nextFakeWorkerId = 0; - - function getWorkerSrc() { - if (PDFJS.workerSrc) { - return PDFJS.workerSrc; - } - if (pdfjsFilePath) { - return pdfjsFilePath.replace(/\.js$/i, '.worker.js'); - } - error('No PDFJS.workerSrc specified'); - } - - // Loads worker code into main thread. - function setupFakeWorkerGlobal() { - if (!PDFJS.fakeWorkerFilesLoadedCapability) { - PDFJS.fakeWorkerFilesLoadedCapability = createPromiseCapability(); - // In the developer build load worker_loader which in turn loads all the - // other files and resolves the promise. In production only the - // pdf.worker.js file is needed. - var loader = fakeWorkerFilesLoader || function (callback) { - Util.loadScript(getWorkerSrc(), callback); - }; - loader(function () { - PDFJS.fakeWorkerFilesLoadedCapability.resolve(); - }); - } - return PDFJS.fakeWorkerFilesLoadedCapability.promise; - } - - function PDFWorker(name) { - this.name = name; - this.destroyed = false; - - this._readyCapability = createPromiseCapability(); - this._port = null; - this._webWorker = null; - this._messageHandler = null; - this._initialize(); - } - - PDFWorker.prototype = /** @lends PDFWorker.prototype */ { - get promise() { - return this._readyCapability.promise; - }, - - get port() { - return this._port; - }, - - get messageHandler() { - return this._messageHandler; - }, - - _initialize: function PDFWorker_initialize() { - // If worker support isn't disabled explicit and the browser has worker - // support, create a new web worker and test if it/the browser fullfills - // all requirements to run parts of pdf.js in a web worker. - // Right now, the requirement is, that an Uint8Array is still an - // Uint8Array as it arrives on the worker. (Chrome added this with v.15.) - if (!globalScope.PDFJS.disableWorker && typeof Worker !== 'undefined') { - var workerSrc = getWorkerSrc(); - - try { - // Some versions of FF can't create a worker on localhost, see: - // https://bugzilla.mozilla.org/show_bug.cgi?id=683280 - var worker = new Worker(workerSrc); - var messageHandler = new MessageHandler('main', 'worker', worker); - messageHandler.on('test', function PDFWorker_test(data) { - if (this.destroyed) { - this._readyCapability.reject(new Error('Worker was destroyed')); - messageHandler.destroy(); - worker.terminate(); - return; // worker was destroyed - } - var supportTypedArray = data && data.supportTypedArray; - if (supportTypedArray) { - this._messageHandler = messageHandler; - this._port = worker; - this._webWorker = worker; - if (!data.supportTransfers) { - PDFJS.postMessageTransfers = false; - } - this._readyCapability.resolve(); - } else { - this._setupFakeWorker(); - messageHandler.destroy(); - worker.terminate(); - } - }.bind(this)); - - messageHandler.on('console_log', function (data) { - console.log.apply(console, data); - }); - messageHandler.on('console_error', function (data) { - console.error.apply(console, data); - }); - - messageHandler.on('ready', function (data) { - if (this.destroyed) { - this._readyCapability.reject(new Error('Worker was destroyed')); - messageHandler.destroy(); - worker.terminate(); - return; // worker was destroyed - } - try { - sendTest(); - } catch (e) { - // We need fallback to a faked worker. - this._setupFakeWorker(); - } - }.bind(this)); - - var sendTest = function () { - var testObj = new Uint8Array( - [PDFJS.postMessageTransfers ? 255 : 0]); - // Some versions of Opera throw a DATA_CLONE_ERR on serializing the - // typed array. Also, checking if we can use transfers. - try { - messageHandler.send('test', testObj, [testObj.buffer]); - } catch (ex) { - info('Cannot use postMessage transfers'); - testObj[0] = 0; - messageHandler.send('test', testObj); - } - }; - - // It might take time for worker to initialize (especially when AMD - // loader is used). We will try to send test immediately, and then - // when 'ready' message will arrive. The worker shall process only - // first received 'test'. - sendTest(); - return; - } catch (e) { - info('The worker has been disabled.'); - } - } - // Either workers are disabled, not supported or have thrown an exception. - // Thus, we fallback to a faked worker. - this._setupFakeWorker(); - }, - - _setupFakeWorker: function PDFWorker_setupFakeWorker() { - if (!globalScope.PDFJS.disableWorker) { - warn('Setting up fake worker.'); - globalScope.PDFJS.disableWorker = true; - } - - setupFakeWorkerGlobal().then(function () { - if (this.destroyed) { - this._readyCapability.reject(new Error('Worker was destroyed')); - return; - } - - // If we don't use a worker, just post/sendMessage to the main thread. - var port = { - _listeners: [], - postMessage: function (obj) { - var e = {data: obj}; - this._listeners.forEach(function (listener) { - listener.call(this, e); - }, this); - }, - addEventListener: function (name, listener) { - this._listeners.push(listener); - }, - removeEventListener: function (name, listener) { - var i = this._listeners.indexOf(listener); - this._listeners.splice(i, 1); - }, - terminate: function () {} - }; - this._port = port; - - // All fake workers use the same port, making id unique. - var id = 'fake' + (nextFakeWorkerId++); - - // If the main thread is our worker, setup the handling for the - // messages -- the main thread sends to it self. - var workerHandler = new MessageHandler(id + '_worker', id, port); - PDFJS.WorkerMessageHandler.setup(workerHandler, port); - - var messageHandler = new MessageHandler(id, id + '_worker', port); - this._messageHandler = messageHandler; - this._readyCapability.resolve(); - }.bind(this)); - }, - - /** - * Destroys the worker instance. - */ - destroy: function PDFWorker_destroy() { - this.destroyed = true; - if (this._webWorker) { - // We need to terminate only web worker created resource. - this._webWorker.terminate(); - this._webWorker = null; - } - this._port = null; - if (this._messageHandler) { - this._messageHandler.destroy(); - this._messageHandler = null; - } - } - }; - - return PDFWorker; -})(); -PDFJS.PDFWorker = PDFWorker; - -/** - * For internal use only. - * @ignore - */ -var WorkerTransport = (function WorkerTransportClosure() { - function WorkerTransport(messageHandler, loadingTask, pdfDataRangeTransport) { - this.messageHandler = messageHandler; - this.loadingTask = loadingTask; - this.pdfDataRangeTransport = pdfDataRangeTransport; - this.commonObjs = new PDFObjects(); - this.fontLoader = new FontLoader(loadingTask.docId); - - this.destroyed = false; - this.destroyCapability = null; - - this.pageCache = []; - this.pagePromises = []; - this.downloadInfoCapability = createPromiseCapability(); - - this.setupMessageHandler(); - } - WorkerTransport.prototype = { - destroy: function WorkerTransport_destroy() { - if (this.destroyCapability) { - return this.destroyCapability.promise; - } - - this.destroyed = true; - this.destroyCapability = createPromiseCapability(); - - var waitOn = []; - // We need to wait for all renderings to be completed, e.g. - // timeout/rAF can take a long time. - this.pageCache.forEach(function (page) { - if (page) { - waitOn.push(page._destroy()); - } - }); - this.pageCache = []; - this.pagePromises = []; - var self = this; - // We also need to wait for the worker to finish its long running tasks. - var terminated = this.messageHandler.sendWithPromise('Terminate', null); - waitOn.push(terminated); - Promise.all(waitOn).then(function () { - self.fontLoader.clear(); - if (self.pdfDataRangeTransport) { - self.pdfDataRangeTransport.abort(); - self.pdfDataRangeTransport = null; - } - if (self.messageHandler) { - self.messageHandler.destroy(); - self.messageHandler = null; - } - self.destroyCapability.resolve(); - }, this.destroyCapability.reject); - return this.destroyCapability.promise; - }, - - setupMessageHandler: - function WorkerTransport_setupMessageHandler() { - var messageHandler = this.messageHandler; - - function updatePassword(password) { - messageHandler.send('UpdatePassword', password); - } - - var pdfDataRangeTransport = this.pdfDataRangeTransport; - if (pdfDataRangeTransport) { - pdfDataRangeTransport.addRangeListener(function(begin, chunk) { - messageHandler.send('OnDataRange', { - begin: begin, - chunk: chunk - }); - }); - - pdfDataRangeTransport.addProgressListener(function(loaded) { - messageHandler.send('OnDataProgress', { - loaded: loaded - }); - }); - - pdfDataRangeTransport.addProgressiveReadListener(function(chunk) { - messageHandler.send('OnDataRange', { - chunk: chunk - }); - }); - - messageHandler.on('RequestDataRange', - function transportDataRange(data) { - pdfDataRangeTransport.requestDataRange(data.begin, data.end); - }, this); - } - - messageHandler.on('GetDoc', function transportDoc(data) { - var pdfInfo = data.pdfInfo; - this.numPages = data.pdfInfo.numPages; - var loadingTask = this.loadingTask; - var pdfDocument = new PDFDocumentProxy(pdfInfo, this, loadingTask); - this.pdfDocument = pdfDocument; - loadingTask._capability.resolve(pdfDocument); - }, this); - - messageHandler.on('NeedPassword', - function transportNeedPassword(exception) { - var loadingTask = this.loadingTask; - if (loadingTask.onPassword) { - return loadingTask.onPassword(updatePassword, - PasswordResponses.NEED_PASSWORD); - } - loadingTask._capability.reject( - new PasswordException(exception.message, exception.code)); - }, this); - - messageHandler.on('IncorrectPassword', - function transportIncorrectPassword(exception) { - var loadingTask = this.loadingTask; - if (loadingTask.onPassword) { - return loadingTask.onPassword(updatePassword, - PasswordResponses.INCORRECT_PASSWORD); - } - loadingTask._capability.reject( - new PasswordException(exception.message, exception.code)); - }, this); - - messageHandler.on('InvalidPDF', function transportInvalidPDF(exception) { - this.loadingTask._capability.reject( - new InvalidPDFException(exception.message)); - }, this); - - messageHandler.on('MissingPDF', function transportMissingPDF(exception) { - this.loadingTask._capability.reject( - new MissingPDFException(exception.message)); - }, this); - - messageHandler.on('UnexpectedResponse', - function transportUnexpectedResponse(exception) { - this.loadingTask._capability.reject( - new UnexpectedResponseException(exception.message, exception.status)); - }, this); - - messageHandler.on('UnknownError', - function transportUnknownError(exception) { - this.loadingTask._capability.reject( - new UnknownErrorException(exception.message, exception.details)); - }, this); - - messageHandler.on('DataLoaded', function transportPage(data) { - this.downloadInfoCapability.resolve(data); - }, this); - - messageHandler.on('PDFManagerReady', function transportPage(data) { - if (this.pdfDataRangeTransport) { - this.pdfDataRangeTransport.transportReady(); - } - }, this); - - messageHandler.on('StartRenderPage', function transportRender(data) { - if (this.destroyed) { - return; // Ignore any pending requests if the worker was terminated. - } - var page = this.pageCache[data.pageIndex]; - - page.stats.timeEnd('Page Request'); - page._startRenderPage(data.transparency, data.intent); - }, this); - - messageHandler.on('RenderPageChunk', function transportRender(data) { - if (this.destroyed) { - return; // Ignore any pending requests if the worker was terminated. - } - var page = this.pageCache[data.pageIndex]; - - page._renderPageChunk(data.operatorList, data.intent); - }, this); - - messageHandler.on('commonobj', function transportObj(data) { - if (this.destroyed) { - return; // Ignore any pending requests if the worker was terminated. - } - - var id = data[0]; - var type = data[1]; - if (this.commonObjs.hasData(id)) { - return; - } - - switch (type) { - case 'Font': - var exportedData = data[2]; - - var font; - if ('error' in exportedData) { - var error = exportedData.error; - warn('Error during font loading: ' + error); - this.commonObjs.resolve(id, error); - break; - } else { - font = new FontFaceObject(exportedData); - } - - this.fontLoader.bind( - [font], - function fontReady(fontObjs) { - this.commonObjs.resolve(id, font); - }.bind(this) - ); - break; - case 'FontPath': - this.commonObjs.resolve(id, data[2]); - break; - default: - error('Got unknown common object type ' + type); - } - }, this); - - messageHandler.on('obj', function transportObj(data) { - if (this.destroyed) { - return; // Ignore any pending requests if the worker was terminated. - } - - var id = data[0]; - var pageIndex = data[1]; - var type = data[2]; - var pageProxy = this.pageCache[pageIndex]; - var imageData; - if (pageProxy.objs.hasData(id)) { - return; - } - - switch (type) { - case 'JpegStream': - imageData = data[3]; - loadJpegStream(id, imageData, pageProxy.objs); - break; - case 'Image': - imageData = data[3]; - pageProxy.objs.resolve(id, imageData); - - // heuristics that will allow not to store large data - var MAX_IMAGE_SIZE_TO_STORE = 8000000; - if (imageData && 'data' in imageData && - imageData.data.length > MAX_IMAGE_SIZE_TO_STORE) { - pageProxy.cleanupAfterRender = true; - } - break; - default: - error('Got unknown object type ' + type); - } - }, this); - - messageHandler.on('DocProgress', function transportDocProgress(data) { - if (this.destroyed) { - return; // Ignore any pending requests if the worker was terminated. - } - - var loadingTask = this.loadingTask; - if (loadingTask.onProgress) { - loadingTask.onProgress({ - loaded: data.loaded, - total: data.total - }); - } - }, this); - - messageHandler.on('PageError', function transportError(data) { - if (this.destroyed) { - return; // Ignore any pending requests if the worker was terminated. - } - - var page = this.pageCache[data.pageNum - 1]; - var intentState = page.intentStates[data.intent]; - if (intentState.displayReadyCapability) { - intentState.displayReadyCapability.reject(data.error); - } else { - error(data.error); - } - }, this); - - messageHandler.on('UnsupportedFeature', - function transportUnsupportedFeature(data) { - if (this.destroyed) { - return; // Ignore any pending requests if the worker was terminated. - } - var featureId = data.featureId; - var loadingTask = this.loadingTask; - if (loadingTask.onUnsupportedFeature) { - loadingTask.onUnsupportedFeature(featureId); - } - PDFJS.UnsupportedManager.notify(featureId); - }, this); - - messageHandler.on('JpegDecode', function(data) { - if (this.destroyed) { - return Promise.reject('Worker was terminated'); - } - - var imageUrl = data[0]; - var components = data[1]; - if (components !== 3 && components !== 1) { - return Promise.reject( - new Error('Only 3 components or 1 component can be returned')); - } - - return new Promise(function (resolve, reject) { - var img = new Image(); - img.onload = function () { - var width = img.width; - var height = img.height; - var size = width * height; - var rgbaLength = size * 4; - var buf = new Uint8Array(size * components); - var tmpCanvas = createScratchCanvas(width, height); - var tmpCtx = tmpCanvas.getContext('2d'); - tmpCtx.drawImage(img, 0, 0); - var data = tmpCtx.getImageData(0, 0, width, height).data; - var i, j; - - if (components === 3) { - for (i = 0, j = 0; i < rgbaLength; i += 4, j += 3) { - buf[j] = data[i]; - buf[j + 1] = data[i + 1]; - buf[j + 2] = data[i + 2]; - } - } else if (components === 1) { - for (i = 0, j = 0; i < rgbaLength; i += 4, j++) { - buf[j] = data[i]; - } - } - resolve({ data: buf, width: width, height: height}); - }; - img.onerror = function () { - reject(new Error('JpegDecode failed to load image')); - }; - img.src = imageUrl; - }); - }, this); - }, - - getData: function WorkerTransport_getData() { - return this.messageHandler.sendWithPromise('GetData', null); - }, - - getPage: function WorkerTransport_getPage(pageNumber, capability) { - if (pageNumber <= 0 || pageNumber > this.numPages || - (pageNumber|0) !== pageNumber) { - return Promise.reject(new Error('Invalid page request')); - } - - var pageIndex = pageNumber - 1; - if (pageIndex in this.pagePromises) { - return this.pagePromises[pageIndex]; - } - var promise = this.messageHandler.sendWithPromise('GetPage', { - pageIndex: pageIndex - }).then(function (pageInfo) { - if (this.destroyed) { - throw new Error('Transport destroyed'); - } - var page = new PDFPageProxy(pageIndex, pageInfo, this); - this.pageCache[pageIndex] = page; - return page; - }.bind(this)); - this.pagePromises[pageIndex] = promise; - return promise; - }, - - getPageIndex: function WorkerTransport_getPageIndexByRef(ref) { - return this.messageHandler.sendWithPromise('GetPageIndex', { ref: ref }); - }, - - getAnnotations: function WorkerTransport_getAnnotations(pageIndex, intent) { - return this.messageHandler.sendWithPromise('GetAnnotations', { - pageIndex: pageIndex, - intent: intent, - }); - }, - - getDestinations: function WorkerTransport_getDestinations() { - return this.messageHandler.sendWithPromise('GetDestinations', null); - }, - - getDestination: function WorkerTransport_getDestination(id) { - return this.messageHandler.sendWithPromise('GetDestination', { id: id }); - }, - - getPageLabels: function WorkerTransport_getPageLabels() { - return this.messageHandler.sendWithPromise('GetPageLabels', null); - }, - - getAttachments: function WorkerTransport_getAttachments() { - return this.messageHandler.sendWithPromise('GetAttachments', null); - }, - - getJavaScript: function WorkerTransport_getJavaScript() { - return this.messageHandler.sendWithPromise('GetJavaScript', null); - }, - - getOutline: function WorkerTransport_getOutline() { - return this.messageHandler.sendWithPromise('GetOutline', null); - }, - - getMetadata: function WorkerTransport_getMetadata() { - return this.messageHandler.sendWithPromise('GetMetadata', null). - then(function transportMetadata(results) { - return { - info: results[0], - metadata: (results[1] ? new Metadata(results[1]) : null) - }; - }); - }, - - getStats: function WorkerTransport_getStats() { - return this.messageHandler.sendWithPromise('GetStats', null); - }, - - startCleanup: function WorkerTransport_startCleanup() { - this.messageHandler.sendWithPromise('Cleanup', null). - then(function endCleanup() { - for (var i = 0, ii = this.pageCache.length; i < ii; i++) { - var page = this.pageCache[i]; - if (page) { - page.cleanup(); - } - } - this.commonObjs.clear(); - this.fontLoader.clear(); - }.bind(this)); - } - }; - return WorkerTransport; - -})(); - -/** - * A PDF document and page is built of many objects. E.g. there are objects - * for fonts, images, rendering code and such. These objects might get processed - * inside of a worker. The `PDFObjects` implements some basic functions to - * manage these objects. - * @ignore - */ -var PDFObjects = (function PDFObjectsClosure() { - function PDFObjects() { - this.objs = {}; - } - - PDFObjects.prototype = { - /** - * Internal function. - * Ensures there is an object defined for `objId`. - */ - ensureObj: function PDFObjects_ensureObj(objId) { - if (this.objs[objId]) { - return this.objs[objId]; - } - - var obj = { - capability: createPromiseCapability(), - data: null, - resolved: false - }; - this.objs[objId] = obj; - - return obj; - }, - - /** - * If called *without* callback, this returns the data of `objId` but the - * object needs to be resolved. If it isn't, this function throws. - * - * If called *with* a callback, the callback is called with the data of the - * object once the object is resolved. That means, if you call this - * function and the object is already resolved, the callback gets called - * right away. - */ - get: function PDFObjects_get(objId, callback) { - // If there is a callback, then the get can be async and the object is - // not required to be resolved right now - if (callback) { - this.ensureObj(objId).capability.promise.then(callback); - return null; - } - - // If there isn't a callback, the user expects to get the resolved data - // directly. - var obj = this.objs[objId]; - - // If there isn't an object yet or the object isn't resolved, then the - // data isn't ready yet! - if (!obj || !obj.resolved) { - error('Requesting object that isn\'t resolved yet ' + objId); - } - - return obj.data; - }, - - /** - * Resolves the object `objId` with optional `data`. - */ - resolve: function PDFObjects_resolve(objId, data) { - var obj = this.ensureObj(objId); - - obj.resolved = true; - obj.data = data; - obj.capability.resolve(data); - }, - - isResolved: function PDFObjects_isResolved(objId) { - var objs = this.objs; - - if (!objs[objId]) { - return false; - } else { - return objs[objId].resolved; - } - }, - - hasData: function PDFObjects_hasData(objId) { - return this.isResolved(objId); - }, - - /** - * Returns the data of `objId` if object exists, null otherwise. - */ - getData: function PDFObjects_getData(objId) { - var objs = this.objs; - if (!objs[objId] || !objs[objId].resolved) { - return null; - } else { - return objs[objId].data; - } - }, - - clear: function PDFObjects_clear() { - this.objs = {}; - } - }; - return PDFObjects; -})(); - -/** - * Allows controlling of the rendering tasks. - * @class - * @alias RenderTask - */ -var RenderTask = (function RenderTaskClosure() { - function RenderTask(internalRenderTask) { - this._internalRenderTask = internalRenderTask; - - /** - * Callback for incremental rendering -- a function that will be called - * each time the rendering is paused. To continue rendering call the - * function that is the first argument to the callback. - * @type {function} - */ - this.onContinue = null; - } - - RenderTask.prototype = /** @lends RenderTask.prototype */ { - /** - * Promise for rendering task completion. - * @return {Promise} - */ - get promise() { - return this._internalRenderTask.capability.promise; - }, - - /** - * Cancels the rendering task. If the task is currently rendering it will - * not be cancelled until graphics pauses with a timeout. The promise that - * this object extends will resolved when cancelled. - */ - cancel: function RenderTask_cancel() { - this._internalRenderTask.cancel(); - }, - - /** - * Registers callbacks to indicate the rendering task completion. - * - * @param {function} onFulfilled The callback for the rendering completion. - * @param {function} onRejected The callback for the rendering failure. - * @return {Promise} A promise that is resolved after the onFulfilled or - * onRejected callback. - */ - then: function RenderTask_then(onFulfilled, onRejected) { - return this.promise.then.apply(this.promise, arguments); - } - }; - - return RenderTask; -})(); - -/** - * For internal use only. - * @ignore - */ -var InternalRenderTask = (function InternalRenderTaskClosure() { - - function InternalRenderTask(callback, params, objs, commonObjs, operatorList, - pageNumber) { - this.callback = callback; - this.params = params; - this.objs = objs; - this.commonObjs = commonObjs; - this.operatorListIdx = null; - this.operatorList = operatorList; - this.pageNumber = pageNumber; - this.running = false; - this.graphicsReadyCallback = null; - this.graphicsReady = false; - this.useRequestAnimationFrame = false; - this.cancelled = false; - this.capability = createPromiseCapability(); - this.task = new RenderTask(this); - // caching this-bound methods - this._continueBound = this._continue.bind(this); - this._scheduleNextBound = this._scheduleNext.bind(this); - this._nextBound = this._next.bind(this); - } - - InternalRenderTask.prototype = { - - initalizeGraphics: - function InternalRenderTask_initalizeGraphics(transparency) { - - if (this.cancelled) { - return; - } - if (PDFJS.pdfBug && 'StepperManager' in globalScope && - globalScope.StepperManager.enabled) { - this.stepper = globalScope.StepperManager.create(this.pageNumber - 1); - this.stepper.init(this.operatorList); - this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint(); - } - - var params = this.params; - this.gfx = new CanvasGraphics(params.canvasContext, this.commonObjs, - this.objs, params.imageLayer); - - this.gfx.beginDrawing(params.transform, params.viewport, transparency); - this.operatorListIdx = 0; - this.graphicsReady = true; - if (this.graphicsReadyCallback) { - this.graphicsReadyCallback(); - } - }, - - cancel: function InternalRenderTask_cancel() { - this.running = false; - this.cancelled = true; - this.callback('cancelled'); - }, - - operatorListChanged: function InternalRenderTask_operatorListChanged() { - if (!this.graphicsReady) { - if (!this.graphicsReadyCallback) { - this.graphicsReadyCallback = this._continueBound; - } - return; - } - - if (this.stepper) { - this.stepper.updateOperatorList(this.operatorList); - } - - if (this.running) { - return; - } - this._continue(); - }, - - _continue: function InternalRenderTask__continue() { - this.running = true; - if (this.cancelled) { - return; - } - if (this.task.onContinue) { - this.task.onContinue.call(this.task, this._scheduleNextBound); - } else { - this._scheduleNext(); - } - }, - - _scheduleNext: function InternalRenderTask__scheduleNext() { - if (this.useRequestAnimationFrame) { - window.requestAnimationFrame(this._nextBound); - } else { - Promise.resolve(undefined).then(this._nextBound); - } - }, - - _next: function InternalRenderTask__next() { - if (this.cancelled) { - return; - } - this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, - this.operatorListIdx, - this._continueBound, - this.stepper); - if (this.operatorListIdx === this.operatorList.argsArray.length) { - this.running = false; - if (this.operatorList.lastChunk) { - this.gfx.endDrawing(); - this.callback(); - } - } - } - - }; - - return InternalRenderTask; -})(); - -/** - * (Deprecated) Global observer of unsupported feature usages. Use - * onUnsupportedFeature callback of the {PDFDocumentLoadingTask} instance. - */ -PDFJS.UnsupportedManager = (function UnsupportedManagerClosure() { - var listeners = []; - return { - listen: function (cb) { - deprecated('Global UnsupportedManager.listen is used: ' + - ' use PDFDocumentLoadingTask.onUnsupportedFeature instead'); - listeners.push(cb); - }, - notify: function (featureId) { - for (var i = 0, ii = listeners.length; i < ii; i++) { - listeners[i](featureId); - } - } - }; -})(); - -exports.getDocument = PDFJS.getDocument; -exports.PDFDataRangeTransport = PDFDataRangeTransport; -exports.PDFDocumentProxy = PDFDocumentProxy; -exports.PDFPageProxy = PDFPageProxy; -})); - - - }).call(pdfjsLibs); - - exports.PDFJS = pdfjsLibs.pdfjsSharedGlobal.PDFJS; - - exports.getDocument = pdfjsLibs.pdfjsDisplayAPI.getDocument; - exports.PDFDataRangeTransport = - pdfjsLibs.pdfjsDisplayAPI.PDFDataRangeTransport; - exports.renderTextLayer = pdfjsLibs.pdfjsDisplayTextLayer.renderTextLayer; - exports.AnnotationLayer = - pdfjsLibs.pdfjsDisplayAnnotationLayer.AnnotationLayer; - exports.CustomStyle = pdfjsLibs.pdfjsDisplayDOMUtils.CustomStyle; - exports.PasswordResponses = pdfjsLibs.pdfjsSharedUtil.PasswordResponses; - exports.InvalidPDFException = pdfjsLibs.pdfjsSharedUtil.InvalidPDFException; - exports.MissingPDFException = pdfjsLibs.pdfjsSharedUtil.MissingPDFException; - exports.UnexpectedResponseException = - pdfjsLibs.pdfjsSharedUtil.UnexpectedResponseException; -})); - - diff --git a/public/plugins/pdfjs-1.4.20/build/pdf.worker.js b/public/plugins/pdfjs-1.4.20/build/pdf.worker.js deleted file mode 100644 index 821ceac93..000000000 --- a/public/plugins/pdfjs-1.4.20/build/pdf.worker.js +++ /dev/null @@ -1,42034 +0,0 @@ -/* Copyright 2012 Mozilla Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* jshint globalstrict: false */ -/* umdutils ignore */ - -(function (root, factory) { - 'use strict'; - if (typeof define === 'function' && define.amd) { -define('pdfjs-dist/build/pdf.worker', ['exports'], factory); - } else if (typeof exports !== 'undefined') { - factory(exports); - } else { -factory((root.pdfjsDistBuildPdfWorker = {})); - } -}(this, function (exports) { - // Use strict in our context only - users might not want it - 'use strict'; - -var pdfjsVersion = '1.4.20'; -var pdfjsBuild = 'b15f335'; - - var pdfjsFilePath = - typeof document !== 'undefined' && document.currentScript ? - document.currentScript.src : null; - - var pdfjsLibs = {}; - - (function pdfjsWrapper() { - - - -(function (root, factory) { - { - factory((root.pdfjsCoreArithmeticDecoder = {})); - } -}(this, function (exports) { - -/* This class implements the QM Coder decoding as defined in - * JPEG 2000 Part I Final Committee Draft Version 1.0 - * Annex C.3 Arithmetic decoding procedure - * available at http://www.jpeg.org/public/fcd15444-1.pdf - * - * The arithmetic decoder is used in conjunction with context models to decode - * JPEG2000 and JBIG2 streams. - */ -var ArithmeticDecoder = (function ArithmeticDecoderClosure() { - // Table C-2 - var QeTable = [ - {qe: 0x5601, nmps: 1, nlps: 1, switchFlag: 1}, - {qe: 0x3401, nmps: 2, nlps: 6, switchFlag: 0}, - {qe: 0x1801, nmps: 3, nlps: 9, switchFlag: 0}, - {qe: 0x0AC1, nmps: 4, nlps: 12, switchFlag: 0}, - {qe: 0x0521, nmps: 5, nlps: 29, switchFlag: 0}, - {qe: 0x0221, nmps: 38, nlps: 33, switchFlag: 0}, - {qe: 0x5601, nmps: 7, nlps: 6, switchFlag: 1}, - {qe: 0x5401, nmps: 8, nlps: 14, switchFlag: 0}, - {qe: 0x4801, nmps: 9, nlps: 14, switchFlag: 0}, - {qe: 0x3801, nmps: 10, nlps: 14, switchFlag: 0}, - {qe: 0x3001, nmps: 11, nlps: 17, switchFlag: 0}, - {qe: 0x2401, nmps: 12, nlps: 18, switchFlag: 0}, - {qe: 0x1C01, nmps: 13, nlps: 20, switchFlag: 0}, - {qe: 0x1601, nmps: 29, nlps: 21, switchFlag: 0}, - {qe: 0x5601, nmps: 15, nlps: 14, switchFlag: 1}, - {qe: 0x5401, nmps: 16, nlps: 14, switchFlag: 0}, - {qe: 0x5101, nmps: 17, nlps: 15, switchFlag: 0}, - {qe: 0x4801, nmps: 18, nlps: 16, switchFlag: 0}, - {qe: 0x3801, nmps: 19, nlps: 17, switchFlag: 0}, - {qe: 0x3401, nmps: 20, nlps: 18, switchFlag: 0}, - {qe: 0x3001, nmps: 21, nlps: 19, switchFlag: 0}, - {qe: 0x2801, nmps: 22, nlps: 19, switchFlag: 0}, - {qe: 0x2401, nmps: 23, nlps: 20, switchFlag: 0}, - {qe: 0x2201, nmps: 24, nlps: 21, switchFlag: 0}, - {qe: 0x1C01, nmps: 25, nlps: 22, switchFlag: 0}, - {qe: 0x1801, nmps: 26, nlps: 23, switchFlag: 0}, - {qe: 0x1601, nmps: 27, nlps: 24, switchFlag: 0}, - {qe: 0x1401, nmps: 28, nlps: 25, switchFlag: 0}, - {qe: 0x1201, nmps: 29, nlps: 26, switchFlag: 0}, - {qe: 0x1101, nmps: 30, nlps: 27, switchFlag: 0}, - {qe: 0x0AC1, nmps: 31, nlps: 28, switchFlag: 0}, - {qe: 0x09C1, nmps: 32, nlps: 29, switchFlag: 0}, - {qe: 0x08A1, nmps: 33, nlps: 30, switchFlag: 0}, - {qe: 0x0521, nmps: 34, nlps: 31, switchFlag: 0}, - {qe: 0x0441, nmps: 35, nlps: 32, switchFlag: 0}, - {qe: 0x02A1, nmps: 36, nlps: 33, switchFlag: 0}, - {qe: 0x0221, nmps: 37, nlps: 34, switchFlag: 0}, - {qe: 0x0141, nmps: 38, nlps: 35, switchFlag: 0}, - {qe: 0x0111, nmps: 39, nlps: 36, switchFlag: 0}, - {qe: 0x0085, nmps: 40, nlps: 37, switchFlag: 0}, - {qe: 0x0049, nmps: 41, nlps: 38, switchFlag: 0}, - {qe: 0x0025, nmps: 42, nlps: 39, switchFlag: 0}, - {qe: 0x0015, nmps: 43, nlps: 40, switchFlag: 0}, - {qe: 0x0009, nmps: 44, nlps: 41, switchFlag: 0}, - {qe: 0x0005, nmps: 45, nlps: 42, switchFlag: 0}, - {qe: 0x0001, nmps: 45, nlps: 43, switchFlag: 0}, - {qe: 0x5601, nmps: 46, nlps: 46, switchFlag: 0} - ]; - - // C.3.5 Initialisation of the decoder (INITDEC) - function ArithmeticDecoder(data, start, end) { - this.data = data; - this.bp = start; - this.dataEnd = end; - - this.chigh = data[start]; - this.clow = 0; - - this.byteIn(); - - this.chigh = ((this.chigh << 7) & 0xFFFF) | ((this.clow >> 9) & 0x7F); - this.clow = (this.clow << 7) & 0xFFFF; - this.ct -= 7; - this.a = 0x8000; - } - - ArithmeticDecoder.prototype = { - // C.3.4 Compressed data input (BYTEIN) - byteIn: function ArithmeticDecoder_byteIn() { - var data = this.data; - var bp = this.bp; - if (data[bp] === 0xFF) { - var b1 = data[bp + 1]; - if (b1 > 0x8F) { - this.clow += 0xFF00; - this.ct = 8; - } else { - bp++; - this.clow += (data[bp] << 9); - this.ct = 7; - this.bp = bp; - } - } else { - bp++; - this.clow += bp < this.dataEnd ? (data[bp] << 8) : 0xFF00; - this.ct = 8; - this.bp = bp; - } - if (this.clow > 0xFFFF) { - this.chigh += (this.clow >> 16); - this.clow &= 0xFFFF; - } - }, - // C.3.2 Decoding a decision (DECODE) - readBit: function ArithmeticDecoder_readBit(contexts, pos) { - // contexts are packed into 1 byte: - // highest 7 bits carry cx.index, lowest bit carries cx.mps - var cx_index = contexts[pos] >> 1, cx_mps = contexts[pos] & 1; - var qeTableIcx = QeTable[cx_index]; - var qeIcx = qeTableIcx.qe; - var d; - var a = this.a - qeIcx; - - if (this.chigh < qeIcx) { - // exchangeLps - if (a < qeIcx) { - a = qeIcx; - d = cx_mps; - cx_index = qeTableIcx.nmps; - } else { - a = qeIcx; - d = 1 ^ cx_mps; - if (qeTableIcx.switchFlag === 1) { - cx_mps = d; - } - cx_index = qeTableIcx.nlps; - } - } else { - this.chigh -= qeIcx; - if ((a & 0x8000) !== 0) { - this.a = a; - return cx_mps; - } - // exchangeMps - if (a < qeIcx) { - d = 1 ^ cx_mps; - if (qeTableIcx.switchFlag === 1) { - cx_mps = d; - } - cx_index = qeTableIcx.nlps; - } else { - d = cx_mps; - cx_index = qeTableIcx.nmps; - } - } - // C.3.3 renormD; - do { - if (this.ct === 0) { - this.byteIn(); - } - - a <<= 1; - this.chigh = ((this.chigh << 1) & 0xFFFF) | ((this.clow >> 15) & 1); - this.clow = (this.clow << 1) & 0xFFFF; - this.ct--; - } while ((a & 0x8000) === 0); - this.a = a; - - contexts[pos] = cx_index << 1 | cx_mps; - return d; - } - }; - - return ArithmeticDecoder; -})(); - -exports.ArithmeticDecoder = ArithmeticDecoder; -})); - - -(function (root, factory) { - { - factory((root.pdfjsCoreCharsets = {})); - } -}(this, function (exports) { - -var ISOAdobeCharset = [ - '.notdef', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', - 'percent', 'ampersand', 'quoteright', 'parenleft', 'parenright', - 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', - 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', - 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', - 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', - 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', - 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', - 'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', - 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', - 'braceleft', 'bar', 'braceright', 'asciitilde', 'exclamdown', 'cent', - 'sterling', 'fraction', 'yen', 'florin', 'section', 'currency', - 'quotesingle', 'quotedblleft', 'guillemotleft', 'guilsinglleft', - 'guilsinglright', 'fi', 'fl', 'endash', 'dagger', 'daggerdbl', - 'periodcentered', 'paragraph', 'bullet', 'quotesinglbase', - 'quotedblbase', 'quotedblright', 'guillemotright', 'ellipsis', - 'perthousand', 'questiondown', 'grave', 'acute', 'circumflex', 'tilde', - 'macron', 'breve', 'dotaccent', 'dieresis', 'ring', 'cedilla', - 'hungarumlaut', 'ogonek', 'caron', 'emdash', 'AE', 'ordfeminine', - 'Lslash', 'Oslash', 'OE', 'ordmasculine', 'ae', 'dotlessi', 'lslash', - 'oslash', 'oe', 'germandbls', 'onesuperior', 'logicalnot', 'mu', - 'trademark', 'Eth', 'onehalf', 'plusminus', 'Thorn', 'onequarter', - 'divide', 'brokenbar', 'degree', 'thorn', 'threequarters', 'twosuperior', - 'registered', 'minus', 'eth', 'multiply', 'threesuperior', 'copyright', - 'Aacute', 'Acircumflex', 'Adieresis', 'Agrave', 'Aring', 'Atilde', - 'Ccedilla', 'Eacute', 'Ecircumflex', 'Edieresis', 'Egrave', 'Iacute', - 'Icircumflex', 'Idieresis', 'Igrave', 'Ntilde', 'Oacute', 'Ocircumflex', - 'Odieresis', 'Ograve', 'Otilde', 'Scaron', 'Uacute', 'Ucircumflex', - 'Udieresis', 'Ugrave', 'Yacute', 'Ydieresis', 'Zcaron', 'aacute', - 'acircumflex', 'adieresis', 'agrave', 'aring', 'atilde', 'ccedilla', - 'eacute', 'ecircumflex', 'edieresis', 'egrave', 'iacute', 'icircumflex', - 'idieresis', 'igrave', 'ntilde', 'oacute', 'ocircumflex', 'odieresis', - 'ograve', 'otilde', 'scaron', 'uacute', 'ucircumflex', 'udieresis', - 'ugrave', 'yacute', 'ydieresis', 'zcaron' -]; - -var ExpertCharset = [ - '.notdef', 'space', 'exclamsmall', 'Hungarumlautsmall', 'dollaroldstyle', - 'dollarsuperior', 'ampersandsmall', 'Acutesmall', 'parenleftsuperior', - 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma', - 'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle', - 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', - 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', - 'colon', 'semicolon', 'commasuperior', 'threequartersemdash', - 'periodsuperior', 'questionsmall', 'asuperior', 'bsuperior', - 'centsuperior', 'dsuperior', 'esuperior', 'isuperior', 'lsuperior', - 'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior', - 'tsuperior', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', - 'parenrightinferior', 'Circumflexsmall', 'hyphensuperior', 'Gravesmall', - 'Asmall', 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', - 'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall', - 'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', - 'Vsmall', 'Wsmall', 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', - 'onefitted', 'rupiah', 'Tildesmall', 'exclamdownsmall', 'centoldstyle', - 'Lslashsmall', 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall', - 'Brevesmall', 'Caronsmall', 'Dotaccentsmall', 'Macronsmall', - 'figuredash', 'hypheninferior', 'Ogoneksmall', 'Ringsmall', - 'Cedillasmall', 'onequarter', 'onehalf', 'threequarters', - 'questiondownsmall', 'oneeighth', 'threeeighths', 'fiveeighths', - 'seveneighths', 'onethird', 'twothirds', 'zerosuperior', 'onesuperior', - 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior', - 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior', - 'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior', - 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior', - 'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior', - 'periodinferior', 'commainferior', 'Agravesmall', 'Aacutesmall', - 'Acircumflexsmall', 'Atildesmall', 'Adieresissmall', 'Aringsmall', - 'AEsmall', 'Ccedillasmall', 'Egravesmall', 'Eacutesmall', - 'Ecircumflexsmall', 'Edieresissmall', 'Igravesmall', 'Iacutesmall', - 'Icircumflexsmall', 'Idieresissmall', 'Ethsmall', 'Ntildesmall', - 'Ogravesmall', 'Oacutesmall', 'Ocircumflexsmall', 'Otildesmall', - 'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall', 'Uacutesmall', - 'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall', 'Thornsmall', - 'Ydieresissmall' -]; - -var ExpertSubsetCharset = [ - '.notdef', 'space', 'dollaroldstyle', 'dollarsuperior', - 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', - 'onedotenleader', 'comma', 'hyphen', 'period', 'fraction', - 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle', - 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', - 'eightoldstyle', 'nineoldstyle', 'colon', 'semicolon', 'commasuperior', - 'threequartersemdash', 'periodsuperior', 'asuperior', 'bsuperior', - 'centsuperior', 'dsuperior', 'esuperior', 'isuperior', 'lsuperior', - 'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior', - 'tsuperior', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', - 'parenrightinferior', 'hyphensuperior', 'colonmonetary', 'onefitted', - 'rupiah', 'centoldstyle', 'figuredash', 'hypheninferior', 'onequarter', - 'onehalf', 'threequarters', 'oneeighth', 'threeeighths', 'fiveeighths', - 'seveneighths', 'onethird', 'twothirds', 'zerosuperior', 'onesuperior', - 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior', - 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior', - 'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior', - 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior', - 'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior', - 'periodinferior', 'commainferior' -]; - -exports.ISOAdobeCharset = ISOAdobeCharset; -exports.ExpertCharset = ExpertCharset; -exports.ExpertSubsetCharset = ExpertSubsetCharset; -})); - - -(function (root, factory) { - { - factory((root.pdfjsCoreGlyphList = {})); - } -}(this, function (exports) { - -var GlyphsUnicode = { - A: 0x0041, - AE: 0x00C6, - AEacute: 0x01FC, - AEmacron: 0x01E2, - AEsmall: 0xF7E6, - Aacute: 0x00C1, - Aacutesmall: 0xF7E1, - Abreve: 0x0102, - Abreveacute: 0x1EAE, - Abrevecyrillic: 0x04D0, - Abrevedotbelow: 0x1EB6, - Abrevegrave: 0x1EB0, - Abrevehookabove: 0x1EB2, - Abrevetilde: 0x1EB4, - Acaron: 0x01CD, - Acircle: 0x24B6, - Acircumflex: 0x00C2, - Acircumflexacute: 0x1EA4, - Acircumflexdotbelow: 0x1EAC, - Acircumflexgrave: 0x1EA6, - Acircumflexhookabove: 0x1EA8, - Acircumflexsmall: 0xF7E2, - Acircumflextilde: 0x1EAA, - Acute: 0xF6C9, - Acutesmall: 0xF7B4, - Acyrillic: 0x0410, - Adblgrave: 0x0200, - Adieresis: 0x00C4, - Adieresiscyrillic: 0x04D2, - Adieresismacron: 0x01DE, - Adieresissmall: 0xF7E4, - Adotbelow: 0x1EA0, - Adotmacron: 0x01E0, - Agrave: 0x00C0, - Agravesmall: 0xF7E0, - Ahookabove: 0x1EA2, - Aiecyrillic: 0x04D4, - Ainvertedbreve: 0x0202, - Alpha: 0x0391, - Alphatonos: 0x0386, - Amacron: 0x0100, - Amonospace: 0xFF21, - Aogonek: 0x0104, - Aring: 0x00C5, - Aringacute: 0x01FA, - Aringbelow: 0x1E00, - Aringsmall: 0xF7E5, - Asmall: 0xF761, - Atilde: 0x00C3, - Atildesmall: 0xF7E3, - Aybarmenian: 0x0531, - B: 0x0042, - Bcircle: 0x24B7, - Bdotaccent: 0x1E02, - Bdotbelow: 0x1E04, - Becyrillic: 0x0411, - Benarmenian: 0x0532, - Beta: 0x0392, - Bhook: 0x0181, - Blinebelow: 0x1E06, - Bmonospace: 0xFF22, - Brevesmall: 0xF6F4, - Bsmall: 0xF762, - Btopbar: 0x0182, - C: 0x0043, - Caarmenian: 0x053E, - Cacute: 0x0106, - Caron: 0xF6CA, - Caronsmall: 0xF6F5, - Ccaron: 0x010C, - Ccedilla: 0x00C7, - Ccedillaacute: 0x1E08, - Ccedillasmall: 0xF7E7, - Ccircle: 0x24B8, - Ccircumflex: 0x0108, - Cdot: 0x010A, - Cdotaccent: 0x010A, - Cedillasmall: 0xF7B8, - Chaarmenian: 0x0549, - Cheabkhasiancyrillic: 0x04BC, - Checyrillic: 0x0427, - Chedescenderabkhasiancyrillic: 0x04BE, - Chedescendercyrillic: 0x04B6, - Chedieresiscyrillic: 0x04F4, - Cheharmenian: 0x0543, - Chekhakassiancyrillic: 0x04CB, - Cheverticalstrokecyrillic: 0x04B8, - Chi: 0x03A7, - Chook: 0x0187, - Circumflexsmall: 0xF6F6, - Cmonospace: 0xFF23, - Coarmenian: 0x0551, - Csmall: 0xF763, - D: 0x0044, - DZ: 0x01F1, - DZcaron: 0x01C4, - Daarmenian: 0x0534, - Dafrican: 0x0189, - Dcaron: 0x010E, - Dcedilla: 0x1E10, - Dcircle: 0x24B9, - Dcircumflexbelow: 0x1E12, - Dcroat: 0x0110, - Ddotaccent: 0x1E0A, - Ddotbelow: 0x1E0C, - Decyrillic: 0x0414, - Deicoptic: 0x03EE, - Delta: 0x2206, - Deltagreek: 0x0394, - Dhook: 0x018A, - Dieresis: 0xF6CB, - DieresisAcute: 0xF6CC, - DieresisGrave: 0xF6CD, - Dieresissmall: 0xF7A8, - Digammagreek: 0x03DC, - Djecyrillic: 0x0402, - Dlinebelow: 0x1E0E, - Dmonospace: 0xFF24, - Dotaccentsmall: 0xF6F7, - Dslash: 0x0110, - Dsmall: 0xF764, - Dtopbar: 0x018B, - Dz: 0x01F2, - Dzcaron: 0x01C5, - Dzeabkhasiancyrillic: 0x04E0, - Dzecyrillic: 0x0405, - Dzhecyrillic: 0x040F, - E: 0x0045, - Eacute: 0x00C9, - Eacutesmall: 0xF7E9, - Ebreve: 0x0114, - Ecaron: 0x011A, - Ecedillabreve: 0x1E1C, - Echarmenian: 0x0535, - Ecircle: 0x24BA, - Ecircumflex: 0x00CA, - Ecircumflexacute: 0x1EBE, - Ecircumflexbelow: 0x1E18, - Ecircumflexdotbelow: 0x1EC6, - Ecircumflexgrave: 0x1EC0, - Ecircumflexhookabove: 0x1EC2, - Ecircumflexsmall: 0xF7EA, - Ecircumflextilde: 0x1EC4, - Ecyrillic: 0x0404, - Edblgrave: 0x0204, - Edieresis: 0x00CB, - Edieresissmall: 0xF7EB, - Edot: 0x0116, - Edotaccent: 0x0116, - Edotbelow: 0x1EB8, - Efcyrillic: 0x0424, - Egrave: 0x00C8, - Egravesmall: 0xF7E8, - Eharmenian: 0x0537, - Ehookabove: 0x1EBA, - Eightroman: 0x2167, - Einvertedbreve: 0x0206, - Eiotifiedcyrillic: 0x0464, - Elcyrillic: 0x041B, - Elevenroman: 0x216A, - Emacron: 0x0112, - Emacronacute: 0x1E16, - Emacrongrave: 0x1E14, - Emcyrillic: 0x041C, - Emonospace: 0xFF25, - Encyrillic: 0x041D, - Endescendercyrillic: 0x04A2, - Eng: 0x014A, - Enghecyrillic: 0x04A4, - Enhookcyrillic: 0x04C7, - Eogonek: 0x0118, - Eopen: 0x0190, - Epsilon: 0x0395, - Epsilontonos: 0x0388, - Ercyrillic: 0x0420, - Ereversed: 0x018E, - Ereversedcyrillic: 0x042D, - Escyrillic: 0x0421, - Esdescendercyrillic: 0x04AA, - Esh: 0x01A9, - Esmall: 0xF765, - Eta: 0x0397, - Etarmenian: 0x0538, - Etatonos: 0x0389, - Eth: 0x00D0, - Ethsmall: 0xF7F0, - Etilde: 0x1EBC, - Etildebelow: 0x1E1A, - Euro: 0x20AC, - Ezh: 0x01B7, - Ezhcaron: 0x01EE, - Ezhreversed: 0x01B8, - F: 0x0046, - Fcircle: 0x24BB, - Fdotaccent: 0x1E1E, - Feharmenian: 0x0556, - Feicoptic: 0x03E4, - Fhook: 0x0191, - Fitacyrillic: 0x0472, - Fiveroman: 0x2164, - Fmonospace: 0xFF26, - Fourroman: 0x2163, - Fsmall: 0xF766, - G: 0x0047, - GBsquare: 0x3387, - Gacute: 0x01F4, - Gamma: 0x0393, - Gammaafrican: 0x0194, - Gangiacoptic: 0x03EA, - Gbreve: 0x011E, - Gcaron: 0x01E6, - Gcedilla: 0x0122, - Gcircle: 0x24BC, - Gcircumflex: 0x011C, - Gcommaaccent: 0x0122, - Gdot: 0x0120, - Gdotaccent: 0x0120, - Gecyrillic: 0x0413, - Ghadarmenian: 0x0542, - Ghemiddlehookcyrillic: 0x0494, - Ghestrokecyrillic: 0x0492, - Gheupturncyrillic: 0x0490, - Ghook: 0x0193, - Gimarmenian: 0x0533, - Gjecyrillic: 0x0403, - Gmacron: 0x1E20, - Gmonospace: 0xFF27, - Grave: 0xF6CE, - Gravesmall: 0xF760, - Gsmall: 0xF767, - Gsmallhook: 0x029B, - Gstroke: 0x01E4, - H: 0x0048, - H18533: 0x25CF, - H18543: 0x25AA, - H18551: 0x25AB, - H22073: 0x25A1, - HPsquare: 0x33CB, - Haabkhasiancyrillic: 0x04A8, - Hadescendercyrillic: 0x04B2, - Hardsigncyrillic: 0x042A, - Hbar: 0x0126, - Hbrevebelow: 0x1E2A, - Hcedilla: 0x1E28, - Hcircle: 0x24BD, - Hcircumflex: 0x0124, - Hdieresis: 0x1E26, - Hdotaccent: 0x1E22, - Hdotbelow: 0x1E24, - Hmonospace: 0xFF28, - Hoarmenian: 0x0540, - Horicoptic: 0x03E8, - Hsmall: 0xF768, - Hungarumlaut: 0xF6CF, - Hungarumlautsmall: 0xF6F8, - Hzsquare: 0x3390, - I: 0x0049, - IAcyrillic: 0x042F, - IJ: 0x0132, - IUcyrillic: 0x042E, - Iacute: 0x00CD, - Iacutesmall: 0xF7ED, - Ibreve: 0x012C, - Icaron: 0x01CF, - Icircle: 0x24BE, - Icircumflex: 0x00CE, - Icircumflexsmall: 0xF7EE, - Icyrillic: 0x0406, - Idblgrave: 0x0208, - Idieresis: 0x00CF, - Idieresisacute: 0x1E2E, - Idieresiscyrillic: 0x04E4, - Idieresissmall: 0xF7EF, - Idot: 0x0130, - Idotaccent: 0x0130, - Idotbelow: 0x1ECA, - Iebrevecyrillic: 0x04D6, - Iecyrillic: 0x0415, - Ifraktur: 0x2111, - Igrave: 0x00CC, - Igravesmall: 0xF7EC, - Ihookabove: 0x1EC8, - Iicyrillic: 0x0418, - Iinvertedbreve: 0x020A, - Iishortcyrillic: 0x0419, - Imacron: 0x012A, - Imacroncyrillic: 0x04E2, - Imonospace: 0xFF29, - Iniarmenian: 0x053B, - Iocyrillic: 0x0401, - Iogonek: 0x012E, - Iota: 0x0399, - Iotaafrican: 0x0196, - Iotadieresis: 0x03AA, - Iotatonos: 0x038A, - Ismall: 0xF769, - Istroke: 0x0197, - Itilde: 0x0128, - Itildebelow: 0x1E2C, - Izhitsacyrillic: 0x0474, - Izhitsadblgravecyrillic: 0x0476, - J: 0x004A, - Jaarmenian: 0x0541, - Jcircle: 0x24BF, - Jcircumflex: 0x0134, - Jecyrillic: 0x0408, - Jheharmenian: 0x054B, - Jmonospace: 0xFF2A, - Jsmall: 0xF76A, - K: 0x004B, - KBsquare: 0x3385, - KKsquare: 0x33CD, - Kabashkircyrillic: 0x04A0, - Kacute: 0x1E30, - Kacyrillic: 0x041A, - Kadescendercyrillic: 0x049A, - Kahookcyrillic: 0x04C3, - Kappa: 0x039A, - Kastrokecyrillic: 0x049E, - Kaverticalstrokecyrillic: 0x049C, - Kcaron: 0x01E8, - Kcedilla: 0x0136, - Kcircle: 0x24C0, - Kcommaaccent: 0x0136, - Kdotbelow: 0x1E32, - Keharmenian: 0x0554, - Kenarmenian: 0x053F, - Khacyrillic: 0x0425, - Kheicoptic: 0x03E6, - Khook: 0x0198, - Kjecyrillic: 0x040C, - Klinebelow: 0x1E34, - Kmonospace: 0xFF2B, - Koppacyrillic: 0x0480, - Koppagreek: 0x03DE, - Ksicyrillic: 0x046E, - Ksmall: 0xF76B, - L: 0x004C, - LJ: 0x01C7, - LL: 0xF6BF, - Lacute: 0x0139, - Lambda: 0x039B, - Lcaron: 0x013D, - Lcedilla: 0x013B, - Lcircle: 0x24C1, - Lcircumflexbelow: 0x1E3C, - Lcommaaccent: 0x013B, - Ldot: 0x013F, - Ldotaccent: 0x013F, - Ldotbelow: 0x1E36, - Ldotbelowmacron: 0x1E38, - Liwnarmenian: 0x053C, - Lj: 0x01C8, - Ljecyrillic: 0x0409, - Llinebelow: 0x1E3A, - Lmonospace: 0xFF2C, - Lslash: 0x0141, - Lslashsmall: 0xF6F9, - Lsmall: 0xF76C, - M: 0x004D, - MBsquare: 0x3386, - Macron: 0xF6D0, - Macronsmall: 0xF7AF, - Macute: 0x1E3E, - Mcircle: 0x24C2, - Mdotaccent: 0x1E40, - Mdotbelow: 0x1E42, - Menarmenian: 0x0544, - Mmonospace: 0xFF2D, - Msmall: 0xF76D, - Mturned: 0x019C, - Mu: 0x039C, - N: 0x004E, - NJ: 0x01CA, - Nacute: 0x0143, - Ncaron: 0x0147, - Ncedilla: 0x0145, - Ncircle: 0x24C3, - Ncircumflexbelow: 0x1E4A, - Ncommaaccent: 0x0145, - Ndotaccent: 0x1E44, - Ndotbelow: 0x1E46, - Nhookleft: 0x019D, - Nineroman: 0x2168, - Nj: 0x01CB, - Njecyrillic: 0x040A, - Nlinebelow: 0x1E48, - Nmonospace: 0xFF2E, - Nowarmenian: 0x0546, - Nsmall: 0xF76E, - Ntilde: 0x00D1, - Ntildesmall: 0xF7F1, - Nu: 0x039D, - O: 0x004F, - OE: 0x0152, - OEsmall: 0xF6FA, - Oacute: 0x00D3, - Oacutesmall: 0xF7F3, - Obarredcyrillic: 0x04E8, - Obarreddieresiscyrillic: 0x04EA, - Obreve: 0x014E, - Ocaron: 0x01D1, - Ocenteredtilde: 0x019F, - Ocircle: 0x24C4, - Ocircumflex: 0x00D4, - Ocircumflexacute: 0x1ED0, - Ocircumflexdotbelow: 0x1ED8, - Ocircumflexgrave: 0x1ED2, - Ocircumflexhookabove: 0x1ED4, - Ocircumflexsmall: 0xF7F4, - Ocircumflextilde: 0x1ED6, - Ocyrillic: 0x041E, - Odblacute: 0x0150, - Odblgrave: 0x020C, - Odieresis: 0x00D6, - Odieresiscyrillic: 0x04E6, - Odieresissmall: 0xF7F6, - Odotbelow: 0x1ECC, - Ogoneksmall: 0xF6FB, - Ograve: 0x00D2, - Ogravesmall: 0xF7F2, - Oharmenian: 0x0555, - Ohm: 0x2126, - Ohookabove: 0x1ECE, - Ohorn: 0x01A0, - Ohornacute: 0x1EDA, - Ohorndotbelow: 0x1EE2, - Ohorngrave: 0x1EDC, - Ohornhookabove: 0x1EDE, - Ohorntilde: 0x1EE0, - Ohungarumlaut: 0x0150, - Oi: 0x01A2, - Oinvertedbreve: 0x020E, - Omacron: 0x014C, - Omacronacute: 0x1E52, - Omacrongrave: 0x1E50, - Omega: 0x2126, - Omegacyrillic: 0x0460, - Omegagreek: 0x03A9, - Omegaroundcyrillic: 0x047A, - Omegatitlocyrillic: 0x047C, - Omegatonos: 0x038F, - Omicron: 0x039F, - Omicrontonos: 0x038C, - Omonospace: 0xFF2F, - Oneroman: 0x2160, - Oogonek: 0x01EA, - Oogonekmacron: 0x01EC, - Oopen: 0x0186, - Oslash: 0x00D8, - Oslashacute: 0x01FE, - Oslashsmall: 0xF7F8, - Osmall: 0xF76F, - Ostrokeacute: 0x01FE, - Otcyrillic: 0x047E, - Otilde: 0x00D5, - Otildeacute: 0x1E4C, - Otildedieresis: 0x1E4E, - Otildesmall: 0xF7F5, - P: 0x0050, - Pacute: 0x1E54, - Pcircle: 0x24C5, - Pdotaccent: 0x1E56, - Pecyrillic: 0x041F, - Peharmenian: 0x054A, - Pemiddlehookcyrillic: 0x04A6, - Phi: 0x03A6, - Phook: 0x01A4, - Pi: 0x03A0, - Piwrarmenian: 0x0553, - Pmonospace: 0xFF30, - Psi: 0x03A8, - Psicyrillic: 0x0470, - Psmall: 0xF770, - Q: 0x0051, - Qcircle: 0x24C6, - Qmonospace: 0xFF31, - Qsmall: 0xF771, - R: 0x0052, - Raarmenian: 0x054C, - Racute: 0x0154, - Rcaron: 0x0158, - Rcedilla: 0x0156, - Rcircle: 0x24C7, - Rcommaaccent: 0x0156, - Rdblgrave: 0x0210, - Rdotaccent: 0x1E58, - Rdotbelow: 0x1E5A, - Rdotbelowmacron: 0x1E5C, - Reharmenian: 0x0550, - Rfraktur: 0x211C, - Rho: 0x03A1, - Ringsmall: 0xF6FC, - Rinvertedbreve: 0x0212, - Rlinebelow: 0x1E5E, - Rmonospace: 0xFF32, - Rsmall: 0xF772, - Rsmallinverted: 0x0281, - Rsmallinvertedsuperior: 0x02B6, - S: 0x0053, - SF010000: 0x250C, - SF020000: 0x2514, - SF030000: 0x2510, - SF040000: 0x2518, - SF050000: 0x253C, - SF060000: 0x252C, - SF070000: 0x2534, - SF080000: 0x251C, - SF090000: 0x2524, - SF100000: 0x2500, - SF110000: 0x2502, - SF190000: 0x2561, - SF200000: 0x2562, - SF210000: 0x2556, - SF220000: 0x2555, - SF230000: 0x2563, - SF240000: 0x2551, - SF250000: 0x2557, - SF260000: 0x255D, - SF270000: 0x255C, - SF280000: 0x255B, - SF360000: 0x255E, - SF370000: 0x255F, - SF380000: 0x255A, - SF390000: 0x2554, - SF400000: 0x2569, - SF410000: 0x2566, - SF420000: 0x2560, - SF430000: 0x2550, - SF440000: 0x256C, - SF450000: 0x2567, - SF460000: 0x2568, - SF470000: 0x2564, - SF480000: 0x2565, - SF490000: 0x2559, - SF500000: 0x2558, - SF510000: 0x2552, - SF520000: 0x2553, - SF530000: 0x256B, - SF540000: 0x256A, - Sacute: 0x015A, - Sacutedotaccent: 0x1E64, - Sampigreek: 0x03E0, - Scaron: 0x0160, - Scarondotaccent: 0x1E66, - Scaronsmall: 0xF6FD, - Scedilla: 0x015E, - Schwa: 0x018F, - Schwacyrillic: 0x04D8, - Schwadieresiscyrillic: 0x04DA, - Scircle: 0x24C8, - Scircumflex: 0x015C, - Scommaaccent: 0x0218, - Sdotaccent: 0x1E60, - Sdotbelow: 0x1E62, - Sdotbelowdotaccent: 0x1E68, - Seharmenian: 0x054D, - Sevenroman: 0x2166, - Shaarmenian: 0x0547, - Shacyrillic: 0x0428, - Shchacyrillic: 0x0429, - Sheicoptic: 0x03E2, - Shhacyrillic: 0x04BA, - Shimacoptic: 0x03EC, - Sigma: 0x03A3, - Sixroman: 0x2165, - Smonospace: 0xFF33, - Softsigncyrillic: 0x042C, - Ssmall: 0xF773, - Stigmagreek: 0x03DA, - T: 0x0054, - Tau: 0x03A4, - Tbar: 0x0166, - Tcaron: 0x0164, - Tcedilla: 0x0162, - Tcircle: 0x24C9, - Tcircumflexbelow: 0x1E70, - Tcommaaccent: 0x0162, - Tdotaccent: 0x1E6A, - Tdotbelow: 0x1E6C, - Tecyrillic: 0x0422, - Tedescendercyrillic: 0x04AC, - Tenroman: 0x2169, - Tetsecyrillic: 0x04B4, - Theta: 0x0398, - Thook: 0x01AC, - Thorn: 0x00DE, - Thornsmall: 0xF7FE, - Threeroman: 0x2162, - Tildesmall: 0xF6FE, - Tiwnarmenian: 0x054F, - Tlinebelow: 0x1E6E, - Tmonospace: 0xFF34, - Toarmenian: 0x0539, - Tonefive: 0x01BC, - Tonesix: 0x0184, - Tonetwo: 0x01A7, - Tretroflexhook: 0x01AE, - Tsecyrillic: 0x0426, - Tshecyrillic: 0x040B, - Tsmall: 0xF774, - Twelveroman: 0x216B, - Tworoman: 0x2161, - U: 0x0055, - Uacute: 0x00DA, - Uacutesmall: 0xF7FA, - Ubreve: 0x016C, - Ucaron: 0x01D3, - Ucircle: 0x24CA, - Ucircumflex: 0x00DB, - Ucircumflexbelow: 0x1E76, - Ucircumflexsmall: 0xF7FB, - Ucyrillic: 0x0423, - Udblacute: 0x0170, - Udblgrave: 0x0214, - Udieresis: 0x00DC, - Udieresisacute: 0x01D7, - Udieresisbelow: 0x1E72, - Udieresiscaron: 0x01D9, - Udieresiscyrillic: 0x04F0, - Udieresisgrave: 0x01DB, - Udieresismacron: 0x01D5, - Udieresissmall: 0xF7FC, - Udotbelow: 0x1EE4, - Ugrave: 0x00D9, - Ugravesmall: 0xF7F9, - Uhookabove: 0x1EE6, - Uhorn: 0x01AF, - Uhornacute: 0x1EE8, - Uhorndotbelow: 0x1EF0, - Uhorngrave: 0x1EEA, - Uhornhookabove: 0x1EEC, - Uhorntilde: 0x1EEE, - Uhungarumlaut: 0x0170, - Uhungarumlautcyrillic: 0x04F2, - Uinvertedbreve: 0x0216, - Ukcyrillic: 0x0478, - Umacron: 0x016A, - Umacroncyrillic: 0x04EE, - Umacrondieresis: 0x1E7A, - Umonospace: 0xFF35, - Uogonek: 0x0172, - Upsilon: 0x03A5, - Upsilon1: 0x03D2, - Upsilonacutehooksymbolgreek: 0x03D3, - Upsilonafrican: 0x01B1, - Upsilondieresis: 0x03AB, - Upsilondieresishooksymbolgreek: 0x03D4, - Upsilonhooksymbol: 0x03D2, - Upsilontonos: 0x038E, - Uring: 0x016E, - Ushortcyrillic: 0x040E, - Usmall: 0xF775, - Ustraightcyrillic: 0x04AE, - Ustraightstrokecyrillic: 0x04B0, - Utilde: 0x0168, - Utildeacute: 0x1E78, - Utildebelow: 0x1E74, - V: 0x0056, - Vcircle: 0x24CB, - Vdotbelow: 0x1E7E, - Vecyrillic: 0x0412, - Vewarmenian: 0x054E, - Vhook: 0x01B2, - Vmonospace: 0xFF36, - Voarmenian: 0x0548, - Vsmall: 0xF776, - Vtilde: 0x1E7C, - W: 0x0057, - Wacute: 0x1E82, - Wcircle: 0x24CC, - Wcircumflex: 0x0174, - Wdieresis: 0x1E84, - Wdotaccent: 0x1E86, - Wdotbelow: 0x1E88, - Wgrave: 0x1E80, - Wmonospace: 0xFF37, - Wsmall: 0xF777, - X: 0x0058, - Xcircle: 0x24CD, - Xdieresis: 0x1E8C, - Xdotaccent: 0x1E8A, - Xeharmenian: 0x053D, - Xi: 0x039E, - Xmonospace: 0xFF38, - Xsmall: 0xF778, - Y: 0x0059, - Yacute: 0x00DD, - Yacutesmall: 0xF7FD, - Yatcyrillic: 0x0462, - Ycircle: 0x24CE, - Ycircumflex: 0x0176, - Ydieresis: 0x0178, - Ydieresissmall: 0xF7FF, - Ydotaccent: 0x1E8E, - Ydotbelow: 0x1EF4, - Yericyrillic: 0x042B, - Yerudieresiscyrillic: 0x04F8, - Ygrave: 0x1EF2, - Yhook: 0x01B3, - Yhookabove: 0x1EF6, - Yiarmenian: 0x0545, - Yicyrillic: 0x0407, - Yiwnarmenian: 0x0552, - Ymonospace: 0xFF39, - Ysmall: 0xF779, - Ytilde: 0x1EF8, - Yusbigcyrillic: 0x046A, - Yusbigiotifiedcyrillic: 0x046C, - Yuslittlecyrillic: 0x0466, - Yuslittleiotifiedcyrillic: 0x0468, - Z: 0x005A, - Zaarmenian: 0x0536, - Zacute: 0x0179, - Zcaron: 0x017D, - Zcaronsmall: 0xF6FF, - Zcircle: 0x24CF, - Zcircumflex: 0x1E90, - Zdot: 0x017B, - Zdotaccent: 0x017B, - Zdotbelow: 0x1E92, - Zecyrillic: 0x0417, - Zedescendercyrillic: 0x0498, - Zedieresiscyrillic: 0x04DE, - Zeta: 0x0396, - Zhearmenian: 0x053A, - Zhebrevecyrillic: 0x04C1, - Zhecyrillic: 0x0416, - Zhedescendercyrillic: 0x0496, - Zhedieresiscyrillic: 0x04DC, - Zlinebelow: 0x1E94, - Zmonospace: 0xFF3A, - Zsmall: 0xF77A, - Zstroke: 0x01B5, - a: 0x0061, - aabengali: 0x0986, - aacute: 0x00E1, - aadeva: 0x0906, - aagujarati: 0x0A86, - aagurmukhi: 0x0A06, - aamatragurmukhi: 0x0A3E, - aarusquare: 0x3303, - aavowelsignbengali: 0x09BE, - aavowelsigndeva: 0x093E, - aavowelsigngujarati: 0x0ABE, - abbreviationmarkarmenian: 0x055F, - abbreviationsigndeva: 0x0970, - abengali: 0x0985, - abopomofo: 0x311A, - abreve: 0x0103, - abreveacute: 0x1EAF, - abrevecyrillic: 0x04D1, - abrevedotbelow: 0x1EB7, - abrevegrave: 0x1EB1, - abrevehookabove: 0x1EB3, - abrevetilde: 0x1EB5, - acaron: 0x01CE, - acircle: 0x24D0, - acircumflex: 0x00E2, - acircumflexacute: 0x1EA5, - acircumflexdotbelow: 0x1EAD, - acircumflexgrave: 0x1EA7, - acircumflexhookabove: 0x1EA9, - acircumflextilde: 0x1EAB, - acute: 0x00B4, - acutebelowcmb: 0x0317, - acutecmb: 0x0301, - acutecomb: 0x0301, - acutedeva: 0x0954, - acutelowmod: 0x02CF, - acutetonecmb: 0x0341, - acyrillic: 0x0430, - adblgrave: 0x0201, - addakgurmukhi: 0x0A71, - adeva: 0x0905, - adieresis: 0x00E4, - adieresiscyrillic: 0x04D3, - adieresismacron: 0x01DF, - adotbelow: 0x1EA1, - adotmacron: 0x01E1, - ae: 0x00E6, - aeacute: 0x01FD, - aekorean: 0x3150, - aemacron: 0x01E3, - afii00208: 0x2015, - afii08941: 0x20A4, - afii10017: 0x0410, - afii10018: 0x0411, - afii10019: 0x0412, - afii10020: 0x0413, - afii10021: 0x0414, - afii10022: 0x0415, - afii10023: 0x0401, - afii10024: 0x0416, - afii10025: 0x0417, - afii10026: 0x0418, - afii10027: 0x0419, - afii10028: 0x041A, - afii10029: 0x041B, - afii10030: 0x041C, - afii10031: 0x041D, - afii10032: 0x041E, - afii10033: 0x041F, - afii10034: 0x0420, - afii10035: 0x0421, - afii10036: 0x0422, - afii10037: 0x0423, - afii10038: 0x0424, - afii10039: 0x0425, - afii10040: 0x0426, - afii10041: 0x0427, - afii10042: 0x0428, - afii10043: 0x0429, - afii10044: 0x042A, - afii10045: 0x042B, - afii10046: 0x042C, - afii10047: 0x042D, - afii10048: 0x042E, - afii10049: 0x042F, - afii10050: 0x0490, - afii10051: 0x0402, - afii10052: 0x0403, - afii10053: 0x0404, - afii10054: 0x0405, - afii10055: 0x0406, - afii10056: 0x0407, - afii10057: 0x0408, - afii10058: 0x0409, - afii10059: 0x040A, - afii10060: 0x040B, - afii10061: 0x040C, - afii10062: 0x040E, - afii10063: 0xF6C4, - afii10064: 0xF6C5, - afii10065: 0x0430, - afii10066: 0x0431, - afii10067: 0x0432, - afii10068: 0x0433, - afii10069: 0x0434, - afii10070: 0x0435, - afii10071: 0x0451, - afii10072: 0x0436, - afii10073: 0x0437, - afii10074: 0x0438, - afii10075: 0x0439, - afii10076: 0x043A, - afii10077: 0x043B, - afii10078: 0x043C, - afii10079: 0x043D, - afii10080: 0x043E, - afii10081: 0x043F, - afii10082: 0x0440, - afii10083: 0x0441, - afii10084: 0x0442, - afii10085: 0x0443, - afii10086: 0x0444, - afii10087: 0x0445, - afii10088: 0x0446, - afii10089: 0x0447, - afii10090: 0x0448, - afii10091: 0x0449, - afii10092: 0x044A, - afii10093: 0x044B, - afii10094: 0x044C, - afii10095: 0x044D, - afii10096: 0x044E, - afii10097: 0x044F, - afii10098: 0x0491, - afii10099: 0x0452, - afii10100: 0x0453, - afii10101: 0x0454, - afii10102: 0x0455, - afii10103: 0x0456, - afii10104: 0x0457, - afii10105: 0x0458, - afii10106: 0x0459, - afii10107: 0x045A, - afii10108: 0x045B, - afii10109: 0x045C, - afii10110: 0x045E, - afii10145: 0x040F, - afii10146: 0x0462, - afii10147: 0x0472, - afii10148: 0x0474, - afii10192: 0xF6C6, - afii10193: 0x045F, - afii10194: 0x0463, - afii10195: 0x0473, - afii10196: 0x0475, - afii10831: 0xF6C7, - afii10832: 0xF6C8, - afii10846: 0x04D9, - afii299: 0x200E, - afii300: 0x200F, - afii301: 0x200D, - afii57381: 0x066A, - afii57388: 0x060C, - afii57392: 0x0660, - afii57393: 0x0661, - afii57394: 0x0662, - afii57395: 0x0663, - afii57396: 0x0664, - afii57397: 0x0665, - afii57398: 0x0666, - afii57399: 0x0667, - afii57400: 0x0668, - afii57401: 0x0669, - afii57403: 0x061B, - afii57407: 0x061F, - afii57409: 0x0621, - afii57410: 0x0622, - afii57411: 0x0623, - afii57412: 0x0624, - afii57413: 0x0625, - afii57414: 0x0626, - afii57415: 0x0627, - afii57416: 0x0628, - afii57417: 0x0629, - afii57418: 0x062A, - afii57419: 0x062B, - afii57420: 0x062C, - afii57421: 0x062D, - afii57422: 0x062E, - afii57423: 0x062F, - afii57424: 0x0630, - afii57425: 0x0631, - afii57426: 0x0632, - afii57427: 0x0633, - afii57428: 0x0634, - afii57429: 0x0635, - afii57430: 0x0636, - afii57431: 0x0637, - afii57432: 0x0638, - afii57433: 0x0639, - afii57434: 0x063A, - afii57440: 0x0640, - afii57441: 0x0641, - afii57442: 0x0642, - afii57443: 0x0643, - afii57444: 0x0644, - afii57445: 0x0645, - afii57446: 0x0646, - afii57448: 0x0648, - afii57449: 0x0649, - afii57450: 0x064A, - afii57451: 0x064B, - afii57452: 0x064C, - afii57453: 0x064D, - afii57454: 0x064E, - afii57455: 0x064F, - afii57456: 0x0650, - afii57457: 0x0651, - afii57458: 0x0652, - afii57470: 0x0647, - afii57505: 0x06A4, - afii57506: 0x067E, - afii57507: 0x0686, - afii57508: 0x0698, - afii57509: 0x06AF, - afii57511: 0x0679, - afii57512: 0x0688, - afii57513: 0x0691, - afii57514: 0x06BA, - afii57519: 0x06D2, - afii57534: 0x06D5, - afii57636: 0x20AA, - afii57645: 0x05BE, - afii57658: 0x05C3, - afii57664: 0x05D0, - afii57665: 0x05D1, - afii57666: 0x05D2, - afii57667: 0x05D3, - afii57668: 0x05D4, - afii57669: 0x05D5, - afii57670: 0x05D6, - afii57671: 0x05D7, - afii57672: 0x05D8, - afii57673: 0x05D9, - afii57674: 0x05DA, - afii57675: 0x05DB, - afii57676: 0x05DC, - afii57677: 0x05DD, - afii57678: 0x05DE, - afii57679: 0x05DF, - afii57680: 0x05E0, - afii57681: 0x05E1, - afii57682: 0x05E2, - afii57683: 0x05E3, - afii57684: 0x05E4, - afii57685: 0x05E5, - afii57686: 0x05E6, - afii57687: 0x05E7, - afii57688: 0x05E8, - afii57689: 0x05E9, - afii57690: 0x05EA, - afii57694: 0xFB2A, - afii57695: 0xFB2B, - afii57700: 0xFB4B, - afii57705: 0xFB1F, - afii57716: 0x05F0, - afii57717: 0x05F1, - afii57718: 0x05F2, - afii57723: 0xFB35, - afii57793: 0x05B4, - afii57794: 0x05B5, - afii57795: 0x05B6, - afii57796: 0x05BB, - afii57797: 0x05B8, - afii57798: 0x05B7, - afii57799: 0x05B0, - afii57800: 0x05B2, - afii57801: 0x05B1, - afii57802: 0x05B3, - afii57803: 0x05C2, - afii57804: 0x05C1, - afii57806: 0x05B9, - afii57807: 0x05BC, - afii57839: 0x05BD, - afii57841: 0x05BF, - afii57842: 0x05C0, - afii57929: 0x02BC, - afii61248: 0x2105, - afii61289: 0x2113, - afii61352: 0x2116, - afii61573: 0x202C, - afii61574: 0x202D, - afii61575: 0x202E, - afii61664: 0x200C, - afii63167: 0x066D, - afii64937: 0x02BD, - agrave: 0x00E0, - agujarati: 0x0A85, - agurmukhi: 0x0A05, - ahiragana: 0x3042, - ahookabove: 0x1EA3, - aibengali: 0x0990, - aibopomofo: 0x311E, - aideva: 0x0910, - aiecyrillic: 0x04D5, - aigujarati: 0x0A90, - aigurmukhi: 0x0A10, - aimatragurmukhi: 0x0A48, - ainarabic: 0x0639, - ainfinalarabic: 0xFECA, - aininitialarabic: 0xFECB, - ainmedialarabic: 0xFECC, - ainvertedbreve: 0x0203, - aivowelsignbengali: 0x09C8, - aivowelsigndeva: 0x0948, - aivowelsigngujarati: 0x0AC8, - akatakana: 0x30A2, - akatakanahalfwidth: 0xFF71, - akorean: 0x314F, - alef: 0x05D0, - alefarabic: 0x0627, - alefdageshhebrew: 0xFB30, - aleffinalarabic: 0xFE8E, - alefhamzaabovearabic: 0x0623, - alefhamzaabovefinalarabic: 0xFE84, - alefhamzabelowarabic: 0x0625, - alefhamzabelowfinalarabic: 0xFE88, - alefhebrew: 0x05D0, - aleflamedhebrew: 0xFB4F, - alefmaddaabovearabic: 0x0622, - alefmaddaabovefinalarabic: 0xFE82, - alefmaksuraarabic: 0x0649, - alefmaksurafinalarabic: 0xFEF0, - alefmaksurainitialarabic: 0xFEF3, - alefmaksuramedialarabic: 0xFEF4, - alefpatahhebrew: 0xFB2E, - alefqamatshebrew: 0xFB2F, - aleph: 0x2135, - allequal: 0x224C, - alpha: 0x03B1, - alphatonos: 0x03AC, - amacron: 0x0101, - amonospace: 0xFF41, - ampersand: 0x0026, - ampersandmonospace: 0xFF06, - ampersandsmall: 0xF726, - amsquare: 0x33C2, - anbopomofo: 0x3122, - angbopomofo: 0x3124, - angbracketleft: 0x3008, // This glyph is missing from Adobe's original list. - angbracketright: 0x3009, // This glyph is missing from Adobe's original list. - angkhankhuthai: 0x0E5A, - angle: 0x2220, - anglebracketleft: 0x3008, - anglebracketleftvertical: 0xFE3F, - anglebracketright: 0x3009, - anglebracketrightvertical: 0xFE40, - angleleft: 0x2329, - angleright: 0x232A, - angstrom: 0x212B, - anoteleia: 0x0387, - anudattadeva: 0x0952, - anusvarabengali: 0x0982, - anusvaradeva: 0x0902, - anusvaragujarati: 0x0A82, - aogonek: 0x0105, - apaatosquare: 0x3300, - aparen: 0x249C, - apostrophearmenian: 0x055A, - apostrophemod: 0x02BC, - apple: 0xF8FF, - approaches: 0x2250, - approxequal: 0x2248, - approxequalorimage: 0x2252, - approximatelyequal: 0x2245, - araeaekorean: 0x318E, - araeakorean: 0x318D, - arc: 0x2312, - arighthalfring: 0x1E9A, - aring: 0x00E5, - aringacute: 0x01FB, - aringbelow: 0x1E01, - arrowboth: 0x2194, - arrowdashdown: 0x21E3, - arrowdashleft: 0x21E0, - arrowdashright: 0x21E2, - arrowdashup: 0x21E1, - arrowdblboth: 0x21D4, - arrowdbldown: 0x21D3, - arrowdblleft: 0x21D0, - arrowdblright: 0x21D2, - arrowdblup: 0x21D1, - arrowdown: 0x2193, - arrowdownleft: 0x2199, - arrowdownright: 0x2198, - arrowdownwhite: 0x21E9, - arrowheaddownmod: 0x02C5, - arrowheadleftmod: 0x02C2, - arrowheadrightmod: 0x02C3, - arrowheadupmod: 0x02C4, - arrowhorizex: 0xF8E7, - arrowleft: 0x2190, - arrowleftdbl: 0x21D0, - arrowleftdblstroke: 0x21CD, - arrowleftoverright: 0x21C6, - arrowleftwhite: 0x21E6, - arrowright: 0x2192, - arrowrightdblstroke: 0x21CF, - arrowrightheavy: 0x279E, - arrowrightoverleft: 0x21C4, - arrowrightwhite: 0x21E8, - arrowtableft: 0x21E4, - arrowtabright: 0x21E5, - arrowup: 0x2191, - arrowupdn: 0x2195, - arrowupdnbse: 0x21A8, - arrowupdownbase: 0x21A8, - arrowupleft: 0x2196, - arrowupleftofdown: 0x21C5, - arrowupright: 0x2197, - arrowupwhite: 0x21E7, - arrowvertex: 0xF8E6, - asciicircum: 0x005E, - asciicircummonospace: 0xFF3E, - asciitilde: 0x007E, - asciitildemonospace: 0xFF5E, - ascript: 0x0251, - ascriptturned: 0x0252, - asmallhiragana: 0x3041, - asmallkatakana: 0x30A1, - asmallkatakanahalfwidth: 0xFF67, - asterisk: 0x002A, - asteriskaltonearabic: 0x066D, - asteriskarabic: 0x066D, - asteriskmath: 0x2217, - asteriskmonospace: 0xFF0A, - asterisksmall: 0xFE61, - asterism: 0x2042, - asuperior: 0xF6E9, - asymptoticallyequal: 0x2243, - at: 0x0040, - atilde: 0x00E3, - atmonospace: 0xFF20, - atsmall: 0xFE6B, - aturned: 0x0250, - aubengali: 0x0994, - aubopomofo: 0x3120, - audeva: 0x0914, - augujarati: 0x0A94, - augurmukhi: 0x0A14, - aulengthmarkbengali: 0x09D7, - aumatragurmukhi: 0x0A4C, - auvowelsignbengali: 0x09CC, - auvowelsigndeva: 0x094C, - auvowelsigngujarati: 0x0ACC, - avagrahadeva: 0x093D, - aybarmenian: 0x0561, - ayin: 0x05E2, - ayinaltonehebrew: 0xFB20, - ayinhebrew: 0x05E2, - b: 0x0062, - babengali: 0x09AC, - backslash: 0x005C, - backslashmonospace: 0xFF3C, - badeva: 0x092C, - bagujarati: 0x0AAC, - bagurmukhi: 0x0A2C, - bahiragana: 0x3070, - bahtthai: 0x0E3F, - bakatakana: 0x30D0, - bar: 0x007C, - barmonospace: 0xFF5C, - bbopomofo: 0x3105, - bcircle: 0x24D1, - bdotaccent: 0x1E03, - bdotbelow: 0x1E05, - beamedsixteenthnotes: 0x266C, - because: 0x2235, - becyrillic: 0x0431, - beharabic: 0x0628, - behfinalarabic: 0xFE90, - behinitialarabic: 0xFE91, - behiragana: 0x3079, - behmedialarabic: 0xFE92, - behmeeminitialarabic: 0xFC9F, - behmeemisolatedarabic: 0xFC08, - behnoonfinalarabic: 0xFC6D, - bekatakana: 0x30D9, - benarmenian: 0x0562, - bet: 0x05D1, - beta: 0x03B2, - betasymbolgreek: 0x03D0, - betdagesh: 0xFB31, - betdageshhebrew: 0xFB31, - bethebrew: 0x05D1, - betrafehebrew: 0xFB4C, - bhabengali: 0x09AD, - bhadeva: 0x092D, - bhagujarati: 0x0AAD, - bhagurmukhi: 0x0A2D, - bhook: 0x0253, - bihiragana: 0x3073, - bikatakana: 0x30D3, - bilabialclick: 0x0298, - bindigurmukhi: 0x0A02, - birusquare: 0x3331, - blackcircle: 0x25CF, - blackdiamond: 0x25C6, - blackdownpointingtriangle: 0x25BC, - blackleftpointingpointer: 0x25C4, - blackleftpointingtriangle: 0x25C0, - blacklenticularbracketleft: 0x3010, - blacklenticularbracketleftvertical: 0xFE3B, - blacklenticularbracketright: 0x3011, - blacklenticularbracketrightvertical: 0xFE3C, - blacklowerlefttriangle: 0x25E3, - blacklowerrighttriangle: 0x25E2, - blackrectangle: 0x25AC, - blackrightpointingpointer: 0x25BA, - blackrightpointingtriangle: 0x25B6, - blacksmallsquare: 0x25AA, - blacksmilingface: 0x263B, - blacksquare: 0x25A0, - blackstar: 0x2605, - blackupperlefttriangle: 0x25E4, - blackupperrighttriangle: 0x25E5, - blackuppointingsmalltriangle: 0x25B4, - blackuppointingtriangle: 0x25B2, - blank: 0x2423, - blinebelow: 0x1E07, - block: 0x2588, - bmonospace: 0xFF42, - bobaimaithai: 0x0E1A, - bohiragana: 0x307C, - bokatakana: 0x30DC, - bparen: 0x249D, - bqsquare: 0x33C3, - braceex: 0xF8F4, - braceleft: 0x007B, - braceleftbt: 0xF8F3, - braceleftmid: 0xF8F2, - braceleftmonospace: 0xFF5B, - braceleftsmall: 0xFE5B, - bracelefttp: 0xF8F1, - braceleftvertical: 0xFE37, - braceright: 0x007D, - bracerightbt: 0xF8FE, - bracerightmid: 0xF8FD, - bracerightmonospace: 0xFF5D, - bracerightsmall: 0xFE5C, - bracerighttp: 0xF8FC, - bracerightvertical: 0xFE38, - bracketleft: 0x005B, - bracketleftbt: 0xF8F0, - bracketleftex: 0xF8EF, - bracketleftmonospace: 0xFF3B, - bracketlefttp: 0xF8EE, - bracketright: 0x005D, - bracketrightbt: 0xF8FB, - bracketrightex: 0xF8FA, - bracketrightmonospace: 0xFF3D, - bracketrighttp: 0xF8F9, - breve: 0x02D8, - brevebelowcmb: 0x032E, - brevecmb: 0x0306, - breveinvertedbelowcmb: 0x032F, - breveinvertedcmb: 0x0311, - breveinverteddoublecmb: 0x0361, - bridgebelowcmb: 0x032A, - bridgeinvertedbelowcmb: 0x033A, - brokenbar: 0x00A6, - bstroke: 0x0180, - bsuperior: 0xF6EA, - btopbar: 0x0183, - buhiragana: 0x3076, - bukatakana: 0x30D6, - bullet: 0x2022, - bulletinverse: 0x25D8, - bulletoperator: 0x2219, - bullseye: 0x25CE, - c: 0x0063, - caarmenian: 0x056E, - cabengali: 0x099A, - cacute: 0x0107, - cadeva: 0x091A, - cagujarati: 0x0A9A, - cagurmukhi: 0x0A1A, - calsquare: 0x3388, - candrabindubengali: 0x0981, - candrabinducmb: 0x0310, - candrabindudeva: 0x0901, - candrabindugujarati: 0x0A81, - capslock: 0x21EA, - careof: 0x2105, - caron: 0x02C7, - caronbelowcmb: 0x032C, - caroncmb: 0x030C, - carriagereturn: 0x21B5, - cbopomofo: 0x3118, - ccaron: 0x010D, - ccedilla: 0x00E7, - ccedillaacute: 0x1E09, - ccircle: 0x24D2, - ccircumflex: 0x0109, - ccurl: 0x0255, - cdot: 0x010B, - cdotaccent: 0x010B, - cdsquare: 0x33C5, - cedilla: 0x00B8, - cedillacmb: 0x0327, - cent: 0x00A2, - centigrade: 0x2103, - centinferior: 0xF6DF, - centmonospace: 0xFFE0, - centoldstyle: 0xF7A2, - centsuperior: 0xF6E0, - chaarmenian: 0x0579, - chabengali: 0x099B, - chadeva: 0x091B, - chagujarati: 0x0A9B, - chagurmukhi: 0x0A1B, - chbopomofo: 0x3114, - cheabkhasiancyrillic: 0x04BD, - checkmark: 0x2713, - checyrillic: 0x0447, - chedescenderabkhasiancyrillic: 0x04BF, - chedescendercyrillic: 0x04B7, - chedieresiscyrillic: 0x04F5, - cheharmenian: 0x0573, - chekhakassiancyrillic: 0x04CC, - cheverticalstrokecyrillic: 0x04B9, - chi: 0x03C7, - chieuchacirclekorean: 0x3277, - chieuchaparenkorean: 0x3217, - chieuchcirclekorean: 0x3269, - chieuchkorean: 0x314A, - chieuchparenkorean: 0x3209, - chochangthai: 0x0E0A, - chochanthai: 0x0E08, - chochingthai: 0x0E09, - chochoethai: 0x0E0C, - chook: 0x0188, - cieucacirclekorean: 0x3276, - cieucaparenkorean: 0x3216, - cieuccirclekorean: 0x3268, - cieuckorean: 0x3148, - cieucparenkorean: 0x3208, - cieucuparenkorean: 0x321C, - circle: 0x25CB, - circlecopyrt: 0x00A9, // This glyph is missing from Adobe's original list. - circlemultiply: 0x2297, - circleot: 0x2299, - circleplus: 0x2295, - circlepostalmark: 0x3036, - circlewithlefthalfblack: 0x25D0, - circlewithrighthalfblack: 0x25D1, - circumflex: 0x02C6, - circumflexbelowcmb: 0x032D, - circumflexcmb: 0x0302, - clear: 0x2327, - clickalveolar: 0x01C2, - clickdental: 0x01C0, - clicklateral: 0x01C1, - clickretroflex: 0x01C3, - club: 0x2663, - clubsuitblack: 0x2663, - clubsuitwhite: 0x2667, - cmcubedsquare: 0x33A4, - cmonospace: 0xFF43, - cmsquaredsquare: 0x33A0, - coarmenian: 0x0581, - colon: 0x003A, - colonmonetary: 0x20A1, - colonmonospace: 0xFF1A, - colonsign: 0x20A1, - colonsmall: 0xFE55, - colontriangularhalfmod: 0x02D1, - colontriangularmod: 0x02D0, - comma: 0x002C, - commaabovecmb: 0x0313, - commaaboverightcmb: 0x0315, - commaaccent: 0xF6C3, - commaarabic: 0x060C, - commaarmenian: 0x055D, - commainferior: 0xF6E1, - commamonospace: 0xFF0C, - commareversedabovecmb: 0x0314, - commareversedmod: 0x02BD, - commasmall: 0xFE50, - commasuperior: 0xF6E2, - commaturnedabovecmb: 0x0312, - commaturnedmod: 0x02BB, - compass: 0x263C, - congruent: 0x2245, - contourintegral: 0x222E, - control: 0x2303, - controlACK: 0x0006, - controlBEL: 0x0007, - controlBS: 0x0008, - controlCAN: 0x0018, - controlCR: 0x000D, - controlDC1: 0x0011, - controlDC2: 0x0012, - controlDC3: 0x0013, - controlDC4: 0x0014, - controlDEL: 0x007F, - controlDLE: 0x0010, - controlEM: 0x0019, - controlENQ: 0x0005, - controlEOT: 0x0004, - controlESC: 0x001B, - controlETB: 0x0017, - controlETX: 0x0003, - controlFF: 0x000C, - controlFS: 0x001C, - controlGS: 0x001D, - controlHT: 0x0009, - controlLF: 0x000A, - controlNAK: 0x0015, - controlRS: 0x001E, - controlSI: 0x000F, - controlSO: 0x000E, - controlSOT: 0x0002, - controlSTX: 0x0001, - controlSUB: 0x001A, - controlSYN: 0x0016, - controlUS: 0x001F, - controlVT: 0x000B, - copyright: 0x00A9, - copyrightsans: 0xF8E9, - copyrightserif: 0xF6D9, - cornerbracketleft: 0x300C, - cornerbracketlefthalfwidth: 0xFF62, - cornerbracketleftvertical: 0xFE41, - cornerbracketright: 0x300D, - cornerbracketrighthalfwidth: 0xFF63, - cornerbracketrightvertical: 0xFE42, - corporationsquare: 0x337F, - cosquare: 0x33C7, - coverkgsquare: 0x33C6, - cparen: 0x249E, - cruzeiro: 0x20A2, - cstretched: 0x0297, - curlyand: 0x22CF, - curlyor: 0x22CE, - currency: 0x00A4, - cyrBreve: 0xF6D1, - cyrFlex: 0xF6D2, - cyrbreve: 0xF6D4, - cyrflex: 0xF6D5, - d: 0x0064, - daarmenian: 0x0564, - dabengali: 0x09A6, - dadarabic: 0x0636, - dadeva: 0x0926, - dadfinalarabic: 0xFEBE, - dadinitialarabic: 0xFEBF, - dadmedialarabic: 0xFEC0, - dagesh: 0x05BC, - dageshhebrew: 0x05BC, - dagger: 0x2020, - daggerdbl: 0x2021, - dagujarati: 0x0AA6, - dagurmukhi: 0x0A26, - dahiragana: 0x3060, - dakatakana: 0x30C0, - dalarabic: 0x062F, - dalet: 0x05D3, - daletdagesh: 0xFB33, - daletdageshhebrew: 0xFB33, - dalethebrew: 0x05D3, - dalfinalarabic: 0xFEAA, - dammaarabic: 0x064F, - dammalowarabic: 0x064F, - dammatanaltonearabic: 0x064C, - dammatanarabic: 0x064C, - danda: 0x0964, - dargahebrew: 0x05A7, - dargalefthebrew: 0x05A7, - dasiapneumatacyrilliccmb: 0x0485, - dblGrave: 0xF6D3, - dblanglebracketleft: 0x300A, - dblanglebracketleftvertical: 0xFE3D, - dblanglebracketright: 0x300B, - dblanglebracketrightvertical: 0xFE3E, - dblarchinvertedbelowcmb: 0x032B, - dblarrowleft: 0x21D4, - dblarrowright: 0x21D2, - dbldanda: 0x0965, - dblgrave: 0xF6D6, - dblgravecmb: 0x030F, - dblintegral: 0x222C, - dbllowline: 0x2017, - dbllowlinecmb: 0x0333, - dbloverlinecmb: 0x033F, - dblprimemod: 0x02BA, - dblverticalbar: 0x2016, - dblverticallineabovecmb: 0x030E, - dbopomofo: 0x3109, - dbsquare: 0x33C8, - dcaron: 0x010F, - dcedilla: 0x1E11, - dcircle: 0x24D3, - dcircumflexbelow: 0x1E13, - dcroat: 0x0111, - ddabengali: 0x09A1, - ddadeva: 0x0921, - ddagujarati: 0x0AA1, - ddagurmukhi: 0x0A21, - ddalarabic: 0x0688, - ddalfinalarabic: 0xFB89, - dddhadeva: 0x095C, - ddhabengali: 0x09A2, - ddhadeva: 0x0922, - ddhagujarati: 0x0AA2, - ddhagurmukhi: 0x0A22, - ddotaccent: 0x1E0B, - ddotbelow: 0x1E0D, - decimalseparatorarabic: 0x066B, - decimalseparatorpersian: 0x066B, - decyrillic: 0x0434, - degree: 0x00B0, - dehihebrew: 0x05AD, - dehiragana: 0x3067, - deicoptic: 0x03EF, - dekatakana: 0x30C7, - deleteleft: 0x232B, - deleteright: 0x2326, - delta: 0x03B4, - deltaturned: 0x018D, - denominatorminusonenumeratorbengali: 0x09F8, - dezh: 0x02A4, - dhabengali: 0x09A7, - dhadeva: 0x0927, - dhagujarati: 0x0AA7, - dhagurmukhi: 0x0A27, - dhook: 0x0257, - dialytikatonos: 0x0385, - dialytikatonoscmb: 0x0344, - diamond: 0x2666, - diamondsuitwhite: 0x2662, - dieresis: 0x00A8, - dieresisacute: 0xF6D7, - dieresisbelowcmb: 0x0324, - dieresiscmb: 0x0308, - dieresisgrave: 0xF6D8, - dieresistonos: 0x0385, - dihiragana: 0x3062, - dikatakana: 0x30C2, - dittomark: 0x3003, - divide: 0x00F7, - divides: 0x2223, - divisionslash: 0x2215, - djecyrillic: 0x0452, - dkshade: 0x2593, - dlinebelow: 0x1E0F, - dlsquare: 0x3397, - dmacron: 0x0111, - dmonospace: 0xFF44, - dnblock: 0x2584, - dochadathai: 0x0E0E, - dodekthai: 0x0E14, - dohiragana: 0x3069, - dokatakana: 0x30C9, - dollar: 0x0024, - dollarinferior: 0xF6E3, - dollarmonospace: 0xFF04, - dollaroldstyle: 0xF724, - dollarsmall: 0xFE69, - dollarsuperior: 0xF6E4, - dong: 0x20AB, - dorusquare: 0x3326, - dotaccent: 0x02D9, - dotaccentcmb: 0x0307, - dotbelowcmb: 0x0323, - dotbelowcomb: 0x0323, - dotkatakana: 0x30FB, - dotlessi: 0x0131, - dotlessj: 0xF6BE, - dotlessjstrokehook: 0x0284, - dotmath: 0x22C5, - dottedcircle: 0x25CC, - doubleyodpatah: 0xFB1F, - doubleyodpatahhebrew: 0xFB1F, - downtackbelowcmb: 0x031E, - downtackmod: 0x02D5, - dparen: 0x249F, - dsuperior: 0xF6EB, - dtail: 0x0256, - dtopbar: 0x018C, - duhiragana: 0x3065, - dukatakana: 0x30C5, - dz: 0x01F3, - dzaltone: 0x02A3, - dzcaron: 0x01C6, - dzcurl: 0x02A5, - dzeabkhasiancyrillic: 0x04E1, - dzecyrillic: 0x0455, - dzhecyrillic: 0x045F, - e: 0x0065, - eacute: 0x00E9, - earth: 0x2641, - ebengali: 0x098F, - ebopomofo: 0x311C, - ebreve: 0x0115, - ecandradeva: 0x090D, - ecandragujarati: 0x0A8D, - ecandravowelsigndeva: 0x0945, - ecandravowelsigngujarati: 0x0AC5, - ecaron: 0x011B, - ecedillabreve: 0x1E1D, - echarmenian: 0x0565, - echyiwnarmenian: 0x0587, - ecircle: 0x24D4, - ecircumflex: 0x00EA, - ecircumflexacute: 0x1EBF, - ecircumflexbelow: 0x1E19, - ecircumflexdotbelow: 0x1EC7, - ecircumflexgrave: 0x1EC1, - ecircumflexhookabove: 0x1EC3, - ecircumflextilde: 0x1EC5, - ecyrillic: 0x0454, - edblgrave: 0x0205, - edeva: 0x090F, - edieresis: 0x00EB, - edot: 0x0117, - edotaccent: 0x0117, - edotbelow: 0x1EB9, - eegurmukhi: 0x0A0F, - eematragurmukhi: 0x0A47, - efcyrillic: 0x0444, - egrave: 0x00E8, - egujarati: 0x0A8F, - eharmenian: 0x0567, - ehbopomofo: 0x311D, - ehiragana: 0x3048, - ehookabove: 0x1EBB, - eibopomofo: 0x311F, - eight: 0x0038, - eightarabic: 0x0668, - eightbengali: 0x09EE, - eightcircle: 0x2467, - eightcircleinversesansserif: 0x2791, - eightdeva: 0x096E, - eighteencircle: 0x2471, - eighteenparen: 0x2485, - eighteenperiod: 0x2499, - eightgujarati: 0x0AEE, - eightgurmukhi: 0x0A6E, - eighthackarabic: 0x0668, - eighthangzhou: 0x3028, - eighthnotebeamed: 0x266B, - eightideographicparen: 0x3227, - eightinferior: 0x2088, - eightmonospace: 0xFF18, - eightoldstyle: 0xF738, - eightparen: 0x247B, - eightperiod: 0x248F, - eightpersian: 0x06F8, - eightroman: 0x2177, - eightsuperior: 0x2078, - eightthai: 0x0E58, - einvertedbreve: 0x0207, - eiotifiedcyrillic: 0x0465, - ekatakana: 0x30A8, - ekatakanahalfwidth: 0xFF74, - ekonkargurmukhi: 0x0A74, - ekorean: 0x3154, - elcyrillic: 0x043B, - element: 0x2208, - elevencircle: 0x246A, - elevenparen: 0x247E, - elevenperiod: 0x2492, - elevenroman: 0x217A, - ellipsis: 0x2026, - ellipsisvertical: 0x22EE, - emacron: 0x0113, - emacronacute: 0x1E17, - emacrongrave: 0x1E15, - emcyrillic: 0x043C, - emdash: 0x2014, - emdashvertical: 0xFE31, - emonospace: 0xFF45, - emphasismarkarmenian: 0x055B, - emptyset: 0x2205, - enbopomofo: 0x3123, - encyrillic: 0x043D, - endash: 0x2013, - endashvertical: 0xFE32, - endescendercyrillic: 0x04A3, - eng: 0x014B, - engbopomofo: 0x3125, - enghecyrillic: 0x04A5, - enhookcyrillic: 0x04C8, - enspace: 0x2002, - eogonek: 0x0119, - eokorean: 0x3153, - eopen: 0x025B, - eopenclosed: 0x029A, - eopenreversed: 0x025C, - eopenreversedclosed: 0x025E, - eopenreversedhook: 0x025D, - eparen: 0x24A0, - epsilon: 0x03B5, - epsilontonos: 0x03AD, - equal: 0x003D, - equalmonospace: 0xFF1D, - equalsmall: 0xFE66, - equalsuperior: 0x207C, - equivalence: 0x2261, - erbopomofo: 0x3126, - ercyrillic: 0x0440, - ereversed: 0x0258, - ereversedcyrillic: 0x044D, - escyrillic: 0x0441, - esdescendercyrillic: 0x04AB, - esh: 0x0283, - eshcurl: 0x0286, - eshortdeva: 0x090E, - eshortvowelsigndeva: 0x0946, - eshreversedloop: 0x01AA, - eshsquatreversed: 0x0285, - esmallhiragana: 0x3047, - esmallkatakana: 0x30A7, - esmallkatakanahalfwidth: 0xFF6A, - estimated: 0x212E, - esuperior: 0xF6EC, - eta: 0x03B7, - etarmenian: 0x0568, - etatonos: 0x03AE, - eth: 0x00F0, - etilde: 0x1EBD, - etildebelow: 0x1E1B, - etnahtafoukhhebrew: 0x0591, - etnahtafoukhlefthebrew: 0x0591, - etnahtahebrew: 0x0591, - etnahtalefthebrew: 0x0591, - eturned: 0x01DD, - eukorean: 0x3161, - euro: 0x20AC, - evowelsignbengali: 0x09C7, - evowelsigndeva: 0x0947, - evowelsigngujarati: 0x0AC7, - exclam: 0x0021, - exclamarmenian: 0x055C, - exclamdbl: 0x203C, - exclamdown: 0x00A1, - exclamdownsmall: 0xF7A1, - exclammonospace: 0xFF01, - exclamsmall: 0xF721, - existential: 0x2203, - ezh: 0x0292, - ezhcaron: 0x01EF, - ezhcurl: 0x0293, - ezhreversed: 0x01B9, - ezhtail: 0x01BA, - f: 0x0066, - fadeva: 0x095E, - fagurmukhi: 0x0A5E, - fahrenheit: 0x2109, - fathaarabic: 0x064E, - fathalowarabic: 0x064E, - fathatanarabic: 0x064B, - fbopomofo: 0x3108, - fcircle: 0x24D5, - fdotaccent: 0x1E1F, - feharabic: 0x0641, - feharmenian: 0x0586, - fehfinalarabic: 0xFED2, - fehinitialarabic: 0xFED3, - fehmedialarabic: 0xFED4, - feicoptic: 0x03E5, - female: 0x2640, - ff: 0xFB00, - ffi: 0xFB03, - ffl: 0xFB04, - fi: 0xFB01, - fifteencircle: 0x246E, - fifteenparen: 0x2482, - fifteenperiod: 0x2496, - figuredash: 0x2012, - filledbox: 0x25A0, - filledrect: 0x25AC, - finalkaf: 0x05DA, - finalkafdagesh: 0xFB3A, - finalkafdageshhebrew: 0xFB3A, - finalkafhebrew: 0x05DA, - finalmem: 0x05DD, - finalmemhebrew: 0x05DD, - finalnun: 0x05DF, - finalnunhebrew: 0x05DF, - finalpe: 0x05E3, - finalpehebrew: 0x05E3, - finaltsadi: 0x05E5, - finaltsadihebrew: 0x05E5, - firsttonechinese: 0x02C9, - fisheye: 0x25C9, - fitacyrillic: 0x0473, - five: 0x0035, - fivearabic: 0x0665, - fivebengali: 0x09EB, - fivecircle: 0x2464, - fivecircleinversesansserif: 0x278E, - fivedeva: 0x096B, - fiveeighths: 0x215D, - fivegujarati: 0x0AEB, - fivegurmukhi: 0x0A6B, - fivehackarabic: 0x0665, - fivehangzhou: 0x3025, - fiveideographicparen: 0x3224, - fiveinferior: 0x2085, - fivemonospace: 0xFF15, - fiveoldstyle: 0xF735, - fiveparen: 0x2478, - fiveperiod: 0x248C, - fivepersian: 0x06F5, - fiveroman: 0x2174, - fivesuperior: 0x2075, - fivethai: 0x0E55, - fl: 0xFB02, - florin: 0x0192, - fmonospace: 0xFF46, - fmsquare: 0x3399, - fofanthai: 0x0E1F, - fofathai: 0x0E1D, - fongmanthai: 0x0E4F, - forall: 0x2200, - four: 0x0034, - fourarabic: 0x0664, - fourbengali: 0x09EA, - fourcircle: 0x2463, - fourcircleinversesansserif: 0x278D, - fourdeva: 0x096A, - fourgujarati: 0x0AEA, - fourgurmukhi: 0x0A6A, - fourhackarabic: 0x0664, - fourhangzhou: 0x3024, - fourideographicparen: 0x3223, - fourinferior: 0x2084, - fourmonospace: 0xFF14, - fournumeratorbengali: 0x09F7, - fouroldstyle: 0xF734, - fourparen: 0x2477, - fourperiod: 0x248B, - fourpersian: 0x06F4, - fourroman: 0x2173, - foursuperior: 0x2074, - fourteencircle: 0x246D, - fourteenparen: 0x2481, - fourteenperiod: 0x2495, - fourthai: 0x0E54, - fourthtonechinese: 0x02CB, - fparen: 0x24A1, - fraction: 0x2044, - franc: 0x20A3, - g: 0x0067, - gabengali: 0x0997, - gacute: 0x01F5, - gadeva: 0x0917, - gafarabic: 0x06AF, - gaffinalarabic: 0xFB93, - gafinitialarabic: 0xFB94, - gafmedialarabic: 0xFB95, - gagujarati: 0x0A97, - gagurmukhi: 0x0A17, - gahiragana: 0x304C, - gakatakana: 0x30AC, - gamma: 0x03B3, - gammalatinsmall: 0x0263, - gammasuperior: 0x02E0, - gangiacoptic: 0x03EB, - gbopomofo: 0x310D, - gbreve: 0x011F, - gcaron: 0x01E7, - gcedilla: 0x0123, - gcircle: 0x24D6, - gcircumflex: 0x011D, - gcommaaccent: 0x0123, - gdot: 0x0121, - gdotaccent: 0x0121, - gecyrillic: 0x0433, - gehiragana: 0x3052, - gekatakana: 0x30B2, - geometricallyequal: 0x2251, - gereshaccenthebrew: 0x059C, - gereshhebrew: 0x05F3, - gereshmuqdamhebrew: 0x059D, - germandbls: 0x00DF, - gershayimaccenthebrew: 0x059E, - gershayimhebrew: 0x05F4, - getamark: 0x3013, - ghabengali: 0x0998, - ghadarmenian: 0x0572, - ghadeva: 0x0918, - ghagujarati: 0x0A98, - ghagurmukhi: 0x0A18, - ghainarabic: 0x063A, - ghainfinalarabic: 0xFECE, - ghaininitialarabic: 0xFECF, - ghainmedialarabic: 0xFED0, - ghemiddlehookcyrillic: 0x0495, - ghestrokecyrillic: 0x0493, - gheupturncyrillic: 0x0491, - ghhadeva: 0x095A, - ghhagurmukhi: 0x0A5A, - ghook: 0x0260, - ghzsquare: 0x3393, - gihiragana: 0x304E, - gikatakana: 0x30AE, - gimarmenian: 0x0563, - gimel: 0x05D2, - gimeldagesh: 0xFB32, - gimeldageshhebrew: 0xFB32, - gimelhebrew: 0x05D2, - gjecyrillic: 0x0453, - glottalinvertedstroke: 0x01BE, - glottalstop: 0x0294, - glottalstopinverted: 0x0296, - glottalstopmod: 0x02C0, - glottalstopreversed: 0x0295, - glottalstopreversedmod: 0x02C1, - glottalstopreversedsuperior: 0x02E4, - glottalstopstroke: 0x02A1, - glottalstopstrokereversed: 0x02A2, - gmacron: 0x1E21, - gmonospace: 0xFF47, - gohiragana: 0x3054, - gokatakana: 0x30B4, - gparen: 0x24A2, - gpasquare: 0x33AC, - gradient: 0x2207, - grave: 0x0060, - gravebelowcmb: 0x0316, - gravecmb: 0x0300, - gravecomb: 0x0300, - gravedeva: 0x0953, - gravelowmod: 0x02CE, - gravemonospace: 0xFF40, - gravetonecmb: 0x0340, - greater: 0x003E, - greaterequal: 0x2265, - greaterequalorless: 0x22DB, - greatermonospace: 0xFF1E, - greaterorequivalent: 0x2273, - greaterorless: 0x2277, - greateroverequal: 0x2267, - greatersmall: 0xFE65, - gscript: 0x0261, - gstroke: 0x01E5, - guhiragana: 0x3050, - guillemotleft: 0x00AB, - guillemotright: 0x00BB, - guilsinglleft: 0x2039, - guilsinglright: 0x203A, - gukatakana: 0x30B0, - guramusquare: 0x3318, - gysquare: 0x33C9, - h: 0x0068, - haabkhasiancyrillic: 0x04A9, - haaltonearabic: 0x06C1, - habengali: 0x09B9, - hadescendercyrillic: 0x04B3, - hadeva: 0x0939, - hagujarati: 0x0AB9, - hagurmukhi: 0x0A39, - haharabic: 0x062D, - hahfinalarabic: 0xFEA2, - hahinitialarabic: 0xFEA3, - hahiragana: 0x306F, - hahmedialarabic: 0xFEA4, - haitusquare: 0x332A, - hakatakana: 0x30CF, - hakatakanahalfwidth: 0xFF8A, - halantgurmukhi: 0x0A4D, - hamzaarabic: 0x0621, - hamzalowarabic: 0x0621, - hangulfiller: 0x3164, - hardsigncyrillic: 0x044A, - harpoonleftbarbup: 0x21BC, - harpoonrightbarbup: 0x21C0, - hasquare: 0x33CA, - hatafpatah: 0x05B2, - hatafpatah16: 0x05B2, - hatafpatah23: 0x05B2, - hatafpatah2f: 0x05B2, - hatafpatahhebrew: 0x05B2, - hatafpatahnarrowhebrew: 0x05B2, - hatafpatahquarterhebrew: 0x05B2, - hatafpatahwidehebrew: 0x05B2, - hatafqamats: 0x05B3, - hatafqamats1b: 0x05B3, - hatafqamats28: 0x05B3, - hatafqamats34: 0x05B3, - hatafqamatshebrew: 0x05B3, - hatafqamatsnarrowhebrew: 0x05B3, - hatafqamatsquarterhebrew: 0x05B3, - hatafqamatswidehebrew: 0x05B3, - hatafsegol: 0x05B1, - hatafsegol17: 0x05B1, - hatafsegol24: 0x05B1, - hatafsegol30: 0x05B1, - hatafsegolhebrew: 0x05B1, - hatafsegolnarrowhebrew: 0x05B1, - hatafsegolquarterhebrew: 0x05B1, - hatafsegolwidehebrew: 0x05B1, - hbar: 0x0127, - hbopomofo: 0x310F, - hbrevebelow: 0x1E2B, - hcedilla: 0x1E29, - hcircle: 0x24D7, - hcircumflex: 0x0125, - hdieresis: 0x1E27, - hdotaccent: 0x1E23, - hdotbelow: 0x1E25, - he: 0x05D4, - heart: 0x2665, - heartsuitblack: 0x2665, - heartsuitwhite: 0x2661, - hedagesh: 0xFB34, - hedageshhebrew: 0xFB34, - hehaltonearabic: 0x06C1, - heharabic: 0x0647, - hehebrew: 0x05D4, - hehfinalaltonearabic: 0xFBA7, - hehfinalalttwoarabic: 0xFEEA, - hehfinalarabic: 0xFEEA, - hehhamzaabovefinalarabic: 0xFBA5, - hehhamzaaboveisolatedarabic: 0xFBA4, - hehinitialaltonearabic: 0xFBA8, - hehinitialarabic: 0xFEEB, - hehiragana: 0x3078, - hehmedialaltonearabic: 0xFBA9, - hehmedialarabic: 0xFEEC, - heiseierasquare: 0x337B, - hekatakana: 0x30D8, - hekatakanahalfwidth: 0xFF8D, - hekutaarusquare: 0x3336, - henghook: 0x0267, - herutusquare: 0x3339, - het: 0x05D7, - hethebrew: 0x05D7, - hhook: 0x0266, - hhooksuperior: 0x02B1, - hieuhacirclekorean: 0x327B, - hieuhaparenkorean: 0x321B, - hieuhcirclekorean: 0x326D, - hieuhkorean: 0x314E, - hieuhparenkorean: 0x320D, - hihiragana: 0x3072, - hikatakana: 0x30D2, - hikatakanahalfwidth: 0xFF8B, - hiriq: 0x05B4, - hiriq14: 0x05B4, - hiriq21: 0x05B4, - hiriq2d: 0x05B4, - hiriqhebrew: 0x05B4, - hiriqnarrowhebrew: 0x05B4, - hiriqquarterhebrew: 0x05B4, - hiriqwidehebrew: 0x05B4, - hlinebelow: 0x1E96, - hmonospace: 0xFF48, - hoarmenian: 0x0570, - hohipthai: 0x0E2B, - hohiragana: 0x307B, - hokatakana: 0x30DB, - hokatakanahalfwidth: 0xFF8E, - holam: 0x05B9, - holam19: 0x05B9, - holam26: 0x05B9, - holam32: 0x05B9, - holamhebrew: 0x05B9, - holamnarrowhebrew: 0x05B9, - holamquarterhebrew: 0x05B9, - holamwidehebrew: 0x05B9, - honokhukthai: 0x0E2E, - hookabovecomb: 0x0309, - hookcmb: 0x0309, - hookpalatalizedbelowcmb: 0x0321, - hookretroflexbelowcmb: 0x0322, - hoonsquare: 0x3342, - horicoptic: 0x03E9, - horizontalbar: 0x2015, - horncmb: 0x031B, - hotsprings: 0x2668, - house: 0x2302, - hparen: 0x24A3, - hsuperior: 0x02B0, - hturned: 0x0265, - huhiragana: 0x3075, - huiitosquare: 0x3333, - hukatakana: 0x30D5, - hukatakanahalfwidth: 0xFF8C, - hungarumlaut: 0x02DD, - hungarumlautcmb: 0x030B, - hv: 0x0195, - hyphen: 0x002D, - hypheninferior: 0xF6E5, - hyphenmonospace: 0xFF0D, - hyphensmall: 0xFE63, - hyphensuperior: 0xF6E6, - hyphentwo: 0x2010, - i: 0x0069, - iacute: 0x00ED, - iacyrillic: 0x044F, - ibengali: 0x0987, - ibopomofo: 0x3127, - ibreve: 0x012D, - icaron: 0x01D0, - icircle: 0x24D8, - icircumflex: 0x00EE, - icyrillic: 0x0456, - idblgrave: 0x0209, - ideographearthcircle: 0x328F, - ideographfirecircle: 0x328B, - ideographicallianceparen: 0x323F, - ideographiccallparen: 0x323A, - ideographiccentrecircle: 0x32A5, - ideographicclose: 0x3006, - ideographiccomma: 0x3001, - ideographiccommaleft: 0xFF64, - ideographiccongratulationparen: 0x3237, - ideographiccorrectcircle: 0x32A3, - ideographicearthparen: 0x322F, - ideographicenterpriseparen: 0x323D, - ideographicexcellentcircle: 0x329D, - ideographicfestivalparen: 0x3240, - ideographicfinancialcircle: 0x3296, - ideographicfinancialparen: 0x3236, - ideographicfireparen: 0x322B, - ideographichaveparen: 0x3232, - ideographichighcircle: 0x32A4, - ideographiciterationmark: 0x3005, - ideographiclaborcircle: 0x3298, - ideographiclaborparen: 0x3238, - ideographicleftcircle: 0x32A7, - ideographiclowcircle: 0x32A6, - ideographicmedicinecircle: 0x32A9, - ideographicmetalparen: 0x322E, - ideographicmoonparen: 0x322A, - ideographicnameparen: 0x3234, - ideographicperiod: 0x3002, - ideographicprintcircle: 0x329E, - ideographicreachparen: 0x3243, - ideographicrepresentparen: 0x3239, - ideographicresourceparen: 0x323E, - ideographicrightcircle: 0x32A8, - ideographicsecretcircle: 0x3299, - ideographicselfparen: 0x3242, - ideographicsocietyparen: 0x3233, - ideographicspace: 0x3000, - ideographicspecialparen: 0x3235, - ideographicstockparen: 0x3231, - ideographicstudyparen: 0x323B, - ideographicsunparen: 0x3230, - ideographicsuperviseparen: 0x323C, - ideographicwaterparen: 0x322C, - ideographicwoodparen: 0x322D, - ideographiczero: 0x3007, - ideographmetalcircle: 0x328E, - ideographmooncircle: 0x328A, - ideographnamecircle: 0x3294, - ideographsuncircle: 0x3290, - ideographwatercircle: 0x328C, - ideographwoodcircle: 0x328D, - ideva: 0x0907, - idieresis: 0x00EF, - idieresisacute: 0x1E2F, - idieresiscyrillic: 0x04E5, - idotbelow: 0x1ECB, - iebrevecyrillic: 0x04D7, - iecyrillic: 0x0435, - ieungacirclekorean: 0x3275, - ieungaparenkorean: 0x3215, - ieungcirclekorean: 0x3267, - ieungkorean: 0x3147, - ieungparenkorean: 0x3207, - igrave: 0x00EC, - igujarati: 0x0A87, - igurmukhi: 0x0A07, - ihiragana: 0x3044, - ihookabove: 0x1EC9, - iibengali: 0x0988, - iicyrillic: 0x0438, - iideva: 0x0908, - iigujarati: 0x0A88, - iigurmukhi: 0x0A08, - iimatragurmukhi: 0x0A40, - iinvertedbreve: 0x020B, - iishortcyrillic: 0x0439, - iivowelsignbengali: 0x09C0, - iivowelsigndeva: 0x0940, - iivowelsigngujarati: 0x0AC0, - ij: 0x0133, - ikatakana: 0x30A4, - ikatakanahalfwidth: 0xFF72, - ikorean: 0x3163, - ilde: 0x02DC, - iluyhebrew: 0x05AC, - imacron: 0x012B, - imacroncyrillic: 0x04E3, - imageorapproximatelyequal: 0x2253, - imatragurmukhi: 0x0A3F, - imonospace: 0xFF49, - increment: 0x2206, - infinity: 0x221E, - iniarmenian: 0x056B, - integral: 0x222B, - integralbottom: 0x2321, - integralbt: 0x2321, - integralex: 0xF8F5, - integraltop: 0x2320, - integraltp: 0x2320, - intersection: 0x2229, - intisquare: 0x3305, - invbullet: 0x25D8, - invcircle: 0x25D9, - invsmileface: 0x263B, - iocyrillic: 0x0451, - iogonek: 0x012F, - iota: 0x03B9, - iotadieresis: 0x03CA, - iotadieresistonos: 0x0390, - iotalatin: 0x0269, - iotatonos: 0x03AF, - iparen: 0x24A4, - irigurmukhi: 0x0A72, - ismallhiragana: 0x3043, - ismallkatakana: 0x30A3, - ismallkatakanahalfwidth: 0xFF68, - issharbengali: 0x09FA, - istroke: 0x0268, - isuperior: 0xF6ED, - iterationhiragana: 0x309D, - iterationkatakana: 0x30FD, - itilde: 0x0129, - itildebelow: 0x1E2D, - iubopomofo: 0x3129, - iucyrillic: 0x044E, - ivowelsignbengali: 0x09BF, - ivowelsigndeva: 0x093F, - ivowelsigngujarati: 0x0ABF, - izhitsacyrillic: 0x0475, - izhitsadblgravecyrillic: 0x0477, - j: 0x006A, - jaarmenian: 0x0571, - jabengali: 0x099C, - jadeva: 0x091C, - jagujarati: 0x0A9C, - jagurmukhi: 0x0A1C, - jbopomofo: 0x3110, - jcaron: 0x01F0, - jcircle: 0x24D9, - jcircumflex: 0x0135, - jcrossedtail: 0x029D, - jdotlessstroke: 0x025F, - jecyrillic: 0x0458, - jeemarabic: 0x062C, - jeemfinalarabic: 0xFE9E, - jeeminitialarabic: 0xFE9F, - jeemmedialarabic: 0xFEA0, - jeharabic: 0x0698, - jehfinalarabic: 0xFB8B, - jhabengali: 0x099D, - jhadeva: 0x091D, - jhagujarati: 0x0A9D, - jhagurmukhi: 0x0A1D, - jheharmenian: 0x057B, - jis: 0x3004, - jmonospace: 0xFF4A, - jparen: 0x24A5, - jsuperior: 0x02B2, - k: 0x006B, - kabashkircyrillic: 0x04A1, - kabengali: 0x0995, - kacute: 0x1E31, - kacyrillic: 0x043A, - kadescendercyrillic: 0x049B, - kadeva: 0x0915, - kaf: 0x05DB, - kafarabic: 0x0643, - kafdagesh: 0xFB3B, - kafdageshhebrew: 0xFB3B, - kaffinalarabic: 0xFEDA, - kafhebrew: 0x05DB, - kafinitialarabic: 0xFEDB, - kafmedialarabic: 0xFEDC, - kafrafehebrew: 0xFB4D, - kagujarati: 0x0A95, - kagurmukhi: 0x0A15, - kahiragana: 0x304B, - kahookcyrillic: 0x04C4, - kakatakana: 0x30AB, - kakatakanahalfwidth: 0xFF76, - kappa: 0x03BA, - kappasymbolgreek: 0x03F0, - kapyeounmieumkorean: 0x3171, - kapyeounphieuphkorean: 0x3184, - kapyeounpieupkorean: 0x3178, - kapyeounssangpieupkorean: 0x3179, - karoriisquare: 0x330D, - kashidaautoarabic: 0x0640, - kashidaautonosidebearingarabic: 0x0640, - kasmallkatakana: 0x30F5, - kasquare: 0x3384, - kasraarabic: 0x0650, - kasratanarabic: 0x064D, - kastrokecyrillic: 0x049F, - katahiraprolongmarkhalfwidth: 0xFF70, - kaverticalstrokecyrillic: 0x049D, - kbopomofo: 0x310E, - kcalsquare: 0x3389, - kcaron: 0x01E9, - kcedilla: 0x0137, - kcircle: 0x24DA, - kcommaaccent: 0x0137, - kdotbelow: 0x1E33, - keharmenian: 0x0584, - kehiragana: 0x3051, - kekatakana: 0x30B1, - kekatakanahalfwidth: 0xFF79, - kenarmenian: 0x056F, - kesmallkatakana: 0x30F6, - kgreenlandic: 0x0138, - khabengali: 0x0996, - khacyrillic: 0x0445, - khadeva: 0x0916, - khagujarati: 0x0A96, - khagurmukhi: 0x0A16, - khaharabic: 0x062E, - khahfinalarabic: 0xFEA6, - khahinitialarabic: 0xFEA7, - khahmedialarabic: 0xFEA8, - kheicoptic: 0x03E7, - khhadeva: 0x0959, - khhagurmukhi: 0x0A59, - khieukhacirclekorean: 0x3278, - khieukhaparenkorean: 0x3218, - khieukhcirclekorean: 0x326A, - khieukhkorean: 0x314B, - khieukhparenkorean: 0x320A, - khokhaithai: 0x0E02, - khokhonthai: 0x0E05, - khokhuatthai: 0x0E03, - khokhwaithai: 0x0E04, - khomutthai: 0x0E5B, - khook: 0x0199, - khorakhangthai: 0x0E06, - khzsquare: 0x3391, - kihiragana: 0x304D, - kikatakana: 0x30AD, - kikatakanahalfwidth: 0xFF77, - kiroguramusquare: 0x3315, - kiromeetorusquare: 0x3316, - kirosquare: 0x3314, - kiyeokacirclekorean: 0x326E, - kiyeokaparenkorean: 0x320E, - kiyeokcirclekorean: 0x3260, - kiyeokkorean: 0x3131, - kiyeokparenkorean: 0x3200, - kiyeoksioskorean: 0x3133, - kjecyrillic: 0x045C, - klinebelow: 0x1E35, - klsquare: 0x3398, - kmcubedsquare: 0x33A6, - kmonospace: 0xFF4B, - kmsquaredsquare: 0x33A2, - kohiragana: 0x3053, - kohmsquare: 0x33C0, - kokaithai: 0x0E01, - kokatakana: 0x30B3, - kokatakanahalfwidth: 0xFF7A, - kooposquare: 0x331E, - koppacyrillic: 0x0481, - koreanstandardsymbol: 0x327F, - koroniscmb: 0x0343, - kparen: 0x24A6, - kpasquare: 0x33AA, - ksicyrillic: 0x046F, - ktsquare: 0x33CF, - kturned: 0x029E, - kuhiragana: 0x304F, - kukatakana: 0x30AF, - kukatakanahalfwidth: 0xFF78, - kvsquare: 0x33B8, - kwsquare: 0x33BE, - l: 0x006C, - labengali: 0x09B2, - lacute: 0x013A, - ladeva: 0x0932, - lagujarati: 0x0AB2, - lagurmukhi: 0x0A32, - lakkhangyaothai: 0x0E45, - lamaleffinalarabic: 0xFEFC, - lamalefhamzaabovefinalarabic: 0xFEF8, - lamalefhamzaaboveisolatedarabic: 0xFEF7, - lamalefhamzabelowfinalarabic: 0xFEFA, - lamalefhamzabelowisolatedarabic: 0xFEF9, - lamalefisolatedarabic: 0xFEFB, - lamalefmaddaabovefinalarabic: 0xFEF6, - lamalefmaddaaboveisolatedarabic: 0xFEF5, - lamarabic: 0x0644, - lambda: 0x03BB, - lambdastroke: 0x019B, - lamed: 0x05DC, - lameddagesh: 0xFB3C, - lameddageshhebrew: 0xFB3C, - lamedhebrew: 0x05DC, - lamfinalarabic: 0xFEDE, - lamhahinitialarabic: 0xFCCA, - laminitialarabic: 0xFEDF, - lamjeeminitialarabic: 0xFCC9, - lamkhahinitialarabic: 0xFCCB, - lamlamhehisolatedarabic: 0xFDF2, - lammedialarabic: 0xFEE0, - lammeemhahinitialarabic: 0xFD88, - lammeeminitialarabic: 0xFCCC, - largecircle: 0x25EF, - lbar: 0x019A, - lbelt: 0x026C, - lbopomofo: 0x310C, - lcaron: 0x013E, - lcedilla: 0x013C, - lcircle: 0x24DB, - lcircumflexbelow: 0x1E3D, - lcommaaccent: 0x013C, - ldot: 0x0140, - ldotaccent: 0x0140, - ldotbelow: 0x1E37, - ldotbelowmacron: 0x1E39, - leftangleabovecmb: 0x031A, - lefttackbelowcmb: 0x0318, - less: 0x003C, - lessequal: 0x2264, - lessequalorgreater: 0x22DA, - lessmonospace: 0xFF1C, - lessorequivalent: 0x2272, - lessorgreater: 0x2276, - lessoverequal: 0x2266, - lesssmall: 0xFE64, - lezh: 0x026E, - lfblock: 0x258C, - lhookretroflex: 0x026D, - lira: 0x20A4, - liwnarmenian: 0x056C, - lj: 0x01C9, - ljecyrillic: 0x0459, - ll: 0xF6C0, - lladeva: 0x0933, - llagujarati: 0x0AB3, - llinebelow: 0x1E3B, - llladeva: 0x0934, - llvocalicbengali: 0x09E1, - llvocalicdeva: 0x0961, - llvocalicvowelsignbengali: 0x09E3, - llvocalicvowelsigndeva: 0x0963, - lmiddletilde: 0x026B, - lmonospace: 0xFF4C, - lmsquare: 0x33D0, - lochulathai: 0x0E2C, - logicaland: 0x2227, - logicalnot: 0x00AC, - logicalnotreversed: 0x2310, - logicalor: 0x2228, - lolingthai: 0x0E25, - longs: 0x017F, - lowlinecenterline: 0xFE4E, - lowlinecmb: 0x0332, - lowlinedashed: 0xFE4D, - lozenge: 0x25CA, - lparen: 0x24A7, - lslash: 0x0142, - lsquare: 0x2113, - lsuperior: 0xF6EE, - ltshade: 0x2591, - luthai: 0x0E26, - lvocalicbengali: 0x098C, - lvocalicdeva: 0x090C, - lvocalicvowelsignbengali: 0x09E2, - lvocalicvowelsigndeva: 0x0962, - lxsquare: 0x33D3, - m: 0x006D, - mabengali: 0x09AE, - macron: 0x00AF, - macronbelowcmb: 0x0331, - macroncmb: 0x0304, - macronlowmod: 0x02CD, - macronmonospace: 0xFFE3, - macute: 0x1E3F, - madeva: 0x092E, - magujarati: 0x0AAE, - magurmukhi: 0x0A2E, - mahapakhhebrew: 0x05A4, - mahapakhlefthebrew: 0x05A4, - mahiragana: 0x307E, - maichattawalowleftthai: 0xF895, - maichattawalowrightthai: 0xF894, - maichattawathai: 0x0E4B, - maichattawaupperleftthai: 0xF893, - maieklowleftthai: 0xF88C, - maieklowrightthai: 0xF88B, - maiekthai: 0x0E48, - maiekupperleftthai: 0xF88A, - maihanakatleftthai: 0xF884, - maihanakatthai: 0x0E31, - maitaikhuleftthai: 0xF889, - maitaikhuthai: 0x0E47, - maitholowleftthai: 0xF88F, - maitholowrightthai: 0xF88E, - maithothai: 0x0E49, - maithoupperleftthai: 0xF88D, - maitrilowleftthai: 0xF892, - maitrilowrightthai: 0xF891, - maitrithai: 0x0E4A, - maitriupperleftthai: 0xF890, - maiyamokthai: 0x0E46, - makatakana: 0x30DE, - makatakanahalfwidth: 0xFF8F, - male: 0x2642, - mansyonsquare: 0x3347, - maqafhebrew: 0x05BE, - mars: 0x2642, - masoracirclehebrew: 0x05AF, - masquare: 0x3383, - mbopomofo: 0x3107, - mbsquare: 0x33D4, - mcircle: 0x24DC, - mcubedsquare: 0x33A5, - mdotaccent: 0x1E41, - mdotbelow: 0x1E43, - meemarabic: 0x0645, - meemfinalarabic: 0xFEE2, - meeminitialarabic: 0xFEE3, - meemmedialarabic: 0xFEE4, - meemmeeminitialarabic: 0xFCD1, - meemmeemisolatedarabic: 0xFC48, - meetorusquare: 0x334D, - mehiragana: 0x3081, - meizierasquare: 0x337E, - mekatakana: 0x30E1, - mekatakanahalfwidth: 0xFF92, - mem: 0x05DE, - memdagesh: 0xFB3E, - memdageshhebrew: 0xFB3E, - memhebrew: 0x05DE, - menarmenian: 0x0574, - merkhahebrew: 0x05A5, - merkhakefulahebrew: 0x05A6, - merkhakefulalefthebrew: 0x05A6, - merkhalefthebrew: 0x05A5, - mhook: 0x0271, - mhzsquare: 0x3392, - middledotkatakanahalfwidth: 0xFF65, - middot: 0x00B7, - mieumacirclekorean: 0x3272, - mieumaparenkorean: 0x3212, - mieumcirclekorean: 0x3264, - mieumkorean: 0x3141, - mieumpansioskorean: 0x3170, - mieumparenkorean: 0x3204, - mieumpieupkorean: 0x316E, - mieumsioskorean: 0x316F, - mihiragana: 0x307F, - mikatakana: 0x30DF, - mikatakanahalfwidth: 0xFF90, - minus: 0x2212, - minusbelowcmb: 0x0320, - minuscircle: 0x2296, - minusmod: 0x02D7, - minusplus: 0x2213, - minute: 0x2032, - miribaarusquare: 0x334A, - mirisquare: 0x3349, - mlonglegturned: 0x0270, - mlsquare: 0x3396, - mmcubedsquare: 0x33A3, - mmonospace: 0xFF4D, - mmsquaredsquare: 0x339F, - mohiragana: 0x3082, - mohmsquare: 0x33C1, - mokatakana: 0x30E2, - mokatakanahalfwidth: 0xFF93, - molsquare: 0x33D6, - momathai: 0x0E21, - moverssquare: 0x33A7, - moverssquaredsquare: 0x33A8, - mparen: 0x24A8, - mpasquare: 0x33AB, - mssquare: 0x33B3, - msuperior: 0xF6EF, - mturned: 0x026F, - mu: 0x00B5, - mu1: 0x00B5, - muasquare: 0x3382, - muchgreater: 0x226B, - muchless: 0x226A, - mufsquare: 0x338C, - mugreek: 0x03BC, - mugsquare: 0x338D, - muhiragana: 0x3080, - mukatakana: 0x30E0, - mukatakanahalfwidth: 0xFF91, - mulsquare: 0x3395, - multiply: 0x00D7, - mumsquare: 0x339B, - munahhebrew: 0x05A3, - munahlefthebrew: 0x05A3, - musicalnote: 0x266A, - musicalnotedbl: 0x266B, - musicflatsign: 0x266D, - musicsharpsign: 0x266F, - mussquare: 0x33B2, - muvsquare: 0x33B6, - muwsquare: 0x33BC, - mvmegasquare: 0x33B9, - mvsquare: 0x33B7, - mwmegasquare: 0x33BF, - mwsquare: 0x33BD, - n: 0x006E, - nabengali: 0x09A8, - nabla: 0x2207, - nacute: 0x0144, - nadeva: 0x0928, - nagujarati: 0x0AA8, - nagurmukhi: 0x0A28, - nahiragana: 0x306A, - nakatakana: 0x30CA, - nakatakanahalfwidth: 0xFF85, - napostrophe: 0x0149, - nasquare: 0x3381, - nbopomofo: 0x310B, - nbspace: 0x00A0, - ncaron: 0x0148, - ncedilla: 0x0146, - ncircle: 0x24DD, - ncircumflexbelow: 0x1E4B, - ncommaaccent: 0x0146, - ndotaccent: 0x1E45, - ndotbelow: 0x1E47, - nehiragana: 0x306D, - nekatakana: 0x30CD, - nekatakanahalfwidth: 0xFF88, - newsheqelsign: 0x20AA, - nfsquare: 0x338B, - ngabengali: 0x0999, - ngadeva: 0x0919, - ngagujarati: 0x0A99, - ngagurmukhi: 0x0A19, - ngonguthai: 0x0E07, - nhiragana: 0x3093, - nhookleft: 0x0272, - nhookretroflex: 0x0273, - nieunacirclekorean: 0x326F, - nieunaparenkorean: 0x320F, - nieuncieuckorean: 0x3135, - nieuncirclekorean: 0x3261, - nieunhieuhkorean: 0x3136, - nieunkorean: 0x3134, - nieunpansioskorean: 0x3168, - nieunparenkorean: 0x3201, - nieunsioskorean: 0x3167, - nieuntikeutkorean: 0x3166, - nihiragana: 0x306B, - nikatakana: 0x30CB, - nikatakanahalfwidth: 0xFF86, - nikhahitleftthai: 0xF899, - nikhahitthai: 0x0E4D, - nine: 0x0039, - ninearabic: 0x0669, - ninebengali: 0x09EF, - ninecircle: 0x2468, - ninecircleinversesansserif: 0x2792, - ninedeva: 0x096F, - ninegujarati: 0x0AEF, - ninegurmukhi: 0x0A6F, - ninehackarabic: 0x0669, - ninehangzhou: 0x3029, - nineideographicparen: 0x3228, - nineinferior: 0x2089, - ninemonospace: 0xFF19, - nineoldstyle: 0xF739, - nineparen: 0x247C, - nineperiod: 0x2490, - ninepersian: 0x06F9, - nineroman: 0x2178, - ninesuperior: 0x2079, - nineteencircle: 0x2472, - nineteenparen: 0x2486, - nineteenperiod: 0x249A, - ninethai: 0x0E59, - nj: 0x01CC, - njecyrillic: 0x045A, - nkatakana: 0x30F3, - nkatakanahalfwidth: 0xFF9D, - nlegrightlong: 0x019E, - nlinebelow: 0x1E49, - nmonospace: 0xFF4E, - nmsquare: 0x339A, - nnabengali: 0x09A3, - nnadeva: 0x0923, - nnagujarati: 0x0AA3, - nnagurmukhi: 0x0A23, - nnnadeva: 0x0929, - nohiragana: 0x306E, - nokatakana: 0x30CE, - nokatakanahalfwidth: 0xFF89, - nonbreakingspace: 0x00A0, - nonenthai: 0x0E13, - nonuthai: 0x0E19, - noonarabic: 0x0646, - noonfinalarabic: 0xFEE6, - noonghunnaarabic: 0x06BA, - noonghunnafinalarabic: 0xFB9F, - nooninitialarabic: 0xFEE7, - noonjeeminitialarabic: 0xFCD2, - noonjeemisolatedarabic: 0xFC4B, - noonmedialarabic: 0xFEE8, - noonmeeminitialarabic: 0xFCD5, - noonmeemisolatedarabic: 0xFC4E, - noonnoonfinalarabic: 0xFC8D, - notcontains: 0x220C, - notelement: 0x2209, - notelementof: 0x2209, - notequal: 0x2260, - notgreater: 0x226F, - notgreaternorequal: 0x2271, - notgreaternorless: 0x2279, - notidentical: 0x2262, - notless: 0x226E, - notlessnorequal: 0x2270, - notparallel: 0x2226, - notprecedes: 0x2280, - notsubset: 0x2284, - notsucceeds: 0x2281, - notsuperset: 0x2285, - nowarmenian: 0x0576, - nparen: 0x24A9, - nssquare: 0x33B1, - nsuperior: 0x207F, - ntilde: 0x00F1, - nu: 0x03BD, - nuhiragana: 0x306C, - nukatakana: 0x30CC, - nukatakanahalfwidth: 0xFF87, - nuktabengali: 0x09BC, - nuktadeva: 0x093C, - nuktagujarati: 0x0ABC, - nuktagurmukhi: 0x0A3C, - numbersign: 0x0023, - numbersignmonospace: 0xFF03, - numbersignsmall: 0xFE5F, - numeralsigngreek: 0x0374, - numeralsignlowergreek: 0x0375, - numero: 0x2116, - nun: 0x05E0, - nundagesh: 0xFB40, - nundageshhebrew: 0xFB40, - nunhebrew: 0x05E0, - nvsquare: 0x33B5, - nwsquare: 0x33BB, - nyabengali: 0x099E, - nyadeva: 0x091E, - nyagujarati: 0x0A9E, - nyagurmukhi: 0x0A1E, - o: 0x006F, - oacute: 0x00F3, - oangthai: 0x0E2D, - obarred: 0x0275, - obarredcyrillic: 0x04E9, - obarreddieresiscyrillic: 0x04EB, - obengali: 0x0993, - obopomofo: 0x311B, - obreve: 0x014F, - ocandradeva: 0x0911, - ocandragujarati: 0x0A91, - ocandravowelsigndeva: 0x0949, - ocandravowelsigngujarati: 0x0AC9, - ocaron: 0x01D2, - ocircle: 0x24DE, - ocircumflex: 0x00F4, - ocircumflexacute: 0x1ED1, - ocircumflexdotbelow: 0x1ED9, - ocircumflexgrave: 0x1ED3, - ocircumflexhookabove: 0x1ED5, - ocircumflextilde: 0x1ED7, - ocyrillic: 0x043E, - odblacute: 0x0151, - odblgrave: 0x020D, - odeva: 0x0913, - odieresis: 0x00F6, - odieresiscyrillic: 0x04E7, - odotbelow: 0x1ECD, - oe: 0x0153, - oekorean: 0x315A, - ogonek: 0x02DB, - ogonekcmb: 0x0328, - ograve: 0x00F2, - ogujarati: 0x0A93, - oharmenian: 0x0585, - ohiragana: 0x304A, - ohookabove: 0x1ECF, - ohorn: 0x01A1, - ohornacute: 0x1EDB, - ohorndotbelow: 0x1EE3, - ohorngrave: 0x1EDD, - ohornhookabove: 0x1EDF, - ohorntilde: 0x1EE1, - ohungarumlaut: 0x0151, - oi: 0x01A3, - oinvertedbreve: 0x020F, - okatakana: 0x30AA, - okatakanahalfwidth: 0xFF75, - okorean: 0x3157, - olehebrew: 0x05AB, - omacron: 0x014D, - omacronacute: 0x1E53, - omacrongrave: 0x1E51, - omdeva: 0x0950, - omega: 0x03C9, - omega1: 0x03D6, - omegacyrillic: 0x0461, - omegalatinclosed: 0x0277, - omegaroundcyrillic: 0x047B, - omegatitlocyrillic: 0x047D, - omegatonos: 0x03CE, - omgujarati: 0x0AD0, - omicron: 0x03BF, - omicrontonos: 0x03CC, - omonospace: 0xFF4F, - one: 0x0031, - onearabic: 0x0661, - onebengali: 0x09E7, - onecircle: 0x2460, - onecircleinversesansserif: 0x278A, - onedeva: 0x0967, - onedotenleader: 0x2024, - oneeighth: 0x215B, - onefitted: 0xF6DC, - onegujarati: 0x0AE7, - onegurmukhi: 0x0A67, - onehackarabic: 0x0661, - onehalf: 0x00BD, - onehangzhou: 0x3021, - oneideographicparen: 0x3220, - oneinferior: 0x2081, - onemonospace: 0xFF11, - onenumeratorbengali: 0x09F4, - oneoldstyle: 0xF731, - oneparen: 0x2474, - oneperiod: 0x2488, - onepersian: 0x06F1, - onequarter: 0x00BC, - oneroman: 0x2170, - onesuperior: 0x00B9, - onethai: 0x0E51, - onethird: 0x2153, - oogonek: 0x01EB, - oogonekmacron: 0x01ED, - oogurmukhi: 0x0A13, - oomatragurmukhi: 0x0A4B, - oopen: 0x0254, - oparen: 0x24AA, - openbullet: 0x25E6, - option: 0x2325, - ordfeminine: 0x00AA, - ordmasculine: 0x00BA, - orthogonal: 0x221F, - oshortdeva: 0x0912, - oshortvowelsigndeva: 0x094A, - oslash: 0x00F8, - oslashacute: 0x01FF, - osmallhiragana: 0x3049, - osmallkatakana: 0x30A9, - osmallkatakanahalfwidth: 0xFF6B, - ostrokeacute: 0x01FF, - osuperior: 0xF6F0, - otcyrillic: 0x047F, - otilde: 0x00F5, - otildeacute: 0x1E4D, - otildedieresis: 0x1E4F, - oubopomofo: 0x3121, - overline: 0x203E, - overlinecenterline: 0xFE4A, - overlinecmb: 0x0305, - overlinedashed: 0xFE49, - overlinedblwavy: 0xFE4C, - overlinewavy: 0xFE4B, - overscore: 0x00AF, - ovowelsignbengali: 0x09CB, - ovowelsigndeva: 0x094B, - ovowelsigngujarati: 0x0ACB, - p: 0x0070, - paampssquare: 0x3380, - paasentosquare: 0x332B, - pabengali: 0x09AA, - pacute: 0x1E55, - padeva: 0x092A, - pagedown: 0x21DF, - pageup: 0x21DE, - pagujarati: 0x0AAA, - pagurmukhi: 0x0A2A, - pahiragana: 0x3071, - paiyannoithai: 0x0E2F, - pakatakana: 0x30D1, - palatalizationcyrilliccmb: 0x0484, - palochkacyrillic: 0x04C0, - pansioskorean: 0x317F, - paragraph: 0x00B6, - parallel: 0x2225, - parenleft: 0x0028, - parenleftaltonearabic: 0xFD3E, - parenleftbt: 0xF8ED, - parenleftex: 0xF8EC, - parenleftinferior: 0x208D, - parenleftmonospace: 0xFF08, - parenleftsmall: 0xFE59, - parenleftsuperior: 0x207D, - parenlefttp: 0xF8EB, - parenleftvertical: 0xFE35, - parenright: 0x0029, - parenrightaltonearabic: 0xFD3F, - parenrightbt: 0xF8F8, - parenrightex: 0xF8F7, - parenrightinferior: 0x208E, - parenrightmonospace: 0xFF09, - parenrightsmall: 0xFE5A, - parenrightsuperior: 0x207E, - parenrighttp: 0xF8F6, - parenrightvertical: 0xFE36, - partialdiff: 0x2202, - paseqhebrew: 0x05C0, - pashtahebrew: 0x0599, - pasquare: 0x33A9, - patah: 0x05B7, - patah11: 0x05B7, - patah1d: 0x05B7, - patah2a: 0x05B7, - patahhebrew: 0x05B7, - patahnarrowhebrew: 0x05B7, - patahquarterhebrew: 0x05B7, - patahwidehebrew: 0x05B7, - pazerhebrew: 0x05A1, - pbopomofo: 0x3106, - pcircle: 0x24DF, - pdotaccent: 0x1E57, - pe: 0x05E4, - pecyrillic: 0x043F, - pedagesh: 0xFB44, - pedageshhebrew: 0xFB44, - peezisquare: 0x333B, - pefinaldageshhebrew: 0xFB43, - peharabic: 0x067E, - peharmenian: 0x057A, - pehebrew: 0x05E4, - pehfinalarabic: 0xFB57, - pehinitialarabic: 0xFB58, - pehiragana: 0x307A, - pehmedialarabic: 0xFB59, - pekatakana: 0x30DA, - pemiddlehookcyrillic: 0x04A7, - perafehebrew: 0xFB4E, - percent: 0x0025, - percentarabic: 0x066A, - percentmonospace: 0xFF05, - percentsmall: 0xFE6A, - period: 0x002E, - periodarmenian: 0x0589, - periodcentered: 0x00B7, - periodhalfwidth: 0xFF61, - periodinferior: 0xF6E7, - periodmonospace: 0xFF0E, - periodsmall: 0xFE52, - periodsuperior: 0xF6E8, - perispomenigreekcmb: 0x0342, - perpendicular: 0x22A5, - perthousand: 0x2030, - peseta: 0x20A7, - pfsquare: 0x338A, - phabengali: 0x09AB, - phadeva: 0x092B, - phagujarati: 0x0AAB, - phagurmukhi: 0x0A2B, - phi: 0x03C6, - phi1: 0x03D5, - phieuphacirclekorean: 0x327A, - phieuphaparenkorean: 0x321A, - phieuphcirclekorean: 0x326C, - phieuphkorean: 0x314D, - phieuphparenkorean: 0x320C, - philatin: 0x0278, - phinthuthai: 0x0E3A, - phisymbolgreek: 0x03D5, - phook: 0x01A5, - phophanthai: 0x0E1E, - phophungthai: 0x0E1C, - phosamphaothai: 0x0E20, - pi: 0x03C0, - pieupacirclekorean: 0x3273, - pieupaparenkorean: 0x3213, - pieupcieuckorean: 0x3176, - pieupcirclekorean: 0x3265, - pieupkiyeokkorean: 0x3172, - pieupkorean: 0x3142, - pieupparenkorean: 0x3205, - pieupsioskiyeokkorean: 0x3174, - pieupsioskorean: 0x3144, - pieupsiostikeutkorean: 0x3175, - pieupthieuthkorean: 0x3177, - pieuptikeutkorean: 0x3173, - pihiragana: 0x3074, - pikatakana: 0x30D4, - pisymbolgreek: 0x03D6, - piwrarmenian: 0x0583, - plus: 0x002B, - plusbelowcmb: 0x031F, - pluscircle: 0x2295, - plusminus: 0x00B1, - plusmod: 0x02D6, - plusmonospace: 0xFF0B, - plussmall: 0xFE62, - plussuperior: 0x207A, - pmonospace: 0xFF50, - pmsquare: 0x33D8, - pohiragana: 0x307D, - pointingindexdownwhite: 0x261F, - pointingindexleftwhite: 0x261C, - pointingindexrightwhite: 0x261E, - pointingindexupwhite: 0x261D, - pokatakana: 0x30DD, - poplathai: 0x0E1B, - postalmark: 0x3012, - postalmarkface: 0x3020, - pparen: 0x24AB, - precedes: 0x227A, - prescription: 0x211E, - primemod: 0x02B9, - primereversed: 0x2035, - product: 0x220F, - projective: 0x2305, - prolongedkana: 0x30FC, - propellor: 0x2318, - propersubset: 0x2282, - propersuperset: 0x2283, - proportion: 0x2237, - proportional: 0x221D, - psi: 0x03C8, - psicyrillic: 0x0471, - psilipneumatacyrilliccmb: 0x0486, - pssquare: 0x33B0, - puhiragana: 0x3077, - pukatakana: 0x30D7, - pvsquare: 0x33B4, - pwsquare: 0x33BA, - q: 0x0071, - qadeva: 0x0958, - qadmahebrew: 0x05A8, - qafarabic: 0x0642, - qaffinalarabic: 0xFED6, - qafinitialarabic: 0xFED7, - qafmedialarabic: 0xFED8, - qamats: 0x05B8, - qamats10: 0x05B8, - qamats1a: 0x05B8, - qamats1c: 0x05B8, - qamats27: 0x05B8, - qamats29: 0x05B8, - qamats33: 0x05B8, - qamatsde: 0x05B8, - qamatshebrew: 0x05B8, - qamatsnarrowhebrew: 0x05B8, - qamatsqatanhebrew: 0x05B8, - qamatsqatannarrowhebrew: 0x05B8, - qamatsqatanquarterhebrew: 0x05B8, - qamatsqatanwidehebrew: 0x05B8, - qamatsquarterhebrew: 0x05B8, - qamatswidehebrew: 0x05B8, - qarneyparahebrew: 0x059F, - qbopomofo: 0x3111, - qcircle: 0x24E0, - qhook: 0x02A0, - qmonospace: 0xFF51, - qof: 0x05E7, - qofdagesh: 0xFB47, - qofdageshhebrew: 0xFB47, - qofhebrew: 0x05E7, - qparen: 0x24AC, - quarternote: 0x2669, - qubuts: 0x05BB, - qubuts18: 0x05BB, - qubuts25: 0x05BB, - qubuts31: 0x05BB, - qubutshebrew: 0x05BB, - qubutsnarrowhebrew: 0x05BB, - qubutsquarterhebrew: 0x05BB, - qubutswidehebrew: 0x05BB, - question: 0x003F, - questionarabic: 0x061F, - questionarmenian: 0x055E, - questiondown: 0x00BF, - questiondownsmall: 0xF7BF, - questiongreek: 0x037E, - questionmonospace: 0xFF1F, - questionsmall: 0xF73F, - quotedbl: 0x0022, - quotedblbase: 0x201E, - quotedblleft: 0x201C, - quotedblmonospace: 0xFF02, - quotedblprime: 0x301E, - quotedblprimereversed: 0x301D, - quotedblright: 0x201D, - quoteleft: 0x2018, - quoteleftreversed: 0x201B, - quotereversed: 0x201B, - quoteright: 0x2019, - quoterightn: 0x0149, - quotesinglbase: 0x201A, - quotesingle: 0x0027, - quotesinglemonospace: 0xFF07, - r: 0x0072, - raarmenian: 0x057C, - rabengali: 0x09B0, - racute: 0x0155, - radeva: 0x0930, - radical: 0x221A, - radicalex: 0xF8E5, - radoverssquare: 0x33AE, - radoverssquaredsquare: 0x33AF, - radsquare: 0x33AD, - rafe: 0x05BF, - rafehebrew: 0x05BF, - ragujarati: 0x0AB0, - ragurmukhi: 0x0A30, - rahiragana: 0x3089, - rakatakana: 0x30E9, - rakatakanahalfwidth: 0xFF97, - ralowerdiagonalbengali: 0x09F1, - ramiddlediagonalbengali: 0x09F0, - ramshorn: 0x0264, - ratio: 0x2236, - rbopomofo: 0x3116, - rcaron: 0x0159, - rcedilla: 0x0157, - rcircle: 0x24E1, - rcommaaccent: 0x0157, - rdblgrave: 0x0211, - rdotaccent: 0x1E59, - rdotbelow: 0x1E5B, - rdotbelowmacron: 0x1E5D, - referencemark: 0x203B, - reflexsubset: 0x2286, - reflexsuperset: 0x2287, - registered: 0x00AE, - registersans: 0xF8E8, - registerserif: 0xF6DA, - reharabic: 0x0631, - reharmenian: 0x0580, - rehfinalarabic: 0xFEAE, - rehiragana: 0x308C, - rekatakana: 0x30EC, - rekatakanahalfwidth: 0xFF9A, - resh: 0x05E8, - reshdageshhebrew: 0xFB48, - reshhebrew: 0x05E8, - reversedtilde: 0x223D, - reviahebrew: 0x0597, - reviamugrashhebrew: 0x0597, - revlogicalnot: 0x2310, - rfishhook: 0x027E, - rfishhookreversed: 0x027F, - rhabengali: 0x09DD, - rhadeva: 0x095D, - rho: 0x03C1, - rhook: 0x027D, - rhookturned: 0x027B, - rhookturnedsuperior: 0x02B5, - rhosymbolgreek: 0x03F1, - rhotichookmod: 0x02DE, - rieulacirclekorean: 0x3271, - rieulaparenkorean: 0x3211, - rieulcirclekorean: 0x3263, - rieulhieuhkorean: 0x3140, - rieulkiyeokkorean: 0x313A, - rieulkiyeoksioskorean: 0x3169, - rieulkorean: 0x3139, - rieulmieumkorean: 0x313B, - rieulpansioskorean: 0x316C, - rieulparenkorean: 0x3203, - rieulphieuphkorean: 0x313F, - rieulpieupkorean: 0x313C, - rieulpieupsioskorean: 0x316B, - rieulsioskorean: 0x313D, - rieulthieuthkorean: 0x313E, - rieultikeutkorean: 0x316A, - rieulyeorinhieuhkorean: 0x316D, - rightangle: 0x221F, - righttackbelowcmb: 0x0319, - righttriangle: 0x22BF, - rihiragana: 0x308A, - rikatakana: 0x30EA, - rikatakanahalfwidth: 0xFF98, - ring: 0x02DA, - ringbelowcmb: 0x0325, - ringcmb: 0x030A, - ringhalfleft: 0x02BF, - ringhalfleftarmenian: 0x0559, - ringhalfleftbelowcmb: 0x031C, - ringhalfleftcentered: 0x02D3, - ringhalfright: 0x02BE, - ringhalfrightbelowcmb: 0x0339, - ringhalfrightcentered: 0x02D2, - rinvertedbreve: 0x0213, - rittorusquare: 0x3351, - rlinebelow: 0x1E5F, - rlongleg: 0x027C, - rlonglegturned: 0x027A, - rmonospace: 0xFF52, - rohiragana: 0x308D, - rokatakana: 0x30ED, - rokatakanahalfwidth: 0xFF9B, - roruathai: 0x0E23, - rparen: 0x24AD, - rrabengali: 0x09DC, - rradeva: 0x0931, - rragurmukhi: 0x0A5C, - rreharabic: 0x0691, - rrehfinalarabic: 0xFB8D, - rrvocalicbengali: 0x09E0, - rrvocalicdeva: 0x0960, - rrvocalicgujarati: 0x0AE0, - rrvocalicvowelsignbengali: 0x09C4, - rrvocalicvowelsigndeva: 0x0944, - rrvocalicvowelsigngujarati: 0x0AC4, - rsuperior: 0xF6F1, - rtblock: 0x2590, - rturned: 0x0279, - rturnedsuperior: 0x02B4, - ruhiragana: 0x308B, - rukatakana: 0x30EB, - rukatakanahalfwidth: 0xFF99, - rupeemarkbengali: 0x09F2, - rupeesignbengali: 0x09F3, - rupiah: 0xF6DD, - ruthai: 0x0E24, - rvocalicbengali: 0x098B, - rvocalicdeva: 0x090B, - rvocalicgujarati: 0x0A8B, - rvocalicvowelsignbengali: 0x09C3, - rvocalicvowelsigndeva: 0x0943, - rvocalicvowelsigngujarati: 0x0AC3, - s: 0x0073, - sabengali: 0x09B8, - sacute: 0x015B, - sacutedotaccent: 0x1E65, - sadarabic: 0x0635, - sadeva: 0x0938, - sadfinalarabic: 0xFEBA, - sadinitialarabic: 0xFEBB, - sadmedialarabic: 0xFEBC, - sagujarati: 0x0AB8, - sagurmukhi: 0x0A38, - sahiragana: 0x3055, - sakatakana: 0x30B5, - sakatakanahalfwidth: 0xFF7B, - sallallahoualayhewasallamarabic: 0xFDFA, - samekh: 0x05E1, - samekhdagesh: 0xFB41, - samekhdageshhebrew: 0xFB41, - samekhhebrew: 0x05E1, - saraaathai: 0x0E32, - saraaethai: 0x0E41, - saraaimaimalaithai: 0x0E44, - saraaimaimuanthai: 0x0E43, - saraamthai: 0x0E33, - saraathai: 0x0E30, - saraethai: 0x0E40, - saraiileftthai: 0xF886, - saraiithai: 0x0E35, - saraileftthai: 0xF885, - saraithai: 0x0E34, - saraothai: 0x0E42, - saraueeleftthai: 0xF888, - saraueethai: 0x0E37, - saraueleftthai: 0xF887, - sarauethai: 0x0E36, - sarauthai: 0x0E38, - sarauuthai: 0x0E39, - sbopomofo: 0x3119, - scaron: 0x0161, - scarondotaccent: 0x1E67, - scedilla: 0x015F, - schwa: 0x0259, - schwacyrillic: 0x04D9, - schwadieresiscyrillic: 0x04DB, - schwahook: 0x025A, - scircle: 0x24E2, - scircumflex: 0x015D, - scommaaccent: 0x0219, - sdotaccent: 0x1E61, - sdotbelow: 0x1E63, - sdotbelowdotaccent: 0x1E69, - seagullbelowcmb: 0x033C, - second: 0x2033, - secondtonechinese: 0x02CA, - section: 0x00A7, - seenarabic: 0x0633, - seenfinalarabic: 0xFEB2, - seeninitialarabic: 0xFEB3, - seenmedialarabic: 0xFEB4, - segol: 0x05B6, - segol13: 0x05B6, - segol1f: 0x05B6, - segol2c: 0x05B6, - segolhebrew: 0x05B6, - segolnarrowhebrew: 0x05B6, - segolquarterhebrew: 0x05B6, - segoltahebrew: 0x0592, - segolwidehebrew: 0x05B6, - seharmenian: 0x057D, - sehiragana: 0x305B, - sekatakana: 0x30BB, - sekatakanahalfwidth: 0xFF7E, - semicolon: 0x003B, - semicolonarabic: 0x061B, - semicolonmonospace: 0xFF1B, - semicolonsmall: 0xFE54, - semivoicedmarkkana: 0x309C, - semivoicedmarkkanahalfwidth: 0xFF9F, - sentisquare: 0x3322, - sentosquare: 0x3323, - seven: 0x0037, - sevenarabic: 0x0667, - sevenbengali: 0x09ED, - sevencircle: 0x2466, - sevencircleinversesansserif: 0x2790, - sevendeva: 0x096D, - seveneighths: 0x215E, - sevengujarati: 0x0AED, - sevengurmukhi: 0x0A6D, - sevenhackarabic: 0x0667, - sevenhangzhou: 0x3027, - sevenideographicparen: 0x3226, - seveninferior: 0x2087, - sevenmonospace: 0xFF17, - sevenoldstyle: 0xF737, - sevenparen: 0x247A, - sevenperiod: 0x248E, - sevenpersian: 0x06F7, - sevenroman: 0x2176, - sevensuperior: 0x2077, - seventeencircle: 0x2470, - seventeenparen: 0x2484, - seventeenperiod: 0x2498, - seventhai: 0x0E57, - sfthyphen: 0x00AD, - shaarmenian: 0x0577, - shabengali: 0x09B6, - shacyrillic: 0x0448, - shaddaarabic: 0x0651, - shaddadammaarabic: 0xFC61, - shaddadammatanarabic: 0xFC5E, - shaddafathaarabic: 0xFC60, - shaddakasraarabic: 0xFC62, - shaddakasratanarabic: 0xFC5F, - shade: 0x2592, - shadedark: 0x2593, - shadelight: 0x2591, - shademedium: 0x2592, - shadeva: 0x0936, - shagujarati: 0x0AB6, - shagurmukhi: 0x0A36, - shalshelethebrew: 0x0593, - shbopomofo: 0x3115, - shchacyrillic: 0x0449, - sheenarabic: 0x0634, - sheenfinalarabic: 0xFEB6, - sheeninitialarabic: 0xFEB7, - sheenmedialarabic: 0xFEB8, - sheicoptic: 0x03E3, - sheqel: 0x20AA, - sheqelhebrew: 0x20AA, - sheva: 0x05B0, - sheva115: 0x05B0, - sheva15: 0x05B0, - sheva22: 0x05B0, - sheva2e: 0x05B0, - shevahebrew: 0x05B0, - shevanarrowhebrew: 0x05B0, - shevaquarterhebrew: 0x05B0, - shevawidehebrew: 0x05B0, - shhacyrillic: 0x04BB, - shimacoptic: 0x03ED, - shin: 0x05E9, - shindagesh: 0xFB49, - shindageshhebrew: 0xFB49, - shindageshshindot: 0xFB2C, - shindageshshindothebrew: 0xFB2C, - shindageshsindot: 0xFB2D, - shindageshsindothebrew: 0xFB2D, - shindothebrew: 0x05C1, - shinhebrew: 0x05E9, - shinshindot: 0xFB2A, - shinshindothebrew: 0xFB2A, - shinsindot: 0xFB2B, - shinsindothebrew: 0xFB2B, - shook: 0x0282, - sigma: 0x03C3, - sigma1: 0x03C2, - sigmafinal: 0x03C2, - sigmalunatesymbolgreek: 0x03F2, - sihiragana: 0x3057, - sikatakana: 0x30B7, - sikatakanahalfwidth: 0xFF7C, - siluqhebrew: 0x05BD, - siluqlefthebrew: 0x05BD, - similar: 0x223C, - sindothebrew: 0x05C2, - siosacirclekorean: 0x3274, - siosaparenkorean: 0x3214, - sioscieuckorean: 0x317E, - sioscirclekorean: 0x3266, - sioskiyeokkorean: 0x317A, - sioskorean: 0x3145, - siosnieunkorean: 0x317B, - siosparenkorean: 0x3206, - siospieupkorean: 0x317D, - siostikeutkorean: 0x317C, - six: 0x0036, - sixarabic: 0x0666, - sixbengali: 0x09EC, - sixcircle: 0x2465, - sixcircleinversesansserif: 0x278F, - sixdeva: 0x096C, - sixgujarati: 0x0AEC, - sixgurmukhi: 0x0A6C, - sixhackarabic: 0x0666, - sixhangzhou: 0x3026, - sixideographicparen: 0x3225, - sixinferior: 0x2086, - sixmonospace: 0xFF16, - sixoldstyle: 0xF736, - sixparen: 0x2479, - sixperiod: 0x248D, - sixpersian: 0x06F6, - sixroman: 0x2175, - sixsuperior: 0x2076, - sixteencircle: 0x246F, - sixteencurrencydenominatorbengali: 0x09F9, - sixteenparen: 0x2483, - sixteenperiod: 0x2497, - sixthai: 0x0E56, - slash: 0x002F, - slashmonospace: 0xFF0F, - slong: 0x017F, - slongdotaccent: 0x1E9B, - smileface: 0x263A, - smonospace: 0xFF53, - sofpasuqhebrew: 0x05C3, - softhyphen: 0x00AD, - softsigncyrillic: 0x044C, - sohiragana: 0x305D, - sokatakana: 0x30BD, - sokatakanahalfwidth: 0xFF7F, - soliduslongoverlaycmb: 0x0338, - solidusshortoverlaycmb: 0x0337, - sorusithai: 0x0E29, - sosalathai: 0x0E28, - sosothai: 0x0E0B, - sosuathai: 0x0E2A, - space: 0x0020, - spacehackarabic: 0x0020, - spade: 0x2660, - spadesuitblack: 0x2660, - spadesuitwhite: 0x2664, - sparen: 0x24AE, - squarebelowcmb: 0x033B, - squarecc: 0x33C4, - squarecm: 0x339D, - squarediagonalcrosshatchfill: 0x25A9, - squarehorizontalfill: 0x25A4, - squarekg: 0x338F, - squarekm: 0x339E, - squarekmcapital: 0x33CE, - squareln: 0x33D1, - squarelog: 0x33D2, - squaremg: 0x338E, - squaremil: 0x33D5, - squaremm: 0x339C, - squaremsquared: 0x33A1, - squareorthogonalcrosshatchfill: 0x25A6, - squareupperlefttolowerrightfill: 0x25A7, - squareupperrighttolowerleftfill: 0x25A8, - squareverticalfill: 0x25A5, - squarewhitewithsmallblack: 0x25A3, - srsquare: 0x33DB, - ssabengali: 0x09B7, - ssadeva: 0x0937, - ssagujarati: 0x0AB7, - ssangcieuckorean: 0x3149, - ssanghieuhkorean: 0x3185, - ssangieungkorean: 0x3180, - ssangkiyeokkorean: 0x3132, - ssangnieunkorean: 0x3165, - ssangpieupkorean: 0x3143, - ssangsioskorean: 0x3146, - ssangtikeutkorean: 0x3138, - ssuperior: 0xF6F2, - sterling: 0x00A3, - sterlingmonospace: 0xFFE1, - strokelongoverlaycmb: 0x0336, - strokeshortoverlaycmb: 0x0335, - subset: 0x2282, - subsetnotequal: 0x228A, - subsetorequal: 0x2286, - succeeds: 0x227B, - suchthat: 0x220B, - suhiragana: 0x3059, - sukatakana: 0x30B9, - sukatakanahalfwidth: 0xFF7D, - sukunarabic: 0x0652, - summation: 0x2211, - sun: 0x263C, - superset: 0x2283, - supersetnotequal: 0x228B, - supersetorequal: 0x2287, - svsquare: 0x33DC, - syouwaerasquare: 0x337C, - t: 0x0074, - tabengali: 0x09A4, - tackdown: 0x22A4, - tackleft: 0x22A3, - tadeva: 0x0924, - tagujarati: 0x0AA4, - tagurmukhi: 0x0A24, - taharabic: 0x0637, - tahfinalarabic: 0xFEC2, - tahinitialarabic: 0xFEC3, - tahiragana: 0x305F, - tahmedialarabic: 0xFEC4, - taisyouerasquare: 0x337D, - takatakana: 0x30BF, - takatakanahalfwidth: 0xFF80, - tatweelarabic: 0x0640, - tau: 0x03C4, - tav: 0x05EA, - tavdages: 0xFB4A, - tavdagesh: 0xFB4A, - tavdageshhebrew: 0xFB4A, - tavhebrew: 0x05EA, - tbar: 0x0167, - tbopomofo: 0x310A, - tcaron: 0x0165, - tccurl: 0x02A8, - tcedilla: 0x0163, - tcheharabic: 0x0686, - tchehfinalarabic: 0xFB7B, - tchehinitialarabic: 0xFB7C, - tchehmedialarabic: 0xFB7D, - tcircle: 0x24E3, - tcircumflexbelow: 0x1E71, - tcommaaccent: 0x0163, - tdieresis: 0x1E97, - tdotaccent: 0x1E6B, - tdotbelow: 0x1E6D, - tecyrillic: 0x0442, - tedescendercyrillic: 0x04AD, - teharabic: 0x062A, - tehfinalarabic: 0xFE96, - tehhahinitialarabic: 0xFCA2, - tehhahisolatedarabic: 0xFC0C, - tehinitialarabic: 0xFE97, - tehiragana: 0x3066, - tehjeeminitialarabic: 0xFCA1, - tehjeemisolatedarabic: 0xFC0B, - tehmarbutaarabic: 0x0629, - tehmarbutafinalarabic: 0xFE94, - tehmedialarabic: 0xFE98, - tehmeeminitialarabic: 0xFCA4, - tehmeemisolatedarabic: 0xFC0E, - tehnoonfinalarabic: 0xFC73, - tekatakana: 0x30C6, - tekatakanahalfwidth: 0xFF83, - telephone: 0x2121, - telephoneblack: 0x260E, - telishagedolahebrew: 0x05A0, - telishaqetanahebrew: 0x05A9, - tencircle: 0x2469, - tenideographicparen: 0x3229, - tenparen: 0x247D, - tenperiod: 0x2491, - tenroman: 0x2179, - tesh: 0x02A7, - tet: 0x05D8, - tetdagesh: 0xFB38, - tetdageshhebrew: 0xFB38, - tethebrew: 0x05D8, - tetsecyrillic: 0x04B5, - tevirhebrew: 0x059B, - tevirlefthebrew: 0x059B, - thabengali: 0x09A5, - thadeva: 0x0925, - thagujarati: 0x0AA5, - thagurmukhi: 0x0A25, - thalarabic: 0x0630, - thalfinalarabic: 0xFEAC, - thanthakhatlowleftthai: 0xF898, - thanthakhatlowrightthai: 0xF897, - thanthakhatthai: 0x0E4C, - thanthakhatupperleftthai: 0xF896, - theharabic: 0x062B, - thehfinalarabic: 0xFE9A, - thehinitialarabic: 0xFE9B, - thehmedialarabic: 0xFE9C, - thereexists: 0x2203, - therefore: 0x2234, - theta: 0x03B8, - theta1: 0x03D1, - thetasymbolgreek: 0x03D1, - thieuthacirclekorean: 0x3279, - thieuthaparenkorean: 0x3219, - thieuthcirclekorean: 0x326B, - thieuthkorean: 0x314C, - thieuthparenkorean: 0x320B, - thirteencircle: 0x246C, - thirteenparen: 0x2480, - thirteenperiod: 0x2494, - thonangmonthothai: 0x0E11, - thook: 0x01AD, - thophuthaothai: 0x0E12, - thorn: 0x00FE, - thothahanthai: 0x0E17, - thothanthai: 0x0E10, - thothongthai: 0x0E18, - thothungthai: 0x0E16, - thousandcyrillic: 0x0482, - thousandsseparatorarabic: 0x066C, - thousandsseparatorpersian: 0x066C, - three: 0x0033, - threearabic: 0x0663, - threebengali: 0x09E9, - threecircle: 0x2462, - threecircleinversesansserif: 0x278C, - threedeva: 0x0969, - threeeighths: 0x215C, - threegujarati: 0x0AE9, - threegurmukhi: 0x0A69, - threehackarabic: 0x0663, - threehangzhou: 0x3023, - threeideographicparen: 0x3222, - threeinferior: 0x2083, - threemonospace: 0xFF13, - threenumeratorbengali: 0x09F6, - threeoldstyle: 0xF733, - threeparen: 0x2476, - threeperiod: 0x248A, - threepersian: 0x06F3, - threequarters: 0x00BE, - threequartersemdash: 0xF6DE, - threeroman: 0x2172, - threesuperior: 0x00B3, - threethai: 0x0E53, - thzsquare: 0x3394, - tihiragana: 0x3061, - tikatakana: 0x30C1, - tikatakanahalfwidth: 0xFF81, - tikeutacirclekorean: 0x3270, - tikeutaparenkorean: 0x3210, - tikeutcirclekorean: 0x3262, - tikeutkorean: 0x3137, - tikeutparenkorean: 0x3202, - tilde: 0x02DC, - tildebelowcmb: 0x0330, - tildecmb: 0x0303, - tildecomb: 0x0303, - tildedoublecmb: 0x0360, - tildeoperator: 0x223C, - tildeoverlaycmb: 0x0334, - tildeverticalcmb: 0x033E, - timescircle: 0x2297, - tipehahebrew: 0x0596, - tipehalefthebrew: 0x0596, - tippigurmukhi: 0x0A70, - titlocyrilliccmb: 0x0483, - tiwnarmenian: 0x057F, - tlinebelow: 0x1E6F, - tmonospace: 0xFF54, - toarmenian: 0x0569, - tohiragana: 0x3068, - tokatakana: 0x30C8, - tokatakanahalfwidth: 0xFF84, - tonebarextrahighmod: 0x02E5, - tonebarextralowmod: 0x02E9, - tonebarhighmod: 0x02E6, - tonebarlowmod: 0x02E8, - tonebarmidmod: 0x02E7, - tonefive: 0x01BD, - tonesix: 0x0185, - tonetwo: 0x01A8, - tonos: 0x0384, - tonsquare: 0x3327, - topatakthai: 0x0E0F, - tortoiseshellbracketleft: 0x3014, - tortoiseshellbracketleftsmall: 0xFE5D, - tortoiseshellbracketleftvertical: 0xFE39, - tortoiseshellbracketright: 0x3015, - tortoiseshellbracketrightsmall: 0xFE5E, - tortoiseshellbracketrightvertical: 0xFE3A, - totaothai: 0x0E15, - tpalatalhook: 0x01AB, - tparen: 0x24AF, - trademark: 0x2122, - trademarksans: 0xF8EA, - trademarkserif: 0xF6DB, - tretroflexhook: 0x0288, - triagdn: 0x25BC, - triaglf: 0x25C4, - triagrt: 0x25BA, - triagup: 0x25B2, - ts: 0x02A6, - tsadi: 0x05E6, - tsadidagesh: 0xFB46, - tsadidageshhebrew: 0xFB46, - tsadihebrew: 0x05E6, - tsecyrillic: 0x0446, - tsere: 0x05B5, - tsere12: 0x05B5, - tsere1e: 0x05B5, - tsere2b: 0x05B5, - tserehebrew: 0x05B5, - tserenarrowhebrew: 0x05B5, - tserequarterhebrew: 0x05B5, - tserewidehebrew: 0x05B5, - tshecyrillic: 0x045B, - tsuperior: 0xF6F3, - ttabengali: 0x099F, - ttadeva: 0x091F, - ttagujarati: 0x0A9F, - ttagurmukhi: 0x0A1F, - tteharabic: 0x0679, - ttehfinalarabic: 0xFB67, - ttehinitialarabic: 0xFB68, - ttehmedialarabic: 0xFB69, - tthabengali: 0x09A0, - tthadeva: 0x0920, - tthagujarati: 0x0AA0, - tthagurmukhi: 0x0A20, - tturned: 0x0287, - tuhiragana: 0x3064, - tukatakana: 0x30C4, - tukatakanahalfwidth: 0xFF82, - tusmallhiragana: 0x3063, - tusmallkatakana: 0x30C3, - tusmallkatakanahalfwidth: 0xFF6F, - twelvecircle: 0x246B, - twelveparen: 0x247F, - twelveperiod: 0x2493, - twelveroman: 0x217B, - twentycircle: 0x2473, - twentyhangzhou: 0x5344, - twentyparen: 0x2487, - twentyperiod: 0x249B, - two: 0x0032, - twoarabic: 0x0662, - twobengali: 0x09E8, - twocircle: 0x2461, - twocircleinversesansserif: 0x278B, - twodeva: 0x0968, - twodotenleader: 0x2025, - twodotleader: 0x2025, - twodotleadervertical: 0xFE30, - twogujarati: 0x0AE8, - twogurmukhi: 0x0A68, - twohackarabic: 0x0662, - twohangzhou: 0x3022, - twoideographicparen: 0x3221, - twoinferior: 0x2082, - twomonospace: 0xFF12, - twonumeratorbengali: 0x09F5, - twooldstyle: 0xF732, - twoparen: 0x2475, - twoperiod: 0x2489, - twopersian: 0x06F2, - tworoman: 0x2171, - twostroke: 0x01BB, - twosuperior: 0x00B2, - twothai: 0x0E52, - twothirds: 0x2154, - u: 0x0075, - uacute: 0x00FA, - ubar: 0x0289, - ubengali: 0x0989, - ubopomofo: 0x3128, - ubreve: 0x016D, - ucaron: 0x01D4, - ucircle: 0x24E4, - ucircumflex: 0x00FB, - ucircumflexbelow: 0x1E77, - ucyrillic: 0x0443, - udattadeva: 0x0951, - udblacute: 0x0171, - udblgrave: 0x0215, - udeva: 0x0909, - udieresis: 0x00FC, - udieresisacute: 0x01D8, - udieresisbelow: 0x1E73, - udieresiscaron: 0x01DA, - udieresiscyrillic: 0x04F1, - udieresisgrave: 0x01DC, - udieresismacron: 0x01D6, - udotbelow: 0x1EE5, - ugrave: 0x00F9, - ugujarati: 0x0A89, - ugurmukhi: 0x0A09, - uhiragana: 0x3046, - uhookabove: 0x1EE7, - uhorn: 0x01B0, - uhornacute: 0x1EE9, - uhorndotbelow: 0x1EF1, - uhorngrave: 0x1EEB, - uhornhookabove: 0x1EED, - uhorntilde: 0x1EEF, - uhungarumlaut: 0x0171, - uhungarumlautcyrillic: 0x04F3, - uinvertedbreve: 0x0217, - ukatakana: 0x30A6, - ukatakanahalfwidth: 0xFF73, - ukcyrillic: 0x0479, - ukorean: 0x315C, - umacron: 0x016B, - umacroncyrillic: 0x04EF, - umacrondieresis: 0x1E7B, - umatragurmukhi: 0x0A41, - umonospace: 0xFF55, - underscore: 0x005F, - underscoredbl: 0x2017, - underscoremonospace: 0xFF3F, - underscorevertical: 0xFE33, - underscorewavy: 0xFE4F, - union: 0x222A, - universal: 0x2200, - uogonek: 0x0173, - uparen: 0x24B0, - upblock: 0x2580, - upperdothebrew: 0x05C4, - upsilon: 0x03C5, - upsilondieresis: 0x03CB, - upsilondieresistonos: 0x03B0, - upsilonlatin: 0x028A, - upsilontonos: 0x03CD, - uptackbelowcmb: 0x031D, - uptackmod: 0x02D4, - uragurmukhi: 0x0A73, - uring: 0x016F, - ushortcyrillic: 0x045E, - usmallhiragana: 0x3045, - usmallkatakana: 0x30A5, - usmallkatakanahalfwidth: 0xFF69, - ustraightcyrillic: 0x04AF, - ustraightstrokecyrillic: 0x04B1, - utilde: 0x0169, - utildeacute: 0x1E79, - utildebelow: 0x1E75, - uubengali: 0x098A, - uudeva: 0x090A, - uugujarati: 0x0A8A, - uugurmukhi: 0x0A0A, - uumatragurmukhi: 0x0A42, - uuvowelsignbengali: 0x09C2, - uuvowelsigndeva: 0x0942, - uuvowelsigngujarati: 0x0AC2, - uvowelsignbengali: 0x09C1, - uvowelsigndeva: 0x0941, - uvowelsigngujarati: 0x0AC1, - v: 0x0076, - vadeva: 0x0935, - vagujarati: 0x0AB5, - vagurmukhi: 0x0A35, - vakatakana: 0x30F7, - vav: 0x05D5, - vavdagesh: 0xFB35, - vavdagesh65: 0xFB35, - vavdageshhebrew: 0xFB35, - vavhebrew: 0x05D5, - vavholam: 0xFB4B, - vavholamhebrew: 0xFB4B, - vavvavhebrew: 0x05F0, - vavyodhebrew: 0x05F1, - vcircle: 0x24E5, - vdotbelow: 0x1E7F, - vecyrillic: 0x0432, - veharabic: 0x06A4, - vehfinalarabic: 0xFB6B, - vehinitialarabic: 0xFB6C, - vehmedialarabic: 0xFB6D, - vekatakana: 0x30F9, - venus: 0x2640, - verticalbar: 0x007C, - verticallineabovecmb: 0x030D, - verticallinebelowcmb: 0x0329, - verticallinelowmod: 0x02CC, - verticallinemod: 0x02C8, - vewarmenian: 0x057E, - vhook: 0x028B, - vikatakana: 0x30F8, - viramabengali: 0x09CD, - viramadeva: 0x094D, - viramagujarati: 0x0ACD, - visargabengali: 0x0983, - visargadeva: 0x0903, - visargagujarati: 0x0A83, - vmonospace: 0xFF56, - voarmenian: 0x0578, - voicediterationhiragana: 0x309E, - voicediterationkatakana: 0x30FE, - voicedmarkkana: 0x309B, - voicedmarkkanahalfwidth: 0xFF9E, - vokatakana: 0x30FA, - vparen: 0x24B1, - vtilde: 0x1E7D, - vturned: 0x028C, - vuhiragana: 0x3094, - vukatakana: 0x30F4, - w: 0x0077, - wacute: 0x1E83, - waekorean: 0x3159, - wahiragana: 0x308F, - wakatakana: 0x30EF, - wakatakanahalfwidth: 0xFF9C, - wakorean: 0x3158, - wasmallhiragana: 0x308E, - wasmallkatakana: 0x30EE, - wattosquare: 0x3357, - wavedash: 0x301C, - wavyunderscorevertical: 0xFE34, - wawarabic: 0x0648, - wawfinalarabic: 0xFEEE, - wawhamzaabovearabic: 0x0624, - wawhamzaabovefinalarabic: 0xFE86, - wbsquare: 0x33DD, - wcircle: 0x24E6, - wcircumflex: 0x0175, - wdieresis: 0x1E85, - wdotaccent: 0x1E87, - wdotbelow: 0x1E89, - wehiragana: 0x3091, - weierstrass: 0x2118, - wekatakana: 0x30F1, - wekorean: 0x315E, - weokorean: 0x315D, - wgrave: 0x1E81, - whitebullet: 0x25E6, - whitecircle: 0x25CB, - whitecircleinverse: 0x25D9, - whitecornerbracketleft: 0x300E, - whitecornerbracketleftvertical: 0xFE43, - whitecornerbracketright: 0x300F, - whitecornerbracketrightvertical: 0xFE44, - whitediamond: 0x25C7, - whitediamondcontainingblacksmalldiamond: 0x25C8, - whitedownpointingsmalltriangle: 0x25BF, - whitedownpointingtriangle: 0x25BD, - whiteleftpointingsmalltriangle: 0x25C3, - whiteleftpointingtriangle: 0x25C1, - whitelenticularbracketleft: 0x3016, - whitelenticularbracketright: 0x3017, - whiterightpointingsmalltriangle: 0x25B9, - whiterightpointingtriangle: 0x25B7, - whitesmallsquare: 0x25AB, - whitesmilingface: 0x263A, - whitesquare: 0x25A1, - whitestar: 0x2606, - whitetelephone: 0x260F, - whitetortoiseshellbracketleft: 0x3018, - whitetortoiseshellbracketright: 0x3019, - whiteuppointingsmalltriangle: 0x25B5, - whiteuppointingtriangle: 0x25B3, - wihiragana: 0x3090, - wikatakana: 0x30F0, - wikorean: 0x315F, - wmonospace: 0xFF57, - wohiragana: 0x3092, - wokatakana: 0x30F2, - wokatakanahalfwidth: 0xFF66, - won: 0x20A9, - wonmonospace: 0xFFE6, - wowaenthai: 0x0E27, - wparen: 0x24B2, - wring: 0x1E98, - wsuperior: 0x02B7, - wturned: 0x028D, - wynn: 0x01BF, - x: 0x0078, - xabovecmb: 0x033D, - xbopomofo: 0x3112, - xcircle: 0x24E7, - xdieresis: 0x1E8D, - xdotaccent: 0x1E8B, - xeharmenian: 0x056D, - xi: 0x03BE, - xmonospace: 0xFF58, - xparen: 0x24B3, - xsuperior: 0x02E3, - y: 0x0079, - yaadosquare: 0x334E, - yabengali: 0x09AF, - yacute: 0x00FD, - yadeva: 0x092F, - yaekorean: 0x3152, - yagujarati: 0x0AAF, - yagurmukhi: 0x0A2F, - yahiragana: 0x3084, - yakatakana: 0x30E4, - yakatakanahalfwidth: 0xFF94, - yakorean: 0x3151, - yamakkanthai: 0x0E4E, - yasmallhiragana: 0x3083, - yasmallkatakana: 0x30E3, - yasmallkatakanahalfwidth: 0xFF6C, - yatcyrillic: 0x0463, - ycircle: 0x24E8, - ycircumflex: 0x0177, - ydieresis: 0x00FF, - ydotaccent: 0x1E8F, - ydotbelow: 0x1EF5, - yeharabic: 0x064A, - yehbarreearabic: 0x06D2, - yehbarreefinalarabic: 0xFBAF, - yehfinalarabic: 0xFEF2, - yehhamzaabovearabic: 0x0626, - yehhamzaabovefinalarabic: 0xFE8A, - yehhamzaaboveinitialarabic: 0xFE8B, - yehhamzaabovemedialarabic: 0xFE8C, - yehinitialarabic: 0xFEF3, - yehmedialarabic: 0xFEF4, - yehmeeminitialarabic: 0xFCDD, - yehmeemisolatedarabic: 0xFC58, - yehnoonfinalarabic: 0xFC94, - yehthreedotsbelowarabic: 0x06D1, - yekorean: 0x3156, - yen: 0x00A5, - yenmonospace: 0xFFE5, - yeokorean: 0x3155, - yeorinhieuhkorean: 0x3186, - yerahbenyomohebrew: 0x05AA, - yerahbenyomolefthebrew: 0x05AA, - yericyrillic: 0x044B, - yerudieresiscyrillic: 0x04F9, - yesieungkorean: 0x3181, - yesieungpansioskorean: 0x3183, - yesieungsioskorean: 0x3182, - yetivhebrew: 0x059A, - ygrave: 0x1EF3, - yhook: 0x01B4, - yhookabove: 0x1EF7, - yiarmenian: 0x0575, - yicyrillic: 0x0457, - yikorean: 0x3162, - yinyang: 0x262F, - yiwnarmenian: 0x0582, - ymonospace: 0xFF59, - yod: 0x05D9, - yoddagesh: 0xFB39, - yoddageshhebrew: 0xFB39, - yodhebrew: 0x05D9, - yodyodhebrew: 0x05F2, - yodyodpatahhebrew: 0xFB1F, - yohiragana: 0x3088, - yoikorean: 0x3189, - yokatakana: 0x30E8, - yokatakanahalfwidth: 0xFF96, - yokorean: 0x315B, - yosmallhiragana: 0x3087, - yosmallkatakana: 0x30E7, - yosmallkatakanahalfwidth: 0xFF6E, - yotgreek: 0x03F3, - yoyaekorean: 0x3188, - yoyakorean: 0x3187, - yoyakthai: 0x0E22, - yoyingthai: 0x0E0D, - yparen: 0x24B4, - ypogegrammeni: 0x037A, - ypogegrammenigreekcmb: 0x0345, - yr: 0x01A6, - yring: 0x1E99, - ysuperior: 0x02B8, - ytilde: 0x1EF9, - yturned: 0x028E, - yuhiragana: 0x3086, - yuikorean: 0x318C, - yukatakana: 0x30E6, - yukatakanahalfwidth: 0xFF95, - yukorean: 0x3160, - yusbigcyrillic: 0x046B, - yusbigiotifiedcyrillic: 0x046D, - yuslittlecyrillic: 0x0467, - yuslittleiotifiedcyrillic: 0x0469, - yusmallhiragana: 0x3085, - yusmallkatakana: 0x30E5, - yusmallkatakanahalfwidth: 0xFF6D, - yuyekorean: 0x318B, - yuyeokorean: 0x318A, - yyabengali: 0x09DF, - yyadeva: 0x095F, - z: 0x007A, - zaarmenian: 0x0566, - zacute: 0x017A, - zadeva: 0x095B, - zagurmukhi: 0x0A5B, - zaharabic: 0x0638, - zahfinalarabic: 0xFEC6, - zahinitialarabic: 0xFEC7, - zahiragana: 0x3056, - zahmedialarabic: 0xFEC8, - zainarabic: 0x0632, - zainfinalarabic: 0xFEB0, - zakatakana: 0x30B6, - zaqefgadolhebrew: 0x0595, - zaqefqatanhebrew: 0x0594, - zarqahebrew: 0x0598, - zayin: 0x05D6, - zayindagesh: 0xFB36, - zayindageshhebrew: 0xFB36, - zayinhebrew: 0x05D6, - zbopomofo: 0x3117, - zcaron: 0x017E, - zcircle: 0x24E9, - zcircumflex: 0x1E91, - zcurl: 0x0291, - zdot: 0x017C, - zdotaccent: 0x017C, - zdotbelow: 0x1E93, - zecyrillic: 0x0437, - zedescendercyrillic: 0x0499, - zedieresiscyrillic: 0x04DF, - zehiragana: 0x305C, - zekatakana: 0x30BC, - zero: 0x0030, - zeroarabic: 0x0660, - zerobengali: 0x09E6, - zerodeva: 0x0966, - zerogujarati: 0x0AE6, - zerogurmukhi: 0x0A66, - zerohackarabic: 0x0660, - zeroinferior: 0x2080, - zeromonospace: 0xFF10, - zerooldstyle: 0xF730, - zeropersian: 0x06F0, - zerosuperior: 0x2070, - zerothai: 0x0E50, - zerowidthjoiner: 0xFEFF, - zerowidthnonjoiner: 0x200C, - zerowidthspace: 0x200B, - zeta: 0x03B6, - zhbopomofo: 0x3113, - zhearmenian: 0x056A, - zhebrevecyrillic: 0x04C2, - zhecyrillic: 0x0436, - zhedescendercyrillic: 0x0497, - zhedieresiscyrillic: 0x04DD, - zihiragana: 0x3058, - zikatakana: 0x30B8, - zinorhebrew: 0x05AE, - zlinebelow: 0x1E95, - zmonospace: 0xFF5A, - zohiragana: 0x305E, - zokatakana: 0x30BE, - zparen: 0x24B5, - zretroflexhook: 0x0290, - zstroke: 0x01B6, - zuhiragana: 0x305A, - zukatakana: 0x30BA, - '.notdef': 0x0000 -}; - -var DingbatsGlyphsUnicode = { - space: 0x0020, - a1: 0x2701, - a2: 0x2702, - a202: 0x2703, - a3: 0x2704, - a4: 0x260E, - a5: 0x2706, - a119: 0x2707, - a118: 0x2708, - a117: 0x2709, - a11: 0x261B, - a12: 0x261E, - a13: 0x270C, - a14: 0x270D, - a15: 0x270E, - a16: 0x270F, - a105: 0x2710, - a17: 0x2711, - a18: 0x2712, - a19: 0x2713, - a20: 0x2714, - a21: 0x2715, - a22: 0x2716, - a23: 0x2717, - a24: 0x2718, - a25: 0x2719, - a26: 0x271A, - a27: 0x271B, - a28: 0x271C, - a6: 0x271D, - a7: 0x271E, - a8: 0x271F, - a9: 0x2720, - a10: 0x2721, - a29: 0x2722, - a30: 0x2723, - a31: 0x2724, - a32: 0x2725, - a33: 0x2726, - a34: 0x2727, - a35: 0x2605, - a36: 0x2729, - a37: 0x272A, - a38: 0x272B, - a39: 0x272C, - a40: 0x272D, - a41: 0x272E, - a42: 0x272F, - a43: 0x2730, - a44: 0x2731, - a45: 0x2732, - a46: 0x2733, - a47: 0x2734, - a48: 0x2735, - a49: 0x2736, - a50: 0x2737, - a51: 0x2738, - a52: 0x2739, - a53: 0x273A, - a54: 0x273B, - a55: 0x273C, - a56: 0x273D, - a57: 0x273E, - a58: 0x273F, - a59: 0x2740, - a60: 0x2741, - a61: 0x2742, - a62: 0x2743, - a63: 0x2744, - a64: 0x2745, - a65: 0x2746, - a66: 0x2747, - a67: 0x2748, - a68: 0x2749, - a69: 0x274A, - a70: 0x274B, - a71: 0x25CF, - a72: 0x274D, - a73: 0x25A0, - a74: 0x274F, - a203: 0x2750, - a75: 0x2751, - a204: 0x2752, - a76: 0x25B2, - a77: 0x25BC, - a78: 0x25C6, - a79: 0x2756, - a81: 0x25D7, - a82: 0x2758, - a83: 0x2759, - a84: 0x275A, - a97: 0x275B, - a98: 0x275C, - a99: 0x275D, - a100: 0x275E, - a101: 0x2761, - a102: 0x2762, - a103: 0x2763, - a104: 0x2764, - a106: 0x2765, - a107: 0x2766, - a108: 0x2767, - a112: 0x2663, - a111: 0x2666, - a110: 0x2665, - a109: 0x2660, - a120: 0x2460, - a121: 0x2461, - a122: 0x2462, - a123: 0x2463, - a124: 0x2464, - a125: 0x2465, - a126: 0x2466, - a127: 0x2467, - a128: 0x2468, - a129: 0x2469, - a130: 0x2776, - a131: 0x2777, - a132: 0x2778, - a133: 0x2779, - a134: 0x277A, - a135: 0x277B, - a136: 0x277C, - a137: 0x277D, - a138: 0x277E, - a139: 0x277F, - a140: 0x2780, - a141: 0x2781, - a142: 0x2782, - a143: 0x2783, - a144: 0x2784, - a145: 0x2785, - a146: 0x2786, - a147: 0x2787, - a148: 0x2788, - a149: 0x2789, - a150: 0x278A, - a151: 0x278B, - a152: 0x278C, - a153: 0x278D, - a154: 0x278E, - a155: 0x278F, - a156: 0x2790, - a157: 0x2791, - a158: 0x2792, - a159: 0x2793, - a160: 0x2794, - a161: 0x2192, - a163: 0x2194, - a164: 0x2195, - a196: 0x2798, - a165: 0x2799, - a192: 0x279A, - a166: 0x279B, - a167: 0x279C, - a168: 0x279D, - a169: 0x279E, - a170: 0x279F, - a171: 0x27A0, - a172: 0x27A1, - a173: 0x27A2, - a162: 0x27A3, - a174: 0x27A4, - a175: 0x27A5, - a176: 0x27A6, - a177: 0x27A7, - a178: 0x27A8, - a179: 0x27A9, - a193: 0x27AA, - a180: 0x27AB, - a199: 0x27AC, - a181: 0x27AD, - a200: 0x27AE, - a182: 0x27AF, - a201: 0x27B1, - a183: 0x27B2, - a184: 0x27B3, - a197: 0x27B4, - a185: 0x27B5, - a194: 0x27B6, - a198: 0x27B7, - a186: 0x27B8, - a195: 0x27B9, - a187: 0x27BA, - a188: 0x27BB, - a189: 0x27BC, - a190: 0x27BD, - a191: 0x27BE, - a89: 0x2768, // 0xF8D7 - a90: 0x2769, // 0xF8D8 - a93: 0x276A, // 0xF8D9 - a94: 0x276B, // 0xF8DA - a91: 0x276C, // 0xF8DB - a92: 0x276D, // 0xF8DC - a205: 0x276E, // 0xF8DD - a85: 0x276F, // 0xF8DE - a206: 0x2770, // 0xF8DF - a86: 0x2771, // 0xF8E0 - a87: 0x2772, // 0xF8E1 - a88: 0x2773, // 0xF8E2 - a95: 0x2774, // 0xF8E3 - a96: 0x2775, // 0xF8E4 - '.notdef': 0x0000 -}; - -exports.GlyphsUnicode = GlyphsUnicode; -exports.DingbatsGlyphsUnicode = DingbatsGlyphsUnicode; -})); - - - -(function (root, factory) { - { - factory((root.pdfjsCoreJpg = {})); - } -}(this, function (exports) { - -/* -This code was forked from https://github.com/notmasteryet/jpgjs. The original -version was created by github user notmasteryet - -- The JPEG specification can be found in the ITU CCITT Recommendation T.81 - (www.w3.org/Graphics/JPEG/itu-t81.pdf) -- The JFIF specification can be found in the JPEG File Interchange Format - (www.w3.org/Graphics/JPEG/jfif3.pdf) -- The Adobe Application-Specific JPEG markers in the Supporting the DCT Filters - in PostScript Level 2, Technical Note #5116 - (partners.adobe.com/public/developer/en/ps/sdk/5116.DCT_Filter.pdf) -*/ - -var JpegImage = (function jpegImage() { - var dctZigZag = new Uint8Array([ - 0, - 1, 8, - 16, 9, 2, - 3, 10, 17, 24, - 32, 25, 18, 11, 4, - 5, 12, 19, 26, 33, 40, - 48, 41, 34, 27, 20, 13, 6, - 7, 14, 21, 28, 35, 42, 49, 56, - 57, 50, 43, 36, 29, 22, 15, - 23, 30, 37, 44, 51, 58, - 59, 52, 45, 38, 31, - 39, 46, 53, 60, - 61, 54, 47, - 55, 62, - 63 - ]); - - var dctCos1 = 4017; // cos(pi/16) - var dctSin1 = 799; // sin(pi/16) - var dctCos3 = 3406; // cos(3*pi/16) - var dctSin3 = 2276; // sin(3*pi/16) - var dctCos6 = 1567; // cos(6*pi/16) - var dctSin6 = 3784; // sin(6*pi/16) - var dctSqrt2 = 5793; // sqrt(2) - var dctSqrt1d2 = 2896; // sqrt(2) / 2 - - function constructor() { - } - - function buildHuffmanTable(codeLengths, values) { - var k = 0, code = [], i, j, length = 16; - while (length > 0 && !codeLengths[length - 1]) { - length--; - } - code.push({children: [], index: 0}); - var p = code[0], q; - for (i = 0; i < length; i++) { - for (j = 0; j < codeLengths[i]; j++) { - p = code.pop(); - p.children[p.index] = values[k]; - while (p.index > 0) { - p = code.pop(); - } - p.index++; - code.push(p); - while (code.length <= i) { - code.push(q = {children: [], index: 0}); - p.children[p.index] = q.children; - p = q; - } - k++; - } - if (i + 1 < length) { - // p here points to last code - code.push(q = {children: [], index: 0}); - p.children[p.index] = q.children; - p = q; - } - } - return code[0].children; - } - - function getBlockBufferOffset(component, row, col) { - return 64 * ((component.blocksPerLine + 1) * row + col); - } - - function decodeScan(data, offset, frame, components, resetInterval, - spectralStart, spectralEnd, successivePrev, successive) { - var mcusPerLine = frame.mcusPerLine; - var progressive = frame.progressive; - - var startOffset = offset, bitsData = 0, bitsCount = 0; - - function readBit() { - if (bitsCount > 0) { - bitsCount--; - return (bitsData >> bitsCount) & 1; - } - bitsData = data[offset++]; - if (bitsData === 0xFF) { - var nextByte = data[offset++]; - if (nextByte) { - throw 'unexpected marker: ' + - ((bitsData << 8) | nextByte).toString(16); - } - // unstuff 0 - } - bitsCount = 7; - return bitsData >>> 7; - } - - function decodeHuffman(tree) { - var node = tree; - while (true) { - node = node[readBit()]; - if (typeof node === 'number') { - return node; - } - if (typeof node !== 'object') { - throw 'invalid huffman sequence'; - } - } - } - - function receive(length) { - var n = 0; - while (length > 0) { - n = (n << 1) | readBit(); - length--; - } - return n; - } - - function receiveAndExtend(length) { - if (length === 1) { - return readBit() === 1 ? 1 : -1; - } - var n = receive(length); - if (n >= 1 << (length - 1)) { - return n; - } - return n + (-1 << length) + 1; - } - - function decodeBaseline(component, offset) { - var t = decodeHuffman(component.huffmanTableDC); - var diff = t === 0 ? 0 : receiveAndExtend(t); - component.blockData[offset] = (component.pred += diff); - var k = 1; - while (k < 64) { - var rs = decodeHuffman(component.huffmanTableAC); - var s = rs & 15, r = rs >> 4; - if (s === 0) { - if (r < 15) { - break; - } - k += 16; - continue; - } - k += r; - var z = dctZigZag[k]; - component.blockData[offset + z] = receiveAndExtend(s); - k++; - } - } - - function decodeDCFirst(component, offset) { - var t = decodeHuffman(component.huffmanTableDC); - var diff = t === 0 ? 0 : (receiveAndExtend(t) << successive); - component.blockData[offset] = (component.pred += diff); - } - - function decodeDCSuccessive(component, offset) { - component.blockData[offset] |= readBit() << successive; - } - - var eobrun = 0; - function decodeACFirst(component, offset) { - if (eobrun > 0) { - eobrun--; - return; - } - var k = spectralStart, e = spectralEnd; - while (k <= e) { - var rs = decodeHuffman(component.huffmanTableAC); - var s = rs & 15, r = rs >> 4; - if (s === 0) { - if (r < 15) { - eobrun = receive(r) + (1 << r) - 1; - break; - } - k += 16; - continue; - } - k += r; - var z = dctZigZag[k]; - component.blockData[offset + z] = - receiveAndExtend(s) * (1 << successive); - k++; - } - } - - var successiveACState = 0, successiveACNextValue; - function decodeACSuccessive(component, offset) { - var k = spectralStart; - var e = spectralEnd; - var r = 0; - var s; - var rs; - while (k <= e) { - var z = dctZigZag[k]; - switch (successiveACState) { - case 0: // initial state - rs = decodeHuffman(component.huffmanTableAC); - s = rs & 15; - r = rs >> 4; - if (s === 0) { - if (r < 15) { - eobrun = receive(r) + (1 << r); - successiveACState = 4; - } else { - r = 16; - successiveACState = 1; - } - } else { - if (s !== 1) { - throw 'invalid ACn encoding'; - } - successiveACNextValue = receiveAndExtend(s); - successiveACState = r ? 2 : 3; - } - continue; - case 1: // skipping r zero items - case 2: - if (component.blockData[offset + z]) { - component.blockData[offset + z] += (readBit() << successive); - } else { - r--; - if (r === 0) { - successiveACState = successiveACState === 2 ? 3 : 0; - } - } - break; - case 3: // set value for a zero item - if (component.blockData[offset + z]) { - component.blockData[offset + z] += (readBit() << successive); - } else { - component.blockData[offset + z] = - successiveACNextValue << successive; - successiveACState = 0; - } - break; - case 4: // eob - if (component.blockData[offset + z]) { - component.blockData[offset + z] += (readBit() << successive); - } - break; - } - k++; - } - if (successiveACState === 4) { - eobrun--; - if (eobrun === 0) { - successiveACState = 0; - } - } - } - - function decodeMcu(component, decode, mcu, row, col) { - var mcuRow = (mcu / mcusPerLine) | 0; - var mcuCol = mcu % mcusPerLine; - var blockRow = mcuRow * component.v + row; - var blockCol = mcuCol * component.h + col; - var offset = getBlockBufferOffset(component, blockRow, blockCol); - decode(component, offset); - } - - function decodeBlock(component, decode, mcu) { - var blockRow = (mcu / component.blocksPerLine) | 0; - var blockCol = mcu % component.blocksPerLine; - var offset = getBlockBufferOffset(component, blockRow, blockCol); - decode(component, offset); - } - - var componentsLength = components.length; - var component, i, j, k, n; - var decodeFn; - if (progressive) { - if (spectralStart === 0) { - decodeFn = successivePrev === 0 ? decodeDCFirst : decodeDCSuccessive; - } else { - decodeFn = successivePrev === 0 ? decodeACFirst : decodeACSuccessive; - } - } else { - decodeFn = decodeBaseline; - } - - var mcu = 0, marker; - var mcuExpected; - if (componentsLength === 1) { - mcuExpected = components[0].blocksPerLine * components[0].blocksPerColumn; - } else { - mcuExpected = mcusPerLine * frame.mcusPerColumn; - } - if (!resetInterval) { - resetInterval = mcuExpected; - } - - var h, v; - while (mcu < mcuExpected) { - // reset interval stuff - for (i = 0; i < componentsLength; i++) { - components[i].pred = 0; - } - eobrun = 0; - - if (componentsLength === 1) { - component = components[0]; - for (n = 0; n < resetInterval; n++) { - decodeBlock(component, decodeFn, mcu); - mcu++; - } - } else { - for (n = 0; n < resetInterval; n++) { - for (i = 0; i < componentsLength; i++) { - component = components[i]; - h = component.h; - v = component.v; - for (j = 0; j < v; j++) { - for (k = 0; k < h; k++) { - decodeMcu(component, decodeFn, mcu, j, k); - } - } - } - mcu++; - } - } - - // find marker - bitsCount = 0; - marker = (data[offset] << 8) | data[offset + 1]; - if (marker <= 0xFF00) { - throw 'marker was not found'; - } - - if (marker >= 0xFFD0 && marker <= 0xFFD7) { // RSTx - offset += 2; - } else { - break; - } - } - - return offset - startOffset; - } - - // A port of poppler's IDCT method which in turn is taken from: - // Christoph Loeffler, Adriaan Ligtenberg, George S. Moschytz, - // 'Practical Fast 1-D DCT Algorithms with 11 Multiplications', - // IEEE Intl. Conf. on Acoustics, Speech & Signal Processing, 1989, - // 988-991. - function quantizeAndInverse(component, blockBufferOffset, p) { - var qt = component.quantizationTable, blockData = component.blockData; - var v0, v1, v2, v3, v4, v5, v6, v7; - var p0, p1, p2, p3, p4, p5, p6, p7; - var t; - - // inverse DCT on rows - for (var row = 0; row < 64; row += 8) { - // gather block data - p0 = blockData[blockBufferOffset + row]; - p1 = blockData[blockBufferOffset + row + 1]; - p2 = blockData[blockBufferOffset + row + 2]; - p3 = blockData[blockBufferOffset + row + 3]; - p4 = blockData[blockBufferOffset + row + 4]; - p5 = blockData[blockBufferOffset + row + 5]; - p6 = blockData[blockBufferOffset + row + 6]; - p7 = blockData[blockBufferOffset + row + 7]; - - // dequant p0 - p0 *= qt[row]; - - // check for all-zero AC coefficients - if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) { - t = (dctSqrt2 * p0 + 512) >> 10; - p[row] = t; - p[row + 1] = t; - p[row + 2] = t; - p[row + 3] = t; - p[row + 4] = t; - p[row + 5] = t; - p[row + 6] = t; - p[row + 7] = t; - continue; - } - // dequant p1 ... p7 - p1 *= qt[row + 1]; - p2 *= qt[row + 2]; - p3 *= qt[row + 3]; - p4 *= qt[row + 4]; - p5 *= qt[row + 5]; - p6 *= qt[row + 6]; - p7 *= qt[row + 7]; - - // stage 4 - v0 = (dctSqrt2 * p0 + 128) >> 8; - v1 = (dctSqrt2 * p4 + 128) >> 8; - v2 = p2; - v3 = p6; - v4 = (dctSqrt1d2 * (p1 - p7) + 128) >> 8; - v7 = (dctSqrt1d2 * (p1 + p7) + 128) >> 8; - v5 = p3 << 4; - v6 = p5 << 4; - - // stage 3 - v0 = (v0 + v1 + 1) >> 1; - v1 = v0 - v1; - t = (v2 * dctSin6 + v3 * dctCos6 + 128) >> 8; - v2 = (v2 * dctCos6 - v3 * dctSin6 + 128) >> 8; - v3 = t; - v4 = (v4 + v6 + 1) >> 1; - v6 = v4 - v6; - v7 = (v7 + v5 + 1) >> 1; - v5 = v7 - v5; - - // stage 2 - v0 = (v0 + v3 + 1) >> 1; - v3 = v0 - v3; - v1 = (v1 + v2 + 1) >> 1; - v2 = v1 - v2; - t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12; - v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12; - v7 = t; - t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12; - v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12; - v6 = t; - - // stage 1 - p[row] = v0 + v7; - p[row + 7] = v0 - v7; - p[row + 1] = v1 + v6; - p[row + 6] = v1 - v6; - p[row + 2] = v2 + v5; - p[row + 5] = v2 - v5; - p[row + 3] = v3 + v4; - p[row + 4] = v3 - v4; - } - - // inverse DCT on columns - for (var col = 0; col < 8; ++col) { - p0 = p[col]; - p1 = p[col + 8]; - p2 = p[col + 16]; - p3 = p[col + 24]; - p4 = p[col + 32]; - p5 = p[col + 40]; - p6 = p[col + 48]; - p7 = p[col + 56]; - - // check for all-zero AC coefficients - if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) { - t = (dctSqrt2 * p0 + 8192) >> 14; - // convert to 8 bit - t = (t < -2040) ? 0 : (t >= 2024) ? 255 : (t + 2056) >> 4; - blockData[blockBufferOffset + col] = t; - blockData[blockBufferOffset + col + 8] = t; - blockData[blockBufferOffset + col + 16] = t; - blockData[blockBufferOffset + col + 24] = t; - blockData[blockBufferOffset + col + 32] = t; - blockData[blockBufferOffset + col + 40] = t; - blockData[blockBufferOffset + col + 48] = t; - blockData[blockBufferOffset + col + 56] = t; - continue; - } - - // stage 4 - v0 = (dctSqrt2 * p0 + 2048) >> 12; - v1 = (dctSqrt2 * p4 + 2048) >> 12; - v2 = p2; - v3 = p6; - v4 = (dctSqrt1d2 * (p1 - p7) + 2048) >> 12; - v7 = (dctSqrt1d2 * (p1 + p7) + 2048) >> 12; - v5 = p3; - v6 = p5; - - // stage 3 - // Shift v0 by 128.5 << 5 here, so we don't need to shift p0...p7 when - // converting to UInt8 range later. - v0 = ((v0 + v1 + 1) >> 1) + 4112; - v1 = v0 - v1; - t = (v2 * dctSin6 + v3 * dctCos6 + 2048) >> 12; - v2 = (v2 * dctCos6 - v3 * dctSin6 + 2048) >> 12; - v3 = t; - v4 = (v4 + v6 + 1) >> 1; - v6 = v4 - v6; - v7 = (v7 + v5 + 1) >> 1; - v5 = v7 - v5; - - // stage 2 - v0 = (v0 + v3 + 1) >> 1; - v3 = v0 - v3; - v1 = (v1 + v2 + 1) >> 1; - v2 = v1 - v2; - t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12; - v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12; - v7 = t; - t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12; - v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12; - v6 = t; - - // stage 1 - p0 = v0 + v7; - p7 = v0 - v7; - p1 = v1 + v6; - p6 = v1 - v6; - p2 = v2 + v5; - p5 = v2 - v5; - p3 = v3 + v4; - p4 = v3 - v4; - - // convert to 8-bit integers - p0 = (p0 < 16) ? 0 : (p0 >= 4080) ? 255 : p0 >> 4; - p1 = (p1 < 16) ? 0 : (p1 >= 4080) ? 255 : p1 >> 4; - p2 = (p2 < 16) ? 0 : (p2 >= 4080) ? 255 : p2 >> 4; - p3 = (p3 < 16) ? 0 : (p3 >= 4080) ? 255 : p3 >> 4; - p4 = (p4 < 16) ? 0 : (p4 >= 4080) ? 255 : p4 >> 4; - p5 = (p5 < 16) ? 0 : (p5 >= 4080) ? 255 : p5 >> 4; - p6 = (p6 < 16) ? 0 : (p6 >= 4080) ? 255 : p6 >> 4; - p7 = (p7 < 16) ? 0 : (p7 >= 4080) ? 255 : p7 >> 4; - - // store block data - blockData[blockBufferOffset + col] = p0; - blockData[blockBufferOffset + col + 8] = p1; - blockData[blockBufferOffset + col + 16] = p2; - blockData[blockBufferOffset + col + 24] = p3; - blockData[blockBufferOffset + col + 32] = p4; - blockData[blockBufferOffset + col + 40] = p5; - blockData[blockBufferOffset + col + 48] = p6; - blockData[blockBufferOffset + col + 56] = p7; - } - } - - function buildComponentData(frame, component) { - var blocksPerLine = component.blocksPerLine; - var blocksPerColumn = component.blocksPerColumn; - var computationBuffer = new Int16Array(64); - - for (var blockRow = 0; blockRow < blocksPerColumn; blockRow++) { - for (var blockCol = 0; blockCol < blocksPerLine; blockCol++) { - var offset = getBlockBufferOffset(component, blockRow, blockCol); - quantizeAndInverse(component, offset, computationBuffer); - } - } - return component.blockData; - } - - function clamp0to255(a) { - return a <= 0 ? 0 : a >= 255 ? 255 : a; - } - - constructor.prototype = { - parse: function parse(data) { - - function readUint16() { - var value = (data[offset] << 8) | data[offset + 1]; - offset += 2; - return value; - } - - function readDataBlock() { - var length = readUint16(); - var array = data.subarray(offset, offset + length - 2); - offset += array.length; - return array; - } - - function prepareComponents(frame) { - var mcusPerLine = Math.ceil(frame.samplesPerLine / 8 / frame.maxH); - var mcusPerColumn = Math.ceil(frame.scanLines / 8 / frame.maxV); - for (var i = 0; i < frame.components.length; i++) { - component = frame.components[i]; - var blocksPerLine = Math.ceil(Math.ceil(frame.samplesPerLine / 8) * - component.h / frame.maxH); - var blocksPerColumn = Math.ceil(Math.ceil(frame.scanLines / 8) * - component.v / frame.maxV); - var blocksPerLineForMcu = mcusPerLine * component.h; - var blocksPerColumnForMcu = mcusPerColumn * component.v; - - var blocksBufferSize = 64 * blocksPerColumnForMcu * - (blocksPerLineForMcu + 1); - component.blockData = new Int16Array(blocksBufferSize); - component.blocksPerLine = blocksPerLine; - component.blocksPerColumn = blocksPerColumn; - } - frame.mcusPerLine = mcusPerLine; - frame.mcusPerColumn = mcusPerColumn; - } - - var offset = 0; - var jfif = null; - var adobe = null; - var frame, resetInterval; - var quantizationTables = []; - var huffmanTablesAC = [], huffmanTablesDC = []; - var fileMarker = readUint16(); - if (fileMarker !== 0xFFD8) { // SOI (Start of Image) - throw 'SOI not found'; - } - - fileMarker = readUint16(); - while (fileMarker !== 0xFFD9) { // EOI (End of image) - var i, j, l; - switch(fileMarker) { - case 0xFFE0: // APP0 (Application Specific) - case 0xFFE1: // APP1 - case 0xFFE2: // APP2 - case 0xFFE3: // APP3 - case 0xFFE4: // APP4 - case 0xFFE5: // APP5 - case 0xFFE6: // APP6 - case 0xFFE7: // APP7 - case 0xFFE8: // APP8 - case 0xFFE9: // APP9 - case 0xFFEA: // APP10 - case 0xFFEB: // APP11 - case 0xFFEC: // APP12 - case 0xFFED: // APP13 - case 0xFFEE: // APP14 - case 0xFFEF: // APP15 - case 0xFFFE: // COM (Comment) - var appData = readDataBlock(); - - if (fileMarker === 0xFFE0) { - if (appData[0] === 0x4A && appData[1] === 0x46 && - appData[2] === 0x49 && appData[3] === 0x46 && - appData[4] === 0) { // 'JFIF\x00' - jfif = { - version: { major: appData[5], minor: appData[6] }, - densityUnits: appData[7], - xDensity: (appData[8] << 8) | appData[9], - yDensity: (appData[10] << 8) | appData[11], - thumbWidth: appData[12], - thumbHeight: appData[13], - thumbData: appData.subarray(14, 14 + - 3 * appData[12] * appData[13]) - }; - } - } - // TODO APP1 - Exif - if (fileMarker === 0xFFEE) { - if (appData[0] === 0x41 && appData[1] === 0x64 && - appData[2] === 0x6F && appData[3] === 0x62 && - appData[4] === 0x65) { // 'Adobe' - adobe = { - version: (appData[5] << 8) | appData[6], - flags0: (appData[7] << 8) | appData[8], - flags1: (appData[9] << 8) | appData[10], - transformCode: appData[11] - }; - } - } - break; - - case 0xFFDB: // DQT (Define Quantization Tables) - var quantizationTablesLength = readUint16(); - var quantizationTablesEnd = quantizationTablesLength + offset - 2; - var z; - while (offset < quantizationTablesEnd) { - var quantizationTableSpec = data[offset++]; - var tableData = new Uint16Array(64); - if ((quantizationTableSpec >> 4) === 0) { // 8 bit values - for (j = 0; j < 64; j++) { - z = dctZigZag[j]; - tableData[z] = data[offset++]; - } - } else if ((quantizationTableSpec >> 4) === 1) { //16 bit - for (j = 0; j < 64; j++) { - z = dctZigZag[j]; - tableData[z] = readUint16(); - } - } else { - throw 'DQT: invalid table spec'; - } - quantizationTables[quantizationTableSpec & 15] = tableData; - } - break; - - case 0xFFC0: // SOF0 (Start of Frame, Baseline DCT) - case 0xFFC1: // SOF1 (Start of Frame, Extended DCT) - case 0xFFC2: // SOF2 (Start of Frame, Progressive DCT) - if (frame) { - throw 'Only single frame JPEGs supported'; - } - readUint16(); // skip data length - frame = {}; - frame.extended = (fileMarker === 0xFFC1); - frame.progressive = (fileMarker === 0xFFC2); - frame.precision = data[offset++]; - frame.scanLines = readUint16(); - frame.samplesPerLine = readUint16(); - frame.components = []; - frame.componentIds = {}; - var componentsCount = data[offset++], componentId; - var maxH = 0, maxV = 0; - for (i = 0; i < componentsCount; i++) { - componentId = data[offset]; - var h = data[offset + 1] >> 4; - var v = data[offset + 1] & 15; - if (maxH < h) { - maxH = h; - } - if (maxV < v) { - maxV = v; - } - var qId = data[offset + 2]; - l = frame.components.push({ - h: h, - v: v, - quantizationTable: quantizationTables[qId] - }); - frame.componentIds[componentId] = l - 1; - offset += 3; - } - frame.maxH = maxH; - frame.maxV = maxV; - prepareComponents(frame); - break; - - case 0xFFC4: // DHT (Define Huffman Tables) - var huffmanLength = readUint16(); - for (i = 2; i < huffmanLength;) { - var huffmanTableSpec = data[offset++]; - var codeLengths = new Uint8Array(16); - var codeLengthSum = 0; - for (j = 0; j < 16; j++, offset++) { - codeLengthSum += (codeLengths[j] = data[offset]); - } - var huffmanValues = new Uint8Array(codeLengthSum); - for (j = 0; j < codeLengthSum; j++, offset++) { - huffmanValues[j] = data[offset]; - } - i += 17 + codeLengthSum; - - ((huffmanTableSpec >> 4) === 0 ? - huffmanTablesDC : huffmanTablesAC)[huffmanTableSpec & 15] = - buildHuffmanTable(codeLengths, huffmanValues); - } - break; - - case 0xFFDD: // DRI (Define Restart Interval) - readUint16(); // skip data length - resetInterval = readUint16(); - break; - - case 0xFFDA: // SOS (Start of Scan) - var scanLength = readUint16(); - var selectorsCount = data[offset++]; - var components = [], component; - for (i = 0; i < selectorsCount; i++) { - var componentIndex = frame.componentIds[data[offset++]]; - component = frame.components[componentIndex]; - var tableSpec = data[offset++]; - component.huffmanTableDC = huffmanTablesDC[tableSpec >> 4]; - component.huffmanTableAC = huffmanTablesAC[tableSpec & 15]; - components.push(component); - } - var spectralStart = data[offset++]; - var spectralEnd = data[offset++]; - var successiveApproximation = data[offset++]; - var processed = decodeScan(data, offset, - frame, components, resetInterval, - spectralStart, spectralEnd, - successiveApproximation >> 4, successiveApproximation & 15); - offset += processed; - break; - - case 0xFFFF: // Fill bytes - if (data[offset] !== 0xFF) { // Avoid skipping a valid marker. - offset--; - } - break; - - default: - if (data[offset - 3] === 0xFF && - data[offset - 2] >= 0xC0 && data[offset - 2] <= 0xFE) { - // could be incorrect encoding -- last 0xFF byte of the previous - // block was eaten by the encoder - offset -= 3; - break; - } - throw 'unknown JPEG marker ' + fileMarker.toString(16); - } - fileMarker = readUint16(); - } - - this.width = frame.samplesPerLine; - this.height = frame.scanLines; - this.jfif = jfif; - this.adobe = adobe; - this.components = []; - for (i = 0; i < frame.components.length; i++) { - component = frame.components[i]; - this.components.push({ - output: buildComponentData(frame, component), - scaleX: component.h / frame.maxH, - scaleY: component.v / frame.maxV, - blocksPerLine: component.blocksPerLine, - blocksPerColumn: component.blocksPerColumn - }); - } - this.numComponents = this.components.length; - }, - - _getLinearizedBlockData: function getLinearizedBlockData(width, height) { - var scaleX = this.width / width, scaleY = this.height / height; - - var component, componentScaleX, componentScaleY, blocksPerScanline; - var x, y, i, j, k; - var index; - var offset = 0; - var output; - var numComponents = this.components.length; - var dataLength = width * height * numComponents; - var data = new Uint8Array(dataLength); - var xScaleBlockOffset = new Uint32Array(width); - var mask3LSB = 0xfffffff8; // used to clear the 3 LSBs - - for (i = 0; i < numComponents; i++) { - component = this.components[i]; - componentScaleX = component.scaleX * scaleX; - componentScaleY = component.scaleY * scaleY; - offset = i; - output = component.output; - blocksPerScanline = (component.blocksPerLine + 1) << 3; - // precalculate the xScaleBlockOffset - for (x = 0; x < width; x++) { - j = 0 | (x * componentScaleX); - xScaleBlockOffset[x] = ((j & mask3LSB) << 3) | (j & 7); - } - // linearize the blocks of the component - for (y = 0; y < height; y++) { - j = 0 | (y * componentScaleY); - index = blocksPerScanline * (j & mask3LSB) | ((j & 7) << 3); - for (x = 0; x < width; x++) { - data[offset] = output[index + xScaleBlockOffset[x]]; - offset += numComponents; - } - } - } - - // decodeTransform contains pairs of multiplier (-256..256) and additive - var transform = this.decodeTransform; - if (transform) { - for (i = 0; i < dataLength;) { - for (j = 0, k = 0; j < numComponents; j++, i++, k += 2) { - data[i] = ((data[i] * transform[k]) >> 8) + transform[k + 1]; - } - } - } - return data; - }, - - _isColorConversionNeeded: function isColorConversionNeeded() { - if (this.adobe && this.adobe.transformCode) { - // The adobe transform marker overrides any previous setting - return true; - } else if (this.numComponents === 3) { - return true; - } else { - return false; - } - }, - - _convertYccToRgb: function convertYccToRgb(data) { - var Y, Cb, Cr; - for (var i = 0, length = data.length; i < length; i += 3) { - Y = data[i ]; - Cb = data[i + 1]; - Cr = data[i + 2]; - data[i ] = clamp0to255(Y - 179.456 + 1.402 * Cr); - data[i + 1] = clamp0to255(Y + 135.459 - 0.344 * Cb - 0.714 * Cr); - data[i + 2] = clamp0to255(Y - 226.816 + 1.772 * Cb); - } - return data; - }, - - _convertYcckToRgb: function convertYcckToRgb(data) { - var Y, Cb, Cr, k; - var offset = 0; - for (var i = 0, length = data.length; i < length; i += 4) { - Y = data[i]; - Cb = data[i + 1]; - Cr = data[i + 2]; - k = data[i + 3]; - - var r = -122.67195406894 + - Cb * (-6.60635669420364e-5 * Cb + 0.000437130475926232 * Cr - - 5.4080610064599e-5 * Y + 0.00048449797120281 * k - - 0.154362151871126) + - Cr * (-0.000957964378445773 * Cr + 0.000817076911346625 * Y - - 0.00477271405408747 * k + 1.53380253221734) + - Y * (0.000961250184130688 * Y - 0.00266257332283933 * k + - 0.48357088451265) + - k * (-0.000336197177618394 * k + 0.484791561490776); - - var g = 107.268039397724 + - Cb * (2.19927104525741e-5 * Cb - 0.000640992018297945 * Cr + - 0.000659397001245577 * Y + 0.000426105652938837 * k - - 0.176491792462875) + - Cr * (-0.000778269941513683 * Cr + 0.00130872261408275 * Y + - 0.000770482631801132 * k - 0.151051492775562) + - Y * (0.00126935368114843 * Y - 0.00265090189010898 * k + - 0.25802910206845) + - k * (-0.000318913117588328 * k - 0.213742400323665); - - var b = -20.810012546947 + - Cb * (-0.000570115196973677 * Cb - 2.63409051004589e-5 * Cr + - 0.0020741088115012 * Y - 0.00288260236853442 * k + - 0.814272968359295) + - Cr * (-1.53496057440975e-5 * Cr - 0.000132689043961446 * Y + - 0.000560833691242812 * k - 0.195152027534049) + - Y * (0.00174418132927582 * Y - 0.00255243321439347 * k + - 0.116935020465145) + - k * (-0.000343531996510555 * k + 0.24165260232407); - - data[offset++] = clamp0to255(r); - data[offset++] = clamp0to255(g); - data[offset++] = clamp0to255(b); - } - return data; - }, - - _convertYcckToCmyk: function convertYcckToCmyk(data) { - var Y, Cb, Cr; - for (var i = 0, length = data.length; i < length; i += 4) { - Y = data[i]; - Cb = data[i + 1]; - Cr = data[i + 2]; - data[i ] = clamp0to255(434.456 - Y - 1.402 * Cr); - data[i + 1] = clamp0to255(119.541 - Y + 0.344 * Cb + 0.714 * Cr); - data[i + 2] = clamp0to255(481.816 - Y - 1.772 * Cb); - // K in data[i + 3] is unchanged - } - return data; - }, - - _convertCmykToRgb: function convertCmykToRgb(data) { - var c, m, y, k; - var offset = 0; - var min = -255 * 255 * 255; - var scale = 1 / 255 / 255; - for (var i = 0, length = data.length; i < length; i += 4) { - c = data[i]; - m = data[i + 1]; - y = data[i + 2]; - k = data[i + 3]; - - var r = - c * (-4.387332384609988 * c + 54.48615194189176 * m + - 18.82290502165302 * y + 212.25662451639585 * k - - 72734.4411664936) + - m * (1.7149763477362134 * m - 5.6096736904047315 * y - - 17.873870861415444 * k - 1401.7366389350734) + - y * (-2.5217340131683033 * y - 21.248923337353073 * k + - 4465.541406466231) - - k * (21.86122147463605 * k + 48317.86113160301); - var g = - c * (8.841041422036149 * c + 60.118027045597366 * m + - 6.871425592049007 * y + 31.159100130055922 * k - - 20220.756542821975) + - m * (-15.310361306967817 * m + 17.575251261109482 * y + - 131.35250912493976 * k - 48691.05921601825) + - y * (4.444339102852739 * y + 9.8632861493405 * k - - 6341.191035517494) - - k * (20.737325471181034 * k + 47890.15695978492); - var b = - c * (0.8842522430003296 * c + 8.078677503112928 * m + - 30.89978309703729 * y - 0.23883238689178934 * k - - 3616.812083916688) + - m * (10.49593273432072 * m + 63.02378494754052 * y + - 50.606957656360734 * k - 28620.90484698408) + - y * (0.03296041114873217 * y + 115.60384449646641 * k - - 49363.43385999684) - - k * (22.33816807309886 * k + 45932.16563550634); - - data[offset++] = r >= 0 ? 255 : r <= min ? 0 : 255 + r * scale | 0; - data[offset++] = g >= 0 ? 255 : g <= min ? 0 : 255 + g * scale | 0; - data[offset++] = b >= 0 ? 255 : b <= min ? 0 : 255 + b * scale | 0; - } - return data; - }, - - getData: function getData(width, height, forceRGBoutput) { - if (this.numComponents > 4) { - throw 'Unsupported color mode'; - } - // type of data: Uint8Array(width * height * numComponents) - var data = this._getLinearizedBlockData(width, height); - - if (this.numComponents === 3) { - return this._convertYccToRgb(data); - } else if (this.numComponents === 4) { - if (this._isColorConversionNeeded()) { - if (forceRGBoutput) { - return this._convertYcckToRgb(data); - } else { - return this._convertYcckToCmyk(data); - } - } else if (forceRGBoutput) { - return this._convertCmykToRgb(data); - } - } - return data; - } - }; - - return constructor; -})(); - -exports.JpegImage = JpegImage; -})); - - -(function (root, factory) { - { - factory((root.pdfjsCoreMetrics = {})); - } -}(this, function (exports) { - -// The Metrics object contains glyph widths (in glyph space units). -// As per PDF spec, for most fonts (Type 3 being an exception) a glyph -// space unit corresponds to 1/1000th of text space unit. -var Metrics = { - 'Courier': 600, - 'Courier-Bold': 600, - 'Courier-BoldOblique': 600, - 'Courier-Oblique': 600, - 'Helvetica' : { - 'space': 278, - 'exclam': 278, - 'quotedbl': 355, - 'numbersign': 556, - 'dollar': 556, - 'percent': 889, - 'ampersand': 667, - 'quoteright': 222, - 'parenleft': 333, - 'parenright': 333, - 'asterisk': 389, - 'plus': 584, - 'comma': 278, - 'hyphen': 333, - 'period': 278, - 'slash': 278, - 'zero': 556, - 'one': 556, - 'two': 556, - 'three': 556, - 'four': 556, - 'five': 556, - 'six': 556, - 'seven': 556, - 'eight': 556, - 'nine': 556, - 'colon': 278, - 'semicolon': 278, - 'less': 584, - 'equal': 584, - 'greater': 584, - 'question': 556, - 'at': 1015, - 'A': 667, - 'B': 667, - 'C': 722, - 'D': 722, - 'E': 667, - 'F': 611, - 'G': 778, - 'H': 722, - 'I': 278, - 'J': 500, - 'K': 667, - 'L': 556, - 'M': 833, - 'N': 722, - 'O': 778, - 'P': 667, - 'Q': 778, - 'R': 722, - 'S': 667, - 'T': 611, - 'U': 722, - 'V': 667, - 'W': 944, - 'X': 667, - 'Y': 667, - 'Z': 611, - 'bracketleft': 278, - 'backslash': 278, - 'bracketright': 278, - 'asciicircum': 469, - 'underscore': 556, - 'quoteleft': 222, - 'a': 556, - 'b': 556, - 'c': 500, - 'd': 556, - 'e': 556, - 'f': 278, - 'g': 556, - 'h': 556, - 'i': 222, - 'j': 222, - 'k': 500, - 'l': 222, - 'm': 833, - 'n': 556, - 'o': 556, - 'p': 556, - 'q': 556, - 'r': 333, - 's': 500, - 't': 278, - 'u': 556, - 'v': 500, - 'w': 722, - 'x': 500, - 'y': 500, - 'z': 500, - 'braceleft': 334, - 'bar': 260, - 'braceright': 334, - 'asciitilde': 584, - 'exclamdown': 333, - 'cent': 556, - 'sterling': 556, - 'fraction': 167, - 'yen': 556, - 'florin': 556, - 'section': 556, - 'currency': 556, - 'quotesingle': 191, - 'quotedblleft': 333, - 'guillemotleft': 556, - 'guilsinglleft': 333, - 'guilsinglright': 333, - 'fi': 500, - 'fl': 500, - 'endash': 556, - 'dagger': 556, - 'daggerdbl': 556, - 'periodcentered': 278, - 'paragraph': 537, - 'bullet': 350, - 'quotesinglbase': 222, - 'quotedblbase': 333, - 'quotedblright': 333, - 'guillemotright': 556, - 'ellipsis': 1000, - 'perthousand': 1000, - 'questiondown': 611, - 'grave': 333, - 'acute': 333, - 'circumflex': 333, - 'tilde': 333, - 'macron': 333, - 'breve': 333, - 'dotaccent': 333, - 'dieresis': 333, - 'ring': 333, - 'cedilla': 333, - 'hungarumlaut': 333, - 'ogonek': 333, - 'caron': 333, - 'emdash': 1000, - 'AE': 1000, - 'ordfeminine': 370, - 'Lslash': 556, - 'Oslash': 778, - 'OE': 1000, - 'ordmasculine': 365, - 'ae': 889, - 'dotlessi': 278, - 'lslash': 222, - 'oslash': 611, - 'oe': 944, - 'germandbls': 611, - 'Idieresis': 278, - 'eacute': 556, - 'abreve': 556, - 'uhungarumlaut': 556, - 'ecaron': 556, - 'Ydieresis': 667, - 'divide': 584, - 'Yacute': 667, - 'Acircumflex': 667, - 'aacute': 556, - 'Ucircumflex': 722, - 'yacute': 500, - 'scommaaccent': 500, - 'ecircumflex': 556, - 'Uring': 722, - 'Udieresis': 722, - 'aogonek': 556, - 'Uacute': 722, - 'uogonek': 556, - 'Edieresis': 667, - 'Dcroat': 722, - 'commaaccent': 250, - 'copyright': 737, - 'Emacron': 667, - 'ccaron': 500, - 'aring': 556, - 'Ncommaaccent': 722, - 'lacute': 222, - 'agrave': 556, - 'Tcommaaccent': 611, - 'Cacute': 722, - 'atilde': 556, - 'Edotaccent': 667, - 'scaron': 500, - 'scedilla': 500, - 'iacute': 278, - 'lozenge': 471, - 'Rcaron': 722, - 'Gcommaaccent': 778, - 'ucircumflex': 556, - 'acircumflex': 556, - 'Amacron': 667, - 'rcaron': 333, - 'ccedilla': 500, - 'Zdotaccent': 611, - 'Thorn': 667, - 'Omacron': 778, - 'Racute': 722, - 'Sacute': 667, - 'dcaron': 643, - 'Umacron': 722, - 'uring': 556, - 'threesuperior': 333, - 'Ograve': 778, - 'Agrave': 667, - 'Abreve': 667, - 'multiply': 584, - 'uacute': 556, - 'Tcaron': 611, - 'partialdiff': 476, - 'ydieresis': 500, - 'Nacute': 722, - 'icircumflex': 278, - 'Ecircumflex': 667, - 'adieresis': 556, - 'edieresis': 556, - 'cacute': 500, - 'nacute': 556, - 'umacron': 556, - 'Ncaron': 722, - 'Iacute': 278, - 'plusminus': 584, - 'brokenbar': 260, - 'registered': 737, - 'Gbreve': 778, - 'Idotaccent': 278, - 'summation': 600, - 'Egrave': 667, - 'racute': 333, - 'omacron': 556, - 'Zacute': 611, - 'Zcaron': 611, - 'greaterequal': 549, - 'Eth': 722, - 'Ccedilla': 722, - 'lcommaaccent': 222, - 'tcaron': 317, - 'eogonek': 556, - 'Uogonek': 722, - 'Aacute': 667, - 'Adieresis': 667, - 'egrave': 556, - 'zacute': 500, - 'iogonek': 222, - 'Oacute': 778, - 'oacute': 556, - 'amacron': 556, - 'sacute': 500, - 'idieresis': 278, - 'Ocircumflex': 778, - 'Ugrave': 722, - 'Delta': 612, - 'thorn': 556, - 'twosuperior': 333, - 'Odieresis': 778, - 'mu': 556, - 'igrave': 278, - 'ohungarumlaut': 556, - 'Eogonek': 667, - 'dcroat': 556, - 'threequarters': 834, - 'Scedilla': 667, - 'lcaron': 299, - 'Kcommaaccent': 667, - 'Lacute': 556, - 'trademark': 1000, - 'edotaccent': 556, - 'Igrave': 278, - 'Imacron': 278, - 'Lcaron': 556, - 'onehalf': 834, - 'lessequal': 549, - 'ocircumflex': 556, - 'ntilde': 556, - 'Uhungarumlaut': 722, - 'Eacute': 667, - 'emacron': 556, - 'gbreve': 556, - 'onequarter': 834, - 'Scaron': 667, - 'Scommaaccent': 667, - 'Ohungarumlaut': 778, - 'degree': 400, - 'ograve': 556, - 'Ccaron': 722, - 'ugrave': 556, - 'radical': 453, - 'Dcaron': 722, - 'rcommaaccent': 333, - 'Ntilde': 722, - 'otilde': 556, - 'Rcommaaccent': 722, - 'Lcommaaccent': 556, - 'Atilde': 667, - 'Aogonek': 667, - 'Aring': 667, - 'Otilde': 778, - 'zdotaccent': 500, - 'Ecaron': 667, - 'Iogonek': 278, - 'kcommaaccent': 500, - 'minus': 584, - 'Icircumflex': 278, - 'ncaron': 556, - 'tcommaaccent': 278, - 'logicalnot': 584, - 'odieresis': 556, - 'udieresis': 556, - 'notequal': 549, - 'gcommaaccent': 556, - 'eth': 556, - 'zcaron': 500, - 'ncommaaccent': 556, - 'onesuperior': 333, - 'imacron': 278, - 'Euro': 556 - }, - 'Helvetica-Bold': { - 'space': 278, - 'exclam': 333, - 'quotedbl': 474, - 'numbersign': 556, - 'dollar': 556, - 'percent': 889, - 'ampersand': 722, - 'quoteright': 278, - 'parenleft': 333, - 'parenright': 333, - 'asterisk': 389, - 'plus': 584, - 'comma': 278, - 'hyphen': 333, - 'period': 278, - 'slash': 278, - 'zero': 556, - 'one': 556, - 'two': 556, - 'three': 556, - 'four': 556, - 'five': 556, - 'six': 556, - 'seven': 556, - 'eight': 556, - 'nine': 556, - 'colon': 333, - 'semicolon': 333, - 'less': 584, - 'equal': 584, - 'greater': 584, - 'question': 611, - 'at': 975, - 'A': 722, - 'B': 722, - 'C': 722, - 'D': 722, - 'E': 667, - 'F': 611, - 'G': 778, - 'H': 722, - 'I': 278, - 'J': 556, - 'K': 722, - 'L': 611, - 'M': 833, - 'N': 722, - 'O': 778, - 'P': 667, - 'Q': 778, - 'R': 722, - 'S': 667, - 'T': 611, - 'U': 722, - 'V': 667, - 'W': 944, - 'X': 667, - 'Y': 667, - 'Z': 611, - 'bracketleft': 333, - 'backslash': 278, - 'bracketright': 333, - 'asciicircum': 584, - 'underscore': 556, - 'quoteleft': 278, - 'a': 556, - 'b': 611, - 'c': 556, - 'd': 611, - 'e': 556, - 'f': 333, - 'g': 611, - 'h': 611, - 'i': 278, - 'j': 278, - 'k': 556, - 'l': 278, - 'm': 889, - 'n': 611, - 'o': 611, - 'p': 611, - 'q': 611, - 'r': 389, - 's': 556, - 't': 333, - 'u': 611, - 'v': 556, - 'w': 778, - 'x': 556, - 'y': 556, - 'z': 500, - 'braceleft': 389, - 'bar': 280, - 'braceright': 389, - 'asciitilde': 584, - 'exclamdown': 333, - 'cent': 556, - 'sterling': 556, - 'fraction': 167, - 'yen': 556, - 'florin': 556, - 'section': 556, - 'currency': 556, - 'quotesingle': 238, - 'quotedblleft': 500, - 'guillemotleft': 556, - 'guilsinglleft': 333, - 'guilsinglright': 333, - 'fi': 611, - 'fl': 611, - 'endash': 556, - 'dagger': 556, - 'daggerdbl': 556, - 'periodcentered': 278, - 'paragraph': 556, - 'bullet': 350, - 'quotesinglbase': 278, - 'quotedblbase': 500, - 'quotedblright': 500, - 'guillemotright': 556, - 'ellipsis': 1000, - 'perthousand': 1000, - 'questiondown': 611, - 'grave': 333, - 'acute': 333, - 'circumflex': 333, - 'tilde': 333, - 'macron': 333, - 'breve': 333, - 'dotaccent': 333, - 'dieresis': 333, - 'ring': 333, - 'cedilla': 333, - 'hungarumlaut': 333, - 'ogonek': 333, - 'caron': 333, - 'emdash': 1000, - 'AE': 1000, - 'ordfeminine': 370, - 'Lslash': 611, - 'Oslash': 778, - 'OE': 1000, - 'ordmasculine': 365, - 'ae': 889, - 'dotlessi': 278, - 'lslash': 278, - 'oslash': 611, - 'oe': 944, - 'germandbls': 611, - 'Idieresis': 278, - 'eacute': 556, - 'abreve': 556, - 'uhungarumlaut': 611, - 'ecaron': 556, - 'Ydieresis': 667, - 'divide': 584, - 'Yacute': 667, - 'Acircumflex': 722, - 'aacute': 556, - 'Ucircumflex': 722, - 'yacute': 556, - 'scommaaccent': 556, - 'ecircumflex': 556, - 'Uring': 722, - 'Udieresis': 722, - 'aogonek': 556, - 'Uacute': 722, - 'uogonek': 611, - 'Edieresis': 667, - 'Dcroat': 722, - 'commaaccent': 250, - 'copyright': 737, - 'Emacron': 667, - 'ccaron': 556, - 'aring': 556, - 'Ncommaaccent': 722, - 'lacute': 278, - 'agrave': 556, - 'Tcommaaccent': 611, - 'Cacute': 722, - 'atilde': 556, - 'Edotaccent': 667, - 'scaron': 556, - 'scedilla': 556, - 'iacute': 278, - 'lozenge': 494, - 'Rcaron': 722, - 'Gcommaaccent': 778, - 'ucircumflex': 611, - 'acircumflex': 556, - 'Amacron': 722, - 'rcaron': 389, - 'ccedilla': 556, - 'Zdotaccent': 611, - 'Thorn': 667, - 'Omacron': 778, - 'Racute': 722, - 'Sacute': 667, - 'dcaron': 743, - 'Umacron': 722, - 'uring': 611, - 'threesuperior': 333, - 'Ograve': 778, - 'Agrave': 722, - 'Abreve': 722, - 'multiply': 584, - 'uacute': 611, - 'Tcaron': 611, - 'partialdiff': 494, - 'ydieresis': 556, - 'Nacute': 722, - 'icircumflex': 278, - 'Ecircumflex': 667, - 'adieresis': 556, - 'edieresis': 556, - 'cacute': 556, - 'nacute': 611, - 'umacron': 611, - 'Ncaron': 722, - 'Iacute': 278, - 'plusminus': 584, - 'brokenbar': 280, - 'registered': 737, - 'Gbreve': 778, - 'Idotaccent': 278, - 'summation': 600, - 'Egrave': 667, - 'racute': 389, - 'omacron': 611, - 'Zacute': 611, - 'Zcaron': 611, - 'greaterequal': 549, - 'Eth': 722, - 'Ccedilla': 722, - 'lcommaaccent': 278, - 'tcaron': 389, - 'eogonek': 556, - 'Uogonek': 722, - 'Aacute': 722, - 'Adieresis': 722, - 'egrave': 556, - 'zacute': 500, - 'iogonek': 278, - 'Oacute': 778, - 'oacute': 611, - 'amacron': 556, - 'sacute': 556, - 'idieresis': 278, - 'Ocircumflex': 778, - 'Ugrave': 722, - 'Delta': 612, - 'thorn': 611, - 'twosuperior': 333, - 'Odieresis': 778, - 'mu': 611, - 'igrave': 278, - 'ohungarumlaut': 611, - 'Eogonek': 667, - 'dcroat': 611, - 'threequarters': 834, - 'Scedilla': 667, - 'lcaron': 400, - 'Kcommaaccent': 722, - 'Lacute': 611, - 'trademark': 1000, - 'edotaccent': 556, - 'Igrave': 278, - 'Imacron': 278, - 'Lcaron': 611, - 'onehalf': 834, - 'lessequal': 549, - 'ocircumflex': 611, - 'ntilde': 611, - 'Uhungarumlaut': 722, - 'Eacute': 667, - 'emacron': 556, - 'gbreve': 611, - 'onequarter': 834, - 'Scaron': 667, - 'Scommaaccent': 667, - 'Ohungarumlaut': 778, - 'degree': 400, - 'ograve': 611, - 'Ccaron': 722, - 'ugrave': 611, - 'radical': 549, - 'Dcaron': 722, - 'rcommaaccent': 389, - 'Ntilde': 722, - 'otilde': 611, - 'Rcommaaccent': 722, - 'Lcommaaccent': 611, - 'Atilde': 722, - 'Aogonek': 722, - 'Aring': 722, - 'Otilde': 778, - 'zdotaccent': 500, - 'Ecaron': 667, - 'Iogonek': 278, - 'kcommaaccent': 556, - 'minus': 584, - 'Icircumflex': 278, - 'ncaron': 611, - 'tcommaaccent': 333, - 'logicalnot': 584, - 'odieresis': 611, - 'udieresis': 611, - 'notequal': 549, - 'gcommaaccent': 611, - 'eth': 611, - 'zcaron': 500, - 'ncommaaccent': 611, - 'onesuperior': 333, - 'imacron': 278, - 'Euro': 556 - }, - 'Helvetica-BoldOblique': { - 'space': 278, - 'exclam': 333, - 'quotedbl': 474, - 'numbersign': 556, - 'dollar': 556, - 'percent': 889, - 'ampersand': 722, - 'quoteright': 278, - 'parenleft': 333, - 'parenright': 333, - 'asterisk': 389, - 'plus': 584, - 'comma': 278, - 'hyphen': 333, - 'period': 278, - 'slash': 278, - 'zero': 556, - 'one': 556, - 'two': 556, - 'three': 556, - 'four': 556, - 'five': 556, - 'six': 556, - 'seven': 556, - 'eight': 556, - 'nine': 556, - 'colon': 333, - 'semicolon': 333, - 'less': 584, - 'equal': 584, - 'greater': 584, - 'question': 611, - 'at': 975, - 'A': 722, - 'B': 722, - 'C': 722, - 'D': 722, - 'E': 667, - 'F': 611, - 'G': 778, - 'H': 722, - 'I': 278, - 'J': 556, - 'K': 722, - 'L': 611, - 'M': 833, - 'N': 722, - 'O': 778, - 'P': 667, - 'Q': 778, - 'R': 722, - 'S': 667, - 'T': 611, - 'U': 722, - 'V': 667, - 'W': 944, - 'X': 667, - 'Y': 667, - 'Z': 611, - 'bracketleft': 333, - 'backslash': 278, - 'bracketright': 333, - 'asciicircum': 584, - 'underscore': 556, - 'quoteleft': 278, - 'a': 556, - 'b': 611, - 'c': 556, - 'd': 611, - 'e': 556, - 'f': 333, - 'g': 611, - 'h': 611, - 'i': 278, - 'j': 278, - 'k': 556, - 'l': 278, - 'm': 889, - 'n': 611, - 'o': 611, - 'p': 611, - 'q': 611, - 'r': 389, - 's': 556, - 't': 333, - 'u': 611, - 'v': 556, - 'w': 778, - 'x': 556, - 'y': 556, - 'z': 500, - 'braceleft': 389, - 'bar': 280, - 'braceright': 389, - 'asciitilde': 584, - 'exclamdown': 333, - 'cent': 556, - 'sterling': 556, - 'fraction': 167, - 'yen': 556, - 'florin': 556, - 'section': 556, - 'currency': 556, - 'quotesingle': 238, - 'quotedblleft': 500, - 'guillemotleft': 556, - 'guilsinglleft': 333, - 'guilsinglright': 333, - 'fi': 611, - 'fl': 611, - 'endash': 556, - 'dagger': 556, - 'daggerdbl': 556, - 'periodcentered': 278, - 'paragraph': 556, - 'bullet': 350, - 'quotesinglbase': 278, - 'quotedblbase': 500, - 'quotedblright': 500, - 'guillemotright': 556, - 'ellipsis': 1000, - 'perthousand': 1000, - 'questiondown': 611, - 'grave': 333, - 'acute': 333, - 'circumflex': 333, - 'tilde': 333, - 'macron': 333, - 'breve': 333, - 'dotaccent': 333, - 'dieresis': 333, - 'ring': 333, - 'cedilla': 333, - 'hungarumlaut': 333, - 'ogonek': 333, - 'caron': 333, - 'emdash': 1000, - 'AE': 1000, - 'ordfeminine': 370, - 'Lslash': 611, - 'Oslash': 778, - 'OE': 1000, - 'ordmasculine': 365, - 'ae': 889, - 'dotlessi': 278, - 'lslash': 278, - 'oslash': 611, - 'oe': 944, - 'germandbls': 611, - 'Idieresis': 278, - 'eacute': 556, - 'abreve': 556, - 'uhungarumlaut': 611, - 'ecaron': 556, - 'Ydieresis': 667, - 'divide': 584, - 'Yacute': 667, - 'Acircumflex': 722, - 'aacute': 556, - 'Ucircumflex': 722, - 'yacute': 556, - 'scommaaccent': 556, - 'ecircumflex': 556, - 'Uring': 722, - 'Udieresis': 722, - 'aogonek': 556, - 'Uacute': 722, - 'uogonek': 611, - 'Edieresis': 667, - 'Dcroat': 722, - 'commaaccent': 250, - 'copyright': 737, - 'Emacron': 667, - 'ccaron': 556, - 'aring': 556, - 'Ncommaaccent': 722, - 'lacute': 278, - 'agrave': 556, - 'Tcommaaccent': 611, - 'Cacute': 722, - 'atilde': 556, - 'Edotaccent': 667, - 'scaron': 556, - 'scedilla': 556, - 'iacute': 278, - 'lozenge': 494, - 'Rcaron': 722, - 'Gcommaaccent': 778, - 'ucircumflex': 611, - 'acircumflex': 556, - 'Amacron': 722, - 'rcaron': 389, - 'ccedilla': 556, - 'Zdotaccent': 611, - 'Thorn': 667, - 'Omacron': 778, - 'Racute': 722, - 'Sacute': 667, - 'dcaron': 743, - 'Umacron': 722, - 'uring': 611, - 'threesuperior': 333, - 'Ograve': 778, - 'Agrave': 722, - 'Abreve': 722, - 'multiply': 584, - 'uacute': 611, - 'Tcaron': 611, - 'partialdiff': 494, - 'ydieresis': 556, - 'Nacute': 722, - 'icircumflex': 278, - 'Ecircumflex': 667, - 'adieresis': 556, - 'edieresis': 556, - 'cacute': 556, - 'nacute': 611, - 'umacron': 611, - 'Ncaron': 722, - 'Iacute': 278, - 'plusminus': 584, - 'brokenbar': 280, - 'registered': 737, - 'Gbreve': 778, - 'Idotaccent': 278, - 'summation': 600, - 'Egrave': 667, - 'racute': 389, - 'omacron': 611, - 'Zacute': 611, - 'Zcaron': 611, - 'greaterequal': 549, - 'Eth': 722, - 'Ccedilla': 722, - 'lcommaaccent': 278, - 'tcaron': 389, - 'eogonek': 556, - 'Uogonek': 722, - 'Aacute': 722, - 'Adieresis': 722, - 'egrave': 556, - 'zacute': 500, - 'iogonek': 278, - 'Oacute': 778, - 'oacute': 611, - 'amacron': 556, - 'sacute': 556, - 'idieresis': 278, - 'Ocircumflex': 778, - 'Ugrave': 722, - 'Delta': 612, - 'thorn': 611, - 'twosuperior': 333, - 'Odieresis': 778, - 'mu': 611, - 'igrave': 278, - 'ohungarumlaut': 611, - 'Eogonek': 667, - 'dcroat': 611, - 'threequarters': 834, - 'Scedilla': 667, - 'lcaron': 400, - 'Kcommaaccent': 722, - 'Lacute': 611, - 'trademark': 1000, - 'edotaccent': 556, - 'Igrave': 278, - 'Imacron': 278, - 'Lcaron': 611, - 'onehalf': 834, - 'lessequal': 549, - 'ocircumflex': 611, - 'ntilde': 611, - 'Uhungarumlaut': 722, - 'Eacute': 667, - 'emacron': 556, - 'gbreve': 611, - 'onequarter': 834, - 'Scaron': 667, - 'Scommaaccent': 667, - 'Ohungarumlaut': 778, - 'degree': 400, - 'ograve': 611, - 'Ccaron': 722, - 'ugrave': 611, - 'radical': 549, - 'Dcaron': 722, - 'rcommaaccent': 389, - 'Ntilde': 722, - 'otilde': 611, - 'Rcommaaccent': 722, - 'Lcommaaccent': 611, - 'Atilde': 722, - 'Aogonek': 722, - 'Aring': 722, - 'Otilde': 778, - 'zdotaccent': 500, - 'Ecaron': 667, - 'Iogonek': 278, - 'kcommaaccent': 556, - 'minus': 584, - 'Icircumflex': 278, - 'ncaron': 611, - 'tcommaaccent': 333, - 'logicalnot': 584, - 'odieresis': 611, - 'udieresis': 611, - 'notequal': 549, - 'gcommaaccent': 611, - 'eth': 611, - 'zcaron': 500, - 'ncommaaccent': 611, - 'onesuperior': 333, - 'imacron': 278, - 'Euro': 556 - }, - 'Helvetica-Oblique' : { - 'space': 278, - 'exclam': 278, - 'quotedbl': 355, - 'numbersign': 556, - 'dollar': 556, - 'percent': 889, - 'ampersand': 667, - 'quoteright': 222, - 'parenleft': 333, - 'parenright': 333, - 'asterisk': 389, - 'plus': 584, - 'comma': 278, - 'hyphen': 333, - 'period': 278, - 'slash': 278, - 'zero': 556, - 'one': 556, - 'two': 556, - 'three': 556, - 'four': 556, - 'five': 556, - 'six': 556, - 'seven': 556, - 'eight': 556, - 'nine': 556, - 'colon': 278, - 'semicolon': 278, - 'less': 584, - 'equal': 584, - 'greater': 584, - 'question': 556, - 'at': 1015, - 'A': 667, - 'B': 667, - 'C': 722, - 'D': 722, - 'E': 667, - 'F': 611, - 'G': 778, - 'H': 722, - 'I': 278, - 'J': 500, - 'K': 667, - 'L': 556, - 'M': 833, - 'N': 722, - 'O': 778, - 'P': 667, - 'Q': 778, - 'R': 722, - 'S': 667, - 'T': 611, - 'U': 722, - 'V': 667, - 'W': 944, - 'X': 667, - 'Y': 667, - 'Z': 611, - 'bracketleft': 278, - 'backslash': 278, - 'bracketright': 278, - 'asciicircum': 469, - 'underscore': 556, - 'quoteleft': 222, - 'a': 556, - 'b': 556, - 'c': 500, - 'd': 556, - 'e': 556, - 'f': 278, - 'g': 556, - 'h': 556, - 'i': 222, - 'j': 222, - 'k': 500, - 'l': 222, - 'm': 833, - 'n': 556, - 'o': 556, - 'p': 556, - 'q': 556, - 'r': 333, - 's': 500, - 't': 278, - 'u': 556, - 'v': 500, - 'w': 722, - 'x': 500, - 'y': 500, - 'z': 500, - 'braceleft': 334, - 'bar': 260, - 'braceright': 334, - 'asciitilde': 584, - 'exclamdown': 333, - 'cent': 556, - 'sterling': 556, - 'fraction': 167, - 'yen': 556, - 'florin': 556, - 'section': 556, - 'currency': 556, - 'quotesingle': 191, - 'quotedblleft': 333, - 'guillemotleft': 556, - 'guilsinglleft': 333, - 'guilsinglright': 333, - 'fi': 500, - 'fl': 500, - 'endash': 556, - 'dagger': 556, - 'daggerdbl': 556, - 'periodcentered': 278, - 'paragraph': 537, - 'bullet': 350, - 'quotesinglbase': 222, - 'quotedblbase': 333, - 'quotedblright': 333, - 'guillemotright': 556, - 'ellipsis': 1000, - 'perthousand': 1000, - 'questiondown': 611, - 'grave': 333, - 'acute': 333, - 'circumflex': 333, - 'tilde': 333, - 'macron': 333, - 'breve': 333, - 'dotaccent': 333, - 'dieresis': 333, - 'ring': 333, - 'cedilla': 333, - 'hungarumlaut': 333, - 'ogonek': 333, - 'caron': 333, - 'emdash': 1000, - 'AE': 1000, - 'ordfeminine': 370, - 'Lslash': 556, - 'Oslash': 778, - 'OE': 1000, - 'ordmasculine': 365, - 'ae': 889, - 'dotlessi': 278, - 'lslash': 222, - 'oslash': 611, - 'oe': 944, - 'germandbls': 611, - 'Idieresis': 278, - 'eacute': 556, - 'abreve': 556, - 'uhungarumlaut': 556, - 'ecaron': 556, - 'Ydieresis': 667, - 'divide': 584, - 'Yacute': 667, - 'Acircumflex': 667, - 'aacute': 556, - 'Ucircumflex': 722, - 'yacute': 500, - 'scommaaccent': 500, - 'ecircumflex': 556, - 'Uring': 722, - 'Udieresis': 722, - 'aogonek': 556, - 'Uacute': 722, - 'uogonek': 556, - 'Edieresis': 667, - 'Dcroat': 722, - 'commaaccent': 250, - 'copyright': 737, - 'Emacron': 667, - 'ccaron': 500, - 'aring': 556, - 'Ncommaaccent': 722, - 'lacute': 222, - 'agrave': 556, - 'Tcommaaccent': 611, - 'Cacute': 722, - 'atilde': 556, - 'Edotaccent': 667, - 'scaron': 500, - 'scedilla': 500, - 'iacute': 278, - 'lozenge': 471, - 'Rcaron': 722, - 'Gcommaaccent': 778, - 'ucircumflex': 556, - 'acircumflex': 556, - 'Amacron': 667, - 'rcaron': 333, - 'ccedilla': 500, - 'Zdotaccent': 611, - 'Thorn': 667, - 'Omacron': 778, - 'Racute': 722, - 'Sacute': 667, - 'dcaron': 643, - 'Umacron': 722, - 'uring': 556, - 'threesuperior': 333, - 'Ograve': 778, - 'Agrave': 667, - 'Abreve': 667, - 'multiply': 584, - 'uacute': 556, - 'Tcaron': 611, - 'partialdiff': 476, - 'ydieresis': 500, - 'Nacute': 722, - 'icircumflex': 278, - 'Ecircumflex': 667, - 'adieresis': 556, - 'edieresis': 556, - 'cacute': 500, - 'nacute': 556, - 'umacron': 556, - 'Ncaron': 722, - 'Iacute': 278, - 'plusminus': 584, - 'brokenbar': 260, - 'registered': 737, - 'Gbreve': 778, - 'Idotaccent': 278, - 'summation': 600, - 'Egrave': 667, - 'racute': 333, - 'omacron': 556, - 'Zacute': 611, - 'Zcaron': 611, - 'greaterequal': 549, - 'Eth': 722, - 'Ccedilla': 722, - 'lcommaaccent': 222, - 'tcaron': 317, - 'eogonek': 556, - 'Uogonek': 722, - 'Aacute': 667, - 'Adieresis': 667, - 'egrave': 556, - 'zacute': 500, - 'iogonek': 222, - 'Oacute': 778, - 'oacute': 556, - 'amacron': 556, - 'sacute': 500, - 'idieresis': 278, - 'Ocircumflex': 778, - 'Ugrave': 722, - 'Delta': 612, - 'thorn': 556, - 'twosuperior': 333, - 'Odieresis': 778, - 'mu': 556, - 'igrave': 278, - 'ohungarumlaut': 556, - 'Eogonek': 667, - 'dcroat': 556, - 'threequarters': 834, - 'Scedilla': 667, - 'lcaron': 299, - 'Kcommaaccent': 667, - 'Lacute': 556, - 'trademark': 1000, - 'edotaccent': 556, - 'Igrave': 278, - 'Imacron': 278, - 'Lcaron': 556, - 'onehalf': 834, - 'lessequal': 549, - 'ocircumflex': 556, - 'ntilde': 556, - 'Uhungarumlaut': 722, - 'Eacute': 667, - 'emacron': 556, - 'gbreve': 556, - 'onequarter': 834, - 'Scaron': 667, - 'Scommaaccent': 667, - 'Ohungarumlaut': 778, - 'degree': 400, - 'ograve': 556, - 'Ccaron': 722, - 'ugrave': 556, - 'radical': 453, - 'Dcaron': 722, - 'rcommaaccent': 333, - 'Ntilde': 722, - 'otilde': 556, - 'Rcommaaccent': 722, - 'Lcommaaccent': 556, - 'Atilde': 667, - 'Aogonek': 667, - 'Aring': 667, - 'Otilde': 778, - 'zdotaccent': 500, - 'Ecaron': 667, - 'Iogonek': 278, - 'kcommaaccent': 500, - 'minus': 584, - 'Icircumflex': 278, - 'ncaron': 556, - 'tcommaaccent': 278, - 'logicalnot': 584, - 'odieresis': 556, - 'udieresis': 556, - 'notequal': 549, - 'gcommaaccent': 556, - 'eth': 556, - 'zcaron': 500, - 'ncommaaccent': 556, - 'onesuperior': 333, - 'imacron': 278, - 'Euro': 556 - }, - 'Symbol': { - 'space': 250, - 'exclam': 333, - 'universal': 713, - 'numbersign': 500, - 'existential': 549, - 'percent': 833, - 'ampersand': 778, - 'suchthat': 439, - 'parenleft': 333, - 'parenright': 333, - 'asteriskmath': 500, - 'plus': 549, - 'comma': 250, - 'minus': 549, - 'period': 250, - 'slash': 278, - 'zero': 500, - 'one': 500, - 'two': 500, - 'three': 500, - 'four': 500, - 'five': 500, - 'six': 500, - 'seven': 500, - 'eight': 500, - 'nine': 500, - 'colon': 278, - 'semicolon': 278, - 'less': 549, - 'equal': 549, - 'greater': 549, - 'question': 444, - 'congruent': 549, - 'Alpha': 722, - 'Beta': 667, - 'Chi': 722, - 'Delta': 612, - 'Epsilon': 611, - 'Phi': 763, - 'Gamma': 603, - 'Eta': 722, - 'Iota': 333, - 'theta1': 631, - 'Kappa': 722, - 'Lambda': 686, - 'Mu': 889, - 'Nu': 722, - 'Omicron': 722, - 'Pi': 768, - 'Theta': 741, - 'Rho': 556, - 'Sigma': 592, - 'Tau': 611, - 'Upsilon': 690, - 'sigma1': 439, - 'Omega': 768, - 'Xi': 645, - 'Psi': 795, - 'Zeta': 611, - 'bracketleft': 333, - 'therefore': 863, - 'bracketright': 333, - 'perpendicular': 658, - 'underscore': 500, - 'radicalex': 500, - 'alpha': 631, - 'beta': 549, - 'chi': 549, - 'delta': 494, - 'epsilon': 439, - 'phi': 521, - 'gamma': 411, - 'eta': 603, - 'iota': 329, - 'phi1': 603, - 'kappa': 549, - 'lambda': 549, - 'mu': 576, - 'nu': 521, - 'omicron': 549, - 'pi': 549, - 'theta': 521, - 'rho': 549, - 'sigma': 603, - 'tau': 439, - 'upsilon': 576, - 'omega1': 713, - 'omega': 686, - 'xi': 493, - 'psi': 686, - 'zeta': 494, - 'braceleft': 480, - 'bar': 200, - 'braceright': 480, - 'similar': 549, - 'Euro': 750, - 'Upsilon1': 620, - 'minute': 247, - 'lessequal': 549, - 'fraction': 167, - 'infinity': 713, - 'florin': 500, - 'club': 753, - 'diamond': 753, - 'heart': 753, - 'spade': 753, - 'arrowboth': 1042, - 'arrowleft': 987, - 'arrowup': 603, - 'arrowright': 987, - 'arrowdown': 603, - 'degree': 400, - 'plusminus': 549, - 'second': 411, - 'greaterequal': 549, - 'multiply': 549, - 'proportional': 713, - 'partialdiff': 494, - 'bullet': 460, - 'divide': 549, - 'notequal': 549, - 'equivalence': 549, - 'approxequal': 549, - 'ellipsis': 1000, - 'arrowvertex': 603, - 'arrowhorizex': 1000, - 'carriagereturn': 658, - 'aleph': 823, - 'Ifraktur': 686, - 'Rfraktur': 795, - 'weierstrass': 987, - 'circlemultiply': 768, - 'circleplus': 768, - 'emptyset': 823, - 'intersection': 768, - 'union': 768, - 'propersuperset': 713, - 'reflexsuperset': 713, - 'notsubset': 713, - 'propersubset': 713, - 'reflexsubset': 713, - 'element': 713, - 'notelement': 713, - 'angle': 768, - 'gradient': 713, - 'registerserif': 790, - 'copyrightserif': 790, - 'trademarkserif': 890, - 'product': 823, - 'radical': 549, - 'dotmath': 250, - 'logicalnot': 713, - 'logicaland': 603, - 'logicalor': 603, - 'arrowdblboth': 1042, - 'arrowdblleft': 987, - 'arrowdblup': 603, - 'arrowdblright': 987, - 'arrowdbldown': 603, - 'lozenge': 494, - 'angleleft': 329, - 'registersans': 790, - 'copyrightsans': 790, - 'trademarksans': 786, - 'summation': 713, - 'parenlefttp': 384, - 'parenleftex': 384, - 'parenleftbt': 384, - 'bracketlefttp': 384, - 'bracketleftex': 384, - 'bracketleftbt': 384, - 'bracelefttp': 494, - 'braceleftmid': 494, - 'braceleftbt': 494, - 'braceex': 494, - 'angleright': 329, - 'integral': 274, - 'integraltp': 686, - 'integralex': 686, - 'integralbt': 686, - 'parenrighttp': 384, - 'parenrightex': 384, - 'parenrightbt': 384, - 'bracketrighttp': 384, - 'bracketrightex': 384, - 'bracketrightbt': 384, - 'bracerighttp': 494, - 'bracerightmid': 494, - 'bracerightbt': 494, - 'apple': 790 - }, - 'Times-Roman': { - 'space': 250, - 'exclam': 333, - 'quotedbl': 408, - 'numbersign': 500, - 'dollar': 500, - 'percent': 833, - 'ampersand': 778, - 'quoteright': 333, - 'parenleft': 333, - 'parenright': 333, - 'asterisk': 500, - 'plus': 564, - 'comma': 250, - 'hyphen': 333, - 'period': 250, - 'slash': 278, - 'zero': 500, - 'one': 500, - 'two': 500, - 'three': 500, - 'four': 500, - 'five': 500, - 'six': 500, - 'seven': 500, - 'eight': 500, - 'nine': 500, - 'colon': 278, - 'semicolon': 278, - 'less': 564, - 'equal': 564, - 'greater': 564, - 'question': 444, - 'at': 921, - 'A': 722, - 'B': 667, - 'C': 667, - 'D': 722, - 'E': 611, - 'F': 556, - 'G': 722, - 'H': 722, - 'I': 333, - 'J': 389, - 'K': 722, - 'L': 611, - 'M': 889, - 'N': 722, - 'O': 722, - 'P': 556, - 'Q': 722, - 'R': 667, - 'S': 556, - 'T': 611, - 'U': 722, - 'V': 722, - 'W': 944, - 'X': 722, - 'Y': 722, - 'Z': 611, - 'bracketleft': 333, - 'backslash': 278, - 'bracketright': 333, - 'asciicircum': 469, - 'underscore': 500, - 'quoteleft': 333, - 'a': 444, - 'b': 500, - 'c': 444, - 'd': 500, - 'e': 444, - 'f': 333, - 'g': 500, - 'h': 500, - 'i': 278, - 'j': 278, - 'k': 500, - 'l': 278, - 'm': 778, - 'n': 500, - 'o': 500, - 'p': 500, - 'q': 500, - 'r': 333, - 's': 389, - 't': 278, - 'u': 500, - 'v': 500, - 'w': 722, - 'x': 500, - 'y': 500, - 'z': 444, - 'braceleft': 480, - 'bar': 200, - 'braceright': 480, - 'asciitilde': 541, - 'exclamdown': 333, - 'cent': 500, - 'sterling': 500, - 'fraction': 167, - 'yen': 500, - 'florin': 500, - 'section': 500, - 'currency': 500, - 'quotesingle': 180, - 'quotedblleft': 444, - 'guillemotleft': 500, - 'guilsinglleft': 333, - 'guilsinglright': 333, - 'fi': 556, - 'fl': 556, - 'endash': 500, - 'dagger': 500, - 'daggerdbl': 500, - 'periodcentered': 250, - 'paragraph': 453, - 'bullet': 350, - 'quotesinglbase': 333, - 'quotedblbase': 444, - 'quotedblright': 444, - 'guillemotright': 500, - 'ellipsis': 1000, - 'perthousand': 1000, - 'questiondown': 444, - 'grave': 333, - 'acute': 333, - 'circumflex': 333, - 'tilde': 333, - 'macron': 333, - 'breve': 333, - 'dotaccent': 333, - 'dieresis': 333, - 'ring': 333, - 'cedilla': 333, - 'hungarumlaut': 333, - 'ogonek': 333, - 'caron': 333, - 'emdash': 1000, - 'AE': 889, - 'ordfeminine': 276, - 'Lslash': 611, - 'Oslash': 722, - 'OE': 889, - 'ordmasculine': 310, - 'ae': 667, - 'dotlessi': 278, - 'lslash': 278, - 'oslash': 500, - 'oe': 722, - 'germandbls': 500, - 'Idieresis': 333, - 'eacute': 444, - 'abreve': 444, - 'uhungarumlaut': 500, - 'ecaron': 444, - 'Ydieresis': 722, - 'divide': 564, - 'Yacute': 722, - 'Acircumflex': 722, - 'aacute': 444, - 'Ucircumflex': 722, - 'yacute': 500, - 'scommaaccent': 389, - 'ecircumflex': 444, - 'Uring': 722, - 'Udieresis': 722, - 'aogonek': 444, - 'Uacute': 722, - 'uogonek': 500, - 'Edieresis': 611, - 'Dcroat': 722, - 'commaaccent': 250, - 'copyright': 760, - 'Emacron': 611, - 'ccaron': 444, - 'aring': 444, - 'Ncommaaccent': 722, - 'lacute': 278, - 'agrave': 444, - 'Tcommaaccent': 611, - 'Cacute': 667, - 'atilde': 444, - 'Edotaccent': 611, - 'scaron': 389, - 'scedilla': 389, - 'iacute': 278, - 'lozenge': 471, - 'Rcaron': 667, - 'Gcommaaccent': 722, - 'ucircumflex': 500, - 'acircumflex': 444, - 'Amacron': 722, - 'rcaron': 333, - 'ccedilla': 444, - 'Zdotaccent': 611, - 'Thorn': 556, - 'Omacron': 722, - 'Racute': 667, - 'Sacute': 556, - 'dcaron': 588, - 'Umacron': 722, - 'uring': 500, - 'threesuperior': 300, - 'Ograve': 722, - 'Agrave': 722, - 'Abreve': 722, - 'multiply': 564, - 'uacute': 500, - 'Tcaron': 611, - 'partialdiff': 476, - 'ydieresis': 500, - 'Nacute': 722, - 'icircumflex': 278, - 'Ecircumflex': 611, - 'adieresis': 444, - 'edieresis': 444, - 'cacute': 444, - 'nacute': 500, - 'umacron': 500, - 'Ncaron': 722, - 'Iacute': 333, - 'plusminus': 564, - 'brokenbar': 200, - 'registered': 760, - 'Gbreve': 722, - 'Idotaccent': 333, - 'summation': 600, - 'Egrave': 611, - 'racute': 333, - 'omacron': 500, - 'Zacute': 611, - 'Zcaron': 611, - 'greaterequal': 549, - 'Eth': 722, - 'Ccedilla': 667, - 'lcommaaccent': 278, - 'tcaron': 326, - 'eogonek': 444, - 'Uogonek': 722, - 'Aacute': 722, - 'Adieresis': 722, - 'egrave': 444, - 'zacute': 444, - 'iogonek': 278, - 'Oacute': 722, - 'oacute': 500, - 'amacron': 444, - 'sacute': 389, - 'idieresis': 278, - 'Ocircumflex': 722, - 'Ugrave': 722, - 'Delta': 612, - 'thorn': 500, - 'twosuperior': 300, - 'Odieresis': 722, - 'mu': 500, - 'igrave': 278, - 'ohungarumlaut': 500, - 'Eogonek': 611, - 'dcroat': 500, - 'threequarters': 750, - 'Scedilla': 556, - 'lcaron': 344, - 'Kcommaaccent': 722, - 'Lacute': 611, - 'trademark': 980, - 'edotaccent': 444, - 'Igrave': 333, - 'Imacron': 333, - 'Lcaron': 611, - 'onehalf': 750, - 'lessequal': 549, - 'ocircumflex': 500, - 'ntilde': 500, - 'Uhungarumlaut': 722, - 'Eacute': 611, - 'emacron': 444, - 'gbreve': 500, - 'onequarter': 750, - 'Scaron': 556, - 'Scommaaccent': 556, - 'Ohungarumlaut': 722, - 'degree': 400, - 'ograve': 500, - 'Ccaron': 667, - 'ugrave': 500, - 'radical': 453, - 'Dcaron': 722, - 'rcommaaccent': 333, - 'Ntilde': 722, - 'otilde': 500, - 'Rcommaaccent': 667, - 'Lcommaaccent': 611, - 'Atilde': 722, - 'Aogonek': 722, - 'Aring': 722, - 'Otilde': 722, - 'zdotaccent': 444, - 'Ecaron': 611, - 'Iogonek': 333, - 'kcommaaccent': 500, - 'minus': 564, - 'Icircumflex': 333, - 'ncaron': 500, - 'tcommaaccent': 278, - 'logicalnot': 564, - 'odieresis': 500, - 'udieresis': 500, - 'notequal': 549, - 'gcommaaccent': 500, - 'eth': 500, - 'zcaron': 444, - 'ncommaaccent': 500, - 'onesuperior': 300, - 'imacron': 278, - 'Euro': 500 - }, - 'Times-Bold': { - 'space': 250, - 'exclam': 333, - 'quotedbl': 555, - 'numbersign': 500, - 'dollar': 500, - 'percent': 1000, - 'ampersand': 833, - 'quoteright': 333, - 'parenleft': 333, - 'parenright': 333, - 'asterisk': 500, - 'plus': 570, - 'comma': 250, - 'hyphen': 333, - 'period': 250, - 'slash': 278, - 'zero': 500, - 'one': 500, - 'two': 500, - 'three': 500, - 'four': 500, - 'five': 500, - 'six': 500, - 'seven': 500, - 'eight': 500, - 'nine': 500, - 'colon': 333, - 'semicolon': 333, - 'less': 570, - 'equal': 570, - 'greater': 570, - 'question': 500, - 'at': 930, - 'A': 722, - 'B': 667, - 'C': 722, - 'D': 722, - 'E': 667, - 'F': 611, - 'G': 778, - 'H': 778, - 'I': 389, - 'J': 500, - 'K': 778, - 'L': 667, - 'M': 944, - 'N': 722, - 'O': 778, - 'P': 611, - 'Q': 778, - 'R': 722, - 'S': 556, - 'T': 667, - 'U': 722, - 'V': 722, - 'W': 1000, - 'X': 722, - 'Y': 722, - 'Z': 667, - 'bracketleft': 333, - 'backslash': 278, - 'bracketright': 333, - 'asciicircum': 581, - 'underscore': 500, - 'quoteleft': 333, - 'a': 500, - 'b': 556, - 'c': 444, - 'd': 556, - 'e': 444, - 'f': 333, - 'g': 500, - 'h': 556, - 'i': 278, - 'j': 333, - 'k': 556, - 'l': 278, - 'm': 833, - 'n': 556, - 'o': 500, - 'p': 556, - 'q': 556, - 'r': 444, - 's': 389, - 't': 333, - 'u': 556, - 'v': 500, - 'w': 722, - 'x': 500, - 'y': 500, - 'z': 444, - 'braceleft': 394, - 'bar': 220, - 'braceright': 394, - 'asciitilde': 520, - 'exclamdown': 333, - 'cent': 500, - 'sterling': 500, - 'fraction': 167, - 'yen': 500, - 'florin': 500, - 'section': 500, - 'currency': 500, - 'quotesingle': 278, - 'quotedblleft': 500, - 'guillemotleft': 500, - 'guilsinglleft': 333, - 'guilsinglright': 333, - 'fi': 556, - 'fl': 556, - 'endash': 500, - 'dagger': 500, - 'daggerdbl': 500, - 'periodcentered': 250, - 'paragraph': 540, - 'bullet': 350, - 'quotesinglbase': 333, - 'quotedblbase': 500, - 'quotedblright': 500, - 'guillemotright': 500, - 'ellipsis': 1000, - 'perthousand': 1000, - 'questiondown': 500, - 'grave': 333, - 'acute': 333, - 'circumflex': 333, - 'tilde': 333, - 'macron': 333, - 'breve': 333, - 'dotaccent': 333, - 'dieresis': 333, - 'ring': 333, - 'cedilla': 333, - 'hungarumlaut': 333, - 'ogonek': 333, - 'caron': 333, - 'emdash': 1000, - 'AE': 1000, - 'ordfeminine': 300, - 'Lslash': 667, - 'Oslash': 778, - 'OE': 1000, - 'ordmasculine': 330, - 'ae': 722, - 'dotlessi': 278, - 'lslash': 278, - 'oslash': 500, - 'oe': 722, - 'germandbls': 556, - 'Idieresis': 389, - 'eacute': 444, - 'abreve': 500, - 'uhungarumlaut': 556, - 'ecaron': 444, - 'Ydieresis': 722, - 'divide': 570, - 'Yacute': 722, - 'Acircumflex': 722, - 'aacute': 500, - 'Ucircumflex': 722, - 'yacute': 500, - 'scommaaccent': 389, - 'ecircumflex': 444, - 'Uring': 722, - 'Udieresis': 722, - 'aogonek': 500, - 'Uacute': 722, - 'uogonek': 556, - 'Edieresis': 667, - 'Dcroat': 722, - 'commaaccent': 250, - 'copyright': 747, - 'Emacron': 667, - 'ccaron': 444, - 'aring': 500, - 'Ncommaaccent': 722, - 'lacute': 278, - 'agrave': 500, - 'Tcommaaccent': 667, - 'Cacute': 722, - 'atilde': 500, - 'Edotaccent': 667, - 'scaron': 389, - 'scedilla': 389, - 'iacute': 278, - 'lozenge': 494, - 'Rcaron': 722, - 'Gcommaaccent': 778, - 'ucircumflex': 556, - 'acircumflex': 500, - 'Amacron': 722, - 'rcaron': 444, - 'ccedilla': 444, - 'Zdotaccent': 667, - 'Thorn': 611, - 'Omacron': 778, - 'Racute': 722, - 'Sacute': 556, - 'dcaron': 672, - 'Umacron': 722, - 'uring': 556, - 'threesuperior': 300, - 'Ograve': 778, - 'Agrave': 722, - 'Abreve': 722, - 'multiply': 570, - 'uacute': 556, - 'Tcaron': 667, - 'partialdiff': 494, - 'ydieresis': 500, - 'Nacute': 722, - 'icircumflex': 278, - 'Ecircumflex': 667, - 'adieresis': 500, - 'edieresis': 444, - 'cacute': 444, - 'nacute': 556, - 'umacron': 556, - 'Ncaron': 722, - 'Iacute': 389, - 'plusminus': 570, - 'brokenbar': 220, - 'registered': 747, - 'Gbreve': 778, - 'Idotaccent': 389, - 'summation': 600, - 'Egrave': 667, - 'racute': 444, - 'omacron': 500, - 'Zacute': 667, - 'Zcaron': 667, - 'greaterequal': 549, - 'Eth': 722, - 'Ccedilla': 722, - 'lcommaaccent': 278, - 'tcaron': 416, - 'eogonek': 444, - 'Uogonek': 722, - 'Aacute': 722, - 'Adieresis': 722, - 'egrave': 444, - 'zacute': 444, - 'iogonek': 278, - 'Oacute': 778, - 'oacute': 500, - 'amacron': 500, - 'sacute': 389, - 'idieresis': 278, - 'Ocircumflex': 778, - 'Ugrave': 722, - 'Delta': 612, - 'thorn': 556, - 'twosuperior': 300, - 'Odieresis': 778, - 'mu': 556, - 'igrave': 278, - 'ohungarumlaut': 500, - 'Eogonek': 667, - 'dcroat': 556, - 'threequarters': 750, - 'Scedilla': 556, - 'lcaron': 394, - 'Kcommaaccent': 778, - 'Lacute': 667, - 'trademark': 1000, - 'edotaccent': 444, - 'Igrave': 389, - 'Imacron': 389, - 'Lcaron': 667, - 'onehalf': 750, - 'lessequal': 549, - 'ocircumflex': 500, - 'ntilde': 556, - 'Uhungarumlaut': 722, - 'Eacute': 667, - 'emacron': 444, - 'gbreve': 500, - 'onequarter': 750, - 'Scaron': 556, - 'Scommaaccent': 556, - 'Ohungarumlaut': 778, - 'degree': 400, - 'ograve': 500, - 'Ccaron': 722, - 'ugrave': 556, - 'radical': 549, - 'Dcaron': 722, - 'rcommaaccent': 444, - 'Ntilde': 722, - 'otilde': 500, - 'Rcommaaccent': 722, - 'Lcommaaccent': 667, - 'Atilde': 722, - 'Aogonek': 722, - 'Aring': 722, - 'Otilde': 778, - 'zdotaccent': 444, - 'Ecaron': 667, - 'Iogonek': 389, - 'kcommaaccent': 556, - 'minus': 570, - 'Icircumflex': 389, - 'ncaron': 556, - 'tcommaaccent': 333, - 'logicalnot': 570, - 'odieresis': 500, - 'udieresis': 556, - 'notequal': 549, - 'gcommaaccent': 500, - 'eth': 500, - 'zcaron': 444, - 'ncommaaccent': 556, - 'onesuperior': 300, - 'imacron': 278, - 'Euro': 500 - }, - 'Times-BoldItalic': { - 'space': 250, - 'exclam': 389, - 'quotedbl': 555, - 'numbersign': 500, - 'dollar': 500, - 'percent': 833, - 'ampersand': 778, - 'quoteright': 333, - 'parenleft': 333, - 'parenright': 333, - 'asterisk': 500, - 'plus': 570, - 'comma': 250, - 'hyphen': 333, - 'period': 250, - 'slash': 278, - 'zero': 500, - 'one': 500, - 'two': 500, - 'three': 500, - 'four': 500, - 'five': 500, - 'six': 500, - 'seven': 500, - 'eight': 500, - 'nine': 500, - 'colon': 333, - 'semicolon': 333, - 'less': 570, - 'equal': 570, - 'greater': 570, - 'question': 500, - 'at': 832, - 'A': 667, - 'B': 667, - 'C': 667, - 'D': 722, - 'E': 667, - 'F': 667, - 'G': 722, - 'H': 778, - 'I': 389, - 'J': 500, - 'K': 667, - 'L': 611, - 'M': 889, - 'N': 722, - 'O': 722, - 'P': 611, - 'Q': 722, - 'R': 667, - 'S': 556, - 'T': 611, - 'U': 722, - 'V': 667, - 'W': 889, - 'X': 667, - 'Y': 611, - 'Z': 611, - 'bracketleft': 333, - 'backslash': 278, - 'bracketright': 333, - 'asciicircum': 570, - 'underscore': 500, - 'quoteleft': 333, - 'a': 500, - 'b': 500, - 'c': 444, - 'd': 500, - 'e': 444, - 'f': 333, - 'g': 500, - 'h': 556, - 'i': 278, - 'j': 278, - 'k': 500, - 'l': 278, - 'm': 778, - 'n': 556, - 'o': 500, - 'p': 500, - 'q': 500, - 'r': 389, - 's': 389, - 't': 278, - 'u': 556, - 'v': 444, - 'w': 667, - 'x': 500, - 'y': 444, - 'z': 389, - 'braceleft': 348, - 'bar': 220, - 'braceright': 348, - 'asciitilde': 570, - 'exclamdown': 389, - 'cent': 500, - 'sterling': 500, - 'fraction': 167, - 'yen': 500, - 'florin': 500, - 'section': 500, - 'currency': 500, - 'quotesingle': 278, - 'quotedblleft': 500, - 'guillemotleft': 500, - 'guilsinglleft': 333, - 'guilsinglright': 333, - 'fi': 556, - 'fl': 556, - 'endash': 500, - 'dagger': 500, - 'daggerdbl': 500, - 'periodcentered': 250, - 'paragraph': 500, - 'bullet': 350, - 'quotesinglbase': 333, - 'quotedblbase': 500, - 'quotedblright': 500, - 'guillemotright': 500, - 'ellipsis': 1000, - 'perthousand': 1000, - 'questiondown': 500, - 'grave': 333, - 'acute': 333, - 'circumflex': 333, - 'tilde': 333, - 'macron': 333, - 'breve': 333, - 'dotaccent': 333, - 'dieresis': 333, - 'ring': 333, - 'cedilla': 333, - 'hungarumlaut': 333, - 'ogonek': 333, - 'caron': 333, - 'emdash': 1000, - 'AE': 944, - 'ordfeminine': 266, - 'Lslash': 611, - 'Oslash': 722, - 'OE': 944, - 'ordmasculine': 300, - 'ae': 722, - 'dotlessi': 278, - 'lslash': 278, - 'oslash': 500, - 'oe': 722, - 'germandbls': 500, - 'Idieresis': 389, - 'eacute': 444, - 'abreve': 500, - 'uhungarumlaut': 556, - 'ecaron': 444, - 'Ydieresis': 611, - 'divide': 570, - 'Yacute': 611, - 'Acircumflex': 667, - 'aacute': 500, - 'Ucircumflex': 722, - 'yacute': 444, - 'scommaaccent': 389, - 'ecircumflex': 444, - 'Uring': 722, - 'Udieresis': 722, - 'aogonek': 500, - 'Uacute': 722, - 'uogonek': 556, - 'Edieresis': 667, - 'Dcroat': 722, - 'commaaccent': 250, - 'copyright': 747, - 'Emacron': 667, - 'ccaron': 444, - 'aring': 500, - 'Ncommaaccent': 722, - 'lacute': 278, - 'agrave': 500, - 'Tcommaaccent': 611, - 'Cacute': 667, - 'atilde': 500, - 'Edotaccent': 667, - 'scaron': 389, - 'scedilla': 389, - 'iacute': 278, - 'lozenge': 494, - 'Rcaron': 667, - 'Gcommaaccent': 722, - 'ucircumflex': 556, - 'acircumflex': 500, - 'Amacron': 667, - 'rcaron': 389, - 'ccedilla': 444, - 'Zdotaccent': 611, - 'Thorn': 611, - 'Omacron': 722, - 'Racute': 667, - 'Sacute': 556, - 'dcaron': 608, - 'Umacron': 722, - 'uring': 556, - 'threesuperior': 300, - 'Ograve': 722, - 'Agrave': 667, - 'Abreve': 667, - 'multiply': 570, - 'uacute': 556, - 'Tcaron': 611, - 'partialdiff': 494, - 'ydieresis': 444, - 'Nacute': 722, - 'icircumflex': 278, - 'Ecircumflex': 667, - 'adieresis': 500, - 'edieresis': 444, - 'cacute': 444, - 'nacute': 556, - 'umacron': 556, - 'Ncaron': 722, - 'Iacute': 389, - 'plusminus': 570, - 'brokenbar': 220, - 'registered': 747, - 'Gbreve': 722, - 'Idotaccent': 389, - 'summation': 600, - 'Egrave': 667, - 'racute': 389, - 'omacron': 500, - 'Zacute': 611, - 'Zcaron': 611, - 'greaterequal': 549, - 'Eth': 722, - 'Ccedilla': 667, - 'lcommaaccent': 278, - 'tcaron': 366, - 'eogonek': 444, - 'Uogonek': 722, - 'Aacute': 667, - 'Adieresis': 667, - 'egrave': 444, - 'zacute': 389, - 'iogonek': 278, - 'Oacute': 722, - 'oacute': 500, - 'amacron': 500, - 'sacute': 389, - 'idieresis': 278, - 'Ocircumflex': 722, - 'Ugrave': 722, - 'Delta': 612, - 'thorn': 500, - 'twosuperior': 300, - 'Odieresis': 722, - 'mu': 576, - 'igrave': 278, - 'ohungarumlaut': 500, - 'Eogonek': 667, - 'dcroat': 500, - 'threequarters': 750, - 'Scedilla': 556, - 'lcaron': 382, - 'Kcommaaccent': 667, - 'Lacute': 611, - 'trademark': 1000, - 'edotaccent': 444, - 'Igrave': 389, - 'Imacron': 389, - 'Lcaron': 611, - 'onehalf': 750, - 'lessequal': 549, - 'ocircumflex': 500, - 'ntilde': 556, - 'Uhungarumlaut': 722, - 'Eacute': 667, - 'emacron': 444, - 'gbreve': 500, - 'onequarter': 750, - 'Scaron': 556, - 'Scommaaccent': 556, - 'Ohungarumlaut': 722, - 'degree': 400, - 'ograve': 500, - 'Ccaron': 667, - 'ugrave': 556, - 'radical': 549, - 'Dcaron': 722, - 'rcommaaccent': 389, - 'Ntilde': 722, - 'otilde': 500, - 'Rcommaaccent': 667, - 'Lcommaaccent': 611, - 'Atilde': 667, - 'Aogonek': 667, - 'Aring': 667, - 'Otilde': 722, - 'zdotaccent': 389, - 'Ecaron': 667, - 'Iogonek': 389, - 'kcommaaccent': 500, - 'minus': 606, - 'Icircumflex': 389, - 'ncaron': 556, - 'tcommaaccent': 278, - 'logicalnot': 606, - 'odieresis': 500, - 'udieresis': 556, - 'notequal': 549, - 'gcommaaccent': 500, - 'eth': 500, - 'zcaron': 389, - 'ncommaaccent': 556, - 'onesuperior': 300, - 'imacron': 278, - 'Euro': 500 - }, - 'Times-Italic': { - 'space': 250, - 'exclam': 333, - 'quotedbl': 420, - 'numbersign': 500, - 'dollar': 500, - 'percent': 833, - 'ampersand': 778, - 'quoteright': 333, - 'parenleft': 333, - 'parenright': 333, - 'asterisk': 500, - 'plus': 675, - 'comma': 250, - 'hyphen': 333, - 'period': 250, - 'slash': 278, - 'zero': 500, - 'one': 500, - 'two': 500, - 'three': 500, - 'four': 500, - 'five': 500, - 'six': 500, - 'seven': 500, - 'eight': 500, - 'nine': 500, - 'colon': 333, - 'semicolon': 333, - 'less': 675, - 'equal': 675, - 'greater': 675, - 'question': 500, - 'at': 920, - 'A': 611, - 'B': 611, - 'C': 667, - 'D': 722, - 'E': 611, - 'F': 611, - 'G': 722, - 'H': 722, - 'I': 333, - 'J': 444, - 'K': 667, - 'L': 556, - 'M': 833, - 'N': 667, - 'O': 722, - 'P': 611, - 'Q': 722, - 'R': 611, - 'S': 500, - 'T': 556, - 'U': 722, - 'V': 611, - 'W': 833, - 'X': 611, - 'Y': 556, - 'Z': 556, - 'bracketleft': 389, - 'backslash': 278, - 'bracketright': 389, - 'asciicircum': 422, - 'underscore': 500, - 'quoteleft': 333, - 'a': 500, - 'b': 500, - 'c': 444, - 'd': 500, - 'e': 444, - 'f': 278, - 'g': 500, - 'h': 500, - 'i': 278, - 'j': 278, - 'k': 444, - 'l': 278, - 'm': 722, - 'n': 500, - 'o': 500, - 'p': 500, - 'q': 500, - 'r': 389, - 's': 389, - 't': 278, - 'u': 500, - 'v': 444, - 'w': 667, - 'x': 444, - 'y': 444, - 'z': 389, - 'braceleft': 400, - 'bar': 275, - 'braceright': 400, - 'asciitilde': 541, - 'exclamdown': 389, - 'cent': 500, - 'sterling': 500, - 'fraction': 167, - 'yen': 500, - 'florin': 500, - 'section': 500, - 'currency': 500, - 'quotesingle': 214, - 'quotedblleft': 556, - 'guillemotleft': 500, - 'guilsinglleft': 333, - 'guilsinglright': 333, - 'fi': 500, - 'fl': 500, - 'endash': 500, - 'dagger': 500, - 'daggerdbl': 500, - 'periodcentered': 250, - 'paragraph': 523, - 'bullet': 350, - 'quotesinglbase': 333, - 'quotedblbase': 556, - 'quotedblright': 556, - 'guillemotright': 500, - 'ellipsis': 889, - 'perthousand': 1000, - 'questiondown': 500, - 'grave': 333, - 'acute': 333, - 'circumflex': 333, - 'tilde': 333, - 'macron': 333, - 'breve': 333, - 'dotaccent': 333, - 'dieresis': 333, - 'ring': 333, - 'cedilla': 333, - 'hungarumlaut': 333, - 'ogonek': 333, - 'caron': 333, - 'emdash': 889, - 'AE': 889, - 'ordfeminine': 276, - 'Lslash': 556, - 'Oslash': 722, - 'OE': 944, - 'ordmasculine': 310, - 'ae': 667, - 'dotlessi': 278, - 'lslash': 278, - 'oslash': 500, - 'oe': 667, - 'germandbls': 500, - 'Idieresis': 333, - 'eacute': 444, - 'abreve': 500, - 'uhungarumlaut': 500, - 'ecaron': 444, - 'Ydieresis': 556, - 'divide': 675, - 'Yacute': 556, - 'Acircumflex': 611, - 'aacute': 500, - 'Ucircumflex': 722, - 'yacute': 444, - 'scommaaccent': 389, - 'ecircumflex': 444, - 'Uring': 722, - 'Udieresis': 722, - 'aogonek': 500, - 'Uacute': 722, - 'uogonek': 500, - 'Edieresis': 611, - 'Dcroat': 722, - 'commaaccent': 250, - 'copyright': 760, - 'Emacron': 611, - 'ccaron': 444, - 'aring': 500, - 'Ncommaaccent': 667, - 'lacute': 278, - 'agrave': 500, - 'Tcommaaccent': 556, - 'Cacute': 667, - 'atilde': 500, - 'Edotaccent': 611, - 'scaron': 389, - 'scedilla': 389, - 'iacute': 278, - 'lozenge': 471, - 'Rcaron': 611, - 'Gcommaaccent': 722, - 'ucircumflex': 500, - 'acircumflex': 500, - 'Amacron': 611, - 'rcaron': 389, - 'ccedilla': 444, - 'Zdotaccent': 556, - 'Thorn': 611, - 'Omacron': 722, - 'Racute': 611, - 'Sacute': 500, - 'dcaron': 544, - 'Umacron': 722, - 'uring': 500, - 'threesuperior': 300, - 'Ograve': 722, - 'Agrave': 611, - 'Abreve': 611, - 'multiply': 675, - 'uacute': 500, - 'Tcaron': 556, - 'partialdiff': 476, - 'ydieresis': 444, - 'Nacute': 667, - 'icircumflex': 278, - 'Ecircumflex': 611, - 'adieresis': 500, - 'edieresis': 444, - 'cacute': 444, - 'nacute': 500, - 'umacron': 500, - 'Ncaron': 667, - 'Iacute': 333, - 'plusminus': 675, - 'brokenbar': 275, - 'registered': 760, - 'Gbreve': 722, - 'Idotaccent': 333, - 'summation': 600, - 'Egrave': 611, - 'racute': 389, - 'omacron': 500, - 'Zacute': 556, - 'Zcaron': 556, - 'greaterequal': 549, - 'Eth': 722, - 'Ccedilla': 667, - 'lcommaaccent': 278, - 'tcaron': 300, - 'eogonek': 444, - 'Uogonek': 722, - 'Aacute': 611, - 'Adieresis': 611, - 'egrave': 444, - 'zacute': 389, - 'iogonek': 278, - 'Oacute': 722, - 'oacute': 500, - 'amacron': 500, - 'sacute': 389, - 'idieresis': 278, - 'Ocircumflex': 722, - 'Ugrave': 722, - 'Delta': 612, - 'thorn': 500, - 'twosuperior': 300, - 'Odieresis': 722, - 'mu': 500, - 'igrave': 278, - 'ohungarumlaut': 500, - 'Eogonek': 611, - 'dcroat': 500, - 'threequarters': 750, - 'Scedilla': 500, - 'lcaron': 300, - 'Kcommaaccent': 667, - 'Lacute': 556, - 'trademark': 980, - 'edotaccent': 444, - 'Igrave': 333, - 'Imacron': 333, - 'Lcaron': 611, - 'onehalf': 750, - 'lessequal': 549, - 'ocircumflex': 500, - 'ntilde': 500, - 'Uhungarumlaut': 722, - 'Eacute': 611, - 'emacron': 444, - 'gbreve': 500, - 'onequarter': 750, - 'Scaron': 500, - 'Scommaaccent': 500, - 'Ohungarumlaut': 722, - 'degree': 400, - 'ograve': 500, - 'Ccaron': 667, - 'ugrave': 500, - 'radical': 453, - 'Dcaron': 722, - 'rcommaaccent': 389, - 'Ntilde': 667, - 'otilde': 500, - 'Rcommaaccent': 611, - 'Lcommaaccent': 556, - 'Atilde': 611, - 'Aogonek': 611, - 'Aring': 611, - 'Otilde': 722, - 'zdotaccent': 389, - 'Ecaron': 611, - 'Iogonek': 333, - 'kcommaaccent': 444, - 'minus': 675, - 'Icircumflex': 333, - 'ncaron': 500, - 'tcommaaccent': 278, - 'logicalnot': 675, - 'odieresis': 500, - 'udieresis': 500, - 'notequal': 549, - 'gcommaaccent': 500, - 'eth': 500, - 'zcaron': 389, - 'ncommaaccent': 500, - 'onesuperior': 300, - 'imacron': 278, - 'Euro': 500 - }, - 'ZapfDingbats': { - 'space': 278, - 'a1': 974, - 'a2': 961, - 'a202': 974, - 'a3': 980, - 'a4': 719, - 'a5': 789, - 'a119': 790, - 'a118': 791, - 'a117': 690, - 'a11': 960, - 'a12': 939, - 'a13': 549, - 'a14': 855, - 'a15': 911, - 'a16': 933, - 'a105': 911, - 'a17': 945, - 'a18': 974, - 'a19': 755, - 'a20': 846, - 'a21': 762, - 'a22': 761, - 'a23': 571, - 'a24': 677, - 'a25': 763, - 'a26': 760, - 'a27': 759, - 'a28': 754, - 'a6': 494, - 'a7': 552, - 'a8': 537, - 'a9': 577, - 'a10': 692, - 'a29': 786, - 'a30': 788, - 'a31': 788, - 'a32': 790, - 'a33': 793, - 'a34': 794, - 'a35': 816, - 'a36': 823, - 'a37': 789, - 'a38': 841, - 'a39': 823, - 'a40': 833, - 'a41': 816, - 'a42': 831, - 'a43': 923, - 'a44': 744, - 'a45': 723, - 'a46': 749, - 'a47': 790, - 'a48': 792, - 'a49': 695, - 'a50': 776, - 'a51': 768, - 'a52': 792, - 'a53': 759, - 'a54': 707, - 'a55': 708, - 'a56': 682, - 'a57': 701, - 'a58': 826, - 'a59': 815, - 'a60': 789, - 'a61': 789, - 'a62': 707, - 'a63': 687, - 'a64': 696, - 'a65': 689, - 'a66': 786, - 'a67': 787, - 'a68': 713, - 'a69': 791, - 'a70': 785, - 'a71': 791, - 'a72': 873, - 'a73': 761, - 'a74': 762, - 'a203': 762, - 'a75': 759, - 'a204': 759, - 'a76': 892, - 'a77': 892, - 'a78': 788, - 'a79': 784, - 'a81': 438, - 'a82': 138, - 'a83': 277, - 'a84': 415, - 'a97': 392, - 'a98': 392, - 'a99': 668, - 'a100': 668, - 'a89': 390, - 'a90': 390, - 'a93': 317, - 'a94': 317, - 'a91': 276, - 'a92': 276, - 'a205': 509, - 'a85': 509, - 'a206': 410, - 'a86': 410, - 'a87': 234, - 'a88': 234, - 'a95': 334, - 'a96': 334, - 'a101': 732, - 'a102': 544, - 'a103': 544, - 'a104': 910, - 'a106': 667, - 'a107': 760, - 'a108': 760, - 'a112': 776, - 'a111': 595, - 'a110': 694, - 'a109': 626, - 'a120': 788, - 'a121': 788, - 'a122': 788, - 'a123': 788, - 'a124': 788, - 'a125': 788, - 'a126': 788, - 'a127': 788, - 'a128': 788, - 'a129': 788, - 'a130': 788, - 'a131': 788, - 'a132': 788, - 'a133': 788, - 'a134': 788, - 'a135': 788, - 'a136': 788, - 'a137': 788, - 'a138': 788, - 'a139': 788, - 'a140': 788, - 'a141': 788, - 'a142': 788, - 'a143': 788, - 'a144': 788, - 'a145': 788, - 'a146': 788, - 'a147': 788, - 'a148': 788, - 'a149': 788, - 'a150': 788, - 'a151': 788, - 'a152': 788, - 'a153': 788, - 'a154': 788, - 'a155': 788, - 'a156': 788, - 'a157': 788, - 'a158': 788, - 'a159': 788, - 'a160': 894, - 'a161': 838, - 'a163': 1016, - 'a164': 458, - 'a196': 748, - 'a165': 924, - 'a192': 748, - 'a166': 918, - 'a167': 927, - 'a168': 928, - 'a169': 928, - 'a170': 834, - 'a171': 873, - 'a172': 828, - 'a173': 924, - 'a162': 924, - 'a174': 917, - 'a175': 930, - 'a176': 931, - 'a177': 463, - 'a178': 883, - 'a179': 836, - 'a193': 836, - 'a180': 867, - 'a199': 867, - 'a181': 696, - 'a200': 696, - 'a182': 874, - 'a201': 874, - 'a183': 760, - 'a184': 946, - 'a197': 771, - 'a185': 865, - 'a194': 771, - 'a198': 888, - 'a186': 967, - 'a195': 888, - 'a187': 831, - 'a188': 873, - 'a189': 927, - 'a190': 970, - 'a191': 918 - } -}; - -exports.Metrics = Metrics; -})); - - - - -var NetworkManager = (function NetworkManagerClosure() { - - var OK_RESPONSE = 200; - var PARTIAL_CONTENT_RESPONSE = 206; - - function NetworkManager(url, args) { - this.url = url; - args = args || {}; - this.isHttp = /^https?:/i.test(url); - this.httpHeaders = (this.isHttp && args.httpHeaders) || {}; - this.withCredentials = args.withCredentials || false; - this.getXhr = args.getXhr || - function NetworkManager_getXhr() { - return new XMLHttpRequest(); - }; - - this.currXhrId = 0; - this.pendingRequests = {}; - this.loadedRequests = {}; - } - - function getArrayBuffer(xhr) { - var data = xhr.response; - if (typeof data !== 'string') { - return data; - } - var length = data.length; - var array = new Uint8Array(length); - for (var i = 0; i < length; i++) { - array[i] = data.charCodeAt(i) & 0xFF; - } - return array.buffer; - } - - var supportsMozChunked = (function supportsMozChunkedClosure() { - try { - var x = new XMLHttpRequest(); - // Firefox 37- required .open() to be called before setting responseType. - // https://bugzilla.mozilla.org/show_bug.cgi?id=707484 - // Even though the URL is not visited, .open() could fail if the URL is - // blocked, e.g. via the connect-src CSP directive or the NoScript addon. - // When this error occurs, this feature detection method will mistakenly - // report that moz-chunked-arraybuffer is not supported in Firefox 37-. - x.open('GET', 'https://example.com'); - x.responseType = 'moz-chunked-arraybuffer'; - return x.responseType === 'moz-chunked-arraybuffer'; - } catch (e) { - return false; - } - })(); - - NetworkManager.prototype = { - requestRange: function NetworkManager_requestRange(begin, end, listeners) { - var args = { - begin: begin, - end: end - }; - for (var prop in listeners) { - args[prop] = listeners[prop]; - } - return this.request(args); - }, - - requestFull: function NetworkManager_requestFull(listeners) { - return this.request(listeners); - }, - - request: function NetworkManager_request(args) { - var xhr = this.getXhr(); - var xhrId = this.currXhrId++; - var pendingRequest = this.pendingRequests[xhrId] = { - xhr: xhr - }; - - xhr.open('GET', this.url); - xhr.withCredentials = this.withCredentials; - for (var property in this.httpHeaders) { - var value = this.httpHeaders[property]; - if (typeof value === 'undefined') { - continue; - } - xhr.setRequestHeader(property, value); - } - if (this.isHttp && 'begin' in args && 'end' in args) { - var rangeStr = args.begin + '-' + (args.end - 1); - xhr.setRequestHeader('Range', 'bytes=' + rangeStr); - pendingRequest.expectedStatus = 206; - } else { - pendingRequest.expectedStatus = 200; - } - - var useMozChunkedLoading = supportsMozChunked && !!args.onProgressiveData; - if (useMozChunkedLoading) { - xhr.responseType = 'moz-chunked-arraybuffer'; - pendingRequest.onProgressiveData = args.onProgressiveData; - pendingRequest.mozChunked = true; - } else { - xhr.responseType = 'arraybuffer'; - } - - if (args.onError) { - xhr.onerror = function(evt) { - args.onError(xhr.status); - }; - } - xhr.onreadystatechange = this.onStateChange.bind(this, xhrId); - xhr.onprogress = this.onProgress.bind(this, xhrId); - - pendingRequest.onHeadersReceived = args.onHeadersReceived; - pendingRequest.onDone = args.onDone; - pendingRequest.onError = args.onError; - pendingRequest.onProgress = args.onProgress; - - xhr.send(null); - - return xhrId; - }, - - onProgress: function NetworkManager_onProgress(xhrId, evt) { - var pendingRequest = this.pendingRequests[xhrId]; - if (!pendingRequest) { - // Maybe abortRequest was called... - return; - } - - if (pendingRequest.mozChunked) { - var chunk = getArrayBuffer(pendingRequest.xhr); - pendingRequest.onProgressiveData(chunk); - } - - var onProgress = pendingRequest.onProgress; - if (onProgress) { - onProgress(evt); - } - }, - - onStateChange: function NetworkManager_onStateChange(xhrId, evt) { - var pendingRequest = this.pendingRequests[xhrId]; - if (!pendingRequest) { - // Maybe abortRequest was called... - return; - } - - var xhr = pendingRequest.xhr; - if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) { - pendingRequest.onHeadersReceived(); - delete pendingRequest.onHeadersReceived; - } - - if (xhr.readyState !== 4) { - return; - } - - if (!(xhrId in this.pendingRequests)) { - // The XHR request might have been aborted in onHeadersReceived() - // callback, in which case we should abort request - return; - } - - delete this.pendingRequests[xhrId]; - - // success status == 0 can be on ftp, file and other protocols - if (xhr.status === 0 && this.isHttp) { - if (pendingRequest.onError) { - pendingRequest.onError(xhr.status); - } - return; - } - var xhrStatus = xhr.status || OK_RESPONSE; - - // From http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.2: - // "A server MAY ignore the Range header". This means it's possible to - // get a 200 rather than a 206 response from a range request. - var ok_response_on_range_request = - xhrStatus === OK_RESPONSE && - pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE; - - if (!ok_response_on_range_request && - xhrStatus !== pendingRequest.expectedStatus) { - if (pendingRequest.onError) { - pendingRequest.onError(xhr.status); - } - return; - } - - this.loadedRequests[xhrId] = true; - - var chunk = getArrayBuffer(xhr); - if (xhrStatus === PARTIAL_CONTENT_RESPONSE) { - var rangeHeader = xhr.getResponseHeader('Content-Range'); - var matches = /bytes (\d+)-(\d+)\/(\d+)/.exec(rangeHeader); - var begin = parseInt(matches[1], 10); - pendingRequest.onDone({ - begin: begin, - chunk: chunk - }); - } else if (pendingRequest.onProgressiveData) { - pendingRequest.onDone(null); - } else if (chunk) { - pendingRequest.onDone({ - begin: 0, - chunk: chunk - }); - } else if (pendingRequest.onError) { - pendingRequest.onError(xhr.status); - } - }, - - hasPendingRequests: function NetworkManager_hasPendingRequests() { - for (var xhrId in this.pendingRequests) { - return true; - } - return false; - }, - - getRequestXhr: function NetworkManager_getXhr(xhrId) { - return this.pendingRequests[xhrId].xhr; - }, - - isStreamingRequest: function NetworkManager_isStreamingRequest(xhrId) { - return !!(this.pendingRequests[xhrId].onProgressiveData); - }, - - isPendingRequest: function NetworkManager_isPendingRequest(xhrId) { - return xhrId in this.pendingRequests; - }, - - isLoadedRequest: function NetworkManager_isLoadedRequest(xhrId) { - return xhrId in this.loadedRequests; - }, - - abortAllRequests: function NetworkManager_abortAllRequests() { - for (var xhrId in this.pendingRequests) { - this.abortRequest(xhrId | 0); - } - }, - - abortRequest: function NetworkManager_abortRequest(xhrId) { - var xhr = this.pendingRequests[xhrId].xhr; - delete this.pendingRequests[xhrId]; - xhr.abort(); - } - }; - - return NetworkManager; -})(); - -(function (root, factory) { - { - factory((root.pdfjsCoreNetwork = {})); - } -}(this, function (exports) { - exports.NetworkManager = NetworkManager; -})); - - -(function (root, factory) { - { - factory((root.pdfjsSharedGlobal = {})); - } -}(this, function (exports) { - - var globalScope = (typeof window !== 'undefined') ? window : - (typeof global !== 'undefined') ? global : - (typeof self !== 'undefined') ? self : this; - - var isWorker = (typeof window === 'undefined'); - - // The global PDFJS object exposes the API - // In production, it will be declared outside a global wrapper - // In development, it will be declared here - if (!globalScope.PDFJS) { - globalScope.PDFJS = {}; - } - - if (typeof pdfjsVersion !== 'undefined') { - globalScope.PDFJS.version = pdfjsVersion; - } - if (typeof pdfjsVersion !== 'undefined') { - globalScope.PDFJS.build = pdfjsBuild; - } - - globalScope.PDFJS.pdfBug = false; - - exports.globalScope = globalScope; - exports.isWorker = isWorker; - exports.PDFJS = globalScope.PDFJS; -})); - - -(function (root, factory) { - { - factory((root.pdfjsCoreBidi = {}), root.pdfjsSharedGlobal); - } -}(this, function (exports, sharedGlobal) { - -var PDFJS = sharedGlobal.PDFJS; - -var bidi = PDFJS.bidi = (function bidiClosure() { - // Character types for symbols from 0000 to 00FF. - var baseTypes = [ - 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'S', 'B', 'S', 'WS', - 'B', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', - 'BN', 'BN', 'B', 'B', 'B', 'S', 'WS', 'ON', 'ON', 'ET', 'ET', 'ET', 'ON', - 'ON', 'ON', 'ON', 'ON', 'ON', 'CS', 'ON', 'CS', 'ON', 'EN', 'EN', 'EN', - 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'ON', 'ON', 'ON', 'ON', 'ON', - 'ON', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', - 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'ON', 'ON', - 'ON', 'ON', 'ON', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', - 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', - 'L', 'ON', 'ON', 'ON', 'ON', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'B', 'BN', - 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', - 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', - 'BN', 'CS', 'ON', 'ET', 'ET', 'ET', 'ET', 'ON', 'ON', 'ON', 'ON', 'L', 'ON', - 'ON', 'ON', 'ON', 'ON', 'ET', 'ET', 'EN', 'EN', 'ON', 'L', 'ON', 'ON', 'ON', - 'EN', 'L', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', - 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', - 'L', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', - 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', - 'L', 'L', 'L', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L' - ]; - - // Character types for symbols from 0600 to 06FF - var arabicTypes = [ - 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', - 'CS', 'AL', 'ON', 'ON', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'AL', - 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', - 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', - 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', - 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', - 'AL', 'AL', 'AL', 'AL', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', - 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'AL', 'AL', 'AL', 'AL', - 'AL', 'AL', 'AL', 'AN', 'AN', 'AN', 'AN', 'AN', 'AN', 'AN', 'AN', 'AN', - 'AN', 'ET', 'AN', 'AN', 'AL', 'AL', 'AL', 'NSM', 'AL', 'AL', 'AL', 'AL', - 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', - 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', - 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', - 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', - 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', - 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', - 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', - 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', - 'AL', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', - 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'ON', 'NSM', - 'NSM', 'NSM', 'NSM', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', - 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL' - ]; - - function isOdd(i) { - return (i & 1) !== 0; - } - - function isEven(i) { - return (i & 1) === 0; - } - - function findUnequal(arr, start, value) { - for (var j = start, jj = arr.length; j < jj; ++j) { - if (arr[j] !== value) { - return j; - } - } - return j; - } - - function setValues(arr, start, end, value) { - for (var j = start; j < end; ++j) { - arr[j] = value; - } - } - - function reverseValues(arr, start, end) { - for (var i = start, j = end - 1; i < j; ++i, --j) { - var temp = arr[i]; - arr[i] = arr[j]; - arr[j] = temp; - } - } - - function createBidiText(str, isLTR, vertical) { - return { - str: str, - dir: (vertical ? 'ttb' : (isLTR ? 'ltr' : 'rtl')) - }; - } - - // These are used in bidi(), which is called frequently. We re-use them on - // each call to avoid unnecessary allocations. - var chars = []; - var types = []; - - function bidi(str, startLevel, vertical) { - var isLTR = true; - var strLength = str.length; - if (strLength === 0 || vertical) { - return createBidiText(str, isLTR, vertical); - } - - // Get types and fill arrays - chars.length = strLength; - types.length = strLength; - var numBidi = 0; - - var i, ii; - for (i = 0; i < strLength; ++i) { - chars[i] = str.charAt(i); - - var charCode = str.charCodeAt(i); - var charType = 'L'; - if (charCode <= 0x00ff) { - charType = baseTypes[charCode]; - } else if (0x0590 <= charCode && charCode <= 0x05f4) { - charType = 'R'; - } else if (0x0600 <= charCode && charCode <= 0x06ff) { - charType = arabicTypes[charCode & 0xff]; - } else if (0x0700 <= charCode && charCode <= 0x08AC) { - charType = 'AL'; - } - if (charType === 'R' || charType === 'AL' || charType === 'AN') { - numBidi++; - } - types[i] = charType; - } - - // Detect the bidi method - // - If there are no rtl characters then no bidi needed - // - If less than 30% chars are rtl then string is primarily ltr - // - If more than 30% chars are rtl then string is primarily rtl - if (numBidi === 0) { - isLTR = true; - return createBidiText(str, isLTR); - } - - if (startLevel === -1) { - if ((strLength / numBidi) < 0.3) { - isLTR = true; - startLevel = 0; - } else { - isLTR = false; - startLevel = 1; - } - } - - var levels = []; - for (i = 0; i < strLength; ++i) { - levels[i] = startLevel; - } - - /* - X1-X10: skip most of this, since we are NOT doing the embeddings. - */ - var e = (isOdd(startLevel) ? 'R' : 'L'); - var sor = e; - var eor = sor; - - /* - W1. Examine each non-spacing mark (NSM) in the level run, and change the - type of the NSM to the type of the previous character. If the NSM is at the - start of the level run, it will get the type of sor. - */ - var lastType = sor; - for (i = 0; i < strLength; ++i) { - if (types[i] === 'NSM') { - types[i] = lastType; - } else { - lastType = types[i]; - } - } - - /* - W2. Search backwards from each instance of a European number until the - first strong type (R, L, AL, or sor) is found. If an AL is found, change - the type of the European number to Arabic number. - */ - lastType = sor; - var t; - for (i = 0; i < strLength; ++i) { - t = types[i]; - if (t === 'EN') { - types[i] = (lastType === 'AL') ? 'AN' : 'EN'; - } else if (t === 'R' || t === 'L' || t === 'AL') { - lastType = t; - } - } - - /* - W3. Change all ALs to R. - */ - for (i = 0; i < strLength; ++i) { - t = types[i]; - if (t === 'AL') { - types[i] = 'R'; - } - } - - /* - W4. A single European separator between two European numbers changes to a - European number. A single common separator between two numbers of the same - type changes to that type: - */ - for (i = 1; i < strLength - 1; ++i) { - if (types[i] === 'ES' && types[i - 1] === 'EN' && types[i + 1] === 'EN') { - types[i] = 'EN'; - } - if (types[i] === 'CS' && - (types[i - 1] === 'EN' || types[i - 1] === 'AN') && - types[i + 1] === types[i - 1]) { - types[i] = types[i - 1]; - } - } - - /* - W5. A sequence of European terminators adjacent to European numbers changes - to all European numbers: - */ - for (i = 0; i < strLength; ++i) { - if (types[i] === 'EN') { - // do before - var j; - for (j = i - 1; j >= 0; --j) { - if (types[j] !== 'ET') { - break; - } - types[j] = 'EN'; - } - // do after - for (j = i + 1; j < strLength; --j) { - if (types[j] !== 'ET') { - break; - } - types[j] = 'EN'; - } - } - } - - /* - W6. Otherwise, separators and terminators change to Other Neutral: - */ - for (i = 0; i < strLength; ++i) { - t = types[i]; - if (t === 'WS' || t === 'ES' || t === 'ET' || t === 'CS') { - types[i] = 'ON'; - } - } - - /* - W7. Search backwards from each instance of a European number until the - first strong type (R, L, or sor) is found. If an L is found, then change - the type of the European number to L. - */ - lastType = sor; - for (i = 0; i < strLength; ++i) { - t = types[i]; - if (t === 'EN') { - types[i] = ((lastType === 'L') ? 'L' : 'EN'); - } else if (t === 'R' || t === 'L') { - lastType = t; - } - } - - /* - N1. A sequence of neutrals takes the direction of the surrounding strong - text if the text on both sides has the same direction. European and Arabic - numbers are treated as though they were R. Start-of-level-run (sor) and - end-of-level-run (eor) are used at level run boundaries. - */ - for (i = 0; i < strLength; ++i) { - if (types[i] === 'ON') { - var end = findUnequal(types, i + 1, 'ON'); - var before = sor; - if (i > 0) { - before = types[i - 1]; - } - - var after = eor; - if (end + 1 < strLength) { - after = types[end + 1]; - } - if (before !== 'L') { - before = 'R'; - } - if (after !== 'L') { - after = 'R'; - } - if (before === after) { - setValues(types, i, end, before); - } - i = end - 1; // reset to end (-1 so next iteration is ok) - } - } - - /* - N2. Any remaining neutrals take the embedding direction. - */ - for (i = 0; i < strLength; ++i) { - if (types[i] === 'ON') { - types[i] = e; - } - } - - /* - I1. For all characters with an even (left-to-right) embedding direction, - those of type R go up one level and those of type AN or EN go up two - levels. - I2. For all characters with an odd (right-to-left) embedding direction, - those of type L, EN or AN go up one level. - */ - for (i = 0; i < strLength; ++i) { - t = types[i]; - if (isEven(levels[i])) { - if (t === 'R') { - levels[i] += 1; - } else if (t === 'AN' || t === 'EN') { - levels[i] += 2; - } - } else { // isOdd - if (t === 'L' || t === 'AN' || t === 'EN') { - levels[i] += 1; - } - } - } - - /* - L1. On each line, reset the embedding level of the following characters to - the paragraph embedding level: - - segment separators, - paragraph separators, - any sequence of whitespace characters preceding a segment separator or - paragraph separator, and any sequence of white space characters at the end - of the line. - */ - - // don't bother as text is only single line - - /* - L2. From the highest level found in the text to the lowest odd level on - each line, reverse any contiguous sequence of characters that are at that - level or higher. - */ - - // find highest level & lowest odd level - var highestLevel = -1; - var lowestOddLevel = 99; - var level; - for (i = 0, ii = levels.length; i < ii; ++i) { - level = levels[i]; - if (highestLevel < level) { - highestLevel = level; - } - if (lowestOddLevel > level && isOdd(level)) { - lowestOddLevel = level; - } - } - - // now reverse between those limits - for (level = highestLevel; level >= lowestOddLevel; --level) { - // find segments to reverse - var start = -1; - for (i = 0, ii = levels.length; i < ii; ++i) { - if (levels[i] < level) { - if (start >= 0) { - reverseValues(chars, start, i); - start = -1; - } - } else if (start < 0) { - start = i; - } - } - if (start >= 0) { - reverseValues(chars, start, levels.length); - } - } - - /* - L3. Combining marks applied to a right-to-left base character will at this - point precede their base character. If the rendering engine expects them to - follow the base characters in the final display process, then the ordering - of the marks and the base character must be reversed. - */ - - // don't bother for now - - /* - L4. A character that possesses the mirrored property as specified by - Section 4.7, Mirrored, must be depicted by a mirrored glyph if the resolved - directionality of that character is R. - */ - - // don't mirror as characters are already mirrored in the pdf - - // Finally, return string - for (i = 0, ii = chars.length; i < ii; ++i) { - var ch = chars[i]; - if (ch === '<' || ch === '>') { - chars[i] = ''; - } - } - return createBidiText(chars.join(''), isLTR); - } - - return bidi; -})(); - -exports.bidi = bidi; -})); - - -(function (root, factory) { - { - factory((root.pdfjsSharedUtil = {}), root.pdfjsSharedGlobal); - } -}(this, function (exports, sharedGlobal) { - -var PDFJS = sharedGlobal.PDFJS; -var globalScope = sharedGlobal.globalScope; - -var FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0]; - -var TextRenderingMode = { - FILL: 0, - STROKE: 1, - FILL_STROKE: 2, - INVISIBLE: 3, - FILL_ADD_TO_PATH: 4, - STROKE_ADD_TO_PATH: 5, - FILL_STROKE_ADD_TO_PATH: 6, - ADD_TO_PATH: 7, - FILL_STROKE_MASK: 3, - ADD_TO_PATH_FLAG: 4 -}; - -var ImageKind = { - GRAYSCALE_1BPP: 1, - RGB_24BPP: 2, - RGBA_32BPP: 3 -}; - -var AnnotationType = { - TEXT: 1, - LINK: 2, - FREETEXT: 3, - LINE: 4, - SQUARE: 5, - CIRCLE: 6, - POLYGON: 7, - POLYLINE: 8, - HIGHLIGHT: 9, - UNDERLINE: 10, - SQUIGGLY: 11, - STRIKEOUT: 12, - STAMP: 13, - CARET: 14, - INK: 15, - POPUP: 16, - FILEATTACHMENT: 17, - SOUND: 18, - MOVIE: 19, - WIDGET: 20, - SCREEN: 21, - PRINTERMARK: 22, - TRAPNET: 23, - WATERMARK: 24, - THREED: 25, - REDACT: 26 -}; - -var AnnotationFlag = { - INVISIBLE: 0x01, - HIDDEN: 0x02, - PRINT: 0x04, - NOZOOM: 0x08, - NOROTATE: 0x10, - NOVIEW: 0x20, - READONLY: 0x40, - LOCKED: 0x80, - TOGGLENOVIEW: 0x100, - LOCKEDCONTENTS: 0x200 -}; - -var AnnotationBorderStyleType = { - SOLID: 1, - DASHED: 2, - BEVELED: 3, - INSET: 4, - UNDERLINE: 5 -}; - -var StreamType = { - UNKNOWN: 0, - FLATE: 1, - LZW: 2, - DCT: 3, - JPX: 4, - JBIG: 5, - A85: 6, - AHX: 7, - CCF: 8, - RL: 9 -}; - -var FontType = { - UNKNOWN: 0, - TYPE1: 1, - TYPE1C: 2, - CIDFONTTYPE0: 3, - CIDFONTTYPE0C: 4, - TRUETYPE: 5, - CIDFONTTYPE2: 6, - TYPE3: 7, - OPENTYPE: 8, - TYPE0: 9, - MMTYPE1: 10 -}; - -PDFJS.VERBOSITY_LEVELS = { - errors: 0, - warnings: 1, - infos: 5 -}; - -// All the possible operations for an operator list. -var OPS = PDFJS.OPS = { - // Intentionally start from 1 so it is easy to spot bad operators that will be - // 0's. - dependency: 1, - setLineWidth: 2, - setLineCap: 3, - setLineJoin: 4, - setMiterLimit: 5, - setDash: 6, - setRenderingIntent: 7, - setFlatness: 8, - setGState: 9, - save: 10, - restore: 11, - transform: 12, - moveTo: 13, - lineTo: 14, - curveTo: 15, - curveTo2: 16, - curveTo3: 17, - closePath: 18, - rectangle: 19, - stroke: 20, - closeStroke: 21, - fill: 22, - eoFill: 23, - fillStroke: 24, - eoFillStroke: 25, - closeFillStroke: 26, - closeEOFillStroke: 27, - endPath: 28, - clip: 29, - eoClip: 30, - beginText: 31, - endText: 32, - setCharSpacing: 33, - setWordSpacing: 34, - setHScale: 35, - setLeading: 36, - setFont: 37, - setTextRenderingMode: 38, - setTextRise: 39, - moveText: 40, - setLeadingMoveText: 41, - setTextMatrix: 42, - nextLine: 43, - showText: 44, - showSpacedText: 45, - nextLineShowText: 46, - nextLineSetSpacingShowText: 47, - setCharWidth: 48, - setCharWidthAndBounds: 49, - setStrokeColorSpace: 50, - setFillColorSpace: 51, - setStrokeColor: 52, - setStrokeColorN: 53, - setFillColor: 54, - setFillColorN: 55, - setStrokeGray: 56, - setFillGray: 57, - setStrokeRGBColor: 58, - setFillRGBColor: 59, - setStrokeCMYKColor: 60, - setFillCMYKColor: 61, - shadingFill: 62, - beginInlineImage: 63, - beginImageData: 64, - endInlineImage: 65, - paintXObject: 66, - markPoint: 67, - markPointProps: 68, - beginMarkedContent: 69, - beginMarkedContentProps: 70, - endMarkedContent: 71, - beginCompat: 72, - endCompat: 73, - paintFormXObjectBegin: 74, - paintFormXObjectEnd: 75, - beginGroup: 76, - endGroup: 77, - beginAnnotations: 78, - endAnnotations: 79, - beginAnnotation: 80, - endAnnotation: 81, - paintJpegXObject: 82, - paintImageMaskXObject: 83, - paintImageMaskXObjectGroup: 84, - paintImageXObject: 85, - paintInlineImageXObject: 86, - paintInlineImageXObjectGroup: 87, - paintImageXObjectRepeat: 88, - paintImageMaskXObjectRepeat: 89, - paintSolidColorImageMask: 90, - constructPath: 91 -}; - -// A notice for devs. These are good for things that are helpful to devs, such -// as warning that Workers were disabled, which is important to devs but not -// end users. -function info(msg) { - if (PDFJS.verbosity >= PDFJS.VERBOSITY_LEVELS.infos) { - console.log('Info: ' + msg); - } -} - -// Non-fatal warnings. -function warn(msg) { - if (PDFJS.verbosity >= PDFJS.VERBOSITY_LEVELS.warnings) { - console.log('Warning: ' + msg); - } -} - -// Deprecated API function -- treated as warnings. -function deprecated(details) { - warn('Deprecated API usage: ' + details); -} - -// Fatal errors that should trigger the fallback UI and halt execution by -// throwing an exception. -function error(msg) { - if (PDFJS.verbosity >= PDFJS.VERBOSITY_LEVELS.errors) { - console.log('Error: ' + msg); - console.log(backtrace()); - } - throw new Error(msg); -} - -function backtrace() { - try { - throw new Error(); - } catch (e) { - return e.stack ? e.stack.split('\n').slice(2).join('\n') : ''; - } -} - -function assert(cond, msg) { - if (!cond) { - error(msg); - } -} - -var UNSUPPORTED_FEATURES = PDFJS.UNSUPPORTED_FEATURES = { - unknown: 'unknown', - forms: 'forms', - javaScript: 'javaScript', - smask: 'smask', - shadingPattern: 'shadingPattern', - font: 'font' -}; - -// Combines two URLs. The baseUrl shall be absolute URL. If the url is an -// absolute URL, it will be returned as is. -function combineUrl(baseUrl, url) { - if (!url) { - return baseUrl; - } - return new URL(url, baseUrl).href; -} - -// Validates if URL is safe and allowed, e.g. to avoid XSS. -function isValidUrl(url, allowRelative) { - if (!url) { - return false; - } - // RFC 3986 (http://tools.ietf.org/html/rfc3986#section-3.1) - // scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." ) - var protocol = /^[a-z][a-z0-9+\-.]*(?=:)/i.exec(url); - if (!protocol) { - return allowRelative; - } - protocol = protocol[0].toLowerCase(); - switch (protocol) { - case 'http': - case 'https': - case 'ftp': - case 'mailto': - case 'tel': - return true; - default: - return false; - } -} -PDFJS.isValidUrl = isValidUrl; - -/** - * Adds various attributes (href, title, target, rel) to hyperlinks. - * @param {HTMLLinkElement} link - The link element. - * @param {Object} params - An object with the properties: - * @param {string} params.url - An absolute URL. - */ -function addLinkAttributes(link, params) { - var url = params && params.url; - link.href = link.title = (url ? removeNullCharacters(url) : ''); - - if (url) { - if (isExternalLinkTargetSet()) { - link.target = LinkTargetStringMap[PDFJS.externalLinkTarget]; - } - // Strip referrer from the URL. - link.rel = PDFJS.externalLinkRel; - } -} -PDFJS.addLinkAttributes = addLinkAttributes; - -function shadow(obj, prop, value) { - Object.defineProperty(obj, prop, { value: value, - enumerable: true, - configurable: true, - writable: false }); - return value; -} -PDFJS.shadow = shadow; - -var LinkTarget = PDFJS.LinkTarget = { - NONE: 0, // Default value. - SELF: 1, - BLANK: 2, - PARENT: 3, - TOP: 4, -}; -var LinkTargetStringMap = [ - '', - '_self', - '_blank', - '_parent', - '_top' -]; - -function isExternalLinkTargetSet() { - if (PDFJS.openExternalLinksInNewWindow) { - deprecated('PDFJS.openExternalLinksInNewWindow, please use ' + - '"PDFJS.externalLinkTarget = PDFJS.LinkTarget.BLANK" instead.'); - if (PDFJS.externalLinkTarget === LinkTarget.NONE) { - PDFJS.externalLinkTarget = LinkTarget.BLANK; - } - // Reset the deprecated parameter, to suppress further warnings. - PDFJS.openExternalLinksInNewWindow = false; - } - switch (PDFJS.externalLinkTarget) { - case LinkTarget.NONE: - return false; - case LinkTarget.SELF: - case LinkTarget.BLANK: - case LinkTarget.PARENT: - case LinkTarget.TOP: - return true; - } - warn('PDFJS.externalLinkTarget is invalid: ' + PDFJS.externalLinkTarget); - // Reset the external link target, to suppress further warnings. - PDFJS.externalLinkTarget = LinkTarget.NONE; - return false; -} -PDFJS.isExternalLinkTargetSet = isExternalLinkTargetSet; - -var PasswordResponses = PDFJS.PasswordResponses = { - NEED_PASSWORD: 1, - INCORRECT_PASSWORD: 2 -}; - -var PasswordException = (function PasswordExceptionClosure() { - function PasswordException(msg, code) { - this.name = 'PasswordException'; - this.message = msg; - this.code = code; - } - - PasswordException.prototype = new Error(); - PasswordException.constructor = PasswordException; - - return PasswordException; -})(); -PDFJS.PasswordException = PasswordException; - -var UnknownErrorException = (function UnknownErrorExceptionClosure() { - function UnknownErrorException(msg, details) { - this.name = 'UnknownErrorException'; - this.message = msg; - this.details = details; - } - - UnknownErrorException.prototype = new Error(); - UnknownErrorException.constructor = UnknownErrorException; - - return UnknownErrorException; -})(); -PDFJS.UnknownErrorException = UnknownErrorException; - -var InvalidPDFException = (function InvalidPDFExceptionClosure() { - function InvalidPDFException(msg) { - this.name = 'InvalidPDFException'; - this.message = msg; - } - - InvalidPDFException.prototype = new Error(); - InvalidPDFException.constructor = InvalidPDFException; - - return InvalidPDFException; -})(); -PDFJS.InvalidPDFException = InvalidPDFException; - -var MissingPDFException = (function MissingPDFExceptionClosure() { - function MissingPDFException(msg) { - this.name = 'MissingPDFException'; - this.message = msg; - } - - MissingPDFException.prototype = new Error(); - MissingPDFException.constructor = MissingPDFException; - - return MissingPDFException; -})(); -PDFJS.MissingPDFException = MissingPDFException; - -var UnexpectedResponseException = - (function UnexpectedResponseExceptionClosure() { - function UnexpectedResponseException(msg, status) { - this.name = 'UnexpectedResponseException'; - this.message = msg; - this.status = status; - } - - UnexpectedResponseException.prototype = new Error(); - UnexpectedResponseException.constructor = UnexpectedResponseException; - - return UnexpectedResponseException; -})(); -PDFJS.UnexpectedResponseException = UnexpectedResponseException; - -var NotImplementedException = (function NotImplementedExceptionClosure() { - function NotImplementedException(msg) { - this.message = msg; - } - - NotImplementedException.prototype = new Error(); - NotImplementedException.prototype.name = 'NotImplementedException'; - NotImplementedException.constructor = NotImplementedException; - - return NotImplementedException; -})(); - -var MissingDataException = (function MissingDataExceptionClosure() { - function MissingDataException(begin, end) { - this.begin = begin; - this.end = end; - this.message = 'Missing data [' + begin + ', ' + end + ')'; - } - - MissingDataException.prototype = new Error(); - MissingDataException.prototype.name = 'MissingDataException'; - MissingDataException.constructor = MissingDataException; - - return MissingDataException; -})(); - -var XRefParseException = (function XRefParseExceptionClosure() { - function XRefParseException(msg) { - this.message = msg; - } - - XRefParseException.prototype = new Error(); - XRefParseException.prototype.name = 'XRefParseException'; - XRefParseException.constructor = XRefParseException; - - return XRefParseException; -})(); - -var NullCharactersRegExp = /\x00/g; - -function removeNullCharacters(str) { - if (typeof str !== 'string') { - warn('The argument for removeNullCharacters must be a string.'); - return str; - } - return str.replace(NullCharactersRegExp, ''); -} -PDFJS.removeNullCharacters = removeNullCharacters; - -function bytesToString(bytes) { - assert(bytes !== null && typeof bytes === 'object' && - bytes.length !== undefined, 'Invalid argument for bytesToString'); - var length = bytes.length; - var MAX_ARGUMENT_COUNT = 8192; - if (length < MAX_ARGUMENT_COUNT) { - return String.fromCharCode.apply(null, bytes); - } - var strBuf = []; - for (var i = 0; i < length; i += MAX_ARGUMENT_COUNT) { - var chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length); - var chunk = bytes.subarray(i, chunkEnd); - strBuf.push(String.fromCharCode.apply(null, chunk)); - } - return strBuf.join(''); -} - -function stringToBytes(str) { - assert(typeof str === 'string', 'Invalid argument for stringToBytes'); - var length = str.length; - var bytes = new Uint8Array(length); - for (var i = 0; i < length; ++i) { - bytes[i] = str.charCodeAt(i) & 0xFF; - } - return bytes; -} - -function string32(value) { - return String.fromCharCode((value >> 24) & 0xff, (value >> 16) & 0xff, - (value >> 8) & 0xff, value & 0xff); -} - -function log2(x) { - var n = 1, i = 0; - while (x > n) { - n <<= 1; - i++; - } - return i; -} - -function readInt8(data, start) { - return (data[start] << 24) >> 24; -} - -function readUint16(data, offset) { - return (data[offset] << 8) | data[offset + 1]; -} - -function readUint32(data, offset) { - return ((data[offset] << 24) | (data[offset + 1] << 16) | - (data[offset + 2] << 8) | data[offset + 3]) >>> 0; -} - -// Lazy test the endianness of the platform -// NOTE: This will be 'true' for simulated TypedArrays -function isLittleEndian() { - var buffer8 = new Uint8Array(2); - buffer8[0] = 1; - var buffer16 = new Uint16Array(buffer8.buffer); - return (buffer16[0] === 1); -} - -Object.defineProperty(PDFJS, 'isLittleEndian', { - configurable: true, - get: function PDFJS_isLittleEndian() { - return shadow(PDFJS, 'isLittleEndian', isLittleEndian()); - } -}); - - // Lazy test if the userAgent support CanvasTypedArrays -function hasCanvasTypedArrays() { - var canvas = document.createElement('canvas'); - canvas.width = canvas.height = 1; - var ctx = canvas.getContext('2d'); - var imageData = ctx.createImageData(1, 1); - return (typeof imageData.data.buffer !== 'undefined'); -} - -Object.defineProperty(PDFJS, 'hasCanvasTypedArrays', { - configurable: true, - get: function PDFJS_hasCanvasTypedArrays() { - return shadow(PDFJS, 'hasCanvasTypedArrays', hasCanvasTypedArrays()); - } -}); - -var Uint32ArrayView = (function Uint32ArrayViewClosure() { - - function Uint32ArrayView(buffer, length) { - this.buffer = buffer; - this.byteLength = buffer.length; - this.length = length === undefined ? (this.byteLength >> 2) : length; - ensureUint32ArrayViewProps(this.length); - } - Uint32ArrayView.prototype = Object.create(null); - - var uint32ArrayViewSetters = 0; - function createUint32ArrayProp(index) { - return { - get: function () { - var buffer = this.buffer, offset = index << 2; - return (buffer[offset] | (buffer[offset + 1] << 8) | - (buffer[offset + 2] << 16) | (buffer[offset + 3] << 24)) >>> 0; - }, - set: function (value) { - var buffer = this.buffer, offset = index << 2; - buffer[offset] = value & 255; - buffer[offset + 1] = (value >> 8) & 255; - buffer[offset + 2] = (value >> 16) & 255; - buffer[offset + 3] = (value >>> 24) & 255; - } - }; - } - - function ensureUint32ArrayViewProps(length) { - while (uint32ArrayViewSetters < length) { - Object.defineProperty(Uint32ArrayView.prototype, - uint32ArrayViewSetters, - createUint32ArrayProp(uint32ArrayViewSetters)); - uint32ArrayViewSetters++; - } - } - - return Uint32ArrayView; -})(); - -exports.Uint32ArrayView = Uint32ArrayView; - -var IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0]; - -var Util = PDFJS.Util = (function UtilClosure() { - function Util() {} - - var rgbBuf = ['rgb(', 0, ',', 0, ',', 0, ')']; - - // makeCssRgb() can be called thousands of times. Using |rgbBuf| avoids - // creating many intermediate strings. - Util.makeCssRgb = function Util_makeCssRgb(r, g, b) { - rgbBuf[1] = r; - rgbBuf[3] = g; - rgbBuf[5] = b; - return rgbBuf.join(''); - }; - - // Concatenates two transformation matrices together and returns the result. - Util.transform = function Util_transform(m1, m2) { - return [ - m1[0] * m2[0] + m1[2] * m2[1], - m1[1] * m2[0] + m1[3] * m2[1], - m1[0] * m2[2] + m1[2] * m2[3], - m1[1] * m2[2] + m1[3] * m2[3], - m1[0] * m2[4] + m1[2] * m2[5] + m1[4], - m1[1] * m2[4] + m1[3] * m2[5] + m1[5] - ]; - }; - - // For 2d affine transforms - Util.applyTransform = function Util_applyTransform(p, m) { - var xt = p[0] * m[0] + p[1] * m[2] + m[4]; - var yt = p[0] * m[1] + p[1] * m[3] + m[5]; - return [xt, yt]; - }; - - Util.applyInverseTransform = function Util_applyInverseTransform(p, m) { - var d = m[0] * m[3] - m[1] * m[2]; - var xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d; - var yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d; - return [xt, yt]; - }; - - // Applies the transform to the rectangle and finds the minimum axially - // aligned bounding box. - Util.getAxialAlignedBoundingBox = - function Util_getAxialAlignedBoundingBox(r, m) { - - var p1 = Util.applyTransform(r, m); - var p2 = Util.applyTransform(r.slice(2, 4), m); - var p3 = Util.applyTransform([r[0], r[3]], m); - var p4 = Util.applyTransform([r[2], r[1]], m); - return [ - Math.min(p1[0], p2[0], p3[0], p4[0]), - Math.min(p1[1], p2[1], p3[1], p4[1]), - Math.max(p1[0], p2[0], p3[0], p4[0]), - Math.max(p1[1], p2[1], p3[1], p4[1]) - ]; - }; - - Util.inverseTransform = function Util_inverseTransform(m) { - var d = m[0] * m[3] - m[1] * m[2]; - return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, - (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d]; - }; - - // Apply a generic 3d matrix M on a 3-vector v: - // | a b c | | X | - // | d e f | x | Y | - // | g h i | | Z | - // M is assumed to be serialized as [a,b,c,d,e,f,g,h,i], - // with v as [X,Y,Z] - Util.apply3dTransform = function Util_apply3dTransform(m, v) { - return [ - m[0] * v[0] + m[1] * v[1] + m[2] * v[2], - m[3] * v[0] + m[4] * v[1] + m[5] * v[2], - m[6] * v[0] + m[7] * v[1] + m[8] * v[2] - ]; - }; - - // This calculation uses Singular Value Decomposition. - // The SVD can be represented with formula A = USV. We are interested in the - // matrix S here because it represents the scale values. - Util.singularValueDecompose2dScale = - function Util_singularValueDecompose2dScale(m) { - - var transpose = [m[0], m[2], m[1], m[3]]; - - // Multiply matrix m with its transpose. - var a = m[0] * transpose[0] + m[1] * transpose[2]; - var b = m[0] * transpose[1] + m[1] * transpose[3]; - var c = m[2] * transpose[0] + m[3] * transpose[2]; - var d = m[2] * transpose[1] + m[3] * transpose[3]; - - // Solve the second degree polynomial to get roots. - var first = (a + d) / 2; - var second = Math.sqrt((a + d) * (a + d) - 4 * (a * d - c * b)) / 2; - var sx = first + second || 1; - var sy = first - second || 1; - - // Scale values are the square roots of the eigenvalues. - return [Math.sqrt(sx), Math.sqrt(sy)]; - }; - - // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2) - // For coordinate systems whose origin lies in the bottom-left, this - // means normalization to (BL,TR) ordering. For systems with origin in the - // top-left, this means (TL,BR) ordering. - Util.normalizeRect = function Util_normalizeRect(rect) { - var r = rect.slice(0); // clone rect - if (rect[0] > rect[2]) { - r[0] = rect[2]; - r[2] = rect[0]; - } - if (rect[1] > rect[3]) { - r[1] = rect[3]; - r[3] = rect[1]; - } - return r; - }; - - // Returns a rectangle [x1, y1, x2, y2] corresponding to the - // intersection of rect1 and rect2. If no intersection, returns 'false' - // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2] - Util.intersect = function Util_intersect(rect1, rect2) { - function compare(a, b) { - return a - b; - } - - // Order points along the axes - var orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare), - orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare), - result = []; - - rect1 = Util.normalizeRect(rect1); - rect2 = Util.normalizeRect(rect2); - - // X: first and second points belong to different rectangles? - if ((orderedX[0] === rect1[0] && orderedX[1] === rect2[0]) || - (orderedX[0] === rect2[0] && orderedX[1] === rect1[0])) { - // Intersection must be between second and third points - result[0] = orderedX[1]; - result[2] = orderedX[2]; - } else { - return false; - } - - // Y: first and second points belong to different rectangles? - if ((orderedY[0] === rect1[1] && orderedY[1] === rect2[1]) || - (orderedY[0] === rect2[1] && orderedY[1] === rect1[1])) { - // Intersection must be between second and third points - result[1] = orderedY[1]; - result[3] = orderedY[2]; - } else { - return false; - } - - return result; - }; - - Util.sign = function Util_sign(num) { - return num < 0 ? -1 : 1; - }; - - var ROMAN_NUMBER_MAP = [ - '', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM', - '', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC', - '', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX' - ]; - /** - * Converts positive integers to (upper case) Roman numerals. - * @param {integer} number - The number that should be converted. - * @param {boolean} lowerCase - Indicates if the result should be converted - * to lower case letters. The default is false. - * @return {string} The resulting Roman number. - */ - Util.toRoman = function Util_toRoman(number, lowerCase) { - assert(isInt(number) && number > 0, - 'The number should be a positive integer.'); - var pos, romanBuf = []; - // Thousands - while (number >= 1000) { - number -= 1000; - romanBuf.push('M'); - } - // Hundreds - pos = (number / 100) | 0; - number %= 100; - romanBuf.push(ROMAN_NUMBER_MAP[pos]); - // Tens - pos = (number / 10) | 0; - number %= 10; - romanBuf.push(ROMAN_NUMBER_MAP[10 + pos]); - // Ones - romanBuf.push(ROMAN_NUMBER_MAP[20 + number]); - - var romanStr = romanBuf.join(''); - return (lowerCase ? romanStr.toLowerCase() : romanStr); - }; - - Util.appendToArray = function Util_appendToArray(arr1, arr2) { - Array.prototype.push.apply(arr1, arr2); - }; - - Util.prependToArray = function Util_prependToArray(arr1, arr2) { - Array.prototype.unshift.apply(arr1, arr2); - }; - - Util.extendObj = function extendObj(obj1, obj2) { - for (var key in obj2) { - obj1[key] = obj2[key]; - } - }; - - Util.getInheritableProperty = function Util_getInheritableProperty(dict, - name) { - while (dict && !dict.has(name)) { - dict = dict.get('Parent'); - } - if (!dict) { - return null; - } - return dict.get(name); - }; - - Util.inherit = function Util_inherit(sub, base, prototype) { - sub.prototype = Object.create(base.prototype); - sub.prototype.constructor = sub; - for (var prop in prototype) { - sub.prototype[prop] = prototype[prop]; - } - }; - - Util.loadScript = function Util_loadScript(src, callback) { - var script = document.createElement('script'); - var loaded = false; - script.setAttribute('src', src); - if (callback) { - script.onload = function() { - if (!loaded) { - callback(); - } - loaded = true; - }; - } - document.getElementsByTagName('head')[0].appendChild(script); - }; - - return Util; -})(); - -/** - * PDF page viewport created based on scale, rotation and offset. - * @class - * @alias PDFJS.PageViewport - */ -var PageViewport = PDFJS.PageViewport = (function PageViewportClosure() { - /** - * @constructor - * @private - * @param viewBox {Array} xMin, yMin, xMax and yMax coordinates. - * @param scale {number} scale of the viewport. - * @param rotation {number} rotations of the viewport in degrees. - * @param offsetX {number} offset X - * @param offsetY {number} offset Y - * @param dontFlip {boolean} if true, axis Y will not be flipped. - */ - function PageViewport(viewBox, scale, rotation, offsetX, offsetY, dontFlip) { - this.viewBox = viewBox; - this.scale = scale; - this.rotation = rotation; - this.offsetX = offsetX; - this.offsetY = offsetY; - - // creating transform to convert pdf coordinate system to the normal - // canvas like coordinates taking in account scale and rotation - var centerX = (viewBox[2] + viewBox[0]) / 2; - var centerY = (viewBox[3] + viewBox[1]) / 2; - var rotateA, rotateB, rotateC, rotateD; - rotation = rotation % 360; - rotation = rotation < 0 ? rotation + 360 : rotation; - switch (rotation) { - case 180: - rotateA = -1; rotateB = 0; rotateC = 0; rotateD = 1; - break; - case 90: - rotateA = 0; rotateB = 1; rotateC = 1; rotateD = 0; - break; - case 270: - rotateA = 0; rotateB = -1; rotateC = -1; rotateD = 0; - break; - //case 0: - default: - rotateA = 1; rotateB = 0; rotateC = 0; rotateD = -1; - break; - } - - if (dontFlip) { - rotateC = -rotateC; rotateD = -rotateD; - } - - var offsetCanvasX, offsetCanvasY; - var width, height; - if (rotateA === 0) { - offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX; - offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY; - width = Math.abs(viewBox[3] - viewBox[1]) * scale; - height = Math.abs(viewBox[2] - viewBox[0]) * scale; - } else { - offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX; - offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY; - width = Math.abs(viewBox[2] - viewBox[0]) * scale; - height = Math.abs(viewBox[3] - viewBox[1]) * scale; - } - // creating transform for the following operations: - // translate(-centerX, -centerY), rotate and flip vertically, - // scale, and translate(offsetCanvasX, offsetCanvasY) - this.transform = [ - rotateA * scale, - rotateB * scale, - rotateC * scale, - rotateD * scale, - offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY, - offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY - ]; - - this.width = width; - this.height = height; - this.fontScale = scale; - } - PageViewport.prototype = /** @lends PDFJS.PageViewport.prototype */ { - /** - * Clones viewport with additional properties. - * @param args {Object} (optional) If specified, may contain the 'scale' or - * 'rotation' properties to override the corresponding properties in - * the cloned viewport. - * @returns {PDFJS.PageViewport} Cloned viewport. - */ - clone: function PageViewPort_clone(args) { - args = args || {}; - var scale = 'scale' in args ? args.scale : this.scale; - var rotation = 'rotation' in args ? args.rotation : this.rotation; - return new PageViewport(this.viewBox.slice(), scale, rotation, - this.offsetX, this.offsetY, args.dontFlip); - }, - /** - * Converts PDF point to the viewport coordinates. For examples, useful for - * converting PDF location into canvas pixel coordinates. - * @param x {number} X coordinate. - * @param y {number} Y coordinate. - * @returns {Object} Object that contains 'x' and 'y' properties of the - * point in the viewport coordinate space. - * @see {@link convertToPdfPoint} - * @see {@link convertToViewportRectangle} - */ - convertToViewportPoint: function PageViewport_convertToViewportPoint(x, y) { - return Util.applyTransform([x, y], this.transform); - }, - /** - * Converts PDF rectangle to the viewport coordinates. - * @param rect {Array} xMin, yMin, xMax and yMax coordinates. - * @returns {Array} Contains corresponding coordinates of the rectangle - * in the viewport coordinate space. - * @see {@link convertToViewportPoint} - */ - convertToViewportRectangle: - function PageViewport_convertToViewportRectangle(rect) { - var tl = Util.applyTransform([rect[0], rect[1]], this.transform); - var br = Util.applyTransform([rect[2], rect[3]], this.transform); - return [tl[0], tl[1], br[0], br[1]]; - }, - /** - * Converts viewport coordinates to the PDF location. For examples, useful - * for converting canvas pixel location into PDF one. - * @param x {number} X coordinate. - * @param y {number} Y coordinate. - * @returns {Object} Object that contains 'x' and 'y' properties of the - * point in the PDF coordinate space. - * @see {@link convertToViewportPoint} - */ - convertToPdfPoint: function PageViewport_convertToPdfPoint(x, y) { - return Util.applyInverseTransform([x, y], this.transform); - } - }; - return PageViewport; -})(); - -var PDFStringTranslateTable = [ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0x2D8, 0x2C7, 0x2C6, 0x2D9, 0x2DD, 0x2DB, 0x2DA, 0x2DC, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, - 0x2013, 0x192, 0x2044, 0x2039, 0x203A, 0x2212, 0x2030, 0x201E, 0x201C, - 0x201D, 0x2018, 0x2019, 0x201A, 0x2122, 0xFB01, 0xFB02, 0x141, 0x152, 0x160, - 0x178, 0x17D, 0x131, 0x142, 0x153, 0x161, 0x17E, 0, 0x20AC -]; - -function stringToPDFString(str) { - var i, n = str.length, strBuf = []; - if (str[0] === '\xFE' && str[1] === '\xFF') { - // UTF16BE BOM - for (i = 2; i < n; i += 2) { - strBuf.push(String.fromCharCode( - (str.charCodeAt(i) << 8) | str.charCodeAt(i + 1))); - } - } else { - for (i = 0; i < n; ++i) { - var code = PDFStringTranslateTable[str.charCodeAt(i)]; - strBuf.push(code ? String.fromCharCode(code) : str.charAt(i)); - } - } - return strBuf.join(''); -} - -function stringToUTF8String(str) { - return decodeURIComponent(escape(str)); -} - -function utf8StringToString(str) { - return unescape(encodeURIComponent(str)); -} - -function isEmptyObj(obj) { - for (var key in obj) { - return false; - } - return true; -} - -function isBool(v) { - return typeof v === 'boolean'; -} - -function isInt(v) { - return typeof v === 'number' && ((v | 0) === v); -} - -function isNum(v) { - return typeof v === 'number'; -} - -function isString(v) { - return typeof v === 'string'; -} - -function isArray(v) { - return v instanceof Array; -} - -function isArrayBuffer(v) { - return typeof v === 'object' && v !== null && v.byteLength !== undefined; -} - -/** - * Promise Capability object. - * - * @typedef {Object} PromiseCapability - * @property {Promise} promise - A promise object. - * @property {function} resolve - Fullfills the promise. - * @property {function} reject - Rejects the promise. - */ - -/** - * Creates a promise capability object. - * @alias PDFJS.createPromiseCapability - * - * @return {PromiseCapability} A capability object contains: - * - a Promise, resolve and reject methods. - */ -function createPromiseCapability() { - var capability = {}; - capability.promise = new Promise(function (resolve, reject) { - capability.resolve = resolve; - capability.reject = reject; - }); - return capability; -} - -PDFJS.createPromiseCapability = createPromiseCapability; - -/** - * Polyfill for Promises: - * The following promise implementation tries to generally implement the - * Promise/A+ spec. Some notable differences from other promise libaries are: - * - There currently isn't a seperate deferred and promise object. - * - Unhandled rejections eventually show an error if they aren't handled. - * - * Based off of the work in: - * https://bugzilla.mozilla.org/show_bug.cgi?id=810490 - */ -(function PromiseClosure() { - if (globalScope.Promise) { - // Promises existing in the DOM/Worker, checking presence of all/resolve - if (typeof globalScope.Promise.all !== 'function') { - globalScope.Promise.all = function (iterable) { - var count = 0, results = [], resolve, reject; - var promise = new globalScope.Promise(function (resolve_, reject_) { - resolve = resolve_; - reject = reject_; - }); - iterable.forEach(function (p, i) { - count++; - p.then(function (result) { - results[i] = result; - count--; - if (count === 0) { - resolve(results); - } - }, reject); - }); - if (count === 0) { - resolve(results); - } - return promise; - }; - } - if (typeof globalScope.Promise.resolve !== 'function') { - globalScope.Promise.resolve = function (value) { - return new globalScope.Promise(function (resolve) { resolve(value); }); - }; - } - if (typeof globalScope.Promise.reject !== 'function') { - globalScope.Promise.reject = function (reason) { - return new globalScope.Promise(function (resolve, reject) { - reject(reason); - }); - }; - } - if (typeof globalScope.Promise.prototype.catch !== 'function') { - globalScope.Promise.prototype.catch = function (onReject) { - return globalScope.Promise.prototype.then(undefined, onReject); - }; - } - return; - } - var STATUS_PENDING = 0; - var STATUS_RESOLVED = 1; - var STATUS_REJECTED = 2; - - // In an attempt to avoid silent exceptions, unhandled rejections are - // tracked and if they aren't handled in a certain amount of time an - // error is logged. - var REJECTION_TIMEOUT = 500; - - var HandlerManager = { - handlers: [], - running: false, - unhandledRejections: [], - pendingRejectionCheck: false, - - scheduleHandlers: function scheduleHandlers(promise) { - if (promise._status === STATUS_PENDING) { - return; - } - - this.handlers = this.handlers.concat(promise._handlers); - promise._handlers = []; - - if (this.running) { - return; - } - this.running = true; - - setTimeout(this.runHandlers.bind(this), 0); - }, - - runHandlers: function runHandlers() { - var RUN_TIMEOUT = 1; // ms - var timeoutAt = Date.now() + RUN_TIMEOUT; - while (this.handlers.length > 0) { - var handler = this.handlers.shift(); - - var nextStatus = handler.thisPromise._status; - var nextValue = handler.thisPromise._value; - - try { - if (nextStatus === STATUS_RESOLVED) { - if (typeof handler.onResolve === 'function') { - nextValue = handler.onResolve(nextValue); - } - } else if (typeof handler.onReject === 'function') { - nextValue = handler.onReject(nextValue); - nextStatus = STATUS_RESOLVED; - - if (handler.thisPromise._unhandledRejection) { - this.removeUnhandeledRejection(handler.thisPromise); - } - } - } catch (ex) { - nextStatus = STATUS_REJECTED; - nextValue = ex; - } - - handler.nextPromise._updateStatus(nextStatus, nextValue); - if (Date.now() >= timeoutAt) { - break; - } - } - - if (this.handlers.length > 0) { - setTimeout(this.runHandlers.bind(this), 0); - return; - } - - this.running = false; - }, - - addUnhandledRejection: function addUnhandledRejection(promise) { - this.unhandledRejections.push({ - promise: promise, - time: Date.now() - }); - this.scheduleRejectionCheck(); - }, - - removeUnhandeledRejection: function removeUnhandeledRejection(promise) { - promise._unhandledRejection = false; - for (var i = 0; i < this.unhandledRejections.length; i++) { - if (this.unhandledRejections[i].promise === promise) { - this.unhandledRejections.splice(i); - i--; - } - } - }, - - scheduleRejectionCheck: function scheduleRejectionCheck() { - if (this.pendingRejectionCheck) { - return; - } - this.pendingRejectionCheck = true; - setTimeout(function rejectionCheck() { - this.pendingRejectionCheck = false; - var now = Date.now(); - for (var i = 0; i < this.unhandledRejections.length; i++) { - if (now - this.unhandledRejections[i].time > REJECTION_TIMEOUT) { - var unhandled = this.unhandledRejections[i].promise._value; - var msg = 'Unhandled rejection: ' + unhandled; - if (unhandled.stack) { - msg += '\n' + unhandled.stack; - } - warn(msg); - this.unhandledRejections.splice(i); - i--; - } - } - if (this.unhandledRejections.length) { - this.scheduleRejectionCheck(); - } - }.bind(this), REJECTION_TIMEOUT); - } - }; - - function Promise(resolver) { - this._status = STATUS_PENDING; - this._handlers = []; - try { - resolver.call(this, this._resolve.bind(this), this._reject.bind(this)); - } catch (e) { - this._reject(e); - } - } - /** - * Builds a promise that is resolved when all the passed in promises are - * resolved. - * @param {array} array of data and/or promises to wait for. - * @return {Promise} New dependant promise. - */ - Promise.all = function Promise_all(promises) { - var resolveAll, rejectAll; - var deferred = new Promise(function (resolve, reject) { - resolveAll = resolve; - rejectAll = reject; - }); - var unresolved = promises.length; - var results = []; - if (unresolved === 0) { - resolveAll(results); - return deferred; - } - function reject(reason) { - if (deferred._status === STATUS_REJECTED) { - return; - } - results = []; - rejectAll(reason); - } - for (var i = 0, ii = promises.length; i < ii; ++i) { - var promise = promises[i]; - var resolve = (function(i) { - return function(value) { - if (deferred._status === STATUS_REJECTED) { - return; - } - results[i] = value; - unresolved--; - if (unresolved === 0) { - resolveAll(results); - } - }; - })(i); - if (Promise.isPromise(promise)) { - promise.then(resolve, reject); - } else { - resolve(promise); - } - } - return deferred; - }; - - /** - * Checks if the value is likely a promise (has a 'then' function). - * @return {boolean} true if value is thenable - */ - Promise.isPromise = function Promise_isPromise(value) { - return value && typeof value.then === 'function'; - }; - - /** - * Creates resolved promise - * @param value resolve value - * @returns {Promise} - */ - Promise.resolve = function Promise_resolve(value) { - return new Promise(function (resolve) { resolve(value); }); - }; - - /** - * Creates rejected promise - * @param reason rejection value - * @returns {Promise} - */ - Promise.reject = function Promise_reject(reason) { - return new Promise(function (resolve, reject) { reject(reason); }); - }; - - Promise.prototype = { - _status: null, - _value: null, - _handlers: null, - _unhandledRejection: null, - - _updateStatus: function Promise__updateStatus(status, value) { - if (this._status === STATUS_RESOLVED || - this._status === STATUS_REJECTED) { - return; - } - - if (status === STATUS_RESOLVED && - Promise.isPromise(value)) { - value.then(this._updateStatus.bind(this, STATUS_RESOLVED), - this._updateStatus.bind(this, STATUS_REJECTED)); - return; - } - - this._status = status; - this._value = value; - - if (status === STATUS_REJECTED && this._handlers.length === 0) { - this._unhandledRejection = true; - HandlerManager.addUnhandledRejection(this); - } - - HandlerManager.scheduleHandlers(this); - }, - - _resolve: function Promise_resolve(value) { - this._updateStatus(STATUS_RESOLVED, value); - }, - - _reject: function Promise_reject(reason) { - this._updateStatus(STATUS_REJECTED, reason); - }, - - then: function Promise_then(onResolve, onReject) { - var nextPromise = new Promise(function (resolve, reject) { - this.resolve = resolve; - this.reject = reject; - }); - this._handlers.push({ - thisPromise: this, - onResolve: onResolve, - onReject: onReject, - nextPromise: nextPromise - }); - HandlerManager.scheduleHandlers(this); - return nextPromise; - }, - - catch: function Promise_catch(onReject) { - return this.then(undefined, onReject); - } - }; - - globalScope.Promise = Promise; -})(); - -var StatTimer = (function StatTimerClosure() { - function rpad(str, pad, length) { - while (str.length < length) { - str += pad; - } - return str; - } - function StatTimer() { - this.started = {}; - this.times = []; - this.enabled = true; - } - StatTimer.prototype = { - time: function StatTimer_time(name) { - if (!this.enabled) { - return; - } - if (name in this.started) { - warn('Timer is already running for ' + name); - } - this.started[name] = Date.now(); - }, - timeEnd: function StatTimer_timeEnd(name) { - if (!this.enabled) { - return; - } - if (!(name in this.started)) { - warn('Timer has not been started for ' + name); - } - this.times.push({ - 'name': name, - 'start': this.started[name], - 'end': Date.now() - }); - // Remove timer from started so it can be called again. - delete this.started[name]; - }, - toString: function StatTimer_toString() { - var i, ii; - var times = this.times; - var out = ''; - // Find the longest name for padding purposes. - var longest = 0; - for (i = 0, ii = times.length; i < ii; ++i) { - var name = times[i]['name']; - if (name.length > longest) { - longest = name.length; - } - } - for (i = 0, ii = times.length; i < ii; ++i) { - var span = times[i]; - var duration = span.end - span.start; - out += rpad(span['name'], ' ', longest) + ' ' + duration + 'ms\n'; - } - return out; - } - }; - return StatTimer; -})(); - -PDFJS.createBlob = function createBlob(data, contentType) { - if (typeof Blob !== 'undefined') { - return new Blob([data], { type: contentType }); - } - // Blob builder is deprecated in FF14 and removed in FF18. - var bb = new MozBlobBuilder(); - bb.append(data); - return bb.getBlob(contentType); -}; - -PDFJS.createObjectURL = (function createObjectURLClosure() { - // Blob/createObjectURL is not available, falling back to data schema. - var digits = - 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; - - return function createObjectURL(data, contentType) { - if (!PDFJS.disableCreateObjectURL && - typeof URL !== 'undefined' && URL.createObjectURL) { - var blob = PDFJS.createBlob(data, contentType); - return URL.createObjectURL(blob); - } - - var buffer = 'data:' + contentType + ';base64,'; - for (var i = 0, ii = data.length; i < ii; i += 3) { - var b1 = data[i] & 0xFF; - var b2 = data[i + 1] & 0xFF; - var b3 = data[i + 2] & 0xFF; - var d1 = b1 >> 2, d2 = ((b1 & 3) << 4) | (b2 >> 4); - var d3 = i + 1 < ii ? ((b2 & 0xF) << 2) | (b3 >> 6) : 64; - var d4 = i + 2 < ii ? (b3 & 0x3F) : 64; - buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4]; - } - return buffer; - }; -})(); - -function MessageHandler(sourceName, targetName, comObj) { - this.sourceName = sourceName; - this.targetName = targetName; - this.comObj = comObj; - this.callbackIndex = 1; - this.postMessageTransfers = true; - var callbacksCapabilities = this.callbacksCapabilities = {}; - var ah = this.actionHandler = {}; - - this._onComObjOnMessage = function messageHandlerComObjOnMessage(event) { - var data = event.data; - if (data.targetName !== this.sourceName) { - return; - } - if (data.isReply) { - var callbackId = data.callbackId; - if (data.callbackId in callbacksCapabilities) { - var callback = callbacksCapabilities[callbackId]; - delete callbacksCapabilities[callbackId]; - if ('error' in data) { - callback.reject(data.error); - } else { - callback.resolve(data.data); - } - } else { - error('Cannot resolve callback ' + callbackId); - } - } else if (data.action in ah) { - var action = ah[data.action]; - if (data.callbackId) { - var sourceName = this.sourceName; - var targetName = data.sourceName; - Promise.resolve().then(function () { - return action[0].call(action[1], data.data); - }).then(function (result) { - comObj.postMessage({ - sourceName: sourceName, - targetName: targetName, - isReply: true, - callbackId: data.callbackId, - data: result - }); - }, function (reason) { - if (reason instanceof Error) { - // Serialize error to avoid "DataCloneError" - reason = reason + ''; - } - comObj.postMessage({ - sourceName: sourceName, - targetName: targetName, - isReply: true, - callbackId: data.callbackId, - error: reason - }); - }); - } else { - action[0].call(action[1], data.data); - } - } else { - error('Unknown action from worker: ' + data.action); - } - }.bind(this); - comObj.addEventListener('message', this._onComObjOnMessage); -} - -MessageHandler.prototype = { - on: function messageHandlerOn(actionName, handler, scope) { - var ah = this.actionHandler; - if (ah[actionName]) { - error('There is already an actionName called "' + actionName + '"'); - } - ah[actionName] = [handler, scope]; - }, - /** - * Sends a message to the comObj to invoke the action with the supplied data. - * @param {String} actionName Action to call. - * @param {JSON} data JSON data to send. - * @param {Array} [transfers] Optional list of transfers/ArrayBuffers - */ - send: function messageHandlerSend(actionName, data, transfers) { - var message = { - sourceName: this.sourceName, - targetName: this.targetName, - action: actionName, - data: data - }; - this.postMessage(message, transfers); - }, - /** - * Sends a message to the comObj to invoke the action with the supplied data. - * Expects that other side will callback with the response. - * @param {String} actionName Action to call. - * @param {JSON} data JSON data to send. - * @param {Array} [transfers] Optional list of transfers/ArrayBuffers. - * @returns {Promise} Promise to be resolved with response data. - */ - sendWithPromise: - function messageHandlerSendWithPromise(actionName, data, transfers) { - var callbackId = this.callbackIndex++; - var message = { - sourceName: this.sourceName, - targetName: this.targetName, - action: actionName, - data: data, - callbackId: callbackId - }; - var capability = createPromiseCapability(); - this.callbacksCapabilities[callbackId] = capability; - try { - this.postMessage(message, transfers); - } catch (e) { - capability.reject(e); - } - return capability.promise; - }, - /** - * Sends raw message to the comObj. - * @private - * @param message {Object} Raw message. - * @param transfers List of transfers/ArrayBuffers, or undefined. - */ - postMessage: function (message, transfers) { - if (transfers && this.postMessageTransfers) { - this.comObj.postMessage(message, transfers); - } else { - this.comObj.postMessage(message); - } - }, - - destroy: function () { - this.comObj.removeEventListener('message', this._onComObjOnMessage); - } -}; - -function loadJpegStream(id, imageUrl, objs) { - var img = new Image(); - img.onload = (function loadJpegStream_onloadClosure() { - objs.resolve(id, img); - }); - img.onerror = (function loadJpegStream_onerrorClosure() { - objs.resolve(id, null); - warn('Error during JPEG image loading'); - }); - img.src = imageUrl; -} - - // Polyfill from https://github.com/Polymer/URL -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ */ -(function checkURLConstructor(scope) { - /* jshint ignore:start */ - - // feature detect for URL constructor - var hasWorkingUrl = false; - try { - if (typeof URL === 'function' && - typeof URL.prototype === 'object' && - ('origin' in URL.prototype)) { - var u = new URL('b', 'http://a'); - u.pathname = 'c%20d'; - hasWorkingUrl = u.href === 'http://a/c%20d'; - } - } catch(e) { } - - if (hasWorkingUrl) - return; - - var relative = Object.create(null); - relative['ftp'] = 21; - relative['file'] = 0; - relative['gopher'] = 70; - relative['http'] = 80; - relative['https'] = 443; - relative['ws'] = 80; - relative['wss'] = 443; - - var relativePathDotMapping = Object.create(null); - relativePathDotMapping['%2e'] = '.'; - relativePathDotMapping['.%2e'] = '..'; - relativePathDotMapping['%2e.'] = '..'; - relativePathDotMapping['%2e%2e'] = '..'; - - function isRelativeScheme(scheme) { - return relative[scheme] !== undefined; - } - - function invalid() { - clear.call(this); - this._isInvalid = true; - } - - function IDNAToASCII(h) { - if ('' == h) { - invalid.call(this) - } - // XXX - return h.toLowerCase() - } - - function percentEscape(c) { - var unicode = c.charCodeAt(0); - if (unicode > 0x20 && - unicode < 0x7F && - // " # < > ? ` - [0x22, 0x23, 0x3C, 0x3E, 0x3F, 0x60].indexOf(unicode) == -1 - ) { - return c; - } - return encodeURIComponent(c); - } - - function percentEscapeQuery(c) { - // XXX This actually needs to encode c using encoding and then - // convert the bytes one-by-one. - - var unicode = c.charCodeAt(0); - if (unicode > 0x20 && - unicode < 0x7F && - // " # < > ` (do not escape '?') - [0x22, 0x23, 0x3C, 0x3E, 0x60].indexOf(unicode) == -1 - ) { - return c; - } - return encodeURIComponent(c); - } - - var EOF = undefined, - ALPHA = /[a-zA-Z]/, - ALPHANUMERIC = /[a-zA-Z0-9\+\-\.]/; - - function parse(input, stateOverride, base) { - function err(message) { - errors.push(message) - } - - var state = stateOverride || 'scheme start', - cursor = 0, - buffer = '', - seenAt = false, - seenBracket = false, - errors = []; - - loop: while ((input[cursor - 1] != EOF || cursor == 0) && !this._isInvalid) { - var c = input[cursor]; - switch (state) { - case 'scheme start': - if (c && ALPHA.test(c)) { - buffer += c.toLowerCase(); // ASCII-safe - state = 'scheme'; - } else if (!stateOverride) { - buffer = ''; - state = 'no scheme'; - continue; - } else { - err('Invalid scheme.'); - break loop; - } - break; - - case 'scheme': - if (c && ALPHANUMERIC.test(c)) { - buffer += c.toLowerCase(); // ASCII-safe - } else if (':' == c) { - this._scheme = buffer; - buffer = ''; - if (stateOverride) { - break loop; - } - if (isRelativeScheme(this._scheme)) { - this._isRelative = true; - } - if ('file' == this._scheme) { - state = 'relative'; - } else if (this._isRelative && base && base._scheme == this._scheme) { - state = 'relative or authority'; - } else if (this._isRelative) { - state = 'authority first slash'; - } else { - state = 'scheme data'; - } - } else if (!stateOverride) { - buffer = ''; - cursor = 0; - state = 'no scheme'; - continue; - } else if (EOF == c) { - break loop; - } else { - err('Code point not allowed in scheme: ' + c) - break loop; - } - break; - - case 'scheme data': - if ('?' == c) { - this._query = '?'; - state = 'query'; - } else if ('#' == c) { - this._fragment = '#'; - state = 'fragment'; - } else { - // XXX error handling - if (EOF != c && '\t' != c && '\n' != c && '\r' != c) { - this._schemeData += percentEscape(c); - } - } - break; - - case 'no scheme': - if (!base || !(isRelativeScheme(base._scheme))) { - err('Missing scheme.'); - invalid.call(this); - } else { - state = 'relative'; - continue; - } - break; - - case 'relative or authority': - if ('/' == c && '/' == input[cursor+1]) { - state = 'authority ignore slashes'; - } else { - err('Expected /, got: ' + c); - state = 'relative'; - continue - } - break; - - case 'relative': - this._isRelative = true; - if ('file' != this._scheme) - this._scheme = base._scheme; - if (EOF == c) { - this._host = base._host; - this._port = base._port; - this._path = base._path.slice(); - this._query = base._query; - this._username = base._username; - this._password = base._password; - break loop; - } else if ('/' == c || '\\' == c) { - if ('\\' == c) - err('\\ is an invalid code point.'); - state = 'relative slash'; - } else if ('?' == c) { - this._host = base._host; - this._port = base._port; - this._path = base._path.slice(); - this._query = '?'; - this._username = base._username; - this._password = base._password; - state = 'query'; - } else if ('#' == c) { - this._host = base._host; - this._port = base._port; - this._path = base._path.slice(); - this._query = base._query; - this._fragment = '#'; - this._username = base._username; - this._password = base._password; - state = 'fragment'; - } else { - var nextC = input[cursor+1] - var nextNextC = input[cursor+2] - if ( - 'file' != this._scheme || !ALPHA.test(c) || - (nextC != ':' && nextC != '|') || - (EOF != nextNextC && '/' != nextNextC && '\\' != nextNextC && '?' != nextNextC && '#' != nextNextC)) { - this._host = base._host; - this._port = base._port; - this._username = base._username; - this._password = base._password; - this._path = base._path.slice(); - this._path.pop(); - } - state = 'relative path'; - continue; - } - break; - - case 'relative slash': - if ('/' == c || '\\' == c) { - if ('\\' == c) { - err('\\ is an invalid code point.'); - } - if ('file' == this._scheme) { - state = 'file host'; - } else { - state = 'authority ignore slashes'; - } - } else { - if ('file' != this._scheme) { - this._host = base._host; - this._port = base._port; - this._username = base._username; - this._password = base._password; - } - state = 'relative path'; - continue; - } - break; - - case 'authority first slash': - if ('/' == c) { - state = 'authority second slash'; - } else { - err("Expected '/', got: " + c); - state = 'authority ignore slashes'; - continue; - } - break; - - case 'authority second slash': - state = 'authority ignore slashes'; - if ('/' != c) { - err("Expected '/', got: " + c); - continue; - } - break; - - case 'authority ignore slashes': - if ('/' != c && '\\' != c) { - state = 'authority'; - continue; - } else { - err('Expected authority, got: ' + c); - } - break; - - case 'authority': - if ('@' == c) { - if (seenAt) { - err('@ already seen.'); - buffer += '%40'; - } - seenAt = true; - for (var i = 0; i < buffer.length; i++) { - var cp = buffer[i]; - if ('\t' == cp || '\n' == cp || '\r' == cp) { - err('Invalid whitespace in authority.'); - continue; - } - // XXX check URL code points - if (':' == cp && null === this._password) { - this._password = ''; - continue; - } - var tempC = percentEscape(cp); - (null !== this._password) ? this._password += tempC : this._username += tempC; - } - buffer = ''; - } else if (EOF == c || '/' == c || '\\' == c || '?' == c || '#' == c) { - cursor -= buffer.length; - buffer = ''; - state = 'host'; - continue; - } else { - buffer += c; - } - break; - - case 'file host': - if (EOF == c || '/' == c || '\\' == c || '?' == c || '#' == c) { - if (buffer.length == 2 && ALPHA.test(buffer[0]) && (buffer[1] == ':' || buffer[1] == '|')) { - state = 'relative path'; - } else if (buffer.length == 0) { - state = 'relative path start'; - } else { - this._host = IDNAToASCII.call(this, buffer); - buffer = ''; - state = 'relative path start'; - } - continue; - } else if ('\t' == c || '\n' == c || '\r' == c) { - err('Invalid whitespace in file host.'); - } else { - buffer += c; - } - break; - - case 'host': - case 'hostname': - if (':' == c && !seenBracket) { - // XXX host parsing - this._host = IDNAToASCII.call(this, buffer); - buffer = ''; - state = 'port'; - if ('hostname' == stateOverride) { - break loop; - } - } else if (EOF == c || '/' == c || '\\' == c || '?' == c || '#' == c) { - this._host = IDNAToASCII.call(this, buffer); - buffer = ''; - state = 'relative path start'; - if (stateOverride) { - break loop; - } - continue; - } else if ('\t' != c && '\n' != c && '\r' != c) { - if ('[' == c) { - seenBracket = true; - } else if (']' == c) { - seenBracket = false; - } - buffer += c; - } else { - err('Invalid code point in host/hostname: ' + c); - } - break; - - case 'port': - if (/[0-9]/.test(c)) { - buffer += c; - } else if (EOF == c || '/' == c || '\\' == c || '?' == c || '#' == c || stateOverride) { - if ('' != buffer) { - var temp = parseInt(buffer, 10); - if (temp != relative[this._scheme]) { - this._port = temp + ''; - } - buffer = ''; - } - if (stateOverride) { - break loop; - } - state = 'relative path start'; - continue; - } else if ('\t' == c || '\n' == c || '\r' == c) { - err('Invalid code point in port: ' + c); - } else { - invalid.call(this); - } - break; - - case 'relative path start': - if ('\\' == c) - err("'\\' not allowed in path."); - state = 'relative path'; - if ('/' != c && '\\' != c) { - continue; - } - break; - - case 'relative path': - if (EOF == c || '/' == c || '\\' == c || (!stateOverride && ('?' == c || '#' == c))) { - if ('\\' == c) { - err('\\ not allowed in relative path.'); - } - var tmp; - if (tmp = relativePathDotMapping[buffer.toLowerCase()]) { - buffer = tmp; - } - if ('..' == buffer) { - this._path.pop(); - if ('/' != c && '\\' != c) { - this._path.push(''); - } - } else if ('.' == buffer && '/' != c && '\\' != c) { - this._path.push(''); - } else if ('.' != buffer) { - if ('file' == this._scheme && this._path.length == 0 && buffer.length == 2 && ALPHA.test(buffer[0]) && buffer[1] == '|') { - buffer = buffer[0] + ':'; - } - this._path.push(buffer); - } - buffer = ''; - if ('?' == c) { - this._query = '?'; - state = 'query'; - } else if ('#' == c) { - this._fragment = '#'; - state = 'fragment'; - } - } else if ('\t' != c && '\n' != c && '\r' != c) { - buffer += percentEscape(c); - } - break; - - case 'query': - if (!stateOverride && '#' == c) { - this._fragment = '#'; - state = 'fragment'; - } else if (EOF != c && '\t' != c && '\n' != c && '\r' != c) { - this._query += percentEscapeQuery(c); - } - break; - - case 'fragment': - if (EOF != c && '\t' != c && '\n' != c && '\r' != c) { - this._fragment += c; - } - break; - } - - cursor++; - } - } - - function clear() { - this._scheme = ''; - this._schemeData = ''; - this._username = ''; - this._password = null; - this._host = ''; - this._port = ''; - this._path = []; - this._query = ''; - this._fragment = ''; - this._isInvalid = false; - this._isRelative = false; - } - - // Does not process domain names or IP addresses. - // Does not handle encoding for the query parameter. - function jURL(url, base /* , encoding */) { - if (base !== undefined && !(base instanceof jURL)) - base = new jURL(String(base)); - - this._url = url; - clear.call(this); - - var input = url.replace(/^[ \t\r\n\f]+|[ \t\r\n\f]+$/g, ''); - // encoding = encoding || 'utf-8' - - parse.call(this, input, null, base); - } - - jURL.prototype = { - toString: function() { - return this.href; - }, - get href() { - if (this._isInvalid) - return this._url; - - var authority = ''; - if ('' != this._username || null != this._password) { - authority = this._username + - (null != this._password ? ':' + this._password : '') + '@'; - } - - return this.protocol + - (this._isRelative ? '//' + authority + this.host : '') + - this.pathname + this._query + this._fragment; - }, - set href(href) { - clear.call(this); - parse.call(this, href); - }, - - get protocol() { - return this._scheme + ':'; - }, - set protocol(protocol) { - if (this._isInvalid) - return; - parse.call(this, protocol + ':', 'scheme start'); - }, - - get host() { - return this._isInvalid ? '' : this._port ? - this._host + ':' + this._port : this._host; - }, - set host(host) { - if (this._isInvalid || !this._isRelative) - return; - parse.call(this, host, 'host'); - }, - - get hostname() { - return this._host; - }, - set hostname(hostname) { - if (this._isInvalid || !this._isRelative) - return; - parse.call(this, hostname, 'hostname'); - }, - - get port() { - return this._port; - }, - set port(port) { - if (this._isInvalid || !this._isRelative) - return; - parse.call(this, port, 'port'); - }, - - get pathname() { - return this._isInvalid ? '' : this._isRelative ? - '/' + this._path.join('/') : this._schemeData; - }, - set pathname(pathname) { - if (this._isInvalid || !this._isRelative) - return; - this._path = []; - parse.call(this, pathname, 'relative path start'); - }, - - get search() { - return this._isInvalid || !this._query || '?' == this._query ? - '' : this._query; - }, - set search(search) { - if (this._isInvalid || !this._isRelative) - return; - this._query = '?'; - if ('?' == search[0]) - search = search.slice(1); - parse.call(this, search, 'query'); - }, - - get hash() { - return this._isInvalid || !this._fragment || '#' == this._fragment ? - '' : this._fragment; - }, - set hash(hash) { - if (this._isInvalid) - return; - this._fragment = '#'; - if ('#' == hash[0]) - hash = hash.slice(1); - parse.call(this, hash, 'fragment'); - }, - - get origin() { - var host; - if (this._isInvalid || !this._scheme) { - return ''; - } - // javascript: Gecko returns String(""), WebKit/Blink String("null") - // Gecko throws error for "data://" - // data: Gecko returns "", Blink returns "data://", WebKit returns "null" - // Gecko returns String("") for file: mailto: - // WebKit/Blink returns String("SCHEME://") for file: mailto: - switch (this._scheme) { - case 'data': - case 'file': - case 'javascript': - case 'mailto': - return 'null'; - } - host = this.host; - if (!host) { - return ''; - } - return this._scheme + '://' + host; - } - }; - - // Copy over the static methods - var OriginalURL = scope.URL; - if (OriginalURL) { - jURL.createObjectURL = function(blob) { - // IE extension allows a second optional options argument. - // http://msdn.microsoft.com/en-us/library/ie/hh772302(v=vs.85).aspx - return OriginalURL.createObjectURL.apply(OriginalURL, arguments); - }; - jURL.revokeObjectURL = function(url) { - OriginalURL.revokeObjectURL(url); - }; - } - - scope.URL = jURL; - /* jshint ignore:end */ -})(globalScope); - -exports.FONT_IDENTITY_MATRIX = FONT_IDENTITY_MATRIX; -exports.IDENTITY_MATRIX = IDENTITY_MATRIX; -exports.OPS = OPS; -exports.UNSUPPORTED_FEATURES = UNSUPPORTED_FEATURES; -exports.AnnotationBorderStyleType = AnnotationBorderStyleType; -exports.AnnotationFlag = AnnotationFlag; -exports.AnnotationType = AnnotationType; -exports.FontType = FontType; -exports.ImageKind = ImageKind; -exports.InvalidPDFException = InvalidPDFException; -exports.LinkTarget = LinkTarget; -exports.LinkTargetStringMap = LinkTargetStringMap; -exports.MessageHandler = MessageHandler; -exports.MissingDataException = MissingDataException; -exports.MissingPDFException = MissingPDFException; -exports.NotImplementedException = NotImplementedException; -exports.PasswordException = PasswordException; -exports.PasswordResponses = PasswordResponses; -exports.StatTimer = StatTimer; -exports.StreamType = StreamType; -exports.TextRenderingMode = TextRenderingMode; -exports.UnexpectedResponseException = UnexpectedResponseException; -exports.UnknownErrorException = UnknownErrorException; -exports.Util = Util; -exports.XRefParseException = XRefParseException; -exports.assert = assert; -exports.bytesToString = bytesToString; -exports.combineUrl = combineUrl; -exports.createPromiseCapability = createPromiseCapability; -exports.deprecated = deprecated; -exports.error = error; -exports.info = info; -exports.isArray = isArray; -exports.isArrayBuffer = isArrayBuffer; -exports.isBool = isBool; -exports.isEmptyObj = isEmptyObj; -exports.isExternalLinkTargetSet = isExternalLinkTargetSet; -exports.isInt = isInt; -exports.isNum = isNum; -exports.isString = isString; -exports.isValidUrl = isValidUrl; -exports.addLinkAttributes = addLinkAttributes; -exports.loadJpegStream = loadJpegStream; -exports.log2 = log2; -exports.readInt8 = readInt8; -exports.readUint16 = readUint16; -exports.readUint32 = readUint32; -exports.removeNullCharacters = removeNullCharacters; -exports.shadow = shadow; -exports.string32 = string32; -exports.stringToBytes = stringToBytes; -exports.stringToPDFString = stringToPDFString; -exports.stringToUTF8String = stringToUTF8String; -exports.utf8StringToString = utf8StringToString; -exports.warn = warn; -})); - - -(function (root, factory) { - { - factory((root.pdfjsCoreChunkedStream = {}), root.pdfjsSharedUtil); - } -}(this, function (exports, sharedUtil) { - -var MissingDataException = sharedUtil.MissingDataException; -var assert = sharedUtil.assert; -var createPromiseCapability = sharedUtil.createPromiseCapability; -var isInt = sharedUtil.isInt; -var isEmptyObj = sharedUtil.isEmptyObj; - -var ChunkedStream = (function ChunkedStreamClosure() { - function ChunkedStream(length, chunkSize, manager) { - this.bytes = new Uint8Array(length); - this.start = 0; - this.pos = 0; - this.end = length; - this.chunkSize = chunkSize; - this.loadedChunks = []; - this.numChunksLoaded = 0; - this.numChunks = Math.ceil(length / chunkSize); - this.manager = manager; - this.progressiveDataLength = 0; - this.lastSuccessfulEnsureByteChunk = -1; // a single-entry cache - } - - // required methods for a stream. if a particular stream does not - // implement these, an error should be thrown - ChunkedStream.prototype = { - - getMissingChunks: function ChunkedStream_getMissingChunks() { - var chunks = []; - for (var chunk = 0, n = this.numChunks; chunk < n; ++chunk) { - if (!this.loadedChunks[chunk]) { - chunks.push(chunk); - } - } - return chunks; - }, - - getBaseStreams: function ChunkedStream_getBaseStreams() { - return [this]; - }, - - allChunksLoaded: function ChunkedStream_allChunksLoaded() { - return this.numChunksLoaded === this.numChunks; - }, - - onReceiveData: function ChunkedStream_onReceiveData(begin, chunk) { - var end = begin + chunk.byteLength; - - assert(begin % this.chunkSize === 0, 'Bad begin offset: ' + begin); - // Using this.length is inaccurate here since this.start can be moved - // See ChunkedStream.moveStart() - var length = this.bytes.length; - assert(end % this.chunkSize === 0 || end === length, - 'Bad end offset: ' + end); - - this.bytes.set(new Uint8Array(chunk), begin); - var chunkSize = this.chunkSize; - var beginChunk = Math.floor(begin / chunkSize); - var endChunk = Math.floor((end - 1) / chunkSize) + 1; - var curChunk; - - for (curChunk = beginChunk; curChunk < endChunk; ++curChunk) { - if (!this.loadedChunks[curChunk]) { - this.loadedChunks[curChunk] = true; - ++this.numChunksLoaded; - } - } - }, - - onReceiveProgressiveData: - function ChunkedStream_onReceiveProgressiveData(data) { - var position = this.progressiveDataLength; - var beginChunk = Math.floor(position / this.chunkSize); - - this.bytes.set(new Uint8Array(data), position); - position += data.byteLength; - this.progressiveDataLength = position; - var endChunk = position >= this.end ? this.numChunks : - Math.floor(position / this.chunkSize); - var curChunk; - for (curChunk = beginChunk; curChunk < endChunk; ++curChunk) { - if (!this.loadedChunks[curChunk]) { - this.loadedChunks[curChunk] = true; - ++this.numChunksLoaded; - } - } - }, - - ensureByte: function ChunkedStream_ensureByte(pos) { - var chunk = Math.floor(pos / this.chunkSize); - if (chunk === this.lastSuccessfulEnsureByteChunk) { - return; - } - - if (!this.loadedChunks[chunk]) { - throw new MissingDataException(pos, pos + 1); - } - this.lastSuccessfulEnsureByteChunk = chunk; - }, - - ensureRange: function ChunkedStream_ensureRange(begin, end) { - if (begin >= end) { - return; - } - - if (end <= this.progressiveDataLength) { - return; - } - - var chunkSize = this.chunkSize; - var beginChunk = Math.floor(begin / chunkSize); - var endChunk = Math.floor((end - 1) / chunkSize) + 1; - for (var chunk = beginChunk; chunk < endChunk; ++chunk) { - if (!this.loadedChunks[chunk]) { - throw new MissingDataException(begin, end); - } - } - }, - - nextEmptyChunk: function ChunkedStream_nextEmptyChunk(beginChunk) { - var chunk, numChunks = this.numChunks; - for (var i = 0; i < numChunks; ++i) { - chunk = (beginChunk + i) % numChunks; // Wrap around to beginning - if (!this.loadedChunks[chunk]) { - return chunk; - } - } - return null; - }, - - hasChunk: function ChunkedStream_hasChunk(chunk) { - return !!this.loadedChunks[chunk]; - }, - - get length() { - return this.end - this.start; - }, - - get isEmpty() { - return this.length === 0; - }, - - getByte: function ChunkedStream_getByte() { - var pos = this.pos; - if (pos >= this.end) { - return -1; - } - this.ensureByte(pos); - return this.bytes[this.pos++]; - }, - - getUint16: function ChunkedStream_getUint16() { - var b0 = this.getByte(); - var b1 = this.getByte(); - if (b0 === -1 || b1 === -1) { - return -1; - } - return (b0 << 8) + b1; - }, - - getInt32: function ChunkedStream_getInt32() { - var b0 = this.getByte(); - var b1 = this.getByte(); - var b2 = this.getByte(); - var b3 = this.getByte(); - return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3; - }, - - // returns subarray of original buffer - // should only be read - getBytes: function ChunkedStream_getBytes(length) { - var bytes = this.bytes; - var pos = this.pos; - var strEnd = this.end; - - if (!length) { - this.ensureRange(pos, strEnd); - return bytes.subarray(pos, strEnd); - } - - var end = pos + length; - if (end > strEnd) { - end = strEnd; - } - this.ensureRange(pos, end); - - this.pos = end; - return bytes.subarray(pos, end); - }, - - peekByte: function ChunkedStream_peekByte() { - var peekedByte = this.getByte(); - this.pos--; - return peekedByte; - }, - - peekBytes: function ChunkedStream_peekBytes(length) { - var bytes = this.getBytes(length); - this.pos -= bytes.length; - return bytes; - }, - - getByteRange: function ChunkedStream_getBytes(begin, end) { - this.ensureRange(begin, end); - return this.bytes.subarray(begin, end); - }, - - skip: function ChunkedStream_skip(n) { - if (!n) { - n = 1; - } - this.pos += n; - }, - - reset: function ChunkedStream_reset() { - this.pos = this.start; - }, - - moveStart: function ChunkedStream_moveStart() { - this.start = this.pos; - }, - - makeSubStream: function ChunkedStream_makeSubStream(start, length, dict) { - this.ensureRange(start, start + length); - - function ChunkedStreamSubstream() {} - ChunkedStreamSubstream.prototype = Object.create(this); - ChunkedStreamSubstream.prototype.getMissingChunks = function() { - var chunkSize = this.chunkSize; - var beginChunk = Math.floor(this.start / chunkSize); - var endChunk = Math.floor((this.end - 1) / chunkSize) + 1; - var missingChunks = []; - for (var chunk = beginChunk; chunk < endChunk; ++chunk) { - if (!this.loadedChunks[chunk]) { - missingChunks.push(chunk); - } - } - return missingChunks; - }; - var subStream = new ChunkedStreamSubstream(); - subStream.pos = subStream.start = start; - subStream.end = start + length || this.end; - subStream.dict = dict; - return subStream; - }, - - isStream: true - }; - - return ChunkedStream; -})(); - -var ChunkedStreamManager = (function ChunkedStreamManagerClosure() { - - function ChunkedStreamManager(length, chunkSize, url, args) { - this.stream = new ChunkedStream(length, chunkSize, this); - this.length = length; - this.chunkSize = chunkSize; - this.url = url; - this.disableAutoFetch = args.disableAutoFetch; - var msgHandler = this.msgHandler = args.msgHandler; - - if (args.chunkedViewerLoading) { - msgHandler.on('OnDataRange', this.onReceiveData.bind(this)); - msgHandler.on('OnDataProgress', this.onProgress.bind(this)); - this.sendRequest = function ChunkedStreamManager_sendRequest(begin, end) { - msgHandler.send('RequestDataRange', { begin: begin, end: end }); - }; - } else { - - var getXhr = function getXhr() { - return new XMLHttpRequest(); - }; - this.networkManager = new NetworkManager(this.url, { - getXhr: getXhr, - httpHeaders: args.httpHeaders, - withCredentials: args.withCredentials - }); - this.sendRequest = function ChunkedStreamManager_sendRequest(begin, end) { - this.networkManager.requestRange(begin, end, { - onDone: this.onReceiveData.bind(this), - onProgress: this.onProgress.bind(this) - }); - }; - } - - this.currRequestId = 0; - - this.chunksNeededByRequest = {}; - this.requestsByChunk = {}; - this.promisesByRequest = {}; - this.progressiveDataLength = 0; - - this._loadedStreamCapability = createPromiseCapability(); - - if (args.initialData) { - this.onReceiveData({chunk: args.initialData}); - } - } - - ChunkedStreamManager.prototype = { - onLoadedStream: function ChunkedStreamManager_getLoadedStream() { - return this._loadedStreamCapability.promise; - }, - - // Get all the chunks that are not yet loaded and groups them into - // contiguous ranges to load in as few requests as possible - requestAllChunks: function ChunkedStreamManager_requestAllChunks() { - var missingChunks = this.stream.getMissingChunks(); - this._requestChunks(missingChunks); - return this._loadedStreamCapability.promise; - }, - - _requestChunks: function ChunkedStreamManager_requestChunks(chunks) { - var requestId = this.currRequestId++; - - var chunksNeeded; - var i, ii; - this.chunksNeededByRequest[requestId] = chunksNeeded = {}; - for (i = 0, ii = chunks.length; i < ii; i++) { - if (!this.stream.hasChunk(chunks[i])) { - chunksNeeded[chunks[i]] = true; - } - } - - if (isEmptyObj(chunksNeeded)) { - return Promise.resolve(); - } - - var capability = createPromiseCapability(); - this.promisesByRequest[requestId] = capability; - - var chunksToRequest = []; - for (var chunk in chunksNeeded) { - chunk = chunk | 0; - if (!(chunk in this.requestsByChunk)) { - this.requestsByChunk[chunk] = []; - chunksToRequest.push(chunk); - } - this.requestsByChunk[chunk].push(requestId); - } - - if (!chunksToRequest.length) { - return capability.promise; - } - - var groupedChunksToRequest = this.groupChunks(chunksToRequest); - - for (i = 0; i < groupedChunksToRequest.length; ++i) { - var groupedChunk = groupedChunksToRequest[i]; - var begin = groupedChunk.beginChunk * this.chunkSize; - var end = Math.min(groupedChunk.endChunk * this.chunkSize, this.length); - this.sendRequest(begin, end); - } - - return capability.promise; - }, - - getStream: function ChunkedStreamManager_getStream() { - return this.stream; - }, - - // Loads any chunks in the requested range that are not yet loaded - requestRange: function ChunkedStreamManager_requestRange(begin, end) { - - end = Math.min(end, this.length); - - var beginChunk = this.getBeginChunk(begin); - var endChunk = this.getEndChunk(end); - - var chunks = []; - for (var chunk = beginChunk; chunk < endChunk; ++chunk) { - chunks.push(chunk); - } - - return this._requestChunks(chunks); - }, - - requestRanges: function ChunkedStreamManager_requestRanges(ranges) { - ranges = ranges || []; - var chunksToRequest = []; - - for (var i = 0; i < ranges.length; i++) { - var beginChunk = this.getBeginChunk(ranges[i].begin); - var endChunk = this.getEndChunk(ranges[i].end); - for (var chunk = beginChunk; chunk < endChunk; ++chunk) { - if (chunksToRequest.indexOf(chunk) < 0) { - chunksToRequest.push(chunk); - } - } - } - - chunksToRequest.sort(function(a, b) { return a - b; }); - return this._requestChunks(chunksToRequest); - }, - - // Groups a sorted array of chunks into as few contiguous larger - // chunks as possible - groupChunks: function ChunkedStreamManager_groupChunks(chunks) { - var groupedChunks = []; - var beginChunk = -1; - var prevChunk = -1; - for (var i = 0; i < chunks.length; ++i) { - var chunk = chunks[i]; - - if (beginChunk < 0) { - beginChunk = chunk; - } - - if (prevChunk >= 0 && prevChunk + 1 !== chunk) { - groupedChunks.push({ beginChunk: beginChunk, - endChunk: prevChunk + 1 }); - beginChunk = chunk; - } - if (i + 1 === chunks.length) { - groupedChunks.push({ beginChunk: beginChunk, - endChunk: chunk + 1 }); - } - - prevChunk = chunk; - } - return groupedChunks; - }, - - onProgress: function ChunkedStreamManager_onProgress(args) { - var bytesLoaded = (this.stream.numChunksLoaded * this.chunkSize + - args.loaded); - this.msgHandler.send('DocProgress', { - loaded: bytesLoaded, - total: this.length - }); - }, - - onReceiveData: function ChunkedStreamManager_onReceiveData(args) { - var chunk = args.chunk; - var isProgressive = args.begin === undefined; - var begin = isProgressive ? this.progressiveDataLength : args.begin; - var end = begin + chunk.byteLength; - - var beginChunk = Math.floor(begin / this.chunkSize); - var endChunk = end < this.length ? Math.floor(end / this.chunkSize) : - Math.ceil(end / this.chunkSize); - - if (isProgressive) { - this.stream.onReceiveProgressiveData(chunk); - this.progressiveDataLength = end; - } else { - this.stream.onReceiveData(begin, chunk); - } - - if (this.stream.allChunksLoaded()) { - this._loadedStreamCapability.resolve(this.stream); - } - - var loadedRequests = []; - var i, requestId; - for (chunk = beginChunk; chunk < endChunk; ++chunk) { - // The server might return more chunks than requested - var requestIds = this.requestsByChunk[chunk] || []; - delete this.requestsByChunk[chunk]; - - for (i = 0; i < requestIds.length; ++i) { - requestId = requestIds[i]; - var chunksNeeded = this.chunksNeededByRequest[requestId]; - if (chunk in chunksNeeded) { - delete chunksNeeded[chunk]; - } - - if (!isEmptyObj(chunksNeeded)) { - continue; - } - - loadedRequests.push(requestId); - } - } - - // If there are no pending requests, automatically fetch the next - // unfetched chunk of the PDF - if (!this.disableAutoFetch && isEmptyObj(this.requestsByChunk)) { - var nextEmptyChunk; - if (this.stream.numChunksLoaded === 1) { - // This is a special optimization so that after fetching the first - // chunk, rather than fetching the second chunk, we fetch the last - // chunk. - var lastChunk = this.stream.numChunks - 1; - if (!this.stream.hasChunk(lastChunk)) { - nextEmptyChunk = lastChunk; - } - } else { - nextEmptyChunk = this.stream.nextEmptyChunk(endChunk); - } - if (isInt(nextEmptyChunk)) { - this._requestChunks([nextEmptyChunk]); - } - } - - for (i = 0; i < loadedRequests.length; ++i) { - requestId = loadedRequests[i]; - var capability = this.promisesByRequest[requestId]; - delete this.promisesByRequest[requestId]; - capability.resolve(); - } - - this.msgHandler.send('DocProgress', { - loaded: this.stream.numChunksLoaded * this.chunkSize, - total: this.length - }); - }, - - onError: function ChunkedStreamManager_onError(err) { - this._loadedStreamCapability.reject(err); - }, - - getBeginChunk: function ChunkedStreamManager_getBeginChunk(begin) { - var chunk = Math.floor(begin / this.chunkSize); - return chunk; - }, - - getEndChunk: function ChunkedStreamManager_getEndChunk(end) { - var chunk = Math.floor((end - 1) / this.chunkSize) + 1; - return chunk; - }, - - abort: function ChunkedStreamManager_abort() { - if (this.networkManager) { - this.networkManager.abortAllRequests(); - } - for(var requestId in this.promisesByRequest) { - var capability = this.promisesByRequest[requestId]; - capability.reject(new Error('Request was aborted')); - } - } - }; - - return ChunkedStreamManager; -})(); - -exports.ChunkedStream = ChunkedStream; -exports.ChunkedStreamManager = ChunkedStreamManager; -})); - - -(function (root, factory) { - { - factory((root.pdfjsCoreJbig2 = {}), root.pdfjsSharedUtil, - root.pdfjsCoreArithmeticDecoder); - } -}(this, function (exports, sharedUtil, coreArithmeticDecoder) { - -var error = sharedUtil.error; -var log2 = sharedUtil.log2; -var readInt8 = sharedUtil.readInt8; -var readUint16 = sharedUtil.readUint16; -var readUint32 = sharedUtil.readUint32; -var shadow = sharedUtil.shadow; -var ArithmeticDecoder = coreArithmeticDecoder.ArithmeticDecoder; - -var Jbig2Image = (function Jbig2ImageClosure() { - // Utility data structures - function ContextCache() {} - - ContextCache.prototype = { - getContexts: function(id) { - if (id in this) { - return this[id]; - } - return (this[id] = new Int8Array(1 << 16)); - } - }; - - function DecodingContext(data, start, end) { - this.data = data; - this.start = start; - this.end = end; - } - - DecodingContext.prototype = { - get decoder() { - var decoder = new ArithmeticDecoder(this.data, this.start, this.end); - return shadow(this, 'decoder', decoder); - }, - get contextCache() { - var cache = new ContextCache(); - return shadow(this, 'contextCache', cache); - } - }; - - // Annex A. Arithmetic Integer Decoding Procedure - // A.2 Procedure for decoding values - function decodeInteger(contextCache, procedure, decoder) { - var contexts = contextCache.getContexts(procedure); - var prev = 1; - - function readBits(length) { - var v = 0; - for (var i = 0; i < length; i++) { - var bit = decoder.readBit(contexts, prev); - prev = (prev < 256 ? (prev << 1) | bit : - (((prev << 1) | bit) & 511) | 256); - v = (v << 1) | bit; - } - return v >>> 0; - } - - var sign = readBits(1); - var value = readBits(1) ? - (readBits(1) ? - (readBits(1) ? - (readBits(1) ? - (readBits(1) ? - (readBits(32) + 4436) : - readBits(12) + 340) : - readBits(8) + 84) : - readBits(6) + 20) : - readBits(4) + 4) : - readBits(2); - return (sign === 0 ? value : (value > 0 ? -value : null)); - } - - // A.3 The IAID decoding procedure - function decodeIAID(contextCache, decoder, codeLength) { - var contexts = contextCache.getContexts('IAID'); - - var prev = 1; - for (var i = 0; i < codeLength; i++) { - var bit = decoder.readBit(contexts, prev); - prev = (prev << 1) | bit; - } - if (codeLength < 31) { - return prev & ((1 << codeLength) - 1); - } - return prev & 0x7FFFFFFF; - } - - // 7.3 Segment types - var SegmentTypes = [ - 'SymbolDictionary', null, null, null, 'IntermediateTextRegion', null, - 'ImmediateTextRegion', 'ImmediateLosslessTextRegion', null, null, null, - null, null, null, null, null, 'patternDictionary', null, null, null, - 'IntermediateHalftoneRegion', null, 'ImmediateHalftoneRegion', - 'ImmediateLosslessHalftoneRegion', null, null, null, null, null, null, null, - null, null, null, null, null, 'IntermediateGenericRegion', null, - 'ImmediateGenericRegion', 'ImmediateLosslessGenericRegion', - 'IntermediateGenericRefinementRegion', null, - 'ImmediateGenericRefinementRegion', - 'ImmediateLosslessGenericRefinementRegion', null, null, null, null, - 'PageInformation', 'EndOfPage', 'EndOfStripe', 'EndOfFile', 'Profiles', - 'Tables', null, null, null, null, null, null, null, null, - 'Extension' - ]; - - var CodingTemplates = [ - [{x: -1, y: -2}, {x: 0, y: -2}, {x: 1, y: -2}, {x: -2, y: -1}, - {x: -1, y: -1}, {x: 0, y: -1}, {x: 1, y: -1}, {x: 2, y: -1}, - {x: -4, y: 0}, {x: -3, y: 0}, {x: -2, y: 0}, {x: -1, y: 0}], - [{x: -1, y: -2}, {x: 0, y: -2}, {x: 1, y: -2}, {x: 2, y: -2}, - {x: -2, y: -1}, {x: -1, y: -1}, {x: 0, y: -1}, {x: 1, y: -1}, - {x: 2, y: -1}, {x: -3, y: 0}, {x: -2, y: 0}, {x: -1, y: 0}], - [{x: -1, y: -2}, {x: 0, y: -2}, {x: 1, y: -2}, {x: -2, y: -1}, - {x: -1, y: -1}, {x: 0, y: -1}, {x: 1, y: -1}, {x: -2, y: 0}, - {x: -1, y: 0}], - [{x: -3, y: -1}, {x: -2, y: -1}, {x: -1, y: -1}, {x: 0, y: -1}, - {x: 1, y: -1}, {x: -4, y: 0}, {x: -3, y: 0}, {x: -2, y: 0}, {x: -1, y: 0}] - ]; - - var RefinementTemplates = [ - { - coding: [{x: 0, y: -1}, {x: 1, y: -1}, {x: -1, y: 0}], - reference: [{x: 0, y: -1}, {x: 1, y: -1}, {x: -1, y: 0}, {x: 0, y: 0}, - {x: 1, y: 0}, {x: -1, y: 1}, {x: 0, y: 1}, {x: 1, y: 1}] - }, - { - coding: [{x: -1, y: -1}, {x: 0, y: -1}, {x: 1, y: -1}, {x: -1, y: 0}], - reference: [{x: 0, y: -1}, {x: -1, y: 0}, {x: 0, y: 0}, {x: 1, y: 0}, - {x: 0, y: 1}, {x: 1, y: 1}] - } - ]; - - // See 6.2.5.7 Decoding the bitmap. - var ReusedContexts = [ - 0x9B25, // 10011 0110010 0101 - 0x0795, // 0011 110010 101 - 0x00E5, // 001 11001 01 - 0x0195 // 011001 0101 - ]; - - var RefinementReusedContexts = [ - 0x0020, // '000' + '0' (coding) + '00010000' + '0' (reference) - 0x0008 // '0000' + '001000' - ]; - - function decodeBitmapTemplate0(width, height, decodingContext) { - var decoder = decodingContext.decoder; - var contexts = decodingContext.contextCache.getContexts('GB'); - var contextLabel, i, j, pixel, row, row1, row2, bitmap = []; - - // ...ooooo.... - // ..ooooooo... Context template for current pixel (X) - // .ooooX...... (concatenate values of 'o'-pixels to get contextLabel) - var OLD_PIXEL_MASK = 0x7BF7; // 01111 0111111 0111 - - for (i = 0; i < height; i++) { - row = bitmap[i] = new Uint8Array(width); - row1 = (i < 1) ? row : bitmap[i - 1]; - row2 = (i < 2) ? row : bitmap[i - 2]; - - // At the beginning of each row: - // Fill contextLabel with pixels that are above/right of (X) - contextLabel = (row2[0] << 13) | (row2[1] << 12) | (row2[2] << 11) | - (row1[0] << 7) | (row1[1] << 6) | (row1[2] << 5) | - (row1[3] << 4); - - for (j = 0; j < width; j++) { - row[j] = pixel = decoder.readBit(contexts, contextLabel); - - // At each pixel: Clear contextLabel pixels that are shifted - // out of the context, then add new ones. - contextLabel = ((contextLabel & OLD_PIXEL_MASK) << 1) | - (j + 3 < width ? row2[j + 3] << 11 : 0) | - (j + 4 < width ? row1[j + 4] << 4 : 0) | pixel; - } - } - - return bitmap; - } - - // 6.2 Generic Region Decoding Procedure - function decodeBitmap(mmr, width, height, templateIndex, prediction, skip, at, - decodingContext) { - if (mmr) { - error('JBIG2 error: MMR encoding is not supported'); - } - - // Use optimized version for the most common case - if (templateIndex === 0 && !skip && !prediction && at.length === 4 && - at[0].x === 3 && at[0].y === -1 && at[1].x === -3 && at[1].y === -1 && - at[2].x === 2 && at[2].y === -2 && at[3].x === -2 && at[3].y === -2) { - return decodeBitmapTemplate0(width, height, decodingContext); - } - - var useskip = !!skip; - var template = CodingTemplates[templateIndex].concat(at); - - // Sorting is non-standard, and it is not required. But sorting increases - // the number of template bits that can be reused from the previous - // contextLabel in the main loop. - template.sort(function (a, b) { - return (a.y - b.y) || (a.x - b.x); - }); - - var templateLength = template.length; - var templateX = new Int8Array(templateLength); - var templateY = new Int8Array(templateLength); - var changingTemplateEntries = []; - var reuseMask = 0, minX = 0, maxX = 0, minY = 0; - var c, k; - - for (k = 0; k < templateLength; k++) { - templateX[k] = template[k].x; - templateY[k] = template[k].y; - minX = Math.min(minX, template[k].x); - maxX = Math.max(maxX, template[k].x); - minY = Math.min(minY, template[k].y); - // Check if the template pixel appears in two consecutive context labels, - // so it can be reused. Otherwise, we add it to the list of changing - // template entries. - if (k < templateLength - 1 && - template[k].y === template[k + 1].y && - template[k].x === template[k + 1].x - 1) { - reuseMask |= 1 << (templateLength - 1 - k); - } else { - changingTemplateEntries.push(k); - } - } - var changingEntriesLength = changingTemplateEntries.length; - - var changingTemplateX = new Int8Array(changingEntriesLength); - var changingTemplateY = new Int8Array(changingEntriesLength); - var changingTemplateBit = new Uint16Array(changingEntriesLength); - for (c = 0; c < changingEntriesLength; c++) { - k = changingTemplateEntries[c]; - changingTemplateX[c] = template[k].x; - changingTemplateY[c] = template[k].y; - changingTemplateBit[c] = 1 << (templateLength - 1 - k); - } - - // Get the safe bounding box edges from the width, height, minX, maxX, minY - var sbb_left = -minX; - var sbb_top = -minY; - var sbb_right = width - maxX; - - var pseudoPixelContext = ReusedContexts[templateIndex]; - var row = new Uint8Array(width); - var bitmap = []; - - var decoder = decodingContext.decoder; - var contexts = decodingContext.contextCache.getContexts('GB'); - - var ltp = 0, j, i0, j0, contextLabel = 0, bit, shift; - for (var i = 0; i < height; i++) { - if (prediction) { - var sltp = decoder.readBit(contexts, pseudoPixelContext); - ltp ^= sltp; - if (ltp) { - bitmap.push(row); // duplicate previous row - continue; - } - } - row = new Uint8Array(row); - bitmap.push(row); - for (j = 0; j < width; j++) { - if (useskip && skip[i][j]) { - row[j] = 0; - continue; - } - // Are we in the middle of a scanline, so we can reuse contextLabel - // bits? - if (j >= sbb_left && j < sbb_right && i >= sbb_top) { - // If yes, we can just shift the bits that are reusable and only - // fetch the remaining ones. - contextLabel = (contextLabel << 1) & reuseMask; - for (k = 0; k < changingEntriesLength; k++) { - i0 = i + changingTemplateY[k]; - j0 = j + changingTemplateX[k]; - bit = bitmap[i0][j0]; - if (bit) { - bit = changingTemplateBit[k]; - contextLabel |= bit; - } - } - } else { - // compute the contextLabel from scratch - contextLabel = 0; - shift = templateLength - 1; - for (k = 0; k < templateLength; k++, shift--) { - j0 = j + templateX[k]; - if (j0 >= 0 && j0 < width) { - i0 = i + templateY[k]; - if (i0 >= 0) { - bit = bitmap[i0][j0]; - if (bit) { - contextLabel |= bit << shift; - } - } - } - } - } - var pixel = decoder.readBit(contexts, contextLabel); - row[j] = pixel; - } - } - return bitmap; - } - - // 6.3.2 Generic Refinement Region Decoding Procedure - function decodeRefinement(width, height, templateIndex, referenceBitmap, - offsetX, offsetY, prediction, at, - decodingContext) { - var codingTemplate = RefinementTemplates[templateIndex].coding; - if (templateIndex === 0) { - codingTemplate = codingTemplate.concat([at[0]]); - } - var codingTemplateLength = codingTemplate.length; - var codingTemplateX = new Int32Array(codingTemplateLength); - var codingTemplateY = new Int32Array(codingTemplateLength); - var k; - for (k = 0; k < codingTemplateLength; k++) { - codingTemplateX[k] = codingTemplate[k].x; - codingTemplateY[k] = codingTemplate[k].y; - } - - var referenceTemplate = RefinementTemplates[templateIndex].reference; - if (templateIndex === 0) { - referenceTemplate = referenceTemplate.concat([at[1]]); - } - var referenceTemplateLength = referenceTemplate.length; - var referenceTemplateX = new Int32Array(referenceTemplateLength); - var referenceTemplateY = new Int32Array(referenceTemplateLength); - for (k = 0; k < referenceTemplateLength; k++) { - referenceTemplateX[k] = referenceTemplate[k].x; - referenceTemplateY[k] = referenceTemplate[k].y; - } - var referenceWidth = referenceBitmap[0].length; - var referenceHeight = referenceBitmap.length; - - var pseudoPixelContext = RefinementReusedContexts[templateIndex]; - var bitmap = []; - - var decoder = decodingContext.decoder; - var contexts = decodingContext.contextCache.getContexts('GR'); - - var ltp = 0; - for (var i = 0; i < height; i++) { - if (prediction) { - var sltp = decoder.readBit(contexts, pseudoPixelContext); - ltp ^= sltp; - if (ltp) { - error('JBIG2 error: prediction is not supported'); - } - } - var row = new Uint8Array(width); - bitmap.push(row); - for (var j = 0; j < width; j++) { - var i0, j0; - var contextLabel = 0; - for (k = 0; k < codingTemplateLength; k++) { - i0 = i + codingTemplateY[k]; - j0 = j + codingTemplateX[k]; - if (i0 < 0 || j0 < 0 || j0 >= width) { - contextLabel <<= 1; // out of bound pixel - } else { - contextLabel = (contextLabel << 1) | bitmap[i0][j0]; - } - } - for (k = 0; k < referenceTemplateLength; k++) { - i0 = i + referenceTemplateY[k] + offsetY; - j0 = j + referenceTemplateX[k] + offsetX; - if (i0 < 0 || i0 >= referenceHeight || j0 < 0 || - j0 >= referenceWidth) { - contextLabel <<= 1; // out of bound pixel - } else { - contextLabel = (contextLabel << 1) | referenceBitmap[i0][j0]; - } - } - var pixel = decoder.readBit(contexts, contextLabel); - row[j] = pixel; - } - } - - return bitmap; - } - - // 6.5.5 Decoding the symbol dictionary - function decodeSymbolDictionary(huffman, refinement, symbols, - numberOfNewSymbols, numberOfExportedSymbols, - huffmanTables, templateIndex, at, - refinementTemplateIndex, refinementAt, - decodingContext) { - if (huffman) { - error('JBIG2 error: huffman is not supported'); - } - - var newSymbols = []; - var currentHeight = 0; - var symbolCodeLength = log2(symbols.length + numberOfNewSymbols); - - var decoder = decodingContext.decoder; - var contextCache = decodingContext.contextCache; - - while (newSymbols.length < numberOfNewSymbols) { - var deltaHeight = decodeInteger(contextCache, 'IADH', decoder); // 6.5.6 - currentHeight += deltaHeight; - var currentWidth = 0; - var totalWidth = 0; - while (true) { - var deltaWidth = decodeInteger(contextCache, 'IADW', decoder); // 6.5.7 - if (deltaWidth === null) { - break; // OOB - } - currentWidth += deltaWidth; - totalWidth += currentWidth; - var bitmap; - if (refinement) { - // 6.5.8.2 Refinement/aggregate-coded symbol bitmap - var numberOfInstances = decodeInteger(contextCache, 'IAAI', decoder); - if (numberOfInstances > 1) { - bitmap = decodeTextRegion(huffman, refinement, - currentWidth, currentHeight, 0, - numberOfInstances, 1, //strip size - symbols.concat(newSymbols), - symbolCodeLength, - 0, //transposed - 0, //ds offset - 1, //top left 7.4.3.1.1 - 0, //OR operator - huffmanTables, - refinementTemplateIndex, refinementAt, - decodingContext); - } else { - var symbolId = decodeIAID(contextCache, decoder, symbolCodeLength); - var rdx = decodeInteger(contextCache, 'IARDX', decoder); // 6.4.11.3 - var rdy = decodeInteger(contextCache, 'IARDY', decoder); // 6.4.11.4 - var symbol = (symbolId < symbols.length ? symbols[symbolId] : - newSymbols[symbolId - symbols.length]); - bitmap = decodeRefinement(currentWidth, currentHeight, - refinementTemplateIndex, symbol, rdx, rdy, false, refinementAt, - decodingContext); - } - } else { - // 6.5.8.1 Direct-coded symbol bitmap - bitmap = decodeBitmap(false, currentWidth, currentHeight, - templateIndex, false, null, at, decodingContext); - } - newSymbols.push(bitmap); - } - } - // 6.5.10 Exported symbols - var exportedSymbols = []; - var flags = [], currentFlag = false; - var totalSymbolsLength = symbols.length + numberOfNewSymbols; - while (flags.length < totalSymbolsLength) { - var runLength = decodeInteger(contextCache, 'IAEX', decoder); - while (runLength--) { - flags.push(currentFlag); - } - currentFlag = !currentFlag; - } - for (var i = 0, ii = symbols.length; i < ii; i++) { - if (flags[i]) { - exportedSymbols.push(symbols[i]); - } - } - for (var j = 0; j < numberOfNewSymbols; i++, j++) { - if (flags[i]) { - exportedSymbols.push(newSymbols[j]); - } - } - return exportedSymbols; - } - - function decodeTextRegion(huffman, refinement, width, height, - defaultPixelValue, numberOfSymbolInstances, - stripSize, inputSymbols, symbolCodeLength, - transposed, dsOffset, referenceCorner, - combinationOperator, huffmanTables, - refinementTemplateIndex, refinementAt, - decodingContext) { - if (huffman) { - error('JBIG2 error: huffman is not supported'); - } - - // Prepare bitmap - var bitmap = []; - var i, row; - for (i = 0; i < height; i++) { - row = new Uint8Array(width); - if (defaultPixelValue) { - for (var j = 0; j < width; j++) { - row[j] = defaultPixelValue; - } - } - bitmap.push(row); - } - - var decoder = decodingContext.decoder; - var contextCache = decodingContext.contextCache; - var stripT = -decodeInteger(contextCache, 'IADT', decoder); // 6.4.6 - var firstS = 0; - i = 0; - while (i < numberOfSymbolInstances) { - var deltaT = decodeInteger(contextCache, 'IADT', decoder); // 6.4.6 - stripT += deltaT; - - var deltaFirstS = decodeInteger(contextCache, 'IAFS', decoder); // 6.4.7 - firstS += deltaFirstS; - var currentS = firstS; - do { - var currentT = (stripSize === 1 ? 0 : - decodeInteger(contextCache, 'IAIT', decoder)); // 6.4.9 - var t = stripSize * stripT + currentT; - var symbolId = decodeIAID(contextCache, decoder, symbolCodeLength); - var applyRefinement = (refinement && - decodeInteger(contextCache, 'IARI', decoder)); - var symbolBitmap = inputSymbols[symbolId]; - var symbolWidth = symbolBitmap[0].length; - var symbolHeight = symbolBitmap.length; - if (applyRefinement) { - var rdw = decodeInteger(contextCache, 'IARDW', decoder); // 6.4.11.1 - var rdh = decodeInteger(contextCache, 'IARDH', decoder); // 6.4.11.2 - var rdx = decodeInteger(contextCache, 'IARDX', decoder); // 6.4.11.3 - var rdy = decodeInteger(contextCache, 'IARDY', decoder); // 6.4.11.4 - symbolWidth += rdw; - symbolHeight += rdh; - symbolBitmap = decodeRefinement(symbolWidth, symbolHeight, - refinementTemplateIndex, symbolBitmap, (rdw >> 1) + rdx, - (rdh >> 1) + rdy, false, refinementAt, - decodingContext); - } - var offsetT = t - ((referenceCorner & 1) ? 0 : symbolHeight); - var offsetS = currentS - ((referenceCorner & 2) ? symbolWidth : 0); - var s2, t2, symbolRow; - if (transposed) { - // Place Symbol Bitmap from T1,S1 - for (s2 = 0; s2 < symbolHeight; s2++) { - row = bitmap[offsetS + s2]; - if (!row) { - continue; - } - symbolRow = symbolBitmap[s2]; - // To ignore Parts of Symbol bitmap which goes - // outside bitmap region - var maxWidth = Math.min(width - offsetT, symbolWidth); - switch (combinationOperator) { - case 0: // OR - for (t2 = 0; t2 < maxWidth; t2++) { - row[offsetT + t2] |= symbolRow[t2]; - } - break; - case 2: // XOR - for (t2 = 0; t2 < maxWidth; t2++) { - row[offsetT + t2] ^= symbolRow[t2]; - } - break; - default: - error('JBIG2 error: operator ' + combinationOperator + - ' is not supported'); - } - } - currentS += symbolHeight - 1; - } else { - for (t2 = 0; t2 < symbolHeight; t2++) { - row = bitmap[offsetT + t2]; - if (!row) { - continue; - } - symbolRow = symbolBitmap[t2]; - switch (combinationOperator) { - case 0: // OR - for (s2 = 0; s2 < symbolWidth; s2++) { - row[offsetS + s2] |= symbolRow[s2]; - } - break; - case 2: // XOR - for (s2 = 0; s2 < symbolWidth; s2++) { - row[offsetS + s2] ^= symbolRow[s2]; - } - break; - default: - error('JBIG2 error: operator ' + combinationOperator + - ' is not supported'); - } - } - currentS += symbolWidth - 1; - } - i++; - var deltaS = decodeInteger(contextCache, 'IADS', decoder); // 6.4.8 - if (deltaS === null) { - break; // OOB - } - currentS += deltaS + dsOffset; - } while (true); - } - return bitmap; - } - - function readSegmentHeader(data, start) { - var segmentHeader = {}; - segmentHeader.number = readUint32(data, start); - var flags = data[start + 4]; - var segmentType = flags & 0x3F; - if (!SegmentTypes[segmentType]) { - error('JBIG2 error: invalid segment type: ' + segmentType); - } - segmentHeader.type = segmentType; - segmentHeader.typeName = SegmentTypes[segmentType]; - segmentHeader.deferredNonRetain = !!(flags & 0x80); - - var pageAssociationFieldSize = !!(flags & 0x40); - var referredFlags = data[start + 5]; - var referredToCount = (referredFlags >> 5) & 7; - var retainBits = [referredFlags & 31]; - var position = start + 6; - if (referredFlags === 7) { - referredToCount = readUint32(data, position - 1) & 0x1FFFFFFF; - position += 3; - var bytes = (referredToCount + 7) >> 3; - retainBits[0] = data[position++]; - while (--bytes > 0) { - retainBits.push(data[position++]); - } - } else if (referredFlags === 5 || referredFlags === 6) { - error('JBIG2 error: invalid referred-to flags'); - } - - segmentHeader.retainBits = retainBits; - var referredToSegmentNumberSize = (segmentHeader.number <= 256 ? 1 : - (segmentHeader.number <= 65536 ? 2 : 4)); - var referredTo = []; - var i, ii; - for (i = 0; i < referredToCount; i++) { - var number = (referredToSegmentNumberSize === 1 ? data[position] : - (referredToSegmentNumberSize === 2 ? readUint16(data, position) : - readUint32(data, position))); - referredTo.push(number); - position += referredToSegmentNumberSize; - } - segmentHeader.referredTo = referredTo; - if (!pageAssociationFieldSize) { - segmentHeader.pageAssociation = data[position++]; - } else { - segmentHeader.pageAssociation = readUint32(data, position); - position += 4; - } - segmentHeader.length = readUint32(data, position); - position += 4; - - if (segmentHeader.length === 0xFFFFFFFF) { - // 7.2.7 Segment data length, unknown segment length - if (segmentType === 38) { // ImmediateGenericRegion - var genericRegionInfo = readRegionSegmentInformation(data, position); - var genericRegionSegmentFlags = data[position + - RegionSegmentInformationFieldLength]; - var genericRegionMmr = !!(genericRegionSegmentFlags & 1); - // searching for the segment end - var searchPatternLength = 6; - var searchPattern = new Uint8Array(searchPatternLength); - if (!genericRegionMmr) { - searchPattern[0] = 0xFF; - searchPattern[1] = 0xAC; - } - searchPattern[2] = (genericRegionInfo.height >>> 24) & 0xFF; - searchPattern[3] = (genericRegionInfo.height >> 16) & 0xFF; - searchPattern[4] = (genericRegionInfo.height >> 8) & 0xFF; - searchPattern[5] = genericRegionInfo.height & 0xFF; - for (i = position, ii = data.length; i < ii; i++) { - var j = 0; - while (j < searchPatternLength && searchPattern[j] === data[i + j]) { - j++; - } - if (j === searchPatternLength) { - segmentHeader.length = i + searchPatternLength; - break; - } - } - if (segmentHeader.length === 0xFFFFFFFF) { - error('JBIG2 error: segment end was not found'); - } - } else { - error('JBIG2 error: invalid unknown segment length'); - } - } - segmentHeader.headerEnd = position; - return segmentHeader; - } - - function readSegments(header, data, start, end) { - var segments = []; - var position = start; - while (position < end) { - var segmentHeader = readSegmentHeader(data, position); - position = segmentHeader.headerEnd; - var segment = { - header: segmentHeader, - data: data - }; - if (!header.randomAccess) { - segment.start = position; - position += segmentHeader.length; - segment.end = position; - } - segments.push(segment); - if (segmentHeader.type === 51) { - break; // end of file is found - } - } - if (header.randomAccess) { - for (var i = 0, ii = segments.length; i < ii; i++) { - segments[i].start = position; - position += segments[i].header.length; - segments[i].end = position; - } - } - return segments; - } - - // 7.4.1 Region segment information field - function readRegionSegmentInformation(data, start) { - return { - width: readUint32(data, start), - height: readUint32(data, start + 4), - x: readUint32(data, start + 8), - y: readUint32(data, start + 12), - combinationOperator: data[start + 16] & 7 - }; - } - var RegionSegmentInformationFieldLength = 17; - - function processSegment(segment, visitor) { - var header = segment.header; - - var data = segment.data, position = segment.start, end = segment.end; - var args, at, i, atLength; - switch (header.type) { - case 0: // SymbolDictionary - // 7.4.2 Symbol dictionary segment syntax - var dictionary = {}; - var dictionaryFlags = readUint16(data, position); // 7.4.2.1.1 - dictionary.huffman = !!(dictionaryFlags & 1); - dictionary.refinement = !!(dictionaryFlags & 2); - dictionary.huffmanDHSelector = (dictionaryFlags >> 2) & 3; - dictionary.huffmanDWSelector = (dictionaryFlags >> 4) & 3; - dictionary.bitmapSizeSelector = (dictionaryFlags >> 6) & 1; - dictionary.aggregationInstancesSelector = (dictionaryFlags >> 7) & 1; - dictionary.bitmapCodingContextUsed = !!(dictionaryFlags & 256); - dictionary.bitmapCodingContextRetained = !!(dictionaryFlags & 512); - dictionary.template = (dictionaryFlags >> 10) & 3; - dictionary.refinementTemplate = (dictionaryFlags >> 12) & 1; - position += 2; - if (!dictionary.huffman) { - atLength = dictionary.template === 0 ? 4 : 1; - at = []; - for (i = 0; i < atLength; i++) { - at.push({ - x: readInt8(data, position), - y: readInt8(data, position + 1) - }); - position += 2; - } - dictionary.at = at; - } - if (dictionary.refinement && !dictionary.refinementTemplate) { - at = []; - for (i = 0; i < 2; i++) { - at.push({ - x: readInt8(data, position), - y: readInt8(data, position + 1) - }); - position += 2; - } - dictionary.refinementAt = at; - } - dictionary.numberOfExportedSymbols = readUint32(data, position); - position += 4; - dictionary.numberOfNewSymbols = readUint32(data, position); - position += 4; - args = [dictionary, header.number, header.referredTo, - data, position, end]; - break; - case 6: // ImmediateTextRegion - case 7: // ImmediateLosslessTextRegion - var textRegion = {}; - textRegion.info = readRegionSegmentInformation(data, position); - position += RegionSegmentInformationFieldLength; - var textRegionSegmentFlags = readUint16(data, position); - position += 2; - textRegion.huffman = !!(textRegionSegmentFlags & 1); - textRegion.refinement = !!(textRegionSegmentFlags & 2); - textRegion.stripSize = 1 << ((textRegionSegmentFlags >> 2) & 3); - textRegion.referenceCorner = (textRegionSegmentFlags >> 4) & 3; - textRegion.transposed = !!(textRegionSegmentFlags & 64); - textRegion.combinationOperator = (textRegionSegmentFlags >> 7) & 3; - textRegion.defaultPixelValue = (textRegionSegmentFlags >> 9) & 1; - textRegion.dsOffset = (textRegionSegmentFlags << 17) >> 27; - textRegion.refinementTemplate = (textRegionSegmentFlags >> 15) & 1; - if (textRegion.huffman) { - var textRegionHuffmanFlags = readUint16(data, position); - position += 2; - textRegion.huffmanFS = (textRegionHuffmanFlags) & 3; - textRegion.huffmanDS = (textRegionHuffmanFlags >> 2) & 3; - textRegion.huffmanDT = (textRegionHuffmanFlags >> 4) & 3; - textRegion.huffmanRefinementDW = (textRegionHuffmanFlags >> 6) & 3; - textRegion.huffmanRefinementDH = (textRegionHuffmanFlags >> 8) & 3; - textRegion.huffmanRefinementDX = (textRegionHuffmanFlags >> 10) & 3; - textRegion.huffmanRefinementDY = (textRegionHuffmanFlags >> 12) & 3; - textRegion.huffmanRefinementSizeSelector = - !!(textRegionHuffmanFlags & 14); - } - if (textRegion.refinement && !textRegion.refinementTemplate) { - at = []; - for (i = 0; i < 2; i++) { - at.push({ - x: readInt8(data, position), - y: readInt8(data, position + 1) - }); - position += 2; - } - textRegion.refinementAt = at; - } - textRegion.numberOfSymbolInstances = readUint32(data, position); - position += 4; - // TODO 7.4.3.1.7 Symbol ID Huffman table decoding - if (textRegion.huffman) { - error('JBIG2 error: huffman is not supported'); - } - args = [textRegion, header.referredTo, data, position, end]; - break; - case 38: // ImmediateGenericRegion - case 39: // ImmediateLosslessGenericRegion - var genericRegion = {}; - genericRegion.info = readRegionSegmentInformation(data, position); - position += RegionSegmentInformationFieldLength; - var genericRegionSegmentFlags = data[position++]; - genericRegion.mmr = !!(genericRegionSegmentFlags & 1); - genericRegion.template = (genericRegionSegmentFlags >> 1) & 3; - genericRegion.prediction = !!(genericRegionSegmentFlags & 8); - if (!genericRegion.mmr) { - atLength = genericRegion.template === 0 ? 4 : 1; - at = []; - for (i = 0; i < atLength; i++) { - at.push({ - x: readInt8(data, position), - y: readInt8(data, position + 1) - }); - position += 2; - } - genericRegion.at = at; - } - args = [genericRegion, data, position, end]; - break; - case 48: // PageInformation - var pageInfo = { - width: readUint32(data, position), - height: readUint32(data, position + 4), - resolutionX: readUint32(data, position + 8), - resolutionY: readUint32(data, position + 12) - }; - if (pageInfo.height === 0xFFFFFFFF) { - delete pageInfo.height; - } - var pageSegmentFlags = data[position + 16]; - var pageStripingInformation = readUint16(data, position + 17); - pageInfo.lossless = !!(pageSegmentFlags & 1); - pageInfo.refinement = !!(pageSegmentFlags & 2); - pageInfo.defaultPixelValue = (pageSegmentFlags >> 2) & 1; - pageInfo.combinationOperator = (pageSegmentFlags >> 3) & 3; - pageInfo.requiresBuffer = !!(pageSegmentFlags & 32); - pageInfo.combinationOperatorOverride = !!(pageSegmentFlags & 64); - args = [pageInfo]; - break; - case 49: // EndOfPage - break; - case 50: // EndOfStripe - break; - case 51: // EndOfFile - break; - case 62: // 7.4.15 defines 2 extension types which - // are comments and can be ignored. - break; - default: - error('JBIG2 error: segment type ' + header.typeName + '(' + - header.type + ') is not implemented'); - } - var callbackName = 'on' + header.typeName; - if (callbackName in visitor) { - visitor[callbackName].apply(visitor, args); - } - } - - function processSegments(segments, visitor) { - for (var i = 0, ii = segments.length; i < ii; i++) { - processSegment(segments[i], visitor); - } - } - - function parseJbig2(data, start, end) { - var position = start; - if (data[position] !== 0x97 || data[position + 1] !== 0x4A || - data[position + 2] !== 0x42 || data[position + 3] !== 0x32 || - data[position + 4] !== 0x0D || data[position + 5] !== 0x0A || - data[position + 6] !== 0x1A || data[position + 7] !== 0x0A) { - error('JBIG2 error: invalid header'); - } - var header = {}; - position += 8; - var flags = data[position++]; - header.randomAccess = !(flags & 1); - if (!(flags & 2)) { - header.numberOfPages = readUint32(data, position); - position += 4; - } - var segments = readSegments(header, data, position, end); - error('Not implemented'); - // processSegments(segments, new SimpleSegmentVisitor()); - } - - function parseJbig2Chunks(chunks) { - var visitor = new SimpleSegmentVisitor(); - for (var i = 0, ii = chunks.length; i < ii; i++) { - var chunk = chunks[i]; - var segments = readSegments({}, chunk.data, chunk.start, chunk.end); - processSegments(segments, visitor); - } - return visitor.buffer; - } - - function SimpleSegmentVisitor() {} - - SimpleSegmentVisitor.prototype = { - onPageInformation: function SimpleSegmentVisitor_onPageInformation(info) { - this.currentPageInfo = info; - var rowSize = (info.width + 7) >> 3; - var buffer = new Uint8Array(rowSize * info.height); - // The contents of ArrayBuffers are initialized to 0. - // Fill the buffer with 0xFF only if info.defaultPixelValue is set - if (info.defaultPixelValue) { - for (var i = 0, ii = buffer.length; i < ii; i++) { - buffer[i] = 0xFF; - } - } - this.buffer = buffer; - }, - drawBitmap: function SimpleSegmentVisitor_drawBitmap(regionInfo, bitmap) { - var pageInfo = this.currentPageInfo; - var width = regionInfo.width, height = regionInfo.height; - var rowSize = (pageInfo.width + 7) >> 3; - var combinationOperator = pageInfo.combinationOperatorOverride ? - regionInfo.combinationOperator : pageInfo.combinationOperator; - var buffer = this.buffer; - var mask0 = 128 >> (regionInfo.x & 7); - var offset0 = regionInfo.y * rowSize + (regionInfo.x >> 3); - var i, j, mask, offset; - switch (combinationOperator) { - case 0: // OR - for (i = 0; i < height; i++) { - mask = mask0; - offset = offset0; - for (j = 0; j < width; j++) { - if (bitmap[i][j]) { - buffer[offset] |= mask; - } - mask >>= 1; - if (!mask) { - mask = 128; - offset++; - } - } - offset0 += rowSize; - } - break; - case 2: // XOR - for (i = 0; i < height; i++) { - mask = mask0; - offset = offset0; - for (j = 0; j < width; j++) { - if (bitmap[i][j]) { - buffer[offset] ^= mask; - } - mask >>= 1; - if (!mask) { - mask = 128; - offset++; - } - } - offset0 += rowSize; - } - break; - default: - error('JBIG2 error: operator ' + combinationOperator + - ' is not supported'); - } - }, - onImmediateGenericRegion: - function SimpleSegmentVisitor_onImmediateGenericRegion(region, data, - start, end) { - var regionInfo = region.info; - var decodingContext = new DecodingContext(data, start, end); - var bitmap = decodeBitmap(region.mmr, regionInfo.width, regionInfo.height, - region.template, region.prediction, null, - region.at, decodingContext); - this.drawBitmap(regionInfo, bitmap); - }, - onImmediateLosslessGenericRegion: - function SimpleSegmentVisitor_onImmediateLosslessGenericRegion() { - this.onImmediateGenericRegion.apply(this, arguments); - }, - onSymbolDictionary: - function SimpleSegmentVisitor_onSymbolDictionary(dictionary, - currentSegment, - referredSegments, - data, start, end) { - var huffmanTables; - if (dictionary.huffman) { - error('JBIG2 error: huffman is not supported'); - } - - // Combines exported symbols from all referred segments - var symbols = this.symbols; - if (!symbols) { - this.symbols = symbols = {}; - } - - var inputSymbols = []; - for (var i = 0, ii = referredSegments.length; i < ii; i++) { - inputSymbols = inputSymbols.concat(symbols[referredSegments[i]]); - } - - var decodingContext = new DecodingContext(data, start, end); - symbols[currentSegment] = decodeSymbolDictionary(dictionary.huffman, - dictionary.refinement, inputSymbols, dictionary.numberOfNewSymbols, - dictionary.numberOfExportedSymbols, huffmanTables, - dictionary.template, dictionary.at, - dictionary.refinementTemplate, dictionary.refinementAt, - decodingContext); - }, - onImmediateTextRegion: - function SimpleSegmentVisitor_onImmediateTextRegion(region, - referredSegments, - data, start, end) { - var regionInfo = region.info; - var huffmanTables; - - // Combines exported symbols from all referred segments - var symbols = this.symbols; - var inputSymbols = []; - for (var i = 0, ii = referredSegments.length; i < ii; i++) { - inputSymbols = inputSymbols.concat(symbols[referredSegments[i]]); - } - var symbolCodeLength = log2(inputSymbols.length); - - var decodingContext = new DecodingContext(data, start, end); - var bitmap = decodeTextRegion(region.huffman, region.refinement, - regionInfo.width, regionInfo.height, region.defaultPixelValue, - region.numberOfSymbolInstances, region.stripSize, inputSymbols, - symbolCodeLength, region.transposed, region.dsOffset, - region.referenceCorner, region.combinationOperator, huffmanTables, - region.refinementTemplate, region.refinementAt, decodingContext); - this.drawBitmap(regionInfo, bitmap); - }, - onImmediateLosslessTextRegion: - function SimpleSegmentVisitor_onImmediateLosslessTextRegion() { - this.onImmediateTextRegion.apply(this, arguments); - } - }; - - function Jbig2Image() {} - - Jbig2Image.prototype = { - parseChunks: function Jbig2Image_parseChunks(chunks) { - return parseJbig2Chunks(chunks); - } - }; - - return Jbig2Image; -})(); - -exports.Jbig2Image = Jbig2Image; -})); - - -(function (root, factory) { - { - factory((root.pdfjsCoreJpx = {}), root.pdfjsSharedUtil, - root.pdfjsCoreArithmeticDecoder); - } -}(this, function (exports, sharedUtil, coreArithmeticDecoder) { - -var info = sharedUtil.info; -var log2 = sharedUtil.log2; -var readUint16 = sharedUtil.readUint16; -var readUint32 = sharedUtil.readUint32; -var warn = sharedUtil.warn; -var ArithmeticDecoder = coreArithmeticDecoder.ArithmeticDecoder; - -var JpxImage = (function JpxImageClosure() { - // Table E.1 - var SubbandsGainLog2 = { - 'LL': 0, - 'LH': 1, - 'HL': 1, - 'HH': 2 - }; - function JpxImage() { - this.failOnCorruptedImage = false; - } - JpxImage.prototype = { - parse: function JpxImage_parse(data) { - - var head = readUint16(data, 0); - // No box header, immediate start of codestream (SOC) - if (head === 0xFF4F) { - this.parseCodestream(data, 0, data.length); - return; - } - - var position = 0, length = data.length; - while (position < length) { - var headerSize = 8; - var lbox = readUint32(data, position); - var tbox = readUint32(data, position + 4); - position += headerSize; - if (lbox === 1) { - // XLBox: read UInt64 according to spec. - // JavaScript's int precision of 53 bit should be sufficient here. - lbox = readUint32(data, position) * 4294967296 + - readUint32(data, position + 4); - position += 8; - headerSize += 8; - } - if (lbox === 0) { - lbox = length - position + headerSize; - } - if (lbox < headerSize) { - throw new Error('JPX Error: Invalid box field size'); - } - var dataLength = lbox - headerSize; - var jumpDataLength = true; - switch (tbox) { - case 0x6A703268: // 'jp2h' - jumpDataLength = false; // parsing child boxes - break; - case 0x636F6C72: // 'colr' - // Colorspaces are not used, the CS from the PDF is used. - var method = data[position]; - if (method === 1) { - // enumerated colorspace - var colorspace = readUint32(data, position + 3); - switch (colorspace) { - case 16: // this indicates a sRGB colorspace - case 17: // this indicates a grayscale colorspace - case 18: // this indicates a YUV colorspace - break; - default: - warn('Unknown colorspace ' + colorspace); - break; - } - } else if (method === 2) { - info('ICC profile not supported'); - } - break; - case 0x6A703263: // 'jp2c' - this.parseCodestream(data, position, position + dataLength); - break; - case 0x6A502020: // 'jP\024\024' - if (0x0d0a870a !== readUint32(data, position)) { - warn('Invalid JP2 signature'); - } - break; - // The following header types are valid but currently not used: - case 0x6A501A1A: // 'jP\032\032' - case 0x66747970: // 'ftyp' - case 0x72726571: // 'rreq' - case 0x72657320: // 'res ' - case 0x69686472: // 'ihdr' - break; - default: - var headerType = String.fromCharCode((tbox >> 24) & 0xFF, - (tbox >> 16) & 0xFF, - (tbox >> 8) & 0xFF, - tbox & 0xFF); - warn('Unsupported header type ' + tbox + ' (' + headerType + ')'); - break; - } - if (jumpDataLength) { - position += dataLength; - } - } - }, - parseImageProperties: function JpxImage_parseImageProperties(stream) { - var newByte = stream.getByte(); - while (newByte >= 0) { - var oldByte = newByte; - newByte = stream.getByte(); - var code = (oldByte << 8) | newByte; - // Image and tile size (SIZ) - if (code === 0xFF51) { - stream.skip(4); - var Xsiz = stream.getInt32() >>> 0; // Byte 4 - var Ysiz = stream.getInt32() >>> 0; // Byte 8 - var XOsiz = stream.getInt32() >>> 0; // Byte 12 - var YOsiz = stream.getInt32() >>> 0; // Byte 16 - stream.skip(16); - var Csiz = stream.getUint16(); // Byte 36 - this.width = Xsiz - XOsiz; - this.height = Ysiz - YOsiz; - this.componentsCount = Csiz; - // Results are always returned as Uint8Arrays - this.bitsPerComponent = 8; - return; - } - } - throw new Error('JPX Error: No size marker found in JPX stream'); - }, - parseCodestream: function JpxImage_parseCodestream(data, start, end) { - var context = {}; - try { - var doNotRecover = false; - var position = start; - while (position + 1 < end) { - var code = readUint16(data, position); - position += 2; - - var length = 0, j, sqcd, spqcds, spqcdSize, scalarExpounded, tile; - switch (code) { - case 0xFF4F: // Start of codestream (SOC) - context.mainHeader = true; - break; - case 0xFFD9: // End of codestream (EOC) - break; - case 0xFF51: // Image and tile size (SIZ) - length = readUint16(data, position); - var siz = {}; - siz.Xsiz = readUint32(data, position + 4); - siz.Ysiz = readUint32(data, position + 8); - siz.XOsiz = readUint32(data, position + 12); - siz.YOsiz = readUint32(data, position + 16); - siz.XTsiz = readUint32(data, position + 20); - siz.YTsiz = readUint32(data, position + 24); - siz.XTOsiz = readUint32(data, position + 28); - siz.YTOsiz = readUint32(data, position + 32); - var componentsCount = readUint16(data, position + 36); - siz.Csiz = componentsCount; - var components = []; - j = position + 38; - for (var i = 0; i < componentsCount; i++) { - var component = { - precision: (data[j] & 0x7F) + 1, - isSigned: !!(data[j] & 0x80), - XRsiz: data[j + 1], - YRsiz: data[j + 1] - }; - calculateComponentDimensions(component, siz); - components.push(component); - } - context.SIZ = siz; - context.components = components; - calculateTileGrids(context, components); - context.QCC = []; - context.COC = []; - break; - case 0xFF5C: // Quantization default (QCD) - length = readUint16(data, position); - var qcd = {}; - j = position + 2; - sqcd = data[j++]; - switch (sqcd & 0x1F) { - case 0: - spqcdSize = 8; - scalarExpounded = true; - break; - case 1: - spqcdSize = 16; - scalarExpounded = false; - break; - case 2: - spqcdSize = 16; - scalarExpounded = true; - break; - default: - throw new Error('JPX Error: Invalid SQcd value ' + sqcd); - } - qcd.noQuantization = (spqcdSize === 8); - qcd.scalarExpounded = scalarExpounded; - qcd.guardBits = sqcd >> 5; - spqcds = []; - while (j < length + position) { - var spqcd = {}; - if (spqcdSize === 8) { - spqcd.epsilon = data[j++] >> 3; - spqcd.mu = 0; - } else { - spqcd.epsilon = data[j] >> 3; - spqcd.mu = ((data[j] & 0x7) << 8) | data[j + 1]; - j += 2; - } - spqcds.push(spqcd); - } - qcd.SPqcds = spqcds; - if (context.mainHeader) { - context.QCD = qcd; - } else { - context.currentTile.QCD = qcd; - context.currentTile.QCC = []; - } - break; - case 0xFF5D: // Quantization component (QCC) - length = readUint16(data, position); - var qcc = {}; - j = position + 2; - var cqcc; - if (context.SIZ.Csiz < 257) { - cqcc = data[j++]; - } else { - cqcc = readUint16(data, j); - j += 2; - } - sqcd = data[j++]; - switch (sqcd & 0x1F) { - case 0: - spqcdSize = 8; - scalarExpounded = true; - break; - case 1: - spqcdSize = 16; - scalarExpounded = false; - break; - case 2: - spqcdSize = 16; - scalarExpounded = true; - break; - default: - throw new Error('JPX Error: Invalid SQcd value ' + sqcd); - } - qcc.noQuantization = (spqcdSize === 8); - qcc.scalarExpounded = scalarExpounded; - qcc.guardBits = sqcd >> 5; - spqcds = []; - while (j < (length + position)) { - spqcd = {}; - if (spqcdSize === 8) { - spqcd.epsilon = data[j++] >> 3; - spqcd.mu = 0; - } else { - spqcd.epsilon = data[j] >> 3; - spqcd.mu = ((data[j] & 0x7) << 8) | data[j + 1]; - j += 2; - } - spqcds.push(spqcd); - } - qcc.SPqcds = spqcds; - if (context.mainHeader) { - context.QCC[cqcc] = qcc; - } else { - context.currentTile.QCC[cqcc] = qcc; - } - break; - case 0xFF52: // Coding style default (COD) - length = readUint16(data, position); - var cod = {}; - j = position + 2; - var scod = data[j++]; - cod.entropyCoderWithCustomPrecincts = !!(scod & 1); - cod.sopMarkerUsed = !!(scod & 2); - cod.ephMarkerUsed = !!(scod & 4); - cod.progressionOrder = data[j++]; - cod.layersCount = readUint16(data, j); - j += 2; - cod.multipleComponentTransform = data[j++]; - - cod.decompositionLevelsCount = data[j++]; - cod.xcb = (data[j++] & 0xF) + 2; - cod.ycb = (data[j++] & 0xF) + 2; - var blockStyle = data[j++]; - cod.selectiveArithmeticCodingBypass = !!(blockStyle & 1); - cod.resetContextProbabilities = !!(blockStyle & 2); - cod.terminationOnEachCodingPass = !!(blockStyle & 4); - cod.verticalyStripe = !!(blockStyle & 8); - cod.predictableTermination = !!(blockStyle & 16); - cod.segmentationSymbolUsed = !!(blockStyle & 32); - cod.reversibleTransformation = data[j++]; - if (cod.entropyCoderWithCustomPrecincts) { - var precinctsSizes = []; - while (j < length + position) { - var precinctsSize = data[j++]; - precinctsSizes.push({ - PPx: precinctsSize & 0xF, - PPy: precinctsSize >> 4 - }); - } - cod.precinctsSizes = precinctsSizes; - } - var unsupported = []; - if (cod.selectiveArithmeticCodingBypass) { - unsupported.push('selectiveArithmeticCodingBypass'); - } - if (cod.resetContextProbabilities) { - unsupported.push('resetContextProbabilities'); - } - if (cod.terminationOnEachCodingPass) { - unsupported.push('terminationOnEachCodingPass'); - } - if (cod.verticalyStripe) { - unsupported.push('verticalyStripe'); - } - if (cod.predictableTermination) { - unsupported.push('predictableTermination'); - } - if (unsupported.length > 0) { - doNotRecover = true; - throw new Error('JPX Error: Unsupported COD options (' + - unsupported.join(', ') + ')'); - } - if (context.mainHeader) { - context.COD = cod; - } else { - context.currentTile.COD = cod; - context.currentTile.COC = []; - } - break; - case 0xFF90: // Start of tile-part (SOT) - length = readUint16(data, position); - tile = {}; - tile.index = readUint16(data, position + 2); - tile.length = readUint32(data, position + 4); - tile.dataEnd = tile.length + position - 2; - tile.partIndex = data[position + 8]; - tile.partsCount = data[position + 9]; - - context.mainHeader = false; - if (tile.partIndex === 0) { - // reset component specific settings - tile.COD = context.COD; - tile.COC = context.COC.slice(0); // clone of the global COC - tile.QCD = context.QCD; - tile.QCC = context.QCC.slice(0); // clone of the global COC - } - context.currentTile = tile; - break; - case 0xFF93: // Start of data (SOD) - tile = context.currentTile; - if (tile.partIndex === 0) { - initializeTile(context, tile.index); - buildPackets(context); - } - - // moving to the end of the data - length = tile.dataEnd - position; - parseTilePackets(context, data, position, length); - break; - case 0xFF55: // Tile-part lengths, main header (TLM) - case 0xFF57: // Packet length, main header (PLM) - case 0xFF58: // Packet length, tile-part header (PLT) - case 0xFF64: // Comment (COM) - length = readUint16(data, position); - // skipping content - break; - case 0xFF53: // Coding style component (COC) - throw new Error('JPX Error: Codestream code 0xFF53 (COC) is ' + - 'not implemented'); - default: - throw new Error('JPX Error: Unknown codestream code: ' + - code.toString(16)); - } - position += length; - } - } catch (e) { - if (doNotRecover || this.failOnCorruptedImage) { - throw e; - } else { - warn('Trying to recover from ' + e.message); - } - } - this.tiles = transformComponents(context); - this.width = context.SIZ.Xsiz - context.SIZ.XOsiz; - this.height = context.SIZ.Ysiz - context.SIZ.YOsiz; - this.componentsCount = context.SIZ.Csiz; - } - }; - function calculateComponentDimensions(component, siz) { - // Section B.2 Component mapping - component.x0 = Math.ceil(siz.XOsiz / component.XRsiz); - component.x1 = Math.ceil(siz.Xsiz / component.XRsiz); - component.y0 = Math.ceil(siz.YOsiz / component.YRsiz); - component.y1 = Math.ceil(siz.Ysiz / component.YRsiz); - component.width = component.x1 - component.x0; - component.height = component.y1 - component.y0; - } - function calculateTileGrids(context, components) { - var siz = context.SIZ; - // Section B.3 Division into tile and tile-components - var tile, tiles = []; - var numXtiles = Math.ceil((siz.Xsiz - siz.XTOsiz) / siz.XTsiz); - var numYtiles = Math.ceil((siz.Ysiz - siz.YTOsiz) / siz.YTsiz); - for (var q = 0; q < numYtiles; q++) { - for (var p = 0; p < numXtiles; p++) { - tile = {}; - tile.tx0 = Math.max(siz.XTOsiz + p * siz.XTsiz, siz.XOsiz); - tile.ty0 = Math.max(siz.YTOsiz + q * siz.YTsiz, siz.YOsiz); - tile.tx1 = Math.min(siz.XTOsiz + (p + 1) * siz.XTsiz, siz.Xsiz); - tile.ty1 = Math.min(siz.YTOsiz + (q + 1) * siz.YTsiz, siz.Ysiz); - tile.width = tile.tx1 - tile.tx0; - tile.height = tile.ty1 - tile.ty0; - tile.components = []; - tiles.push(tile); - } - } - context.tiles = tiles; - - var componentsCount = siz.Csiz; - for (var i = 0, ii = componentsCount; i < ii; i++) { - var component = components[i]; - for (var j = 0, jj = tiles.length; j < jj; j++) { - var tileComponent = {}; - tile = tiles[j]; - tileComponent.tcx0 = Math.ceil(tile.tx0 / component.XRsiz); - tileComponent.tcy0 = Math.ceil(tile.ty0 / component.YRsiz); - tileComponent.tcx1 = Math.ceil(tile.tx1 / component.XRsiz); - tileComponent.tcy1 = Math.ceil(tile.ty1 / component.YRsiz); - tileComponent.width = tileComponent.tcx1 - tileComponent.tcx0; - tileComponent.height = tileComponent.tcy1 - tileComponent.tcy0; - tile.components[i] = tileComponent; - } - } - } - function getBlocksDimensions(context, component, r) { - var codOrCoc = component.codingStyleParameters; - var result = {}; - if (!codOrCoc.entropyCoderWithCustomPrecincts) { - result.PPx = 15; - result.PPy = 15; - } else { - result.PPx = codOrCoc.precinctsSizes[r].PPx; - result.PPy = codOrCoc.precinctsSizes[r].PPy; - } - // calculate codeblock size as described in section B.7 - result.xcb_ = (r > 0 ? Math.min(codOrCoc.xcb, result.PPx - 1) : - Math.min(codOrCoc.xcb, result.PPx)); - result.ycb_ = (r > 0 ? Math.min(codOrCoc.ycb, result.PPy - 1) : - Math.min(codOrCoc.ycb, result.PPy)); - return result; - } - function buildPrecincts(context, resolution, dimensions) { - // Section B.6 Division resolution to precincts - var precinctWidth = 1 << dimensions.PPx; - var precinctHeight = 1 << dimensions.PPy; - // Jasper introduces codeblock groups for mapping each subband codeblocks - // to precincts. Precinct partition divides a resolution according to width - // and height parameters. The subband that belongs to the resolution level - // has a different size than the level, unless it is the zero resolution. - - // From Jasper documentation: jpeg2000.pdf, section K: Tier-2 coding: - // The precinct partitioning for a particular subband is derived from a - // partitioning of its parent LL band (i.e., the LL band at the next higher - // resolution level)... The LL band associated with each resolution level is - // divided into precincts... Each of the resulting precinct regions is then - // mapped into its child subbands (if any) at the next lower resolution - // level. This is accomplished by using the coordinate transformation - // (u, v) = (ceil(x/2), ceil(y/2)) where (x, y) and (u, v) are the - // coordinates of a point in the LL band and child subband, respectively. - var isZeroRes = resolution.resLevel === 0; - var precinctWidthInSubband = 1 << (dimensions.PPx + (isZeroRes ? 0 : -1)); - var precinctHeightInSubband = 1 << (dimensions.PPy + (isZeroRes ? 0 : -1)); - var numprecinctswide = (resolution.trx1 > resolution.trx0 ? - Math.ceil(resolution.trx1 / precinctWidth) - - Math.floor(resolution.trx0 / precinctWidth) : 0); - var numprecinctshigh = (resolution.try1 > resolution.try0 ? - Math.ceil(resolution.try1 / precinctHeight) - - Math.floor(resolution.try0 / precinctHeight) : 0); - var numprecincts = numprecinctswide * numprecinctshigh; - - resolution.precinctParameters = { - precinctWidth: precinctWidth, - precinctHeight: precinctHeight, - numprecinctswide: numprecinctswide, - numprecinctshigh: numprecinctshigh, - numprecincts: numprecincts, - precinctWidthInSubband: precinctWidthInSubband, - precinctHeightInSubband: precinctHeightInSubband - }; - } - function buildCodeblocks(context, subband, dimensions) { - // Section B.7 Division sub-band into code-blocks - var xcb_ = dimensions.xcb_; - var ycb_ = dimensions.ycb_; - var codeblockWidth = 1 << xcb_; - var codeblockHeight = 1 << ycb_; - var cbx0 = subband.tbx0 >> xcb_; - var cby0 = subband.tby0 >> ycb_; - var cbx1 = (subband.tbx1 + codeblockWidth - 1) >> xcb_; - var cby1 = (subband.tby1 + codeblockHeight - 1) >> ycb_; - var precinctParameters = subband.resolution.precinctParameters; - var codeblocks = []; - var precincts = []; - var i, j, codeblock, precinctNumber; - for (j = cby0; j < cby1; j++) { - for (i = cbx0; i < cbx1; i++) { - codeblock = { - cbx: i, - cby: j, - tbx0: codeblockWidth * i, - tby0: codeblockHeight * j, - tbx1: codeblockWidth * (i + 1), - tby1: codeblockHeight * (j + 1) - }; - - codeblock.tbx0_ = Math.max(subband.tbx0, codeblock.tbx0); - codeblock.tby0_ = Math.max(subband.tby0, codeblock.tby0); - codeblock.tbx1_ = Math.min(subband.tbx1, codeblock.tbx1); - codeblock.tby1_ = Math.min(subband.tby1, codeblock.tby1); - - // Calculate precinct number for this codeblock, codeblock position - // should be relative to its subband, use actual dimension and position - // See comment about codeblock group width and height - var pi = Math.floor((codeblock.tbx0_ - subband.tbx0) / - precinctParameters.precinctWidthInSubband); - var pj = Math.floor((codeblock.tby0_ - subband.tby0) / - precinctParameters.precinctHeightInSubband); - precinctNumber = pi + (pj * precinctParameters.numprecinctswide); - - codeblock.precinctNumber = precinctNumber; - codeblock.subbandType = subband.type; - codeblock.Lblock = 3; - - if (codeblock.tbx1_ <= codeblock.tbx0_ || - codeblock.tby1_ <= codeblock.tby0_) { - continue; - } - codeblocks.push(codeblock); - // building precinct for the sub-band - var precinct = precincts[precinctNumber]; - if (precinct !== undefined) { - if (i < precinct.cbxMin) { - precinct.cbxMin = i; - } else if (i > precinct.cbxMax) { - precinct.cbxMax = i; - } - if (j < precinct.cbyMin) { - precinct.cbxMin = j; - } else if (j > precinct.cbyMax) { - precinct.cbyMax = j; - } - } else { - precincts[precinctNumber] = precinct = { - cbxMin: i, - cbyMin: j, - cbxMax: i, - cbyMax: j - }; - } - codeblock.precinct = precinct; - } - } - subband.codeblockParameters = { - codeblockWidth: xcb_, - codeblockHeight: ycb_, - numcodeblockwide: cbx1 - cbx0 + 1, - numcodeblockhigh: cby1 - cby0 + 1 - }; - subband.codeblocks = codeblocks; - subband.precincts = precincts; - } - function createPacket(resolution, precinctNumber, layerNumber) { - var precinctCodeblocks = []; - // Section B.10.8 Order of info in packet - var subbands = resolution.subbands; - // sub-bands already ordered in 'LL', 'HL', 'LH', and 'HH' sequence - for (var i = 0, ii = subbands.length; i < ii; i++) { - var subband = subbands[i]; - var codeblocks = subband.codeblocks; - for (var j = 0, jj = codeblocks.length; j < jj; j++) { - var codeblock = codeblocks[j]; - if (codeblock.precinctNumber !== precinctNumber) { - continue; - } - precinctCodeblocks.push(codeblock); - } - } - return { - layerNumber: layerNumber, - codeblocks: precinctCodeblocks - }; - } - function LayerResolutionComponentPositionIterator(context) { - var siz = context.SIZ; - var tileIndex = context.currentTile.index; - var tile = context.tiles[tileIndex]; - var layersCount = tile.codingStyleDefaultParameters.layersCount; - var componentsCount = siz.Csiz; - var maxDecompositionLevelsCount = 0; - for (var q = 0; q < componentsCount; q++) { - maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount, - tile.components[q].codingStyleParameters.decompositionLevelsCount); - } - - var l = 0, r = 0, i = 0, k = 0; - - this.nextPacket = function JpxImage_nextPacket() { - // Section B.12.1.1 Layer-resolution-component-position - for (; l < layersCount; l++) { - for (; r <= maxDecompositionLevelsCount; r++) { - for (; i < componentsCount; i++) { - var component = tile.components[i]; - if (r > component.codingStyleParameters.decompositionLevelsCount) { - continue; - } - - var resolution = component.resolutions[r]; - var numprecincts = resolution.precinctParameters.numprecincts; - for (; k < numprecincts;) { - var packet = createPacket(resolution, k, l); - k++; - return packet; - } - k = 0; - } - i = 0; - } - r = 0; - } - throw new Error('JPX Error: Out of packets'); - }; - } - function ResolutionLayerComponentPositionIterator(context) { - var siz = context.SIZ; - var tileIndex = context.currentTile.index; - var tile = context.tiles[tileIndex]; - var layersCount = tile.codingStyleDefaultParameters.layersCount; - var componentsCount = siz.Csiz; - var maxDecompositionLevelsCount = 0; - for (var q = 0; q < componentsCount; q++) { - maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount, - tile.components[q].codingStyleParameters.decompositionLevelsCount); - } - - var r = 0, l = 0, i = 0, k = 0; - - this.nextPacket = function JpxImage_nextPacket() { - // Section B.12.1.2 Resolution-layer-component-position - for (; r <= maxDecompositionLevelsCount; r++) { - for (; l < layersCount; l++) { - for (; i < componentsCount; i++) { - var component = tile.components[i]; - if (r > component.codingStyleParameters.decompositionLevelsCount) { - continue; - } - - var resolution = component.resolutions[r]; - var numprecincts = resolution.precinctParameters.numprecincts; - for (; k < numprecincts;) { - var packet = createPacket(resolution, k, l); - k++; - return packet; - } - k = 0; - } - i = 0; - } - l = 0; - } - throw new Error('JPX Error: Out of packets'); - }; - } - function ResolutionPositionComponentLayerIterator(context) { - var siz = context.SIZ; - var tileIndex = context.currentTile.index; - var tile = context.tiles[tileIndex]; - var layersCount = tile.codingStyleDefaultParameters.layersCount; - var componentsCount = siz.Csiz; - var l, r, c, p; - var maxDecompositionLevelsCount = 0; - for (c = 0; c < componentsCount; c++) { - var component = tile.components[c]; - maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount, - component.codingStyleParameters.decompositionLevelsCount); - } - var maxNumPrecinctsInLevel = new Int32Array( - maxDecompositionLevelsCount + 1); - for (r = 0; r <= maxDecompositionLevelsCount; ++r) { - var maxNumPrecincts = 0; - for (c = 0; c < componentsCount; ++c) { - var resolutions = tile.components[c].resolutions; - if (r < resolutions.length) { - maxNumPrecincts = Math.max(maxNumPrecincts, - resolutions[r].precinctParameters.numprecincts); - } - } - maxNumPrecinctsInLevel[r] = maxNumPrecincts; - } - l = 0; - r = 0; - c = 0; - p = 0; - - this.nextPacket = function JpxImage_nextPacket() { - // Section B.12.1.3 Resolution-position-component-layer - for (; r <= maxDecompositionLevelsCount; r++) { - for (; p < maxNumPrecinctsInLevel[r]; p++) { - for (; c < componentsCount; c++) { - var component = tile.components[c]; - if (r > component.codingStyleParameters.decompositionLevelsCount) { - continue; - } - var resolution = component.resolutions[r]; - var numprecincts = resolution.precinctParameters.numprecincts; - if (p >= numprecincts) { - continue; - } - for (; l < layersCount;) { - var packet = createPacket(resolution, p, l); - l++; - return packet; - } - l = 0; - } - c = 0; - } - p = 0; - } - throw new Error('JPX Error: Out of packets'); - }; - } - function PositionComponentResolutionLayerIterator(context) { - var siz = context.SIZ; - var tileIndex = context.currentTile.index; - var tile = context.tiles[tileIndex]; - var layersCount = tile.codingStyleDefaultParameters.layersCount; - var componentsCount = siz.Csiz; - var precinctsSizes = getPrecinctSizesInImageScale(tile); - var precinctsIterationSizes = precinctsSizes; - var l = 0, r = 0, c = 0, px = 0, py = 0; - - this.nextPacket = function JpxImage_nextPacket() { - // Section B.12.1.4 Position-component-resolution-layer - for (; py < precinctsIterationSizes.maxNumHigh; py++) { - for (; px < precinctsIterationSizes.maxNumWide; px++) { - for (; c < componentsCount; c++) { - var component = tile.components[c]; - var decompositionLevelsCount = - component.codingStyleParameters.decompositionLevelsCount; - for (; r <= decompositionLevelsCount; r++) { - var resolution = component.resolutions[r]; - var sizeInImageScale = - precinctsSizes.components[c].resolutions[r]; - var k = getPrecinctIndexIfExist( - px, - py, - sizeInImageScale, - precinctsIterationSizes, - resolution); - if (k === null) { - continue; - } - for (; l < layersCount;) { - var packet = createPacket(resolution, k, l); - l++; - return packet; - } - l = 0; - } - r = 0; - } - c = 0; - } - px = 0; - } - throw new Error('JPX Error: Out of packets'); - }; - } - function ComponentPositionResolutionLayerIterator(context) { - var siz = context.SIZ; - var tileIndex = context.currentTile.index; - var tile = context.tiles[tileIndex]; - var layersCount = tile.codingStyleDefaultParameters.layersCount; - var componentsCount = siz.Csiz; - var precinctsSizes = getPrecinctSizesInImageScale(tile); - var l = 0, r = 0, c = 0, px = 0, py = 0; - - this.nextPacket = function JpxImage_nextPacket() { - // Section B.12.1.5 Component-position-resolution-layer - for (; c < componentsCount; ++c) { - var component = tile.components[c]; - var precinctsIterationSizes = precinctsSizes.components[c]; - var decompositionLevelsCount = - component.codingStyleParameters.decompositionLevelsCount; - for (; py < precinctsIterationSizes.maxNumHigh; py++) { - for (; px < precinctsIterationSizes.maxNumWide; px++) { - for (; r <= decompositionLevelsCount; r++) { - var resolution = component.resolutions[r]; - var sizeInImageScale = precinctsIterationSizes.resolutions[r]; - var k = getPrecinctIndexIfExist( - px, - py, - sizeInImageScale, - precinctsIterationSizes, - resolution); - if (k === null) { - continue; - } - for (; l < layersCount;) { - var packet = createPacket(resolution, k, l); - l++; - return packet; - } - l = 0; - } - r = 0; - } - px = 0; - } - py = 0; - } - throw new Error('JPX Error: Out of packets'); - }; - } - function getPrecinctIndexIfExist( - pxIndex, pyIndex, sizeInImageScale, precinctIterationSizes, resolution) { - var posX = pxIndex * precinctIterationSizes.minWidth; - var posY = pyIndex * precinctIterationSizes.minHeight; - if (posX % sizeInImageScale.width !== 0 || - posY % sizeInImageScale.height !== 0) { - return null; - } - var startPrecinctRowIndex = - (posY / sizeInImageScale.width) * - resolution.precinctParameters.numprecinctswide; - return (posX / sizeInImageScale.height) + startPrecinctRowIndex; - } - function getPrecinctSizesInImageScale(tile) { - var componentsCount = tile.components.length; - var minWidth = Number.MAX_VALUE; - var minHeight = Number.MAX_VALUE; - var maxNumWide = 0; - var maxNumHigh = 0; - var sizePerComponent = new Array(componentsCount); - for (var c = 0; c < componentsCount; c++) { - var component = tile.components[c]; - var decompositionLevelsCount = - component.codingStyleParameters.decompositionLevelsCount; - var sizePerResolution = new Array(decompositionLevelsCount + 1); - var minWidthCurrentComponent = Number.MAX_VALUE; - var minHeightCurrentComponent = Number.MAX_VALUE; - var maxNumWideCurrentComponent = 0; - var maxNumHighCurrentComponent = 0; - var scale = 1; - for (var r = decompositionLevelsCount; r >= 0; --r) { - var resolution = component.resolutions[r]; - var widthCurrentResolution = - scale * resolution.precinctParameters.precinctWidth; - var heightCurrentResolution = - scale * resolution.precinctParameters.precinctHeight; - minWidthCurrentComponent = Math.min( - minWidthCurrentComponent, - widthCurrentResolution); - minHeightCurrentComponent = Math.min( - minHeightCurrentComponent, - heightCurrentResolution); - maxNumWideCurrentComponent = Math.max(maxNumWideCurrentComponent, - resolution.precinctParameters.numprecinctswide); - maxNumHighCurrentComponent = Math.max(maxNumHighCurrentComponent, - resolution.precinctParameters.numprecinctshigh); - sizePerResolution[r] = { - width: widthCurrentResolution, - height: heightCurrentResolution - }; - scale <<= 1; - } - minWidth = Math.min(minWidth, minWidthCurrentComponent); - minHeight = Math.min(minHeight, minHeightCurrentComponent); - maxNumWide = Math.max(maxNumWide, maxNumWideCurrentComponent); - maxNumHigh = Math.max(maxNumHigh, maxNumHighCurrentComponent); - sizePerComponent[c] = { - resolutions: sizePerResolution, - minWidth: minWidthCurrentComponent, - minHeight: minHeightCurrentComponent, - maxNumWide: maxNumWideCurrentComponent, - maxNumHigh: maxNumHighCurrentComponent - }; - } - return { - components: sizePerComponent, - minWidth: minWidth, - minHeight: minHeight, - maxNumWide: maxNumWide, - maxNumHigh: maxNumHigh - }; - } - function buildPackets(context) { - var siz = context.SIZ; - var tileIndex = context.currentTile.index; - var tile = context.tiles[tileIndex]; - var componentsCount = siz.Csiz; - // Creating resolutions and sub-bands for each component - for (var c = 0; c < componentsCount; c++) { - var component = tile.components[c]; - var decompositionLevelsCount = - component.codingStyleParameters.decompositionLevelsCount; - // Section B.5 Resolution levels and sub-bands - var resolutions = []; - var subbands = []; - for (var r = 0; r <= decompositionLevelsCount; r++) { - var blocksDimensions = getBlocksDimensions(context, component, r); - var resolution = {}; - var scale = 1 << (decompositionLevelsCount - r); - resolution.trx0 = Math.ceil(component.tcx0 / scale); - resolution.try0 = Math.ceil(component.tcy0 / scale); - resolution.trx1 = Math.ceil(component.tcx1 / scale); - resolution.try1 = Math.ceil(component.tcy1 / scale); - resolution.resLevel = r; - buildPrecincts(context, resolution, blocksDimensions); - resolutions.push(resolution); - - var subband; - if (r === 0) { - // one sub-band (LL) with last decomposition - subband = {}; - subband.type = 'LL'; - subband.tbx0 = Math.ceil(component.tcx0 / scale); - subband.tby0 = Math.ceil(component.tcy0 / scale); - subband.tbx1 = Math.ceil(component.tcx1 / scale); - subband.tby1 = Math.ceil(component.tcy1 / scale); - subband.resolution = resolution; - buildCodeblocks(context, subband, blocksDimensions); - subbands.push(subband); - resolution.subbands = [subband]; - } else { - var bscale = 1 << (decompositionLevelsCount - r + 1); - var resolutionSubbands = []; - // three sub-bands (HL, LH and HH) with rest of decompositions - subband = {}; - subband.type = 'HL'; - subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5); - subband.tby0 = Math.ceil(component.tcy0 / bscale); - subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5); - subband.tby1 = Math.ceil(component.tcy1 / bscale); - subband.resolution = resolution; - buildCodeblocks(context, subband, blocksDimensions); - subbands.push(subband); - resolutionSubbands.push(subband); - - subband = {}; - subband.type = 'LH'; - subband.tbx0 = Math.ceil(component.tcx0 / bscale); - subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5); - subband.tbx1 = Math.ceil(component.tcx1 / bscale); - subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5); - subband.resolution = resolution; - buildCodeblocks(context, subband, blocksDimensions); - subbands.push(subband); - resolutionSubbands.push(subband); - - subband = {}; - subband.type = 'HH'; - subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5); - subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5); - subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5); - subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5); - subband.resolution = resolution; - buildCodeblocks(context, subband, blocksDimensions); - subbands.push(subband); - resolutionSubbands.push(subband); - - resolution.subbands = resolutionSubbands; - } - } - component.resolutions = resolutions; - component.subbands = subbands; - } - // Generate the packets sequence - var progressionOrder = tile.codingStyleDefaultParameters.progressionOrder; - switch (progressionOrder) { - case 0: - tile.packetsIterator = - new LayerResolutionComponentPositionIterator(context); - break; - case 1: - tile.packetsIterator = - new ResolutionLayerComponentPositionIterator(context); - break; - case 2: - tile.packetsIterator = - new ResolutionPositionComponentLayerIterator(context); - break; - case 3: - tile.packetsIterator = - new PositionComponentResolutionLayerIterator(context); - break; - case 4: - tile.packetsIterator = - new ComponentPositionResolutionLayerIterator(context); - break; - default: - throw new Error('JPX Error: Unsupported progression order ' + - progressionOrder); - } - } - function parseTilePackets(context, data, offset, dataLength) { - var position = 0; - var buffer, bufferSize = 0, skipNextBit = false; - function readBits(count) { - while (bufferSize < count) { - var b = data[offset + position]; - position++; - if (skipNextBit) { - buffer = (buffer << 7) | b; - bufferSize += 7; - skipNextBit = false; - } else { - buffer = (buffer << 8) | b; - bufferSize += 8; - } - if (b === 0xFF) { - skipNextBit = true; - } - } - bufferSize -= count; - return (buffer >>> bufferSize) & ((1 << count) - 1); - } - function skipMarkerIfEqual(value) { - if (data[offset + position - 1] === 0xFF && - data[offset + position] === value) { - skipBytes(1); - return true; - } else if (data[offset + position] === 0xFF && - data[offset + position + 1] === value) { - skipBytes(2); - return true; - } - return false; - } - function skipBytes(count) { - position += count; - } - function alignToByte() { - bufferSize = 0; - if (skipNextBit) { - position++; - skipNextBit = false; - } - } - function readCodingpasses() { - if (readBits(1) === 0) { - return 1; - } - if (readBits(1) === 0) { - return 2; - } - var value = readBits(2); - if (value < 3) { - return value + 3; - } - value = readBits(5); - if (value < 31) { - return value + 6; - } - value = readBits(7); - return value + 37; - } - var tileIndex = context.currentTile.index; - var tile = context.tiles[tileIndex]; - var sopMarkerUsed = context.COD.sopMarkerUsed; - var ephMarkerUsed = context.COD.ephMarkerUsed; - var packetsIterator = tile.packetsIterator; - while (position < dataLength) { - alignToByte(); - if (sopMarkerUsed && skipMarkerIfEqual(0x91)) { - // Skip also marker segment length and packet sequence ID - skipBytes(4); - } - var packet = packetsIterator.nextPacket(); - if (!readBits(1)) { - continue; - } - var layerNumber = packet.layerNumber; - var queue = [], codeblock; - for (var i = 0, ii = packet.codeblocks.length; i < ii; i++) { - codeblock = packet.codeblocks[i]; - var precinct = codeblock.precinct; - var codeblockColumn = codeblock.cbx - precinct.cbxMin; - var codeblockRow = codeblock.cby - precinct.cbyMin; - var codeblockIncluded = false; - var firstTimeInclusion = false; - var valueReady; - if (codeblock['included'] !== undefined) { - codeblockIncluded = !!readBits(1); - } else { - // reading inclusion tree - precinct = codeblock.precinct; - var inclusionTree, zeroBitPlanesTree; - if (precinct['inclusionTree'] !== undefined) { - inclusionTree = precinct.inclusionTree; - } else { - // building inclusion and zero bit-planes trees - var width = precinct.cbxMax - precinct.cbxMin + 1; - var height = precinct.cbyMax - precinct.cbyMin + 1; - inclusionTree = new InclusionTree(width, height, layerNumber); - zeroBitPlanesTree = new TagTree(width, height); - precinct.inclusionTree = inclusionTree; - precinct.zeroBitPlanesTree = zeroBitPlanesTree; - } - - if (inclusionTree.reset(codeblockColumn, codeblockRow, layerNumber)) { - while (true) { - if (readBits(1)) { - valueReady = !inclusionTree.nextLevel(); - if (valueReady) { - codeblock.included = true; - codeblockIncluded = firstTimeInclusion = true; - break; - } - } else { - inclusionTree.incrementValue(layerNumber); - break; - } - } - } - } - if (!codeblockIncluded) { - continue; - } - if (firstTimeInclusion) { - zeroBitPlanesTree = precinct.zeroBitPlanesTree; - zeroBitPlanesTree.reset(codeblockColumn, codeblockRow); - while (true) { - if (readBits(1)) { - valueReady = !zeroBitPlanesTree.nextLevel(); - if (valueReady) { - break; - } - } else { - zeroBitPlanesTree.incrementValue(); - } - } - codeblock.zeroBitPlanes = zeroBitPlanesTree.value; - } - var codingpasses = readCodingpasses(); - while (readBits(1)) { - codeblock.Lblock++; - } - var codingpassesLog2 = log2(codingpasses); - // rounding down log2 - var bits = ((codingpasses < (1 << codingpassesLog2)) ? - codingpassesLog2 - 1 : codingpassesLog2) + codeblock.Lblock; - var codedDataLength = readBits(bits); - queue.push({ - codeblock: codeblock, - codingpasses: codingpasses, - dataLength: codedDataLength - }); - } - alignToByte(); - if (ephMarkerUsed) { - skipMarkerIfEqual(0x92); - } - while (queue.length > 0) { - var packetItem = queue.shift(); - codeblock = packetItem.codeblock; - if (codeblock['data'] === undefined) { - codeblock.data = []; - } - codeblock.data.push({ - data: data, - start: offset + position, - end: offset + position + packetItem.dataLength, - codingpasses: packetItem.codingpasses - }); - position += packetItem.dataLength; - } - } - return position; - } - function copyCoefficients(coefficients, levelWidth, levelHeight, subband, - delta, mb, reversible, segmentationSymbolUsed) { - var x0 = subband.tbx0; - var y0 = subband.tby0; - var width = subband.tbx1 - subband.tbx0; - var codeblocks = subband.codeblocks; - var right = subband.type.charAt(0) === 'H' ? 1 : 0; - var bottom = subband.type.charAt(1) === 'H' ? levelWidth : 0; - - for (var i = 0, ii = codeblocks.length; i < ii; ++i) { - var codeblock = codeblocks[i]; - var blockWidth = codeblock.tbx1_ - codeblock.tbx0_; - var blockHeight = codeblock.tby1_ - codeblock.tby0_; - if (blockWidth === 0 || blockHeight === 0) { - continue; - } - if (codeblock['data'] === undefined) { - continue; - } - - var bitModel, currentCodingpassType; - bitModel = new BitModel(blockWidth, blockHeight, codeblock.subbandType, - codeblock.zeroBitPlanes, mb); - currentCodingpassType = 2; // first bit plane starts from cleanup - - // collect data - var data = codeblock.data, totalLength = 0, codingpasses = 0; - var j, jj, dataItem; - for (j = 0, jj = data.length; j < jj; j++) { - dataItem = data[j]; - totalLength += dataItem.end - dataItem.start; - codingpasses += dataItem.codingpasses; - } - var encodedData = new Uint8Array(totalLength); - var position = 0; - for (j = 0, jj = data.length; j < jj; j++) { - dataItem = data[j]; - var chunk = dataItem.data.subarray(dataItem.start, dataItem.end); - encodedData.set(chunk, position); - position += chunk.length; - } - // decoding the item - var decoder = new ArithmeticDecoder(encodedData, 0, totalLength); - bitModel.setDecoder(decoder); - - for (j = 0; j < codingpasses; j++) { - switch (currentCodingpassType) { - case 0: - bitModel.runSignificancePropogationPass(); - break; - case 1: - bitModel.runMagnitudeRefinementPass(); - break; - case 2: - bitModel.runCleanupPass(); - if (segmentationSymbolUsed) { - bitModel.checkSegmentationSymbol(); - } - break; - } - currentCodingpassType = (currentCodingpassType + 1) % 3; - } - - var offset = (codeblock.tbx0_ - x0) + (codeblock.tby0_ - y0) * width; - var sign = bitModel.coefficentsSign; - var magnitude = bitModel.coefficentsMagnitude; - var bitsDecoded = bitModel.bitsDecoded; - var magnitudeCorrection = reversible ? 0 : 0.5; - var k, n, nb; - position = 0; - // Do the interleaving of Section F.3.3 here, so we do not need - // to copy later. LL level is not interleaved, just copied. - var interleave = (subband.type !== 'LL'); - for (j = 0; j < blockHeight; j++) { - var row = (offset / width) | 0; // row in the non-interleaved subband - var levelOffset = 2 * row * (levelWidth - width) + right + bottom; - for (k = 0; k < blockWidth; k++) { - n = magnitude[position]; - if (n !== 0) { - n = (n + magnitudeCorrection) * delta; - if (sign[position] !== 0) { - n = -n; - } - nb = bitsDecoded[position]; - var pos = interleave ? (levelOffset + (offset << 1)) : offset; - if (reversible && (nb >= mb)) { - coefficients[pos] = n; - } else { - coefficients[pos] = n * (1 << (mb - nb)); - } - } - offset++; - position++; - } - offset += width - blockWidth; - } - } - } - function transformTile(context, tile, c) { - var component = tile.components[c]; - var codingStyleParameters = component.codingStyleParameters; - var quantizationParameters = component.quantizationParameters; - var decompositionLevelsCount = - codingStyleParameters.decompositionLevelsCount; - var spqcds = quantizationParameters.SPqcds; - var scalarExpounded = quantizationParameters.scalarExpounded; - var guardBits = quantizationParameters.guardBits; - var segmentationSymbolUsed = codingStyleParameters.segmentationSymbolUsed; - var precision = context.components[c].precision; - - var reversible = codingStyleParameters.reversibleTransformation; - var transform = (reversible ? new ReversibleTransform() : - new IrreversibleTransform()); - - var subbandCoefficients = []; - var b = 0; - for (var i = 0; i <= decompositionLevelsCount; i++) { - var resolution = component.resolutions[i]; - - var width = resolution.trx1 - resolution.trx0; - var height = resolution.try1 - resolution.try0; - // Allocate space for the whole sublevel. - var coefficients = new Float32Array(width * height); - - for (var j = 0, jj = resolution.subbands.length; j < jj; j++) { - var mu, epsilon; - if (!scalarExpounded) { - // formula E-5 - mu = spqcds[0].mu; - epsilon = spqcds[0].epsilon + (i > 0 ? 1 - i : 0); - } else { - mu = spqcds[b].mu; - epsilon = spqcds[b].epsilon; - b++; - } - - var subband = resolution.subbands[j]; - var gainLog2 = SubbandsGainLog2[subband.type]; - - // calulate quantization coefficient (Section E.1.1.1) - var delta = (reversible ? 1 : - Math.pow(2, precision + gainLog2 - epsilon) * (1 + mu / 2048)); - var mb = (guardBits + epsilon - 1); - - // In the first resolution level, copyCoefficients will fill the - // whole array with coefficients. In the succeding passes, - // copyCoefficients will consecutively fill in the values that belong - // to the interleaved positions of the HL, LH, and HH coefficients. - // The LL coefficients will then be interleaved in Transform.iterate(). - copyCoefficients(coefficients, width, height, subband, delta, mb, - reversible, segmentationSymbolUsed); - } - subbandCoefficients.push({ - width: width, - height: height, - items: coefficients - }); - } - - var result = transform.calculate(subbandCoefficients, - component.tcx0, component.tcy0); - return { - left: component.tcx0, - top: component.tcy0, - width: result.width, - height: result.height, - items: result.items - }; - } - function transformComponents(context) { - var siz = context.SIZ; - var components = context.components; - var componentsCount = siz.Csiz; - var resultImages = []; - for (var i = 0, ii = context.tiles.length; i < ii; i++) { - var tile = context.tiles[i]; - var transformedTiles = []; - var c; - for (c = 0; c < componentsCount; c++) { - transformedTiles[c] = transformTile(context, tile, c); - } - var tile0 = transformedTiles[0]; - var out = new Uint8Array(tile0.items.length * componentsCount); - var result = { - left: tile0.left, - top: tile0.top, - width: tile0.width, - height: tile0.height, - items: out - }; - - // Section G.2.2 Inverse multi component transform - var shift, offset, max, min, maxK; - var pos = 0, j, jj, y0, y1, y2, r, g, b, k, val; - if (tile.codingStyleDefaultParameters.multipleComponentTransform) { - var fourComponents = componentsCount === 4; - var y0items = transformedTiles[0].items; - var y1items = transformedTiles[1].items; - var y2items = transformedTiles[2].items; - var y3items = fourComponents ? transformedTiles[3].items : null; - - // HACK: The multiple component transform formulas below assume that - // all components have the same precision. With this in mind, we - // compute shift and offset only once. - shift = components[0].precision - 8; - offset = (128 << shift) + 0.5; - max = 255 * (1 << shift); - maxK = max * 0.5; - min = -maxK; - - var component0 = tile.components[0]; - var alpha01 = componentsCount - 3; - jj = y0items.length; - if (!component0.codingStyleParameters.reversibleTransformation) { - // inverse irreversible multiple component transform - for (j = 0; j < jj; j++, pos += alpha01) { - y0 = y0items[j] + offset; - y1 = y1items[j]; - y2 = y2items[j]; - r = y0 + 1.402 * y2; - g = y0 - 0.34413 * y1 - 0.71414 * y2; - b = y0 + 1.772 * y1; - out[pos++] = r <= 0 ? 0 : r >= max ? 255 : r >> shift; - out[pos++] = g <= 0 ? 0 : g >= max ? 255 : g >> shift; - out[pos++] = b <= 0 ? 0 : b >= max ? 255 : b >> shift; - } - } else { - // inverse reversible multiple component transform - for (j = 0; j < jj; j++, pos += alpha01) { - y0 = y0items[j] + offset; - y1 = y1items[j]; - y2 = y2items[j]; - g = y0 - ((y2 + y1) >> 2); - r = g + y2; - b = g + y1; - out[pos++] = r <= 0 ? 0 : r >= max ? 255 : r >> shift; - out[pos++] = g <= 0 ? 0 : g >= max ? 255 : g >> shift; - out[pos++] = b <= 0 ? 0 : b >= max ? 255 : b >> shift; - } - } - if (fourComponents) { - for (j = 0, pos = 3; j < jj; j++, pos += 4) { - k = y3items[j]; - out[pos] = k <= min ? 0 : k >= maxK ? 255 : (k + offset) >> shift; - } - } - } else { // no multi-component transform - for (c = 0; c < componentsCount; c++) { - var items = transformedTiles[c].items; - shift = components[c].precision - 8; - offset = (128 << shift) + 0.5; - max = (127.5 * (1 << shift)); - min = -max; - for (pos = c, j = 0, jj = items.length; j < jj; j++) { - val = items[j]; - out[pos] = val <= min ? 0 : - val >= max ? 255 : (val + offset) >> shift; - pos += componentsCount; - } - } - } - resultImages.push(result); - } - return resultImages; - } - function initializeTile(context, tileIndex) { - var siz = context.SIZ; - var componentsCount = siz.Csiz; - var tile = context.tiles[tileIndex]; - for (var c = 0; c < componentsCount; c++) { - var component = tile.components[c]; - var qcdOrQcc = (context.currentTile.QCC[c] !== undefined ? - context.currentTile.QCC[c] : context.currentTile.QCD); - component.quantizationParameters = qcdOrQcc; - var codOrCoc = (context.currentTile.COC[c] !== undefined ? - context.currentTile.COC[c] : context.currentTile.COD); - component.codingStyleParameters = codOrCoc; - } - tile.codingStyleDefaultParameters = context.currentTile.COD; - } - - // Section B.10.2 Tag trees - var TagTree = (function TagTreeClosure() { - function TagTree(width, height) { - var levelsLength = log2(Math.max(width, height)) + 1; - this.levels = []; - for (var i = 0; i < levelsLength; i++) { - var level = { - width: width, - height: height, - items: [] - }; - this.levels.push(level); - width = Math.ceil(width / 2); - height = Math.ceil(height / 2); - } - } - TagTree.prototype = { - reset: function TagTree_reset(i, j) { - var currentLevel = 0, value = 0, level; - while (currentLevel < this.levels.length) { - level = this.levels[currentLevel]; - var index = i + j * level.width; - if (level.items[index] !== undefined) { - value = level.items[index]; - break; - } - level.index = index; - i >>= 1; - j >>= 1; - currentLevel++; - } - currentLevel--; - level = this.levels[currentLevel]; - level.items[level.index] = value; - this.currentLevel = currentLevel; - delete this.value; - }, - incrementValue: function TagTree_incrementValue() { - var level = this.levels[this.currentLevel]; - level.items[level.index]++; - }, - nextLevel: function TagTree_nextLevel() { - var currentLevel = this.currentLevel; - var level = this.levels[currentLevel]; - var value = level.items[level.index]; - currentLevel--; - if (currentLevel < 0) { - this.value = value; - return false; - } - - this.currentLevel = currentLevel; - level = this.levels[currentLevel]; - level.items[level.index] = value; - return true; - } - }; - return TagTree; - })(); - - var InclusionTree = (function InclusionTreeClosure() { - function InclusionTree(width, height, defaultValue) { - var levelsLength = log2(Math.max(width, height)) + 1; - this.levels = []; - for (var i = 0; i < levelsLength; i++) { - var items = new Uint8Array(width * height); - for (var j = 0, jj = items.length; j < jj; j++) { - items[j] = defaultValue; - } - - var level = { - width: width, - height: height, - items: items - }; - this.levels.push(level); - - width = Math.ceil(width / 2); - height = Math.ceil(height / 2); - } - } - InclusionTree.prototype = { - reset: function InclusionTree_reset(i, j, stopValue) { - var currentLevel = 0; - while (currentLevel < this.levels.length) { - var level = this.levels[currentLevel]; - var index = i + j * level.width; - level.index = index; - var value = level.items[index]; - - if (value === 0xFF) { - break; - } - - if (value > stopValue) { - this.currentLevel = currentLevel; - // already know about this one, propagating the value to top levels - this.propagateValues(); - return false; - } - - i >>= 1; - j >>= 1; - currentLevel++; - } - this.currentLevel = currentLevel - 1; - return true; - }, - incrementValue: function InclusionTree_incrementValue(stopValue) { - var level = this.levels[this.currentLevel]; - level.items[level.index] = stopValue + 1; - this.propagateValues(); - }, - propagateValues: function InclusionTree_propagateValues() { - var levelIndex = this.currentLevel; - var level = this.levels[levelIndex]; - var currentValue = level.items[level.index]; - while (--levelIndex >= 0) { - level = this.levels[levelIndex]; - level.items[level.index] = currentValue; - } - }, - nextLevel: function InclusionTree_nextLevel() { - var currentLevel = this.currentLevel; - var level = this.levels[currentLevel]; - var value = level.items[level.index]; - level.items[level.index] = 0xFF; - currentLevel--; - if (currentLevel < 0) { - return false; - } - - this.currentLevel = currentLevel; - level = this.levels[currentLevel]; - level.items[level.index] = value; - return true; - } - }; - return InclusionTree; - })(); - - // Section D. Coefficient bit modeling - var BitModel = (function BitModelClosure() { - var UNIFORM_CONTEXT = 17; - var RUNLENGTH_CONTEXT = 18; - // Table D-1 - // The index is binary presentation: 0dddvvhh, ddd - sum of Di (0..4), - // vv - sum of Vi (0..2), and hh - sum of Hi (0..2) - var LLAndLHContextsLabel = new Uint8Array([ - 0, 5, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 1, 6, 8, 0, 3, 7, 8, 0, 4, - 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6, - 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8 - ]); - var HLContextLabel = new Uint8Array([ - 0, 3, 4, 0, 5, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 1, 3, 4, 0, 6, 7, 7, 0, 8, - 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3, - 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8 - ]); - var HHContextLabel = new Uint8Array([ - 0, 1, 2, 0, 1, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 3, 4, 5, 0, 4, 5, 5, 0, 5, - 5, 5, 0, 0, 0, 0, 0, 6, 7, 7, 0, 7, 7, 7, 0, 7, 7, 7, 0, 0, 0, 0, 0, 8, 8, - 8, 0, 8, 8, 8, 0, 8, 8, 8, 0, 0, 0, 0, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8 - ]); - - function BitModel(width, height, subband, zeroBitPlanes, mb) { - this.width = width; - this.height = height; - - this.contextLabelTable = (subband === 'HH' ? HHContextLabel : - (subband === 'HL' ? HLContextLabel : LLAndLHContextsLabel)); - - var coefficientCount = width * height; - - // coefficients outside the encoding region treated as insignificant - // add border state cells for significanceState - this.neighborsSignificance = new Uint8Array(coefficientCount); - this.coefficentsSign = new Uint8Array(coefficientCount); - this.coefficentsMagnitude = mb > 14 ? new Uint32Array(coefficientCount) : - mb > 6 ? new Uint16Array(coefficientCount) : - new Uint8Array(coefficientCount); - this.processingFlags = new Uint8Array(coefficientCount); - - var bitsDecoded = new Uint8Array(coefficientCount); - if (zeroBitPlanes !== 0) { - for (var i = 0; i < coefficientCount; i++) { - bitsDecoded[i] = zeroBitPlanes; - } - } - this.bitsDecoded = bitsDecoded; - - this.reset(); - } - - BitModel.prototype = { - setDecoder: function BitModel_setDecoder(decoder) { - this.decoder = decoder; - }, - reset: function BitModel_reset() { - // We have 17 contexts that are accessed via context labels, - // plus the uniform and runlength context. - this.contexts = new Int8Array(19); - - // Contexts are packed into 1 byte: - // highest 7 bits carry the index, lowest bit carries mps - this.contexts[0] = (4 << 1) | 0; - this.contexts[UNIFORM_CONTEXT] = (46 << 1) | 0; - this.contexts[RUNLENGTH_CONTEXT] = (3 << 1) | 0; - }, - setNeighborsSignificance: - function BitModel_setNeighborsSignificance(row, column, index) { - var neighborsSignificance = this.neighborsSignificance; - var width = this.width, height = this.height; - var left = (column > 0); - var right = (column + 1 < width); - var i; - - if (row > 0) { - i = index - width; - if (left) { - neighborsSignificance[i - 1] += 0x10; - } - if (right) { - neighborsSignificance[i + 1] += 0x10; - } - neighborsSignificance[i] += 0x04; - } - - if (row + 1 < height) { - i = index + width; - if (left) { - neighborsSignificance[i - 1] += 0x10; - } - if (right) { - neighborsSignificance[i + 1] += 0x10; - } - neighborsSignificance[i] += 0x04; - } - - if (left) { - neighborsSignificance[index - 1] += 0x01; - } - if (right) { - neighborsSignificance[index + 1] += 0x01; - } - neighborsSignificance[index] |= 0x80; - }, - runSignificancePropogationPass: - function BitModel_runSignificancePropogationPass() { - var decoder = this.decoder; - var width = this.width, height = this.height; - var coefficentsMagnitude = this.coefficentsMagnitude; - var coefficentsSign = this.coefficentsSign; - var neighborsSignificance = this.neighborsSignificance; - var processingFlags = this.processingFlags; - var contexts = this.contexts; - var labels = this.contextLabelTable; - var bitsDecoded = this.bitsDecoded; - var processedInverseMask = ~1; - var processedMask = 1; - var firstMagnitudeBitMask = 2; - - for (var i0 = 0; i0 < height; i0 += 4) { - for (var j = 0; j < width; j++) { - var index = i0 * width + j; - for (var i1 = 0; i1 < 4; i1++, index += width) { - var i = i0 + i1; - if (i >= height) { - break; - } - // clear processed flag first - processingFlags[index] &= processedInverseMask; - - if (coefficentsMagnitude[index] || - !neighborsSignificance[index]) { - continue; - } - - var contextLabel = labels[neighborsSignificance[index]]; - var decision = decoder.readBit(contexts, contextLabel); - if (decision) { - var sign = this.decodeSignBit(i, j, index); - coefficentsSign[index] = sign; - coefficentsMagnitude[index] = 1; - this.setNeighborsSignificance(i, j, index); - processingFlags[index] |= firstMagnitudeBitMask; - } - bitsDecoded[index]++; - processingFlags[index] |= processedMask; - } - } - } - }, - decodeSignBit: function BitModel_decodeSignBit(row, column, index) { - var width = this.width, height = this.height; - var coefficentsMagnitude = this.coefficentsMagnitude; - var coefficentsSign = this.coefficentsSign; - var contribution, sign0, sign1, significance1; - var contextLabel, decoded; - - // calculate horizontal contribution - significance1 = (column > 0 && coefficentsMagnitude[index - 1] !== 0); - if (column + 1 < width && coefficentsMagnitude[index + 1] !== 0) { - sign1 = coefficentsSign[index + 1]; - if (significance1) { - sign0 = coefficentsSign[index - 1]; - contribution = 1 - sign1 - sign0; - } else { - contribution = 1 - sign1 - sign1; - } - } else if (significance1) { - sign0 = coefficentsSign[index - 1]; - contribution = 1 - sign0 - sign0; - } else { - contribution = 0; - } - var horizontalContribution = 3 * contribution; - - // calculate vertical contribution and combine with the horizontal - significance1 = (row > 0 && coefficentsMagnitude[index - width] !== 0); - if (row + 1 < height && coefficentsMagnitude[index + width] !== 0) { - sign1 = coefficentsSign[index + width]; - if (significance1) { - sign0 = coefficentsSign[index - width]; - contribution = 1 - sign1 - sign0 + horizontalContribution; - } else { - contribution = 1 - sign1 - sign1 + horizontalContribution; - } - } else if (significance1) { - sign0 = coefficentsSign[index - width]; - contribution = 1 - sign0 - sign0 + horizontalContribution; - } else { - contribution = horizontalContribution; - } - - if (contribution >= 0) { - contextLabel = 9 + contribution; - decoded = this.decoder.readBit(this.contexts, contextLabel); - } else { - contextLabel = 9 - contribution; - decoded = this.decoder.readBit(this.contexts, contextLabel) ^ 1; - } - return decoded; - }, - runMagnitudeRefinementPass: - function BitModel_runMagnitudeRefinementPass() { - var decoder = this.decoder; - var width = this.width, height = this.height; - var coefficentsMagnitude = this.coefficentsMagnitude; - var neighborsSignificance = this.neighborsSignificance; - var contexts = this.contexts; - var bitsDecoded = this.bitsDecoded; - var processingFlags = this.processingFlags; - var processedMask = 1; - var firstMagnitudeBitMask = 2; - var length = width * height; - var width4 = width * 4; - - for (var index0 = 0, indexNext; index0 < length; index0 = indexNext) { - indexNext = Math.min(length, index0 + width4); - for (var j = 0; j < width; j++) { - for (var index = index0 + j; index < indexNext; index += width) { - - // significant but not those that have just become - if (!coefficentsMagnitude[index] || - (processingFlags[index] & processedMask) !== 0) { - continue; - } - - var contextLabel = 16; - if ((processingFlags[index] & firstMagnitudeBitMask) !== 0) { - processingFlags[index] ^= firstMagnitudeBitMask; - // first refinement - var significance = neighborsSignificance[index] & 127; - contextLabel = significance === 0 ? 15 : 14; - } - - var bit = decoder.readBit(contexts, contextLabel); - coefficentsMagnitude[index] = - (coefficentsMagnitude[index] << 1) | bit; - bitsDecoded[index]++; - processingFlags[index] |= processedMask; - } - } - } - }, - runCleanupPass: function BitModel_runCleanupPass() { - var decoder = this.decoder; - var width = this.width, height = this.height; - var neighborsSignificance = this.neighborsSignificance; - var coefficentsMagnitude = this.coefficentsMagnitude; - var coefficentsSign = this.coefficentsSign; - var contexts = this.contexts; - var labels = this.contextLabelTable; - var bitsDecoded = this.bitsDecoded; - var processingFlags = this.processingFlags; - var processedMask = 1; - var firstMagnitudeBitMask = 2; - var oneRowDown = width; - var twoRowsDown = width * 2; - var threeRowsDown = width * 3; - var iNext; - for (var i0 = 0; i0 < height; i0 = iNext) { - iNext = Math.min(i0 + 4, height); - var indexBase = i0 * width; - var checkAllEmpty = i0 + 3 < height; - for (var j = 0; j < width; j++) { - var index0 = indexBase + j; - // using the property: labels[neighborsSignificance[index]] === 0 - // when neighborsSignificance[index] === 0 - var allEmpty = (checkAllEmpty && - processingFlags[index0] === 0 && - processingFlags[index0 + oneRowDown] === 0 && - processingFlags[index0 + twoRowsDown] === 0 && - processingFlags[index0 + threeRowsDown] === 0 && - neighborsSignificance[index0] === 0 && - neighborsSignificance[index0 + oneRowDown] === 0 && - neighborsSignificance[index0 + twoRowsDown] === 0 && - neighborsSignificance[index0 + threeRowsDown] === 0); - var i1 = 0, index = index0; - var i = i0, sign; - if (allEmpty) { - var hasSignificantCoefficent = - decoder.readBit(contexts, RUNLENGTH_CONTEXT); - if (!hasSignificantCoefficent) { - bitsDecoded[index0]++; - bitsDecoded[index0 + oneRowDown]++; - bitsDecoded[index0 + twoRowsDown]++; - bitsDecoded[index0 + threeRowsDown]++; - continue; // next column - } - i1 = (decoder.readBit(contexts, UNIFORM_CONTEXT) << 1) | - decoder.readBit(contexts, UNIFORM_CONTEXT); - if (i1 !== 0) { - i = i0 + i1; - index += i1 * width; - } - - sign = this.decodeSignBit(i, j, index); - coefficentsSign[index] = sign; - coefficentsMagnitude[index] = 1; - this.setNeighborsSignificance(i, j, index); - processingFlags[index] |= firstMagnitudeBitMask; - - index = index0; - for (var i2 = i0; i2 <= i; i2++, index += width) { - bitsDecoded[index]++; - } - - i1++; - } - for (i = i0 + i1; i < iNext; i++, index += width) { - if (coefficentsMagnitude[index] || - (processingFlags[index] & processedMask) !== 0) { - continue; - } - - var contextLabel = labels[neighborsSignificance[index]]; - var decision = decoder.readBit(contexts, contextLabel); - if (decision === 1) { - sign = this.decodeSignBit(i, j, index); - coefficentsSign[index] = sign; - coefficentsMagnitude[index] = 1; - this.setNeighborsSignificance(i, j, index); - processingFlags[index] |= firstMagnitudeBitMask; - } - bitsDecoded[index]++; - } - } - } - }, - checkSegmentationSymbol: function BitModel_checkSegmentationSymbol() { - var decoder = this.decoder; - var contexts = this.contexts; - var symbol = (decoder.readBit(contexts, UNIFORM_CONTEXT) << 3) | - (decoder.readBit(contexts, UNIFORM_CONTEXT) << 2) | - (decoder.readBit(contexts, UNIFORM_CONTEXT) << 1) | - decoder.readBit(contexts, UNIFORM_CONTEXT); - if (symbol !== 0xA) { - throw new Error('JPX Error: Invalid segmentation symbol'); - } - } - }; - - return BitModel; - })(); - - // Section F, Discrete wavelet transformation - var Transform = (function TransformClosure() { - function Transform() {} - - Transform.prototype.calculate = - function transformCalculate(subbands, u0, v0) { - var ll = subbands[0]; - for (var i = 1, ii = subbands.length; i < ii; i++) { - ll = this.iterate(ll, subbands[i], u0, v0); - } - return ll; - }; - Transform.prototype.extend = function extend(buffer, offset, size) { - // Section F.3.7 extending... using max extension of 4 - var i1 = offset - 1, j1 = offset + 1; - var i2 = offset + size - 2, j2 = offset + size; - buffer[i1--] = buffer[j1++]; - buffer[j2++] = buffer[i2--]; - buffer[i1--] = buffer[j1++]; - buffer[j2++] = buffer[i2--]; - buffer[i1--] = buffer[j1++]; - buffer[j2++] = buffer[i2--]; - buffer[i1] = buffer[j1]; - buffer[j2] = buffer[i2]; - }; - Transform.prototype.iterate = function Transform_iterate(ll, hl_lh_hh, - u0, v0) { - var llWidth = ll.width, llHeight = ll.height, llItems = ll.items; - var width = hl_lh_hh.width; - var height = hl_lh_hh.height; - var items = hl_lh_hh.items; - var i, j, k, l, u, v; - - // Interleave LL according to Section F.3.3 - for (k = 0, i = 0; i < llHeight; i++) { - l = i * 2 * width; - for (j = 0; j < llWidth; j++, k++, l += 2) { - items[l] = llItems[k]; - } - } - // The LL band is not needed anymore. - llItems = ll.items = null; - - var bufferPadding = 4; - var rowBuffer = new Float32Array(width + 2 * bufferPadding); - - // Section F.3.4 HOR_SR - if (width === 1) { - // if width = 1, when u0 even keep items as is, when odd divide by 2 - if ((u0 & 1) !== 0) { - for (v = 0, k = 0; v < height; v++, k += width) { - items[k] *= 0.5; - } - } - } else { - for (v = 0, k = 0; v < height; v++, k += width) { - rowBuffer.set(items.subarray(k, k + width), bufferPadding); - - this.extend(rowBuffer, bufferPadding, width); - this.filter(rowBuffer, bufferPadding, width); - - items.set( - rowBuffer.subarray(bufferPadding, bufferPadding + width), - k); - } - } - - // Accesses to the items array can take long, because it may not fit into - // CPU cache and has to be fetched from main memory. Since subsequent - // accesses to the items array are not local when reading columns, we - // have a cache miss every time. To reduce cache misses, get up to - // 'numBuffers' items at a time and store them into the individual - // buffers. The colBuffers should be small enough to fit into CPU cache. - var numBuffers = 16; - var colBuffers = []; - for (i = 0; i < numBuffers; i++) { - colBuffers.push(new Float32Array(height + 2 * bufferPadding)); - } - var b, currentBuffer = 0; - ll = bufferPadding + height; - - // Section F.3.5 VER_SR - if (height === 1) { - // if height = 1, when v0 even keep items as is, when odd divide by 2 - if ((v0 & 1) !== 0) { - for (u = 0; u < width; u++) { - items[u] *= 0.5; - } - } - } else { - for (u = 0; u < width; u++) { - // if we ran out of buffers, copy several image columns at once - if (currentBuffer === 0) { - numBuffers = Math.min(width - u, numBuffers); - for (k = u, l = bufferPadding; l < ll; k += width, l++) { - for (b = 0; b < numBuffers; b++) { - colBuffers[b][l] = items[k + b]; - } - } - currentBuffer = numBuffers; - } - - currentBuffer--; - var buffer = colBuffers[currentBuffer]; - this.extend(buffer, bufferPadding, height); - this.filter(buffer, bufferPadding, height); - - // If this is last buffer in this group of buffers, flush all buffers. - if (currentBuffer === 0) { - k = u - numBuffers + 1; - for (l = bufferPadding; l < ll; k += width, l++) { - for (b = 0; b < numBuffers; b++) { - items[k + b] = colBuffers[b][l]; - } - } - } - } - } - - return { - width: width, - height: height, - items: items - }; - }; - return Transform; - })(); - - // Section 3.8.2 Irreversible 9-7 filter - var IrreversibleTransform = (function IrreversibleTransformClosure() { - function IrreversibleTransform() { - Transform.call(this); - } - - IrreversibleTransform.prototype = Object.create(Transform.prototype); - IrreversibleTransform.prototype.filter = - function irreversibleTransformFilter(x, offset, length) { - var len = length >> 1; - offset = offset | 0; - var j, n, current, next; - - var alpha = -1.586134342059924; - var beta = -0.052980118572961; - var gamma = 0.882911075530934; - var delta = 0.443506852043971; - var K = 1.230174104914001; - var K_ = 1 / K; - - // step 1 is combined with step 3 - - // step 2 - j = offset - 3; - for (n = len + 4; n--; j += 2) { - x[j] *= K_; - } - - // step 1 & 3 - j = offset - 2; - current = delta * x[j -1]; - for (n = len + 3; n--; j += 2) { - next = delta * x[j + 1]; - x[j] = K * x[j] - current - next; - if (n--) { - j += 2; - current = delta * x[j + 1]; - x[j] = K * x[j] - current - next; - } else { - break; - } - } - - // step 4 - j = offset - 1; - current = gamma * x[j - 1]; - for (n = len + 2; n--; j += 2) { - next = gamma * x[j + 1]; - x[j] -= current + next; - if (n--) { - j += 2; - current = gamma * x[j + 1]; - x[j] -= current + next; - } else { - break; - } - } - - // step 5 - j = offset; - current = beta * x[j - 1]; - for (n = len + 1; n--; j += 2) { - next = beta * x[j + 1]; - x[j] -= current + next; - if (n--) { - j += 2; - current = beta * x[j + 1]; - x[j] -= current + next; - } else { - break; - } - } - - // step 6 - if (len !== 0) { - j = offset + 1; - current = alpha * x[j - 1]; - for (n = len; n--; j += 2) { - next = alpha * x[j + 1]; - x[j] -= current + next; - if (n--) { - j += 2; - current = alpha * x[j + 1]; - x[j] -= current + next; - } else { - break; - } - } - } - }; - - return IrreversibleTransform; - })(); - - // Section 3.8.1 Reversible 5-3 filter - var ReversibleTransform = (function ReversibleTransformClosure() { - function ReversibleTransform() { - Transform.call(this); - } - - ReversibleTransform.prototype = Object.create(Transform.prototype); - ReversibleTransform.prototype.filter = - function reversibleTransformFilter(x, offset, length) { - var len = length >> 1; - offset = offset | 0; - var j, n; - - for (j = offset, n = len + 1; n--; j += 2) { - x[j] -= (x[j - 1] + x[j + 1] + 2) >> 2; - } - - for (j = offset + 1, n = len; n--; j += 2) { - x[j] += (x[j - 1] + x[j + 1]) >> 1; - } - }; - - return ReversibleTransform; - })(); - - return JpxImage; -})(); - -exports.JpxImage = JpxImage; -})); - - - -(function (root, factory) { - { - factory((root.pdfjsCoreMurmurHash3 = {}), root.pdfjsSharedUtil); - } -}(this, function (exports, sharedUtil) { - -var Uint32ArrayView = sharedUtil.Uint32ArrayView; - -var MurmurHash3_64 = (function MurmurHash3_64Closure (seed) { - // Workaround for missing math precison in JS. - var MASK_HIGH = 0xffff0000; - var MASK_LOW = 0xffff; - - function MurmurHash3_64 (seed) { - var SEED = 0xc3d2e1f0; - this.h1 = seed ? seed & 0xffffffff : SEED; - this.h2 = seed ? seed & 0xffffffff : SEED; - } - - var alwaysUseUint32ArrayView = false; - // old webkits have issues with non-aligned arrays - try { - new Uint32Array(new Uint8Array(5).buffer, 0, 1); - } catch (e) { - alwaysUseUint32ArrayView = true; - } - - MurmurHash3_64.prototype = { - update: function MurmurHash3_64_update(input) { - var useUint32ArrayView = alwaysUseUint32ArrayView; - var i; - if (typeof input === 'string') { - var data = new Uint8Array(input.length * 2); - var length = 0; - for (i = 0; i < input.length; i++) { - var code = input.charCodeAt(i); - if (code <= 0xff) { - data[length++] = code; - } - else { - data[length++] = code >>> 8; - data[length++] = code & 0xff; - } - } - } else if (input instanceof Uint8Array) { - data = input; - length = data.length; - } else if (typeof input === 'object' && ('length' in input)) { - // processing regular arrays as well, e.g. for IE9 - data = input; - length = data.length; - useUint32ArrayView = true; - } else { - throw new Error('Wrong data format in MurmurHash3_64_update. ' + - 'Input must be a string or array.'); - } - - var blockCounts = length >> 2; - var tailLength = length - blockCounts * 4; - // we don't care about endianness here - var dataUint32 = useUint32ArrayView ? - new Uint32ArrayView(data, blockCounts) : - new Uint32Array(data.buffer, 0, blockCounts); - var k1 = 0; - var k2 = 0; - var h1 = this.h1; - var h2 = this.h2; - var C1 = 0xcc9e2d51; - var C2 = 0x1b873593; - var C1_LOW = C1 & MASK_LOW; - var C2_LOW = C2 & MASK_LOW; - - for (i = 0; i < blockCounts; i++) { - if (i & 1) { - k1 = dataUint32[i]; - k1 = (k1 * C1 & MASK_HIGH) | (k1 * C1_LOW & MASK_LOW); - k1 = k1 << 15 | k1 >>> 17; - k1 = (k1 * C2 & MASK_HIGH) | (k1 * C2_LOW & MASK_LOW); - h1 ^= k1; - h1 = h1 << 13 | h1 >>> 19; - h1 = h1 * 5 + 0xe6546b64; - } else { - k2 = dataUint32[i]; - k2 = (k2 * C1 & MASK_HIGH) | (k2 * C1_LOW & MASK_LOW); - k2 = k2 << 15 | k2 >>> 17; - k2 = (k2 * C2 & MASK_HIGH) | (k2 * C2_LOW & MASK_LOW); - h2 ^= k2; - h2 = h2 << 13 | h2 >>> 19; - h2 = h2 * 5 + 0xe6546b64; - } - } - - k1 = 0; - - switch (tailLength) { - case 3: - k1 ^= data[blockCounts * 4 + 2] << 16; - /* falls through */ - case 2: - k1 ^= data[blockCounts * 4 + 1] << 8; - /* falls through */ - case 1: - k1 ^= data[blockCounts * 4]; - /* falls through */ - k1 = (k1 * C1 & MASK_HIGH) | (k1 * C1_LOW & MASK_LOW); - k1 = k1 << 15 | k1 >>> 17; - k1 = (k1 * C2 & MASK_HIGH) | (k1 * C2_LOW & MASK_LOW); - if (blockCounts & 1) { - h1 ^= k1; - } else { - h2 ^= k1; - } - } - - this.h1 = h1; - this.h2 = h2; - return this; - }, - - hexdigest: function MurmurHash3_64_hexdigest () { - var h1 = this.h1; - var h2 = this.h2; - - h1 ^= h2 >>> 1; - h1 = (h1 * 0xed558ccd & MASK_HIGH) | (h1 * 0x8ccd & MASK_LOW); - h2 = (h2 * 0xff51afd7 & MASK_HIGH) | - (((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16); - h1 ^= h2 >>> 1; - h1 = (h1 * 0x1a85ec53 & MASK_HIGH) | (h1 * 0xec53 & MASK_LOW); - h2 = (h2 * 0xc4ceb9fe & MASK_HIGH) | - (((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16); - h1 ^= h2 >>> 1; - - for (var i = 0, arr = [h1, h2], str = ''; i < arr.length; i++) { - var hex = (arr[i] >>> 0).toString(16); - while (hex.length < 8) { - hex = '0' + hex; - } - str += hex; - } - - return str; - } - }; - - return MurmurHash3_64; -})(); - -exports.MurmurHash3_64 = MurmurHash3_64; -})); - - -(function (root, factory) { - { - factory((root.pdfjsCorePrimitives = {}), root.pdfjsSharedUtil); - } -}(this, function (exports, sharedUtil) { - -var isArray = sharedUtil.isArray; - -var Name = (function NameClosure() { - function Name(name) { - this.name = name; - } - - Name.prototype = {}; - - var nameCache = {}; - - Name.get = function Name_get(name) { - var nameValue = nameCache[name]; - return (nameValue ? nameValue : (nameCache[name] = new Name(name))); - }; - - return Name; -})(); - -var Cmd = (function CmdClosure() { - function Cmd(cmd) { - this.cmd = cmd; - } - - Cmd.prototype = {}; - - var cmdCache = {}; - - Cmd.get = function Cmd_get(cmd) { - var cmdValue = cmdCache[cmd]; - return (cmdValue ? cmdValue : (cmdCache[cmd] = new Cmd(cmd))); - }; - - return Cmd; -})(); - -var Dict = (function DictClosure() { - var nonSerializable = function nonSerializableClosure() { - return nonSerializable; // creating closure on some variable - }; - - var GETALL_DICTIONARY_TYPES_WHITELIST = { - 'Background': true, - 'ExtGState': true, - 'Halftone': true, - 'Layout': true, - 'Mask': true, - 'Pagination': true, - 'Printing': true - }; - - function isRecursionAllowedFor(dict) { - if (!isName(dict.Type)) { - return true; - } - var dictType = dict.Type.name; - return GETALL_DICTIONARY_TYPES_WHITELIST[dictType] === true; - } - - // xref is optional - function Dict(xref) { - // Map should only be used internally, use functions below to access. - this.map = Object.create(null); - this.xref = xref; - this.objId = null; - this.__nonSerializable__ = nonSerializable; // disable cloning of the Dict - } - - Dict.prototype = { - assignXref: function Dict_assignXref(newXref) { - this.xref = newXref; - }, - - // automatically dereferences Ref objects - get: function Dict_get(key1, key2, key3) { - var value; - var xref = this.xref; - if (typeof (value = this.map[key1]) !== 'undefined' || key1 in this.map || - typeof key2 === 'undefined') { - return xref ? xref.fetchIfRef(value) : value; - } - if (typeof (value = this.map[key2]) !== 'undefined' || key2 in this.map || - typeof key3 === 'undefined') { - return xref ? xref.fetchIfRef(value) : value; - } - value = this.map[key3] || null; - return xref ? xref.fetchIfRef(value) : value; - }, - - // Same as get(), but returns a promise and uses fetchIfRefAsync(). - getAsync: function Dict_getAsync(key1, key2, key3) { - var value; - var xref = this.xref; - if (typeof (value = this.map[key1]) !== 'undefined' || key1 in this.map || - typeof key2 === 'undefined') { - if (xref) { - return xref.fetchIfRefAsync(value); - } - return Promise.resolve(value); - } - if (typeof (value = this.map[key2]) !== 'undefined' || key2 in this.map || - typeof key3 === 'undefined') { - if (xref) { - return xref.fetchIfRefAsync(value); - } - return Promise.resolve(value); - } - value = this.map[key3] || null; - if (xref) { - return xref.fetchIfRefAsync(value); - } - return Promise.resolve(value); - }, - - // Same as get(), but dereferences all elements if the result is an Array. - getArray: function Dict_getArray(key1, key2, key3) { - var value = this.get(key1, key2, key3); - var xref = this.xref; - if (!isArray(value) || !xref) { - return value; - } - value = value.slice(); // Ensure that we don't modify the Dict data. - for (var i = 0, ii = value.length; i < ii; i++) { - if (!isRef(value[i])) { - continue; - } - value[i] = xref.fetch(value[i]); - } - return value; - }, - - // no dereferencing - getRaw: function Dict_getRaw(key) { - return this.map[key]; - }, - - // creates new map and dereferences all Refs - getAll: function Dict_getAll() { - var all = Object.create(null); - var queue = null; - var key, obj; - for (key in this.map) { - obj = this.get(key); - if (obj instanceof Dict) { - if (isRecursionAllowedFor(obj)) { - (queue || (queue = [])).push({target: all, key: key, obj: obj}); - } else { - all[key] = this.getRaw(key); - } - } else { - all[key] = obj; - } - } - if (!queue) { - return all; - } - - // trying to take cyclic references into the account - var processed = Object.create(null); - while (queue.length > 0) { - var item = queue.shift(); - var itemObj = item.obj; - var objId = itemObj.objId; - if (objId && objId in processed) { - item.target[item.key] = processed[objId]; - continue; - } - var dereferenced = Object.create(null); - for (key in itemObj.map) { - obj = itemObj.get(key); - if (obj instanceof Dict) { - if (isRecursionAllowedFor(obj)) { - queue.push({target: dereferenced, key: key, obj: obj}); - } else { - dereferenced[key] = itemObj.getRaw(key); - } - } else { - dereferenced[key] = obj; - } - } - if (objId) { - processed[objId] = dereferenced; - } - item.target[item.key] = dereferenced; - } - return all; - }, - - getKeys: function Dict_getKeys() { - return Object.keys(this.map); - }, - - set: function Dict_set(key, value) { - this.map[key] = value; - }, - - has: function Dict_has(key) { - return key in this.map; - }, - - forEach: function Dict_forEach(callback) { - for (var key in this.map) { - callback(key, this.get(key)); - } - } - }; - - Dict.empty = new Dict(null); - - Dict.merge = function Dict_merge(xref, dictArray) { - var mergedDict = new Dict(xref); - - for (var i = 0, ii = dictArray.length; i < ii; i++) { - var dict = dictArray[i]; - if (!isDict(dict)) { - continue; - } - for (var keyName in dict.map) { - if (mergedDict.map[keyName]) { - continue; - } - mergedDict.map[keyName] = dict.map[keyName]; - } - } - return mergedDict; - }; - - return Dict; -})(); - -var Ref = (function RefClosure() { - function Ref(num, gen) { - this.num = num; - this.gen = gen; - } - - Ref.prototype = { - toString: function Ref_toString() { - // This function is hot, so we make the string as compact as possible. - // |this.gen| is almost always zero, so we treat that case specially. - var str = this.num + 'R'; - if (this.gen !== 0) { - str += this.gen; - } - return str; - } - }; - - return Ref; -})(); - -// The reference is identified by number and generation. -// This structure stores only one instance of the reference. -var RefSet = (function RefSetClosure() { - function RefSet() { - this.dict = {}; - } - - RefSet.prototype = { - has: function RefSet_has(ref) { - return ref.toString() in this.dict; - }, - - put: function RefSet_put(ref) { - this.dict[ref.toString()] = true; - }, - - remove: function RefSet_remove(ref) { - delete this.dict[ref.toString()]; - } - }; - - return RefSet; -})(); - -var RefSetCache = (function RefSetCacheClosure() { - function RefSetCache() { - this.dict = Object.create(null); - } - - RefSetCache.prototype = { - get: function RefSetCache_get(ref) { - return this.dict[ref.toString()]; - }, - - has: function RefSetCache_has(ref) { - return ref.toString() in this.dict; - }, - - put: function RefSetCache_put(ref, obj) { - this.dict[ref.toString()] = obj; - }, - - putAlias: function RefSetCache_putAlias(ref, aliasRef) { - this.dict[ref.toString()] = this.get(aliasRef); - }, - - forEach: function RefSetCache_forEach(fn, thisArg) { - for (var i in this.dict) { - fn.call(thisArg, this.dict[i]); - } - }, - - clear: function RefSetCache_clear() { - this.dict = Object.create(null); - } - }; - - return RefSetCache; -})(); - -function isName(v) { - return v instanceof Name; -} - -function isCmd(v, cmd) { - return v instanceof Cmd && (cmd === undefined || v.cmd === cmd); -} - -function isDict(v, type) { - if (!(v instanceof Dict)) { - return false; - } - if (!type) { - return true; - } - var dictType = v.get('Type'); - return isName(dictType) && dictType.name === type; -} - -function isRef(v) { - return v instanceof Ref; -} - -function isStream(v) { - return typeof v === 'object' && v !== null && v.getBytes !== undefined; -} - -exports.Cmd = Cmd; -exports.Dict = Dict; -exports.Name = Name; -exports.Ref = Ref; -exports.RefSet = RefSet; -exports.RefSetCache = RefSetCache; -exports.isCmd = isCmd; -exports.isDict = isDict; -exports.isName = isName; -exports.isRef = isRef; -exports.isStream = isStream; -})); - - -(function (root, factory) { - { - factory((root.pdfjsCoreStream = {}), root.pdfjsSharedUtil, - root.pdfjsCorePrimitives, root.pdfjsCoreJbig2, root.pdfjsCoreJpg, - root.pdfjsCoreJpx); - } -}(this, function (exports, sharedUtil, corePrimitives, coreJbig2, coreJpg, - coreJpx) { - -var Util = sharedUtil.Util; -var error = sharedUtil.error; -var info = sharedUtil.info; -var isArray = sharedUtil.isArray; -var shadow = sharedUtil.shadow; -var warn = sharedUtil.warn; -var Dict = corePrimitives.Dict; -var Jbig2Image = coreJbig2.Jbig2Image; -var JpegImage = coreJpg.JpegImage; -var JpxImage = coreJpx.JpxImage; - -var coreParser; // see _setCoreParser below -var EOF; // = coreParser.EOF; -var Lexer; // = coreParser.Lexer; - -var coreColorSpace; // see _setCoreColorSpace below -var ColorSpace; // = coreColorSpace.ColorSpace; - -var Stream = (function StreamClosure() { - function Stream(arrayBuffer, start, length, dict) { - this.bytes = (arrayBuffer instanceof Uint8Array ? - arrayBuffer : new Uint8Array(arrayBuffer)); - this.start = start || 0; - this.pos = this.start; - this.end = (start + length) || this.bytes.length; - this.dict = dict; - } - - // required methods for a stream. if a particular stream does not - // implement these, an error should be thrown - Stream.prototype = { - get length() { - return this.end - this.start; - }, - get isEmpty() { - return this.length === 0; - }, - getByte: function Stream_getByte() { - if (this.pos >= this.end) { - return -1; - } - return this.bytes[this.pos++]; - }, - getUint16: function Stream_getUint16() { - var b0 = this.getByte(); - var b1 = this.getByte(); - if (b0 === -1 || b1 === -1) { - return -1; - } - return (b0 << 8) + b1; - }, - getInt32: function Stream_getInt32() { - var b0 = this.getByte(); - var b1 = this.getByte(); - var b2 = this.getByte(); - var b3 = this.getByte(); - return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3; - }, - // returns subarray of original buffer - // should only be read - getBytes: function Stream_getBytes(length) { - var bytes = this.bytes; - var pos = this.pos; - var strEnd = this.end; - - if (!length) { - return bytes.subarray(pos, strEnd); - } - var end = pos + length; - if (end > strEnd) { - end = strEnd; - } - this.pos = end; - return bytes.subarray(pos, end); - }, - peekByte: function Stream_peekByte() { - var peekedByte = this.getByte(); - this.pos--; - return peekedByte; - }, - peekBytes: function Stream_peekBytes(length) { - var bytes = this.getBytes(length); - this.pos -= bytes.length; - return bytes; - }, - skip: function Stream_skip(n) { - if (!n) { - n = 1; - } - this.pos += n; - }, - reset: function Stream_reset() { - this.pos = this.start; - }, - moveStart: function Stream_moveStart() { - this.start = this.pos; - }, - makeSubStream: function Stream_makeSubStream(start, length, dict) { - return new Stream(this.bytes.buffer, start, length, dict); - }, - isStream: true - }; - - return Stream; -})(); - -var StringStream = (function StringStreamClosure() { - function StringStream(str) { - var length = str.length; - var bytes = new Uint8Array(length); - for (var n = 0; n < length; ++n) { - bytes[n] = str.charCodeAt(n); - } - Stream.call(this, bytes); - } - - StringStream.prototype = Stream.prototype; - - return StringStream; -})(); - -// super class for the decoding streams -var DecodeStream = (function DecodeStreamClosure() { - // Lots of DecodeStreams are created whose buffers are never used. For these - // we share a single empty buffer. This is (a) space-efficient and (b) avoids - // having special cases that would be required if we used |null| for an empty - // buffer. - var emptyBuffer = new Uint8Array(0); - - function DecodeStream(maybeMinBufferLength) { - this.pos = 0; - this.bufferLength = 0; - this.eof = false; - this.buffer = emptyBuffer; - this.minBufferLength = 512; - if (maybeMinBufferLength) { - // Compute the first power of two that is as big as maybeMinBufferLength. - while (this.minBufferLength < maybeMinBufferLength) { - this.minBufferLength *= 2; - } - } - } - - DecodeStream.prototype = { - get isEmpty() { - while (!this.eof && this.bufferLength === 0) { - this.readBlock(); - } - return this.bufferLength === 0; - }, - ensureBuffer: function DecodeStream_ensureBuffer(requested) { - var buffer = this.buffer; - if (requested <= buffer.byteLength) { - return buffer; - } - var size = this.minBufferLength; - while (size < requested) { - size *= 2; - } - var buffer2 = new Uint8Array(size); - buffer2.set(buffer); - return (this.buffer = buffer2); - }, - getByte: function DecodeStream_getByte() { - var pos = this.pos; - while (this.bufferLength <= pos) { - if (this.eof) { - return -1; - } - this.readBlock(); - } - return this.buffer[this.pos++]; - }, - getUint16: function DecodeStream_getUint16() { - var b0 = this.getByte(); - var b1 = this.getByte(); - if (b0 === -1 || b1 === -1) { - return -1; - } - return (b0 << 8) + b1; - }, - getInt32: function DecodeStream_getInt32() { - var b0 = this.getByte(); - var b1 = this.getByte(); - var b2 = this.getByte(); - var b3 = this.getByte(); - return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3; - }, - getBytes: function DecodeStream_getBytes(length) { - var end, pos = this.pos; - - if (length) { - this.ensureBuffer(pos + length); - end = pos + length; - - while (!this.eof && this.bufferLength < end) { - this.readBlock(); - } - var bufEnd = this.bufferLength; - if (end > bufEnd) { - end = bufEnd; - } - } else { - while (!this.eof) { - this.readBlock(); - } - end = this.bufferLength; - } - - this.pos = end; - return this.buffer.subarray(pos, end); - }, - peekByte: function DecodeStream_peekByte() { - var peekedByte = this.getByte(); - this.pos--; - return peekedByte; - }, - peekBytes: function DecodeStream_peekBytes(length) { - var bytes = this.getBytes(length); - this.pos -= bytes.length; - return bytes; - }, - makeSubStream: function DecodeStream_makeSubStream(start, length, dict) { - var end = start + length; - while (this.bufferLength <= end && !this.eof) { - this.readBlock(); - } - return new Stream(this.buffer, start, length, dict); - }, - skip: function DecodeStream_skip(n) { - if (!n) { - n = 1; - } - this.pos += n; - }, - reset: function DecodeStream_reset() { - this.pos = 0; - }, - getBaseStreams: function DecodeStream_getBaseStreams() { - if (this.str && this.str.getBaseStreams) { - return this.str.getBaseStreams(); - } - return []; - } - }; - - return DecodeStream; -})(); - -var StreamsSequenceStream = (function StreamsSequenceStreamClosure() { - function StreamsSequenceStream(streams) { - this.streams = streams; - DecodeStream.call(this, /* maybeLength = */ null); - } - - StreamsSequenceStream.prototype = Object.create(DecodeStream.prototype); - - StreamsSequenceStream.prototype.readBlock = - function streamSequenceStreamReadBlock() { - - var streams = this.streams; - if (streams.length === 0) { - this.eof = true; - return; - } - var stream = streams.shift(); - var chunk = stream.getBytes(); - var bufferLength = this.bufferLength; - var newLength = bufferLength + chunk.length; - var buffer = this.ensureBuffer(newLength); - buffer.set(chunk, bufferLength); - this.bufferLength = newLength; - }; - - StreamsSequenceStream.prototype.getBaseStreams = - function StreamsSequenceStream_getBaseStreams() { - - var baseStreams = []; - for (var i = 0, ii = this.streams.length; i < ii; i++) { - var stream = this.streams[i]; - if (stream.getBaseStreams) { - Util.appendToArray(baseStreams, stream.getBaseStreams()); - } - } - return baseStreams; - }; - - return StreamsSequenceStream; -})(); - -var FlateStream = (function FlateStreamClosure() { - var codeLenCodeMap = new Int32Array([ - 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 - ]); - - var lengthDecode = new Int32Array([ - 0x00003, 0x00004, 0x00005, 0x00006, 0x00007, 0x00008, 0x00009, 0x0000a, - 0x1000b, 0x1000d, 0x1000f, 0x10011, 0x20013, 0x20017, 0x2001b, 0x2001f, - 0x30023, 0x3002b, 0x30033, 0x3003b, 0x40043, 0x40053, 0x40063, 0x40073, - 0x50083, 0x500a3, 0x500c3, 0x500e3, 0x00102, 0x00102, 0x00102 - ]); - - var distDecode = new Int32Array([ - 0x00001, 0x00002, 0x00003, 0x00004, 0x10005, 0x10007, 0x20009, 0x2000d, - 0x30011, 0x30019, 0x40021, 0x40031, 0x50041, 0x50061, 0x60081, 0x600c1, - 0x70101, 0x70181, 0x80201, 0x80301, 0x90401, 0x90601, 0xa0801, 0xa0c01, - 0xb1001, 0xb1801, 0xc2001, 0xc3001, 0xd4001, 0xd6001 - ]); - - var fixedLitCodeTab = [new Int32Array([ - 0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c0, - 0x70108, 0x80060, 0x80020, 0x900a0, 0x80000, 0x80080, 0x80040, 0x900e0, - 0x70104, 0x80058, 0x80018, 0x90090, 0x70114, 0x80078, 0x80038, 0x900d0, - 0x7010c, 0x80068, 0x80028, 0x900b0, 0x80008, 0x80088, 0x80048, 0x900f0, - 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c8, - 0x7010a, 0x80064, 0x80024, 0x900a8, 0x80004, 0x80084, 0x80044, 0x900e8, - 0x70106, 0x8005c, 0x8001c, 0x90098, 0x70116, 0x8007c, 0x8003c, 0x900d8, - 0x7010e, 0x8006c, 0x8002c, 0x900b8, 0x8000c, 0x8008c, 0x8004c, 0x900f8, - 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c4, - 0x70109, 0x80062, 0x80022, 0x900a4, 0x80002, 0x80082, 0x80042, 0x900e4, - 0x70105, 0x8005a, 0x8001a, 0x90094, 0x70115, 0x8007a, 0x8003a, 0x900d4, - 0x7010d, 0x8006a, 0x8002a, 0x900b4, 0x8000a, 0x8008a, 0x8004a, 0x900f4, - 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cc, - 0x7010b, 0x80066, 0x80026, 0x900ac, 0x80006, 0x80086, 0x80046, 0x900ec, - 0x70107, 0x8005e, 0x8001e, 0x9009c, 0x70117, 0x8007e, 0x8003e, 0x900dc, - 0x7010f, 0x8006e, 0x8002e, 0x900bc, 0x8000e, 0x8008e, 0x8004e, 0x900fc, - 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c2, - 0x70108, 0x80061, 0x80021, 0x900a2, 0x80001, 0x80081, 0x80041, 0x900e2, - 0x70104, 0x80059, 0x80019, 0x90092, 0x70114, 0x80079, 0x80039, 0x900d2, - 0x7010c, 0x80069, 0x80029, 0x900b2, 0x80009, 0x80089, 0x80049, 0x900f2, - 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900ca, - 0x7010a, 0x80065, 0x80025, 0x900aa, 0x80005, 0x80085, 0x80045, 0x900ea, - 0x70106, 0x8005d, 0x8001d, 0x9009a, 0x70116, 0x8007d, 0x8003d, 0x900da, - 0x7010e, 0x8006d, 0x8002d, 0x900ba, 0x8000d, 0x8008d, 0x8004d, 0x900fa, - 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c6, - 0x70109, 0x80063, 0x80023, 0x900a6, 0x80003, 0x80083, 0x80043, 0x900e6, - 0x70105, 0x8005b, 0x8001b, 0x90096, 0x70115, 0x8007b, 0x8003b, 0x900d6, - 0x7010d, 0x8006b, 0x8002b, 0x900b6, 0x8000b, 0x8008b, 0x8004b, 0x900f6, - 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900ce, - 0x7010b, 0x80067, 0x80027, 0x900ae, 0x80007, 0x80087, 0x80047, 0x900ee, - 0x70107, 0x8005f, 0x8001f, 0x9009e, 0x70117, 0x8007f, 0x8003f, 0x900de, - 0x7010f, 0x8006f, 0x8002f, 0x900be, 0x8000f, 0x8008f, 0x8004f, 0x900fe, - 0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c1, - 0x70108, 0x80060, 0x80020, 0x900a1, 0x80000, 0x80080, 0x80040, 0x900e1, - 0x70104, 0x80058, 0x80018, 0x90091, 0x70114, 0x80078, 0x80038, 0x900d1, - 0x7010c, 0x80068, 0x80028, 0x900b1, 0x80008, 0x80088, 0x80048, 0x900f1, - 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c9, - 0x7010a, 0x80064, 0x80024, 0x900a9, 0x80004, 0x80084, 0x80044, 0x900e9, - 0x70106, 0x8005c, 0x8001c, 0x90099, 0x70116, 0x8007c, 0x8003c, 0x900d9, - 0x7010e, 0x8006c, 0x8002c, 0x900b9, 0x8000c, 0x8008c, 0x8004c, 0x900f9, - 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c5, - 0x70109, 0x80062, 0x80022, 0x900a5, 0x80002, 0x80082, 0x80042, 0x900e5, - 0x70105, 0x8005a, 0x8001a, 0x90095, 0x70115, 0x8007a, 0x8003a, 0x900d5, - 0x7010d, 0x8006a, 0x8002a, 0x900b5, 0x8000a, 0x8008a, 0x8004a, 0x900f5, - 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cd, - 0x7010b, 0x80066, 0x80026, 0x900ad, 0x80006, 0x80086, 0x80046, 0x900ed, - 0x70107, 0x8005e, 0x8001e, 0x9009d, 0x70117, 0x8007e, 0x8003e, 0x900dd, - 0x7010f, 0x8006e, 0x8002e, 0x900bd, 0x8000e, 0x8008e, 0x8004e, 0x900fd, - 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c3, - 0x70108, 0x80061, 0x80021, 0x900a3, 0x80001, 0x80081, 0x80041, 0x900e3, - 0x70104, 0x80059, 0x80019, 0x90093, 0x70114, 0x80079, 0x80039, 0x900d3, - 0x7010c, 0x80069, 0x80029, 0x900b3, 0x80009, 0x80089, 0x80049, 0x900f3, - 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900cb, - 0x7010a, 0x80065, 0x80025, 0x900ab, 0x80005, 0x80085, 0x80045, 0x900eb, - 0x70106, 0x8005d, 0x8001d, 0x9009b, 0x70116, 0x8007d, 0x8003d, 0x900db, - 0x7010e, 0x8006d, 0x8002d, 0x900bb, 0x8000d, 0x8008d, 0x8004d, 0x900fb, - 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c7, - 0x70109, 0x80063, 0x80023, 0x900a7, 0x80003, 0x80083, 0x80043, 0x900e7, - 0x70105, 0x8005b, 0x8001b, 0x90097, 0x70115, 0x8007b, 0x8003b, 0x900d7, - 0x7010d, 0x8006b, 0x8002b, 0x900b7, 0x8000b, 0x8008b, 0x8004b, 0x900f7, - 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900cf, - 0x7010b, 0x80067, 0x80027, 0x900af, 0x80007, 0x80087, 0x80047, 0x900ef, - 0x70107, 0x8005f, 0x8001f, 0x9009f, 0x70117, 0x8007f, 0x8003f, 0x900df, - 0x7010f, 0x8006f, 0x8002f, 0x900bf, 0x8000f, 0x8008f, 0x8004f, 0x900ff - ]), 9]; - - var fixedDistCodeTab = [new Int32Array([ - 0x50000, 0x50010, 0x50008, 0x50018, 0x50004, 0x50014, 0x5000c, 0x5001c, - 0x50002, 0x50012, 0x5000a, 0x5001a, 0x50006, 0x50016, 0x5000e, 0x00000, - 0x50001, 0x50011, 0x50009, 0x50019, 0x50005, 0x50015, 0x5000d, 0x5001d, - 0x50003, 0x50013, 0x5000b, 0x5001b, 0x50007, 0x50017, 0x5000f, 0x00000 - ]), 5]; - - function FlateStream(str, maybeLength) { - this.str = str; - this.dict = str.dict; - - var cmf = str.getByte(); - var flg = str.getByte(); - if (cmf === -1 || flg === -1) { - error('Invalid header in flate stream: ' + cmf + ', ' + flg); - } - if ((cmf & 0x0f) !== 0x08) { - error('Unknown compression method in flate stream: ' + cmf + ', ' + flg); - } - if ((((cmf << 8) + flg) % 31) !== 0) { - error('Bad FCHECK in flate stream: ' + cmf + ', ' + flg); - } - if (flg & 0x20) { - error('FDICT bit set in flate stream: ' + cmf + ', ' + flg); - } - - this.codeSize = 0; - this.codeBuf = 0; - - DecodeStream.call(this, maybeLength); - } - - FlateStream.prototype = Object.create(DecodeStream.prototype); - - FlateStream.prototype.getBits = function FlateStream_getBits(bits) { - var str = this.str; - var codeSize = this.codeSize; - var codeBuf = this.codeBuf; - - var b; - while (codeSize < bits) { - if ((b = str.getByte()) === -1) { - error('Bad encoding in flate stream'); - } - codeBuf |= b << codeSize; - codeSize += 8; - } - b = codeBuf & ((1 << bits) - 1); - this.codeBuf = codeBuf >> bits; - this.codeSize = codeSize -= bits; - - return b; - }; - - FlateStream.prototype.getCode = function FlateStream_getCode(table) { - var str = this.str; - var codes = table[0]; - var maxLen = table[1]; - var codeSize = this.codeSize; - var codeBuf = this.codeBuf; - - var b; - while (codeSize < maxLen) { - if ((b = str.getByte()) === -1) { - // premature end of stream. code might however still be valid. - // codeSize < codeLen check below guards against incomplete codeVal. - break; - } - codeBuf |= (b << codeSize); - codeSize += 8; - } - var code = codes[codeBuf & ((1 << maxLen) - 1)]; - var codeLen = code >> 16; - var codeVal = code & 0xffff; - if (codeLen < 1 || codeSize < codeLen) { - error('Bad encoding in flate stream'); - } - this.codeBuf = (codeBuf >> codeLen); - this.codeSize = (codeSize - codeLen); - return codeVal; - }; - - FlateStream.prototype.generateHuffmanTable = - function flateStreamGenerateHuffmanTable(lengths) { - var n = lengths.length; - - // find max code length - var maxLen = 0; - var i; - for (i = 0; i < n; ++i) { - if (lengths[i] > maxLen) { - maxLen = lengths[i]; - } - } - - // build the table - var size = 1 << maxLen; - var codes = new Int32Array(size); - for (var len = 1, code = 0, skip = 2; - len <= maxLen; - ++len, code <<= 1, skip <<= 1) { - for (var val = 0; val < n; ++val) { - if (lengths[val] === len) { - // bit-reverse the code - var code2 = 0; - var t = code; - for (i = 0; i < len; ++i) { - code2 = (code2 << 1) | (t & 1); - t >>= 1; - } - - // fill the table entries - for (i = code2; i < size; i += skip) { - codes[i] = (len << 16) | val; - } - ++code; - } - } - } - - return [codes, maxLen]; - }; - - FlateStream.prototype.readBlock = function FlateStream_readBlock() { - var buffer, len; - var str = this.str; - // read block header - var hdr = this.getBits(3); - if (hdr & 1) { - this.eof = true; - } - hdr >>= 1; - - if (hdr === 0) { // uncompressed block - var b; - - if ((b = str.getByte()) === -1) { - error('Bad block header in flate stream'); - } - var blockLen = b; - if ((b = str.getByte()) === -1) { - error('Bad block header in flate stream'); - } - blockLen |= (b << 8); - if ((b = str.getByte()) === -1) { - error('Bad block header in flate stream'); - } - var check = b; - if ((b = str.getByte()) === -1) { - error('Bad block header in flate stream'); - } - check |= (b << 8); - if (check !== (~blockLen & 0xffff) && - (blockLen !== 0 || check !== 0)) { - // Ignoring error for bad "empty" block (see issue 1277) - error('Bad uncompressed block length in flate stream'); - } - - this.codeBuf = 0; - this.codeSize = 0; - - var bufferLength = this.bufferLength; - buffer = this.ensureBuffer(bufferLength + blockLen); - var end = bufferLength + blockLen; - this.bufferLength = end; - if (blockLen === 0) { - if (str.peekByte() === -1) { - this.eof = true; - } - } else { - for (var n = bufferLength; n < end; ++n) { - if ((b = str.getByte()) === -1) { - this.eof = true; - break; - } - buffer[n] = b; - } - } - return; - } - - var litCodeTable; - var distCodeTable; - if (hdr === 1) { // compressed block, fixed codes - litCodeTable = fixedLitCodeTab; - distCodeTable = fixedDistCodeTab; - } else if (hdr === 2) { // compressed block, dynamic codes - var numLitCodes = this.getBits(5) + 257; - var numDistCodes = this.getBits(5) + 1; - var numCodeLenCodes = this.getBits(4) + 4; - - // build the code lengths code table - var codeLenCodeLengths = new Uint8Array(codeLenCodeMap.length); - - var i; - for (i = 0; i < numCodeLenCodes; ++i) { - codeLenCodeLengths[codeLenCodeMap[i]] = this.getBits(3); - } - var codeLenCodeTab = this.generateHuffmanTable(codeLenCodeLengths); - - // build the literal and distance code tables - len = 0; - i = 0; - var codes = numLitCodes + numDistCodes; - var codeLengths = new Uint8Array(codes); - var bitsLength, bitsOffset, what; - while (i < codes) { - var code = this.getCode(codeLenCodeTab); - if (code === 16) { - bitsLength = 2; bitsOffset = 3; what = len; - } else if (code === 17) { - bitsLength = 3; bitsOffset = 3; what = (len = 0); - } else if (code === 18) { - bitsLength = 7; bitsOffset = 11; what = (len = 0); - } else { - codeLengths[i++] = len = code; - continue; - } - - var repeatLength = this.getBits(bitsLength) + bitsOffset; - while (repeatLength-- > 0) { - codeLengths[i++] = what; - } - } - - litCodeTable = - this.generateHuffmanTable(codeLengths.subarray(0, numLitCodes)); - distCodeTable = - this.generateHuffmanTable(codeLengths.subarray(numLitCodes, codes)); - } else { - error('Unknown block type in flate stream'); - } - - buffer = this.buffer; - var limit = buffer ? buffer.length : 0; - var pos = this.bufferLength; - while (true) { - var code1 = this.getCode(litCodeTable); - if (code1 < 256) { - if (pos + 1 >= limit) { - buffer = this.ensureBuffer(pos + 1); - limit = buffer.length; - } - buffer[pos++] = code1; - continue; - } - if (code1 === 256) { - this.bufferLength = pos; - return; - } - code1 -= 257; - code1 = lengthDecode[code1]; - var code2 = code1 >> 16; - if (code2 > 0) { - code2 = this.getBits(code2); - } - len = (code1 & 0xffff) + code2; - code1 = this.getCode(distCodeTable); - code1 = distDecode[code1]; - code2 = code1 >> 16; - if (code2 > 0) { - code2 = this.getBits(code2); - } - var dist = (code1 & 0xffff) + code2; - if (pos + len >= limit) { - buffer = this.ensureBuffer(pos + len); - limit = buffer.length; - } - for (var k = 0; k < len; ++k, ++pos) { - buffer[pos] = buffer[pos - dist]; - } - } - }; - - return FlateStream; -})(); - -var PredictorStream = (function PredictorStreamClosure() { - function PredictorStream(str, maybeLength, params) { - var predictor = this.predictor = params.get('Predictor') || 1; - - if (predictor <= 1) { - return str; // no prediction - } - if (predictor !== 2 && (predictor < 10 || predictor > 15)) { - error('Unsupported predictor: ' + predictor); - } - - if (predictor === 2) { - this.readBlock = this.readBlockTiff; - } else { - this.readBlock = this.readBlockPng; - } - - this.str = str; - this.dict = str.dict; - - var colors = this.colors = params.get('Colors') || 1; - var bits = this.bits = params.get('BitsPerComponent') || 8; - var columns = this.columns = params.get('Columns') || 1; - - this.pixBytes = (colors * bits + 7) >> 3; - this.rowBytes = (columns * colors * bits + 7) >> 3; - - DecodeStream.call(this, maybeLength); - return this; - } - - PredictorStream.prototype = Object.create(DecodeStream.prototype); - - PredictorStream.prototype.readBlockTiff = - function predictorStreamReadBlockTiff() { - var rowBytes = this.rowBytes; - - var bufferLength = this.bufferLength; - var buffer = this.ensureBuffer(bufferLength + rowBytes); - - var bits = this.bits; - var colors = this.colors; - - var rawBytes = this.str.getBytes(rowBytes); - this.eof = !rawBytes.length; - if (this.eof) { - return; - } - - var inbuf = 0, outbuf = 0; - var inbits = 0, outbits = 0; - var pos = bufferLength; - var i; - - if (bits === 1) { - for (i = 0; i < rowBytes; ++i) { - var c = rawBytes[i]; - inbuf = (inbuf << 8) | c; - // bitwise addition is exclusive or - // first shift inbuf and then add - buffer[pos++] = (c ^ (inbuf >> colors)) & 0xFF; - // truncate inbuf (assumes colors < 16) - inbuf &= 0xFFFF; - } - } else if (bits === 8) { - for (i = 0; i < colors; ++i) { - buffer[pos++] = rawBytes[i]; - } - for (; i < rowBytes; ++i) { - buffer[pos] = buffer[pos - colors] + rawBytes[i]; - pos++; - } - } else { - var compArray = new Uint8Array(colors + 1); - var bitMask = (1 << bits) - 1; - var j = 0, k = bufferLength; - var columns = this.columns; - for (i = 0; i < columns; ++i) { - for (var kk = 0; kk < colors; ++kk) { - if (inbits < bits) { - inbuf = (inbuf << 8) | (rawBytes[j++] & 0xFF); - inbits += 8; - } - compArray[kk] = (compArray[kk] + - (inbuf >> (inbits - bits))) & bitMask; - inbits -= bits; - outbuf = (outbuf << bits) | compArray[kk]; - outbits += bits; - if (outbits >= 8) { - buffer[k++] = (outbuf >> (outbits - 8)) & 0xFF; - outbits -= 8; - } - } - } - if (outbits > 0) { - buffer[k++] = (outbuf << (8 - outbits)) + - (inbuf & ((1 << (8 - outbits)) - 1)); - } - } - this.bufferLength += rowBytes; - }; - - PredictorStream.prototype.readBlockPng = - function predictorStreamReadBlockPng() { - - var rowBytes = this.rowBytes; - var pixBytes = this.pixBytes; - - var predictor = this.str.getByte(); - var rawBytes = this.str.getBytes(rowBytes); - this.eof = !rawBytes.length; - if (this.eof) { - return; - } - - var bufferLength = this.bufferLength; - var buffer = this.ensureBuffer(bufferLength + rowBytes); - - var prevRow = buffer.subarray(bufferLength - rowBytes, bufferLength); - if (prevRow.length === 0) { - prevRow = new Uint8Array(rowBytes); - } - - var i, j = bufferLength, up, c; - switch (predictor) { - case 0: - for (i = 0; i < rowBytes; ++i) { - buffer[j++] = rawBytes[i]; - } - break; - case 1: - for (i = 0; i < pixBytes; ++i) { - buffer[j++] = rawBytes[i]; - } - for (; i < rowBytes; ++i) { - buffer[j] = (buffer[j - pixBytes] + rawBytes[i]) & 0xFF; - j++; - } - break; - case 2: - for (i = 0; i < rowBytes; ++i) { - buffer[j++] = (prevRow[i] + rawBytes[i]) & 0xFF; - } - break; - case 3: - for (i = 0; i < pixBytes; ++i) { - buffer[j++] = (prevRow[i] >> 1) + rawBytes[i]; - } - for (; i < rowBytes; ++i) { - buffer[j] = (((prevRow[i] + buffer[j - pixBytes]) >> 1) + - rawBytes[i]) & 0xFF; - j++; - } - break; - case 4: - // we need to save the up left pixels values. the simplest way - // is to create a new buffer - for (i = 0; i < pixBytes; ++i) { - up = prevRow[i]; - c = rawBytes[i]; - buffer[j++] = up + c; - } - for (; i < rowBytes; ++i) { - up = prevRow[i]; - var upLeft = prevRow[i - pixBytes]; - var left = buffer[j - pixBytes]; - var p = left + up - upLeft; - - var pa = p - left; - if (pa < 0) { - pa = -pa; - } - var pb = p - up; - if (pb < 0) { - pb = -pb; - } - var pc = p - upLeft; - if (pc < 0) { - pc = -pc; - } - - c = rawBytes[i]; - if (pa <= pb && pa <= pc) { - buffer[j++] = left + c; - } else if (pb <= pc) { - buffer[j++] = up + c; - } else { - buffer[j++] = upLeft + c; - } - } - break; - default: - error('Unsupported predictor: ' + predictor); - } - this.bufferLength += rowBytes; - }; - - return PredictorStream; -})(); - -/** - * Depending on the type of JPEG a JpegStream is handled in different ways. For - * JPEG's that are supported natively such as DeviceGray and DeviceRGB the image - * data is stored and then loaded by the browser. For unsupported JPEG's we use - * a library to decode these images and the stream behaves like all the other - * DecodeStreams. - */ -var JpegStream = (function JpegStreamClosure() { - function JpegStream(stream, maybeLength, dict, xref) { - // Some images may contain 'junk' before the SOI (start-of-image) marker. - // Note: this seems to mainly affect inline images. - var ch; - while ((ch = stream.getByte()) !== -1) { - if (ch === 0xFF) { // Find the first byte of the SOI marker (0xFFD8). - stream.skip(-1); // Reset the stream position to the SOI. - break; - } - } - this.stream = stream; - this.maybeLength = maybeLength; - this.dict = dict; - - DecodeStream.call(this, maybeLength); - } - - JpegStream.prototype = Object.create(DecodeStream.prototype); - - Object.defineProperty(JpegStream.prototype, 'bytes', { - get: function JpegStream_bytes() { - // If this.maybeLength is null, we'll get the entire stream. - return shadow(this, 'bytes', this.stream.getBytes(this.maybeLength)); - }, - configurable: true - }); - - JpegStream.prototype.ensureBuffer = function JpegStream_ensureBuffer(req) { - if (this.bufferLength) { - return; - } - try { - var jpegImage = new JpegImage(); - - // checking if values needs to be transformed before conversion - if (this.forceRGB && this.dict && isArray(this.dict.get('Decode'))) { - var decodeArr = this.dict.get('Decode'); - var bitsPerComponent = this.dict.get('BitsPerComponent') || 8; - var decodeArrLength = decodeArr.length; - var transform = new Int32Array(decodeArrLength); - var transformNeeded = false; - var maxValue = (1 << bitsPerComponent) - 1; - for (var i = 0; i < decodeArrLength; i += 2) { - transform[i] = ((decodeArr[i + 1] - decodeArr[i]) * 256) | 0; - transform[i + 1] = (decodeArr[i] * maxValue) | 0; - if (transform[i] !== 256 || transform[i + 1] !== 0) { - transformNeeded = true; - } - } - if (transformNeeded) { - jpegImage.decodeTransform = transform; - } - } - - jpegImage.parse(this.bytes); - var data = jpegImage.getData(this.drawWidth, this.drawHeight, - this.forceRGB); - this.buffer = data; - this.bufferLength = data.length; - this.eof = true; - } catch (e) { - error('JPEG error: ' + e); - } - }; - - JpegStream.prototype.getBytes = function JpegStream_getBytes(length) { - this.ensureBuffer(); - return this.buffer; - }; - - JpegStream.prototype.getIR = function JpegStream_getIR() { - return PDFJS.createObjectURL(this.bytes, 'image/jpeg'); - }; - /** - * Checks if the image can be decoded and displayed by the browser without any - * further processing such as color space conversions. - */ - JpegStream.prototype.isNativelySupported = - function JpegStream_isNativelySupported(xref, res) { - var cs = ColorSpace.parse(this.dict.get('ColorSpace', 'CS'), xref, res); - return (cs.name === 'DeviceGray' || cs.name === 'DeviceRGB') && - cs.isDefaultDecode(this.dict.get('Decode', 'D')); - }; - /** - * Checks if the image can be decoded by the browser. - */ - JpegStream.prototype.isNativelyDecodable = - function JpegStream_isNativelyDecodable(xref, res) { - var cs = ColorSpace.parse(this.dict.get('ColorSpace', 'CS'), xref, res); - return (cs.numComps === 1 || cs.numComps === 3) && - cs.isDefaultDecode(this.dict.get('Decode', 'D')); - }; - - return JpegStream; -})(); - -/** - * For JPEG 2000's we use a library to decode these images and - * the stream behaves like all the other DecodeStreams. - */ -var JpxStream = (function JpxStreamClosure() { - function JpxStream(stream, maybeLength, dict) { - this.stream = stream; - this.maybeLength = maybeLength; - this.dict = dict; - - DecodeStream.call(this, maybeLength); - } - - JpxStream.prototype = Object.create(DecodeStream.prototype); - - Object.defineProperty(JpxStream.prototype, 'bytes', { - get: function JpxStream_bytes() { - // If this.maybeLength is null, we'll get the entire stream. - return shadow(this, 'bytes', this.stream.getBytes(this.maybeLength)); - }, - configurable: true - }); - - JpxStream.prototype.ensureBuffer = function JpxStream_ensureBuffer(req) { - if (this.bufferLength) { - return; - } - - var jpxImage = new JpxImage(); - jpxImage.parse(this.bytes); - - var width = jpxImage.width; - var height = jpxImage.height; - var componentsCount = jpxImage.componentsCount; - var tileCount = jpxImage.tiles.length; - if (tileCount === 1) { - this.buffer = jpxImage.tiles[0].items; - } else { - var data = new Uint8Array(width * height * componentsCount); - - for (var k = 0; k < tileCount; k++) { - var tileComponents = jpxImage.tiles[k]; - var tileWidth = tileComponents.width; - var tileHeight = tileComponents.height; - var tileLeft = tileComponents.left; - var tileTop = tileComponents.top; - - var src = tileComponents.items; - var srcPosition = 0; - var dataPosition = (width * tileTop + tileLeft) * componentsCount; - var imgRowSize = width * componentsCount; - var tileRowSize = tileWidth * componentsCount; - - for (var j = 0; j < tileHeight; j++) { - var rowBytes = src.subarray(srcPosition, srcPosition + tileRowSize); - data.set(rowBytes, dataPosition); - srcPosition += tileRowSize; - dataPosition += imgRowSize; - } - } - this.buffer = data; - } - this.bufferLength = this.buffer.length; - this.eof = true; - }; - - return JpxStream; -})(); - -/** - * For JBIG2's we use a library to decode these images and - * the stream behaves like all the other DecodeStreams. - */ -var Jbig2Stream = (function Jbig2StreamClosure() { - function Jbig2Stream(stream, maybeLength, dict) { - this.stream = stream; - this.maybeLength = maybeLength; - this.dict = dict; - - DecodeStream.call(this, maybeLength); - } - - Jbig2Stream.prototype = Object.create(DecodeStream.prototype); - - Object.defineProperty(Jbig2Stream.prototype, 'bytes', { - get: function Jbig2Stream_bytes() { - // If this.maybeLength is null, we'll get the entire stream. - return shadow(this, 'bytes', this.stream.getBytes(this.maybeLength)); - }, - configurable: true - }); - - Jbig2Stream.prototype.ensureBuffer = function Jbig2Stream_ensureBuffer(req) { - if (this.bufferLength) { - return; - } - - var jbig2Image = new Jbig2Image(); - - var chunks = [], xref = this.dict.xref; - var decodeParams = xref.fetchIfRef(this.dict.get('DecodeParms')); - - // According to the PDF specification, DecodeParms can be either - // a dictionary, or an array whose elements are dictionaries. - if (isArray(decodeParams)) { - if (decodeParams.length > 1) { - warn('JBIG2 - \'DecodeParms\' array with multiple elements ' + - 'not supported.'); - } - decodeParams = xref.fetchIfRef(decodeParams[0]); - } - if (decodeParams && decodeParams.has('JBIG2Globals')) { - var globalsStream = decodeParams.get('JBIG2Globals'); - var globals = globalsStream.getBytes(); - chunks.push({data: globals, start: 0, end: globals.length}); - } - chunks.push({data: this.bytes, start: 0, end: this.bytes.length}); - var data = jbig2Image.parseChunks(chunks); - var dataLength = data.length; - - // JBIG2 had black as 1 and white as 0, inverting the colors - for (var i = 0; i < dataLength; i++) { - data[i] ^= 0xFF; - } - - this.buffer = data; - this.bufferLength = dataLength; - this.eof = true; - }; - - return Jbig2Stream; -})(); - -var DecryptStream = (function DecryptStreamClosure() { - function DecryptStream(str, maybeLength, decrypt) { - this.str = str; - this.dict = str.dict; - this.decrypt = decrypt; - this.nextChunk = null; - this.initialized = false; - - DecodeStream.call(this, maybeLength); - } - - var chunkSize = 512; - - DecryptStream.prototype = Object.create(DecodeStream.prototype); - - DecryptStream.prototype.readBlock = function DecryptStream_readBlock() { - var chunk; - if (this.initialized) { - chunk = this.nextChunk; - } else { - chunk = this.str.getBytes(chunkSize); - this.initialized = true; - } - if (!chunk || chunk.length === 0) { - this.eof = true; - return; - } - this.nextChunk = this.str.getBytes(chunkSize); - var hasMoreData = this.nextChunk && this.nextChunk.length > 0; - - var decrypt = this.decrypt; - chunk = decrypt(chunk, !hasMoreData); - - var bufferLength = this.bufferLength; - var i, n = chunk.length; - var buffer = this.ensureBuffer(bufferLength + n); - for (i = 0; i < n; i++) { - buffer[bufferLength++] = chunk[i]; - } - this.bufferLength = bufferLength; - }; - - return DecryptStream; -})(); - -var Ascii85Stream = (function Ascii85StreamClosure() { - function Ascii85Stream(str, maybeLength) { - this.str = str; - this.dict = str.dict; - this.input = new Uint8Array(5); - - // Most streams increase in size when decoded, but Ascii85 streams - // typically shrink by ~20%. - if (maybeLength) { - maybeLength = 0.8 * maybeLength; - } - DecodeStream.call(this, maybeLength); - } - - Ascii85Stream.prototype = Object.create(DecodeStream.prototype); - - Ascii85Stream.prototype.readBlock = function Ascii85Stream_readBlock() { - var TILDA_CHAR = 0x7E; // '~' - var Z_LOWER_CHAR = 0x7A; // 'z' - var EOF = -1; - - var str = this.str; - - var c = str.getByte(); - while (Lexer.isSpace(c)) { - c = str.getByte(); - } - - if (c === EOF || c === TILDA_CHAR) { - this.eof = true; - return; - } - - var bufferLength = this.bufferLength, buffer; - var i; - - // special code for z - if (c === Z_LOWER_CHAR) { - buffer = this.ensureBuffer(bufferLength + 4); - for (i = 0; i < 4; ++i) { - buffer[bufferLength + i] = 0; - } - this.bufferLength += 4; - } else { - var input = this.input; - input[0] = c; - for (i = 1; i < 5; ++i) { - c = str.getByte(); - while (Lexer.isSpace(c)) { - c = str.getByte(); - } - - input[i] = c; - - if (c === EOF || c === TILDA_CHAR) { - break; - } - } - buffer = this.ensureBuffer(bufferLength + i - 1); - this.bufferLength += i - 1; - - // partial ending; - if (i < 5) { - for (; i < 5; ++i) { - input[i] = 0x21 + 84; - } - this.eof = true; - } - var t = 0; - for (i = 0; i < 5; ++i) { - t = t * 85 + (input[i] - 0x21); - } - - for (i = 3; i >= 0; --i) { - buffer[bufferLength + i] = t & 0xFF; - t >>= 8; - } - } - }; - - return Ascii85Stream; -})(); - -var AsciiHexStream = (function AsciiHexStreamClosure() { - function AsciiHexStream(str, maybeLength) { - this.str = str; - this.dict = str.dict; - - this.firstDigit = -1; - - // Most streams increase in size when decoded, but AsciiHex streams shrink - // by 50%. - if (maybeLength) { - maybeLength = 0.5 * maybeLength; - } - DecodeStream.call(this, maybeLength); - } - - AsciiHexStream.prototype = Object.create(DecodeStream.prototype); - - AsciiHexStream.prototype.readBlock = function AsciiHexStream_readBlock() { - var UPSTREAM_BLOCK_SIZE = 8000; - var bytes = this.str.getBytes(UPSTREAM_BLOCK_SIZE); - if (!bytes.length) { - this.eof = true; - return; - } - - var maxDecodeLength = (bytes.length + 1) >> 1; - var buffer = this.ensureBuffer(this.bufferLength + maxDecodeLength); - var bufferLength = this.bufferLength; - - var firstDigit = this.firstDigit; - for (var i = 0, ii = bytes.length; i < ii; i++) { - var ch = bytes[i], digit; - if (ch >= 0x30 && ch <= 0x39) { // '0'-'9' - digit = ch & 0x0F; - } else if ((ch >= 0x41 && ch <= 0x46) || (ch >= 0x61 && ch <= 0x66)) { - // 'A'-'Z', 'a'-'z' - digit = (ch & 0x0F) + 9; - } else if (ch === 0x3E) { // '>' - this.eof = true; - break; - } else { // probably whitespace - continue; // ignoring - } - if (firstDigit < 0) { - firstDigit = digit; - } else { - buffer[bufferLength++] = (firstDigit << 4) | digit; - firstDigit = -1; - } - } - if (firstDigit >= 0 && this.eof) { - // incomplete byte - buffer[bufferLength++] = (firstDigit << 4); - firstDigit = -1; - } - this.firstDigit = firstDigit; - this.bufferLength = bufferLength; - }; - - return AsciiHexStream; -})(); - -var RunLengthStream = (function RunLengthStreamClosure() { - function RunLengthStream(str, maybeLength) { - this.str = str; - this.dict = str.dict; - - DecodeStream.call(this, maybeLength); - } - - RunLengthStream.prototype = Object.create(DecodeStream.prototype); - - RunLengthStream.prototype.readBlock = function RunLengthStream_readBlock() { - // The repeatHeader has following format. The first byte defines type of run - // and amount of bytes to repeat/copy: n = 0 through 127 - copy next n bytes - // (in addition to the second byte from the header), n = 129 through 255 - - // duplicate the second byte from the header (257 - n) times, n = 128 - end. - var repeatHeader = this.str.getBytes(2); - if (!repeatHeader || repeatHeader.length < 2 || repeatHeader[0] === 128) { - this.eof = true; - return; - } - - var buffer; - var bufferLength = this.bufferLength; - var n = repeatHeader[0]; - if (n < 128) { - // copy n bytes - buffer = this.ensureBuffer(bufferLength + n + 1); - buffer[bufferLength++] = repeatHeader[1]; - if (n > 0) { - var source = this.str.getBytes(n); - buffer.set(source, bufferLength); - bufferLength += n; - } - } else { - n = 257 - n; - var b = repeatHeader[1]; - buffer = this.ensureBuffer(bufferLength + n + 1); - for (var i = 0; i < n; i++) { - buffer[bufferLength++] = b; - } - } - this.bufferLength = bufferLength; - }; - - return RunLengthStream; -})(); - -var CCITTFaxStream = (function CCITTFaxStreamClosure() { - - var ccittEOL = -2; - var twoDimPass = 0; - var twoDimHoriz = 1; - var twoDimVert0 = 2; - var twoDimVertR1 = 3; - var twoDimVertL1 = 4; - var twoDimVertR2 = 5; - var twoDimVertL2 = 6; - var twoDimVertR3 = 7; - var twoDimVertL3 = 8; - - var twoDimTable = [ - [-1, -1], [-1, -1], // 000000x - [7, twoDimVertL3], // 0000010 - [7, twoDimVertR3], // 0000011 - [6, twoDimVertL2], [6, twoDimVertL2], // 000010x - [6, twoDimVertR2], [6, twoDimVertR2], // 000011x - [4, twoDimPass], [4, twoDimPass], // 0001xxx - [4, twoDimPass], [4, twoDimPass], - [4, twoDimPass], [4, twoDimPass], - [4, twoDimPass], [4, twoDimPass], - [3, twoDimHoriz], [3, twoDimHoriz], // 001xxxx - [3, twoDimHoriz], [3, twoDimHoriz], - [3, twoDimHoriz], [3, twoDimHoriz], - [3, twoDimHoriz], [3, twoDimHoriz], - [3, twoDimHoriz], [3, twoDimHoriz], - [3, twoDimHoriz], [3, twoDimHoriz], - [3, twoDimHoriz], [3, twoDimHoriz], - [3, twoDimHoriz], [3, twoDimHoriz], - [3, twoDimVertL1], [3, twoDimVertL1], // 010xxxx - [3, twoDimVertL1], [3, twoDimVertL1], - [3, twoDimVertL1], [3, twoDimVertL1], - [3, twoDimVertL1], [3, twoDimVertL1], - [3, twoDimVertL1], [3, twoDimVertL1], - [3, twoDimVertL1], [3, twoDimVertL1], - [3, twoDimVertL1], [3, twoDimVertL1], - [3, twoDimVertL1], [3, twoDimVertL1], - [3, twoDimVertR1], [3, twoDimVertR1], // 011xxxx - [3, twoDimVertR1], [3, twoDimVertR1], - [3, twoDimVertR1], [3, twoDimVertR1], - [3, twoDimVertR1], [3, twoDimVertR1], - [3, twoDimVertR1], [3, twoDimVertR1], - [3, twoDimVertR1], [3, twoDimVertR1], - [3, twoDimVertR1], [3, twoDimVertR1], - [3, twoDimVertR1], [3, twoDimVertR1], - [1, twoDimVert0], [1, twoDimVert0], // 1xxxxxx - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0] - ]; - - var whiteTable1 = [ - [-1, -1], // 00000 - [12, ccittEOL], // 00001 - [-1, -1], [-1, -1], // 0001x - [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 001xx - [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 010xx - [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 011xx - [11, 1792], [11, 1792], // 1000x - [12, 1984], // 10010 - [12, 2048], // 10011 - [12, 2112], // 10100 - [12, 2176], // 10101 - [12, 2240], // 10110 - [12, 2304], // 10111 - [11, 1856], [11, 1856], // 1100x - [11, 1920], [11, 1920], // 1101x - [12, 2368], // 11100 - [12, 2432], // 11101 - [12, 2496], // 11110 - [12, 2560] // 11111 - ]; - - var whiteTable2 = [ - [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 0000000xx - [8, 29], [8, 29], // 00000010x - [8, 30], [8, 30], // 00000011x - [8, 45], [8, 45], // 00000100x - [8, 46], [8, 46], // 00000101x - [7, 22], [7, 22], [7, 22], [7, 22], // 0000011xx - [7, 23], [7, 23], [7, 23], [7, 23], // 0000100xx - [8, 47], [8, 47], // 00001010x - [8, 48], [8, 48], // 00001011x - [6, 13], [6, 13], [6, 13], [6, 13], // 000011xxx - [6, 13], [6, 13], [6, 13], [6, 13], - [7, 20], [7, 20], [7, 20], [7, 20], // 0001000xx - [8, 33], [8, 33], // 00010010x - [8, 34], [8, 34], // 00010011x - [8, 35], [8, 35], // 00010100x - [8, 36], [8, 36], // 00010101x - [8, 37], [8, 37], // 00010110x - [8, 38], [8, 38], // 00010111x - [7, 19], [7, 19], [7, 19], [7, 19], // 0001100xx - [8, 31], [8, 31], // 00011010x - [8, 32], [8, 32], // 00011011x - [6, 1], [6, 1], [6, 1], [6, 1], // 000111xxx - [6, 1], [6, 1], [6, 1], [6, 1], - [6, 12], [6, 12], [6, 12], [6, 12], // 001000xxx - [6, 12], [6, 12], [6, 12], [6, 12], - [8, 53], [8, 53], // 00100100x - [8, 54], [8, 54], // 00100101x - [7, 26], [7, 26], [7, 26], [7, 26], // 0010011xx - [8, 39], [8, 39], // 00101000x - [8, 40], [8, 40], // 00101001x - [8, 41], [8, 41], // 00101010x - [8, 42], [8, 42], // 00101011x - [8, 43], [8, 43], // 00101100x - [8, 44], [8, 44], // 00101101x - [7, 21], [7, 21], [7, 21], [7, 21], // 0010111xx - [7, 28], [7, 28], [7, 28], [7, 28], // 0011000xx - [8, 61], [8, 61], // 00110010x - [8, 62], [8, 62], // 00110011x - [8, 63], [8, 63], // 00110100x - [8, 0], [8, 0], // 00110101x - [8, 320], [8, 320], // 00110110x - [8, 384], [8, 384], // 00110111x - [5, 10], [5, 10], [5, 10], [5, 10], // 00111xxxx - [5, 10], [5, 10], [5, 10], [5, 10], - [5, 10], [5, 10], [5, 10], [5, 10], - [5, 10], [5, 10], [5, 10], [5, 10], - [5, 11], [5, 11], [5, 11], [5, 11], // 01000xxxx - [5, 11], [5, 11], [5, 11], [5, 11], - [5, 11], [5, 11], [5, 11], [5, 11], - [5, 11], [5, 11], [5, 11], [5, 11], - [7, 27], [7, 27], [7, 27], [7, 27], // 0100100xx - [8, 59], [8, 59], // 01001010x - [8, 60], [8, 60], // 01001011x - [9, 1472], // 010011000 - [9, 1536], // 010011001 - [9, 1600], // 010011010 - [9, 1728], // 010011011 - [7, 18], [7, 18], [7, 18], [7, 18], // 0100111xx - [7, 24], [7, 24], [7, 24], [7, 24], // 0101000xx - [8, 49], [8, 49], // 01010010x - [8, 50], [8, 50], // 01010011x - [8, 51], [8, 51], // 01010100x - [8, 52], [8, 52], // 01010101x - [7, 25], [7, 25], [7, 25], [7, 25], // 0101011xx - [8, 55], [8, 55], // 01011000x - [8, 56], [8, 56], // 01011001x - [8, 57], [8, 57], // 01011010x - [8, 58], [8, 58], // 01011011x - [6, 192], [6, 192], [6, 192], [6, 192], // 010111xxx - [6, 192], [6, 192], [6, 192], [6, 192], - [6, 1664], [6, 1664], [6, 1664], [6, 1664], // 011000xxx - [6, 1664], [6, 1664], [6, 1664], [6, 1664], - [8, 448], [8, 448], // 01100100x - [8, 512], [8, 512], // 01100101x - [9, 704], // 011001100 - [9, 768], // 011001101 - [8, 640], [8, 640], // 01100111x - [8, 576], [8, 576], // 01101000x - [9, 832], // 011010010 - [9, 896], // 011010011 - [9, 960], // 011010100 - [9, 1024], // 011010101 - [9, 1088], // 011010110 - [9, 1152], // 011010111 - [9, 1216], // 011011000 - [9, 1280], // 011011001 - [9, 1344], // 011011010 - [9, 1408], // 011011011 - [7, 256], [7, 256], [7, 256], [7, 256], // 0110111xx - [4, 2], [4, 2], [4, 2], [4, 2], // 0111xxxxx - [4, 2], [4, 2], [4, 2], [4, 2], - [4, 2], [4, 2], [4, 2], [4, 2], - [4, 2], [4, 2], [4, 2], [4, 2], - [4, 2], [4, 2], [4, 2], [4, 2], - [4, 2], [4, 2], [4, 2], [4, 2], - [4, 2], [4, 2], [4, 2], [4, 2], - [4, 2], [4, 2], [4, 2], [4, 2], - [4, 3], [4, 3], [4, 3], [4, 3], // 1000xxxxx - [4, 3], [4, 3], [4, 3], [4, 3], - [4, 3], [4, 3], [4, 3], [4, 3], - [4, 3], [4, 3], [4, 3], [4, 3], - [4, 3], [4, 3], [4, 3], [4, 3], - [4, 3], [4, 3], [4, 3], [4, 3], - [4, 3], [4, 3], [4, 3], [4, 3], - [4, 3], [4, 3], [4, 3], [4, 3], - [5, 128], [5, 128], [5, 128], [5, 128], // 10010xxxx - [5, 128], [5, 128], [5, 128], [5, 128], - [5, 128], [5, 128], [5, 128], [5, 128], - [5, 128], [5, 128], [5, 128], [5, 128], - [5, 8], [5, 8], [5, 8], [5, 8], // 10011xxxx - [5, 8], [5, 8], [5, 8], [5, 8], - [5, 8], [5, 8], [5, 8], [5, 8], - [5, 8], [5, 8], [5, 8], [5, 8], - [5, 9], [5, 9], [5, 9], [5, 9], // 10100xxxx - [5, 9], [5, 9], [5, 9], [5, 9], - [5, 9], [5, 9], [5, 9], [5, 9], - [5, 9], [5, 9], [5, 9], [5, 9], - [6, 16], [6, 16], [6, 16], [6, 16], // 101010xxx - [6, 16], [6, 16], [6, 16], [6, 16], - [6, 17], [6, 17], [6, 17], [6, 17], // 101011xxx - [6, 17], [6, 17], [6, 17], [6, 17], - [4, 4], [4, 4], [4, 4], [4, 4], // 1011xxxxx - [4, 4], [4, 4], [4, 4], [4, 4], - [4, 4], [4, 4], [4, 4], [4, 4], - [4, 4], [4, 4], [4, 4], [4, 4], - [4, 4], [4, 4], [4, 4], [4, 4], - [4, 4], [4, 4], [4, 4], [4, 4], - [4, 4], [4, 4], [4, 4], [4, 4], - [4, 4], [4, 4], [4, 4], [4, 4], - [4, 5], [4, 5], [4, 5], [4, 5], // 1100xxxxx - [4, 5], [4, 5], [4, 5], [4, 5], - [4, 5], [4, 5], [4, 5], [4, 5], - [4, 5], [4, 5], [4, 5], [4, 5], - [4, 5], [4, 5], [4, 5], [4, 5], - [4, 5], [4, 5], [4, 5], [4, 5], - [4, 5], [4, 5], [4, 5], [4, 5], - [4, 5], [4, 5], [4, 5], [4, 5], - [6, 14], [6, 14], [6, 14], [6, 14], // 110100xxx - [6, 14], [6, 14], [6, 14], [6, 14], - [6, 15], [6, 15], [6, 15], [6, 15], // 110101xxx - [6, 15], [6, 15], [6, 15], [6, 15], - [5, 64], [5, 64], [5, 64], [5, 64], // 11011xxxx - [5, 64], [5, 64], [5, 64], [5, 64], - [5, 64], [5, 64], [5, 64], [5, 64], - [5, 64], [5, 64], [5, 64], [5, 64], - [4, 6], [4, 6], [4, 6], [4, 6], // 1110xxxxx - [4, 6], [4, 6], [4, 6], [4, 6], - [4, 6], [4, 6], [4, 6], [4, 6], - [4, 6], [4, 6], [4, 6], [4, 6], - [4, 6], [4, 6], [4, 6], [4, 6], - [4, 6], [4, 6], [4, 6], [4, 6], - [4, 6], [4, 6], [4, 6], [4, 6], - [4, 6], [4, 6], [4, 6], [4, 6], - [4, 7], [4, 7], [4, 7], [4, 7], // 1111xxxxx - [4, 7], [4, 7], [4, 7], [4, 7], - [4, 7], [4, 7], [4, 7], [4, 7], - [4, 7], [4, 7], [4, 7], [4, 7], - [4, 7], [4, 7], [4, 7], [4, 7], - [4, 7], [4, 7], [4, 7], [4, 7], - [4, 7], [4, 7], [4, 7], [4, 7], - [4, 7], [4, 7], [4, 7], [4, 7] - ]; - - var blackTable1 = [ - [-1, -1], [-1, -1], // 000000000000x - [12, ccittEOL], [12, ccittEOL], // 000000000001x - [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000001xx - [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000010xx - [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000011xx - [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000100xx - [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000101xx - [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000110xx - [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000111xx - [11, 1792], [11, 1792], [11, 1792], [11, 1792], // 00000001000xx - [12, 1984], [12, 1984], // 000000010010x - [12, 2048], [12, 2048], // 000000010011x - [12, 2112], [12, 2112], // 000000010100x - [12, 2176], [12, 2176], // 000000010101x - [12, 2240], [12, 2240], // 000000010110x - [12, 2304], [12, 2304], // 000000010111x - [11, 1856], [11, 1856], [11, 1856], [11, 1856], // 00000001100xx - [11, 1920], [11, 1920], [11, 1920], [11, 1920], // 00000001101xx - [12, 2368], [12, 2368], // 000000011100x - [12, 2432], [12, 2432], // 000000011101x - [12, 2496], [12, 2496], // 000000011110x - [12, 2560], [12, 2560], // 000000011111x - [10, 18], [10, 18], [10, 18], [10, 18], // 0000001000xxx - [10, 18], [10, 18], [10, 18], [10, 18], - [12, 52], [12, 52], // 000000100100x - [13, 640], // 0000001001010 - [13, 704], // 0000001001011 - [13, 768], // 0000001001100 - [13, 832], // 0000001001101 - [12, 55], [12, 55], // 000000100111x - [12, 56], [12, 56], // 000000101000x - [13, 1280], // 0000001010010 - [13, 1344], // 0000001010011 - [13, 1408], // 0000001010100 - [13, 1472], // 0000001010101 - [12, 59], [12, 59], // 000000101011x - [12, 60], [12, 60], // 000000101100x - [13, 1536], // 0000001011010 - [13, 1600], // 0000001011011 - [11, 24], [11, 24], [11, 24], [11, 24], // 00000010111xx - [11, 25], [11, 25], [11, 25], [11, 25], // 00000011000xx - [13, 1664], // 0000001100100 - [13, 1728], // 0000001100101 - [12, 320], [12, 320], // 000000110011x - [12, 384], [12, 384], // 000000110100x - [12, 448], [12, 448], // 000000110101x - [13, 512], // 0000001101100 - [13, 576], // 0000001101101 - [12, 53], [12, 53], // 000000110111x - [12, 54], [12, 54], // 000000111000x - [13, 896], // 0000001110010 - [13, 960], // 0000001110011 - [13, 1024], // 0000001110100 - [13, 1088], // 0000001110101 - [13, 1152], // 0000001110110 - [13, 1216], // 0000001110111 - [10, 64], [10, 64], [10, 64], [10, 64], // 0000001111xxx - [10, 64], [10, 64], [10, 64], [10, 64] - ]; - - var blackTable2 = [ - [8, 13], [8, 13], [8, 13], [8, 13], // 00000100xxxx - [8, 13], [8, 13], [8, 13], [8, 13], - [8, 13], [8, 13], [8, 13], [8, 13], - [8, 13], [8, 13], [8, 13], [8, 13], - [11, 23], [11, 23], // 00000101000x - [12, 50], // 000001010010 - [12, 51], // 000001010011 - [12, 44], // 000001010100 - [12, 45], // 000001010101 - [12, 46], // 000001010110 - [12, 47], // 000001010111 - [12, 57], // 000001011000 - [12, 58], // 000001011001 - [12, 61], // 000001011010 - [12, 256], // 000001011011 - [10, 16], [10, 16], [10, 16], [10, 16], // 0000010111xx - [10, 17], [10, 17], [10, 17], [10, 17], // 0000011000xx - [12, 48], // 000001100100 - [12, 49], // 000001100101 - [12, 62], // 000001100110 - [12, 63], // 000001100111 - [12, 30], // 000001101000 - [12, 31], // 000001101001 - [12, 32], // 000001101010 - [12, 33], // 000001101011 - [12, 40], // 000001101100 - [12, 41], // 000001101101 - [11, 22], [11, 22], // 00000110111x - [8, 14], [8, 14], [8, 14], [8, 14], // 00000111xxxx - [8, 14], [8, 14], [8, 14], [8, 14], - [8, 14], [8, 14], [8, 14], [8, 14], - [8, 14], [8, 14], [8, 14], [8, 14], - [7, 10], [7, 10], [7, 10], [7, 10], // 0000100xxxxx - [7, 10], [7, 10], [7, 10], [7, 10], - [7, 10], [7, 10], [7, 10], [7, 10], - [7, 10], [7, 10], [7, 10], [7, 10], - [7, 10], [7, 10], [7, 10], [7, 10], - [7, 10], [7, 10], [7, 10], [7, 10], - [7, 10], [7, 10], [7, 10], [7, 10], - [7, 10], [7, 10], [7, 10], [7, 10], - [7, 11], [7, 11], [7, 11], [7, 11], // 0000101xxxxx - [7, 11], [7, 11], [7, 11], [7, 11], - [7, 11], [7, 11], [7, 11], [7, 11], - [7, 11], [7, 11], [7, 11], [7, 11], - [7, 11], [7, 11], [7, 11], [7, 11], - [7, 11], [7, 11], [7, 11], [7, 11], - [7, 11], [7, 11], [7, 11], [7, 11], - [7, 11], [7, 11], [7, 11], [7, 11], - [9, 15], [9, 15], [9, 15], [9, 15], // 000011000xxx - [9, 15], [9, 15], [9, 15], [9, 15], - [12, 128], // 000011001000 - [12, 192], // 000011001001 - [12, 26], // 000011001010 - [12, 27], // 000011001011 - [12, 28], // 000011001100 - [12, 29], // 000011001101 - [11, 19], [11, 19], // 00001100111x - [11, 20], [11, 20], // 00001101000x - [12, 34], // 000011010010 - [12, 35], // 000011010011 - [12, 36], // 000011010100 - [12, 37], // 000011010101 - [12, 38], // 000011010110 - [12, 39], // 000011010111 - [11, 21], [11, 21], // 00001101100x - [12, 42], // 000011011010 - [12, 43], // 000011011011 - [10, 0], [10, 0], [10, 0], [10, 0], // 0000110111xx - [7, 12], [7, 12], [7, 12], [7, 12], // 0000111xxxxx - [7, 12], [7, 12], [7, 12], [7, 12], - [7, 12], [7, 12], [7, 12], [7, 12], - [7, 12], [7, 12], [7, 12], [7, 12], - [7, 12], [7, 12], [7, 12], [7, 12], - [7, 12], [7, 12], [7, 12], [7, 12], - [7, 12], [7, 12], [7, 12], [7, 12], - [7, 12], [7, 12], [7, 12], [7, 12] - ]; - - var blackTable3 = [ - [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 0000xx - [6, 9], // 000100 - [6, 8], // 000101 - [5, 7], [5, 7], // 00011x - [4, 6], [4, 6], [4, 6], [4, 6], // 0010xx - [4, 5], [4, 5], [4, 5], [4, 5], // 0011xx - [3, 1], [3, 1], [3, 1], [3, 1], // 010xxx - [3, 1], [3, 1], [3, 1], [3, 1], - [3, 4], [3, 4], [3, 4], [3, 4], // 011xxx - [3, 4], [3, 4], [3, 4], [3, 4], - [2, 3], [2, 3], [2, 3], [2, 3], // 10xxxx - [2, 3], [2, 3], [2, 3], [2, 3], - [2, 3], [2, 3], [2, 3], [2, 3], - [2, 3], [2, 3], [2, 3], [2, 3], - [2, 2], [2, 2], [2, 2], [2, 2], // 11xxxx - [2, 2], [2, 2], [2, 2], [2, 2], - [2, 2], [2, 2], [2, 2], [2, 2], - [2, 2], [2, 2], [2, 2], [2, 2] - ]; - - function CCITTFaxStream(str, maybeLength, params) { - this.str = str; - this.dict = str.dict; - - params = params || Dict.empty; - - this.encoding = params.get('K') || 0; - this.eoline = params.get('EndOfLine') || false; - this.byteAlign = params.get('EncodedByteAlign') || false; - this.columns = params.get('Columns') || 1728; - this.rows = params.get('Rows') || 0; - var eoblock = params.get('EndOfBlock'); - if (eoblock === null || eoblock === undefined) { - eoblock = true; - } - this.eoblock = eoblock; - this.black = params.get('BlackIs1') || false; - - this.codingLine = new Uint32Array(this.columns + 1); - this.refLine = new Uint32Array(this.columns + 2); - - this.codingLine[0] = this.columns; - this.codingPos = 0; - - this.row = 0; - this.nextLine2D = this.encoding < 0; - this.inputBits = 0; - this.inputBuf = 0; - this.outputBits = 0; - - var code1; - while ((code1 = this.lookBits(12)) === 0) { - this.eatBits(1); - } - if (code1 === 1) { - this.eatBits(12); - } - if (this.encoding > 0) { - this.nextLine2D = !this.lookBits(1); - this.eatBits(1); - } - - DecodeStream.call(this, maybeLength); - } - - CCITTFaxStream.prototype = Object.create(DecodeStream.prototype); - - CCITTFaxStream.prototype.readBlock = function CCITTFaxStream_readBlock() { - while (!this.eof) { - var c = this.lookChar(); - this.ensureBuffer(this.bufferLength + 1); - this.buffer[this.bufferLength++] = c; - } - }; - - CCITTFaxStream.prototype.addPixels = - function ccittFaxStreamAddPixels(a1, blackPixels) { - var codingLine = this.codingLine; - var codingPos = this.codingPos; - - if (a1 > codingLine[codingPos]) { - if (a1 > this.columns) { - info('row is wrong length'); - this.err = true; - a1 = this.columns; - } - if ((codingPos & 1) ^ blackPixels) { - ++codingPos; - } - - codingLine[codingPos] = a1; - } - this.codingPos = codingPos; - }; - - CCITTFaxStream.prototype.addPixelsNeg = - function ccittFaxStreamAddPixelsNeg(a1, blackPixels) { - var codingLine = this.codingLine; - var codingPos = this.codingPos; - - if (a1 > codingLine[codingPos]) { - if (a1 > this.columns) { - info('row is wrong length'); - this.err = true; - a1 = this.columns; - } - if ((codingPos & 1) ^ blackPixels) { - ++codingPos; - } - - codingLine[codingPos] = a1; - } else if (a1 < codingLine[codingPos]) { - if (a1 < 0) { - info('invalid code'); - this.err = true; - a1 = 0; - } - while (codingPos > 0 && a1 < codingLine[codingPos - 1]) { - --codingPos; - } - codingLine[codingPos] = a1; - } - - this.codingPos = codingPos; - }; - - CCITTFaxStream.prototype.lookChar = function CCITTFaxStream_lookChar() { - var refLine = this.refLine; - var codingLine = this.codingLine; - var columns = this.columns; - - var refPos, blackPixels, bits, i; - - if (this.outputBits === 0) { - if (this.eof) { - return null; - } - this.err = false; - - var code1, code2, code3; - if (this.nextLine2D) { - for (i = 0; codingLine[i] < columns; ++i) { - refLine[i] = codingLine[i]; - } - refLine[i++] = columns; - refLine[i] = columns; - codingLine[0] = 0; - this.codingPos = 0; - refPos = 0; - blackPixels = 0; - - while (codingLine[this.codingPos] < columns) { - code1 = this.getTwoDimCode(); - switch (code1) { - case twoDimPass: - this.addPixels(refLine[refPos + 1], blackPixels); - if (refLine[refPos + 1] < columns) { - refPos += 2; - } - break; - case twoDimHoriz: - code1 = code2 = 0; - if (blackPixels) { - do { - code1 += (code3 = this.getBlackCode()); - } while (code3 >= 64); - do { - code2 += (code3 = this.getWhiteCode()); - } while (code3 >= 64); - } else { - do { - code1 += (code3 = this.getWhiteCode()); - } while (code3 >= 64); - do { - code2 += (code3 = this.getBlackCode()); - } while (code3 >= 64); - } - this.addPixels(codingLine[this.codingPos] + - code1, blackPixels); - if (codingLine[this.codingPos] < columns) { - this.addPixels(codingLine[this.codingPos] + code2, - blackPixels ^ 1); - } - while (refLine[refPos] <= codingLine[this.codingPos] && - refLine[refPos] < columns) { - refPos += 2; - } - break; - case twoDimVertR3: - this.addPixels(refLine[refPos] + 3, blackPixels); - blackPixels ^= 1; - if (codingLine[this.codingPos] < columns) { - ++refPos; - while (refLine[refPos] <= codingLine[this.codingPos] && - refLine[refPos] < columns) { - refPos += 2; - } - } - break; - case twoDimVertR2: - this.addPixels(refLine[refPos] + 2, blackPixels); - blackPixels ^= 1; - if (codingLine[this.codingPos] < columns) { - ++refPos; - while (refLine[refPos] <= codingLine[this.codingPos] && - refLine[refPos] < columns) { - refPos += 2; - } - } - break; - case twoDimVertR1: - this.addPixels(refLine[refPos] + 1, blackPixels); - blackPixels ^= 1; - if (codingLine[this.codingPos] < columns) { - ++refPos; - while (refLine[refPos] <= codingLine[this.codingPos] && - refLine[refPos] < columns) { - refPos += 2; - } - } - break; - case twoDimVert0: - this.addPixels(refLine[refPos], blackPixels); - blackPixels ^= 1; - if (codingLine[this.codingPos] < columns) { - ++refPos; - while (refLine[refPos] <= codingLine[this.codingPos] && - refLine[refPos] < columns) { - refPos += 2; - } - } - break; - case twoDimVertL3: - this.addPixelsNeg(refLine[refPos] - 3, blackPixels); - blackPixels ^= 1; - if (codingLine[this.codingPos] < columns) { - if (refPos > 0) { - --refPos; - } else { - ++refPos; - } - while (refLine[refPos] <= codingLine[this.codingPos] && - refLine[refPos] < columns) { - refPos += 2; - } - } - break; - case twoDimVertL2: - this.addPixelsNeg(refLine[refPos] - 2, blackPixels); - blackPixels ^= 1; - if (codingLine[this.codingPos] < columns) { - if (refPos > 0) { - --refPos; - } else { - ++refPos; - } - while (refLine[refPos] <= codingLine[this.codingPos] && - refLine[refPos] < columns) { - refPos += 2; - } - } - break; - case twoDimVertL1: - this.addPixelsNeg(refLine[refPos] - 1, blackPixels); - blackPixels ^= 1; - if (codingLine[this.codingPos] < columns) { - if (refPos > 0) { - --refPos; - } else { - ++refPos; - } - while (refLine[refPos] <= codingLine[this.codingPos] && - refLine[refPos] < columns) { - refPos += 2; - } - } - break; - case EOF: - this.addPixels(columns, 0); - this.eof = true; - break; - default: - info('bad 2d code'); - this.addPixels(columns, 0); - this.err = true; - } - } - } else { - codingLine[0] = 0; - this.codingPos = 0; - blackPixels = 0; - while (codingLine[this.codingPos] < columns) { - code1 = 0; - if (blackPixels) { - do { - code1 += (code3 = this.getBlackCode()); - } while (code3 >= 64); - } else { - do { - code1 += (code3 = this.getWhiteCode()); - } while (code3 >= 64); - } - this.addPixels(codingLine[this.codingPos] + code1, blackPixels); - blackPixels ^= 1; - } - } - - var gotEOL = false; - - if (this.byteAlign) { - this.inputBits &= ~7; - } - - if (!this.eoblock && this.row === this.rows - 1) { - this.eof = true; - } else { - code1 = this.lookBits(12); - if (this.eoline) { - while (code1 !== EOF && code1 !== 1) { - this.eatBits(1); - code1 = this.lookBits(12); - } - } else { - while (code1 === 0) { - this.eatBits(1); - code1 = this.lookBits(12); - } - } - if (code1 === 1) { - this.eatBits(12); - gotEOL = true; - } else if (code1 === EOF) { - this.eof = true; - } - } - - if (!this.eof && this.encoding > 0) { - this.nextLine2D = !this.lookBits(1); - this.eatBits(1); - } - - if (this.eoblock && gotEOL && this.byteAlign) { - code1 = this.lookBits(12); - if (code1 === 1) { - this.eatBits(12); - if (this.encoding > 0) { - this.lookBits(1); - this.eatBits(1); - } - if (this.encoding >= 0) { - for (i = 0; i < 4; ++i) { - code1 = this.lookBits(12); - if (code1 !== 1) { - info('bad rtc code: ' + code1); - } - this.eatBits(12); - if (this.encoding > 0) { - this.lookBits(1); - this.eatBits(1); - } - } - } - this.eof = true; - } - } else if (this.err && this.eoline) { - while (true) { - code1 = this.lookBits(13); - if (code1 === EOF) { - this.eof = true; - return null; - } - if ((code1 >> 1) === 1) { - break; - } - this.eatBits(1); - } - this.eatBits(12); - if (this.encoding > 0) { - this.eatBits(1); - this.nextLine2D = !(code1 & 1); - } - } - - if (codingLine[0] > 0) { - this.outputBits = codingLine[this.codingPos = 0]; - } else { - this.outputBits = codingLine[this.codingPos = 1]; - } - this.row++; - } - - var c; - if (this.outputBits >= 8) { - c = (this.codingPos & 1) ? 0 : 0xFF; - this.outputBits -= 8; - if (this.outputBits === 0 && codingLine[this.codingPos] < columns) { - this.codingPos++; - this.outputBits = (codingLine[this.codingPos] - - codingLine[this.codingPos - 1]); - } - } else { - bits = 8; - c = 0; - do { - if (this.outputBits > bits) { - c <<= bits; - if (!(this.codingPos & 1)) { - c |= 0xFF >> (8 - bits); - } - this.outputBits -= bits; - bits = 0; - } else { - c <<= this.outputBits; - if (!(this.codingPos & 1)) { - c |= 0xFF >> (8 - this.outputBits); - } - bits -= this.outputBits; - this.outputBits = 0; - if (codingLine[this.codingPos] < columns) { - this.codingPos++; - this.outputBits = (codingLine[this.codingPos] - - codingLine[this.codingPos - 1]); - } else if (bits > 0) { - c <<= bits; - bits = 0; - } - } - } while (bits); - } - if (this.black) { - c ^= 0xFF; - } - return c; - }; - - // This functions returns the code found from the table. - // The start and end parameters set the boundaries for searching the table. - // The limit parameter is optional. Function returns an array with three - // values. The first array element indicates whether a valid code is being - // returned. The second array element is the actual code. The third array - // element indicates whether EOF was reached. - CCITTFaxStream.prototype.findTableCode = - function ccittFaxStreamFindTableCode(start, end, table, limit) { - - var limitValue = limit || 0; - for (var i = start; i <= end; ++i) { - var code = this.lookBits(i); - if (code === EOF) { - return [true, 1, false]; - } - if (i < end) { - code <<= end - i; - } - if (!limitValue || code >= limitValue) { - var p = table[code - limitValue]; - if (p[0] === i) { - this.eatBits(i); - return [true, p[1], true]; - } - } - } - return [false, 0, false]; - }; - - CCITTFaxStream.prototype.getTwoDimCode = - function ccittFaxStreamGetTwoDimCode() { - - var code = 0; - var p; - if (this.eoblock) { - code = this.lookBits(7); - p = twoDimTable[code]; - if (p && p[0] > 0) { - this.eatBits(p[0]); - return p[1]; - } - } else { - var result = this.findTableCode(1, 7, twoDimTable); - if (result[0] && result[2]) { - return result[1]; - } - } - info('Bad two dim code'); - return EOF; - }; - - CCITTFaxStream.prototype.getWhiteCode = - function ccittFaxStreamGetWhiteCode() { - - var code = 0; - var p; - if (this.eoblock) { - code = this.lookBits(12); - if (code === EOF) { - return 1; - } - - if ((code >> 5) === 0) { - p = whiteTable1[code]; - } else { - p = whiteTable2[code >> 3]; - } - - if (p[0] > 0) { - this.eatBits(p[0]); - return p[1]; - } - } else { - var result = this.findTableCode(1, 9, whiteTable2); - if (result[0]) { - return result[1]; - } - - result = this.findTableCode(11, 12, whiteTable1); - if (result[0]) { - return result[1]; - } - } - info('bad white code'); - this.eatBits(1); - return 1; - }; - - CCITTFaxStream.prototype.getBlackCode = - function ccittFaxStreamGetBlackCode() { - - var code, p; - if (this.eoblock) { - code = this.lookBits(13); - if (code === EOF) { - return 1; - } - if ((code >> 7) === 0) { - p = blackTable1[code]; - } else if ((code >> 9) === 0 && (code >> 7) !== 0) { - p = blackTable2[(code >> 1) - 64]; - } else { - p = blackTable3[code >> 7]; - } - - if (p[0] > 0) { - this.eatBits(p[0]); - return p[1]; - } - } else { - var result = this.findTableCode(2, 6, blackTable3); - if (result[0]) { - return result[1]; - } - - result = this.findTableCode(7, 12, blackTable2, 64); - if (result[0]) { - return result[1]; - } - - result = this.findTableCode(10, 13, blackTable1); - if (result[0]) { - return result[1]; - } - } - info('bad black code'); - this.eatBits(1); - return 1; - }; - - CCITTFaxStream.prototype.lookBits = function CCITTFaxStream_lookBits(n) { - var c; - while (this.inputBits < n) { - if ((c = this.str.getByte()) === -1) { - if (this.inputBits === 0) { - return EOF; - } - return ((this.inputBuf << (n - this.inputBits)) & - (0xFFFF >> (16 - n))); - } - this.inputBuf = (this.inputBuf << 8) + c; - this.inputBits += 8; - } - return (this.inputBuf >> (this.inputBits - n)) & (0xFFFF >> (16 - n)); - }; - - CCITTFaxStream.prototype.eatBits = function CCITTFaxStream_eatBits(n) { - if ((this.inputBits -= n) < 0) { - this.inputBits = 0; - } - }; - - return CCITTFaxStream; -})(); - -var LZWStream = (function LZWStreamClosure() { - function LZWStream(str, maybeLength, earlyChange) { - this.str = str; - this.dict = str.dict; - this.cachedData = 0; - this.bitsCached = 0; - - var maxLzwDictionarySize = 4096; - var lzwState = { - earlyChange: earlyChange, - codeLength: 9, - nextCode: 258, - dictionaryValues: new Uint8Array(maxLzwDictionarySize), - dictionaryLengths: new Uint16Array(maxLzwDictionarySize), - dictionaryPrevCodes: new Uint16Array(maxLzwDictionarySize), - currentSequence: new Uint8Array(maxLzwDictionarySize), - currentSequenceLength: 0 - }; - for (var i = 0; i < 256; ++i) { - lzwState.dictionaryValues[i] = i; - lzwState.dictionaryLengths[i] = 1; - } - this.lzwState = lzwState; - - DecodeStream.call(this, maybeLength); - } - - LZWStream.prototype = Object.create(DecodeStream.prototype); - - LZWStream.prototype.readBits = function LZWStream_readBits(n) { - var bitsCached = this.bitsCached; - var cachedData = this.cachedData; - while (bitsCached < n) { - var c = this.str.getByte(); - if (c === -1) { - this.eof = true; - return null; - } - cachedData = (cachedData << 8) | c; - bitsCached += 8; - } - this.bitsCached = (bitsCached -= n); - this.cachedData = cachedData; - this.lastCode = null; - return (cachedData >>> bitsCached) & ((1 << n) - 1); - }; - - LZWStream.prototype.readBlock = function LZWStream_readBlock() { - var blockSize = 512; - var estimatedDecodedSize = blockSize * 2, decodedSizeDelta = blockSize; - var i, j, q; - - var lzwState = this.lzwState; - if (!lzwState) { - return; // eof was found - } - - var earlyChange = lzwState.earlyChange; - var nextCode = lzwState.nextCode; - var dictionaryValues = lzwState.dictionaryValues; - var dictionaryLengths = lzwState.dictionaryLengths; - var dictionaryPrevCodes = lzwState.dictionaryPrevCodes; - var codeLength = lzwState.codeLength; - var prevCode = lzwState.prevCode; - var currentSequence = lzwState.currentSequence; - var currentSequenceLength = lzwState.currentSequenceLength; - - var decodedLength = 0; - var currentBufferLength = this.bufferLength; - var buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize); - - for (i = 0; i < blockSize; i++) { - var code = this.readBits(codeLength); - var hasPrev = currentSequenceLength > 0; - if (code < 256) { - currentSequence[0] = code; - currentSequenceLength = 1; - } else if (code >= 258) { - if (code < nextCode) { - currentSequenceLength = dictionaryLengths[code]; - for (j = currentSequenceLength - 1, q = code; j >= 0; j--) { - currentSequence[j] = dictionaryValues[q]; - q = dictionaryPrevCodes[q]; - } - } else { - currentSequence[currentSequenceLength++] = currentSequence[0]; - } - } else if (code === 256) { - codeLength = 9; - nextCode = 258; - currentSequenceLength = 0; - continue; - } else { - this.eof = true; - delete this.lzwState; - break; - } - - if (hasPrev) { - dictionaryPrevCodes[nextCode] = prevCode; - dictionaryLengths[nextCode] = dictionaryLengths[prevCode] + 1; - dictionaryValues[nextCode] = currentSequence[0]; - nextCode++; - codeLength = (nextCode + earlyChange) & (nextCode + earlyChange - 1) ? - codeLength : Math.min(Math.log(nextCode + earlyChange) / - 0.6931471805599453 + 1, 12) | 0; - } - prevCode = code; - - decodedLength += currentSequenceLength; - if (estimatedDecodedSize < decodedLength) { - do { - estimatedDecodedSize += decodedSizeDelta; - } while (estimatedDecodedSize < decodedLength); - buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize); - } - for (j = 0; j < currentSequenceLength; j++) { - buffer[currentBufferLength++] = currentSequence[j]; - } - } - lzwState.nextCode = nextCode; - lzwState.codeLength = codeLength; - lzwState.prevCode = prevCode; - lzwState.currentSequenceLength = currentSequenceLength; - - this.bufferLength = currentBufferLength; - }; - - return LZWStream; -})(); - -var NullStream = (function NullStreamClosure() { - function NullStream() { - Stream.call(this, new Uint8Array(0)); - } - - NullStream.prototype = Stream.prototype; - - return NullStream; -})(); - -// TODO refactor to remove dependency on parser.js -function _setCoreParser(coreParser_) { - coreParser = coreParser_; - EOF = coreParser_.EOF; - Lexer = coreParser_.Lexer; -} -exports._setCoreParser = _setCoreParser; - -// TODO refactor to remove dependency on colorspace.js -function _setCoreColorSpace(coreColorSpace_) { - coreColorSpace = coreColorSpace_; - ColorSpace = coreColorSpace_.ColorSpace; -} -exports._setCoreColorSpace = _setCoreColorSpace; - -exports.Ascii85Stream = Ascii85Stream; -exports.AsciiHexStream = AsciiHexStream; -exports.CCITTFaxStream = CCITTFaxStream; -exports.DecryptStream = DecryptStream; -exports.DecodeStream = DecodeStream; -exports.FlateStream = FlateStream; -exports.Jbig2Stream = Jbig2Stream; -exports.JpegStream = JpegStream; -exports.JpxStream = JpxStream; -exports.NullStream = NullStream; -exports.PredictorStream = PredictorStream; -exports.RunLengthStream = RunLengthStream; -exports.Stream = Stream; -exports.StreamsSequenceStream = StreamsSequenceStream; -exports.StringStream = StringStream; -exports.LZWStream = LZWStream; -})); - - -(function (root, factory) { - { - factory((root.pdfjsCoreCrypto = {}), root.pdfjsSharedUtil, - root.pdfjsCorePrimitives, root.pdfjsCoreStream); - } -}(this, function (exports, sharedUtil, corePrimitives, coreStream) { - -var PasswordException = sharedUtil.PasswordException; -var PasswordResponses = sharedUtil.PasswordResponses; -var bytesToString = sharedUtil.bytesToString; -var error = sharedUtil.error; -var isInt = sharedUtil.isInt; -var stringToBytes = sharedUtil.stringToBytes; -var utf8StringToString = sharedUtil.utf8StringToString; -var warn = sharedUtil.warn; -var Name = corePrimitives.Name; -var isName = corePrimitives.isName; -var isDict = corePrimitives.isDict; -var DecryptStream = coreStream.DecryptStream; - -var ARCFourCipher = (function ARCFourCipherClosure() { - function ARCFourCipher(key) { - this.a = 0; - this.b = 0; - var s = new Uint8Array(256); - var i, j = 0, tmp, keyLength = key.length; - for (i = 0; i < 256; ++i) { - s[i] = i; - } - for (i = 0; i < 256; ++i) { - tmp = s[i]; - j = (j + tmp + key[i % keyLength]) & 0xFF; - s[i] = s[j]; - s[j] = tmp; - } - this.s = s; - } - - ARCFourCipher.prototype = { - encryptBlock: function ARCFourCipher_encryptBlock(data) { - var i, n = data.length, tmp, tmp2; - var a = this.a, b = this.b, s = this.s; - var output = new Uint8Array(n); - for (i = 0; i < n; ++i) { - a = (a + 1) & 0xFF; - tmp = s[a]; - b = (b + tmp) & 0xFF; - tmp2 = s[b]; - s[a] = tmp2; - s[b] = tmp; - output[i] = data[i] ^ s[(tmp + tmp2) & 0xFF]; - } - this.a = a; - this.b = b; - return output; - } - }; - ARCFourCipher.prototype.decryptBlock = ARCFourCipher.prototype.encryptBlock; - - return ARCFourCipher; -})(); - -var calculateMD5 = (function calculateMD5Closure() { - var r = new Uint8Array([ - 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, - 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, - 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, - 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21]); - - var k = new Int32Array([ - -680876936, -389564586, 606105819, -1044525330, -176418897, 1200080426, - -1473231341, -45705983, 1770035416, -1958414417, -42063, -1990404162, - 1804603682, -40341101, -1502002290, 1236535329, -165796510, -1069501632, - 643717713, -373897302, -701558691, 38016083, -660478335, -405537848, - 568446438, -1019803690, -187363961, 1163531501, -1444681467, -51403784, - 1735328473, -1926607734, -378558, -2022574463, 1839030562, -35309556, - -1530992060, 1272893353, -155497632, -1094730640, 681279174, -358537222, - -722521979, 76029189, -640364487, -421815835, 530742520, -995338651, - -198630844, 1126891415, -1416354905, -57434055, 1700485571, -1894986606, - -1051523, -2054922799, 1873313359, -30611744, -1560198380, 1309151649, - -145523070, -1120210379, 718787259, -343485551]); - - function hash(data, offset, length) { - var h0 = 1732584193, h1 = -271733879, h2 = -1732584194, h3 = 271733878; - // pre-processing - var paddedLength = (length + 72) & ~63; // data + 9 extra bytes - var padded = new Uint8Array(paddedLength); - var i, j, n; - for (i = 0; i < length; ++i) { - padded[i] = data[offset++]; - } - padded[i++] = 0x80; - n = paddedLength - 8; - while (i < n) { - padded[i++] = 0; - } - padded[i++] = (length << 3) & 0xFF; - padded[i++] = (length >> 5) & 0xFF; - padded[i++] = (length >> 13) & 0xFF; - padded[i++] = (length >> 21) & 0xFF; - padded[i++] = (length >>> 29) & 0xFF; - padded[i++] = 0; - padded[i++] = 0; - padded[i++] = 0; - var w = new Int32Array(16); - for (i = 0; i < paddedLength;) { - for (j = 0; j < 16; ++j, i += 4) { - w[j] = (padded[i] | (padded[i + 1] << 8) | - (padded[i + 2] << 16) | (padded[i + 3] << 24)); - } - var a = h0, b = h1, c = h2, d = h3, f, g; - for (j = 0; j < 64; ++j) { - if (j < 16) { - f = (b & c) | ((~b) & d); - g = j; - } else if (j < 32) { - f = (d & b) | ((~d) & c); - g = (5 * j + 1) & 15; - } else if (j < 48) { - f = b ^ c ^ d; - g = (3 * j + 5) & 15; - } else { - f = c ^ (b | (~d)); - g = (7 * j) & 15; - } - var tmp = d, rotateArg = (a + f + k[j] + w[g]) | 0, rotate = r[j]; - d = c; - c = b; - b = (b + ((rotateArg << rotate) | (rotateArg >>> (32 - rotate)))) | 0; - a = tmp; - } - h0 = (h0 + a) | 0; - h1 = (h1 + b) | 0; - h2 = (h2 + c) | 0; - h3 = (h3 + d) | 0; - } - return new Uint8Array([ - h0 & 0xFF, (h0 >> 8) & 0xFF, (h0 >> 16) & 0xFF, (h0 >>> 24) & 0xFF, - h1 & 0xFF, (h1 >> 8) & 0xFF, (h1 >> 16) & 0xFF, (h1 >>> 24) & 0xFF, - h2 & 0xFF, (h2 >> 8) & 0xFF, (h2 >> 16) & 0xFF, (h2 >>> 24) & 0xFF, - h3 & 0xFF, (h3 >> 8) & 0xFF, (h3 >> 16) & 0xFF, (h3 >>> 24) & 0xFF - ]); - } - - return hash; -})(); -var Word64 = (function Word64Closure() { - function Word64(highInteger, lowInteger) { - this.high = highInteger | 0; - this.low = lowInteger | 0; - } - Word64.prototype = { - and: function Word64_and(word) { - this.high &= word.high; - this.low &= word.low; - }, - xor: function Word64_xor(word) { - this.high ^= word.high; - this.low ^= word.low; - }, - - or: function Word64_or(word) { - this.high |= word.high; - this.low |= word.low; - }, - - shiftRight: function Word64_shiftRight(places) { - if (places >= 32) { - this.low = (this.high >>> (places - 32)) | 0; - this.high = 0; - } else { - this.low = (this.low >>> places) | (this.high << (32 - places)); - this.high = (this.high >>> places) | 0; - } - }, - - shiftLeft: function Word64_shiftLeft(places) { - if (places >= 32) { - this.high = this.low << (places - 32); - this.low = 0; - } else { - this.high = (this.high << places) | (this.low >>> (32 - places)); - this.low = this.low << places; - } - }, - - rotateRight: function Word64_rotateRight(places) { - var low, high; - if (places & 32) { - high = this.low; - low = this.high; - } else { - low = this.low; - high = this.high; - } - places &= 31; - this.low = (low >>> places) | (high << (32 - places)); - this.high = (high >>> places) | (low << (32 - places)); - }, - - not: function Word64_not() { - this.high = ~this.high; - this.low = ~this.low; - }, - - add: function Word64_add(word) { - var lowAdd = (this.low >>> 0) + (word.low >>> 0); - var highAdd = (this.high >>> 0) + (word.high >>> 0); - if (lowAdd > 0xFFFFFFFF) { - highAdd += 1; - } - this.low = lowAdd | 0; - this.high = highAdd | 0; - }, - - copyTo: function Word64_copyTo(bytes, offset) { - bytes[offset] = (this.high >>> 24) & 0xFF; - bytes[offset + 1] = (this.high >> 16) & 0xFF; - bytes[offset + 2] = (this.high >> 8) & 0xFF; - bytes[offset + 3] = this.high & 0xFF; - bytes[offset + 4] = (this.low >>> 24) & 0xFF; - bytes[offset + 5] = (this.low >> 16) & 0xFF; - bytes[offset + 6] = (this.low >> 8) & 0xFF; - bytes[offset + 7] = this.low & 0xFF; - }, - - assign: function Word64_assign(word) { - this.high = word.high; - this.low = word.low; - } - }; - return Word64; -})(); - -var calculateSHA256 = (function calculateSHA256Closure() { - function rotr(x, n) { - return (x >>> n) | (x << 32 - n); - } - - function ch(x, y, z) { - return (x & y) ^ (~x & z); - } - - function maj(x, y, z) { - return (x & y) ^ (x & z) ^ (y & z); - } - - function sigma(x) { - return rotr(x, 2) ^ rotr(x, 13) ^ rotr(x, 22); - } - - function sigmaPrime(x) { - return rotr(x, 6) ^ rotr(x, 11) ^ rotr(x, 25); - } - - function littleSigma(x) { - return rotr(x, 7) ^ rotr(x, 18) ^ x >>> 3; - } - - function littleSigmaPrime(x) { - return rotr(x, 17) ^ rotr(x, 19) ^ x >>> 10; - } - - var k = [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, - 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, - 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, - 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, - 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, - 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, - 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, - 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, - 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, - 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, - 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, - 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, - 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, - 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, - 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, - 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2]; - - function hash(data, offset, length) { - // initial hash values - var h0 = 0x6a09e667, h1 = 0xbb67ae85, h2 = 0x3c6ef372, - h3 = 0xa54ff53a, h4 = 0x510e527f, h5 = 0x9b05688c, - h6 = 0x1f83d9ab, h7 = 0x5be0cd19; - // pre-processing - var paddedLength = Math.ceil((length + 9) / 64) * 64; - var padded = new Uint8Array(paddedLength); - var i, j, n; - for (i = 0; i < length; ++i) { - padded[i] = data[offset++]; - } - padded[i++] = 0x80; - n = paddedLength - 8; - while (i < n) { - padded[i++] = 0; - } - padded[i++] = 0; - padded[i++] = 0; - padded[i++] = 0; - padded[i++] = (length >>> 29) & 0xFF; - padded[i++] = (length >> 21) & 0xFF; - padded[i++] = (length >> 13) & 0xFF; - padded[i++] = (length >> 5) & 0xFF; - padded[i++] = (length << 3) & 0xFF; - var w = new Uint32Array(64); - // for each 512 bit block - for (i = 0; i < paddedLength;) { - for (j = 0; j < 16; ++j) { - w[j] = (padded[i] << 24 | (padded[i + 1] << 16) | - (padded[i + 2] << 8) | (padded[i + 3])); - i += 4; - } - - for (j = 16; j < 64; ++j) { - w[j] = littleSigmaPrime(w[j - 2]) + w[j - 7] + - littleSigma(w[j - 15]) + w[j - 16] | 0; - } - var a = h0, b = h1, c = h2, d = h3, e = h4, - f = h5, g = h6, h = h7, t1, t2; - for (j = 0; j < 64; ++j) { - t1 = h + sigmaPrime(e) + ch(e, f, g) + k[j] + w[j]; - t2 = sigma(a) + maj(a, b, c); - h = g; - g = f; - f = e; - e = (d + t1) | 0; - d = c; - c = b; - b = a; - a = (t1 + t2) | 0; - } - h0 = (h0 + a) | 0; - h1 = (h1 + b) | 0; - h2 = (h2 + c) | 0; - h3 = (h3 + d) | 0; - h4 = (h4 + e) | 0; - h5 = (h5 + f) | 0; - h6 = (h6 + g) | 0; - h7 = (h7 + h) | 0; - } - return new Uint8Array([ - (h0 >> 24) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 8) & 0xFF, (h0) & 0xFF, - (h1 >> 24) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 8) & 0xFF, (h1) & 0xFF, - (h2 >> 24) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 8) & 0xFF, (h2) & 0xFF, - (h3 >> 24) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 8) & 0xFF, (h3) & 0xFF, - (h4 >> 24) & 0xFF, (h4 >> 16) & 0xFF, (h4 >> 8) & 0xFF, (h4) & 0xFF, - (h5 >> 24) & 0xFF, (h5 >> 16) & 0xFF, (h5 >> 8) & 0xFF, (h5) & 0xFF, - (h6 >> 24) & 0xFF, (h6 >> 16) & 0xFF, (h6 >> 8) & 0xFF, (h6) & 0xFF, - (h7 >> 24) & 0xFF, (h7 >> 16) & 0xFF, (h7 >> 8) & 0xFF, (h7) & 0xFF - ]); - } - - return hash; -})(); - -var calculateSHA512 = (function calculateSHA512Closure() { - function ch(result, x, y, z, tmp) { - result.assign(x); - result.and(y); - tmp.assign(x); - tmp.not(); - tmp.and(z); - result.xor(tmp); - } - - function maj(result, x, y, z, tmp) { - result.assign(x); - result.and(y); - tmp.assign(x); - tmp.and(z); - result.xor(tmp); - tmp.assign(y); - tmp.and(z); - result.xor(tmp); - } - - function sigma(result, x, tmp) { - result.assign(x); - result.rotateRight(28); - tmp.assign(x); - tmp.rotateRight(34); - result.xor(tmp); - tmp.assign(x); - tmp.rotateRight(39); - result.xor(tmp); - } - - function sigmaPrime(result, x, tmp) { - result.assign(x); - result.rotateRight(14); - tmp.assign(x); - tmp.rotateRight(18); - result.xor(tmp); - tmp.assign(x); - tmp.rotateRight(41); - result.xor(tmp); - } - - function littleSigma(result, x, tmp) { - result.assign(x); - result.rotateRight(1); - tmp.assign(x); - tmp.rotateRight(8); - result.xor(tmp); - tmp.assign(x); - tmp.shiftRight(7); - result.xor(tmp); - } - - function littleSigmaPrime(result, x, tmp) { - result.assign(x); - result.rotateRight(19); - tmp.assign(x); - tmp.rotateRight(61); - result.xor(tmp); - tmp.assign(x); - tmp.shiftRight(6); - result.xor(tmp); - } - - var k = [ - new Word64(0x428a2f98, 0xd728ae22), new Word64(0x71374491, 0x23ef65cd), - new Word64(0xb5c0fbcf, 0xec4d3b2f), new Word64(0xe9b5dba5, 0x8189dbbc), - new Word64(0x3956c25b, 0xf348b538), new Word64(0x59f111f1, 0xb605d019), - new Word64(0x923f82a4, 0xaf194f9b), new Word64(0xab1c5ed5, 0xda6d8118), - new Word64(0xd807aa98, 0xa3030242), new Word64(0x12835b01, 0x45706fbe), - new Word64(0x243185be, 0x4ee4b28c), new Word64(0x550c7dc3, 0xd5ffb4e2), - new Word64(0x72be5d74, 0xf27b896f), new Word64(0x80deb1fe, 0x3b1696b1), - new Word64(0x9bdc06a7, 0x25c71235), new Word64(0xc19bf174, 0xcf692694), - new Word64(0xe49b69c1, 0x9ef14ad2), new Word64(0xefbe4786, 0x384f25e3), - new Word64(0x0fc19dc6, 0x8b8cd5b5), new Word64(0x240ca1cc, 0x77ac9c65), - new Word64(0x2de92c6f, 0x592b0275), new Word64(0x4a7484aa, 0x6ea6e483), - new Word64(0x5cb0a9dc, 0xbd41fbd4), new Word64(0x76f988da, 0x831153b5), - new Word64(0x983e5152, 0xee66dfab), new Word64(0xa831c66d, 0x2db43210), - new Word64(0xb00327c8, 0x98fb213f), new Word64(0xbf597fc7, 0xbeef0ee4), - new Word64(0xc6e00bf3, 0x3da88fc2), new Word64(0xd5a79147, 0x930aa725), - new Word64(0x06ca6351, 0xe003826f), new Word64(0x14292967, 0x0a0e6e70), - new Word64(0x27b70a85, 0x46d22ffc), new Word64(0x2e1b2138, 0x5c26c926), - new Word64(0x4d2c6dfc, 0x5ac42aed), new Word64(0x53380d13, 0x9d95b3df), - new Word64(0x650a7354, 0x8baf63de), new Word64(0x766a0abb, 0x3c77b2a8), - new Word64(0x81c2c92e, 0x47edaee6), new Word64(0x92722c85, 0x1482353b), - new Word64(0xa2bfe8a1, 0x4cf10364), new Word64(0xa81a664b, 0xbc423001), - new Word64(0xc24b8b70, 0xd0f89791), new Word64(0xc76c51a3, 0x0654be30), - new Word64(0xd192e819, 0xd6ef5218), new Word64(0xd6990624, 0x5565a910), - new Word64(0xf40e3585, 0x5771202a), new Word64(0x106aa070, 0x32bbd1b8), - new Word64(0x19a4c116, 0xb8d2d0c8), new Word64(0x1e376c08, 0x5141ab53), - new Word64(0x2748774c, 0xdf8eeb99), new Word64(0x34b0bcb5, 0xe19b48a8), - new Word64(0x391c0cb3, 0xc5c95a63), new Word64(0x4ed8aa4a, 0xe3418acb), - new Word64(0x5b9cca4f, 0x7763e373), new Word64(0x682e6ff3, 0xd6b2b8a3), - new Word64(0x748f82ee, 0x5defb2fc), new Word64(0x78a5636f, 0x43172f60), - new Word64(0x84c87814, 0xa1f0ab72), new Word64(0x8cc70208, 0x1a6439ec), - new Word64(0x90befffa, 0x23631e28), new Word64(0xa4506ceb, 0xde82bde9), - new Word64(0xbef9a3f7, 0xb2c67915), new Word64(0xc67178f2, 0xe372532b), - new Word64(0xca273ece, 0xea26619c), new Word64(0xd186b8c7, 0x21c0c207), - new Word64(0xeada7dd6, 0xcde0eb1e), new Word64(0xf57d4f7f, 0xee6ed178), - new Word64(0x06f067aa, 0x72176fba), new Word64(0x0a637dc5, 0xa2c898a6), - new Word64(0x113f9804, 0xbef90dae), new Word64(0x1b710b35, 0x131c471b), - new Word64(0x28db77f5, 0x23047d84), new Word64(0x32caab7b, 0x40c72493), - new Word64(0x3c9ebe0a, 0x15c9bebc), new Word64(0x431d67c4, 0x9c100d4c), - new Word64(0x4cc5d4be, 0xcb3e42b6), new Word64(0x597f299c, 0xfc657e2a), - new Word64(0x5fcb6fab, 0x3ad6faec), new Word64(0x6c44198c, 0x4a475817)]; - - function hash(data, offset, length, mode384) { - mode384 = !!mode384; - // initial hash values - var h0, h1, h2, h3, h4, h5, h6, h7; - if (!mode384) { - h0 = new Word64(0x6a09e667, 0xf3bcc908); - h1 = new Word64(0xbb67ae85, 0x84caa73b); - h2 = new Word64(0x3c6ef372, 0xfe94f82b); - h3 = new Word64(0xa54ff53a, 0x5f1d36f1); - h4 = new Word64(0x510e527f, 0xade682d1); - h5 = new Word64(0x9b05688c, 0x2b3e6c1f); - h6 = new Word64(0x1f83d9ab, 0xfb41bd6b); - h7 = new Word64(0x5be0cd19, 0x137e2179); - } - else { - // SHA384 is exactly the same - // except with different starting values and a trimmed result - h0 = new Word64(0xcbbb9d5d, 0xc1059ed8); - h1 = new Word64(0x629a292a, 0x367cd507); - h2 = new Word64(0x9159015a, 0x3070dd17); - h3 = new Word64(0x152fecd8, 0xf70e5939); - h4 = new Word64(0x67332667, 0xffc00b31); - h5 = new Word64(0x8eb44a87, 0x68581511); - h6 = new Word64(0xdb0c2e0d, 0x64f98fa7); - h7 = new Word64(0x47b5481d, 0xbefa4fa4); - } - - // pre-processing - var paddedLength = Math.ceil((length + 17) / 128) * 128; - var padded = new Uint8Array(paddedLength); - var i, j, n; - for (i = 0; i < length; ++i) { - padded[i] = data[offset++]; - } - padded[i++] = 0x80; - n = paddedLength - 16; - while (i < n) { - padded[i++] = 0; - } - padded[i++] = 0; - padded[i++] = 0; - padded[i++] = 0; - padded[i++] = 0; - padded[i++] = 0; - padded[i++] = 0; - padded[i++] = 0; - padded[i++] = 0; - padded[i++] = 0; - padded[i++] = 0; - padded[i++] = 0; - padded[i++] = (length >>> 29) & 0xFF; - padded[i++] = (length >> 21) & 0xFF; - padded[i++] = (length >> 13) & 0xFF; - padded[i++] = (length >> 5) & 0xFF; - padded[i++] = (length << 3) & 0xFF; - - var w = new Array(80); - for (i = 0; i < 80; i++) { - w[i] = new Word64(0, 0); - } - var a = new Word64(0, 0), b = new Word64(0, 0), c = new Word64(0, 0); - var d = new Word64(0, 0), e = new Word64(0, 0), f = new Word64(0, 0); - var g = new Word64(0, 0), h = new Word64(0, 0); - var t1 = new Word64(0, 0), t2 = new Word64(0, 0); - var tmp1 = new Word64(0, 0), tmp2 = new Word64(0, 0), tmp3; - - // for each 1024 bit block - for (i = 0; i < paddedLength;) { - for (j = 0; j < 16; ++j) { - w[j].high = (padded[i] << 24) | (padded[i + 1] << 16) | - (padded[i + 2] << 8) | (padded[i + 3]); - w[j].low = (padded[i + 4]) << 24 | (padded[i + 5]) << 16 | - (padded[i + 6]) << 8 | (padded[i + 7]); - i += 8; - } - for (j = 16; j < 80; ++j) { - tmp3 = w[j]; - littleSigmaPrime(tmp3, w[j - 2], tmp2); - tmp3.add(w[j - 7]); - littleSigma(tmp1, w[j - 15], tmp2); - tmp3.add(tmp1); - tmp3.add(w[j - 16]); - } - - a.assign(h0); b.assign(h1); c.assign(h2); d.assign(h3); - e.assign(h4); f.assign(h5); g.assign(h6); h.assign(h7); - for (j = 0; j < 80; ++j) { - t1.assign(h); - sigmaPrime(tmp1, e, tmp2); - t1.add(tmp1); - ch(tmp1, e, f, g, tmp2); - t1.add(tmp1); - t1.add(k[j]); - t1.add(w[j]); - - sigma(t2, a, tmp2); - maj(tmp1, a, b, c, tmp2); - t2.add(tmp1); - - tmp3 = h; - h = g; - g = f; - f = e; - d.add(t1); - e = d; - d = c; - c = b; - b = a; - tmp3.assign(t1); - tmp3.add(t2); - a = tmp3; - } - h0.add(a); - h1.add(b); - h2.add(c); - h3.add(d); - h4.add(e); - h5.add(f); - h6.add(g); - h7.add(h); - } - - var result; - if (!mode384) { - result = new Uint8Array(64); - h0.copyTo(result,0); - h1.copyTo(result,8); - h2.copyTo(result,16); - h3.copyTo(result,24); - h4.copyTo(result,32); - h5.copyTo(result,40); - h6.copyTo(result,48); - h7.copyTo(result,56); - } - else { - result = new Uint8Array(48); - h0.copyTo(result,0); - h1.copyTo(result,8); - h2.copyTo(result,16); - h3.copyTo(result,24); - h4.copyTo(result,32); - h5.copyTo(result,40); - } - return result; - } - - return hash; -})(); -var calculateSHA384 = (function calculateSHA384Closure() { - function hash(data, offset, length) { - return calculateSHA512(data, offset, length, true); - } - - return hash; -})(); -var NullCipher = (function NullCipherClosure() { - function NullCipher() { - } - - NullCipher.prototype = { - decryptBlock: function NullCipher_decryptBlock(data) { - return data; - } - }; - - return NullCipher; -})(); - -var AES128Cipher = (function AES128CipherClosure() { - var rcon = new Uint8Array([ - 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, - 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, - 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, - 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, - 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, - 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, - 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, - 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, - 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, - 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, - 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, - 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, - 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, - 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, - 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, - 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, - 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, - 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, - 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, - 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, - 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, - 0x74, 0xe8, 0xcb, 0x8d]); - - var s = new Uint8Array([ - 0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, - 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, - 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, - 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, - 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, - 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, - 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, - 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, - 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, - 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, - 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, - 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, - 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, - 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, - 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, - 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, - 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, - 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, - 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, - 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, - 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, - 0xb0, 0x54, 0xbb, 0x16]); - - var inv_s = new Uint8Array([ - 0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, - 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, - 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, - 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, - 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, - 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, - 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, - 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, - 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, - 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, - 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, - 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, - 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, - 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, - 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, - 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, - 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, - 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, - 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, - 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, - 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, - 0x55, 0x21, 0x0c, 0x7d]); - var mixCol = new Uint8Array(256); - for (var i = 0; i < 256; i++) { - if (i < 128) { - mixCol[i] = i << 1; - } else { - mixCol[i] = (i << 1) ^ 0x1b; - } - } - var mix = new Uint32Array([ - 0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, - 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, - 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, - 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, - 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, - 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, - 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, - 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, - 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, - 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, - 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, - 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, - 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, - 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, - 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, - 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, - 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, - 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, - 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, - 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, - 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, - 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, - 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, - 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, - 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, - 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, - 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, - 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, - 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, - 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, - 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, - 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, - 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, - 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, - 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, - 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, - 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, - 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, - 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, - 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, - 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, - 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, - 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3]); - - function expandKey128(cipherKey) { - var b = 176, result = new Uint8Array(b); - result.set(cipherKey); - for (var j = 16, i = 1; j < b; ++i) { - // RotWord - var t1 = result[j - 3], t2 = result[j - 2], - t3 = result[j - 1], t4 = result[j - 4]; - // SubWord - t1 = s[t1]; - t2 = s[t2]; - t3 = s[t3]; - t4 = s[t4]; - // Rcon - t1 = t1 ^ rcon[i]; - for (var n = 0; n < 4; ++n) { - result[j] = (t1 ^= result[j - 16]); - j++; - result[j] = (t2 ^= result[j - 16]); - j++; - result[j] = (t3 ^= result[j - 16]); - j++; - result[j] = (t4 ^= result[j - 16]); - j++; - } - } - return result; - } - - function decrypt128(input, key) { - var state = new Uint8Array(16); - state.set(input); - var i, j, k; - var t, u, v; - // AddRoundKey - for (j = 0, k = 160; j < 16; ++j, ++k) { - state[j] ^= key[k]; - } - for (i = 9; i >= 1; --i) { - // InvShiftRows - t = state[13]; - state[13] = state[9]; - state[9] = state[5]; - state[5] = state[1]; - state[1] = t; - t = state[14]; - u = state[10]; - state[14] = state[6]; - state[10] = state[2]; - state[6] = t; - state[2] = u; - t = state[15]; - u = state[11]; - v = state[7]; - state[15] = state[3]; - state[11] = t; - state[7] = u; - state[3] = v; - // InvSubBytes - for (j = 0; j < 16; ++j) { - state[j] = inv_s[state[j]]; - } - // AddRoundKey - for (j = 0, k = i * 16; j < 16; ++j, ++k) { - state[j] ^= key[k]; - } - // InvMixColumns - for (j = 0; j < 16; j += 4) { - var s0 = mix[state[j]], s1 = mix[state[j + 1]], - s2 = mix[state[j + 2]], s3 = mix[state[j + 3]]; - t = (s0 ^ (s1 >>> 8) ^ (s1 << 24) ^ (s2 >>> 16) ^ (s2 << 16) ^ - (s3 >>> 24) ^ (s3 << 8)); - state[j] = (t >>> 24) & 0xFF; - state[j + 1] = (t >> 16) & 0xFF; - state[j + 2] = (t >> 8) & 0xFF; - state[j + 3] = t & 0xFF; - } - } - // InvShiftRows - t = state[13]; - state[13] = state[9]; - state[9] = state[5]; - state[5] = state[1]; - state[1] = t; - t = state[14]; - u = state[10]; - state[14] = state[6]; - state[10] = state[2]; - state[6] = t; - state[2] = u; - t = state[15]; - u = state[11]; - v = state[7]; - state[15] = state[3]; - state[11] = t; - state[7] = u; - state[3] = v; - for (j = 0; j < 16; ++j) { - // InvSubBytes - state[j] = inv_s[state[j]]; - // AddRoundKey - state[j] ^= key[j]; - } - return state; - } - - function encrypt128(input, key) { - var t, u, v, k; - var state = new Uint8Array(16); - state.set(input); - for (j = 0; j < 16; ++j) { - // AddRoundKey - state[j] ^= key[j]; - } - - for (i = 1; i < 10; i++) { - //SubBytes - for (j = 0; j < 16; ++j) { - state[j] = s[state[j]]; - } - //ShiftRows - v = state[1]; - state[1] = state[5]; - state[5] = state[9]; - state[9] = state[13]; - state[13] = v; - v = state[2]; - u = state[6]; - state[2] = state[10]; - state[6] = state[14]; - state[10] = v; - state[14] = u; - v = state[3]; - u = state[7]; - t = state[11]; - state[3] = state[15]; - state[7] = v; - state[11] = u; - state[15] = t; - //MixColumns - for (var j = 0; j < 16; j += 4) { - var s0 = state[j + 0], s1 = state[j + 1]; - var s2 = state[j + 2], s3 = state[j + 3]; - t = s0 ^ s1 ^ s2 ^ s3; - state[j + 0] ^= t ^ mixCol[s0 ^ s1]; - state[j + 1] ^= t ^ mixCol[s1 ^ s2]; - state[j + 2] ^= t ^ mixCol[s2 ^ s3]; - state[j + 3] ^= t ^ mixCol[s3 ^ s0]; - } - //AddRoundKey - for (j = 0, k = i * 16; j < 16; ++j, ++k) { - state[j] ^= key[k]; - } - } - - //SubBytes - for (j = 0; j < 16; ++j) { - state[j] = s[state[j]]; - } - //ShiftRows - v = state[1]; - state[1] = state[5]; - state[5] = state[9]; - state[9] = state[13]; - state[13] = v; - v = state[2]; - u = state[6]; - state[2] = state[10]; - state[6] = state[14]; - state[10] = v; - state[14] = u; - v = state[3]; - u = state[7]; - t = state[11]; - state[3] = state[15]; - state[7] = v; - state[11] = u; - state[15] = t; - //AddRoundKey - for (j = 0, k = 160; j < 16; ++j, ++k) { - state[j] ^= key[k]; - } - return state; - } - - function AES128Cipher(key) { - this.key = expandKey128(key); - this.buffer = new Uint8Array(16); - this.bufferPosition = 0; - } - - function decryptBlock2(data, finalize) { - var i, j, ii, sourceLength = data.length, - buffer = this.buffer, bufferLength = this.bufferPosition, - result = [], iv = this.iv; - for (i = 0; i < sourceLength; ++i) { - buffer[bufferLength] = data[i]; - ++bufferLength; - if (bufferLength < 16) { - continue; - } - // buffer is full, decrypting - var plain = decrypt128(buffer, this.key); - // xor-ing the IV vector to get plain text - for (j = 0; j < 16; ++j) { - plain[j] ^= iv[j]; - } - iv = buffer; - result.push(plain); - buffer = new Uint8Array(16); - bufferLength = 0; - } - // saving incomplete buffer - this.buffer = buffer; - this.bufferLength = bufferLength; - this.iv = iv; - if (result.length === 0) { - return new Uint8Array([]); - } - // combining plain text blocks into one - var outputLength = 16 * result.length; - if (finalize) { - // undo a padding that is described in RFC 2898 - var lastBlock = result[result.length - 1]; - var psLen = lastBlock[15]; - if (psLen <= 16) { - for (i = 15, ii = 16 - psLen; i >= ii; --i) { - if (lastBlock[i] !== psLen) { - // Invalid padding, assume that the block has no padding. - psLen = 0; - break; - } - } - outputLength -= psLen; - result[result.length - 1] = lastBlock.subarray(0, 16 - psLen); - } - } - var output = new Uint8Array(outputLength); - for (i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) { - output.set(result[i], j); - } - return output; - } - - AES128Cipher.prototype = { - decryptBlock: function AES128Cipher_decryptBlock(data, finalize) { - var i, sourceLength = data.length; - var buffer = this.buffer, bufferLength = this.bufferPosition; - // waiting for IV values -- they are at the start of the stream - for (i = 0; bufferLength < 16 && i < sourceLength; ++i, ++bufferLength) { - buffer[bufferLength] = data[i]; - } - if (bufferLength < 16) { - // need more data - this.bufferLength = bufferLength; - return new Uint8Array([]); - } - this.iv = buffer; - this.buffer = new Uint8Array(16); - this.bufferLength = 0; - // starting decryption - this.decryptBlock = decryptBlock2; - return this.decryptBlock(data.subarray(16), finalize); - }, - encrypt: function AES128Cipher_encrypt(data, iv) { - var i, j, ii, sourceLength = data.length, - buffer = this.buffer, bufferLength = this.bufferPosition, - result = []; - if (!iv) { - iv = new Uint8Array(16); - } - for (i = 0; i < sourceLength; ++i) { - buffer[bufferLength] = data[i]; - ++bufferLength; - if (bufferLength < 16) { - continue; - } - for (j = 0; j < 16; ++j) { - buffer[j] ^= iv[j]; - } - - // buffer is full, encrypting - var cipher = encrypt128(buffer, this.key); - iv = cipher; - result.push(cipher); - buffer = new Uint8Array(16); - bufferLength = 0; - } - // saving incomplete buffer - this.buffer = buffer; - this.bufferLength = bufferLength; - this.iv = iv; - if (result.length === 0) { - return new Uint8Array([]); - } - // combining plain text blocks into one - var outputLength = 16 * result.length; - var output = new Uint8Array(outputLength); - for (i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) { - output.set(result[i], j); - } - return output; - } - }; - - return AES128Cipher; -})(); - -var AES256Cipher = (function AES256CipherClosure() { - var rcon = new Uint8Array([ - 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, - 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, - 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, - 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, - 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, - 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, - 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, - 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, - 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, - 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, - 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, - 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, - 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, - 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, - 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, - 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, - 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, - 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, - 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, - 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, - 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, - 0x74, 0xe8, 0xcb, 0x8d]); - - var s = new Uint8Array([ - 0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, - 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, - 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, - 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, - 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, - 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, - 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, - 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, - 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, - 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, - 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, - 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, - 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, - 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, - 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, - 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, - 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, - 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, - 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, - 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, - 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, - 0xb0, 0x54, 0xbb, 0x16]); - - var inv_s = new Uint8Array([ - 0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, - 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, - 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, - 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, - 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, - 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, - 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, - 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, - 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, - 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, - 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, - 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, - 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, - 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, - 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, - 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, - 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, - 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, - 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, - 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, - 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, - 0x55, 0x21, 0x0c, 0x7d]); - - var mixCol = new Uint8Array(256); - for (var i = 0; i < 256; i++) { - if (i < 128) { - mixCol[i] = i << 1; - } else { - mixCol[i] = (i << 1) ^ 0x1b; - } - } - var mix = new Uint32Array([ - 0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, - 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, - 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, - 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, - 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, - 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, - 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, - 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, - 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, - 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, - 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, - 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, - 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, - 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, - 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, - 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, - 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, - 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, - 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, - 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, - 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, - 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, - 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, - 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, - 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, - 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, - 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, - 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, - 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, - 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, - 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, - 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, - 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, - 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, - 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, - 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, - 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, - 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, - 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, - 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, - 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, - 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, - 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3]); - - function expandKey256(cipherKey) { - var b = 240, result = new Uint8Array(b); - var r = 1; - - result.set(cipherKey); - for (var j = 32, i = 1; j < b; ++i) { - if (j % 32 === 16) { - t1 = s[t1]; - t2 = s[t2]; - t3 = s[t3]; - t4 = s[t4]; - } else if (j % 32 === 0) { - // RotWord - var t1 = result[j - 3], t2 = result[j - 2], - t3 = result[j - 1], t4 = result[j - 4]; - // SubWord - t1 = s[t1]; - t2 = s[t2]; - t3 = s[t3]; - t4 = s[t4]; - // Rcon - t1 = t1 ^ r; - if ((r <<= 1) >= 256) { - r = (r ^ 0x1b) & 0xFF; - } - } - - for (var n = 0; n < 4; ++n) { - result[j] = (t1 ^= result[j - 32]); - j++; - result[j] = (t2 ^= result[j - 32]); - j++; - result[j] = (t3 ^= result[j - 32]); - j++; - result[j] = (t4 ^= result[j - 32]); - j++; - } - } - return result; - } - - function decrypt256(input, key) { - var state = new Uint8Array(16); - state.set(input); - var i, j, k; - var t, u, v; - // AddRoundKey - for (j = 0, k = 224; j < 16; ++j, ++k) { - state[j] ^= key[k]; - } - for (i = 13; i >= 1; --i) { - // InvShiftRows - t = state[13]; - state[13] = state[9]; - state[9] = state[5]; - state[5] = state[1]; - state[1] = t; - t = state[14]; - u = state[10]; - state[14] = state[6]; - state[10] = state[2]; - state[6] = t; - state[2] = u; - t = state[15]; - u = state[11]; - v = state[7]; - state[15] = state[3]; - state[11] = t; - state[7] = u; - state[3] = v; - // InvSubBytes - for (j = 0; j < 16; ++j) { - state[j] = inv_s[state[j]]; - } - // AddRoundKey - for (j = 0, k = i * 16; j < 16; ++j, ++k) { - state[j] ^= key[k]; - } - // InvMixColumns - for (j = 0; j < 16; j += 4) { - var s0 = mix[state[j]], s1 = mix[state[j + 1]], - s2 = mix[state[j + 2]], s3 = mix[state[j + 3]]; - t = (s0 ^ (s1 >>> 8) ^ (s1 << 24) ^ (s2 >>> 16) ^ (s2 << 16) ^ - (s3 >>> 24) ^ (s3 << 8)); - state[j] = (t >>> 24) & 0xFF; - state[j + 1] = (t >> 16) & 0xFF; - state[j + 2] = (t >> 8) & 0xFF; - state[j + 3] = t & 0xFF; - } - } - // InvShiftRows - t = state[13]; - state[13] = state[9]; - state[9] = state[5]; - state[5] = state[1]; - state[1] = t; - t = state[14]; - u = state[10]; - state[14] = state[6]; - state[10] = state[2]; - state[6] = t; - state[2] = u; - t = state[15]; - u = state[11]; - v = state[7]; - state[15] = state[3]; - state[11] = t; - state[7] = u; - state[3] = v; - for (j = 0; j < 16; ++j) { - // InvSubBytes - state[j] = inv_s[state[j]]; - // AddRoundKey - state[j] ^= key[j]; - } - return state; - } - - function encrypt256(input, key) { - var t, u, v, k; - var state = new Uint8Array(16); - state.set(input); - for (j = 0; j < 16; ++j) { - // AddRoundKey - state[j] ^= key[j]; - } - - for (i = 1; i < 14; i++) { - //SubBytes - for (j = 0; j < 16; ++j) { - state[j] = s[state[j]]; - } - //ShiftRows - v = state[1]; - state[1] = state[5]; - state[5] = state[9]; - state[9] = state[13]; - state[13] = v; - v = state[2]; - u = state[6]; - state[2] = state[10]; - state[6] = state[14]; - state[10] = v; - state[14] = u; - v = state[3]; - u = state[7]; - t = state[11]; - state[3] = state[15]; - state[7] = v; - state[11] = u; - state[15] = t; - //MixColumns - for (var j = 0; j < 16; j += 4) { - var s0 = state[j + 0], s1 = state[j + 1]; - var s2 = state[j + 2], s3 = state[j + 3]; - t = s0 ^ s1 ^ s2 ^ s3; - state[j + 0] ^= t ^ mixCol[s0 ^ s1]; - state[j + 1] ^= t ^ mixCol[s1 ^ s2]; - state[j + 2] ^= t ^ mixCol[s2 ^ s3]; - state[j + 3] ^= t ^ mixCol[s3 ^ s0]; - } - //AddRoundKey - for (j = 0, k = i * 16; j < 16; ++j, ++k) { - state[j] ^= key[k]; - } - } - - //SubBytes - for (j = 0; j < 16; ++j) { - state[j] = s[state[j]]; - } - //ShiftRows - v = state[1]; - state[1] = state[5]; - state[5] = state[9]; - state[9] = state[13]; - state[13] = v; - v = state[2]; - u = state[6]; - state[2] = state[10]; - state[6] = state[14]; - state[10] = v; - state[14] = u; - v = state[3]; - u = state[7]; - t = state[11]; - state[3] = state[15]; - state[7] = v; - state[11] = u; - state[15] = t; - //AddRoundKey - for (j = 0, k = 224; j < 16; ++j, ++k) { - state[j] ^= key[k]; - } - - return state; - - } - - function AES256Cipher(key) { - this.key = expandKey256(key); - this.buffer = new Uint8Array(16); - this.bufferPosition = 0; - } - - function decryptBlock2(data, finalize) { - var i, j, ii, sourceLength = data.length, - buffer = this.buffer, bufferLength = this.bufferPosition, - result = [], iv = this.iv; - - for (i = 0; i < sourceLength; ++i) { - buffer[bufferLength] = data[i]; - ++bufferLength; - if (bufferLength < 16) { - continue; - } - // buffer is full, decrypting - var plain = decrypt256(buffer, this.key); - // xor-ing the IV vector to get plain text - for (j = 0; j < 16; ++j) { - plain[j] ^= iv[j]; - } - iv = buffer; - result.push(plain); - buffer = new Uint8Array(16); - bufferLength = 0; - } - // saving incomplete buffer - this.buffer = buffer; - this.bufferLength = bufferLength; - this.iv = iv; - if (result.length === 0) { - return new Uint8Array([]); - } - // combining plain text blocks into one - var outputLength = 16 * result.length; - if (finalize) { - // undo a padding that is described in RFC 2898 - var lastBlock = result[result.length - 1]; - var psLen = lastBlock[15]; - if (psLen <= 16) { - for (i = 15, ii = 16 - psLen; i >= ii; --i) { - if (lastBlock[i] !== psLen) { - // Invalid padding, assume that the block has no padding. - psLen = 0; - break; - } - } - outputLength -= psLen; - result[result.length - 1] = lastBlock.subarray(0, 16 - psLen); - } - } - var output = new Uint8Array(outputLength); - for (i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) { - output.set(result[i], j); - } - return output; - - } - - AES256Cipher.prototype = { - decryptBlock: function AES256Cipher_decryptBlock(data, finalize, iv) { - var i, sourceLength = data.length; - var buffer = this.buffer, bufferLength = this.bufferPosition; - // if not supplied an IV wait for IV values - // they are at the start of the stream - if (iv) { - this.iv = iv; - } else { - for (i = 0; bufferLength < 16 && - i < sourceLength; ++i, ++bufferLength) { - buffer[bufferLength] = data[i]; - } - if (bufferLength < 16) { - //need more data - this.bufferLength = bufferLength; - return new Uint8Array([]); - } - this.iv = buffer; - data = data.subarray(16); - } - this.buffer = new Uint8Array(16); - this.bufferLength = 0; - // starting decryption - this.decryptBlock = decryptBlock2; - return this.decryptBlock(data, finalize); - }, - encrypt: function AES256Cipher_encrypt(data, iv) { - var i, j, ii, sourceLength = data.length, - buffer = this.buffer, bufferLength = this.bufferPosition, - result = []; - if (!iv) { - iv = new Uint8Array(16); - } - for (i = 0; i < sourceLength; ++i) { - buffer[bufferLength] = data[i]; - ++bufferLength; - if (bufferLength < 16) { - continue; - } - for (j = 0; j < 16; ++j) { - buffer[j] ^= iv[j]; - } - - // buffer is full, encrypting - var cipher = encrypt256(buffer, this.key); - this.iv = cipher; - result.push(cipher); - buffer = new Uint8Array(16); - bufferLength = 0; - } - // saving incomplete buffer - this.buffer = buffer; - this.bufferLength = bufferLength; - this.iv = iv; - if (result.length === 0) { - return new Uint8Array([]); - } - // combining plain text blocks into one - var outputLength = 16 * result.length; - var output = new Uint8Array(outputLength); - for (i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) { - output.set(result[i], j); - } - return output; - } - }; - - return AES256Cipher; -})(); - -var PDF17 = (function PDF17Closure() { - - function compareByteArrays(array1, array2) { - if (array1.length !== array2.length) { - return false; - } - for (var i = 0; i < array1.length; i++) { - if (array1[i] !== array2[i]) { - return false; - } - } - return true; - } - - function PDF17() { - } - - PDF17.prototype = { - checkOwnerPassword: function PDF17_checkOwnerPassword(password, - ownerValidationSalt, - userBytes, - ownerPassword) { - var hashData = new Uint8Array(password.length + 56); - hashData.set(password, 0); - hashData.set(ownerValidationSalt, password.length); - hashData.set(userBytes, password.length + ownerValidationSalt.length); - var result = calculateSHA256(hashData, 0, hashData.length); - return compareByteArrays(result, ownerPassword); - }, - checkUserPassword: function PDF17_checkUserPassword(password, - userValidationSalt, - userPassword) { - var hashData = new Uint8Array(password.length + 8); - hashData.set(password, 0); - hashData.set(userValidationSalt, password.length); - var result = calculateSHA256(hashData, 0, hashData.length); - return compareByteArrays(result, userPassword); - }, - getOwnerKey: function PDF17_getOwnerKey(password, ownerKeySalt, userBytes, - ownerEncryption) { - var hashData = new Uint8Array(password.length + 56); - hashData.set(password, 0); - hashData.set(ownerKeySalt, password.length); - hashData.set(userBytes, password.length + ownerKeySalt.length); - var key = calculateSHA256(hashData, 0, hashData.length); - var cipher = new AES256Cipher(key); - return cipher.decryptBlock(ownerEncryption, - false, - new Uint8Array(16)); - - }, - getUserKey: function PDF17_getUserKey(password, userKeySalt, - userEncryption) { - var hashData = new Uint8Array(password.length + 8); - hashData.set(password, 0); - hashData.set(userKeySalt, password.length); - //key is the decryption key for the UE string - var key = calculateSHA256(hashData, 0, hashData.length); - var cipher = new AES256Cipher(key); - return cipher.decryptBlock(userEncryption, - false, - new Uint8Array(16)); - } - }; - return PDF17; -})(); - -var PDF20 = (function PDF20Closure() { - - function concatArrays(array1, array2) { - var t = new Uint8Array(array1.length + array2.length); - t.set(array1, 0); - t.set(array2, array1.length); - return t; - } - - function calculatePDF20Hash(password, input, userBytes) { - //This refers to Algorithm 2.B as defined in ISO 32000-2 - var k = calculateSHA256(input, 0, input.length).subarray(0, 32); - var e = [0]; - var i = 0; - while (i < 64 || e[e.length - 1] > i - 32) { - var arrayLength = password.length + k.length + userBytes.length; - - var k1 = new Uint8Array(arrayLength * 64); - var array = concatArrays(password, k); - array = concatArrays(array, userBytes); - for (var j = 0, pos = 0; j < 64; j++, pos += arrayLength) { - k1.set(array, pos); - } - //AES128 CBC NO PADDING with - //first 16 bytes of k as the key and the second 16 as the iv. - var cipher = new AES128Cipher(k.subarray(0, 16)); - e = cipher.encrypt(k1, k.subarray(16, 32)); - //Now we have to take the first 16 bytes of an unsigned - //big endian integer... and compute the remainder - //modulo 3.... That is a fairly large number and - //JavaScript isn't going to handle that well... - //So we're using a trick that allows us to perform - //modulo math byte by byte - var remainder = 0; - for (var z = 0; z < 16; z++) { - remainder *= (256 % 3); - remainder %= 3; - remainder += ((e[z] >>> 0) % 3); - remainder %= 3; - } - if (remainder === 0) { - k = calculateSHA256(e, 0, e.length); - } - else if (remainder === 1) { - k = calculateSHA384(e, 0, e.length); - } - else if (remainder === 2) { - k = calculateSHA512(e, 0, e.length); - } - i++; - } - return k.subarray(0, 32); - } - - function PDF20() { - } - - function compareByteArrays(array1, array2) { - if (array1.length !== array2.length) { - return false; - } - for (var i = 0; i < array1.length; i++) { - if (array1[i] !== array2[i]) { - return false; - } - } - return true; - } - - PDF20.prototype = { - hash: function PDF20_hash(password, concatBytes, userBytes) { - return calculatePDF20Hash(password, concatBytes, userBytes); - }, - checkOwnerPassword: function PDF20_checkOwnerPassword(password, - ownerValidationSalt, - userBytes, - ownerPassword) { - var hashData = new Uint8Array(password.length + 56); - hashData.set(password, 0); - hashData.set(ownerValidationSalt, password.length); - hashData.set(userBytes, password.length + ownerValidationSalt.length); - var result = calculatePDF20Hash(password, hashData, userBytes); - return compareByteArrays(result, ownerPassword); - }, - checkUserPassword: function PDF20_checkUserPassword(password, - userValidationSalt, - userPassword) { - var hashData = new Uint8Array(password.length + 8); - hashData.set(password, 0); - hashData.set(userValidationSalt, password.length); - var result = calculatePDF20Hash(password, hashData, []); - return compareByteArrays(result, userPassword); - }, - getOwnerKey: function PDF20_getOwnerKey(password, ownerKeySalt, userBytes, - ownerEncryption) { - var hashData = new Uint8Array(password.length + 56); - hashData.set(password, 0); - hashData.set(ownerKeySalt, password.length); - hashData.set(userBytes, password.length + ownerKeySalt.length); - var key = calculatePDF20Hash(password, hashData, userBytes); - var cipher = new AES256Cipher(key); - return cipher.decryptBlock(ownerEncryption, - false, - new Uint8Array(16)); - - }, - getUserKey: function PDF20_getUserKey(password, userKeySalt, - userEncryption) { - var hashData = new Uint8Array(password.length + 8); - hashData.set(password, 0); - hashData.set(userKeySalt, password.length); - //key is the decryption key for the UE string - var key = calculatePDF20Hash(password, hashData, []); - var cipher = new AES256Cipher(key); - return cipher.decryptBlock(userEncryption, - false, - new Uint8Array(16)); - } - }; - return PDF20; -})(); - -var CipherTransform = (function CipherTransformClosure() { - function CipherTransform(stringCipherConstructor, streamCipherConstructor) { - this.stringCipherConstructor = stringCipherConstructor; - this.streamCipherConstructor = streamCipherConstructor; - } - - CipherTransform.prototype = { - createStream: function CipherTransform_createStream(stream, length) { - var cipher = new this.streamCipherConstructor(); - return new DecryptStream(stream, length, - function cipherTransformDecryptStream(data, finalize) { - return cipher.decryptBlock(data, finalize); - } - ); - }, - decryptString: function CipherTransform_decryptString(s) { - var cipher = new this.stringCipherConstructor(); - var data = stringToBytes(s); - data = cipher.decryptBlock(data, true); - return bytesToString(data); - } - }; - return CipherTransform; -})(); - -var CipherTransformFactory = (function CipherTransformFactoryClosure() { - var defaultPasswordBytes = new Uint8Array([ - 0x28, 0xBF, 0x4E, 0x5E, 0x4E, 0x75, 0x8A, 0x41, - 0x64, 0x00, 0x4E, 0x56, 0xFF, 0xFA, 0x01, 0x08, - 0x2E, 0x2E, 0x00, 0xB6, 0xD0, 0x68, 0x3E, 0x80, - 0x2F, 0x0C, 0xA9, 0xFE, 0x64, 0x53, 0x69, 0x7A]); - - function createEncryptionKey20(revision, password, ownerPassword, - ownerValidationSalt, ownerKeySalt, uBytes, - userPassword, userValidationSalt, userKeySalt, - ownerEncryption, userEncryption, perms) { - if (password) { - var passwordLength = Math.min(127, password.length); - password = password.subarray(0, passwordLength); - } else { - password = []; - } - var pdfAlgorithm; - if (revision === 6) { - pdfAlgorithm = new PDF20(); - } else { - pdfAlgorithm = new PDF17(); - } - - if (pdfAlgorithm) { - if (pdfAlgorithm.checkUserPassword(password, userValidationSalt, - userPassword)) { - return pdfAlgorithm.getUserKey(password, userKeySalt, userEncryption); - } else if (password.length && pdfAlgorithm.checkOwnerPassword(password, - ownerValidationSalt, - uBytes, - ownerPassword)) { - return pdfAlgorithm.getOwnerKey(password, ownerKeySalt, uBytes, - ownerEncryption); - } - } - - return null; - } - - function prepareKeyData(fileId, password, ownerPassword, userPassword, - flags, revision, keyLength, encryptMetadata) { - var hashDataSize = 40 + ownerPassword.length + fileId.length; - var hashData = new Uint8Array(hashDataSize), i = 0, j, n; - if (password) { - n = Math.min(32, password.length); - for (; i < n; ++i) { - hashData[i] = password[i]; - } - } - j = 0; - while (i < 32) { - hashData[i++] = defaultPasswordBytes[j++]; - } - // as now the padded password in the hashData[0..i] - for (j = 0, n = ownerPassword.length; j < n; ++j) { - hashData[i++] = ownerPassword[j]; - } - hashData[i++] = flags & 0xFF; - hashData[i++] = (flags >> 8) & 0xFF; - hashData[i++] = (flags >> 16) & 0xFF; - hashData[i++] = (flags >>> 24) & 0xFF; - for (j = 0, n = fileId.length; j < n; ++j) { - hashData[i++] = fileId[j]; - } - if (revision >= 4 && !encryptMetadata) { - hashData[i++] = 0xFF; - hashData[i++] = 0xFF; - hashData[i++] = 0xFF; - hashData[i++] = 0xFF; - } - var hash = calculateMD5(hashData, 0, i); - var keyLengthInBytes = keyLength >> 3; - if (revision >= 3) { - for (j = 0; j < 50; ++j) { - hash = calculateMD5(hash, 0, keyLengthInBytes); - } - } - var encryptionKey = hash.subarray(0, keyLengthInBytes); - var cipher, checkData; - - if (revision >= 3) { - for (i = 0; i < 32; ++i) { - hashData[i] = defaultPasswordBytes[i]; - } - for (j = 0, n = fileId.length; j < n; ++j) { - hashData[i++] = fileId[j]; - } - cipher = new ARCFourCipher(encryptionKey); - checkData = cipher.encryptBlock(calculateMD5(hashData, 0, i)); - n = encryptionKey.length; - var derivedKey = new Uint8Array(n), k; - for (j = 1; j <= 19; ++j) { - for (k = 0; k < n; ++k) { - derivedKey[k] = encryptionKey[k] ^ j; - } - cipher = new ARCFourCipher(derivedKey); - checkData = cipher.encryptBlock(checkData); - } - for (j = 0, n = checkData.length; j < n; ++j) { - if (userPassword[j] !== checkData[j]) { - return null; - } - } - } else { - cipher = new ARCFourCipher(encryptionKey); - checkData = cipher.encryptBlock(defaultPasswordBytes); - for (j = 0, n = checkData.length; j < n; ++j) { - if (userPassword[j] !== checkData[j]) { - return null; - } - } - } - return encryptionKey; - } - - function decodeUserPassword(password, ownerPassword, revision, keyLength) { - var hashData = new Uint8Array(32), i = 0, j, n; - n = Math.min(32, password.length); - for (; i < n; ++i) { - hashData[i] = password[i]; - } - j = 0; - while (i < 32) { - hashData[i++] = defaultPasswordBytes[j++]; - } - var hash = calculateMD5(hashData, 0, i); - var keyLengthInBytes = keyLength >> 3; - if (revision >= 3) { - for (j = 0; j < 50; ++j) { - hash = calculateMD5(hash, 0, hash.length); - } - } - - var cipher, userPassword; - if (revision >= 3) { - userPassword = ownerPassword; - var derivedKey = new Uint8Array(keyLengthInBytes), k; - for (j = 19; j >= 0; j--) { - for (k = 0; k < keyLengthInBytes; ++k) { - derivedKey[k] = hash[k] ^ j; - } - cipher = new ARCFourCipher(derivedKey); - userPassword = cipher.encryptBlock(userPassword); - } - } else { - cipher = new ARCFourCipher(hash.subarray(0, keyLengthInBytes)); - userPassword = cipher.encryptBlock(ownerPassword); - } - return userPassword; - } - - var identityName = Name.get('Identity'); - - function CipherTransformFactory(dict, fileId, password) { - var filter = dict.get('Filter'); - if (!isName(filter) || filter.name !== 'Standard') { - error('unknown encryption method'); - } - this.dict = dict; - var algorithm = dict.get('V'); - if (!isInt(algorithm) || - (algorithm !== 1 && algorithm !== 2 && algorithm !== 4 && - algorithm !== 5)) { - error('unsupported encryption algorithm'); - } - this.algorithm = algorithm; - var keyLength = dict.get('Length'); - if (!keyLength) { - // Spec asks to rely on encryption dictionary's Length entry, however - // some PDFs don't have it. Trying to recover. - if (algorithm <= 3) { - // For 1 and 2 it's fixed to 40-bit, for 3 40-bit is a minimal value. - keyLength = 40; - } else { - // Trying to find default handler -- it usually has Length. - var cfDict = dict.get('CF'); - var streamCryptoName = dict.get('StmF'); - if (isDict(cfDict) && isName(streamCryptoName)) { - var handlerDict = cfDict.get(streamCryptoName.name); - keyLength = (handlerDict && handlerDict.get('Length')) || 128; - if (keyLength < 40) { - // Sometimes it's incorrect value of bits, generators specify bytes. - keyLength <<= 3; - } - } - } - } - if (!isInt(keyLength) || - keyLength < 40 || (keyLength % 8) !== 0) { - error('invalid key length'); - } - - // prepare keys - var ownerPassword = stringToBytes(dict.get('O')).subarray(0, 32); - var userPassword = stringToBytes(dict.get('U')).subarray(0, 32); - var flags = dict.get('P'); - var revision = dict.get('R'); - // meaningful when V is 4 or 5 - var encryptMetadata = ((algorithm === 4 || algorithm === 5) && - dict.get('EncryptMetadata') !== false); - this.encryptMetadata = encryptMetadata; - - var fileIdBytes = stringToBytes(fileId); - var passwordBytes; - if (password) { - if (revision === 6) { - try { - password = utf8StringToString(password); - } catch (ex) { - warn('CipherTransformFactory: ' + - 'Unable to convert UTF8 encoded password.'); - } - } - passwordBytes = stringToBytes(password); - } - - var encryptionKey; - if (algorithm !== 5) { - encryptionKey = prepareKeyData(fileIdBytes, passwordBytes, - ownerPassword, userPassword, flags, - revision, keyLength, encryptMetadata); - } - else { - var ownerValidationSalt = stringToBytes(dict.get('O')).subarray(32, 40); - var ownerKeySalt = stringToBytes(dict.get('O')).subarray(40, 48); - var uBytes = stringToBytes(dict.get('U')).subarray(0, 48); - var userValidationSalt = stringToBytes(dict.get('U')).subarray(32, 40); - var userKeySalt = stringToBytes(dict.get('U')).subarray(40, 48); - var ownerEncryption = stringToBytes(dict.get('OE')); - var userEncryption = stringToBytes(dict.get('UE')); - var perms = stringToBytes(dict.get('Perms')); - encryptionKey = - createEncryptionKey20(revision, passwordBytes, - ownerPassword, ownerValidationSalt, - ownerKeySalt, uBytes, - userPassword, userValidationSalt, - userKeySalt, ownerEncryption, - userEncryption, perms); - } - if (!encryptionKey && !password) { - throw new PasswordException('No password given', - PasswordResponses.NEED_PASSWORD); - } else if (!encryptionKey && password) { - // Attempting use the password as an owner password - var decodedPassword = decodeUserPassword(passwordBytes, ownerPassword, - revision, keyLength); - encryptionKey = prepareKeyData(fileIdBytes, decodedPassword, - ownerPassword, userPassword, flags, - revision, keyLength, encryptMetadata); - } - - if (!encryptionKey) { - throw new PasswordException('Incorrect Password', - PasswordResponses.INCORRECT_PASSWORD); - } - - this.encryptionKey = encryptionKey; - - if (algorithm >= 4) { - this.cf = dict.get('CF'); - this.stmf = dict.get('StmF') || identityName; - this.strf = dict.get('StrF') || identityName; - this.eff = dict.get('EFF') || this.stmf; - } - } - - function buildObjectKey(num, gen, encryptionKey, isAes) { - var key = new Uint8Array(encryptionKey.length + 9), i, n; - for (i = 0, n = encryptionKey.length; i < n; ++i) { - key[i] = encryptionKey[i]; - } - key[i++] = num & 0xFF; - key[i++] = (num >> 8) & 0xFF; - key[i++] = (num >> 16) & 0xFF; - key[i++] = gen & 0xFF; - key[i++] = (gen >> 8) & 0xFF; - if (isAes) { - key[i++] = 0x73; - key[i++] = 0x41; - key[i++] = 0x6C; - key[i++] = 0x54; - } - var hash = calculateMD5(key, 0, i); - return hash.subarray(0, Math.min(encryptionKey.length + 5, 16)); - } - - function buildCipherConstructor(cf, name, num, gen, key) { - var cryptFilter = cf.get(name.name); - var cfm; - if (cryptFilter !== null && cryptFilter !== undefined) { - cfm = cryptFilter.get('CFM'); - } - if (!cfm || cfm.name === 'None') { - return function cipherTransformFactoryBuildCipherConstructorNone() { - return new NullCipher(); - }; - } - if ('V2' === cfm.name) { - return function cipherTransformFactoryBuildCipherConstructorV2() { - return new ARCFourCipher(buildObjectKey(num, gen, key, false)); - }; - } - if ('AESV2' === cfm.name) { - return function cipherTransformFactoryBuildCipherConstructorAESV2() { - return new AES128Cipher(buildObjectKey(num, gen, key, true)); - }; - } - if ('AESV3' === cfm.name) { - return function cipherTransformFactoryBuildCipherConstructorAESV3() { - return new AES256Cipher(key); - }; - } - error('Unknown crypto method'); - } - - CipherTransformFactory.prototype = { - createCipherTransform: - function CipherTransformFactory_createCipherTransform(num, gen) { - if (this.algorithm === 4 || this.algorithm === 5) { - return new CipherTransform( - buildCipherConstructor(this.cf, this.stmf, - num, gen, this.encryptionKey), - buildCipherConstructor(this.cf, this.strf, - num, gen, this.encryptionKey)); - } - // algorithms 1 and 2 - var key = buildObjectKey(num, gen, this.encryptionKey, false); - var cipherConstructor = function buildCipherCipherConstructor() { - return new ARCFourCipher(key); - }; - return new CipherTransform(cipherConstructor, cipherConstructor); - } - }; - - return CipherTransformFactory; -})(); - -exports.AES128Cipher = AES128Cipher; -exports.AES256Cipher = AES256Cipher; -exports.ARCFourCipher = ARCFourCipher; -exports.CipherTransformFactory = CipherTransformFactory; -exports.PDF17 = PDF17; -exports.PDF20 = PDF20; -exports.calculateMD5 = calculateMD5; -exports.calculateSHA256 = calculateSHA256; -exports.calculateSHA384 = calculateSHA384; -exports.calculateSHA512 = calculateSHA512; -})); - -(function (root, factory) { - { - factory((root.pdfjsCoreFontRenderer = {}), root.pdfjsSharedUtil, - root.pdfjsCoreStream, root.pdfjsCoreGlyphList); - } -}(this, function (exports, sharedUtil, coreStream, coreGlyphList) { - -var Util = sharedUtil.Util; -var bytesToString = sharedUtil.bytesToString; -var error = sharedUtil.error; -var Stream = coreStream.Stream; -var GlyphsUnicode = coreGlyphList.GlyphsUnicode; - -var coreFonts; // see _setCoreFonts below -var CFFParser; // = coreFonts.CFFParser; -var Encodings; // = coreFonts.Encodings; - -var FontRendererFactory = (function FontRendererFactoryClosure() { - function getLong(data, offset) { - return (data[offset] << 24) | (data[offset + 1] << 16) | - (data[offset + 2] << 8) | data[offset + 3]; - } - - function getUshort(data, offset) { - return (data[offset] << 8) | data[offset + 1]; - } - - function parseCmap(data, start, end) { - var offset = (getUshort(data, start + 2) === 1 ? - getLong(data, start + 8) : getLong(data, start + 16)); - var format = getUshort(data, start + offset); - var length, ranges, p, i; - if (format === 4) { - length = getUshort(data, start + offset + 2); - var segCount = getUshort(data, start + offset + 6) >> 1; - p = start + offset + 14; - ranges = []; - for (i = 0; i < segCount; i++, p += 2) { - ranges[i] = {end: getUshort(data, p)}; - } - p += 2; - for (i = 0; i < segCount; i++, p += 2) { - ranges[i].start = getUshort(data, p); - } - for (i = 0; i < segCount; i++, p += 2) { - ranges[i].idDelta = getUshort(data, p); - } - for (i = 0; i < segCount; i++, p += 2) { - var idOffset = getUshort(data, p); - if (idOffset === 0) { - continue; - } - ranges[i].ids = []; - for (var j = 0, jj = ranges[i].end - ranges[i].start + 1; j < jj; j++) { - ranges[i].ids[j] = getUshort(data, p + idOffset); - idOffset += 2; - } - } - return ranges; - } else if (format === 12) { - length = getLong(data, start + offset + 4); - var groups = getLong(data, start + offset + 12); - p = start + offset + 16; - ranges = []; - for (i = 0; i < groups; i++) { - ranges.push({ - start: getLong(data, p), - end: getLong(data, p + 4), - idDelta: getLong(data, p + 8) - getLong(data, p) - }); - p += 12; - } - return ranges; - } - error('not supported cmap: ' + format); - } - - function parseCff(data, start, end) { - var properties = {}; - var parser = new CFFParser(new Stream(data, start, end - start), - properties); - var cff = parser.parse(); - return { - glyphs: cff.charStrings.objects, - subrs: (cff.topDict.privateDict && cff.topDict.privateDict.subrsIndex && - cff.topDict.privateDict.subrsIndex.objects), - gsubrs: cff.globalSubrIndex && cff.globalSubrIndex.objects - }; - } - - function parseGlyfTable(glyf, loca, isGlyphLocationsLong) { - var itemSize, itemDecode; - if (isGlyphLocationsLong) { - itemSize = 4; - itemDecode = function fontItemDecodeLong(data, offset) { - return (data[offset] << 24) | (data[offset + 1] << 16) | - (data[offset + 2] << 8) | data[offset + 3]; - }; - } else { - itemSize = 2; - itemDecode = function fontItemDecode(data, offset) { - return (data[offset] << 9) | (data[offset + 1] << 1); - }; - } - var glyphs = []; - var startOffset = itemDecode(loca, 0); - for (var j = itemSize; j < loca.length; j += itemSize) { - var endOffset = itemDecode(loca, j); - glyphs.push(glyf.subarray(startOffset, endOffset)); - startOffset = endOffset; - } - return glyphs; - } - - function lookupCmap(ranges, unicode) { - var code = unicode.charCodeAt(0); - var l = 0, r = ranges.length - 1; - while (l < r) { - var c = (l + r + 1) >> 1; - if (code < ranges[c].start) { - r = c - 1; - } else { - l = c; - } - } - if (ranges[l].start <= code && code <= ranges[l].end) { - return (ranges[l].idDelta + (ranges[l].ids ? - ranges[l].ids[code - ranges[l].start] : code)) & 0xFFFF; - } - return 0; - } - - function compileGlyf(code, cmds, font) { - function moveTo(x, y) { - cmds.push({cmd: 'moveTo', args: [x, y]}); - } - function lineTo(x, y) { - cmds.push({cmd: 'lineTo', args: [x, y]}); - } - function quadraticCurveTo(xa, ya, x, y) { - cmds.push({cmd: 'quadraticCurveTo', args: [xa, ya, x, y]}); - } - - var i = 0; - var numberOfContours = ((code[i] << 24) | (code[i + 1] << 16)) >> 16; - var flags; - var x = 0, y = 0; - i += 10; - if (numberOfContours < 0) { - // composite glyph - do { - flags = (code[i] << 8) | code[i + 1]; - var glyphIndex = (code[i + 2] << 8) | code[i + 3]; - i += 4; - var arg1, arg2; - if ((flags & 0x01)) { - arg1 = ((code[i] << 24) | (code[i + 1] << 16)) >> 16; - arg2 = ((code[i + 2] << 24) | (code[i + 3] << 16)) >> 16; - i += 4; - } else { - arg1 = code[i++]; arg2 = code[i++]; - } - if ((flags & 0x02)) { - x = arg1; - y = arg2; - } else { - x = 0; y = 0; // TODO "they are points" ? - } - var scaleX = 1, scaleY = 1, scale01 = 0, scale10 = 0; - if ((flags & 0x08)) { - scaleX = - scaleY = ((code[i] << 24) | (code[i + 1] << 16)) / 1073741824; - i += 2; - } else if ((flags & 0x40)) { - scaleX = ((code[i] << 24) | (code[i + 1] << 16)) / 1073741824; - scaleY = ((code[i + 2] << 24) | (code[i + 3] << 16)) / 1073741824; - i += 4; - } else if ((flags & 0x80)) { - scaleX = ((code[i] << 24) | (code[i + 1] << 16)) / 1073741824; - scale01 = ((code[i + 2] << 24) | (code[i + 3] << 16)) / 1073741824; - scale10 = ((code[i + 4] << 24) | (code[i + 5] << 16)) / 1073741824; - scaleY = ((code[i + 6] << 24) | (code[i + 7] << 16)) / 1073741824; - i += 8; - } - var subglyph = font.glyphs[glyphIndex]; - if (subglyph) { - cmds.push({cmd: 'save'}); - cmds.push({cmd: 'transform', - args: [scaleX, scale01, scale10, scaleY, x, y]}); - compileGlyf(subglyph, cmds, font); - cmds.push({cmd: 'restore'}); - } - } while ((flags & 0x20)); - } else { - // simple glyph - var endPtsOfContours = []; - var j, jj; - for (j = 0; j < numberOfContours; j++) { - endPtsOfContours.push((code[i] << 8) | code[i + 1]); - i += 2; - } - var instructionLength = (code[i] << 8) | code[i + 1]; - i += 2 + instructionLength; // skipping the instructions - var numberOfPoints = endPtsOfContours[endPtsOfContours.length - 1] + 1; - var points = []; - while (points.length < numberOfPoints) { - flags = code[i++]; - var repeat = 1; - if ((flags & 0x08)) { - repeat += code[i++]; - } - while (repeat-- > 0) { - points.push({flags: flags}); - } - } - for (j = 0; j < numberOfPoints; j++) { - switch (points[j].flags & 0x12) { - case 0x00: - x += ((code[i] << 24) | (code[i + 1] << 16)) >> 16; - i += 2; - break; - case 0x02: - x -= code[i++]; - break; - case 0x12: - x += code[i++]; - break; - } - points[j].x = x; - } - for (j = 0; j < numberOfPoints; j++) { - switch (points[j].flags & 0x24) { - case 0x00: - y += ((code[i] << 24) | (code[i + 1] << 16)) >> 16; - i += 2; - break; - case 0x04: - y -= code[i++]; - break; - case 0x24: - y += code[i++]; - break; - } - points[j].y = y; - } - - var startPoint = 0; - for (i = 0; i < numberOfContours; i++) { - var endPoint = endPtsOfContours[i]; - // contours might have implicit points, which is located in the middle - // between two neighboring off-curve points - var contour = points.slice(startPoint, endPoint + 1); - if ((contour[0].flags & 1)) { - contour.push(contour[0]); // using start point at the contour end - } else if ((contour[contour.length - 1].flags & 1)) { - // first is off-curve point, trying to use one from the end - contour.unshift(contour[contour.length - 1]); - } else { - // start and end are off-curve points, creating implicit one - var p = { - flags: 1, - x: (contour[0].x + contour[contour.length - 1].x) / 2, - y: (contour[0].y + contour[contour.length - 1].y) / 2 - }; - contour.unshift(p); - contour.push(p); - } - moveTo(contour[0].x, contour[0].y); - for (j = 1, jj = contour.length; j < jj; j++) { - if ((contour[j].flags & 1)) { - lineTo(contour[j].x, contour[j].y); - } else if ((contour[j + 1].flags & 1)){ - quadraticCurveTo(contour[j].x, contour[j].y, - contour[j + 1].x, contour[j + 1].y); - j++; - } else { - quadraticCurveTo(contour[j].x, contour[j].y, - (contour[j].x + contour[j + 1].x) / 2, - (contour[j].y + contour[j + 1].y) / 2); - } - } - startPoint = endPoint + 1; - } - } - } - - function compileCharString(code, cmds, font) { - var stack = []; - var x = 0, y = 0; - var stems = 0; - - function moveTo(x, y) { - cmds.push({cmd: 'moveTo', args: [x, y]}); - } - function lineTo(x, y) { - cmds.push({cmd: 'lineTo', args: [x, y]}); - } - function bezierCurveTo(x1, y1, x2, y2, x, y) { - cmds.push({cmd: 'bezierCurveTo', args: [x1, y1, x2, y2, x, y]}); - } - - function parse(code) { - var i = 0; - while (i < code.length) { - var stackClean = false; - var v = code[i++]; - var xa, xb, ya, yb, y1, y2, y3, n, subrCode; - switch (v) { - case 1: // hstem - stems += stack.length >> 1; - stackClean = true; - break; - case 3: // vstem - stems += stack.length >> 1; - stackClean = true; - break; - case 4: // vmoveto - y += stack.pop(); - moveTo(x, y); - stackClean = true; - break; - case 5: // rlineto - while (stack.length > 0) { - x += stack.shift(); - y += stack.shift(); - lineTo(x, y); - } - break; - case 6: // hlineto - while (stack.length > 0) { - x += stack.shift(); - lineTo(x, y); - if (stack.length === 0) { - break; - } - y += stack.shift(); - lineTo(x, y); - } - break; - case 7: // vlineto - while (stack.length > 0) { - y += stack.shift(); - lineTo(x, y); - if (stack.length === 0) { - break; - } - x += stack.shift(); - lineTo(x, y); - } - break; - case 8: // rrcurveto - while (stack.length > 0) { - xa = x + stack.shift(); ya = y + stack.shift(); - xb = xa + stack.shift(); yb = ya + stack.shift(); - x = xb + stack.shift(); y = yb + stack.shift(); - bezierCurveTo(xa, ya, xb, yb, x, y); - } - break; - case 10: // callsubr - n = stack.pop() + font.subrsBias; - subrCode = font.subrs[n]; - if (subrCode) { - parse(subrCode); - } - break; - case 11: // return - return; - case 12: - v = code[i++]; - switch (v) { - case 34: // flex - xa = x + stack.shift(); - xb = xa + stack.shift(); y1 = y + stack.shift(); - x = xb + stack.shift(); - bezierCurveTo(xa, y, xb, y1, x, y1); - xa = x + stack.shift(); - xb = xa + stack.shift(); - x = xb + stack.shift(); - bezierCurveTo(xa, y1, xb, y, x, y); - break; - case 35: // flex - xa = x + stack.shift(); ya = y + stack.shift(); - xb = xa + stack.shift(); yb = ya + stack.shift(); - x = xb + stack.shift(); y = yb + stack.shift(); - bezierCurveTo(xa, ya, xb, yb, x, y); - xa = x + stack.shift(); ya = y + stack.shift(); - xb = xa + stack.shift(); yb = ya + stack.shift(); - x = xb + stack.shift(); y = yb + stack.shift(); - bezierCurveTo(xa, ya, xb, yb, x, y); - stack.pop(); // fd - break; - case 36: // hflex1 - xa = x + stack.shift(); y1 = y + stack.shift(); - xb = xa + stack.shift(); y2 = y1 + stack.shift(); - x = xb + stack.shift(); - bezierCurveTo(xa, y1, xb, y2, x, y2); - xa = x + stack.shift(); - xb = xa + stack.shift(); y3 = y2 + stack.shift(); - x = xb + stack.shift(); - bezierCurveTo(xa, y2, xb, y3, x, y); - break; - case 37: // flex1 - var x0 = x, y0 = y; - xa = x + stack.shift(); ya = y + stack.shift(); - xb = xa + stack.shift(); yb = ya + stack.shift(); - x = xb + stack.shift(); y = yb + stack.shift(); - bezierCurveTo(xa, ya, xb, yb, x, y); - xa = x + stack.shift(); ya = y + stack.shift(); - xb = xa + stack.shift(); yb = ya + stack.shift(); - x = xb; y = yb; - if (Math.abs(x - x0) > Math.abs(y - y0)) { - x += stack.shift(); - } else { - y += stack.shift(); - } - bezierCurveTo(xa, ya, xb, yb, x, y); - break; - default: - error('unknown operator: 12 ' + v); - } - break; - case 14: // endchar - if (stack.length >= 4) { - var achar = stack.pop(); - var bchar = stack.pop(); - y = stack.pop(); - x = stack.pop(); - cmds.push({cmd: 'save'}); - cmds.push({cmd: 'translate', args: [x, y]}); - var gid = lookupCmap(font.cmap, String.fromCharCode( - font.glyphNameMap[Encodings.StandardEncoding[achar]])); - compileCharString(font.glyphs[gid], cmds, font); - cmds.push({cmd: 'restore'}); - - gid = lookupCmap(font.cmap, String.fromCharCode( - font.glyphNameMap[Encodings.StandardEncoding[bchar]])); - compileCharString(font.glyphs[gid], cmds, font); - } - return; - case 18: // hstemhm - stems += stack.length >> 1; - stackClean = true; - break; - case 19: // hintmask - stems += stack.length >> 1; - i += (stems + 7) >> 3; - stackClean = true; - break; - case 20: // cntrmask - stems += stack.length >> 1; - i += (stems + 7) >> 3; - stackClean = true; - break; - case 21: // rmoveto - y += stack.pop(); - x += stack.pop(); - moveTo(x, y); - stackClean = true; - break; - case 22: // hmoveto - x += stack.pop(); - moveTo(x, y); - stackClean = true; - break; - case 23: // vstemhm - stems += stack.length >> 1; - stackClean = true; - break; - case 24: // rcurveline - while (stack.length > 2) { - xa = x + stack.shift(); ya = y + stack.shift(); - xb = xa + stack.shift(); yb = ya + stack.shift(); - x = xb + stack.shift(); y = yb + stack.shift(); - bezierCurveTo(xa, ya, xb, yb, x, y); - } - x += stack.shift(); - y += stack.shift(); - lineTo(x, y); - break; - case 25: // rlinecurve - while (stack.length > 6) { - x += stack.shift(); - y += stack.shift(); - lineTo(x, y); - } - xa = x + stack.shift(); ya = y + stack.shift(); - xb = xa + stack.shift(); yb = ya + stack.shift(); - x = xb + stack.shift(); y = yb + stack.shift(); - bezierCurveTo(xa, ya, xb, yb, x, y); - break; - case 26: // vvcurveto - if (stack.length % 2) { - x += stack.shift(); - } - while (stack.length > 0) { - xa = x; ya = y + stack.shift(); - xb = xa + stack.shift(); yb = ya + stack.shift(); - x = xb; y = yb + stack.shift(); - bezierCurveTo(xa, ya, xb, yb, x, y); - } - break; - case 27: // hhcurveto - if (stack.length % 2) { - y += stack.shift(); - } - while (stack.length > 0) { - xa = x + stack.shift(); ya = y; - xb = xa + stack.shift(); yb = ya + stack.shift(); - x = xb + stack.shift(); y = yb; - bezierCurveTo(xa, ya, xb, yb, x, y); - } - break; - case 28: - stack.push(((code[i] << 24) | (code[i + 1] << 16)) >> 16); - i += 2; - break; - case 29: // callgsubr - n = stack.pop() + font.gsubrsBias; - subrCode = font.gsubrs[n]; - if (subrCode) { - parse(subrCode); - } - break; - case 30: // vhcurveto - while (stack.length > 0) { - xa = x; ya = y + stack.shift(); - xb = xa + stack.shift(); yb = ya + stack.shift(); - x = xb + stack.shift(); - y = yb + (stack.length === 1 ? stack.shift() : 0); - bezierCurveTo(xa, ya, xb, yb, x, y); - if (stack.length === 0) { - break; - } - - xa = x + stack.shift(); ya = y; - xb = xa + stack.shift(); yb = ya + stack.shift(); - y = yb + stack.shift(); - x = xb + (stack.length === 1 ? stack.shift() : 0); - bezierCurveTo(xa, ya, xb, yb, x, y); - } - break; - case 31: // hvcurveto - while (stack.length > 0) { - xa = x + stack.shift(); ya = y; - xb = xa + stack.shift(); yb = ya + stack.shift(); - y = yb + stack.shift(); - x = xb + (stack.length === 1 ? stack.shift() : 0); - bezierCurveTo(xa, ya, xb, yb, x, y); - if (stack.length === 0) { - break; - } - - xa = x; ya = y + stack.shift(); - xb = xa + stack.shift(); yb = ya + stack.shift(); - x = xb + stack.shift(); - y = yb + (stack.length === 1 ? stack.shift() : 0); - bezierCurveTo(xa, ya, xb, yb, x, y); - } - break; - default: - if (v < 32) { - error('unknown operator: ' + v); - } - if (v < 247) { - stack.push(v - 139); - } else if (v < 251) { - stack.push((v - 247) * 256 + code[i++] + 108); - } else if (v < 255) { - stack.push(-(v - 251) * 256 - code[i++] - 108); - } else { - stack.push(((code[i] << 24) | (code[i + 1] << 16) | - (code[i + 2] << 8) | code[i + 3]) / 65536); - i += 4; - } - break; - } - if (stackClean) { - stack.length = 0; - } - } - } - parse(code); - } - - var noop = ''; - - function CompiledFont(fontMatrix) { - this.compiledGlyphs = {}; - this.fontMatrix = fontMatrix; - } - CompiledFont.prototype = { - getPathJs: function (unicode) { - var gid = lookupCmap(this.cmap, unicode); - var fn = this.compiledGlyphs[gid]; - if (!fn) { - this.compiledGlyphs[gid] = fn = this.compileGlyph(this.glyphs[gid]); - } - return fn; - }, - - compileGlyph: function (code) { - if (!code || code.length === 0 || code[0] === 14) { - return noop; - } - - var cmds = []; - cmds.push({cmd: 'save'}); - cmds.push({cmd: 'transform', args: this.fontMatrix.slice()}); - cmds.push({cmd: 'scale', args: ['size', '-size']}); - - this.compileGlyphImpl(code, cmds); - - cmds.push({cmd: 'restore'}); - - return cmds; - }, - - compileGlyphImpl: function () { - error('Children classes should implement this.'); - }, - - hasBuiltPath: function (unicode) { - var gid = lookupCmap(this.cmap, unicode); - return gid in this.compiledGlyphs; - } - }; - - function TrueTypeCompiled(glyphs, cmap, fontMatrix) { - fontMatrix = fontMatrix || [0.000488, 0, 0, 0.000488, 0, 0]; - CompiledFont.call(this, fontMatrix); - - this.glyphs = glyphs; - this.cmap = cmap; - - this.compiledGlyphs = []; - } - - Util.inherit(TrueTypeCompiled, CompiledFont, { - compileGlyphImpl: function (code, cmds) { - compileGlyf(code, cmds, this); - } - }); - - function Type2Compiled(cffInfo, cmap, fontMatrix, glyphNameMap) { - fontMatrix = fontMatrix || [0.001, 0, 0, 0.001, 0, 0]; - CompiledFont.call(this, fontMatrix); - this.glyphs = cffInfo.glyphs; - this.gsubrs = cffInfo.gsubrs || []; - this.subrs = cffInfo.subrs || []; - this.cmap = cmap; - this.glyphNameMap = glyphNameMap || GlyphsUnicode; - - this.compiledGlyphs = []; - this.gsubrsBias = (this.gsubrs.length < 1240 ? - 107 : (this.gsubrs.length < 33900 ? 1131 : 32768)); - this.subrsBias = (this.subrs.length < 1240 ? - 107 : (this.subrs.length < 33900 ? 1131 : 32768)); - } - - Util.inherit(Type2Compiled, CompiledFont, { - compileGlyphImpl: function (code, cmds) { - compileCharString(code, cmds, this); - } - }); - - - return { - create: function FontRendererFactory_create(font) { - var data = new Uint8Array(font.data); - var cmap, glyf, loca, cff, indexToLocFormat, unitsPerEm; - var numTables = getUshort(data, 4); - for (var i = 0, p = 12; i < numTables; i++, p += 16) { - var tag = bytesToString(data.subarray(p, p + 4)); - var offset = getLong(data, p + 8); - var length = getLong(data, p + 12); - switch (tag) { - case 'cmap': - cmap = parseCmap(data, offset, offset + length); - break; - case 'glyf': - glyf = data.subarray(offset, offset + length); - break; - case 'loca': - loca = data.subarray(offset, offset + length); - break; - case 'head': - unitsPerEm = getUshort(data, offset + 18); - indexToLocFormat = getUshort(data, offset + 50); - break; - case 'CFF ': - cff = parseCff(data, offset, offset + length); - break; - } - } - - if (glyf) { - var fontMatrix = (!unitsPerEm ? font.fontMatrix : - [1 / unitsPerEm, 0, 0, 1 / unitsPerEm, 0, 0]); - return new TrueTypeCompiled( - parseGlyfTable(glyf, loca, indexToLocFormat), cmap, fontMatrix); - } else { - return new Type2Compiled(cff, cmap, font.fontMatrix, font.glyphNameMap); - } - } - }; -})(); - - -// TODO refactor to remove cyclic dependency on fonts.js -function _setCoreFonts(coreFonts_) { - coreFonts = coreFonts_; - Encodings = coreFonts_.Encodings; - CFFParser = coreFonts_.CFFParser; -} -exports._setCoreFonts = _setCoreFonts; - -exports.FontRendererFactory = FontRendererFactory; -})); - - -(function (root, factory) { - { - factory((root.pdfjsCoreParser = {}), root.pdfjsSharedUtil, - root.pdfjsCorePrimitives, root.pdfjsCoreStream); - } -}(this, function (exports, sharedUtil, corePrimitives, coreStream) { - -var MissingDataException = sharedUtil.MissingDataException; -var StreamType = sharedUtil.StreamType; -var assert = sharedUtil.assert; -var error = sharedUtil.error; -var info = sharedUtil.info; -var isArray = sharedUtil.isArray; -var isInt = sharedUtil.isInt; -var isNum = sharedUtil.isNum; -var isString = sharedUtil.isString; -var warn = sharedUtil.warn; -var Cmd = corePrimitives.Cmd; -var Dict = corePrimitives.Dict; -var Name = corePrimitives.Name; -var Ref = corePrimitives.Ref; -var isCmd = corePrimitives.isCmd; -var isDict = corePrimitives.isDict; -var isName = corePrimitives.isName; -var Ascii85Stream = coreStream.Ascii85Stream; -var AsciiHexStream = coreStream.AsciiHexStream; -var CCITTFaxStream = coreStream.CCITTFaxStream; -var FlateStream = coreStream.FlateStream; -var Jbig2Stream = coreStream.Jbig2Stream; -var JpegStream = coreStream.JpegStream; -var JpxStream = coreStream.JpxStream; -var LZWStream = coreStream.LZWStream; -var NullStream = coreStream.NullStream; -var PredictorStream = coreStream.PredictorStream; -var RunLengthStream = coreStream.RunLengthStream; - -var EOF = {}; - -function isEOF(v) { - return (v === EOF); -} - -var MAX_LENGTH_TO_CACHE = 1000; - -var Parser = (function ParserClosure() { - function Parser(lexer, allowStreams, xref) { - this.lexer = lexer; - this.allowStreams = allowStreams; - this.xref = xref; - this.imageCache = {}; - this.refill(); - } - - Parser.prototype = { - refill: function Parser_refill() { - this.buf1 = this.lexer.getObj(); - this.buf2 = this.lexer.getObj(); - }, - shift: function Parser_shift() { - if (isCmd(this.buf2, 'ID')) { - this.buf1 = this.buf2; - this.buf2 = null; - } else { - this.buf1 = this.buf2; - this.buf2 = this.lexer.getObj(); - } - }, - tryShift: function Parser_tryShift() { - try { - this.shift(); - return true; - } catch (e) { - if (e instanceof MissingDataException) { - throw e; - } - // Upon failure, the caller should reset this.lexer.pos to a known good - // state and call this.shift() twice to reset the buffers. - return false; - } - }, - getObj: function Parser_getObj(cipherTransform) { - var buf1 = this.buf1; - this.shift(); - - if (buf1 instanceof Cmd) { - switch (buf1.cmd) { - case 'BI': // inline image - return this.makeInlineImage(cipherTransform); - case '[': // array - var array = []; - while (!isCmd(this.buf1, ']') && !isEOF(this.buf1)) { - array.push(this.getObj(cipherTransform)); - } - if (isEOF(this.buf1)) { - error('End of file inside array'); - } - this.shift(); - return array; - case '<<': // dictionary or stream - var dict = new Dict(this.xref); - while (!isCmd(this.buf1, '>>') && !isEOF(this.buf1)) { - if (!isName(this.buf1)) { - info('Malformed dictionary: key must be a name object'); - this.shift(); - continue; - } - - var key = this.buf1.name; - this.shift(); - if (isEOF(this.buf1)) { - break; - } - dict.set(key, this.getObj(cipherTransform)); - } - if (isEOF(this.buf1)) { - error('End of file inside dictionary'); - } - - // Stream objects are not allowed inside content streams or - // object streams. - if (isCmd(this.buf2, 'stream')) { - return (this.allowStreams ? - this.makeStream(dict, cipherTransform) : dict); - } - this.shift(); - return dict; - default: // simple object - return buf1; - } - } - - if (isInt(buf1)) { // indirect reference or integer - var num = buf1; - if (isInt(this.buf1) && isCmd(this.buf2, 'R')) { - var ref = new Ref(num, this.buf1); - this.shift(); - this.shift(); - return ref; - } - return num; - } - - if (isString(buf1)) { // string - var str = buf1; - if (cipherTransform) { - str = cipherTransform.decryptString(str); - } - return str; - } - - // simple object - return buf1; - }, - /** - * Find the end of the stream by searching for the /EI\s/. - * @returns {number} The inline stream length. - */ - findDefaultInlineStreamEnd: - function Parser_findDefaultInlineStreamEnd(stream) { - var E = 0x45, I = 0x49, SPACE = 0x20, LF = 0xA, CR = 0xD; - var startPos = stream.pos, state = 0, ch, i, n, followingBytes; - while ((ch = stream.getByte()) !== -1) { - if (state === 0) { - state = (ch === E) ? 1 : 0; - } else if (state === 1) { - state = (ch === I) ? 2 : 0; - } else { - assert(state === 2); - if (ch === SPACE || ch === LF || ch === CR) { - // Let's check the next five bytes are ASCII... just be sure. - n = 5; - followingBytes = stream.peekBytes(n); - for (i = 0; i < n; i++) { - ch = followingBytes[i]; - if (ch !== LF && ch !== CR && (ch < SPACE || ch > 0x7F)) { - // Not a LF, CR, SPACE or any visible ASCII character, i.e. - // it's binary stuff. Resetting the state. - state = 0; - break; - } - } - if (state === 2) { - break; // Finished! - } - } else { - state = 0; - } - } - } - return ((stream.pos - 4) - startPos); - }, - /** - * Find the EOI (end-of-image) marker 0xFFD9 of the stream. - * @returns {number} The inline stream length. - */ - findDCTDecodeInlineStreamEnd: - function Parser_findDCTDecodeInlineStreamEnd(stream) { - var startPos = stream.pos, foundEOI = false, b, markerLength, length; - while ((b = stream.getByte()) !== -1) { - if (b !== 0xFF) { // Not a valid marker. - continue; - } - switch (stream.getByte()) { - case 0x00: // Byte stuffing. - // 0xFF00 appears to be a very common byte sequence in JPEG images. - break; - - case 0xFF: // Fill byte. - // Avoid skipping a valid marker, resetting the stream position. - stream.skip(-1); - break; - - case 0xD9: // EOI - foundEOI = true; - break; - - case 0xC0: // SOF0 - case 0xC1: // SOF1 - case 0xC2: // SOF2 - case 0xC3: // SOF3 - - case 0xC5: // SOF5 - case 0xC6: // SOF6 - case 0xC7: // SOF7 - - case 0xC9: // SOF9 - case 0xCA: // SOF10 - case 0xCB: // SOF11 - - case 0xCD: // SOF13 - case 0xCE: // SOF14 - case 0xCF: // SOF15 - - case 0xC4: // DHT - case 0xCC: // DAC - - case 0xDA: // SOS - case 0xDB: // DQT - case 0xDC: // DNL - case 0xDD: // DRI - case 0xDE: // DHP - case 0xDF: // EXP - - case 0xE0: // APP0 - case 0xE1: // APP1 - case 0xE2: // APP2 - case 0xE3: // APP3 - case 0xE4: // APP4 - case 0xE5: // APP5 - case 0xE6: // APP6 - case 0xE7: // APP7 - case 0xE8: // APP8 - case 0xE9: // APP9 - case 0xEA: // APP10 - case 0xEB: // APP11 - case 0xEC: // APP12 - case 0xED: // APP13 - case 0xEE: // APP14 - case 0xEF: // APP15 - - case 0xFE: // COM - // The marker should be followed by the length of the segment. - markerLength = stream.getUint16(); - if (markerLength > 2) { - // |markerLength| contains the byte length of the marker segment, - // including its own length (2 bytes) and excluding the marker. - stream.skip(markerLength - 2); // Jump to the next marker. - } else { - // The marker length is invalid, resetting the stream position. - stream.skip(-2); - } - break; - } - if (foundEOI) { - break; - } - } - length = stream.pos - startPos; - if (b === -1) { - warn('Inline DCTDecode image stream: ' + - 'EOI marker not found, searching for /EI/ instead.'); - stream.skip(-length); // Reset the stream position. - return this.findDefaultInlineStreamEnd(stream); - } - this.inlineStreamSkipEI(stream); - return length; - }, - /** - * Find the EOD (end-of-data) marker '~>' (i.e. TILDE + GT) of the stream. - * @returns {number} The inline stream length. - */ - findASCII85DecodeInlineStreamEnd: - function Parser_findASCII85DecodeInlineStreamEnd(stream) { - var TILDE = 0x7E, GT = 0x3E; - var startPos = stream.pos, ch, length; - while ((ch = stream.getByte()) !== -1) { - if (ch === TILDE && stream.peekByte() === GT) { - stream.skip(); - break; - } - } - length = stream.pos - startPos; - if (ch === -1) { - warn('Inline ASCII85Decode image stream: ' + - 'EOD marker not found, searching for /EI/ instead.'); - stream.skip(-length); // Reset the stream position. - return this.findDefaultInlineStreamEnd(stream); - } - this.inlineStreamSkipEI(stream); - return length; - }, - /** - * Find the EOD (end-of-data) marker '>' (i.e. GT) of the stream. - * @returns {number} The inline stream length. - */ - findASCIIHexDecodeInlineStreamEnd: - function Parser_findASCIIHexDecodeInlineStreamEnd(stream) { - var GT = 0x3E; - var startPos = stream.pos, ch, length; - while ((ch = stream.getByte()) !== -1) { - if (ch === GT) { - break; - } - } - length = stream.pos - startPos; - if (ch === -1) { - warn('Inline ASCIIHexDecode image stream: ' + - 'EOD marker not found, searching for /EI/ instead.'); - stream.skip(-length); // Reset the stream position. - return this.findDefaultInlineStreamEnd(stream); - } - this.inlineStreamSkipEI(stream); - return length; - }, - /** - * Skip over the /EI/ for streams where we search for an EOD marker. - */ - inlineStreamSkipEI: function Parser_inlineStreamSkipEI(stream) { - var E = 0x45, I = 0x49; - var state = 0, ch; - while ((ch = stream.getByte()) !== -1) { - if (state === 0) { - state = (ch === E) ? 1 : 0; - } else if (state === 1) { - state = (ch === I) ? 2 : 0; - } else if (state === 2) { - break; - } - } - }, - makeInlineImage: function Parser_makeInlineImage(cipherTransform) { - var lexer = this.lexer; - var stream = lexer.stream; - - // Parse dictionary. - var dict = new Dict(this.xref); - while (!isCmd(this.buf1, 'ID') && !isEOF(this.buf1)) { - if (!isName(this.buf1)) { - error('Dictionary key must be a name object'); - } - var key = this.buf1.name; - this.shift(); - if (isEOF(this.buf1)) { - break; - } - dict.set(key, this.getObj(cipherTransform)); - } - - // Extract the name of the first (i.e. the current) image filter. - var filter = dict.get('Filter', 'F'), filterName; - if (isName(filter)) { - filterName = filter.name; - } else if (isArray(filter) && isName(filter[0])) { - filterName = filter[0].name; - } - - // Parse image stream. - var startPos = stream.pos, length, i, ii; - if (filterName === 'DCTDecode' || filterName === 'DCT') { - length = this.findDCTDecodeInlineStreamEnd(stream); - } else if (filterName === 'ASCII85Decide' || filterName === 'A85') { - length = this.findASCII85DecodeInlineStreamEnd(stream); - } else if (filterName === 'ASCIIHexDecode' || filterName === 'AHx') { - length = this.findASCIIHexDecodeInlineStreamEnd(stream); - } else { - length = this.findDefaultInlineStreamEnd(stream); - } - var imageStream = stream.makeSubStream(startPos, length, dict); - - // Cache all images below the MAX_LENGTH_TO_CACHE threshold by their - // adler32 checksum. - var adler32; - if (length < MAX_LENGTH_TO_CACHE) { - var imageBytes = imageStream.getBytes(); - imageStream.reset(); - - var a = 1; - var b = 0; - for (i = 0, ii = imageBytes.length; i < ii; ++i) { - // No modulo required in the loop if imageBytes.length < 5552. - a += imageBytes[i] & 0xff; - b += a; - } - adler32 = ((b % 65521) << 16) | (a % 65521); - - if (this.imageCache.adler32 === adler32) { - this.buf2 = Cmd.get('EI'); - this.shift(); - - this.imageCache[adler32].reset(); - return this.imageCache[adler32]; - } - } - - if (cipherTransform) { - imageStream = cipherTransform.createStream(imageStream, length); - } - - imageStream = this.filter(imageStream, dict, length); - imageStream.dict = dict; - if (adler32 !== undefined) { - imageStream.cacheKey = 'inline_' + length + '_' + adler32; - this.imageCache[adler32] = imageStream; - } - - this.buf2 = Cmd.get('EI'); - this.shift(); - - return imageStream; - }, - makeStream: function Parser_makeStream(dict, cipherTransform) { - var lexer = this.lexer; - var stream = lexer.stream; - - // get stream start position - lexer.skipToNextLine(); - var pos = stream.pos - 1; - - // get length - var length = dict.get('Length'); - if (!isInt(length)) { - info('Bad ' + length + ' attribute in stream'); - length = 0; - } - - // skip over the stream data - stream.pos = pos + length; - lexer.nextChar(); - - // Shift '>>' and check whether the new object marks the end of the stream - if (this.tryShift() && isCmd(this.buf2, 'endstream')) { - this.shift(); // 'stream' - } else { - // bad stream length, scanning for endstream - stream.pos = pos; - var SCAN_BLOCK_SIZE = 2048; - var ENDSTREAM_SIGNATURE_LENGTH = 9; - var ENDSTREAM_SIGNATURE = [0x65, 0x6E, 0x64, 0x73, 0x74, 0x72, 0x65, - 0x61, 0x6D]; - var skipped = 0, found = false, i, j; - while (stream.pos < stream.end) { - var scanBytes = stream.peekBytes(SCAN_BLOCK_SIZE); - var scanLength = scanBytes.length - ENDSTREAM_SIGNATURE_LENGTH; - if (scanLength <= 0) { - break; - } - found = false; - i = 0; - while (i < scanLength) { - j = 0; - while (j < ENDSTREAM_SIGNATURE_LENGTH && - scanBytes[i + j] === ENDSTREAM_SIGNATURE[j]) { - j++; - } - if (j >= ENDSTREAM_SIGNATURE_LENGTH) { - found = true; - break; - } - i++; - } - if (found) { - skipped += i; - stream.pos += i; - break; - } - skipped += scanLength; - stream.pos += scanLength; - } - if (!found) { - error('Missing endstream'); - } - length = skipped; - - lexer.nextChar(); - this.shift(); - this.shift(); - } - this.shift(); // 'endstream' - - stream = stream.makeSubStream(pos, length, dict); - if (cipherTransform) { - stream = cipherTransform.createStream(stream, length); - } - stream = this.filter(stream, dict, length); - stream.dict = dict; - return stream; - }, - filter: function Parser_filter(stream, dict, length) { - var filter = dict.get('Filter', 'F'); - var params = dict.get('DecodeParms', 'DP'); - if (isName(filter)) { - return this.makeFilter(stream, filter.name, length, params); - } - - var maybeLength = length; - if (isArray(filter)) { - var filterArray = filter; - var paramsArray = params; - for (var i = 0, ii = filterArray.length; i < ii; ++i) { - filter = filterArray[i]; - if (!isName(filter)) { - error('Bad filter name: ' + filter); - } - - params = null; - if (isArray(paramsArray) && (i in paramsArray)) { - params = paramsArray[i]; - } - stream = this.makeFilter(stream, filter.name, maybeLength, params); - // after the first stream the length variable is invalid - maybeLength = null; - } - } - return stream; - }, - makeFilter: function Parser_makeFilter(stream, name, maybeLength, params) { - if (stream.dict.get('Length') === 0 && !maybeLength) { - warn('Empty "' + name + '" stream.'); - return new NullStream(stream); - } - try { - if (params && this.xref) { - params = this.xref.fetchIfRef(params); - } - var xrefStreamStats = this.xref.stats.streamTypes; - if (name === 'FlateDecode' || name === 'Fl') { - xrefStreamStats[StreamType.FLATE] = true; - if (params) { - return new PredictorStream(new FlateStream(stream, maybeLength), - maybeLength, params); - } - return new FlateStream(stream, maybeLength); - } - if (name === 'LZWDecode' || name === 'LZW') { - xrefStreamStats[StreamType.LZW] = true; - var earlyChange = 1; - if (params) { - if (params.has('EarlyChange')) { - earlyChange = params.get('EarlyChange'); - } - return new PredictorStream( - new LZWStream(stream, maybeLength, earlyChange), - maybeLength, params); - } - return new LZWStream(stream, maybeLength, earlyChange); - } - if (name === 'DCTDecode' || name === 'DCT') { - xrefStreamStats[StreamType.DCT] = true; - return new JpegStream(stream, maybeLength, stream.dict, this.xref); - } - if (name === 'JPXDecode' || name === 'JPX') { - xrefStreamStats[StreamType.JPX] = true; - return new JpxStream(stream, maybeLength, stream.dict); - } - if (name === 'ASCII85Decode' || name === 'A85') { - xrefStreamStats[StreamType.A85] = true; - return new Ascii85Stream(stream, maybeLength); - } - if (name === 'ASCIIHexDecode' || name === 'AHx') { - xrefStreamStats[StreamType.AHX] = true; - return new AsciiHexStream(stream, maybeLength); - } - if (name === 'CCITTFaxDecode' || name === 'CCF') { - xrefStreamStats[StreamType.CCF] = true; - return new CCITTFaxStream(stream, maybeLength, params); - } - if (name === 'RunLengthDecode' || name === 'RL') { - xrefStreamStats[StreamType.RL] = true; - return new RunLengthStream(stream, maybeLength); - } - if (name === 'JBIG2Decode') { - xrefStreamStats[StreamType.JBIG] = true; - return new Jbig2Stream(stream, maybeLength, stream.dict); - } - warn('filter "' + name + '" not supported yet'); - return stream; - } catch (ex) { - if (ex instanceof MissingDataException) { - throw ex; - } - warn('Invalid stream: \"' + ex + '\"'); - return new NullStream(stream); - } - } - }; - - return Parser; -})(); - -var Lexer = (function LexerClosure() { - function Lexer(stream, knownCommands) { - this.stream = stream; - this.nextChar(); - - // While lexing, we build up many strings one char at a time. Using += for - // this can result in lots of garbage strings. It's better to build an - // array of single-char strings and then join() them together at the end. - // And reusing a single array (i.e. |this.strBuf|) over and over for this - // purpose uses less memory than using a new array for each string. - this.strBuf = []; - - // The PDFs might have "glued" commands with other commands, operands or - // literals, e.g. "q1". The knownCommands is a dictionary of the valid - // commands and their prefixes. The prefixes are built the following way: - // if there a command that is a prefix of the other valid command or - // literal (e.g. 'f' and 'false') the following prefixes must be included, - // 'fa', 'fal', 'fals'. The prefixes are not needed, if the command has no - // other commands or literals as a prefix. The knowCommands is optional. - this.knownCommands = knownCommands; - } - - Lexer.isSpace = function Lexer_isSpace(ch) { - // Space is one of the following characters: SPACE, TAB, CR or LF. - return (ch === 0x20 || ch === 0x09 || ch === 0x0D || ch === 0x0A); - }; - - // A '1' in this array means the character is white space. A '1' or - // '2' means the character ends a name or command. - var specialChars = [ - 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, // 0x - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 1x - 1, 0, 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, // 2x - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, // 3x - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 4x - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, // 5x - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 6x - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, // 7x - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 8x - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 9x - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // ax - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // bx - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // cx - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // dx - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // ex - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 // fx - ]; - - function toHexDigit(ch) { - if (ch >= 0x30 && ch <= 0x39) { // '0'-'9' - return ch & 0x0F; - } - if ((ch >= 0x41 && ch <= 0x46) || (ch >= 0x61 && ch <= 0x66)) { - // 'A'-'F', 'a'-'f' - return (ch & 0x0F) + 9; - } - return -1; - } - - Lexer.prototype = { - nextChar: function Lexer_nextChar() { - return (this.currentChar = this.stream.getByte()); - }, - peekChar: function Lexer_peekChar() { - return this.stream.peekByte(); - }, - getNumber: function Lexer_getNumber() { - var ch = this.currentChar; - var eNotation = false; - var divideBy = 0; // different from 0 if it's a floating point value - var sign = 1; - - if (ch === 0x2D) { // '-' - sign = -1; - ch = this.nextChar(); - - if (ch === 0x2D) { // '-' - // Ignore double negative (this is consistent with Adobe Reader). - ch = this.nextChar(); - } - } else if (ch === 0x2B) { // '+' - ch = this.nextChar(); - } - if (ch === 0x2E) { // '.' - divideBy = 10; - ch = this.nextChar(); - } - if (ch < 0x30 || ch > 0x39) { // '0' - '9' - error('Invalid number: ' + String.fromCharCode(ch)); - return 0; - } - - var baseValue = ch - 0x30; // '0' - var powerValue = 0; - var powerValueSign = 1; - - while ((ch = this.nextChar()) >= 0) { - if (0x30 <= ch && ch <= 0x39) { // '0' - '9' - var currentDigit = ch - 0x30; // '0' - if (eNotation) { // We are after an 'e' or 'E' - powerValue = powerValue * 10 + currentDigit; - } else { - if (divideBy !== 0) { // We are after a point - divideBy *= 10; - } - baseValue = baseValue * 10 + currentDigit; - } - } else if (ch === 0x2E) { // '.' - if (divideBy === 0) { - divideBy = 1; - } else { - // A number can have only one '.' - break; - } - } else if (ch === 0x2D) { // '-' - // ignore minus signs in the middle of numbers to match - // Adobe's behavior - warn('Badly formated number'); - } else if (ch === 0x45 || ch === 0x65) { // 'E', 'e' - // 'E' can be either a scientific notation or the beginning of a new - // operator - ch = this.peekChar(); - if (ch === 0x2B || ch === 0x2D) { // '+', '-' - powerValueSign = (ch === 0x2D) ? -1 : 1; - this.nextChar(); // Consume the sign character - } else if (ch < 0x30 || ch > 0x39) { // '0' - '9' - // The 'E' must be the beginning of a new operator - break; - } - eNotation = true; - } else { - // the last character doesn't belong to us - break; - } - } - - if (divideBy !== 0) { - baseValue /= divideBy; - } - if (eNotation) { - baseValue *= Math.pow(10, powerValueSign * powerValue); - } - return sign * baseValue; - }, - getString: function Lexer_getString() { - var numParen = 1; - var done = false; - var strBuf = this.strBuf; - strBuf.length = 0; - - var ch = this.nextChar(); - while (true) { - var charBuffered = false; - switch (ch | 0) { - case -1: - warn('Unterminated string'); - done = true; - break; - case 0x28: // '(' - ++numParen; - strBuf.push('('); - break; - case 0x29: // ')' - if (--numParen === 0) { - this.nextChar(); // consume strings ')' - done = true; - } else { - strBuf.push(')'); - } - break; - case 0x5C: // '\\' - ch = this.nextChar(); - switch (ch) { - case -1: - warn('Unterminated string'); - done = true; - break; - case 0x6E: // 'n' - strBuf.push('\n'); - break; - case 0x72: // 'r' - strBuf.push('\r'); - break; - case 0x74: // 't' - strBuf.push('\t'); - break; - case 0x62: // 'b' - strBuf.push('\b'); - break; - case 0x66: // 'f' - strBuf.push('\f'); - break; - case 0x5C: // '\' - case 0x28: // '(' - case 0x29: // ')' - strBuf.push(String.fromCharCode(ch)); - break; - case 0x30: case 0x31: case 0x32: case 0x33: // '0'-'3' - case 0x34: case 0x35: case 0x36: case 0x37: // '4'-'7' - var x = ch & 0x0F; - ch = this.nextChar(); - charBuffered = true; - if (ch >= 0x30 && ch <= 0x37) { // '0'-'7' - x = (x << 3) + (ch & 0x0F); - ch = this.nextChar(); - if (ch >= 0x30 && ch <= 0x37) { // '0'-'7' - charBuffered = false; - x = (x << 3) + (ch & 0x0F); - } - } - strBuf.push(String.fromCharCode(x)); - break; - case 0x0D: // CR - if (this.peekChar() === 0x0A) { // LF - this.nextChar(); - } - break; - case 0x0A: // LF - break; - default: - strBuf.push(String.fromCharCode(ch)); - break; - } - break; - default: - strBuf.push(String.fromCharCode(ch)); - break; - } - if (done) { - break; - } - if (!charBuffered) { - ch = this.nextChar(); - } - } - return strBuf.join(''); - }, - getName: function Lexer_getName() { - var ch, previousCh; - var strBuf = this.strBuf; - strBuf.length = 0; - while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) { - if (ch === 0x23) { // '#' - ch = this.nextChar(); - if (specialChars[ch]) { - warn('Lexer_getName: ' + - 'NUMBER SIGN (#) should be followed by a hexadecimal number.'); - strBuf.push('#'); - break; - } - var x = toHexDigit(ch); - if (x !== -1) { - previousCh = ch; - ch = this.nextChar(); - var x2 = toHexDigit(ch); - if (x2 === -1) { - warn('Lexer_getName: Illegal digit (' + - String.fromCharCode(ch) +') in hexadecimal number.'); - strBuf.push('#', String.fromCharCode(previousCh)); - if (specialChars[ch]) { - break; - } - strBuf.push(String.fromCharCode(ch)); - continue; - } - strBuf.push(String.fromCharCode((x << 4) | x2)); - } else { - strBuf.push('#', String.fromCharCode(ch)); - } - } else { - strBuf.push(String.fromCharCode(ch)); - } - } - if (strBuf.length > 127) { - warn('name token is longer than allowed by the spec: ' + strBuf.length); - } - return Name.get(strBuf.join('')); - }, - getHexString: function Lexer_getHexString() { - var strBuf = this.strBuf; - strBuf.length = 0; - var ch = this.currentChar; - var isFirstHex = true; - var firstDigit; - var secondDigit; - while (true) { - if (ch < 0) { - warn('Unterminated hex string'); - break; - } else if (ch === 0x3E) { // '>' - this.nextChar(); - break; - } else if (specialChars[ch] === 1) { - ch = this.nextChar(); - continue; - } else { - if (isFirstHex) { - firstDigit = toHexDigit(ch); - if (firstDigit === -1) { - warn('Ignoring invalid character "' + ch + '" in hex string'); - ch = this.nextChar(); - continue; - } - } else { - secondDigit = toHexDigit(ch); - if (secondDigit === -1) { - warn('Ignoring invalid character "' + ch + '" in hex string'); - ch = this.nextChar(); - continue; - } - strBuf.push(String.fromCharCode((firstDigit << 4) | secondDigit)); - } - isFirstHex = !isFirstHex; - ch = this.nextChar(); - } - } - return strBuf.join(''); - }, - getObj: function Lexer_getObj() { - // skip whitespace and comments - var comment = false; - var ch = this.currentChar; - while (true) { - if (ch < 0) { - return EOF; - } - if (comment) { - if (ch === 0x0A || ch === 0x0D) { // LF, CR - comment = false; - } - } else if (ch === 0x25) { // '%' - comment = true; - } else if (specialChars[ch] !== 1) { - break; - } - ch = this.nextChar(); - } - - // start reading token - switch (ch | 0) { - case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: // '0'-'4' - case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: // '5'-'9' - case 0x2B: case 0x2D: case 0x2E: // '+', '-', '.' - return this.getNumber(); - case 0x28: // '(' - return this.getString(); - case 0x2F: // '/' - return this.getName(); - // array punctuation - case 0x5B: // '[' - this.nextChar(); - return Cmd.get('['); - case 0x5D: // ']' - this.nextChar(); - return Cmd.get(']'); - // hex string or dict punctuation - case 0x3C: // '<' - ch = this.nextChar(); - if (ch === 0x3C) { - // dict punctuation - this.nextChar(); - return Cmd.get('<<'); - } - return this.getHexString(); - // dict punctuation - case 0x3E: // '>' - ch = this.nextChar(); - if (ch === 0x3E) { - this.nextChar(); - return Cmd.get('>>'); - } - return Cmd.get('>'); - case 0x7B: // '{' - this.nextChar(); - return Cmd.get('{'); - case 0x7D: // '}' - this.nextChar(); - return Cmd.get('}'); - case 0x29: // ')' - error('Illegal character: ' + ch); - break; - } - - // command - var str = String.fromCharCode(ch); - var knownCommands = this.knownCommands; - var knownCommandFound = knownCommands && knownCommands[str] !== undefined; - while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) { - // stop if known command is found and next character does not make - // the str a command - var possibleCommand = str + String.fromCharCode(ch); - if (knownCommandFound && knownCommands[possibleCommand] === undefined) { - break; - } - if (str.length === 128) { - error('Command token too long: ' + str.length); - } - str = possibleCommand; - knownCommandFound = knownCommands && knownCommands[str] !== undefined; - } - if (str === 'true') { - return true; - } - if (str === 'false') { - return false; - } - if (str === 'null') { - return null; - } - return Cmd.get(str); - }, - skipToNextLine: function Lexer_skipToNextLine() { - var ch = this.currentChar; - while (ch >= 0) { - if (ch === 0x0D) { // CR - ch = this.nextChar(); - if (ch === 0x0A) { // LF - this.nextChar(); - } - break; - } else if (ch === 0x0A) { // LF - this.nextChar(); - break; - } - ch = this.nextChar(); - } - } - }; - - return Lexer; -})(); - -var Linearization = { - create: function LinearizationCreate(stream) { - function getInt(name, allowZeroValue) { - var obj = linDict.get(name); - if (isInt(obj) && (allowZeroValue ? obj >= 0 : obj > 0)) { - return obj; - } - throw new Error('The "' + name + '" parameter in the linearization ' + - 'dictionary is invalid.'); - } - function getHints() { - var hints = linDict.get('H'), hintsLength, item; - if (isArray(hints) && - ((hintsLength = hints.length) === 2 || hintsLength === 4)) { - for (var index = 0; index < hintsLength; index++) { - if (!(isInt(item = hints[index]) && item > 0)) { - throw new Error('Hint (' + index + - ') in the linearization dictionary is invalid.'); - } - } - return hints; - } - throw new Error('Hint array in the linearization dictionary is invalid.'); - } - var parser = new Parser(new Lexer(stream), false, null); - var obj1 = parser.getObj(); - var obj2 = parser.getObj(); - var obj3 = parser.getObj(); - var linDict = parser.getObj(); - var obj, length; - if (!(isInt(obj1) && isInt(obj2) && isCmd(obj3, 'obj') && isDict(linDict) && - isNum(obj = linDict.get('Linearized')) && obj > 0)) { - return null; // No valid linearization dictionary found. - } else if ((length = getInt('L')) !== stream.length) { - throw new Error('The "L" parameter in the linearization dictionary ' + - 'does not equal the stream length.'); - } - return { - length: length, - hints: getHints(), - objectNumberFirst: getInt('O'), - endFirst: getInt('E'), - numPages: getInt('N'), - mainXRefEntriesOffset: getInt('T'), - pageFirst: (linDict.has('P') ? getInt('P', true) : 0) - }; - } -}; - -exports.EOF = EOF; -exports.Lexer = Lexer; -exports.Linearization = Linearization; -exports.Parser = Parser; -exports.isEOF = isEOF; - -// TODO refactor to remove dependency on stream.js -coreStream._setCoreParser(exports); -})); - - -(function (root, factory) { - { - factory((root.pdfjsCoreCMap = {}), root.pdfjsSharedUtil, - root.pdfjsCorePrimitives, root.pdfjsCoreStream, root.pdfjsCoreParser); - } -}(this, function (exports, sharedUtil, corePrimitives, coreStream, coreParser) { - -var Util = sharedUtil.Util; -var assert = sharedUtil.assert; -var error = sharedUtil.error; -var isInt = sharedUtil.isInt; -var isString = sharedUtil.isString; -var warn = sharedUtil.warn; -var isName = corePrimitives.isName; -var isCmd = corePrimitives.isCmd; -var isStream = corePrimitives.isStream; -var StringStream = coreStream.StringStream; -var Lexer = coreParser.Lexer; -var isEOF = coreParser.isEOF; - -var BUILT_IN_CMAPS = [ -// << Start unicode maps. -'Adobe-GB1-UCS2', -'Adobe-CNS1-UCS2', -'Adobe-Japan1-UCS2', -'Adobe-Korea1-UCS2', -// >> End unicode maps. -'78-EUC-H', -'78-EUC-V', -'78-H', -'78-RKSJ-H', -'78-RKSJ-V', -'78-V', -'78ms-RKSJ-H', -'78ms-RKSJ-V', -'83pv-RKSJ-H', -'90ms-RKSJ-H', -'90ms-RKSJ-V', -'90msp-RKSJ-H', -'90msp-RKSJ-V', -'90pv-RKSJ-H', -'90pv-RKSJ-V', -'Add-H', -'Add-RKSJ-H', -'Add-RKSJ-V', -'Add-V', -'Adobe-CNS1-0', -'Adobe-CNS1-1', -'Adobe-CNS1-2', -'Adobe-CNS1-3', -'Adobe-CNS1-4', -'Adobe-CNS1-5', -'Adobe-CNS1-6', -'Adobe-GB1-0', -'Adobe-GB1-1', -'Adobe-GB1-2', -'Adobe-GB1-3', -'Adobe-GB1-4', -'Adobe-GB1-5', -'Adobe-Japan1-0', -'Adobe-Japan1-1', -'Adobe-Japan1-2', -'Adobe-Japan1-3', -'Adobe-Japan1-4', -'Adobe-Japan1-5', -'Adobe-Japan1-6', -'Adobe-Korea1-0', -'Adobe-Korea1-1', -'Adobe-Korea1-2', -'B5-H', -'B5-V', -'B5pc-H', -'B5pc-V', -'CNS-EUC-H', -'CNS-EUC-V', -'CNS1-H', -'CNS1-V', -'CNS2-H', -'CNS2-V', -'ETHK-B5-H', -'ETHK-B5-V', -'ETen-B5-H', -'ETen-B5-V', -'ETenms-B5-H', -'ETenms-B5-V', -'EUC-H', -'EUC-V', -'Ext-H', -'Ext-RKSJ-H', -'Ext-RKSJ-V', -'Ext-V', -'GB-EUC-H', -'GB-EUC-V', -'GB-H', -'GB-V', -'GBK-EUC-H', -'GBK-EUC-V', -'GBK2K-H', -'GBK2K-V', -'GBKp-EUC-H', -'GBKp-EUC-V', -'GBT-EUC-H', -'GBT-EUC-V', -'GBT-H', -'GBT-V', -'GBTpc-EUC-H', -'GBTpc-EUC-V', -'GBpc-EUC-H', -'GBpc-EUC-V', -'H', -'HKdla-B5-H', -'HKdla-B5-V', -'HKdlb-B5-H', -'HKdlb-B5-V', -'HKgccs-B5-H', -'HKgccs-B5-V', -'HKm314-B5-H', -'HKm314-B5-V', -'HKm471-B5-H', -'HKm471-B5-V', -'HKscs-B5-H', -'HKscs-B5-V', -'Hankaku', -'Hiragana', -'KSC-EUC-H', -'KSC-EUC-V', -'KSC-H', -'KSC-Johab-H', -'KSC-Johab-V', -'KSC-V', -'KSCms-UHC-H', -'KSCms-UHC-HW-H', -'KSCms-UHC-HW-V', -'KSCms-UHC-V', -'KSCpc-EUC-H', -'KSCpc-EUC-V', -'Katakana', -'NWP-H', -'NWP-V', -'RKSJ-H', -'RKSJ-V', -'Roman', -'UniCNS-UCS2-H', -'UniCNS-UCS2-V', -'UniCNS-UTF16-H', -'UniCNS-UTF16-V', -'UniCNS-UTF32-H', -'UniCNS-UTF32-V', -'UniCNS-UTF8-H', -'UniCNS-UTF8-V', -'UniGB-UCS2-H', -'UniGB-UCS2-V', -'UniGB-UTF16-H', -'UniGB-UTF16-V', -'UniGB-UTF32-H', -'UniGB-UTF32-V', -'UniGB-UTF8-H', -'UniGB-UTF8-V', -'UniJIS-UCS2-H', -'UniJIS-UCS2-HW-H', -'UniJIS-UCS2-HW-V', -'UniJIS-UCS2-V', -'UniJIS-UTF16-H', -'UniJIS-UTF16-V', -'UniJIS-UTF32-H', -'UniJIS-UTF32-V', -'UniJIS-UTF8-H', -'UniJIS-UTF8-V', -'UniJIS2004-UTF16-H', -'UniJIS2004-UTF16-V', -'UniJIS2004-UTF32-H', -'UniJIS2004-UTF32-V', -'UniJIS2004-UTF8-H', -'UniJIS2004-UTF8-V', -'UniJISPro-UCS2-HW-V', -'UniJISPro-UCS2-V', -'UniJISPro-UTF8-V', -'UniJISX0213-UTF32-H', -'UniJISX0213-UTF32-V', -'UniJISX02132004-UTF32-H', -'UniJISX02132004-UTF32-V', -'UniKS-UCS2-H', -'UniKS-UCS2-V', -'UniKS-UTF16-H', -'UniKS-UTF16-V', -'UniKS-UTF32-H', -'UniKS-UTF32-V', -'UniKS-UTF8-H', -'UniKS-UTF8-V', -'V', -'WP-Symbol']; - -// CMap, not to be confused with TrueType's cmap. -var CMap = (function CMapClosure() { - function CMap(builtInCMap) { - // Codespace ranges are stored as follows: - // [[1BytePairs], [2BytePairs], [3BytePairs], [4BytePairs]] - // where nBytePairs are ranges e.g. [low1, high1, low2, high2, ...] - this.codespaceRanges = [[], [], [], []]; - this.numCodespaceRanges = 0; - // Map entries have one of two forms. - // - cid chars are 16-bit unsigned integers, stored as integers. - // - bf chars are variable-length byte sequences, stored as strings, with - // one byte per character. - this._map = []; - this.name = ''; - this.vertical = false; - this.useCMap = null; - this.builtInCMap = builtInCMap; - } - CMap.prototype = { - addCodespaceRange: function(n, low, high) { - this.codespaceRanges[n - 1].push(low, high); - this.numCodespaceRanges++; - }, - - mapCidRange: function(low, high, dstLow) { - while (low <= high) { - this._map[low++] = dstLow++; - } - }, - - mapBfRange: function(low, high, dstLow) { - var lastByte = dstLow.length - 1; - while (low <= high) { - this._map[low++] = dstLow; - // Only the last byte has to be incremented. - dstLow = dstLow.substr(0, lastByte) + - String.fromCharCode(dstLow.charCodeAt(lastByte) + 1); - } - }, - - mapBfRangeToArray: function(low, high, array) { - var i = 0, ii = array.length; - while (low <= high && i < ii) { - this._map[low] = array[i++]; - ++low; - } - }, - - // This is used for both bf and cid chars. - mapOne: function(src, dst) { - this._map[src] = dst; - }, - - lookup: function(code) { - return this._map[code]; - }, - - contains: function(code) { - return this._map[code] !== undefined; - }, - - forEach: function(callback) { - // Most maps have fewer than 65536 entries, and for those we use normal - // array iteration. But really sparse tables are possible -- e.g. with - // indices in the *billions*. For such tables we use for..in, which isn't - // ideal because it stringifies the indices for all present elements, but - // it does avoid iterating over every undefined entry. - var map = this._map; - var length = map.length; - var i; - if (length <= 0x10000) { - for (i = 0; i < length; i++) { - if (map[i] !== undefined) { - callback(i, map[i]); - } - } - } else { - for (i in this._map) { - callback(i, map[i]); - } - } - }, - - charCodeOf: function(value) { - return this._map.indexOf(value); - }, - - getMap: function() { - return this._map; - }, - - readCharCode: function(str, offset, out) { - var c = 0; - var codespaceRanges = this.codespaceRanges; - var codespaceRangesLen = this.codespaceRanges.length; - // 9.7.6.2 CMap Mapping - // The code length is at most 4. - for (var n = 0; n < codespaceRangesLen; n++) { - c = ((c << 8) | str.charCodeAt(offset + n)) >>> 0; - // Check each codespace range to see if it falls within. - var codespaceRange = codespaceRanges[n]; - for (var k = 0, kk = codespaceRange.length; k < kk;) { - var low = codespaceRange[k++]; - var high = codespaceRange[k++]; - if (c >= low && c <= high) { - out.charcode = c; - out.length = n + 1; - return; - } - } - } - out.charcode = 0; - out.length = 1; - }, - - get length() { - return this._map.length; - }, - - get isIdentityCMap() { - if (!(this.name === 'Identity-H' || this.name === 'Identity-V')) { - return false; - } - if (this._map.length !== 0x10000) { - return false; - } - for (var i = 0; i < 0x10000; i++) { - if (this._map[i] !== i) { - return false; - } - } - return true; - } - }; - return CMap; -})(); - -// A special case of CMap, where the _map array implicitly has a length of -// 65536 and each element is equal to its index. -var IdentityCMap = (function IdentityCMapClosure() { - function IdentityCMap(vertical, n) { - CMap.call(this); - this.vertical = vertical; - this.addCodespaceRange(n, 0, 0xffff); - } - Util.inherit(IdentityCMap, CMap, {}); - - IdentityCMap.prototype = { - addCodespaceRange: CMap.prototype.addCodespaceRange, - - mapCidRange: function(low, high, dstLow) { - error('should not call mapCidRange'); - }, - - mapBfRange: function(low, high, dstLow) { - error('should not call mapBfRange'); - }, - - mapBfRangeToArray: function(low, high, array) { - error('should not call mapBfRangeToArray'); - }, - - mapOne: function(src, dst) { - error('should not call mapCidOne'); - }, - - lookup: function(code) { - return (isInt(code) && code <= 0xffff) ? code : undefined; - }, - - contains: function(code) { - return isInt(code) && code <= 0xffff; - }, - - forEach: function(callback) { - for (var i = 0; i <= 0xffff; i++) { - callback(i, i); - } - }, - - charCodeOf: function(value) { - return (isInt(value) && value <= 0xffff) ? value : -1; - }, - - getMap: function() { - // Sometimes identity maps must be instantiated, but it's rare. - var map = new Array(0x10000); - for (var i = 0; i <= 0xffff; i++) { - map[i] = i; - } - return map; - }, - - readCharCode: CMap.prototype.readCharCode, - - get length() { - return 0x10000; - }, - - get isIdentityCMap() { - error('should not access .isIdentityCMap'); - } - }; - - return IdentityCMap; -})(); - -var BinaryCMapReader = (function BinaryCMapReaderClosure() { - function fetchBinaryData(url) { - var nonBinaryRequest = PDFJS.disableWorker; - var request = new XMLHttpRequest(); - request.open('GET', url, false); - if (!nonBinaryRequest) { - try { - request.responseType = 'arraybuffer'; - nonBinaryRequest = request.responseType !== 'arraybuffer'; - } catch (e) { - nonBinaryRequest = true; - } - } - if (nonBinaryRequest && request.overrideMimeType) { - request.overrideMimeType('text/plain; charset=x-user-defined'); - } - request.send(null); - if (nonBinaryRequest ? !request.responseText : !request.response) { - error('Unable to get binary cMap at: ' + url); - } - if (nonBinaryRequest) { - var data = Array.prototype.map.call(request.responseText, function (ch) { - return ch.charCodeAt(0) & 255; - }); - return new Uint8Array(data); - } - return new Uint8Array(request.response); - } - - function hexToInt(a, size) { - var n = 0; - for (var i = 0; i <= size; i++) { - n = (n << 8) | a[i]; - } - return n >>> 0; - } - - function hexToStr(a, size) { - // This code is hot. Special-case some common values to avoid creating an - // object with subarray(). - if (size === 1) { - return String.fromCharCode(a[0], a[1]); - } - if (size === 3) { - return String.fromCharCode(a[0], a[1], a[2], a[3]); - } - return String.fromCharCode.apply(null, a.subarray(0, size + 1)); - } - - function addHex(a, b, size) { - var c = 0; - for (var i = size; i >= 0; i--) { - c += a[i] + b[i]; - a[i] = c & 255; - c >>= 8; - } - } - - function incHex(a, size) { - var c = 1; - for (var i = size; i >= 0 && c > 0; i--) { - c += a[i]; - a[i] = c & 255; - c >>= 8; - } - } - - var MAX_NUM_SIZE = 16; - var MAX_ENCODED_NUM_SIZE = 19; // ceil(MAX_NUM_SIZE * 7 / 8) - - function BinaryCMapStream(data) { - this.buffer = data; - this.pos = 0; - this.end = data.length; - this.tmpBuf = new Uint8Array(MAX_ENCODED_NUM_SIZE); - } - - BinaryCMapStream.prototype = { - readByte: function () { - if (this.pos >= this.end) { - return -1; - } - return this.buffer[this.pos++]; - }, - readNumber: function () { - var n = 0; - var last; - do { - var b = this.readByte(); - if (b < 0) { - error('unexpected EOF in bcmap'); - } - last = !(b & 0x80); - n = (n << 7) | (b & 0x7F); - } while (!last); - return n; - }, - readSigned: function () { - var n = this.readNumber(); - return (n & 1) ? ~(n >>> 1) : n >>> 1; - }, - readHex: function (num, size) { - num.set(this.buffer.subarray(this.pos, - this.pos + size + 1)); - this.pos += size + 1; - }, - readHexNumber: function (num, size) { - var last; - var stack = this.tmpBuf, sp = 0; - do { - var b = this.readByte(); - if (b < 0) { - error('unexpected EOF in bcmap'); - } - last = !(b & 0x80); - stack[sp++] = b & 0x7F; - } while (!last); - var i = size, buffer = 0, bufferSize = 0; - while (i >= 0) { - while (bufferSize < 8 && stack.length > 0) { - buffer = (stack[--sp] << bufferSize) | buffer; - bufferSize += 7; - } - num[i] = buffer & 255; - i--; - buffer >>= 8; - bufferSize -= 8; - } - }, - readHexSigned: function (num, size) { - this.readHexNumber(num, size); - var sign = num[size] & 1 ? 255 : 0; - var c = 0; - for (var i = 0; i <= size; i++) { - c = ((c & 1) << 8) | num[i]; - num[i] = (c >> 1) ^ sign; - } - }, - readString: function () { - var len = this.readNumber(); - var s = ''; - for (var i = 0; i < len; i++) { - s += String.fromCharCode(this.readNumber()); - } - return s; - } - }; - - function processBinaryCMap(url, cMap, extend) { - var data = fetchBinaryData(url); - var stream = new BinaryCMapStream(data); - - var header = stream.readByte(); - cMap.vertical = !!(header & 1); - - var useCMap = null; - var start = new Uint8Array(MAX_NUM_SIZE); - var end = new Uint8Array(MAX_NUM_SIZE); - var char = new Uint8Array(MAX_NUM_SIZE); - var charCode = new Uint8Array(MAX_NUM_SIZE); - var tmp = new Uint8Array(MAX_NUM_SIZE); - var code; - - var b; - while ((b = stream.readByte()) >= 0) { - var type = b >> 5; - if (type === 7) { // metadata, e.g. comment or usecmap - switch (b & 0x1F) { - case 0: - stream.readString(); // skipping comment - break; - case 1: - useCMap = stream.readString(); - break; - } - continue; - } - var sequence = !!(b & 0x10); - var dataSize = b & 15; - - assert(dataSize + 1 <= MAX_NUM_SIZE); - - var ucs2DataSize = 1; - var subitemsCount = stream.readNumber(); - var i; - switch (type) { - case 0: // codespacerange - stream.readHex(start, dataSize); - stream.readHexNumber(end, dataSize); - addHex(end, start, dataSize); - cMap.addCodespaceRange(dataSize + 1, hexToInt(start, dataSize), - hexToInt(end, dataSize)); - for (i = 1; i < subitemsCount; i++) { - incHex(end, dataSize); - stream.readHexNumber(start, dataSize); - addHex(start, end, dataSize); - stream.readHexNumber(end, dataSize); - addHex(end, start, dataSize); - cMap.addCodespaceRange(dataSize + 1, hexToInt(start, dataSize), - hexToInt(end, dataSize)); - } - break; - case 1: // notdefrange - stream.readHex(start, dataSize); - stream.readHexNumber(end, dataSize); - addHex(end, start, dataSize); - code = stream.readNumber(); - // undefined range, skipping - for (i = 1; i < subitemsCount; i++) { - incHex(end, dataSize); - stream.readHexNumber(start, dataSize); - addHex(start, end, dataSize); - stream.readHexNumber(end, dataSize); - addHex(end, start, dataSize); - code = stream.readNumber(); - // nop - } - break; - case 2: // cidchar - stream.readHex(char, dataSize); - code = stream.readNumber(); - cMap.mapOne(hexToInt(char, dataSize), code); - for (i = 1; i < subitemsCount; i++) { - incHex(char, dataSize); - if (!sequence) { - stream.readHexNumber(tmp, dataSize); - addHex(char, tmp, dataSize); - } - code = stream.readSigned() + (code + 1); - cMap.mapOne(hexToInt(char, dataSize), code); - } - break; - case 3: // cidrange - stream.readHex(start, dataSize); - stream.readHexNumber(end, dataSize); - addHex(end, start, dataSize); - code = stream.readNumber(); - cMap.mapCidRange(hexToInt(start, dataSize), hexToInt(end, dataSize), - code); - for (i = 1; i < subitemsCount; i++) { - incHex(end, dataSize); - if (!sequence) { - stream.readHexNumber(start, dataSize); - addHex(start, end, dataSize); - } else { - start.set(end); - } - stream.readHexNumber(end, dataSize); - addHex(end, start, dataSize); - code = stream.readNumber(); - cMap.mapCidRange(hexToInt(start, dataSize), hexToInt(end, dataSize), - code); - } - break; - case 4: // bfchar - stream.readHex(char, ucs2DataSize); - stream.readHex(charCode, dataSize); - cMap.mapOne(hexToInt(char, ucs2DataSize), - hexToStr(charCode, dataSize)); - for (i = 1; i < subitemsCount; i++) { - incHex(char, ucs2DataSize); - if (!sequence) { - stream.readHexNumber(tmp, ucs2DataSize); - addHex(char, tmp, ucs2DataSize); - } - incHex(charCode, dataSize); - stream.readHexSigned(tmp, dataSize); - addHex(charCode, tmp, dataSize); - cMap.mapOne(hexToInt(char, ucs2DataSize), - hexToStr(charCode, dataSize)); - } - break; - case 5: // bfrange - stream.readHex(start, ucs2DataSize); - stream.readHexNumber(end, ucs2DataSize); - addHex(end, start, ucs2DataSize); - stream.readHex(charCode, dataSize); - cMap.mapBfRange(hexToInt(start, ucs2DataSize), - hexToInt(end, ucs2DataSize), - hexToStr(charCode, dataSize)); - for (i = 1; i < subitemsCount; i++) { - incHex(end, ucs2DataSize); - if (!sequence) { - stream.readHexNumber(start, ucs2DataSize); - addHex(start, end, ucs2DataSize); - } else { - start.set(end); - } - stream.readHexNumber(end, ucs2DataSize); - addHex(end, start, ucs2DataSize); - stream.readHex(charCode, dataSize); - cMap.mapBfRange(hexToInt(start, ucs2DataSize), - hexToInt(end, ucs2DataSize), - hexToStr(charCode, dataSize)); - } - break; - default: - error('Unknown type: ' + type); - break; - } - } - - if (useCMap) { - extend(useCMap); - } - return cMap; - } - - function BinaryCMapReader() {} - - BinaryCMapReader.prototype = { - read: processBinaryCMap - }; - - return BinaryCMapReader; -})(); - -var CMapFactory = (function CMapFactoryClosure() { - function strToInt(str) { - var a = 0; - for (var i = 0; i < str.length; i++) { - a = (a << 8) | str.charCodeAt(i); - } - return a >>> 0; - } - - function expectString(obj) { - if (!isString(obj)) { - error('Malformed CMap: expected string.'); - } - } - - function expectInt(obj) { - if (!isInt(obj)) { - error('Malformed CMap: expected int.'); - } - } - - function parseBfChar(cMap, lexer) { - while (true) { - var obj = lexer.getObj(); - if (isEOF(obj)) { - break; - } - if (isCmd(obj, 'endbfchar')) { - return; - } - expectString(obj); - var src = strToInt(obj); - obj = lexer.getObj(); - // TODO are /dstName used? - expectString(obj); - var dst = obj; - cMap.mapOne(src, dst); - } - } - - function parseBfRange(cMap, lexer) { - while (true) { - var obj = lexer.getObj(); - if (isEOF(obj)) { - break; - } - if (isCmd(obj, 'endbfrange')) { - return; - } - expectString(obj); - var low = strToInt(obj); - obj = lexer.getObj(); - expectString(obj); - var high = strToInt(obj); - obj = lexer.getObj(); - if (isInt(obj) || isString(obj)) { - var dstLow = isInt(obj) ? String.fromCharCode(obj) : obj; - cMap.mapBfRange(low, high, dstLow); - } else if (isCmd(obj, '[')) { - obj = lexer.getObj(); - var array = []; - while (!isCmd(obj, ']') && !isEOF(obj)) { - array.push(obj); - obj = lexer.getObj(); - } - cMap.mapBfRangeToArray(low, high, array); - } else { - break; - } - } - error('Invalid bf range.'); - } - - function parseCidChar(cMap, lexer) { - while (true) { - var obj = lexer.getObj(); - if (isEOF(obj)) { - break; - } - if (isCmd(obj, 'endcidchar')) { - return; - } - expectString(obj); - var src = strToInt(obj); - obj = lexer.getObj(); - expectInt(obj); - var dst = obj; - cMap.mapOne(src, dst); - } - } - - function parseCidRange(cMap, lexer) { - while (true) { - var obj = lexer.getObj(); - if (isEOF(obj)) { - break; - } - if (isCmd(obj, 'endcidrange')) { - return; - } - expectString(obj); - var low = strToInt(obj); - obj = lexer.getObj(); - expectString(obj); - var high = strToInt(obj); - obj = lexer.getObj(); - expectInt(obj); - var dstLow = obj; - cMap.mapCidRange(low, high, dstLow); - } - } - - function parseCodespaceRange(cMap, lexer) { - while (true) { - var obj = lexer.getObj(); - if (isEOF(obj)) { - break; - } - if (isCmd(obj, 'endcodespacerange')) { - return; - } - if (!isString(obj)) { - break; - } - var low = strToInt(obj); - obj = lexer.getObj(); - if (!isString(obj)) { - break; - } - var high = strToInt(obj); - cMap.addCodespaceRange(obj.length, low, high); - } - error('Invalid codespace range.'); - } - - function parseWMode(cMap, lexer) { - var obj = lexer.getObj(); - if (isInt(obj)) { - cMap.vertical = !!obj; - } - } - - function parseCMapName(cMap, lexer) { - var obj = lexer.getObj(); - if (isName(obj) && isString(obj.name)) { - cMap.name = obj.name; - } - } - - function parseCMap(cMap, lexer, builtInCMapParams, useCMap) { - var previous; - var embededUseCMap; - objLoop: while (true) { - var obj = lexer.getObj(); - if (isEOF(obj)) { - break; - } else if (isName(obj)) { - if (obj.name === 'WMode') { - parseWMode(cMap, lexer); - } else if (obj.name === 'CMapName') { - parseCMapName(cMap, lexer); - } - previous = obj; - } else if (isCmd(obj)) { - switch (obj.cmd) { - case 'endcmap': - break objLoop; - case 'usecmap': - if (isName(previous)) { - embededUseCMap = previous.name; - } - break; - case 'begincodespacerange': - parseCodespaceRange(cMap, lexer); - break; - case 'beginbfchar': - parseBfChar(cMap, lexer); - break; - case 'begincidchar': - parseCidChar(cMap, lexer); - break; - case 'beginbfrange': - parseBfRange(cMap, lexer); - break; - case 'begincidrange': - parseCidRange(cMap, lexer); - break; - } - } - } - - if (!useCMap && embededUseCMap) { - // Load the usecmap definition from the file only if there wasn't one - // specified. - useCMap = embededUseCMap; - } - if (useCMap) { - extendCMap(cMap, builtInCMapParams, useCMap); - } - } - - function extendCMap(cMap, builtInCMapParams, useCMap) { - cMap.useCMap = createBuiltInCMap(useCMap, builtInCMapParams); - // If there aren't any code space ranges defined clone all the parent ones - // into this cMap. - if (cMap.numCodespaceRanges === 0) { - var useCodespaceRanges = cMap.useCMap.codespaceRanges; - for (var i = 0; i < useCodespaceRanges.length; i++) { - cMap.codespaceRanges[i] = useCodespaceRanges[i].slice(); - } - cMap.numCodespaceRanges = cMap.useCMap.numCodespaceRanges; - } - // Merge the map into the current one, making sure not to override - // any previously defined entries. - cMap.useCMap.forEach(function(key, value) { - if (!cMap.contains(key)) { - cMap.mapOne(key, cMap.useCMap.lookup(key)); - } - }); - } - - function parseBinaryCMap(name, builtInCMapParams) { - var url = builtInCMapParams.url + name + '.bcmap'; - var cMap = new CMap(true); - new BinaryCMapReader().read(url, cMap, function (useCMap) { - extendCMap(cMap, builtInCMapParams, useCMap); - }); - return cMap; - } - - function createBuiltInCMap(name, builtInCMapParams) { - if (name === 'Identity-H') { - return new IdentityCMap(false, 2); - } else if (name === 'Identity-V') { - return new IdentityCMap(true, 2); - } - if (BUILT_IN_CMAPS.indexOf(name) === -1) { - error('Unknown cMap name: ' + name); - } - assert(builtInCMapParams, 'built-in cMap parameters are not provided'); - - if (builtInCMapParams.packed) { - return parseBinaryCMap(name, builtInCMapParams); - } - - var request = new XMLHttpRequest(); - var url = builtInCMapParams.url + name; - request.open('GET', url, false); - request.send(null); - if (!request.responseText) { - error('Unable to get cMap at: ' + url); - } - var cMap = new CMap(true); - var lexer = new Lexer(new StringStream(request.responseText)); - parseCMap(cMap, lexer, builtInCMapParams, null); - return cMap; - } - - return { - create: function (encoding, builtInCMapParams, useCMap) { - if (isName(encoding)) { - return createBuiltInCMap(encoding.name, builtInCMapParams); - } else if (isStream(encoding)) { - var cMap = new CMap(); - var lexer = new Lexer(encoding); - try { - parseCMap(cMap, lexer, builtInCMapParams, useCMap); - } catch (e) { - warn('Invalid CMap data. ' + e); - } - if (cMap.isIdentityCMap) { - return createBuiltInCMap(cMap.name, builtInCMapParams); - } - return cMap; - } - error('Encoding required.'); - } - }; -})(); - -exports.CMap = CMap; -exports.CMapFactory = CMapFactory; -exports.IdentityCMap = IdentityCMap; -})); - - -(function (root, factory) { - { - factory((root.pdfjsCoreObj = {}), root.pdfjsSharedUtil, - root.pdfjsCorePrimitives, root.pdfjsCoreCrypto, root.pdfjsCoreParser, - root.pdfjsCoreChunkedStream); - } -}(this, function (exports, sharedUtil, corePrimitives, coreCrypto, coreParser, - coreChunkedStream) { - -var InvalidPDFException = sharedUtil.InvalidPDFException; -var MissingDataException = sharedUtil.MissingDataException; -var XRefParseException = sharedUtil.XRefParseException; -var assert = sharedUtil.assert; -var bytesToString = sharedUtil.bytesToString; -var createPromiseCapability = sharedUtil.createPromiseCapability; -var error = sharedUtil.error; -var info = sharedUtil.info; -var isArray = sharedUtil.isArray; -var isInt = sharedUtil.isInt; -var isString = sharedUtil.isString; -var shadow = sharedUtil.shadow; -var stringToPDFString = sharedUtil.stringToPDFString; -var stringToUTF8String = sharedUtil.stringToUTF8String; -var warn = sharedUtil.warn; -var isValidUrl = sharedUtil.isValidUrl; -var Util = sharedUtil.Util; -var Ref = corePrimitives.Ref; -var RefSet = corePrimitives.RefSet; -var RefSetCache = corePrimitives.RefSetCache; -var isName = corePrimitives.isName; -var isCmd = corePrimitives.isCmd; -var isDict = corePrimitives.isDict; -var isRef = corePrimitives.isRef; -var isStream = corePrimitives.isStream; -var CipherTransformFactory = coreCrypto.CipherTransformFactory; -var Lexer = coreParser.Lexer; -var Parser = coreParser.Parser; -var ChunkedStream = coreChunkedStream.ChunkedStream; - -var Catalog = (function CatalogClosure() { - function Catalog(pdfManager, xref, pageFactory) { - this.pdfManager = pdfManager; - this.xref = xref; - this.catDict = xref.getCatalogObj(); - this.fontCache = new RefSetCache(); - assert(isDict(this.catDict), - 'catalog object is not a dictionary'); - - // TODO refactor to move getPage() to the PDFDocument. - this.pageFactory = pageFactory; - this.pagePromises = []; - } - - Catalog.prototype = { - get metadata() { - var streamRef = this.catDict.getRaw('Metadata'); - if (!isRef(streamRef)) { - return shadow(this, 'metadata', null); - } - - var encryptMetadata = (!this.xref.encrypt ? false : - this.xref.encrypt.encryptMetadata); - - var stream = this.xref.fetch(streamRef, !encryptMetadata); - var metadata; - if (stream && isDict(stream.dict)) { - var type = stream.dict.get('Type'); - var subtype = stream.dict.get('Subtype'); - - if (isName(type) && isName(subtype) && - type.name === 'Metadata' && subtype.name === 'XML') { - // XXX: This should examine the charset the XML document defines, - // however since there are currently no real means to decode - // arbitrary charsets, let's just hope that the author of the PDF - // was reasonable enough to stick with the XML default charset, - // which is UTF-8. - try { - metadata = stringToUTF8String(bytesToString(stream.getBytes())); - } catch (e) { - info('Skipping invalid metadata.'); - } - } - } - - return shadow(this, 'metadata', metadata); - }, - get toplevelPagesDict() { - var pagesObj = this.catDict.get('Pages'); - assert(isDict(pagesObj), 'invalid top-level pages dictionary'); - // shadow the prototype getter - return shadow(this, 'toplevelPagesDict', pagesObj); - }, - get documentOutline() { - var obj = null; - try { - obj = this.readDocumentOutline(); - } catch (ex) { - if (ex instanceof MissingDataException) { - throw ex; - } - warn('Unable to read document outline'); - } - return shadow(this, 'documentOutline', obj); - }, - readDocumentOutline: function Catalog_readDocumentOutline() { - var xref = this.xref; - var obj = this.catDict.get('Outlines'); - var root = { items: [] }; - if (isDict(obj)) { - obj = obj.getRaw('First'); - var processed = new RefSet(); - if (isRef(obj)) { - var queue = [{obj: obj, parent: root}]; - // to avoid recursion keeping track of the items - // in the processed dictionary - processed.put(obj); - while (queue.length > 0) { - var i = queue.shift(); - var outlineDict = xref.fetchIfRef(i.obj); - if (outlineDict === null) { - continue; - } - if (!outlineDict.has('Title')) { - error('Invalid outline item'); - } - var actionDict = outlineDict.get('A'), dest = null, url = null; - if (actionDict) { - var destEntry = actionDict.get('D'); - if (destEntry) { - dest = destEntry; - } else { - var uriEntry = actionDict.get('URI'); - if (isString(uriEntry) && isValidUrl(uriEntry, false)) { - url = uriEntry; - } - } - } else if (outlineDict.has('Dest')) { - dest = outlineDict.getRaw('Dest'); - if (isName(dest)) { - dest = dest.name; - } - } - var title = outlineDict.get('Title'); - var outlineItem = { - dest: dest, - url: url, - title: stringToPDFString(title), - color: outlineDict.get('C') || [0, 0, 0], - count: outlineDict.get('Count'), - bold: !!(outlineDict.get('F') & 2), - italic: !!(outlineDict.get('F') & 1), - items: [] - }; - i.parent.items.push(outlineItem); - obj = outlineDict.getRaw('First'); - if (isRef(obj) && !processed.has(obj)) { - queue.push({obj: obj, parent: outlineItem}); - processed.put(obj); - } - obj = outlineDict.getRaw('Next'); - if (isRef(obj) && !processed.has(obj)) { - queue.push({obj: obj, parent: i.parent}); - processed.put(obj); - } - } - } - } - return (root.items.length > 0 ? root.items : null); - }, - get numPages() { - var obj = this.toplevelPagesDict.get('Count'); - assert( - isInt(obj), - 'page count in top level pages object is not an integer' - ); - // shadow the prototype getter - return shadow(this, 'num', obj); - }, - get destinations() { - function fetchDestination(dest) { - return isDict(dest) ? dest.get('D') : dest; - } - - var xref = this.xref; - var dests = {}, nameTreeRef, nameDictionaryRef; - var obj = this.catDict.get('Names'); - if (obj && obj.has('Dests')) { - nameTreeRef = obj.getRaw('Dests'); - } else if (this.catDict.has('Dests')) { - nameDictionaryRef = this.catDict.get('Dests'); - } - - if (nameDictionaryRef) { - // reading simple destination dictionary - obj = nameDictionaryRef; - obj.forEach(function catalogForEach(key, value) { - if (!value) { - return; - } - dests[key] = fetchDestination(value); - }); - } - if (nameTreeRef) { - var nameTree = new NameTree(nameTreeRef, xref); - var names = nameTree.getAll(); - for (var name in names) { - if (!names.hasOwnProperty(name)) { - continue; - } - dests[name] = fetchDestination(names[name]); - } - } - return shadow(this, 'destinations', dests); - }, - getDestination: function Catalog_getDestination(destinationId) { - function fetchDestination(dest) { - return isDict(dest) ? dest.get('D') : dest; - } - - var xref = this.xref; - var dest = null, nameTreeRef, nameDictionaryRef; - var obj = this.catDict.get('Names'); - if (obj && obj.has('Dests')) { - nameTreeRef = obj.getRaw('Dests'); - } else if (this.catDict.has('Dests')) { - nameDictionaryRef = this.catDict.get('Dests'); - } - - if (nameDictionaryRef) { // Simple destination dictionary. - var value = nameDictionaryRef.get(destinationId); - if (value) { - dest = fetchDestination(value); - } - } - if (nameTreeRef) { - var nameTree = new NameTree(nameTreeRef, xref); - dest = fetchDestination(nameTree.get(destinationId)); - } - return dest; - }, - - get pageLabels() { - var obj = null; - try { - obj = this.readPageLabels(); - } catch (ex) { - if (ex instanceof MissingDataException) { - throw ex; - } - warn('Unable to read page labels.'); - } - return shadow(this, 'pageLabels', obj); - }, - readPageLabels: function Catalog_readPageLabels() { - var obj = this.catDict.getRaw('PageLabels'); - if (!obj) { - return null; - } - var pageLabels = new Array(this.numPages); - var style = null; - var prefix = ''; - var start = 1; - - var numberTree = new NumberTree(obj, this.xref); - var nums = numberTree.getAll(); - var currentLabel = '', currentIndex = 1; - - for (var i = 0, ii = this.numPages; i < ii; i++) { - if (nums.hasOwnProperty(i)) { - var labelDict = nums[i]; - assert(isDict(labelDict), 'The PageLabel is not a dictionary.'); - - var type = labelDict.get('Type'); - assert(!type || (isName(type) && type.name === 'PageLabel'), - 'Invalid type in PageLabel dictionary.'); - - var s = labelDict.get('S'); - assert(!s || isName(s), 'Invalid style in PageLabel dictionary.'); - style = (s ? s.name : null); - - prefix = labelDict.get('P') || ''; - assert(isString(prefix), 'Invalid prefix in PageLabel dictionary.'); - - start = labelDict.get('St') || 1; - assert(isInt(start), 'Invalid start in PageLabel dictionary.'); - currentIndex = start; - } - - switch (style) { - case 'D': - currentLabel = currentIndex; - break; - case 'R': - case 'r': - currentLabel = Util.toRoman(currentIndex, style === 'r'); - break; - case 'A': - case 'a': - var LIMIT = 26; // Use only the characters A--Z, or a--z. - var A_UPPER_CASE = 0x41, A_LOWER_CASE = 0x61; - - var baseCharCode = (style === 'a' ? A_LOWER_CASE : A_UPPER_CASE); - var letterIndex = currentIndex - 1; - var character = String.fromCharCode(baseCharCode + - (letterIndex % LIMIT)); - var charBuf = []; - for (var j = 0, jj = (letterIndex / LIMIT) | 0; j <= jj; j++) { - charBuf.push(character); - } - currentLabel = charBuf.join(''); - break; - default: - assert(!style, - 'Invalid style "' + style + '" in PageLabel dictionary.'); - } - pageLabels[i] = prefix + currentLabel; - - currentLabel = ''; - currentIndex++; - } - return pageLabels; - }, - - get attachments() { - var xref = this.xref; - var attachments = null, nameTreeRef; - var obj = this.catDict.get('Names'); - if (obj) { - nameTreeRef = obj.getRaw('EmbeddedFiles'); - } - - if (nameTreeRef) { - var nameTree = new NameTree(nameTreeRef, xref); - var names = nameTree.getAll(); - for (var name in names) { - if (!names.hasOwnProperty(name)) { - continue; - } - var fs = new FileSpec(names[name], xref); - if (!attachments) { - attachments = {}; - } - attachments[stringToPDFString(name)] = fs.serializable; - } - } - return shadow(this, 'attachments', attachments); - }, - get javaScript() { - var xref = this.xref; - var obj = this.catDict.get('Names'); - - var javaScript = []; - function appendIfJavaScriptDict(jsDict) { - var type = jsDict.get('S'); - if (!isName(type) || type.name !== 'JavaScript') { - return; - } - var js = jsDict.get('JS'); - if (isStream(js)) { - js = bytesToString(js.getBytes()); - } else if (!isString(js)) { - return; - } - javaScript.push(stringToPDFString(js)); - } - if (obj && obj.has('JavaScript')) { - var nameTree = new NameTree(obj.getRaw('JavaScript'), xref); - var names = nameTree.getAll(); - for (var name in names) { - if (!names.hasOwnProperty(name)) { - continue; - } - // We don't really use the JavaScript right now. This code is - // defensive so we don't cause errors on document load. - var jsDict = names[name]; - if (isDict(jsDict)) { - appendIfJavaScriptDict(jsDict); - } - } - } - - // Append OpenAction actions to javaScript array - var openactionDict = this.catDict.get('OpenAction'); - if (isDict(openactionDict, 'Action')) { - var actionType = openactionDict.get('S'); - if (isName(actionType) && actionType.name === 'Named') { - // The named Print action is not a part of the PDF 1.7 specification, - // but is supported by many PDF readers/writers (including Adobe's). - var action = openactionDict.get('N'); - if (isName(action) && action.name === 'Print') { - javaScript.push('print({});'); - } - } else { - appendIfJavaScriptDict(openactionDict); - } - } - - return shadow(this, 'javaScript', javaScript); - }, - - cleanup: function Catalog_cleanup() { - var promises = []; - this.fontCache.forEach(function (promise) { - promises.push(promise); - }); - return Promise.all(promises).then(function (translatedFonts) { - for (var i = 0, ii = translatedFonts.length; i < ii; i++) { - var font = translatedFonts[i].dict; - delete font.translated; - } - this.fontCache.clear(); - }.bind(this)); - }, - - getPage: function Catalog_getPage(pageIndex) { - if (!(pageIndex in this.pagePromises)) { - this.pagePromises[pageIndex] = this.getPageDict(pageIndex).then( - function (a) { - var dict = a[0]; - var ref = a[1]; - return this.pageFactory.createPage(pageIndex, dict, ref, - this.fontCache); - }.bind(this) - ); - } - return this.pagePromises[pageIndex]; - }, - - getPageDict: function Catalog_getPageDict(pageIndex) { - var capability = createPromiseCapability(); - var nodesToVisit = [this.catDict.getRaw('Pages')]; - var currentPageIndex = 0; - var xref = this.xref; - var checkAllKids = false; - - function next() { - while (nodesToVisit.length) { - var currentNode = nodesToVisit.pop(); - - if (isRef(currentNode)) { - xref.fetchAsync(currentNode).then(function (obj) { - if (isDict(obj, 'Page') || (isDict(obj) && !obj.has('Kids'))) { - if (pageIndex === currentPageIndex) { - capability.resolve([obj, currentNode]); - } else { - currentPageIndex++; - next(); - } - return; - } - nodesToVisit.push(obj); - next(); - }, capability.reject); - return; - } - - // Must be a child page dictionary. - assert( - isDict(currentNode), - 'page dictionary kid reference points to wrong type of object' - ); - var count = currentNode.get('Count'); - // If the current node doesn't have any children, avoid getting stuck - // in an empty node further down in the tree (see issue5644.pdf). - if (count === 0) { - checkAllKids = true; - } - // Skip nodes where the page can't be. - if (currentPageIndex + count <= pageIndex) { - currentPageIndex += count; - continue; - } - - var kids = currentNode.get('Kids'); - assert(isArray(kids), 'page dictionary kids object is not an array'); - if (!checkAllKids && count === kids.length) { - // Nodes that don't have the page have been skipped and this is the - // bottom of the tree which means the page requested must be a - // descendant of this pages node. Ideally we would just resolve the - // promise with the page ref here, but there is the case where more - // pages nodes could link to single a page (see issue 3666 pdf). To - // handle this push it back on the queue so if it is a pages node it - // will be descended into. - nodesToVisit = [kids[pageIndex - currentPageIndex]]; - currentPageIndex = pageIndex; - continue; - } else { - for (var last = kids.length - 1; last >= 0; last--) { - nodesToVisit.push(kids[last]); - } - } - } - capability.reject('Page index ' + pageIndex + ' not found.'); - } - next(); - return capability.promise; - }, - - getPageIndex: function Catalog_getPageIndex(ref) { - // The page tree nodes have the count of all the leaves below them. To get - // how many pages are before we just have to walk up the tree and keep - // adding the count of siblings to the left of the node. - var xref = this.xref; - function pagesBeforeRef(kidRef) { - var total = 0; - var parentRef; - return xref.fetchAsync(kidRef).then(function (node) { - if (!node) { - return null; - } - parentRef = node.getRaw('Parent'); - return node.getAsync('Parent'); - }).then(function (parent) { - if (!parent) { - return null; - } - return parent.getAsync('Kids'); - }).then(function (kids) { - if (!kids) { - return null; - } - var kidPromises = []; - var found = false; - for (var i = 0; i < kids.length; i++) { - var kid = kids[i]; - assert(isRef(kid), 'kids must be a ref'); - if (kid.num === kidRef.num) { - found = true; - break; - } - kidPromises.push(xref.fetchAsync(kid).then(function (kid) { - if (kid.has('Count')) { - var count = kid.get('Count'); - total += count; - } else { // page leaf node - total++; - } - })); - } - if (!found) { - error('kid ref not found in parents kids'); - } - return Promise.all(kidPromises).then(function () { - return [total, parentRef]; - }); - }); - } - - var total = 0; - function next(ref) { - return pagesBeforeRef(ref).then(function (args) { - if (!args) { - return total; - } - var count = args[0]; - var parentRef = args[1]; - total += count; - return next(parentRef); - }); - } - - return next(ref); - } - }; - - return Catalog; -})(); - -var XRef = (function XRefClosure() { - function XRef(stream, password) { - this.stream = stream; - this.entries = []; - this.xrefstms = {}; - // prepare the XRef cache - this.cache = []; - this.password = password; - this.stats = { - streamTypes: [], - fontTypes: [] - }; - } - - XRef.prototype = { - setStartXRef: function XRef_setStartXRef(startXRef) { - // Store the starting positions of xref tables as we process them - // so we can recover from missing data errors - this.startXRefQueue = [startXRef]; - }, - - parse: function XRef_parse(recoveryMode) { - var trailerDict; - if (!recoveryMode) { - trailerDict = this.readXRef(); - } else { - warn('Indexing all PDF objects'); - trailerDict = this.indexObjects(); - } - trailerDict.assignXref(this); - this.trailer = trailerDict; - var encrypt = trailerDict.get('Encrypt'); - if (encrypt) { - var ids = trailerDict.get('ID'); - var fileId = (ids && ids.length) ? ids[0] : ''; - this.encrypt = new CipherTransformFactory(encrypt, fileId, - this.password); - } - - // get the root dictionary (catalog) object - if (!(this.root = trailerDict.get('Root'))) { - error('Invalid root reference'); - } - }, - - processXRefTable: function XRef_processXRefTable(parser) { - if (!('tableState' in this)) { - // Stores state of the table as we process it so we can resume - // from middle of table in case of missing data error - this.tableState = { - entryNum: 0, - streamPos: parser.lexer.stream.pos, - parserBuf1: parser.buf1, - parserBuf2: parser.buf2 - }; - } - - var obj = this.readXRefTable(parser); - - // Sanity check - if (!isCmd(obj, 'trailer')) { - error('Invalid XRef table: could not find trailer dictionary'); - } - // Read trailer dictionary, e.g. - // trailer - // << /Size 22 - // /Root 20R - // /Info 10R - // /ID [ <81b14aafa313db63dbd6f981e49f94f4> ] - // >> - // The parser goes through the entire stream << ... >> and provides - // a getter interface for the key-value table - var dict = parser.getObj(); - - // The pdflib PDF generator can generate a nested trailer dictionary - if (!isDict(dict) && dict.dict) { - dict = dict.dict; - } - if (!isDict(dict)) { - error('Invalid XRef table: could not parse trailer dictionary'); - } - delete this.tableState; - - return dict; - }, - - readXRefTable: function XRef_readXRefTable(parser) { - // Example of cross-reference table: - // xref - // 0 1 <-- subsection header (first obj #, obj count) - // 0000000000 65535 f <-- actual object (offset, generation #, f/n) - // 23 2 <-- subsection header ... and so on ... - // 0000025518 00002 n - // 0000025635 00000 n - // trailer - // ... - - var stream = parser.lexer.stream; - var tableState = this.tableState; - stream.pos = tableState.streamPos; - parser.buf1 = tableState.parserBuf1; - parser.buf2 = tableState.parserBuf2; - - // Outer loop is over subsection headers - var obj; - - while (true) { - if (!('firstEntryNum' in tableState) || !('entryCount' in tableState)) { - if (isCmd(obj = parser.getObj(), 'trailer')) { - break; - } - tableState.firstEntryNum = obj; - tableState.entryCount = parser.getObj(); - } - - var first = tableState.firstEntryNum; - var count = tableState.entryCount; - if (!isInt(first) || !isInt(count)) { - error('Invalid XRef table: wrong types in subsection header'); - } - // Inner loop is over objects themselves - for (var i = tableState.entryNum; i < count; i++) { - tableState.streamPos = stream.pos; - tableState.entryNum = i; - tableState.parserBuf1 = parser.buf1; - tableState.parserBuf2 = parser.buf2; - - var entry = {}; - entry.offset = parser.getObj(); - entry.gen = parser.getObj(); - var type = parser.getObj(); - - if (isCmd(type, 'f')) { - entry.free = true; - } else if (isCmd(type, 'n')) { - entry.uncompressed = true; - } - - // Validate entry obj - if (!isInt(entry.offset) || !isInt(entry.gen) || - !(entry.free || entry.uncompressed)) { - error('Invalid entry in XRef subsection: ' + first + ', ' + count); - } - - if (!this.entries[i + first]) { - this.entries[i + first] = entry; - } - } - - tableState.entryNum = 0; - tableState.streamPos = stream.pos; - tableState.parserBuf1 = parser.buf1; - tableState.parserBuf2 = parser.buf2; - delete tableState.firstEntryNum; - delete tableState.entryCount; - } - - // Per issue 3248: hp scanners generate bad XRef - if (first === 1 && this.entries[1] && this.entries[1].free) { - // shifting the entries - this.entries.shift(); - } - - // Sanity check: as per spec, first object must be free - if (this.entries[0] && !this.entries[0].free) { - error('Invalid XRef table: unexpected first object'); - } - return obj; - }, - - processXRefStream: function XRef_processXRefStream(stream) { - if (!('streamState' in this)) { - // Stores state of the stream as we process it so we can resume - // from middle of stream in case of missing data error - var streamParameters = stream.dict; - var byteWidths = streamParameters.get('W'); - var range = streamParameters.get('Index'); - if (!range) { - range = [0, streamParameters.get('Size')]; - } - - this.streamState = { - entryRanges: range, - byteWidths: byteWidths, - entryNum: 0, - streamPos: stream.pos - }; - } - this.readXRefStream(stream); - delete this.streamState; - - return stream.dict; - }, - - readXRefStream: function XRef_readXRefStream(stream) { - var i, j; - var streamState = this.streamState; - stream.pos = streamState.streamPos; - - var byteWidths = streamState.byteWidths; - var typeFieldWidth = byteWidths[0]; - var offsetFieldWidth = byteWidths[1]; - var generationFieldWidth = byteWidths[2]; - - var entryRanges = streamState.entryRanges; - while (entryRanges.length > 0) { - var first = entryRanges[0]; - var n = entryRanges[1]; - - if (!isInt(first) || !isInt(n)) { - error('Invalid XRef range fields: ' + first + ', ' + n); - } - if (!isInt(typeFieldWidth) || !isInt(offsetFieldWidth) || - !isInt(generationFieldWidth)) { - error('Invalid XRef entry fields length: ' + first + ', ' + n); - } - for (i = streamState.entryNum; i < n; ++i) { - streamState.entryNum = i; - streamState.streamPos = stream.pos; - - var type = 0, offset = 0, generation = 0; - for (j = 0; j < typeFieldWidth; ++j) { - type = (type << 8) | stream.getByte(); - } - // if type field is absent, its default value is 1 - if (typeFieldWidth === 0) { - type = 1; - } - for (j = 0; j < offsetFieldWidth; ++j) { - offset = (offset << 8) | stream.getByte(); - } - for (j = 0; j < generationFieldWidth; ++j) { - generation = (generation << 8) | stream.getByte(); - } - var entry = {}; - entry.offset = offset; - entry.gen = generation; - switch (type) { - case 0: - entry.free = true; - break; - case 1: - entry.uncompressed = true; - break; - case 2: - break; - default: - error('Invalid XRef entry type: ' + type); - } - if (!this.entries[first + i]) { - this.entries[first + i] = entry; - } - } - - streamState.entryNum = 0; - streamState.streamPos = stream.pos; - entryRanges.splice(0, 2); - } - }, - - indexObjects: function XRef_indexObjects() { - // Simple scan through the PDF content to find objects, - // trailers and XRef streams. - var TAB = 0x9, LF = 0xA, CR = 0xD, SPACE = 0x20; - var PERCENT = 0x25, LT = 0x3C; - - function readToken(data, offset) { - var token = '', ch = data[offset]; - while (ch !== LF && ch !== CR && ch !== LT) { - if (++offset >= data.length) { - break; - } - token += String.fromCharCode(ch); - ch = data[offset]; - } - return token; - } - function skipUntil(data, offset, what) { - var length = what.length, dataLength = data.length; - var skipped = 0; - // finding byte sequence - while (offset < dataLength) { - var i = 0; - while (i < length && data[offset + i] === what[i]) { - ++i; - } - if (i >= length) { - break; // sequence found - } - offset++; - skipped++; - } - return skipped; - } - var objRegExp = /^(\d+)\s+(\d+)\s+obj\b/; - var trailerBytes = new Uint8Array([116, 114, 97, 105, 108, 101, 114]); - var startxrefBytes = new Uint8Array([115, 116, 97, 114, 116, 120, 114, - 101, 102]); - var endobjBytes = new Uint8Array([101, 110, 100, 111, 98, 106]); - var xrefBytes = new Uint8Array([47, 88, 82, 101, 102]); - - // Clear out any existing entries, since they may be bogus. - this.entries.length = 0; - - var stream = this.stream; - stream.pos = 0; - var buffer = stream.getBytes(); - var position = stream.start, length = buffer.length; - var trailers = [], xrefStms = []; - while (position < length) { - var ch = buffer[position]; - if (ch === TAB || ch === LF || ch === CR || ch === SPACE) { - ++position; - continue; - } - if (ch === PERCENT) { // %-comment - do { - ++position; - if (position >= length) { - break; - } - ch = buffer[position]; - } while (ch !== LF && ch !== CR); - continue; - } - var token = readToken(buffer, position); - var m; - if (token.indexOf('xref') === 0 && - (token.length === 4 || /\s/.test(token[4]))) { - position += skipUntil(buffer, position, trailerBytes); - trailers.push(position); - position += skipUntil(buffer, position, startxrefBytes); - } else if ((m = objRegExp.exec(token))) { - if (typeof this.entries[m[1]] === 'undefined') { - this.entries[m[1]] = { - offset: position - stream.start, - gen: m[2] | 0, - uncompressed: true - }; - } - var contentLength = skipUntil(buffer, position, endobjBytes) + 7; - var content = buffer.subarray(position, position + contentLength); - - // checking XRef stream suspect - // (it shall have '/XRef' and next char is not a letter) - var xrefTagOffset = skipUntil(content, 0, xrefBytes); - if (xrefTagOffset < contentLength && - content[xrefTagOffset + 5] < 64) { - xrefStms.push(position - stream.start); - this.xrefstms[position - stream.start] = 1; // Avoid recursion - } - - position += contentLength; - } else if (token.indexOf('trailer') === 0 && - (token.length === 7 || /\s/.test(token[7]))) { - trailers.push(position); - position += skipUntil(buffer, position, startxrefBytes); - } else { - position += token.length + 1; - } - } - // reading XRef streams - var i, ii; - for (i = 0, ii = xrefStms.length; i < ii; ++i) { - this.startXRefQueue.push(xrefStms[i]); - this.readXRef(/* recoveryMode */ true); - } - // finding main trailer - var dict; - for (i = 0, ii = trailers.length; i < ii; ++i) { - stream.pos = trailers[i]; - var parser = new Parser(new Lexer(stream), true, this); - var obj = parser.getObj(); - if (!isCmd(obj, 'trailer')) { - continue; - } - // read the trailer dictionary - if (!isDict(dict = parser.getObj())) { - continue; - } - // taking the first one with 'ID' - if (dict.has('ID')) { - return dict; - } - } - // no tailer with 'ID', taking last one (if exists) - if (dict) { - return dict; - } - // nothing helps - // calling error() would reject worker with an UnknownErrorException. - throw new InvalidPDFException('Invalid PDF structure'); - }, - - readXRef: function XRef_readXRef(recoveryMode) { - var stream = this.stream; - - try { - while (this.startXRefQueue.length) { - var startXRef = this.startXRefQueue[0]; - - stream.pos = startXRef + stream.start; - - var parser = new Parser(new Lexer(stream), true, this); - var obj = parser.getObj(); - var dict; - - // Get dictionary - if (isCmd(obj, 'xref')) { - // Parse end-of-file XRef - dict = this.processXRefTable(parser); - if (!this.topDict) { - this.topDict = dict; - } - - // Recursively get other XRefs 'XRefStm', if any - obj = dict.get('XRefStm'); - if (isInt(obj)) { - var pos = obj; - // ignore previously loaded xref streams - // (possible infinite recursion) - if (!(pos in this.xrefstms)) { - this.xrefstms[pos] = 1; - this.startXRefQueue.push(pos); - } - } - } else if (isInt(obj)) { - // Parse in-stream XRef - if (!isInt(parser.getObj()) || - !isCmd(parser.getObj(), 'obj') || - !isStream(obj = parser.getObj())) { - error('Invalid XRef stream'); - } - dict = this.processXRefStream(obj); - if (!this.topDict) { - this.topDict = dict; - } - if (!dict) { - error('Failed to read XRef stream'); - } - } else { - error('Invalid XRef stream header'); - } - - // Recursively get previous dictionary, if any - obj = dict.get('Prev'); - if (isInt(obj)) { - this.startXRefQueue.push(obj); - } else if (isRef(obj)) { - // The spec says Prev must not be a reference, i.e. "/Prev NNN" - // This is a fallback for non-compliant PDFs, i.e. "/Prev NNN 0 R" - this.startXRefQueue.push(obj.num); - } - - this.startXRefQueue.shift(); - } - - return this.topDict; - } catch (e) { - if (e instanceof MissingDataException) { - throw e; - } - info('(while reading XRef): ' + e); - } - - if (recoveryMode) { - return; - } - throw new XRefParseException(); - }, - - getEntry: function XRef_getEntry(i) { - var xrefEntry = this.entries[i]; - if (xrefEntry && !xrefEntry.free && xrefEntry.offset) { - return xrefEntry; - } - return null; - }, - - fetchIfRef: function XRef_fetchIfRef(obj) { - if (!isRef(obj)) { - return obj; - } - return this.fetch(obj); - }, - - fetch: function XRef_fetch(ref, suppressEncryption) { - assert(isRef(ref), 'ref object is not a reference'); - var num = ref.num; - if (num in this.cache) { - var cacheEntry = this.cache[num]; - return cacheEntry; - } - - var xrefEntry = this.getEntry(num); - - // the referenced entry can be free - if (xrefEntry === null) { - return (this.cache[num] = null); - } - - if (xrefEntry.uncompressed) { - xrefEntry = this.fetchUncompressed(ref, xrefEntry, suppressEncryption); - } else { - xrefEntry = this.fetchCompressed(xrefEntry, suppressEncryption); - } - if (isDict(xrefEntry)){ - xrefEntry.objId = ref.toString(); - } else if (isStream(xrefEntry)) { - xrefEntry.dict.objId = ref.toString(); - } - return xrefEntry; - }, - - fetchUncompressed: function XRef_fetchUncompressed(ref, xrefEntry, - suppressEncryption) { - var gen = ref.gen; - var num = ref.num; - if (xrefEntry.gen !== gen) { - error('inconsistent generation in XRef'); - } - var stream = this.stream.makeSubStream(xrefEntry.offset + - this.stream.start); - var parser = new Parser(new Lexer(stream), true, this); - var obj1 = parser.getObj(); - var obj2 = parser.getObj(); - var obj3 = parser.getObj(); - if (!isInt(obj1) || parseInt(obj1, 10) !== num || - !isInt(obj2) || parseInt(obj2, 10) !== gen || - !isCmd(obj3)) { - error('bad XRef entry'); - } - if (!isCmd(obj3, 'obj')) { - // some bad PDFs use "obj1234" and really mean 1234 - if (obj3.cmd.indexOf('obj') === 0) { - num = parseInt(obj3.cmd.substring(3), 10); - if (!isNaN(num)) { - return num; - } - } - error('bad XRef entry'); - } - if (this.encrypt && !suppressEncryption) { - xrefEntry = parser.getObj(this.encrypt.createCipherTransform(num, gen)); - } else { - xrefEntry = parser.getObj(); - } - if (!isStream(xrefEntry)) { - this.cache[num] = xrefEntry; - } - return xrefEntry; - }, - - fetchCompressed: function XRef_fetchCompressed(xrefEntry, - suppressEncryption) { - var tableOffset = xrefEntry.offset; - var stream = this.fetch(new Ref(tableOffset, 0)); - if (!isStream(stream)) { - error('bad ObjStm stream'); - } - var first = stream.dict.get('First'); - var n = stream.dict.get('N'); - if (!isInt(first) || !isInt(n)) { - error('invalid first and n parameters for ObjStm stream'); - } - var parser = new Parser(new Lexer(stream), false, this); - parser.allowStreams = true; - var i, entries = [], num, nums = []; - // read the object numbers to populate cache - for (i = 0; i < n; ++i) { - num = parser.getObj(); - if (!isInt(num)) { - error('invalid object number in the ObjStm stream: ' + num); - } - nums.push(num); - var offset = parser.getObj(); - if (!isInt(offset)) { - error('invalid object offset in the ObjStm stream: ' + offset); - } - } - // read stream objects for cache - for (i = 0; i < n; ++i) { - entries.push(parser.getObj()); - num = nums[i]; - var entry = this.entries[num]; - if (entry && entry.offset === tableOffset && entry.gen === i) { - this.cache[num] = entries[i]; - } - } - xrefEntry = entries[xrefEntry.gen]; - if (xrefEntry === undefined) { - error('bad XRef entry for compressed object'); - } - return xrefEntry; - }, - - fetchIfRefAsync: function XRef_fetchIfRefAsync(obj) { - if (!isRef(obj)) { - return Promise.resolve(obj); - } - return this.fetchAsync(obj); - }, - - fetchAsync: function XRef_fetchAsync(ref, suppressEncryption) { - var streamManager = this.stream.manager; - var xref = this; - return new Promise(function tryFetch(resolve, reject) { - try { - resolve(xref.fetch(ref, suppressEncryption)); - } catch (e) { - if (e instanceof MissingDataException) { - streamManager.requestRange(e.begin, e.end).then(function () { - tryFetch(resolve, reject); - }, reject); - return; - } - reject(e); - } - }); - }, - - getCatalogObj: function XRef_getCatalogObj() { - return this.root; - } - }; - - return XRef; -})(); - -/** - * A NameTree/NumberTree is like a Dict but has some advantageous properties, - * see the specification (7.9.6 and 7.9.7) for additional details. - * TODO: implement all the Dict functions and make this more efficient. - */ -var NameOrNumberTree = (function NameOrNumberTreeClosure() { - function NameOrNumberTree(root, xref) { - throw new Error('Cannot initialize NameOrNumberTree.'); - } - - NameOrNumberTree.prototype = { - getAll: function NameOrNumberTree_getAll() { - var dict = {}; - if (!this.root) { - return dict; - } - var xref = this.xref; - // Reading Name/Number tree. - var processed = new RefSet(); - processed.put(this.root); - var queue = [this.root]; - while (queue.length > 0) { - var i, n; - var obj = xref.fetchIfRef(queue.shift()); - if (!isDict(obj)) { - continue; - } - if (obj.has('Kids')) { - var kids = obj.get('Kids'); - for (i = 0, n = kids.length; i < n; i++) { - var kid = kids[i]; - assert(!processed.has(kid), - 'Duplicate entry in "' + this._type + '" tree.'); - queue.push(kid); - processed.put(kid); - } - continue; - } - var entries = obj.get(this._type); - if (isArray(entries)) { - for (i = 0, n = entries.length; i < n; i += 2) { - dict[xref.fetchIfRef(entries[i])] = xref.fetchIfRef(entries[i + 1]); - } - } - } - return dict; - }, - - get: function NameOrNumberTree_get(key) { - if (!this.root) { - return null; - } - - var xref = this.xref; - var kidsOrEntries = xref.fetchIfRef(this.root); - var loopCount = 0; - var MAX_LEVELS = 10; - var l, r, m; - - // Perform a binary search to quickly find the entry that - // contains the key we are looking for. - while (kidsOrEntries.has('Kids')) { - if (++loopCount > MAX_LEVELS) { - warn('Search depth limit reached for "' + this._type + '" tree.'); - return null; - } - - var kids = kidsOrEntries.get('Kids'); - if (!isArray(kids)) { - return null; - } - - l = 0; - r = kids.length - 1; - while (l <= r) { - m = (l + r) >> 1; - var kid = xref.fetchIfRef(kids[m]); - var limits = kid.get('Limits'); - - if (key < xref.fetchIfRef(limits[0])) { - r = m - 1; - } else if (key > xref.fetchIfRef(limits[1])) { - l = m + 1; - } else { - kidsOrEntries = xref.fetchIfRef(kids[m]); - break; - } - } - if (l > r) { - return null; - } - } - - // If we get here, then we have found the right entry. Now go through the - // entries in the dictionary until we find the key we're looking for. - var entries = kidsOrEntries.get(this._type); - if (isArray(entries)) { - // Perform a binary search to reduce the lookup time. - l = 0; - r = entries.length - 2; - while (l <= r) { - // Check only even indices (0, 2, 4, ...) because the - // odd indices contain the actual data. - m = (l + r) & ~1; - var currentKey = xref.fetchIfRef(entries[m]); - if (key < currentKey) { - r = m - 2; - } else if (key > currentKey) { - l = m + 2; - } else { - return xref.fetchIfRef(entries[m + 1]); - } - } - } - return null; - } - }; - return NameOrNumberTree; -})(); - -var NameTree = (function NameTreeClosure() { - function NameTree(root, xref) { - this.root = root; - this.xref = xref; - this._type = 'Names'; - } - - Util.inherit(NameTree, NameOrNumberTree, {}); - - return NameTree; -})(); - -var NumberTree = (function NumberTreeClosure() { - function NumberTree(root, xref) { - this.root = root; - this.xref = xref; - this._type = 'Nums'; - } - - Util.inherit(NumberTree, NameOrNumberTree, {}); - - return NumberTree; -})(); - -/** - * "A PDF file can refer to the contents of another file by using a File - * Specification (PDF 1.1)", see the spec (7.11) for more details. - * NOTE: Only embedded files are supported (as part of the attachments support) - * TODO: support the 'URL' file system (with caching if !/V), portable - * collections attributes and related files (/RF) - */ -var FileSpec = (function FileSpecClosure() { - function FileSpec(root, xref) { - if (!root || !isDict(root)) { - return; - } - this.xref = xref; - this.root = root; - if (root.has('FS')) { - this.fs = root.get('FS'); - } - this.description = root.has('Desc') ? - stringToPDFString(root.get('Desc')) : - ''; - if (root.has('RF')) { - warn('Related file specifications are not supported'); - } - this.contentAvailable = true; - if (!root.has('EF')) { - this.contentAvailable = false; - warn('Non-embedded file specifications are not supported'); - } - } - - function pickPlatformItem(dict) { - // Look for the filename in this order: - // UF, F, Unix, Mac, DOS - if (dict.has('UF')) { - return dict.get('UF'); - } else if (dict.has('F')) { - return dict.get('F'); - } else if (dict.has('Unix')) { - return dict.get('Unix'); - } else if (dict.has('Mac')) { - return dict.get('Mac'); - } else if (dict.has('DOS')) { - return dict.get('DOS'); - } else { - return null; - } - } - - FileSpec.prototype = { - get filename() { - if (!this._filename && this.root) { - var filename = pickPlatformItem(this.root) || 'unnamed'; - this._filename = stringToPDFString(filename). - replace(/\\\\/g, '\\'). - replace(/\\\//g, '/'). - replace(/\\/g, '/'); - } - return this._filename; - }, - get content() { - if (!this.contentAvailable) { - return null; - } - if (!this.contentRef && this.root) { - this.contentRef = pickPlatformItem(this.root.get('EF')); - } - var content = null; - if (this.contentRef) { - var xref = this.xref; - var fileObj = xref.fetchIfRef(this.contentRef); - if (fileObj && isStream(fileObj)) { - content = fileObj.getBytes(); - } else { - warn('Embedded file specification points to non-existing/invalid ' + - 'content'); - } - } else { - warn('Embedded file specification does not have a content'); - } - return content; - }, - get serializable() { - return { - filename: this.filename, - content: this.content - }; - } - }; - return FileSpec; -})(); - -/** - * A helper for loading missing data in object graphs. It traverses the graph - * depth first and queues up any objects that have missing data. Once it has - * has traversed as many objects that are available it attempts to bundle the - * missing data requests and then resume from the nodes that weren't ready. - * - * NOTE: It provides protection from circular references by keeping track of - * of loaded references. However, you must be careful not to load any graphs - * that have references to the catalog or other pages since that will cause the - * entire PDF document object graph to be traversed. - */ -var ObjectLoader = (function() { - function mayHaveChildren(value) { - return isRef(value) || isDict(value) || isArray(value) || isStream(value); - } - - function addChildren(node, nodesToVisit) { - var value; - if (isDict(node) || isStream(node)) { - var map; - if (isDict(node)) { - map = node.map; - } else { - map = node.dict.map; - } - for (var key in map) { - value = map[key]; - if (mayHaveChildren(value)) { - nodesToVisit.push(value); - } - } - } else if (isArray(node)) { - for (var i = 0, ii = node.length; i < ii; i++) { - value = node[i]; - if (mayHaveChildren(value)) { - nodesToVisit.push(value); - } - } - } - } - - function ObjectLoader(obj, keys, xref) { - this.obj = obj; - this.keys = keys; - this.xref = xref; - this.refSet = null; - this.capability = null; - } - - ObjectLoader.prototype = { - load: function ObjectLoader_load() { - var keys = this.keys; - this.capability = createPromiseCapability(); - // Don't walk the graph if all the data is already loaded. - if (!(this.xref.stream instanceof ChunkedStream) || - this.xref.stream.getMissingChunks().length === 0) { - this.capability.resolve(); - return this.capability.promise; - } - - this.refSet = new RefSet(); - // Setup the initial nodes to visit. - var nodesToVisit = []; - for (var i = 0; i < keys.length; i++) { - nodesToVisit.push(this.obj[keys[i]]); - } - - this._walk(nodesToVisit); - return this.capability.promise; - }, - - _walk: function ObjectLoader_walk(nodesToVisit) { - var nodesToRevisit = []; - var pendingRequests = []; - // DFS walk of the object graph. - while (nodesToVisit.length) { - var currentNode = nodesToVisit.pop(); - - // Only references or chunked streams can cause missing data exceptions. - if (isRef(currentNode)) { - // Skip nodes that have already been visited. - if (this.refSet.has(currentNode)) { - continue; - } - try { - var ref = currentNode; - this.refSet.put(ref); - currentNode = this.xref.fetch(currentNode); - } catch (e) { - if (!(e instanceof MissingDataException)) { - throw e; - } - nodesToRevisit.push(currentNode); - pendingRequests.push({ begin: e.begin, end: e.end }); - } - } - if (currentNode && currentNode.getBaseStreams) { - var baseStreams = currentNode.getBaseStreams(); - var foundMissingData = false; - for (var i = 0; i < baseStreams.length; i++) { - var stream = baseStreams[i]; - if (stream.getMissingChunks && stream.getMissingChunks().length) { - foundMissingData = true; - pendingRequests.push({ - begin: stream.start, - end: stream.end - }); - } - } - if (foundMissingData) { - nodesToRevisit.push(currentNode); - } - } - - addChildren(currentNode, nodesToVisit); - } - - if (pendingRequests.length) { - this.xref.stream.manager.requestRanges(pendingRequests).then( - function pendingRequestCallback() { - nodesToVisit = nodesToRevisit; - for (var i = 0; i < nodesToRevisit.length; i++) { - var node = nodesToRevisit[i]; - // Remove any reference nodes from the currrent refset so they - // aren't skipped when we revist them. - if (isRef(node)) { - this.refSet.remove(node); - } - } - this._walk(nodesToVisit); - }.bind(this), this.capability.reject); - return; - } - // Everything is loaded. - this.refSet = null; - this.capability.resolve(); - } - }; - - return ObjectLoader; -})(); - -exports.Catalog = Catalog; -exports.ObjectLoader = ObjectLoader; -exports.XRef = XRef; -})); - - -(function (root, factory) { - { - factory((root.pdfjsCorePsParser = {}), root.pdfjsSharedUtil, - root.pdfjsCoreParser); - } -}(this, function (exports, sharedUtil, coreParser) { - -var error = sharedUtil.error; -var EOF = coreParser.EOF; -var Lexer = coreParser.Lexer; - -var PostScriptParser = (function PostScriptParserClosure() { - function PostScriptParser(lexer) { - this.lexer = lexer; - this.operators = []; - this.token = null; - this.prev = null; - } - PostScriptParser.prototype = { - nextToken: function PostScriptParser_nextToken() { - this.prev = this.token; - this.token = this.lexer.getToken(); - }, - accept: function PostScriptParser_accept(type) { - if (this.token.type === type) { - this.nextToken(); - return true; - } - return false; - }, - expect: function PostScriptParser_expect(type) { - if (this.accept(type)) { - return true; - } - error('Unexpected symbol: found ' + this.token.type + ' expected ' + - type + '.'); - }, - parse: function PostScriptParser_parse() { - this.nextToken(); - this.expect(PostScriptTokenTypes.LBRACE); - this.parseBlock(); - this.expect(PostScriptTokenTypes.RBRACE); - return this.operators; - }, - parseBlock: function PostScriptParser_parseBlock() { - while (true) { - if (this.accept(PostScriptTokenTypes.NUMBER)) { - this.operators.push(this.prev.value); - } else if (this.accept(PostScriptTokenTypes.OPERATOR)) { - this.operators.push(this.prev.value); - } else if (this.accept(PostScriptTokenTypes.LBRACE)) { - this.parseCondition(); - } else { - return; - } - } - }, - parseCondition: function PostScriptParser_parseCondition() { - // Add two place holders that will be updated later - var conditionLocation = this.operators.length; - this.operators.push(null, null); - - this.parseBlock(); - this.expect(PostScriptTokenTypes.RBRACE); - if (this.accept(PostScriptTokenTypes.IF)) { - // The true block is right after the 'if' so it just falls through on - // true else it jumps and skips the true block. - this.operators[conditionLocation] = this.operators.length; - this.operators[conditionLocation + 1] = 'jz'; - } else if (this.accept(PostScriptTokenTypes.LBRACE)) { - var jumpLocation = this.operators.length; - this.operators.push(null, null); - var endOfTrue = this.operators.length; - this.parseBlock(); - this.expect(PostScriptTokenTypes.RBRACE); - this.expect(PostScriptTokenTypes.IFELSE); - // The jump is added at the end of the true block to skip the false - // block. - this.operators[jumpLocation] = this.operators.length; - this.operators[jumpLocation + 1] = 'j'; - - this.operators[conditionLocation] = endOfTrue; - this.operators[conditionLocation + 1] = 'jz'; - } else { - error('PS Function: error parsing conditional.'); - } - } - }; - return PostScriptParser; -})(); - -var PostScriptTokenTypes = { - LBRACE: 0, - RBRACE: 1, - NUMBER: 2, - OPERATOR: 3, - IF: 4, - IFELSE: 5 -}; - -var PostScriptToken = (function PostScriptTokenClosure() { - function PostScriptToken(type, value) { - this.type = type; - this.value = value; - } - - var opCache = {}; - - PostScriptToken.getOperator = function PostScriptToken_getOperator(op) { - var opValue = opCache[op]; - if (opValue) { - return opValue; - } - return opCache[op] = new PostScriptToken(PostScriptTokenTypes.OPERATOR, op); - }; - - PostScriptToken.LBRACE = new PostScriptToken(PostScriptTokenTypes.LBRACE, - '{'); - PostScriptToken.RBRACE = new PostScriptToken(PostScriptTokenTypes.RBRACE, - '}'); - PostScriptToken.IF = new PostScriptToken(PostScriptTokenTypes.IF, 'IF'); - PostScriptToken.IFELSE = new PostScriptToken(PostScriptTokenTypes.IFELSE, - 'IFELSE'); - return PostScriptToken; -})(); - -var PostScriptLexer = (function PostScriptLexerClosure() { - function PostScriptLexer(stream) { - this.stream = stream; - this.nextChar(); - - this.strBuf = []; - } - PostScriptLexer.prototype = { - nextChar: function PostScriptLexer_nextChar() { - return (this.currentChar = this.stream.getByte()); - }, - getToken: function PostScriptLexer_getToken() { - var comment = false; - var ch = this.currentChar; - - // skip comments - while (true) { - if (ch < 0) { - return EOF; - } - - if (comment) { - if (ch === 0x0A || ch === 0x0D) { - comment = false; - } - } else if (ch === 0x25) { // '%' - comment = true; - } else if (!Lexer.isSpace(ch)) { - break; - } - ch = this.nextChar(); - } - switch (ch | 0) { - case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: // '0'-'4' - case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: // '5'-'9' - case 0x2B: case 0x2D: case 0x2E: // '+', '-', '.' - return new PostScriptToken(PostScriptTokenTypes.NUMBER, - this.getNumber()); - case 0x7B: // '{' - this.nextChar(); - return PostScriptToken.LBRACE; - case 0x7D: // '}' - this.nextChar(); - return PostScriptToken.RBRACE; - } - // operator - var strBuf = this.strBuf; - strBuf.length = 0; - strBuf[0] = String.fromCharCode(ch); - - while ((ch = this.nextChar()) >= 0 && // and 'A'-'Z', 'a'-'z' - ((ch >= 0x41 && ch <= 0x5A) || (ch >= 0x61 && ch <= 0x7A))) { - strBuf.push(String.fromCharCode(ch)); - } - var str = strBuf.join(''); - switch (str.toLowerCase()) { - case 'if': - return PostScriptToken.IF; - case 'ifelse': - return PostScriptToken.IFELSE; - default: - return PostScriptToken.getOperator(str); - } - }, - getNumber: function PostScriptLexer_getNumber() { - var ch = this.currentChar; - var strBuf = this.strBuf; - strBuf.length = 0; - strBuf[0] = String.fromCharCode(ch); - - while ((ch = this.nextChar()) >= 0) { - if ((ch >= 0x30 && ch <= 0x39) || // '0'-'9' - ch === 0x2D || ch === 0x2E) { // '-', '.' - strBuf.push(String.fromCharCode(ch)); - } else { - break; - } - } - var value = parseFloat(strBuf.join('')); - if (isNaN(value)) { - error('Invalid floating point number: ' + value); - } - return value; - } - }; - return PostScriptLexer; -})(); - -exports.PostScriptLexer = PostScriptLexer; -exports.PostScriptParser = PostScriptParser; -})); - - -(function (root, factory) { - { - factory((root.pdfjsCoreFonts = {}), root.pdfjsSharedUtil, - root.pdfjsCorePrimitives, root.pdfjsCoreStream, root.pdfjsCoreParser, - root.pdfjsCoreCMap, root.pdfjsCoreGlyphList, root.pdfjsCoreCharsets, - root.pdfjsCoreFontRenderer); - } -}(this, function (exports, sharedUtil, corePrimitives, coreStream, coreParser, - coreCMap, coreGlyphList, coreCharsets, coreFontRenderer) { - -var FONT_IDENTITY_MATRIX = sharedUtil.FONT_IDENTITY_MATRIX; -var FontType = sharedUtil.FontType; -var Util = sharedUtil.Util; -var assert = sharedUtil.assert; -var bytesToString = sharedUtil.bytesToString; -var error = sharedUtil.error; -var info = sharedUtil.info; -var isArray = sharedUtil.isArray; -var isInt = sharedUtil.isInt; -var isNum = sharedUtil.isNum; -var readUint32 = sharedUtil.readUint32; -var shadow = sharedUtil.shadow; -var stringToBytes = sharedUtil.stringToBytes; -var string32 = sharedUtil.string32; -var warn = sharedUtil.warn; -var Name = corePrimitives.Name; -var Stream = coreStream.Stream; -var Lexer = coreParser.Lexer; -var CMapFactory = coreCMap.CMapFactory; -var IdentityCMap = coreCMap.IdentityCMap; -var GlyphsUnicode = coreGlyphList.GlyphsUnicode; -var DingbatsGlyphsUnicode = coreGlyphList.DingbatsGlyphsUnicode; -var ISOAdobeCharset = coreCharsets.ISOAdobeCharset; -var ExpertCharset = coreCharsets.ExpertCharset; -var ExpertSubsetCharset = coreCharsets.ExpertSubsetCharset; -var FontRendererFactory = coreFontRenderer.FontRendererFactory; - -// Unicode Private Use Area -var PRIVATE_USE_OFFSET_START = 0xE000; -var PRIVATE_USE_OFFSET_END = 0xF8FF; -var SKIP_PRIVATE_USE_RANGE_F000_TO_F01F = false; - -// PDF Glyph Space Units are one Thousandth of a TextSpace Unit -// except for Type 3 fonts -var PDF_GLYPH_SPACE_UNITS = 1000; - -// Hinting is currently disabled due to unknown problems on windows -// in tracemonkey and various other pdfs with type1 fonts. -var HINTING_ENABLED = false; - -// Accented charactars are not displayed properly on windows, using this flag -// to control analysis of seac charstrings. -var SEAC_ANALYSIS_ENABLED = false; - -// Maximum subroutine call depth of type 2 chartrings. Matches OTS. -var MAX_SUBR_NESTING = 10; - -var FontFlags = { - FixedPitch: 1, - Serif: 2, - Symbolic: 4, - Script: 8, - Nonsymbolic: 32, - Italic: 64, - AllCap: 65536, - SmallCap: 131072, - ForceBold: 262144 -}; - -var Encodings = { - ExpertEncoding: ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', - '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', - 'space', 'exclamsmall', 'Hungarumlautsmall', '', 'dollaroldstyle', - 'dollarsuperior', 'ampersandsmall', 'Acutesmall', 'parenleftsuperior', - 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma', - 'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle', - 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', - 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'colon', - 'semicolon', 'commasuperior', 'threequartersemdash', 'periodsuperior', - 'questionsmall', '', 'asuperior', 'bsuperior', 'centsuperior', 'dsuperior', - 'esuperior', '', '', 'isuperior', '', '', 'lsuperior', 'msuperior', - 'nsuperior', 'osuperior', '', '', 'rsuperior', 'ssuperior', 'tsuperior', - '', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', '', - 'parenrightinferior', 'Circumflexsmall', 'hyphensuperior', 'Gravesmall', - 'Asmall', 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', - 'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall', - 'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', - 'Vsmall', 'Wsmall', 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', - 'onefitted', 'rupiah', 'Tildesmall', '', '', '', '', '', '', '', '', '', - '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', - '', '', '', '', '', '', 'exclamdownsmall', 'centoldstyle', 'Lslashsmall', - '', '', 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall', 'Brevesmall', - 'Caronsmall', '', 'Dotaccentsmall', '', '', 'Macronsmall', '', '', - 'figuredash', 'hypheninferior', '', '', 'Ogoneksmall', 'Ringsmall', - 'Cedillasmall', '', '', '', 'onequarter', 'onehalf', 'threequarters', - 'questiondownsmall', 'oneeighth', 'threeeighths', 'fiveeighths', - 'seveneighths', 'onethird', 'twothirds', '', '', 'zerosuperior', - 'onesuperior', 'twosuperior', 'threesuperior', 'foursuperior', - 'fivesuperior', 'sixsuperior', 'sevensuperior', 'eightsuperior', - 'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior', - 'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior', - 'seveninferior', 'eightinferior', 'nineinferior', 'centinferior', - 'dollarinferior', 'periodinferior', 'commainferior', 'Agravesmall', - 'Aacutesmall', 'Acircumflexsmall', 'Atildesmall', 'Adieresissmall', - 'Aringsmall', 'AEsmall', 'Ccedillasmall', 'Egravesmall', 'Eacutesmall', - 'Ecircumflexsmall', 'Edieresissmall', 'Igravesmall', 'Iacutesmall', - 'Icircumflexsmall', 'Idieresissmall', 'Ethsmall', 'Ntildesmall', - 'Ogravesmall', 'Oacutesmall', 'Ocircumflexsmall', 'Otildesmall', - 'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall', 'Uacutesmall', - 'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall', 'Thornsmall', - 'Ydieresissmall'], - MacExpertEncoding: ['', '', '', '', '', '', '', '', '', '', '', '', '', '', - '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', - 'space', 'exclamsmall', 'Hungarumlautsmall', 'centoldstyle', - 'dollaroldstyle', 'dollarsuperior', 'ampersandsmall', 'Acutesmall', - 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', - 'onedotenleader', 'comma', 'hyphen', 'period', 'fraction', 'zerooldstyle', - 'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle', - 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', - 'nineoldstyle', 'colon', 'semicolon', '', 'threequartersemdash', '', - 'questionsmall', '', '', '', '', 'Ethsmall', '', '', 'onequarter', - 'onehalf', 'threequarters', 'oneeighth', 'threeeighths', 'fiveeighths', - 'seveneighths', 'onethird', 'twothirds', '', '', '', '', '', '', 'ff', - 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', '', 'parenrightinferior', - 'Circumflexsmall', 'hypheninferior', 'Gravesmall', 'Asmall', 'Bsmall', - 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall', - 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall', 'Osmall', 'Psmall', - 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall', - 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah', - 'Tildesmall', '', '', 'asuperior', 'centsuperior', '', '', '', '', - 'Aacutesmall', 'Agravesmall', 'Acircumflexsmall', 'Adieresissmall', - 'Atildesmall', 'Aringsmall', 'Ccedillasmall', 'Eacutesmall', 'Egravesmall', - 'Ecircumflexsmall', 'Edieresissmall', 'Iacutesmall', 'Igravesmall', - 'Icircumflexsmall', 'Idieresissmall', 'Ntildesmall', 'Oacutesmall', - 'Ogravesmall', 'Ocircumflexsmall', 'Odieresissmall', 'Otildesmall', - 'Uacutesmall', 'Ugravesmall', 'Ucircumflexsmall', 'Udieresissmall', '', - 'eightsuperior', 'fourinferior', 'threeinferior', 'sixinferior', - 'eightinferior', 'seveninferior', 'Scaronsmall', '', 'centinferior', - 'twoinferior', '', 'Dieresissmall', '', 'Caronsmall', 'osuperior', - 'fiveinferior', '', 'commainferior', 'periodinferior', 'Yacutesmall', '', - 'dollarinferior', '', 'Thornsmall', '', 'nineinferior', 'zeroinferior', - 'Zcaronsmall', 'AEsmall', 'Oslashsmall', 'questiondownsmall', - 'oneinferior', 'Lslashsmall', '', '', '', '', '', '', 'Cedillasmall', '', - '', '', '', '', 'OEsmall', 'figuredash', 'hyphensuperior', '', '', '', '', - 'exclamdownsmall', '', 'Ydieresissmall', '', 'onesuperior', 'twosuperior', - 'threesuperior', 'foursuperior', 'fivesuperior', 'sixsuperior', - 'sevensuperior', 'ninesuperior', 'zerosuperior', '', 'esuperior', - 'rsuperior', 'tsuperior', '', '', 'isuperior', 'ssuperior', 'dsuperior', - '', '', '', '', '', 'lsuperior', 'Ogoneksmall', 'Brevesmall', - 'Macronsmall', 'bsuperior', 'nsuperior', 'msuperior', 'commasuperior', - 'periodsuperior', 'Dotaccentsmall', 'Ringsmall'], - MacRomanEncoding: ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', - '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', - 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', - 'ampersand', 'quotesingle', 'parenleft', 'parenright', 'asterisk', 'plus', - 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', - 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', - 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', - 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', - 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', - 'asciicircum', 'underscore', 'grave', 'a', 'b', 'c', 'd', 'e', 'f', 'g', - 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', - 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', '', - 'Adieresis', 'Aring', 'Ccedilla', 'Eacute', 'Ntilde', 'Odieresis', - 'Udieresis', 'aacute', 'agrave', 'acircumflex', 'adieresis', 'atilde', - 'aring', 'ccedilla', 'eacute', 'egrave', 'ecircumflex', 'edieresis', - 'iacute', 'igrave', 'icircumflex', 'idieresis', 'ntilde', 'oacute', - 'ograve', 'ocircumflex', 'odieresis', 'otilde', 'uacute', 'ugrave', - 'ucircumflex', 'udieresis', 'dagger', 'degree', 'cent', 'sterling', - 'section', 'bullet', 'paragraph', 'germandbls', 'registered', 'copyright', - 'trademark', 'acute', 'dieresis', 'notequal', 'AE', 'Oslash', 'infinity', - 'plusminus', 'lessequal', 'greaterequal', 'yen', 'mu', 'partialdiff', - 'summation', 'product', 'pi', 'integral', 'ordfeminine', 'ordmasculine', - 'Omega', 'ae', 'oslash', 'questiondown', 'exclamdown', 'logicalnot', - 'radical', 'florin', 'approxequal', 'Delta', 'guillemotleft', - 'guillemotright', 'ellipsis', 'space', 'Agrave', 'Atilde', 'Otilde', 'OE', - 'oe', 'endash', 'emdash', 'quotedblleft', 'quotedblright', 'quoteleft', - 'quoteright', 'divide', 'lozenge', 'ydieresis', 'Ydieresis', 'fraction', - 'currency', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', 'daggerdbl', - 'periodcentered', 'quotesinglbase', 'quotedblbase', 'perthousand', - 'Acircumflex', 'Ecircumflex', 'Aacute', 'Edieresis', 'Egrave', 'Iacute', - 'Icircumflex', 'Idieresis', 'Igrave', 'Oacute', 'Ocircumflex', 'apple', - 'Ograve', 'Uacute', 'Ucircumflex', 'Ugrave', 'dotlessi', 'circumflex', - 'tilde', 'macron', 'breve', 'dotaccent', 'ring', 'cedilla', 'hungarumlaut', - 'ogonek', 'caron'], - StandardEncoding: ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', - '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', - 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', - 'ampersand', 'quoteright', 'parenleft', 'parenright', 'asterisk', 'plus', - 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', - 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', - 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', - 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', - 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', - 'asciicircum', 'underscore', 'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f', - 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', - 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', - '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', - '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'exclamdown', - 'cent', 'sterling', 'fraction', 'yen', 'florin', 'section', 'currency', - 'quotesingle', 'quotedblleft', 'guillemotleft', 'guilsinglleft', - 'guilsinglright', 'fi', 'fl', '', 'endash', 'dagger', 'daggerdbl', - 'periodcentered', '', 'paragraph', 'bullet', 'quotesinglbase', - 'quotedblbase', 'quotedblright', 'guillemotright', 'ellipsis', - 'perthousand', '', 'questiondown', '', 'grave', 'acute', 'circumflex', - 'tilde', 'macron', 'breve', 'dotaccent', 'dieresis', '', 'ring', 'cedilla', - '', 'hungarumlaut', 'ogonek', 'caron', 'emdash', '', '', '', '', '', '', - '', '', '', '', '', '', '', '', '', '', 'AE', '', 'ordfeminine', '', '', - '', '', 'Lslash', 'Oslash', 'OE', 'ordmasculine', '', '', '', '', '', 'ae', - '', '', '', 'dotlessi', '', '', 'lslash', 'oslash', 'oe', 'germandbls'], - WinAnsiEncoding: ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', - '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', - 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', - 'ampersand', 'quotesingle', 'parenleft', 'parenright', 'asterisk', 'plus', - 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', - 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', - 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', - 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', - 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', - 'asciicircum', 'underscore', 'grave', 'a', 'b', 'c', 'd', 'e', 'f', 'g', - 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', - 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', - 'bullet', 'Euro', 'bullet', 'quotesinglbase', 'florin', 'quotedblbase', - 'ellipsis', 'dagger', 'daggerdbl', 'circumflex', 'perthousand', 'Scaron', - 'guilsinglleft', 'OE', 'bullet', 'Zcaron', 'bullet', 'bullet', 'quoteleft', - 'quoteright', 'quotedblleft', 'quotedblright', 'bullet', 'endash', - 'emdash', 'tilde', 'trademark', 'scaron', 'guilsinglright', 'oe', 'bullet', - 'zcaron', 'Ydieresis', 'space', 'exclamdown', 'cent', 'sterling', - 'currency', 'yen', 'brokenbar', 'section', 'dieresis', 'copyright', - 'ordfeminine', 'guillemotleft', 'logicalnot', 'hyphen', 'registered', - 'macron', 'degree', 'plusminus', 'twosuperior', 'threesuperior', 'acute', - 'mu', 'paragraph', 'periodcentered', 'cedilla', 'onesuperior', - 'ordmasculine', 'guillemotright', 'onequarter', 'onehalf', 'threequarters', - 'questiondown', 'Agrave', 'Aacute', 'Acircumflex', 'Atilde', 'Adieresis', - 'Aring', 'AE', 'Ccedilla', 'Egrave', 'Eacute', 'Ecircumflex', 'Edieresis', - 'Igrave', 'Iacute', 'Icircumflex', 'Idieresis', 'Eth', 'Ntilde', 'Ograve', - 'Oacute', 'Ocircumflex', 'Otilde', 'Odieresis', 'multiply', 'Oslash', - 'Ugrave', 'Uacute', 'Ucircumflex', 'Udieresis', 'Yacute', 'Thorn', - 'germandbls', 'agrave', 'aacute', 'acircumflex', 'atilde', 'adieresis', - 'aring', 'ae', 'ccedilla', 'egrave', 'eacute', 'ecircumflex', 'edieresis', - 'igrave', 'iacute', 'icircumflex', 'idieresis', 'eth', 'ntilde', 'ograve', - 'oacute', 'ocircumflex', 'otilde', 'odieresis', 'divide', 'oslash', - 'ugrave', 'uacute', 'ucircumflex', 'udieresis', 'yacute', 'thorn', - 'ydieresis'], - SymbolSetEncoding: ['', '', '', '', '', '', '', '', '', '', '', '', '', '', - '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', - 'space', 'exclam', 'universal', 'numbersign', 'existential', 'percent', - 'ampersand', 'suchthat', 'parenleft', 'parenright', 'asteriskmath', 'plus', - 'comma', 'minus', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', - 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', - 'equal', 'greater', 'question', 'congruent', 'Alpha', 'Beta', 'Chi', - 'Delta', 'Epsilon', 'Phi', 'Gamma', 'Eta', 'Iota', 'theta1', 'Kappa', - 'Lambda', 'Mu', 'Nu', 'Omicron', 'Pi', 'Theta', 'Rho', 'Sigma', 'Tau', - 'Upsilon', 'sigma1', 'Omega', 'Xi', 'Psi', 'Zeta', 'bracketleft', - 'therefore', 'bracketright', 'perpendicular', 'underscore', 'radicalex', - 'alpha', 'beta', 'chi', 'delta', 'epsilon', 'phi', 'gamma', 'eta', 'iota', - 'phi1', 'kappa', 'lambda', 'mu', 'nu', 'omicron', 'pi', 'theta', 'rho', - 'sigma', 'tau', 'upsilon', 'omega1', 'omega', 'xi', 'psi', 'zeta', - 'braceleft', 'bar', 'braceright', 'similar', '', '', '', '', '', '', '', - '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', - '', '', '', '', '', '', '', 'Euro', 'Upsilon1', 'minute', 'lessequal', - 'fraction', 'infinity', 'florin', 'club', 'diamond', 'heart', 'spade', - 'arrowboth', 'arrowleft', 'arrowup', 'arrowright', 'arrowdown', 'degree', - 'plusminus', 'second', 'greaterequal', 'multiply', 'proportional', - 'partialdiff', 'bullet', 'divide', 'notequal', 'equivalence', - 'approxequal', 'ellipsis', 'arrowvertex', 'arrowhorizex', 'carriagereturn', - 'aleph', 'Ifraktur', 'Rfraktur', 'weierstrass', 'circlemultiply', - 'circleplus', 'emptyset', 'intersection', 'union', 'propersuperset', - 'reflexsuperset', 'notsubset', 'propersubset', 'reflexsubset', 'element', - 'notelement', 'angle', 'gradient', 'registerserif', 'copyrightserif', - 'trademarkserif', 'product', 'radical', 'dotmath', 'logicalnot', - 'logicaland', 'logicalor', 'arrowdblboth', 'arrowdblleft', 'arrowdblup', - 'arrowdblright', 'arrowdbldown', 'lozenge', 'angleleft', 'registersans', - 'copyrightsans', 'trademarksans', 'summation', 'parenlefttp', - 'parenleftex', 'parenleftbt', 'bracketlefttp', 'bracketleftex', - 'bracketleftbt', 'bracelefttp', 'braceleftmid', 'braceleftbt', 'braceex', - '', 'angleright', 'integral', 'integraltp', 'integralex', 'integralbt', - 'parenrighttp', 'parenrightex', 'parenrightbt', 'bracketrighttp', - 'bracketrightex', 'bracketrightbt', 'bracerighttp', 'bracerightmid', - 'bracerightbt'], - ZapfDingbatsEncoding: ['', '', '', '', '', '', '', '', '', '', '', '', '', '', - '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', - 'space', 'a1', 'a2', 'a202', 'a3', 'a4', 'a5', 'a119', 'a118', 'a117', - 'a11', 'a12', 'a13', 'a14', 'a15', 'a16', 'a105', 'a17', 'a18', 'a19', - 'a20', 'a21', 'a22', 'a23', 'a24', 'a25', 'a26', 'a27', 'a28', 'a6', 'a7', - 'a8', 'a9', 'a10', 'a29', 'a30', 'a31', 'a32', 'a33', 'a34', 'a35', 'a36', - 'a37', 'a38', 'a39', 'a40', 'a41', 'a42', 'a43', 'a44', 'a45', 'a46', - 'a47', 'a48', 'a49', 'a50', 'a51', 'a52', 'a53', 'a54', 'a55', 'a56', - 'a57', 'a58', 'a59', 'a60', 'a61', 'a62', 'a63', 'a64', 'a65', 'a66', - 'a67', 'a68', 'a69', 'a70', 'a71', 'a72', 'a73', 'a74', 'a203', 'a75', - 'a204', 'a76', 'a77', 'a78', 'a79', 'a81', 'a82', 'a83', 'a84', 'a97', - 'a98', 'a99', 'a100', '', 'a89', 'a90', 'a93', 'a94', 'a91', 'a92', 'a205', - 'a85', 'a206', 'a86', 'a87', 'a88', 'a95', 'a96', '', '', '', '', '', '', - '', '', '', '', '', '', '', '', '', '', '', '', '', 'a101', 'a102', 'a103', - 'a104', 'a106', 'a107', 'a108', 'a112', 'a111', 'a110', 'a109', 'a120', - 'a121', 'a122', 'a123', 'a124', 'a125', 'a126', 'a127', 'a128', 'a129', - 'a130', 'a131', 'a132', 'a133', 'a134', 'a135', 'a136', 'a137', 'a138', - 'a139', 'a140', 'a141', 'a142', 'a143', 'a144', 'a145', 'a146', 'a147', - 'a148', 'a149', 'a150', 'a151', 'a152', 'a153', 'a154', 'a155', 'a156', - 'a157', 'a158', 'a159', 'a160', 'a161', 'a163', 'a164', 'a196', 'a165', - 'a192', 'a166', 'a167', 'a168', 'a169', 'a170', 'a171', 'a172', 'a173', - 'a162', 'a174', 'a175', 'a176', 'a177', 'a178', 'a179', 'a193', 'a180', - 'a199', 'a181', 'a200', 'a182', '', 'a201', 'a183', 'a184', 'a197', 'a185', - 'a194', 'a198', 'a186', 'a195', 'a187', 'a188', 'a189', 'a190', 'a191'] -}; - -/** - * Hold a map of decoded fonts and of the standard fourteen Type1 - * fonts and their acronyms. - */ -var stdFontMap = { - 'ArialNarrow': 'Helvetica', - 'ArialNarrow-Bold': 'Helvetica-Bold', - 'ArialNarrow-BoldItalic': 'Helvetica-BoldOblique', - 'ArialNarrow-Italic': 'Helvetica-Oblique', - 'ArialBlack': 'Helvetica', - 'ArialBlack-Bold': 'Helvetica-Bold', - 'ArialBlack-BoldItalic': 'Helvetica-BoldOblique', - 'ArialBlack-Italic': 'Helvetica-Oblique', - 'Arial': 'Helvetica', - 'Arial-Bold': 'Helvetica-Bold', - 'Arial-BoldItalic': 'Helvetica-BoldOblique', - 'Arial-Italic': 'Helvetica-Oblique', - 'Arial-BoldItalicMT': 'Helvetica-BoldOblique', - 'Arial-BoldMT': 'Helvetica-Bold', - 'Arial-ItalicMT': 'Helvetica-Oblique', - 'ArialMT': 'Helvetica', - 'Courier-Bold': 'Courier-Bold', - 'Courier-BoldItalic': 'Courier-BoldOblique', - 'Courier-Italic': 'Courier-Oblique', - 'CourierNew': 'Courier', - 'CourierNew-Bold': 'Courier-Bold', - 'CourierNew-BoldItalic': 'Courier-BoldOblique', - 'CourierNew-Italic': 'Courier-Oblique', - 'CourierNewPS-BoldItalicMT': 'Courier-BoldOblique', - 'CourierNewPS-BoldMT': 'Courier-Bold', - 'CourierNewPS-ItalicMT': 'Courier-Oblique', - 'CourierNewPSMT': 'Courier', - 'Helvetica': 'Helvetica', - 'Helvetica-Bold': 'Helvetica-Bold', - 'Helvetica-BoldItalic': 'Helvetica-BoldOblique', - 'Helvetica-BoldOblique': 'Helvetica-BoldOblique', - 'Helvetica-Italic': 'Helvetica-Oblique', - 'Helvetica-Oblique':'Helvetica-Oblique', - 'Symbol-Bold': 'Symbol', - 'Symbol-BoldItalic': 'Symbol', - 'Symbol-Italic': 'Symbol', - 'TimesNewRoman': 'Times-Roman', - 'TimesNewRoman-Bold': 'Times-Bold', - 'TimesNewRoman-BoldItalic': 'Times-BoldItalic', - 'TimesNewRoman-Italic': 'Times-Italic', - 'TimesNewRomanPS': 'Times-Roman', - 'TimesNewRomanPS-Bold': 'Times-Bold', - 'TimesNewRomanPS-BoldItalic': 'Times-BoldItalic', - 'TimesNewRomanPS-BoldItalicMT': 'Times-BoldItalic', - 'TimesNewRomanPS-BoldMT': 'Times-Bold', - 'TimesNewRomanPS-Italic': 'Times-Italic', - 'TimesNewRomanPS-ItalicMT': 'Times-Italic', - 'TimesNewRomanPSMT': 'Times-Roman', - 'TimesNewRomanPSMT-Bold': 'Times-Bold', - 'TimesNewRomanPSMT-BoldItalic': 'Times-BoldItalic', - 'TimesNewRomanPSMT-Italic': 'Times-Italic' -}; - -/** - * Holds the map of the non-standard fonts that might be included as a standard - * fonts without glyph data. - */ -var nonStdFontMap = { - 'CenturyGothic': 'Helvetica', - 'CenturyGothic-Bold': 'Helvetica-Bold', - 'CenturyGothic-BoldItalic': 'Helvetica-BoldOblique', - 'CenturyGothic-Italic': 'Helvetica-Oblique', - 'ComicSansMS': 'Comic Sans MS', - 'ComicSansMS-Bold': 'Comic Sans MS-Bold', - 'ComicSansMS-BoldItalic': 'Comic Sans MS-BoldItalic', - 'ComicSansMS-Italic': 'Comic Sans MS-Italic', - 'LucidaConsole': 'Courier', - 'LucidaConsole-Bold': 'Courier-Bold', - 'LucidaConsole-BoldItalic': 'Courier-BoldOblique', - 'LucidaConsole-Italic': 'Courier-Oblique', - 'MS-Gothic': 'MS Gothic', - 'MS-Gothic-Bold': 'MS Gothic-Bold', - 'MS-Gothic-BoldItalic': 'MS Gothic-BoldItalic', - 'MS-Gothic-Italic': 'MS Gothic-Italic', - 'MS-Mincho': 'MS Mincho', - 'MS-Mincho-Bold': 'MS Mincho-Bold', - 'MS-Mincho-BoldItalic': 'MS Mincho-BoldItalic', - 'MS-Mincho-Italic': 'MS Mincho-Italic', - 'MS-PGothic': 'MS PGothic', - 'MS-PGothic-Bold': 'MS PGothic-Bold', - 'MS-PGothic-BoldItalic': 'MS PGothic-BoldItalic', - 'MS-PGothic-Italic': 'MS PGothic-Italic', - 'MS-PMincho': 'MS PMincho', - 'MS-PMincho-Bold': 'MS PMincho-Bold', - 'MS-PMincho-BoldItalic': 'MS PMincho-BoldItalic', - 'MS-PMincho-Italic': 'MS PMincho-Italic', - 'Wingdings': 'ZapfDingbats' -}; - -var serifFonts = { - 'Adobe Jenson': true, 'Adobe Text': true, 'Albertus': true, - 'Aldus': true, 'Alexandria': true, 'Algerian': true, - 'American Typewriter': true, 'Antiqua': true, 'Apex': true, - 'Arno': true, 'Aster': true, 'Aurora': true, - 'Baskerville': true, 'Bell': true, 'Bembo': true, - 'Bembo Schoolbook': true, 'Benguiat': true, 'Berkeley Old Style': true, - 'Bernhard Modern': true, 'Berthold City': true, 'Bodoni': true, - 'Bauer Bodoni': true, 'Book Antiqua': true, 'Bookman': true, - 'Bordeaux Roman': true, 'Californian FB': true, 'Calisto': true, - 'Calvert': true, 'Capitals': true, 'Cambria': true, - 'Cartier': true, 'Caslon': true, 'Catull': true, - 'Centaur': true, 'Century Old Style': true, 'Century Schoolbook': true, - 'Chaparral': true, 'Charis SIL': true, 'Cheltenham': true, - 'Cholla Slab': true, 'Clarendon': true, 'Clearface': true, - 'Cochin': true, 'Colonna': true, 'Computer Modern': true, - 'Concrete Roman': true, 'Constantia': true, 'Cooper Black': true, - 'Corona': true, 'Ecotype': true, 'Egyptienne': true, - 'Elephant': true, 'Excelsior': true, 'Fairfield': true, - 'FF Scala': true, 'Folkard': true, 'Footlight': true, - 'FreeSerif': true, 'Friz Quadrata': true, 'Garamond': true, - 'Gentium': true, 'Georgia': true, 'Gloucester': true, - 'Goudy Old Style': true, 'Goudy Schoolbook': true, 'Goudy Pro Font': true, - 'Granjon': true, 'Guardian Egyptian': true, 'Heather': true, - 'Hercules': true, 'High Tower Text': true, 'Hiroshige': true, - 'Hoefler Text': true, 'Humana Serif': true, 'Imprint': true, - 'Ionic No. 5': true, 'Janson': true, 'Joanna': true, - 'Korinna': true, 'Lexicon': true, 'Liberation Serif': true, - 'Linux Libertine': true, 'Literaturnaya': true, 'Lucida': true, - 'Lucida Bright': true, 'Melior': true, 'Memphis': true, - 'Miller': true, 'Minion': true, 'Modern': true, - 'Mona Lisa': true, 'Mrs Eaves': true, 'MS Serif': true, - 'Museo Slab': true, 'New York': true, 'Nimbus Roman': true, - 'NPS Rawlinson Roadway': true, 'Palatino': true, 'Perpetua': true, - 'Plantin': true, 'Plantin Schoolbook': true, 'Playbill': true, - 'Poor Richard': true, 'Rawlinson Roadway': true, 'Renault': true, - 'Requiem': true, 'Rockwell': true, 'Roman': true, - 'Rotis Serif': true, 'Sabon': true, 'Scala': true, - 'Seagull': true, 'Sistina': true, 'Souvenir': true, - 'STIX': true, 'Stone Informal': true, 'Stone Serif': true, - 'Sylfaen': true, 'Times': true, 'Trajan': true, - 'Trinité': true, 'Trump Mediaeval': true, 'Utopia': true, - 'Vale Type': true, 'Bitstream Vera': true, 'Vera Serif': true, - 'Versailles': true, 'Wanted': true, 'Weiss': true, - 'Wide Latin': true, 'Windsor': true, 'XITS': true -}; - -var symbolsFonts = { - 'Dingbats': true, 'Symbol': true, 'ZapfDingbats': true -}; - -// Glyph map for well-known standard fonts. Sometimes Ghostscript uses CID fonts -// but does not embed the CID to GID mapping. The mapping is incomplete for all -// glyphs, but common for some set of the standard fonts. -var GlyphMapForStandardFonts = { - '2': 10, '3': 32, '4': 33, '5': 34, '6': 35, '7': 36, '8': 37, '9': 38, - '10': 39, '11': 40, '12': 41, '13': 42, '14': 43, '15': 44, '16': 45, - '17': 46, '18': 47, '19': 48, '20': 49, '21': 50, '22': 51, '23': 52, - '24': 53, '25': 54, '26': 55, '27': 56, '28': 57, '29': 58, '30': 894, - '31': 60, '32': 61, '33': 62, '34': 63, '35': 64, '36': 65, '37': 66, - '38': 67, '39': 68, '40': 69, '41': 70, '42': 71, '43': 72, '44': 73, - '45': 74, '46': 75, '47': 76, '48': 77, '49': 78, '50': 79, '51': 80, - '52': 81, '53': 82, '54': 83, '55': 84, '56': 85, '57': 86, '58': 87, - '59': 88, '60': 89, '61': 90, '62': 91, '63': 92, '64': 93, '65': 94, - '66': 95, '67': 96, '68': 97, '69': 98, '70': 99, '71': 100, '72': 101, - '73': 102, '74': 103, '75': 104, '76': 105, '77': 106, '78': 107, '79': 108, - '80': 109, '81': 110, '82': 111, '83': 112, '84': 113, '85': 114, '86': 115, - '87': 116, '88': 117, '89': 118, '90': 119, '91': 120, '92': 121, '93': 122, - '94': 123, '95': 124, '96': 125, '97': 126, '98': 196, '99': 197, '100': 199, - '101': 201, '102': 209, '103': 214, '104': 220, '105': 225, '106': 224, - '107': 226, '108': 228, '109': 227, '110': 229, '111': 231, '112': 233, - '113': 232, '114': 234, '115': 235, '116': 237, '117': 236, '118': 238, - '119': 239, '120': 241, '121': 243, '122': 242, '123': 244, '124': 246, - '125': 245, '126': 250, '127': 249, '128': 251, '129': 252, '130': 8224, - '131': 176, '132': 162, '133': 163, '134': 167, '135': 8226, '136': 182, - '137': 223, '138': 174, '139': 169, '140': 8482, '141': 180, '142': 168, - '143': 8800, '144': 198, '145': 216, '146': 8734, '147': 177, '148': 8804, - '149': 8805, '150': 165, '151': 181, '152': 8706, '153': 8721, '154': 8719, - '156': 8747, '157': 170, '158': 186, '159': 8486, '160': 230, '161': 248, - '162': 191, '163': 161, '164': 172, '165': 8730, '166': 402, '167': 8776, - '168': 8710, '169': 171, '170': 187, '171': 8230, '210': 218, '223': 711, - '224': 321, '225': 322, '227': 353, '229': 382, '234': 253, '252': 263, - '253': 268, '254': 269, '258': 258, '260': 260, '261': 261, '265': 280, - '266': 281, '268': 283, '269': 313, '275': 323, '276': 324, '278': 328, - '284': 345, '285': 346, '286': 347, '292': 367, '295': 377, '296': 378, - '298': 380, '305': 963, - '306': 964, '307': 966, '308': 8215, '309': 8252, '310': 8319, '311': 8359, - '312': 8592, '313': 8593, '337': 9552, '493': 1039, '494': 1040, '705': 1524, - '706': 8362, '710': 64288, '711': 64298, '759': 1617, '761': 1776, - '763': 1778, '775': 1652, '777': 1764, '778': 1780, '779': 1781, '780': 1782, - '782': 771, '783': 64726, '786': 8363, '788': 8532, '790': 768, '791': 769, - '792': 768, '795': 803, '797': 64336, '798': 64337, '799': 64342, - '800': 64343, '801': 64344, '802': 64345, '803': 64362, '804': 64363, - '805': 64364, '2424': 7821, '2425': 7822, '2426': 7823, '2427': 7824, - '2428': 7825, '2429': 7826, '2430': 7827, '2433': 7682, '2678': 8045, - '2679': 8046, '2830': 1552, '2838': 686, '2840': 751, '2842': 753, - '2843': 754, '2844': 755, '2846': 757, '2856': 767, '2857': 848, '2858': 849, - '2862': 853, '2863': 854, '2864': 855, '2865': 861, '2866': 862, '2906': 7460, - '2908': 7462, '2909': 7463, '2910': 7464, '2912': 7466, '2913': 7467, - '2914': 7468, '2916': 7470, '2917': 7471, '2918': 7472, '2920': 7474, - '2921': 7475, '2922': 7476, '2924': 7478, '2925': 7479, '2926': 7480, - '2928': 7482, '2929': 7483, '2930': 7484, '2932': 7486, '2933': 7487, - '2934': 7488, '2936': 7490, '2937': 7491, '2938': 7492, '2940': 7494, - '2941': 7495, '2942': 7496, '2944': 7498, '2946': 7500, '2948': 7502, - '2950': 7504, '2951': 7505, '2952': 7506, '2954': 7508, '2955': 7509, - '2956': 7510, '2958': 7512, '2959': 7513, '2960': 7514, '2962': 7516, - '2963': 7517, '2964': 7518, '2966': 7520, '2967': 7521, '2968': 7522, - '2970': 7524, '2971': 7525, '2972': 7526, '2974': 7528, '2975': 7529, - '2976': 7530, '2978': 1537, '2979': 1538, '2980': 1539, '2982': 1549, - '2983': 1551, '2984': 1552, '2986': 1554, '2987': 1555, '2988': 1556, - '2990': 1623, '2991': 1624, '2995': 1775, '2999': 1791, '3002': 64290, - '3003': 64291, '3004': 64292, '3006': 64294, '3007': 64295, '3008': 64296, - '3011': 1900, '3014': 8223, '3015': 8244, '3017': 7532, '3018': 7533, - '3019': 7534, '3075': 7590, '3076': 7591, '3079': 7594, '3080': 7595, - '3083': 7598, '3084': 7599, '3087': 7602, '3088': 7603, '3091': 7606, - '3092': 7607, '3095': 7610, '3096': 7611, '3099': 7614, '3100': 7615, - '3103': 7618, '3104': 7619, '3107': 8337, '3108': 8338, '3116': 1884, - '3119': 1885, '3120': 1885, '3123': 1886, '3124': 1886, '3127': 1887, - '3128': 1887, '3131': 1888, '3132': 1888, '3135': 1889, '3136': 1889, - '3139': 1890, '3140': 1890, '3143': 1891, '3144': 1891, '3147': 1892, - '3148': 1892, '3153': 580, '3154': 581, '3157': 584, '3158': 585, '3161': 588, - '3162': 589, '3165': 891, '3166': 892, '3169': 1274, '3170': 1275, - '3173': 1278, '3174': 1279, '3181': 7622, '3182': 7623, '3282': 11799, - '3316': 578, '3379': 42785, '3393': 1159, '3416': 8377 -}; - -// The glyph map for ArialBlack differs slightly from the glyph map used for -// other well-known standard fonts. Hence we use this (incomplete) CID to GID -// mapping to adjust the glyph map for non-embedded ArialBlack fonts. -var SupplementalGlyphMapForArialBlack = { - '227': 322, '264': 261, '291': 346, -}; - -// Some characters, e.g. copyrightserif, are mapped to the private use area and -// might not be displayed using standard fonts. Mapping/hacking well-known chars -// to the similar equivalents in the normal characters range. -var SpecialPUASymbols = { - '63721': 0x00A9, // copyrightsans (0xF8E9) => copyright - '63193': 0x00A9, // copyrightserif (0xF6D9) => copyright - '63720': 0x00AE, // registersans (0xF8E8) => registered - '63194': 0x00AE, // registerserif (0xF6DA) => registered - '63722': 0x2122, // trademarksans (0xF8EA) => trademark - '63195': 0x2122, // trademarkserif (0xF6DB) => trademark - '63729': 0x23A7, // bracelefttp (0xF8F1) - '63730': 0x23A8, // braceleftmid (0xF8F2) - '63731': 0x23A9, // braceleftbt (0xF8F3) - '63740': 0x23AB, // bracerighttp (0xF8FC) - '63741': 0x23AC, // bracerightmid (0xF8FD) - '63742': 0x23AD, // bracerightbt (0xF8FE) - '63726': 0x23A1, // bracketlefttp (0xF8EE) - '63727': 0x23A2, // bracketleftex (0xF8EF) - '63728': 0x23A3, // bracketleftbt (0xF8F0) - '63737': 0x23A4, // bracketrighttp (0xF8F9) - '63738': 0x23A5, // bracketrightex (0xF8FA) - '63739': 0x23A6, // bracketrightbt (0xF8FB) - '63723': 0x239B, // parenlefttp (0xF8EB) - '63724': 0x239C, // parenleftex (0xF8EC) - '63725': 0x239D, // parenleftbt (0xF8ED) - '63734': 0x239E, // parenrighttp (0xF8F6) - '63735': 0x239F, // parenrightex (0xF8F7) - '63736': 0x23A0, // parenrightbt (0xF8F8) -}; -function mapSpecialUnicodeValues(code) { - if (code >= 0xFFF0 && code <= 0xFFFF) { // Specials unicode block. - return 0; - } else if (code >= 0xF600 && code <= 0xF8FF) { - return (SpecialPUASymbols[code] || code); - } - return code; -} - -var UnicodeRanges = [ - { 'begin': 0x0000, 'end': 0x007F }, // Basic Latin - { 'begin': 0x0080, 'end': 0x00FF }, // Latin-1 Supplement - { 'begin': 0x0100, 'end': 0x017F }, // Latin Extended-A - { 'begin': 0x0180, 'end': 0x024F }, // Latin Extended-B - { 'begin': 0x0250, 'end': 0x02AF }, // IPA Extensions - { 'begin': 0x02B0, 'end': 0x02FF }, // Spacing Modifier Letters - { 'begin': 0x0300, 'end': 0x036F }, // Combining Diacritical Marks - { 'begin': 0x0370, 'end': 0x03FF }, // Greek and Coptic - { 'begin': 0x2C80, 'end': 0x2CFF }, // Coptic - { 'begin': 0x0400, 'end': 0x04FF }, // Cyrillic - { 'begin': 0x0530, 'end': 0x058F }, // Armenian - { 'begin': 0x0590, 'end': 0x05FF }, // Hebrew - { 'begin': 0xA500, 'end': 0xA63F }, // Vai - { 'begin': 0x0600, 'end': 0x06FF }, // Arabic - { 'begin': 0x07C0, 'end': 0x07FF }, // NKo - { 'begin': 0x0900, 'end': 0x097F }, // Devanagari - { 'begin': 0x0980, 'end': 0x09FF }, // Bengali - { 'begin': 0x0A00, 'end': 0x0A7F }, // Gurmukhi - { 'begin': 0x0A80, 'end': 0x0AFF }, // Gujarati - { 'begin': 0x0B00, 'end': 0x0B7F }, // Oriya - { 'begin': 0x0B80, 'end': 0x0BFF }, // Tamil - { 'begin': 0x0C00, 'end': 0x0C7F }, // Telugu - { 'begin': 0x0C80, 'end': 0x0CFF }, // Kannada - { 'begin': 0x0D00, 'end': 0x0D7F }, // Malayalam - { 'begin': 0x0E00, 'end': 0x0E7F }, // Thai - { 'begin': 0x0E80, 'end': 0x0EFF }, // Lao - { 'begin': 0x10A0, 'end': 0x10FF }, // Georgian - { 'begin': 0x1B00, 'end': 0x1B7F }, // Balinese - { 'begin': 0x1100, 'end': 0x11FF }, // Hangul Jamo - { 'begin': 0x1E00, 'end': 0x1EFF }, // Latin Extended Additional - { 'begin': 0x1F00, 'end': 0x1FFF }, // Greek Extended - { 'begin': 0x2000, 'end': 0x206F }, // General Punctuation - { 'begin': 0x2070, 'end': 0x209F }, // Superscripts And Subscripts - { 'begin': 0x20A0, 'end': 0x20CF }, // Currency Symbol - { 'begin': 0x20D0, 'end': 0x20FF }, // Combining Diacritical Marks For Symbols - { 'begin': 0x2100, 'end': 0x214F }, // Letterlike Symbols - { 'begin': 0x2150, 'end': 0x218F }, // Number Forms - { 'begin': 0x2190, 'end': 0x21FF }, // Arrows - { 'begin': 0x2200, 'end': 0x22FF }, // Mathematical Operators - { 'begin': 0x2300, 'end': 0x23FF }, // Miscellaneous Technical - { 'begin': 0x2400, 'end': 0x243F }, // Control Pictures - { 'begin': 0x2440, 'end': 0x245F }, // Optical Character Recognition - { 'begin': 0x2460, 'end': 0x24FF }, // Enclosed Alphanumerics - { 'begin': 0x2500, 'end': 0x257F }, // Box Drawing - { 'begin': 0x2580, 'end': 0x259F }, // Block Elements - { 'begin': 0x25A0, 'end': 0x25FF }, // Geometric Shapes - { 'begin': 0x2600, 'end': 0x26FF }, // Miscellaneous Symbols - { 'begin': 0x2700, 'end': 0x27BF }, // Dingbats - { 'begin': 0x3000, 'end': 0x303F }, // CJK Symbols And Punctuation - { 'begin': 0x3040, 'end': 0x309F }, // Hiragana - { 'begin': 0x30A0, 'end': 0x30FF }, // Katakana - { 'begin': 0x3100, 'end': 0x312F }, // Bopomofo - { 'begin': 0x3130, 'end': 0x318F }, // Hangul Compatibility Jamo - { 'begin': 0xA840, 'end': 0xA87F }, // Phags-pa - { 'begin': 0x3200, 'end': 0x32FF }, // Enclosed CJK Letters And Months - { 'begin': 0x3300, 'end': 0x33FF }, // CJK Compatibility - { 'begin': 0xAC00, 'end': 0xD7AF }, // Hangul Syllables - { 'begin': 0xD800, 'end': 0xDFFF }, // Non-Plane 0 * - { 'begin': 0x10900, 'end': 0x1091F }, // Phoenicia - { 'begin': 0x4E00, 'end': 0x9FFF }, // CJK Unified Ideographs - { 'begin': 0xE000, 'end': 0xF8FF }, // Private Use Area (plane 0) - { 'begin': 0x31C0, 'end': 0x31EF }, // CJK Strokes - { 'begin': 0xFB00, 'end': 0xFB4F }, // Alphabetic Presentation Forms - { 'begin': 0xFB50, 'end': 0xFDFF }, // Arabic Presentation Forms-A - { 'begin': 0xFE20, 'end': 0xFE2F }, // Combining Half Marks - { 'begin': 0xFE10, 'end': 0xFE1F }, // Vertical Forms - { 'begin': 0xFE50, 'end': 0xFE6F }, // Small Form Variants - { 'begin': 0xFE70, 'end': 0xFEFF }, // Arabic Presentation Forms-B - { 'begin': 0xFF00, 'end': 0xFFEF }, // Halfwidth And Fullwidth Forms - { 'begin': 0xFFF0, 'end': 0xFFFF }, // Specials - { 'begin': 0x0F00, 'end': 0x0FFF }, // Tibetan - { 'begin': 0x0700, 'end': 0x074F }, // Syriac - { 'begin': 0x0780, 'end': 0x07BF }, // Thaana - { 'begin': 0x0D80, 'end': 0x0DFF }, // Sinhala - { 'begin': 0x1000, 'end': 0x109F }, // Myanmar - { 'begin': 0x1200, 'end': 0x137F }, // Ethiopic - { 'begin': 0x13A0, 'end': 0x13FF }, // Cherokee - { 'begin': 0x1400, 'end': 0x167F }, // Unified Canadian Aboriginal Syllabics - { 'begin': 0x1680, 'end': 0x169F }, // Ogham - { 'begin': 0x16A0, 'end': 0x16FF }, // Runic - { 'begin': 0x1780, 'end': 0x17FF }, // Khmer - { 'begin': 0x1800, 'end': 0x18AF }, // Mongolian - { 'begin': 0x2800, 'end': 0x28FF }, // Braille Patterns - { 'begin': 0xA000, 'end': 0xA48F }, // Yi Syllables - { 'begin': 0x1700, 'end': 0x171F }, // Tagalog - { 'begin': 0x10300, 'end': 0x1032F }, // Old Italic - { 'begin': 0x10330, 'end': 0x1034F }, // Gothic - { 'begin': 0x10400, 'end': 0x1044F }, // Deseret - { 'begin': 0x1D000, 'end': 0x1D0FF }, // Byzantine Musical Symbols - { 'begin': 0x1D400, 'end': 0x1D7FF }, // Mathematical Alphanumeric Symbols - { 'begin': 0xFF000, 'end': 0xFFFFD }, // Private Use (plane 15) - { 'begin': 0xFE00, 'end': 0xFE0F }, // Variation Selectors - { 'begin': 0xE0000, 'end': 0xE007F }, // Tags - { 'begin': 0x1900, 'end': 0x194F }, // Limbu - { 'begin': 0x1950, 'end': 0x197F }, // Tai Le - { 'begin': 0x1980, 'end': 0x19DF }, // New Tai Lue - { 'begin': 0x1A00, 'end': 0x1A1F }, // Buginese - { 'begin': 0x2C00, 'end': 0x2C5F }, // Glagolitic - { 'begin': 0x2D30, 'end': 0x2D7F }, // Tifinagh - { 'begin': 0x4DC0, 'end': 0x4DFF }, // Yijing Hexagram Symbols - { 'begin': 0xA800, 'end': 0xA82F }, // Syloti Nagri - { 'begin': 0x10000, 'end': 0x1007F }, // Linear B Syllabary - { 'begin': 0x10140, 'end': 0x1018F }, // Ancient Greek Numbers - { 'begin': 0x10380, 'end': 0x1039F }, // Ugaritic - { 'begin': 0x103A0, 'end': 0x103DF }, // Old Persian - { 'begin': 0x10450, 'end': 0x1047F }, // Shavian - { 'begin': 0x10480, 'end': 0x104AF }, // Osmanya - { 'begin': 0x10800, 'end': 0x1083F }, // Cypriot Syllabary - { 'begin': 0x10A00, 'end': 0x10A5F }, // Kharoshthi - { 'begin': 0x1D300, 'end': 0x1D35F }, // Tai Xuan Jing Symbols - { 'begin': 0x12000, 'end': 0x123FF }, // Cuneiform - { 'begin': 0x1D360, 'end': 0x1D37F }, // Counting Rod Numerals - { 'begin': 0x1B80, 'end': 0x1BBF }, // Sundanese - { 'begin': 0x1C00, 'end': 0x1C4F }, // Lepcha - { 'begin': 0x1C50, 'end': 0x1C7F }, // Ol Chiki - { 'begin': 0xA880, 'end': 0xA8DF }, // Saurashtra - { 'begin': 0xA900, 'end': 0xA92F }, // Kayah Li - { 'begin': 0xA930, 'end': 0xA95F }, // Rejang - { 'begin': 0xAA00, 'end': 0xAA5F }, // Cham - { 'begin': 0x10190, 'end': 0x101CF }, // Ancient Symbols - { 'begin': 0x101D0, 'end': 0x101FF }, // Phaistos Disc - { 'begin': 0x102A0, 'end': 0x102DF }, // Carian - { 'begin': 0x1F030, 'end': 0x1F09F } // Domino Tiles -]; - -var MacStandardGlyphOrdering = [ - '.notdef', '.null', 'nonmarkingreturn', 'space', 'exclam', 'quotedbl', - 'numbersign', 'dollar', 'percent', 'ampersand', 'quotesingle', 'parenleft', - 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', - 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', - 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at', - 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', - 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', - 'backslash', 'bracketright', 'asciicircum', 'underscore', 'grave', 'a', 'b', - 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', - 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', - 'asciitilde', 'Adieresis', 'Aring', 'Ccedilla', 'Eacute', 'Ntilde', - 'Odieresis', 'Udieresis', 'aacute', 'agrave', 'acircumflex', 'adieresis', - 'atilde', 'aring', 'ccedilla', 'eacute', 'egrave', 'ecircumflex', 'edieresis', - 'iacute', 'igrave', 'icircumflex', 'idieresis', 'ntilde', 'oacute', 'ograve', - 'ocircumflex', 'odieresis', 'otilde', 'uacute', 'ugrave', 'ucircumflex', - 'udieresis', 'dagger', 'degree', 'cent', 'sterling', 'section', 'bullet', - 'paragraph', 'germandbls', 'registered', 'copyright', 'trademark', 'acute', - 'dieresis', 'notequal', 'AE', 'Oslash', 'infinity', 'plusminus', 'lessequal', - 'greaterequal', 'yen', 'mu', 'partialdiff', 'summation', 'product', 'pi', - 'integral', 'ordfeminine', 'ordmasculine', 'Omega', 'ae', 'oslash', - 'questiondown', 'exclamdown', 'logicalnot', 'radical', 'florin', - 'approxequal', 'Delta', 'guillemotleft', 'guillemotright', 'ellipsis', - 'nonbreakingspace', 'Agrave', 'Atilde', 'Otilde', 'OE', 'oe', 'endash', - 'emdash', 'quotedblleft', 'quotedblright', 'quoteleft', 'quoteright', - 'divide', 'lozenge', 'ydieresis', 'Ydieresis', 'fraction', 'currency', - 'guilsinglleft', 'guilsinglright', 'fi', 'fl', 'daggerdbl', 'periodcentered', - 'quotesinglbase', 'quotedblbase', 'perthousand', 'Acircumflex', - 'Ecircumflex', 'Aacute', 'Edieresis', 'Egrave', 'Iacute', 'Icircumflex', - 'Idieresis', 'Igrave', 'Oacute', 'Ocircumflex', 'apple', 'Ograve', 'Uacute', - 'Ucircumflex', 'Ugrave', 'dotlessi', 'circumflex', 'tilde', 'macron', - 'breve', 'dotaccent', 'ring', 'cedilla', 'hungarumlaut', 'ogonek', 'caron', - 'Lslash', 'lslash', 'Scaron', 'scaron', 'Zcaron', 'zcaron', 'brokenbar', - 'Eth', 'eth', 'Yacute', 'yacute', 'Thorn', 'thorn', 'minus', 'multiply', - 'onesuperior', 'twosuperior', 'threesuperior', 'onehalf', 'onequarter', - 'threequarters', 'franc', 'Gbreve', 'gbreve', 'Idotaccent', 'Scedilla', - 'scedilla', 'Cacute', 'cacute', 'Ccaron', 'ccaron', 'dcroat']; - -function getUnicodeRangeFor(value) { - for (var i = 0, ii = UnicodeRanges.length; i < ii; i++) { - var range = UnicodeRanges[i]; - if (value >= range.begin && value < range.end) { - return i; - } - } - return -1; -} - -function isRTLRangeFor(value) { - var range = UnicodeRanges[13]; - if (value >= range.begin && value < range.end) { - return true; - } - range = UnicodeRanges[11]; - if (value >= range.begin && value < range.end) { - return true; - } - return false; -} - -// The normalization table is obtained by filtering the Unicode characters -// database with entries. -var NormalizedUnicodes = { - '\u00A8': '\u0020\u0308', - '\u00AF': '\u0020\u0304', - '\u00B4': '\u0020\u0301', - '\u00B5': '\u03BC', - '\u00B8': '\u0020\u0327', - '\u0132': '\u0049\u004A', - '\u0133': '\u0069\u006A', - '\u013F': '\u004C\u00B7', - '\u0140': '\u006C\u00B7', - '\u0149': '\u02BC\u006E', - '\u017F': '\u0073', - '\u01C4': '\u0044\u017D', - '\u01C5': '\u0044\u017E', - '\u01C6': '\u0064\u017E', - '\u01C7': '\u004C\u004A', - '\u01C8': '\u004C\u006A', - '\u01C9': '\u006C\u006A', - '\u01CA': '\u004E\u004A', - '\u01CB': '\u004E\u006A', - '\u01CC': '\u006E\u006A', - '\u01F1': '\u0044\u005A', - '\u01F2': '\u0044\u007A', - '\u01F3': '\u0064\u007A', - '\u02D8': '\u0020\u0306', - '\u02D9': '\u0020\u0307', - '\u02DA': '\u0020\u030A', - '\u02DB': '\u0020\u0328', - '\u02DC': '\u0020\u0303', - '\u02DD': '\u0020\u030B', - '\u037A': '\u0020\u0345', - '\u0384': '\u0020\u0301', - '\u03D0': '\u03B2', - '\u03D1': '\u03B8', - '\u03D2': '\u03A5', - '\u03D5': '\u03C6', - '\u03D6': '\u03C0', - '\u03F0': '\u03BA', - '\u03F1': '\u03C1', - '\u03F2': '\u03C2', - '\u03F4': '\u0398', - '\u03F5': '\u03B5', - '\u03F9': '\u03A3', - '\u0587': '\u0565\u0582', - '\u0675': '\u0627\u0674', - '\u0676': '\u0648\u0674', - '\u0677': '\u06C7\u0674', - '\u0678': '\u064A\u0674', - '\u0E33': '\u0E4D\u0E32', - '\u0EB3': '\u0ECD\u0EB2', - '\u0EDC': '\u0EAB\u0E99', - '\u0EDD': '\u0EAB\u0EA1', - '\u0F77': '\u0FB2\u0F81', - '\u0F79': '\u0FB3\u0F81', - '\u1E9A': '\u0061\u02BE', - '\u1FBD': '\u0020\u0313', - '\u1FBF': '\u0020\u0313', - '\u1FC0': '\u0020\u0342', - '\u1FFE': '\u0020\u0314', - '\u2002': '\u0020', - '\u2003': '\u0020', - '\u2004': '\u0020', - '\u2005': '\u0020', - '\u2006': '\u0020', - '\u2008': '\u0020', - '\u2009': '\u0020', - '\u200A': '\u0020', - '\u2017': '\u0020\u0333', - '\u2024': '\u002E', - '\u2025': '\u002E\u002E', - '\u2026': '\u002E\u002E\u002E', - '\u2033': '\u2032\u2032', - '\u2034': '\u2032\u2032\u2032', - '\u2036': '\u2035\u2035', - '\u2037': '\u2035\u2035\u2035', - '\u203C': '\u0021\u0021', - '\u203E': '\u0020\u0305', - '\u2047': '\u003F\u003F', - '\u2048': '\u003F\u0021', - '\u2049': '\u0021\u003F', - '\u2057': '\u2032\u2032\u2032\u2032', - '\u205F': '\u0020', - '\u20A8': '\u0052\u0073', - '\u2100': '\u0061\u002F\u0063', - '\u2101': '\u0061\u002F\u0073', - '\u2103': '\u00B0\u0043', - '\u2105': '\u0063\u002F\u006F', - '\u2106': '\u0063\u002F\u0075', - '\u2107': '\u0190', - '\u2109': '\u00B0\u0046', - '\u2116': '\u004E\u006F', - '\u2121': '\u0054\u0045\u004C', - '\u2135': '\u05D0', - '\u2136': '\u05D1', - '\u2137': '\u05D2', - '\u2138': '\u05D3', - '\u213B': '\u0046\u0041\u0058', - '\u2160': '\u0049', - '\u2161': '\u0049\u0049', - '\u2162': '\u0049\u0049\u0049', - '\u2163': '\u0049\u0056', - '\u2164': '\u0056', - '\u2165': '\u0056\u0049', - '\u2166': '\u0056\u0049\u0049', - '\u2167': '\u0056\u0049\u0049\u0049', - '\u2168': '\u0049\u0058', - '\u2169': '\u0058', - '\u216A': '\u0058\u0049', - '\u216B': '\u0058\u0049\u0049', - '\u216C': '\u004C', - '\u216D': '\u0043', - '\u216E': '\u0044', - '\u216F': '\u004D', - '\u2170': '\u0069', - '\u2171': '\u0069\u0069', - '\u2172': '\u0069\u0069\u0069', - '\u2173': '\u0069\u0076', - '\u2174': '\u0076', - '\u2175': '\u0076\u0069', - '\u2176': '\u0076\u0069\u0069', - '\u2177': '\u0076\u0069\u0069\u0069', - '\u2178': '\u0069\u0078', - '\u2179': '\u0078', - '\u217A': '\u0078\u0069', - '\u217B': '\u0078\u0069\u0069', - '\u217C': '\u006C', - '\u217D': '\u0063', - '\u217E': '\u0064', - '\u217F': '\u006D', - '\u222C': '\u222B\u222B', - '\u222D': '\u222B\u222B\u222B', - '\u222F': '\u222E\u222E', - '\u2230': '\u222E\u222E\u222E', - '\u2474': '\u0028\u0031\u0029', - '\u2475': '\u0028\u0032\u0029', - '\u2476': '\u0028\u0033\u0029', - '\u2477': '\u0028\u0034\u0029', - '\u2478': '\u0028\u0035\u0029', - '\u2479': '\u0028\u0036\u0029', - '\u247A': '\u0028\u0037\u0029', - '\u247B': '\u0028\u0038\u0029', - '\u247C': '\u0028\u0039\u0029', - '\u247D': '\u0028\u0031\u0030\u0029', - '\u247E': '\u0028\u0031\u0031\u0029', - '\u247F': '\u0028\u0031\u0032\u0029', - '\u2480': '\u0028\u0031\u0033\u0029', - '\u2481': '\u0028\u0031\u0034\u0029', - '\u2482': '\u0028\u0031\u0035\u0029', - '\u2483': '\u0028\u0031\u0036\u0029', - '\u2484': '\u0028\u0031\u0037\u0029', - '\u2485': '\u0028\u0031\u0038\u0029', - '\u2486': '\u0028\u0031\u0039\u0029', - '\u2487': '\u0028\u0032\u0030\u0029', - '\u2488': '\u0031\u002E', - '\u2489': '\u0032\u002E', - '\u248A': '\u0033\u002E', - '\u248B': '\u0034\u002E', - '\u248C': '\u0035\u002E', - '\u248D': '\u0036\u002E', - '\u248E': '\u0037\u002E', - '\u248F': '\u0038\u002E', - '\u2490': '\u0039\u002E', - '\u2491': '\u0031\u0030\u002E', - '\u2492': '\u0031\u0031\u002E', - '\u2493': '\u0031\u0032\u002E', - '\u2494': '\u0031\u0033\u002E', - '\u2495': '\u0031\u0034\u002E', - '\u2496': '\u0031\u0035\u002E', - '\u2497': '\u0031\u0036\u002E', - '\u2498': '\u0031\u0037\u002E', - '\u2499': '\u0031\u0038\u002E', - '\u249A': '\u0031\u0039\u002E', - '\u249B': '\u0032\u0030\u002E', - '\u249C': '\u0028\u0061\u0029', - '\u249D': '\u0028\u0062\u0029', - '\u249E': '\u0028\u0063\u0029', - '\u249F': '\u0028\u0064\u0029', - '\u24A0': '\u0028\u0065\u0029', - '\u24A1': '\u0028\u0066\u0029', - '\u24A2': '\u0028\u0067\u0029', - '\u24A3': '\u0028\u0068\u0029', - '\u24A4': '\u0028\u0069\u0029', - '\u24A5': '\u0028\u006A\u0029', - '\u24A6': '\u0028\u006B\u0029', - '\u24A7': '\u0028\u006C\u0029', - '\u24A8': '\u0028\u006D\u0029', - '\u24A9': '\u0028\u006E\u0029', - '\u24AA': '\u0028\u006F\u0029', - '\u24AB': '\u0028\u0070\u0029', - '\u24AC': '\u0028\u0071\u0029', - '\u24AD': '\u0028\u0072\u0029', - '\u24AE': '\u0028\u0073\u0029', - '\u24AF': '\u0028\u0074\u0029', - '\u24B0': '\u0028\u0075\u0029', - '\u24B1': '\u0028\u0076\u0029', - '\u24B2': '\u0028\u0077\u0029', - '\u24B3': '\u0028\u0078\u0029', - '\u24B4': '\u0028\u0079\u0029', - '\u24B5': '\u0028\u007A\u0029', - '\u2A0C': '\u222B\u222B\u222B\u222B', - '\u2A74': '\u003A\u003A\u003D', - '\u2A75': '\u003D\u003D', - '\u2A76': '\u003D\u003D\u003D', - '\u2E9F': '\u6BCD', - '\u2EF3': '\u9F9F', - '\u2F00': '\u4E00', - '\u2F01': '\u4E28', - '\u2F02': '\u4E36', - '\u2F03': '\u4E3F', - '\u2F04': '\u4E59', - '\u2F05': '\u4E85', - '\u2F06': '\u4E8C', - '\u2F07': '\u4EA0', - '\u2F08': '\u4EBA', - '\u2F09': '\u513F', - '\u2F0A': '\u5165', - '\u2F0B': '\u516B', - '\u2F0C': '\u5182', - '\u2F0D': '\u5196', - '\u2F0E': '\u51AB', - '\u2F0F': '\u51E0', - '\u2F10': '\u51F5', - '\u2F11': '\u5200', - '\u2F12': '\u529B', - '\u2F13': '\u52F9', - '\u2F14': '\u5315', - '\u2F15': '\u531A', - '\u2F16': '\u5338', - '\u2F17': '\u5341', - '\u2F18': '\u535C', - '\u2F19': '\u5369', - '\u2F1A': '\u5382', - '\u2F1B': '\u53B6', - '\u2F1C': '\u53C8', - '\u2F1D': '\u53E3', - '\u2F1E': '\u56D7', - '\u2F1F': '\u571F', - '\u2F20': '\u58EB', - '\u2F21': '\u5902', - '\u2F22': '\u590A', - '\u2F23': '\u5915', - '\u2F24': '\u5927', - '\u2F25': '\u5973', - '\u2F26': '\u5B50', - '\u2F27': '\u5B80', - '\u2F28': '\u5BF8', - '\u2F29': '\u5C0F', - '\u2F2A': '\u5C22', - '\u2F2B': '\u5C38', - '\u2F2C': '\u5C6E', - '\u2F2D': '\u5C71', - '\u2F2E': '\u5DDB', - '\u2F2F': '\u5DE5', - '\u2F30': '\u5DF1', - '\u2F31': '\u5DFE', - '\u2F32': '\u5E72', - '\u2F33': '\u5E7A', - '\u2F34': '\u5E7F', - '\u2F35': '\u5EF4', - '\u2F36': '\u5EFE', - '\u2F37': '\u5F0B', - '\u2F38': '\u5F13', - '\u2F39': '\u5F50', - '\u2F3A': '\u5F61', - '\u2F3B': '\u5F73', - '\u2F3C': '\u5FC3', - '\u2F3D': '\u6208', - '\u2F3E': '\u6236', - '\u2F3F': '\u624B', - '\u2F40': '\u652F', - '\u2F41': '\u6534', - '\u2F42': '\u6587', - '\u2F43': '\u6597', - '\u2F44': '\u65A4', - '\u2F45': '\u65B9', - '\u2F46': '\u65E0', - '\u2F47': '\u65E5', - '\u2F48': '\u66F0', - '\u2F49': '\u6708', - '\u2F4A': '\u6728', - '\u2F4B': '\u6B20', - '\u2F4C': '\u6B62', - '\u2F4D': '\u6B79', - '\u2F4E': '\u6BB3', - '\u2F4F': '\u6BCB', - '\u2F50': '\u6BD4', - '\u2F51': '\u6BDB', - '\u2F52': '\u6C0F', - '\u2F53': '\u6C14', - '\u2F54': '\u6C34', - '\u2F55': '\u706B', - '\u2F56': '\u722A', - '\u2F57': '\u7236', - '\u2F58': '\u723B', - '\u2F59': '\u723F', - '\u2F5A': '\u7247', - '\u2F5B': '\u7259', - '\u2F5C': '\u725B', - '\u2F5D': '\u72AC', - '\u2F5E': '\u7384', - '\u2F5F': '\u7389', - '\u2F60': '\u74DC', - '\u2F61': '\u74E6', - '\u2F62': '\u7518', - '\u2F63': '\u751F', - '\u2F64': '\u7528', - '\u2F65': '\u7530', - '\u2F66': '\u758B', - '\u2F67': '\u7592', - '\u2F68': '\u7676', - '\u2F69': '\u767D', - '\u2F6A': '\u76AE', - '\u2F6B': '\u76BF', - '\u2F6C': '\u76EE', - '\u2F6D': '\u77DB', - '\u2F6E': '\u77E2', - '\u2F6F': '\u77F3', - '\u2F70': '\u793A', - '\u2F71': '\u79B8', - '\u2F72': '\u79BE', - '\u2F73': '\u7A74', - '\u2F74': '\u7ACB', - '\u2F75': '\u7AF9', - '\u2F76': '\u7C73', - '\u2F77': '\u7CF8', - '\u2F78': '\u7F36', - '\u2F79': '\u7F51', - '\u2F7A': '\u7F8A', - '\u2F7B': '\u7FBD', - '\u2F7C': '\u8001', - '\u2F7D': '\u800C', - '\u2F7E': '\u8012', - '\u2F7F': '\u8033', - '\u2F80': '\u807F', - '\u2F81': '\u8089', - '\u2F82': '\u81E3', - '\u2F83': '\u81EA', - '\u2F84': '\u81F3', - '\u2F85': '\u81FC', - '\u2F86': '\u820C', - '\u2F87': '\u821B', - '\u2F88': '\u821F', - '\u2F89': '\u826E', - '\u2F8A': '\u8272', - '\u2F8B': '\u8278', - '\u2F8C': '\u864D', - '\u2F8D': '\u866B', - '\u2F8E': '\u8840', - '\u2F8F': '\u884C', - '\u2F90': '\u8863', - '\u2F91': '\u897E', - '\u2F92': '\u898B', - '\u2F93': '\u89D2', - '\u2F94': '\u8A00', - '\u2F95': '\u8C37', - '\u2F96': '\u8C46', - '\u2F97': '\u8C55', - '\u2F98': '\u8C78', - '\u2F99': '\u8C9D', - '\u2F9A': '\u8D64', - '\u2F9B': '\u8D70', - '\u2F9C': '\u8DB3', - '\u2F9D': '\u8EAB', - '\u2F9E': '\u8ECA', - '\u2F9F': '\u8F9B', - '\u2FA0': '\u8FB0', - '\u2FA1': '\u8FB5', - '\u2FA2': '\u9091', - '\u2FA3': '\u9149', - '\u2FA4': '\u91C6', - '\u2FA5': '\u91CC', - '\u2FA6': '\u91D1', - '\u2FA7': '\u9577', - '\u2FA8': '\u9580', - '\u2FA9': '\u961C', - '\u2FAA': '\u96B6', - '\u2FAB': '\u96B9', - '\u2FAC': '\u96E8', - '\u2FAD': '\u9751', - '\u2FAE': '\u975E', - '\u2FAF': '\u9762', - '\u2FB0': '\u9769', - '\u2FB1': '\u97CB', - '\u2FB2': '\u97ED', - '\u2FB3': '\u97F3', - '\u2FB4': '\u9801', - '\u2FB5': '\u98A8', - '\u2FB6': '\u98DB', - '\u2FB7': '\u98DF', - '\u2FB8': '\u9996', - '\u2FB9': '\u9999', - '\u2FBA': '\u99AC', - '\u2FBB': '\u9AA8', - '\u2FBC': '\u9AD8', - '\u2FBD': '\u9ADF', - '\u2FBE': '\u9B25', - '\u2FBF': '\u9B2F', - '\u2FC0': '\u9B32', - '\u2FC1': '\u9B3C', - '\u2FC2': '\u9B5A', - '\u2FC3': '\u9CE5', - '\u2FC4': '\u9E75', - '\u2FC5': '\u9E7F', - '\u2FC6': '\u9EA5', - '\u2FC7': '\u9EBB', - '\u2FC8': '\u9EC3', - '\u2FC9': '\u9ECD', - '\u2FCA': '\u9ED1', - '\u2FCB': '\u9EF9', - '\u2FCC': '\u9EFD', - '\u2FCD': '\u9F0E', - '\u2FCE': '\u9F13', - '\u2FCF': '\u9F20', - '\u2FD0': '\u9F3B', - '\u2FD1': '\u9F4A', - '\u2FD2': '\u9F52', - '\u2FD3': '\u9F8D', - '\u2FD4': '\u9F9C', - '\u2FD5': '\u9FA0', - '\u3036': '\u3012', - '\u3038': '\u5341', - '\u3039': '\u5344', - '\u303A': '\u5345', - '\u309B': '\u0020\u3099', - '\u309C': '\u0020\u309A', - '\u3131': '\u1100', - '\u3132': '\u1101', - '\u3133': '\u11AA', - '\u3134': '\u1102', - '\u3135': '\u11AC', - '\u3136': '\u11AD', - '\u3137': '\u1103', - '\u3138': '\u1104', - '\u3139': '\u1105', - '\u313A': '\u11B0', - '\u313B': '\u11B1', - '\u313C': '\u11B2', - '\u313D': '\u11B3', - '\u313E': '\u11B4', - '\u313F': '\u11B5', - '\u3140': '\u111A', - '\u3141': '\u1106', - '\u3142': '\u1107', - '\u3143': '\u1108', - '\u3144': '\u1121', - '\u3145': '\u1109', - '\u3146': '\u110A', - '\u3147': '\u110B', - '\u3148': '\u110C', - '\u3149': '\u110D', - '\u314A': '\u110E', - '\u314B': '\u110F', - '\u314C': '\u1110', - '\u314D': '\u1111', - '\u314E': '\u1112', - '\u314F': '\u1161', - '\u3150': '\u1162', - '\u3151': '\u1163', - '\u3152': '\u1164', - '\u3153': '\u1165', - '\u3154': '\u1166', - '\u3155': '\u1167', - '\u3156': '\u1168', - '\u3157': '\u1169', - '\u3158': '\u116A', - '\u3159': '\u116B', - '\u315A': '\u116C', - '\u315B': '\u116D', - '\u315C': '\u116E', - '\u315D': '\u116F', - '\u315E': '\u1170', - '\u315F': '\u1171', - '\u3160': '\u1172', - '\u3161': '\u1173', - '\u3162': '\u1174', - '\u3163': '\u1175', - '\u3164': '\u1160', - '\u3165': '\u1114', - '\u3166': '\u1115', - '\u3167': '\u11C7', - '\u3168': '\u11C8', - '\u3169': '\u11CC', - '\u316A': '\u11CE', - '\u316B': '\u11D3', - '\u316C': '\u11D7', - '\u316D': '\u11D9', - '\u316E': '\u111C', - '\u316F': '\u11DD', - '\u3170': '\u11DF', - '\u3171': '\u111D', - '\u3172': '\u111E', - '\u3173': '\u1120', - '\u3174': '\u1122', - '\u3175': '\u1123', - '\u3176': '\u1127', - '\u3177': '\u1129', - '\u3178': '\u112B', - '\u3179': '\u112C', - '\u317A': '\u112D', - '\u317B': '\u112E', - '\u317C': '\u112F', - '\u317D': '\u1132', - '\u317E': '\u1136', - '\u317F': '\u1140', - '\u3180': '\u1147', - '\u3181': '\u114C', - '\u3182': '\u11F1', - '\u3183': '\u11F2', - '\u3184': '\u1157', - '\u3185': '\u1158', - '\u3186': '\u1159', - '\u3187': '\u1184', - '\u3188': '\u1185', - '\u3189': '\u1188', - '\u318A': '\u1191', - '\u318B': '\u1192', - '\u318C': '\u1194', - '\u318D': '\u119E', - '\u318E': '\u11A1', - '\u3200': '\u0028\u1100\u0029', - '\u3201': '\u0028\u1102\u0029', - '\u3202': '\u0028\u1103\u0029', - '\u3203': '\u0028\u1105\u0029', - '\u3204': '\u0028\u1106\u0029', - '\u3205': '\u0028\u1107\u0029', - '\u3206': '\u0028\u1109\u0029', - '\u3207': '\u0028\u110B\u0029', - '\u3208': '\u0028\u110C\u0029', - '\u3209': '\u0028\u110E\u0029', - '\u320A': '\u0028\u110F\u0029', - '\u320B': '\u0028\u1110\u0029', - '\u320C': '\u0028\u1111\u0029', - '\u320D': '\u0028\u1112\u0029', - '\u320E': '\u0028\u1100\u1161\u0029', - '\u320F': '\u0028\u1102\u1161\u0029', - '\u3210': '\u0028\u1103\u1161\u0029', - '\u3211': '\u0028\u1105\u1161\u0029', - '\u3212': '\u0028\u1106\u1161\u0029', - '\u3213': '\u0028\u1107\u1161\u0029', - '\u3214': '\u0028\u1109\u1161\u0029', - '\u3215': '\u0028\u110B\u1161\u0029', - '\u3216': '\u0028\u110C\u1161\u0029', - '\u3217': '\u0028\u110E\u1161\u0029', - '\u3218': '\u0028\u110F\u1161\u0029', - '\u3219': '\u0028\u1110\u1161\u0029', - '\u321A': '\u0028\u1111\u1161\u0029', - '\u321B': '\u0028\u1112\u1161\u0029', - '\u321C': '\u0028\u110C\u116E\u0029', - '\u321D': '\u0028\u110B\u1169\u110C\u1165\u11AB\u0029', - '\u321E': '\u0028\u110B\u1169\u1112\u116E\u0029', - '\u3220': '\u0028\u4E00\u0029', - '\u3221': '\u0028\u4E8C\u0029', - '\u3222': '\u0028\u4E09\u0029', - '\u3223': '\u0028\u56DB\u0029', - '\u3224': '\u0028\u4E94\u0029', - '\u3225': '\u0028\u516D\u0029', - '\u3226': '\u0028\u4E03\u0029', - '\u3227': '\u0028\u516B\u0029', - '\u3228': '\u0028\u4E5D\u0029', - '\u3229': '\u0028\u5341\u0029', - '\u322A': '\u0028\u6708\u0029', - '\u322B': '\u0028\u706B\u0029', - '\u322C': '\u0028\u6C34\u0029', - '\u322D': '\u0028\u6728\u0029', - '\u322E': '\u0028\u91D1\u0029', - '\u322F': '\u0028\u571F\u0029', - '\u3230': '\u0028\u65E5\u0029', - '\u3231': '\u0028\u682A\u0029', - '\u3232': '\u0028\u6709\u0029', - '\u3233': '\u0028\u793E\u0029', - '\u3234': '\u0028\u540D\u0029', - '\u3235': '\u0028\u7279\u0029', - '\u3236': '\u0028\u8CA1\u0029', - '\u3237': '\u0028\u795D\u0029', - '\u3238': '\u0028\u52B4\u0029', - '\u3239': '\u0028\u4EE3\u0029', - '\u323A': '\u0028\u547C\u0029', - '\u323B': '\u0028\u5B66\u0029', - '\u323C': '\u0028\u76E3\u0029', - '\u323D': '\u0028\u4F01\u0029', - '\u323E': '\u0028\u8CC7\u0029', - '\u323F': '\u0028\u5354\u0029', - '\u3240': '\u0028\u796D\u0029', - '\u3241': '\u0028\u4F11\u0029', - '\u3242': '\u0028\u81EA\u0029', - '\u3243': '\u0028\u81F3\u0029', - '\u32C0': '\u0031\u6708', - '\u32C1': '\u0032\u6708', - '\u32C2': '\u0033\u6708', - '\u32C3': '\u0034\u6708', - '\u32C4': '\u0035\u6708', - '\u32C5': '\u0036\u6708', - '\u32C6': '\u0037\u6708', - '\u32C7': '\u0038\u6708', - '\u32C8': '\u0039\u6708', - '\u32C9': '\u0031\u0030\u6708', - '\u32CA': '\u0031\u0031\u6708', - '\u32CB': '\u0031\u0032\u6708', - '\u3358': '\u0030\u70B9', - '\u3359': '\u0031\u70B9', - '\u335A': '\u0032\u70B9', - '\u335B': '\u0033\u70B9', - '\u335C': '\u0034\u70B9', - '\u335D': '\u0035\u70B9', - '\u335E': '\u0036\u70B9', - '\u335F': '\u0037\u70B9', - '\u3360': '\u0038\u70B9', - '\u3361': '\u0039\u70B9', - '\u3362': '\u0031\u0030\u70B9', - '\u3363': '\u0031\u0031\u70B9', - '\u3364': '\u0031\u0032\u70B9', - '\u3365': '\u0031\u0033\u70B9', - '\u3366': '\u0031\u0034\u70B9', - '\u3367': '\u0031\u0035\u70B9', - '\u3368': '\u0031\u0036\u70B9', - '\u3369': '\u0031\u0037\u70B9', - '\u336A': '\u0031\u0038\u70B9', - '\u336B': '\u0031\u0039\u70B9', - '\u336C': '\u0032\u0030\u70B9', - '\u336D': '\u0032\u0031\u70B9', - '\u336E': '\u0032\u0032\u70B9', - '\u336F': '\u0032\u0033\u70B9', - '\u3370': '\u0032\u0034\u70B9', - '\u33E0': '\u0031\u65E5', - '\u33E1': '\u0032\u65E5', - '\u33E2': '\u0033\u65E5', - '\u33E3': '\u0034\u65E5', - '\u33E4': '\u0035\u65E5', - '\u33E5': '\u0036\u65E5', - '\u33E6': '\u0037\u65E5', - '\u33E7': '\u0038\u65E5', - '\u33E8': '\u0039\u65E5', - '\u33E9': '\u0031\u0030\u65E5', - '\u33EA': '\u0031\u0031\u65E5', - '\u33EB': '\u0031\u0032\u65E5', - '\u33EC': '\u0031\u0033\u65E5', - '\u33ED': '\u0031\u0034\u65E5', - '\u33EE': '\u0031\u0035\u65E5', - '\u33EF': '\u0031\u0036\u65E5', - '\u33F0': '\u0031\u0037\u65E5', - '\u33F1': '\u0031\u0038\u65E5', - '\u33F2': '\u0031\u0039\u65E5', - '\u33F3': '\u0032\u0030\u65E5', - '\u33F4': '\u0032\u0031\u65E5', - '\u33F5': '\u0032\u0032\u65E5', - '\u33F6': '\u0032\u0033\u65E5', - '\u33F7': '\u0032\u0034\u65E5', - '\u33F8': '\u0032\u0035\u65E5', - '\u33F9': '\u0032\u0036\u65E5', - '\u33FA': '\u0032\u0037\u65E5', - '\u33FB': '\u0032\u0038\u65E5', - '\u33FC': '\u0032\u0039\u65E5', - '\u33FD': '\u0033\u0030\u65E5', - '\u33FE': '\u0033\u0031\u65E5', - '\uFB00': '\u0066\u0066', - '\uFB01': '\u0066\u0069', - '\uFB02': '\u0066\u006C', - '\uFB03': '\u0066\u0066\u0069', - '\uFB04': '\u0066\u0066\u006C', - '\uFB05': '\u017F\u0074', - '\uFB06': '\u0073\u0074', - '\uFB13': '\u0574\u0576', - '\uFB14': '\u0574\u0565', - '\uFB15': '\u0574\u056B', - '\uFB16': '\u057E\u0576', - '\uFB17': '\u0574\u056D', - '\uFB4F': '\u05D0\u05DC', - '\uFB50': '\u0671', - '\uFB51': '\u0671', - '\uFB52': '\u067B', - '\uFB53': '\u067B', - '\uFB54': '\u067B', - '\uFB55': '\u067B', - '\uFB56': '\u067E', - '\uFB57': '\u067E', - '\uFB58': '\u067E', - '\uFB59': '\u067E', - '\uFB5A': '\u0680', - '\uFB5B': '\u0680', - '\uFB5C': '\u0680', - '\uFB5D': '\u0680', - '\uFB5E': '\u067A', - '\uFB5F': '\u067A', - '\uFB60': '\u067A', - '\uFB61': '\u067A', - '\uFB62': '\u067F', - '\uFB63': '\u067F', - '\uFB64': '\u067F', - '\uFB65': '\u067F', - '\uFB66': '\u0679', - '\uFB67': '\u0679', - '\uFB68': '\u0679', - '\uFB69': '\u0679', - '\uFB6A': '\u06A4', - '\uFB6B': '\u06A4', - '\uFB6C': '\u06A4', - '\uFB6D': '\u06A4', - '\uFB6E': '\u06A6', - '\uFB6F': '\u06A6', - '\uFB70': '\u06A6', - '\uFB71': '\u06A6', - '\uFB72': '\u0684', - '\uFB73': '\u0684', - '\uFB74': '\u0684', - '\uFB75': '\u0684', - '\uFB76': '\u0683', - '\uFB77': '\u0683', - '\uFB78': '\u0683', - '\uFB79': '\u0683', - '\uFB7A': '\u0686', - '\uFB7B': '\u0686', - '\uFB7C': '\u0686', - '\uFB7D': '\u0686', - '\uFB7E': '\u0687', - '\uFB7F': '\u0687', - '\uFB80': '\u0687', - '\uFB81': '\u0687', - '\uFB82': '\u068D', - '\uFB83': '\u068D', - '\uFB84': '\u068C', - '\uFB85': '\u068C', - '\uFB86': '\u068E', - '\uFB87': '\u068E', - '\uFB88': '\u0688', - '\uFB89': '\u0688', - '\uFB8A': '\u0698', - '\uFB8B': '\u0698', - '\uFB8C': '\u0691', - '\uFB8D': '\u0691', - '\uFB8E': '\u06A9', - '\uFB8F': '\u06A9', - '\uFB90': '\u06A9', - '\uFB91': '\u06A9', - '\uFB92': '\u06AF', - '\uFB93': '\u06AF', - '\uFB94': '\u06AF', - '\uFB95': '\u06AF', - '\uFB96': '\u06B3', - '\uFB97': '\u06B3', - '\uFB98': '\u06B3', - '\uFB99': '\u06B3', - '\uFB9A': '\u06B1', - '\uFB9B': '\u06B1', - '\uFB9C': '\u06B1', - '\uFB9D': '\u06B1', - '\uFB9E': '\u06BA', - '\uFB9F': '\u06BA', - '\uFBA0': '\u06BB', - '\uFBA1': '\u06BB', - '\uFBA2': '\u06BB', - '\uFBA3': '\u06BB', - '\uFBA4': '\u06C0', - '\uFBA5': '\u06C0', - '\uFBA6': '\u06C1', - '\uFBA7': '\u06C1', - '\uFBA8': '\u06C1', - '\uFBA9': '\u06C1', - '\uFBAA': '\u06BE', - '\uFBAB': '\u06BE', - '\uFBAC': '\u06BE', - '\uFBAD': '\u06BE', - '\uFBAE': '\u06D2', - '\uFBAF': '\u06D2', - '\uFBB0': '\u06D3', - '\uFBB1': '\u06D3', - '\uFBD3': '\u06AD', - '\uFBD4': '\u06AD', - '\uFBD5': '\u06AD', - '\uFBD6': '\u06AD', - '\uFBD7': '\u06C7', - '\uFBD8': '\u06C7', - '\uFBD9': '\u06C6', - '\uFBDA': '\u06C6', - '\uFBDB': '\u06C8', - '\uFBDC': '\u06C8', - '\uFBDD': '\u0677', - '\uFBDE': '\u06CB', - '\uFBDF': '\u06CB', - '\uFBE0': '\u06C5', - '\uFBE1': '\u06C5', - '\uFBE2': '\u06C9', - '\uFBE3': '\u06C9', - '\uFBE4': '\u06D0', - '\uFBE5': '\u06D0', - '\uFBE6': '\u06D0', - '\uFBE7': '\u06D0', - '\uFBE8': '\u0649', - '\uFBE9': '\u0649', - '\uFBEA': '\u0626\u0627', - '\uFBEB': '\u0626\u0627', - '\uFBEC': '\u0626\u06D5', - '\uFBED': '\u0626\u06D5', - '\uFBEE': '\u0626\u0648', - '\uFBEF': '\u0626\u0648', - '\uFBF0': '\u0626\u06C7', - '\uFBF1': '\u0626\u06C7', - '\uFBF2': '\u0626\u06C6', - '\uFBF3': '\u0626\u06C6', - '\uFBF4': '\u0626\u06C8', - '\uFBF5': '\u0626\u06C8', - '\uFBF6': '\u0626\u06D0', - '\uFBF7': '\u0626\u06D0', - '\uFBF8': '\u0626\u06D0', - '\uFBF9': '\u0626\u0649', - '\uFBFA': '\u0626\u0649', - '\uFBFB': '\u0626\u0649', - '\uFBFC': '\u06CC', - '\uFBFD': '\u06CC', - '\uFBFE': '\u06CC', - '\uFBFF': '\u06CC', - '\uFC00': '\u0626\u062C', - '\uFC01': '\u0626\u062D', - '\uFC02': '\u0626\u0645', - '\uFC03': '\u0626\u0649', - '\uFC04': '\u0626\u064A', - '\uFC05': '\u0628\u062C', - '\uFC06': '\u0628\u062D', - '\uFC07': '\u0628\u062E', - '\uFC08': '\u0628\u0645', - '\uFC09': '\u0628\u0649', - '\uFC0A': '\u0628\u064A', - '\uFC0B': '\u062A\u062C', - '\uFC0C': '\u062A\u062D', - '\uFC0D': '\u062A\u062E', - '\uFC0E': '\u062A\u0645', - '\uFC0F': '\u062A\u0649', - '\uFC10': '\u062A\u064A', - '\uFC11': '\u062B\u062C', - '\uFC12': '\u062B\u0645', - '\uFC13': '\u062B\u0649', - '\uFC14': '\u062B\u064A', - '\uFC15': '\u062C\u062D', - '\uFC16': '\u062C\u0645', - '\uFC17': '\u062D\u062C', - '\uFC18': '\u062D\u0645', - '\uFC19': '\u062E\u062C', - '\uFC1A': '\u062E\u062D', - '\uFC1B': '\u062E\u0645', - '\uFC1C': '\u0633\u062C', - '\uFC1D': '\u0633\u062D', - '\uFC1E': '\u0633\u062E', - '\uFC1F': '\u0633\u0645', - '\uFC20': '\u0635\u062D', - '\uFC21': '\u0635\u0645', - '\uFC22': '\u0636\u062C', - '\uFC23': '\u0636\u062D', - '\uFC24': '\u0636\u062E', - '\uFC25': '\u0636\u0645', - '\uFC26': '\u0637\u062D', - '\uFC27': '\u0637\u0645', - '\uFC28': '\u0638\u0645', - '\uFC29': '\u0639\u062C', - '\uFC2A': '\u0639\u0645', - '\uFC2B': '\u063A\u062C', - '\uFC2C': '\u063A\u0645', - '\uFC2D': '\u0641\u062C', - '\uFC2E': '\u0641\u062D', - '\uFC2F': '\u0641\u062E', - '\uFC30': '\u0641\u0645', - '\uFC31': '\u0641\u0649', - '\uFC32': '\u0641\u064A', - '\uFC33': '\u0642\u062D', - '\uFC34': '\u0642\u0645', - '\uFC35': '\u0642\u0649', - '\uFC36': '\u0642\u064A', - '\uFC37': '\u0643\u0627', - '\uFC38': '\u0643\u062C', - '\uFC39': '\u0643\u062D', - '\uFC3A': '\u0643\u062E', - '\uFC3B': '\u0643\u0644', - '\uFC3C': '\u0643\u0645', - '\uFC3D': '\u0643\u0649', - '\uFC3E': '\u0643\u064A', - '\uFC3F': '\u0644\u062C', - '\uFC40': '\u0644\u062D', - '\uFC41': '\u0644\u062E', - '\uFC42': '\u0644\u0645', - '\uFC43': '\u0644\u0649', - '\uFC44': '\u0644\u064A', - '\uFC45': '\u0645\u062C', - '\uFC46': '\u0645\u062D', - '\uFC47': '\u0645\u062E', - '\uFC48': '\u0645\u0645', - '\uFC49': '\u0645\u0649', - '\uFC4A': '\u0645\u064A', - '\uFC4B': '\u0646\u062C', - '\uFC4C': '\u0646\u062D', - '\uFC4D': '\u0646\u062E', - '\uFC4E': '\u0646\u0645', - '\uFC4F': '\u0646\u0649', - '\uFC50': '\u0646\u064A', - '\uFC51': '\u0647\u062C', - '\uFC52': '\u0647\u0645', - '\uFC53': '\u0647\u0649', - '\uFC54': '\u0647\u064A', - '\uFC55': '\u064A\u062C', - '\uFC56': '\u064A\u062D', - '\uFC57': '\u064A\u062E', - '\uFC58': '\u064A\u0645', - '\uFC59': '\u064A\u0649', - '\uFC5A': '\u064A\u064A', - '\uFC5B': '\u0630\u0670', - '\uFC5C': '\u0631\u0670', - '\uFC5D': '\u0649\u0670', - '\uFC5E': '\u0020\u064C\u0651', - '\uFC5F': '\u0020\u064D\u0651', - '\uFC60': '\u0020\u064E\u0651', - '\uFC61': '\u0020\u064F\u0651', - '\uFC62': '\u0020\u0650\u0651', - '\uFC63': '\u0020\u0651\u0670', - '\uFC64': '\u0626\u0631', - '\uFC65': '\u0626\u0632', - '\uFC66': '\u0626\u0645', - '\uFC67': '\u0626\u0646', - '\uFC68': '\u0626\u0649', - '\uFC69': '\u0626\u064A', - '\uFC6A': '\u0628\u0631', - '\uFC6B': '\u0628\u0632', - '\uFC6C': '\u0628\u0645', - '\uFC6D': '\u0628\u0646', - '\uFC6E': '\u0628\u0649', - '\uFC6F': '\u0628\u064A', - '\uFC70': '\u062A\u0631', - '\uFC71': '\u062A\u0632', - '\uFC72': '\u062A\u0645', - '\uFC73': '\u062A\u0646', - '\uFC74': '\u062A\u0649', - '\uFC75': '\u062A\u064A', - '\uFC76': '\u062B\u0631', - '\uFC77': '\u062B\u0632', - '\uFC78': '\u062B\u0645', - '\uFC79': '\u062B\u0646', - '\uFC7A': '\u062B\u0649', - '\uFC7B': '\u062B\u064A', - '\uFC7C': '\u0641\u0649', - '\uFC7D': '\u0641\u064A', - '\uFC7E': '\u0642\u0649', - '\uFC7F': '\u0642\u064A', - '\uFC80': '\u0643\u0627', - '\uFC81': '\u0643\u0644', - '\uFC82': '\u0643\u0645', - '\uFC83': '\u0643\u0649', - '\uFC84': '\u0643\u064A', - '\uFC85': '\u0644\u0645', - '\uFC86': '\u0644\u0649', - '\uFC87': '\u0644\u064A', - '\uFC88': '\u0645\u0627', - '\uFC89': '\u0645\u0645', - '\uFC8A': '\u0646\u0631', - '\uFC8B': '\u0646\u0632', - '\uFC8C': '\u0646\u0645', - '\uFC8D': '\u0646\u0646', - '\uFC8E': '\u0646\u0649', - '\uFC8F': '\u0646\u064A', - '\uFC90': '\u0649\u0670', - '\uFC91': '\u064A\u0631', - '\uFC92': '\u064A\u0632', - '\uFC93': '\u064A\u0645', - '\uFC94': '\u064A\u0646', - '\uFC95': '\u064A\u0649', - '\uFC96': '\u064A\u064A', - '\uFC97': '\u0626\u062C', - '\uFC98': '\u0626\u062D', - '\uFC99': '\u0626\u062E', - '\uFC9A': '\u0626\u0645', - '\uFC9B': '\u0626\u0647', - '\uFC9C': '\u0628\u062C', - '\uFC9D': '\u0628\u062D', - '\uFC9E': '\u0628\u062E', - '\uFC9F': '\u0628\u0645', - '\uFCA0': '\u0628\u0647', - '\uFCA1': '\u062A\u062C', - '\uFCA2': '\u062A\u062D', - '\uFCA3': '\u062A\u062E', - '\uFCA4': '\u062A\u0645', - '\uFCA5': '\u062A\u0647', - '\uFCA6': '\u062B\u0645', - '\uFCA7': '\u062C\u062D', - '\uFCA8': '\u062C\u0645', - '\uFCA9': '\u062D\u062C', - '\uFCAA': '\u062D\u0645', - '\uFCAB': '\u062E\u062C', - '\uFCAC': '\u062E\u0645', - '\uFCAD': '\u0633\u062C', - '\uFCAE': '\u0633\u062D', - '\uFCAF': '\u0633\u062E', - '\uFCB0': '\u0633\u0645', - '\uFCB1': '\u0635\u062D', - '\uFCB2': '\u0635\u062E', - '\uFCB3': '\u0635\u0645', - '\uFCB4': '\u0636\u062C', - '\uFCB5': '\u0636\u062D', - '\uFCB6': '\u0636\u062E', - '\uFCB7': '\u0636\u0645', - '\uFCB8': '\u0637\u062D', - '\uFCB9': '\u0638\u0645', - '\uFCBA': '\u0639\u062C', - '\uFCBB': '\u0639\u0645', - '\uFCBC': '\u063A\u062C', - '\uFCBD': '\u063A\u0645', - '\uFCBE': '\u0641\u062C', - '\uFCBF': '\u0641\u062D', - '\uFCC0': '\u0641\u062E', - '\uFCC1': '\u0641\u0645', - '\uFCC2': '\u0642\u062D', - '\uFCC3': '\u0642\u0645', - '\uFCC4': '\u0643\u062C', - '\uFCC5': '\u0643\u062D', - '\uFCC6': '\u0643\u062E', - '\uFCC7': '\u0643\u0644', - '\uFCC8': '\u0643\u0645', - '\uFCC9': '\u0644\u062C', - '\uFCCA': '\u0644\u062D', - '\uFCCB': '\u0644\u062E', - '\uFCCC': '\u0644\u0645', - '\uFCCD': '\u0644\u0647', - '\uFCCE': '\u0645\u062C', - '\uFCCF': '\u0645\u062D', - '\uFCD0': '\u0645\u062E', - '\uFCD1': '\u0645\u0645', - '\uFCD2': '\u0646\u062C', - '\uFCD3': '\u0646\u062D', - '\uFCD4': '\u0646\u062E', - '\uFCD5': '\u0646\u0645', - '\uFCD6': '\u0646\u0647', - '\uFCD7': '\u0647\u062C', - '\uFCD8': '\u0647\u0645', - '\uFCD9': '\u0647\u0670', - '\uFCDA': '\u064A\u062C', - '\uFCDB': '\u064A\u062D', - '\uFCDC': '\u064A\u062E', - '\uFCDD': '\u064A\u0645', - '\uFCDE': '\u064A\u0647', - '\uFCDF': '\u0626\u0645', - '\uFCE0': '\u0626\u0647', - '\uFCE1': '\u0628\u0645', - '\uFCE2': '\u0628\u0647', - '\uFCE3': '\u062A\u0645', - '\uFCE4': '\u062A\u0647', - '\uFCE5': '\u062B\u0645', - '\uFCE6': '\u062B\u0647', - '\uFCE7': '\u0633\u0645', - '\uFCE8': '\u0633\u0647', - '\uFCE9': '\u0634\u0645', - '\uFCEA': '\u0634\u0647', - '\uFCEB': '\u0643\u0644', - '\uFCEC': '\u0643\u0645', - '\uFCED': '\u0644\u0645', - '\uFCEE': '\u0646\u0645', - '\uFCEF': '\u0646\u0647', - '\uFCF0': '\u064A\u0645', - '\uFCF1': '\u064A\u0647', - '\uFCF2': '\u0640\u064E\u0651', - '\uFCF3': '\u0640\u064F\u0651', - '\uFCF4': '\u0640\u0650\u0651', - '\uFCF5': '\u0637\u0649', - '\uFCF6': '\u0637\u064A', - '\uFCF7': '\u0639\u0649', - '\uFCF8': '\u0639\u064A', - '\uFCF9': '\u063A\u0649', - '\uFCFA': '\u063A\u064A', - '\uFCFB': '\u0633\u0649', - '\uFCFC': '\u0633\u064A', - '\uFCFD': '\u0634\u0649', - '\uFCFE': '\u0634\u064A', - '\uFCFF': '\u062D\u0649', - '\uFD00': '\u062D\u064A', - '\uFD01': '\u062C\u0649', - '\uFD02': '\u062C\u064A', - '\uFD03': '\u062E\u0649', - '\uFD04': '\u062E\u064A', - '\uFD05': '\u0635\u0649', - '\uFD06': '\u0635\u064A', - '\uFD07': '\u0636\u0649', - '\uFD08': '\u0636\u064A', - '\uFD09': '\u0634\u062C', - '\uFD0A': '\u0634\u062D', - '\uFD0B': '\u0634\u062E', - '\uFD0C': '\u0634\u0645', - '\uFD0D': '\u0634\u0631', - '\uFD0E': '\u0633\u0631', - '\uFD0F': '\u0635\u0631', - '\uFD10': '\u0636\u0631', - '\uFD11': '\u0637\u0649', - '\uFD12': '\u0637\u064A', - '\uFD13': '\u0639\u0649', - '\uFD14': '\u0639\u064A', - '\uFD15': '\u063A\u0649', - '\uFD16': '\u063A\u064A', - '\uFD17': '\u0633\u0649', - '\uFD18': '\u0633\u064A', - '\uFD19': '\u0634\u0649', - '\uFD1A': '\u0634\u064A', - '\uFD1B': '\u062D\u0649', - '\uFD1C': '\u062D\u064A', - '\uFD1D': '\u062C\u0649', - '\uFD1E': '\u062C\u064A', - '\uFD1F': '\u062E\u0649', - '\uFD20': '\u062E\u064A', - '\uFD21': '\u0635\u0649', - '\uFD22': '\u0635\u064A', - '\uFD23': '\u0636\u0649', - '\uFD24': '\u0636\u064A', - '\uFD25': '\u0634\u062C', - '\uFD26': '\u0634\u062D', - '\uFD27': '\u0634\u062E', - '\uFD28': '\u0634\u0645', - '\uFD29': '\u0634\u0631', - '\uFD2A': '\u0633\u0631', - '\uFD2B': '\u0635\u0631', - '\uFD2C': '\u0636\u0631', - '\uFD2D': '\u0634\u062C', - '\uFD2E': '\u0634\u062D', - '\uFD2F': '\u0634\u062E', - '\uFD30': '\u0634\u0645', - '\uFD31': '\u0633\u0647', - '\uFD32': '\u0634\u0647', - '\uFD33': '\u0637\u0645', - '\uFD34': '\u0633\u062C', - '\uFD35': '\u0633\u062D', - '\uFD36': '\u0633\u062E', - '\uFD37': '\u0634\u062C', - '\uFD38': '\u0634\u062D', - '\uFD39': '\u0634\u062E', - '\uFD3A': '\u0637\u0645', - '\uFD3B': '\u0638\u0645', - '\uFD3C': '\u0627\u064B', - '\uFD3D': '\u0627\u064B', - '\uFD50': '\u062A\u062C\u0645', - '\uFD51': '\u062A\u062D\u062C', - '\uFD52': '\u062A\u062D\u062C', - '\uFD53': '\u062A\u062D\u0645', - '\uFD54': '\u062A\u062E\u0645', - '\uFD55': '\u062A\u0645\u062C', - '\uFD56': '\u062A\u0645\u062D', - '\uFD57': '\u062A\u0645\u062E', - '\uFD58': '\u062C\u0645\u062D', - '\uFD59': '\u062C\u0645\u062D', - '\uFD5A': '\u062D\u0645\u064A', - '\uFD5B': '\u062D\u0645\u0649', - '\uFD5C': '\u0633\u062D\u062C', - '\uFD5D': '\u0633\u062C\u062D', - '\uFD5E': '\u0633\u062C\u0649', - '\uFD5F': '\u0633\u0645\u062D', - '\uFD60': '\u0633\u0645\u062D', - '\uFD61': '\u0633\u0645\u062C', - '\uFD62': '\u0633\u0645\u0645', - '\uFD63': '\u0633\u0645\u0645', - '\uFD64': '\u0635\u062D\u062D', - '\uFD65': '\u0635\u062D\u062D', - '\uFD66': '\u0635\u0645\u0645', - '\uFD67': '\u0634\u062D\u0645', - '\uFD68': '\u0634\u062D\u0645', - '\uFD69': '\u0634\u062C\u064A', - '\uFD6A': '\u0634\u0645\u062E', - '\uFD6B': '\u0634\u0645\u062E', - '\uFD6C': '\u0634\u0645\u0645', - '\uFD6D': '\u0634\u0645\u0645', - '\uFD6E': '\u0636\u062D\u0649', - '\uFD6F': '\u0636\u062E\u0645', - '\uFD70': '\u0636\u062E\u0645', - '\uFD71': '\u0637\u0645\u062D', - '\uFD72': '\u0637\u0645\u062D', - '\uFD73': '\u0637\u0645\u0645', - '\uFD74': '\u0637\u0645\u064A', - '\uFD75': '\u0639\u062C\u0645', - '\uFD76': '\u0639\u0645\u0645', - '\uFD77': '\u0639\u0645\u0645', - '\uFD78': '\u0639\u0645\u0649', - '\uFD79': '\u063A\u0645\u0645', - '\uFD7A': '\u063A\u0645\u064A', - '\uFD7B': '\u063A\u0645\u0649', - '\uFD7C': '\u0641\u062E\u0645', - '\uFD7D': '\u0641\u062E\u0645', - '\uFD7E': '\u0642\u0645\u062D', - '\uFD7F': '\u0642\u0645\u0645', - '\uFD80': '\u0644\u062D\u0645', - '\uFD81': '\u0644\u062D\u064A', - '\uFD82': '\u0644\u062D\u0649', - '\uFD83': '\u0644\u062C\u062C', - '\uFD84': '\u0644\u062C\u062C', - '\uFD85': '\u0644\u062E\u0645', - '\uFD86': '\u0644\u062E\u0645', - '\uFD87': '\u0644\u0645\u062D', - '\uFD88': '\u0644\u0645\u062D', - '\uFD89': '\u0645\u062D\u062C', - '\uFD8A': '\u0645\u062D\u0645', - '\uFD8B': '\u0645\u062D\u064A', - '\uFD8C': '\u0645\u062C\u062D', - '\uFD8D': '\u0645\u062C\u0645', - '\uFD8E': '\u0645\u062E\u062C', - '\uFD8F': '\u0645\u062E\u0645', - '\uFD92': '\u0645\u062C\u062E', - '\uFD93': '\u0647\u0645\u062C', - '\uFD94': '\u0647\u0645\u0645', - '\uFD95': '\u0646\u062D\u0645', - '\uFD96': '\u0646\u062D\u0649', - '\uFD97': '\u0646\u062C\u0645', - '\uFD98': '\u0646\u062C\u0645', - '\uFD99': '\u0646\u062C\u0649', - '\uFD9A': '\u0646\u0645\u064A', - '\uFD9B': '\u0646\u0645\u0649', - '\uFD9C': '\u064A\u0645\u0645', - '\uFD9D': '\u064A\u0645\u0645', - '\uFD9E': '\u0628\u062E\u064A', - '\uFD9F': '\u062A\u062C\u064A', - '\uFDA0': '\u062A\u062C\u0649', - '\uFDA1': '\u062A\u062E\u064A', - '\uFDA2': '\u062A\u062E\u0649', - '\uFDA3': '\u062A\u0645\u064A', - '\uFDA4': '\u062A\u0645\u0649', - '\uFDA5': '\u062C\u0645\u064A', - '\uFDA6': '\u062C\u062D\u0649', - '\uFDA7': '\u062C\u0645\u0649', - '\uFDA8': '\u0633\u062E\u0649', - '\uFDA9': '\u0635\u062D\u064A', - '\uFDAA': '\u0634\u062D\u064A', - '\uFDAB': '\u0636\u062D\u064A', - '\uFDAC': '\u0644\u062C\u064A', - '\uFDAD': '\u0644\u0645\u064A', - '\uFDAE': '\u064A\u062D\u064A', - '\uFDAF': '\u064A\u062C\u064A', - '\uFDB0': '\u064A\u0645\u064A', - '\uFDB1': '\u0645\u0645\u064A', - '\uFDB2': '\u0642\u0645\u064A', - '\uFDB3': '\u0646\u062D\u064A', - '\uFDB4': '\u0642\u0645\u062D', - '\uFDB5': '\u0644\u062D\u0645', - '\uFDB6': '\u0639\u0645\u064A', - '\uFDB7': '\u0643\u0645\u064A', - '\uFDB8': '\u0646\u062C\u062D', - '\uFDB9': '\u0645\u062E\u064A', - '\uFDBA': '\u0644\u062C\u0645', - '\uFDBB': '\u0643\u0645\u0645', - '\uFDBC': '\u0644\u062C\u0645', - '\uFDBD': '\u0646\u062C\u062D', - '\uFDBE': '\u062C\u062D\u064A', - '\uFDBF': '\u062D\u062C\u064A', - '\uFDC0': '\u0645\u062C\u064A', - '\uFDC1': '\u0641\u0645\u064A', - '\uFDC2': '\u0628\u062D\u064A', - '\uFDC3': '\u0643\u0645\u0645', - '\uFDC4': '\u0639\u062C\u0645', - '\uFDC5': '\u0635\u0645\u0645', - '\uFDC6': '\u0633\u062E\u064A', - '\uFDC7': '\u0646\u062C\u064A', - '\uFE49': '\u203E', - '\uFE4A': '\u203E', - '\uFE4B': '\u203E', - '\uFE4C': '\u203E', - '\uFE4D': '\u005F', - '\uFE4E': '\u005F', - '\uFE4F': '\u005F', - '\uFE80': '\u0621', - '\uFE81': '\u0622', - '\uFE82': '\u0622', - '\uFE83': '\u0623', - '\uFE84': '\u0623', - '\uFE85': '\u0624', - '\uFE86': '\u0624', - '\uFE87': '\u0625', - '\uFE88': '\u0625', - '\uFE89': '\u0626', - '\uFE8A': '\u0626', - '\uFE8B': '\u0626', - '\uFE8C': '\u0626', - '\uFE8D': '\u0627', - '\uFE8E': '\u0627', - '\uFE8F': '\u0628', - '\uFE90': '\u0628', - '\uFE91': '\u0628', - '\uFE92': '\u0628', - '\uFE93': '\u0629', - '\uFE94': '\u0629', - '\uFE95': '\u062A', - '\uFE96': '\u062A', - '\uFE97': '\u062A', - '\uFE98': '\u062A', - '\uFE99': '\u062B', - '\uFE9A': '\u062B', - '\uFE9B': '\u062B', - '\uFE9C': '\u062B', - '\uFE9D': '\u062C', - '\uFE9E': '\u062C', - '\uFE9F': '\u062C', - '\uFEA0': '\u062C', - '\uFEA1': '\u062D', - '\uFEA2': '\u062D', - '\uFEA3': '\u062D', - '\uFEA4': '\u062D', - '\uFEA5': '\u062E', - '\uFEA6': '\u062E', - '\uFEA7': '\u062E', - '\uFEA8': '\u062E', - '\uFEA9': '\u062F', - '\uFEAA': '\u062F', - '\uFEAB': '\u0630', - '\uFEAC': '\u0630', - '\uFEAD': '\u0631', - '\uFEAE': '\u0631', - '\uFEAF': '\u0632', - '\uFEB0': '\u0632', - '\uFEB1': '\u0633', - '\uFEB2': '\u0633', - '\uFEB3': '\u0633', - '\uFEB4': '\u0633', - '\uFEB5': '\u0634', - '\uFEB6': '\u0634', - '\uFEB7': '\u0634', - '\uFEB8': '\u0634', - '\uFEB9': '\u0635', - '\uFEBA': '\u0635', - '\uFEBB': '\u0635', - '\uFEBC': '\u0635', - '\uFEBD': '\u0636', - '\uFEBE': '\u0636', - '\uFEBF': '\u0636', - '\uFEC0': '\u0636', - '\uFEC1': '\u0637', - '\uFEC2': '\u0637', - '\uFEC3': '\u0637', - '\uFEC4': '\u0637', - '\uFEC5': '\u0638', - '\uFEC6': '\u0638', - '\uFEC7': '\u0638', - '\uFEC8': '\u0638', - '\uFEC9': '\u0639', - '\uFECA': '\u0639', - '\uFECB': '\u0639', - '\uFECC': '\u0639', - '\uFECD': '\u063A', - '\uFECE': '\u063A', - '\uFECF': '\u063A', - '\uFED0': '\u063A', - '\uFED1': '\u0641', - '\uFED2': '\u0641', - '\uFED3': '\u0641', - '\uFED4': '\u0641', - '\uFED5': '\u0642', - '\uFED6': '\u0642', - '\uFED7': '\u0642', - '\uFED8': '\u0642', - '\uFED9': '\u0643', - '\uFEDA': '\u0643', - '\uFEDB': '\u0643', - '\uFEDC': '\u0643', - '\uFEDD': '\u0644', - '\uFEDE': '\u0644', - '\uFEDF': '\u0644', - '\uFEE0': '\u0644', - '\uFEE1': '\u0645', - '\uFEE2': '\u0645', - '\uFEE3': '\u0645', - '\uFEE4': '\u0645', - '\uFEE5': '\u0646', - '\uFEE6': '\u0646', - '\uFEE7': '\u0646', - '\uFEE8': '\u0646', - '\uFEE9': '\u0647', - '\uFEEA': '\u0647', - '\uFEEB': '\u0647', - '\uFEEC': '\u0647', - '\uFEED': '\u0648', - '\uFEEE': '\u0648', - '\uFEEF': '\u0649', - '\uFEF0': '\u0649', - '\uFEF1': '\u064A', - '\uFEF2': '\u064A', - '\uFEF3': '\u064A', - '\uFEF4': '\u064A', - '\uFEF5': '\u0644\u0622', - '\uFEF6': '\u0644\u0622', - '\uFEF7': '\u0644\u0623', - '\uFEF8': '\u0644\u0623', - '\uFEF9': '\u0644\u0625', - '\uFEFA': '\u0644\u0625', - '\uFEFB': '\u0644\u0627', - '\uFEFC': '\u0644\u0627' -}; - -function reverseIfRtl(chars) { - var charsLength = chars.length; - //reverse an arabic ligature - if (charsLength <= 1 || !isRTLRangeFor(chars.charCodeAt(0))) { - return chars; - } - var s = ''; - for (var ii = charsLength - 1; ii >= 0; ii--) { - s += chars[ii]; - } - return s; -} - -function adjustWidths(properties) { - if (!properties.fontMatrix) { - return; - } - if (properties.fontMatrix[0] === FONT_IDENTITY_MATRIX[0]) { - return; - } - // adjusting width to fontMatrix scale - var scale = 0.001 / properties.fontMatrix[0]; - var glyphsWidths = properties.widths; - for (var glyph in glyphsWidths) { - glyphsWidths[glyph] *= scale; - } - properties.defaultWidth *= scale; -} - -function getFontType(type, subtype) { - switch (type) { - case 'Type1': - return subtype === 'Type1C' ? FontType.TYPE1C : FontType.TYPE1; - case 'CIDFontType0': - return subtype === 'CIDFontType0C' ? FontType.CIDFONTTYPE0C : - FontType.CIDFONTTYPE0; - case 'OpenType': - return FontType.OPENTYPE; - case 'TrueType': - return FontType.TRUETYPE; - case 'CIDFontType2': - return FontType.CIDFONTTYPE2; - case 'MMType1': - return FontType.MMTYPE1; - case 'Type0': - return FontType.TYPE0; - default: - return FontType.UNKNOWN; - } -} - -var Glyph = (function GlyphClosure() { - function Glyph(fontChar, unicode, accent, width, vmetric, operatorListId, - isSpace) { - this.fontChar = fontChar; - this.unicode = unicode; - this.accent = accent; - this.width = width; - this.vmetric = vmetric; - this.operatorListId = operatorListId; - this.isSpace = isSpace; - } - - Glyph.prototype.matchesForCache = function(fontChar, unicode, accent, width, - vmetric, operatorListId, isSpace) { - return this.fontChar === fontChar && - this.unicode === unicode && - this.accent === accent && - this.width === width && - this.vmetric === vmetric && - this.operatorListId === operatorListId && - this.isSpace === isSpace; - }; - - return Glyph; -})(); - -var ToUnicodeMap = (function ToUnicodeMapClosure() { - function ToUnicodeMap(cmap) { - // The elements of this._map can be integers or strings, depending on how - // |cmap| was created. - this._map = cmap; - } - - ToUnicodeMap.prototype = { - get length() { - return this._map.length; - }, - - forEach: function(callback) { - for (var charCode in this._map) { - callback(charCode, this._map[charCode].charCodeAt(0)); - } - }, - - has: function(i) { - return this._map[i] !== undefined; - }, - - get: function(i) { - return this._map[i]; - }, - - charCodeOf: function(v) { - return this._map.indexOf(v); - } - }; - - return ToUnicodeMap; -})(); - -var IdentityToUnicodeMap = (function IdentityToUnicodeMapClosure() { - function IdentityToUnicodeMap(firstChar, lastChar) { - this.firstChar = firstChar; - this.lastChar = lastChar; - } - - IdentityToUnicodeMap.prototype = { - get length() { - return (this.lastChar + 1) - this.firstChar; - }, - - forEach: function (callback) { - for (var i = this.firstChar, ii = this.lastChar; i <= ii; i++) { - callback(i, i); - } - }, - - has: function (i) { - return this.firstChar <= i && i <= this.lastChar; - }, - - get: function (i) { - if (this.firstChar <= i && i <= this.lastChar) { - return String.fromCharCode(i); - } - return undefined; - }, - - charCodeOf: function (v) { - return (isInt(v) && v >= this.firstChar && v <= this.lastChar) ? v : -1; - } - }; - - return IdentityToUnicodeMap; -})(); - -var OpenTypeFileBuilder = (function OpenTypeFileBuilderClosure() { - function writeInt16(dest, offset, num) { - dest[offset] = (num >> 8) & 0xFF; - dest[offset + 1] = num & 0xFF; - } - - function writeInt32(dest, offset, num) { - dest[offset] = (num >> 24) & 0xFF; - dest[offset + 1] = (num >> 16) & 0xFF; - dest[offset + 2] = (num >> 8) & 0xFF; - dest[offset + 3] = num & 0xFF; - } - - function writeData(dest, offset, data) { - var i, ii; - if (data instanceof Uint8Array) { - dest.set(data, offset); - } else if (typeof data === 'string') { - for (i = 0, ii = data.length; i < ii; i++) { - dest[offset++] = data.charCodeAt(i) & 0xFF; - } - } else { - // treating everything else as array - for (i = 0, ii = data.length; i < ii; i++) { - dest[offset++] = data[i] & 0xFF; - } - } - } - - function OpenTypeFileBuilder(sfnt) { - this.sfnt = sfnt; - this.tables = Object.create(null); - } - - OpenTypeFileBuilder.getSearchParams = - function OpenTypeFileBuilder_getSearchParams(entriesCount, entrySize) { - var maxPower2 = 1, log2 = 0; - while ((maxPower2 ^ entriesCount) > maxPower2) { - maxPower2 <<= 1; - log2++; - } - var searchRange = maxPower2 * entrySize; - return { - range: searchRange, - entry: log2, - rangeShift: entrySize * entriesCount - searchRange - }; - }; - - var OTF_HEADER_SIZE = 12; - var OTF_TABLE_ENTRY_SIZE = 16; - - OpenTypeFileBuilder.prototype = { - toArray: function OpenTypeFileBuilder_toArray() { - var sfnt = this.sfnt; - - // Tables needs to be written by ascendant alphabetic order - var tables = this.tables; - var tablesNames = Object.keys(tables); - tablesNames.sort(); - var numTables = tablesNames.length; - - var i, j, jj, table, tableName; - // layout the tables data - var offset = OTF_HEADER_SIZE + numTables * OTF_TABLE_ENTRY_SIZE; - var tableOffsets = [offset]; - for (i = 0; i < numTables; i++) { - table = tables[tablesNames[i]]; - var paddedLength = ((table.length + 3) & ~3) >>> 0; - offset += paddedLength; - tableOffsets.push(offset); - } - - var file = new Uint8Array(offset); - // write the table data first (mostly for checksum) - for (i = 0; i < numTables; i++) { - table = tables[tablesNames[i]]; - writeData(file, tableOffsets[i], table); - } - - // sfnt version (4 bytes) - if (sfnt === 'true') { - // Windows hates the Mac TrueType sfnt version number - sfnt = string32(0x00010000); - } - file[0] = sfnt.charCodeAt(0) & 0xFF; - file[1] = sfnt.charCodeAt(1) & 0xFF; - file[2] = sfnt.charCodeAt(2) & 0xFF; - file[3] = sfnt.charCodeAt(3) & 0xFF; - - // numTables (2 bytes) - writeInt16(file, 4, numTables); - - var searchParams = OpenTypeFileBuilder.getSearchParams(numTables, 16); - - // searchRange (2 bytes) - writeInt16(file, 6, searchParams.range); - // entrySelector (2 bytes) - writeInt16(file, 8, searchParams.entry); - // rangeShift (2 bytes) - writeInt16(file, 10, searchParams.rangeShift); - - offset = OTF_HEADER_SIZE; - // writing table entries - for (i = 0; i < numTables; i++) { - tableName = tablesNames[i]; - file[offset] = tableName.charCodeAt(0) & 0xFF; - file[offset + 1] = tableName.charCodeAt(1) & 0xFF; - file[offset + 2] = tableName.charCodeAt(2) & 0xFF; - file[offset + 3] = tableName.charCodeAt(3) & 0xFF; - - // checksum - var checksum = 0; - for (j = tableOffsets[i], jj = tableOffsets[i + 1]; j < jj; j += 4) { - var quad = (file[j] << 24) + (file[j + 1] << 16) + - (file[j + 2] << 8) + file[j + 3]; - checksum = (checksum + quad) | 0; - } - writeInt32(file, offset + 4, checksum); - - // offset - writeInt32(file, offset + 8, tableOffsets[i]); - // length - writeInt32(file, offset + 12, tables[tableName].length); - - offset += OTF_TABLE_ENTRY_SIZE; - } - return file; - }, - - addTable: function OpenTypeFileBuilder_addTable(tag, data) { - if (tag in this.tables) { - throw new Error('Table ' + tag + ' already exists'); - } - this.tables[tag] = data; - } - }; - - return OpenTypeFileBuilder; -})(); - -// Problematic Unicode characters in the fonts that needs to be moved to avoid -// issues when they are painted on the canvas, e.g. complex-script shaping or -// control/whitespace characters. The ranges are listed in pairs: the first item -// is a code of the first problematic code, the second one is the next -// non-problematic code. The ranges must be in sorted order. -var ProblematicCharRanges = new Int32Array([ - // Control characters. - 0x0000, 0x0020, - 0x007F, 0x00A1, - 0x00AD, 0x00AE, - // Chars that is used in complex-script shaping. - 0x0600, 0x0780, - 0x08A0, 0x10A0, - 0x1780, 0x1800, - // General punctuation chars. - 0x2000, 0x2010, - 0x2011, 0x2012, - 0x2028, 0x2030, - 0x205F, 0x2070, - 0x25CC, 0x25CD, - // Chars that is used in complex-script shaping. - 0xAA60, 0xAA80, - // Specials Unicode block. - 0xFFF0, 0x10000 -]); - -/** - * 'Font' is the class the outside world should use, it encapsulate all the font - * decoding logics whatever type it is (assuming the font type is supported). - * - * For example to read a Type1 font and to attach it to the document: - * var type1Font = new Font("MyFontName", binaryFile, propertiesObject); - * type1Font.bind(); - */ -var Font = (function FontClosure() { - function Font(name, file, properties) { - var charCode, glyphName, fontChar; - - this.name = name; - this.loadedName = properties.loadedName; - this.isType3Font = properties.isType3Font; - this.sizes = []; - - this.glyphCache = {}; - - var names = name.split('+'); - names = names.length > 1 ? names[1] : names[0]; - names = names.split(/[-,_]/g)[0]; - this.isSerifFont = !!(properties.flags & FontFlags.Serif); - this.isSymbolicFont = !!(properties.flags & FontFlags.Symbolic); - this.isMonospace = !!(properties.flags & FontFlags.FixedPitch); - - var type = properties.type; - var subtype = properties.subtype; - this.type = type; - - this.fallbackName = (this.isMonospace ? 'monospace' : - (this.isSerifFont ? 'serif' : 'sans-serif')); - - this.differences = properties.differences; - this.widths = properties.widths; - this.defaultWidth = properties.defaultWidth; - this.composite = properties.composite; - this.wideChars = properties.wideChars; - this.cMap = properties.cMap; - this.ascent = properties.ascent / PDF_GLYPH_SPACE_UNITS; - this.descent = properties.descent / PDF_GLYPH_SPACE_UNITS; - this.fontMatrix = properties.fontMatrix; - this.bbox = properties.bbox; - - this.toUnicode = properties.toUnicode = this.buildToUnicode(properties); - - this.toFontChar = []; - - if (properties.type === 'Type3') { - for (charCode = 0; charCode < 256; charCode++) { - this.toFontChar[charCode] = (this.differences[charCode] || - properties.defaultEncoding[charCode]); - } - this.fontType = FontType.TYPE3; - return; - } - - this.cidEncoding = properties.cidEncoding; - this.vertical = properties.vertical; - if (this.vertical) { - this.vmetrics = properties.vmetrics; - this.defaultVMetrics = properties.defaultVMetrics; - } - - if (!file || file.isEmpty) { - if (file) { - // Some bad PDF generators will include empty font files, - // attempting to recover by assuming that no file exists. - warn('Font file is empty in "' + name + '" (' + this.loadedName + ')'); - } - - this.missingFile = true; - // The file data is not specified. Trying to fix the font name - // to be used with the canvas.font. - var fontName = name.replace(/[,_]/g, '-'); - var isStandardFont = !!stdFontMap[fontName] || - !!(nonStdFontMap[fontName] && stdFontMap[nonStdFontMap[fontName]]); - fontName = stdFontMap[fontName] || nonStdFontMap[fontName] || fontName; - - this.bold = (fontName.search(/bold/gi) !== -1); - this.italic = ((fontName.search(/oblique/gi) !== -1) || - (fontName.search(/italic/gi) !== -1)); - - // Use 'name' instead of 'fontName' here because the original - // name ArialBlack for example will be replaced by Helvetica. - this.black = (name.search(/Black/g) !== -1); - - // if at least one width is present, remeasure all chars when exists - this.remeasure = Object.keys(this.widths).length > 0; - if (isStandardFont && type === 'CIDFontType2' && - properties.cidEncoding.indexOf('Identity-') === 0) { - // Standard fonts might be embedded as CID font without glyph mapping. - // Building one based on GlyphMapForStandardFonts. - var map = []; - for (charCode in GlyphMapForStandardFonts) { - map[+charCode] = GlyphMapForStandardFonts[charCode]; - } - if (/ArialBlack/i.test(name)) { - for (charCode in SupplementalGlyphMapForArialBlack) { - map[+charCode] = SupplementalGlyphMapForArialBlack[charCode]; - } - } - var isIdentityUnicode = this.toUnicode instanceof IdentityToUnicodeMap; - if (!isIdentityUnicode) { - this.toUnicode.forEach(function(charCode, unicodeCharCode) { - map[+charCode] = unicodeCharCode; - }); - } - this.toFontChar = map; - this.toUnicode = new ToUnicodeMap(map); - } else if (/Symbol/i.test(fontName)) { - var symbols = Encodings.SymbolSetEncoding; - for (charCode in symbols) { - fontChar = GlyphsUnicode[symbols[charCode]]; - if (!fontChar) { - continue; - } - this.toFontChar[charCode] = fontChar; - } - for (charCode in properties.differences) { - fontChar = GlyphsUnicode[properties.differences[charCode]]; - if (!fontChar) { - continue; - } - this.toFontChar[charCode] = fontChar; - } - } else if (/Dingbats/i.test(fontName)) { - if (/Wingdings/i.test(name)) { - warn('Wingdings font without embedded font file, ' + - 'falling back to the ZapfDingbats encoding.'); - } - var dingbats = Encodings.ZapfDingbatsEncoding; - for (charCode in dingbats) { - fontChar = DingbatsGlyphsUnicode[dingbats[charCode]]; - if (!fontChar) { - continue; - } - this.toFontChar[charCode] = fontChar; - } - for (charCode in properties.differences) { - fontChar = DingbatsGlyphsUnicode[properties.differences[charCode]]; - if (!fontChar) { - continue; - } - this.toFontChar[charCode] = fontChar; - } - } else if (isStandardFont) { - this.toFontChar = []; - for (charCode in properties.defaultEncoding) { - glyphName = (properties.differences[charCode] || - properties.defaultEncoding[charCode]); - this.toFontChar[charCode] = GlyphsUnicode[glyphName]; - } - } else { - var unicodeCharCode, notCidFont = (type.indexOf('CIDFontType') === -1); - this.toUnicode.forEach(function(charCode, unicodeCharCode) { - if (notCidFont) { - glyphName = (properties.differences[charCode] || - properties.defaultEncoding[charCode]); - unicodeCharCode = (GlyphsUnicode[glyphName] || unicodeCharCode); - } - this.toFontChar[charCode] = unicodeCharCode; - }.bind(this)); - } - this.loadedName = fontName.split('-')[0]; - this.loading = false; - this.fontType = getFontType(type, subtype); - return; - } - - // Some fonts might use wrong font types for Type1C or CIDFontType0C - if (subtype === 'Type1C' && (type !== 'Type1' && type !== 'MMType1')) { - // Some TrueType fonts by mistake claim Type1C - if (isTrueTypeFile(file)) { - subtype = 'TrueType'; - } else { - type = 'Type1'; - } - } - if (subtype === 'CIDFontType0C' && type !== 'CIDFontType0') { - type = 'CIDFontType0'; - } - if (subtype === 'OpenType') { - type = 'OpenType'; - } - // Some CIDFontType0C fonts by mistake claim CIDFontType0. - if (type === 'CIDFontType0') { - if (isType1File(file)) { - subtype = 'CIDFontType0'; - } else if (isOpenTypeFile(file)) { - // Sometimes the type/subtype can be a complete lie (see issue6782.pdf). - type = subtype = 'OpenType'; - } else { - subtype = 'CIDFontType0C'; - } - } - - var data; - switch (type) { - case 'MMType1': - info('MMType1 font (' + name + '), falling back to Type1.'); - /* falls through */ - case 'Type1': - case 'CIDFontType0': - this.mimetype = 'font/opentype'; - - var cff = (subtype === 'Type1C' || subtype === 'CIDFontType0C') ? - new CFFFont(file, properties) : new Type1Font(name, file, properties); - - adjustWidths(properties); - - // Wrap the CFF data inside an OTF font file - data = this.convert(name, cff, properties); - break; - - case 'OpenType': - case 'TrueType': - case 'CIDFontType2': - this.mimetype = 'font/opentype'; - - // Repair the TrueType file. It is can be damaged in the point of - // view of the sanitizer - data = this.checkAndRepair(name, file, properties); - if (this.isOpenType) { - adjustWidths(properties); - - type = 'OpenType'; - } - break; - - default: - error('Font ' + type + ' is not supported'); - break; - } - - this.data = data; - this.fontType = getFontType(type, subtype); - - // Transfer some properties again that could change during font conversion - this.fontMatrix = properties.fontMatrix; - this.widths = properties.widths; - this.defaultWidth = properties.defaultWidth; - this.encoding = properties.baseEncoding; - this.seacMap = properties.seacMap; - - this.loading = true; - } - - Font.getFontID = (function () { - var ID = 1; - return function Font_getFontID() { - return String(ID++); - }; - })(); - - function int16(b0, b1) { - return (b0 << 8) + b1; - } - - function int32(b0, b1, b2, b3) { - return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3; - } - - function string16(value) { - return String.fromCharCode((value >> 8) & 0xff, value & 0xff); - } - - function safeString16(value) { - // clamp value to the 16-bit int range - value = (value > 0x7FFF ? 0x7FFF : (value < -0x8000 ? -0x8000 : value)); - return String.fromCharCode((value >> 8) & 0xff, value & 0xff); - } - - function isTrueTypeFile(file) { - var header = file.peekBytes(4); - return readUint32(header, 0) === 0x00010000; - } - - function isOpenTypeFile(file) { - var header = file.peekBytes(4); - return bytesToString(header) === 'OTTO'; - } - - function isType1File(file) { - var header = file.peekBytes(2); - // All Type1 font programs must begin with the comment '%!' (0x25 + 0x21). - if (header[0] === 0x25 && header[1] === 0x21) { - return true; - } - // ... obviously some fonts violate that part of the specification, - // please refer to the comment in |Type1Font| below. - if (header[0] === 0x80 && header[1] === 0x01) { // pfb file header. - return true; - } - return false; - } - - /** - * Helper function for |adjustMapping|. - * @return {boolean} - */ - function isProblematicUnicodeLocation(code) { - // Using binary search to find a range start. - var i = 0, j = ProblematicCharRanges.length - 1; - while (i < j) { - var c = (i + j + 1) >> 1; - if (code < ProblematicCharRanges[c]) { - j = c - 1; - } else { - i = c; - } - } - // Even index means code in problematic range. - return !(i & 1); - } - - /** - * Rebuilds the char code to glyph ID map by trying to replace the char codes - * with their unicode value. It also moves char codes that are in known - * problematic locations. - * @return {Object} Two properties: - * 'toFontChar' - maps original char codes(the value that will be read - * from commands such as show text) to the char codes that will be used in the - * font that we build - * 'charCodeToGlyphId' - maps the new font char codes to glyph ids - */ - function adjustMapping(charCodeToGlyphId, properties) { - var toUnicode = properties.toUnicode; - var isSymbolic = !!(properties.flags & FontFlags.Symbolic); - var isIdentityUnicode = - properties.toUnicode instanceof IdentityToUnicodeMap; - var newMap = Object.create(null); - var toFontChar = []; - var usedFontCharCodes = []; - var nextAvailableFontCharCode = PRIVATE_USE_OFFSET_START; - for (var originalCharCode in charCodeToGlyphId) { - originalCharCode |= 0; - var glyphId = charCodeToGlyphId[originalCharCode]; - var fontCharCode = originalCharCode; - // First try to map the value to a unicode position if a non identity map - // was created. - if (!isIdentityUnicode && toUnicode.has(originalCharCode)) { - var unicode = toUnicode.get(fontCharCode); - // TODO: Try to map ligatures to the correct spot. - if (unicode.length === 1) { - fontCharCode = unicode.charCodeAt(0); - } - } - // Try to move control characters, special characters and already mapped - // characters to the private use area since they will not be drawn by - // canvas if left in their current position. Also, move characters if the - // font was symbolic and there is only an identity unicode map since the - // characters probably aren't in the correct position (fixes an issue - // with firefox and thuluthfont). - if ((usedFontCharCodes[fontCharCode] !== undefined || - isProblematicUnicodeLocation(fontCharCode) || - (isSymbolic && isIdentityUnicode)) && - nextAvailableFontCharCode <= PRIVATE_USE_OFFSET_END) { // Room left. - // Loop to try and find a free spot in the private use area. - do { - fontCharCode = nextAvailableFontCharCode++; - - if (SKIP_PRIVATE_USE_RANGE_F000_TO_F01F && fontCharCode === 0xF000) { - fontCharCode = 0xF020; - nextAvailableFontCharCode = fontCharCode + 1; - } - - } while (usedFontCharCodes[fontCharCode] !== undefined && - nextAvailableFontCharCode <= PRIVATE_USE_OFFSET_END); - } - - newMap[fontCharCode] = glyphId; - toFontChar[originalCharCode] = fontCharCode; - usedFontCharCodes[fontCharCode] = true; - } - return { - toFontChar: toFontChar, - charCodeToGlyphId: newMap, - nextAvailableFontCharCode: nextAvailableFontCharCode - }; - } - - function getRanges(glyphs, numGlyphs) { - // Array.sort() sorts by characters, not numerically, so convert to an - // array of characters. - var codes = []; - for (var charCode in glyphs) { - // Remove an invalid glyph ID mappings to make OTS happy. - if (glyphs[charCode] >= numGlyphs) { - continue; - } - codes.push({ fontCharCode: charCode | 0, glyphId: glyphs[charCode] }); - } - codes.sort(function fontGetRangesSort(a, b) { - return a.fontCharCode - b.fontCharCode; - }); - - // Split the sorted codes into ranges. - var ranges = []; - var length = codes.length; - for (var n = 0; n < length; ) { - var start = codes[n].fontCharCode; - var codeIndices = [codes[n].glyphId]; - ++n; - var end = start; - while (n < length && end + 1 === codes[n].fontCharCode) { - codeIndices.push(codes[n].glyphId); - ++end; - ++n; - if (end === 0xFFFF) { - break; - } - } - ranges.push([start, end, codeIndices]); - } - - return ranges; - } - - function createCmapTable(glyphs, numGlyphs) { - var ranges = getRanges(glyphs, numGlyphs); - var numTables = ranges[ranges.length - 1][1] > 0xFFFF ? 2 : 1; - var cmap = '\x00\x00' + // version - string16(numTables) + // numTables - '\x00\x03' + // platformID - '\x00\x01' + // encodingID - string32(4 + numTables * 8); // start of the table record - - var i, ii, j, jj; - for (i = ranges.length - 1; i >= 0; --i) { - if (ranges[i][0] <= 0xFFFF) { break; } - } - var bmpLength = i + 1; - - if (ranges[i][0] < 0xFFFF && ranges[i][1] === 0xFFFF) { - ranges[i][1] = 0xFFFE; - } - var trailingRangesCount = ranges[i][1] < 0xFFFF ? 1 : 0; - var segCount = bmpLength + trailingRangesCount; - var searchParams = OpenTypeFileBuilder.getSearchParams(segCount, 2); - - // Fill up the 4 parallel arrays describing the segments. - var startCount = ''; - var endCount = ''; - var idDeltas = ''; - var idRangeOffsets = ''; - var glyphsIds = ''; - var bias = 0; - - var range, start, end, codes; - for (i = 0, ii = bmpLength; i < ii; i++) { - range = ranges[i]; - start = range[0]; - end = range[1]; - startCount += string16(start); - endCount += string16(end); - codes = range[2]; - var contiguous = true; - for (j = 1, jj = codes.length; j < jj; ++j) { - if (codes[j] !== codes[j - 1] + 1) { - contiguous = false; - break; - } - } - if (!contiguous) { - var offset = (segCount - i) * 2 + bias * 2; - bias += (end - start + 1); - - idDeltas += string16(0); - idRangeOffsets += string16(offset); - - for (j = 0, jj = codes.length; j < jj; ++j) { - glyphsIds += string16(codes[j]); - } - } else { - var startCode = codes[0]; - - idDeltas += string16((startCode - start) & 0xFFFF); - idRangeOffsets += string16(0); - } - } - - if (trailingRangesCount > 0) { - endCount += '\xFF\xFF'; - startCount += '\xFF\xFF'; - idDeltas += '\x00\x01'; - idRangeOffsets += '\x00\x00'; - } - - var format314 = '\x00\x00' + // language - string16(2 * segCount) + - string16(searchParams.range) + - string16(searchParams.entry) + - string16(searchParams.rangeShift) + - endCount + '\x00\x00' + startCount + - idDeltas + idRangeOffsets + glyphsIds; - - var format31012 = ''; - var header31012 = ''; - if (numTables > 1) { - cmap += '\x00\x03' + // platformID - '\x00\x0A' + // encodingID - string32(4 + numTables * 8 + - 4 + format314.length); // start of the table record - format31012 = ''; - for (i = 0, ii = ranges.length; i < ii; i++) { - range = ranges[i]; - start = range[0]; - codes = range[2]; - var code = codes[0]; - for (j = 1, jj = codes.length; j < jj; ++j) { - if (codes[j] !== codes[j - 1] + 1) { - end = range[0] + j - 1; - format31012 += string32(start) + // startCharCode - string32(end) + // endCharCode - string32(code); // startGlyphID - start = end + 1; - code = codes[j]; - } - } - format31012 += string32(start) + // startCharCode - string32(range[1]) + // endCharCode - string32(code); // startGlyphID - } - header31012 = '\x00\x0C' + // format - '\x00\x00' + // reserved - string32(format31012.length + 16) + // length - '\x00\x00\x00\x00' + // language - string32(format31012.length / 12); // nGroups - } - - return cmap + '\x00\x04' + // format - string16(format314.length + 4) + // length - format314 + header31012 + format31012; - } - - function validateOS2Table(os2) { - var stream = new Stream(os2.data); - var version = stream.getUint16(); - // TODO verify all OS/2 tables fields, but currently we validate only those - // that give us issues - stream.getBytes(60); // skipping type, misc sizes, panose, unicode ranges - var selection = stream.getUint16(); - if (version < 4 && (selection & 0x0300)) { - return false; - } - var firstChar = stream.getUint16(); - var lastChar = stream.getUint16(); - if (firstChar > lastChar) { - return false; - } - stream.getBytes(6); // skipping sTypoAscender/Descender/LineGap - var usWinAscent = stream.getUint16(); - if (usWinAscent === 0) { // makes font unreadable by windows - return false; - } - - // OS/2 appears to be valid, resetting some fields - os2.data[8] = os2.data[9] = 0; // IE rejects fonts if fsType != 0 - return true; - } - - function createOS2Table(properties, charstrings, override) { - override = override || { - unitsPerEm: 0, - yMax: 0, - yMin: 0, - ascent: 0, - descent: 0 - }; - - var ulUnicodeRange1 = 0; - var ulUnicodeRange2 = 0; - var ulUnicodeRange3 = 0; - var ulUnicodeRange4 = 0; - - var firstCharIndex = null; - var lastCharIndex = 0; - - if (charstrings) { - for (var code in charstrings) { - code |= 0; - if (firstCharIndex > code || !firstCharIndex) { - firstCharIndex = code; - } - if (lastCharIndex < code) { - lastCharIndex = code; - } - - var position = getUnicodeRangeFor(code); - if (position < 32) { - ulUnicodeRange1 |= 1 << position; - } else if (position < 64) { - ulUnicodeRange2 |= 1 << position - 32; - } else if (position < 96) { - ulUnicodeRange3 |= 1 << position - 64; - } else if (position < 123) { - ulUnicodeRange4 |= 1 << position - 96; - } else { - error('Unicode ranges Bits > 123 are reserved for internal usage'); - } - } - } else { - // TODO - firstCharIndex = 0; - lastCharIndex = 255; - } - - var bbox = properties.bbox || [0, 0, 0, 0]; - var unitsPerEm = (override.unitsPerEm || - 1 / (properties.fontMatrix || FONT_IDENTITY_MATRIX)[0]); - - // if the font units differ to the PDF glyph space units - // then scale up the values - var scale = (properties.ascentScaled ? 1.0 : - unitsPerEm / PDF_GLYPH_SPACE_UNITS); - - var typoAscent = (override.ascent || - Math.round(scale * (properties.ascent || bbox[3]))); - var typoDescent = (override.descent || - Math.round(scale * (properties.descent || bbox[1]))); - if (typoDescent > 0 && properties.descent > 0 && bbox[1] < 0) { - typoDescent = -typoDescent; // fixing incorrect descent - } - var winAscent = override.yMax || typoAscent; - var winDescent = -override.yMin || -typoDescent; - - return '\x00\x03' + // version - '\x02\x24' + // xAvgCharWidth - '\x01\xF4' + // usWeightClass - '\x00\x05' + // usWidthClass - '\x00\x00' + // fstype (0 to let the font loads via font-face on IE) - '\x02\x8A' + // ySubscriptXSize - '\x02\xBB' + // ySubscriptYSize - '\x00\x00' + // ySubscriptXOffset - '\x00\x8C' + // ySubscriptYOffset - '\x02\x8A' + // ySuperScriptXSize - '\x02\xBB' + // ySuperScriptYSize - '\x00\x00' + // ySuperScriptXOffset - '\x01\xDF' + // ySuperScriptYOffset - '\x00\x31' + // yStrikeOutSize - '\x01\x02' + // yStrikeOutPosition - '\x00\x00' + // sFamilyClass - '\x00\x00\x06' + - String.fromCharCode(properties.fixedPitch ? 0x09 : 0x00) + - '\x00\x00\x00\x00\x00\x00' + // Panose - string32(ulUnicodeRange1) + // ulUnicodeRange1 (Bits 0-31) - string32(ulUnicodeRange2) + // ulUnicodeRange2 (Bits 32-63) - string32(ulUnicodeRange3) + // ulUnicodeRange3 (Bits 64-95) - string32(ulUnicodeRange4) + // ulUnicodeRange4 (Bits 96-127) - '\x2A\x32\x31\x2A' + // achVendID - string16(properties.italicAngle ? 1 : 0) + // fsSelection - string16(firstCharIndex || - properties.firstChar) + // usFirstCharIndex - string16(lastCharIndex || properties.lastChar) + // usLastCharIndex - string16(typoAscent) + // sTypoAscender - string16(typoDescent) + // sTypoDescender - '\x00\x64' + // sTypoLineGap (7%-10% of the unitsPerEM value) - string16(winAscent) + // usWinAscent - string16(winDescent) + // usWinDescent - '\x00\x00\x00\x00' + // ulCodePageRange1 (Bits 0-31) - '\x00\x00\x00\x00' + // ulCodePageRange2 (Bits 32-63) - string16(properties.xHeight) + // sxHeight - string16(properties.capHeight) + // sCapHeight - string16(0) + // usDefaultChar - string16(firstCharIndex || properties.firstChar) + // usBreakChar - '\x00\x03'; // usMaxContext - } - - function createPostTable(properties) { - var angle = Math.floor(properties.italicAngle * (Math.pow(2, 16))); - return ('\x00\x03\x00\x00' + // Version number - string32(angle) + // italicAngle - '\x00\x00' + // underlinePosition - '\x00\x00' + // underlineThickness - string32(properties.fixedPitch) + // isFixedPitch - '\x00\x00\x00\x00' + // minMemType42 - '\x00\x00\x00\x00' + // maxMemType42 - '\x00\x00\x00\x00' + // minMemType1 - '\x00\x00\x00\x00'); // maxMemType1 - } - - function createNameTable(name, proto) { - if (!proto) { - proto = [[], []]; // no strings and unicode strings - } - - var strings = [ - proto[0][0] || 'Original licence', // 0.Copyright - proto[0][1] || name, // 1.Font family - proto[0][2] || 'Unknown', // 2.Font subfamily (font weight) - proto[0][3] || 'uniqueID', // 3.Unique ID - proto[0][4] || name, // 4.Full font name - proto[0][5] || 'Version 0.11', // 5.Version - proto[0][6] || '', // 6.Postscript name - proto[0][7] || 'Unknown', // 7.Trademark - proto[0][8] || 'Unknown', // 8.Manufacturer - proto[0][9] || 'Unknown' // 9.Designer - ]; - - // Mac want 1-byte per character strings while Windows want - // 2-bytes per character, so duplicate the names table - var stringsUnicode = []; - var i, ii, j, jj, str; - for (i = 0, ii = strings.length; i < ii; i++) { - str = proto[1][i] || strings[i]; - - var strBufUnicode = []; - for (j = 0, jj = str.length; j < jj; j++) { - strBufUnicode.push(string16(str.charCodeAt(j))); - } - stringsUnicode.push(strBufUnicode.join('')); - } - - var names = [strings, stringsUnicode]; - var platforms = ['\x00\x01', '\x00\x03']; - var encodings = ['\x00\x00', '\x00\x01']; - var languages = ['\x00\x00', '\x04\x09']; - - var namesRecordCount = strings.length * platforms.length; - var nameTable = - '\x00\x00' + // format - string16(namesRecordCount) + // Number of names Record - string16(namesRecordCount * 12 + 6); // Storage - - // Build the name records field - var strOffset = 0; - for (i = 0, ii = platforms.length; i < ii; i++) { - var strs = names[i]; - for (j = 0, jj = strs.length; j < jj; j++) { - str = strs[j]; - var nameRecord = - platforms[i] + // platform ID - encodings[i] + // encoding ID - languages[i] + // language ID - string16(j) + // name ID - string16(str.length) + - string16(strOffset); - nameTable += nameRecord; - strOffset += str.length; - } - } - - nameTable += strings.join('') + stringsUnicode.join(''); - return nameTable; - } - - Font.prototype = { - name: null, - font: null, - mimetype: null, - encoding: null, - get renderer() { - var renderer = FontRendererFactory.create(this); - return shadow(this, 'renderer', renderer); - }, - - exportData: function Font_exportData() { - var data = {}; - for (var i in this) { - if (this.hasOwnProperty(i)) { - data[i] = this[i]; - } - } - return data; - }, - - checkAndRepair: function Font_checkAndRepair(name, font, properties) { - function readTableEntry(file) { - var tag = bytesToString(file.getBytes(4)); - - var checksum = file.getInt32(); - var offset = file.getInt32() >>> 0; - var length = file.getInt32() >>> 0; - - // Read the table associated data - var previousPosition = file.pos; - file.pos = file.start ? file.start : 0; - file.skip(offset); - var data = file.getBytes(length); - file.pos = previousPosition; - - if (tag === 'head') { - // clearing checksum adjustment - data[8] = data[9] = data[10] = data[11] = 0; - data[17] |= 0x20; //Set font optimized for cleartype flag - } - - return { - tag: tag, - checksum: checksum, - length: length, - offset: offset, - data: data - }; - } - - function readOpenTypeHeader(ttf) { - return { - version: bytesToString(ttf.getBytes(4)), - numTables: ttf.getUint16(), - searchRange: ttf.getUint16(), - entrySelector: ttf.getUint16(), - rangeShift: ttf.getUint16() - }; - } - - /** - * Read the appropriate subtable from the cmap according to 9.6.6.4 from - * PDF spec - */ - function readCmapTable(cmap, font, isSymbolicFont, hasEncoding) { - if (!cmap) { - warn('No cmap table available.'); - return { - platformId: -1, - encodingId: -1, - mappings: [], - hasShortCmap: false - }; - } - var segment; - var start = (font.start ? font.start : 0) + cmap.offset; - font.pos = start; - - var version = font.getUint16(); - var numTables = font.getUint16(); - - var potentialTable; - var canBreak = false; - // There's an order of preference in terms of which cmap subtable to - // use: - // - non-symbolic fonts the preference is a 3,1 table then a 1,0 table - // - symbolic fonts the preference is a 3,0 table then a 1,0 table - // The following takes advantage of the fact that the tables are sorted - // to work. - for (var i = 0; i < numTables; i++) { - var platformId = font.getUint16(); - var encodingId = font.getUint16(); - var offset = font.getInt32() >>> 0; - var useTable = false; - - if (platformId === 0 && encodingId === 0) { - useTable = true; - // Continue the loop since there still may be a higher priority - // table. - } else if (platformId === 1 && encodingId === 0) { - useTable = true; - // Continue the loop since there still may be a higher priority - // table. - } else if (platformId === 3 && encodingId === 1 && - ((!isSymbolicFont && hasEncoding) || !potentialTable)) { - useTable = true; - if (!isSymbolicFont) { - canBreak = true; - } - } else if (isSymbolicFont && platformId === 3 && encodingId === 0) { - useTable = true; - canBreak = true; - } - - if (useTable) { - potentialTable = { - platformId: platformId, - encodingId: encodingId, - offset: offset - }; - } - if (canBreak) { - break; - } - } - - if (potentialTable) { - font.pos = start + potentialTable.offset; - } - if (!potentialTable || font.peekByte() === -1) { - warn('Could not find a preferred cmap table.'); - return { - platformId: -1, - encodingId: -1, - mappings: [], - hasShortCmap: false - }; - } - - var format = font.getUint16(); - var length = font.getUint16(); - var language = font.getUint16(); - - var hasShortCmap = false; - var mappings = []; - var j, glyphId; - - // TODO(mack): refactor this cmap subtable reading logic out - if (format === 0) { - for (j = 0; j < 256; j++) { - var index = font.getByte(); - if (!index) { - continue; - } - mappings.push({ - charCode: j, - glyphId: index - }); - } - hasShortCmap = true; - } else if (format === 4) { - // re-creating the table in format 4 since the encoding - // might be changed - var segCount = (font.getUint16() >> 1); - font.getBytes(6); // skipping range fields - var segIndex, segments = []; - for (segIndex = 0; segIndex < segCount; segIndex++) { - segments.push({ end: font.getUint16() }); - } - font.getUint16(); - for (segIndex = 0; segIndex < segCount; segIndex++) { - segments[segIndex].start = font.getUint16(); - } - - for (segIndex = 0; segIndex < segCount; segIndex++) { - segments[segIndex].delta = font.getUint16(); - } - - var offsetsCount = 0; - for (segIndex = 0; segIndex < segCount; segIndex++) { - segment = segments[segIndex]; - var rangeOffset = font.getUint16(); - if (!rangeOffset) { - segment.offsetIndex = -1; - continue; - } - - var offsetIndex = (rangeOffset >> 1) - (segCount - segIndex); - segment.offsetIndex = offsetIndex; - offsetsCount = Math.max(offsetsCount, offsetIndex + - segment.end - segment.start + 1); - } - - var offsets = []; - for (j = 0; j < offsetsCount; j++) { - offsets.push(font.getUint16()); - } - - for (segIndex = 0; segIndex < segCount; segIndex++) { - segment = segments[segIndex]; - start = segment.start; - var end = segment.end; - var delta = segment.delta; - offsetIndex = segment.offsetIndex; - - for (j = start; j <= end; j++) { - if (j === 0xFFFF) { - continue; - } - - glyphId = (offsetIndex < 0 ? - j : offsets[offsetIndex + j - start]); - glyphId = (glyphId + delta) & 0xFFFF; - if (glyphId === 0) { - continue; - } - mappings.push({ - charCode: j, - glyphId: glyphId - }); - } - } - } else if (format === 6) { - // Format 6 is a 2-bytes dense mapping, which means the font data - // lives glue together even if they are pretty far in the unicode - // table. (This looks weird, so I can have missed something), this - // works on Linux but seems to fails on Mac so let's rewrite the - // cmap table to a 3-1-4 style - var firstCode = font.getUint16(); - var entryCount = font.getUint16(); - - for (j = 0; j < entryCount; j++) { - glyphId = font.getUint16(); - var charCode = firstCode + j; - - mappings.push({ - charCode: charCode, - glyphId: glyphId - }); - } - } else { - warn('cmap table has unsupported format: ' + format); - return { - platformId: -1, - encodingId: -1, - mappings: [], - hasShortCmap: false - }; - } - - // removing duplicate entries - mappings.sort(function (a, b) { - return a.charCode - b.charCode; - }); - for (i = 1; i < mappings.length; i++) { - if (mappings[i - 1].charCode === mappings[i].charCode) { - mappings.splice(i, 1); - i--; - } - } - - return { - platformId: potentialTable.platformId, - encodingId: potentialTable.encodingId, - mappings: mappings, - hasShortCmap: hasShortCmap - }; - } - - function sanitizeMetrics(font, header, metrics, numGlyphs) { - if (!header) { - if (metrics) { - metrics.data = null; - } - return; - } - - font.pos = (font.start ? font.start : 0) + header.offset; - font.pos += header.length - 2; - var numOfMetrics = font.getUint16(); - - if (numOfMetrics > numGlyphs) { - info('The numOfMetrics (' + numOfMetrics + ') should not be ' + - 'greater than the numGlyphs (' + numGlyphs + ')'); - // Reduce numOfMetrics if it is greater than numGlyphs - numOfMetrics = numGlyphs; - header.data[34] = (numOfMetrics & 0xff00) >> 8; - header.data[35] = numOfMetrics & 0x00ff; - } - - var numOfSidebearings = numGlyphs - numOfMetrics; - var numMissing = numOfSidebearings - - ((metrics.length - numOfMetrics * 4) >> 1); - - if (numMissing > 0) { - // For each missing glyph, we set both the width and lsb to 0 (zero). - // Since we need to add two properties for each glyph, this explains - // the use of |numMissing * 2| when initializing the typed array. - var entries = new Uint8Array(metrics.length + numMissing * 2); - entries.set(metrics.data); - metrics.data = entries; - } - } - - function sanitizeGlyph(source, sourceStart, sourceEnd, dest, destStart, - hintsValid) { - if (sourceEnd - sourceStart <= 12) { - // glyph with data less than 12 is invalid one - return 0; - } - var glyf = source.subarray(sourceStart, sourceEnd); - var contoursCount = (glyf[0] << 8) | glyf[1]; - if (contoursCount & 0x8000) { - // complex glyph, writing as is - dest.set(glyf, destStart); - return glyf.length; - } - - var i, j = 10, flagsCount = 0; - for (i = 0; i < contoursCount; i++) { - var endPoint = (glyf[j] << 8) | glyf[j + 1]; - flagsCount = endPoint + 1; - j += 2; - } - // skipping instructions - var instructionsStart = j; - var instructionsLength = (glyf[j] << 8) | glyf[j + 1]; - j += 2 + instructionsLength; - var instructionsEnd = j; - // validating flags - var coordinatesLength = 0; - for (i = 0; i < flagsCount; i++) { - var flag = glyf[j++]; - if (flag & 0xC0) { - // reserved flags must be zero, cleaning up - glyf[j - 1] = flag & 0x3F; - } - var xyLength = ((flag & 2) ? 1 : (flag & 16) ? 0 : 2) + - ((flag & 4) ? 1 : (flag & 32) ? 0 : 2); - coordinatesLength += xyLength; - if (flag & 8) { - var repeat = glyf[j++]; - i += repeat; - coordinatesLength += repeat * xyLength; - } - } - // glyph without coordinates will be rejected - if (coordinatesLength === 0) { - return 0; - } - var glyphDataLength = j + coordinatesLength; - if (glyphDataLength > glyf.length) { - // not enough data for coordinates - return 0; - } - if (!hintsValid && instructionsLength > 0) { - dest.set(glyf.subarray(0, instructionsStart), destStart); - dest.set([0, 0], destStart + instructionsStart); - dest.set(glyf.subarray(instructionsEnd, glyphDataLength), - destStart + instructionsStart + 2); - glyphDataLength -= instructionsLength; - if (glyf.length - glyphDataLength > 3) { - glyphDataLength = (glyphDataLength + 3) & ~3; - } - return glyphDataLength; - } - if (glyf.length - glyphDataLength > 3) { - // truncating and aligning to 4 bytes the long glyph data - glyphDataLength = (glyphDataLength + 3) & ~3; - dest.set(glyf.subarray(0, glyphDataLength), destStart); - return glyphDataLength; - } - // glyph data is fine - dest.set(glyf, destStart); - return glyf.length; - } - - function sanitizeHead(head, numGlyphs, locaLength) { - var data = head.data; - - // Validate version: - // Should always be 0x00010000 - var version = int32(data[0], data[1], data[2], data[3]); - if (version >> 16 !== 1) { - info('Attempting to fix invalid version in head table: ' + version); - data[0] = 0; - data[1] = 1; - data[2] = 0; - data[3] = 0; - } - - var indexToLocFormat = int16(data[50], data[51]); - if (indexToLocFormat < 0 || indexToLocFormat > 1) { - info('Attempting to fix invalid indexToLocFormat in head table: ' + - indexToLocFormat); - - // The value of indexToLocFormat should be 0 if the loca table - // consists of short offsets, and should be 1 if the loca table - // consists of long offsets. - // - // The number of entries in the loca table should be numGlyphs + 1. - // - // Using this information, we can work backwards to deduce if the - // size of each offset in the loca table, and thus figure out the - // appropriate value for indexToLocFormat. - - var numGlyphsPlusOne = numGlyphs + 1; - if (locaLength === numGlyphsPlusOne << 1) { - // 0x0000 indicates the loca table consists of short offsets - data[50] = 0; - data[51] = 0; - } else if (locaLength === numGlyphsPlusOne << 2) { - // 0x0001 indicates the loca table consists of long offsets - data[50] = 0; - data[51] = 1; - } else { - warn('Could not fix indexToLocFormat: ' + indexToLocFormat); - } - } - } - - function sanitizeGlyphLocations(loca, glyf, numGlyphs, - isGlyphLocationsLong, hintsValid, - dupFirstEntry) { - var itemSize, itemDecode, itemEncode; - if (isGlyphLocationsLong) { - itemSize = 4; - itemDecode = function fontItemDecodeLong(data, offset) { - return (data[offset] << 24) | (data[offset + 1] << 16) | - (data[offset + 2] << 8) | data[offset + 3]; - }; - itemEncode = function fontItemEncodeLong(data, offset, value) { - data[offset] = (value >>> 24) & 0xFF; - data[offset + 1] = (value >> 16) & 0xFF; - data[offset + 2] = (value >> 8) & 0xFF; - data[offset + 3] = value & 0xFF; - }; - } else { - itemSize = 2; - itemDecode = function fontItemDecode(data, offset) { - return (data[offset] << 9) | (data[offset + 1] << 1); - }; - itemEncode = function fontItemEncode(data, offset, value) { - data[offset] = (value >> 9) & 0xFF; - data[offset + 1] = (value >> 1) & 0xFF; - }; - } - var locaData = loca.data; - var locaDataSize = itemSize * (1 + numGlyphs); - // is loca.data too short or long? - if (locaData.length !== locaDataSize) { - locaData = new Uint8Array(locaDataSize); - locaData.set(loca.data.subarray(0, locaDataSize)); - loca.data = locaData; - } - // removing the invalid glyphs - var oldGlyfData = glyf.data; - var oldGlyfDataLength = oldGlyfData.length; - var newGlyfData = new Uint8Array(oldGlyfDataLength); - var startOffset = itemDecode(locaData, 0); - var writeOffset = 0; - var missingGlyphData = {}; - itemEncode(locaData, 0, writeOffset); - var i, j; - for (i = 0, j = itemSize; i < numGlyphs; i++, j += itemSize) { - var endOffset = itemDecode(locaData, j); - if (endOffset > oldGlyfDataLength && - ((oldGlyfDataLength + 3) & ~3) === endOffset) { - // Aspose breaks fonts by aligning the glyphs to the qword, but not - // the glyf table size, which makes last glyph out of range. - endOffset = oldGlyfDataLength; - } - if (endOffset > oldGlyfDataLength) { - // glyph end offset points outside glyf data, rejecting the glyph - itemEncode(locaData, j, writeOffset); - startOffset = endOffset; - continue; - } - - if (startOffset === endOffset) { - missingGlyphData[i] = true; - } - - var newLength = sanitizeGlyph(oldGlyfData, startOffset, endOffset, - newGlyfData, writeOffset, hintsValid); - writeOffset += newLength; - itemEncode(locaData, j, writeOffset); - startOffset = endOffset; - } - - if (writeOffset === 0) { - // glyf table cannot be empty -- redoing the glyf and loca tables - // to have single glyph with one point - var simpleGlyph = new Uint8Array( - [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0]); - for (i = 0, j = itemSize; i < numGlyphs; i++, j += itemSize) { - itemEncode(locaData, j, simpleGlyph.length); - } - glyf.data = simpleGlyph; - return missingGlyphData; - } - - if (dupFirstEntry) { - var firstEntryLength = itemDecode(locaData, itemSize); - if (newGlyfData.length > firstEntryLength + writeOffset) { - glyf.data = newGlyfData.subarray(0, firstEntryLength + writeOffset); - } else { - glyf.data = new Uint8Array(firstEntryLength + writeOffset); - glyf.data.set(newGlyfData.subarray(0, writeOffset)); - } - glyf.data.set(newGlyfData.subarray(0, firstEntryLength), writeOffset); - itemEncode(loca.data, locaData.length - itemSize, - writeOffset + firstEntryLength); - } else { - glyf.data = newGlyfData.subarray(0, writeOffset); - } - return missingGlyphData; - } - - function readPostScriptTable(post, properties, maxpNumGlyphs) { - var start = (font.start ? font.start : 0) + post.offset; - font.pos = start; - - var length = post.length, end = start + length; - var version = font.getInt32(); - // skip rest to the tables - font.getBytes(28); - - var glyphNames; - var valid = true; - var i; - - switch (version) { - case 0x00010000: - glyphNames = MacStandardGlyphOrdering; - break; - case 0x00020000: - var numGlyphs = font.getUint16(); - if (numGlyphs !== maxpNumGlyphs) { - valid = false; - break; - } - var glyphNameIndexes = []; - for (i = 0; i < numGlyphs; ++i) { - var index = font.getUint16(); - if (index >= 32768) { - valid = false; - break; - } - glyphNameIndexes.push(index); - } - if (!valid) { - break; - } - var customNames = []; - var strBuf = []; - while (font.pos < end) { - var stringLength = font.getByte(); - strBuf.length = stringLength; - for (i = 0; i < stringLength; ++i) { - strBuf[i] = String.fromCharCode(font.getByte()); - } - customNames.push(strBuf.join('')); - } - glyphNames = []; - for (i = 0; i < numGlyphs; ++i) { - var j = glyphNameIndexes[i]; - if (j < 258) { - glyphNames.push(MacStandardGlyphOrdering[j]); - continue; - } - glyphNames.push(customNames[j - 258]); - } - break; - case 0x00030000: - break; - default: - warn('Unknown/unsupported post table version ' + version); - valid = false; - if (properties.defaultEncoding) { - glyphNames = properties.defaultEncoding; - } - break; - } - properties.glyphNames = glyphNames; - return valid; - } - - function readNameTable(nameTable) { - var start = (font.start ? font.start : 0) + nameTable.offset; - font.pos = start; - - var names = [[], []]; - var length = nameTable.length, end = start + length; - var format = font.getUint16(); - var FORMAT_0_HEADER_LENGTH = 6; - if (format !== 0 || length < FORMAT_0_HEADER_LENGTH) { - // unsupported name table format or table "too" small - return names; - } - var numRecords = font.getUint16(); - var stringsStart = font.getUint16(); - var records = []; - var NAME_RECORD_LENGTH = 12; - var i, ii; - - for (i = 0; i < numRecords && - font.pos + NAME_RECORD_LENGTH <= end; i++) { - var r = { - platform: font.getUint16(), - encoding: font.getUint16(), - language: font.getUint16(), - name: font.getUint16(), - length: font.getUint16(), - offset: font.getUint16() - }; - // using only Macintosh and Windows platform/encoding names - if ((r.platform === 1 && r.encoding === 0 && r.language === 0) || - (r.platform === 3 && r.encoding === 1 && r.language === 0x409)) { - records.push(r); - } - } - for (i = 0, ii = records.length; i < ii; i++) { - var record = records[i]; - var pos = start + stringsStart + record.offset; - if (pos + record.length > end) { - continue; // outside of name table, ignoring - } - font.pos = pos; - var nameIndex = record.name; - if (record.encoding) { - // unicode - var str = ''; - for (var j = 0, jj = record.length; j < jj; j += 2) { - str += String.fromCharCode(font.getUint16()); - } - names[1][nameIndex] = str; - } else { - names[0][nameIndex] = bytesToString(font.getBytes(record.length)); - } - } - return names; - } - - var TTOpsStackDeltas = [ - 0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2, -2, 0, 0, -2, -5, - -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, -1, -1, - 1, -1, -999, 0, 1, 0, -1, -2, 0, -1, -2, -1, -1, 0, -1, -1, - 0, 0, -999, -999, -1, -1, -1, -1, -2, -999, -2, -2, -999, 0, -2, -2, - 0, 0, -2, 0, -2, 0, 0, 0, -2, -1, -1, 1, 1, 0, 0, -1, - -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, 0, -999, -1, -1, - -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -2, -999, -999, -999, -999, -999, -1, -1, -2, -2, 0, 0, 0, 0, -1, -1, - -999, -2, -2, 0, 0, -1, -2, -2, 0, 0, 0, -1, -1, -1, -2]; - // 0xC0-DF == -1 and 0xE0-FF == -2 - - function sanitizeTTProgram(table, ttContext) { - var data = table.data; - var i = 0, j, n, b, funcId, pc, lastEndf = 0, lastDeff = 0; - var stack = []; - var callstack = []; - var functionsCalled = []; - var tooComplexToFollowFunctions = - ttContext.tooComplexToFollowFunctions; - var inFDEF = false, ifLevel = 0, inELSE = 0; - for (var ii = data.length; i < ii;) { - var op = data[i++]; - // The TrueType instruction set docs can be found at - // https://developer.apple.com/fonts/TTRefMan/RM05/Chap5.html - if (op === 0x40) { // NPUSHB - pushes n bytes - n = data[i++]; - if (inFDEF || inELSE) { - i += n; - } else { - for (j = 0; j < n; j++) { - stack.push(data[i++]); - } - } - } else if (op === 0x41) { // NPUSHW - pushes n words - n = data[i++]; - if (inFDEF || inELSE) { - i += n * 2; - } else { - for (j = 0; j < n; j++) { - b = data[i++]; - stack.push((b << 8) | data[i++]); - } - } - } else if ((op & 0xF8) === 0xB0) { // PUSHB - pushes bytes - n = op - 0xB0 + 1; - if (inFDEF || inELSE) { - i += n; - } else { - for (j = 0; j < n; j++) { - stack.push(data[i++]); - } - } - } else if ((op & 0xF8) === 0xB8) { // PUSHW - pushes words - n = op - 0xB8 + 1; - if (inFDEF || inELSE) { - i += n * 2; - } else { - for (j = 0; j < n; j++) { - b = data[i++]; - stack.push((b << 8) | data[i++]); - } - } - } else if (op === 0x2B && !tooComplexToFollowFunctions) { // CALL - if (!inFDEF && !inELSE) { - // collecting inforamtion about which functions are used - funcId = stack[stack.length - 1]; - ttContext.functionsUsed[funcId] = true; - if (funcId in ttContext.functionsStackDeltas) { - stack.length += ttContext.functionsStackDeltas[funcId]; - } else if (funcId in ttContext.functionsDefined && - functionsCalled.indexOf(funcId) < 0) { - callstack.push({data: data, i: i, stackTop: stack.length - 1}); - functionsCalled.push(funcId); - pc = ttContext.functionsDefined[funcId]; - if (!pc) { - warn('TT: CALL non-existent function'); - ttContext.hintsValid = false; - return; - } - data = pc.data; - i = pc.i; - } - } - } else if (op === 0x2C && !tooComplexToFollowFunctions) { // FDEF - if (inFDEF || inELSE) { - warn('TT: nested FDEFs not allowed'); - tooComplexToFollowFunctions = true; - } - inFDEF = true; - // collecting inforamtion about which functions are defined - lastDeff = i; - funcId = stack.pop(); - ttContext.functionsDefined[funcId] = {data: data, i: i}; - } else if (op === 0x2D) { // ENDF - end of function - if (inFDEF) { - inFDEF = false; - lastEndf = i; - } else { - pc = callstack.pop(); - if (!pc) { - warn('TT: ENDF bad stack'); - ttContext.hintsValid = false; - return; - } - funcId = functionsCalled.pop(); - data = pc.data; - i = pc.i; - ttContext.functionsStackDeltas[funcId] = - stack.length - pc.stackTop; - } - } else if (op === 0x89) { // IDEF - instruction definition - if (inFDEF || inELSE) { - warn('TT: nested IDEFs not allowed'); - tooComplexToFollowFunctions = true; - } - inFDEF = true; - // recording it as a function to track ENDF - lastDeff = i; - } else if (op === 0x58) { // IF - ++ifLevel; - } else if (op === 0x1B) { // ELSE - inELSE = ifLevel; - } else if (op === 0x59) { // EIF - if (inELSE === ifLevel) { - inELSE = 0; - } - --ifLevel; - } else if (op === 0x1C) { // JMPR - if (!inFDEF && !inELSE) { - var offset = stack[stack.length - 1]; - // only jumping forward to prevent infinite loop - if (offset > 0) { - i += offset - 1; - } - } - } - // Adjusting stack not extactly, but just enough to get function id - if (!inFDEF && !inELSE) { - var stackDelta = op <= 0x8E ? TTOpsStackDeltas[op] : - op >= 0xC0 && op <= 0xDF ? -1 : op >= 0xE0 ? -2 : 0; - if (op >= 0x71 && op <= 0x75) { - n = stack.pop(); - if (n === n) { - stackDelta = -n * 2; - } - } - while (stackDelta < 0 && stack.length > 0) { - stack.pop(); - stackDelta++; - } - while (stackDelta > 0) { - stack.push(NaN); // pushing any number into stack - stackDelta--; - } - } - } - ttContext.tooComplexToFollowFunctions = tooComplexToFollowFunctions; - var content = [data]; - if (i > data.length) { - content.push(new Uint8Array(i - data.length)); - } - if (lastDeff > lastEndf) { - warn('TT: complementing a missing function tail'); - // new function definition started, but not finished - // complete function by [CLEAR, ENDF] - content.push(new Uint8Array([0x22, 0x2D])); - } - foldTTTable(table, content); - } - - function checkInvalidFunctions(ttContext, maxFunctionDefs) { - if (ttContext.tooComplexToFollowFunctions) { - return; - } - if (ttContext.functionsDefined.length > maxFunctionDefs) { - warn('TT: more functions defined than expected'); - ttContext.hintsValid = false; - return; - } - for (var j = 0, jj = ttContext.functionsUsed.length; j < jj; j++) { - if (j > maxFunctionDefs) { - warn('TT: invalid function id: ' + j); - ttContext.hintsValid = false; - return; - } - if (ttContext.functionsUsed[j] && !ttContext.functionsDefined[j]) { - warn('TT: undefined function: ' + j); - ttContext.hintsValid = false; - return; - } - } - } - - function foldTTTable(table, content) { - if (content.length > 1) { - // concatenating the content items - var newLength = 0; - var j, jj; - for (j = 0, jj = content.length; j < jj; j++) { - newLength += content[j].length; - } - newLength = (newLength + 3) & ~3; - var result = new Uint8Array(newLength); - var pos = 0; - for (j = 0, jj = content.length; j < jj; j++) { - result.set(content[j], pos); - pos += content[j].length; - } - table.data = result; - table.length = newLength; - } - } - - function sanitizeTTPrograms(fpgm, prep, cvt) { - var ttContext = { - functionsDefined: [], - functionsUsed: [], - functionsStackDeltas: [], - tooComplexToFollowFunctions: false, - hintsValid: true - }; - if (fpgm) { - sanitizeTTProgram(fpgm, ttContext); - } - if (prep) { - sanitizeTTProgram(prep, ttContext); - } - if (fpgm) { - checkInvalidFunctions(ttContext, maxFunctionDefs); - } - if (cvt && (cvt.length & 1)) { - var cvtData = new Uint8Array(cvt.length + 1); - cvtData.set(cvt.data); - cvt.data = cvtData; - } - return ttContext.hintsValid; - } - - // The following steps modify the original font data, making copy - font = new Stream(new Uint8Array(font.getBytes())); - - var VALID_TABLES = ['OS/2', 'cmap', 'head', 'hhea', 'hmtx', 'maxp', - 'name', 'post', 'loca', 'glyf', 'fpgm', 'prep', 'cvt ', 'CFF ']; - - var header = readOpenTypeHeader(font); - var numTables = header.numTables; - var cff, cffFile; - - var tables = { 'OS/2': null, cmap: null, head: null, hhea: null, - hmtx: null, maxp: null, name: null, post: null }; - var table; - for (var i = 0; i < numTables; i++) { - table = readTableEntry(font); - if (VALID_TABLES.indexOf(table.tag) < 0) { - continue; // skipping table if it's not a required or optional table - } - if (table.length === 0) { - continue; // skipping empty tables - } - tables[table.tag] = table; - } - - var isTrueType = !tables['CFF ']; - if (!isTrueType) { - // OpenType font - if ((header.version === 'OTTO' && properties.type !== 'CIDFontType2') || - !tables.head || !tables.hhea || !tables.maxp || !tables.post) { - // no major tables: throwing everything at CFFFont - cffFile = new Stream(tables['CFF '].data); - cff = new CFFFont(cffFile, properties); - - adjustWidths(properties); - - return this.convert(name, cff, properties); - } - - delete tables.glyf; - delete tables.loca; - delete tables.fpgm; - delete tables.prep; - delete tables['cvt ']; - this.isOpenType = true; - } else { - if (!tables.loca) { - error('Required "loca" table is not found'); - } - if (!tables.glyf) { - warn('Required "glyf" table is not found -- trying to recover.'); - // Note: We use `sanitizeGlyphLocations` to add dummy glyf data below. - tables.glyf = { - tag: 'glyf', - data: new Uint8Array(0), - }; - } - this.isOpenType = false; - } - - if (!tables.maxp) { - error('Required "maxp" table is not found'); - } - - font.pos = (font.start || 0) + tables.maxp.offset; - var version = font.getInt32(); - var numGlyphs = font.getUint16(); - var maxFunctionDefs = 0; - if (version >= 0x00010000 && tables.maxp.length >= 22) { - // maxZones can be invalid - font.pos += 8; - var maxZones = font.getUint16(); - if (maxZones > 2) { // reset to 2 if font has invalid maxZones - tables.maxp.data[14] = 0; - tables.maxp.data[15] = 2; - } - font.pos += 4; - maxFunctionDefs = font.getUint16(); - } - - var dupFirstEntry = false; - if (properties.type === 'CIDFontType2' && properties.toUnicode && - properties.toUnicode.get(0) > '\u0000') { - // oracle's defect (see 3427), duplicating first entry - dupFirstEntry = true; - numGlyphs++; - tables.maxp.data[4] = numGlyphs >> 8; - tables.maxp.data[5] = numGlyphs & 255; - } - - var hintsValid = sanitizeTTPrograms(tables.fpgm, tables.prep, - tables['cvt '], maxFunctionDefs); - if (!hintsValid) { - delete tables.fpgm; - delete tables.prep; - delete tables['cvt ']; - } - - // Ensure the hmtx table contains the advance width and - // sidebearings information for numGlyphs in the maxp table - sanitizeMetrics(font, tables.hhea, tables.hmtx, numGlyphs); - - if (!tables.head) { - error('Required "head" table is not found'); - } - - sanitizeHead(tables.head, numGlyphs, isTrueType ? tables.loca.length : 0); - - var missingGlyphs = {}; - if (isTrueType) { - var isGlyphLocationsLong = int16(tables.head.data[50], - tables.head.data[51]); - missingGlyphs = sanitizeGlyphLocations(tables.loca, tables.glyf, - numGlyphs, isGlyphLocationsLong, - hintsValid, dupFirstEntry); - } - - if (!tables.hhea) { - error('Required "hhea" table is not found'); - } - - // Sanitizer reduces the glyph advanceWidth to the maxAdvanceWidth - // Sometimes it's 0. That needs to be fixed - if (tables.hhea.data[10] === 0 && tables.hhea.data[11] === 0) { - tables.hhea.data[10] = 0xFF; - tables.hhea.data[11] = 0xFF; - } - - // Extract some more font properties from the OpenType head and - // hhea tables; yMin and descent value are always negative. - var metricsOverride = { - unitsPerEm: int16(tables.head.data[18], tables.head.data[19]), - yMax: int16(tables.head.data[42], tables.head.data[43]), - yMin: int16(tables.head.data[38], tables.head.data[39]) - 0x10000, - ascent: int16(tables.hhea.data[4], tables.hhea.data[5]), - descent: int16(tables.hhea.data[6], tables.hhea.data[7]) - 0x10000 - }; - - // PDF FontDescriptor metrics lie -- using data from actual font. - this.ascent = metricsOverride.ascent / metricsOverride.unitsPerEm; - this.descent = metricsOverride.descent / metricsOverride.unitsPerEm; - - // The 'post' table has glyphs names. - if (tables.post) { - var valid = readPostScriptTable(tables.post, properties, numGlyphs); - if (!valid) { - tables.post = null; - } - } - - var charCodeToGlyphId = [], charCode; - var toUnicode = properties.toUnicode, widths = properties.widths; - var skipToUnicode = (toUnicode instanceof IdentityToUnicodeMap || - toUnicode.length === 0x10000); - - // Helper function to try to skip mapping of empty glyphs. - // Note: In some cases, just relying on the glyph data doesn't work, - // hence we also use a few heuristics to fix various PDF files. - function hasGlyph(glyphId, charCode, widthCode) { - if (!missingGlyphs[glyphId]) { - return true; - } - if (!skipToUnicode && charCode >= 0 && toUnicode.has(charCode)) { - return true; - } - if (widths && widthCode >= 0 && isNum(widths[widthCode])) { - return true; - } - return false; - } - - if (properties.type === 'CIDFontType2') { - var cidToGidMap = properties.cidToGidMap || []; - var isCidToGidMapEmpty = cidToGidMap.length === 0; - - properties.cMap.forEach(function(charCode, cid) { - assert(cid <= 0xffff, 'Max size of CID is 65,535'); - var glyphId = -1; - if (isCidToGidMapEmpty) { - glyphId = charCode; - } else if (cidToGidMap[cid] !== undefined) { - glyphId = cidToGidMap[cid]; - } - - if (glyphId >= 0 && glyphId < numGlyphs && - hasGlyph(glyphId, charCode, cid)) { - charCodeToGlyphId[charCode] = glyphId; - } - }); - if (dupFirstEntry) { - charCodeToGlyphId[0] = numGlyphs - 1; - } - } else { - // Most of the following logic in this code branch is based on the - // 9.6.6.4 of the PDF spec. - var hasEncoding = - properties.differences.length > 0 || !!properties.baseEncodingName; - var cmapTable = - readCmapTable(tables.cmap, font, this.isSymbolicFont, hasEncoding); - var cmapPlatformId = cmapTable.platformId; - var cmapEncodingId = cmapTable.encodingId; - var cmapMappings = cmapTable.mappings; - var cmapMappingsLength = cmapMappings.length; - - // The spec seems to imply that if the font is symbolic the encoding - // should be ignored, this doesn't appear to work for 'preistabelle.pdf' - // where the the font is symbolic and it has an encoding. - if (hasEncoding && - (cmapPlatformId === 3 && cmapEncodingId === 1 || - cmapPlatformId === 1 && cmapEncodingId === 0) || - (cmapPlatformId === -1 && cmapEncodingId === -1 && // Temporary hack - !!Encodings[properties.baseEncodingName])) { // Temporary hack - // When no preferred cmap table was found and |baseEncodingName| is - // one of the predefined encodings, we seem to obtain a better - // |charCodeToGlyphId| map from the code below (fixes bug 1057544). - // TODO: Note that this is a hack which should be removed as soon as - // we have proper support for more exotic cmap tables. - - var baseEncoding = []; - if (properties.baseEncodingName === 'MacRomanEncoding' || - properties.baseEncodingName === 'WinAnsiEncoding') { - baseEncoding = Encodings[properties.baseEncodingName]; - } - for (charCode = 0; charCode < 256; charCode++) { - var glyphName; - if (this.differences && charCode in this.differences) { - glyphName = this.differences[charCode]; - } else if (charCode in baseEncoding && - baseEncoding[charCode] !== '') { - glyphName = baseEncoding[charCode]; - } else { - glyphName = Encodings.StandardEncoding[charCode]; - } - if (!glyphName) { - continue; - } - var unicodeOrCharCode, isUnicode = false; - if (cmapPlatformId === 3 && cmapEncodingId === 1) { - unicodeOrCharCode = GlyphsUnicode[glyphName]; - isUnicode = true; - } else if (cmapPlatformId === 1 && cmapEncodingId === 0) { - // TODO: the encoding needs to be updated with mac os table. - unicodeOrCharCode = Encodings.MacRomanEncoding.indexOf(glyphName); - } - - var found = false; - for (i = 0; i < cmapMappingsLength; ++i) { - if (cmapMappings[i].charCode !== unicodeOrCharCode) { - continue; - } - var code = isUnicode ? charCode : unicodeOrCharCode; - if (hasGlyph(cmapMappings[i].glyphId, code, -1)) { - charCodeToGlyphId[charCode] = cmapMappings[i].glyphId; - found = true; - break; - } - } - if (!found && properties.glyphNames) { - // Try to map using the post table. - var glyphId = properties.glyphNames.indexOf(glyphName); - if (glyphId > 0 && hasGlyph(glyphId, -1, -1)) { - charCodeToGlyphId[charCode] = glyphId; - found = true; - } - } - if (!found) { - charCodeToGlyphId[charCode] = 0; // notdef - } - } - } else if (cmapPlatformId === 0 && cmapEncodingId === 0) { - // Default Unicode semantics, use the charcodes as is. - for (i = 0; i < cmapMappingsLength; ++i) { - charCodeToGlyphId[cmapMappings[i].charCode] = - cmapMappings[i].glyphId; - } - } else { - // For (3, 0) cmap tables: - // The charcode key being stored in charCodeToGlyphId is the lower - // byte of the two-byte charcodes of the cmap table since according to - // the spec: 'each byte from the string shall be prepended with the - // high byte of the range [of charcodes in the cmap table], to form - // a two-byte character, which shall be used to select the - // associated glyph description from the subtable'. - // - // For (1, 0) cmap tables: - // 'single bytes from the string shall be used to look up the - // associated glyph descriptions from the subtable'. This means - // charcodes in the cmap will be single bytes, so no-op since - // glyph.charCode & 0xFF === glyph.charCode - for (i = 0; i < cmapMappingsLength; ++i) { - charCode = cmapMappings[i].charCode & 0xFF; - charCodeToGlyphId[charCode] = cmapMappings[i].glyphId; - } - } - } - - if (charCodeToGlyphId.length === 0) { - // defines at least one glyph - charCodeToGlyphId[0] = 0; - } - - // Converting glyphs and ids into font's cmap table - var newMapping = adjustMapping(charCodeToGlyphId, properties); - this.toFontChar = newMapping.toFontChar; - tables.cmap = { - tag: 'cmap', - data: createCmapTable(newMapping.charCodeToGlyphId, numGlyphs) - }; - - if (!tables['OS/2'] || !validateOS2Table(tables['OS/2'])) { - tables['OS/2'] = { - tag: 'OS/2', - data: createOS2Table(properties, newMapping.charCodeToGlyphId, - metricsOverride) - }; - } - - // Rewrite the 'post' table if needed - if (!tables.post) { - tables.post = { - tag: 'post', - data: createPostTable(properties) - }; - } - - if (!isTrueType) { - try { - // Trying to repair CFF file - cffFile = new Stream(tables['CFF '].data); - var parser = new CFFParser(cffFile, properties); - cff = parser.parse(); - var compiler = new CFFCompiler(cff); - tables['CFF '].data = compiler.compile(); - } catch (e) { - warn('Failed to compile font ' + properties.loadedName); - } - } - - // Re-creating 'name' table - if (!tables.name) { - tables.name = { - tag: 'name', - data: createNameTable(this.name) - }; - } else { - // ... using existing 'name' table as prototype - var namePrototype = readNameTable(tables.name); - tables.name.data = createNameTable(name, namePrototype); - } - - var builder = new OpenTypeFileBuilder(header.version); - for (var tableTag in tables) { - builder.addTable(tableTag, tables[tableTag].data); - } - return builder.toArray(); - }, - - convert: function Font_convert(fontName, font, properties) { - // TODO: Check the charstring widths to determine this. - properties.fixedPitch = false; - - var mapping = font.getGlyphMapping(properties); - var newMapping = adjustMapping(mapping, properties); - this.toFontChar = newMapping.toFontChar; - var numGlyphs = font.numGlyphs; - - function getCharCodes(charCodeToGlyphId, glyphId) { - var charCodes = null; - for (var charCode in charCodeToGlyphId) { - if (glyphId === charCodeToGlyphId[charCode]) { - if (!charCodes) { - charCodes = []; - } - charCodes.push(charCode | 0); - } - } - return charCodes; - } - - function createCharCode(charCodeToGlyphId, glyphId) { - for (var charCode in charCodeToGlyphId) { - if (glyphId === charCodeToGlyphId[charCode]) { - return charCode | 0; - } - } - newMapping.charCodeToGlyphId[newMapping.nextAvailableFontCharCode] = - glyphId; - return newMapping.nextAvailableFontCharCode++; - } - - var seacs = font.seacs; - if (SEAC_ANALYSIS_ENABLED && seacs && seacs.length) { - var matrix = properties.fontMatrix || FONT_IDENTITY_MATRIX; - var charset = font.getCharset(); - var seacMap = Object.create(null); - for (var glyphId in seacs) { - glyphId |= 0; - var seac = seacs[glyphId]; - var baseGlyphName = Encodings.StandardEncoding[seac[2]]; - var accentGlyphName = Encodings.StandardEncoding[seac[3]]; - var baseGlyphId = charset.indexOf(baseGlyphName); - var accentGlyphId = charset.indexOf(accentGlyphName); - if (baseGlyphId < 0 || accentGlyphId < 0) { - continue; - } - var accentOffset = { - x: seac[0] * matrix[0] + seac[1] * matrix[2] + matrix[4], - y: seac[0] * matrix[1] + seac[1] * matrix[3] + matrix[5] - }; - - var charCodes = getCharCodes(mapping, glyphId); - if (!charCodes) { - // There's no point in mapping it if the char code was never mapped - // to begin with. - continue; - } - for (var i = 0, ii = charCodes.length; i < ii; i++) { - var charCode = charCodes[i]; - // Find a fontCharCode that maps to the base and accent glyphs. - // If one doesn't exists, create it. - var charCodeToGlyphId = newMapping.charCodeToGlyphId; - var baseFontCharCode = createCharCode(charCodeToGlyphId, - baseGlyphId); - var accentFontCharCode = createCharCode(charCodeToGlyphId, - accentGlyphId); - seacMap[charCode] = { - baseFontCharCode: baseFontCharCode, - accentFontCharCode: accentFontCharCode, - accentOffset: accentOffset - }; - } - } - properties.seacMap = seacMap; - } - - var unitsPerEm = 1 / (properties.fontMatrix || FONT_IDENTITY_MATRIX)[0]; - - var builder = new OpenTypeFileBuilder('\x4F\x54\x54\x4F'); - // PostScript Font Program - builder.addTable('CFF ', font.data); - // OS/2 and Windows Specific metrics - builder.addTable('OS/2', createOS2Table(properties, - newMapping.charCodeToGlyphId)); - // Character to glyphs mapping - builder.addTable('cmap', createCmapTable(newMapping.charCodeToGlyphId, - numGlyphs)); - // Font header - builder.addTable('head', - '\x00\x01\x00\x00' + // Version number - '\x00\x00\x10\x00' + // fontRevision - '\x00\x00\x00\x00' + // checksumAdjustement - '\x5F\x0F\x3C\xF5' + // magicNumber - '\x00\x00' + // Flags - safeString16(unitsPerEm) + // unitsPerEM - '\x00\x00\x00\x00\x9e\x0b\x7e\x27' + // creation date - '\x00\x00\x00\x00\x9e\x0b\x7e\x27' + // modifification date - '\x00\x00' + // xMin - safeString16(properties.descent) + // yMin - '\x0F\xFF' + // xMax - safeString16(properties.ascent) + // yMax - string16(properties.italicAngle ? 2 : 0) + // macStyle - '\x00\x11' + // lowestRecPPEM - '\x00\x00' + // fontDirectionHint - '\x00\x00' + // indexToLocFormat - '\x00\x00'); // glyphDataFormat - - // Horizontal header - builder.addTable('hhea', - '\x00\x01\x00\x00' + // Version number - safeString16(properties.ascent) + // Typographic Ascent - safeString16(properties.descent) + // Typographic Descent - '\x00\x00' + // Line Gap - '\xFF\xFF' + // advanceWidthMax - '\x00\x00' + // minLeftSidebearing - '\x00\x00' + // minRightSidebearing - '\x00\x00' + // xMaxExtent - safeString16(properties.capHeight) + // caretSlopeRise - safeString16(Math.tan(properties.italicAngle) * - properties.xHeight) + // caretSlopeRun - '\x00\x00' + // caretOffset - '\x00\x00' + // -reserved- - '\x00\x00' + // -reserved- - '\x00\x00' + // -reserved- - '\x00\x00' + // -reserved- - '\x00\x00' + // metricDataFormat - string16(numGlyphs)); // Number of HMetrics - - // Horizontal metrics - builder.addTable('hmtx', (function fontFieldsHmtx() { - var charstrings = font.charstrings; - var cffWidths = font.cff ? font.cff.widths : null; - var hmtx = '\x00\x00\x00\x00'; // Fake .notdef - for (var i = 1, ii = numGlyphs; i < ii; i++) { - var width = 0; - if (charstrings) { - var charstring = charstrings[i - 1]; - width = 'width' in charstring ? charstring.width : 0; - } else if (cffWidths) { - width = Math.ceil(cffWidths[i] || 0); - } - hmtx += string16(width) + string16(0); - } - return hmtx; - })()); - - // Maximum profile - builder.addTable('maxp', - '\x00\x00\x50\x00' + // Version number - string16(numGlyphs)); // Num of glyphs - - // Naming tables - builder.addTable('name', createNameTable(fontName)); - - // PostScript informations - builder.addTable('post', createPostTable(properties)); - - return builder.toArray(); - }, - - /** - * Builds a char code to unicode map based on section 9.10 of the spec. - * @param {Object} properties Font properties object. - * @return {Object} A ToUnicodeMap object. - */ - buildToUnicode: function Font_buildToUnicode(properties) { - // Section 9.10.2 Mapping Character Codes to Unicode Values - if (properties.toUnicode && properties.toUnicode.length !== 0) { - return properties.toUnicode; - } - // According to the spec if the font is a simple font we should only map - // to unicode if the base encoding is MacRoman, MacExpert, or WinAnsi or - // the differences array only contains adobe standard or symbol set names, - // in pratice it seems better to always try to create a toUnicode - // map based of the default encoding. - var toUnicode, charcode; - if (!properties.composite /* is simple font */) { - toUnicode = []; - var encoding = properties.defaultEncoding.slice(); - var baseEncodingName = properties.baseEncodingName; - // Merge in the differences array. - var differences = properties.differences; - for (charcode in differences) { - encoding[charcode] = differences[charcode]; - } - for (charcode in encoding) { - // a) Map the character code to a character name. - var glyphName = encoding[charcode]; - // b) Look up the character name in the Adobe Glyph List (see the - // Bibliography) to obtain the corresponding Unicode value. - if (glyphName === '') { - continue; - } else if (GlyphsUnicode[glyphName] === undefined) { - // (undocumented) c) Few heuristics to recognize unknown glyphs - // NOTE: Adobe Reader does not do this step, but OSX Preview does - var code = 0; - switch (glyphName[0]) { - case 'G': // Gxx glyph - if (glyphName.length === 3) { - code = parseInt(glyphName.substr(1), 16); - } - break; - case 'g': // g00xx glyph - if (glyphName.length === 5) { - code = parseInt(glyphName.substr(1), 16); - } - break; - case 'C': // Cddd glyph - case 'c': // cddd glyph - if (glyphName.length >= 3) { - code = +glyphName.substr(1); - } - break; - } - if (code) { - // If |baseEncodingName| is one the predefined encodings, - // and |code| equals |charcode|, using the glyph defined in the - // baseEncoding seems to yield a better |toUnicode| mapping - // (fixes issue 5070). - if (baseEncodingName && code === +charcode) { - var baseEncoding = Encodings[baseEncodingName]; - if (baseEncoding && (glyphName = baseEncoding[charcode])) { - toUnicode[charcode] = - String.fromCharCode(GlyphsUnicode[glyphName]); - continue; - } - } - toUnicode[charcode] = String.fromCharCode(code); - } - continue; - } - toUnicode[charcode] = String.fromCharCode(GlyphsUnicode[glyphName]); - } - return new ToUnicodeMap(toUnicode); - } - // If the font is a composite font that uses one of the predefined CMaps - // listed in Table 118 (except Identity–H and Identity–V) or whose - // descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1, or - // Adobe-Korea1 character collection: - if (properties.composite && ( - (properties.cMap.builtInCMap && - !(properties.cMap instanceof IdentityCMap)) || - (properties.cidSystemInfo.registry === 'Adobe' && - (properties.cidSystemInfo.ordering === 'GB1' || - properties.cidSystemInfo.ordering === 'CNS1' || - properties.cidSystemInfo.ordering === 'Japan1' || - properties.cidSystemInfo.ordering === 'Korea1')))) { - // Then: - // a) Map the character code to a character identifier (CID) according - // to the font’s CMap. - // b) Obtain the registry and ordering of the character collection used - // by the font’s CMap (for example, Adobe and Japan1) from its - // CIDSystemInfo dictionary. - var registry = properties.cidSystemInfo.registry; - var ordering = properties.cidSystemInfo.ordering; - // c) Construct a second CMap name by concatenating the registry and - // ordering obtained in step (b) in the format registry–ordering–UCS2 - // (for example, Adobe–Japan1–UCS2). - var ucs2CMapName = new Name(registry + '-' + ordering + '-UCS2'); - // d) Obtain the CMap with the name constructed in step (c) (available - // from the ASN Web site; see the Bibliography). - var ucs2CMap = CMapFactory.create(ucs2CMapName, - { url: PDFJS.cMapUrl, packed: PDFJS.cMapPacked }, null); - var cMap = properties.cMap; - toUnicode = []; - cMap.forEach(function(charcode, cid) { - assert(cid <= 0xffff, 'Max size of CID is 65,535'); - // e) Map the CID obtained in step (a) according to the CMap obtained - // in step (d), producing a Unicode value. - var ucs2 = ucs2CMap.lookup(cid); - if (ucs2) { - toUnicode[charcode] = - String.fromCharCode((ucs2.charCodeAt(0) << 8) + - ucs2.charCodeAt(1)); - } - }); - return new ToUnicodeMap(toUnicode); - } - - // The viewer's choice, just use an identity map. - return new IdentityToUnicodeMap(properties.firstChar, - properties.lastChar); - }, - - get spaceWidth() { - if ('_shadowWidth' in this) { - return this._shadowWidth; - } - - // trying to estimate space character width - var possibleSpaceReplacements = ['space', 'minus', 'one', 'i']; - var width; - for (var i = 0, ii = possibleSpaceReplacements.length; i < ii; i++) { - var glyphName = possibleSpaceReplacements[i]; - // if possible, getting width by glyph name - if (glyphName in this.widths) { - width = this.widths[glyphName]; - break; - } - var glyphUnicode = GlyphsUnicode[glyphName]; - // finding the charcode via unicodeToCID map - var charcode = 0; - if (this.composite) { - if (this.cMap.contains(glyphUnicode)) { - charcode = this.cMap.lookup(glyphUnicode); - } - } - // ... via toUnicode map - if (!charcode && this.toUnicode) { - charcode = this.toUnicode.charCodeOf(glyphUnicode); - } - // setting it to unicode if negative or undefined - if (charcode <= 0) { - charcode = glyphUnicode; - } - // trying to get width via charcode - width = this.widths[charcode]; - if (width) { - break; // the non-zero width found - } - } - width = width || this.defaultWidth; - // Do not shadow the property here. See discussion: - // https://github.com/mozilla/pdf.js/pull/2127#discussion_r1662280 - this._shadowWidth = width; - return width; - }, - - charToGlyph: function Font_charToGlyph(charcode, isSpace) { - var fontCharCode, width, operatorListId; - - var widthCode = charcode; - if (this.cMap && this.cMap.contains(charcode)) { - widthCode = this.cMap.lookup(charcode); - } - width = this.widths[widthCode]; - width = isNum(width) ? width : this.defaultWidth; - var vmetric = this.vmetrics && this.vmetrics[widthCode]; - - var unicode = this.toUnicode.get(charcode) || charcode; - if (typeof unicode === 'number') { - unicode = String.fromCharCode(unicode); - } - - // First try the toFontChar map, if it's not there then try falling - // back to the char code. - fontCharCode = this.toFontChar[charcode] || charcode; - if (this.missingFile) { - fontCharCode = mapSpecialUnicodeValues(fontCharCode); - } - - if (this.isType3Font) { - // Font char code in this case is actually a glyph name. - operatorListId = fontCharCode; - } - - var accent = null; - if (this.seacMap && this.seacMap[charcode]) { - var seac = this.seacMap[charcode]; - fontCharCode = seac.baseFontCharCode; - accent = { - fontChar: String.fromCharCode(seac.accentFontCharCode), - offset: seac.accentOffset - }; - } - - var fontChar = String.fromCharCode(fontCharCode); - - var glyph = this.glyphCache[charcode]; - if (!glyph || - !glyph.matchesForCache(fontChar, unicode, accent, width, vmetric, - operatorListId, isSpace)) { - glyph = new Glyph(fontChar, unicode, accent, width, vmetric, - operatorListId, isSpace); - this.glyphCache[charcode] = glyph; - } - return glyph; - }, - - charsToGlyphs: function Font_charsToGlyphs(chars) { - var charsCache = this.charsCache; - var glyphs, glyph, charcode; - - // if we translated this string before, just grab it from the cache - if (charsCache) { - glyphs = charsCache[chars]; - if (glyphs) { - return glyphs; - } - } - - // lazily create the translation cache - if (!charsCache) { - charsCache = this.charsCache = Object.create(null); - } - - glyphs = []; - var charsCacheKey = chars; - var i = 0, ii; - - if (this.cMap) { - // composite fonts have multi-byte strings convert the string from - // single-byte to multi-byte - var c = {}; - while (i < chars.length) { - this.cMap.readCharCode(chars, i, c); - charcode = c.charcode; - var length = c.length; - i += length; - // Space is char with code 0x20 and length 1 in multiple-byte codes. - var isSpace = length === 1 && chars.charCodeAt(i - 1) === 0x20; - glyph = this.charToGlyph(charcode, isSpace); - glyphs.push(glyph); - } - } else { - for (i = 0, ii = chars.length; i < ii; ++i) { - charcode = chars.charCodeAt(i); - glyph = this.charToGlyph(charcode, charcode === 0x20); - glyphs.push(glyph); - } - } - - // Enter the translated string into the cache - return (charsCache[charsCacheKey] = glyphs); - } - }; - - return Font; -})(); - -var ErrorFont = (function ErrorFontClosure() { - function ErrorFont(error) { - this.error = error; - this.loadedName = 'g_font_error'; - this.loading = false; - } - - ErrorFont.prototype = { - charsToGlyphs: function ErrorFont_charsToGlyphs() { - return []; - }, - exportData: function ErrorFont_exportData() { - return {error: this.error}; - } - }; - - return ErrorFont; -})(); - -/** - * Shared logic for building a char code to glyph id mapping for Type1 and - * simple CFF fonts. See section 9.6.6.2 of the spec. - * @param {Object} properties Font properties object. - * @param {Object} builtInEncoding The encoding contained within the actual font - * data. - * @param {Array} Array of glyph names where the index is the glyph ID. - * @returns {Object} A char code to glyph ID map. - */ -function type1FontGlyphMapping(properties, builtInEncoding, glyphNames) { - var charCodeToGlyphId = Object.create(null); - var glyphId, charCode, baseEncoding; - - if (properties.baseEncodingName) { - // If a valid base encoding name was used, the mapping is initialized with - // that. - baseEncoding = Encodings[properties.baseEncodingName]; - for (charCode = 0; charCode < baseEncoding.length; charCode++) { - glyphId = glyphNames.indexOf(baseEncoding[charCode]); - if (glyphId >= 0) { - charCodeToGlyphId[charCode] = glyphId; - } else { - charCodeToGlyphId[charCode] = 0; // notdef - } - } - } else if (!!(properties.flags & FontFlags.Symbolic)) { - // For a symbolic font the encoding should be the fonts built-in - // encoding. - for (charCode in builtInEncoding) { - charCodeToGlyphId[charCode] = builtInEncoding[charCode]; - } - } else { - // For non-symbolic fonts that don't have a base encoding the standard - // encoding should be used. - baseEncoding = Encodings.StandardEncoding; - for (charCode = 0; charCode < baseEncoding.length; charCode++) { - glyphId = glyphNames.indexOf(baseEncoding[charCode]); - if (glyphId >= 0) { - charCodeToGlyphId[charCode] = glyphId; - } else { - charCodeToGlyphId[charCode] = 0; // notdef - } - } - } - - // Lastly, merge in the differences. - var differences = properties.differences; - if (differences) { - for (charCode in differences) { - var glyphName = differences[charCode]; - glyphId = glyphNames.indexOf(glyphName); - if (glyphId >= 0) { - charCodeToGlyphId[charCode] = glyphId; - } else { - charCodeToGlyphId[charCode] = 0; // notdef - } - } - } - return charCodeToGlyphId; -} - -/* - * CharStrings are encoded following the the CharString Encoding sequence - * describe in Chapter 6 of the "Adobe Type1 Font Format" specification. - * The value in a byte indicates a command, a number, or subsequent bytes - * that are to be interpreted in a special way. - * - * CharString Number Encoding: - * A CharString byte containing the values from 32 through 255 inclusive - * indicate an integer. These values are decoded in four ranges. - * - * 1. A CharString byte containing a value, v, between 32 and 246 inclusive, - * indicate the integer v - 139. Thus, the integer values from -107 through - * 107 inclusive may be encoded in single byte. - * - * 2. A CharString byte containing a value, v, between 247 and 250 inclusive, - * indicates an integer involving the next byte, w, according to the formula: - * [(v - 247) x 256] + w + 108 - * - * 3. A CharString byte containing a value, v, between 251 and 254 inclusive, - * indicates an integer involving the next byte, w, according to the formula: - * -[(v - 251) * 256] - w - 108 - * - * 4. A CharString containing the value 255 indicates that the next 4 bytes - * are a two complement signed integer. The first of these bytes contains the - * highest order bits, the second byte contains the next higher order bits - * and the fourth byte contain the lowest order bits. - * - * - * CharString Command Encoding: - * CharStrings commands are encoded in 1 or 2 bytes. - * - * Single byte commands are encoded in 1 byte that contains a value between - * 0 and 31 inclusive. - * If a command byte contains the value 12, then the value in the next byte - * indicates a command. This "escape" mechanism allows many extra commands - * to be encoded and this encoding technique helps to minimize the length of - * the charStrings. - */ -var Type1CharString = (function Type1CharStringClosure() { - var COMMAND_MAP = { - 'hstem': [1], - 'vstem': [3], - 'vmoveto': [4], - 'rlineto': [5], - 'hlineto': [6], - 'vlineto': [7], - 'rrcurveto': [8], - 'callsubr': [10], - 'flex': [12, 35], - 'drop' : [12, 18], - 'endchar': [14], - 'rmoveto': [21], - 'hmoveto': [22], - 'vhcurveto': [30], - 'hvcurveto': [31] - }; - - function Type1CharString() { - this.width = 0; - this.lsb = 0; - this.flexing = false; - this.output = []; - this.stack = []; - } - - Type1CharString.prototype = { - convert: function Type1CharString_convert(encoded, subrs) { - var count = encoded.length; - var error = false; - var wx, sbx, subrNumber; - for (var i = 0; i < count; i++) { - var value = encoded[i]; - if (value < 32) { - if (value === 12) { - value = (value << 8) + encoded[++i]; - } - switch (value) { - case 1: // hstem - if (!HINTING_ENABLED) { - this.stack = []; - break; - } - error = this.executeCommand(2, COMMAND_MAP.hstem); - break; - case 3: // vstem - if (!HINTING_ENABLED) { - this.stack = []; - break; - } - error = this.executeCommand(2, COMMAND_MAP.vstem); - break; - case 4: // vmoveto - if (this.flexing) { - if (this.stack.length < 1) { - error = true; - break; - } - // Add the dx for flex and but also swap the values so they are - // the right order. - var dy = this.stack.pop(); - this.stack.push(0, dy); - break; - } - error = this.executeCommand(1, COMMAND_MAP.vmoveto); - break; - case 5: // rlineto - error = this.executeCommand(2, COMMAND_MAP.rlineto); - break; - case 6: // hlineto - error = this.executeCommand(1, COMMAND_MAP.hlineto); - break; - case 7: // vlineto - error = this.executeCommand(1, COMMAND_MAP.vlineto); - break; - case 8: // rrcurveto - error = this.executeCommand(6, COMMAND_MAP.rrcurveto); - break; - case 9: // closepath - // closepath is a Type1 command that does not take argument and is - // useless in Type2 and it can simply be ignored. - this.stack = []; - break; - case 10: // callsubr - if (this.stack.length < 1) { - error = true; - break; - } - subrNumber = this.stack.pop(); - error = this.convert(subrs[subrNumber], subrs); - break; - case 11: // return - return error; - case 13: // hsbw - if (this.stack.length < 2) { - error = true; - break; - } - // To convert to type2 we have to move the width value to the - // first part of the charstring and then use hmoveto with lsb. - wx = this.stack.pop(); - sbx = this.stack.pop(); - this.lsb = sbx; - this.width = wx; - this.stack.push(wx, sbx); - error = this.executeCommand(2, COMMAND_MAP.hmoveto); - break; - case 14: // endchar - this.output.push(COMMAND_MAP.endchar[0]); - break; - case 21: // rmoveto - if (this.flexing) { - break; - } - error = this.executeCommand(2, COMMAND_MAP.rmoveto); - break; - case 22: // hmoveto - if (this.flexing) { - // Add the dy for flex. - this.stack.push(0); - break; - } - error = this.executeCommand(1, COMMAND_MAP.hmoveto); - break; - case 30: // vhcurveto - error = this.executeCommand(4, COMMAND_MAP.vhcurveto); - break; - case 31: // hvcurveto - error = this.executeCommand(4, COMMAND_MAP.hvcurveto); - break; - case (12 << 8) + 0: // dotsection - // dotsection is a Type1 command to specify some hinting feature - // for dots that do not take a parameter and it can safely be - // ignored for Type2. - this.stack = []; - break; - case (12 << 8) + 1: // vstem3 - if (!HINTING_ENABLED) { - this.stack = []; - break; - } - // [vh]stem3 are Type1 only and Type2 supports [vh]stem with - // multiple parameters, so instead of returning [vh]stem3 take a - // shortcut and return [vhstem] instead. - error = this.executeCommand(2, COMMAND_MAP.vstem); - break; - case (12 << 8) + 2: // hstem3 - if (!HINTING_ENABLED) { - this.stack = []; - break; - } - // See vstem3. - error = this.executeCommand(2, COMMAND_MAP.hstem); - break; - case (12 << 8) + 6: // seac - // seac is like type 2's special endchar but it doesn't use the - // first argument asb, so remove it. - if (SEAC_ANALYSIS_ENABLED) { - this.seac = this.stack.splice(-4, 4); - error = this.executeCommand(0, COMMAND_MAP.endchar); - } else { - error = this.executeCommand(4, COMMAND_MAP.endchar); - } - break; - case (12 << 8) + 7: // sbw - if (this.stack.length < 4) { - error = true; - break; - } - // To convert to type2 we have to move the width value to the - // first part of the charstring and then use rmoveto with - // (dx, dy). The height argument will not be used for vmtx and - // vhea tables reconstruction -- ignoring it. - var wy = this.stack.pop(); - wx = this.stack.pop(); - var sby = this.stack.pop(); - sbx = this.stack.pop(); - this.lsb = sbx; - this.width = wx; - this.stack.push(wx, sbx, sby); - error = this.executeCommand(3, COMMAND_MAP.rmoveto); - break; - case (12 << 8) + 12: // div - if (this.stack.length < 2) { - error = true; - break; - } - var num2 = this.stack.pop(); - var num1 = this.stack.pop(); - this.stack.push(num1 / num2); - break; - case (12 << 8) + 16: // callothersubr - if (this.stack.length < 2) { - error = true; - break; - } - subrNumber = this.stack.pop(); - var numArgs = this.stack.pop(); - if (subrNumber === 0 && numArgs === 3) { - var flexArgs = this.stack.splice(this.stack.length - 17, 17); - this.stack.push( - flexArgs[2] + flexArgs[0], // bcp1x + rpx - flexArgs[3] + flexArgs[1], // bcp1y + rpy - flexArgs[4], // bcp2x - flexArgs[5], // bcp2y - flexArgs[6], // p2x - flexArgs[7], // p2y - flexArgs[8], // bcp3x - flexArgs[9], // bcp3y - flexArgs[10], // bcp4x - flexArgs[11], // bcp4y - flexArgs[12], // p3x - flexArgs[13], // p3y - flexArgs[14] // flexDepth - // 15 = finalx unused by flex - // 16 = finaly unused by flex - ); - error = this.executeCommand(13, COMMAND_MAP.flex, true); - this.flexing = false; - this.stack.push(flexArgs[15], flexArgs[16]); - } else if (subrNumber === 1 && numArgs === 0) { - this.flexing = true; - } - break; - case (12 << 8) + 17: // pop - // Ignore this since it is only used with othersubr. - break; - case (12 << 8) + 33: // setcurrentpoint - // Ignore for now. - this.stack = []; - break; - default: - warn('Unknown type 1 charstring command of "' + value + '"'); - break; - } - if (error) { - break; - } - continue; - } else if (value <= 246) { - value = value - 139; - } else if (value <= 250) { - value = ((value - 247) * 256) + encoded[++i] + 108; - } else if (value <= 254) { - value = -((value - 251) * 256) - encoded[++i] - 108; - } else { - value = (encoded[++i] & 0xff) << 24 | (encoded[++i] & 0xff) << 16 | - (encoded[++i] & 0xff) << 8 | (encoded[++i] & 0xff) << 0; - } - this.stack.push(value); - } - return error; - }, - - executeCommand: function(howManyArgs, command, keepStack) { - var stackLength = this.stack.length; - if (howManyArgs > stackLength) { - return true; - } - var start = stackLength - howManyArgs; - for (var i = start; i < stackLength; i++) { - var value = this.stack[i]; - if (value === (value | 0)) { // int - this.output.push(28, (value >> 8) & 0xff, value & 0xff); - } else { // fixed point - value = (65536 * value) | 0; - this.output.push(255, - (value >> 24) & 0xFF, - (value >> 16) & 0xFF, - (value >> 8) & 0xFF, - value & 0xFF); - } - } - this.output.push.apply(this.output, command); - if (keepStack) { - this.stack.splice(start, howManyArgs); - } else { - this.stack.length = 0; - } - return false; - } - }; - - return Type1CharString; -})(); - -/* - * Type1Parser encapsulate the needed code for parsing a Type1 font - * program. Some of its logic depends on the Type2 charstrings - * structure. - * Note: this doesn't really parse the font since that would require evaluation - * of PostScript, but it is possible in most cases to extract what we need - * without a full parse. - */ -var Type1Parser = (function Type1ParserClosure() { - /* - * Decrypt a Sequence of Ciphertext Bytes to Produce the Original Sequence - * of Plaintext Bytes. The function took a key as a parameter which can be - * for decrypting the eexec block of for decoding charStrings. - */ - var EEXEC_ENCRYPT_KEY = 55665; - var CHAR_STRS_ENCRYPT_KEY = 4330; - - function isHexDigit(code) { - return code >= 48 && code <= 57 || // '0'-'9' - code >= 65 && code <= 70 || // 'A'-'F' - code >= 97 && code <= 102; // 'a'-'f' - } - - function decrypt(data, key, discardNumber) { - var r = key | 0, c1 = 52845, c2 = 22719; - var count = data.length; - var decrypted = new Uint8Array(count); - for (var i = 0; i < count; i++) { - var value = data[i]; - decrypted[i] = value ^ (r >> 8); - r = ((value + r) * c1 + c2) & ((1 << 16) - 1); - } - return Array.prototype.slice.call(decrypted, discardNumber); - } - - function decryptAscii(data, key, discardNumber) { - var r = key | 0, c1 = 52845, c2 = 22719; - var count = data.length, maybeLength = count >>> 1; - var decrypted = new Uint8Array(maybeLength); - var i, j; - for (i = 0, j = 0; i < count; i++) { - var digit1 = data[i]; - if (!isHexDigit(digit1)) { - continue; - } - i++; - var digit2; - while (i < count && !isHexDigit(digit2 = data[i])) { - i++; - } - if (i < count) { - var value = parseInt(String.fromCharCode(digit1, digit2), 16); - decrypted[j++] = value ^ (r >> 8); - r = ((value + r) * c1 + c2) & ((1 << 16) - 1); - } - } - return Array.prototype.slice.call(decrypted, discardNumber, j); - } - - function isSpecial(c) { - return c === 0x2F || // '/' - c === 0x5B || c === 0x5D || // '[', ']' - c === 0x7B || c === 0x7D || // '{', '}' - c === 0x28 || c === 0x29; // '(', ')' - } - - function Type1Parser(stream, encrypted) { - if (encrypted) { - var data = stream.getBytes(); - var isBinary = !(isHexDigit(data[0]) && isHexDigit(data[1]) && - isHexDigit(data[2]) && isHexDigit(data[3])); - stream = new Stream(isBinary ? decrypt(data, EEXEC_ENCRYPT_KEY, 4) : - decryptAscii(data, EEXEC_ENCRYPT_KEY, 4)); - } - this.stream = stream; - this.nextChar(); - } - - Type1Parser.prototype = { - readNumberArray: function Type1Parser_readNumberArray() { - this.getToken(); // read '[' or '{' (arrays can start with either) - var array = []; - while (true) { - var token = this.getToken(); - if (token === null || token === ']' || token === '}') { - break; - } - array.push(parseFloat(token || 0)); - } - return array; - }, - - readNumber: function Type1Parser_readNumber() { - var token = this.getToken(); - return parseFloat(token || 0); - }, - - readInt: function Type1Parser_readInt() { - // Use '| 0' to prevent setting a double into length such as the double - // does not flow into the loop variable. - var token = this.getToken(); - return parseInt(token || 0, 10) | 0; - }, - - readBoolean: function Type1Parser_readBoolean() { - var token = this.getToken(); - - // Use 1 and 0 since that's what type2 charstrings use. - return token === 'true' ? 1 : 0; - }, - - nextChar : function Type1_nextChar() { - return (this.currentChar = this.stream.getByte()); - }, - - getToken: function Type1Parser_getToken() { - // Eat whitespace and comments. - var comment = false; - var ch = this.currentChar; - while (true) { - if (ch === -1) { - return null; - } - - if (comment) { - if (ch === 0x0A || ch === 0x0D) { - comment = false; - } - } else if (ch === 0x25) { // '%' - comment = true; - } else if (!Lexer.isSpace(ch)) { - break; - } - ch = this.nextChar(); - } - if (isSpecial(ch)) { - this.nextChar(); - return String.fromCharCode(ch); - } - var token = ''; - do { - token += String.fromCharCode(ch); - ch = this.nextChar(); - } while (ch >= 0 && !Lexer.isSpace(ch) && !isSpecial(ch)); - return token; - }, - - /* - * Returns an object containing a Subrs array and a CharStrings - * array extracted from and eexec encrypted block of data - */ - extractFontProgram: function Type1Parser_extractFontProgram() { - var stream = this.stream; - - var subrs = [], charstrings = []; - var program = { - subrs: [], - charstrings: [], - properties: { - 'privateData': { - 'lenIV': 4 - } - } - }; - var token, length, data, lenIV, encoded; - while ((token = this.getToken()) !== null) { - if (token !== '/') { - continue; - } - token = this.getToken(); - switch (token) { - case 'CharStrings': - // The number immediately following CharStrings must be greater or - // equal to the number of CharStrings. - this.getToken(); - this.getToken(); // read in 'dict' - this.getToken(); // read in 'dup' - this.getToken(); // read in 'begin' - while(true) { - token = this.getToken(); - if (token === null || token === 'end') { - break; - } - - if (token !== '/') { - continue; - } - var glyph = this.getToken(); - length = this.readInt(); - this.getToken(); // read in 'RD' or '-|' - data = stream.makeSubStream(stream.pos, length); - lenIV = program.properties.privateData['lenIV']; - encoded = decrypt(data.getBytes(), CHAR_STRS_ENCRYPT_KEY, lenIV); - // Skip past the required space and binary data. - stream.skip(length); - this.nextChar(); - token = this.getToken(); // read in 'ND' or '|-' - if (token === 'noaccess') { - this.getToken(); // read in 'def' - } - charstrings.push({ - glyph: glyph, - encoded: encoded - }); - } - break; - case 'Subrs': - var num = this.readInt(); - this.getToken(); // read in 'array' - while ((token = this.getToken()) === 'dup') { - var index = this.readInt(); - length = this.readInt(); - this.getToken(); // read in 'RD' or '-|' - data = stream.makeSubStream(stream.pos, length); - lenIV = program.properties.privateData['lenIV']; - encoded = decrypt(data.getBytes(), CHAR_STRS_ENCRYPT_KEY, lenIV); - // Skip past the required space and binary data. - stream.skip(length); - this.nextChar(); - token = this.getToken(); // read in 'NP' or '|' - if (token === 'noaccess') { - this.getToken(); // read in 'put' - } - subrs[index] = encoded; - } - break; - case 'BlueValues': - case 'OtherBlues': - case 'FamilyBlues': - case 'FamilyOtherBlues': - var blueArray = this.readNumberArray(); - // *Blue* values may contain invalid data: disables reading of - // those values when hinting is disabled. - if (blueArray.length > 0 && (blueArray.length % 2) === 0 && - HINTING_ENABLED) { - program.properties.privateData[token] = blueArray; - } - break; - case 'StemSnapH': - case 'StemSnapV': - program.properties.privateData[token] = this.readNumberArray(); - break; - case 'StdHW': - case 'StdVW': - program.properties.privateData[token] = - this.readNumberArray()[0]; - break; - case 'BlueShift': - case 'lenIV': - case 'BlueFuzz': - case 'BlueScale': - case 'LanguageGroup': - case 'ExpansionFactor': - program.properties.privateData[token] = this.readNumber(); - break; - case 'ForceBold': - program.properties.privateData[token] = this.readBoolean(); - break; - } - } - - for (var i = 0; i < charstrings.length; i++) { - glyph = charstrings[i].glyph; - encoded = charstrings[i].encoded; - var charString = new Type1CharString(); - var error = charString.convert(encoded, subrs); - var output = charString.output; - if (error) { - // It seems when FreeType encounters an error while evaluating a glyph - // that it completely ignores the glyph so we'll mimic that behaviour - // here and put an endchar to make the validator happy. - output = [14]; - } - program.charstrings.push({ - glyphName: glyph, - charstring: output, - width: charString.width, - lsb: charString.lsb, - seac: charString.seac - }); - } - - return program; - }, - - extractFontHeader: function Type1Parser_extractFontHeader(properties) { - var token; - while ((token = this.getToken()) !== null) { - if (token !== '/') { - continue; - } - token = this.getToken(); - switch (token) { - case 'FontMatrix': - var matrix = this.readNumberArray(); - properties.fontMatrix = matrix; - break; - case 'Encoding': - var encodingArg = this.getToken(); - var encoding; - if (!/^\d+$/.test(encodingArg)) { - // encoding name is specified - encoding = Encodings[encodingArg]; - } else { - encoding = []; - var size = parseInt(encodingArg, 10) | 0; - this.getToken(); // read in 'array' - - for (var j = 0; j < size; j++) { - token = this.getToken(); - // skipping till first dup or def (e.g. ignoring for statement) - while (token !== 'dup' && token !== 'def') { - token = this.getToken(); - if (token === null) { - return; // invalid header - } - } - if (token === 'def') { - break; // read all array data - } - var index = this.readInt(); - this.getToken(); // read in '/' - var glyph = this.getToken(); - encoding[index] = glyph; - this.getToken(); // read the in 'put' - } - } - properties.builtInEncoding = encoding; - break; - case 'FontBBox': - var fontBBox = this.readNumberArray(); - // adjusting ascent/descent - properties.ascent = fontBBox[3]; - properties.descent = fontBBox[1]; - properties.ascentScaled = true; - break; - } - } - } - }; - - return Type1Parser; -})(); - -/** - * The CFF class takes a Type1 file and wrap it into a - * 'Compact Font Format' which itself embed Type2 charstrings. - */ -var CFFStandardStrings = [ - '.notdef', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', - 'ampersand', 'quoteright', 'parenleft', 'parenright', 'asterisk', 'plus', - 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', - 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', - 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', - 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', - 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', - 'underscore', 'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', - 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', - 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', 'exclamdown', 'cent', - 'sterling', 'fraction', 'yen', 'florin', 'section', 'currency', - 'quotesingle', 'quotedblleft', 'guillemotleft', 'guilsinglleft', - 'guilsinglright', 'fi', 'fl', 'endash', 'dagger', 'daggerdbl', - 'periodcentered', 'paragraph', 'bullet', 'quotesinglbase', 'quotedblbase', - 'quotedblright', 'guillemotright', 'ellipsis', 'perthousand', 'questiondown', - 'grave', 'acute', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent', - 'dieresis', 'ring', 'cedilla', 'hungarumlaut', 'ogonek', 'caron', 'emdash', - 'AE', 'ordfeminine', 'Lslash', 'Oslash', 'OE', 'ordmasculine', 'ae', - 'dotlessi', 'lslash', 'oslash', 'oe', 'germandbls', 'onesuperior', - 'logicalnot', 'mu', 'trademark', 'Eth', 'onehalf', 'plusminus', 'Thorn', - 'onequarter', 'divide', 'brokenbar', 'degree', 'thorn', 'threequarters', - 'twosuperior', 'registered', 'minus', 'eth', 'multiply', 'threesuperior', - 'copyright', 'Aacute', 'Acircumflex', 'Adieresis', 'Agrave', 'Aring', - 'Atilde', 'Ccedilla', 'Eacute', 'Ecircumflex', 'Edieresis', 'Egrave', - 'Iacute', 'Icircumflex', 'Idieresis', 'Igrave', 'Ntilde', 'Oacute', - 'Ocircumflex', 'Odieresis', 'Ograve', 'Otilde', 'Scaron', 'Uacute', - 'Ucircumflex', 'Udieresis', 'Ugrave', 'Yacute', 'Ydieresis', 'Zcaron', - 'aacute', 'acircumflex', 'adieresis', 'agrave', 'aring', 'atilde', - 'ccedilla', 'eacute', 'ecircumflex', 'edieresis', 'egrave', 'iacute', - 'icircumflex', 'idieresis', 'igrave', 'ntilde', 'oacute', 'ocircumflex', - 'odieresis', 'ograve', 'otilde', 'scaron', 'uacute', 'ucircumflex', - 'udieresis', 'ugrave', 'yacute', 'ydieresis', 'zcaron', 'exclamsmall', - 'Hungarumlautsmall', 'dollaroldstyle', 'dollarsuperior', 'ampersandsmall', - 'Acutesmall', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', - 'onedotenleader', 'zerooldstyle', 'oneoldstyle', 'twooldstyle', - 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', - 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'commasuperior', - 'threequartersemdash', 'periodsuperior', 'questionsmall', 'asuperior', - 'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', 'isuperior', - 'lsuperior', 'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior', - 'tsuperior', 'ff', 'ffi', 'ffl', 'parenleftinferior', 'parenrightinferior', - 'Circumflexsmall', 'hyphensuperior', 'Gravesmall', 'Asmall', 'Bsmall', - 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall', - 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall', 'Osmall', 'Psmall', - 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall', - 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah', - 'Tildesmall', 'exclamdownsmall', 'centoldstyle', 'Lslashsmall', - 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall', 'Brevesmall', 'Caronsmall', - 'Dotaccentsmall', 'Macronsmall', 'figuredash', 'hypheninferior', - 'Ogoneksmall', 'Ringsmall', 'Cedillasmall', 'questiondownsmall', 'oneeighth', - 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds', - 'zerosuperior', 'foursuperior', 'fivesuperior', 'sixsuperior', - 'sevensuperior', 'eightsuperior', 'ninesuperior', 'zeroinferior', - 'oneinferior', 'twoinferior', 'threeinferior', 'fourinferior', - 'fiveinferior', 'sixinferior', 'seveninferior', 'eightinferior', - 'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior', - 'commainferior', 'Agravesmall', 'Aacutesmall', 'Acircumflexsmall', - 'Atildesmall', 'Adieresissmall', 'Aringsmall', 'AEsmall', 'Ccedillasmall', - 'Egravesmall', 'Eacutesmall', 'Ecircumflexsmall', 'Edieresissmall', - 'Igravesmall', 'Iacutesmall', 'Icircumflexsmall', 'Idieresissmall', - 'Ethsmall', 'Ntildesmall', 'Ogravesmall', 'Oacutesmall', 'Ocircumflexsmall', - 'Otildesmall', 'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall', - 'Uacutesmall', 'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall', - 'Thornsmall', 'Ydieresissmall', '001.000', '001.001', '001.002', '001.003', - 'Black', 'Bold', 'Book', 'Light', 'Medium', 'Regular', 'Roman', 'Semibold' -]; - -// Type1Font is also a CIDFontType0. -var Type1Font = function Type1Font(name, file, properties) { - // Some bad generators embed pfb file as is, we have to strip 6-byte headers. - // Also, length1 and length2 might be off by 6 bytes as well. - // http://www.math.ubc.ca/~cass/piscript/type1.pdf - var PFB_HEADER_SIZE = 6; - var headerBlockLength = properties.length1; - var eexecBlockLength = properties.length2; - var pfbHeader = file.peekBytes(PFB_HEADER_SIZE); - var pfbHeaderPresent = pfbHeader[0] === 0x80 && pfbHeader[1] === 0x01; - if (pfbHeaderPresent) { - file.skip(PFB_HEADER_SIZE); - headerBlockLength = (pfbHeader[5] << 24) | (pfbHeader[4] << 16) | - (pfbHeader[3] << 8) | pfbHeader[2]; - } - - // Get the data block containing glyphs and subrs informations - var headerBlock = new Stream(file.getBytes(headerBlockLength)); - var headerBlockParser = new Type1Parser(headerBlock); - headerBlockParser.extractFontHeader(properties); - - if (pfbHeaderPresent) { - pfbHeader = file.getBytes(PFB_HEADER_SIZE); - eexecBlockLength = (pfbHeader[5] << 24) | (pfbHeader[4] << 16) | - (pfbHeader[3] << 8) | pfbHeader[2]; - } - - // Decrypt the data blocks and retrieve it's content - var eexecBlock = new Stream(file.getBytes(eexecBlockLength)); - var eexecBlockParser = new Type1Parser(eexecBlock, true); - var data = eexecBlockParser.extractFontProgram(); - for (var info in data.properties) { - properties[info] = data.properties[info]; - } - - var charstrings = data.charstrings; - var type2Charstrings = this.getType2Charstrings(charstrings); - var subrs = this.getType2Subrs(data.subrs); - - this.charstrings = charstrings; - this.data = this.wrap(name, type2Charstrings, this.charstrings, - subrs, properties); - this.seacs = this.getSeacs(data.charstrings); -}; - -Type1Font.prototype = { - get numGlyphs() { - return this.charstrings.length + 1; - }, - - getCharset: function Type1Font_getCharset() { - var charset = ['.notdef']; - var charstrings = this.charstrings; - for (var glyphId = 0; glyphId < charstrings.length; glyphId++) { - charset.push(charstrings[glyphId].glyphName); - } - return charset; - }, - - getGlyphMapping: function Type1Font_getGlyphMapping(properties) { - var charstrings = this.charstrings; - var glyphNames = ['.notdef'], glyphId; - for (glyphId = 0; glyphId < charstrings.length; glyphId++) { - glyphNames.push(charstrings[glyphId].glyphName); - } - var encoding = properties.builtInEncoding; - if (encoding) { - var builtInEncoding = {}; - for (var charCode in encoding) { - glyphId = glyphNames.indexOf(encoding[charCode]); - if (glyphId >= 0) { - builtInEncoding[charCode] = glyphId; - } - } - } - - return type1FontGlyphMapping(properties, builtInEncoding, glyphNames); - }, - - getSeacs: function Type1Font_getSeacs(charstrings) { - var i, ii; - var seacMap = []; - for (i = 0, ii = charstrings.length; i < ii; i++) { - var charstring = charstrings[i]; - if (charstring.seac) { - // Offset by 1 for .notdef - seacMap[i + 1] = charstring.seac; - } - } - return seacMap; - }, - - getType2Charstrings: function Type1Font_getType2Charstrings( - type1Charstrings) { - var type2Charstrings = []; - for (var i = 0, ii = type1Charstrings.length; i < ii; i++) { - type2Charstrings.push(type1Charstrings[i].charstring); - } - return type2Charstrings; - }, - - getType2Subrs: function Type1Font_getType2Subrs(type1Subrs) { - var bias = 0; - var count = type1Subrs.length; - if (count < 1133) { - bias = 107; - } else if (count < 33769) { - bias = 1131; - } else { - bias = 32768; - } - - // Add a bunch of empty subrs to deal with the Type2 bias - var type2Subrs = []; - var i; - for (i = 0; i < bias; i++) { - type2Subrs.push([0x0B]); - } - - for (i = 0; i < count; i++) { - type2Subrs.push(type1Subrs[i]); - } - - return type2Subrs; - }, - - wrap: function Type1Font_wrap(name, glyphs, charstrings, subrs, properties) { - var cff = new CFF(); - cff.header = new CFFHeader(1, 0, 4, 4); - - cff.names = [name]; - - var topDict = new CFFTopDict(); - // CFF strings IDs 0...390 are predefined names, so refering - // to entries in our own String INDEX starts at SID 391. - topDict.setByName('version', 391); - topDict.setByName('Notice', 392); - topDict.setByName('FullName', 393); - topDict.setByName('FamilyName', 394); - topDict.setByName('Weight', 395); - topDict.setByName('Encoding', null); // placeholder - topDict.setByName('FontMatrix', properties.fontMatrix); - topDict.setByName('FontBBox', properties.bbox); - topDict.setByName('charset', null); // placeholder - topDict.setByName('CharStrings', null); // placeholder - topDict.setByName('Private', null); // placeholder - cff.topDict = topDict; - - var strings = new CFFStrings(); - strings.add('Version 0.11'); // Version - strings.add('See original notice'); // Notice - strings.add(name); // FullName - strings.add(name); // FamilyName - strings.add('Medium'); // Weight - cff.strings = strings; - - cff.globalSubrIndex = new CFFIndex(); - - var count = glyphs.length; - var charsetArray = [0]; - var i, ii; - for (i = 0; i < count; i++) { - var index = CFFStandardStrings.indexOf(charstrings[i].glyphName); - // TODO: Insert the string and correctly map it. Previously it was - // thought mapping names that aren't in the standard strings to .notdef - // was fine, however in issue818 when mapping them all to .notdef the - // adieresis glyph no longer worked. - if (index === -1) { - index = 0; - } - charsetArray.push((index >> 8) & 0xff, index & 0xff); - } - cff.charset = new CFFCharset(false, 0, [], charsetArray); - - var charStringsIndex = new CFFIndex(); - charStringsIndex.add([0x8B, 0x0E]); // .notdef - for (i = 0; i < count; i++) { - charStringsIndex.add(glyphs[i]); - } - cff.charStrings = charStringsIndex; - - var privateDict = new CFFPrivateDict(); - privateDict.setByName('Subrs', null); // placeholder - var fields = [ - 'BlueValues', - 'OtherBlues', - 'FamilyBlues', - 'FamilyOtherBlues', - 'StemSnapH', - 'StemSnapV', - 'BlueShift', - 'BlueFuzz', - 'BlueScale', - 'LanguageGroup', - 'ExpansionFactor', - 'ForceBold', - 'StdHW', - 'StdVW' - ]; - for (i = 0, ii = fields.length; i < ii; i++) { - var field = fields[i]; - if (!properties.privateData.hasOwnProperty(field)) { - continue; - } - var value = properties.privateData[field]; - if (isArray(value)) { - // All of the private dictionary array data in CFF must be stored as - // "delta-encoded" numbers. - for (var j = value.length - 1; j > 0; j--) { - value[j] -= value[j - 1]; // ... difference from previous value - } - } - privateDict.setByName(field, value); - } - cff.topDict.privateDict = privateDict; - - var subrIndex = new CFFIndex(); - for (i = 0, ii = subrs.length; i < ii; i++) { - subrIndex.add(subrs[i]); - } - privateDict.subrsIndex = subrIndex; - - var compiler = new CFFCompiler(cff); - return compiler.compile(); - } -}; - -var CFFFont = (function CFFFontClosure() { - function CFFFont(file, properties) { - this.properties = properties; - - var parser = new CFFParser(file, properties); - this.cff = parser.parse(); - var compiler = new CFFCompiler(this.cff); - this.seacs = this.cff.seacs; - try { - this.data = compiler.compile(); - } catch (e) { - warn('Failed to compile font ' + properties.loadedName); - // There may have just been an issue with the compiler, set the data - // anyway and hope the font loaded. - this.data = file; - } - } - - CFFFont.prototype = { - get numGlyphs() { - return this.cff.charStrings.count; - }, - getCharset: function CFFFont_getCharset() { - return this.cff.charset.charset; - }, - getGlyphMapping: function CFFFont_getGlyphMapping() { - var cff = this.cff; - var properties = this.properties; - var charsets = cff.charset.charset; - var charCodeToGlyphId; - var glyphId; - - if (properties.composite) { - charCodeToGlyphId = Object.create(null); - if (cff.isCIDFont) { - // If the font is actually a CID font then we should use the charset - // to map CIDs to GIDs. - for (glyphId = 0; glyphId < charsets.length; glyphId++) { - var cid = charsets[glyphId]; - var charCode = properties.cMap.charCodeOf(cid); - charCodeToGlyphId[charCode] = glyphId; - } - } else { - // If it is NOT actually a CID font then CIDs should be mapped - // directly to GIDs. - for (glyphId = 0; glyphId < cff.charStrings.count; glyphId++) { - charCodeToGlyphId[glyphId] = glyphId; - } - } - return charCodeToGlyphId; - } - - var encoding = cff.encoding ? cff.encoding.encoding : null; - charCodeToGlyphId = type1FontGlyphMapping(properties, encoding, charsets); - return charCodeToGlyphId; - } - }; - - return CFFFont; -})(); - -var CFFParser = (function CFFParserClosure() { - var CharstringValidationData = [ - null, - { id: 'hstem', min: 2, stackClearing: true, stem: true }, - null, - { id: 'vstem', min: 2, stackClearing: true, stem: true }, - { id: 'vmoveto', min: 1, stackClearing: true }, - { id: 'rlineto', min: 2, resetStack: true }, - { id: 'hlineto', min: 1, resetStack: true }, - { id: 'vlineto', min: 1, resetStack: true }, - { id: 'rrcurveto', min: 6, resetStack: true }, - null, - { id: 'callsubr', min: 1, undefStack: true }, - { id: 'return', min: 0, undefStack: true }, - null, // 12 - null, - { id: 'endchar', min: 0, stackClearing: true }, - null, - null, - null, - { id: 'hstemhm', min: 2, stackClearing: true, stem: true }, - { id: 'hintmask', min: 0, stackClearing: true }, - { id: 'cntrmask', min: 0, stackClearing: true }, - { id: 'rmoveto', min: 2, stackClearing: true }, - { id: 'hmoveto', min: 1, stackClearing: true }, - { id: 'vstemhm', min: 2, stackClearing: true, stem: true }, - { id: 'rcurveline', min: 8, resetStack: true }, - { id: 'rlinecurve', min: 8, resetStack: true }, - { id: 'vvcurveto', min: 4, resetStack: true }, - { id: 'hhcurveto', min: 4, resetStack: true }, - null, // shortint - { id: 'callgsubr', min: 1, undefStack: true }, - { id: 'vhcurveto', min: 4, resetStack: true }, - { id: 'hvcurveto', min: 4, resetStack: true } - ]; - var CharstringValidationData12 = [ - null, - null, - null, - { id: 'and', min: 2, stackDelta: -1 }, - { id: 'or', min: 2, stackDelta: -1 }, - { id: 'not', min: 1, stackDelta: 0 }, - null, - null, - null, - { id: 'abs', min: 1, stackDelta: 0 }, - { id: 'add', min: 2, stackDelta: -1, - stackFn: function stack_div(stack, index) { - stack[index - 2] = stack[index - 2] + stack[index - 1]; - } - }, - { id: 'sub', min: 2, stackDelta: -1, - stackFn: function stack_div(stack, index) { - stack[index - 2] = stack[index - 2] - stack[index - 1]; - } - }, - { id: 'div', min: 2, stackDelta: -1, - stackFn: function stack_div(stack, index) { - stack[index - 2] = stack[index - 2] / stack[index - 1]; - } - }, - null, - { id: 'neg', min: 1, stackDelta: 0, - stackFn: function stack_div(stack, index) { - stack[index - 1] = -stack[index - 1]; - } - }, - { id: 'eq', min: 2, stackDelta: -1 }, - null, - null, - { id: 'drop', min: 1, stackDelta: -1 }, - null, - { id: 'put', min: 2, stackDelta: -2 }, - { id: 'get', min: 1, stackDelta: 0 }, - { id: 'ifelse', min: 4, stackDelta: -3 }, - { id: 'random', min: 0, stackDelta: 1 }, - { id: 'mul', min: 2, stackDelta: -1, - stackFn: function stack_div(stack, index) { - stack[index - 2] = stack[index - 2] * stack[index - 1]; - } - }, - null, - { id: 'sqrt', min: 1, stackDelta: 0 }, - { id: 'dup', min: 1, stackDelta: 1 }, - { id: 'exch', min: 2, stackDelta: 0 }, - { id: 'index', min: 2, stackDelta: 0 }, - { id: 'roll', min: 3, stackDelta: -2 }, - null, - null, - null, - { id: 'hflex', min: 7, resetStack: true }, - { id: 'flex', min: 13, resetStack: true }, - { id: 'hflex1', min: 9, resetStack: true }, - { id: 'flex1', min: 11, resetStack: true } - ]; - - function CFFParser(file, properties) { - this.bytes = file.getBytes(); - this.properties = properties; - } - CFFParser.prototype = { - parse: function CFFParser_parse() { - var properties = this.properties; - var cff = new CFF(); - this.cff = cff; - - // The first five sections must be in order, all the others are reached - // via offsets contained in one of the below. - var header = this.parseHeader(); - var nameIndex = this.parseIndex(header.endPos); - var topDictIndex = this.parseIndex(nameIndex.endPos); - var stringIndex = this.parseIndex(topDictIndex.endPos); - var globalSubrIndex = this.parseIndex(stringIndex.endPos); - - var topDictParsed = this.parseDict(topDictIndex.obj.get(0)); - var topDict = this.createDict(CFFTopDict, topDictParsed, cff.strings); - - cff.header = header.obj; - cff.names = this.parseNameIndex(nameIndex.obj); - cff.strings = this.parseStringIndex(stringIndex.obj); - cff.topDict = topDict; - cff.globalSubrIndex = globalSubrIndex.obj; - - this.parsePrivateDict(cff.topDict); - - cff.isCIDFont = topDict.hasName('ROS'); - - var charStringOffset = topDict.getByName('CharStrings'); - var charStringIndex = this.parseIndex(charStringOffset).obj; - - var fontMatrix = topDict.getByName('FontMatrix'); - if (fontMatrix) { - properties.fontMatrix = fontMatrix; - } - - var fontBBox = topDict.getByName('FontBBox'); - if (fontBBox) { - // adjusting ascent/descent - properties.ascent = fontBBox[3]; - properties.descent = fontBBox[1]; - properties.ascentScaled = true; - } - - var charset, encoding; - if (cff.isCIDFont) { - var fdArrayIndex = this.parseIndex(topDict.getByName('FDArray')).obj; - for (var i = 0, ii = fdArrayIndex.count; i < ii; ++i) { - var dictRaw = fdArrayIndex.get(i); - var fontDict = this.createDict(CFFTopDict, this.parseDict(dictRaw), - cff.strings); - this.parsePrivateDict(fontDict); - cff.fdArray.push(fontDict); - } - // cid fonts don't have an encoding - encoding = null; - charset = this.parseCharsets(topDict.getByName('charset'), - charStringIndex.count, cff.strings, true); - cff.fdSelect = this.parseFDSelect(topDict.getByName('FDSelect'), - charStringIndex.count); - } else { - charset = this.parseCharsets(topDict.getByName('charset'), - charStringIndex.count, cff.strings, false); - encoding = this.parseEncoding(topDict.getByName('Encoding'), - properties, - cff.strings, charset.charset); - } - - cff.charset = charset; - cff.encoding = encoding; - - var charStringsAndSeacs = this.parseCharStrings( - charStringIndex, - topDict.privateDict.subrsIndex, - globalSubrIndex.obj, - cff.fdSelect, - cff.fdArray); - cff.charStrings = charStringsAndSeacs.charStrings; - cff.seacs = charStringsAndSeacs.seacs; - cff.widths = charStringsAndSeacs.widths; - - return cff; - }, - parseHeader: function CFFParser_parseHeader() { - var bytes = this.bytes; - var bytesLength = bytes.length; - var offset = 0; - - // Prevent an infinite loop, by checking that the offset is within the - // bounds of the bytes array. Necessary in empty, or invalid, font files. - while (offset < bytesLength && bytes[offset] !== 1) { - ++offset; - } - if (offset >= bytesLength) { - error('Invalid CFF header'); - } else if (offset !== 0) { - info('cff data is shifted'); - bytes = bytes.subarray(offset); - this.bytes = bytes; - } - var major = bytes[0]; - var minor = bytes[1]; - var hdrSize = bytes[2]; - var offSize = bytes[3]; - var header = new CFFHeader(major, minor, hdrSize, offSize); - return { obj: header, endPos: hdrSize }; - }, - parseDict: function CFFParser_parseDict(dict) { - var pos = 0; - - function parseOperand() { - var value = dict[pos++]; - if (value === 30) { - return parseFloatOperand(pos); - } else if (value === 28) { - value = dict[pos++]; - value = ((value << 24) | (dict[pos++] << 16)) >> 16; - return value; - } else if (value === 29) { - value = dict[pos++]; - value = (value << 8) | dict[pos++]; - value = (value << 8) | dict[pos++]; - value = (value << 8) | dict[pos++]; - return value; - } else if (value >= 32 && value <= 246) { - return value - 139; - } else if (value >= 247 && value <= 250) { - return ((value - 247) * 256) + dict[pos++] + 108; - } else if (value >= 251 && value <= 254) { - return -((value - 251) * 256) - dict[pos++] - 108; - } else { - error('255 is not a valid DICT command'); - } - return -1; - } - - function parseFloatOperand() { - var str = ''; - var eof = 15; - var lookup = ['0', '1', '2', '3', '4', '5', '6', '7', '8', - '9', '.', 'E', 'E-', null, '-']; - var length = dict.length; - while (pos < length) { - var b = dict[pos++]; - var b1 = b >> 4; - var b2 = b & 15; - - if (b1 === eof) { - break; - } - str += lookup[b1]; - - if (b2 === eof) { - break; - } - str += lookup[b2]; - } - return parseFloat(str); - } - - var operands = []; - var entries = []; - - pos = 0; - var end = dict.length; - while (pos < end) { - var b = dict[pos]; - if (b <= 21) { - if (b === 12) { - b = (b << 8) | dict[++pos]; - } - entries.push([b, operands]); - operands = []; - ++pos; - } else { - operands.push(parseOperand()); - } - } - return entries; - }, - parseIndex: function CFFParser_parseIndex(pos) { - var cffIndex = new CFFIndex(); - var bytes = this.bytes; - var count = (bytes[pos++] << 8) | bytes[pos++]; - var offsets = []; - var end = pos; - var i, ii; - - if (count !== 0) { - var offsetSize = bytes[pos++]; - // add 1 for offset to determine size of last object - var startPos = pos + ((count + 1) * offsetSize) - 1; - - for (i = 0, ii = count + 1; i < ii; ++i) { - var offset = 0; - for (var j = 0; j < offsetSize; ++j) { - offset <<= 8; - offset += bytes[pos++]; - } - offsets.push(startPos + offset); - } - end = offsets[count]; - } - for (i = 0, ii = offsets.length - 1; i < ii; ++i) { - var offsetStart = offsets[i]; - var offsetEnd = offsets[i + 1]; - cffIndex.add(bytes.subarray(offsetStart, offsetEnd)); - } - return {obj: cffIndex, endPos: end}; - }, - parseNameIndex: function CFFParser_parseNameIndex(index) { - var names = []; - for (var i = 0, ii = index.count; i < ii; ++i) { - var name = index.get(i); - // OTS doesn't allow names to be over 127 characters. - var length = Math.min(name.length, 127); - var data = []; - // OTS also only permits certain characters in the name. - for (var j = 0; j < length; ++j) { - var c = name[j]; - if (j === 0 && c === 0) { - data[j] = c; - continue; - } - if ((c < 33 || c > 126) || c === 91 /* [ */ || c === 93 /* ] */ || - c === 40 /* ( */ || c === 41 /* ) */ || c === 123 /* { */ || - c === 125 /* } */ || c === 60 /* < */ || c === 62 /* > */ || - c === 47 /* / */ || c === 37 /* % */ || c === 35 /* # */) { - data[j] = 95; - continue; - } - data[j] = c; - } - names.push(bytesToString(data)); - } - return names; - }, - parseStringIndex: function CFFParser_parseStringIndex(index) { - var strings = new CFFStrings(); - for (var i = 0, ii = index.count; i < ii; ++i) { - var data = index.get(i); - strings.add(bytesToString(data)); - } - return strings; - }, - createDict: function CFFParser_createDict(Type, dict, strings) { - var cffDict = new Type(strings); - for (var i = 0, ii = dict.length; i < ii; ++i) { - var pair = dict[i]; - var key = pair[0]; - var value = pair[1]; - cffDict.setByKey(key, value); - } - return cffDict; - }, - parseCharString: function CFFParser_parseCharString(state, data, - localSubrIndex, - globalSubrIndex) { - if (state.callDepth > MAX_SUBR_NESTING) { - return false; - } - var stackSize = state.stackSize; - var stack = state.stack; - - var length = data.length; - - for (var j = 0; j < length;) { - var value = data[j++]; - var validationCommand = null; - if (value === 12) { - var q = data[j++]; - if (q === 0) { - // The CFF specification state that the 'dotsection' command - // (12, 0) is deprecated and treated as a no-op, but all Type2 - // charstrings processors should support them. Unfortunately - // the font sanitizer don't. As a workaround the sequence (12, 0) - // is replaced by a useless (0, hmoveto). - data[j - 2] = 139; - data[j - 1] = 22; - stackSize = 0; - } else { - validationCommand = CharstringValidationData12[q]; - } - } else if (value === 28) { // number (16 bit) - stack[stackSize] = ((data[j] << 24) | (data[j + 1] << 16)) >> 16; - j += 2; - stackSize++; - } else if (value === 14) { - if (stackSize >= 4) { - stackSize -= 4; - if (SEAC_ANALYSIS_ENABLED) { - state.seac = stack.slice(stackSize, stackSize + 4); - return false; - } - } - validationCommand = CharstringValidationData[value]; - } else if (value >= 32 && value <= 246) { // number - stack[stackSize] = value - 139; - stackSize++; - } else if (value >= 247 && value <= 254) { // number (+1 bytes) - stack[stackSize] = (value < 251 ? - ((value - 247) << 8) + data[j] + 108 : - -((value - 251) << 8) - data[j] - 108); - j++; - stackSize++; - } else if (value === 255) { // number (32 bit) - stack[stackSize] = ((data[j] << 24) | (data[j + 1] << 16) | - (data[j + 2] << 8) | data[j + 3]) / 65536; - j += 4; - stackSize++; - } else if (value === 19 || value === 20) { - state.hints += stackSize >> 1; - // skipping right amount of hints flag data - j += (state.hints + 7) >> 3; - stackSize %= 2; - validationCommand = CharstringValidationData[value]; - } else if (value === 10 || value === 29) { - var subrsIndex; - if (value === 10) { - subrsIndex = localSubrIndex; - } else { - subrsIndex = globalSubrIndex; - } - if (!subrsIndex) { - validationCommand = CharstringValidationData[value]; - warn('Missing subrsIndex for ' + validationCommand.id); - return false; - } - var bias = 32768; - if (subrsIndex.count < 1240) { - bias = 107; - } else if (subrsIndex.count < 33900) { - bias = 1131; - } - var subrNumber = stack[--stackSize] + bias; - if (subrNumber < 0 || subrNumber >= subrsIndex.count) { - validationCommand = CharstringValidationData[value]; - warn('Out of bounds subrIndex for ' + validationCommand.id); - return false; - } - state.stackSize = stackSize; - state.callDepth++; - var valid = this.parseCharString(state, subrsIndex.get(subrNumber), - localSubrIndex, globalSubrIndex); - if (!valid) { - return false; - } - state.callDepth--; - stackSize = state.stackSize; - continue; - } else if (value === 11) { - state.stackSize = stackSize; - return true; - } else { - validationCommand = CharstringValidationData[value]; - } - if (validationCommand) { - if (validationCommand.stem) { - state.hints += stackSize >> 1; - } - if ('min' in validationCommand) { - if (!state.undefStack && stackSize < validationCommand.min) { - warn('Not enough parameters for ' + validationCommand.id + - '; actual: ' + stackSize + - ', expected: ' + validationCommand.min); - return false; - } - } - if (state.firstStackClearing && validationCommand.stackClearing) { - state.firstStackClearing = false; - // the optional character width can be found before the first - // stack-clearing command arguments - stackSize -= validationCommand.min; - if (stackSize >= 2 && validationCommand.stem) { - // there are even amount of arguments for stem commands - stackSize %= 2; - } else if (stackSize > 1) { - warn('Found too many parameters for stack-clearing command'); - } - if (stackSize > 0 && stack[stackSize - 1] >= 0) { - state.width = stack[stackSize - 1]; - } - } - if ('stackDelta' in validationCommand) { - if ('stackFn' in validationCommand) { - validationCommand.stackFn(stack, stackSize); - } - stackSize += validationCommand.stackDelta; - } else if (validationCommand.stackClearing) { - stackSize = 0; - } else if (validationCommand.resetStack) { - stackSize = 0; - state.undefStack = false; - } else if (validationCommand.undefStack) { - stackSize = 0; - state.undefStack = true; - state.firstStackClearing = false; - } - } - } - state.stackSize = stackSize; - return true; - }, - parseCharStrings: function CFFParser_parseCharStrings(charStrings, - localSubrIndex, - globalSubrIndex, - fdSelect, - fdArray) { - var seacs = []; - var widths = []; - var count = charStrings.count; - for (var i = 0; i < count; i++) { - var charstring = charStrings.get(i); - var state = { - callDepth: 0, - stackSize: 0, - stack: [], - undefStack: true, - hints: 0, - firstStackClearing: true, - seac: null, - width: null - }; - var valid = true; - var localSubrToUse = null; - if (fdSelect && fdArray.length) { - var fdIndex = fdSelect.getFDIndex(i); - if (fdIndex === -1) { - warn('Glyph index is not in fd select.'); - valid = false; - } - if (fdIndex >= fdArray.length) { - warn('Invalid fd index for glyph index.'); - valid = false; - } - if (valid) { - localSubrToUse = fdArray[fdIndex].privateDict.subrsIndex; - } - } else if (localSubrIndex) { - localSubrToUse = localSubrIndex; - } - if (valid) { - valid = this.parseCharString(state, charstring, localSubrToUse, - globalSubrIndex); - } - if (state.width !== null) { - widths[i] = state.width; - } - if (state.seac !== null) { - seacs[i] = state.seac; - } - if (!valid) { - // resetting invalid charstring to single 'endchar' - charStrings.set(i, new Uint8Array([14])); - } - } - return { charStrings: charStrings, seacs: seacs, widths: widths }; - }, - emptyPrivateDictionary: - function CFFParser_emptyPrivateDictionary(parentDict) { - var privateDict = this.createDict(CFFPrivateDict, [], - parentDict.strings); - parentDict.setByKey(18, [0, 0]); - parentDict.privateDict = privateDict; - }, - parsePrivateDict: function CFFParser_parsePrivateDict(parentDict) { - // no private dict, do nothing - if (!parentDict.hasName('Private')) { - this.emptyPrivateDictionary(parentDict); - return; - } - var privateOffset = parentDict.getByName('Private'); - // make sure the params are formatted correctly - if (!isArray(privateOffset) || privateOffset.length !== 2) { - parentDict.removeByName('Private'); - return; - } - var size = privateOffset[0]; - var offset = privateOffset[1]; - // remove empty dicts or ones that refer to invalid location - if (size === 0 || offset >= this.bytes.length) { - this.emptyPrivateDictionary(parentDict); - return; - } - - var privateDictEnd = offset + size; - var dictData = this.bytes.subarray(offset, privateDictEnd); - var dict = this.parseDict(dictData); - var privateDict = this.createDict(CFFPrivateDict, dict, - parentDict.strings); - parentDict.privateDict = privateDict; - - // Parse the Subrs index also since it's relative to the private dict. - if (!privateDict.getByName('Subrs')) { - return; - } - var subrsOffset = privateDict.getByName('Subrs'); - var relativeOffset = offset + subrsOffset; - // Validate the offset. - if (subrsOffset === 0 || relativeOffset >= this.bytes.length) { - this.emptyPrivateDictionary(parentDict); - return; - } - var subrsIndex = this.parseIndex(relativeOffset); - privateDict.subrsIndex = subrsIndex.obj; - }, - parseCharsets: function CFFParser_parseCharsets(pos, length, strings, cid) { - if (pos === 0) { - return new CFFCharset(true, CFFCharsetPredefinedTypes.ISO_ADOBE, - ISOAdobeCharset); - } else if (pos === 1) { - return new CFFCharset(true, CFFCharsetPredefinedTypes.EXPERT, - ExpertCharset); - } else if (pos === 2) { - return new CFFCharset(true, CFFCharsetPredefinedTypes.EXPERT_SUBSET, - ExpertSubsetCharset); - } - - var bytes = this.bytes; - var start = pos; - var format = bytes[pos++]; - var charset = ['.notdef']; - var id, count, i; - - // subtract 1 for the .notdef glyph - length -= 1; - - switch (format) { - case 0: - for (i = 0; i < length; i++) { - id = (bytes[pos++] << 8) | bytes[pos++]; - charset.push(cid ? id : strings.get(id)); - } - break; - case 1: - while (charset.length <= length) { - id = (bytes[pos++] << 8) | bytes[pos++]; - count = bytes[pos++]; - for (i = 0; i <= count; i++) { - charset.push(cid ? id++ : strings.get(id++)); - } - } - break; - case 2: - while (charset.length <= length) { - id = (bytes[pos++] << 8) | bytes[pos++]; - count = (bytes[pos++] << 8) | bytes[pos++]; - for (i = 0; i <= count; i++) { - charset.push(cid ? id++ : strings.get(id++)); - } - } - break; - default: - error('Unknown charset format'); - } - // Raw won't be needed if we actually compile the charset. - var end = pos; - var raw = bytes.subarray(start, end); - - return new CFFCharset(false, format, charset, raw); - }, - parseEncoding: function CFFParser_parseEncoding(pos, - properties, - strings, - charset) { - var encoding = {}; - var bytes = this.bytes; - var predefined = false; - var hasSupplement = false; - var format, i, ii; - var raw = null; - - function readSupplement() { - var supplementsCount = bytes[pos++]; - for (i = 0; i < supplementsCount; i++) { - var code = bytes[pos++]; - var sid = (bytes[pos++] << 8) + (bytes[pos++] & 0xff); - encoding[code] = charset.indexOf(strings.get(sid)); - } - } - - if (pos === 0 || pos === 1) { - predefined = true; - format = pos; - var baseEncoding = pos ? Encodings.ExpertEncoding : - Encodings.StandardEncoding; - for (i = 0, ii = charset.length; i < ii; i++) { - var index = baseEncoding.indexOf(charset[i]); - if (index !== -1) { - encoding[index] = i; - } - } - } else { - var dataStart = pos; - format = bytes[pos++]; - switch (format & 0x7f) { - case 0: - var glyphsCount = bytes[pos++]; - for (i = 1; i <= glyphsCount; i++) { - encoding[bytes[pos++]] = i; - } - break; - - case 1: - var rangesCount = bytes[pos++]; - var gid = 1; - for (i = 0; i < rangesCount; i++) { - var start = bytes[pos++]; - var left = bytes[pos++]; - for (var j = start; j <= start + left; j++) { - encoding[j] = gid++; - } - } - break; - - default: - error('Unknow encoding format: ' + format + ' in CFF'); - break; - } - var dataEnd = pos; - if (format & 0x80) { - // The font sanitizer does not support CFF encoding with a - // supplement, since the encoding is not really used to map - // between gid to glyph, let's overwrite what is declared in - // the top dictionary to let the sanitizer think the font use - // StandardEncoding, that's a lie but that's ok. - bytes[dataStart] &= 0x7f; - readSupplement(); - hasSupplement = true; - } - raw = bytes.subarray(dataStart, dataEnd); - } - format = format & 0x7f; - return new CFFEncoding(predefined, format, encoding, raw); - }, - parseFDSelect: function CFFParser_parseFDSelect(pos, length) { - var start = pos; - var bytes = this.bytes; - var format = bytes[pos++]; - var fdSelect = []; - var i; - - switch (format) { - case 0: - for (i = 0; i < length; ++i) { - var id = bytes[pos++]; - fdSelect.push(id); - } - break; - case 3: - var rangesCount = (bytes[pos++] << 8) | bytes[pos++]; - for (i = 0; i < rangesCount; ++i) { - var first = (bytes[pos++] << 8) | bytes[pos++]; - var fdIndex = bytes[pos++]; - var next = (bytes[pos] << 8) | bytes[pos + 1]; - for (var j = first; j < next; ++j) { - fdSelect.push(fdIndex); - } - } - // Advance past the sentinel(next). - pos += 2; - break; - default: - error('Unknown fdselect format ' + format); - break; - } - var end = pos; - return new CFFFDSelect(fdSelect, bytes.subarray(start, end)); - } - }; - return CFFParser; -})(); - -// Compact Font Format -var CFF = (function CFFClosure() { - function CFF() { - this.header = null; - this.names = []; - this.topDict = null; - this.strings = new CFFStrings(); - this.globalSubrIndex = null; - - // The following could really be per font, but since we only have one font - // store them here. - this.encoding = null; - this.charset = null; - this.charStrings = null; - this.fdArray = []; - this.fdSelect = null; - - this.isCIDFont = false; - } - return CFF; -})(); - -var CFFHeader = (function CFFHeaderClosure() { - function CFFHeader(major, minor, hdrSize, offSize) { - this.major = major; - this.minor = minor; - this.hdrSize = hdrSize; - this.offSize = offSize; - } - return CFFHeader; -})(); - -var CFFStrings = (function CFFStringsClosure() { - function CFFStrings() { - this.strings = []; - } - CFFStrings.prototype = { - get: function CFFStrings_get(index) { - if (index >= 0 && index <= 390) { - return CFFStandardStrings[index]; - } - if (index - 391 <= this.strings.length) { - return this.strings[index - 391]; - } - return CFFStandardStrings[0]; - }, - add: function CFFStrings_add(value) { - this.strings.push(value); - }, - get count() { - return this.strings.length; - } - }; - return CFFStrings; -})(); - -var CFFIndex = (function CFFIndexClosure() { - function CFFIndex() { - this.objects = []; - this.length = 0; - } - CFFIndex.prototype = { - add: function CFFIndex_add(data) { - this.length += data.length; - this.objects.push(data); - }, - set: function CFFIndex_set(index, data) { - this.length += data.length - this.objects[index].length; - this.objects[index] = data; - }, - get: function CFFIndex_get(index) { - return this.objects[index]; - }, - get count() { - return this.objects.length; - } - }; - return CFFIndex; -})(); - -var CFFDict = (function CFFDictClosure() { - function CFFDict(tables, strings) { - this.keyToNameMap = tables.keyToNameMap; - this.nameToKeyMap = tables.nameToKeyMap; - this.defaults = tables.defaults; - this.types = tables.types; - this.opcodes = tables.opcodes; - this.order = tables.order; - this.strings = strings; - this.values = {}; - } - CFFDict.prototype = { - // value should always be an array - setByKey: function CFFDict_setByKey(key, value) { - if (!(key in this.keyToNameMap)) { - return false; - } - // ignore empty values - if (value.length === 0) { - return true; - } - var type = this.types[key]; - // remove the array wrapping these types of values - if (type === 'num' || type === 'sid' || type === 'offset') { - value = value[0]; - } - this.values[key] = value; - return true; - }, - setByName: function CFFDict_setByName(name, value) { - if (!(name in this.nameToKeyMap)) { - error('Invalid dictionary name "' + name + '"'); - } - this.values[this.nameToKeyMap[name]] = value; - }, - hasName: function CFFDict_hasName(name) { - return this.nameToKeyMap[name] in this.values; - }, - getByName: function CFFDict_getByName(name) { - if (!(name in this.nameToKeyMap)) { - error('Invalid dictionary name "' + name + '"'); - } - var key = this.nameToKeyMap[name]; - if (!(key in this.values)) { - return this.defaults[key]; - } - return this.values[key]; - }, - removeByName: function CFFDict_removeByName(name) { - delete this.values[this.nameToKeyMap[name]]; - } - }; - CFFDict.createTables = function CFFDict_createTables(layout) { - var tables = { - keyToNameMap: {}, - nameToKeyMap: {}, - defaults: {}, - types: {}, - opcodes: {}, - order: [] - }; - for (var i = 0, ii = layout.length; i < ii; ++i) { - var entry = layout[i]; - var key = isArray(entry[0]) ? (entry[0][0] << 8) + entry[0][1] : entry[0]; - tables.keyToNameMap[key] = entry[1]; - tables.nameToKeyMap[entry[1]] = key; - tables.types[key] = entry[2]; - tables.defaults[key] = entry[3]; - tables.opcodes[key] = isArray(entry[0]) ? entry[0] : [entry[0]]; - tables.order.push(key); - } - return tables; - }; - return CFFDict; -})(); - -var CFFTopDict = (function CFFTopDictClosure() { - var layout = [ - [[12, 30], 'ROS', ['sid', 'sid', 'num'], null], - [[12, 20], 'SyntheticBase', 'num', null], - [0, 'version', 'sid', null], - [1, 'Notice', 'sid', null], - [[12, 0], 'Copyright', 'sid', null], - [2, 'FullName', 'sid', null], - [3, 'FamilyName', 'sid', null], - [4, 'Weight', 'sid', null], - [[12, 1], 'isFixedPitch', 'num', 0], - [[12, 2], 'ItalicAngle', 'num', 0], - [[12, 3], 'UnderlinePosition', 'num', -100], - [[12, 4], 'UnderlineThickness', 'num', 50], - [[12, 5], 'PaintType', 'num', 0], - [[12, 6], 'CharstringType', 'num', 2], - [[12, 7], 'FontMatrix', ['num', 'num', 'num', 'num', 'num', 'num'], - [0.001, 0, 0, 0.001, 0, 0]], - [13, 'UniqueID', 'num', null], - [5, 'FontBBox', ['num', 'num', 'num', 'num'], [0, 0, 0, 0]], - [[12, 8], 'StrokeWidth', 'num', 0], - [14, 'XUID', 'array', null], - [15, 'charset', 'offset', 0], - [16, 'Encoding', 'offset', 0], - [17, 'CharStrings', 'offset', 0], - [18, 'Private', ['offset', 'offset'], null], - [[12, 21], 'PostScript', 'sid', null], - [[12, 22], 'BaseFontName', 'sid', null], - [[12, 23], 'BaseFontBlend', 'delta', null], - [[12, 31], 'CIDFontVersion', 'num', 0], - [[12, 32], 'CIDFontRevision', 'num', 0], - [[12, 33], 'CIDFontType', 'num', 0], - [[12, 34], 'CIDCount', 'num', 8720], - [[12, 35], 'UIDBase', 'num', null], - // XXX: CID Fonts on DirectWrite 6.1 only seem to work if FDSelect comes - // before FDArray. - [[12, 37], 'FDSelect', 'offset', null], - [[12, 36], 'FDArray', 'offset', null], - [[12, 38], 'FontName', 'sid', null] - ]; - var tables = null; - function CFFTopDict(strings) { - if (tables === null) { - tables = CFFDict.createTables(layout); - } - CFFDict.call(this, tables, strings); - this.privateDict = null; - } - CFFTopDict.prototype = Object.create(CFFDict.prototype); - return CFFTopDict; -})(); - -var CFFPrivateDict = (function CFFPrivateDictClosure() { - var layout = [ - [6, 'BlueValues', 'delta', null], - [7, 'OtherBlues', 'delta', null], - [8, 'FamilyBlues', 'delta', null], - [9, 'FamilyOtherBlues', 'delta', null], - [[12, 9], 'BlueScale', 'num', 0.039625], - [[12, 10], 'BlueShift', 'num', 7], - [[12, 11], 'BlueFuzz', 'num', 1], - [10, 'StdHW', 'num', null], - [11, 'StdVW', 'num', null], - [[12, 12], 'StemSnapH', 'delta', null], - [[12, 13], 'StemSnapV', 'delta', null], - [[12, 14], 'ForceBold', 'num', 0], - [[12, 17], 'LanguageGroup', 'num', 0], - [[12, 18], 'ExpansionFactor', 'num', 0.06], - [[12, 19], 'initialRandomSeed', 'num', 0], - [20, 'defaultWidthX', 'num', 0], - [21, 'nominalWidthX', 'num', 0], - [19, 'Subrs', 'offset', null] - ]; - var tables = null; - function CFFPrivateDict(strings) { - if (tables === null) { - tables = CFFDict.createTables(layout); - } - CFFDict.call(this, tables, strings); - this.subrsIndex = null; - } - CFFPrivateDict.prototype = Object.create(CFFDict.prototype); - return CFFPrivateDict; -})(); - -var CFFCharsetPredefinedTypes = { - ISO_ADOBE: 0, - EXPERT: 1, - EXPERT_SUBSET: 2 -}; -var CFFCharset = (function CFFCharsetClosure() { - function CFFCharset(predefined, format, charset, raw) { - this.predefined = predefined; - this.format = format; - this.charset = charset; - this.raw = raw; - } - return CFFCharset; -})(); - -var CFFEncoding = (function CFFEncodingClosure() { - function CFFEncoding(predefined, format, encoding, raw) { - this.predefined = predefined; - this.format = format; - this.encoding = encoding; - this.raw = raw; - } - return CFFEncoding; -})(); - -var CFFFDSelect = (function CFFFDSelectClosure() { - function CFFFDSelect(fdSelect, raw) { - this.fdSelect = fdSelect; - this.raw = raw; - } - CFFFDSelect.prototype = { - getFDIndex: function CFFFDSelect_get(glyphIndex) { - if (glyphIndex < 0 || glyphIndex >= this.fdSelect.length) { - return -1; - } - return this.fdSelect[glyphIndex]; - } - }; - return CFFFDSelect; -})(); - -// Helper class to keep track of where an offset is within the data and helps -// filling in that offset once it's known. -var CFFOffsetTracker = (function CFFOffsetTrackerClosure() { - function CFFOffsetTracker() { - this.offsets = {}; - } - CFFOffsetTracker.prototype = { - isTracking: function CFFOffsetTracker_isTracking(key) { - return key in this.offsets; - }, - track: function CFFOffsetTracker_track(key, location) { - if (key in this.offsets) { - error('Already tracking location of ' + key); - } - this.offsets[key] = location; - }, - offset: function CFFOffsetTracker_offset(value) { - for (var key in this.offsets) { - this.offsets[key] += value; - } - }, - setEntryLocation: function CFFOffsetTracker_setEntryLocation(key, - values, - output) { - if (!(key in this.offsets)) { - error('Not tracking location of ' + key); - } - var data = output.data; - var dataOffset = this.offsets[key]; - var size = 5; - for (var i = 0, ii = values.length; i < ii; ++i) { - var offset0 = i * size + dataOffset; - var offset1 = offset0 + 1; - var offset2 = offset0 + 2; - var offset3 = offset0 + 3; - var offset4 = offset0 + 4; - // It's easy to screw up offsets so perform this sanity check. - if (data[offset0] !== 0x1d || data[offset1] !== 0 || - data[offset2] !== 0 || data[offset3] !== 0 || data[offset4] !== 0) { - error('writing to an offset that is not empty'); - } - var value = values[i]; - data[offset0] = 0x1d; - data[offset1] = (value >> 24) & 0xFF; - data[offset2] = (value >> 16) & 0xFF; - data[offset3] = (value >> 8) & 0xFF; - data[offset4] = value & 0xFF; - } - } - }; - return CFFOffsetTracker; -})(); - -// Takes a CFF and converts it to the binary representation. -var CFFCompiler = (function CFFCompilerClosure() { - function CFFCompiler(cff) { - this.cff = cff; - } - CFFCompiler.prototype = { - compile: function CFFCompiler_compile() { - var cff = this.cff; - var output = { - data: [], - length: 0, - add: function CFFCompiler_add(data) { - this.data = this.data.concat(data); - this.length = this.data.length; - } - }; - - // Compile the five entries that must be in order. - var header = this.compileHeader(cff.header); - output.add(header); - - var nameIndex = this.compileNameIndex(cff.names); - output.add(nameIndex); - - if (cff.isCIDFont) { - // The spec is unclear on how font matrices should relate to each other - // when there is one in the main top dict and the sub top dicts. - // Windows handles this differently than linux and osx so we have to - // normalize to work on all. - // Rules based off of some mailing list discussions: - // - If main font has a matrix and subfont doesn't, use the main matrix. - // - If no main font matrix and there is a subfont matrix, use the - // subfont matrix. - // - If both have matrices, concat together. - // - If neither have matrices, use default. - // To make this work on all platforms we move the top matrix into each - // sub top dict and concat if necessary. - if (cff.topDict.hasName('FontMatrix')) { - var base = cff.topDict.getByName('FontMatrix'); - cff.topDict.removeByName('FontMatrix'); - for (var i = 0, ii = cff.fdArray.length; i < ii; i++) { - var subDict = cff.fdArray[i]; - var matrix = base.slice(0); - if (subDict.hasName('FontMatrix')) { - matrix = Util.transform(matrix, subDict.getByName('FontMatrix')); - } - subDict.setByName('FontMatrix', matrix); - } - } - } - - var compiled = this.compileTopDicts([cff.topDict], - output.length, - cff.isCIDFont); - output.add(compiled.output); - var topDictTracker = compiled.trackers[0]; - - var stringIndex = this.compileStringIndex(cff.strings.strings); - output.add(stringIndex); - - var globalSubrIndex = this.compileIndex(cff.globalSubrIndex); - output.add(globalSubrIndex); - - // Now start on the other entries that have no specfic order. - if (cff.encoding && cff.topDict.hasName('Encoding')) { - if (cff.encoding.predefined) { - topDictTracker.setEntryLocation('Encoding', [cff.encoding.format], - output); - } else { - var encoding = this.compileEncoding(cff.encoding); - topDictTracker.setEntryLocation('Encoding', [output.length], output); - output.add(encoding); - } - } - - if (cff.charset && cff.topDict.hasName('charset')) { - if (cff.charset.predefined) { - topDictTracker.setEntryLocation('charset', [cff.charset.format], - output); - } else { - var charset = this.compileCharset(cff.charset); - topDictTracker.setEntryLocation('charset', [output.length], output); - output.add(charset); - } - } - - var charStrings = this.compileCharStrings(cff.charStrings); - topDictTracker.setEntryLocation('CharStrings', [output.length], output); - output.add(charStrings); - - if (cff.isCIDFont) { - // For some reason FDSelect must be in front of FDArray on windows. OSX - // and linux don't seem to care. - topDictTracker.setEntryLocation('FDSelect', [output.length], output); - var fdSelect = this.compileFDSelect(cff.fdSelect.raw); - output.add(fdSelect); - // It is unclear if the sub font dictionary can have CID related - // dictionary keys, but the sanitizer doesn't like them so remove them. - compiled = this.compileTopDicts(cff.fdArray, output.length, true); - topDictTracker.setEntryLocation('FDArray', [output.length], output); - output.add(compiled.output); - var fontDictTrackers = compiled.trackers; - - this.compilePrivateDicts(cff.fdArray, fontDictTrackers, output); - } - - this.compilePrivateDicts([cff.topDict], [topDictTracker], output); - - // If the font data ends with INDEX whose object data is zero-length, - // the sanitizer will bail out. Add a dummy byte to avoid that. - output.add([0]); - - return output.data; - }, - encodeNumber: function CFFCompiler_encodeNumber(value) { - if (parseFloat(value) === parseInt(value, 10) && !isNaN(value)) { // isInt - return this.encodeInteger(value); - } else { - return this.encodeFloat(value); - } - }, - encodeFloat: function CFFCompiler_encodeFloat(num) { - var value = num.toString(); - - // rounding inaccurate doubles - var m = /\.(\d*?)(?:9{5,20}|0{5,20})\d{0,2}(?:e(.+)|$)/.exec(value); - if (m) { - var epsilon = parseFloat('1e' + ((m[2] ? +m[2] : 0) + m[1].length)); - value = (Math.round(num * epsilon) / epsilon).toString(); - } - - var nibbles = ''; - var i, ii; - for (i = 0, ii = value.length; i < ii; ++i) { - var a = value[i]; - if (a === 'e') { - nibbles += value[++i] === '-' ? 'c' : 'b'; - } else if (a === '.') { - nibbles += 'a'; - } else if (a === '-') { - nibbles += 'e'; - } else { - nibbles += a; - } - } - nibbles += (nibbles.length & 1) ? 'f' : 'ff'; - var out = [30]; - for (i = 0, ii = nibbles.length; i < ii; i += 2) { - out.push(parseInt(nibbles.substr(i, 2), 16)); - } - return out; - }, - encodeInteger: function CFFCompiler_encodeInteger(value) { - var code; - if (value >= -107 && value <= 107) { - code = [value + 139]; - } else if (value >= 108 && value <= 1131) { - value = [value - 108]; - code = [(value >> 8) + 247, value & 0xFF]; - } else if (value >= -1131 && value <= -108) { - value = -value - 108; - code = [(value >> 8) + 251, value & 0xFF]; - } else if (value >= -32768 && value <= 32767) { - code = [0x1c, (value >> 8) & 0xFF, value & 0xFF]; - } else { - code = [0x1d, - (value >> 24) & 0xFF, - (value >> 16) & 0xFF, - (value >> 8) & 0xFF, - value & 0xFF]; - } - return code; - }, - compileHeader: function CFFCompiler_compileHeader(header) { - return [ - header.major, - header.minor, - header.hdrSize, - header.offSize - ]; - }, - compileNameIndex: function CFFCompiler_compileNameIndex(names) { - var nameIndex = new CFFIndex(); - for (var i = 0, ii = names.length; i < ii; ++i) { - nameIndex.add(stringToBytes(names[i])); - } - return this.compileIndex(nameIndex); - }, - compileTopDicts: function CFFCompiler_compileTopDicts(dicts, - length, - removeCidKeys) { - var fontDictTrackers = []; - var fdArrayIndex = new CFFIndex(); - for (var i = 0, ii = dicts.length; i < ii; ++i) { - var fontDict = dicts[i]; - if (removeCidKeys) { - fontDict.removeByName('CIDFontVersion'); - fontDict.removeByName('CIDFontRevision'); - fontDict.removeByName('CIDFontType'); - fontDict.removeByName('CIDCount'); - fontDict.removeByName('UIDBase'); - } - var fontDictTracker = new CFFOffsetTracker(); - var fontDictData = this.compileDict(fontDict, fontDictTracker); - fontDictTrackers.push(fontDictTracker); - fdArrayIndex.add(fontDictData); - fontDictTracker.offset(length); - } - fdArrayIndex = this.compileIndex(fdArrayIndex, fontDictTrackers); - return { - trackers: fontDictTrackers, - output: fdArrayIndex - }; - }, - compilePrivateDicts: function CFFCompiler_compilePrivateDicts(dicts, - trackers, - output) { - for (var i = 0, ii = dicts.length; i < ii; ++i) { - var fontDict = dicts[i]; - assert(fontDict.privateDict && fontDict.hasName('Private'), - 'There must be an private dictionary.'); - var privateDict = fontDict.privateDict; - var privateDictTracker = new CFFOffsetTracker(); - var privateDictData = this.compileDict(privateDict, privateDictTracker); - - var outputLength = output.length; - privateDictTracker.offset(outputLength); - if (!privateDictData.length) { - // The private dictionary was empty, set the output length to zero to - // ensure the offset length isn't out of bounds in the eyes of the - // sanitizer. - outputLength = 0; - } - - trackers[i].setEntryLocation('Private', - [privateDictData.length, outputLength], - output); - output.add(privateDictData); - - if (privateDict.subrsIndex && privateDict.hasName('Subrs')) { - var subrs = this.compileIndex(privateDict.subrsIndex); - privateDictTracker.setEntryLocation('Subrs', [privateDictData.length], - output); - output.add(subrs); - } - } - }, - compileDict: function CFFCompiler_compileDict(dict, offsetTracker) { - var out = []; - // The dictionary keys must be in a certain order. - var order = dict.order; - for (var i = 0; i < order.length; ++i) { - var key = order[i]; - if (!(key in dict.values)) { - continue; - } - var values = dict.values[key]; - var types = dict.types[key]; - if (!isArray(types)) { - types = [types]; - } - if (!isArray(values)) { - values = [values]; - } - - // Remove any empty dict values. - if (values.length === 0) { - continue; - } - - for (var j = 0, jj = types.length; j < jj; ++j) { - var type = types[j]; - var value = values[j]; - switch (type) { - case 'num': - case 'sid': - out = out.concat(this.encodeNumber(value)); - break; - case 'offset': - // For offsets we just insert a 32bit integer so we don't have to - // deal with figuring out the length of the offset when it gets - // replaced later on by the compiler. - var name = dict.keyToNameMap[key]; - // Some offsets have the offset and the length, so just record the - // position of the first one. - if (!offsetTracker.isTracking(name)) { - offsetTracker.track(name, out.length); - } - out = out.concat([0x1d, 0, 0, 0, 0]); - break; - case 'array': - case 'delta': - out = out.concat(this.encodeNumber(value)); - for (var k = 1, kk = values.length; k < kk; ++k) { - out = out.concat(this.encodeNumber(values[k])); - } - break; - default: - error('Unknown data type of ' + type); - break; - } - } - out = out.concat(dict.opcodes[key]); - } - return out; - }, - compileStringIndex: function CFFCompiler_compileStringIndex(strings) { - var stringIndex = new CFFIndex(); - for (var i = 0, ii = strings.length; i < ii; ++i) { - stringIndex.add(stringToBytes(strings[i])); - } - return this.compileIndex(stringIndex); - }, - compileGlobalSubrIndex: function CFFCompiler_compileGlobalSubrIndex() { - var globalSubrIndex = this.cff.globalSubrIndex; - this.out.writeByteArray(this.compileIndex(globalSubrIndex)); - }, - compileCharStrings: function CFFCompiler_compileCharStrings(charStrings) { - return this.compileIndex(charStrings); - }, - compileCharset: function CFFCompiler_compileCharset(charset) { - return this.compileTypedArray(charset.raw); - }, - compileEncoding: function CFFCompiler_compileEncoding(encoding) { - return this.compileTypedArray(encoding.raw); - }, - compileFDSelect: function CFFCompiler_compileFDSelect(fdSelect) { - return this.compileTypedArray(fdSelect); - }, - compileTypedArray: function CFFCompiler_compileTypedArray(data) { - var out = []; - for (var i = 0, ii = data.length; i < ii; ++i) { - out[i] = data[i]; - } - return out; - }, - compileIndex: function CFFCompiler_compileIndex(index, trackers) { - trackers = trackers || []; - var objects = index.objects; - // First 2 bytes contains the number of objects contained into this index - var count = objects.length; - - // If there is no object, just create an index. This technically - // should just be [0, 0] but OTS has an issue with that. - if (count === 0) { - return [0, 0, 0]; - } - - var data = [(count >> 8) & 0xFF, count & 0xff]; - - var lastOffset = 1, i; - for (i = 0; i < count; ++i) { - lastOffset += objects[i].length; - } - - var offsetSize; - if (lastOffset < 0x100) { - offsetSize = 1; - } else if (lastOffset < 0x10000) { - offsetSize = 2; - } else if (lastOffset < 0x1000000) { - offsetSize = 3; - } else { - offsetSize = 4; - } - - // Next byte contains the offset size use to reference object in the file - data.push(offsetSize); - - // Add another offset after this one because we need a new offset - var relativeOffset = 1; - for (i = 0; i < count + 1; i++) { - if (offsetSize === 1) { - data.push(relativeOffset & 0xFF); - } else if (offsetSize === 2) { - data.push((relativeOffset >> 8) & 0xFF, - relativeOffset & 0xFF); - } else if (offsetSize === 3) { - data.push((relativeOffset >> 16) & 0xFF, - (relativeOffset >> 8) & 0xFF, - relativeOffset & 0xFF); - } else { - data.push((relativeOffset >>> 24) & 0xFF, - (relativeOffset >> 16) & 0xFF, - (relativeOffset >> 8) & 0xFF, - relativeOffset & 0xFF); - } - - if (objects[i]) { - relativeOffset += objects[i].length; - } - } - - for (i = 0; i < count; i++) { - // Notify the tracker where the object will be offset in the data. - if (trackers[i]) { - trackers[i].offset(data.length); - } - for (var j = 0, jj = objects[i].length; j < jj; j++) { - data.push(objects[i][j]); - } - } - return data; - } - }; - return CFFCompiler; -})(); - -function _enableSeacAnalysis(enabled) { - exports.SEAC_ANALYSIS_ENABLED = SEAC_ANALYSIS_ENABLED = enabled; -} - -// Workaround for seac on Windows. -(function checkSeacSupport() { - if (typeof navigator !== 'undefined' && /Windows/.test(navigator.userAgent)) { - SEAC_ANALYSIS_ENABLED = true; - } -})(); - -// Workaround for Private Use Area characters in Chrome on Windows -// http://code.google.com/p/chromium/issues/detail?id=122465 -// https://github.com/mozilla/pdf.js/issues/1689 -(function checkChromeWindows() { - if (typeof navigator !== 'undefined' && - /Windows.*Chrome/.test(navigator.userAgent)) { - SKIP_PRIVATE_USE_RANGE_F000_TO_F01F = true; - } -})(); - -exports.SEAC_ANALYSIS_ENABLED = SEAC_ANALYSIS_ENABLED; -exports.CFFCompiler = CFFCompiler; -exports.CFFIndex = CFFIndex; -exports.CFFParser = CFFParser; -exports.CFFStrings = CFFStrings; -exports.Encodings = Encodings; -exports.ErrorFont = ErrorFont; -exports.FontFlags = FontFlags; -exports.Font = Font; -exports.IdentityToUnicodeMap = IdentityToUnicodeMap; -exports.NormalizedUnicodes = NormalizedUnicodes; -exports.ToUnicodeMap = ToUnicodeMap; -exports.Type1Parser = Type1Parser; -exports.getFontType = getFontType; -exports.reverseIfRtl = reverseIfRtl; -exports.serifFonts = serifFonts; -exports.symbolsFonts = symbolsFonts; -exports.stdFontMap = stdFontMap; -exports._enableSeacAnalysis = _enableSeacAnalysis; - -// TODO refactor to remove cyclic dependency on font_renderer.js -coreFontRenderer._setCoreFonts(exports); -})); - - -(function (root, factory) { - { - factory((root.pdfjsCoreFunction = {}), root.pdfjsSharedUtil, - root.pdfjsCorePrimitives, root.pdfjsCorePsParser); - } -}(this, function (exports, sharedUtil, corePrimitives, corePsParser) { - -var error = sharedUtil.error; -var info = sharedUtil.info; -var isArray = sharedUtil.isArray; -var isBool = sharedUtil.isBool; -var isDict = corePrimitives.isDict; -var isStream = corePrimitives.isStream; -var PostScriptLexer = corePsParser.PostScriptLexer; -var PostScriptParser = corePsParser.PostScriptParser; - -var PDFFunction = (function PDFFunctionClosure() { - var CONSTRUCT_SAMPLED = 0; - var CONSTRUCT_INTERPOLATED = 2; - var CONSTRUCT_STICHED = 3; - var CONSTRUCT_POSTSCRIPT = 4; - - return { - getSampleArray: function PDFFunction_getSampleArray(size, outputSize, bps, - str) { - var i, ii; - var length = 1; - for (i = 0, ii = size.length; i < ii; i++) { - length *= size[i]; - } - length *= outputSize; - - var array = new Array(length); - var codeSize = 0; - var codeBuf = 0; - // 32 is a valid bps so shifting won't work - var sampleMul = 1.0 / (Math.pow(2.0, bps) - 1); - - var strBytes = str.getBytes((length * bps + 7) / 8); - var strIdx = 0; - for (i = 0; i < length; i++) { - while (codeSize < bps) { - codeBuf <<= 8; - codeBuf |= strBytes[strIdx++]; - codeSize += 8; - } - codeSize -= bps; - array[i] = (codeBuf >> codeSize) * sampleMul; - codeBuf &= (1 << codeSize) - 1; - } - return array; - }, - - getIR: function PDFFunction_getIR(xref, fn) { - var dict = fn.dict; - if (!dict) { - dict = fn; - } - - var types = [this.constructSampled, - null, - this.constructInterpolated, - this.constructStiched, - this.constructPostScript]; - - var typeNum = dict.get('FunctionType'); - var typeFn = types[typeNum]; - if (!typeFn) { - error('Unknown type of function'); - } - - return typeFn.call(this, fn, dict, xref); - }, - - fromIR: function PDFFunction_fromIR(IR) { - var type = IR[0]; - switch (type) { - case CONSTRUCT_SAMPLED: - return this.constructSampledFromIR(IR); - case CONSTRUCT_INTERPOLATED: - return this.constructInterpolatedFromIR(IR); - case CONSTRUCT_STICHED: - return this.constructStichedFromIR(IR); - //case CONSTRUCT_POSTSCRIPT: - default: - return this.constructPostScriptFromIR(IR); - } - }, - - parse: function PDFFunction_parse(xref, fn) { - var IR = this.getIR(xref, fn); - return this.fromIR(IR); - }, - - parseArray: function PDFFunction_parseArray(xref, fnObj) { - if (!isArray(fnObj)) { - // not an array -- parsing as regular function - return this.parse(xref, fnObj); - } - - var fnArray = []; - for (var j = 0, jj = fnObj.length; j < jj; j++) { - var obj = xref.fetchIfRef(fnObj[j]); - fnArray.push(PDFFunction.parse(xref, obj)); - } - return function (src, srcOffset, dest, destOffset) { - for (var i = 0, ii = fnArray.length; i < ii; i++) { - fnArray[i](src, srcOffset, dest, destOffset + i); - } - }; - }, - - constructSampled: function PDFFunction_constructSampled(str, dict) { - function toMultiArray(arr) { - var inputLength = arr.length; - var out = []; - var index = 0; - for (var i = 0; i < inputLength; i += 2) { - out[index] = [arr[i], arr[i + 1]]; - ++index; - } - return out; - } - var domain = dict.get('Domain'); - var range = dict.get('Range'); - - if (!domain || !range) { - error('No domain or range'); - } - - var inputSize = domain.length / 2; - var outputSize = range.length / 2; - - domain = toMultiArray(domain); - range = toMultiArray(range); - - var size = dict.get('Size'); - var bps = dict.get('BitsPerSample'); - var order = dict.get('Order') || 1; - if (order !== 1) { - // No description how cubic spline interpolation works in PDF32000:2008 - // As in poppler, ignoring order, linear interpolation may work as good - info('No support for cubic spline interpolation: ' + order); - } - - var encode = dict.get('Encode'); - if (!encode) { - encode = []; - for (var i = 0; i < inputSize; ++i) { - encode.push(0); - encode.push(size[i] - 1); - } - } - encode = toMultiArray(encode); - - var decode = dict.get('Decode'); - if (!decode) { - decode = range; - } else { - decode = toMultiArray(decode); - } - - var samples = this.getSampleArray(size, outputSize, bps, str); - - return [ - CONSTRUCT_SAMPLED, inputSize, domain, encode, decode, samples, size, - outputSize, Math.pow(2, bps) - 1, range - ]; - }, - - constructSampledFromIR: function PDFFunction_constructSampledFromIR(IR) { - // See chapter 3, page 109 of the PDF reference - function interpolate(x, xmin, xmax, ymin, ymax) { - return ymin + ((x - xmin) * ((ymax - ymin) / (xmax - xmin))); - } - - return function constructSampledFromIRResult(src, srcOffset, - dest, destOffset) { - // See chapter 3, page 110 of the PDF reference. - var m = IR[1]; - var domain = IR[2]; - var encode = IR[3]; - var decode = IR[4]; - var samples = IR[5]; - var size = IR[6]; - var n = IR[7]; - //var mask = IR[8]; - var range = IR[9]; - - // Building the cube vertices: its part and sample index - // http://rjwagner49.com/Mathematics/Interpolation.pdf - var cubeVertices = 1 << m; - var cubeN = new Float64Array(cubeVertices); - var cubeVertex = new Uint32Array(cubeVertices); - var i, j; - for (j = 0; j < cubeVertices; j++) { - cubeN[j] = 1; - } - - var k = n, pos = 1; - // Map x_i to y_j for 0 <= i < m using the sampled function. - for (i = 0; i < m; ++i) { - // x_i' = min(max(x_i, Domain_2i), Domain_2i+1) - var domain_2i = domain[i][0]; - var domain_2i_1 = domain[i][1]; - var xi = Math.min(Math.max(src[srcOffset +i], domain_2i), - domain_2i_1); - - // e_i = Interpolate(x_i', Domain_2i, Domain_2i+1, - // Encode_2i, Encode_2i+1) - var e = interpolate(xi, domain_2i, domain_2i_1, - encode[i][0], encode[i][1]); - - // e_i' = min(max(e_i, 0), Size_i - 1) - var size_i = size[i]; - e = Math.min(Math.max(e, 0), size_i - 1); - - // Adjusting the cube: N and vertex sample index - var e0 = e < size_i - 1 ? Math.floor(e) : e - 1; // e1 = e0 + 1; - var n0 = e0 + 1 - e; // (e1 - e) / (e1 - e0); - var n1 = e - e0; // (e - e0) / (e1 - e0); - var offset0 = e0 * k; - var offset1 = offset0 + k; // e1 * k - for (j = 0; j < cubeVertices; j++) { - if (j & pos) { - cubeN[j] *= n1; - cubeVertex[j] += offset1; - } else { - cubeN[j] *= n0; - cubeVertex[j] += offset0; - } - } - - k *= size_i; - pos <<= 1; - } - - for (j = 0; j < n; ++j) { - // Sum all cube vertices' samples portions - var rj = 0; - for (i = 0; i < cubeVertices; i++) { - rj += samples[cubeVertex[i] + j] * cubeN[i]; - } - - // r_j' = Interpolate(r_j, 0, 2^BitsPerSample - 1, - // Decode_2j, Decode_2j+1) - rj = interpolate(rj, 0, 1, decode[j][0], decode[j][1]); - - // y_j = min(max(r_j, range_2j), range_2j+1) - dest[destOffset + j] = Math.min(Math.max(rj, range[j][0]), - range[j][1]); - } - }; - }, - - constructInterpolated: function PDFFunction_constructInterpolated(str, - dict) { - var c0 = dict.get('C0') || [0]; - var c1 = dict.get('C1') || [1]; - var n = dict.get('N'); - - if (!isArray(c0) || !isArray(c1)) { - error('Illegal dictionary for interpolated function'); - } - - var length = c0.length; - var diff = []; - for (var i = 0; i < length; ++i) { - diff.push(c1[i] - c0[i]); - } - - return [CONSTRUCT_INTERPOLATED, c0, diff, n]; - }, - - constructInterpolatedFromIR: - function PDFFunction_constructInterpolatedFromIR(IR) { - var c0 = IR[1]; - var diff = IR[2]; - var n = IR[3]; - - var length = diff.length; - - return function constructInterpolatedFromIRResult(src, srcOffset, - dest, destOffset) { - var x = n === 1 ? src[srcOffset] : Math.pow(src[srcOffset], n); - - for (var j = 0; j < length; ++j) { - dest[destOffset + j] = c0[j] + (x * diff[j]); - } - }; - }, - - constructStiched: function PDFFunction_constructStiched(fn, dict, xref) { - var domain = dict.get('Domain'); - - if (!domain) { - error('No domain'); - } - - var inputSize = domain.length / 2; - if (inputSize !== 1) { - error('Bad domain for stiched function'); - } - - var fnRefs = dict.get('Functions'); - var fns = []; - for (var i = 0, ii = fnRefs.length; i < ii; ++i) { - fns.push(PDFFunction.getIR(xref, xref.fetchIfRef(fnRefs[i]))); - } - - var bounds = dict.get('Bounds'); - var encode = dict.get('Encode'); - - return [CONSTRUCT_STICHED, domain, bounds, encode, fns]; - }, - - constructStichedFromIR: function PDFFunction_constructStichedFromIR(IR) { - var domain = IR[1]; - var bounds = IR[2]; - var encode = IR[3]; - var fnsIR = IR[4]; - var fns = []; - var tmpBuf = new Float32Array(1); - - for (var i = 0, ii = fnsIR.length; i < ii; i++) { - fns.push(PDFFunction.fromIR(fnsIR[i])); - } - - return function constructStichedFromIRResult(src, srcOffset, - dest, destOffset) { - var clip = function constructStichedFromIRClip(v, min, max) { - if (v > max) { - v = max; - } else if (v < min) { - v = min; - } - return v; - }; - - // clip to domain - var v = clip(src[srcOffset], domain[0], domain[1]); - // calulate which bound the value is in - for (var i = 0, ii = bounds.length; i < ii; ++i) { - if (v < bounds[i]) { - break; - } - } - - // encode value into domain of function - var dmin = domain[0]; - if (i > 0) { - dmin = bounds[i - 1]; - } - var dmax = domain[1]; - if (i < bounds.length) { - dmax = bounds[i]; - } - - var rmin = encode[2 * i]; - var rmax = encode[2 * i + 1]; - - // Prevent the value from becoming NaN as a result - // of division by zero (fixes issue6113.pdf). - tmpBuf[0] = dmin === dmax ? rmin : - rmin + (v - dmin) * (rmax - rmin) / (dmax - dmin); - - // call the appropriate function - fns[i](tmpBuf, 0, dest, destOffset); - }; - }, - - constructPostScript: function PDFFunction_constructPostScript(fn, dict, - xref) { - var domain = dict.get('Domain'); - var range = dict.get('Range'); - - if (!domain) { - error('No domain.'); - } - - if (!range) { - error('No range.'); - } - - var lexer = new PostScriptLexer(fn); - var parser = new PostScriptParser(lexer); - var code = parser.parse(); - - return [CONSTRUCT_POSTSCRIPT, domain, range, code]; - }, - - constructPostScriptFromIR: function PDFFunction_constructPostScriptFromIR( - IR) { - var domain = IR[1]; - var range = IR[2]; - var code = IR[3]; - - var compiled = (new PostScriptCompiler()).compile(code, domain, range); - if (compiled) { - // Compiled function consists of simple expressions such as addition, - // subtraction, Math.max, and also contains 'var' and 'return' - // statements. See the generation in the PostScriptCompiler below. - /*jshint -W054 */ - return new Function('src', 'srcOffset', 'dest', 'destOffset', compiled); - } - - info('Unable to compile PS function'); - - var numOutputs = range.length >> 1; - var numInputs = domain.length >> 1; - var evaluator = new PostScriptEvaluator(code); - // Cache the values for a big speed up, the cache size is limited though - // since the number of possible values can be huge from a PS function. - var cache = {}; - // The MAX_CACHE_SIZE is set to ~4x the maximum number of distinct values - // seen in our tests. - var MAX_CACHE_SIZE = 2048 * 4; - var cache_available = MAX_CACHE_SIZE; - var tmpBuf = new Float32Array(numInputs); - - return function constructPostScriptFromIRResult(src, srcOffset, - dest, destOffset) { - var i, value; - var key = ''; - var input = tmpBuf; - for (i = 0; i < numInputs; i++) { - value = src[srcOffset + i]; - input[i] = value; - key += value + '_'; - } - - var cachedValue = cache[key]; - if (cachedValue !== undefined) { - dest.set(cachedValue, destOffset); - return; - } - - var output = new Float32Array(numOutputs); - var stack = evaluator.execute(input); - var stackIndex = stack.length - numOutputs; - for (i = 0; i < numOutputs; i++) { - value = stack[stackIndex + i]; - var bound = range[i * 2]; - if (value < bound) { - value = bound; - } else { - bound = range[i * 2 +1]; - if (value > bound) { - value = bound; - } - } - output[i] = value; - } - if (cache_available > 0) { - cache_available--; - cache[key] = output; - } - dest.set(output, destOffset); - }; - } - }; -})(); - -function isPDFFunction(v) { - var fnDict; - if (typeof v !== 'object') { - return false; - } else if (isDict(v)) { - fnDict = v; - } else if (isStream(v)) { - fnDict = v.dict; - } else { - return false; - } - return fnDict.has('FunctionType'); -} - -var PostScriptStack = (function PostScriptStackClosure() { - var MAX_STACK_SIZE = 100; - function PostScriptStack(initialStack) { - this.stack = !initialStack ? [] : - Array.prototype.slice.call(initialStack, 0); - } - - PostScriptStack.prototype = { - push: function PostScriptStack_push(value) { - if (this.stack.length >= MAX_STACK_SIZE) { - error('PostScript function stack overflow.'); - } - this.stack.push(value); - }, - pop: function PostScriptStack_pop() { - if (this.stack.length <= 0) { - error('PostScript function stack underflow.'); - } - return this.stack.pop(); - }, - copy: function PostScriptStack_copy(n) { - if (this.stack.length + n >= MAX_STACK_SIZE) { - error('PostScript function stack overflow.'); - } - var stack = this.stack; - for (var i = stack.length - n, j = n - 1; j >= 0; j--, i++) { - stack.push(stack[i]); - } - }, - index: function PostScriptStack_index(n) { - this.push(this.stack[this.stack.length - n - 1]); - }, - // rotate the last n stack elements p times - roll: function PostScriptStack_roll(n, p) { - var stack = this.stack; - var l = stack.length - n; - var r = stack.length - 1, c = l + (p - Math.floor(p / n) * n), i, j, t; - for (i = l, j = r; i < j; i++, j--) { - t = stack[i]; stack[i] = stack[j]; stack[j] = t; - } - for (i = l, j = c - 1; i < j; i++, j--) { - t = stack[i]; stack[i] = stack[j]; stack[j] = t; - } - for (i = c, j = r; i < j; i++, j--) { - t = stack[i]; stack[i] = stack[j]; stack[j] = t; - } - } - }; - return PostScriptStack; -})(); -var PostScriptEvaluator = (function PostScriptEvaluatorClosure() { - function PostScriptEvaluator(operators) { - this.operators = operators; - } - PostScriptEvaluator.prototype = { - execute: function PostScriptEvaluator_execute(initialStack) { - var stack = new PostScriptStack(initialStack); - var counter = 0; - var operators = this.operators; - var length = operators.length; - var operator, a, b; - while (counter < length) { - operator = operators[counter++]; - if (typeof operator === 'number') { - // Operator is really an operand and should be pushed to the stack. - stack.push(operator); - continue; - } - switch (operator) { - // non standard ps operators - case 'jz': // jump if false - b = stack.pop(); - a = stack.pop(); - if (!a) { - counter = b; - } - break; - case 'j': // jump - a = stack.pop(); - counter = a; - break; - - // all ps operators in alphabetical order (excluding if/ifelse) - case 'abs': - a = stack.pop(); - stack.push(Math.abs(a)); - break; - case 'add': - b = stack.pop(); - a = stack.pop(); - stack.push(a + b); - break; - case 'and': - b = stack.pop(); - a = stack.pop(); - if (isBool(a) && isBool(b)) { - stack.push(a && b); - } else { - stack.push(a & b); - } - break; - case 'atan': - a = stack.pop(); - stack.push(Math.atan(a)); - break; - case 'bitshift': - b = stack.pop(); - a = stack.pop(); - if (a > 0) { - stack.push(a << b); - } else { - stack.push(a >> b); - } - break; - case 'ceiling': - a = stack.pop(); - stack.push(Math.ceil(a)); - break; - case 'copy': - a = stack.pop(); - stack.copy(a); - break; - case 'cos': - a = stack.pop(); - stack.push(Math.cos(a)); - break; - case 'cvi': - a = stack.pop() | 0; - stack.push(a); - break; - case 'cvr': - // noop - break; - case 'div': - b = stack.pop(); - a = stack.pop(); - stack.push(a / b); - break; - case 'dup': - stack.copy(1); - break; - case 'eq': - b = stack.pop(); - a = stack.pop(); - stack.push(a === b); - break; - case 'exch': - stack.roll(2, 1); - break; - case 'exp': - b = stack.pop(); - a = stack.pop(); - stack.push(Math.pow(a, b)); - break; - case 'false': - stack.push(false); - break; - case 'floor': - a = stack.pop(); - stack.push(Math.floor(a)); - break; - case 'ge': - b = stack.pop(); - a = stack.pop(); - stack.push(a >= b); - break; - case 'gt': - b = stack.pop(); - a = stack.pop(); - stack.push(a > b); - break; - case 'idiv': - b = stack.pop(); - a = stack.pop(); - stack.push((a / b) | 0); - break; - case 'index': - a = stack.pop(); - stack.index(a); - break; - case 'le': - b = stack.pop(); - a = stack.pop(); - stack.push(a <= b); - break; - case 'ln': - a = stack.pop(); - stack.push(Math.log(a)); - break; - case 'log': - a = stack.pop(); - stack.push(Math.log(a) / Math.LN10); - break; - case 'lt': - b = stack.pop(); - a = stack.pop(); - stack.push(a < b); - break; - case 'mod': - b = stack.pop(); - a = stack.pop(); - stack.push(a % b); - break; - case 'mul': - b = stack.pop(); - a = stack.pop(); - stack.push(a * b); - break; - case 'ne': - b = stack.pop(); - a = stack.pop(); - stack.push(a !== b); - break; - case 'neg': - a = stack.pop(); - stack.push(-a); - break; - case 'not': - a = stack.pop(); - if (isBool(a)) { - stack.push(!a); - } else { - stack.push(~a); - } - break; - case 'or': - b = stack.pop(); - a = stack.pop(); - if (isBool(a) && isBool(b)) { - stack.push(a || b); - } else { - stack.push(a | b); - } - break; - case 'pop': - stack.pop(); - break; - case 'roll': - b = stack.pop(); - a = stack.pop(); - stack.roll(a, b); - break; - case 'round': - a = stack.pop(); - stack.push(Math.round(a)); - break; - case 'sin': - a = stack.pop(); - stack.push(Math.sin(a)); - break; - case 'sqrt': - a = stack.pop(); - stack.push(Math.sqrt(a)); - break; - case 'sub': - b = stack.pop(); - a = stack.pop(); - stack.push(a - b); - break; - case 'true': - stack.push(true); - break; - case 'truncate': - a = stack.pop(); - a = a < 0 ? Math.ceil(a) : Math.floor(a); - stack.push(a); - break; - case 'xor': - b = stack.pop(); - a = stack.pop(); - if (isBool(a) && isBool(b)) { - stack.push(a !== b); - } else { - stack.push(a ^ b); - } - break; - default: - error('Unknown operator ' + operator); - break; - } - } - return stack.stack; - } - }; - return PostScriptEvaluator; -})(); - -// Most of the PDFs functions consist of simple operations such as: -// roll, exch, sub, cvr, pop, index, dup, mul, if, gt, add. -// -// We can compile most of such programs, and at the same moment, we can -// optimize some expressions using basic math properties. Keeping track of -// min/max values will allow us to avoid extra Math.min/Math.max calls. -var PostScriptCompiler = (function PostScriptCompilerClosure() { - function AstNode(type) { - this.type = type; - } - AstNode.prototype.visit = function (visitor) { - throw new Error('abstract method'); - }; - - function AstArgument(index, min, max) { - AstNode.call(this, 'args'); - this.index = index; - this.min = min; - this.max = max; - } - AstArgument.prototype = Object.create(AstNode.prototype); - AstArgument.prototype.visit = function (visitor) { - visitor.visitArgument(this); - }; - - function AstLiteral(number) { - AstNode.call(this, 'literal'); - this.number = number; - this.min = number; - this.max = number; - } - AstLiteral.prototype = Object.create(AstNode.prototype); - AstLiteral.prototype.visit = function (visitor) { - visitor.visitLiteral(this); - }; - - function AstBinaryOperation(op, arg1, arg2, min, max) { - AstNode.call(this, 'binary'); - this.op = op; - this.arg1 = arg1; - this.arg2 = arg2; - this.min = min; - this.max = max; - } - AstBinaryOperation.prototype = Object.create(AstNode.prototype); - AstBinaryOperation.prototype.visit = function (visitor) { - visitor.visitBinaryOperation(this); - }; - - function AstMin(arg, max) { - AstNode.call(this, 'max'); - this.arg = arg; - this.min = arg.min; - this.max = max; - } - AstMin.prototype = Object.create(AstNode.prototype); - AstMin.prototype.visit = function (visitor) { - visitor.visitMin(this); - }; - - function AstVariable(index, min, max) { - AstNode.call(this, 'var'); - this.index = index; - this.min = min; - this.max = max; - } - AstVariable.prototype = Object.create(AstNode.prototype); - AstVariable.prototype.visit = function (visitor) { - visitor.visitVariable(this); - }; - - function AstVariableDefinition(variable, arg) { - AstNode.call(this, 'definition'); - this.variable = variable; - this.arg = arg; - } - AstVariableDefinition.prototype = Object.create(AstNode.prototype); - AstVariableDefinition.prototype.visit = function (visitor) { - visitor.visitVariableDefinition(this); - }; - - function ExpressionBuilderVisitor() { - this.parts = []; - } - ExpressionBuilderVisitor.prototype = { - visitArgument: function (arg) { - this.parts.push('Math.max(', arg.min, ', Math.min(', - arg.max, ', src[srcOffset + ', arg.index, ']))'); - }, - visitVariable: function (variable) { - this.parts.push('v', variable.index); - }, - visitLiteral: function (literal) { - this.parts.push(literal.number); - }, - visitBinaryOperation: function (operation) { - this.parts.push('('); - operation.arg1.visit(this); - this.parts.push(' ', operation.op, ' '); - operation.arg2.visit(this); - this.parts.push(')'); - }, - visitVariableDefinition: function (definition) { - this.parts.push('var '); - definition.variable.visit(this); - this.parts.push(' = '); - definition.arg.visit(this); - this.parts.push(';'); - }, - visitMin: function (max) { - this.parts.push('Math.min('); - max.arg.visit(this); - this.parts.push(', ', max.max, ')'); - }, - toString: function () { - return this.parts.join(''); - } - }; - - function buildAddOperation(num1, num2) { - if (num2.type === 'literal' && num2.number === 0) { - // optimization: second operand is 0 - return num1; - } - if (num1.type === 'literal' && num1.number === 0) { - // optimization: first operand is 0 - return num2; - } - if (num2.type === 'literal' && num1.type === 'literal') { - // optimization: operands operand are literals - return new AstLiteral(num1.number + num2.number); - } - return new AstBinaryOperation('+', num1, num2, - num1.min + num2.min, num1.max + num2.max); - } - - function buildMulOperation(num1, num2) { - if (num2.type === 'literal') { - // optimization: second operands is a literal... - if (num2.number === 0) { - return new AstLiteral(0); // and it's 0 - } else if (num2.number === 1) { - return num1; // and it's 1 - } else if (num1.type === 'literal') { - // ... and first operands is a literal too - return new AstLiteral(num1.number * num2.number); - } - } - if (num1.type === 'literal') { - // optimization: first operands is a literal... - if (num1.number === 0) { - return new AstLiteral(0); // and it's 0 - } else if (num1.number === 1) { - return num2; // and it's 1 - } - } - var min = Math.min(num1.min * num2.min, num1.min * num2.max, - num1.max * num2.min, num1.max * num2.max); - var max = Math.max(num1.min * num2.min, num1.min * num2.max, - num1.max * num2.min, num1.max * num2.max); - return new AstBinaryOperation('*', num1, num2, min, max); - } - - function buildSubOperation(num1, num2) { - if (num2.type === 'literal') { - // optimization: second operands is a literal... - if (num2.number === 0) { - return num1; // ... and it's 0 - } else if (num1.type === 'literal') { - // ... and first operands is a literal too - return new AstLiteral(num1.number - num2.number); - } - } - if (num2.type === 'binary' && num2.op === '-' && - num1.type === 'literal' && num1.number === 1 && - num2.arg1.type === 'literal' && num2.arg1.number === 1) { - // optimization for case: 1 - (1 - x) - return num2.arg2; - } - return new AstBinaryOperation('-', num1, num2, - num1.min - num2.max, num1.max - num2.min); - } - - function buildMinOperation(num1, max) { - if (num1.min >= max) { - // optimization: num1 min value is not less than required max - return new AstLiteral(max); // just returning max - } else if (num1.max <= max) { - // optimization: num1 max value is not greater than required max - return num1; // just returning an argument - } - return new AstMin(num1, max); - } - - function PostScriptCompiler() {} - PostScriptCompiler.prototype = { - compile: function PostScriptCompiler_compile(code, domain, range) { - var stack = []; - var i, ii; - var instructions = []; - var inputSize = domain.length >> 1, outputSize = range.length >> 1; - var lastRegister = 0; - var n, j; - var num1, num2, ast1, ast2, tmpVar, item; - for (i = 0; i < inputSize; i++) { - stack.push(new AstArgument(i, domain[i * 2], domain[i * 2 + 1])); - } - - for (i = 0, ii = code.length; i < ii; i++) { - item = code[i]; - if (typeof item === 'number') { - stack.push(new AstLiteral(item)); - continue; - } - - switch (item) { - case 'add': - if (stack.length < 2) { - return null; - } - num2 = stack.pop(); - num1 = stack.pop(); - stack.push(buildAddOperation(num1, num2)); - break; - case 'cvr': - if (stack.length < 1) { - return null; - } - break; - case 'mul': - if (stack.length < 2) { - return null; - } - num2 = stack.pop(); - num1 = stack.pop(); - stack.push(buildMulOperation(num1, num2)); - break; - case 'sub': - if (stack.length < 2) { - return null; - } - num2 = stack.pop(); - num1 = stack.pop(); - stack.push(buildSubOperation(num1, num2)); - break; - case 'exch': - if (stack.length < 2) { - return null; - } - ast1 = stack.pop(); ast2 = stack.pop(); - stack.push(ast1, ast2); - break; - case 'pop': - if (stack.length < 1) { - return null; - } - stack.pop(); - break; - case 'index': - if (stack.length < 1) { - return null; - } - num1 = stack.pop(); - if (num1.type !== 'literal') { - return null; - } - n = num1.number; - if (n < 0 || (n|0) !== n || stack.length < n) { - return null; - } - ast1 = stack[stack.length - n - 1]; - if (ast1.type === 'literal' || ast1.type === 'var') { - stack.push(ast1); - break; - } - tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max); - stack[stack.length - n - 1] = tmpVar; - stack.push(tmpVar); - instructions.push(new AstVariableDefinition(tmpVar, ast1)); - break; - case 'dup': - if (stack.length < 1) { - return null; - } - if (typeof code[i + 1] === 'number' && code[i + 2] === 'gt' && - code[i + 3] === i + 7 && code[i + 4] === 'jz' && - code[i + 5] === 'pop' && code[i + 6] === code[i + 1]) { - // special case of the commands sequence for the min operation - num1 = stack.pop(); - stack.push(buildMinOperation(num1, code[i + 1])); - i += 6; - break; - } - ast1 = stack[stack.length - 1]; - if (ast1.type === 'literal' || ast1.type === 'var') { - // we don't have to save into intermediate variable a literal or - // variable. - stack.push(ast1); - break; - } - tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max); - stack[stack.length - 1] = tmpVar; - stack.push(tmpVar); - instructions.push(new AstVariableDefinition(tmpVar, ast1)); - break; - case 'roll': - if (stack.length < 2) { - return null; - } - num2 = stack.pop(); - num1 = stack.pop(); - if (num2.type !== 'literal' || num1.type !== 'literal') { - // both roll operands must be numbers - return null; - } - j = num2.number; - n = num1.number; - if (n <= 0 || (n|0) !== n || (j|0) !== j || stack.length < n) { - // ... and integers - return null; - } - j = ((j % n) + n) % n; - if (j === 0) { - break; // just skipping -- there are nothing to rotate - } - Array.prototype.push.apply(stack, - stack.splice(stack.length - n, n - j)); - break; - default: - return null; // unsupported operator - } - } - - if (stack.length !== outputSize) { - return null; - } - - var result = []; - instructions.forEach(function (instruction) { - var statementBuilder = new ExpressionBuilderVisitor(); - instruction.visit(statementBuilder); - result.push(statementBuilder.toString()); - }); - stack.forEach(function (expr, i) { - var statementBuilder = new ExpressionBuilderVisitor(); - expr.visit(statementBuilder); - var min = range[i * 2], max = range[i * 2 + 1]; - var out = [statementBuilder.toString()]; - if (min > expr.min) { - out.unshift('Math.max(', min, ', '); - out.push(')'); - } - if (max < expr.max) { - out.unshift('Math.min(', max, ', '); - out.push(')'); - } - out.unshift('dest[destOffset + ', i, '] = '); - out.push(';'); - result.push(out.join('')); - }); - return result.join('\n'); - } - }; - - return PostScriptCompiler; -})(); - -exports.isPDFFunction = isPDFFunction; -exports.PDFFunction = PDFFunction; -exports.PostScriptEvaluator = PostScriptEvaluator; -exports.PostScriptCompiler = PostScriptCompiler; -})); - - -(function (root, factory) { - { - factory((root.pdfjsCoreColorSpace = {}), root.pdfjsSharedUtil, - root.pdfjsCorePrimitives, root.pdfjsCoreFunction, root.pdfjsCoreStream); - } -}(this, function (exports, sharedUtil, corePrimitives, coreFunction, - coreStream) { - -var error = sharedUtil.error; -var info = sharedUtil.info; -var isArray = sharedUtil.isArray; -var isString = sharedUtil.isString; -var shadow = sharedUtil.shadow; -var warn = sharedUtil.warn; -var isDict = corePrimitives.isDict; -var isName = corePrimitives.isName; -var isStream = corePrimitives.isStream; -var PDFFunction = coreFunction.PDFFunction; - -var coreImage; // see _setCoreImage below -var PDFImage; // = coreImage.PDFImage; - -var ColorSpace = (function ColorSpaceClosure() { - // Constructor should define this.numComps, this.defaultColor, this.name - function ColorSpace() { - error('should not call ColorSpace constructor'); - } - - ColorSpace.prototype = { - /** - * Converts the color value to the RGB color. The color components are - * located in the src array starting from the srcOffset. Returns the array - * of the rgb components, each value ranging from [0,255]. - */ - getRgb: function ColorSpace_getRgb(src, srcOffset) { - var rgb = new Uint8Array(3); - this.getRgbItem(src, srcOffset, rgb, 0); - return rgb; - }, - /** - * Converts the color value to the RGB color, similar to the getRgb method. - * The result placed into the dest array starting from the destOffset. - */ - getRgbItem: function ColorSpace_getRgbItem(src, srcOffset, - dest, destOffset) { - error('Should not call ColorSpace.getRgbItem'); - }, - /** - * Converts the specified number of the color values to the RGB colors. - * The colors are located in the src array starting from the srcOffset. - * The result is placed into the dest array starting from the destOffset. - * The src array items shall be in [0,2^bits) range, the dest array items - * will be in [0,255] range. alpha01 indicates how many alpha components - * there are in the dest array; it will be either 0 (RGB array) or 1 (RGBA - * array). - */ - getRgbBuffer: function ColorSpace_getRgbBuffer(src, srcOffset, count, - dest, destOffset, bits, - alpha01) { - error('Should not call ColorSpace.getRgbBuffer'); - }, - /** - * Determines the number of bytes required to store the result of the - * conversion done by the getRgbBuffer method. As in getRgbBuffer, - * |alpha01| is either 0 (RGB output) or 1 (RGBA output). - */ - getOutputLength: function ColorSpace_getOutputLength(inputLength, - alpha01) { - error('Should not call ColorSpace.getOutputLength'); - }, - /** - * Returns true if source data will be equal the result/output data. - */ - isPassthrough: function ColorSpace_isPassthrough(bits) { - return false; - }, - /** - * Fills in the RGB colors in the destination buffer. alpha01 indicates - * how many alpha components there are in the dest array; it will be either - * 0 (RGB array) or 1 (RGBA array). - */ - fillRgb: function ColorSpace_fillRgb(dest, originalWidth, - originalHeight, width, height, - actualHeight, bpc, comps, alpha01) { - var count = originalWidth * originalHeight; - var rgbBuf = null; - var numComponentColors = 1 << bpc; - var needsResizing = originalHeight !== height || originalWidth !== width; - var i, ii; - - if (this.isPassthrough(bpc)) { - rgbBuf = comps; - } else if (this.numComps === 1 && count > numComponentColors && - this.name !== 'DeviceGray' && this.name !== 'DeviceRGB') { - // Optimization: create a color map when there is just one component and - // we are converting more colors than the size of the color map. We - // don't build the map if the colorspace is gray or rgb since those - // methods are faster than building a map. This mainly offers big speed - // ups for indexed and alternate colorspaces. - // - // TODO it may be worth while to cache the color map. While running - // testing I never hit a cache so I will leave that out for now (perhaps - // we are reparsing colorspaces too much?). - var allColors = bpc <= 8 ? new Uint8Array(numComponentColors) : - new Uint16Array(numComponentColors); - var key; - for (i = 0; i < numComponentColors; i++) { - allColors[i] = i; - } - var colorMap = new Uint8Array(numComponentColors * 3); - this.getRgbBuffer(allColors, 0, numComponentColors, colorMap, 0, bpc, - /* alpha01 = */ 0); - - var destPos, rgbPos; - if (!needsResizing) { - // Fill in the RGB values directly into |dest|. - destPos = 0; - for (i = 0; i < count; ++i) { - key = comps[i] * 3; - dest[destPos++] = colorMap[key]; - dest[destPos++] = colorMap[key + 1]; - dest[destPos++] = colorMap[key + 2]; - destPos += alpha01; - } - } else { - rgbBuf = new Uint8Array(count * 3); - rgbPos = 0; - for (i = 0; i < count; ++i) { - key = comps[i] * 3; - rgbBuf[rgbPos++] = colorMap[key]; - rgbBuf[rgbPos++] = colorMap[key + 1]; - rgbBuf[rgbPos++] = colorMap[key + 2]; - } - } - } else { - if (!needsResizing) { - // Fill in the RGB values directly into |dest|. - this.getRgbBuffer(comps, 0, width * actualHeight, dest, 0, bpc, - alpha01); - } else { - rgbBuf = new Uint8Array(count * 3); - this.getRgbBuffer(comps, 0, count, rgbBuf, 0, bpc, - /* alpha01 = */ 0); - } - } - - if (rgbBuf) { - if (needsResizing) { - PDFImage.resize(rgbBuf, bpc, 3, originalWidth, originalHeight, width, - height, dest, alpha01); - } else { - rgbPos = 0; - destPos = 0; - for (i = 0, ii = width * actualHeight; i < ii; i++) { - dest[destPos++] = rgbBuf[rgbPos++]; - dest[destPos++] = rgbBuf[rgbPos++]; - dest[destPos++] = rgbBuf[rgbPos++]; - destPos += alpha01; - } - } - } - }, - /** - * True if the colorspace has components in the default range of [0, 1]. - * This should be true for all colorspaces except for lab color spaces - * which are [0,100], [-128, 127], [-128, 127]. - */ - usesZeroToOneRange: true - }; - - ColorSpace.parse = function ColorSpace_parse(cs, xref, res) { - var IR = ColorSpace.parseToIR(cs, xref, res); - if (IR instanceof AlternateCS) { - return IR; - } - return ColorSpace.fromIR(IR); - }; - - ColorSpace.fromIR = function ColorSpace_fromIR(IR) { - var name = isArray(IR) ? IR[0] : IR; - var whitePoint, blackPoint, gamma; - - switch (name) { - case 'DeviceGrayCS': - return this.singletons.gray; - case 'DeviceRgbCS': - return this.singletons.rgb; - case 'DeviceCmykCS': - return this.singletons.cmyk; - case 'CalGrayCS': - whitePoint = IR[1].WhitePoint; - blackPoint = IR[1].BlackPoint; - gamma = IR[1].Gamma; - return new CalGrayCS(whitePoint, blackPoint, gamma); - case 'CalRGBCS': - whitePoint = IR[1].WhitePoint; - blackPoint = IR[1].BlackPoint; - gamma = IR[1].Gamma; - var matrix = IR[1].Matrix; - return new CalRGBCS(whitePoint, blackPoint, gamma, matrix); - case 'PatternCS': - var basePatternCS = IR[1]; - if (basePatternCS) { - basePatternCS = ColorSpace.fromIR(basePatternCS); - } - return new PatternCS(basePatternCS); - case 'IndexedCS': - var baseIndexedCS = IR[1]; - var hiVal = IR[2]; - var lookup = IR[3]; - return new IndexedCS(ColorSpace.fromIR(baseIndexedCS), hiVal, lookup); - case 'AlternateCS': - var numComps = IR[1]; - var alt = IR[2]; - var tintFnIR = IR[3]; - - return new AlternateCS(numComps, ColorSpace.fromIR(alt), - PDFFunction.fromIR(tintFnIR)); - case 'LabCS': - whitePoint = IR[1].WhitePoint; - blackPoint = IR[1].BlackPoint; - var range = IR[1].Range; - return new LabCS(whitePoint, blackPoint, range); - default: - error('Unknown name ' + name); - } - return null; - }; - - ColorSpace.parseToIR = function ColorSpace_parseToIR(cs, xref, res) { - if (isName(cs)) { - var colorSpaces = res.get('ColorSpace'); - if (isDict(colorSpaces)) { - var refcs = colorSpaces.get(cs.name); - if (refcs) { - cs = refcs; - } - } - } - - cs = xref.fetchIfRef(cs); - var mode; - - if (isName(cs)) { - mode = cs.name; - this.mode = mode; - - switch (mode) { - case 'DeviceGray': - case 'G': - return 'DeviceGrayCS'; - case 'DeviceRGB': - case 'RGB': - return 'DeviceRgbCS'; - case 'DeviceCMYK': - case 'CMYK': - return 'DeviceCmykCS'; - case 'Pattern': - return ['PatternCS', null]; - default: - error('unrecognized colorspace ' + mode); - } - } else if (isArray(cs)) { - mode = xref.fetchIfRef(cs[0]).name; - this.mode = mode; - var numComps, params, alt; - - switch (mode) { - case 'DeviceGray': - case 'G': - return 'DeviceGrayCS'; - case 'DeviceRGB': - case 'RGB': - return 'DeviceRgbCS'; - case 'DeviceCMYK': - case 'CMYK': - return 'DeviceCmykCS'; - case 'CalGray': - params = xref.fetchIfRef(cs[1]).getAll(); - return ['CalGrayCS', params]; - case 'CalRGB': - params = xref.fetchIfRef(cs[1]).getAll(); - return ['CalRGBCS', params]; - case 'ICCBased': - var stream = xref.fetchIfRef(cs[1]); - var dict = stream.dict; - numComps = dict.get('N'); - alt = dict.get('Alternate'); - if (alt) { - var altIR = ColorSpace.parseToIR(alt, xref, res); - // Parse the /Alternate CS to ensure that the number of components - // are correct, and also (indirectly) that it is not a PatternCS. - var altCS = ColorSpace.fromIR(altIR); - if (altCS.numComps === numComps) { - return altIR; - } - warn('ICCBased color space: Ignoring incorrect /Alternate entry.'); - } - if (numComps === 1) { - return 'DeviceGrayCS'; - } else if (numComps === 3) { - return 'DeviceRgbCS'; - } else if (numComps === 4) { - return 'DeviceCmykCS'; - } - break; - case 'Pattern': - var basePatternCS = cs[1] || null; - if (basePatternCS) { - basePatternCS = ColorSpace.parseToIR(basePatternCS, xref, res); - } - return ['PatternCS', basePatternCS]; - case 'Indexed': - case 'I': - var baseIndexedCS = ColorSpace.parseToIR(cs[1], xref, res); - var hiVal = xref.fetchIfRef(cs[2]) + 1; - var lookup = xref.fetchIfRef(cs[3]); - if (isStream(lookup)) { - lookup = lookup.getBytes(); - } - return ['IndexedCS', baseIndexedCS, hiVal, lookup]; - case 'Separation': - case 'DeviceN': - var name = xref.fetchIfRef(cs[1]); - numComps = 1; - if (isName(name)) { - numComps = 1; - } else if (isArray(name)) { - numComps = name.length; - } - alt = ColorSpace.parseToIR(cs[2], xref, res); - var tintFnIR = PDFFunction.getIR(xref, xref.fetchIfRef(cs[3])); - return ['AlternateCS', numComps, alt, tintFnIR]; - case 'Lab': - params = xref.fetchIfRef(cs[1]).getAll(); - return ['LabCS', params]; - default: - error('unimplemented color space object "' + mode + '"'); - } - } else { - error('unrecognized color space object: "' + cs + '"'); - } - return null; - }; - /** - * Checks if a decode map matches the default decode map for a color space. - * This handles the general decode maps where there are two values per - * component. e.g. [0, 1, 0, 1, 0, 1] for a RGB color. - * This does not handle Lab, Indexed, or Pattern decode maps since they are - * slightly different. - * @param {Array} decode Decode map (usually from an image). - * @param {Number} n Number of components the color space has. - */ - ColorSpace.isDefaultDecode = function ColorSpace_isDefaultDecode(decode, n) { - if (!isArray(decode)) { - return true; - } - - if (n * 2 !== decode.length) { - warn('The decode map is not the correct length'); - return true; - } - for (var i = 0, ii = decode.length; i < ii; i += 2) { - if (decode[i] !== 0 || decode[i + 1] !== 1) { - return false; - } - } - return true; - }; - - ColorSpace.singletons = { - get gray() { - return shadow(this, 'gray', new DeviceGrayCS()); - }, - get rgb() { - return shadow(this, 'rgb', new DeviceRgbCS()); - }, - get cmyk() { - return shadow(this, 'cmyk', new DeviceCmykCS()); - } - }; - - return ColorSpace; -})(); - -/** - * Alternate color space handles both Separation and DeviceN color spaces. A - * Separation color space is actually just a DeviceN with one color component. - * Both color spaces use a tinting function to convert colors to a base color - * space. - */ -var AlternateCS = (function AlternateCSClosure() { - function AlternateCS(numComps, base, tintFn) { - this.name = 'Alternate'; - this.numComps = numComps; - this.defaultColor = new Float32Array(numComps); - for (var i = 0; i < numComps; ++i) { - this.defaultColor[i] = 1; - } - this.base = base; - this.tintFn = tintFn; - this.tmpBuf = new Float32Array(base.numComps); - } - - AlternateCS.prototype = { - getRgb: ColorSpace.prototype.getRgb, - getRgbItem: function AlternateCS_getRgbItem(src, srcOffset, - dest, destOffset) { - var tmpBuf = this.tmpBuf; - this.tintFn(src, srcOffset, tmpBuf, 0); - this.base.getRgbItem(tmpBuf, 0, dest, destOffset); - }, - getRgbBuffer: function AlternateCS_getRgbBuffer(src, srcOffset, count, - dest, destOffset, bits, - alpha01) { - var tintFn = this.tintFn; - var base = this.base; - var scale = 1 / ((1 << bits) - 1); - var baseNumComps = base.numComps; - var usesZeroToOneRange = base.usesZeroToOneRange; - var isPassthrough = (base.isPassthrough(8) || !usesZeroToOneRange) && - alpha01 === 0; - var pos = isPassthrough ? destOffset : 0; - var baseBuf = isPassthrough ? dest : new Uint8Array(baseNumComps * count); - var numComps = this.numComps; - - var scaled = new Float32Array(numComps); - var tinted = new Float32Array(baseNumComps); - var i, j; - if (usesZeroToOneRange) { - for (i = 0; i < count; i++) { - for (j = 0; j < numComps; j++) { - scaled[j] = src[srcOffset++] * scale; - } - tintFn(scaled, 0, tinted, 0); - for (j = 0; j < baseNumComps; j++) { - baseBuf[pos++] = tinted[j] * 255; - } - } - } else { - for (i = 0; i < count; i++) { - for (j = 0; j < numComps; j++) { - scaled[j] = src[srcOffset++] * scale; - } - tintFn(scaled, 0, tinted, 0); - base.getRgbItem(tinted, 0, baseBuf, pos); - pos += baseNumComps; - } - } - if (!isPassthrough) { - base.getRgbBuffer(baseBuf, 0, count, dest, destOffset, 8, alpha01); - } - }, - getOutputLength: function AlternateCS_getOutputLength(inputLength, - alpha01) { - return this.base.getOutputLength(inputLength * - this.base.numComps / this.numComps, - alpha01); - }, - isPassthrough: ColorSpace.prototype.isPassthrough, - fillRgb: ColorSpace.prototype.fillRgb, - isDefaultDecode: function AlternateCS_isDefaultDecode(decodeMap) { - return ColorSpace.isDefaultDecode(decodeMap, this.numComps); - }, - usesZeroToOneRange: true - }; - - return AlternateCS; -})(); - -var PatternCS = (function PatternCSClosure() { - function PatternCS(baseCS) { - this.name = 'Pattern'; - this.base = baseCS; - } - PatternCS.prototype = {}; - - return PatternCS; -})(); - -var IndexedCS = (function IndexedCSClosure() { - function IndexedCS(base, highVal, lookup) { - this.name = 'Indexed'; - this.numComps = 1; - this.defaultColor = new Uint8Array([0]); - this.base = base; - this.highVal = highVal; - - var baseNumComps = base.numComps; - var length = baseNumComps * highVal; - var lookupArray; - - if (isStream(lookup)) { - lookupArray = new Uint8Array(length); - var bytes = lookup.getBytes(length); - lookupArray.set(bytes); - } else if (isString(lookup)) { - lookupArray = new Uint8Array(length); - for (var i = 0; i < length; ++i) { - lookupArray[i] = lookup.charCodeAt(i); - } - } else if (lookup instanceof Uint8Array || lookup instanceof Array) { - lookupArray = lookup; - } else { - error('Unrecognized lookup table: ' + lookup); - } - this.lookup = lookupArray; - } - - IndexedCS.prototype = { - getRgb: ColorSpace.prototype.getRgb, - getRgbItem: function IndexedCS_getRgbItem(src, srcOffset, - dest, destOffset) { - var numComps = this.base.numComps; - var start = src[srcOffset] * numComps; - this.base.getRgbItem(this.lookup, start, dest, destOffset); - }, - getRgbBuffer: function IndexedCS_getRgbBuffer(src, srcOffset, count, - dest, destOffset, bits, - alpha01) { - var base = this.base; - var numComps = base.numComps; - var outputDelta = base.getOutputLength(numComps, alpha01); - var lookup = this.lookup; - - for (var i = 0; i < count; ++i) { - var lookupPos = src[srcOffset++] * numComps; - base.getRgbBuffer(lookup, lookupPos, 1, dest, destOffset, 8, alpha01); - destOffset += outputDelta; - } - }, - getOutputLength: function IndexedCS_getOutputLength(inputLength, alpha01) { - return this.base.getOutputLength(inputLength * this.base.numComps, - alpha01); - }, - isPassthrough: ColorSpace.prototype.isPassthrough, - fillRgb: ColorSpace.prototype.fillRgb, - isDefaultDecode: function IndexedCS_isDefaultDecode(decodeMap) { - // indexed color maps shouldn't be changed - return true; - }, - usesZeroToOneRange: true - }; - return IndexedCS; -})(); - -var DeviceGrayCS = (function DeviceGrayCSClosure() { - function DeviceGrayCS() { - this.name = 'DeviceGray'; - this.numComps = 1; - this.defaultColor = new Float32Array([0]); - } - - DeviceGrayCS.prototype = { - getRgb: ColorSpace.prototype.getRgb, - getRgbItem: function DeviceGrayCS_getRgbItem(src, srcOffset, - dest, destOffset) { - var c = (src[srcOffset] * 255) | 0; - c = c < 0 ? 0 : c > 255 ? 255 : c; - dest[destOffset] = dest[destOffset + 1] = dest[destOffset + 2] = c; - }, - getRgbBuffer: function DeviceGrayCS_getRgbBuffer(src, srcOffset, count, - dest, destOffset, bits, - alpha01) { - var scale = 255 / ((1 << bits) - 1); - var j = srcOffset, q = destOffset; - for (var i = 0; i < count; ++i) { - var c = (scale * src[j++]) | 0; - dest[q++] = c; - dest[q++] = c; - dest[q++] = c; - q += alpha01; - } - }, - getOutputLength: function DeviceGrayCS_getOutputLength(inputLength, - alpha01) { - return inputLength * (3 + alpha01); - }, - isPassthrough: ColorSpace.prototype.isPassthrough, - fillRgb: ColorSpace.prototype.fillRgb, - isDefaultDecode: function DeviceGrayCS_isDefaultDecode(decodeMap) { - return ColorSpace.isDefaultDecode(decodeMap, this.numComps); - }, - usesZeroToOneRange: true - }; - return DeviceGrayCS; -})(); - -var DeviceRgbCS = (function DeviceRgbCSClosure() { - function DeviceRgbCS() { - this.name = 'DeviceRGB'; - this.numComps = 3; - this.defaultColor = new Float32Array([0, 0, 0]); - } - DeviceRgbCS.prototype = { - getRgb: ColorSpace.prototype.getRgb, - getRgbItem: function DeviceRgbCS_getRgbItem(src, srcOffset, - dest, destOffset) { - var r = (src[srcOffset] * 255) | 0; - var g = (src[srcOffset + 1] * 255) | 0; - var b = (src[srcOffset + 2] * 255) | 0; - dest[destOffset] = r < 0 ? 0 : r > 255 ? 255 : r; - dest[destOffset + 1] = g < 0 ? 0 : g > 255 ? 255 : g; - dest[destOffset + 2] = b < 0 ? 0 : b > 255 ? 255 : b; - }, - getRgbBuffer: function DeviceRgbCS_getRgbBuffer(src, srcOffset, count, - dest, destOffset, bits, - alpha01) { - if (bits === 8 && alpha01 === 0) { - dest.set(src.subarray(srcOffset, srcOffset + count * 3), destOffset); - return; - } - var scale = 255 / ((1 << bits) - 1); - var j = srcOffset, q = destOffset; - for (var i = 0; i < count; ++i) { - dest[q++] = (scale * src[j++]) | 0; - dest[q++] = (scale * src[j++]) | 0; - dest[q++] = (scale * src[j++]) | 0; - q += alpha01; - } - }, - getOutputLength: function DeviceRgbCS_getOutputLength(inputLength, - alpha01) { - return (inputLength * (3 + alpha01) / 3) | 0; - }, - isPassthrough: function DeviceRgbCS_isPassthrough(bits) { - return bits === 8; - }, - fillRgb: ColorSpace.prototype.fillRgb, - isDefaultDecode: function DeviceRgbCS_isDefaultDecode(decodeMap) { - return ColorSpace.isDefaultDecode(decodeMap, this.numComps); - }, - usesZeroToOneRange: true - }; - return DeviceRgbCS; -})(); - -var DeviceCmykCS = (function DeviceCmykCSClosure() { - // The coefficients below was found using numerical analysis: the method of - // steepest descent for the sum((f_i - color_value_i)^2) for r/g/b colors, - // where color_value is the tabular value from the table of sampled RGB colors - // from CMYK US Web Coated (SWOP) colorspace, and f_i is the corresponding - // CMYK color conversion using the estimation below: - // f(A, B,.. N) = Acc+Bcm+Ccy+Dck+c+Fmm+Gmy+Hmk+Im+Jyy+Kyk+Ly+Mkk+Nk+255 - function convertToRgb(src, srcOffset, srcScale, dest, destOffset) { - var c = src[srcOffset + 0] * srcScale; - var m = src[srcOffset + 1] * srcScale; - var y = src[srcOffset + 2] * srcScale; - var k = src[srcOffset + 3] * srcScale; - - var r = - (c * (-4.387332384609988 * c + 54.48615194189176 * m + - 18.82290502165302 * y + 212.25662451639585 * k + - -285.2331026137004) + - m * (1.7149763477362134 * m - 5.6096736904047315 * y + - -17.873870861415444 * k - 5.497006427196366) + - y * (-2.5217340131683033 * y - 21.248923337353073 * k + - 17.5119270841813) + - k * (-21.86122147463605 * k - 189.48180835922747) + 255) | 0; - var g = - (c * (8.841041422036149 * c + 60.118027045597366 * m + - 6.871425592049007 * y + 31.159100130055922 * k + - -79.2970844816548) + - m * (-15.310361306967817 * m + 17.575251261109482 * y + - 131.35250912493976 * k - 190.9453302588951) + - y * (4.444339102852739 * y + 9.8632861493405 * k - 24.86741582555878) + - k * (-20.737325471181034 * k - 187.80453709719578) + 255) | 0; - var b = - (c * (0.8842522430003296 * c + 8.078677503112928 * m + - 30.89978309703729 * y - 0.23883238689178934 * k + - -14.183576799673286) + - m * (10.49593273432072 * m + 63.02378494754052 * y + - 50.606957656360734 * k - 112.23884253719248) + - y * (0.03296041114873217 * y + 115.60384449646641 * k + - -193.58209356861505) + - k * (-22.33816807309886 * k - 180.12613974708367) + 255) | 0; - - dest[destOffset] = r > 255 ? 255 : r < 0 ? 0 : r; - dest[destOffset + 1] = g > 255 ? 255 : g < 0 ? 0 : g; - dest[destOffset + 2] = b > 255 ? 255 : b < 0 ? 0 : b; - } - - function DeviceCmykCS() { - this.name = 'DeviceCMYK'; - this.numComps = 4; - this.defaultColor = new Float32Array([0, 0, 0, 1]); - } - DeviceCmykCS.prototype = { - getRgb: ColorSpace.prototype.getRgb, - getRgbItem: function DeviceCmykCS_getRgbItem(src, srcOffset, - dest, destOffset) { - convertToRgb(src, srcOffset, 1, dest, destOffset); - }, - getRgbBuffer: function DeviceCmykCS_getRgbBuffer(src, srcOffset, count, - dest, destOffset, bits, - alpha01) { - var scale = 1 / ((1 << bits) - 1); - for (var i = 0; i < count; i++) { - convertToRgb(src, srcOffset, scale, dest, destOffset); - srcOffset += 4; - destOffset += 3 + alpha01; - } - }, - getOutputLength: function DeviceCmykCS_getOutputLength(inputLength, - alpha01) { - return (inputLength / 4 * (3 + alpha01)) | 0; - }, - isPassthrough: ColorSpace.prototype.isPassthrough, - fillRgb: ColorSpace.prototype.fillRgb, - isDefaultDecode: function DeviceCmykCS_isDefaultDecode(decodeMap) { - return ColorSpace.isDefaultDecode(decodeMap, this.numComps); - }, - usesZeroToOneRange: true - }; - - return DeviceCmykCS; -})(); - -// -// CalGrayCS: Based on "PDF Reference, Sixth Ed", p.245 -// -var CalGrayCS = (function CalGrayCSClosure() { - function CalGrayCS(whitePoint, blackPoint, gamma) { - this.name = 'CalGray'; - this.numComps = 1; - this.defaultColor = new Float32Array([0]); - - if (!whitePoint) { - error('WhitePoint missing - required for color space CalGray'); - } - blackPoint = blackPoint || [0, 0, 0]; - gamma = gamma || 1; - - // Translate arguments to spec variables. - this.XW = whitePoint[0]; - this.YW = whitePoint[1]; - this.ZW = whitePoint[2]; - - this.XB = blackPoint[0]; - this.YB = blackPoint[1]; - this.ZB = blackPoint[2]; - - this.G = gamma; - - // Validate variables as per spec. - if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) { - error('Invalid WhitePoint components for ' + this.name + - ', no fallback available'); - } - - if (this.XB < 0 || this.YB < 0 || this.ZB < 0) { - info('Invalid BlackPoint for ' + this.name + ', falling back to default'); - this.XB = this.YB = this.ZB = 0; - } - - if (this.XB !== 0 || this.YB !== 0 || this.ZB !== 0) { - warn(this.name + ', BlackPoint: XB: ' + this.XB + ', YB: ' + this.YB + - ', ZB: ' + this.ZB + ', only default values are supported.'); - } - - if (this.G < 1) { - info('Invalid Gamma: ' + this.G + ' for ' + this.name + - ', falling back to default'); - this.G = 1; - } - } - - function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) { - // A represents a gray component of a calibrated gray space. - // A <---> AG in the spec - var A = src[srcOffset] * scale; - var AG = Math.pow(A, cs.G); - - // Computes L as per spec. ( = cs.YW * AG ) - // Except if other than default BlackPoint values are used. - var L = cs.YW * AG; - // http://www.poynton.com/notes/colour_and_gamma/ColorFAQ.html, Ch 4. - // Convert values to rgb range [0, 255]. - var val = Math.max(295.8 * Math.pow(L, 0.333333333333333333) - 40.8, 0) | 0; - dest[destOffset] = val; - dest[destOffset + 1] = val; - dest[destOffset + 2] = val; - } - - CalGrayCS.prototype = { - getRgb: ColorSpace.prototype.getRgb, - getRgbItem: function CalGrayCS_getRgbItem(src, srcOffset, - dest, destOffset) { - convertToRgb(this, src, srcOffset, dest, destOffset, 1); - }, - getRgbBuffer: function CalGrayCS_getRgbBuffer(src, srcOffset, count, - dest, destOffset, bits, - alpha01) { - var scale = 1 / ((1 << bits) - 1); - - for (var i = 0; i < count; ++i) { - convertToRgb(this, src, srcOffset, dest, destOffset, scale); - srcOffset += 1; - destOffset += 3 + alpha01; - } - }, - getOutputLength: function CalGrayCS_getOutputLength(inputLength, alpha01) { - return inputLength * (3 + alpha01); - }, - isPassthrough: ColorSpace.prototype.isPassthrough, - fillRgb: ColorSpace.prototype.fillRgb, - isDefaultDecode: function CalGrayCS_isDefaultDecode(decodeMap) { - return ColorSpace.isDefaultDecode(decodeMap, this.numComps); - }, - usesZeroToOneRange: true - }; - return CalGrayCS; -})(); - -// -// CalRGBCS: Based on "PDF Reference, Sixth Ed", p.247 -// -var CalRGBCS = (function CalRGBCSClosure() { - - // See http://www.brucelindbloom.com/index.html?Eqn_ChromAdapt.html for these - // matrices. - var BRADFORD_SCALE_MATRIX = new Float32Array([ - 0.8951, 0.2664, -0.1614, - -0.7502, 1.7135, 0.0367, - 0.0389, -0.0685, 1.0296]); - - var BRADFORD_SCALE_INVERSE_MATRIX = new Float32Array([ - 0.9869929, -0.1470543, 0.1599627, - 0.4323053, 0.5183603, 0.0492912, - -0.0085287, 0.0400428, 0.9684867]); - - // See http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html. - var SRGB_D65_XYZ_TO_RGB_MATRIX = new Float32Array([ - 3.2404542, -1.5371385, -0.4985314, - -0.9692660, 1.8760108, 0.0415560, - 0.0556434, -0.2040259, 1.0572252]); - - var FLAT_WHITEPOINT_MATRIX = new Float32Array([1, 1, 1]); - - var tempNormalizeMatrix = new Float32Array(3); - var tempConvertMatrix1 = new Float32Array(3); - var tempConvertMatrix2 = new Float32Array(3); - - var DECODE_L_CONSTANT = Math.pow(((8 + 16) / 116), 3) / 8.0; - - function CalRGBCS(whitePoint, blackPoint, gamma, matrix) { - this.name = 'CalRGB'; - this.numComps = 3; - this.defaultColor = new Float32Array(3); - - if (!whitePoint) { - error('WhitePoint missing - required for color space CalRGB'); - } - blackPoint = blackPoint || new Float32Array(3); - gamma = gamma || new Float32Array([1, 1, 1]); - matrix = matrix || new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]); - - // Translate arguments to spec variables. - var XW = whitePoint[0]; - var YW = whitePoint[1]; - var ZW = whitePoint[2]; - this.whitePoint = whitePoint; - - var XB = blackPoint[0]; - var YB = blackPoint[1]; - var ZB = blackPoint[2]; - this.blackPoint = blackPoint; - - this.GR = gamma[0]; - this.GG = gamma[1]; - this.GB = gamma[2]; - - this.MXA = matrix[0]; - this.MYA = matrix[1]; - this.MZA = matrix[2]; - this.MXB = matrix[3]; - this.MYB = matrix[4]; - this.MZB = matrix[5]; - this.MXC = matrix[6]; - this.MYC = matrix[7]; - this.MZC = matrix[8]; - - // Validate variables as per spec. - if (XW < 0 || ZW < 0 || YW !== 1) { - error('Invalid WhitePoint components for ' + this.name + - ', no fallback available'); - } - - if (XB < 0 || YB < 0 || ZB < 0) { - info('Invalid BlackPoint for ' + this.name + ' [' + XB + ', ' + YB + - ', ' + ZB + '], falling back to default'); - this.blackPoint = new Float32Array(3); - } - - if (this.GR < 0 || this.GG < 0 || this.GB < 0) { - info('Invalid Gamma [' + this.GR + ', ' + this.GG + ', ' + this.GB + - '] for ' + this.name + ', falling back to default'); - this.GR = this.GG = this.GB = 1; - } - - if (this.MXA < 0 || this.MYA < 0 || this.MZA < 0 || - this.MXB < 0 || this.MYB < 0 || this.MZB < 0 || - this.MXC < 0 || this.MYC < 0 || this.MZC < 0) { - info('Invalid Matrix for ' + this.name + ' [' + - this.MXA + ', ' + this.MYA + ', ' + this.MZA + - this.MXB + ', ' + this.MYB + ', ' + this.MZB + - this.MXC + ', ' + this.MYC + ', ' + this.MZC + - '], falling back to default'); - this.MXA = this.MYB = this.MZC = 1; - this.MXB = this.MYA = this.MZA = this.MXC = this.MYC = this.MZB = 0; - } - } - - function matrixProduct(a, b, result) { - result[0] = a[0] * b[0] + a[1] * b[1] + a[2] * b[2]; - result[1] = a[3] * b[0] + a[4] * b[1] + a[5] * b[2]; - result[2] = a[6] * b[0] + a[7] * b[1] + a[8] * b[2]; - } - - function convertToFlat(sourceWhitePoint, LMS, result) { - result[0] = LMS[0] * 1 / sourceWhitePoint[0]; - result[1] = LMS[1] * 1 / sourceWhitePoint[1]; - result[2] = LMS[2] * 1 / sourceWhitePoint[2]; - } - - function convertToD65(sourceWhitePoint, LMS, result) { - var D65X = 0.95047; - var D65Y = 1; - var D65Z = 1.08883; - - result[0] = LMS[0] * D65X / sourceWhitePoint[0]; - result[1] = LMS[1] * D65Y / sourceWhitePoint[1]; - result[2] = LMS[2] * D65Z / sourceWhitePoint[2]; - } - - function sRGBTransferFunction(color) { - // See http://en.wikipedia.org/wiki/SRGB. - if (color <= 0.0031308){ - return adjustToRange(0, 1, 12.92 * color); - } - - return adjustToRange(0, 1, (1 + 0.055) * Math.pow(color, 1 / 2.4) - 0.055); - } - - function adjustToRange(min, max, value) { - return Math.max(min, Math.min(max, value)); - } - - function decodeL(L) { - if (L < 0) { - return -decodeL(-L); - } - - if (L > 8.0) { - return Math.pow(((L + 16) / 116), 3); - } - - return L * DECODE_L_CONSTANT; - } - - function compensateBlackPoint(sourceBlackPoint, XYZ_Flat, result) { - - // In case the blackPoint is already the default blackPoint then there is - // no need to do compensation. - if (sourceBlackPoint[0] === 0 && - sourceBlackPoint[1] === 0 && - sourceBlackPoint[2] === 0) { - result[0] = XYZ_Flat[0]; - result[1] = XYZ_Flat[1]; - result[2] = XYZ_Flat[2]; - return; - } - - // For the blackPoint calculation details, please see - // http://www.adobe.com/content/dam/Adobe/en/devnet/photoshop/sdk/ - // AdobeBPC.pdf. - // The destination blackPoint is the default blackPoint [0, 0, 0]. - var zeroDecodeL = decodeL(0); - - var X_DST = zeroDecodeL; - var X_SRC = decodeL(sourceBlackPoint[0]); - - var Y_DST = zeroDecodeL; - var Y_SRC = decodeL(sourceBlackPoint[1]); - - var Z_DST = zeroDecodeL; - var Z_SRC = decodeL(sourceBlackPoint[2]); - - var X_Scale = (1 - X_DST) / (1 - X_SRC); - var X_Offset = 1 - X_Scale; - - var Y_Scale = (1 - Y_DST) / (1 - Y_SRC); - var Y_Offset = 1 - Y_Scale; - - var Z_Scale = (1 - Z_DST) / (1 - Z_SRC); - var Z_Offset = 1 - Z_Scale; - - result[0] = XYZ_Flat[0] * X_Scale + X_Offset; - result[1] = XYZ_Flat[1] * Y_Scale + Y_Offset; - result[2] = XYZ_Flat[2] * Z_Scale + Z_Offset; - } - - function normalizeWhitePointToFlat(sourceWhitePoint, XYZ_In, result) { - - // In case the whitePoint is already flat then there is no need to do - // normalization. - if (sourceWhitePoint[0] === 1 && sourceWhitePoint[2] === 1) { - result[0] = XYZ_In[0]; - result[1] = XYZ_In[1]; - result[2] = XYZ_In[2]; - return; - } - - var LMS = result; - matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS); - - var LMS_Flat = tempNormalizeMatrix; - convertToFlat(sourceWhitePoint, LMS, LMS_Flat); - - matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_Flat, result); - } - - function normalizeWhitePointToD65(sourceWhitePoint, XYZ_In, result) { - - var LMS = result; - matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS); - - var LMS_D65 = tempNormalizeMatrix; - convertToD65(sourceWhitePoint, LMS, LMS_D65); - - matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_D65, result); - } - - function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) { - // A, B and C represent a red, green and blue components of a calibrated - // rgb space. - var A = adjustToRange(0, 1, src[srcOffset] * scale); - var B = adjustToRange(0, 1, src[srcOffset + 1] * scale); - var C = adjustToRange(0, 1, src[srcOffset + 2] * scale); - - // A <---> AGR in the spec - // B <---> BGG in the spec - // C <---> CGB in the spec - var AGR = Math.pow(A, cs.GR); - var BGG = Math.pow(B, cs.GG); - var CGB = Math.pow(C, cs.GB); - - // Computes intermediate variables L, M, N as per spec. - // To decode X, Y, Z values map L, M, N directly to them. - var X = cs.MXA * AGR + cs.MXB * BGG + cs.MXC * CGB; - var Y = cs.MYA * AGR + cs.MYB * BGG + cs.MYC * CGB; - var Z = cs.MZA * AGR + cs.MZB * BGG + cs.MZC * CGB; - - // The following calculations are based on this document: - // http://www.adobe.com/content/dam/Adobe/en/devnet/photoshop/sdk/ - // AdobeBPC.pdf. - var XYZ = tempConvertMatrix1; - XYZ[0] = X; - XYZ[1] = Y; - XYZ[2] = Z; - var XYZ_Flat = tempConvertMatrix2; - - normalizeWhitePointToFlat(cs.whitePoint, XYZ, XYZ_Flat); - - var XYZ_Black = tempConvertMatrix1; - compensateBlackPoint(cs.blackPoint, XYZ_Flat, XYZ_Black); - - var XYZ_D65 = tempConvertMatrix2; - normalizeWhitePointToD65(FLAT_WHITEPOINT_MATRIX, XYZ_Black, XYZ_D65); - - var SRGB = tempConvertMatrix1; - matrixProduct(SRGB_D65_XYZ_TO_RGB_MATRIX, XYZ_D65, SRGB); - - var sR = sRGBTransferFunction(SRGB[0]); - var sG = sRGBTransferFunction(SRGB[1]); - var sB = sRGBTransferFunction(SRGB[2]); - - // Convert the values to rgb range [0, 255]. - dest[destOffset] = Math.round(sR * 255); - dest[destOffset + 1] = Math.round(sG * 255); - dest[destOffset + 2] = Math.round(sB * 255); - } - - CalRGBCS.prototype = { - getRgb: function CalRGBCS_getRgb(src, srcOffset) { - var rgb = new Uint8Array(3); - this.getRgbItem(src, srcOffset, rgb, 0); - return rgb; - }, - getRgbItem: function CalRGBCS_getRgbItem(src, srcOffset, - dest, destOffset) { - convertToRgb(this, src, srcOffset, dest, destOffset, 1); - }, - getRgbBuffer: function CalRGBCS_getRgbBuffer(src, srcOffset, count, - dest, destOffset, bits, - alpha01) { - var scale = 1 / ((1 << bits) - 1); - - for (var i = 0; i < count; ++i) { - convertToRgb(this, src, srcOffset, dest, destOffset, scale); - srcOffset += 3; - destOffset += 3 + alpha01; - } - }, - getOutputLength: function CalRGBCS_getOutputLength(inputLength, alpha01) { - return (inputLength * (3 + alpha01) / 3) | 0; - }, - isPassthrough: ColorSpace.prototype.isPassthrough, - fillRgb: ColorSpace.prototype.fillRgb, - isDefaultDecode: function CalRGBCS_isDefaultDecode(decodeMap) { - return ColorSpace.isDefaultDecode(decodeMap, this.numComps); - }, - usesZeroToOneRange: true - }; - return CalRGBCS; -})(); - -// -// LabCS: Based on "PDF Reference, Sixth Ed", p.250 -// -var LabCS = (function LabCSClosure() { - function LabCS(whitePoint, blackPoint, range) { - this.name = 'Lab'; - this.numComps = 3; - this.defaultColor = new Float32Array([0, 0, 0]); - - if (!whitePoint) { - error('WhitePoint missing - required for color space Lab'); - } - blackPoint = blackPoint || [0, 0, 0]; - range = range || [-100, 100, -100, 100]; - - // Translate args to spec variables - this.XW = whitePoint[0]; - this.YW = whitePoint[1]; - this.ZW = whitePoint[2]; - this.amin = range[0]; - this.amax = range[1]; - this.bmin = range[2]; - this.bmax = range[3]; - - // These are here just for completeness - the spec doesn't offer any - // formulas that use BlackPoint in Lab - this.XB = blackPoint[0]; - this.YB = blackPoint[1]; - this.ZB = blackPoint[2]; - - // Validate vars as per spec - if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) { - error('Invalid WhitePoint components, no fallback available'); - } - - if (this.XB < 0 || this.YB < 0 || this.ZB < 0) { - info('Invalid BlackPoint, falling back to default'); - this.XB = this.YB = this.ZB = 0; - } - - if (this.amin > this.amax || this.bmin > this.bmax) { - info('Invalid Range, falling back to defaults'); - this.amin = -100; - this.amax = 100; - this.bmin = -100; - this.bmax = 100; - } - } - - // Function g(x) from spec - function fn_g(x) { - if (x >= 6 / 29) { - return x * x * x; - } else { - return (108 / 841) * (x - 4 / 29); - } - } - - function decode(value, high1, low2, high2) { - return low2 + (value) * (high2 - low2) / (high1); - } - - // If decoding is needed maxVal should be 2^bits per component - 1. - function convertToRgb(cs, src, srcOffset, maxVal, dest, destOffset) { - // XXX: Lab input is in the range of [0, 100], [amin, amax], [bmin, bmax] - // not the usual [0, 1]. If a command like setFillColor is used the src - // values will already be within the correct range. However, if we are - // converting an image we have to map the values to the correct range given - // above. - // Ls,as,bs <---> L*,a*,b* in the spec - var Ls = src[srcOffset]; - var as = src[srcOffset + 1]; - var bs = src[srcOffset + 2]; - if (maxVal !== false) { - Ls = decode(Ls, maxVal, 0, 100); - as = decode(as, maxVal, cs.amin, cs.amax); - bs = decode(bs, maxVal, cs.bmin, cs.bmax); - } - - // Adjust limits of 'as' and 'bs' - as = as > cs.amax ? cs.amax : as < cs.amin ? cs.amin : as; - bs = bs > cs.bmax ? cs.bmax : bs < cs.bmin ? cs.bmin : bs; - - // Computes intermediate variables X,Y,Z as per spec - var M = (Ls + 16) / 116; - var L = M + (as / 500); - var N = M - (bs / 200); - - var X = cs.XW * fn_g(L); - var Y = cs.YW * fn_g(M); - var Z = cs.ZW * fn_g(N); - - var r, g, b; - // Using different conversions for D50 and D65 white points, - // per http://www.color.org/srgb.pdf - if (cs.ZW < 1) { - // Assuming D50 (X=0.9642, Y=1.00, Z=0.8249) - r = X * 3.1339 + Y * -1.6170 + Z * -0.4906; - g = X * -0.9785 + Y * 1.9160 + Z * 0.0333; - b = X * 0.0720 + Y * -0.2290 + Z * 1.4057; - } else { - // Assuming D65 (X=0.9505, Y=1.00, Z=1.0888) - r = X * 3.2406 + Y * -1.5372 + Z * -0.4986; - g = X * -0.9689 + Y * 1.8758 + Z * 0.0415; - b = X * 0.0557 + Y * -0.2040 + Z * 1.0570; - } - // clamp color values to [0,1] range then convert to [0,255] range. - dest[destOffset] = r <= 0 ? 0 : r >= 1 ? 255 : Math.sqrt(r) * 255 | 0; - dest[destOffset + 1] = g <= 0 ? 0 : g >= 1 ? 255 : Math.sqrt(g) * 255 | 0; - dest[destOffset + 2] = b <= 0 ? 0 : b >= 1 ? 255 : Math.sqrt(b) * 255 | 0; - } - - LabCS.prototype = { - getRgb: ColorSpace.prototype.getRgb, - getRgbItem: function LabCS_getRgbItem(src, srcOffset, dest, destOffset) { - convertToRgb(this, src, srcOffset, false, dest, destOffset); - }, - getRgbBuffer: function LabCS_getRgbBuffer(src, srcOffset, count, - dest, destOffset, bits, - alpha01) { - var maxVal = (1 << bits) - 1; - for (var i = 0; i < count; i++) { - convertToRgb(this, src, srcOffset, maxVal, dest, destOffset); - srcOffset += 3; - destOffset += 3 + alpha01; - } - }, - getOutputLength: function LabCS_getOutputLength(inputLength, alpha01) { - return (inputLength * (3 + alpha01) / 3) | 0; - }, - isPassthrough: ColorSpace.prototype.isPassthrough, - fillRgb: ColorSpace.prototype.fillRgb, - isDefaultDecode: function LabCS_isDefaultDecode(decodeMap) { - // XXX: Decoding is handled with the lab conversion because of the strange - // ranges that are used. - return true; - }, - usesZeroToOneRange: false - }; - return LabCS; -})(); - -// TODO refactor to remove dependency on image.js -function _setCoreImage(coreImage_) { - coreImage = coreImage_; - PDFImage = coreImage_.PDFImage; -} -exports._setCoreImage = _setCoreImage; - -exports.ColorSpace = ColorSpace; - -// TODO refactor to remove dependency on colorspace.js -coreStream._setCoreColorSpace(exports); -})); - - -(function (root, factory) { - { - factory((root.pdfjsCoreImage = {}), root.pdfjsSharedUtil, - root.pdfjsCorePrimitives, root.pdfjsCoreColorSpace, root.pdfjsCoreStream, - root.pdfjsCoreJpx); - } -}(this, function (exports, sharedUtil, corePrimitives, coreColorSpace, - coreStream, coreJpx) { - -var ImageKind = sharedUtil.ImageKind; -var assert = sharedUtil.assert; -var error = sharedUtil.error; -var info = sharedUtil.info; -var isArray = sharedUtil.isArray; -var warn = sharedUtil.warn; -var Name = corePrimitives.Name; -var isStream = corePrimitives.isStream; -var ColorSpace = coreColorSpace.ColorSpace; -var DecodeStream = coreStream.DecodeStream; -var Stream = coreStream.Stream; -var JpegStream = coreStream.JpegStream; -var JpxImage = coreJpx.JpxImage; - -var PDFImage = (function PDFImageClosure() { - /** - * Decode the image in the main thread if it supported. Resovles the promise - * when the image data is ready. - */ - function handleImageData(handler, xref, res, image) { - if (image instanceof JpegStream && image.isNativelyDecodable(xref, res)) { - // For natively supported jpegs send them to the main thread for decoding. - var dict = image.dict; - var colorSpace = dict.get('ColorSpace', 'CS'); - colorSpace = ColorSpace.parse(colorSpace, xref, res); - var numComps = colorSpace.numComps; - var decodePromise = handler.sendWithPromise('JpegDecode', - [image.getIR(), numComps]); - return decodePromise.then(function (message) { - var data = message.data; - return new Stream(data, 0, data.length, image.dict); - }); - } else { - return Promise.resolve(image); - } - } - - /** - * Decode and clamp a value. The formula is different from the spec because we - * don't decode to float range [0,1], we decode it in the [0,max] range. - */ - function decodeAndClamp(value, addend, coefficient, max) { - value = addend + value * coefficient; - // Clamp the value to the range - return (value < 0 ? 0 : (value > max ? max : value)); - } - - function PDFImage(xref, res, image, inline, smask, mask, isMask) { - this.image = image; - var dict = image.dict; - if (dict.has('Filter')) { - var filter = dict.get('Filter').name; - if (filter === 'JPXDecode') { - var jpxImage = new JpxImage(); - jpxImage.parseImageProperties(image.stream); - image.stream.reset(); - image.bitsPerComponent = jpxImage.bitsPerComponent; - image.numComps = jpxImage.componentsCount; - } else if (filter === 'JBIG2Decode') { - image.bitsPerComponent = 1; - image.numComps = 1; - } - } - // TODO cache rendered images? - - this.width = dict.get('Width', 'W'); - this.height = dict.get('Height', 'H'); - - if (this.width < 1 || this.height < 1) { - error('Invalid image width: ' + this.width + ' or height: ' + - this.height); - } - - this.interpolate = dict.get('Interpolate', 'I') || false; - this.imageMask = dict.get('ImageMask', 'IM') || false; - this.matte = dict.get('Matte') || false; - - var bitsPerComponent = image.bitsPerComponent; - if (!bitsPerComponent) { - bitsPerComponent = dict.get('BitsPerComponent', 'BPC'); - if (!bitsPerComponent) { - if (this.imageMask) { - bitsPerComponent = 1; - } else { - error('Bits per component missing in image: ' + this.imageMask); - } - } - } - this.bpc = bitsPerComponent; - - if (!this.imageMask) { - var colorSpace = dict.get('ColorSpace', 'CS'); - if (!colorSpace) { - info('JPX images (which do not require color spaces)'); - switch (image.numComps) { - case 1: - colorSpace = Name.get('DeviceGray'); - break; - case 3: - colorSpace = Name.get('DeviceRGB'); - break; - case 4: - colorSpace = Name.get('DeviceCMYK'); - break; - default: - error('JPX images with ' + this.numComps + - ' color components not supported.'); - } - } - this.colorSpace = ColorSpace.parse(colorSpace, xref, res); - this.numComps = this.colorSpace.numComps; - } - - this.decode = dict.get('Decode', 'D'); - this.needsDecode = false; - if (this.decode && - ((this.colorSpace && !this.colorSpace.isDefaultDecode(this.decode)) || - (isMask && !ColorSpace.isDefaultDecode(this.decode, 1)))) { - this.needsDecode = true; - // Do some preprocessing to avoid more math. - var max = (1 << bitsPerComponent) - 1; - this.decodeCoefficients = []; - this.decodeAddends = []; - for (var i = 0, j = 0; i < this.decode.length; i += 2, ++j) { - var dmin = this.decode[i]; - var dmax = this.decode[i + 1]; - this.decodeCoefficients[j] = dmax - dmin; - this.decodeAddends[j] = max * dmin; - } - } - - if (smask) { - this.smask = new PDFImage(xref, res, smask, false); - } else if (mask) { - if (isStream(mask)) { - var maskDict = mask.dict, imageMask = maskDict.get('ImageMask', 'IM'); - if (!imageMask) { - warn('Ignoring /Mask in image without /ImageMask.'); - } else { - this.mask = new PDFImage(xref, res, mask, false, null, null, true); - } - } else { - // Color key mask (just an array). - this.mask = mask; - } - } - } - /** - * Handles processing of image data and returns the Promise that is resolved - * with a PDFImage when the image is ready to be used. - */ - PDFImage.buildImage = function PDFImage_buildImage(handler, xref, - res, image, inline) { - var imagePromise = handleImageData(handler, xref, res, image); - var smaskPromise; - var maskPromise; - - var smask = image.dict.get('SMask'); - var mask = image.dict.get('Mask'); - - if (smask) { - smaskPromise = handleImageData(handler, xref, res, smask); - maskPromise = Promise.resolve(null); - } else { - smaskPromise = Promise.resolve(null); - if (mask) { - if (isStream(mask)) { - maskPromise = handleImageData(handler, xref, res, mask); - } else if (isArray(mask)) { - maskPromise = Promise.resolve(mask); - } else { - warn('Unsupported mask format.'); - maskPromise = Promise.resolve(null); - } - } else { - maskPromise = Promise.resolve(null); - } - } - return Promise.all([imagePromise, smaskPromise, maskPromise]).then( - function(results) { - var imageData = results[0]; - var smaskData = results[1]; - var maskData = results[2]; - return new PDFImage(xref, res, imageData, inline, smaskData, maskData); - }); - }; - - /** - * Resize an image using the nearest neighbor algorithm. Currently only - * supports one and three component images. - * @param {TypedArray} pixels The original image with one component. - * @param {Number} bpc Number of bits per component. - * @param {Number} components Number of color components, 1 or 3 is supported. - * @param {Number} w1 Original width. - * @param {Number} h1 Original height. - * @param {Number} w2 New width. - * @param {Number} h2 New height. - * @param {TypedArray} dest (Optional) The destination buffer. - * @param {Number} alpha01 (Optional) Size reserved for the alpha channel. - * @return {TypedArray} Resized image data. - */ - PDFImage.resize = function PDFImage_resize(pixels, bpc, components, - w1, h1, w2, h2, dest, alpha01) { - - if (components !== 1 && components !== 3) { - error('Unsupported component count for resizing.'); - } - - var length = w2 * h2 * components; - var temp = dest ? dest : (bpc <= 8 ? new Uint8Array(length) : - (bpc <= 16 ? new Uint16Array(length) : new Uint32Array(length))); - var xRatio = w1 / w2; - var yRatio = h1 / h2; - var i, j, py, newIndex = 0, oldIndex; - var xScaled = new Uint16Array(w2); - var w1Scanline = w1 * components; - if (alpha01 !== 1) { - alpha01 = 0; - } - - for (j = 0; j < w2; j++) { - xScaled[j] = Math.floor(j * xRatio) * components; - } - - if (components === 1) { - for (i = 0; i < h2; i++) { - py = Math.floor(i * yRatio) * w1Scanline; - for (j = 0; j < w2; j++) { - oldIndex = py + xScaled[j]; - temp[newIndex++] = pixels[oldIndex]; - } - } - } else if (components === 3) { - for (i = 0; i < h2; i++) { - py = Math.floor(i * yRatio) * w1Scanline; - for (j = 0; j < w2; j++) { - oldIndex = py + xScaled[j]; - temp[newIndex++] = pixels[oldIndex++]; - temp[newIndex++] = pixels[oldIndex++]; - temp[newIndex++] = pixels[oldIndex++]; - newIndex += alpha01; - } - } - } - return temp; - }; - - PDFImage.createMask = - function PDFImage_createMask(imgArray, width, height, - imageIsFromDecodeStream, inverseDecode) { - - // |imgArray| might not contain full data for every pixel of the mask, so - // we need to distinguish between |computedLength| and |actualLength|. - // In particular, if inverseDecode is true, then the array we return must - // have a length of |computedLength|. - - var computedLength = ((width + 7) >> 3) * height; - var actualLength = imgArray.byteLength; - var haveFullData = computedLength === actualLength; - var data, i; - - if (imageIsFromDecodeStream && (!inverseDecode || haveFullData)) { - // imgArray came from a DecodeStream and its data is in an appropriate - // form, so we can just transfer it. - data = imgArray; - } else if (!inverseDecode) { - data = new Uint8Array(actualLength); - data.set(imgArray); - } else { - data = new Uint8Array(computedLength); - data.set(imgArray); - for (i = actualLength; i < computedLength; i++) { - data[i] = 0xff; - } - } - - // If necessary, invert the original mask data (but not any extra we might - // have added above). It's safe to modify the array -- whether it's the - // original or a copy, we're about to transfer it anyway, so nothing else - // in this thread can be relying on its contents. - if (inverseDecode) { - for (i = 0; i < actualLength; i++) { - data[i] = ~data[i]; - } - } - - return {data: data, width: width, height: height}; - }; - - PDFImage.prototype = { - get drawWidth() { - return Math.max(this.width, - this.smask && this.smask.width || 0, - this.mask && this.mask.width || 0); - }, - - get drawHeight() { - return Math.max(this.height, - this.smask && this.smask.height || 0, - this.mask && this.mask.height || 0); - }, - - decodeBuffer: function PDFImage_decodeBuffer(buffer) { - var bpc = this.bpc; - var numComps = this.numComps; - - var decodeAddends = this.decodeAddends; - var decodeCoefficients = this.decodeCoefficients; - var max = (1 << bpc) - 1; - var i, ii; - - if (bpc === 1) { - // If the buffer needed decode that means it just needs to be inverted. - for (i = 0, ii = buffer.length; i < ii; i++) { - buffer[i] = +!(buffer[i]); - } - return; - } - var index = 0; - for (i = 0, ii = this.width * this.height; i < ii; i++) { - for (var j = 0; j < numComps; j++) { - buffer[index] = decodeAndClamp(buffer[index], decodeAddends[j], - decodeCoefficients[j], max); - index++; - } - } - }, - - getComponents: function PDFImage_getComponents(buffer) { - var bpc = this.bpc; - - // This image doesn't require any extra work. - if (bpc === 8) { - return buffer; - } - - var width = this.width; - var height = this.height; - var numComps = this.numComps; - - var length = width * height * numComps; - var bufferPos = 0; - var output = (bpc <= 8 ? new Uint8Array(length) : - (bpc <= 16 ? new Uint16Array(length) : new Uint32Array(length))); - var rowComps = width * numComps; - - var max = (1 << bpc) - 1; - var i = 0, ii, buf; - - if (bpc === 1) { - // Optimization for reading 1 bpc images. - var mask, loop1End, loop2End; - for (var j = 0; j < height; j++) { - loop1End = i + (rowComps & ~7); - loop2End = i + rowComps; - - // unroll loop for all full bytes - while (i < loop1End) { - buf = buffer[bufferPos++]; - output[i] = (buf >> 7) & 1; - output[i + 1] = (buf >> 6) & 1; - output[i + 2] = (buf >> 5) & 1; - output[i + 3] = (buf >> 4) & 1; - output[i + 4] = (buf >> 3) & 1; - output[i + 5] = (buf >> 2) & 1; - output[i + 6] = (buf >> 1) & 1; - output[i + 7] = buf & 1; - i += 8; - } - - // handle remaing bits - if (i < loop2End) { - buf = buffer[bufferPos++]; - mask = 128; - while (i < loop2End) { - output[i++] = +!!(buf & mask); - mask >>= 1; - } - } - } - } else { - // The general case that handles all other bpc values. - var bits = 0; - buf = 0; - for (i = 0, ii = length; i < ii; ++i) { - if (i % rowComps === 0) { - buf = 0; - bits = 0; - } - - while (bits < bpc) { - buf = (buf << 8) | buffer[bufferPos++]; - bits += 8; - } - - var remainingBits = bits - bpc; - var value = buf >> remainingBits; - output[i] = (value < 0 ? 0 : (value > max ? max : value)); - buf = buf & ((1 << remainingBits) - 1); - bits = remainingBits; - } - } - return output; - }, - - fillOpacity: function PDFImage_fillOpacity(rgbaBuf, width, height, - actualHeight, image) { - var smask = this.smask; - var mask = this.mask; - var alphaBuf, sw, sh, i, ii, j; - - if (smask) { - sw = smask.width; - sh = smask.height; - alphaBuf = new Uint8Array(sw * sh); - smask.fillGrayBuffer(alphaBuf); - if (sw !== width || sh !== height) { - alphaBuf = PDFImage.resize(alphaBuf, smask.bpc, 1, sw, sh, width, - height); - } - } else if (mask) { - if (mask instanceof PDFImage) { - sw = mask.width; - sh = mask.height; - alphaBuf = new Uint8Array(sw * sh); - mask.numComps = 1; - mask.fillGrayBuffer(alphaBuf); - - // Need to invert values in rgbaBuf - for (i = 0, ii = sw * sh; i < ii; ++i) { - alphaBuf[i] = 255 - alphaBuf[i]; - } - - if (sw !== width || sh !== height) { - alphaBuf = PDFImage.resize(alphaBuf, mask.bpc, 1, sw, sh, width, - height); - } - } else if (isArray(mask)) { - // Color key mask: if any of the compontents are outside the range - // then they should be painted. - alphaBuf = new Uint8Array(width * height); - var numComps = this.numComps; - for (i = 0, ii = width * height; i < ii; ++i) { - var opacity = 0; - var imageOffset = i * numComps; - for (j = 0; j < numComps; ++j) { - var color = image[imageOffset + j]; - var maskOffset = j * 2; - if (color < mask[maskOffset] || color > mask[maskOffset + 1]) { - opacity = 255; - break; - } - } - alphaBuf[i] = opacity; - } - } else { - error('Unknown mask format.'); - } - } - - if (alphaBuf) { - for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) { - rgbaBuf[j] = alphaBuf[i]; - } - } else { - // No mask. - for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) { - rgbaBuf[j] = 255; - } - } - }, - - undoPreblend: function PDFImage_undoPreblend(buffer, width, height) { - var matte = this.smask && this.smask.matte; - if (!matte) { - return; - } - var matteRgb = this.colorSpace.getRgb(matte, 0); - var matteR = matteRgb[0]; - var matteG = matteRgb[1]; - var matteB = matteRgb[2]; - var length = width * height * 4; - var r, g, b; - for (var i = 0; i < length; i += 4) { - var alpha = buffer[i + 3]; - if (alpha === 0) { - // according formula we have to get Infinity in all components - // making it white (typical paper color) should be okay - buffer[i] = 255; - buffer[i + 1] = 255; - buffer[i + 2] = 255; - continue; - } - var k = 255 / alpha; - r = (buffer[i] - matteR) * k + matteR; - g = (buffer[i + 1] - matteG) * k + matteG; - b = (buffer[i + 2] - matteB) * k + matteB; - buffer[i] = r <= 0 ? 0 : r >= 255 ? 255 : r | 0; - buffer[i + 1] = g <= 0 ? 0 : g >= 255 ? 255 : g | 0; - buffer[i + 2] = b <= 0 ? 0 : b >= 255 ? 255 : b | 0; - } - }, - - createImageData: function PDFImage_createImageData(forceRGBA) { - var drawWidth = this.drawWidth; - var drawHeight = this.drawHeight; - var imgData = { // other fields are filled in below - width: drawWidth, - height: drawHeight - }; - - var numComps = this.numComps; - var originalWidth = this.width; - var originalHeight = this.height; - var bpc = this.bpc; - - // Rows start at byte boundary. - var rowBytes = (originalWidth * numComps * bpc + 7) >> 3; - var imgArray; - - if (!forceRGBA) { - // If it is a 1-bit-per-pixel grayscale (i.e. black-and-white) image - // without any complications, we pass a same-sized copy to the main - // thread rather than expanding by 32x to RGBA form. This saves *lots* - // of memory for many scanned documents. It's also much faster. - // - // Similarly, if it is a 24-bit-per pixel RGB image without any - // complications, we avoid expanding by 1.333x to RGBA form. - var kind; - if (this.colorSpace.name === 'DeviceGray' && bpc === 1) { - kind = ImageKind.GRAYSCALE_1BPP; - } else if (this.colorSpace.name === 'DeviceRGB' && bpc === 8 && - !this.needsDecode) { - kind = ImageKind.RGB_24BPP; - } - if (kind && !this.smask && !this.mask && - drawWidth === originalWidth && drawHeight === originalHeight) { - imgData.kind = kind; - - imgArray = this.getImageBytes(originalHeight * rowBytes); - // If imgArray came from a DecodeStream, we're safe to transfer it - // (and thus neuter it) because it will constitute the entire - // DecodeStream's data. But if it came from a Stream, we need to - // copy it because it'll only be a portion of the Stream's data, and - // the rest will be read later on. - if (this.image instanceof DecodeStream) { - imgData.data = imgArray; - } else { - var newArray = new Uint8Array(imgArray.length); - newArray.set(imgArray); - imgData.data = newArray; - } - if (this.needsDecode) { - // Invert the buffer (which must be grayscale if we reached here). - assert(kind === ImageKind.GRAYSCALE_1BPP); - var buffer = imgData.data; - for (var i = 0, ii = buffer.length; i < ii; i++) { - buffer[i] ^= 0xff; - } - } - return imgData; - } - if (this.image instanceof JpegStream && !this.smask && !this.mask && - (this.colorSpace.name === 'DeviceGray' || - this.colorSpace.name === 'DeviceRGB' || - this.colorSpace.name === 'DeviceCMYK')) { - imgData.kind = ImageKind.RGB_24BPP; - imgData.data = this.getImageBytes(originalHeight * rowBytes, - drawWidth, drawHeight, true); - return imgData; - } - } - - imgArray = this.getImageBytes(originalHeight * rowBytes); - // imgArray can be incomplete (e.g. after CCITT fax encoding). - var actualHeight = 0 | (imgArray.length / rowBytes * - drawHeight / originalHeight); - - var comps = this.getComponents(imgArray); - - // If opacity data is present, use RGBA_32BPP form. Otherwise, use the - // more compact RGB_24BPP form if allowable. - var alpha01, maybeUndoPreblend; - if (!forceRGBA && !this.smask && !this.mask) { - imgData.kind = ImageKind.RGB_24BPP; - imgData.data = new Uint8Array(drawWidth * drawHeight * 3); - alpha01 = 0; - maybeUndoPreblend = false; - } else { - imgData.kind = ImageKind.RGBA_32BPP; - imgData.data = new Uint8Array(drawWidth * drawHeight * 4); - alpha01 = 1; - maybeUndoPreblend = true; - - // Color key masking (opacity) must be performed before decoding. - this.fillOpacity(imgData.data, drawWidth, drawHeight, actualHeight, - comps); - } - - if (this.needsDecode) { - this.decodeBuffer(comps); - } - this.colorSpace.fillRgb(imgData.data, originalWidth, originalHeight, - drawWidth, drawHeight, actualHeight, bpc, comps, - alpha01); - if (maybeUndoPreblend) { - this.undoPreblend(imgData.data, drawWidth, actualHeight); - } - - return imgData; - }, - - fillGrayBuffer: function PDFImage_fillGrayBuffer(buffer) { - var numComps = this.numComps; - if (numComps !== 1) { - error('Reading gray scale from a color image: ' + numComps); - } - - var width = this.width; - var height = this.height; - var bpc = this.bpc; - - // rows start at byte boundary - var rowBytes = (width * numComps * bpc + 7) >> 3; - var imgArray = this.getImageBytes(height * rowBytes); - - var comps = this.getComponents(imgArray); - var i, length; - - if (bpc === 1) { - // inline decoding (= inversion) for 1 bpc images - length = width * height; - if (this.needsDecode) { - // invert and scale to {0, 255} - for (i = 0; i < length; ++i) { - buffer[i] = (comps[i] - 1) & 255; - } - } else { - // scale to {0, 255} - for (i = 0; i < length; ++i) { - buffer[i] = (-comps[i]) & 255; - } - } - return; - } - - if (this.needsDecode) { - this.decodeBuffer(comps); - } - length = width * height; - // we aren't using a colorspace so we need to scale the value - var scale = 255 / ((1 << bpc) - 1); - for (i = 0; i < length; ++i) { - buffer[i] = (scale * comps[i]) | 0; - } - }, - - getImageBytes: function PDFImage_getImageBytes(length, - drawWidth, drawHeight, - forceRGB) { - this.image.reset(); - this.image.drawWidth = drawWidth || this.width; - this.image.drawHeight = drawHeight || this.height; - this.image.forceRGB = !!forceRGB; - return this.image.getBytes(length); - } - }; - return PDFImage; -})(); - -exports.PDFImage = PDFImage; - -// TODO refactor to remove dependency on colorspace.js -coreColorSpace._setCoreImage(exports); -})); - - -(function (root, factory) { - { - factory((root.pdfjsCorePattern = {}), root.pdfjsSharedUtil, - root.pdfjsCorePrimitives, root.pdfjsCoreFunction, - root.pdfjsCoreColorSpace); - } -}(this, function (exports, sharedUtil, corePrimitives, coreFunction, - coreColorSpace) { - -var UNSUPPORTED_FEATURES = sharedUtil.UNSUPPORTED_FEATURES; -var MissingDataException = sharedUtil.MissingDataException; -var Util = sharedUtil.Util; -var assert = sharedUtil.assert; -var error = sharedUtil.error; -var info = sharedUtil.info; -var warn = sharedUtil.warn; -var isStream = corePrimitives.isStream; -var PDFFunction = coreFunction.PDFFunction; -var ColorSpace = coreColorSpace.ColorSpace; - -var ShadingType = { - FUNCTION_BASED: 1, - AXIAL: 2, - RADIAL: 3, - FREE_FORM_MESH: 4, - LATTICE_FORM_MESH: 5, - COONS_PATCH_MESH: 6, - TENSOR_PATCH_MESH: 7 -}; - -var Pattern = (function PatternClosure() { - // Constructor should define this.getPattern - function Pattern() { - error('should not call Pattern constructor'); - } - - Pattern.prototype = { - // Input: current Canvas context - // Output: the appropriate fillStyle or strokeStyle - getPattern: function Pattern_getPattern(ctx) { - error('Should not call Pattern.getStyle: ' + ctx); - } - }; - - Pattern.parseShading = function Pattern_parseShading(shading, matrix, xref, - res, handler) { - - var dict = isStream(shading) ? shading.dict : shading; - var type = dict.get('ShadingType'); - - try { - switch (type) { - case ShadingType.AXIAL: - case ShadingType.RADIAL: - // Both radial and axial shadings are handled by RadialAxial shading. - return new Shadings.RadialAxial(dict, matrix, xref, res); - case ShadingType.FREE_FORM_MESH: - case ShadingType.LATTICE_FORM_MESH: - case ShadingType.COONS_PATCH_MESH: - case ShadingType.TENSOR_PATCH_MESH: - return new Shadings.Mesh(shading, matrix, xref, res); - default: - throw new Error('Unsupported ShadingType: ' + type); - } - } catch (ex) { - if (ex instanceof MissingDataException) { - throw ex; - } - handler.send('UnsupportedFeature', - {featureId: UNSUPPORTED_FEATURES.shadingPattern}); - warn(ex); - return new Shadings.Dummy(); - } - }; - return Pattern; -})(); - -var Shadings = {}; - -// A small number to offset the first/last color stops so we can insert ones to -// support extend. Number.MIN_VALUE is too small and breaks the extend. -Shadings.SMALL_NUMBER = 1e-6; - -// Radial and axial shading have very similar implementations -// If needed, the implementations can be broken into two classes -Shadings.RadialAxial = (function RadialAxialClosure() { - function RadialAxial(dict, matrix, xref, res) { - this.matrix = matrix; - this.coordsArr = dict.get('Coords'); - this.shadingType = dict.get('ShadingType'); - this.type = 'Pattern'; - var cs = dict.get('ColorSpace', 'CS'); - cs = ColorSpace.parse(cs, xref, res); - this.cs = cs; - - var t0 = 0.0, t1 = 1.0; - if (dict.has('Domain')) { - var domainArr = dict.get('Domain'); - t0 = domainArr[0]; - t1 = domainArr[1]; - } - - var extendStart = false, extendEnd = false; - if (dict.has('Extend')) { - var extendArr = dict.get('Extend'); - extendStart = extendArr[0]; - extendEnd = extendArr[1]; - } - - if (this.shadingType === ShadingType.RADIAL && - (!extendStart || !extendEnd)) { - // Radial gradient only currently works if either circle is fully within - // the other circle. - var x1 = this.coordsArr[0]; - var y1 = this.coordsArr[1]; - var r1 = this.coordsArr[2]; - var x2 = this.coordsArr[3]; - var y2 = this.coordsArr[4]; - var r2 = this.coordsArr[5]; - var distance = Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)); - if (r1 <= r2 + distance && - r2 <= r1 + distance) { - warn('Unsupported radial gradient.'); - } - } - - this.extendStart = extendStart; - this.extendEnd = extendEnd; - - var fnObj = dict.get('Function'); - var fn = PDFFunction.parseArray(xref, fnObj); - - // 10 samples seems good enough for now, but probably won't work - // if there are sharp color changes. Ideally, we would implement - // the spec faithfully and add lossless optimizations. - var diff = t1 - t0; - var step = diff / 10; - - var colorStops = this.colorStops = []; - - // Protect against bad domains so we don't end up in an infinte loop below. - if (t0 >= t1 || step <= 0) { - // Acrobat doesn't seem to handle these cases so we'll ignore for - // now. - info('Bad shading domain.'); - return; - } - - var color = new Float32Array(cs.numComps), ratio = new Float32Array(1); - var rgbColor; - for (var i = t0; i <= t1; i += step) { - ratio[0] = i; - fn(ratio, 0, color, 0); - rgbColor = cs.getRgb(color, 0); - var cssColor = Util.makeCssRgb(rgbColor[0], rgbColor[1], rgbColor[2]); - colorStops.push([(i - t0) / diff, cssColor]); - } - - var background = 'transparent'; - if (dict.has('Background')) { - rgbColor = cs.getRgb(dict.get('Background'), 0); - background = Util.makeCssRgb(rgbColor[0], rgbColor[1], rgbColor[2]); - } - - if (!extendStart) { - // Insert a color stop at the front and offset the first real color stop - // so it doesn't conflict with the one we insert. - colorStops.unshift([0, background]); - colorStops[1][0] += Shadings.SMALL_NUMBER; - } - if (!extendEnd) { - // Same idea as above in extendStart but for the end. - colorStops[colorStops.length - 1][0] -= Shadings.SMALL_NUMBER; - colorStops.push([1, background]); - } - - this.colorStops = colorStops; - } - - RadialAxial.prototype = { - getIR: function RadialAxial_getIR() { - var coordsArr = this.coordsArr; - var shadingType = this.shadingType; - var type, p0, p1, r0, r1; - if (shadingType === ShadingType.AXIAL) { - p0 = [coordsArr[0], coordsArr[1]]; - p1 = [coordsArr[2], coordsArr[3]]; - r0 = null; - r1 = null; - type = 'axial'; - } else if (shadingType === ShadingType.RADIAL) { - p0 = [coordsArr[0], coordsArr[1]]; - p1 = [coordsArr[3], coordsArr[4]]; - r0 = coordsArr[2]; - r1 = coordsArr[5]; - type = 'radial'; - } else { - error('getPattern type unknown: ' + shadingType); - } - - var matrix = this.matrix; - if (matrix) { - p0 = Util.applyTransform(p0, matrix); - p1 = Util.applyTransform(p1, matrix); - if (shadingType === ShadingType.RADIAL) { - var scale = Util.singularValueDecompose2dScale(matrix); - r0 *= scale[0]; - r1 *= scale[1]; - } - } - - return ['RadialAxial', type, this.colorStops, p0, p1, r0, r1]; - } - }; - - return RadialAxial; -})(); - -// All mesh shading. For now, they will be presented as set of the triangles -// to be drawn on the canvas and rgb color for each vertex. -Shadings.Mesh = (function MeshClosure() { - function MeshStreamReader(stream, context) { - this.stream = stream; - this.context = context; - this.buffer = 0; - this.bufferLength = 0; - - var numComps = context.numComps; - this.tmpCompsBuf = new Float32Array(numComps); - var csNumComps = context.colorSpace.numComps; - this.tmpCsCompsBuf = context.colorFn ? new Float32Array(csNumComps) : - this.tmpCompsBuf; - } - MeshStreamReader.prototype = { - get hasData() { - if (this.stream.end) { - return this.stream.pos < this.stream.end; - } - if (this.bufferLength > 0) { - return true; - } - var nextByte = this.stream.getByte(); - if (nextByte < 0) { - return false; - } - this.buffer = nextByte; - this.bufferLength = 8; - return true; - }, - readBits: function MeshStreamReader_readBits(n) { - var buffer = this.buffer; - var bufferLength = this.bufferLength; - if (n === 32) { - if (bufferLength === 0) { - return ((this.stream.getByte() << 24) | - (this.stream.getByte() << 16) | (this.stream.getByte() << 8) | - this.stream.getByte()) >>> 0; - } - buffer = (buffer << 24) | (this.stream.getByte() << 16) | - (this.stream.getByte() << 8) | this.stream.getByte(); - var nextByte = this.stream.getByte(); - this.buffer = nextByte & ((1 << bufferLength) - 1); - return ((buffer << (8 - bufferLength)) | - ((nextByte & 0xFF) >> bufferLength)) >>> 0; - } - if (n === 8 && bufferLength === 0) { - return this.stream.getByte(); - } - while (bufferLength < n) { - buffer = (buffer << 8) | this.stream.getByte(); - bufferLength += 8; - } - bufferLength -= n; - this.bufferLength = bufferLength; - this.buffer = buffer & ((1 << bufferLength) - 1); - return buffer >> bufferLength; - }, - align: function MeshStreamReader_align() { - this.buffer = 0; - this.bufferLength = 0; - }, - readFlag: function MeshStreamReader_readFlag() { - return this.readBits(this.context.bitsPerFlag); - }, - readCoordinate: function MeshStreamReader_readCoordinate() { - var bitsPerCoordinate = this.context.bitsPerCoordinate; - var xi = this.readBits(bitsPerCoordinate); - var yi = this.readBits(bitsPerCoordinate); - var decode = this.context.decode; - var scale = bitsPerCoordinate < 32 ? 1 / ((1 << bitsPerCoordinate) - 1) : - 2.3283064365386963e-10; // 2 ^ -32 - return [ - xi * scale * (decode[1] - decode[0]) + decode[0], - yi * scale * (decode[3] - decode[2]) + decode[2] - ]; - }, - readComponents: function MeshStreamReader_readComponents() { - var numComps = this.context.numComps; - var bitsPerComponent = this.context.bitsPerComponent; - var scale = bitsPerComponent < 32 ? 1 / ((1 << bitsPerComponent) - 1) : - 2.3283064365386963e-10; // 2 ^ -32 - var decode = this.context.decode; - var components = this.tmpCompsBuf; - for (var i = 0, j = 4; i < numComps; i++, j += 2) { - var ci = this.readBits(bitsPerComponent); - components[i] = ci * scale * (decode[j + 1] - decode[j]) + decode[j]; - } - var color = this.tmpCsCompsBuf; - if (this.context.colorFn) { - this.context.colorFn(components, 0, color, 0); - } - return this.context.colorSpace.getRgb(color, 0); - } - }; - - function decodeType4Shading(mesh, reader) { - var coords = mesh.coords; - var colors = mesh.colors; - var operators = []; - var ps = []; // not maintaining cs since that will match ps - var verticesLeft = 0; // assuming we have all data to start a new triangle - while (reader.hasData) { - var f = reader.readFlag(); - var coord = reader.readCoordinate(); - var color = reader.readComponents(); - if (verticesLeft === 0) { // ignoring flags if we started a triangle - assert(0 <= f && f <= 2, 'Unknown type4 flag'); - switch (f) { - case 0: - verticesLeft = 3; - break; - case 1: - ps.push(ps[ps.length - 2], ps[ps.length - 1]); - verticesLeft = 1; - break; - case 2: - ps.push(ps[ps.length - 3], ps[ps.length - 1]); - verticesLeft = 1; - break; - } - operators.push(f); - } - ps.push(coords.length); - coords.push(coord); - colors.push(color); - verticesLeft--; - - reader.align(); - } - mesh.figures.push({ - type: 'triangles', - coords: new Int32Array(ps), - colors: new Int32Array(ps), - }); - } - - function decodeType5Shading(mesh, reader, verticesPerRow) { - var coords = mesh.coords; - var colors = mesh.colors; - var ps = []; // not maintaining cs since that will match ps - while (reader.hasData) { - var coord = reader.readCoordinate(); - var color = reader.readComponents(); - ps.push(coords.length); - coords.push(coord); - colors.push(color); - } - mesh.figures.push({ - type: 'lattice', - coords: new Int32Array(ps), - colors: new Int32Array(ps), - verticesPerRow: verticesPerRow - }); - } - - var MIN_SPLIT_PATCH_CHUNKS_AMOUNT = 3; - var MAX_SPLIT_PATCH_CHUNKS_AMOUNT = 20; - - var TRIANGLE_DENSITY = 20; // count of triangles per entire mesh bounds - - var getB = (function getBClosure() { - function buildB(count) { - var lut = []; - for (var i = 0; i <= count; i++) { - var t = i / count, t_ = 1 - t; - lut.push(new Float32Array([t_ * t_ * t_, 3 * t * t_ * t_, - 3 * t * t * t_, t * t * t])); - } - return lut; - } - var cache = []; - return function getB(count) { - if (!cache[count]) { - cache[count] = buildB(count); - } - return cache[count]; - }; - })(); - - function buildFigureFromPatch(mesh, index) { - var figure = mesh.figures[index]; - assert(figure.type === 'patch', 'Unexpected patch mesh figure'); - - var coords = mesh.coords, colors = mesh.colors; - var pi = figure.coords; - var ci = figure.colors; - - var figureMinX = Math.min(coords[pi[0]][0], coords[pi[3]][0], - coords[pi[12]][0], coords[pi[15]][0]); - var figureMinY = Math.min(coords[pi[0]][1], coords[pi[3]][1], - coords[pi[12]][1], coords[pi[15]][1]); - var figureMaxX = Math.max(coords[pi[0]][0], coords[pi[3]][0], - coords[pi[12]][0], coords[pi[15]][0]); - var figureMaxY = Math.max(coords[pi[0]][1], coords[pi[3]][1], - coords[pi[12]][1], coords[pi[15]][1]); - var splitXBy = Math.ceil((figureMaxX - figureMinX) * TRIANGLE_DENSITY / - (mesh.bounds[2] - mesh.bounds[0])); - splitXBy = Math.max(MIN_SPLIT_PATCH_CHUNKS_AMOUNT, - Math.min(MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitXBy)); - var splitYBy = Math.ceil((figureMaxY - figureMinY) * TRIANGLE_DENSITY / - (mesh.bounds[3] - mesh.bounds[1])); - splitYBy = Math.max(MIN_SPLIT_PATCH_CHUNKS_AMOUNT, - Math.min(MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitYBy)); - - var verticesPerRow = splitXBy + 1; - var figureCoords = new Int32Array((splitYBy + 1) * verticesPerRow); - var figureColors = new Int32Array((splitYBy + 1) * verticesPerRow); - var k = 0; - var cl = new Uint8Array(3), cr = new Uint8Array(3); - var c0 = colors[ci[0]], c1 = colors[ci[1]], - c2 = colors[ci[2]], c3 = colors[ci[3]]; - var bRow = getB(splitYBy), bCol = getB(splitXBy); - for (var row = 0; row <= splitYBy; row++) { - cl[0] = ((c0[0] * (splitYBy - row) + c2[0] * row) / splitYBy) | 0; - cl[1] = ((c0[1] * (splitYBy - row) + c2[1] * row) / splitYBy) | 0; - cl[2] = ((c0[2] * (splitYBy - row) + c2[2] * row) / splitYBy) | 0; - - cr[0] = ((c1[0] * (splitYBy - row) + c3[0] * row) / splitYBy) | 0; - cr[1] = ((c1[1] * (splitYBy - row) + c3[1] * row) / splitYBy) | 0; - cr[2] = ((c1[2] * (splitYBy - row) + c3[2] * row) / splitYBy) | 0; - - for (var col = 0; col <= splitXBy; col++, k++) { - if ((row === 0 || row === splitYBy) && - (col === 0 || col === splitXBy)) { - continue; - } - var x = 0, y = 0; - var q = 0; - for (var i = 0; i <= 3; i++) { - for (var j = 0; j <= 3; j++, q++) { - var m = bRow[row][i] * bCol[col][j]; - x += coords[pi[q]][0] * m; - y += coords[pi[q]][1] * m; - } - } - figureCoords[k] = coords.length; - coords.push([x, y]); - figureColors[k] = colors.length; - var newColor = new Uint8Array(3); - newColor[0] = ((cl[0] * (splitXBy - col) + cr[0] * col) / splitXBy) | 0; - newColor[1] = ((cl[1] * (splitXBy - col) + cr[1] * col) / splitXBy) | 0; - newColor[2] = ((cl[2] * (splitXBy - col) + cr[2] * col) / splitXBy) | 0; - colors.push(newColor); - } - } - figureCoords[0] = pi[0]; - figureColors[0] = ci[0]; - figureCoords[splitXBy] = pi[3]; - figureColors[splitXBy] = ci[1]; - figureCoords[verticesPerRow * splitYBy] = pi[12]; - figureColors[verticesPerRow * splitYBy] = ci[2]; - figureCoords[verticesPerRow * splitYBy + splitXBy] = pi[15]; - figureColors[verticesPerRow * splitYBy + splitXBy] = ci[3]; - - mesh.figures[index] = { - type: 'lattice', - coords: figureCoords, - colors: figureColors, - verticesPerRow: verticesPerRow - }; - } - - function decodeType6Shading(mesh, reader) { - // A special case of Type 7. The p11, p12, p21, p22 automatically filled - var coords = mesh.coords; - var colors = mesh.colors; - var ps = new Int32Array(16); // p00, p10, ..., p30, p01, ..., p33 - var cs = new Int32Array(4); // c00, c30, c03, c33 - while (reader.hasData) { - var f = reader.readFlag(); - assert(0 <= f && f <= 3, 'Unknown type6 flag'); - var i, ii; - var pi = coords.length; - for (i = 0, ii = (f !== 0 ? 8 : 12); i < ii; i++) { - coords.push(reader.readCoordinate()); - } - var ci = colors.length; - for (i = 0, ii = (f !== 0 ? 2 : 4); i < ii; i++) { - colors.push(reader.readComponents()); - } - var tmp1, tmp2, tmp3, tmp4; - switch (f) { - case 0: - ps[12] = pi + 3; ps[13] = pi + 4; ps[14] = pi + 5; ps[15] = pi + 6; - ps[ 8] = pi + 2; /* values for 5, 6, 9, 10 are */ ps[11] = pi + 7; - ps[ 4] = pi + 1; /* calculated below */ ps[ 7] = pi + 8; - ps[ 0] = pi; ps[ 1] = pi + 11; ps[ 2] = pi + 10; ps[ 3] = pi + 9; - cs[2] = ci + 1; cs[3] = ci + 2; - cs[0] = ci; cs[1] = ci + 3; - break; - case 1: - tmp1 = ps[12]; tmp2 = ps[13]; tmp3 = ps[14]; tmp4 = ps[15]; - ps[12] = tmp4; ps[13] = pi + 0; ps[14] = pi + 1; ps[15] = pi + 2; - ps[ 8] = tmp3; /* values for 5, 6, 9, 10 are */ ps[11] = pi + 3; - ps[ 4] = tmp2; /* calculated below */ ps[ 7] = pi + 4; - ps[ 0] = tmp1; ps[ 1] = pi + 7; ps[ 2] = pi + 6; ps[ 3] = pi + 5; - tmp1 = cs[2]; tmp2 = cs[3]; - cs[2] = tmp2; cs[3] = ci; - cs[0] = tmp1; cs[1] = ci + 1; - break; - case 2: - tmp1 = ps[15]; - tmp2 = ps[11]; - ps[12] = ps[3]; ps[13] = pi + 0; ps[14] = pi + 1; ps[15] = pi + 2; - ps[ 8] = ps[7]; /* values for 5, 6, 9, 10 are */ ps[11] = pi + 3; - ps[ 4] = tmp2; /* calculated below */ ps[ 7] = pi + 4; - ps[ 0] = tmp1; ps[ 1] = pi + 7; ps[ 2] = pi + 6; ps[ 3] = pi + 5; - tmp1 = cs[3]; - cs[2] = cs[1]; cs[3] = ci; - cs[0] = tmp1; cs[1] = ci + 1; - break; - case 3: - ps[12] = ps[0]; ps[13] = pi + 0; ps[14] = pi + 1; ps[15] = pi + 2; - ps[ 8] = ps[1]; /* values for 5, 6, 9, 10 are */ ps[11] = pi + 3; - ps[ 4] = ps[2]; /* calculated below */ ps[ 7] = pi + 4; - ps[ 0] = ps[3]; ps[ 1] = pi + 7; ps[ 2] = pi + 6; ps[ 3] = pi + 5; - cs[2] = cs[0]; cs[3] = ci; - cs[0] = cs[1]; cs[1] = ci + 1; - break; - } - // set p11, p12, p21, p22 - ps[5] = coords.length; - coords.push([ - (-4 * coords[ps[0]][0] - coords[ps[15]][0] + - 6 * (coords[ps[4]][0] + coords[ps[1]][0]) - - 2 * (coords[ps[12]][0] + coords[ps[3]][0]) + - 3 * (coords[ps[13]][0] + coords[ps[7]][0])) / 9, - (-4 * coords[ps[0]][1] - coords[ps[15]][1] + - 6 * (coords[ps[4]][1] + coords[ps[1]][1]) - - 2 * (coords[ps[12]][1] + coords[ps[3]][1]) + - 3 * (coords[ps[13]][1] + coords[ps[7]][1])) / 9 - ]); - ps[6] = coords.length; - coords.push([ - (-4 * coords[ps[3]][0] - coords[ps[12]][0] + - 6 * (coords[ps[2]][0] + coords[ps[7]][0]) - - 2 * (coords[ps[0]][0] + coords[ps[15]][0]) + - 3 * (coords[ps[4]][0] + coords[ps[14]][0])) / 9, - (-4 * coords[ps[3]][1] - coords[ps[12]][1] + - 6 * (coords[ps[2]][1] + coords[ps[7]][1]) - - 2 * (coords[ps[0]][1] + coords[ps[15]][1]) + - 3 * (coords[ps[4]][1] + coords[ps[14]][1])) / 9 - ]); - ps[9] = coords.length; - coords.push([ - (-4 * coords[ps[12]][0] - coords[ps[3]][0] + - 6 * (coords[ps[8]][0] + coords[ps[13]][0]) - - 2 * (coords[ps[0]][0] + coords[ps[15]][0]) + - 3 * (coords[ps[11]][0] + coords[ps[1]][0])) / 9, - (-4 * coords[ps[12]][1] - coords[ps[3]][1] + - 6 * (coords[ps[8]][1] + coords[ps[13]][1]) - - 2 * (coords[ps[0]][1] + coords[ps[15]][1]) + - 3 * (coords[ps[11]][1] + coords[ps[1]][1])) / 9 - ]); - ps[10] = coords.length; - coords.push([ - (-4 * coords[ps[15]][0] - coords[ps[0]][0] + - 6 * (coords[ps[11]][0] + coords[ps[14]][0]) - - 2 * (coords[ps[12]][0] + coords[ps[3]][0]) + - 3 * (coords[ps[2]][0] + coords[ps[8]][0])) / 9, - (-4 * coords[ps[15]][1] - coords[ps[0]][1] + - 6 * (coords[ps[11]][1] + coords[ps[14]][1]) - - 2 * (coords[ps[12]][1] + coords[ps[3]][1]) + - 3 * (coords[ps[2]][1] + coords[ps[8]][1])) / 9 - ]); - mesh.figures.push({ - type: 'patch', - coords: new Int32Array(ps), // making copies of ps and cs - colors: new Int32Array(cs) - }); - } - } - - function decodeType7Shading(mesh, reader) { - var coords = mesh.coords; - var colors = mesh.colors; - var ps = new Int32Array(16); // p00, p10, ..., p30, p01, ..., p33 - var cs = new Int32Array(4); // c00, c30, c03, c33 - while (reader.hasData) { - var f = reader.readFlag(); - assert(0 <= f && f <= 3, 'Unknown type7 flag'); - var i, ii; - var pi = coords.length; - for (i = 0, ii = (f !== 0 ? 12 : 16); i < ii; i++) { - coords.push(reader.readCoordinate()); - } - var ci = colors.length; - for (i = 0, ii = (f !== 0 ? 2 : 4); i < ii; i++) { - colors.push(reader.readComponents()); - } - var tmp1, tmp2, tmp3, tmp4; - switch (f) { - case 0: - ps[12] = pi + 3; ps[13] = pi + 4; ps[14] = pi + 5; ps[15] = pi + 6; - ps[ 8] = pi + 2; ps[ 9] = pi + 13; ps[10] = pi + 14; ps[11] = pi + 7; - ps[ 4] = pi + 1; ps[ 5] = pi + 12; ps[ 6] = pi + 15; ps[ 7] = pi + 8; - ps[ 0] = pi; ps[ 1] = pi + 11; ps[ 2] = pi + 10; ps[ 3] = pi + 9; - cs[2] = ci + 1; cs[3] = ci + 2; - cs[0] = ci; cs[1] = ci + 3; - break; - case 1: - tmp1 = ps[12]; tmp2 = ps[13]; tmp3 = ps[14]; tmp4 = ps[15]; - ps[12] = tmp4; ps[13] = pi + 0; ps[14] = pi + 1; ps[15] = pi + 2; - ps[ 8] = tmp3; ps[ 9] = pi + 9; ps[10] = pi + 10; ps[11] = pi + 3; - ps[ 4] = tmp2; ps[ 5] = pi + 8; ps[ 6] = pi + 11; ps[ 7] = pi + 4; - ps[ 0] = tmp1; ps[ 1] = pi + 7; ps[ 2] = pi + 6; ps[ 3] = pi + 5; - tmp1 = cs[2]; tmp2 = cs[3]; - cs[2] = tmp2; cs[3] = ci; - cs[0] = tmp1; cs[1] = ci + 1; - break; - case 2: - tmp1 = ps[15]; - tmp2 = ps[11]; - ps[12] = ps[3]; ps[13] = pi + 0; ps[14] = pi + 1; ps[15] = pi + 2; - ps[ 8] = ps[7]; ps[ 9] = pi + 9; ps[10] = pi + 10; ps[11] = pi + 3; - ps[ 4] = tmp2; ps[ 5] = pi + 8; ps[ 6] = pi + 11; ps[ 7] = pi + 4; - ps[ 0] = tmp1; ps[ 1] = pi + 7; ps[ 2] = pi + 6; ps[ 3] = pi + 5; - tmp1 = cs[3]; - cs[2] = cs[1]; cs[3] = ci; - cs[0] = tmp1; cs[1] = ci + 1; - break; - case 3: - ps[12] = ps[0]; ps[13] = pi + 0; ps[14] = pi + 1; ps[15] = pi + 2; - ps[ 8] = ps[1]; ps[ 9] = pi + 9; ps[10] = pi + 10; ps[11] = pi + 3; - ps[ 4] = ps[2]; ps[ 5] = pi + 8; ps[ 6] = pi + 11; ps[ 7] = pi + 4; - ps[ 0] = ps[3]; ps[ 1] = pi + 7; ps[ 2] = pi + 6; ps[ 3] = pi + 5; - cs[2] = cs[0]; cs[3] = ci; - cs[0] = cs[1]; cs[1] = ci + 1; - break; - } - mesh.figures.push({ - type: 'patch', - coords: new Int32Array(ps), // making copies of ps and cs - colors: new Int32Array(cs) - }); - } - } - - function updateBounds(mesh) { - var minX = mesh.coords[0][0], minY = mesh.coords[0][1], - maxX = minX, maxY = minY; - for (var i = 1, ii = mesh.coords.length; i < ii; i++) { - var x = mesh.coords[i][0], y = mesh.coords[i][1]; - minX = minX > x ? x : minX; - minY = minY > y ? y : minY; - maxX = maxX < x ? x : maxX; - maxY = maxY < y ? y : maxY; - } - mesh.bounds = [minX, minY, maxX, maxY]; - } - - function packData(mesh) { - var i, ii, j, jj; - - var coords = mesh.coords; - var coordsPacked = new Float32Array(coords.length * 2); - for (i = 0, j = 0, ii = coords.length; i < ii; i++) { - var xy = coords[i]; - coordsPacked[j++] = xy[0]; - coordsPacked[j++] = xy[1]; - } - mesh.coords = coordsPacked; - - var colors = mesh.colors; - var colorsPacked = new Uint8Array(colors.length * 3); - for (i = 0, j = 0, ii = colors.length; i < ii; i++) { - var c = colors[i]; - colorsPacked[j++] = c[0]; - colorsPacked[j++] = c[1]; - colorsPacked[j++] = c[2]; - } - mesh.colors = colorsPacked; - - var figures = mesh.figures; - for (i = 0, ii = figures.length; i < ii; i++) { - var figure = figures[i], ps = figure.coords, cs = figure.colors; - for (j = 0, jj = ps.length; j < jj; j++) { - ps[j] *= 2; - cs[j] *= 3; - } - } - } - - function Mesh(stream, matrix, xref, res) { - assert(isStream(stream), 'Mesh data is not a stream'); - var dict = stream.dict; - this.matrix = matrix; - this.shadingType = dict.get('ShadingType'); - this.type = 'Pattern'; - this.bbox = dict.get('BBox'); - var cs = dict.get('ColorSpace', 'CS'); - cs = ColorSpace.parse(cs, xref, res); - this.cs = cs; - this.background = dict.has('Background') ? - cs.getRgb(dict.get('Background'), 0) : null; - - var fnObj = dict.get('Function'); - var fn = fnObj ? PDFFunction.parseArray(xref, fnObj) : null; - - this.coords = []; - this.colors = []; - this.figures = []; - - var decodeContext = { - bitsPerCoordinate: dict.get('BitsPerCoordinate'), - bitsPerComponent: dict.get('BitsPerComponent'), - bitsPerFlag: dict.get('BitsPerFlag'), - decode: dict.get('Decode'), - colorFn: fn, - colorSpace: cs, - numComps: fn ? 1 : cs.numComps - }; - var reader = new MeshStreamReader(stream, decodeContext); - - var patchMesh = false; - switch (this.shadingType) { - case ShadingType.FREE_FORM_MESH: - decodeType4Shading(this, reader); - break; - case ShadingType.LATTICE_FORM_MESH: - var verticesPerRow = dict.get('VerticesPerRow') | 0; - assert(verticesPerRow >= 2, 'Invalid VerticesPerRow'); - decodeType5Shading(this, reader, verticesPerRow); - break; - case ShadingType.COONS_PATCH_MESH: - decodeType6Shading(this, reader); - patchMesh = true; - break; - case ShadingType.TENSOR_PATCH_MESH: - decodeType7Shading(this, reader); - patchMesh = true; - break; - default: - error('Unsupported mesh type.'); - break; - } - - if (patchMesh) { - // dirty bounds calculation for determining, how dense shall be triangles - updateBounds(this); - for (var i = 0, ii = this.figures.length; i < ii; i++) { - buildFigureFromPatch(this, i); - } - } - // calculate bounds - updateBounds(this); - - packData(this); - } - - Mesh.prototype = { - getIR: function Mesh_getIR() { - return ['Mesh', this.shadingType, this.coords, this.colors, this.figures, - this.bounds, this.matrix, this.bbox, this.background]; - } - }; - - return Mesh; -})(); - -Shadings.Dummy = (function DummyClosure() { - function Dummy() { - this.type = 'Pattern'; - } - - Dummy.prototype = { - getIR: function Dummy_getIR() { - return ['Dummy']; - } - }; - return Dummy; -})(); - -function getTilingPatternIR(operatorList, dict, args) { - var matrix = dict.get('Matrix'); - var bbox = dict.get('BBox'); - var xstep = dict.get('XStep'); - var ystep = dict.get('YStep'); - var paintType = dict.get('PaintType'); - var tilingType = dict.get('TilingType'); - - return [ - 'TilingPattern', args, operatorList, matrix, bbox, xstep, ystep, - paintType, tilingType - ]; -} - -exports.Pattern = Pattern; -exports.getTilingPatternIR = getTilingPatternIR; -})); - - -(function (root, factory) { - { - factory((root.pdfjsCoreEvaluator = {}), root.pdfjsSharedUtil, - root.pdfjsCorePrimitives, root.pdfjsCoreStream, root.pdfjsCoreParser, - root.pdfjsCoreImage, root.pdfjsCoreColorSpace, root.pdfjsCoreMurmurHash3, - root.pdfjsCoreFonts, root.pdfjsCoreFunction, root.pdfjsCorePattern, - root.pdfjsCoreCMap, root.pdfjsCoreMetrics, root.pdfjsCoreBidi); - } -}(this, function (exports, sharedUtil, corePrimitives, coreStream, coreParser, - coreImage, coreColorSpace, coreMurmurHash3, coreFonts, - coreFunction, corePattern, coreCMap, coreMetrics, coreBidi) { - -var FONT_IDENTITY_MATRIX = sharedUtil.FONT_IDENTITY_MATRIX; -var IDENTITY_MATRIX = sharedUtil.IDENTITY_MATRIX; -var UNSUPPORTED_FEATURES = sharedUtil.UNSUPPORTED_FEATURES; -var ImageKind = sharedUtil.ImageKind; -var OPS = sharedUtil.OPS; -var TextRenderingMode = sharedUtil.TextRenderingMode; -var Util = sharedUtil.Util; -var assert = sharedUtil.assert; -var createPromiseCapability = sharedUtil.createPromiseCapability; -var error = sharedUtil.error; -var info = sharedUtil.info; -var isArray = sharedUtil.isArray; -var isNum = sharedUtil.isNum; -var isString = sharedUtil.isString; -var warn = sharedUtil.warn; -var Dict = corePrimitives.Dict; -var Name = corePrimitives.Name; -var isCmd = corePrimitives.isCmd; -var isDict = corePrimitives.isDict; -var isName = corePrimitives.isName; -var isRef = corePrimitives.isRef; -var isStream = corePrimitives.isStream; -var DecodeStream = coreStream.DecodeStream; -var JpegStream = coreStream.JpegStream; -var Lexer = coreParser.Lexer; -var Parser = coreParser.Parser; -var isEOF = coreParser.isEOF; -var PDFImage = coreImage.PDFImage; -var ColorSpace = coreColorSpace.ColorSpace; -var MurmurHash3_64 = coreMurmurHash3.MurmurHash3_64; -var Encodings = coreFonts.Encodings; -var ErrorFont = coreFonts.ErrorFont; -var FontFlags = coreFonts.FontFlags; -var Font = coreFonts.Font; -var IdentityToUnicodeMap = coreFonts.IdentityToUnicodeMap; -var NormalizedUnicodes = coreFonts.NormalizedUnicodes; -var ToUnicodeMap = coreFonts.ToUnicodeMap; -var getFontType = coreFonts.getFontType; -var reverseIfRtl = coreFonts.reverseIfRtl; -var serifFonts = coreFonts.serifFonts; -var symbolsFonts = coreFonts.symbolsFonts; -var stdFontMap = coreFonts.stdFontMap; -var isPDFFunction = coreFunction.isPDFFunction; -var PDFFunction = coreFunction.PDFFunction; -var Pattern = corePattern.Pattern; -var getTilingPatternIR = corePattern.getTilingPatternIR; -var CMapFactory = coreCMap.CMapFactory; -var IdentityCMap = coreCMap.IdentityCMap; -var Metrics = coreMetrics.Metrics; -var bidi = coreBidi.bidi; - -var PartialEvaluator = (function PartialEvaluatorClosure() { - function PartialEvaluator(pdfManager, xref, handler, pageIndex, - uniquePrefix, idCounters, fontCache) { - this.pdfManager = pdfManager; - this.xref = xref; - this.handler = handler; - this.pageIndex = pageIndex; - this.uniquePrefix = uniquePrefix; - this.idCounters = idCounters; - this.fontCache = fontCache; - } - - // Trying to minimize Date.now() usage and check every 100 time - var TIME_SLOT_DURATION_MS = 20; - var CHECK_TIME_EVERY = 100; - function TimeSlotManager() { - this.reset(); - } - TimeSlotManager.prototype = { - check: function TimeSlotManager_check() { - if (++this.checked < CHECK_TIME_EVERY) { - return false; - } - this.checked = 0; - return this.endTime <= Date.now(); - }, - reset: function TimeSlotManager_reset() { - this.endTime = Date.now() + TIME_SLOT_DURATION_MS; - this.checked = 0; - } - }; - - var deferred = Promise.resolve(); - - var TILING_PATTERN = 1, SHADING_PATTERN = 2; - - PartialEvaluator.prototype = { - hasBlendModes: function PartialEvaluator_hasBlendModes(resources) { - if (!isDict(resources)) { - return false; - } - - var processed = Object.create(null); - if (resources.objId) { - processed[resources.objId] = true; - } - - var nodes = [resources]; - while (nodes.length) { - var key; - var node = nodes.shift(); - // First check the current resources for blend modes. - var graphicStates = node.get('ExtGState'); - if (isDict(graphicStates)) { - graphicStates = graphicStates.getAll(); - for (key in graphicStates) { - var graphicState = graphicStates[key]; - var bm = graphicState['BM']; - if (isName(bm) && bm.name !== 'Normal') { - return true; - } - } - } - // Descend into the XObjects to look for more resources and blend modes. - var xObjects = node.get('XObject'); - if (!isDict(xObjects)) { - continue; - } - xObjects = xObjects.getAll(); - for (key in xObjects) { - var xObject = xObjects[key]; - if (!isStream(xObject)) { - continue; - } - if (xObject.dict.objId) { - if (processed[xObject.dict.objId]) { - // stream has objId and is processed already - continue; - } - processed[xObject.dict.objId] = true; - } - var xResources = xObject.dict.get('Resources'); - // Checking objId to detect an infinite loop. - if (isDict(xResources) && - (!xResources.objId || !processed[xResources.objId])) { - nodes.push(xResources); - if (xResources.objId) { - processed[xResources.objId] = true; - } - } - } - } - return false; - }, - - buildFormXObject: function PartialEvaluator_buildFormXObject(resources, - xobj, smask, - operatorList, - task, - initialState) { - var matrix = xobj.dict.getArray('Matrix'); - var bbox = xobj.dict.getArray('BBox'); - var group = xobj.dict.get('Group'); - if (group) { - var groupOptions = { - matrix: matrix, - bbox: bbox, - smask: smask, - isolated: false, - knockout: false - }; - - var groupSubtype = group.get('S'); - var colorSpace; - if (isName(groupSubtype) && groupSubtype.name === 'Transparency') { - groupOptions.isolated = (group.get('I') || false); - groupOptions.knockout = (group.get('K') || false); - colorSpace = (group.has('CS') ? - ColorSpace.parse(group.get('CS'), this.xref, resources) : null); - } - - if (smask && smask.backdrop) { - colorSpace = colorSpace || ColorSpace.singletons.rgb; - smask.backdrop = colorSpace.getRgb(smask.backdrop, 0); - } - - operatorList.addOp(OPS.beginGroup, [groupOptions]); - } - - operatorList.addOp(OPS.paintFormXObjectBegin, [matrix, bbox]); - - return this.getOperatorList(xobj, task, - (xobj.dict.get('Resources') || resources), operatorList, initialState). - then(function () { - operatorList.addOp(OPS.paintFormXObjectEnd, []); - - if (group) { - operatorList.addOp(OPS.endGroup, [groupOptions]); - } - }); - }, - - buildPaintImageXObject: - function PartialEvaluator_buildPaintImageXObject(resources, image, - inline, operatorList, - cacheKey, imageCache) { - var self = this; - var dict = image.dict; - var w = dict.get('Width', 'W'); - var h = dict.get('Height', 'H'); - - if (!(w && isNum(w)) || !(h && isNum(h))) { - warn('Image dimensions are missing, or not numbers.'); - return; - } - if (PDFJS.maxImageSize !== -1 && w * h > PDFJS.maxImageSize) { - warn('Image exceeded maximum allowed size and was removed.'); - return; - } - - var imageMask = (dict.get('ImageMask', 'IM') || false); - var imgData, args; - if (imageMask) { - // This depends on a tmpCanvas being filled with the - // current fillStyle, such that processing the pixel - // data can't be done here. Instead of creating a - // complete PDFImage, only read the information needed - // for later. - - var width = dict.get('Width', 'W'); - var height = dict.get('Height', 'H'); - var bitStrideLength = (width + 7) >> 3; - var imgArray = image.getBytes(bitStrideLength * height); - var decode = dict.get('Decode', 'D'); - var inverseDecode = (!!decode && decode[0] > 0); - - imgData = PDFImage.createMask(imgArray, width, height, - image instanceof DecodeStream, - inverseDecode); - imgData.cached = true; - args = [imgData]; - operatorList.addOp(OPS.paintImageMaskXObject, args); - if (cacheKey) { - imageCache[cacheKey] = { - fn: OPS.paintImageMaskXObject, - args: args - }; - } - return; - } - - var softMask = (dict.get('SMask', 'SM') || false); - var mask = (dict.get('Mask') || false); - - var SMALL_IMAGE_DIMENSIONS = 200; - // Inlining small images into the queue as RGB data - if (inline && !softMask && !mask && !(image instanceof JpegStream) && - (w + h) < SMALL_IMAGE_DIMENSIONS) { - var imageObj = new PDFImage(this.xref, resources, image, - inline, null, null); - // We force the use of RGBA_32BPP images here, because we can't handle - // any other kind. - imgData = imageObj.createImageData(/* forceRGBA = */ true); - operatorList.addOp(OPS.paintInlineImageXObject, [imgData]); - return; - } - - // If there is no imageMask, create the PDFImage and a lot - // of image processing can be done here. - var uniquePrefix = (this.uniquePrefix || ''); - var objId = 'img_' + uniquePrefix + (++this.idCounters.obj); - operatorList.addDependency(objId); - args = [objId, w, h]; - - if (!softMask && !mask && image instanceof JpegStream && - image.isNativelySupported(this.xref, resources)) { - // These JPEGs don't need any more processing so we can just send it. - operatorList.addOp(OPS.paintJpegXObject, args); - this.handler.send('obj', - [objId, this.pageIndex, 'JpegStream', image.getIR()]); - return; - } - - PDFImage.buildImage(self.handler, self.xref, resources, image, inline). - then(function(imageObj) { - var imgData = imageObj.createImageData(/* forceRGBA = */ false); - self.handler.send('obj', [objId, self.pageIndex, 'Image', imgData], - [imgData.data.buffer]); - }).then(undefined, function (reason) { - warn('Unable to decode image: ' + reason); - self.handler.send('obj', [objId, self.pageIndex, 'Image', null]); - }); - - operatorList.addOp(OPS.paintImageXObject, args); - if (cacheKey) { - imageCache[cacheKey] = { - fn: OPS.paintImageXObject, - args: args - }; - } - }, - - handleSMask: function PartialEvaluator_handleSmask(smask, resources, - operatorList, task, - stateManager) { - var smaskContent = smask.get('G'); - var smaskOptions = { - subtype: smask.get('S').name, - backdrop: smask.get('BC') - }; - - // The SMask might have a alpha/luminosity value transfer function -- - // we will build a map of integer values in range 0..255 to be fast. - var transferObj = smask.get('TR'); - if (isPDFFunction(transferObj)) { - var transferFn = PDFFunction.parse(this.xref, transferObj); - var transferMap = new Uint8Array(256); - var tmp = new Float32Array(1); - for (var i = 0; i < 255; i++) { - tmp[0] = i / 255; - transferFn(tmp, 0, tmp, 0); - transferMap[i] = (tmp[0] * 255) | 0; - } - smaskOptions.transferMap = transferMap; - } - - return this.buildFormXObject(resources, smaskContent, smaskOptions, - operatorList, task, stateManager.state.clone()); - }, - - handleTilingType: - function PartialEvaluator_handleTilingType(fn, args, resources, - pattern, patternDict, - operatorList, task) { - // Create an IR of the pattern code. - var tilingOpList = new OperatorList(); - // Merge the available resources, to prevent issues when the patternDict - // is missing some /Resources entries (fixes issue6541.pdf). - var resourcesArray = [patternDict.get('Resources'), resources]; - var patternResources = Dict.merge(this.xref, resourcesArray); - - return this.getOperatorList(pattern, task, patternResources, - tilingOpList).then(function () { - // Add the dependencies to the parent operator list so they are - // resolved before sub operator list is executed synchronously. - operatorList.addDependencies(tilingOpList.dependencies); - operatorList.addOp(fn, getTilingPatternIR({ - fnArray: tilingOpList.fnArray, - argsArray: tilingOpList.argsArray - }, patternDict, args)); - }); - }, - - handleSetFont: - function PartialEvaluator_handleSetFont(resources, fontArgs, fontRef, - operatorList, task, state) { - // TODO(mack): Not needed? - var fontName; - if (fontArgs) { - fontArgs = fontArgs.slice(); - fontName = fontArgs[0].name; - } - - var self = this; - return this.loadFont(fontName, fontRef, this.xref, resources).then( - function (translated) { - if (!translated.font.isType3Font) { - return translated; - } - return translated.loadType3Data(self, resources, operatorList, task). - then(function () { - return translated; - }, function (reason) { - // Error in the font data -- sending unsupported feature notification. - self.handler.send('UnsupportedFeature', - {featureId: UNSUPPORTED_FEATURES.font}); - return new TranslatedFont('g_font_error', - new ErrorFont('Type3 font load error: ' + reason), translated.font); - }); - }).then(function (translated) { - state.font = translated.font; - translated.send(self.handler); - return translated.loadedName; - }); - }, - - handleText: function PartialEvaluator_handleText(chars, state) { - var font = state.font; - var glyphs = font.charsToGlyphs(chars); - var isAddToPathSet = !!(state.textRenderingMode & - TextRenderingMode.ADD_TO_PATH_FLAG); - if (font.data && (isAddToPathSet || PDFJS.disableFontFace)) { - var buildPath = function (fontChar) { - if (!font.renderer.hasBuiltPath(fontChar)) { - var path = font.renderer.getPathJs(fontChar); - this.handler.send('commonobj', [ - font.loadedName + '_path_' + fontChar, - 'FontPath', - path - ]); - } - }.bind(this); - - for (var i = 0, ii = glyphs.length; i < ii; i++) { - var glyph = glyphs[i]; - buildPath(glyph.fontChar); - - // If the glyph has an accent we need to build a path for its - // fontChar too, otherwise CanvasGraphics_paintChar will fail. - var accent = glyph.accent; - if (accent && accent.fontChar) { - buildPath(accent.fontChar); - } - } - } - - return glyphs; - }, - - setGState: function PartialEvaluator_setGState(resources, gState, - operatorList, task, - xref, stateManager) { - // This array holds the converted/processed state data. - var gStateObj = []; - var gStateMap = gState.map; - var self = this; - var promise = Promise.resolve(); - for (var key in gStateMap) { - var value = gStateMap[key]; - switch (key) { - case 'Type': - break; - case 'LW': - case 'LC': - case 'LJ': - case 'ML': - case 'D': - case 'RI': - case 'FL': - case 'CA': - case 'ca': - gStateObj.push([key, value]); - break; - case 'Font': - promise = promise.then(function () { - return self.handleSetFont(resources, null, value[0], operatorList, - task, stateManager.state). - then(function (loadedName) { - operatorList.addDependency(loadedName); - gStateObj.push([key, [loadedName, value[1]]]); - }); - }); - break; - case 'BM': - gStateObj.push([key, value]); - break; - case 'SMask': - if (isName(value) && value.name === 'None') { - gStateObj.push([key, false]); - break; - } - var dict = xref.fetchIfRef(value); - if (isDict(dict)) { - promise = promise.then(function () { - return self.handleSMask(dict, resources, operatorList, - task, stateManager); - }); - gStateObj.push([key, true]); - } else { - warn('Unsupported SMask type'); - } - - break; - // Only generate info log messages for the following since - // they are unlikely to have a big impact on the rendering. - case 'OP': - case 'op': - case 'OPM': - case 'BG': - case 'BG2': - case 'UCR': - case 'UCR2': - case 'TR': - case 'TR2': - case 'HT': - case 'SM': - case 'SA': - case 'AIS': - case 'TK': - // TODO implement these operators. - info('graphic state operator ' + key); - break; - default: - info('Unknown graphic state operator ' + key); - break; - } - } - return promise.then(function () { - if (gStateObj.length >= 0) { - operatorList.addOp(OPS.setGState, [gStateObj]); - } - }); - }, - - loadFont: function PartialEvaluator_loadFont(fontName, font, xref, - resources) { - - function errorFont() { - return Promise.resolve(new TranslatedFont('g_font_error', - new ErrorFont('Font ' + fontName + ' is not available'), font)); - } - var fontRef; - if (font) { // Loading by ref. - assert(isRef(font)); - fontRef = font; - } else { // Loading by name. - var fontRes = resources.get('Font'); - if (fontRes) { - fontRef = fontRes.getRaw(fontName); - } else { - warn('fontRes not available'); - return errorFont(); - } - } - if (!fontRef) { - warn('fontRef not available'); - return errorFont(); - } - - if (this.fontCache.has(fontRef)) { - return this.fontCache.get(fontRef); - } - - font = xref.fetchIfRef(fontRef); - if (!isDict(font)) { - return errorFont(); - } - - // We are holding font.translated references just for fontRef that are not - // dictionaries (Dict). See explanation below. - if (font.translated) { - return font.translated; - } - - var fontCapability = createPromiseCapability(); - - var preEvaluatedFont = this.preEvaluateFont(font, xref); - var descriptor = preEvaluatedFont.descriptor; - var fontID = fontRef.num + '_' + fontRef.gen; - if (isDict(descriptor)) { - if (!descriptor.fontAliases) { - descriptor.fontAliases = Object.create(null); - } - - var fontAliases = descriptor.fontAliases; - var hash = preEvaluatedFont.hash; - if (fontAliases[hash]) { - var aliasFontRef = fontAliases[hash].aliasRef; - if (aliasFontRef && this.fontCache.has(aliasFontRef)) { - this.fontCache.putAlias(fontRef, aliasFontRef); - return this.fontCache.get(fontRef); - } - } - - if (!fontAliases[hash]) { - fontAliases[hash] = { - fontID: Font.getFontID() - }; - } - - fontAliases[hash].aliasRef = fontRef; - fontID = fontAliases[hash].fontID; - } - - // Workaround for bad PDF generators that don't reference fonts - // properly, i.e. by not using an object identifier. - // Check if the fontRef is a Dict (as opposed to a standard object), - // in which case we don't cache the font and instead reference it by - // fontName in font.loadedName below. - var fontRefIsDict = isDict(fontRef); - if (!fontRefIsDict) { - this.fontCache.put(fontRef, fontCapability.promise); - } - - // Keep track of each font we translated so the caller can - // load them asynchronously before calling display on a page. - font.loadedName = 'g_' + this.pdfManager.docId + '_f' + (fontRefIsDict ? - fontName.replace(/\W/g, '') : fontID); - - font.translated = fontCapability.promise; - - // TODO move promises into translate font - var translatedPromise; - try { - translatedPromise = Promise.resolve( - this.translateFont(preEvaluatedFont, xref)); - } catch (e) { - translatedPromise = Promise.reject(e); - } - - var self = this; - translatedPromise.then(function (translatedFont) { - if (translatedFont.fontType !== undefined) { - var xrefFontStats = xref.stats.fontTypes; - xrefFontStats[translatedFont.fontType] = true; - } - - fontCapability.resolve(new TranslatedFont(font.loadedName, - translatedFont, font)); - }, function (reason) { - // TODO fontCapability.reject? - // Error in the font data -- sending unsupported feature notification. - self.handler.send('UnsupportedFeature', - {featureId: UNSUPPORTED_FEATURES.font}); - - try { - // error, but it's still nice to have font type reported - var descriptor = preEvaluatedFont.descriptor; - var fontFile3 = descriptor && descriptor.get('FontFile3'); - var subtype = fontFile3 && fontFile3.get('Subtype'); - var fontType = getFontType(preEvaluatedFont.type, - subtype && subtype.name); - var xrefFontStats = xref.stats.fontTypes; - xrefFontStats[fontType] = true; - } catch (ex) { } - - fontCapability.resolve(new TranslatedFont(font.loadedName, - new ErrorFont(reason instanceof Error ? reason.message : reason), - font)); - }); - return fontCapability.promise; - }, - - buildPath: function PartialEvaluator_buildPath(operatorList, fn, args) { - var lastIndex = operatorList.length - 1; - if (!args) { - args = []; - } - if (lastIndex < 0 || - operatorList.fnArray[lastIndex] !== OPS.constructPath) { - operatorList.addOp(OPS.constructPath, [[fn], args]); - } else { - var opArgs = operatorList.argsArray[lastIndex]; - opArgs[0].push(fn); - Array.prototype.push.apply(opArgs[1], args); - } - }, - - handleColorN: function PartialEvaluator_handleColorN(operatorList, fn, args, - cs, patterns, resources, task, xref) { - // compile tiling patterns - var patternName = args[args.length - 1]; - // SCN/scn applies patterns along with normal colors - var pattern; - if (isName(patternName) && - (pattern = patterns.get(patternName.name))) { - var dict = (isStream(pattern) ? pattern.dict : pattern); - var typeNum = dict.get('PatternType'); - - if (typeNum === TILING_PATTERN) { - var color = cs.base ? cs.base.getRgb(args, 0) : null; - return this.handleTilingType(fn, color, resources, pattern, - dict, operatorList, task); - } else if (typeNum === SHADING_PATTERN) { - var shading = dict.get('Shading'); - var matrix = dict.get('Matrix'); - pattern = Pattern.parseShading(shading, matrix, xref, resources, - this.handler); - operatorList.addOp(fn, pattern.getIR()); - return Promise.resolve(); - } else { - return Promise.reject('Unknown PatternType: ' + typeNum); - } - } - // TODO shall we fail here? - operatorList.addOp(fn, args); - return Promise.resolve(); - }, - - getOperatorList: function PartialEvaluator_getOperatorList(stream, - task, - resources, - operatorList, - initialState) { - - var self = this; - var xref = this.xref; - var imageCache = {}; - - assert(operatorList); - - resources = (resources || Dict.empty); - var xobjs = (resources.get('XObject') || Dict.empty); - var patterns = (resources.get('Pattern') || Dict.empty); - var stateManager = new StateManager(initialState || new EvalState()); - var preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager); - var timeSlotManager = new TimeSlotManager(); - - return new Promise(function next(resolve, reject) { - task.ensureNotTerminated(); - timeSlotManager.reset(); - var stop, operation = {}, i, ii, cs; - while (!(stop = timeSlotManager.check())) { - // The arguments parsed by read() are used beyond this loop, so we - // cannot reuse the same array on each iteration. Therefore we pass - // in |null| as the initial value (see the comment on - // EvaluatorPreprocessor_read() for why). - operation.args = null; - if (!(preprocessor.read(operation))) { - break; - } - var args = operation.args; - var fn = operation.fn; - - switch (fn | 0) { - case OPS.paintXObject: - if (args[0].code) { - break; - } - // eagerly compile XForm objects - var name = args[0].name; - if (!name) { - warn('XObject must be referred to by name.'); - continue; - } - if (imageCache[name] !== undefined) { - operatorList.addOp(imageCache[name].fn, imageCache[name].args); - args = null; - continue; - } - - var xobj = xobjs.get(name); - if (xobj) { - assert(isStream(xobj), 'XObject should be a stream'); - - var type = xobj.dict.get('Subtype'); - assert(isName(type), - 'XObject should have a Name subtype'); - - if (type.name === 'Form') { - stateManager.save(); - return self.buildFormXObject(resources, xobj, null, - operatorList, task, - stateManager.state.clone()). - then(function () { - stateManager.restore(); - next(resolve, reject); - }, reject); - } else if (type.name === 'Image') { - self.buildPaintImageXObject(resources, xobj, false, - operatorList, name, imageCache); - args = null; - continue; - } else if (type.name === 'PS') { - // PostScript XObjects are unused when viewing documents. - // See section 4.7.1 of Adobe's PDF reference. - info('Ignored XObject subtype PS'); - continue; - } else { - error('Unhandled XObject subtype ' + type.name); - } - } - break; - case OPS.setFont: - var fontSize = args[1]; - // eagerly collect all fonts - return self.handleSetFont(resources, args, null, operatorList, - task, stateManager.state). - then(function (loadedName) { - operatorList.addDependency(loadedName); - operatorList.addOp(OPS.setFont, [loadedName, fontSize]); - next(resolve, reject); - }, reject); - case OPS.endInlineImage: - var cacheKey = args[0].cacheKey; - if (cacheKey) { - var cacheEntry = imageCache[cacheKey]; - if (cacheEntry !== undefined) { - operatorList.addOp(cacheEntry.fn, cacheEntry.args); - args = null; - continue; - } - } - self.buildPaintImageXObject(resources, args[0], true, - operatorList, cacheKey, imageCache); - args = null; - continue; - case OPS.showText: - args[0] = self.handleText(args[0], stateManager.state); - break; - case OPS.showSpacedText: - var arr = args[0]; - var combinedGlyphs = []; - var arrLength = arr.length; - var state = stateManager.state; - for (i = 0; i < arrLength; ++i) { - var arrItem = arr[i]; - if (isString(arrItem)) { - Array.prototype.push.apply(combinedGlyphs, - self.handleText(arrItem, state)); - } else if (isNum(arrItem)) { - combinedGlyphs.push(arrItem); - } - } - args[0] = combinedGlyphs; - fn = OPS.showText; - break; - case OPS.nextLineShowText: - operatorList.addOp(OPS.nextLine); - args[0] = self.handleText(args[0], stateManager.state); - fn = OPS.showText; - break; - case OPS.nextLineSetSpacingShowText: - operatorList.addOp(OPS.nextLine); - operatorList.addOp(OPS.setWordSpacing, [args.shift()]); - operatorList.addOp(OPS.setCharSpacing, [args.shift()]); - args[0] = self.handleText(args[0], stateManager.state); - fn = OPS.showText; - break; - case OPS.setTextRenderingMode: - stateManager.state.textRenderingMode = args[0]; - break; - - case OPS.setFillColorSpace: - stateManager.state.fillColorSpace = - ColorSpace.parse(args[0], xref, resources); - continue; - case OPS.setStrokeColorSpace: - stateManager.state.strokeColorSpace = - ColorSpace.parse(args[0], xref, resources); - continue; - case OPS.setFillColor: - cs = stateManager.state.fillColorSpace; - args = cs.getRgb(args, 0); - fn = OPS.setFillRGBColor; - break; - case OPS.setStrokeColor: - cs = stateManager.state.strokeColorSpace; - args = cs.getRgb(args, 0); - fn = OPS.setStrokeRGBColor; - break; - case OPS.setFillGray: - stateManager.state.fillColorSpace = ColorSpace.singletons.gray; - args = ColorSpace.singletons.gray.getRgb(args, 0); - fn = OPS.setFillRGBColor; - break; - case OPS.setStrokeGray: - stateManager.state.strokeColorSpace = ColorSpace.singletons.gray; - args = ColorSpace.singletons.gray.getRgb(args, 0); - fn = OPS.setStrokeRGBColor; - break; - case OPS.setFillCMYKColor: - stateManager.state.fillColorSpace = ColorSpace.singletons.cmyk; - args = ColorSpace.singletons.cmyk.getRgb(args, 0); - fn = OPS.setFillRGBColor; - break; - case OPS.setStrokeCMYKColor: - stateManager.state.strokeColorSpace = ColorSpace.singletons.cmyk; - args = ColorSpace.singletons.cmyk.getRgb(args, 0); - fn = OPS.setStrokeRGBColor; - break; - case OPS.setFillRGBColor: - stateManager.state.fillColorSpace = ColorSpace.singletons.rgb; - args = ColorSpace.singletons.rgb.getRgb(args, 0); - break; - case OPS.setStrokeRGBColor: - stateManager.state.strokeColorSpace = ColorSpace.singletons.rgb; - args = ColorSpace.singletons.rgb.getRgb(args, 0); - break; - case OPS.setFillColorN: - cs = stateManager.state.fillColorSpace; - if (cs.name === 'Pattern') { - return self.handleColorN(operatorList, OPS.setFillColorN, - args, cs, patterns, resources, task, xref).then(function() { - next(resolve, reject); - }, reject); - } - args = cs.getRgb(args, 0); - fn = OPS.setFillRGBColor; - break; - case OPS.setStrokeColorN: - cs = stateManager.state.strokeColorSpace; - if (cs.name === 'Pattern') { - return self.handleColorN(operatorList, OPS.setStrokeColorN, - args, cs, patterns, resources, task, xref).then(function() { - next(resolve, reject); - }, reject); - } - args = cs.getRgb(args, 0); - fn = OPS.setStrokeRGBColor; - break; - - case OPS.shadingFill: - var shadingRes = resources.get('Shading'); - if (!shadingRes) { - error('No shading resource found'); - } - - var shading = shadingRes.get(args[0].name); - if (!shading) { - error('No shading object found'); - } - - var shadingFill = Pattern.parseShading(shading, null, xref, - resources, self.handler); - var patternIR = shadingFill.getIR(); - args = [patternIR]; - fn = OPS.shadingFill; - break; - case OPS.setGState: - var dictName = args[0]; - var extGState = resources.get('ExtGState'); - - if (!isDict(extGState) || !extGState.has(dictName.name)) { - break; - } - - var gState = extGState.get(dictName.name); - return self.setGState(resources, gState, operatorList, task, - xref, stateManager).then(function() { - next(resolve, reject); - }, reject); - case OPS.moveTo: - case OPS.lineTo: - case OPS.curveTo: - case OPS.curveTo2: - case OPS.curveTo3: - case OPS.closePath: - self.buildPath(operatorList, fn, args); - continue; - case OPS.rectangle: - self.buildPath(operatorList, fn, args); - continue; - case OPS.markPoint: - case OPS.markPointProps: - case OPS.beginMarkedContent: - case OPS.beginMarkedContentProps: - case OPS.endMarkedContent: - case OPS.beginCompat: - case OPS.endCompat: - // Ignore operators where the corresponding handlers are known to - // be no-op in CanvasGraphics (display/canvas.js). This prevents - // serialization errors and is also a bit more efficient. - // We could also try to serialize all objects in a general way, - // e.g. as done in https://github.com/mozilla/pdf.js/pull/6266, - // but doing so is meaningless without knowing the semantics. - continue; - default: - // Note: Let's hope that the ignored operator does not have any - // non-serializable arguments, otherwise postMessage will throw - // "An object could not be cloned.". - } - operatorList.addOp(fn, args); - } - if (stop) { - deferred.then(function () { - next(resolve, reject); - }, reject); - return; - } - // Some PDFs don't close all restores inside object/form. - // Closing those for them. - for (i = 0, ii = preprocessor.savedStatesDepth; i < ii; i++) { - operatorList.addOp(OPS.restore, []); - } - resolve(); - }); - }, - - getTextContent: - function PartialEvaluator_getTextContent(stream, task, resources, - stateManager, - normalizeWhitespace) { - - stateManager = (stateManager || new StateManager(new TextState())); - - var WhitespaceRegexp = /\s/g; - - var textContent = { - items: [], - styles: Object.create(null) - }; - var textContentItem = { - initialized: false, - str: [], - width: 0, - height: 0, - vertical: false, - lastAdvanceWidth: 0, - lastAdvanceHeight: 0, - textAdvanceScale: 0, - spaceWidth: 0, - fakeSpaceMin: Infinity, - fakeMultiSpaceMin: Infinity, - fakeMultiSpaceMax: -0, - textRunBreakAllowed: false, - transform: null, - fontName: null - }; - var SPACE_FACTOR = 0.3; - var MULTI_SPACE_FACTOR = 1.5; - var MULTI_SPACE_FACTOR_MAX = 4; - - var self = this; - var xref = this.xref; - - resources = (xref.fetchIfRef(resources) || Dict.empty); - - // The xobj is parsed iff it's needed, e.g. if there is a `DO` cmd. - var xobjs = null; - var xobjsCache = {}; - - var preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager); - - var textState; - - function ensureTextContentItem() { - if (textContentItem.initialized) { - return textContentItem; - } - var font = textState.font; - if (!(font.loadedName in textContent.styles)) { - textContent.styles[font.loadedName] = { - fontFamily: font.fallbackName, - ascent: font.ascent, - descent: font.descent, - vertical: font.vertical - }; - } - textContentItem.fontName = font.loadedName; - - // 9.4.4 Text Space Details - var tsm = [textState.fontSize * textState.textHScale, 0, - 0, textState.fontSize, - 0, textState.textRise]; - - if (font.isType3Font && - textState.fontMatrix !== FONT_IDENTITY_MATRIX && - textState.fontSize === 1) { - var glyphHeight = font.bbox[3] - font.bbox[1]; - if (glyphHeight > 0) { - glyphHeight = glyphHeight * textState.fontMatrix[3]; - tsm[3] *= glyphHeight; - } - } - - var trm = Util.transform(textState.ctm, - Util.transform(textState.textMatrix, tsm)); - textContentItem.transform = trm; - if (!font.vertical) { - textContentItem.width = 0; - textContentItem.height = Math.sqrt(trm[2] * trm[2] + trm[3] * trm[3]); - textContentItem.vertical = false; - } else { - textContentItem.width = Math.sqrt(trm[0] * trm[0] + trm[1] * trm[1]); - textContentItem.height = 0; - textContentItem.vertical = true; - } - - var a = textState.textLineMatrix[0]; - var b = textState.textLineMatrix[1]; - var scaleLineX = Math.sqrt(a * a + b * b); - a = textState.ctm[0]; - b = textState.ctm[1]; - var scaleCtmX = Math.sqrt(a * a + b * b); - textContentItem.textAdvanceScale = scaleCtmX * scaleLineX; - textContentItem.lastAdvanceWidth = 0; - textContentItem.lastAdvanceHeight = 0; - - var spaceWidth = font.spaceWidth / 1000 * textState.fontSize; - if (spaceWidth) { - textContentItem.spaceWidth = spaceWidth; - textContentItem.fakeSpaceMin = spaceWidth * SPACE_FACTOR; - textContentItem.fakeMultiSpaceMin = spaceWidth * MULTI_SPACE_FACTOR; - textContentItem.fakeMultiSpaceMax = - spaceWidth * MULTI_SPACE_FACTOR_MAX; - // It's okay for monospace fonts to fake as much space as needed. - textContentItem.textRunBreakAllowed = !font.isMonospace; - } else { - textContentItem.spaceWidth = 0; - textContentItem.fakeSpaceMin = Infinity; - textContentItem.fakeMultiSpaceMin = Infinity; - textContentItem.fakeMultiSpaceMax = 0; - textContentItem.textRunBreakAllowed = false; - } - - - textContentItem.initialized = true; - return textContentItem; - } - - function replaceWhitespace(str) { - // Replaces all whitespaces with standard spaces (0x20), to avoid - // alignment issues between the textLayer and the canvas if the text - // contains e.g. tabs (fixes issue6612.pdf). - var i = 0, ii = str.length, code; - while (i < ii && (code = str.charCodeAt(i)) >= 0x20 && code <= 0x7F) { - i++; - } - return (i < ii ? str.replace(WhitespaceRegexp, ' ') : str); - } - - function runBidiTransform(textChunk) { - var str = textChunk.str.join(''); - var bidiResult = PDFJS.bidi(str, -1, textChunk.vertical); - return { - str: (normalizeWhitespace ? replaceWhitespace(bidiResult.str) : - bidiResult.str), - dir: bidiResult.dir, - width: textChunk.width, - height: textChunk.height, - transform: textChunk.transform, - fontName: textChunk.fontName - }; - } - - function handleSetFont(fontName, fontRef) { - return self.loadFont(fontName, fontRef, xref, resources). - then(function (translated) { - textState.font = translated.font; - textState.fontMatrix = translated.font.fontMatrix || - FONT_IDENTITY_MATRIX; - }); - } - - function buildTextContentItem(chars) { - var font = textState.font; - var textChunk = ensureTextContentItem(); - var width = 0; - var height = 0; - var glyphs = font.charsToGlyphs(chars); - var defaultVMetrics = font.defaultVMetrics; - for (var i = 0; i < glyphs.length; i++) { - var glyph = glyphs[i]; - var vMetricX = null; - var vMetricY = null; - var glyphWidth = null; - if (font.vertical) { - if (glyph.vmetric) { - glyphWidth = glyph.vmetric[0]; - vMetricX = glyph.vmetric[1]; - vMetricY = glyph.vmetric[2]; - } else { - glyphWidth = glyph.width; - vMetricX = glyph.width * 0.5; - vMetricY = defaultVMetrics[2]; - } - } else { - glyphWidth = glyph.width; - } - - var glyphUnicode = glyph.unicode; - if (NormalizedUnicodes[glyphUnicode] !== undefined) { - glyphUnicode = NormalizedUnicodes[glyphUnicode]; - } - glyphUnicode = reverseIfRtl(glyphUnicode); - - // The following will calculate the x and y of the individual glyphs. - // if (font.vertical) { - // tsm[4] -= vMetricX * Math.abs(textState.fontSize) * - // textState.fontMatrix[0]; - // tsm[5] -= vMetricY * textState.fontSize * - // textState.fontMatrix[0]; - // } - // var trm = Util.transform(textState.textMatrix, tsm); - // var pt = Util.applyTransform([trm[4], trm[5]], textState.ctm); - // var x = pt[0]; - // var y = pt[1]; - - var charSpacing = textState.charSpacing; - if (glyph.isSpace) { - var wordSpacing = textState.wordSpacing; - charSpacing += wordSpacing; - if (wordSpacing > 0) { - addFakeSpaces(wordSpacing, textChunk.str); - } - } - - var tx = 0; - var ty = 0; - if (!font.vertical) { - var w0 = glyphWidth * textState.fontMatrix[0]; - tx = (w0 * textState.fontSize + charSpacing) * - textState.textHScale; - width += tx; - } else { - var w1 = glyphWidth * textState.fontMatrix[0]; - ty = w1 * textState.fontSize + charSpacing; - height += ty; - } - textState.translateTextMatrix(tx, ty); - - textChunk.str.push(glyphUnicode); - } - - if (!font.vertical) { - textChunk.lastAdvanceWidth = width; - textChunk.width += width * textChunk.textAdvanceScale; - } else { - textChunk.lastAdvanceHeight = height; - textChunk.height += Math.abs(height * textChunk.textAdvanceScale); - } - - return textChunk; - } - - function addFakeSpaces(width, strBuf) { - if (width < textContentItem.fakeSpaceMin) { - return; - } - if (width < textContentItem.fakeMultiSpaceMin) { - strBuf.push(' '); - return; - } - var fakeSpaces = Math.round(width / textContentItem.spaceWidth); - while (fakeSpaces-- > 0) { - strBuf.push(' '); - } - } - - function flushTextContentItem() { - if (!textContentItem.initialized) { - return; - } - textContent.items.push(runBidiTransform(textContentItem)); - - textContentItem.initialized = false; - textContentItem.str.length = 0; - } - - var timeSlotManager = new TimeSlotManager(); - - return new Promise(function next(resolve, reject) { - task.ensureNotTerminated(); - timeSlotManager.reset(); - var stop, operation = {}, args = []; - while (!(stop = timeSlotManager.check())) { - // The arguments parsed by read() are not used beyond this loop, so - // we can reuse the same array on every iteration, thus avoiding - // unnecessary allocations. - args.length = 0; - operation.args = args; - if (!(preprocessor.read(operation))) { - break; - } - textState = stateManager.state; - var fn = operation.fn; - args = operation.args; - var advance; - - switch (fn | 0) { - case OPS.setFont: - flushTextContentItem(); - textState.fontSize = args[1]; - return handleSetFont(args[0].name).then(function() { - next(resolve, reject); - }, reject); - case OPS.setTextRise: - flushTextContentItem(); - textState.textRise = args[0]; - break; - case OPS.setHScale: - flushTextContentItem(); - textState.textHScale = args[0] / 100; - break; - case OPS.setLeading: - flushTextContentItem(); - textState.leading = args[0]; - break; - case OPS.moveText: - // Optimization to treat same line movement as advance - var isSameTextLine = !textState.font ? false : - ((textState.font.vertical ? args[0] : args[1]) === 0); - advance = args[0] - args[1]; - if (isSameTextLine && textContentItem.initialized && - advance > 0 && - advance <= textContentItem.fakeMultiSpaceMax) { - textState.translateTextLineMatrix(args[0], args[1]); - textContentItem.width += - (args[0] - textContentItem.lastAdvanceWidth); - textContentItem.height += - (args[1] - textContentItem.lastAdvanceHeight); - var diff = (args[0] - textContentItem.lastAdvanceWidth) - - (args[1] - textContentItem.lastAdvanceHeight); - addFakeSpaces(diff, textContentItem.str); - break; - } - - flushTextContentItem(); - textState.translateTextLineMatrix(args[0], args[1]); - textState.textMatrix = textState.textLineMatrix.slice(); - break; - case OPS.setLeadingMoveText: - flushTextContentItem(); - textState.leading = -args[1]; - textState.translateTextLineMatrix(args[0], args[1]); - textState.textMatrix = textState.textLineMatrix.slice(); - break; - case OPS.nextLine: - flushTextContentItem(); - textState.carriageReturn(); - break; - case OPS.setTextMatrix: - flushTextContentItem(); - textState.setTextMatrix(args[0], args[1], args[2], args[3], - args[4], args[5]); - textState.setTextLineMatrix(args[0], args[1], args[2], args[3], - args[4], args[5]); - break; - case OPS.setCharSpacing: - textState.charSpacing = args[0]; - break; - case OPS.setWordSpacing: - textState.wordSpacing = args[0]; - break; - case OPS.beginText: - flushTextContentItem(); - textState.textMatrix = IDENTITY_MATRIX.slice(); - textState.textLineMatrix = IDENTITY_MATRIX.slice(); - break; - case OPS.showSpacedText: - var items = args[0]; - var offset; - for (var j = 0, jj = items.length; j < jj; j++) { - if (typeof items[j] === 'string') { - buildTextContentItem(items[j]); - } else { - ensureTextContentItem(); - - // PDF Specification 5.3.2 states: - // The number is expressed in thousandths of a unit of text - // space. - // This amount is subtracted from the current horizontal or - // vertical coordinate, depending on the writing mode. - // In the default coordinate system, a positive adjustment - // has the effect of moving the next glyph painted either to - // the left or down by the given amount. - advance = items[j] * textState.fontSize / 1000; - var breakTextRun = false; - if (textState.font.vertical) { - offset = advance * - (textState.textHScale * textState.textMatrix[2] + - textState.textMatrix[3]); - textState.translateTextMatrix(0, advance); - breakTextRun = textContentItem.textRunBreakAllowed && - advance > textContentItem.fakeMultiSpaceMax; - if (!breakTextRun) { - // Value needs to be added to height to paint down. - textContentItem.height += offset; - } - } else { - advance = -advance; - offset = advance * ( - textState.textHScale * textState.textMatrix[0] + - textState.textMatrix[1]); - textState.translateTextMatrix(advance, 0); - breakTextRun = textContentItem.textRunBreakAllowed && - advance > textContentItem.fakeMultiSpaceMax; - if (!breakTextRun) { - // Value needs to be subtracted from width to paint left. - textContentItem.width += offset; - } - } - if (breakTextRun) { - flushTextContentItem(); - } else if (advance > 0) { - addFakeSpaces(advance, textContentItem.str); - } - } - } - break; - case OPS.showText: - buildTextContentItem(args[0]); - break; - case OPS.nextLineShowText: - flushTextContentItem(); - textState.carriageReturn(); - buildTextContentItem(args[0]); - break; - case OPS.nextLineSetSpacingShowText: - flushTextContentItem(); - textState.wordSpacing = args[0]; - textState.charSpacing = args[1]; - textState.carriageReturn(); - buildTextContentItem(args[2]); - break; - case OPS.paintXObject: - flushTextContentItem(); - if (args[0].code) { - break; - } - - if (!xobjs) { - xobjs = (resources.get('XObject') || Dict.empty); - } - - var name = args[0].name; - if (xobjsCache.key === name) { - if (xobjsCache.texts) { - Util.appendToArray(textContent.items, xobjsCache.texts.items); - Util.extendObj(textContent.styles, xobjsCache.texts.styles); - } - break; - } - - var xobj = xobjs.get(name); - if (!xobj) { - break; - } - assert(isStream(xobj), 'XObject should be a stream'); - - var type = xobj.dict.get('Subtype'); - assert(isName(type), - 'XObject should have a Name subtype'); - - if ('Form' !== type.name) { - xobjsCache.key = name; - xobjsCache.texts = null; - break; - } - - stateManager.save(); - var matrix = xobj.dict.get('Matrix'); - if (isArray(matrix) && matrix.length === 6) { - stateManager.transform(matrix); - } - - return self.getTextContent(xobj, task, - xobj.dict.get('Resources') || resources, stateManager, - normalizeWhitespace).then(function (formTextContent) { - Util.appendToArray(textContent.items, formTextContent.items); - Util.extendObj(textContent.styles, formTextContent.styles); - stateManager.restore(); - - xobjsCache.key = name; - xobjsCache.texts = formTextContent; - - next(resolve, reject); - }, reject); - case OPS.setGState: - flushTextContentItem(); - var dictName = args[0]; - var extGState = resources.get('ExtGState'); - - if (!isDict(extGState) || !extGState.has(dictName.name)) { - break; - } - - var gsStateMap = extGState.get(dictName.name); - var gsStateFont = null; - for (var key in gsStateMap) { - if (key === 'Font') { - assert(!gsStateFont); - gsStateFont = gsStateMap[key]; - } - } - if (gsStateFont) { - textState.fontSize = gsStateFont[1]; - return handleSetFont(gsStateFont[0]).then(function() { - next(resolve, reject); - }, reject); - } - break; - } // switch - } // while - if (stop) { - deferred.then(function () { - next(resolve, reject); - }, reject); - return; - } - flushTextContentItem(); - resolve(textContent); - }); - }, - - extractDataStructures: function - partialEvaluatorExtractDataStructures(dict, baseDict, - xref, properties) { - // 9.10.2 - var toUnicode = (dict.get('ToUnicode') || baseDict.get('ToUnicode')); - if (toUnicode) { - properties.toUnicode = this.readToUnicode(toUnicode); - } - if (properties.composite) { - // CIDSystemInfo helps to match CID to glyphs - var cidSystemInfo = dict.get('CIDSystemInfo'); - if (isDict(cidSystemInfo)) { - properties.cidSystemInfo = { - registry: cidSystemInfo.get('Registry'), - ordering: cidSystemInfo.get('Ordering'), - supplement: cidSystemInfo.get('Supplement') - }; - } - - var cidToGidMap = dict.get('CIDToGIDMap'); - if (isStream(cidToGidMap)) { - properties.cidToGidMap = this.readCidToGidMap(cidToGidMap); - } - } - - // Based on 9.6.6 of the spec the encoding can come from multiple places - // and depends on the font type. The base encoding and differences are - // read here, but the encoding that is actually used is chosen during - // glyph mapping in the font. - // TODO: Loading the built in encoding in the font would allow the - // differences to be merged in here not require us to hold on to it. - var differences = []; - var baseEncodingName = null; - var encoding; - if (dict.has('Encoding')) { - encoding = dict.get('Encoding'); - if (isDict(encoding)) { - baseEncodingName = encoding.get('BaseEncoding'); - baseEncodingName = (isName(baseEncodingName) ? - baseEncodingName.name : null); - // Load the differences between the base and original - if (encoding.has('Differences')) { - var diffEncoding = encoding.get('Differences'); - var index = 0; - for (var j = 0, jj = diffEncoding.length; j < jj; j++) { - var data = diffEncoding[j]; - if (isNum(data)) { - index = data; - } else if (isName(data)) { - differences[index++] = data.name; - } else if (isRef(data)) { - diffEncoding[j--] = xref.fetch(data); - continue; - } else { - error('Invalid entry in \'Differences\' array: ' + data); - } - } - } - } else if (isName(encoding)) { - baseEncodingName = encoding.name; - } else { - error('Encoding is not a Name nor a Dict'); - } - // According to table 114 if the encoding is a named encoding it must be - // one of these predefined encodings. - if ((baseEncodingName !== 'MacRomanEncoding' && - baseEncodingName !== 'MacExpertEncoding' && - baseEncodingName !== 'WinAnsiEncoding')) { - baseEncodingName = null; - } - } - - if (baseEncodingName) { - properties.defaultEncoding = Encodings[baseEncodingName].slice(); - } else { - encoding = (properties.type === 'TrueType' ? - Encodings.WinAnsiEncoding : Encodings.StandardEncoding); - // The Symbolic attribute can be misused for regular fonts - // Heuristic: we have to check if the font is a standard one also - if (!!(properties.flags & FontFlags.Symbolic)) { - encoding = Encodings.MacRomanEncoding; - if (!properties.file) { - if (/Symbol/i.test(properties.name)) { - encoding = Encodings.SymbolSetEncoding; - } else if (/Dingbats/i.test(properties.name)) { - encoding = Encodings.ZapfDingbatsEncoding; - } - } - } - properties.defaultEncoding = encoding; - } - - properties.differences = differences; - properties.baseEncodingName = baseEncodingName; - properties.dict = dict; - }, - - readToUnicode: function PartialEvaluator_readToUnicode(toUnicode) { - var cmap, cmapObj = toUnicode; - if (isName(cmapObj)) { - cmap = CMapFactory.create(cmapObj, - { url: PDFJS.cMapUrl, packed: PDFJS.cMapPacked }, null); - if (cmap instanceof IdentityCMap) { - return new IdentityToUnicodeMap(0, 0xFFFF); - } - return new ToUnicodeMap(cmap.getMap()); - } else if (isStream(cmapObj)) { - cmap = CMapFactory.create(cmapObj, - { url: PDFJS.cMapUrl, packed: PDFJS.cMapPacked }, null); - if (cmap instanceof IdentityCMap) { - return new IdentityToUnicodeMap(0, 0xFFFF); - } - var map = new Array(cmap.length); - // Convert UTF-16BE - // NOTE: cmap can be a sparse array, so use forEach instead of for(;;) - // to iterate over all keys. - cmap.forEach(function(charCode, token) { - var str = []; - for (var k = 0; k < token.length; k += 2) { - var w1 = (token.charCodeAt(k) << 8) | token.charCodeAt(k + 1); - if ((w1 & 0xF800) !== 0xD800) { // w1 < 0xD800 || w1 > 0xDFFF - str.push(w1); - continue; - } - k += 2; - var w2 = (token.charCodeAt(k) << 8) | token.charCodeAt(k + 1); - str.push(((w1 & 0x3ff) << 10) + (w2 & 0x3ff) + 0x10000); - } - map[charCode] = String.fromCharCode.apply(String, str); - }); - return new ToUnicodeMap(map); - } - return null; - }, - - readCidToGidMap: function PartialEvaluator_readCidToGidMap(cidToGidStream) { - // Extract the encoding from the CIDToGIDMap - var glyphsData = cidToGidStream.getBytes(); - - // Set encoding 0 to later verify the font has an encoding - var result = []; - for (var j = 0, jj = glyphsData.length; j < jj; j++) { - var glyphID = (glyphsData[j++] << 8) | glyphsData[j]; - if (glyphID === 0) { - continue; - } - var code = j >> 1; - result[code] = glyphID; - } - return result; - }, - - extractWidths: function PartialEvaluator_extractWidths(dict, xref, - descriptor, - properties) { - var glyphsWidths = []; - var defaultWidth = 0; - var glyphsVMetrics = []; - var defaultVMetrics; - var i, ii, j, jj, start, code, widths; - if (properties.composite) { - defaultWidth = dict.get('DW') || 1000; - - widths = dict.get('W'); - if (widths) { - for (i = 0, ii = widths.length; i < ii; i++) { - start = widths[i++]; - code = xref.fetchIfRef(widths[i]); - if (isArray(code)) { - for (j = 0, jj = code.length; j < jj; j++) { - glyphsWidths[start++] = code[j]; - } - } else { - var width = widths[++i]; - for (j = start; j <= code; j++) { - glyphsWidths[j] = width; - } - } - } - } - - if (properties.vertical) { - var vmetrics = (dict.get('DW2') || [880, -1000]); - defaultVMetrics = [vmetrics[1], defaultWidth * 0.5, vmetrics[0]]; - vmetrics = dict.get('W2'); - if (vmetrics) { - for (i = 0, ii = vmetrics.length; i < ii; i++) { - start = vmetrics[i++]; - code = xref.fetchIfRef(vmetrics[i]); - if (isArray(code)) { - for (j = 0, jj = code.length; j < jj; j++) { - glyphsVMetrics[start++] = [code[j++], code[j++], code[j]]; - } - } else { - var vmetric = [vmetrics[++i], vmetrics[++i], vmetrics[++i]]; - for (j = start; j <= code; j++) { - glyphsVMetrics[j] = vmetric; - } - } - } - } - } - } else { - var firstChar = properties.firstChar; - widths = dict.get('Widths'); - if (widths) { - j = firstChar; - for (i = 0, ii = widths.length; i < ii; i++) { - glyphsWidths[j++] = widths[i]; - } - defaultWidth = (parseFloat(descriptor.get('MissingWidth')) || 0); - } else { - // Trying get the BaseFont metrics (see comment above). - var baseFontName = dict.get('BaseFont'); - if (isName(baseFontName)) { - var metrics = this.getBaseFontMetrics(baseFontName.name); - - glyphsWidths = this.buildCharCodeToWidth(metrics.widths, - properties); - defaultWidth = metrics.defaultWidth; - } - } - } - - // Heuristic: detection of monospace font by checking all non-zero widths - var isMonospace = true; - var firstWidth = defaultWidth; - for (var glyph in glyphsWidths) { - var glyphWidth = glyphsWidths[glyph]; - if (!glyphWidth) { - continue; - } - if (!firstWidth) { - firstWidth = glyphWidth; - continue; - } - if (firstWidth !== glyphWidth) { - isMonospace = false; - break; - } - } - if (isMonospace) { - properties.flags |= FontFlags.FixedPitch; - } - - properties.defaultWidth = defaultWidth; - properties.widths = glyphsWidths; - properties.defaultVMetrics = defaultVMetrics; - properties.vmetrics = glyphsVMetrics; - }, - - isSerifFont: function PartialEvaluator_isSerifFont(baseFontName) { - // Simulating descriptor flags attribute - var fontNameWoStyle = baseFontName.split('-')[0]; - return (fontNameWoStyle in serifFonts) || - (fontNameWoStyle.search(/serif/gi) !== -1); - }, - - getBaseFontMetrics: function PartialEvaluator_getBaseFontMetrics(name) { - var defaultWidth = 0; - var widths = []; - var monospace = false; - var lookupName = (stdFontMap[name] || name); - - if (!(lookupName in Metrics)) { - // Use default fonts for looking up font metrics if the passed - // font is not a base font - if (this.isSerifFont(name)) { - lookupName = 'Times-Roman'; - } else { - lookupName = 'Helvetica'; - } - } - var glyphWidths = Metrics[lookupName]; - - if (isNum(glyphWidths)) { - defaultWidth = glyphWidths; - monospace = true; - } else { - widths = glyphWidths; - } - - return { - defaultWidth: defaultWidth, - monospace: monospace, - widths: widths - }; - }, - - buildCharCodeToWidth: - function PartialEvaluator_bulildCharCodeToWidth(widthsByGlyphName, - properties) { - var widths = Object.create(null); - var differences = properties.differences; - var encoding = properties.defaultEncoding; - for (var charCode = 0; charCode < 256; charCode++) { - if (charCode in differences && - widthsByGlyphName[differences[charCode]]) { - widths[charCode] = widthsByGlyphName[differences[charCode]]; - continue; - } - if (charCode in encoding && widthsByGlyphName[encoding[charCode]]) { - widths[charCode] = widthsByGlyphName[encoding[charCode]]; - continue; - } - } - return widths; - }, - - preEvaluateFont: function PartialEvaluator_preEvaluateFont(dict, xref) { - var baseDict = dict; - var type = dict.get('Subtype'); - assert(isName(type), 'invalid font Subtype'); - - var composite = false; - var uint8array; - if (type.name === 'Type0') { - // If font is a composite - // - get the descendant font - // - set the type according to the descendant font - // - get the FontDescriptor from the descendant font - var df = dict.get('DescendantFonts'); - if (!df) { - error('Descendant fonts are not specified'); - } - dict = (isArray(df) ? xref.fetchIfRef(df[0]) : df); - - type = dict.get('Subtype'); - assert(isName(type), 'invalid font Subtype'); - composite = true; - } - - var descriptor = dict.get('FontDescriptor'); - if (descriptor) { - var hash = new MurmurHash3_64(); - var encoding = baseDict.getRaw('Encoding'); - if (isName(encoding)) { - hash.update(encoding.name); - } else if (isRef(encoding)) { - hash.update(encoding.num + '_' + encoding.gen); - } else if (isDict(encoding)) { - var keys = encoding.getKeys(); - for (var i = 0, ii = keys.length; i < ii; i++) { - var entry = encoding.getRaw(keys[i]); - if (isName(entry)) { - hash.update(entry.name); - } else if (isRef(entry)) { - hash.update(entry.num + '_' + entry.gen); - } else if (isArray(entry)) { // 'Differences' entry. - // Ideally we should check the contents of the array, but to avoid - // parsing it here and then again in |extractDataStructures|, - // we only use the array length for now (fixes bug1157493.pdf). - hash.update(entry.length.toString()); - } - } - } - - var toUnicode = dict.get('ToUnicode') || baseDict.get('ToUnicode'); - if (isStream(toUnicode)) { - var stream = toUnicode.str || toUnicode; - uint8array = stream.buffer ? - new Uint8Array(stream.buffer.buffer, 0, stream.bufferLength) : - new Uint8Array(stream.bytes.buffer, - stream.start, stream.end - stream.start); - hash.update(uint8array); - - } else if (isName(toUnicode)) { - hash.update(toUnicode.name); - } - - var widths = dict.get('Widths') || baseDict.get('Widths'); - if (widths) { - uint8array = new Uint8Array(new Uint32Array(widths).buffer); - hash.update(uint8array); - } - } - - return { - descriptor: descriptor, - dict: dict, - baseDict: baseDict, - composite: composite, - type: type.name, - hash: hash ? hash.hexdigest() : '' - }; - }, - - translateFont: function PartialEvaluator_translateFont(preEvaluatedFont, - xref) { - var baseDict = preEvaluatedFont.baseDict; - var dict = preEvaluatedFont.dict; - var composite = preEvaluatedFont.composite; - var descriptor = preEvaluatedFont.descriptor; - var type = preEvaluatedFont.type; - var maxCharIndex = (composite ? 0xFFFF : 0xFF); - var properties; - - if (!descriptor) { - if (type === 'Type3') { - // FontDescriptor is only required for Type3 fonts when the document - // is a tagged pdf. Create a barbebones one to get by. - descriptor = new Dict(null); - descriptor.set('FontName', Name.get(type)); - descriptor.set('FontBBox', dict.get('FontBBox')); - } else { - // Before PDF 1.5 if the font was one of the base 14 fonts, having a - // FontDescriptor was not required. - // This case is here for compatibility. - var baseFontName = dict.get('BaseFont'); - if (!isName(baseFontName)) { - error('Base font is not specified'); - } - - // Using base font name as a font name. - baseFontName = baseFontName.name.replace(/[,_]/g, '-'); - var metrics = this.getBaseFontMetrics(baseFontName); - - // Simulating descriptor flags attribute - var fontNameWoStyle = baseFontName.split('-')[0]; - var flags = - (this.isSerifFont(fontNameWoStyle) ? FontFlags.Serif : 0) | - (metrics.monospace ? FontFlags.FixedPitch : 0) | - (symbolsFonts[fontNameWoStyle] ? FontFlags.Symbolic : - FontFlags.Nonsymbolic); - - properties = { - type: type, - name: baseFontName, - widths: metrics.widths, - defaultWidth: metrics.defaultWidth, - flags: flags, - firstChar: 0, - lastChar: maxCharIndex - }; - this.extractDataStructures(dict, dict, xref, properties); - properties.widths = this.buildCharCodeToWidth(metrics.widths, - properties); - return new Font(baseFontName, null, properties); - } - } - - // According to the spec if 'FontDescriptor' is declared, 'FirstChar', - // 'LastChar' and 'Widths' should exist too, but some PDF encoders seem - // to ignore this rule when a variant of a standart font is used. - // TODO Fill the width array depending on which of the base font this is - // a variant. - var firstChar = (dict.get('FirstChar') || 0); - var lastChar = (dict.get('LastChar') || maxCharIndex); - - var fontName = descriptor.get('FontName'); - var baseFont = dict.get('BaseFont'); - // Some bad PDFs have a string as the font name. - if (isString(fontName)) { - fontName = Name.get(fontName); - } - if (isString(baseFont)) { - baseFont = Name.get(baseFont); - } - - if (type !== 'Type3') { - var fontNameStr = fontName && fontName.name; - var baseFontStr = baseFont && baseFont.name; - if (fontNameStr !== baseFontStr) { - info('The FontDescriptor\'s FontName is "' + fontNameStr + - '" but should be the same as the Font\'s BaseFont "' + - baseFontStr + '"'); - // Workaround for cases where e.g. fontNameStr = 'Arial' and - // baseFontStr = 'Arial,Bold' (needed when no font file is embedded). - if (fontNameStr && baseFontStr && - baseFontStr.indexOf(fontNameStr) === 0) { - fontName = baseFont; - } - } - } - fontName = (fontName || baseFont); - - assert(isName(fontName), 'invalid font name'); - - var fontFile = descriptor.get('FontFile', 'FontFile2', 'FontFile3'); - if (fontFile) { - if (fontFile.dict) { - var subtype = fontFile.dict.get('Subtype'); - if (subtype) { - subtype = subtype.name; - } - var length1 = fontFile.dict.get('Length1'); - var length2 = fontFile.dict.get('Length2'); - } - } - - properties = { - type: type, - name: fontName.name, - subtype: subtype, - file: fontFile, - length1: length1, - length2: length2, - loadedName: baseDict.loadedName, - composite: composite, - wideChars: composite, - fixedPitch: false, - fontMatrix: (dict.get('FontMatrix') || FONT_IDENTITY_MATRIX), - firstChar: firstChar || 0, - lastChar: (lastChar || maxCharIndex), - bbox: descriptor.get('FontBBox'), - ascent: descriptor.get('Ascent'), - descent: descriptor.get('Descent'), - xHeight: descriptor.get('XHeight'), - capHeight: descriptor.get('CapHeight'), - flags: descriptor.get('Flags'), - italicAngle: descriptor.get('ItalicAngle'), - coded: false - }; - - if (composite) { - var cidEncoding = baseDict.get('Encoding'); - if (isName(cidEncoding)) { - properties.cidEncoding = cidEncoding.name; - } - properties.cMap = CMapFactory.create(cidEncoding, - { url: PDFJS.cMapUrl, packed: PDFJS.cMapPacked }, null); - properties.vertical = properties.cMap.vertical; - } - this.extractDataStructures(dict, baseDict, xref, properties); - this.extractWidths(dict, xref, descriptor, properties); - - if (type === 'Type3') { - properties.isType3Font = true; - } - - return new Font(fontName.name, fontFile, properties); - } - }; - - return PartialEvaluator; -})(); - -var TranslatedFont = (function TranslatedFontClosure() { - function TranslatedFont(loadedName, font, dict) { - this.loadedName = loadedName; - this.font = font; - this.dict = dict; - this.type3Loaded = null; - this.sent = false; - } - TranslatedFont.prototype = { - send: function (handler) { - if (this.sent) { - return; - } - var fontData = this.font.exportData(); - handler.send('commonobj', [ - this.loadedName, - 'Font', - fontData - ]); - this.sent = true; - }, - loadType3Data: function (evaluator, resources, parentOperatorList, task) { - assert(this.font.isType3Font); - - if (this.type3Loaded) { - return this.type3Loaded; - } - - var translatedFont = this.font; - var loadCharProcsPromise = Promise.resolve(); - var charProcs = this.dict.get('CharProcs').getAll(); - var fontResources = this.dict.get('Resources') || resources; - var charProcKeys = Object.keys(charProcs); - var charProcOperatorList = {}; - for (var i = 0, n = charProcKeys.length; i < n; ++i) { - loadCharProcsPromise = loadCharProcsPromise.then(function (key) { - var glyphStream = charProcs[key]; - var operatorList = new OperatorList(); - return evaluator.getOperatorList(glyphStream, task, fontResources, - operatorList).then(function () { - charProcOperatorList[key] = operatorList.getIR(); - - // Add the dependencies to the parent operator list so they are - // resolved before sub operator list is executed synchronously. - parentOperatorList.addDependencies(operatorList.dependencies); - }, function (reason) { - warn('Type3 font resource \"' + key + '\" is not available'); - var operatorList = new OperatorList(); - charProcOperatorList[key] = operatorList.getIR(); - }); - }.bind(this, charProcKeys[i])); - } - this.type3Loaded = loadCharProcsPromise.then(function () { - translatedFont.charProcOperatorList = charProcOperatorList; - }); - return this.type3Loaded; - } - }; - return TranslatedFont; -})(); - -var OperatorList = (function OperatorListClosure() { - var CHUNK_SIZE = 1000; - var CHUNK_SIZE_ABOUT = CHUNK_SIZE - 5; // close to chunk size - - function getTransfers(queue) { - var transfers = []; - var fnArray = queue.fnArray, argsArray = queue.argsArray; - for (var i = 0, ii = queue.length; i < ii; i++) { - switch (fnArray[i]) { - case OPS.paintInlineImageXObject: - case OPS.paintInlineImageXObjectGroup: - case OPS.paintImageMaskXObject: - var arg = argsArray[i][0]; // first param in imgData - if (!arg.cached) { - transfers.push(arg.data.buffer); - } - break; - } - } - return transfers; - } - - function OperatorList(intent, messageHandler, pageIndex) { - this.messageHandler = messageHandler; - this.fnArray = []; - this.argsArray = []; - this.dependencies = {}; - this._totalLength = 0; - this.pageIndex = pageIndex; - this.intent = intent; - } - - OperatorList.prototype = { - get length() { - return this.argsArray.length; - }, - - /** - * @returns {number} The total length of the entire operator list, - * since `this.length === 0` after flushing. - */ - get totalLength() { - return (this._totalLength + this.length); - }, - - addOp: function(fn, args) { - this.fnArray.push(fn); - this.argsArray.push(args); - if (this.messageHandler) { - if (this.fnArray.length >= CHUNK_SIZE) { - this.flush(); - } else if (this.fnArray.length >= CHUNK_SIZE_ABOUT && - (fn === OPS.restore || fn === OPS.endText)) { - // heuristic to flush on boundary of restore or endText - this.flush(); - } - } - }, - - addDependency: function(dependency) { - if (dependency in this.dependencies) { - return; - } - this.dependencies[dependency] = true; - this.addOp(OPS.dependency, [dependency]); - }, - - addDependencies: function(dependencies) { - for (var key in dependencies) { - this.addDependency(key); - } - }, - - addOpList: function(opList) { - Util.extendObj(this.dependencies, opList.dependencies); - for (var i = 0, ii = opList.length; i < ii; i++) { - this.addOp(opList.fnArray[i], opList.argsArray[i]); - } - }, - - getIR: function() { - return { - fnArray: this.fnArray, - argsArray: this.argsArray, - length: this.length - }; - }, - - flush: function(lastChunk) { - if (this.intent !== 'oplist') { - new QueueOptimizer().optimize(this); - } - var transfers = getTransfers(this); - var length = this.length; - this._totalLength += length; - - this.messageHandler.send('RenderPageChunk', { - operatorList: { - fnArray: this.fnArray, - argsArray: this.argsArray, - lastChunk: lastChunk, - length: length - }, - pageIndex: this.pageIndex, - intent: this.intent - }, transfers); - this.dependencies = {}; - this.fnArray.length = 0; - this.argsArray.length = 0; - } - }; - - return OperatorList; -})(); - -var StateManager = (function StateManagerClosure() { - function StateManager(initialState) { - this.state = initialState; - this.stateStack = []; - } - StateManager.prototype = { - save: function () { - var old = this.state; - this.stateStack.push(this.state); - this.state = old.clone(); - }, - restore: function () { - var prev = this.stateStack.pop(); - if (prev) { - this.state = prev; - } - }, - transform: function (args) { - this.state.ctm = Util.transform(this.state.ctm, args); - } - }; - return StateManager; -})(); - -var TextState = (function TextStateClosure() { - function TextState() { - this.ctm = new Float32Array(IDENTITY_MATRIX); - this.fontSize = 0; - this.font = null; - this.fontMatrix = FONT_IDENTITY_MATRIX; - this.textMatrix = IDENTITY_MATRIX.slice(); - this.textLineMatrix = IDENTITY_MATRIX.slice(); - this.charSpacing = 0; - this.wordSpacing = 0; - this.leading = 0; - this.textHScale = 1; - this.textRise = 0; - } - - TextState.prototype = { - setTextMatrix: function TextState_setTextMatrix(a, b, c, d, e, f) { - var m = this.textMatrix; - m[0] = a; m[1] = b; m[2] = c; m[3] = d; m[4] = e; m[5] = f; - }, - setTextLineMatrix: function TextState_setTextMatrix(a, b, c, d, e, f) { - var m = this.textLineMatrix; - m[0] = a; m[1] = b; m[2] = c; m[3] = d; m[4] = e; m[5] = f; - }, - translateTextMatrix: function TextState_translateTextMatrix(x, y) { - var m = this.textMatrix; - m[4] = m[0] * x + m[2] * y + m[4]; - m[5] = m[1] * x + m[3] * y + m[5]; - }, - translateTextLineMatrix: function TextState_translateTextMatrix(x, y) { - var m = this.textLineMatrix; - m[4] = m[0] * x + m[2] * y + m[4]; - m[5] = m[1] * x + m[3] * y + m[5]; - }, - calcRenderMatrix: function TextState_calcRendeMatrix(ctm) { - // 9.4.4 Text Space Details - var tsm = [this.fontSize * this.textHScale, 0, - 0, this.fontSize, - 0, this.textRise]; - return Util.transform(ctm, Util.transform(this.textMatrix, tsm)); - }, - carriageReturn: function TextState_carriageReturn() { - this.translateTextLineMatrix(0, -this.leading); - this.textMatrix = this.textLineMatrix.slice(); - }, - clone: function TextState_clone() { - var clone = Object.create(this); - clone.textMatrix = this.textMatrix.slice(); - clone.textLineMatrix = this.textLineMatrix.slice(); - clone.fontMatrix = this.fontMatrix.slice(); - return clone; - } - }; - return TextState; -})(); - -var EvalState = (function EvalStateClosure() { - function EvalState() { - this.ctm = new Float32Array(IDENTITY_MATRIX); - this.font = null; - this.textRenderingMode = TextRenderingMode.FILL; - this.fillColorSpace = ColorSpace.singletons.gray; - this.strokeColorSpace = ColorSpace.singletons.gray; - } - EvalState.prototype = { - clone: function CanvasExtraState_clone() { - return Object.create(this); - }, - }; - return EvalState; -})(); - -var EvaluatorPreprocessor = (function EvaluatorPreprocessorClosure() { - // Specifies properties for each command - // - // If variableArgs === true: [0, `numArgs`] expected - // If variableArgs === false: exactly `numArgs` expected - var OP_MAP = { - // Graphic state - w: { id: OPS.setLineWidth, numArgs: 1, variableArgs: false }, - J: { id: OPS.setLineCap, numArgs: 1, variableArgs: false }, - j: { id: OPS.setLineJoin, numArgs: 1, variableArgs: false }, - M: { id: OPS.setMiterLimit, numArgs: 1, variableArgs: false }, - d: { id: OPS.setDash, numArgs: 2, variableArgs: false }, - ri: { id: OPS.setRenderingIntent, numArgs: 1, variableArgs: false }, - i: { id: OPS.setFlatness, numArgs: 1, variableArgs: false }, - gs: { id: OPS.setGState, numArgs: 1, variableArgs: false }, - q: { id: OPS.save, numArgs: 0, variableArgs: false }, - Q: { id: OPS.restore, numArgs: 0, variableArgs: false }, - cm: { id: OPS.transform, numArgs: 6, variableArgs: false }, - - // Path - m: { id: OPS.moveTo, numArgs: 2, variableArgs: false }, - l: { id: OPS.lineTo, numArgs: 2, variableArgs: false }, - c: { id: OPS.curveTo, numArgs: 6, variableArgs: false }, - v: { id: OPS.curveTo2, numArgs: 4, variableArgs: false }, - y: { id: OPS.curveTo3, numArgs: 4, variableArgs: false }, - h: { id: OPS.closePath, numArgs: 0, variableArgs: false }, - re: { id: OPS.rectangle, numArgs: 4, variableArgs: false }, - S: { id: OPS.stroke, numArgs: 0, variableArgs: false }, - s: { id: OPS.closeStroke, numArgs: 0, variableArgs: false }, - f: { id: OPS.fill, numArgs: 0, variableArgs: false }, - F: { id: OPS.fill, numArgs: 0, variableArgs: false }, - 'f*': { id: OPS.eoFill, numArgs: 0, variableArgs: false }, - B: { id: OPS.fillStroke, numArgs: 0, variableArgs: false }, - 'B*': { id: OPS.eoFillStroke, numArgs: 0, variableArgs: false }, - b: { id: OPS.closeFillStroke, numArgs: 0, variableArgs: false }, - 'b*': { id: OPS.closeEOFillStroke, numArgs: 0, variableArgs: false }, - n: { id: OPS.endPath, numArgs: 0, variableArgs: false }, - - // Clipping - W: { id: OPS.clip, numArgs: 0, variableArgs: false }, - 'W*': { id: OPS.eoClip, numArgs: 0, variableArgs: false }, - - // Text - BT: { id: OPS.beginText, numArgs: 0, variableArgs: false }, - ET: { id: OPS.endText, numArgs: 0, variableArgs: false }, - Tc: { id: OPS.setCharSpacing, numArgs: 1, variableArgs: false }, - Tw: { id: OPS.setWordSpacing, numArgs: 1, variableArgs: false }, - Tz: { id: OPS.setHScale, numArgs: 1, variableArgs: false }, - TL: { id: OPS.setLeading, numArgs: 1, variableArgs: false }, - Tf: { id: OPS.setFont, numArgs: 2, variableArgs: false }, - Tr: { id: OPS.setTextRenderingMode, numArgs: 1, variableArgs: false }, - Ts: { id: OPS.setTextRise, numArgs: 1, variableArgs: false }, - Td: { id: OPS.moveText, numArgs: 2, variableArgs: false }, - TD: { id: OPS.setLeadingMoveText, numArgs: 2, variableArgs: false }, - Tm: { id: OPS.setTextMatrix, numArgs: 6, variableArgs: false }, - 'T*': { id: OPS.nextLine, numArgs: 0, variableArgs: false }, - Tj: { id: OPS.showText, numArgs: 1, variableArgs: false }, - TJ: { id: OPS.showSpacedText, numArgs: 1, variableArgs: false }, - '\'': { id: OPS.nextLineShowText, numArgs: 1, variableArgs: false }, - '"': { id: OPS.nextLineSetSpacingShowText, numArgs: 3, - variableArgs: false }, - - // Type3 fonts - d0: { id: OPS.setCharWidth, numArgs: 2, variableArgs: false }, - d1: { id: OPS.setCharWidthAndBounds, numArgs: 6, variableArgs: false }, - - // Color - CS: { id: OPS.setStrokeColorSpace, numArgs: 1, variableArgs: false }, - cs: { id: OPS.setFillColorSpace, numArgs: 1, variableArgs: false }, - SC: { id: OPS.setStrokeColor, numArgs: 4, variableArgs: true }, - SCN: { id: OPS.setStrokeColorN, numArgs: 33, variableArgs: true }, - sc: { id: OPS.setFillColor, numArgs: 4, variableArgs: true }, - scn: { id: OPS.setFillColorN, numArgs: 33, variableArgs: true }, - G: { id: OPS.setStrokeGray, numArgs: 1, variableArgs: false }, - g: { id: OPS.setFillGray, numArgs: 1, variableArgs: false }, - RG: { id: OPS.setStrokeRGBColor, numArgs: 3, variableArgs: false }, - rg: { id: OPS.setFillRGBColor, numArgs: 3, variableArgs: false }, - K: { id: OPS.setStrokeCMYKColor, numArgs: 4, variableArgs: false }, - k: { id: OPS.setFillCMYKColor, numArgs: 4, variableArgs: false }, - - // Shading - sh: { id: OPS.shadingFill, numArgs: 1, variableArgs: false }, - - // Images - BI: { id: OPS.beginInlineImage, numArgs: 0, variableArgs: false }, - ID: { id: OPS.beginImageData, numArgs: 0, variableArgs: false }, - EI: { id: OPS.endInlineImage, numArgs: 1, variableArgs: false }, - - // XObjects - Do: { id: OPS.paintXObject, numArgs: 1, variableArgs: false }, - MP: { id: OPS.markPoint, numArgs: 1, variableArgs: false }, - DP: { id: OPS.markPointProps, numArgs: 2, variableArgs: false }, - BMC: { id: OPS.beginMarkedContent, numArgs: 1, variableArgs: false }, - BDC: { id: OPS.beginMarkedContentProps, numArgs: 2, - variableArgs: false }, - EMC: { id: OPS.endMarkedContent, numArgs: 0, variableArgs: false }, - - // Compatibility - BX: { id: OPS.beginCompat, numArgs: 0, variableArgs: false }, - EX: { id: OPS.endCompat, numArgs: 0, variableArgs: false }, - - // (reserved partial commands for the lexer) - BM: null, - BD: null, - 'true': null, - fa: null, - fal: null, - fals: null, - 'false': null, - nu: null, - nul: null, - 'null': null - }; - - function EvaluatorPreprocessor(stream, xref, stateManager) { - // TODO(mduan): pass array of knownCommands rather than OP_MAP - // dictionary - this.parser = new Parser(new Lexer(stream, OP_MAP), false, xref); - this.stateManager = stateManager; - this.nonProcessedArgs = []; - } - - EvaluatorPreprocessor.prototype = { - get savedStatesDepth() { - return this.stateManager.stateStack.length; - }, - - // |operation| is an object with two fields: - // - // - |fn| is an out param. - // - // - |args| is an inout param. On entry, it should have one of two values. - // - // - An empty array. This indicates that the caller is providing the - // array in which the args will be stored in. The caller should use - // this value if it can reuse a single array for each call to read(). - // - // - |null|. This indicates that the caller needs this function to create - // the array in which any args are stored in. If there are zero args, - // this function will leave |operation.args| as |null| (thus avoiding - // allocations that would occur if we used an empty array to represent - // zero arguments). Otherwise, it will replace |null| with a new array - // containing the arguments. The caller should use this value if it - // cannot reuse an array for each call to read(). - // - // These two modes are present because this function is very hot and so - // avoiding allocations where possible is worthwhile. - // - read: function EvaluatorPreprocessor_read(operation) { - var args = operation.args; - while (true) { - var obj = this.parser.getObj(); - if (isCmd(obj)) { - var cmd = obj.cmd; - // Check that the command is valid - var opSpec = OP_MAP[cmd]; - if (!opSpec) { - warn('Unknown command "' + cmd + '"'); - continue; - } - - var fn = opSpec.id; - var numArgs = opSpec.numArgs; - var argsLength = args !== null ? args.length : 0; - - if (!opSpec.variableArgs) { - // Postscript commands can be nested, e.g. /F2 /GS2 gs 5.711 Tf - if (argsLength !== numArgs) { - var nonProcessedArgs = this.nonProcessedArgs; - while (argsLength > numArgs) { - nonProcessedArgs.push(args.shift()); - argsLength--; - } - while (argsLength < numArgs && nonProcessedArgs.length !== 0) { - if (!args) { - args = []; - } - args.unshift(nonProcessedArgs.pop()); - argsLength++; - } - } - - if (argsLength < numArgs) { - // If we receive too few args, it's not possible to possible - // to execute the command, so skip the command - info('Command ' + fn + ': because expected ' + - numArgs + ' args, but received ' + argsLength + - ' args; skipping'); - args = null; - continue; - } - } else if (argsLength > numArgs) { - info('Command ' + fn + ': expected [0,' + numArgs + - '] args, but received ' + argsLength + ' args'); - } - - // TODO figure out how to type-check vararg functions - this.preprocessCommand(fn, args); - - operation.fn = fn; - operation.args = args; - return true; - } else { - if (isEOF(obj)) { - return false; // no more commands - } - // argument - if (obj !== null) { - if (!args) { - args = []; - } - args.push((obj instanceof Dict ? obj.getAll() : obj)); - assert(args.length <= 33, 'Too many arguments'); - } - } - } - }, - - preprocessCommand: - function EvaluatorPreprocessor_preprocessCommand(fn, args) { - switch (fn | 0) { - case OPS.save: - this.stateManager.save(); - break; - case OPS.restore: - this.stateManager.restore(); - break; - case OPS.transform: - this.stateManager.transform(args); - break; - } - } - }; - return EvaluatorPreprocessor; -})(); - -var QueueOptimizer = (function QueueOptimizerClosure() { - function addState(parentState, pattern, fn) { - var state = parentState; - for (var i = 0, ii = pattern.length - 1; i < ii; i++) { - var item = pattern[i]; - state = (state[item] || (state[item] = [])); - } - state[pattern[pattern.length - 1]] = fn; - } - - function handlePaintSolidColorImageMask(iFirstSave, count, fnArray, - argsArray) { - // Handles special case of mainly LaTeX documents which use image masks to - // draw lines with the current fill style. - // 'count' groups of (save, transform, paintImageMaskXObject, restore)+ - // have been found at iFirstSave. - var iFirstPIMXO = iFirstSave + 2; - for (var i = 0; i < count; i++) { - var arg = argsArray[iFirstPIMXO + 4 * i]; - var imageMask = arg.length === 1 && arg[0]; - if (imageMask && imageMask.width === 1 && imageMask.height === 1 && - (!imageMask.data.length || - (imageMask.data.length === 1 && imageMask.data[0] === 0))) { - fnArray[iFirstPIMXO + 4 * i] = OPS.paintSolidColorImageMask; - continue; - } - break; - } - return count - i; - } - - var InitialState = []; - - // This replaces (save, transform, paintInlineImageXObject, restore)+ - // sequences with one |paintInlineImageXObjectGroup| operation. - addState(InitialState, - [OPS.save, OPS.transform, OPS.paintInlineImageXObject, OPS.restore], - function foundInlineImageGroup(context) { - var MIN_IMAGES_IN_INLINE_IMAGES_BLOCK = 10; - var MAX_IMAGES_IN_INLINE_IMAGES_BLOCK = 200; - var MAX_WIDTH = 1000; - var IMAGE_PADDING = 1; - - var fnArray = context.fnArray, argsArray = context.argsArray; - var curr = context.iCurr; - var iFirstSave = curr - 3; - var iFirstTransform = curr - 2; - var iFirstPIIXO = curr - 1; - - // Look for the quartets. - var i = iFirstSave + 4; - var ii = fnArray.length; - while (i + 3 < ii) { - if (fnArray[i] !== OPS.save || - fnArray[i + 1] !== OPS.transform || - fnArray[i + 2] !== OPS.paintInlineImageXObject || - fnArray[i + 3] !== OPS.restore) { - break; // ops don't match - } - i += 4; - } - - // At this point, i is the index of the first op past the last valid - // quartet. - var count = Math.min((i - iFirstSave) / 4, - MAX_IMAGES_IN_INLINE_IMAGES_BLOCK); - if (count < MIN_IMAGES_IN_INLINE_IMAGES_BLOCK) { - return i; - } - - // assuming that heights of those image is too small (~1 pixel) - // packing as much as possible by lines - var maxX = 0; - var map = [], maxLineHeight = 0; - var currentX = IMAGE_PADDING, currentY = IMAGE_PADDING; - var q; - for (q = 0; q < count; q++) { - var transform = argsArray[iFirstTransform + (q << 2)]; - var img = argsArray[iFirstPIIXO + (q << 2)][0]; - if (currentX + img.width > MAX_WIDTH) { - // starting new line - maxX = Math.max(maxX, currentX); - currentY += maxLineHeight + 2 * IMAGE_PADDING; - currentX = 0; - maxLineHeight = 0; - } - map.push({ - transform: transform, - x: currentX, y: currentY, - w: img.width, h: img.height - }); - currentX += img.width + 2 * IMAGE_PADDING; - maxLineHeight = Math.max(maxLineHeight, img.height); - } - var imgWidth = Math.max(maxX, currentX) + IMAGE_PADDING; - var imgHeight = currentY + maxLineHeight + IMAGE_PADDING; - var imgData = new Uint8Array(imgWidth * imgHeight * 4); - var imgRowSize = imgWidth << 2; - for (q = 0; q < count; q++) { - var data = argsArray[iFirstPIIXO + (q << 2)][0].data; - // Copy image by lines and extends pixels into padding. - var rowSize = map[q].w << 2; - var dataOffset = 0; - var offset = (map[q].x + map[q].y * imgWidth) << 2; - imgData.set(data.subarray(0, rowSize), offset - imgRowSize); - for (var k = 0, kk = map[q].h; k < kk; k++) { - imgData.set(data.subarray(dataOffset, dataOffset + rowSize), offset); - dataOffset += rowSize; - offset += imgRowSize; - } - imgData.set(data.subarray(dataOffset - rowSize, dataOffset), offset); - while (offset >= 0) { - data[offset - 4] = data[offset]; - data[offset - 3] = data[offset + 1]; - data[offset - 2] = data[offset + 2]; - data[offset - 1] = data[offset + 3]; - data[offset + rowSize] = data[offset + rowSize - 4]; - data[offset + rowSize + 1] = data[offset + rowSize - 3]; - data[offset + rowSize + 2] = data[offset + rowSize - 2]; - data[offset + rowSize + 3] = data[offset + rowSize - 1]; - offset -= imgRowSize; - } - } - - // Replace queue items. - fnArray.splice(iFirstSave, count * 4, OPS.paintInlineImageXObjectGroup); - argsArray.splice(iFirstSave, count * 4, - [{ width: imgWidth, height: imgHeight, kind: ImageKind.RGBA_32BPP, - data: imgData }, map]); - - return iFirstSave + 1; - }); - - // This replaces (save, transform, paintImageMaskXObject, restore)+ - // sequences with one |paintImageMaskXObjectGroup| or one - // |paintImageMaskXObjectRepeat| operation. - addState(InitialState, - [OPS.save, OPS.transform, OPS.paintImageMaskXObject, OPS.restore], - function foundImageMaskGroup(context) { - var MIN_IMAGES_IN_MASKS_BLOCK = 10; - var MAX_IMAGES_IN_MASKS_BLOCK = 100; - var MAX_SAME_IMAGES_IN_MASKS_BLOCK = 1000; - - var fnArray = context.fnArray, argsArray = context.argsArray; - var curr = context.iCurr; - var iFirstSave = curr - 3; - var iFirstTransform = curr - 2; - var iFirstPIMXO = curr - 1; - - // Look for the quartets. - var i = iFirstSave + 4; - var ii = fnArray.length; - while (i + 3 < ii) { - if (fnArray[i] !== OPS.save || - fnArray[i + 1] !== OPS.transform || - fnArray[i + 2] !== OPS.paintImageMaskXObject || - fnArray[i + 3] !== OPS.restore) { - break; // ops don't match - } - i += 4; - } - - // At this point, i is the index of the first op past the last valid - // quartet. - var count = (i - iFirstSave) / 4; - count = handlePaintSolidColorImageMask(iFirstSave, count, fnArray, - argsArray); - if (count < MIN_IMAGES_IN_MASKS_BLOCK) { - return i; - } - - var q; - var isSameImage = false; - var iTransform, transformArgs; - var firstPIMXOArg0 = argsArray[iFirstPIMXO][0]; - if (argsArray[iFirstTransform][1] === 0 && - argsArray[iFirstTransform][2] === 0) { - isSameImage = true; - var firstTransformArg0 = argsArray[iFirstTransform][0]; - var firstTransformArg3 = argsArray[iFirstTransform][3]; - iTransform = iFirstTransform + 4; - var iPIMXO = iFirstPIMXO + 4; - for (q = 1; q < count; q++, iTransform += 4, iPIMXO += 4) { - transformArgs = argsArray[iTransform]; - if (argsArray[iPIMXO][0] !== firstPIMXOArg0 || - transformArgs[0] !== firstTransformArg0 || - transformArgs[1] !== 0 || - transformArgs[2] !== 0 || - transformArgs[3] !== firstTransformArg3) { - if (q < MIN_IMAGES_IN_MASKS_BLOCK) { - isSameImage = false; - } else { - count = q; - } - break; // different image or transform - } - } - } - - if (isSameImage) { - count = Math.min(count, MAX_SAME_IMAGES_IN_MASKS_BLOCK); - var positions = new Float32Array(count * 2); - iTransform = iFirstTransform; - for (q = 0; q < count; q++, iTransform += 4) { - transformArgs = argsArray[iTransform]; - positions[(q << 1)] = transformArgs[4]; - positions[(q << 1) + 1] = transformArgs[5]; - } - - // Replace queue items. - fnArray.splice(iFirstSave, count * 4, OPS.paintImageMaskXObjectRepeat); - argsArray.splice(iFirstSave, count * 4, - [firstPIMXOArg0, firstTransformArg0, firstTransformArg3, positions]); - } else { - count = Math.min(count, MAX_IMAGES_IN_MASKS_BLOCK); - var images = []; - for (q = 0; q < count; q++) { - transformArgs = argsArray[iFirstTransform + (q << 2)]; - var maskParams = argsArray[iFirstPIMXO + (q << 2)][0]; - images.push({ data: maskParams.data, width: maskParams.width, - height: maskParams.height, - transform: transformArgs }); - } - - // Replace queue items. - fnArray.splice(iFirstSave, count * 4, OPS.paintImageMaskXObjectGroup); - argsArray.splice(iFirstSave, count * 4, [images]); - } - - return iFirstSave + 1; - }); - - // This replaces (save, transform, paintImageXObject, restore)+ sequences - // with one paintImageXObjectRepeat operation, if the |transform| and - // |paintImageXObjectRepeat| ops are appropriate. - addState(InitialState, - [OPS.save, OPS.transform, OPS.paintImageXObject, OPS.restore], - function (context) { - var MIN_IMAGES_IN_BLOCK = 3; - var MAX_IMAGES_IN_BLOCK = 1000; - - var fnArray = context.fnArray, argsArray = context.argsArray; - var curr = context.iCurr; - var iFirstSave = curr - 3; - var iFirstTransform = curr - 2; - var iFirstPIXO = curr - 1; - var iFirstRestore = curr; - - if (argsArray[iFirstTransform][1] !== 0 || - argsArray[iFirstTransform][2] !== 0) { - return iFirstRestore + 1; // transform has the wrong form - } - - // Look for the quartets. - var firstPIXOArg0 = argsArray[iFirstPIXO][0]; - var firstTransformArg0 = argsArray[iFirstTransform][0]; - var firstTransformArg3 = argsArray[iFirstTransform][3]; - var i = iFirstSave + 4; - var ii = fnArray.length; - while (i + 3 < ii) { - if (fnArray[i] !== OPS.save || - fnArray[i + 1] !== OPS.transform || - fnArray[i + 2] !== OPS.paintImageXObject || - fnArray[i + 3] !== OPS.restore) { - break; // ops don't match - } - if (argsArray[i + 1][0] !== firstTransformArg0 || - argsArray[i + 1][1] !== 0 || - argsArray[i + 1][2] !== 0 || - argsArray[i + 1][3] !== firstTransformArg3) { - break; // transforms don't match - } - if (argsArray[i + 2][0] !== firstPIXOArg0) { - break; // images don't match - } - i += 4; - } - - // At this point, i is the index of the first op past the last valid - // quartet. - var count = Math.min((i - iFirstSave) / 4, MAX_IMAGES_IN_BLOCK); - if (count < MIN_IMAGES_IN_BLOCK) { - return i; - } - - // Extract the (x,y) positions from all of the matching transforms. - var positions = new Float32Array(count * 2); - var iTransform = iFirstTransform; - for (var q = 0; q < count; q++, iTransform += 4) { - var transformArgs = argsArray[iTransform]; - positions[(q << 1)] = transformArgs[4]; - positions[(q << 1) + 1] = transformArgs[5]; - } - - // Replace queue items. - var args = [firstPIXOArg0, firstTransformArg0, firstTransformArg3, - positions]; - fnArray.splice(iFirstSave, count * 4, OPS.paintImageXObjectRepeat); - argsArray.splice(iFirstSave, count * 4, args); - - return iFirstSave + 1; - }); - - // This replaces (beginText, setFont, setTextMatrix, showText, endText)+ - // sequences with (beginText, setFont, (setTextMatrix, showText)+, endText)+ - // sequences, if the font for each one is the same. - addState(InitialState, - [OPS.beginText, OPS.setFont, OPS.setTextMatrix, OPS.showText, OPS.endText], - function (context) { - var MIN_CHARS_IN_BLOCK = 3; - var MAX_CHARS_IN_BLOCK = 1000; - - var fnArray = context.fnArray, argsArray = context.argsArray; - var curr = context.iCurr; - var iFirstBeginText = curr - 4; - var iFirstSetFont = curr - 3; - var iFirstSetTextMatrix = curr - 2; - var iFirstShowText = curr - 1; - var iFirstEndText = curr; - - // Look for the quintets. - var firstSetFontArg0 = argsArray[iFirstSetFont][0]; - var firstSetFontArg1 = argsArray[iFirstSetFont][1]; - var i = iFirstBeginText + 5; - var ii = fnArray.length; - while (i + 4 < ii) { - if (fnArray[i] !== OPS.beginText || - fnArray[i + 1] !== OPS.setFont || - fnArray[i + 2] !== OPS.setTextMatrix || - fnArray[i + 3] !== OPS.showText || - fnArray[i + 4] !== OPS.endText) { - break; // ops don't match - } - if (argsArray[i + 1][0] !== firstSetFontArg0 || - argsArray[i + 1][1] !== firstSetFontArg1) { - break; // fonts don't match - } - i += 5; - } - - // At this point, i is the index of the first op past the last valid - // quintet. - var count = Math.min(((i - iFirstBeginText) / 5), MAX_CHARS_IN_BLOCK); - if (count < MIN_CHARS_IN_BLOCK) { - return i; - } - - // If the preceding quintet is (, setFont, setTextMatrix, - // showText, endText), include that as well. (E.g. might be - // |dependency|.) - var iFirst = iFirstBeginText; - if (iFirstBeginText >= 4 && - fnArray[iFirstBeginText - 4] === fnArray[iFirstSetFont] && - fnArray[iFirstBeginText - 3] === fnArray[iFirstSetTextMatrix] && - fnArray[iFirstBeginText - 2] === fnArray[iFirstShowText] && - fnArray[iFirstBeginText - 1] === fnArray[iFirstEndText] && - argsArray[iFirstBeginText - 4][0] === firstSetFontArg0 && - argsArray[iFirstBeginText - 4][1] === firstSetFontArg1) { - count++; - iFirst -= 5; - } - - // Remove (endText, beginText, setFont) trios. - var iEndText = iFirst + 4; - for (var q = 1; q < count; q++) { - fnArray.splice(iEndText, 3); - argsArray.splice(iEndText, 3); - iEndText += 2; - } - - return iEndText + 1; - }); - - function QueueOptimizer() {} - - QueueOptimizer.prototype = { - optimize: function QueueOptimizer_optimize(queue) { - var fnArray = queue.fnArray, argsArray = queue.argsArray; - var context = { - iCurr: 0, - fnArray: fnArray, - argsArray: argsArray - }; - var state; - var i = 0, ii = fnArray.length; - while (i < ii) { - state = (state || InitialState)[fnArray[i]]; - if (typeof state === 'function') { // we found some handler - context.iCurr = i; - // state() returns the index of the first non-matching op (if we - // didn't match) or the first op past the modified ops (if we did - // match and replace). - i = state(context); - state = undefined; // reset the state machine - ii = context.fnArray.length; - } else { - i++; - } - } - } - }; - return QueueOptimizer; -})(); - -exports.OperatorList = OperatorList; -exports.PartialEvaluator = PartialEvaluator; -})); - - -(function (root, factory) { - { - factory((root.pdfjsCoreAnnotation = {}), root.pdfjsSharedUtil, - root.pdfjsCorePrimitives, root.pdfjsCoreStream, root.pdfjsCoreColorSpace, - root.pdfjsCoreObj, root.pdfjsCoreEvaluator); - } -}(this, function (exports, sharedUtil, corePrimitives, coreStream, - coreColorSpace, coreObj, coreEvaluator) { - -var AnnotationBorderStyleType = sharedUtil.AnnotationBorderStyleType; -var AnnotationFlag = sharedUtil.AnnotationFlag; -var AnnotationType = sharedUtil.AnnotationType; -var OPS = sharedUtil.OPS; -var Util = sharedUtil.Util; -var isArray = sharedUtil.isArray; -var isInt = sharedUtil.isInt; -var isValidUrl = sharedUtil.isValidUrl; -var stringToBytes = sharedUtil.stringToBytes; -var stringToPDFString = sharedUtil.stringToPDFString; -var stringToUTF8String = sharedUtil.stringToUTF8String; -var warn = sharedUtil.warn; -var Dict = corePrimitives.Dict; -var isDict = corePrimitives.isDict; -var isName = corePrimitives.isName; -var Stream = coreStream.Stream; -var ColorSpace = coreColorSpace.ColorSpace; -var ObjectLoader = coreObj.ObjectLoader; -var OperatorList = coreEvaluator.OperatorList; - -/** - * @class - * @alias AnnotationFactory - */ -function AnnotationFactory() {} -AnnotationFactory.prototype = /** @lends AnnotationFactory.prototype */ { - /** - * @param {XRef} xref - * @param {Object} ref - * @returns {Annotation} - */ - create: function AnnotationFactory_create(xref, ref) { - var dict = xref.fetchIfRef(ref); - if (!isDict(dict)) { - return; - } - - // Determine the annotation's subtype. - var subtype = dict.get('Subtype'); - subtype = isName(subtype) ? subtype.name : ''; - - // Return the right annotation object based on the subtype and field type. - var parameters = { - dict: dict, - ref: ref - }; - - switch (subtype) { - case 'Link': - return new LinkAnnotation(parameters); - - case 'Text': - return new TextAnnotation(parameters); - - case 'Widget': - var fieldType = Util.getInheritableProperty(dict, 'FT'); - if (isName(fieldType) && fieldType.name === 'Tx') { - return new TextWidgetAnnotation(parameters); - } - return new WidgetAnnotation(parameters); - - case 'Popup': - return new PopupAnnotation(parameters); - - case 'Highlight': - return new HighlightAnnotation(parameters); - - case 'Underline': - return new UnderlineAnnotation(parameters); - - case 'Squiggly': - return new SquigglyAnnotation(parameters); - - case 'StrikeOut': - return new StrikeOutAnnotation(parameters); - - default: - warn('Unimplemented annotation type "' + subtype + '", ' + - 'falling back to base annotation'); - return new Annotation(parameters); - } - } -}; - -var Annotation = (function AnnotationClosure() { - // 12.5.5: Algorithm: Appearance streams - function getTransformMatrix(rect, bbox, matrix) { - var bounds = Util.getAxialAlignedBoundingBox(bbox, matrix); - var minX = bounds[0]; - var minY = bounds[1]; - var maxX = bounds[2]; - var maxY = bounds[3]; - - if (minX === maxX || minY === maxY) { - // From real-life file, bbox was [0, 0, 0, 0]. In this case, - // just apply the transform for rect - return [1, 0, 0, 1, rect[0], rect[1]]; - } - - var xRatio = (rect[2] - rect[0]) / (maxX - minX); - var yRatio = (rect[3] - rect[1]) / (maxY - minY); - return [ - xRatio, - 0, - 0, - yRatio, - rect[0] - minX * xRatio, - rect[1] - minY * yRatio - ]; - } - - function getDefaultAppearance(dict) { - var appearanceState = dict.get('AP'); - if (!isDict(appearanceState)) { - return; - } - - var appearance; - var appearances = appearanceState.get('N'); - if (isDict(appearances)) { - var as = dict.get('AS'); - if (as && appearances.has(as.name)) { - appearance = appearances.get(as.name); - } - } else { - appearance = appearances; - } - return appearance; - } - - function Annotation(params) { - var dict = params.dict; - - this.setFlags(dict.get('F')); - this.setRectangle(dict.get('Rect')); - this.setColor(dict.get('C')); - this.setBorderStyle(dict); - this.appearance = getDefaultAppearance(dict); - - // Expose public properties using a data object. - this.data = {}; - this.data.id = params.ref.toString(); - this.data.subtype = dict.get('Subtype').name; - this.data.annotationFlags = this.flags; - this.data.rect = this.rectangle; - this.data.color = this.color; - this.data.borderStyle = this.borderStyle; - this.data.hasAppearance = !!this.appearance; - } - - Annotation.prototype = { - /** - * @return {boolean} - */ - get viewable() { - if (this.flags) { - return !this.hasFlag(AnnotationFlag.INVISIBLE) && - !this.hasFlag(AnnotationFlag.HIDDEN) && - !this.hasFlag(AnnotationFlag.NOVIEW); - } - return true; - }, - - /** - * @return {boolean} - */ - get printable() { - if (this.flags) { - return this.hasFlag(AnnotationFlag.PRINT) && - !this.hasFlag(AnnotationFlag.INVISIBLE) && - !this.hasFlag(AnnotationFlag.HIDDEN); - } - return false; - }, - - /** - * Set the flags. - * - * @public - * @memberof Annotation - * @param {number} flags - Unsigned 32-bit integer specifying annotation - * characteristics - * @see {@link shared/util.js} - */ - setFlags: function Annotation_setFlags(flags) { - if (isInt(flags)) { - this.flags = flags; - } else { - this.flags = 0; - } - }, - - /** - * Check if a provided flag is set. - * - * @public - * @memberof Annotation - * @param {number} flag - Hexadecimal representation for an annotation - * characteristic - * @return {boolean} - * @see {@link shared/util.js} - */ - hasFlag: function Annotation_hasFlag(flag) { - if (this.flags) { - return (this.flags & flag) > 0; - } - return false; - }, - - /** - * Set the rectangle. - * - * @public - * @memberof Annotation - * @param {Array} rectangle - The rectangle array with exactly four entries - */ - setRectangle: function Annotation_setRectangle(rectangle) { - if (isArray(rectangle) && rectangle.length === 4) { - this.rectangle = Util.normalizeRect(rectangle); - } else { - this.rectangle = [0, 0, 0, 0]; - } - }, - - /** - * Set the color and take care of color space conversion. - * - * @public - * @memberof Annotation - * @param {Array} color - The color array containing either 0 - * (transparent), 1 (grayscale), 3 (RGB) or - * 4 (CMYK) elements - */ - setColor: function Annotation_setColor(color) { - var rgbColor = new Uint8Array(3); // Black in RGB color space (default) - if (!isArray(color)) { - this.color = rgbColor; - return; - } - - switch (color.length) { - case 0: // Transparent, which we indicate with a null value - this.color = null; - break; - - case 1: // Convert grayscale to RGB - ColorSpace.singletons.gray.getRgbItem(color, 0, rgbColor, 0); - this.color = rgbColor; - break; - - case 3: // Convert RGB percentages to RGB - ColorSpace.singletons.rgb.getRgbItem(color, 0, rgbColor, 0); - this.color = rgbColor; - break; - - case 4: // Convert CMYK to RGB - ColorSpace.singletons.cmyk.getRgbItem(color, 0, rgbColor, 0); - this.color = rgbColor; - break; - - default: - this.color = rgbColor; - break; - } - }, - - /** - * Set the border style (as AnnotationBorderStyle object). - * - * @public - * @memberof Annotation - * @param {Dict} borderStyle - The border style dictionary - */ - setBorderStyle: function Annotation_setBorderStyle(borderStyle) { - this.borderStyle = new AnnotationBorderStyle(); - if (!isDict(borderStyle)) { - return; - } - if (borderStyle.has('BS')) { - var dict = borderStyle.get('BS'); - var dictType; - - if (!dict.has('Type') || (isName(dictType = dict.get('Type')) && - dictType.name === 'Border')) { - this.borderStyle.setWidth(dict.get('W')); - this.borderStyle.setStyle(dict.get('S')); - this.borderStyle.setDashArray(dict.get('D')); - } - } else if (borderStyle.has('Border')) { - var array = borderStyle.get('Border'); - if (isArray(array) && array.length >= 3) { - this.borderStyle.setHorizontalCornerRadius(array[0]); - this.borderStyle.setVerticalCornerRadius(array[1]); - this.borderStyle.setWidth(array[2]); - - if (array.length === 4) { // Dash array available - this.borderStyle.setDashArray(array[3]); - } - } - } else { - // There are no border entries in the dictionary. According to the - // specification, we should draw a solid border of width 1 in that - // case, but Adobe Reader did not implement that part of the - // specification and instead draws no border at all, so we do the same. - // See also https://github.com/mozilla/pdf.js/issues/6179. - this.borderStyle.setWidth(0); - } - }, - - loadResources: function Annotation_loadResources(keys) { - return new Promise(function (resolve, reject) { - this.appearance.dict.getAsync('Resources').then(function (resources) { - if (!resources) { - resolve(); - return; - } - var objectLoader = new ObjectLoader(resources.map, - keys, - resources.xref); - objectLoader.load().then(function() { - resolve(resources); - }, reject); - }, reject); - }.bind(this)); - }, - - getOperatorList: function Annotation_getOperatorList(evaluator, task) { - if (!this.appearance) { - return Promise.resolve(new OperatorList()); - } - - var data = this.data; - var appearanceDict = this.appearance.dict; - var resourcesPromise = this.loadResources([ - 'ExtGState', - 'ColorSpace', - 'Pattern', - 'Shading', - 'XObject', - 'Font' - // ProcSet - // Properties - ]); - var bbox = appearanceDict.get('BBox') || [0, 0, 1, 1]; - var matrix = appearanceDict.get('Matrix') || [1, 0, 0, 1, 0 ,0]; - var transform = getTransformMatrix(data.rect, bbox, matrix); - var self = this; - - return resourcesPromise.then(function(resources) { - var opList = new OperatorList(); - opList.addOp(OPS.beginAnnotation, [data.rect, transform, matrix]); - return evaluator.getOperatorList(self.appearance, task, - resources, opList). - then(function () { - opList.addOp(OPS.endAnnotation, []); - self.appearance.reset(); - return opList; - }); - }); - } - }; - - Annotation.appendToOperatorList = function Annotation_appendToOperatorList( - annotations, opList, partialEvaluator, task, intent) { - var annotationPromises = []; - for (var i = 0, n = annotations.length; i < n; ++i) { - if ((intent === 'display' && annotations[i].viewable) || - (intent === 'print' && annotations[i].printable)) { - annotationPromises.push( - annotations[i].getOperatorList(partialEvaluator, task)); - } - } - return Promise.all(annotationPromises).then(function(operatorLists) { - opList.addOp(OPS.beginAnnotations, []); - for (var i = 0, n = operatorLists.length; i < n; ++i) { - opList.addOpList(operatorLists[i]); - } - opList.addOp(OPS.endAnnotations, []); - }); - }; - - return Annotation; -})(); - -/** - * Contains all data regarding an annotation's border style. - * - * @class - */ -var AnnotationBorderStyle = (function AnnotationBorderStyleClosure() { - /** - * @constructor - * @private - */ - function AnnotationBorderStyle() { - this.width = 1; - this.style = AnnotationBorderStyleType.SOLID; - this.dashArray = [3]; - this.horizontalCornerRadius = 0; - this.verticalCornerRadius = 0; - } - - AnnotationBorderStyle.prototype = { - /** - * Set the width. - * - * @public - * @memberof AnnotationBorderStyle - * @param {integer} width - The width - */ - setWidth: function AnnotationBorderStyle_setWidth(width) { - if (width === (width | 0)) { - this.width = width; - } - }, - - /** - * Set the style. - * - * @public - * @memberof AnnotationBorderStyle - * @param {Object} style - The style object - * @see {@link shared/util.js} - */ - setStyle: function AnnotationBorderStyle_setStyle(style) { - if (!style) { - return; - } - switch (style.name) { - case 'S': - this.style = AnnotationBorderStyleType.SOLID; - break; - - case 'D': - this.style = AnnotationBorderStyleType.DASHED; - break; - - case 'B': - this.style = AnnotationBorderStyleType.BEVELED; - break; - - case 'I': - this.style = AnnotationBorderStyleType.INSET; - break; - - case 'U': - this.style = AnnotationBorderStyleType.UNDERLINE; - break; - - default: - break; - } - }, - - /** - * Set the dash array. - * - * @public - * @memberof AnnotationBorderStyle - * @param {Array} dashArray - The dash array with at least one element - */ - setDashArray: function AnnotationBorderStyle_setDashArray(dashArray) { - // We validate the dash array, but we do not use it because CSS does not - // allow us to change spacing of dashes. For more information, visit - // http://www.w3.org/TR/css3-background/#the-border-style. - if (isArray(dashArray) && dashArray.length > 0) { - // According to the PDF specification: the elements in a dashArray - // shall be numbers that are nonnegative and not all equal to zero. - var isValid = true; - var allZeros = true; - for (var i = 0, len = dashArray.length; i < len; i++) { - var element = dashArray[i]; - var validNumber = (+element >= 0); - if (!validNumber) { - isValid = false; - break; - } else if (element > 0) { - allZeros = false; - } - } - if (isValid && !allZeros) { - this.dashArray = dashArray; - } else { - this.width = 0; // Adobe behavior when the array is invalid. - } - } else if (dashArray) { - this.width = 0; // Adobe behavior when the array is invalid. - } - }, - - /** - * Set the horizontal corner radius (from a Border dictionary). - * - * @public - * @memberof AnnotationBorderStyle - * @param {integer} radius - The horizontal corner radius - */ - setHorizontalCornerRadius: - function AnnotationBorderStyle_setHorizontalCornerRadius(radius) { - if (radius === (radius | 0)) { - this.horizontalCornerRadius = radius; - } - }, - - /** - * Set the vertical corner radius (from a Border dictionary). - * - * @public - * @memberof AnnotationBorderStyle - * @param {integer} radius - The vertical corner radius - */ - setVerticalCornerRadius: - function AnnotationBorderStyle_setVerticalCornerRadius(radius) { - if (radius === (radius | 0)) { - this.verticalCornerRadius = radius; - } - } - }; - - return AnnotationBorderStyle; -})(); - -var WidgetAnnotation = (function WidgetAnnotationClosure() { - function WidgetAnnotation(params) { - Annotation.call(this, params); - - var dict = params.dict; - var data = this.data; - - data.annotationType = AnnotationType.WIDGET; - data.fieldValue = stringToPDFString( - Util.getInheritableProperty(dict, 'V') || ''); - data.alternativeText = stringToPDFString(dict.get('TU') || ''); - data.defaultAppearance = Util.getInheritableProperty(dict, 'DA') || ''; - var fieldType = Util.getInheritableProperty(dict, 'FT'); - data.fieldType = isName(fieldType) ? fieldType.name : ''; - data.fieldFlags = Util.getInheritableProperty(dict, 'Ff') || 0; - this.fieldResources = Util.getInheritableProperty(dict, 'DR') || Dict.empty; - - // Hide unsupported Widget signatures. - if (data.fieldType === 'Sig') { - warn('unimplemented annotation type: Widget signature'); - this.setFlags(AnnotationFlag.HIDDEN); - } - - // Building the full field name by collecting the field and - // its ancestors 'T' data and joining them using '.'. - var fieldName = []; - var namedItem = dict; - var ref = params.ref; - while (namedItem) { - var parent = namedItem.get('Parent'); - var parentRef = namedItem.getRaw('Parent'); - var name = namedItem.get('T'); - if (name) { - fieldName.unshift(stringToPDFString(name)); - } else if (parent && ref) { - // The field name is absent, that means more than one field - // with the same name may exist. Replacing the empty name - // with the '`' plus index in the parent's 'Kids' array. - // This is not in the PDF spec but necessary to id the - // the input controls. - var kids = parent.get('Kids'); - var j, jj; - for (j = 0, jj = kids.length; j < jj; j++) { - var kidRef = kids[j]; - if (kidRef.num === ref.num && kidRef.gen === ref.gen) { - break; - } - } - fieldName.unshift('`' + j); - } - namedItem = parent; - ref = parentRef; - } - data.fullName = fieldName.join('.'); - } - - Util.inherit(WidgetAnnotation, Annotation, {}); - - return WidgetAnnotation; -})(); - -var TextWidgetAnnotation = (function TextWidgetAnnotationClosure() { - function TextWidgetAnnotation(params) { - WidgetAnnotation.call(this, params); - - this.data.textAlignment = Util.getInheritableProperty(params.dict, 'Q'); - this.data.hasHtml = !this.data.hasAppearance && !!this.data.fieldValue; - } - - Util.inherit(TextWidgetAnnotation, WidgetAnnotation, { - getOperatorList: function TextWidgetAnnotation_getOperatorList(evaluator, - task) { - if (this.appearance) { - return Annotation.prototype.getOperatorList.call(this, evaluator, task); - } - - var opList = new OperatorList(); - var data = this.data; - - // Even if there is an appearance stream, ignore it. This is the - // behaviour used by Adobe Reader. - if (!data.defaultAppearance) { - return Promise.resolve(opList); - } - - var stream = new Stream(stringToBytes(data.defaultAppearance)); - return evaluator.getOperatorList(stream, task, - this.fieldResources, opList). - then(function () { - return opList; - }); - } - }); - - return TextWidgetAnnotation; -})(); - -var TextAnnotation = (function TextAnnotationClosure() { - var DEFAULT_ICON_SIZE = 22; // px - - function TextAnnotation(parameters) { - Annotation.call(this, parameters); - - this.data.annotationType = AnnotationType.TEXT; - this.data.hasHtml = true; - - var dict = parameters.dict; - if (this.data.hasAppearance) { - this.data.name = 'NoIcon'; - } else { - this.data.rect[1] = this.data.rect[3] - DEFAULT_ICON_SIZE; - this.data.rect[2] = this.data.rect[0] + DEFAULT_ICON_SIZE; - this.data.name = dict.has('Name') ? dict.get('Name').name : 'Note'; - } - - if (!dict.has('C')) { - // Fall back to the default background color. - this.data.color = null; - } - - this.data.hasPopup = dict.has('Popup'); - if (!this.data.hasPopup) { - // There is no associated Popup annotation, so the Text annotation - // must create its own popup. - this.data.title = stringToPDFString(dict.get('T') || ''); - this.data.contents = stringToPDFString(dict.get('Contents') || ''); - this.data.hasHtml = (this.data.title || this.data.contents); - } - } - - Util.inherit(TextAnnotation, Annotation, {}); - - return TextAnnotation; -})(); - -var LinkAnnotation = (function LinkAnnotationClosure() { - function LinkAnnotation(params) { - Annotation.call(this, params); - - var dict = params.dict; - var data = this.data; - data.annotationType = AnnotationType.LINK; - data.hasHtml = true; - - var action = dict.get('A'); - if (action && isDict(action)) { - var linkType = action.get('S').name; - if (linkType === 'URI') { - var url = action.get('URI'); - if (isName(url)) { - // Some bad PDFs do not put parentheses around relative URLs. - url = '/' + url.name; - } else if (url) { - url = addDefaultProtocolToUrl(url); - } - // TODO: pdf spec mentions urls can be relative to a Base - // entry in the dictionary. - if (!isValidUrl(url, false)) { - url = ''; - } - // According to ISO 32000-1:2008, section 12.6.4.7, - // URI should to be encoded in 7-bit ASCII. - // Some bad PDFs may have URIs in UTF-8 encoding, see Bugzilla 1122280. - try { - data.url = stringToUTF8String(url); - } catch (e) { - // Fall back to a simple copy. - data.url = url; - } - } else if (linkType === 'GoTo') { - data.dest = action.get('D'); - } else if (linkType === 'GoToR') { - var urlDict = action.get('F'); - if (isDict(urlDict)) { - // We assume that the 'url' is a Filspec dictionary - // and fetch the url without checking any further - url = urlDict.get('F') || ''; - } - - // TODO: pdf reference says that GoToR - // can also have 'NewWindow' attribute - if (!isValidUrl(url, false)) { - url = ''; - } - data.url = url; - data.dest = action.get('D'); - } else if (linkType === 'Named') { - data.action = action.get('N').name; - } else { - warn('unrecognized link type: ' + linkType); - } - } else if (dict.has('Dest')) { - // simple destination link - var dest = dict.get('Dest'); - data.dest = isName(dest) ? dest.name : dest; - } - } - - // Lets URLs beginning with 'www.' default to using the 'http://' protocol. - function addDefaultProtocolToUrl(url) { - if (url && url.indexOf('www.') === 0) { - return ('http://' + url); - } - return url; - } - - Util.inherit(LinkAnnotation, Annotation, {}); - - return LinkAnnotation; -})(); - -var PopupAnnotation = (function PopupAnnotationClosure() { - function PopupAnnotation(parameters) { - Annotation.call(this, parameters); - - this.data.annotationType = AnnotationType.POPUP; - - var dict = parameters.dict; - var parentItem = dict.get('Parent'); - if (!parentItem) { - warn('Popup annotation has a missing or invalid parent annotation.'); - return; - } - - this.data.parentId = dict.getRaw('Parent').toString(); - this.data.title = stringToPDFString(parentItem.get('T') || ''); - this.data.contents = stringToPDFString(parentItem.get('Contents') || ''); - - if (!parentItem.has('C')) { - // Fall back to the default background color. - this.data.color = null; - } else { - this.setColor(parentItem.get('C')); - this.data.color = this.color; - } - - this.data.hasHtml = (this.data.title || this.data.contents); - } - - Util.inherit(PopupAnnotation, Annotation, {}); - - return PopupAnnotation; -})(); - -var HighlightAnnotation = (function HighlightAnnotationClosure() { - function HighlightAnnotation(parameters) { - Annotation.call(this, parameters); - - this.data.annotationType = AnnotationType.HIGHLIGHT; - this.data.hasHtml = true; - - // PDF viewers completely ignore any border styles. - this.data.borderStyle.setWidth(0); - } - - Util.inherit(HighlightAnnotation, Annotation, {}); - - return HighlightAnnotation; -})(); - -var UnderlineAnnotation = (function UnderlineAnnotationClosure() { - function UnderlineAnnotation(parameters) { - Annotation.call(this, parameters); - - this.data.annotationType = AnnotationType.UNDERLINE; - this.data.hasHtml = true; - - // PDF viewers completely ignore any border styles. - this.data.borderStyle.setWidth(0); - } - - Util.inherit(UnderlineAnnotation, Annotation, {}); - - return UnderlineAnnotation; -})(); - -var SquigglyAnnotation = (function SquigglyAnnotationClosure() { - function SquigglyAnnotation(parameters) { - Annotation.call(this, parameters); - - this.data.annotationType = AnnotationType.SQUIGGLY; - this.data.hasHtml = true; - - // PDF viewers completely ignore any border styles. - this.data.borderStyle.setWidth(0); - } - - Util.inherit(SquigglyAnnotation, Annotation, {}); - - return SquigglyAnnotation; -})(); - -var StrikeOutAnnotation = (function StrikeOutAnnotationClosure() { - function StrikeOutAnnotation(parameters) { - Annotation.call(this, parameters); - - this.data.annotationType = AnnotationType.STRIKEOUT; - this.data.hasHtml = true; - - // PDF viewers completely ignore any border styles. - this.data.borderStyle.setWidth(0); - } - - Util.inherit(StrikeOutAnnotation, Annotation, {}); - - return StrikeOutAnnotation; -})(); - -exports.Annotation = Annotation; -exports.AnnotationBorderStyle = AnnotationBorderStyle; -exports.AnnotationFactory = AnnotationFactory; -})); - - -(function (root, factory) { - { - factory((root.pdfjsCoreDocument = {}), root.pdfjsSharedUtil, - root.pdfjsCorePrimitives, root.pdfjsCoreStream, - root.pdfjsCoreObj, root.pdfjsCoreParser, root.pdfjsCoreCrypto, - root.pdfjsCoreEvaluator, root.pdfjsCoreAnnotation); - } -}(this, function (exports, sharedUtil, corePrimitives, coreStream, coreObj, - coreParser, coreCrypto, coreEvaluator, coreAnnotation) { - -var MissingDataException = sharedUtil.MissingDataException; -var Util = sharedUtil.Util; -var assert = sharedUtil.assert; -var error = sharedUtil.error; -var info = sharedUtil.info; -var isArray = sharedUtil.isArray; -var isArrayBuffer = sharedUtil.isArrayBuffer; -var isString = sharedUtil.isString; -var shadow = sharedUtil.shadow; -var stringToBytes = sharedUtil.stringToBytes; -var stringToPDFString = sharedUtil.stringToPDFString; -var warn = sharedUtil.warn; -var Dict = corePrimitives.Dict; -var isDict = corePrimitives.isDict; -var isName = corePrimitives.isName; -var isStream = corePrimitives.isStream; -var NullStream = coreStream.NullStream; -var Stream = coreStream.Stream; -var StreamsSequenceStream = coreStream.StreamsSequenceStream; -var Catalog = coreObj.Catalog; -var ObjectLoader = coreObj.ObjectLoader; -var XRef = coreObj.XRef; -var Lexer = coreParser.Lexer; -var Linearization = coreParser.Linearization; -var calculateMD5 = coreCrypto.calculateMD5; -var OperatorList = coreEvaluator.OperatorList; -var PartialEvaluator = coreEvaluator.PartialEvaluator; -var Annotation = coreAnnotation.Annotation; -var AnnotationFactory = coreAnnotation.AnnotationFactory; - -var Page = (function PageClosure() { - - var LETTER_SIZE_MEDIABOX = [0, 0, 612, 792]; - - function Page(pdfManager, xref, pageIndex, pageDict, ref, fontCache) { - this.pdfManager = pdfManager; - this.pageIndex = pageIndex; - this.pageDict = pageDict; - this.xref = xref; - this.ref = ref; - this.fontCache = fontCache; - this.idCounters = { - obj: 0 - }; - this.resourcesPromise = null; - } - - Page.prototype = { - getPageProp: function Page_getPageProp(key) { - return this.pageDict.get(key); - }, - - getInheritedPageProp: function Page_getInheritedPageProp(key) { - var dict = this.pageDict, valueArray = null, loopCount = 0; - var MAX_LOOP_COUNT = 100; - // Always walk up the entire parent chain, to be able to find - // e.g. \Resources placed on multiple levels of the tree. - while (dict) { - var value = dict.get(key); - if (value) { - if (!valueArray) { - valueArray = []; - } - valueArray.push(value); - } - if (++loopCount > MAX_LOOP_COUNT) { - warn('Page_getInheritedPageProp: maximum loop count exceeded.'); - break; - } - dict = dict.get('Parent'); - } - if (!valueArray) { - return Dict.empty; - } - if (valueArray.length === 1 || !isDict(valueArray[0]) || - loopCount > MAX_LOOP_COUNT) { - return valueArray[0]; - } - return Dict.merge(this.xref, valueArray); - }, - - get content() { - return this.getPageProp('Contents'); - }, - - get resources() { - // For robustness: The spec states that a \Resources entry has to be - // present, but can be empty. Some document omit it still, in this case - // we return an empty dictionary. - return shadow(this, 'resources', this.getInheritedPageProp('Resources')); - }, - - get mediaBox() { - var obj = this.getInheritedPageProp('MediaBox'); - // Reset invalid media box to letter size. - if (!isArray(obj) || obj.length !== 4) { - obj = LETTER_SIZE_MEDIABOX; - } - return shadow(this, 'mediaBox', obj); - }, - - get view() { - var mediaBox = this.mediaBox; - var cropBox = this.getInheritedPageProp('CropBox'); - if (!isArray(cropBox) || cropBox.length !== 4) { - return shadow(this, 'view', mediaBox); - } - - // From the spec, 6th ed., p.963: - // "The crop, bleed, trim, and art boxes should not ordinarily - // extend beyond the boundaries of the media box. If they do, they are - // effectively reduced to their intersection with the media box." - cropBox = Util.intersect(cropBox, mediaBox); - if (!cropBox) { - return shadow(this, 'view', mediaBox); - } - return shadow(this, 'view', cropBox); - }, - - get rotate() { - var rotate = this.getInheritedPageProp('Rotate') || 0; - // Normalize rotation so it's a multiple of 90 and between 0 and 270 - if (rotate % 90 !== 0) { - rotate = 0; - } else if (rotate >= 360) { - rotate = rotate % 360; - } else if (rotate < 0) { - // The spec doesn't cover negatives, assume its counterclockwise - // rotation. The following is the other implementation of modulo. - rotate = ((rotate % 360) + 360) % 360; - } - return shadow(this, 'rotate', rotate); - }, - - getContentStream: function Page_getContentStream() { - var content = this.content; - var stream; - if (isArray(content)) { - // fetching items - var xref = this.xref; - var i, n = content.length; - var streams = []; - for (i = 0; i < n; ++i) { - streams.push(xref.fetchIfRef(content[i])); - } - stream = new StreamsSequenceStream(streams); - } else if (isStream(content)) { - stream = content; - } else { - // replacing non-existent page content with empty one - stream = new NullStream(); - } - return stream; - }, - - loadResources: function Page_loadResources(keys) { - if (!this.resourcesPromise) { - // TODO: add async getInheritedPageProp and remove this. - this.resourcesPromise = this.pdfManager.ensure(this, 'resources'); - } - return this.resourcesPromise.then(function resourceSuccess() { - var objectLoader = new ObjectLoader(this.resources.map, - keys, - this.xref); - return objectLoader.load(); - }.bind(this)); - }, - - getOperatorList: function Page_getOperatorList(handler, task, intent) { - var self = this; - - var pdfManager = this.pdfManager; - var contentStreamPromise = pdfManager.ensure(this, 'getContentStream', - []); - var resourcesPromise = this.loadResources([ - 'ExtGState', - 'ColorSpace', - 'Pattern', - 'Shading', - 'XObject', - 'Font' - // ProcSet - // Properties - ]); - - var partialEvaluator = new PartialEvaluator(pdfManager, this.xref, - handler, this.pageIndex, - 'p' + this.pageIndex + '_', - this.idCounters, - this.fontCache); - - var dataPromises = Promise.all([contentStreamPromise, resourcesPromise]); - var pageListPromise = dataPromises.then(function(data) { - var contentStream = data[0]; - var opList = new OperatorList(intent, handler, self.pageIndex); - - handler.send('StartRenderPage', { - transparency: partialEvaluator.hasBlendModes(self.resources), - pageIndex: self.pageIndex, - intent: intent - }); - return partialEvaluator.getOperatorList(contentStream, task, - self.resources, opList).then(function () { - return opList; - }); - }); - - var annotationsPromise = pdfManager.ensure(this, 'annotations'); - return Promise.all([pageListPromise, annotationsPromise]).then( - function(datas) { - var pageOpList = datas[0]; - var annotations = datas[1]; - - if (annotations.length === 0) { - pageOpList.flush(true); - return pageOpList; - } - - var annotationsReadyPromise = Annotation.appendToOperatorList( - annotations, pageOpList, partialEvaluator, task, intent); - return annotationsReadyPromise.then(function () { - pageOpList.flush(true); - return pageOpList; - }); - }); - }, - - extractTextContent: function Page_extractTextContent(task, - normalizeWhitespace) { - var handler = { - on: function nullHandlerOn() {}, - send: function nullHandlerSend() {} - }; - - var self = this; - - var pdfManager = this.pdfManager; - var contentStreamPromise = pdfManager.ensure(this, 'getContentStream', - []); - - var resourcesPromise = this.loadResources([ - 'ExtGState', - 'XObject', - 'Font' - ]); - - var dataPromises = Promise.all([contentStreamPromise, - resourcesPromise]); - return dataPromises.then(function(data) { - var contentStream = data[0]; - var partialEvaluator = new PartialEvaluator(pdfManager, self.xref, - handler, self.pageIndex, - 'p' + self.pageIndex + '_', - self.idCounters, - self.fontCache); - - return partialEvaluator.getTextContent(contentStream, - task, - self.resources, - /* stateManager = */ null, - normalizeWhitespace); - }); - }, - - getAnnotationsData: function Page_getAnnotationsData(intent) { - var annotations = this.annotations; - var annotationsData = []; - for (var i = 0, n = annotations.length; i < n; ++i) { - if (intent) { - if (!(intent === 'display' && annotations[i].viewable) && - !(intent === 'print' && annotations[i].printable)) { - continue; - } - } - annotationsData.push(annotations[i].data); - } - return annotationsData; - }, - - get annotations() { - var annotations = []; - var annotationRefs = this.getInheritedPageProp('Annots') || []; - var annotationFactory = new AnnotationFactory(); - for (var i = 0, n = annotationRefs.length; i < n; ++i) { - var annotationRef = annotationRefs[i]; - var annotation = annotationFactory.create(this.xref, annotationRef); - if (annotation) { - annotations.push(annotation); - } - } - return shadow(this, 'annotations', annotations); - } - }; - - return Page; -})(); - -/** - * The `PDFDocument` holds all the data of the PDF file. Compared to the - * `PDFDoc`, this one doesn't have any job management code. - * Right now there exists one PDFDocument on the main thread + one object - * for each worker. If there is no worker support enabled, there are two - * `PDFDocument` objects on the main thread created. - */ -var PDFDocument = (function PDFDocumentClosure() { - var FINGERPRINT_FIRST_BYTES = 1024; - var EMPTY_FINGERPRINT = '\x00\x00\x00\x00\x00\x00\x00' + - '\x00\x00\x00\x00\x00\x00\x00\x00\x00'; - - function PDFDocument(pdfManager, arg, password) { - if (isStream(arg)) { - init.call(this, pdfManager, arg, password); - } else if (isArrayBuffer(arg)) { - init.call(this, pdfManager, new Stream(arg), password); - } else { - error('PDFDocument: Unknown argument type'); - } - } - - function init(pdfManager, stream, password) { - assert(stream.length > 0, 'stream must have data'); - this.pdfManager = pdfManager; - this.stream = stream; - var xref = new XRef(this.stream, password, pdfManager); - this.xref = xref; - } - - function find(stream, needle, limit, backwards) { - var pos = stream.pos; - var end = stream.end; - var strBuf = []; - if (pos + limit > end) { - limit = end - pos; - } - for (var n = 0; n < limit; ++n) { - strBuf.push(String.fromCharCode(stream.getByte())); - } - var str = strBuf.join(''); - stream.pos = pos; - var index = backwards ? str.lastIndexOf(needle) : str.indexOf(needle); - if (index === -1) { - return false; /* not found */ - } - stream.pos += index; - return true; /* found */ - } - - var DocumentInfoValidators = { - get entries() { - // Lazily build this since all the validation functions below are not - // defined until after this file loads. - return shadow(this, 'entries', { - Title: isString, - Author: isString, - Subject: isString, - Keywords: isString, - Creator: isString, - Producer: isString, - CreationDate: isString, - ModDate: isString, - Trapped: isName - }); - } - }; - - PDFDocument.prototype = { - parse: function PDFDocument_parse(recoveryMode) { - this.setup(recoveryMode); - var version = this.catalog.catDict.get('Version'); - if (isName(version)) { - this.pdfFormatVersion = version.name; - } - try { - // checking if AcroForm is present - this.acroForm = this.catalog.catDict.get('AcroForm'); - if (this.acroForm) { - this.xfa = this.acroForm.get('XFA'); - var fields = this.acroForm.get('Fields'); - if ((!fields || !isArray(fields) || fields.length === 0) && - !this.xfa) { - // no fields and no XFA -- not a form (?) - this.acroForm = null; - } - } - } catch (ex) { - info('Something wrong with AcroForm entry'); - this.acroForm = null; - } - }, - - get linearization() { - var linearization = null; - if (this.stream.length) { - try { - linearization = Linearization.create(this.stream); - } catch (err) { - if (err instanceof MissingDataException) { - throw err; - } - info(err); - } - } - // shadow the prototype getter with a data property - return shadow(this, 'linearization', linearization); - }, - get startXRef() { - var stream = this.stream; - var startXRef = 0; - var linearization = this.linearization; - if (linearization) { - // Find end of first obj. - stream.reset(); - if (find(stream, 'endobj', 1024)) { - startXRef = stream.pos + 6; - } - } else { - // Find startxref by jumping backward from the end of the file. - var step = 1024; - var found = false, pos = stream.end; - while (!found && pos > 0) { - pos -= step - 'startxref'.length; - if (pos < 0) { - pos = 0; - } - stream.pos = pos; - found = find(stream, 'startxref', step, true); - } - if (found) { - stream.skip(9); - var ch; - do { - ch = stream.getByte(); - } while (Lexer.isSpace(ch)); - var str = ''; - while (ch >= 0x20 && ch <= 0x39) { // < '9' - str += String.fromCharCode(ch); - ch = stream.getByte(); - } - startXRef = parseInt(str, 10); - if (isNaN(startXRef)) { - startXRef = 0; - } - } - } - // shadow the prototype getter with a data property - return shadow(this, 'startXRef', startXRef); - }, - get mainXRefEntriesOffset() { - var mainXRefEntriesOffset = 0; - var linearization = this.linearization; - if (linearization) { - mainXRefEntriesOffset = linearization.mainXRefEntriesOffset; - } - // shadow the prototype getter with a data property - return shadow(this, 'mainXRefEntriesOffset', mainXRefEntriesOffset); - }, - // Find the header, remove leading garbage and setup the stream - // starting from the header. - checkHeader: function PDFDocument_checkHeader() { - var stream = this.stream; - stream.reset(); - if (find(stream, '%PDF-', 1024)) { - // Found the header, trim off any garbage before it. - stream.moveStart(); - // Reading file format version - var MAX_VERSION_LENGTH = 12; - var version = '', ch; - while ((ch = stream.getByte()) > 0x20) { // SPACE - if (version.length >= MAX_VERSION_LENGTH) { - break; - } - version += String.fromCharCode(ch); - } - if (!this.pdfFormatVersion) { - // removing "%PDF-"-prefix - this.pdfFormatVersion = version.substring(5); - } - return; - } - // May not be a PDF file, continue anyway. - }, - parseStartXRef: function PDFDocument_parseStartXRef() { - var startXRef = this.startXRef; - this.xref.setStartXRef(startXRef); - }, - setup: function PDFDocument_setup(recoveryMode) { - this.xref.parse(recoveryMode); - var self = this; - var pageFactory = { - createPage: function (pageIndex, dict, ref, fontCache) { - return new Page(self.pdfManager, self.xref, pageIndex, dict, ref, - fontCache); - } - }; - this.catalog = new Catalog(this.pdfManager, this.xref, pageFactory); - }, - get numPages() { - var linearization = this.linearization; - var num = linearization ? linearization.numPages : this.catalog.numPages; - // shadow the prototype getter - return shadow(this, 'numPages', num); - }, - get documentInfo() { - var docInfo = { - PDFFormatVersion: this.pdfFormatVersion, - IsAcroFormPresent: !!this.acroForm, - IsXFAPresent: !!this.xfa - }; - var infoDict; - try { - infoDict = this.xref.trailer.get('Info'); - } catch (err) { - info('The document information dictionary is invalid.'); - } - if (infoDict) { - var validEntries = DocumentInfoValidators.entries; - // Only fill the document info with valid entries from the spec. - for (var key in validEntries) { - if (infoDict.has(key)) { - var value = infoDict.get(key); - // Make sure the value conforms to the spec. - if (validEntries[key](value)) { - docInfo[key] = (typeof value !== 'string' ? - value : stringToPDFString(value)); - } else { - info('Bad value in document info for "' + key + '"'); - } - } - } - } - return shadow(this, 'documentInfo', docInfo); - }, - get fingerprint() { - var xref = this.xref, hash, fileID = ''; - var idArray = xref.trailer.get('ID'); - - if (idArray && isArray(idArray) && idArray[0] && isString(idArray[0]) && - idArray[0] !== EMPTY_FINGERPRINT) { - hash = stringToBytes(idArray[0]); - } else { - if (this.stream.ensureRange) { - this.stream.ensureRange(0, - Math.min(FINGERPRINT_FIRST_BYTES, this.stream.end)); - } - hash = calculateMD5(this.stream.bytes.subarray(0, - FINGERPRINT_FIRST_BYTES), 0, FINGERPRINT_FIRST_BYTES); - } - - for (var i = 0, n = hash.length; i < n; i++) { - var hex = hash[i].toString(16); - fileID += hex.length === 1 ? '0' + hex : hex; - } - - return shadow(this, 'fingerprint', fileID); - }, - - getPage: function PDFDocument_getPage(pageIndex) { - return this.catalog.getPage(pageIndex); - }, - - cleanup: function PDFDocument_cleanup() { - return this.catalog.cleanup(); - } - }; - - return PDFDocument; -})(); - -exports.Page = Page; -exports.PDFDocument = PDFDocument; -})); - - -(function (root, factory) { - { - factory((root.pdfjsCorePdfManager = {}), root.pdfjsSharedUtil, - root.pdfjsCoreStream, root.pdfjsCoreChunkedStream, - root.pdfjsCoreDocument); - } -}(this, function (exports, sharedUtil, coreStream, coreChunkedStream, - coreDocument) { - -var NotImplementedException = sharedUtil.NotImplementedException; -var MissingDataException = sharedUtil.MissingDataException; -var createPromiseCapability = sharedUtil.createPromiseCapability; -var Util = sharedUtil.Util; -var Stream = coreStream.Stream; -var ChunkedStreamManager = coreChunkedStream.ChunkedStreamManager; -var PDFDocument = coreDocument.PDFDocument; - -var BasePdfManager = (function BasePdfManagerClosure() { - function BasePdfManager() { - throw new Error('Cannot initialize BaseManagerManager'); - } - - BasePdfManager.prototype = { - get docId() { - return this._docId; - }, - - onLoadedStream: function BasePdfManager_onLoadedStream() { - throw new NotImplementedException(); - }, - - ensureDoc: function BasePdfManager_ensureDoc(prop, args) { - return this.ensure(this.pdfDocument, prop, args); - }, - - ensureXRef: function BasePdfManager_ensureXRef(prop, args) { - return this.ensure(this.pdfDocument.xref, prop, args); - }, - - ensureCatalog: function BasePdfManager_ensureCatalog(prop, args) { - return this.ensure(this.pdfDocument.catalog, prop, args); - }, - - getPage: function BasePdfManager_getPage(pageIndex) { - return this.pdfDocument.getPage(pageIndex); - }, - - cleanup: function BasePdfManager_cleanup() { - return this.pdfDocument.cleanup(); - }, - - ensure: function BasePdfManager_ensure(obj, prop, args) { - return new NotImplementedException(); - }, - - requestRange: function BasePdfManager_requestRange(begin, end) { - return new NotImplementedException(); - }, - - requestLoadedStream: function BasePdfManager_requestLoadedStream() { - return new NotImplementedException(); - }, - - sendProgressiveData: function BasePdfManager_sendProgressiveData(chunk) { - return new NotImplementedException(); - }, - - updatePassword: function BasePdfManager_updatePassword(password) { - this.pdfDocument.xref.password = this.password = password; - if (this._passwordChangedCapability) { - this._passwordChangedCapability.resolve(); - } - }, - - passwordChanged: function BasePdfManager_passwordChanged() { - this._passwordChangedCapability = createPromiseCapability(); - return this._passwordChangedCapability.promise; - }, - - terminate: function BasePdfManager_terminate() { - return new NotImplementedException(); - } - }; - - return BasePdfManager; -})(); - -var LocalPdfManager = (function LocalPdfManagerClosure() { - function LocalPdfManager(docId, data, password) { - this._docId = docId; - var stream = new Stream(data); - this.pdfDocument = new PDFDocument(this, stream, password); - this._loadedStreamCapability = createPromiseCapability(); - this._loadedStreamCapability.resolve(stream); - } - - Util.inherit(LocalPdfManager, BasePdfManager, { - ensure: function LocalPdfManager_ensure(obj, prop, args) { - return new Promise(function (resolve, reject) { - try { - var value = obj[prop]; - var result; - if (typeof value === 'function') { - result = value.apply(obj, args); - } else { - result = value; - } - resolve(result); - } catch (e) { - reject(e); - } - }); - }, - - requestRange: function LocalPdfManager_requestRange(begin, end) { - return Promise.resolve(); - }, - - requestLoadedStream: function LocalPdfManager_requestLoadedStream() { - return; - }, - - onLoadedStream: function LocalPdfManager_onLoadedStream() { - return this._loadedStreamCapability.promise; - }, - - terminate: function LocalPdfManager_terminate() { - return; - } - }); - - return LocalPdfManager; -})(); - -var NetworkPdfManager = (function NetworkPdfManagerClosure() { - function NetworkPdfManager(docId, args, msgHandler) { - this._docId = docId; - this.msgHandler = msgHandler; - - var params = { - msgHandler: msgHandler, - httpHeaders: args.httpHeaders, - withCredentials: args.withCredentials, - chunkedViewerLoading: args.chunkedViewerLoading, - disableAutoFetch: args.disableAutoFetch, - initialData: args.initialData - }; - this.streamManager = new ChunkedStreamManager(args.length, - args.rangeChunkSize, - args.url, params); - this.pdfDocument = new PDFDocument(this, this.streamManager.getStream(), - args.password); - } - - Util.inherit(NetworkPdfManager, BasePdfManager, { - ensure: function NetworkPdfManager_ensure(obj, prop, args) { - var pdfManager = this; - - return new Promise(function (resolve, reject) { - function ensureHelper() { - try { - var result; - var value = obj[prop]; - if (typeof value === 'function') { - result = value.apply(obj, args); - } else { - result = value; - } - resolve(result); - } catch(e) { - if (!(e instanceof MissingDataException)) { - reject(e); - return; - } - pdfManager.streamManager.requestRange(e.begin, e.end). - then(ensureHelper, reject); - } - } - - ensureHelper(); - }); - }, - - requestRange: function NetworkPdfManager_requestRange(begin, end) { - return this.streamManager.requestRange(begin, end); - }, - - requestLoadedStream: function NetworkPdfManager_requestLoadedStream() { - this.streamManager.requestAllChunks(); - }, - - sendProgressiveData: - function NetworkPdfManager_sendProgressiveData(chunk) { - this.streamManager.onReceiveData({ chunk: chunk }); - }, - - onLoadedStream: function NetworkPdfManager_onLoadedStream() { - return this.streamManager.onLoadedStream(); - }, - - terminate: function NetworkPdfManager_terminate() { - this.streamManager.abort(); - } - }); - - return NetworkPdfManager; -})(); - -exports.LocalPdfManager = LocalPdfManager; -exports.NetworkPdfManager = NetworkPdfManager; -})); - - -(function (root, factory) { - { - factory((root.pdfjsCoreWorker = {}), root.pdfjsSharedUtil, - root.pdfjsCorePrimitives, root.pdfjsCorePdfManager, - root.pdfjsSharedGlobal); - } -}(this, function (exports, sharedUtil, corePrimitives, corePdfManager, - sharedGlobal) { - -var UNSUPPORTED_FEATURES = sharedUtil.UNSUPPORTED_FEATURES; -var InvalidPDFException = sharedUtil.InvalidPDFException; -var MessageHandler = sharedUtil.MessageHandler; -var MissingPDFException = sharedUtil.MissingPDFException; -var UnexpectedResponseException = sharedUtil.UnexpectedResponseException; -var PasswordException = sharedUtil.PasswordException; -var PasswordResponses = sharedUtil.PasswordResponses; -var UnknownErrorException = sharedUtil.UnknownErrorException; -var XRefParseException = sharedUtil.XRefParseException; -var createPromiseCapability = sharedUtil.createPromiseCapability; -var error = sharedUtil.error; -var info = sharedUtil.info; -var isInt = sharedUtil.isInt; -var warn = sharedUtil.warn; -var Ref = corePrimitives.Ref; -var LocalPdfManager = corePdfManager.LocalPdfManager; -var NetworkPdfManager = corePdfManager.NetworkPdfManager; -var globalScope = sharedGlobal.globalScope; -var PDFJS = sharedGlobal.PDFJS; - -var WorkerTask = (function WorkerTaskClosure() { - function WorkerTask(name) { - this.name = name; - this.terminated = false; - this._capability = createPromiseCapability(); - } - - WorkerTask.prototype = { - get finished() { - return this._capability.promise; - }, - - finish: function () { - this._capability.resolve(); - }, - - terminate: function () { - this.terminated = true; - }, - - ensureNotTerminated: function () { - if (this.terminated) { - throw new Error('Worker task was terminated'); - } - } - }; - - return WorkerTask; -})(); - -var WorkerMessageHandler = PDFJS.WorkerMessageHandler = { - setup: function wphSetup(handler, port) { - var testMessageProcessed = false; - handler.on('test', function wphSetupTest(data) { - if (testMessageProcessed) { - return; // we already processed 'test' message once - } - testMessageProcessed = true; - - // check if Uint8Array can be sent to worker - if (!(data instanceof Uint8Array)) { - handler.send('test', 'main', false); - return; - } - // making sure postMessage transfers are working - var supportTransfers = data[0] === 255; - handler.postMessageTransfers = supportTransfers; - // check if the response property is supported by xhr - var xhr = new XMLHttpRequest(); - var responseExists = 'response' in xhr; - // check if the property is actually implemented - try { - var dummy = xhr.responseType; - } catch (e) { - responseExists = false; - } - if (!responseExists) { - handler.send('test', false); - return; - } - handler.send('test', { - supportTypedArray: true, - supportTransfers: supportTransfers - }); - }); - - handler.on('GetDocRequest', function wphSetupDoc(data) { - return WorkerMessageHandler.createDocumentHandler(data, port); - }); - }, - createDocumentHandler: function wphCreateDocumentHandler(docParams, port) { - // This context is actually holds references on pdfManager and handler, - // until the latter is destroyed. - var pdfManager; - var terminated = false; - var cancelXHRs = null; - var WorkerTasks = []; - - var docId = docParams.docId; - var workerHandlerName = docParams.docId + '_worker'; - var handler = new MessageHandler(workerHandlerName, docId, port); - - function ensureNotTerminated() { - if (terminated) { - throw new Error('Worker was terminated'); - } - } - - function startWorkerTask(task) { - WorkerTasks.push(task); - } - - function finishWorkerTask(task) { - task.finish(); - var i = WorkerTasks.indexOf(task); - WorkerTasks.splice(i, 1); - } - - function loadDocument(recoveryMode) { - var loadDocumentCapability = createPromiseCapability(); - - var parseSuccess = function parseSuccess() { - var numPagesPromise = pdfManager.ensureDoc('numPages'); - var fingerprintPromise = pdfManager.ensureDoc('fingerprint'); - var encryptedPromise = pdfManager.ensureXRef('encrypt'); - Promise.all([numPagesPromise, fingerprintPromise, - encryptedPromise]).then(function onDocReady(results) { - var doc = { - numPages: results[0], - fingerprint: results[1], - encrypted: !!results[2], - }; - loadDocumentCapability.resolve(doc); - }, - parseFailure); - }; - - var parseFailure = function parseFailure(e) { - loadDocumentCapability.reject(e); - }; - - pdfManager.ensureDoc('checkHeader', []).then(function() { - pdfManager.ensureDoc('parseStartXRef', []).then(function() { - pdfManager.ensureDoc('parse', [recoveryMode]).then( - parseSuccess, parseFailure); - }, parseFailure); - }, parseFailure); - - return loadDocumentCapability.promise; - } - - function getPdfManager(data) { - var pdfManagerCapability = createPromiseCapability(); - var pdfManager; - - var source = data.source; - var disableRange = data.disableRange; - if (source.data) { - try { - pdfManager = new LocalPdfManager(docId, source.data, source.password); - pdfManagerCapability.resolve(pdfManager); - } catch (ex) { - pdfManagerCapability.reject(ex); - } - return pdfManagerCapability.promise; - } else if (source.chunkedViewerLoading) { - try { - pdfManager = new NetworkPdfManager(docId, source, handler); - pdfManagerCapability.resolve(pdfManager); - } catch (ex) { - pdfManagerCapability.reject(ex); - } - return pdfManagerCapability.promise; - } - - var networkManager = new NetworkManager(source.url, { - httpHeaders: source.httpHeaders, - withCredentials: source.withCredentials - }); - var cachedChunks = []; - var fullRequestXhrId = networkManager.requestFull({ - onHeadersReceived: function onHeadersReceived() { - if (disableRange) { - return; - } - - var fullRequestXhr = networkManager.getRequestXhr(fullRequestXhrId); - if (fullRequestXhr.getResponseHeader('Accept-Ranges') !== 'bytes') { - return; - } - - var contentEncoding = - fullRequestXhr.getResponseHeader('Content-Encoding') || 'identity'; - if (contentEncoding !== 'identity') { - return; - } - - var length = fullRequestXhr.getResponseHeader('Content-Length'); - length = parseInt(length, 10); - if (!isInt(length)) { - return; - } - source.length = length; - if (length <= 2 * source.rangeChunkSize) { - // The file size is smaller than the size of two chunks, so it does - // not make any sense to abort the request and retry with a range - // request. - return; - } - - if (networkManager.isStreamingRequest(fullRequestXhrId)) { - // We can continue fetching when progressive loading is enabled, - // and we don't need the autoFetch feature. - source.disableAutoFetch = true; - } else { - // NOTE: by cancelling the full request, and then issuing range - // requests, there will be an issue for sites where you can only - // request the pdf once. However, if this is the case, then the - // server should not be returning that it can support range - // requests. - networkManager.abortRequest(fullRequestXhrId); - } - - try { - pdfManager = new NetworkPdfManager(docId, source, handler); - pdfManagerCapability.resolve(pdfManager); - } catch (ex) { - pdfManagerCapability.reject(ex); - } - cancelXHRs = null; - }, - - onProgressiveData: source.disableStream ? null : - function onProgressiveData(chunk) { - if (!pdfManager) { - cachedChunks.push(chunk); - return; - } - pdfManager.sendProgressiveData(chunk); - }, - - onDone: function onDone(args) { - if (pdfManager) { - return; // already processed - } - - var pdfFile; - if (args === null) { - // TODO add some streaming manager, e.g. for unknown length files. - // The data was returned in the onProgressiveData, combining... - var pdfFileLength = 0, pos = 0; - cachedChunks.forEach(function (chunk) { - pdfFileLength += chunk.byteLength; - }); - if (source.length && pdfFileLength !== source.length) { - warn('reported HTTP length is different from actual'); - } - var pdfFileArray = new Uint8Array(pdfFileLength); - cachedChunks.forEach(function (chunk) { - pdfFileArray.set(new Uint8Array(chunk), pos); - pos += chunk.byteLength; - }); - pdfFile = pdfFileArray.buffer; - } else { - pdfFile = args.chunk; - } - - // the data is array, instantiating directly from it - try { - pdfManager = new LocalPdfManager(docId, pdfFile, source.password); - pdfManagerCapability.resolve(pdfManager); - } catch (ex) { - pdfManagerCapability.reject(ex); - } - cancelXHRs = null; - }, - - onError: function onError(status) { - var exception; - if (status === 404 || status === 0 && /^file:/.test(source.url)) { - exception = new MissingPDFException('Missing PDF "' + - source.url + '".'); - handler.send('MissingPDF', exception); - } else { - exception = new UnexpectedResponseException( - 'Unexpected server response (' + status + - ') while retrieving PDF "' + source.url + '".', status); - handler.send('UnexpectedResponse', exception); - } - cancelXHRs = null; - }, - - onProgress: function onProgress(evt) { - handler.send('DocProgress', { - loaded: evt.loaded, - total: evt.lengthComputable ? evt.total : source.length - }); - } - }); - - cancelXHRs = function () { - networkManager.abortRequest(fullRequestXhrId); - }; - - return pdfManagerCapability.promise; - } - - var setupDoc = function(data) { - var onSuccess = function(doc) { - ensureNotTerminated(); - handler.send('GetDoc', { pdfInfo: doc }); - }; - - var onFailure = function(e) { - if (e instanceof PasswordException) { - if (e.code === PasswordResponses.NEED_PASSWORD) { - handler.send('NeedPassword', e); - } else if (e.code === PasswordResponses.INCORRECT_PASSWORD) { - handler.send('IncorrectPassword', e); - } - } else if (e instanceof InvalidPDFException) { - handler.send('InvalidPDF', e); - } else if (e instanceof MissingPDFException) { - handler.send('MissingPDF', e); - } else if (e instanceof UnexpectedResponseException) { - handler.send('UnexpectedResponse', e); - } else { - handler.send('UnknownError', - new UnknownErrorException(e.message, e.toString())); - } - }; - - ensureNotTerminated(); - - PDFJS.maxImageSize = data.maxImageSize === undefined ? - -1 : data.maxImageSize; - PDFJS.disableFontFace = data.disableFontFace; - PDFJS.disableCreateObjectURL = data.disableCreateObjectURL; - PDFJS.verbosity = data.verbosity; - PDFJS.cMapUrl = data.cMapUrl === undefined ? - null : data.cMapUrl; - PDFJS.cMapPacked = data.cMapPacked === true; - - getPdfManager(data).then(function (newPdfManager) { - if (terminated) { - // We were in a process of setting up the manager, but it got - // terminated in the middle. - newPdfManager.terminate(); - throw new Error('Worker was terminated'); - } - - pdfManager = newPdfManager; - handler.send('PDFManagerReady', null); - pdfManager.onLoadedStream().then(function(stream) { - handler.send('DataLoaded', { length: stream.bytes.byteLength }); - }); - }).then(function pdfManagerReady() { - ensureNotTerminated(); - - loadDocument(false).then(onSuccess, function loadFailure(ex) { - ensureNotTerminated(); - - // Try again with recoveryMode == true - if (!(ex instanceof XRefParseException)) { - if (ex instanceof PasswordException) { - // after password exception prepare to receive a new password - // to repeat loading - pdfManager.passwordChanged().then(pdfManagerReady); - } - - onFailure(ex); - return; - } - - pdfManager.requestLoadedStream(); - pdfManager.onLoadedStream().then(function() { - ensureNotTerminated(); - - loadDocument(true).then(onSuccess, onFailure); - }); - }, onFailure); - }, onFailure); - }; - - handler.on('GetPage', function wphSetupGetPage(data) { - return pdfManager.getPage(data.pageIndex).then(function(page) { - var rotatePromise = pdfManager.ensure(page, 'rotate'); - var refPromise = pdfManager.ensure(page, 'ref'); - var viewPromise = pdfManager.ensure(page, 'view'); - - return Promise.all([rotatePromise, refPromise, viewPromise]).then( - function(results) { - return { - rotate: results[0], - ref: results[1], - view: results[2] - }; - }); - }); - }); - - handler.on('GetPageIndex', function wphSetupGetPageIndex(data) { - var ref = new Ref(data.ref.num, data.ref.gen); - var catalog = pdfManager.pdfDocument.catalog; - return catalog.getPageIndex(ref); - }); - - handler.on('GetDestinations', - function wphSetupGetDestinations(data) { - return pdfManager.ensureCatalog('destinations'); - } - ); - - handler.on('GetDestination', - function wphSetupGetDestination(data) { - return pdfManager.ensureCatalog('getDestination', [data.id]); - } - ); - - handler.on('GetPageLabels', - function wphSetupGetPageLabels(data) { - return pdfManager.ensureCatalog('pageLabels'); - } - ); - - handler.on('GetAttachments', - function wphSetupGetAttachments(data) { - return pdfManager.ensureCatalog('attachments'); - } - ); - - handler.on('GetJavaScript', - function wphSetupGetJavaScript(data) { - return pdfManager.ensureCatalog('javaScript'); - } - ); - - handler.on('GetOutline', - function wphSetupGetOutline(data) { - return pdfManager.ensureCatalog('documentOutline'); - } - ); - - handler.on('GetMetadata', - function wphSetupGetMetadata(data) { - return Promise.all([pdfManager.ensureDoc('documentInfo'), - pdfManager.ensureCatalog('metadata')]); - } - ); - - handler.on('GetData', function wphSetupGetData(data) { - pdfManager.requestLoadedStream(); - return pdfManager.onLoadedStream().then(function(stream) { - return stream.bytes; - }); - }); - - handler.on('GetStats', - function wphSetupGetStats(data) { - return pdfManager.pdfDocument.xref.stats; - } - ); - - handler.on('UpdatePassword', function wphSetupUpdatePassword(data) { - pdfManager.updatePassword(data); - }); - - handler.on('GetAnnotations', function wphSetupGetAnnotations(data) { - return pdfManager.getPage(data.pageIndex).then(function(page) { - return pdfManager.ensure(page, 'getAnnotationsData', [data.intent]); - }); - }); - - handler.on('RenderPageRequest', function wphSetupRenderPage(data) { - var pageIndex = data.pageIndex; - pdfManager.getPage(pageIndex).then(function(page) { - var task = new WorkerTask('RenderPageRequest: page ' + pageIndex); - startWorkerTask(task); - - var pageNum = pageIndex + 1; - var start = Date.now(); - // Pre compile the pdf page and fetch the fonts/images. - page.getOperatorList(handler, task, data.intent).then( - function(operatorList) { - finishWorkerTask(task); - - info('page=' + pageNum + ' - getOperatorList: time=' + - (Date.now() - start) + 'ms, len=' + operatorList.totalLength); - }, function(e) { - finishWorkerTask(task); - if (task.terminated) { - return; // ignoring errors from the terminated thread - } - - // For compatibility with older behavior, generating unknown - // unsupported feature notification on errors. - handler.send('UnsupportedFeature', - {featureId: UNSUPPORTED_FEATURES.unknown}); - - var minimumStackMessage = - 'worker.js: while trying to getPage() and getOperatorList()'; - - var wrappedException; - - // Turn the error into an obj that can be serialized - if (typeof e === 'string') { - wrappedException = { - message: e, - stack: minimumStackMessage - }; - } else if (typeof e === 'object') { - wrappedException = { - message: e.message || e.toString(), - stack: e.stack || minimumStackMessage - }; - } else { - wrappedException = { - message: 'Unknown exception type: ' + (typeof e), - stack: minimumStackMessage - }; - } - - handler.send('PageError', { - pageNum: pageNum, - error: wrappedException, - intent: data.intent - }); - }); - }); - }, this); - - handler.on('GetTextContent', function wphExtractText(data) { - var pageIndex = data.pageIndex; - var normalizeWhitespace = data.normalizeWhitespace; - return pdfManager.getPage(pageIndex).then(function(page) { - var task = new WorkerTask('GetTextContent: page ' + pageIndex); - startWorkerTask(task); - var pageNum = pageIndex + 1; - var start = Date.now(); - return page.extractTextContent(task, normalizeWhitespace).then( - function(textContent) { - finishWorkerTask(task); - info('text indexing: page=' + pageNum + ' - time=' + - (Date.now() - start) + 'ms'); - return textContent; - }, function (reason) { - finishWorkerTask(task); - if (task.terminated) { - return; // ignoring errors from the terminated thread - } - throw reason; - }); - }); - }); - - handler.on('Cleanup', function wphCleanup(data) { - return pdfManager.cleanup(); - }); - - handler.on('Terminate', function wphTerminate(data) { - terminated = true; - if (pdfManager) { - pdfManager.terminate(); - pdfManager = null; - } - if (cancelXHRs) { - cancelXHRs(); - } - - var waitOn = []; - WorkerTasks.forEach(function (task) { - waitOn.push(task.finished); - task.terminate(); - }); - - return Promise.all(waitOn).then(function () { - // Notice that even if we destroying handler, resolved response promise - // must be sent back. - handler.destroy(); - handler = null; - }); - }); - - handler.on('Ready', function wphReady(data) { - setupDoc(docParams); - docParams = null; // we don't need docParams anymore -- saving memory. - }); - return workerHandlerName; - } -}; - -function initializeWorker() { - if (!('console' in globalScope)) { - var consoleTimer = {}; - - var workerConsole = { - log: function log() { - var args = Array.prototype.slice.call(arguments); - globalScope.postMessage({ - targetName: 'main', - action: 'console_log', - data: args - }); - }, - - error: function error() { - var args = Array.prototype.slice.call(arguments); - globalScope.postMessage({ - targetName: 'main', - action: 'console_error', - data: args - }); - throw 'pdf.js execution error'; - }, - - time: function time(name) { - consoleTimer[name] = Date.now(); - }, - - timeEnd: function timeEnd(name) { - var time = consoleTimer[name]; - if (!time) { - error('Unknown timer name ' + name); - } - this.log('Timer:', name, Date.now() - time); - } - }; - - globalScope.console = workerConsole; - } - - var handler = new MessageHandler('worker', 'main', self); - WorkerMessageHandler.setup(handler, self); - handler.send('ready', null); -} - -// Worker thread (and not node.js)? -if (typeof window === 'undefined' && - !(typeof module !== 'undefined' && module.require)) { - initializeWorker(); -} - -exports.WorkerTask = WorkerTask; -exports.WorkerMessageHandler = WorkerMessageHandler; -})); - - - }).call(pdfjsLibs); - - exports.PDFJS = pdfjsLibs.pdfjsSharedGlobal.PDFJS; - -})); - - diff --git a/public/plugins/pdfjs-1.4.20/web/compatibility.js b/public/plugins/pdfjs-1.4.20/web/compatibility.js deleted file mode 100644 index 1119a2742..000000000 --- a/public/plugins/pdfjs-1.4.20/web/compatibility.js +++ /dev/null @@ -1,593 +0,0 @@ -/* Copyright 2012 Mozilla Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* globals VBArray, PDFJS */ - -'use strict'; - -// Initializing PDFJS global object here, it case if we need to change/disable -// some PDF.js features, e.g. range requests -if (typeof PDFJS === 'undefined') { - (typeof window !== 'undefined' ? window : this).PDFJS = {}; -} - -// Checking if the typed arrays are supported -// Support: iOS<6.0 (subarray), IE<10, Android<4.0 -(function checkTypedArrayCompatibility() { - if (typeof Uint8Array !== 'undefined') { - // Support: iOS<6.0 - if (typeof Uint8Array.prototype.subarray === 'undefined') { - Uint8Array.prototype.subarray = function subarray(start, end) { - return new Uint8Array(this.slice(start, end)); - }; - Float32Array.prototype.subarray = function subarray(start, end) { - return new Float32Array(this.slice(start, end)); - }; - } - - // Support: Android<4.1 - if (typeof Float64Array === 'undefined') { - window.Float64Array = Float32Array; - } - return; - } - - function subarray(start, end) { - return new TypedArray(this.slice(start, end)); - } - - function setArrayOffset(array, offset) { - if (arguments.length < 2) { - offset = 0; - } - for (var i = 0, n = array.length; i < n; ++i, ++offset) { - this[offset] = array[i] & 0xFF; - } - } - - function TypedArray(arg1) { - var result, i, n; - if (typeof arg1 === 'number') { - result = []; - for (i = 0; i < arg1; ++i) { - result[i] = 0; - } - } else if ('slice' in arg1) { - result = arg1.slice(0); - } else { - result = []; - for (i = 0, n = arg1.length; i < n; ++i) { - result[i] = arg1[i]; - } - } - - result.subarray = subarray; - result.buffer = result; - result.byteLength = result.length; - result.set = setArrayOffset; - - if (typeof arg1 === 'object' && arg1.buffer) { - result.buffer = arg1.buffer; - } - return result; - } - - window.Uint8Array = TypedArray; - window.Int8Array = TypedArray; - - // we don't need support for set, byteLength for 32-bit array - // so we can use the TypedArray as well - window.Uint32Array = TypedArray; - window.Int32Array = TypedArray; - window.Uint16Array = TypedArray; - window.Float32Array = TypedArray; - window.Float64Array = TypedArray; -})(); - -// URL = URL || webkitURL -// Support: Safari<7, Android 4.2+ -(function normalizeURLObject() { - if (!window.URL) { - window.URL = window.webkitURL; - } -})(); - -// Object.defineProperty()? -// Support: Android<4.0, Safari<5.1 -(function checkObjectDefinePropertyCompatibility() { - if (typeof Object.defineProperty !== 'undefined') { - var definePropertyPossible = true; - try { - // some browsers (e.g. safari) cannot use defineProperty() on DOM objects - // and thus the native version is not sufficient - Object.defineProperty(new Image(), 'id', { value: 'test' }); - // ... another test for android gb browser for non-DOM objects - var Test = function Test() {}; - Test.prototype = { get id() { } }; - Object.defineProperty(new Test(), 'id', - { value: '', configurable: true, enumerable: true, writable: false }); - } catch (e) { - definePropertyPossible = false; - } - if (definePropertyPossible) { - return; - } - } - - Object.defineProperty = function objectDefineProperty(obj, name, def) { - delete obj[name]; - if ('get' in def) { - obj.__defineGetter__(name, def['get']); - } - if ('set' in def) { - obj.__defineSetter__(name, def['set']); - } - if ('value' in def) { - obj.__defineSetter__(name, function objectDefinePropertySetter(value) { - this.__defineGetter__(name, function objectDefinePropertyGetter() { - return value; - }); - return value; - }); - obj[name] = def.value; - } - }; -})(); - - -// No XMLHttpRequest#response? -// Support: IE<11, Android <4.0 -(function checkXMLHttpRequestResponseCompatibility() { - var xhrPrototype = XMLHttpRequest.prototype; - var xhr = new XMLHttpRequest(); - if (!('overrideMimeType' in xhr)) { - // IE10 might have response, but not overrideMimeType - // Support: IE10 - Object.defineProperty(xhrPrototype, 'overrideMimeType', { - value: function xmlHttpRequestOverrideMimeType(mimeType) {} - }); - } - if ('responseType' in xhr) { - return; - } - - // The worker will be using XHR, so we can save time and disable worker. - PDFJS.disableWorker = true; - - Object.defineProperty(xhrPrototype, 'responseType', { - get: function xmlHttpRequestGetResponseType() { - return this._responseType || 'text'; - }, - set: function xmlHttpRequestSetResponseType(value) { - if (value === 'text' || value === 'arraybuffer') { - this._responseType = value; - if (value === 'arraybuffer' && - typeof this.overrideMimeType === 'function') { - this.overrideMimeType('text/plain; charset=x-user-defined'); - } - } - } - }); - - // Support: IE9 - if (typeof VBArray !== 'undefined') { - Object.defineProperty(xhrPrototype, 'response', { - get: function xmlHttpRequestResponseGet() { - if (this.responseType === 'arraybuffer') { - return new Uint8Array(new VBArray(this.responseBody).toArray()); - } else { - return this.responseText; - } - } - }); - return; - } - - Object.defineProperty(xhrPrototype, 'response', { - get: function xmlHttpRequestResponseGet() { - if (this.responseType !== 'arraybuffer') { - return this.responseText; - } - var text = this.responseText; - var i, n = text.length; - var result = new Uint8Array(n); - for (i = 0; i < n; ++i) { - result[i] = text.charCodeAt(i) & 0xFF; - } - return result.buffer; - } - }); -})(); - -// window.btoa (base64 encode function) ? -// Support: IE<10 -(function checkWindowBtoaCompatibility() { - if ('btoa' in window) { - return; - } - - var digits = - 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; - - window.btoa = function windowBtoa(chars) { - var buffer = ''; - var i, n; - for (i = 0, n = chars.length; i < n; i += 3) { - var b1 = chars.charCodeAt(i) & 0xFF; - var b2 = chars.charCodeAt(i + 1) & 0xFF; - var b3 = chars.charCodeAt(i + 2) & 0xFF; - var d1 = b1 >> 2, d2 = ((b1 & 3) << 4) | (b2 >> 4); - var d3 = i + 1 < n ? ((b2 & 0xF) << 2) | (b3 >> 6) : 64; - var d4 = i + 2 < n ? (b3 & 0x3F) : 64; - buffer += (digits.charAt(d1) + digits.charAt(d2) + - digits.charAt(d3) + digits.charAt(d4)); - } - return buffer; - }; -})(); - -// window.atob (base64 encode function)? -// Support: IE<10 -(function checkWindowAtobCompatibility() { - if ('atob' in window) { - return; - } - - // https://github.com/davidchambers/Base64.js - var digits = - 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; - window.atob = function (input) { - input = input.replace(/=+$/, ''); - if (input.length % 4 === 1) { - throw new Error('bad atob input'); - } - for ( - // initialize result and counters - var bc = 0, bs, buffer, idx = 0, output = ''; - // get next character - buffer = input.charAt(idx++); - // character found in table? - // initialize bit storage and add its ascii value - ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer, - // and if not first of each 4 characters, - // convert the first 8 bits to one ascii character - bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0 - ) { - // try to find character in table (0-63, not found => -1) - buffer = digits.indexOf(buffer); - } - return output; - }; -})(); - -// Function.prototype.bind? -// Support: Android<4.0, iOS<6.0 -(function checkFunctionPrototypeBindCompatibility() { - if (typeof Function.prototype.bind !== 'undefined') { - return; - } - - Function.prototype.bind = function functionPrototypeBind(obj) { - var fn = this, headArgs = Array.prototype.slice.call(arguments, 1); - var bound = function functionPrototypeBindBound() { - var args = headArgs.concat(Array.prototype.slice.call(arguments)); - return fn.apply(obj, args); - }; - return bound; - }; -})(); - -// HTMLElement dataset property -// Support: IE<11, Safari<5.1, Android<4.0 -(function checkDatasetProperty() { - var div = document.createElement('div'); - if ('dataset' in div) { - return; // dataset property exists - } - - Object.defineProperty(HTMLElement.prototype, 'dataset', { - get: function() { - if (this._dataset) { - return this._dataset; - } - - var dataset = {}; - for (var j = 0, jj = this.attributes.length; j < jj; j++) { - var attribute = this.attributes[j]; - if (attribute.name.substring(0, 5) !== 'data-') { - continue; - } - var key = attribute.name.substring(5).replace(/\-([a-z])/g, - function(all, ch) { - return ch.toUpperCase(); - }); - dataset[key] = attribute.value; - } - - Object.defineProperty(this, '_dataset', { - value: dataset, - writable: false, - enumerable: false - }); - return dataset; - }, - enumerable: true - }); -})(); - -// HTMLElement classList property -// Support: IE<10, Android<4.0, iOS<5.0 -(function checkClassListProperty() { - var div = document.createElement('div'); - if ('classList' in div) { - return; // classList property exists - } - - function changeList(element, itemName, add, remove) { - var s = element.className || ''; - var list = s.split(/\s+/g); - if (list[0] === '') { - list.shift(); - } - var index = list.indexOf(itemName); - if (index < 0 && add) { - list.push(itemName); - } - if (index >= 0 && remove) { - list.splice(index, 1); - } - element.className = list.join(' '); - return (index >= 0); - } - - var classListPrototype = { - add: function(name) { - changeList(this.element, name, true, false); - }, - contains: function(name) { - return changeList(this.element, name, false, false); - }, - remove: function(name) { - changeList(this.element, name, false, true); - }, - toggle: function(name) { - changeList(this.element, name, true, true); - } - }; - - Object.defineProperty(HTMLElement.prototype, 'classList', { - get: function() { - if (this._classList) { - return this._classList; - } - - var classList = Object.create(classListPrototype, { - element: { - value: this, - writable: false, - enumerable: true - } - }); - Object.defineProperty(this, '_classList', { - value: classList, - writable: false, - enumerable: false - }); - return classList; - }, - enumerable: true - }); -})(); - -// Check console compatibility -// In older IE versions the console object is not available -// unless console is open. -// Support: IE<10 -(function checkConsoleCompatibility() { - if (!('console' in window)) { - window.console = { - log: function() {}, - error: function() {}, - warn: function() {} - }; - } else if (!('bind' in console.log)) { - // native functions in IE9 might not have bind - console.log = (function(fn) { - return function(msg) { return fn(msg); }; - })(console.log); - console.error = (function(fn) { - return function(msg) { return fn(msg); }; - })(console.error); - console.warn = (function(fn) { - return function(msg) { return fn(msg); }; - })(console.warn); - } -})(); - -// Check onclick compatibility in Opera -// Support: Opera<15 -(function checkOnClickCompatibility() { - // workaround for reported Opera bug DSK-354448: - // onclick fires on disabled buttons with opaque content - function ignoreIfTargetDisabled(event) { - if (isDisabled(event.target)) { - event.stopPropagation(); - } - } - function isDisabled(node) { - return node.disabled || (node.parentNode && isDisabled(node.parentNode)); - } - if (navigator.userAgent.indexOf('Opera') !== -1) { - // use browser detection since we cannot feature-check this bug - document.addEventListener('click', ignoreIfTargetDisabled, true); - } -})(); - -// Checks if possible to use URL.createObjectURL() -// Support: IE -(function checkOnBlobSupport() { - // sometimes IE loosing the data created with createObjectURL(), see #3977 - if (navigator.userAgent.indexOf('Trident') >= 0) { - PDFJS.disableCreateObjectURL = true; - } -})(); - -// Checks if navigator.language is supported -(function checkNavigatorLanguage() { - if ('language' in navigator) { - return; - } - PDFJS.locale = navigator.userLanguage || 'en-US'; -})(); - -(function checkRangeRequests() { - // Safari has issues with cached range requests see: - // https://github.com/mozilla/pdf.js/issues/3260 - // Last tested with version 6.0.4. - // Support: Safari 6.0+ - var isSafari = Object.prototype.toString.call( - window.HTMLElement).indexOf('Constructor') > 0; - - // Older versions of Android (pre 3.0) has issues with range requests, see: - // https://github.com/mozilla/pdf.js/issues/3381. - // Make sure that we only match webkit-based Android browsers, - // since Firefox/Fennec works as expected. - // Support: Android<3.0 - var regex = /Android\s[0-2][^\d]/; - var isOldAndroid = regex.test(navigator.userAgent); - - // Range requests are broken in Chrome 39 and 40, https://crbug.com/442318 - var isChromeWithRangeBug = /Chrome\/(39|40)\./.test(navigator.userAgent); - - if (isSafari || isOldAndroid || isChromeWithRangeBug) { - PDFJS.disableRange = true; - PDFJS.disableStream = true; - } -})(); - -// Check if the browser supports manipulation of the history. -// Support: IE<10, Android<4.2 -(function checkHistoryManipulation() { - // Android 2.x has so buggy pushState support that it was removed in - // Android 3.0 and restored as late as in Android 4.2. - // Support: Android 2.x - if (!history.pushState || navigator.userAgent.indexOf('Android 2.') >= 0) { - PDFJS.disableHistory = true; - } -})(); - -// Support: IE<11, Chrome<21, Android<4.4, Safari<6 -(function checkSetPresenceInImageData() { - // IE < 11 will use window.CanvasPixelArray which lacks set function. - if (window.CanvasPixelArray) { - if (typeof window.CanvasPixelArray.prototype.set !== 'function') { - window.CanvasPixelArray.prototype.set = function(arr) { - for (var i = 0, ii = this.length; i < ii; i++) { - this[i] = arr[i]; - } - }; - } - } else { - // Old Chrome and Android use an inaccessible CanvasPixelArray prototype. - // Because we cannot feature detect it, we rely on user agent parsing. - var polyfill = false, versionMatch; - if (navigator.userAgent.indexOf('Chrom') >= 0) { - versionMatch = navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./); - // Chrome < 21 lacks the set function. - polyfill = versionMatch && parseInt(versionMatch[2]) < 21; - } else if (navigator.userAgent.indexOf('Android') >= 0) { - // Android < 4.4 lacks the set function. - // Android >= 4.4 will contain Chrome in the user agent, - // thus pass the Chrome check above and not reach this block. - polyfill = /Android\s[0-4][^\d]/g.test(navigator.userAgent); - } else if (navigator.userAgent.indexOf('Safari') >= 0) { - versionMatch = navigator.userAgent. - match(/Version\/([0-9]+)\.([0-9]+)\.([0-9]+) Safari\//); - // Safari < 6 lacks the set function. - polyfill = versionMatch && parseInt(versionMatch[1]) < 6; - } - - if (polyfill) { - var contextPrototype = window.CanvasRenderingContext2D.prototype; - var createImageData = contextPrototype.createImageData; - contextPrototype.createImageData = function(w, h) { - var imageData = createImageData.call(this, w, h); - imageData.data.set = function(arr) { - for (var i = 0, ii = this.length; i < ii; i++) { - this[i] = arr[i]; - } - }; - return imageData; - }; - // this closure will be kept referenced, so clear its vars - contextPrototype = null; - } - } -})(); - -// Support: IE<10, Android<4.0, iOS -(function checkRequestAnimationFrame() { - function fakeRequestAnimationFrame(callback) { - window.setTimeout(callback, 20); - } - - var isIOS = /(iPad|iPhone|iPod)/g.test(navigator.userAgent); - if (isIOS) { - // requestAnimationFrame on iOS is broken, replacing with fake one. - window.requestAnimationFrame = fakeRequestAnimationFrame; - return; - } - if ('requestAnimationFrame' in window) { - return; - } - window.requestAnimationFrame = - window.mozRequestAnimationFrame || - window.webkitRequestAnimationFrame || - fakeRequestAnimationFrame; -})(); - -(function checkCanvasSizeLimitation() { - var isIOS = /(iPad|iPhone|iPod)/g.test(navigator.userAgent); - var isAndroid = /Android/g.test(navigator.userAgent); - if (isIOS || isAndroid) { - // 5MP - PDFJS.maxCanvasPixels = 5242880; - } -})(); - -// Disable fullscreen support for certain problematic configurations. -// Support: IE11+ (when embedded). -(function checkFullscreenSupport() { - var isEmbeddedIE = (navigator.userAgent.indexOf('Trident') >= 0 && - window.parent !== window); - if (isEmbeddedIE) { - PDFJS.disableFullscreen = true; - } -})(); - -// Provides document.currentScript support -// Support: IE, Chrome<29. -(function checkCurrentScript() { - if ('currentScript' in document) { - return; - } - Object.defineProperty(document, 'currentScript', { - get: function () { - var scripts = document.getElementsByTagName('script'); - return scripts[scripts.length - 1]; - }, - enumerable: true, - configurable: true - }); -})(); diff --git a/public/plugins/pdfjs-1.4.20/web/debugger.js b/public/plugins/pdfjs-1.4.20/web/debugger.js deleted file mode 100644 index 9c35b63d7..000000000 --- a/public/plugins/pdfjs-1.4.20/web/debugger.js +++ /dev/null @@ -1,618 +0,0 @@ -/* Copyright 2012 Mozilla Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* globals PDFJS */ - -'use strict'; - -var FontInspector = (function FontInspectorClosure() { - var fonts; - var active = false; - var fontAttribute = 'data-font-name'; - function removeSelection() { - var divs = document.querySelectorAll('div[' + fontAttribute + ']'); - for (var i = 0, ii = divs.length; i < ii; ++i) { - var div = divs[i]; - div.className = ''; - } - } - function resetSelection() { - var divs = document.querySelectorAll('div[' + fontAttribute + ']'); - for (var i = 0, ii = divs.length; i < ii; ++i) { - var div = divs[i]; - div.className = 'debuggerHideText'; - } - } - function selectFont(fontName, show) { - var divs = document.querySelectorAll('div[' + fontAttribute + '=' + - fontName + ']'); - for (var i = 0, ii = divs.length; i < ii; ++i) { - var div = divs[i]; - div.className = show ? 'debuggerShowText' : 'debuggerHideText'; - } - } - function textLayerClick(e) { - if (!e.target.dataset.fontName || - e.target.tagName.toUpperCase() !== 'DIV') { - return; - } - var fontName = e.target.dataset.fontName; - var selects = document.getElementsByTagName('input'); - for (var i = 0; i < selects.length; ++i) { - var select = selects[i]; - if (select.dataset.fontName !== fontName) { - continue; - } - select.checked = !select.checked; - selectFont(fontName, select.checked); - select.scrollIntoView(); - } - } - return { - // Properties/functions needed by PDFBug. - id: 'FontInspector', - name: 'Font Inspector', - panel: null, - manager: null, - init: function init() { - var panel = this.panel; - panel.setAttribute('style', 'padding: 5px;'); - var tmp = document.createElement('button'); - tmp.addEventListener('click', resetSelection); - tmp.textContent = 'Refresh'; - panel.appendChild(tmp); - - fonts = document.createElement('div'); - panel.appendChild(fonts); - }, - cleanup: function cleanup() { - fonts.textContent = ''; - }, - enabled: false, - get active() { - return active; - }, - set active(value) { - active = value; - if (active) { - document.body.addEventListener('click', textLayerClick, true); - resetSelection(); - } else { - document.body.removeEventListener('click', textLayerClick, true); - removeSelection(); - } - }, - // FontInspector specific functions. - fontAdded: function fontAdded(fontObj, url) { - function properties(obj, list) { - var moreInfo = document.createElement('table'); - for (var i = 0; i < list.length; i++) { - var tr = document.createElement('tr'); - var td1 = document.createElement('td'); - td1.textContent = list[i]; - tr.appendChild(td1); - var td2 = document.createElement('td'); - td2.textContent = obj[list[i]].toString(); - tr.appendChild(td2); - moreInfo.appendChild(tr); - } - return moreInfo; - } - var moreInfo = properties(fontObj, ['name', 'type']); - var fontName = fontObj.loadedName; - var font = document.createElement('div'); - var name = document.createElement('span'); - name.textContent = fontName; - var download = document.createElement('a'); - if (url) { - url = /url\(['"]?([^\)"']+)/.exec(url); - download.href = url[1]; - } else if (fontObj.data) { - url = URL.createObjectURL(new Blob([fontObj.data], { - type: fontObj.mimeType - })); - download.href = url; - } - download.textContent = 'Download'; - var logIt = document.createElement('a'); - logIt.href = ''; - logIt.textContent = 'Log'; - logIt.addEventListener('click', function(event) { - event.preventDefault(); - console.log(fontObj); - }); - var select = document.createElement('input'); - select.setAttribute('type', 'checkbox'); - select.dataset.fontName = fontName; - select.addEventListener('click', (function(select, fontName) { - return (function() { - selectFont(fontName, select.checked); - }); - })(select, fontName)); - font.appendChild(select); - font.appendChild(name); - font.appendChild(document.createTextNode(' ')); - font.appendChild(download); - font.appendChild(document.createTextNode(' ')); - font.appendChild(logIt); - font.appendChild(moreInfo); - fonts.appendChild(font); - // Somewhat of a hack, should probably add a hook for when the text layer - // is done rendering. - setTimeout(function() { - if (this.active) { - resetSelection(); - } - }.bind(this), 2000); - } - }; -})(); - -// Manages all the page steppers. -var StepperManager = (function StepperManagerClosure() { - var steppers = []; - var stepperDiv = null; - var stepperControls = null; - var stepperChooser = null; - var breakPoints = {}; - return { - // Properties/functions needed by PDFBug. - id: 'Stepper', - name: 'Stepper', - panel: null, - manager: null, - init: function init() { - var self = this; - this.panel.setAttribute('style', 'padding: 5px;'); - stepperControls = document.createElement('div'); - stepperChooser = document.createElement('select'); - stepperChooser.addEventListener('change', function(event) { - self.selectStepper(this.value); - }); - stepperControls.appendChild(stepperChooser); - stepperDiv = document.createElement('div'); - this.panel.appendChild(stepperControls); - this.panel.appendChild(stepperDiv); - if (sessionStorage.getItem('pdfjsBreakPoints')) { - breakPoints = JSON.parse(sessionStorage.getItem('pdfjsBreakPoints')); - } - }, - cleanup: function cleanup() { - stepperChooser.textContent = ''; - stepperDiv.textContent = ''; - steppers = []; - }, - enabled: false, - active: false, - // Stepper specific functions. - create: function create(pageIndex) { - var debug = document.createElement('div'); - debug.id = 'stepper' + pageIndex; - debug.setAttribute('hidden', true); - debug.className = 'stepper'; - stepperDiv.appendChild(debug); - var b = document.createElement('option'); - b.textContent = 'Page ' + (pageIndex + 1); - b.value = pageIndex; - stepperChooser.appendChild(b); - var initBreakPoints = breakPoints[pageIndex] || []; - var stepper = new Stepper(debug, pageIndex, initBreakPoints); - steppers.push(stepper); - if (steppers.length === 1) { - this.selectStepper(pageIndex, false); - } - return stepper; - }, - selectStepper: function selectStepper(pageIndex, selectPanel) { - var i; - pageIndex = pageIndex | 0; - if (selectPanel) { - this.manager.selectPanel(this); - } - for (i = 0; i < steppers.length; ++i) { - var stepper = steppers[i]; - if (stepper.pageIndex === pageIndex) { - stepper.panel.removeAttribute('hidden'); - } else { - stepper.panel.setAttribute('hidden', true); - } - } - var options = stepperChooser.options; - for (i = 0; i < options.length; ++i) { - var option = options[i]; - option.selected = (option.value | 0) === pageIndex; - } - }, - saveBreakPoints: function saveBreakPoints(pageIndex, bps) { - breakPoints[pageIndex] = bps; - sessionStorage.setItem('pdfjsBreakPoints', JSON.stringify(breakPoints)); - } - }; -})(); - -// The stepper for each page's IRQueue. -var Stepper = (function StepperClosure() { - // Shorter way to create element and optionally set textContent. - function c(tag, textContent) { - var d = document.createElement(tag); - if (textContent) { - d.textContent = textContent; - } - return d; - } - - var opMap = null; - - function simplifyArgs(args) { - if (typeof args === 'string') { - var MAX_STRING_LENGTH = 75; - return args.length <= MAX_STRING_LENGTH ? args : - args.substr(0, MAX_STRING_LENGTH) + '...'; - } - if (typeof args !== 'object' || args === null) { - return args; - } - if ('length' in args) { // array - var simpleArgs = [], i, ii; - var MAX_ITEMS = 10; - for (i = 0, ii = Math.min(MAX_ITEMS, args.length); i < ii; i++) { - simpleArgs.push(simplifyArgs(args[i])); - } - if (i < args.length) { - simpleArgs.push('...'); - } - return simpleArgs; - } - var simpleObj = {}; - for (var key in args) { - simpleObj[key] = simplifyArgs(args[key]); - } - return simpleObj; - } - - function Stepper(panel, pageIndex, initialBreakPoints) { - this.panel = panel; - this.breakPoint = 0; - this.nextBreakPoint = null; - this.pageIndex = pageIndex; - this.breakPoints = initialBreakPoints; - this.currentIdx = -1; - this.operatorListIdx = 0; - } - Stepper.prototype = { - init: function init() { - var panel = this.panel; - var content = c('div', 'c=continue, s=step'); - var table = c('table'); - content.appendChild(table); - table.cellSpacing = 0; - var headerRow = c('tr'); - table.appendChild(headerRow); - headerRow.appendChild(c('th', 'Break')); - headerRow.appendChild(c('th', 'Idx')); - headerRow.appendChild(c('th', 'fn')); - headerRow.appendChild(c('th', 'args')); - panel.appendChild(content); - this.table = table; - if (!opMap) { - opMap = Object.create(null); - for (var key in PDFJS.OPS) { - opMap[PDFJS.OPS[key]] = key; - } - } - }, - updateOperatorList: function updateOperatorList(operatorList) { - var self = this; - - function cboxOnClick() { - var x = +this.dataset.idx; - if (this.checked) { - self.breakPoints.push(x); - } else { - self.breakPoints.splice(self.breakPoints.indexOf(x), 1); - } - StepperManager.saveBreakPoints(self.pageIndex, self.breakPoints); - } - - var MAX_OPERATORS_COUNT = 15000; - if (this.operatorListIdx > MAX_OPERATORS_COUNT) { - return; - } - - var chunk = document.createDocumentFragment(); - var operatorsToDisplay = Math.min(MAX_OPERATORS_COUNT, - operatorList.fnArray.length); - for (var i = this.operatorListIdx; i < operatorsToDisplay; i++) { - var line = c('tr'); - line.className = 'line'; - line.dataset.idx = i; - chunk.appendChild(line); - var checked = this.breakPoints.indexOf(i) !== -1; - var args = operatorList.argsArray[i] || []; - - var breakCell = c('td'); - var cbox = c('input'); - cbox.type = 'checkbox'; - cbox.className = 'points'; - cbox.checked = checked; - cbox.dataset.idx = i; - cbox.onclick = cboxOnClick; - - breakCell.appendChild(cbox); - line.appendChild(breakCell); - line.appendChild(c('td', i.toString())); - var fn = opMap[operatorList.fnArray[i]]; - var decArgs = args; - if (fn === 'showText') { - var glyphs = args[0]; - var newArgs = []; - var str = []; - for (var j = 0; j < glyphs.length; j++) { - var glyph = glyphs[j]; - if (typeof glyph === 'object' && glyph !== null) { - str.push(glyph.fontChar); - } else { - if (str.length > 0) { - newArgs.push(str.join('')); - str = []; - } - newArgs.push(glyph); // null or number - } - } - if (str.length > 0) { - newArgs.push(str.join('')); - } - decArgs = [newArgs]; - } - line.appendChild(c('td', fn)); - line.appendChild(c('td', JSON.stringify(simplifyArgs(decArgs)))); - } - if (operatorsToDisplay < operatorList.fnArray.length) { - line = c('tr'); - var lastCell = c('td', '...'); - lastCell.colspan = 4; - chunk.appendChild(lastCell); - } - this.operatorListIdx = operatorList.fnArray.length; - this.table.appendChild(chunk); - }, - getNextBreakPoint: function getNextBreakPoint() { - this.breakPoints.sort(function(a, b) { return a - b; }); - for (var i = 0; i < this.breakPoints.length; i++) { - if (this.breakPoints[i] > this.currentIdx) { - return this.breakPoints[i]; - } - } - return null; - }, - breakIt: function breakIt(idx, callback) { - StepperManager.selectStepper(this.pageIndex, true); - var self = this; - var dom = document; - self.currentIdx = idx; - var listener = function(e) { - switch (e.keyCode) { - case 83: // step - dom.removeEventListener('keydown', listener, false); - self.nextBreakPoint = self.currentIdx + 1; - self.goTo(-1); - callback(); - break; - case 67: // continue - dom.removeEventListener('keydown', listener, false); - var breakPoint = self.getNextBreakPoint(); - self.nextBreakPoint = breakPoint; - self.goTo(-1); - callback(); - break; - } - }; - dom.addEventListener('keydown', listener, false); - self.goTo(idx); - }, - goTo: function goTo(idx) { - var allRows = this.panel.getElementsByClassName('line'); - for (var x = 0, xx = allRows.length; x < xx; ++x) { - var row = allRows[x]; - if ((row.dataset.idx | 0) === idx) { - row.style.backgroundColor = 'rgb(251,250,207)'; - row.scrollIntoView(); - } else { - row.style.backgroundColor = null; - } - } - } - }; - return Stepper; -})(); - -var Stats = (function Stats() { - var stats = []; - function clear(node) { - while (node.hasChildNodes()) { - node.removeChild(node.lastChild); - } - } - function getStatIndex(pageNumber) { - for (var i = 0, ii = stats.length; i < ii; ++i) { - if (stats[i].pageNumber === pageNumber) { - return i; - } - } - return false; - } - return { - // Properties/functions needed by PDFBug. - id: 'Stats', - name: 'Stats', - panel: null, - manager: null, - init: function init() { - this.panel.setAttribute('style', 'padding: 5px;'); - PDFJS.enableStats = true; - }, - enabled: false, - active: false, - // Stats specific functions. - add: function(pageNumber, stat) { - if (!stat) { - return; - } - var statsIndex = getStatIndex(pageNumber); - if (statsIndex !== false) { - var b = stats[statsIndex]; - this.panel.removeChild(b.div); - stats.splice(statsIndex, 1); - } - var wrapper = document.createElement('div'); - wrapper.className = 'stats'; - var title = document.createElement('div'); - title.className = 'title'; - title.textContent = 'Page: ' + pageNumber; - var statsDiv = document.createElement('div'); - statsDiv.textContent = stat.toString(); - wrapper.appendChild(title); - wrapper.appendChild(statsDiv); - stats.push({ pageNumber: pageNumber, div: wrapper }); - stats.sort(function(a, b) { return a.pageNumber - b.pageNumber; }); - clear(this.panel); - for (var i = 0, ii = stats.length; i < ii; ++i) { - this.panel.appendChild(stats[i].div); - } - }, - cleanup: function () { - stats = []; - clear(this.panel); - } - }; -})(); - -// Manages all the debugging tools. -var PDFBug = (function PDFBugClosure() { - var panelWidth = 300; - var buttons = []; - var activePanel = null; - - return { - tools: [ - FontInspector, - StepperManager, - Stats - ], - enable: function(ids) { - var all = false, tools = this.tools; - if (ids.length === 1 && ids[0] === 'all') { - all = true; - } - for (var i = 0; i < tools.length; ++i) { - var tool = tools[i]; - if (all || ids.indexOf(tool.id) !== -1) { - tool.enabled = true; - } - } - if (!all) { - // Sort the tools by the order they are enabled. - tools.sort(function(a, b) { - var indexA = ids.indexOf(a.id); - indexA = indexA < 0 ? tools.length : indexA; - var indexB = ids.indexOf(b.id); - indexB = indexB < 0 ? tools.length : indexB; - return indexA - indexB; - }); - } - }, - init: function init() { - /* - * Basic Layout: - * PDFBug - * Controls - * Panels - * Panel - * Panel - * ... - */ - var ui = document.createElement('div'); - ui.id = 'PDFBug'; - - var controls = document.createElement('div'); - controls.setAttribute('class', 'controls'); - ui.appendChild(controls); - - var panels = document.createElement('div'); - panels.setAttribute('class', 'panels'); - ui.appendChild(panels); - - var container = document.getElementById('viewerContainer'); - container.appendChild(ui); - container.style.right = panelWidth + 'px'; - - // Initialize all the debugging tools. - var tools = this.tools; - var self = this; - for (var i = 0; i < tools.length; ++i) { - var tool = tools[i]; - var panel = document.createElement('div'); - var panelButton = document.createElement('button'); - panelButton.textContent = tool.name; - panelButton.addEventListener('click', (function(selected) { - return function(event) { - event.preventDefault(); - self.selectPanel(selected); - }; - })(i)); - controls.appendChild(panelButton); - panels.appendChild(panel); - tool.panel = panel; - tool.manager = this; - if (tool.enabled) { - tool.init(); - } else { - panel.textContent = tool.name + ' is disabled. To enable add ' + - ' "' + tool.id + '" to the pdfBug parameter ' + - 'and refresh (seperate multiple by commas).'; - } - buttons.push(panelButton); - } - this.selectPanel(0); - }, - cleanup: function cleanup() { - for (var i = 0, ii = this.tools.length; i < ii; i++) { - if (this.tools[i].enabled) { - this.tools[i].cleanup(); - } - } - }, - selectPanel: function selectPanel(index) { - if (typeof index !== 'number') { - index = this.tools.indexOf(index); - } - if (index === activePanel) { - return; - } - activePanel = index; - var tools = this.tools; - for (var j = 0; j < tools.length; ++j) { - if (j === index) { - buttons[j].setAttribute('class', 'active'); - tools[j].active = true; - tools[j].panel.removeAttribute('hidden'); - } else { - buttons[j].setAttribute('class', ''); - tools[j].active = false; - tools[j].panel.setAttribute('hidden', 'true'); - } - } - } - }; -})(); diff --git a/public/plugins/pdfjs-1.4.20/web/images/annotation-check.svg b/public/plugins/pdfjs-1.4.20/web/images/annotation-check.svg deleted file mode 100644 index 71cd16df5..000000000 --- a/public/plugins/pdfjs-1.4.20/web/images/annotation-check.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - diff --git a/public/plugins/pdfjs-1.4.20/web/images/annotation-comment.svg b/public/plugins/pdfjs-1.4.20/web/images/annotation-comment.svg deleted file mode 100644 index 86f1f1724..000000000 --- a/public/plugins/pdfjs-1.4.20/web/images/annotation-comment.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - diff --git a/public/plugins/pdfjs-1.4.20/web/images/annotation-help.svg b/public/plugins/pdfjs-1.4.20/web/images/annotation-help.svg deleted file mode 100644 index 00938fefe..000000000 --- a/public/plugins/pdfjs-1.4.20/web/images/annotation-help.svg +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - diff --git a/public/plugins/pdfjs-1.4.20/web/images/annotation-insert.svg b/public/plugins/pdfjs-1.4.20/web/images/annotation-insert.svg deleted file mode 100644 index 519ef6826..000000000 --- a/public/plugins/pdfjs-1.4.20/web/images/annotation-insert.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - diff --git a/public/plugins/pdfjs-1.4.20/web/images/annotation-key.svg b/public/plugins/pdfjs-1.4.20/web/images/annotation-key.svg deleted file mode 100644 index 8d09d5378..000000000 --- a/public/plugins/pdfjs-1.4.20/web/images/annotation-key.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - diff --git a/public/plugins/pdfjs-1.4.20/web/images/annotation-newparagraph.svg b/public/plugins/pdfjs-1.4.20/web/images/annotation-newparagraph.svg deleted file mode 100644 index 38d2497da..000000000 --- a/public/plugins/pdfjs-1.4.20/web/images/annotation-newparagraph.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - diff --git a/public/plugins/pdfjs-1.4.20/web/images/annotation-noicon.svg b/public/plugins/pdfjs-1.4.20/web/images/annotation-noicon.svg deleted file mode 100644 index c07d10808..000000000 --- a/public/plugins/pdfjs-1.4.20/web/images/annotation-noicon.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/public/plugins/pdfjs-1.4.20/web/images/annotation-note.svg b/public/plugins/pdfjs-1.4.20/web/images/annotation-note.svg deleted file mode 100644 index 70173651c..000000000 --- a/public/plugins/pdfjs-1.4.20/web/images/annotation-note.svg +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - diff --git a/public/plugins/pdfjs-1.4.20/web/images/annotation-paragraph.svg b/public/plugins/pdfjs-1.4.20/web/images/annotation-paragraph.svg deleted file mode 100644 index 6ae5212b7..000000000 --- a/public/plugins/pdfjs-1.4.20/web/images/annotation-paragraph.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - diff --git a/public/plugins/pdfjs-1.4.20/web/images/findbarButton-next-rtl.png b/public/plugins/pdfjs-1.4.20/web/images/findbarButton-next-rtl.png deleted file mode 100644 index bef02743fc108697e14e0e5daab8181f7ef91dd8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 199 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6`aE46Ln;`jUU1|(WFXM`uzZfwf<{~}+$G0pUl&6i=kdI{(<22WQ%mvv4FO#q)8O6mXr diff --git a/public/plugins/pdfjs-1.4.20/web/images/findbarButton-next-rtl@2x.png b/public/plugins/pdfjs-1.4.20/web/images/findbarButton-next-rtl@2x.png deleted file mode 100644 index 1da6dc949cd6451c2d8ea39e1618d0323d2e1ec1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 304 zcmV-00nh%4P)kdg0002@NklJ%mRW)o*bZ%{dl2K@N_?~eFJnrG5D`)>eWA=I9=*xrZ>GuI z4!;9U26Pv$_Z4XH%%iCpph2GpV-c{*6Zhs6SfR_EJq5;V+?sh4&K}p+ z6sU+@u52lw#15CH6i}kr=3>#xgHlS7GA$J0E366+j!0VQ&&@3-ef{(7H#?13Ev59AjB0000QONN1jjx$vyv5uZYI@G&FX~xujj12+YK~w v*fr|J-NDGo&9wKH*qTY?mdrSMOX2+jbf@g_m202_00000NkvXXu0mjfGEh>( diff --git a/public/plugins/pdfjs-1.4.20/web/images/findbarButton-next@2x.png b/public/plugins/pdfjs-1.4.20/web/images/findbarButton-next@2x.png deleted file mode 100644 index 0250307c0d10b0c0a38a8381361ec265ef3080c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 296 zcmV+@0oVSCP)kdg0002*NklD^w4Rl6cnRtQcFE3nm0&QVWiRnO%{h3-*x?K4w z&|kYa uWt-+4V4d~Up94HjH;lQ?oa>Bv?A`$+U7<=?MIved0000QONN1jjx$vyv5uZYI@G&FX~xujj12+YK~w v*fr|J-NDGo&9wKH*qTY?mdrSMOX2+jbf@g_m202_00000NkvXXu0mjfGEh>( diff --git a/public/plugins/pdfjs-1.4.20/web/images/findbarButton-previous-rtl@2x.png b/public/plugins/pdfjs-1.4.20/web/images/findbarButton-previous-rtl@2x.png deleted file mode 100644 index 0250307c0d10b0c0a38a8381361ec265ef3080c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 296 zcmV+@0oVSCP)kdg0002*NklD^w4Rl6cnRtQcFE3nm0&QVWiRnO%{h3-*x?K4w z&|kYa uWt-+4V4d~Up94HjH;lQ?oa>Bv?A`$+U7<=?MIved0000fwf<{~}+$G0pUl&6i=kdI{(<22WQ%mvv4FO#q)8O6mXr diff --git a/public/plugins/pdfjs-1.4.20/web/images/findbarButton-previous@2x.png b/public/plugins/pdfjs-1.4.20/web/images/findbarButton-previous@2x.png deleted file mode 100644 index 1da6dc949cd6451c2d8ea39e1618d0323d2e1ec1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 304 zcmV-00nh%4P)kdg0002@NklJ%mRW)o*bZ%{dl2K@N_?~eFJnrG5D`)>eWA=I9=*xrZ>GuI z4!;9U26Pv$_Z4XH%%iCpph2GpV-c{*6Zhs6SfR_EJq5;V+?sh4&K}p+ z6sU+@u52lw#15CH6i}kr=3>#xgHlS7GA$J0E366+j!0VQ&&@3-ef{(7H#?13Ev59AjB0000G{p)>hLyxD99 z76ej)=-vic0UL9~!GgO~9_MsOnufoUx`QHG)5E@a!o?nT8@#*2`fMlI9X~2&%Qwtd fAElzRww7{H`T9z)QIL|gUwP@h-(DMO`2YPI1=f8x diff --git a/public/plugins/pdfjs-1.4.20/web/images/grabbing.cur b/public/plugins/pdfjs-1.4.20/web/images/grabbing.cur deleted file mode 100644 index e0dfd04e4d3fcbaa6588c8cbb9e9065609bcb862..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 326 zcmZQzU}9ioP*7lC;0HnjMg|5k1_lNVAO;FCH~=vt5Q0Dhn8YOh|NoCEh)sn30RsaF z^8>N`2L=Xv5dHz=L$Uk|1_tQ_266z<4TQl5{{R0$_yG_fVE_NW0fd=>Y#@FBr9t9P K<`XsxO$7j30D*Y` diff --git a/public/plugins/pdfjs-1.4.20/web/images/loading-icon.gif b/public/plugins/pdfjs-1.4.20/web/images/loading-icon.gif deleted file mode 100644 index 1c72ebb554be018511ae972c3f2361dff02dce02..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2545 zcma*pX;2es8VB%~zPr=ibVMCx-JQ^BhLDAsK)^**h(ZDp9YGuzZ%~j!}+w%FI;|aC7){7CdVvG)P{bng1y9Te*f}~*`1kQl$jwb z$tlW~rRS!X?#xfm_&6tTdp_`cjgYwbRFLNdoJCN$S-yhg`ZnC-yvedRSmOh%;Y`Gl6bY$Z-}#C=#F4%9!I1b zWQ~f+9P?;vhCxWwlwl=lrWG|7IYo;{jjmzJ5R9?f>n%-d@>kLINUc z4wM5dAO;kq<$}Dk{2-u0$I6@2N}&cUx9nmV1dYc8jfC}%=F9WCg^OQK9C6poh#2!A z3^EU*UFZvS^)?bu3T?J;@Ahb~%I?+@4!l5!*TjC}GIslNan-RCrrd~PdHYnNLJk+m&`$Y+NV(e>CCu%R#_8GqY4cv#j`#uRWdsg9DxWy(?oOvgCU}&@jy%c!H&-Q zqXJxajAtmQRoRa9V-RFXXh-bK*;Fum{BjpkYQGX~i@OZ^Dx0n&H}kvGKqQ?w(6iGXu_g08T|_hp#ZvFzIwKF*a=oMJ~3UGAjZ?g}GOxm44td zXoyYrU*I=y*vHv89hkYH(v5R#wc)BC3dZJKb3K)f>zaM3%JP(mpecViP0eKKYf3zy z->jx_mc?mCtPEvCQ?uppk?eLJt}_IR7giW%Jr)RyI!+E-voIs*lXI*z`GQc_&D#X( z{6G};HPYj6O|$lXxBJeDaweqa{4L=tOZCjTI^&UOxXg})LRG_cr^B9Rqt(i5ORbQX zq`_xCRsH>xEYY%&*Nyi#{S_JZNlTm#K56`RI%7^amom;*h90Si&g1CfaFV3D|a!`3Y-GKKbL*KSbl z>I96`TR@CqPJl(>QqB~RvK~-U)`e`l4LIqj+IU^~yyIe*|BRVB>4Bup%j{tLdKz4j zY^<8P8m~GRGz*yv0&-RJE+-keJ+%m3wNeopzsltWd->eWmBVwUr)pX` zK~CD<;~Z*Uy3W`3+MrEYxm5qYQ!z%YI;y7DTG`UVH0;@{M{!B&id_}3DBQ?zsotuR zEGLdRx25nLm%-wjlnEi;-aN_1S7???rO~WgA67jjr&(vRa3y$u#kqJbeKnw z{!T!1li9>M+sJ6AUe+*9d}2uGjhzd z|L1Rtp8uTGYyZoQ*`DS^m2dw-X{a)l+3m?ncvn^+O>)hdd3(hMtlhkRGns{<8c0I! zDDjpmwtj?@!6kA|iu3q+Ai;@JR+ zfk+ln&YFC{4bhK6IxVgLs4W%^8Lk`qzWU*L>yq0A3;l}{!wKZ!ue)C)SKI)9dl1hl zhIRLV@8E}rwvE{gX(}$f6x*k)_`*Ijt1=EU-Ls6-(phomeQBgtUs z5Xz~Cd*nE)Ac!0i4ep}Z1AugMB(&F?)#CU{Qc{Sp^vKsdL}vRB30H+Bbzrn`M##H3 z{W8dc_mDroEE+p8_}mnJtzZ4!RNe)zhB)Ds;S57nYSJxtek>^~&(7B+N5MPf2+2xx z5Dl&4X|c@f{Kd|z1r+N|$DmsoVp*3yOdxT^J^-VAk)Z@$4^XrPrFP-Co+MXZ+KJ(W z{JNYvraLLWA;&tRhIKOvhW|HC|L-dLvAUF(MG0(Nl?4tB{RzN7I(}Cb%hwN{crFC8 zji#aJElKvDFV+&VI1V?oUMA>*kto0^;3W8FQBSZ|{ z$v~TqE=(8DZa^i$^oht&h};P1N&wMXorKh*Z68gPV&ouy>%f36Oqkwemyeas$Qbz# zV?7Jy%o7KY6^I=P@eCji%W`o5sf(5hySYo9$l4e2`(hIV_?=H-#R6}0$WVA|*(K@3 z=5?@RlcLh(meW%A4)hGzcvEpm(_w?>zhL*i&s9$2>r zAtk{8Cia|+Y+V!uX9BtpXoF%lswuRKsM!pSs!?yhlCy!269K0|b M?FSZn2B>%I-}ej|s{jB1 diff --git a/public/plugins/pdfjs-1.4.20/web/images/loading-small.png b/public/plugins/pdfjs-1.4.20/web/images/loading-small.png deleted file mode 100644 index 8831a80588dcaffe9a0e075f3d00066faed3d482..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7402 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 diff --git a/public/plugins/pdfjs-1.4.20/web/images/loading-small@2x.png b/public/plugins/pdfjs-1.4.20/web/images/loading-small@2x.png deleted file mode 100644 index b25b4452aa1a52181c324020c39175e0f8f425a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16131 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 Hu0mjfs1U=| diff --git a/public/plugins/pdfjs-1.4.20/web/images/secondaryToolbarButton-firstPage.png b/public/plugins/pdfjs-1.4.20/web/images/secondaryToolbarButton-firstPage.png deleted file mode 100644 index e68846aa5f609f48e89b25692abdd85c2de7ecb9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 179 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6sytmBLn;{eUNGc3kdg0002dNklu=O3C8jVap{PU;A41oOzOaJ;Key$ zQU*)*)D8A5V+RX%R3~;UVg_@zlxMcgLkF6gqD74k8E7`-9X9B`!HkM$kBXUZFs0+2AR>HC Q6951J07*qoM6N<$f&iRyUH||9 diff --git a/public/plugins/pdfjs-1.4.20/web/images/secondaryToolbarButton-handTool.png b/public/plugins/pdfjs-1.4.20/web/images/secondaryToolbarButton-handTool.png deleted file mode 100644 index cb85a841b18be0235fc6c6714223609e1097d1f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 301 zcmV+|0n+}7P)J24O| z%QaP!}IU9e5CrM>v9W%fW1qojxzD%=Q00000NkvXXu0mjf%W{5L diff --git a/public/plugins/pdfjs-1.4.20/web/images/secondaryToolbarButton-handTool@2x.png b/public/plugins/pdfjs-1.4.20/web/images/secondaryToolbarButton-handTool@2x.png deleted file mode 100644 index 5c13f77ff003460753a39d9e406c0020231cabda..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 583 zcmV-N0=WH&P)kdg0006GNklsDncb1tl(lO0{5H zQE6&xnvkURPmGNv7*b6L!Th=V`QF__%SrC--TQe6-{l_O7Xsbk5HrdU;SJOpV0KIxYb5^yMTWCRz8#4m*=<-RYnu#WwP~*n506n@GajHIFM;%}f zFY^Y^aW7$86$8At-QN{yj&9v@sxj9<1L$1g8gpFdYaS((q*!NG$}P*BQ`PAzs=(Gm zuGm&PFW5_{a(v>7UM*fj4M<$)vPc?t4M_V?iB(Vmj)#B6xFk|MFXcmJ%3gpyBWK$S zOgPLXDIdy{Wt3sfzR7D`46gK~gc4x?9LbFFLr|r0SztMRsut(_Uiii;Sc}-002ovPDHLkV1iPk2)h6P diff --git a/public/plugins/pdfjs-1.4.20/web/images/secondaryToolbarButton-lastPage.png b/public/plugins/pdfjs-1.4.20/web/images/secondaryToolbarButton-lastPage.png deleted file mode 100644 index be763e0c4a02cab5d7842c8999faade8c47059bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 175 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6$~;{hLn;{eb{X<9DT=r}_bOuI z*S;pAB4U5DMLQrPIWf`wN4P|1^q&c>d5`zJymvU>ZK0k3(_cShdv}w=iShns``k;6 z|9a2*kZNL>>-ng7x$0%-AZ2dv-evusD-M1!nVC^#Cw7NZpelLZ;<(0t-0Qey{BDRJ YJiB<=q@5ck0$sr1>FVdQ&MBb@0Mz?GUH||9 diff --git a/public/plugins/pdfjs-1.4.20/web/images/secondaryToolbarButton-lastPage@2x.png b/public/plugins/pdfjs-1.4.20/web/images/secondaryToolbarButton-lastPage@2x.png deleted file mode 100644 index 8570984f2d9952ebb8543a6c8bbca2408be3fe90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 276 zcmV+v0qg#WP)kdg0002nNkl&Czfjc{g zj6%Epm%+!Y13m~u!|`;DXFGIF9(|doYCM^ve(0R2@MwmrSf3_JJZz&%)@Kv4!2LS1 zV0}4}<8B$5v%a3la66C8Hg!&j6gN{uYNm4{!PR#}Vyttbi*Y&9#dbQsBEkhDB5R!! zZ3qqBhHg41f;Mp0Iq}XP49B>3;NV a-`N}fhF>K<1*gRT0000IXDMlYJjH!bP6)MzmI9A`JeaMrW zP{;Eb78VxP+o^u+tz)%w>Y7tjQAHKiynbv>Q2u<>aK#ZG+*=LzzJU35q7H&2Nb8UG z4tHis9hc+YH714zU~vDD-l4 zafLJ>w7618y&iZMZti8jkXl?(NPqY>rLdN@q_C#sSI-x0yte^Yo}fkdg0007_Nklh8e7=r0Vcp)Y9Pr|5OlrS&sF1(Z=>P7`I$&2V#B8FQ@ z#xx11n2B@MtaN4N=HFayP|U&0*qP^fzdz3rbvx5{@V?*A7yO;ybIvoweHnhs|HM2| zKI2b<|A+)(s$d&GYW}mq85+9hKEosr^Z)ai~BEfeTNO#3*wjb*wP4^U`OFpp(!|`#~2s8 z`FYx|7Q`+s4a0>};|dO&@9pxBxm8wN7W`#thbT7CssC=I zTAKz9&;++jKrz^NzcAADM`@&iv`7W`N3qmw3RZ&e8hPgH3^G7Qpcx$&o`vOn_6(y+ zZas$_WXt7wl$(nFs}3E|%QjcV-;}eBGn_%TTz6djMaiyYk%erz{(qejCHZ9%NywHf z{V9J|qQg-{A#0$GFYt5L61R9<|A{{;zE^$lK~~|*404N++(Ztym|$2*&p8|pI3TP1 z`Lol$YO^mh!s0;lvGNuWs=UoKADO*y*%)pt=Qi+&XoY ztsnG;h7yz6Kt7lcW&?@I(9rw6m9415J&yxVq8aUYUbLfGo*u)4nY;A)5mO4m-#Y*R N002ovPDHLkV1o45W##|? diff --git a/public/plugins/pdfjs-1.4.20/web/images/secondaryToolbarButton-rotateCw.png b/public/plugins/pdfjs-1.4.20/web/images/secondaryToolbarButton-rotateCw.png deleted file mode 100644 index e1c7598886bd49e194764015577b766aadd82288..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 359 zcmV-t0hs=YP)x?uT5p77|>RR|+!(Z0%SPBBerLNU!<(Nsaeb!tN(Ep1s3u|3Lqc zXA482_4)TIcUT&Mg&ka9PU%bJ(4vmb9tomENw9}a{m@cGL+1YGpu!Cenlx!}GpOuu z%G3xmxmwG;o&*28mt2*pekdg0007!Nkl7D_=c-w$rRM%>rppb3*+sVXe|le>e}?;(Er{M9e0<;c?0eV_qyI8^j_+&`1R|)U z;XGO}fI0Zt9GrYA<6DaHV~zRM1twVFK>**djW85SZR6yh2FUfJb!D6Sq1r_=#U#5b6Imp7B9ZQ6dlA8G-$eSq@9Y$Onc`L6}j4VAGA1e z1=skwPmHutJ|&xcR~vkBjDocAI6jNzhpOjziuITk{*=Ke2$x|I3s}%U+A3|7NKzG} zAk>06vGjn6XdlOMA5}2zo(U{7GxQ7|5$+DtKDyz>3|zQm6o@A`;T9ZPLCJCIg`0Wi>*q{U9GDRL?<%aEPKbabJ1?6A$s(GnBf}UMn8ID;D}MVOPR2!KxT(5{c95|#cUhyO zcqQP07oE6>JRD?syzAu0o}Dy0+GSP$>9RT+BSRRAndFjb%&=+RP43=DhB_K4i;_&1 zr8a2C%jAM~ORYRlKIV)PyKSob%7 diff --git a/public/plugins/pdfjs-1.4.20/web/images/shadow.png b/public/plugins/pdfjs-1.4.20/web/images/shadow.png deleted file mode 100644 index 31d3bdb14f1d67953d18dc04e73db834aaa200f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 290 zcmV+-0p0$IP)5L}-Ge7Vw zOWG2)&d}h1b+I@j1OkzekdTy=l$Ms3mzRgb;fjiiN=iy9Dk^GfY8o0ENF-8AOACcU z>FVkl8ymx5FfCz<-2qY*d$iu^P{``3`7z~9%`S|#ZjEqD?L`+Rh&CSg%EiJ9B zt!-^>u~;k)hjVmvbaQiac6N4kb>-&f#^do`US1v^9^T&GzP`S}!NFl+VF3XFAt51t zettwEF+4n+LZL)PMn*?R(`dBh^H~uHNOM7py2y-6!=p(~~7x0I73J zk=^mRIQIJk&?-is?uIWh)sY)HG+e-Fe|Z`9)K4%rj;U_cSvmB=5YtQo(oA+;CU6jO z)R<$|BMsZ2#uGAo5*0yuX)RP99*b^u2U9UAKg9e}?QbeBrr!ZmVxmT^I(w#NAp0yJ z3gpG)vA7C?7k?G@bRH;hvH6-tF&|%ko<*;Wx@=7s!#Gc7js%h_l1haH!vuZgwR%XJ zAIO1&tV}$=@&y4>|3$(ru9knIu8wq22VJ6l!jl|Z-rng-E*su{Jo6fWq}m0oLnno8 z4@|CI*j`Xy1u=JlRj0G&lNyMNgQSO!3%WDIE7N~ z6^K9!yL@fakNp%IJY(Lt_s81lCn!QV0$x&}tgQQY{9@x;R@o?bkcrept_pBmuP9HX zf=P$H3jJ)mEsW(Y7T|DE4+(UsEsM!*NqZpz*{A5Lnd8bzhX`LEvHX`;`V5yeNCu)P zUPoqI-QR#s#(kD825KIitZMG%PV4j>7(5`~xs}Q!G|t?7Al~%zdMRVojvvdXex+<( zmg+Bl)U>5G8&Mn$KVg(z5Y@|tOuhgdU`#)XI}*~HIb&c z)X8rDqzZp$Yn`?MYD!`cPDH#EJPREP+$t`t&G?I<&NjQrXs3UGN?2&44H7n+UK)|- z+2HBd-u*GRi<9QAHq4@RmrIx#!`JG+Q!2_~Mscn*{noS`_x;NQ=%y*jD%6(aD zP)7ynHD_>Kj!W{!r9wE)RD(^=-EtpBpZ_MmdPLn? z|87d=iJcuL@}?u+RaaMI+Yeng$bo*#2DIlwQyM?ZysET47XYvCa#Jb`ReYlTC+gt` zJOm<2m>3Q(+zVPDW}+ZB z22lm8Mtz!78uzQi@JcW~dDBG-|741n)9sL<;t`6Z;WOeCUh3ec>NAi{9O~$Z%}C=0 z^wI~oX)pJ?NPS0t*()y%eX_f|86p(F7&9Fg-Fl25w2fifYVHbw7lJUr>rPD$hz$wj z73ghBFDYaD%P6ACx7xV#M=Wj8Y@&y&>f_i>7W@!W^csmr1f|CUZI6|nrZlzmeNWSq zb60O13c%Wb=MY2VL}QK%O;0r?+_#wGYsObRiX53)VhAPw;~{TOs-NoJorih7T@0$r zW1m9a7EeoeNs3jC73YD>+iaw@l~U9uwkjiKrT@hAP3jeIVO0^WJC9`Q=1|G;?+L%N z7x>BNs>Uk$zZGzfk{smo-ULWJaLnP*{Xc=YVEZdw&+0L?A_{<>8Oi=m@7)F>TiviT z#eIeCltY2nSPwds{yVS?KkiGV9#rq(PR{k)SivAM74I-#zlJUJU!onq!y9+Zie@^ykY8f_3WbV%HIaE zq3*^`5dH7BD&C*0N%0ok$SX3;M&yg9~cKNXUR74$Km2g(ux&*WyKTP}y|Ke^9u=3&Sm`oo0I&7-j6k*J$| zB=B)}yKlOR=&wyR)rAq6;Lkm+>^M=Bs`7U$)hhr-pB zSxZwlgz2_4@_KEeTBZc3FLOb?S2;ShWA@lJZ;G zOf_CnY`~#{A(OQGq4V2m%)h@)u^Rh)qz+v?(Dh2ds-Z7b&j$Y#=_wstAJb+6P>`r@ zC&wmf(&9(N1lOx)NNnJ2ha%+{%R*mSfX%?_vzAVlBEh)ivlH;!{GY}lb3@vFg^tHI buTQ~y@sPxsykY#=6am;+;LIB^-iiMKh=Eg; diff --git a/public/plugins/pdfjs-1.4.20/web/images/toolbarButton-bookmark.png b/public/plugins/pdfjs-1.4.20/web/images/toolbarButton-bookmark.png deleted file mode 100644 index a187be6c9ba78003d9d2013e4cdc1c7f73bb8949..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 174 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6N28}V=>tyzpi1dq!_s#Y(o?Z6PqD=UotbK;z z+=pt1eY;;C=TG8Xk<7mK*`GaMCo^*7N1nAT`yj#0VsudA+GmM(2Yq*^+n%4r$i(=* XtGDvpiMgkM4q)(f^>bP0l+XkKeAzzU diff --git a/public/plugins/pdfjs-1.4.20/web/images/toolbarButton-bookmark@2x.png b/public/plugins/pdfjs-1.4.20/web/images/toolbarButton-bookmark@2x.png deleted file mode 100644 index 4efbaa6758dce6ea82f9e03e81c0196cd806b266..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 260 zcmV+f0sH=mP)kdg0002XNkl|Mj3PYt*CIh*)L;+Ye)qJLer!U=dbLBLZSzSesM4tY9KKocB+w3G#Z zP#|$ck0S&$A%{+O@CHd@not;m^nk=r!lx-oOkfDo1ASdr=)nV-#q?0Gf`(oI0000< KMNUMnLSTYMTxkmc diff --git a/public/plugins/pdfjs-1.4.20/web/images/toolbarButton-download.png b/public/plugins/pdfjs-1.4.20/web/images/toolbarButton-download.png deleted file mode 100644 index eaab35f09e12fed1a285ca765b38846f84ebbb91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 259 zcmV+e0sQ`nP)kdg0004SNkl) zyTrz@9NlC#^DUV~uyB6O#`Wc|{GJapsNf}n_~s#6@aR;~Ks|!^o;hKkb<`q>uf_@c ze2Ny_{735Rz+(^grfCv7@DMF@(?E&?)gFc+;s(Y=f4GnKw)K%<_IcMs6%8~k4%~hd z1#ZH&m*NR=jd9Z9?xHxKc#XI|a&$D7>pcNfCv2 z6(}mA@U8*{MHJpuAa5+piu*}@=C6x$-8&9=MtcJe#2}8pdIkrw28vjvgyHy0F}R~Z zCUA)rP9TO&f3a5-II~coM6B}%`OpmoPD3uR3@7y8J#|5W6U7S>1Ne&^?G!jBIjmz4 zBlw35uM~LQ#}Ub*j1tayY3;VeknSU$Z13T)Kdqf~GA)J#k0F^Bw@*|4^-q28r{Use T)~jCX00000NkvXXu0mjf;mWr^ diff --git a/public/plugins/pdfjs-1.4.20/web/images/toolbarButton-menuArrows.png b/public/plugins/pdfjs-1.4.20/web/images/toolbarButton-menuArrows.png deleted file mode 100644 index 306eb43b86861ffd83ab17541d64a4e8d240c86a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 108 zcmeAS@N?(olHy`uVBq!ia0vp^>_9BQ!3HF6HKu+5QpTPxjv*44lM^HyKK%b*U#Aeq zu;`*{L_>wHfPM2NofDJ17YG^bX|d`%n5z@V{_rc;Tt)`NYtfrMyS6_7YG?3t^>bP0 Hl+XkKJQO0C diff --git a/public/plugins/pdfjs-1.4.20/web/images/toolbarButton-menuArrows@2x.png b/public/plugins/pdfjs-1.4.20/web/images/toolbarButton-menuArrows@2x.png deleted file mode 100644 index f7570bc0d30db3dafe54aa7c1fe92367690f5046..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 152 zcmeAS@N?(olHy`uVBq!ia0vp^d_b(g!2%>Zo;S(>sd!Hp$B+ufWQooP^)>=V3JT0Z z$G`noR@ib>ZRMZ;zy7B?RLGuin*8K{y@Up1n}eABCY96wr#d)VuzZRTnDjQlktL_y z<57djB$XEmhvE+MurwWXw|F2ZV0`Mr1B0n74EE`D>#U8d6@XSTc)I$ztaD0e0s!v6 BGzG;VmC z;q~VKH(~JG$%=&H*l#BhBA@m%+@JRU8U%hjmgvvG%fOT9|Lqt|?CCOwE9L($f#A18 zKxs~}zd3BF({67qbqF`wWgvfL;hE+U&_WnNzfk1a( t2EvOl{_oukEDQ`x40a3-IG`;90|2DgL5N;Bd29dx002ovPDHLkV1nayd!_&Y diff --git a/public/plugins/pdfjs-1.4.20/web/images/toolbarButton-openFile@2x.png b/public/plugins/pdfjs-1.4.20/web/images/toolbarButton-openFile@2x.png deleted file mode 100644 index 91ab76593eadd6280b2a554d8d3eb1430d7ef6ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 550 zcmV+>0@?kEP)kdg0005)NklV8EdrV)CkilFRiwZGwaE58mndUOxVhkz-=YH-{A&5&o{d zns22dWrs@ZlkDB%fnWKmLb;Wa?OQuga#3zxZ}MmDC0|@s&JT+HXqXKe@Ow>O zxH{3h$him+5RYuj9yN~lP7jG!JjhF_%4%QAQk5*<6Jqsm?Kz+C$$K}&xzJc>>|@Nm zsKzm_h^c1H4jjOTZ(zSQ>)J$FIwS8?teL?fGyt^0A!|lm!cm zrf{tQ1#;(QSpf${lMm-1Pv*3|P{2Xa=o32VET52+0uG8MJ)VX%$q`vnz(LU@4ksYN zlb}3P@CY_uRWrYD9_C5zkwt}Z+X>H)v#KVxI|eagyX2`tMhu(u=AyNL7l4cY^~bW% oyZVDVb*O{JA&&H6n13-p0bKq8;5tc*kN^Mx07*qoM6N<$g1cw`kpKVy diff --git a/public/plugins/pdfjs-1.4.20/web/images/toolbarButton-pageDown-rtl.png b/public/plugins/pdfjs-1.4.20/web/images/toolbarButton-pageDown-rtl.png deleted file mode 100644 index 1957f79ab95a970cc93eaeadec532661c5a1ae55..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 242 zcmVkgj4Lv#w4(S5>&h#|Q|$T30}L=f&H#|39(FQ@U4`qXaxf1Bc1+XmFJ4%~M*)ck=@jF*AE z@OmCGUIsRTT4WE_AE@?zRCReJsxQhE$k7T*n^xpdHBOme(Nrc9n@SO5E{eDjb45p( sF&)`4S3;ynbtti233MRw&&qfF1f{Oim%bdkdg00041Nklk=KUzNjE&+Z(ng)kL^NUuQIUigABdoZ zjSq~+fdO@9zMHugg5R&b=MNYE`8du+Zn4FCK6*TGn{x~k1gJ8@hCRLGEpOaj+8e8g zB8)MpkFy_r`|-8kb8}@LQy6}n7&Pq1SAK);+5#pKbni>{+q`3FZOa;uPgpuN| s!;t41i6pD68cF@RkkFqi61Km+Pl0_ej2E!U-~a#s07*qoM6N<$f+7928vp6;%ZmspUL<91jYXM#X%ehtN;K207*qoM6N<$g5$DeH~;_u diff --git a/public/plugins/pdfjs-1.4.20/web/images/toolbarButton-pageDown@2x.png b/public/plugins/pdfjs-1.4.20/web/images/toolbarButton-pageDown@2x.png deleted file mode 100644 index 758c01d8364c5597d7e9ead825cf4e7754c8d929..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 396 zcmV;70dxL|P)kdg0003~NkluFpq+}Hm0+F1Hup;*cG@Vugl*K#ZX`wwAsWOGa}fz> zkwzm~KZOBxbLOmLAviyn;=uQ(|M3vS0uJzqrx86=v5yr@f+Xsjpdf{JHeYJ!j=0AI zdMIPgH=xkW`qFa+9gXf=3-i7Kg{HTb-3Hnk9k+}r-+)2^XB#c8_HcDb96Kz|zFy%@ zr+?TdjvvNrduZwmN(16Fr=vAAblkd2oaVF}#;t%j0<#gojle8GW2g(H0CO!c4%7t3 zfvP|ZM9}o82$~*|&j5vrIb8luF-IZ#_Cih;7v`L-ntKx&oSShnYR(gBlz!%<)m)pf zQ#kWyr_@|dB;m;HB%5m!ww^R+i9!MvS4hZno`~brs}PswLc)&W1w*T#Q92I_?)jA__{b8r{ocmDkjB;))luQR&DQs#s?5{OcWsXDuPe zmo+wBW`Ex!Y-z#88@{DbU>|qCUYXlY&65@XZDezLlfot}w3kTg-zv6Kc{)$s27`wd tL8q?PzUn!-=+u@K&b74>{cp1VFo`V}NvvaB+5+?kgQu&X%Q~loCIFI;U?~6q diff --git a/public/plugins/pdfjs-1.4.20/web/images/toolbarButton-pageUp-rtl@2x.png b/public/plugins/pdfjs-1.4.20/web/images/toolbarButton-pageUp-rtl@2x.png deleted file mode 100644 index a01b02380b90e5ab32727ac5460eca3108a8f1e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 405 zcmV;G0c!qkdg00048Nklrkxqu zT8M?#!bm@}5SjL#xxE$==eN2ibN;KL|31hDNQNMj#dAQK=y(1Y5EDv)44Ux1HIb1A zxbp_wkVaG@>bwr8M;#f}fPp8}M8Vcj2^jETNAO_u3+Qn1AmKun1#~zl_u)W~3TUX} zUO^Qa7tmniPLU0*H;_gJx9U(qIvhx$jGJF7BlQ!YX-bCSn%DhRa1}MU;;H}2mpt`A ziKiME#syC?(4NFOPciVagfos`@JYn1UN>;cY3;X2BrFj7v{2+Y+YX6@#fO0+3LJCQ zBvH>3vz-&-ueoS%1%d+z!pldaMb1S zJy+Y=T^nDZ7)fV{#%PX`f<=ncJWbF5{oQ;4iDXE!#q;ab00000NkvXXu0mjfx2&{B diff --git a/public/plugins/pdfjs-1.4.20/web/images/toolbarButton-pageUp.png b/public/plugins/pdfjs-1.4.20/web/images/toolbarButton-pageUp.png deleted file mode 100644 index fb9daa337656a75091ea00d4c5600ba4f557d834..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 246 zcmV4@1mz9~E$`$~;b_k}_F6G1q{7jr18lHWj_7~< wLcHP)kdg00046NklObOG9sOZQNBke(N5=mxxi_UHnda|*&J&5TH*h$u8)^QA!? z;xt&CUk(xa@IS{#Xz2Hu|6d*s2mgJH_rVY7C(gG%-^8f%*FGts5wO{2{YRVjxB;6j z)&{h^5?<#`RuxU!x&ey~Rs;=NIsuDymORvHjS85o@x@1treDBhm4y+iG`#`_%Y4>Q zrXd9kmiVNpL_-b4SmY!16&V{0L|Nd&m{h`q6-zeg7QAIlCLxaTHheG%?nYsXZ0`) zJwbTMNirjGFS)Go0!$`0KT}Lg+!F?+fC96-Tkl6a7i8QNLsCG2!2H_bPUYYu$y1&U xNi)wqhB>1K6qvvQRuRHFB2cYh4paDxeFMq5jmkNGJDLCh002ovPDHLkV1nI`spbFx diff --git a/public/plugins/pdfjs-1.4.20/web/images/toolbarButton-presentationMode.png b/public/plugins/pdfjs-1.4.20/web/images/toolbarButton-presentationMode.png deleted file mode 100644 index 3ac21244dff26830f46ec462f2dab36e1a18938c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 321 zcmV-H0lxl;P)d-;VqjhMU0mZ4X2g!hLXQ*2lyD zAO1T4QSzVf-}e8HzMQ-~=l=t+g42^3RNS0C9Q=RpM>>fAJ?a1b&&NYN8B~EX5F3G* z)y-)~6N3zxFSVx?D9sL)fdf{kGziForAY+;dH)B&*)2a2N#7G$Xm3^>hP76r$iD7@qu}40l!X|5FfA2;Tt;<=`gB!NnK=_L!_3 TdOB@M00000NkvXXu0mjfBu|wT diff --git a/public/plugins/pdfjs-1.4.20/web/images/toolbarButton-presentationMode@2x.png b/public/plugins/pdfjs-1.4.20/web/images/toolbarButton-presentationMode@2x.png deleted file mode 100644 index cada9e7918da28bdf84af38c354dbf1e1c6fe31a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 586 zcmV-Q0=4~#P)kdg0006JNkl6nm`NYOT@I1}o-1mKoVd&o&{7f+mN-&#|()Zx;dz{8H zjZ$((8_UU@2);#emg03$I7{)Q2)+sjYw5ZuyjRhz2zmk^;uiyU5k4mtKpo5NDq;oH3c;DYmG_Dw9@94#Qd!Np$MYD$j zPc4{FS9m_nZFoN1#o4faN{cjOD4v!1b8BVb^Z!9gw9*2_{C#gi$nn)e!f!}1hmw`k2Xb!g|HAo2t*7E*&>DgR^vZU zVV4ks^D731!9T-ielNTbGw_$axq|YpFKNTWBMo*4b40@@e=r<~g@MK&J_SO41MfMq z6K6!=^stS5fYisq7foRJTRX628(*Bq(yKr%dZE{WZ`;7vZJ2IZv$kcQLwS8}%Xy#f zfMcjMVUtA}0uh@ufx-#qxPlcm-vgSJD;yl)1oluX_K^Glse?0qV_8Mk00000NkvXX Hu0mjf@9=3h diff --git a/public/plugins/pdfjs-1.4.20/web/images/toolbarButton-print@2x.png b/public/plugins/pdfjs-1.4.20/web/images/toolbarButton-print@2x.png deleted file mode 100644 index 53d18daf7825ae12d99406068073d16ab682737e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 464 zcmV;>0WbcEP)kdg0004(Nkl|6%E6&Q zgKhE5R6HaVnnStjcWqH1ObaL>24WBUJ_Y#4uV1O`0z?e~qSOfwF1Pr+z z$Bpe>*voD2#tn`c<-UL;j`nO=$Qx_VPMhTiws^}Shpj6L11HP{ZY}JG58#d<-o%HwW2=;PUN2XFHukd_-`kI$Y@{*S`_h91y zIW}gls+39Ng#)bOp}H?Gw|H@Pf)(V=%H0Vs*gACdn;u{lW|A|ybdPtAQD7%+lCuPJ zNHpGOlkX&todVvkrYUPEpq8BS?cYmI7hZsM*cGhfU(HW?%hSMo{ZqpL0000YA diff --git a/public/plugins/pdfjs-1.4.20/web/images/toolbarButton-search.png b/public/plugins/pdfjs-1.4.20/web/images/toolbarButton-search.png deleted file mode 100644 index f9b75579b1e058baada95941a4a7ff0c80edb5cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 309 zcmV-50m}Y~P)}CT$H)>Cl*KShVy4rnvP0Z8?}Z*4h&|1f^pNMc6--g9AMzMF;T^ zdxEUy+IsY03~>NTiO@2lBS(WyDLQStmhYno%7XP%~a zg|t=`Q(SSy6w-os!-I2sl2TAVdpUcr6!sO=uOix1Q2+A@lD3RUk?l9y00000NkvXX Hu0mjfGKYz; diff --git a/public/plugins/pdfjs-1.4.20/web/images/toolbarButton-search@2x.png b/public/plugins/pdfjs-1.4.20/web/images/toolbarButton-search@2x.png deleted file mode 100644 index 456b133248fd5310857db3e2b174730f6488371b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 653 zcmV;80&@L{P)kdg00071Nkl{bbX%$pI4<4dGmxrK3y9C*x5W092iXDWyS$NGul86ip{iUm* zph&8bY4&exY`K>GnEG>Dd62o*(mD5i_k8$VY~O9Br=aKc@csAZc|K$K(~H}AmbW;? zMG@u@&$EhH4=lw&FBkZQF-Ap9o)(M%&-~tka$b|+DChG;`IX(=w(){a#`%8{F<#$j z!3oAVrx=lttE;Wi(dg)E3%QJl{>ms%ms(Jfo#2eJ;_GOI4YjBgwXk)xuK0A4^|Gqy zg0)keVT6&~w6g^ktS^hRB{!`y&ScJIkb$(>x10P=3G|{G`Bfe0)oE%dg%qUCmd7}) z3^)d0=5pwC)whaONSkH-{G>RoP849(sVpfg@*ia0@S_s8gi(M+r$*3#0co@3D5sRA zh9wlxpwskt8fi$I&Gs>uWY z?@M2Nt`6yC6T6=Kx^U>Q*>AFmU}|CQ^VA2Q+|HIZgo*jpkAZhSx|3}@2xVraKJvzU wce9NLp>&q3J+HiVD_f9=9_zn#f#kpM2NJQXccvwU^Z)<=07*qoM6N<$g7779MF0Q* diff --git a/public/plugins/pdfjs-1.4.20/web/images/toolbarButton-secondaryToolbarToggle-rtl@2x.png b/public/plugins/pdfjs-1.4.20/web/images/toolbarButton-secondaryToolbarToggle-rtl@2x.png deleted file mode 100644 index 9d9bfa4f63d6a8ae5cbaafa2efadd2c16b48a3d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 456 zcmV;(0XP1MP)kdg0004xNkl&Eo0wtSl_%_c@)#x6@Nc{?`phhD&@IIESE8yJl-K zSNKF1)hUn5sOZvq+E~U7KGIR4efOfQ^}884Zquc$Li5&n8S%Rr1@7~nmioPL?ToDQ zyBRA(nRhf*zjpbgtnj-TYr+Ig8tT{lh2v82yBQlog$4`i$IR)&lJ~nAn?g*Tx2iXJ zWWVJ6ZpK)6$s20w>%%>JCF}K+&F|>X@+#3QMD!p6D zD}Un9_eZ=yRl_vval1L7BzJJ%w+GCj;t)~vyE&jFTPl6N#|&!ruPuHz2b3(`y7R*w zDyWF(Z1=l4pkzsLTk9rI70-y-?RRDWXwkZ{`gNuh)5IL`x)Kb@EZ>3!A!A$=*8}1L$Je~+C1~_8?0000)($5yeRDdaQJ-M|4aWbecXOn@Guga;V=~b z@A-fE|GC#2l&u(8kl8S=_WnQr|Ky7m5@rlc$ZVK&-~ZG9k3Lz%WyHXU%!Wxf{y*{m t;LXXb20&>fHXkdg0004zNklungn#PzRCDDkC`n~n-$qc_|=6h2P`+3##e4qF2k^f~&;~by5E|5SX@g5gF zM(V@4qrL*vqBy9 zmb;|w9+AI3)?7ThQODDyXUp*o57Q zk<^j>?O9%<$}VJ!)rCGJIWh710VUKc_nfi8UFd6Wq&>}xNGDg=Rgg%$YmQ;9d&EnM z>U;L=QAvw#VE4vGm!-&}`ugz1AsMo}H!?0DWI=tocW|Gi?CyR7|OZx}=1^9!Vb3w=BGynhq07*qoM6N<$f>h_@ AZvX%Q diff --git a/public/plugins/pdfjs-1.4.20/web/images/toolbarButton-sidebarToggle-rtl.png b/public/plugins/pdfjs-1.4.20/web/images/toolbarButton-sidebarToggle-rtl.png deleted file mode 100644 index 6f85ec061ea167b1718d2865cfc1e53370f11b7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 225 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6R(QHNhEy=Fy|9t%kby|+!~K<= z=lYs7_Vv%s4-^nwVp00$&6?)LeSG^I3$L4YTv-}i{FpUUBct%;PlbZ%#R_fqh7bDx z-F*1OP);pG_ExTK`(Chn5R(EeH9pPAiYO~EVU zg;AX0YiF?m$$s9yK0f=U*jm^Eqt`WV2>kpZ@LOBJCk~ccO~LBz65exMPv3u}^Njbh X)s)<0)dyODZf5Xw^>bP0l+XkKTSZs> diff --git a/public/plugins/pdfjs-1.4.20/web/images/toolbarButton-sidebarToggle-rtl@2x.png b/public/plugins/pdfjs-1.4.20/web/images/toolbarButton-sidebarToggle-rtl@2x.png deleted file mode 100644 index 291e006797fc7f0e84d297e952630c719fe6eeab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 344 zcmV-e0jK_nP)kdg0003WNklzGl0Qy}Zomti9P@(RHP^G#|@5~=y7$K!siiboRh zuIeZWmVB=G=|>dh^>JgTvTX_3{+V)mF&H3EjY7F_lyu+m(` z^5@!%E%1sIf<-iET7g&00wOY5YylCO%que#{I4g>zrp+oX2Hs@7Sy8){GqKd3+i8+ z(La(~<(6kl$Y?0+E!3g~6pVPYgsgOBL}3a(#z;E(drpoEc78P(r=PdlEn2u>S!eOM qa*)PSBkN>jxL^#qr<+KRA;34`pdw#DmQPIp0000%D&|RWz?R3S%8@5!h6F=s6G4bYqaW?MzjoCkpng6|s zXV#N@oaktrz{i#`@v)}nB&N==y>HnTvNCfR?M_V%Q~Gzyo8O~>Q6}#e!-ESy&GlaR zu`s+4fAKGyamxbfPlhLUim60w=5E=2>$USub|+s^j;X5ze{YfSp5y*9zfkTo Zkdg0003JNkl$GH;g-ye=E3m76~FBj%$^S3p8p9*q*pSbd*{>iVWHsKF0S;I z^gX4t*wuc`Tb2cq{&%P`@>A8<^(NL(>Ho}s&vtk+Fua<7E9$@Hp92jMpDMqu z1xm9(o%fjY|H;!pyNX@EE&si$I{ZV$w@o%SaA_c5db|2dDUjx3Fk~?LRQ7GXy(6+T z5KNBxck+Mrf8+l~|GU4fb8ui_Wk3UhZHZr2{6GKy)RPIe_L$OOB@D*mE*uUFn%Jcw efQf+-n=k;HAC|A!G+~AS0000kdg0009nNkl*n00Qixp6B9(Lgy*p~IIal_z=X^QudHJ1}^E~hK9-{v*5Qt#- z{wq$zD|}{GH?lE%s@NMj=*7nYb>AD_j2@`4U~2pZK7P|=?WfhWa$EeT3Rw9Hh&-bW zD8u?uo`(+us$E+sK$!9qNA}mjiannACYWKd9vtP?fqKUMeoc$2Ps8-R%me35Fq%um zp^WFkGEkSa*@?4|$HO?Jot$^0%Um2BA@|{OVft3P(}fdRlhI{Yy5}3w1-<2wgX227 z?aGN9-apEq*X6k926S2;hJ-VIjji%#jKd#?5Fy-oaTj42)FiKP!+Aa0Eky#q3WHrS z&iNu3zh*f&F2FF{d|@BC?nrFlJJD(?6nG9g?KO#UW1K5QhplRFIOFG`=iX%>pji{^ z-VU9qz`?m3bl9t%cmdjM&o@Skr{NqrIBnh`3UuYMd>h`IrNZi0&}Nq>jPnO*wLKH~ zS+sLaH;<5OCm;$f(3&M7;b%mwQCjRToVXM^TV?bJZ{;;N57Qi1KA+d1$#g#?oV*YX z-EUliW?Mx}6!~(QXyG-tk4@l2gQw8={YAt|@*=XGhvvcIU;I9_wsHr@N$8-ymqPR0 z)PAT6YQ-7ycHEmULEV%fa9{2on!Y?4<;}cGa-7_?FlM3wDoO0fsC+L}!%wjSVcZ=w z_B|H(320F-O(pjyfPNwBQ1@ub$S7d0{uVndbS$Y2pNj>aig$QhoIye4KGFhsC2Bjx zW8)cOX{s^be77=d(Hem_qP8@hf@#ta^+=)YOLlq^M9V0Q7Lo`l&_G$5;fb@TI)>MS z6_`FDJ1HzXuVtqxggl2h)K&r|mk+1y2_Ixa4TUU=Lg|m;m9}F@hFV^Mbk@$1Y+oMb zWvE9@)n9QTb16yvrKn-`XkbaxFs$HTmZbeH7wWfoU3q4&gqNcl)q|C~%exc)`0cLM xV0mA@ASQ16s;xe2X({Ue+?>6bs6%sUl z=5wmNX+x=cM?cG@Z*M=Wx3_WU$gY-DxaT(E)^*=hf#2W0ec7YVF<0AhkJ^MyIkdg0003|NklAE8oCqP6^J2Th#(YoIRh@jaAR$9RboY0TBz8UW*<_dt4i~Ob~DGonWs6N zDHmgSc1896;1BQmyd3=B*_8?FdJfKrFg8ajkxH`r#|ZrHE^89r%(@^&LP zaU~!CnZY3+ryJx4P}Ww4*H%5boJ10kK>!OHX7MpIn8%#kUo_liM?;42gn8)-kME$x z2MsMkajI;x=~Nv!fDG?7K@n$i6P3?9=x2F1U4N$!WpzoMSmnfG0tr9{|91dxvNb`P z@Pt@#g$O@Ts`FxkI-!h8tg$vKjo=3vo__&~$jeRS1pFY=P4m>Rm+nD{$E*W$KOT$2 zPbKiz-rYZ3=dFef!V_e{6&&9|na3K+gyQ5_WYNiu|AQk^Ne|QKRngBbo7l z(Z#9O-!Ih&DHL`j3;gi;Q|>%Z+C4MQ_`#CC(&&{H^BL7&PFp7vkdg0003JNkl4op8oHYTF~kcIgrY7-m_-=gLr9yLNJGQQw7)|`w#sbRZsr&`=k35ZXB7v& zrAY4&X89~W4uka=>r9+FQTkQ_0Xjv(1s6q9K=4z^2Y#M8=iEFR2+oy!;P`O)ls|M1 zIuQI&@&RmN2ixxJx2v>4V~zJtjVOI7`6Jp1XPnuIh2Wc#513n~OwGtZFjew_qkVIo zU$ytz5PVhoe+S{Q%8^qgO78)3#J^TUPB~o-R}j1l2nEaq#~hp3KyVxo3PjEPJUfe; z5d?1nLIL%=*r2h(o>L)8FG~K1Hs*i>8(RooD*3?jlzsNIZU(`=k`J^Rc{e+0HChnt dDXqo-;1^oHB*H?C%i{n5002ovPDHLkV1gg@i>m+t diff --git a/public/plugins/pdfjs-1.4.20/web/images/toolbarButton-viewThumbnail.png b/public/plugins/pdfjs-1.4.20/web/images/toolbarButton-viewThumbnail.png deleted file mode 100644 index 584ba55881f9a192ddea645d6d8525bab205e289..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 185 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf68a!PbLn;`1FBoz$1@g2!+&O99 zf!$e4*(j56dDxhu@!aQ2zL__%gK{mTjH$a~4^&m3zt@ zUaiuXsMG0KBR${yp3FT-zMKuGw=rB1}fgF!j@Pa jH|k4Ui#=T&Ln;{WUfJl$U?_6@q5hFP1#Umq154)g5P7Bj9n-%)M8r~??+_T|q$+)-V kia5^-HX{oL#i@)8E52we&r^_U0~*cX>FVdQ&MBb@0BWi($p8QV diff --git a/public/plugins/pdfjs-1.4.20/web/images/toolbarButton-zoomIn@2x.png b/public/plugins/pdfjs-1.4.20/web/images/toolbarButton-zoomIn@2x.png deleted file mode 100644 index d5d49d5ff107f01daa307bd0f89f98efc31eeec7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4U>7Fi*Ar*|t5-bTK29GBH`OkMs z;LzH(r}lQj`-ICFx#MpBpCa|4zl7P1x1vYwH*5P29X)2dhZ~*=Z`AwIt>?Q+{9j-O zLo#EO)0^fl@rko%`Z-H3Q%PTTaY>Is!UArQV{B|y4S@^{cTUS(`F>5r0%#?Jr>mdK II;Vst0FRG1RsaA1 diff --git a/public/plugins/pdfjs-1.4.20/web/images/toolbarButton-zoomOut.png b/public/plugins/pdfjs-1.4.20/web/images/toolbarButton-zoomOut.png deleted file mode 100644 index 156c26b941c12a13130e7a7c181d13300a85de89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 88 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6mdKI;Vst01!SC>;M1& diff --git a/public/plugins/pdfjs-1.4.20/web/images/toolbarButton-zoomOut@2x.png b/public/plugins/pdfjs-1.4.20/web/images/toolbarButton-zoomOut@2x.png deleted file mode 100644 index 959e1919d5a7a83a9c319de4d65ddaf6dc6c2763..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 109 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4UCY~;iAr*|t5x6B zz{uFh!Ff-a?~&O9p+bS}jK@2hEqD_O6oi80fl3Ux7>c+~q0wld=oSO}#SkfJR9T^xl_H+M9WCik>lDyqr z82-2SpV<%Ov6p!Iy0YKrWaF2XJ+}I0Cs4@O)5S4_<9c#}1C#!gI3K5HU3*qk7JfP^ zDKY)8>!ogI{c{Zp9jCt>`hHZ5LtHJS<$+UcLsOsrwZ)u_tda3Y_T1=KVi6Oo2<%Hy cUbUNH=6`p$$8L6yfCe*oy85}Sb4q9e0CZwJr2qf` diff --git a/public/plugins/pdfjs-1.4.20/web/images/treeitem-collapsed-rtl@2x.png b/public/plugins/pdfjs-1.4.20/web/images/treeitem-collapsed-rtl@2x.png deleted file mode 100644 index 84279368d985d74ba324ea3433b08ea5974bcc62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 205 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+0wn(&ce?|mSkfJR9T^xl_H+M9WCik>lDyqr z82-2SpV<%Ov6p!Iy0YKrWaF2XJ+}I0Cr~Ka)5S4F<9u?$0p>W5{V$RatZw-0daHY} z{<#OiNxzd0cN;5o92e?flIcpA_8_oj153M7i1!AKLt9v!1$YfeZs0{*8S1d;7*d)WUfO=0=x|MWgTe~DWM4fAaX}J diff --git a/public/plugins/pdfjs-1.4.20/web/images/treeitem-collapsed.png b/public/plugins/pdfjs-1.4.20/web/images/treeitem-collapsed.png deleted file mode 100644 index 06d4d3769672390920ddd9d423f52d7908fcfb36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 128 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>0wld=oSO}#+&x_!LpZJ{CnQuDzHAj@)~YCc zcJ!pUslH1WIk z$<$8#)-<<4$>7e1Lt^WdBv>MS0tC+_?dkdu(KF##vY``K|4|Ok95LarEgxHDk6!z_ xe}ZGN#WGb9Hnl@SJ`EdME-hi&#=_6Qka7RV*Qd`VTY>g4c)I$ztaD0e0sz~DGV1^U diff --git a/public/plugins/pdfjs-1.4.20/web/images/treeitem-expanded.png b/public/plugins/pdfjs-1.4.20/web/images/treeitem-expanded.png deleted file mode 100644 index c8d557351cd2fc80c3abd4b19e52924cd74780d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 125 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>0wld=oSO}#Ts&PILn;`P75MhNs4Zk;-DbE) zpt_L5GvPZo^g4)z4*}Q$iB}$ABb+ diff --git a/public/plugins/pdfjs-1.4.20/web/images/treeitem-expanded@2x.png b/public/plugins/pdfjs-1.4.20/web/images/treeitem-expanded@2x.png deleted file mode 100644 index 3b3b6103b356200d05caf7fa692cadf2c1e89043..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 172 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+0wn(&ce?|mialK%Ln;`P7Z_I div { - color: transparent; - position: absolute; - white-space: pre; - cursor: text; - -webkit-transform-origin: 0% 0%; - -moz-transform-origin: 0% 0%; - -o-transform-origin: 0% 0%; - -ms-transform-origin: 0% 0%; - transform-origin: 0% 0%; -} - -.textLayer .highlight { - margin: -1px; - padding: 1px; - - background-color: rgb(180, 0, 170); - border-radius: 4px; -} - -.textLayer .highlight.begin { - border-radius: 4px 0px 0px 4px; -} - -.textLayer .highlight.end { - border-radius: 0px 4px 4px 0px; -} - -.textLayer .highlight.middle { - border-radius: 0px; -} - -.textLayer .highlight.selected { - background-color: rgb(0, 100, 0); -} - -.textLayer ::selection { background: rgb(0,0,255); } -.textLayer ::-moz-selection { background: rgb(0,0,255); } - -.textLayer .endOfContent { - display: block; - position: absolute; - left: 0px; - top: 100%; - right: 0px; - bottom: 0px; - z-index: -1; - cursor: default; - -webkit-user-select: none; - -ms-user-select: none; - -moz-user-select: none; -} - -.textLayer .endOfContent.active { - top: 0px; -} - - -.annotationLayer section { - position: absolute; -} - -.annotationLayer .linkAnnotation > a { - position: absolute; - font-size: 1em; - top: 0; - left: 0; - width: 100%; - height: 100%; -} - -.annotationLayer .linkAnnotation > a /* -ms-a */ { - background: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7") 0 0 repeat; -} - -.annotationLayer .linkAnnotation > a:hover { - opacity: 0.2; - background: #ff0; - box-shadow: 0px 2px 10px #ff0; -} - -.annotationLayer .textAnnotation img { - position: absolute; - cursor: pointer; -} - -.annotationLayer .popupWrapper { - position: absolute; - width: 20em; -} - -.annotationLayer .popup { - position: absolute; - z-index: 200; - max-width: 20em; - background-color: #FFFF99; - box-shadow: 0px 2px 5px #333; - border-radius: 2px; - padding: 0.6em; - margin-left: 5px; - cursor: pointer; - word-wrap: break-word; -} - -.annotationLayer .popup h1 { - font-size: 1em; - border-bottom: 1px solid #000000; - padding-bottom: 0.2em; -} - -.annotationLayer .popup p { - padding-top: 0.2em; -} - -.annotationLayer .highlightAnnotation, -.annotationLayer .underlineAnnotation, -.annotationLayer .squigglyAnnotation, -.annotationLayer .strikeoutAnnotation { - cursor: pointer; -} - -.pdfViewer .canvasWrapper { - overflow: hidden; -} - -.pdfViewer .page { - direction: ltr; - width: 816px; - height: 1056px; - margin: 1px auto -8px auto; - position: relative; - overflow: visible; - border: 9px solid transparent; - background-clip: content-box; - border-image: url(images/shadow.png) 9 9 repeat; - background-color: white; -} - -.pdfViewer.removePageBorders .page { - margin: 0px auto 10px auto; - border: none; -} - -.pdfViewer .page canvas { - margin: 0; - display: block; -} - -.pdfViewer .page .loadingIcon { - position: absolute; - display: block; - left: 0; - top: 0; - right: 0; - bottom: 0; - background: url('images/loading-icon.gif') center no-repeat; -} - -.pdfPresentationMode:-webkit-full-screen .pdfViewer .page { - margin-bottom: 100%; - border: 0; -} - -.pdfPresentationMode:-moz-full-screen .pdfViewer .page { - margin-bottom: 100%; - border: 0; -} - -.pdfPresentationMode:-ms-fullscreen .pdfViewer .page { - margin-bottom: 100% !important; - border: 0; -} - -.pdfPresentationMode:fullscreen .pdfViewer .page { - margin-bottom: 100%; - border: 0; -} - -* { - padding: 0; - margin: 0; -} - -html { - height: 100%; - /* Font size is needed to make the activity bar the correct size. */ - font-size: 10px; -} - -body { - height: 100%; - background-color: #404040; - background-image: url(images/texture.png); -} - -body, -input, -button, -select { - font: message-box; - outline: none; -} - -.hidden { - display: none !important; -} -[hidden] { - display: none !important; -} - -#viewerContainer.pdfPresentationMode:-webkit-full-screen { - top: 0px; - border-top: 2px solid transparent; - background-color: #000; - width: 100%; - height: 100%; - overflow: hidden; - cursor: none; - -webkit-user-select: none; -} - -#viewerContainer.pdfPresentationMode:-moz-full-screen { - top: 0px; - border-top: 2px solid transparent; - background-color: #000; - width: 100%; - height: 100%; - overflow: hidden; - cursor: none; - -moz-user-select: none; -} - -#viewerContainer.pdfPresentationMode:-ms-fullscreen { - top: 0px !important; - border-top: 2px solid transparent; - width: 100%; - height: 100%; - overflow: hidden !important; - cursor: none; - -ms-user-select: none; -} - -#viewerContainer.pdfPresentationMode:-ms-fullscreen::-ms-backdrop { - background-color: #000; -} - -#viewerContainer.pdfPresentationMode:fullscreen { - top: 0px; - border-top: 2px solid transparent; - background-color: #000; - width: 100%; - height: 100%; - overflow: hidden; - cursor: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; -} - -.pdfPresentationMode:-webkit-full-screen a:not(.internalLink) { - display: none; -} - -.pdfPresentationMode:-moz-full-screen a:not(.internalLink) { - display: none; -} - -.pdfPresentationMode:-ms-fullscreen a:not(.internalLink) { - display: none !important; -} - -.pdfPresentationMode:fullscreen a:not(.internalLink) { - display: none; -} - -.pdfPresentationMode:-webkit-full-screen .textLayer > div { - cursor: none; -} - -.pdfPresentationMode:-moz-full-screen .textLayer > div { - cursor: none; -} - -.pdfPresentationMode:-ms-fullscreen .textLayer > div { - cursor: none; -} - -.pdfPresentationMode:fullscreen .textLayer > div { - cursor: none; -} - -.pdfPresentationMode.pdfPresentationModeControls > *, -.pdfPresentationMode.pdfPresentationModeControls .textLayer > div { - cursor: default; -} - -/* outer/inner center provides horizontal center */ -.outerCenter { - pointer-events: none; - position: relative; -} -html[dir='ltr'] .outerCenter { - float: right; - right: 50%; -} -html[dir='rtl'] .outerCenter { - float: left; - left: 50%; -} -.innerCenter { - pointer-events: auto; - position: relative; -} -html[dir='ltr'] .innerCenter { - float: right; - right: -50%; -} -html[dir='rtl'] .innerCenter { - float: left; - left: -50%; -} - -#outerContainer { - width: 100%; - height: 100%; - position: relative; -} - -#sidebarContainer { - position: absolute; - top: 0; - bottom: 0; - width: 200px; - visibility: hidden; - -webkit-transition-duration: 200ms; - -webkit-transition-timing-function: ease; - transition-duration: 200ms; - transition-timing-function: ease; - -} -html[dir='ltr'] #sidebarContainer { - -webkit-transition-property: left; - transition-property: left; - left: -200px; -} -html[dir='rtl'] #sidebarContainer { - -webkit-transition-property: right; - transition-property: right; - right: -200px; -} - -#outerContainer.sidebarMoving > #sidebarContainer, -#outerContainer.sidebarOpen > #sidebarContainer { - visibility: visible; -} -html[dir='ltr'] #outerContainer.sidebarOpen > #sidebarContainer { - left: 0px; -} -html[dir='rtl'] #outerContainer.sidebarOpen > #sidebarContainer { - right: 0px; -} - -#mainContainer { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - min-width: 320px; - -webkit-transition-duration: 200ms; - -webkit-transition-timing-function: ease; - transition-duration: 200ms; - transition-timing-function: ease; -} -html[dir='ltr'] #outerContainer.sidebarOpen > #mainContainer { - -webkit-transition-property: left; - transition-property: left; - left: 200px; -} -html[dir='rtl'] #outerContainer.sidebarOpen > #mainContainer { - -webkit-transition-property: right; - transition-property: right; - right: 200px; -} - -#sidebarContent { - top: 32px; - bottom: 0; - overflow: auto; - -webkit-overflow-scrolling: touch; - position: absolute; - width: 200px; - background-color: hsla(0,0%,0%,.1); -} -html[dir='ltr'] #sidebarContent { - left: 0; - box-shadow: inset -1px 0 0 hsla(0,0%,0%,.25); -} -html[dir='rtl'] #sidebarContent { - right: 0; - box-shadow: inset 1px 0 0 hsla(0,0%,0%,.25); -} - -#viewerContainer { - overflow: auto; - -webkit-overflow-scrolling: touch; - position: absolute; - top: 32px; - right: 0; - bottom: 0; - left: 0; - outline: none; -} -html[dir='ltr'] #viewerContainer { - box-shadow: inset 1px 0 0 hsla(0,0%,100%,.05); -} -html[dir='rtl'] #viewerContainer { - box-shadow: inset -1px 0 0 hsla(0,0%,100%,.05); -} - -.toolbar { - position: relative; - left: 0; - right: 0; - z-index: 9999; - cursor: default; -} - -#toolbarContainer { - width: 100%; -} - -#toolbarSidebar { - width: 200px; - height: 32px; - background-color: #424242; /* fallback */ - background-image: url(images/texture.png), - linear-gradient(hsla(0,0%,30%,.99), hsla(0,0%,25%,.95)); -} -html[dir='ltr'] #toolbarSidebar { - box-shadow: inset -1px 0 0 rgba(0, 0, 0, 0.25), - inset 0 -1px 0 hsla(0,0%,100%,.05), - 0 1px 0 hsla(0,0%,0%,.15), - 0 0 1px hsla(0,0%,0%,.1); -} -html[dir='rtl'] #toolbarSidebar { - box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.25), - inset 0 1px 0 hsla(0,0%,100%,.05), - 0 1px 0 hsla(0,0%,0%,.15), - 0 0 1px hsla(0,0%,0%,.1); -} - -#toolbarContainer, .findbar, .secondaryToolbar { - position: relative; - height: 32px; - background-color: #474747; /* fallback */ - background-image: url(images/texture.png), - linear-gradient(hsla(0,0%,32%,.99), hsla(0,0%,27%,.95)); -} -html[dir='ltr'] #toolbarContainer, .findbar, .secondaryToolbar { - box-shadow: inset 1px 0 0 hsla(0,0%,100%,.08), - inset 0 1px 1px hsla(0,0%,0%,.15), - inset 0 -1px 0 hsla(0,0%,100%,.05), - 0 1px 0 hsla(0,0%,0%,.15), - 0 1px 1px hsla(0,0%,0%,.1); -} -html[dir='rtl'] #toolbarContainer, .findbar, .secondaryToolbar { - box-shadow: inset -1px 0 0 hsla(0,0%,100%,.08), - inset 0 1px 1px hsla(0,0%,0%,.15), - inset 0 -1px 0 hsla(0,0%,100%,.05), - 0 1px 0 hsla(0,0%,0%,.15), - 0 1px 1px hsla(0,0%,0%,.1); -} - -#toolbarViewer { - height: 32px; -} - -#loadingBar { - position: relative; - width: 100%; - height: 4px; - background-color: #333; - border-bottom: 1px solid #333; -} - -#loadingBar .progress { - position: absolute; - top: 0; - left: 0; - width: 0%; - height: 100%; - background-color: #ddd; - overflow: hidden; - -webkit-transition: width 200ms; - transition: width 200ms; -} - -@-webkit-keyframes progressIndeterminate { - 0% { left: -142px; } - 100% { left: 0; } -} - -@keyframes progressIndeterminate { - 0% { left: -142px; } - 100% { left: 0; } -} - -#loadingBar .progress.indeterminate { - background-color: #999; - -webkit-transition: none; - transition: none; -} - -#loadingBar .progress.indeterminate .glimmer { - position: absolute; - top: 0; - left: 0; - height: 100%; - width: calc(100% + 150px); - - background: repeating-linear-gradient(135deg, - #bbb 0, #999 5px, - #999 45px, #ddd 55px, - #ddd 95px, #bbb 100px); - - -webkit-animation: progressIndeterminate 950ms linear infinite; - animation: progressIndeterminate 950ms linear infinite; -} - -.findbar, .secondaryToolbar { - top: 32px; - position: absolute; - z-index: 10000; - height: 32px; - - min-width: 16px; - padding: 0px 6px 0px 6px; - margin: 4px 2px 4px 2px; - color: hsl(0,0%,85%); - font-size: 12px; - line-height: 14px; - text-align: left; - cursor: default; -} - -html[dir='ltr'] .findbar { - left: 68px; -} - -html[dir='rtl'] .findbar { - right: 68px; -} - -.findbar label { - -webkit-user-select: none; - -moz-user-select: none; -} - -#findInput[data-status="pending"] { - background-image: url(images/loading-small.png); - background-repeat: no-repeat; - background-position: right; -} -html[dir='rtl'] #findInput[data-status="pending"] { - background-position: left; -} - -.secondaryToolbar { - padding: 6px; - height: auto; - z-index: 30000; -} -html[dir='ltr'] .secondaryToolbar { - right: 4px; -} -html[dir='rtl'] .secondaryToolbar { - left: 4px; -} - -#secondaryToolbarButtonContainer { - max-width: 200px; - max-height: 400px; - overflow-y: auto; - -webkit-overflow-scrolling: touch; - margin-bottom: -4px; -} - -.doorHanger, -.doorHangerRight { - border: 1px solid hsla(0,0%,0%,.5); - border-radius: 2px; - box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3); -} -.doorHanger:after, .doorHanger:before, -.doorHangerRight:after, .doorHangerRight:before { - bottom: 100%; - border: solid transparent; - content: " "; - height: 0; - width: 0; - position: absolute; - pointer-events: none; -} -.doorHanger:after, -.doorHangerRight:after { - border-bottom-color: hsla(0,0%,32%,.99); - border-width: 8px; -} -.doorHanger:before, -.doorHangerRight:before { - border-bottom-color: hsla(0,0%,0%,.5); - border-width: 9px; -} - -html[dir='ltr'] .doorHanger:after, -html[dir='rtl'] .doorHangerRight:after { - left: 13px; - margin-left: -8px; -} - -html[dir='ltr'] .doorHanger:before, -html[dir='rtl'] .doorHangerRight:before { - left: 13px; - margin-left: -9px; -} - -html[dir='rtl'] .doorHanger:after, -html[dir='ltr'] .doorHangerRight:after { - right: 13px; - margin-right: -8px; -} - -html[dir='rtl'] .doorHanger:before, -html[dir='ltr'] .doorHangerRight:before { - right: 13px; - margin-right: -9px; -} - -#findResultsCount { - background-color: hsl(0, 0%, 85%); - color: hsl(0, 0%, 32%); - text-align: center; - padding: 3px 4px; -} - -#findMsg { - font-style: italic; - color: #A6B7D0; -} - -#findInput.notFound { - background-color: rgb(255, 102, 102); -} - -html[dir='ltr'] #toolbarViewerLeft { - margin-left: -1px; -} -html[dir='rtl'] #toolbarViewerRight { - margin-right: -1px; -} - -html[dir='ltr'] #toolbarViewerLeft, -html[dir='rtl'] #toolbarViewerRight { - position: absolute; - top: 0; - left: 0; -} -html[dir='ltr'] #toolbarViewerRight, -html[dir='rtl'] #toolbarViewerLeft { - position: absolute; - top: 0; - right: 0; -} -html[dir='ltr'] #toolbarViewerLeft > *, -html[dir='ltr'] #toolbarViewerMiddle > *, -html[dir='ltr'] #toolbarViewerRight > *, -html[dir='ltr'] .findbar > * { - position: relative; - float: left; -} -html[dir='rtl'] #toolbarViewerLeft > *, -html[dir='rtl'] #toolbarViewerMiddle > *, -html[dir='rtl'] #toolbarViewerRight > *, -html[dir='rtl'] .findbar > * { - position: relative; - float: right; -} - -html[dir='ltr'] .splitToolbarButton { - margin: 3px 2px 4px 0; - display: inline-block; -} -html[dir='rtl'] .splitToolbarButton { - margin: 3px 0 4px 2px; - display: inline-block; -} -html[dir='ltr'] .splitToolbarButton > .toolbarButton { - border-radius: 0; - float: left; -} -html[dir='rtl'] .splitToolbarButton > .toolbarButton { - border-radius: 0; - float: right; -} - -.toolbarButton, -.secondaryToolbarButton, -.overlayButton { - border: 0 none; - background: none; - width: 32px; - height: 25px; -} - -.toolbarButton > span { - display: inline-block; - width: 0; - height: 0; - overflow: hidden; -} - -.toolbarButton[disabled], -.secondaryToolbarButton[disabled], -.overlayButton[disabled] { - opacity: .5; -} - -.toolbarButton.group { - margin-right: 0; -} - -.splitToolbarButton.toggled .toolbarButton { - margin: 0; -} - -.splitToolbarButton:hover > .toolbarButton, -.splitToolbarButton:focus > .toolbarButton, -.splitToolbarButton.toggled > .toolbarButton, -.toolbarButton.textButton { - background-color: hsla(0,0%,0%,.12); - background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0)); - background-clip: padding-box; - border: 1px solid hsla(0,0%,0%,.35); - border-color: hsla(0,0%,0%,.32) hsla(0,0%,0%,.38) hsla(0,0%,0%,.42); - box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset, - 0 0 1px hsla(0,0%,100%,.15) inset, - 0 1px 0 hsla(0,0%,100%,.05); - -webkit-transition-property: background-color, border-color, box-shadow; - -webkit-transition-duration: 150ms; - -webkit-transition-timing-function: ease; - transition-property: background-color, border-color, box-shadow; - transition-duration: 150ms; - transition-timing-function: ease; - -} -.splitToolbarButton > .toolbarButton:hover, -.splitToolbarButton > .toolbarButton:focus, -.dropdownToolbarButton:hover, -.overlayButton:hover, -.overlayButton:focus, -.toolbarButton.textButton:hover, -.toolbarButton.textButton:focus { - background-color: hsla(0,0%,0%,.2); - box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset, - 0 0 1px hsla(0,0%,100%,.15) inset, - 0 0 1px hsla(0,0%,0%,.05); - z-index: 199; -} -.splitToolbarButton > .toolbarButton { - position: relative; -} -html[dir='ltr'] .splitToolbarButton > .toolbarButton:first-child, -html[dir='rtl'] .splitToolbarButton > .toolbarButton:last-child { - position: relative; - margin: 0; - margin-right: -1px; - border-top-left-radius: 2px; - border-bottom-left-radius: 2px; - border-right-color: transparent; -} -html[dir='ltr'] .splitToolbarButton > .toolbarButton:last-child, -html[dir='rtl'] .splitToolbarButton > .toolbarButton:first-child { - position: relative; - margin: 0; - margin-left: -1px; - border-top-right-radius: 2px; - border-bottom-right-radius: 2px; - border-left-color: transparent; -} -.splitToolbarButtonSeparator { - padding: 8px 0; - width: 1px; - background-color: hsla(0,0%,0%,.5); - z-index: 99; - box-shadow: 0 0 0 1px hsla(0,0%,100%,.08); - display: inline-block; - margin: 5px 0; -} -html[dir='ltr'] .splitToolbarButtonSeparator { - float: left; -} -html[dir='rtl'] .splitToolbarButtonSeparator { - float: right; -} -.splitToolbarButton:hover > .splitToolbarButtonSeparator, -.splitToolbarButton.toggled > .splitToolbarButtonSeparator { - padding: 12px 0; - margin: 1px 0; - box-shadow: 0 0 0 1px hsla(0,0%,100%,.03); - -webkit-transition-property: padding; - -webkit-transition-duration: 10ms; - -webkit-transition-timing-function: ease; - transition-property: padding; - transition-duration: 10ms; - transition-timing-function: ease; -} - -.toolbarButton, -.dropdownToolbarButton, -.secondaryToolbarButton, -.overlayButton { - min-width: 16px; - padding: 2px 6px 0; - border: 1px solid transparent; - border-radius: 2px; - color: hsla(0,0%,100%,.8); - font-size: 12px; - line-height: 14px; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - /* Opera does not support user-select, use <... unselectable="on"> instead */ - cursor: default; - -webkit-transition-property: background-color, border-color, box-shadow; - -webkit-transition-duration: 150ms; - -webkit-transition-timing-function: ease; - transition-property: background-color, border-color, box-shadow; - transition-duration: 150ms; - transition-timing-function: ease; -} - -html[dir='ltr'] .toolbarButton, -html[dir='ltr'] .overlayButton, -html[dir='ltr'] .dropdownToolbarButton { - margin: 3px 2px 4px 0; -} -html[dir='rtl'] .toolbarButton, -html[dir='rtl'] .overlayButton, -html[dir='rtl'] .dropdownToolbarButton { - margin: 3px 0 4px 2px; -} - -.toolbarButton:hover, -.toolbarButton:focus, -.dropdownToolbarButton, -.overlayButton, -.secondaryToolbarButton:hover, -.secondaryToolbarButton:focus { - background-color: hsla(0,0%,0%,.12); - background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0)); - background-clip: padding-box; - border: 1px solid hsla(0,0%,0%,.35); - border-color: hsla(0,0%,0%,.32) hsla(0,0%,0%,.38) hsla(0,0%,0%,.42); - box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset, - 0 0 1px hsla(0,0%,100%,.15) inset, - 0 1px 0 hsla(0,0%,100%,.05); -} - -.toolbarButton:hover:active, -.overlayButton:hover:active, -.dropdownToolbarButton:hover:active, -.secondaryToolbarButton:hover:active { - background-color: hsla(0,0%,0%,.2); - background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0)); - border-color: hsla(0,0%,0%,.35) hsla(0,0%,0%,.4) hsla(0,0%,0%,.45); - box-shadow: 0 1px 1px hsla(0,0%,0%,.1) inset, - 0 0 1px hsla(0,0%,0%,.2) inset, - 0 1px 0 hsla(0,0%,100%,.05); - -webkit-transition-property: background-color, border-color, box-shadow; - -webkit-transition-duration: 10ms; - -webkit-transition-timing-function: linear; - transition-property: background-color, border-color, box-shadow; - transition-duration: 10ms; - transition-timing-function: linear; -} - -.toolbarButton.toggled, -.splitToolbarButton.toggled > .toolbarButton.toggled, -.secondaryToolbarButton.toggled { - background-color: hsla(0,0%,0%,.3); - background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0)); - border-color: hsla(0,0%,0%,.4) hsla(0,0%,0%,.45) hsla(0,0%,0%,.5); - box-shadow: 0 1px 1px hsla(0,0%,0%,.1) inset, - 0 0 1px hsla(0,0%,0%,.2) inset, - 0 1px 0 hsla(0,0%,100%,.05); - -webkit-transition-property: background-color, border-color, box-shadow; - -webkit-transition-duration: 10ms; - -webkit-transition-timing-function: linear; - transition-property: background-color, border-color, box-shadow; - transition-duration: 10ms; - transition-timing-function: linear; -} - -.toolbarButton.toggled:hover:active, -.splitToolbarButton.toggled > .toolbarButton.toggled:hover:active, -.secondaryToolbarButton.toggled:hover:active { - background-color: hsla(0,0%,0%,.4); - border-color: hsla(0,0%,0%,.4) hsla(0,0%,0%,.5) hsla(0,0%,0%,.55); - box-shadow: 0 1px 1px hsla(0,0%,0%,.2) inset, - 0 0 1px hsla(0,0%,0%,.3) inset, - 0 1px 0 hsla(0,0%,100%,.05); -} - -.dropdownToolbarButton { - width: 120px; - max-width: 120px; - padding: 0; - overflow: hidden; - background: url(images/toolbarButton-menuArrows.png) no-repeat; -} -html[dir='ltr'] .dropdownToolbarButton { - background-position: 95%; -} -html[dir='rtl'] .dropdownToolbarButton { - background-position: 5%; -} - -.dropdownToolbarButton > select { - min-width: 140px; - font-size: 12px; - color: hsl(0,0%,95%); - margin: 0; - padding: 3px 2px 2px; - border: none; - background: rgba(0,0,0,0); /* Opera does not support 'transparent' -
    - -
    - -
    - - - - - - -
    - - - -
    -
    -
    -
    - -
    - -
    - -
    - -
    - - - -
    -
    - - - - - - - - - Current View - - -
    - - -
    -
    -
    -
    - -
    - -
    - - - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - - - - - - - - -
    -
    -
    - - - - - - - -
    - - - - - diff --git a/public/plugins/pdfjs-1.4.20/web/viewer.js b/public/plugins/pdfjs-1.4.20/web/viewer.js deleted file mode 100644 index 1fc9d7bfe..000000000 --- a/public/plugins/pdfjs-1.4.20/web/viewer.js +++ /dev/null @@ -1,7952 +0,0 @@ -/* Copyright 2012 Mozilla Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* globals PDFJS, PDFBug, FirefoxCom, Stats, ProgressBar, - DownloadManager, getFileName, getPDFFileNameFromURL, - PDFHistory, Preferences, SidebarView, ViewHistory, Stats, - PDFThumbnailViewer, URL, noContextMenuHandler, SecondaryToolbar, - PasswordPrompt, PDFPresentationMode, PDFDocumentProperties, HandTool, - Promise, PDFLinkService, PDFOutlineView, PDFAttachmentView, - OverlayManager, PDFFindController, PDFFindBar, PDFViewer, - PDFRenderingQueue, PresentationModeState, parseQueryString, - RenderingStates, UNKNOWN_SCALE, DEFAULT_SCALE_VALUE, - IGNORE_CURRENT_POSITION_ON_ZOOM: true */ - -'use strict'; - -var DEFAULT_URL = 'compressed.tracemonkey-pldi-09.pdf'; -var DEFAULT_SCALE_DELTA = 1.1; -var MIN_SCALE = 0.25; -var MAX_SCALE = 10.0; -var SCALE_SELECT_CONTAINER_PADDING = 8; -var SCALE_SELECT_PADDING = 22; -var PAGE_NUMBER_LOADING_INDICATOR = 'visiblePageIsLoading'; -var DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT = 5000; - -function configure(PDFJS) { - PDFJS.imageResourcesPath = './images/'; - PDFJS.workerSrc = '../build/pdf.worker.js'; -} - -var CSS_UNITS = 96.0 / 72.0; -var DEFAULT_SCALE_VALUE = 'auto'; -var DEFAULT_SCALE = 1.0; -var UNKNOWN_SCALE = 0; -var MAX_AUTO_SCALE = 1.25; -var SCROLLBAR_PADDING = 40; -var VERTICAL_PADDING = 5; - -function getFileName(url) { - var anchor = url.indexOf('#'); - var query = url.indexOf('?'); - var end = Math.min( - anchor > 0 ? anchor : url.length, - query > 0 ? query : url.length); - return url.substring(url.lastIndexOf('/', end) + 1, end); -} - -/** - * Returns scale factor for the canvas. It makes sense for the HiDPI displays. - * @return {Object} The object with horizontal (sx) and vertical (sy) - scales. The scaled property is set to false if scaling is - not required, true otherwise. - */ -function getOutputScale(ctx) { - var devicePixelRatio = window.devicePixelRatio || 1; - var backingStoreRatio = ctx.webkitBackingStorePixelRatio || - ctx.mozBackingStorePixelRatio || - ctx.msBackingStorePixelRatio || - ctx.oBackingStorePixelRatio || - ctx.backingStorePixelRatio || 1; - var pixelRatio = devicePixelRatio / backingStoreRatio; - return { - sx: pixelRatio, - sy: pixelRatio, - scaled: pixelRatio !== 1 - }; -} - -/** - * Scrolls specified element into view of its parent. - * @param {Object} element - The element to be visible. - * @param {Object} spot - An object with optional top and left properties, - * specifying the offset from the top left edge. - * @param {boolean} skipOverflowHiddenElements - Ignore elements that have - * the CSS rule `overflow: hidden;` set. The default is false. - */ -function scrollIntoView(element, spot, skipOverflowHiddenElements) { - // Assuming offsetParent is available (it's not available when viewer is in - // hidden iframe or object). We have to scroll: if the offsetParent is not set - // producing the error. See also animationStartedClosure. - var parent = element.offsetParent; - if (!parent) { - console.error('offsetParent is not set -- cannot scroll'); - return; - } - var checkOverflow = skipOverflowHiddenElements || false; - var offsetY = element.offsetTop + element.clientTop; - var offsetX = element.offsetLeft + element.clientLeft; - while (parent.clientHeight === parent.scrollHeight || - (checkOverflow && getComputedStyle(parent).overflow === 'hidden')) { - if (parent.dataset._scaleY) { - offsetY /= parent.dataset._scaleY; - offsetX /= parent.dataset._scaleX; - } - offsetY += parent.offsetTop; - offsetX += parent.offsetLeft; - parent = parent.offsetParent; - if (!parent) { - return; // no need to scroll - } - } - if (spot) { - if (spot.top !== undefined) { - offsetY += spot.top; - } - if (spot.left !== undefined) { - offsetX += spot.left; - parent.scrollLeft = offsetX; - } - } - parent.scrollTop = offsetY; -} - -/** - * Helper function to start monitoring the scroll event and converting them into - * PDF.js friendly one: with scroll debounce and scroll direction. - */ -function watchScroll(viewAreaElement, callback) { - var debounceScroll = function debounceScroll(evt) { - if (rAF) { - return; - } - // schedule an invocation of scroll for next animation frame. - rAF = window.requestAnimationFrame(function viewAreaElementScrolled() { - rAF = null; - - var currentY = viewAreaElement.scrollTop; - var lastY = state.lastY; - if (currentY !== lastY) { - state.down = currentY > lastY; - } - state.lastY = currentY; - callback(state); - }); - }; - - var state = { - down: true, - lastY: viewAreaElement.scrollTop, - _eventHandler: debounceScroll - }; - - var rAF = null; - viewAreaElement.addEventListener('scroll', debounceScroll, true); - return state; -} - -/** - * Helper function to parse query string (e.g. ?param1=value&parm2=...). - */ -function parseQueryString(query) { - var parts = query.split('&'); - var params = {}; - for (var i = 0, ii = parts.length; i < ii; ++i) { - var param = parts[i].split('='); - var key = param[0].toLowerCase(); - var value = param.length > 1 ? param[1] : null; - params[decodeURIComponent(key)] = decodeURIComponent(value); - } - return params; -} - -/** - * Use binary search to find the index of the first item in a given array which - * passes a given condition. The items are expected to be sorted in the sense - * that if the condition is true for one item in the array, then it is also true - * for all following items. - * - * @returns {Number} Index of the first array element to pass the test, - * or |items.length| if no such element exists. - */ -function binarySearchFirstItem(items, condition) { - var minIndex = 0; - var maxIndex = items.length - 1; - - if (items.length === 0 || !condition(items[maxIndex])) { - return items.length; - } - if (condition(items[minIndex])) { - return minIndex; - } - - while (minIndex < maxIndex) { - var currentIndex = (minIndex + maxIndex) >> 1; - var currentItem = items[currentIndex]; - if (condition(currentItem)) { - maxIndex = currentIndex; - } else { - minIndex = currentIndex + 1; - } - } - return minIndex; /* === maxIndex */ -} - -/** - * Approximates float number as a fraction using Farey sequence (max order - * of 8). - * @param {number} x - Positive float number. - * @returns {Array} Estimated fraction: the first array item is a numerator, - * the second one is a denominator. - */ -function approximateFraction(x) { - // Fast paths for int numbers or their inversions. - if (Math.floor(x) === x) { - return [x, 1]; - } - var xinv = 1 / x; - var limit = 8; - if (xinv > limit) { - return [1, limit]; - } else if (Math.floor(xinv) === xinv) { - return [1, xinv]; - } - - var x_ = x > 1 ? xinv : x; - // a/b and c/d are neighbours in Farey sequence. - var a = 0, b = 1, c = 1, d = 1; - // Limiting search to order 8. - while (true) { - // Generating next term in sequence (order of q). - var p = a + c, q = b + d; - if (q > limit) { - break; - } - if (x_ <= p / q) { - c = p; d = q; - } else { - a = p; b = q; - } - } - // Select closest of the neighbours to x. - if (x_ - a / b < c / d - x_) { - return x_ === x ? [a, b] : [b, a]; - } else { - return x_ === x ? [c, d] : [d, c]; - } -} - -function roundToDivide(x, div) { - var r = x % div; - return r === 0 ? x : Math.round(x - r + div); -} - -/** - * Generic helper to find out what elements are visible within a scroll pane. - */ -function getVisibleElements(scrollEl, views, sortByVisibility) { - var top = scrollEl.scrollTop, bottom = top + scrollEl.clientHeight; - var left = scrollEl.scrollLeft, right = left + scrollEl.clientWidth; - - function isElementBottomBelowViewTop(view) { - var element = view.div; - var elementBottom = - element.offsetTop + element.clientTop + element.clientHeight; - return elementBottom > top; - } - - var visible = [], view, element; - var currentHeight, viewHeight, hiddenHeight, percentHeight; - var currentWidth, viewWidth; - var firstVisibleElementInd = (views.length === 0) ? 0 : - binarySearchFirstItem(views, isElementBottomBelowViewTop); - - for (var i = firstVisibleElementInd, ii = views.length; i < ii; i++) { - view = views[i]; - element = view.div; - currentHeight = element.offsetTop + element.clientTop; - viewHeight = element.clientHeight; - - if (currentHeight > bottom) { - break; - } - - currentWidth = element.offsetLeft + element.clientLeft; - viewWidth = element.clientWidth; - if (currentWidth + viewWidth < left || currentWidth > right) { - continue; - } - hiddenHeight = Math.max(0, top - currentHeight) + - Math.max(0, currentHeight + viewHeight - bottom); - percentHeight = ((viewHeight - hiddenHeight) * 100 / viewHeight) | 0; - - visible.push({ - id: view.id, - x: currentWidth, - y: currentHeight, - view: view, - percent: percentHeight - }); - } - - var first = visible[0]; - var last = visible[visible.length - 1]; - - if (sortByVisibility) { - visible.sort(function(a, b) { - var pc = a.percent - b.percent; - if (Math.abs(pc) > 0.001) { - return -pc; - } - return a.id - b.id; // ensure stability - }); - } - return {first: first, last: last, views: visible}; -} - -/** - * Event handler to suppress context menu. - */ -function noContextMenuHandler(e) { - e.preventDefault(); -} - -/** - * Returns the filename or guessed filename from the url (see issue 3455). - * url {String} The original PDF location. - * @return {String} Guessed PDF file name. - */ -function getPDFFileNameFromURL(url) { - var reURI = /^(?:([^:]+:)?\/\/[^\/]+)?([^?#]*)(\?[^#]*)?(#.*)?$/; - // SCHEME HOST 1.PATH 2.QUERY 3.REF - // Pattern to get last matching NAME.pdf - var reFilename = /[^\/?#=]+\.pdf\b(?!.*\.pdf\b)/i; - var splitURI = reURI.exec(url); - var suggestedFilename = reFilename.exec(splitURI[1]) || - reFilename.exec(splitURI[2]) || - reFilename.exec(splitURI[3]); - if (suggestedFilename) { - suggestedFilename = suggestedFilename[0]; - if (suggestedFilename.indexOf('%') !== -1) { - // URL-encoded %2Fpath%2Fto%2Ffile.pdf should be file.pdf - try { - suggestedFilename = - reFilename.exec(decodeURIComponent(suggestedFilename))[0]; - } catch(e) { // Possible (extremely rare) errors: - // URIError "Malformed URI", e.g. for "%AA.pdf" - // TypeError "null has no properties", e.g. for "%2F.pdf" - } - } - } - return suggestedFilename || 'document.pdf'; -} - -var ProgressBar = (function ProgressBarClosure() { - - function clamp(v, min, max) { - return Math.min(Math.max(v, min), max); - } - - function ProgressBar(id, opts) { - this.visible = true; - - // Fetch the sub-elements for later. - this.div = document.querySelector(id + ' .progress'); - - // Get the loading bar element, so it can be resized to fit the viewer. - this.bar = this.div.parentNode; - - // Get options, with sensible defaults. - this.height = opts.height || 100; - this.width = opts.width || 100; - this.units = opts.units || '%'; - - // Initialize heights. - this.div.style.height = this.height + this.units; - this.percent = 0; - } - - ProgressBar.prototype = { - - updateBar: function ProgressBar_updateBar() { - if (this._indeterminate) { - this.div.classList.add('indeterminate'); - this.div.style.width = this.width + this.units; - return; - } - - this.div.classList.remove('indeterminate'); - var progressSize = this.width * this._percent / 100; - this.div.style.width = progressSize + this.units; - }, - - get percent() { - return this._percent; - }, - - set percent(val) { - this._indeterminate = isNaN(val); - this._percent = clamp(val, 0, 100); - this.updateBar(); - }, - - setWidth: function ProgressBar_setWidth(viewer) { - if (viewer) { - var container = viewer.parentNode; - var scrollbarWidth = container.offsetWidth - viewer.offsetWidth; - if (scrollbarWidth > 0) { - this.bar.setAttribute('style', 'width: calc(100% - ' + - scrollbarWidth + 'px);'); - } - } - }, - - hide: function ProgressBar_hide() { - if (!this.visible) { - return; - } - this.visible = false; - this.bar.classList.add('hidden'); - document.body.classList.remove('loadingInProgress'); - }, - - show: function ProgressBar_show() { - if (this.visible) { - return; - } - this.visible = true; - document.body.classList.add('loadingInProgress'); - this.bar.classList.remove('hidden'); - } - }; - - return ProgressBar; -})(); - - - -var DEFAULT_PREFERENCES = { - showPreviousViewOnLoad: true, - defaultZoomValue: '', - sidebarViewOnLoad: 0, - enableHandToolOnLoad: false, - enableWebGL: false, - pdfBugEnabled: false, - disableRange: false, - disableStream: false, - disableAutoFetch: false, - disableFontFace: false, - disableTextLayer: false, - useOnlyCssZoom: false, - externalLinkTarget: 0, -}; - - -var SidebarView = { - NONE: 0, - THUMBS: 1, - OUTLINE: 2, - ATTACHMENTS: 3 -}; - -/** - * Preferences - Utility for storing persistent settings. - * Used for settings that should be applied to all opened documents, - * or every time the viewer is loaded. - */ -var Preferences = { - prefs: Object.create(DEFAULT_PREFERENCES), - isInitializedPromiseResolved: false, - initializedPromise: null, - - /** - * Initialize and fetch the current preference values from storage. - * @return {Promise} A promise that is resolved when the preferences - * have been initialized. - */ - initialize: function preferencesInitialize() { - return this.initializedPromise = - this._readFromStorage(DEFAULT_PREFERENCES).then(function(prefObj) { - this.isInitializedPromiseResolved = true; - if (prefObj) { - this.prefs = prefObj; - } - }.bind(this)); - }, - - /** - * Stub function for writing preferences to storage. - * NOTE: This should be overridden by a build-specific function defined below. - * @param {Object} prefObj The preferences that should be written to storage. - * @return {Promise} A promise that is resolved when the preference values - * have been written. - */ - _writeToStorage: function preferences_writeToStorage(prefObj) { - return Promise.resolve(); - }, - - /** - * Stub function for reading preferences from storage. - * NOTE: This should be overridden by a build-specific function defined below. - * @param {Object} prefObj The preferences that should be read from storage. - * @return {Promise} A promise that is resolved with an {Object} containing - * the preferences that have been read. - */ - _readFromStorage: function preferences_readFromStorage(prefObj) { - return Promise.resolve(); - }, - - /** - * Reset the preferences to their default values and update storage. - * @return {Promise} A promise that is resolved when the preference values - * have been reset. - */ - reset: function preferencesReset() { - return this.initializedPromise.then(function() { - this.prefs = Object.create(DEFAULT_PREFERENCES); - return this._writeToStorage(DEFAULT_PREFERENCES); - }.bind(this)); - }, - - /** - * Replace the current preference values with the ones from storage. - * @return {Promise} A promise that is resolved when the preference values - * have been updated. - */ - reload: function preferencesReload() { - return this.initializedPromise.then(function () { - this._readFromStorage(DEFAULT_PREFERENCES).then(function(prefObj) { - if (prefObj) { - this.prefs = prefObj; - } - }.bind(this)); - }.bind(this)); - }, - - /** - * Set the value of a preference. - * @param {string} name The name of the preference that should be changed. - * @param {boolean|number|string} value The new value of the preference. - * @return {Promise} A promise that is resolved when the value has been set, - * provided that the preference exists and the types match. - */ - set: function preferencesSet(name, value) { - return this.initializedPromise.then(function () { - if (DEFAULT_PREFERENCES[name] === undefined) { - throw new Error('preferencesSet: \'' + name + '\' is undefined.'); - } else if (value === undefined) { - throw new Error('preferencesSet: no value is specified.'); - } - var valueType = typeof value; - var defaultType = typeof DEFAULT_PREFERENCES[name]; - - if (valueType !== defaultType) { - if (valueType === 'number' && defaultType === 'string') { - value = value.toString(); - } else { - throw new Error('Preferences_set: \'' + value + '\' is a \"' + - valueType + '\", expected \"' + defaultType + '\".'); - } - } else { - if (valueType === 'number' && (value | 0) !== value) { - throw new Error('Preferences_set: \'' + value + - '\' must be an \"integer\".'); - } - } - this.prefs[name] = value; - return this._writeToStorage(this.prefs); - }.bind(this)); - }, - - /** - * Get the value of a preference. - * @param {string} name The name of the preference whose value is requested. - * @return {Promise} A promise that is resolved with a {boolean|number|string} - * containing the value of the preference. - */ - get: function preferencesGet(name) { - return this.initializedPromise.then(function () { - var defaultValue = DEFAULT_PREFERENCES[name]; - - if (defaultValue === undefined) { - throw new Error('preferencesGet: \'' + name + '\' is undefined.'); - } else { - var prefValue = this.prefs[name]; - - if (prefValue !== undefined) { - return prefValue; - } - } - return defaultValue; - }.bind(this)); - } -}; - - -Preferences._writeToStorage = function (prefObj) { - return new Promise(function (resolve) { - localStorage.setItem('pdfjs.preferences', JSON.stringify(prefObj)); - resolve(); - }); -}; - -Preferences._readFromStorage = function (prefObj) { - return new Promise(function (resolve) { - var readPrefs = JSON.parse(localStorage.getItem('pdfjs.preferences')); - resolve(readPrefs); - }); -}; - - -(function mozPrintCallbackPolyfillClosure() { - if ('mozPrintCallback' in document.createElement('canvas')) { - return; - } - // Cause positive result on feature-detection: - HTMLCanvasElement.prototype.mozPrintCallback = undefined; - - var canvases; // During print task: non-live NodeList of elements - var index; // Index of element that is being processed - - var print = window.print; - window.print = function print() { - if (canvases) { - console.warn('Ignored window.print() because of a pending print job.'); - return; - } - try { - dispatchEvent('beforeprint'); - } finally { - canvases = document.querySelectorAll('canvas'); - index = -1; - next(); - } - }; - - function dispatchEvent(eventType) { - var event = document.createEvent('CustomEvent'); - event.initCustomEvent(eventType, false, false, 'custom'); - window.dispatchEvent(event); - } - - function next() { - if (!canvases) { - return; // Print task cancelled by user (state reset in abort()) - } - - renderProgress(); - if (++index < canvases.length) { - var canvas = canvases[index]; - if (typeof canvas.mozPrintCallback === 'function') { - canvas.mozPrintCallback({ - context: canvas.getContext('2d'), - abort: abort, - done: next - }); - } else { - next(); - } - } else { - renderProgress(); - print.call(window); - setTimeout(abort, 20); // Tidy-up - } - } - - function abort() { - if (canvases) { - canvases = null; - renderProgress(); - dispatchEvent('afterprint'); - } - } - - function renderProgress() { - var progressContainer = document.getElementById('mozPrintCallback-shim'); - if (canvases && canvases.length) { - var progress = Math.round(100 * index / canvases.length); - var progressBar = progressContainer.querySelector('progress'); - var progressPerc = progressContainer.querySelector('.relative-progress'); - progressBar.value = progress; - progressPerc.textContent = progress + '%'; - progressContainer.removeAttribute('hidden'); - progressContainer.onclick = abort; - } else { - progressContainer.setAttribute('hidden', ''); - } - } - - var hasAttachEvent = !!document.attachEvent; - - window.addEventListener('keydown', function(event) { - // Intercept Cmd/Ctrl + P in all browsers. - // Also intercept Cmd/Ctrl + Shift + P in Chrome and Opera - if (event.keyCode === 80/*P*/ && (event.ctrlKey || event.metaKey) && - !event.altKey && (!event.shiftKey || window.chrome || window.opera)) { - window.print(); - if (hasAttachEvent) { - // Only attachEvent can cancel Ctrl + P dialog in IE <=10 - // attachEvent is gone in IE11, so the dialog will re-appear in IE11. - return; - } - event.preventDefault(); - if (event.stopImmediatePropagation) { - event.stopImmediatePropagation(); - } else { - event.stopPropagation(); - } - return; - } - if (event.keyCode === 27 && canvases) { // Esc - abort(); - } - }, true); - if (hasAttachEvent) { - document.attachEvent('onkeydown', function(event) { - event = event || window.event; - if (event.keyCode === 80/*P*/ && event.ctrlKey) { - event.keyCode = 0; - return false; - } - }); - } - - if ('onbeforeprint' in window) { - // Do not propagate before/afterprint events when they are not triggered - // from within this polyfill. (FF/IE). - var stopPropagationIfNeeded = function(event) { - if (event.detail !== 'custom' && event.stopImmediatePropagation) { - event.stopImmediatePropagation(); - } - }; - window.addEventListener('beforeprint', stopPropagationIfNeeded, false); - window.addEventListener('afterprint', stopPropagationIfNeeded, false); - } -})(); - - - -var DownloadManager = (function DownloadManagerClosure() { - - function download(blobUrl, filename) { - var a = document.createElement('a'); - if (a.click) { - // Use a.click() if available. Otherwise, Chrome might show - // "Unsafe JavaScript attempt to initiate a navigation change - // for frame with URL" and not open the PDF at all. - // Supported by (not mentioned = untested): - // - Firefox 6 - 19 (4- does not support a.click, 5 ignores a.click) - // - Chrome 19 - 26 (18- does not support a.click) - // - Opera 9 - 12.15 - // - Internet Explorer 6 - 10 - // - Safari 6 (5.1- does not support a.click) - a.href = blobUrl; - a.target = '_parent'; - // Use a.download if available. This increases the likelihood that - // the file is downloaded instead of opened by another PDF plugin. - if ('download' in a) { - a.download = filename; - } - // must be in the document for IE and recent Firefox versions. - // (otherwise .click() is ignored) - (document.body || document.documentElement).appendChild(a); - a.click(); - a.parentNode.removeChild(a); - } else { - if (window.top === window && - blobUrl.split('#')[0] === window.location.href.split('#')[0]) { - // If _parent == self, then opening an identical URL with different - // location hash will only cause a navigation, not a download. - var padCharacter = blobUrl.indexOf('?') === -1 ? '?' : '&'; - blobUrl = blobUrl.replace(/#|$/, padCharacter + '$&'); - } - window.open(blobUrl, '_parent'); - } - } - - function DownloadManager() {} - - DownloadManager.prototype = { - downloadUrl: function DownloadManager_downloadUrl(url, filename) { - if (!PDFJS.isValidUrl(url, true)) { - return; // restricted/invalid URL - } - - download(url + '#pdfjs.action=download', filename); - }, - - downloadData: function DownloadManager_downloadData(data, filename, - contentType) { - if (navigator.msSaveBlob) { // IE10 and above - return navigator.msSaveBlob(new Blob([data], { type: contentType }), - filename); - } - - var blobUrl = PDFJS.createObjectURL(data, contentType); - download(blobUrl, filename); - }, - - download: function DownloadManager_download(blob, url, filename) { - if (!URL) { - // URL.createObjectURL is not supported - this.downloadUrl(url, filename); - return; - } - - if (navigator.msSaveBlob) { - // IE10 / IE11 - if (!navigator.msSaveBlob(blob, filename)) { - this.downloadUrl(url, filename); - } - return; - } - - var blobUrl = URL.createObjectURL(blob); - download(blobUrl, filename); - } - }; - - return DownloadManager; -})(); - - - - - -var DEFAULT_VIEW_HISTORY_CACHE_SIZE = 20; - -/** - * View History - This is a utility for saving various view parameters for - * recently opened files. - * - * The way that the view parameters are stored depends on how PDF.js is built, - * for 'node make ' the following cases exist: - * - FIREFOX or MOZCENTRAL - uses sessionStorage. - * - GENERIC or CHROME - uses localStorage, if it is available. - */ -var ViewHistory = (function ViewHistoryClosure() { - function ViewHistory(fingerprint, cacheSize) { - this.fingerprint = fingerprint; - this.cacheSize = cacheSize || DEFAULT_VIEW_HISTORY_CACHE_SIZE; - this.isInitializedPromiseResolved = false; - this.initializedPromise = - this._readFromStorage().then(function (databaseStr) { - this.isInitializedPromiseResolved = true; - - var database = JSON.parse(databaseStr || '{}'); - if (!('files' in database)) { - database.files = []; - } - if (database.files.length >= this.cacheSize) { - database.files.shift(); - } - var index; - for (var i = 0, length = database.files.length; i < length; i++) { - var branch = database.files[i]; - if (branch.fingerprint === this.fingerprint) { - index = i; - break; - } - } - if (typeof index !== 'number') { - index = database.files.push({fingerprint: this.fingerprint}) - 1; - } - this.file = database.files[index]; - this.database = database; - }.bind(this)); - } - - ViewHistory.prototype = { - _writeToStorage: function ViewHistory_writeToStorage() { - return new Promise(function (resolve) { - var databaseStr = JSON.stringify(this.database); - - - localStorage.setItem('database', databaseStr); - resolve(); - }.bind(this)); - }, - - _readFromStorage: function ViewHistory_readFromStorage() { - return new Promise(function (resolve) { - - resolve(localStorage.getItem('database')); - }); - }, - - set: function ViewHistory_set(name, val) { - if (!this.isInitializedPromiseResolved) { - return; - } - this.file[name] = val; - return this._writeToStorage(); - }, - - setMultiple: function ViewHistory_setMultiple(properties) { - if (!this.isInitializedPromiseResolved) { - return; - } - for (var name in properties) { - this.file[name] = properties[name]; - } - return this._writeToStorage(); - }, - - get: function ViewHistory_get(name, defaultValue) { - if (!this.isInitializedPromiseResolved) { - return defaultValue; - } - return this.file[name] || defaultValue; - } - }; - - return ViewHistory; -})(); - - -/** - * Creates a "search bar" given a set of DOM elements that act as controls - * for searching or for setting search preferences in the UI. This object - * also sets up the appropriate events for the controls. Actual searching - * is done by PDFFindController. - */ -var PDFFindBar = (function PDFFindBarClosure() { - function PDFFindBar(options) { - this.opened = false; - this.bar = options.bar || null; - this.toggleButton = options.toggleButton || null; - this.findField = options.findField || null; - this.highlightAll = options.highlightAllCheckbox || null; - this.caseSensitive = options.caseSensitiveCheckbox || null; - this.findMsg = options.findMsg || null; - this.findResultsCount = options.findResultsCount || null; - this.findStatusIcon = options.findStatusIcon || null; - this.findPreviousButton = options.findPreviousButton || null; - this.findNextButton = options.findNextButton || null; - this.findController = options.findController || null; - - if (this.findController === null) { - throw new Error('PDFFindBar cannot be used without a ' + - 'PDFFindController instance.'); - } - - // Add event listeners to the DOM elements. - var self = this; - this.toggleButton.addEventListener('click', function() { - self.toggle(); - }); - - this.findField.addEventListener('input', function() { - self.dispatchEvent(''); - }); - - this.bar.addEventListener('keydown', function(evt) { - switch (evt.keyCode) { - case 13: // Enter - if (evt.target === self.findField) { - self.dispatchEvent('again', evt.shiftKey); - } - break; - case 27: // Escape - self.close(); - break; - } - }); - - this.findPreviousButton.addEventListener('click', function() { - self.dispatchEvent('again', true); - }); - - this.findNextButton.addEventListener('click', function() { - self.dispatchEvent('again', false); - }); - - this.highlightAll.addEventListener('click', function() { - self.dispatchEvent('highlightallchange'); - }); - - this.caseSensitive.addEventListener('click', function() { - self.dispatchEvent('casesensitivitychange'); - }); - } - - PDFFindBar.prototype = { - dispatchEvent: function PDFFindBar_dispatchEvent(type, findPrev) { - var event = document.createEvent('CustomEvent'); - event.initCustomEvent('find' + type, true, true, { - query: this.findField.value, - caseSensitive: this.caseSensitive.checked, - highlightAll: this.highlightAll.checked, - findPrevious: findPrev - }); - return window.dispatchEvent(event); - }, - - updateUIState: - function PDFFindBar_updateUIState(state, previous, matchCount) { - var notFound = false; - var findMsg = ''; - var status = ''; - - switch (state) { - case FindStates.FIND_FOUND: - break; - - case FindStates.FIND_PENDING: - status = 'pending'; - break; - - case FindStates.FIND_NOTFOUND: - findMsg = 'Phrase not found'; - notFound = true; - break; - - case FindStates.FIND_WRAPPED: - if (previous) { - findMsg = 'Reached top of document, continued from bottom'; - } else { - findMsg = 'Reached end of document, continued from top'; - } - break; - } - - if (notFound) { - this.findField.classList.add('notFound'); - } else { - this.findField.classList.remove('notFound'); - } - - this.findField.setAttribute('data-status', status); - this.findMsg.textContent = findMsg; - - this.updateResultsCount(matchCount); - }, - - updateResultsCount: function(matchCount) { - if (!this.findResultsCount) { - return; // no UI control is provided - } - - // If there are no matches, hide the counter - if (!matchCount) { - this.findResultsCount.classList.add('hidden'); - return; - } - - // Create the match counter - this.findResultsCount.textContent = matchCount.toLocaleString(); - - // Show the counter - this.findResultsCount.classList.remove('hidden'); - }, - - open: function PDFFindBar_open() { - if (!this.opened) { - this.opened = true; - this.toggleButton.classList.add('toggled'); - this.bar.classList.remove('hidden'); - } - this.findField.select(); - this.findField.focus(); - }, - - close: function PDFFindBar_close() { - if (!this.opened) { - return; - } - this.opened = false; - this.toggleButton.classList.remove('toggled'); - this.bar.classList.add('hidden'); - this.findController.active = false; - }, - - toggle: function PDFFindBar_toggle() { - if (this.opened) { - this.close(); - } else { - this.open(); - } - } - }; - return PDFFindBar; -})(); - - -var FindStates = { - FIND_FOUND: 0, - FIND_NOTFOUND: 1, - FIND_WRAPPED: 2, - FIND_PENDING: 3 -}; - -var FIND_SCROLL_OFFSET_TOP = -50; -var FIND_SCROLL_OFFSET_LEFT = -400; - -/** - * Provides "search" or "find" functionality for the PDF. - * This object actually performs the search for a given string. - */ -var PDFFindController = (function PDFFindControllerClosure() { - function PDFFindController(options) { - this.startedTextExtraction = false; - this.extractTextPromises = []; - this.pendingFindMatches = {}; - this.active = false; // If active, find results will be highlighted. - this.pageContents = []; // Stores the text for each page. - this.pageMatches = []; - this.matchCount = 0; - this.selected = { // Currently selected match. - pageIdx: -1, - matchIdx: -1 - }; - this.offset = { // Where the find algorithm currently is in the document. - pageIdx: null, - matchIdx: null - }; - this.pagesToSearch = null; - this.resumePageIdx = null; - this.state = null; - this.dirtyMatch = false; - this.findTimeout = null; - this.pdfViewer = options.pdfViewer || null; - this.integratedFind = options.integratedFind || false; - this.charactersToNormalize = { - '\u2018': '\'', // Left single quotation mark - '\u2019': '\'', // Right single quotation mark - '\u201A': '\'', // Single low-9 quotation mark - '\u201B': '\'', // Single high-reversed-9 quotation mark - '\u201C': '"', // Left double quotation mark - '\u201D': '"', // Right double quotation mark - '\u201E': '"', // Double low-9 quotation mark - '\u201F': '"', // Double high-reversed-9 quotation mark - '\u00BC': '1/4', // Vulgar fraction one quarter - '\u00BD': '1/2', // Vulgar fraction one half - '\u00BE': '3/4', // Vulgar fraction three quarters - }; - this.findBar = options.findBar || null; - - // Compile the regular expression for text normalization once - var replace = Object.keys(this.charactersToNormalize).join(''); - this.normalizationRegex = new RegExp('[' + replace + ']', 'g'); - - var events = [ - 'find', - 'findagain', - 'findhighlightallchange', - 'findcasesensitivitychange' - ]; - - this.firstPagePromise = new Promise(function (resolve) { - this.resolveFirstPage = resolve; - }.bind(this)); - this.handleEvent = this.handleEvent.bind(this); - - for (var i = 0, len = events.length; i < len; i++) { - window.addEventListener(events[i], this.handleEvent); - } - } - - PDFFindController.prototype = { - setFindBar: function PDFFindController_setFindBar(findBar) { - this.findBar = findBar; - }, - - reset: function PDFFindController_reset() { - this.startedTextExtraction = false; - this.extractTextPromises = []; - this.active = false; - }, - - normalize: function PDFFindController_normalize(text) { - var self = this; - return text.replace(this.normalizationRegex, function (ch) { - return self.charactersToNormalize[ch]; - }); - }, - - calcFindMatch: function PDFFindController_calcFindMatch(pageIndex) { - var pageContent = this.normalize(this.pageContents[pageIndex]); - var query = this.normalize(this.state.query); - var caseSensitive = this.state.caseSensitive; - var queryLen = query.length; - - if (queryLen === 0) { - // Do nothing: the matches should be wiped out already. - return; - } - - if (!caseSensitive) { - pageContent = pageContent.toLowerCase(); - query = query.toLowerCase(); - } - - var matches = []; - var matchIdx = -queryLen; - while (true) { - matchIdx = pageContent.indexOf(query, matchIdx + queryLen); - if (matchIdx === -1) { - break; - } - matches.push(matchIdx); - } - this.pageMatches[pageIndex] = matches; - this.updatePage(pageIndex); - if (this.resumePageIdx === pageIndex) { - this.resumePageIdx = null; - this.nextPageMatch(); - } - - // Update the matches count - if (matches.length > 0) { - this.matchCount += matches.length; - this.updateUIResultsCount(); - } - }, - - extractText: function PDFFindController_extractText() { - if (this.startedTextExtraction) { - return; - } - this.startedTextExtraction = true; - - this.pageContents = []; - var extractTextPromisesResolves = []; - var numPages = this.pdfViewer.pagesCount; - for (var i = 0; i < numPages; i++) { - this.extractTextPromises.push(new Promise(function (resolve) { - extractTextPromisesResolves.push(resolve); - })); - } - - var self = this; - function extractPageText(pageIndex) { - self.pdfViewer.getPageTextContent(pageIndex).then( - function textContentResolved(textContent) { - var textItems = textContent.items; - var str = []; - - for (var i = 0, len = textItems.length; i < len; i++) { - str.push(textItems[i].str); - } - - // Store the pageContent as a string. - self.pageContents.push(str.join('')); - - extractTextPromisesResolves[pageIndex](pageIndex); - if ((pageIndex + 1) < self.pdfViewer.pagesCount) { - extractPageText(pageIndex + 1); - } - } - ); - } - extractPageText(0); - }, - - handleEvent: function PDFFindController_handleEvent(e) { - if (this.state === null || e.type !== 'findagain') { - this.dirtyMatch = true; - } - this.state = e.detail; - this.updateUIState(FindStates.FIND_PENDING); - - this.firstPagePromise.then(function() { - this.extractText(); - - clearTimeout(this.findTimeout); - if (e.type === 'find') { - // Only trigger the find action after 250ms of silence. - this.findTimeout = setTimeout(this.nextMatch.bind(this), 250); - } else { - this.nextMatch(); - } - }.bind(this)); - }, - - updatePage: function PDFFindController_updatePage(index) { - if (this.selected.pageIdx === index) { - // If the page is selected, scroll the page into view, which triggers - // rendering the page, which adds the textLayer. Once the textLayer is - // build, it will scroll onto the selected match. - this.pdfViewer.scrollPageIntoView(index + 1); - } - - var page = this.pdfViewer.getPageView(index); - if (page.textLayer) { - page.textLayer.updateMatches(); - } - }, - - nextMatch: function PDFFindController_nextMatch() { - var previous = this.state.findPrevious; - var currentPageIndex = this.pdfViewer.currentPageNumber - 1; - var numPages = this.pdfViewer.pagesCount; - - this.active = true; - - if (this.dirtyMatch) { - // Need to recalculate the matches, reset everything. - this.dirtyMatch = false; - this.selected.pageIdx = this.selected.matchIdx = -1; - this.offset.pageIdx = currentPageIndex; - this.offset.matchIdx = null; - this.hadMatch = false; - this.resumePageIdx = null; - this.pageMatches = []; - this.matchCount = 0; - var self = this; - - for (var i = 0; i < numPages; i++) { - // Wipe out any previous highlighted matches. - this.updatePage(i); - - // As soon as the text is extracted start finding the matches. - if (!(i in this.pendingFindMatches)) { - this.pendingFindMatches[i] = true; - this.extractTextPromises[i].then(function(pageIdx) { - delete self.pendingFindMatches[pageIdx]; - self.calcFindMatch(pageIdx); - }); - } - } - } - - // If there's no query there's no point in searching. - if (this.state.query === '') { - this.updateUIState(FindStates.FIND_FOUND); - return; - } - - // If we're waiting on a page, we return since we can't do anything else. - if (this.resumePageIdx) { - return; - } - - var offset = this.offset; - // Keep track of how many pages we should maximally iterate through. - this.pagesToSearch = numPages; - // If there's already a matchIdx that means we are iterating through a - // page's matches. - if (offset.matchIdx !== null) { - var numPageMatches = this.pageMatches[offset.pageIdx].length; - if ((!previous && offset.matchIdx + 1 < numPageMatches) || - (previous && offset.matchIdx > 0)) { - // The simple case; we just have advance the matchIdx to select - // the next match on the page. - this.hadMatch = true; - offset.matchIdx = (previous ? offset.matchIdx - 1 : - offset.matchIdx + 1); - this.updateMatch(true); - return; - } - // We went beyond the current page's matches, so we advance to - // the next page. - this.advanceOffsetPage(previous); - } - // Start searching through the page. - this.nextPageMatch(); - }, - - matchesReady: function PDFFindController_matchesReady(matches) { - var offset = this.offset; - var numMatches = matches.length; - var previous = this.state.findPrevious; - - if (numMatches) { - // There were matches for the page, so initialize the matchIdx. - this.hadMatch = true; - offset.matchIdx = (previous ? numMatches - 1 : 0); - this.updateMatch(true); - return true; - } else { - // No matches, so attempt to search the next page. - this.advanceOffsetPage(previous); - if (offset.wrapped) { - offset.matchIdx = null; - if (this.pagesToSearch < 0) { - // No point in wrapping again, there were no matches. - this.updateMatch(false); - // while matches were not found, searching for a page - // with matches should nevertheless halt. - return true; - } - } - // Matches were not found (and searching is not done). - return false; - } - }, - - /** - * The method is called back from the text layer when match presentation - * is updated. - * @param {number} pageIndex - page index. - * @param {number} index - match index. - * @param {Array} elements - text layer div elements array. - * @param {number} beginIdx - start index of the div array for the match. - * @param {number} endIdx - end index of the div array for the match. - */ - updateMatchPosition: function PDFFindController_updateMatchPosition( - pageIndex, index, elements, beginIdx, endIdx) { - if (this.selected.matchIdx === index && - this.selected.pageIdx === pageIndex) { - var spot = { - top: FIND_SCROLL_OFFSET_TOP, - left: FIND_SCROLL_OFFSET_LEFT - }; - scrollIntoView(elements[beginIdx], spot, - /* skipOverflowHiddenElements = */ true); - } - }, - - nextPageMatch: function PDFFindController_nextPageMatch() { - if (this.resumePageIdx !== null) { - console.error('There can only be one pending page.'); - } - do { - var pageIdx = this.offset.pageIdx; - var matches = this.pageMatches[pageIdx]; - if (!matches) { - // The matches don't exist yet for processing by "matchesReady", - // so set a resume point for when they do exist. - this.resumePageIdx = pageIdx; - break; - } - } while (!this.matchesReady(matches)); - }, - - advanceOffsetPage: function PDFFindController_advanceOffsetPage(previous) { - var offset = this.offset; - var numPages = this.extractTextPromises.length; - offset.pageIdx = (previous ? offset.pageIdx - 1 : offset.pageIdx + 1); - offset.matchIdx = null; - - this.pagesToSearch--; - - if (offset.pageIdx >= numPages || offset.pageIdx < 0) { - offset.pageIdx = (previous ? numPages - 1 : 0); - offset.wrapped = true; - } - }, - - updateMatch: function PDFFindController_updateMatch(found) { - var state = FindStates.FIND_NOTFOUND; - var wrapped = this.offset.wrapped; - this.offset.wrapped = false; - - if (found) { - var previousPage = this.selected.pageIdx; - this.selected.pageIdx = this.offset.pageIdx; - this.selected.matchIdx = this.offset.matchIdx; - state = (wrapped ? FindStates.FIND_WRAPPED : FindStates.FIND_FOUND); - // Update the currently selected page to wipe out any selected matches. - if (previousPage !== -1 && previousPage !== this.selected.pageIdx) { - this.updatePage(previousPage); - } - } - - this.updateUIState(state, this.state.findPrevious); - if (this.selected.pageIdx !== -1) { - this.updatePage(this.selected.pageIdx); - } - }, - - updateUIResultsCount: - function PDFFindController_updateUIResultsCount() { - if (this.findBar === null) { - throw new Error('PDFFindController is not initialized with a ' + - 'PDFFindBar instance.'); - } - this.findBar.updateResultsCount(this.matchCount); - }, - - updateUIState: function PDFFindController_updateUIState(state, previous) { - if (this.integratedFind) { - FirefoxCom.request('updateFindControlState', - { result: state, findPrevious: previous }); - return; - } - if (this.findBar === null) { - throw new Error('PDFFindController is not initialized with a ' + - 'PDFFindBar instance.'); - } - this.findBar.updateUIState(state, previous, this.matchCount); - } - }; - return PDFFindController; -})(); - - -/** - * Performs navigation functions inside PDF, such as opening specified page, - * or destination. - * @class - * @implements {IPDFLinkService} - */ -var PDFLinkService = (function () { - /** - * @constructs PDFLinkService - */ - function PDFLinkService() { - this.baseUrl = null; - this.pdfDocument = null; - this.pdfViewer = null; - this.pdfHistory = null; - - this._pagesRefCache = null; - } - - PDFLinkService.prototype = { - setDocument: function PDFLinkService_setDocument(pdfDocument, baseUrl) { - this.baseUrl = baseUrl; - this.pdfDocument = pdfDocument; - this._pagesRefCache = Object.create(null); - }, - - setViewer: function PDFLinkService_setViewer(pdfViewer) { - this.pdfViewer = pdfViewer; - }, - - setHistory: function PDFLinkService_setHistory(pdfHistory) { - this.pdfHistory = pdfHistory; - }, - - /** - * @returns {number} - */ - get pagesCount() { - return this.pdfDocument.numPages; - }, - - /** - * @returns {number} - */ - get page() { - return this.pdfViewer.currentPageNumber; - }, - - /** - * @param {number} value - */ - set page(value) { - this.pdfViewer.currentPageNumber = value; - }, - - /** - * @param dest - The PDF destination object. - */ - navigateTo: function PDFLinkService_navigateTo(dest) { - var destString = ''; - var self = this; - - var goToDestination = function(destRef) { - // dest array looks like that: - var pageNumber = destRef instanceof Object ? - self._pagesRefCache[destRef.num + ' ' + destRef.gen + ' R'] : - (destRef + 1); - if (pageNumber) { - if (pageNumber > self.pagesCount) { - pageNumber = self.pagesCount; - } - self.pdfViewer.scrollPageIntoView(pageNumber, dest); - - if (self.pdfHistory) { - // Update the browsing history. - self.pdfHistory.push({ - dest: dest, - hash: destString, - page: pageNumber - }); - } - } else { - self.pdfDocument.getPageIndex(destRef).then(function (pageIndex) { - var pageNum = pageIndex + 1; - var cacheKey = destRef.num + ' ' + destRef.gen + ' R'; - self._pagesRefCache[cacheKey] = pageNum; - goToDestination(destRef); - }); - } - }; - - var destinationPromise; - if (typeof dest === 'string') { - destString = dest; - destinationPromise = this.pdfDocument.getDestination(dest); - } else { - destinationPromise = Promise.resolve(dest); - } - destinationPromise.then(function(destination) { - dest = destination; - if (!(destination instanceof Array)) { - return; // invalid destination - } - goToDestination(destination[0]); - }); - }, - - /** - * @param dest - The PDF destination object. - * @returns {string} The hyperlink to the PDF object. - */ - getDestinationHash: function PDFLinkService_getDestinationHash(dest) { - if (typeof dest === 'string') { - return this.getAnchorUrl('#' + escape(dest)); - } - if (dest instanceof Array) { - var destRef = dest[0]; // see navigateTo method for dest format - var pageNumber = destRef instanceof Object ? - this._pagesRefCache[destRef.num + ' ' + destRef.gen + ' R'] : - (destRef + 1); - if (pageNumber) { - var pdfOpenParams = this.getAnchorUrl('#page=' + pageNumber); - var destKind = dest[1]; - if (typeof destKind === 'object' && 'name' in destKind && - destKind.name === 'XYZ') { - var scale = (dest[4] || this.pdfViewer.currentScaleValue); - var scaleNumber = parseFloat(scale); - if (scaleNumber) { - scale = scaleNumber * 100; - } - pdfOpenParams += '&zoom=' + scale; - if (dest[2] || dest[3]) { - pdfOpenParams += ',' + (dest[2] || 0) + ',' + (dest[3] || 0); - } - } - return pdfOpenParams; - } - } - return this.getAnchorUrl(''); - }, - - /** - * Prefix the full url on anchor links to make sure that links are resolved - * relative to the current URL instead of the one defined in . - * @param {String} anchor The anchor hash, including the #. - * @returns {string} The hyperlink to the PDF object. - */ - getAnchorUrl: function PDFLinkService_getAnchorUrl(anchor) { - return (this.baseUrl || '') + anchor; - }, - - /** - * @param {string} hash - */ - setHash: function PDFLinkService_setHash(hash) { - if (hash.indexOf('=') >= 0) { - var params = parseQueryString(hash); - // borrowing syntax from "Parameters for Opening PDF Files" - if ('nameddest' in params) { - if (this.pdfHistory) { - this.pdfHistory.updateNextHashParam(params.nameddest); - } - this.navigateTo(params.nameddest); - return; - } - var pageNumber, dest; - if ('page' in params) { - pageNumber = (params.page | 0) || 1; - } - if ('zoom' in params) { - // Build the destination array. - var zoomArgs = params.zoom.split(','); // scale,left,top - var zoomArg = zoomArgs[0]; - var zoomArgNumber = parseFloat(zoomArg); - - if (zoomArg.indexOf('Fit') === -1) { - // If the zoomArg is a number, it has to get divided by 100. If it's - // a string, it should stay as it is. - dest = [null, { name: 'XYZ' }, - zoomArgs.length > 1 ? (zoomArgs[1] | 0) : null, - zoomArgs.length > 2 ? (zoomArgs[2] | 0) : null, - (zoomArgNumber ? zoomArgNumber / 100 : zoomArg)]; - } else { - if (zoomArg === 'Fit' || zoomArg === 'FitB') { - dest = [null, { name: zoomArg }]; - } else if ((zoomArg === 'FitH' || zoomArg === 'FitBH') || - (zoomArg === 'FitV' || zoomArg === 'FitBV')) { - dest = [null, { name: zoomArg }, - zoomArgs.length > 1 ? (zoomArgs[1] | 0) : null]; - } else if (zoomArg === 'FitR') { - if (zoomArgs.length !== 5) { - console.error('PDFLinkService_setHash: ' + - 'Not enough parameters for \'FitR\'.'); - } else { - dest = [null, { name: zoomArg }, - (zoomArgs[1] | 0), (zoomArgs[2] | 0), - (zoomArgs[3] | 0), (zoomArgs[4] | 0)]; - } - } else { - console.error('PDFLinkService_setHash: \'' + zoomArg + - '\' is not a valid zoom value.'); - } - } - } - if (dest) { - this.pdfViewer.scrollPageIntoView(pageNumber || this.page, dest); - } else if (pageNumber) { - this.page = pageNumber; // simple page - } - if ('pagemode' in params) { - var event = document.createEvent('CustomEvent'); - event.initCustomEvent('pagemode', true, true, { - mode: params.pagemode, - }); - this.pdfViewer.container.dispatchEvent(event); - } - } else if (/^\d+$/.test(hash)) { // page number - this.page = hash; - } else { // named destination - if (this.pdfHistory) { - this.pdfHistory.updateNextHashParam(unescape(hash)); - } - this.navigateTo(unescape(hash)); - } - }, - - /** - * @param {string} action - */ - executeNamedAction: function PDFLinkService_executeNamedAction(action) { - // See PDF reference, table 8.45 - Named action - switch (action) { - case 'GoBack': - if (this.pdfHistory) { - this.pdfHistory.back(); - } - break; - - case 'GoForward': - if (this.pdfHistory) { - this.pdfHistory.forward(); - } - break; - - case 'NextPage': - this.page++; - break; - - case 'PrevPage': - this.page--; - break; - - case 'LastPage': - this.page = this.pagesCount; - break; - - case 'FirstPage': - this.page = 1; - break; - - default: - break; // No action according to spec - } - - var event = document.createEvent('CustomEvent'); - event.initCustomEvent('namedaction', true, true, { - action: action - }); - this.pdfViewer.container.dispatchEvent(event); - }, - - /** - * @param {number} pageNum - page number. - * @param {Object} pageRef - reference to the page. - */ - cachePageRef: function PDFLinkService_cachePageRef(pageNum, pageRef) { - var refStr = pageRef.num + ' ' + pageRef.gen + ' R'; - this._pagesRefCache[refStr] = pageNum; - } - }; - - return PDFLinkService; -})(); - - -var PDFHistory = (function () { - function PDFHistory(options) { - this.linkService = options.linkService; - - this.initialized = false; - this.initialDestination = null; - this.initialBookmark = null; - } - - PDFHistory.prototype = { - /** - * @param {string} fingerprint - * @param {IPDFLinkService} linkService - */ - initialize: function pdfHistoryInitialize(fingerprint) { - this.initialized = true; - this.reInitialized = false; - this.allowHashChange = true; - this.historyUnlocked = true; - this.isViewerInPresentationMode = false; - - this.previousHash = window.location.hash.substring(1); - this.currentBookmark = ''; - this.currentPage = 0; - this.updatePreviousBookmark = false; - this.previousBookmark = ''; - this.previousPage = 0; - this.nextHashParam = ''; - - this.fingerprint = fingerprint; - this.currentUid = this.uid = 0; - this.current = {}; - - var state = window.history.state; - if (this._isStateObjectDefined(state)) { - // This corresponds to navigating back to the document - // from another page in the browser history. - if (state.target.dest) { - this.initialDestination = state.target.dest; - } else { - this.initialBookmark = state.target.hash; - } - this.currentUid = state.uid; - this.uid = state.uid + 1; - this.current = state.target; - } else { - // This corresponds to the loading of a new document. - if (state && state.fingerprint && - this.fingerprint !== state.fingerprint) { - // Reinitialize the browsing history when a new document - // is opened in the web viewer. - this.reInitialized = true; - } - this._pushOrReplaceState({fingerprint: this.fingerprint}, true); - } - - var self = this; - window.addEventListener('popstate', function pdfHistoryPopstate(evt) { - if (!self.historyUnlocked) { - return; - } - if (evt.state) { - // Move back/forward in the history. - self._goTo(evt.state); - return; - } - - // If the state is not set, then the user tried to navigate to a - // different hash by manually editing the URL and pressing Enter, or by - // clicking on an in-page link (e.g. the "current view" link). - // Save the current view state to the browser history. - - // Note: In Firefox, history.null could also be null after an in-page - // navigation to the same URL, and without dispatching the popstate - // event: https://bugzilla.mozilla.org/show_bug.cgi?id=1183881 - - if (self.uid === 0) { - // Replace the previous state if it was not explicitly set. - var previousParams = (self.previousHash && self.currentBookmark && - self.previousHash !== self.currentBookmark) ? - {hash: self.currentBookmark, page: self.currentPage} : - {page: 1}; - replacePreviousHistoryState(previousParams, function() { - updateHistoryWithCurrentHash(); - }); - } else { - updateHistoryWithCurrentHash(); - } - }, false); - - - function updateHistoryWithCurrentHash() { - self.previousHash = window.location.hash.slice(1); - self._pushToHistory({hash: self.previousHash}, false, true); - self._updatePreviousBookmark(); - } - - function replacePreviousHistoryState(params, callback) { - // To modify the previous history entry, the following happens: - // 1. history.back() - // 2. _pushToHistory, which calls history.replaceState( ... ) - // 3. history.forward() - // Because a navigation via the history API does not immediately update - // the history state, the popstate event is used for synchronization. - self.historyUnlocked = false; - - // Suppress the hashchange event to avoid side effects caused by - // navigating back and forward. - self.allowHashChange = false; - window.addEventListener('popstate', rewriteHistoryAfterBack); - history.back(); - - function rewriteHistoryAfterBack() { - window.removeEventListener('popstate', rewriteHistoryAfterBack); - window.addEventListener('popstate', rewriteHistoryAfterForward); - self._pushToHistory(params, false, true); - history.forward(); - } - function rewriteHistoryAfterForward() { - window.removeEventListener('popstate', rewriteHistoryAfterForward); - self.allowHashChange = true; - self.historyUnlocked = true; - callback(); - } - } - - function pdfHistoryBeforeUnload() { - var previousParams = self._getPreviousParams(null, true); - if (previousParams) { - var replacePrevious = (!self.current.dest && - self.current.hash !== self.previousHash); - self._pushToHistory(previousParams, false, replacePrevious); - self._updatePreviousBookmark(); - } - // Remove the event listener when navigating away from the document, - // since 'beforeunload' prevents Firefox from caching the document. - window.removeEventListener('beforeunload', pdfHistoryBeforeUnload, - false); - } - - window.addEventListener('beforeunload', pdfHistoryBeforeUnload, false); - - window.addEventListener('pageshow', function pdfHistoryPageShow(evt) { - // If the entire viewer (including the PDF file) is cached in - // the browser, we need to reattach the 'beforeunload' event listener - // since the 'DOMContentLoaded' event is not fired on 'pageshow'. - window.addEventListener('beforeunload', pdfHistoryBeforeUnload, false); - }, false); - - window.addEventListener('presentationmodechanged', function(e) { - self.isViewerInPresentationMode = !!e.detail.active; - }); - }, - - clearHistoryState: function pdfHistory_clearHistoryState() { - this._pushOrReplaceState(null, true); - }, - - _isStateObjectDefined: function pdfHistory_isStateObjectDefined(state) { - return (state && state.uid >= 0 && - state.fingerprint && this.fingerprint === state.fingerprint && - state.target && state.target.hash) ? true : false; - }, - - _pushOrReplaceState: function pdfHistory_pushOrReplaceState(stateObj, - replace) { - if (replace) { - window.history.replaceState(stateObj, '', document.URL); - } else { - window.history.pushState(stateObj, '', document.URL); - } - }, - - get isHashChangeUnlocked() { - if (!this.initialized) { - return true; - } - return this.allowHashChange; - }, - - _updatePreviousBookmark: function pdfHistory_updatePreviousBookmark() { - if (this.updatePreviousBookmark && - this.currentBookmark && this.currentPage) { - this.previousBookmark = this.currentBookmark; - this.previousPage = this.currentPage; - this.updatePreviousBookmark = false; - } - }, - - updateCurrentBookmark: function pdfHistoryUpdateCurrentBookmark(bookmark, - pageNum) { - if (this.initialized) { - this.currentBookmark = bookmark.substring(1); - this.currentPage = pageNum | 0; - this._updatePreviousBookmark(); - } - }, - - updateNextHashParam: function pdfHistoryUpdateNextHashParam(param) { - if (this.initialized) { - this.nextHashParam = param; - } - }, - - push: function pdfHistoryPush(params, isInitialBookmark) { - if (!(this.initialized && this.historyUnlocked)) { - return; - } - if (params.dest && !params.hash) { - params.hash = (this.current.hash && this.current.dest && - this.current.dest === params.dest) ? - this.current.hash : - this.linkService.getDestinationHash(params.dest).split('#')[1]; - } - if (params.page) { - params.page |= 0; - } - if (isInitialBookmark) { - var target = window.history.state.target; - if (!target) { - // Invoked when the user specifies an initial bookmark, - // thus setting initialBookmark, when the document is loaded. - this._pushToHistory(params, false); - this.previousHash = window.location.hash.substring(1); - } - this.updatePreviousBookmark = this.nextHashParam ? false : true; - if (target) { - // If the current document is reloaded, - // avoid creating duplicate entries in the history. - this._updatePreviousBookmark(); - } - return; - } - if (this.nextHashParam) { - if (this.nextHashParam === params.hash) { - this.nextHashParam = null; - this.updatePreviousBookmark = true; - return; - } else { - this.nextHashParam = null; - } - } - - if (params.hash) { - if (this.current.hash) { - if (this.current.hash !== params.hash) { - this._pushToHistory(params, true); - } else { - if (!this.current.page && params.page) { - this._pushToHistory(params, false, true); - } - this.updatePreviousBookmark = true; - } - } else { - this._pushToHistory(params, true); - } - } else if (this.current.page && params.page && - this.current.page !== params.page) { - this._pushToHistory(params, true); - } - }, - - _getPreviousParams: function pdfHistory_getPreviousParams(onlyCheckPage, - beforeUnload) { - if (!(this.currentBookmark && this.currentPage)) { - return null; - } else if (this.updatePreviousBookmark) { - this.updatePreviousBookmark = false; - } - if (this.uid > 0 && !(this.previousBookmark && this.previousPage)) { - // Prevent the history from getting stuck in the current state, - // effectively preventing the user from going back/forward in - // the history. - // - // This happens if the current position in the document didn't change - // when the history was previously updated. The reasons for this are - // either: - // 1. The current zoom value is such that the document does not need to, - // or cannot, be scrolled to display the destination. - // 2. The previous destination is broken, and doesn't actally point to a - // position within the document. - // (This is either due to a bad PDF generator, or the user making a - // mistake when entering a destination in the hash parameters.) - return null; - } - if ((!this.current.dest && !onlyCheckPage) || beforeUnload) { - if (this.previousBookmark === this.currentBookmark) { - return null; - } - } else if (this.current.page || onlyCheckPage) { - if (this.previousPage === this.currentPage) { - return null; - } - } else { - return null; - } - var params = {hash: this.currentBookmark, page: this.currentPage}; - if (this.isViewerInPresentationMode) { - params.hash = null; - } - return params; - }, - - _stateObj: function pdfHistory_stateObj(params) { - return {fingerprint: this.fingerprint, uid: this.uid, target: params}; - }, - - _pushToHistory: function pdfHistory_pushToHistory(params, - addPrevious, overwrite) { - if (!this.initialized) { - return; - } - if (!params.hash && params.page) { - params.hash = ('page=' + params.page); - } - if (addPrevious && !overwrite) { - var previousParams = this._getPreviousParams(); - if (previousParams) { - var replacePrevious = (!this.current.dest && - this.current.hash !== this.previousHash); - this._pushToHistory(previousParams, false, replacePrevious); - } - } - this._pushOrReplaceState(this._stateObj(params), - (overwrite || this.uid === 0)); - this.currentUid = this.uid++; - this.current = params; - this.updatePreviousBookmark = true; - }, - - _goTo: function pdfHistory_goTo(state) { - if (!(this.initialized && this.historyUnlocked && - this._isStateObjectDefined(state))) { - return; - } - if (!this.reInitialized && state.uid < this.currentUid) { - var previousParams = this._getPreviousParams(true); - if (previousParams) { - this._pushToHistory(this.current, false); - this._pushToHistory(previousParams, false); - this.currentUid = state.uid; - window.history.back(); - return; - } - } - this.historyUnlocked = false; - - if (state.target.dest) { - this.linkService.navigateTo(state.target.dest); - } else { - this.linkService.setHash(state.target.hash); - } - this.currentUid = state.uid; - if (state.uid > this.uid) { - this.uid = state.uid; - } - this.current = state.target; - this.updatePreviousBookmark = true; - - var currentHash = window.location.hash.substring(1); - if (this.previousHash !== currentHash) { - this.allowHashChange = false; - } - this.previousHash = currentHash; - - this.historyUnlocked = true; - }, - - back: function pdfHistoryBack() { - this.go(-1); - }, - - forward: function pdfHistoryForward() { - this.go(1); - }, - - go: function pdfHistoryGo(direction) { - if (this.initialized && this.historyUnlocked) { - var state = window.history.state; - if (direction === -1 && state && state.uid > 0) { - window.history.back(); - } else if (direction === 1 && state && state.uid < (this.uid - 1)) { - window.history.forward(); - } - } - } - }; - - return PDFHistory; -})(); - - -var SecondaryToolbar = { - opened: false, - previousContainerHeight: null, - newContainerHeight: null, - - initialize: function secondaryToolbarInitialize(options) { - this.toolbar = options.toolbar; - this.buttonContainer = this.toolbar.firstElementChild; - - // Define the toolbar buttons. - this.toggleButton = options.toggleButton; - this.presentationModeButton = options.presentationModeButton; - this.openFile = options.openFile; - this.print = options.print; - this.download = options.download; - this.viewBookmark = options.viewBookmark; - this.firstPage = options.firstPage; - this.lastPage = options.lastPage; - this.pageRotateCw = options.pageRotateCw; - this.pageRotateCcw = options.pageRotateCcw; - this.documentPropertiesButton = options.documentPropertiesButton; - - // Attach the event listeners. - var elements = [ - // Button to toggle the visibility of the secondary toolbar: - { element: this.toggleButton, handler: this.toggle }, - // All items within the secondary toolbar - // (except for toggleHandTool, hand_tool.js is responsible for it): - { element: this.presentationModeButton, - handler: this.presentationModeClick }, - { element: this.openFile, handler: this.openFileClick }, - { element: this.print, handler: this.printClick }, - { element: this.download, handler: this.downloadClick }, - { element: this.viewBookmark, handler: this.viewBookmarkClick }, - { element: this.firstPage, handler: this.firstPageClick }, - { element: this.lastPage, handler: this.lastPageClick }, - { element: this.pageRotateCw, handler: this.pageRotateCwClick }, - { element: this.pageRotateCcw, handler: this.pageRotateCcwClick }, - { element: this.documentPropertiesButton, - handler: this.documentPropertiesClick } - ]; - - for (var item in elements) { - var element = elements[item].element; - if (element) { - element.addEventListener('click', elements[item].handler.bind(this)); - } - } - }, - - // Event handling functions. - presentationModeClick: function secondaryToolbarPresentationModeClick(evt) { - PDFViewerApplication.requestPresentationMode(); - this.close(); - }, - - openFileClick: function secondaryToolbarOpenFileClick(evt) { - document.getElementById('fileInput').click(); - this.close(); - }, - - printClick: function secondaryToolbarPrintClick(evt) { - window.print(); - this.close(); - }, - - downloadClick: function secondaryToolbarDownloadClick(evt) { - PDFViewerApplication.download(); - this.close(); - }, - - viewBookmarkClick: function secondaryToolbarViewBookmarkClick(evt) { - this.close(); - }, - - firstPageClick: function secondaryToolbarFirstPageClick(evt) { - PDFViewerApplication.page = 1; - this.close(); - }, - - lastPageClick: function secondaryToolbarLastPageClick(evt) { - if (PDFViewerApplication.pdfDocument) { - PDFViewerApplication.page = PDFViewerApplication.pagesCount; - } - this.close(); - }, - - pageRotateCwClick: function secondaryToolbarPageRotateCwClick(evt) { - PDFViewerApplication.rotatePages(90); - }, - - pageRotateCcwClick: function secondaryToolbarPageRotateCcwClick(evt) { - PDFViewerApplication.rotatePages(-90); - }, - - documentPropertiesClick: function secondaryToolbarDocumentPropsClick(evt) { - PDFViewerApplication.pdfDocumentProperties.open(); - this.close(); - }, - - // Misc. functions for interacting with the toolbar. - setMaxHeight: function secondaryToolbarSetMaxHeight(container) { - if (!container || !this.buttonContainer) { - return; - } - this.newContainerHeight = container.clientHeight; - if (this.previousContainerHeight === this.newContainerHeight) { - return; - } - this.buttonContainer.setAttribute('style', - 'max-height: ' + (this.newContainerHeight - SCROLLBAR_PADDING) + 'px;'); - this.previousContainerHeight = this.newContainerHeight; - }, - - open: function secondaryToolbarOpen() { - if (this.opened) { - return; - } - this.opened = true; - this.toggleButton.classList.add('toggled'); - this.toolbar.classList.remove('hidden'); - }, - - close: function secondaryToolbarClose(target) { - if (!this.opened) { - return; - } else if (target && !this.toolbar.contains(target)) { - return; - } - this.opened = false; - this.toolbar.classList.add('hidden'); - this.toggleButton.classList.remove('toggled'); - }, - - toggle: function secondaryToolbarToggle() { - if (this.opened) { - this.close(); - } else { - this.open(); - } - } -}; - - -var DELAY_BEFORE_RESETTING_SWITCH_IN_PROGRESS = 1500; // in ms -var DELAY_BEFORE_HIDING_CONTROLS = 3000; // in ms -var ACTIVE_SELECTOR = 'pdfPresentationMode'; -var CONTROLS_SELECTOR = 'pdfPresentationModeControls'; - -/** - * @typedef {Object} PDFPresentationModeOptions - * @property {HTMLDivElement} container - The container for the viewer element. - * @property {HTMLDivElement} viewer - (optional) The viewer element. - * @property {PDFViewer} pdfViewer - The document viewer. - * @property {PDFThumbnailViewer} pdfThumbnailViewer - (optional) The thumbnail - * viewer. - * @property {Array} contextMenuItems - (optional) The menuitems that are added - * to the context menu in Presentation Mode. - */ - -/** - * @class - */ -var PDFPresentationMode = (function PDFPresentationModeClosure() { - /** - * @constructs PDFPresentationMode - * @param {PDFPresentationModeOptions} options - */ - function PDFPresentationMode(options) { - this.container = options.container; - this.viewer = options.viewer || options.container.firstElementChild; - this.pdfViewer = options.pdfViewer; - this.pdfThumbnailViewer = options.pdfThumbnailViewer || null; - var contextMenuItems = options.contextMenuItems || null; - - this.active = false; - this.args = null; - this.contextMenuOpen = false; - this.mouseScrollTimeStamp = 0; - this.mouseScrollDelta = 0; - - if (contextMenuItems) { - for (var i = 0, ii = contextMenuItems.length; i < ii; i++) { - var item = contextMenuItems[i]; - item.element.addEventListener('click', function (handler) { - this.contextMenuOpen = false; - handler(); - }.bind(this, item.handler)); - } - } - } - - PDFPresentationMode.prototype = { - /** - * Request the browser to enter fullscreen mode. - * @returns {boolean} Indicating if the request was successful. - */ - request: function PDFPresentationMode_request() { - if (this.switchInProgress || this.active || - !this.viewer.hasChildNodes()) { - return false; - } - this._addFullscreenChangeListeners(); - this._setSwitchInProgress(); - this._notifyStateChange(); - - if (this.container.requestFullscreen) { - this.container.requestFullscreen(); - } else if (this.container.mozRequestFullScreen) { - this.container.mozRequestFullScreen(); - } else if (this.container.webkitRequestFullscreen) { - this.container.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT); - } else if (this.container.msRequestFullscreen) { - this.container.msRequestFullscreen(); - } else { - return false; - } - - this.args = { - page: this.pdfViewer.currentPageNumber, - previousScale: this.pdfViewer.currentScaleValue, - }; - - return true; - }, - - /** - * Switches page when the user scrolls (using a scroll wheel or a touchpad) - * with large enough motion, to prevent accidental page switches. - * @param {number} delta - The delta value from the mouse event. - */ - mouseScroll: function PDFPresentationMode_mouseScroll(delta) { - if (!this.active) { - return; - } - var MOUSE_SCROLL_COOLDOWN_TIME = 50; - var PAGE_SWITCH_THRESHOLD = 120; - var PageSwitchDirection = { - UP: -1, - DOWN: 1 - }; - - var currentTime = (new Date()).getTime(); - var storedTime = this.mouseScrollTimeStamp; - - // If we've already switched page, avoid accidentally switching again. - if (currentTime > storedTime && - currentTime - storedTime < MOUSE_SCROLL_COOLDOWN_TIME) { - return; - } - // If the scroll direction changed, reset the accumulated scroll delta. - if ((this.mouseScrollDelta > 0 && delta < 0) || - (this.mouseScrollDelta < 0 && delta > 0)) { - this._resetMouseScrollState(); - } - this.mouseScrollDelta += delta; - - if (Math.abs(this.mouseScrollDelta) >= PAGE_SWITCH_THRESHOLD) { - var pageSwitchDirection = (this.mouseScrollDelta > 0) ? - PageSwitchDirection.UP : PageSwitchDirection.DOWN; - var page = this.pdfViewer.currentPageNumber; - this._resetMouseScrollState(); - - // If we're at the first/last page, we don't need to do anything. - if ((page === 1 && pageSwitchDirection === PageSwitchDirection.UP) || - (page === this.pdfViewer.pagesCount && - pageSwitchDirection === PageSwitchDirection.DOWN)) { - return; - } - this.pdfViewer.currentPageNumber = (page + pageSwitchDirection); - this.mouseScrollTimeStamp = currentTime; - } - }, - - get isFullscreen() { - return !!(document.fullscreenElement || - document.mozFullScreen || - document.webkitIsFullScreen || - document.msFullscreenElement); - }, - - /** - * @private - */ - _notifyStateChange: function PDFPresentationMode_notifyStateChange() { - var event = document.createEvent('CustomEvent'); - event.initCustomEvent('presentationmodechanged', true, true, { - active: this.active, - switchInProgress: !!this.switchInProgress - }); - window.dispatchEvent(event); - }, - - /** - * Used to initialize a timeout when requesting Presentation Mode, - * i.e. when the browser is requested to enter fullscreen mode. - * This timeout is used to prevent the current page from being scrolled - * partially, or completely, out of view when entering Presentation Mode. - * NOTE: This issue seems limited to certain zoom levels (e.g. page-width). - * @private - */ - _setSwitchInProgress: function PDFPresentationMode_setSwitchInProgress() { - if (this.switchInProgress) { - clearTimeout(this.switchInProgress); - } - this.switchInProgress = setTimeout(function switchInProgressTimeout() { - this._removeFullscreenChangeListeners(); - delete this.switchInProgress; - this._notifyStateChange(); - }.bind(this), DELAY_BEFORE_RESETTING_SWITCH_IN_PROGRESS); - }, - - /** - * @private - */ - _resetSwitchInProgress: - function PDFPresentationMode_resetSwitchInProgress() { - if (this.switchInProgress) { - clearTimeout(this.switchInProgress); - delete this.switchInProgress; - } - }, - - /** - * @private - */ - _enter: function PDFPresentationMode_enter() { - this.active = true; - this._resetSwitchInProgress(); - this._notifyStateChange(); - this.container.classList.add(ACTIVE_SELECTOR); - - // Ensure that the correct page is scrolled into view when entering - // Presentation Mode, by waiting until fullscreen mode in enabled. - setTimeout(function enterPresentationModeTimeout() { - this.pdfViewer.currentPageNumber = this.args.page; - this.pdfViewer.currentScaleValue = 'page-fit'; - }.bind(this), 0); - - this._addWindowListeners(); - this._showControls(); - this.contextMenuOpen = false; - this.container.setAttribute('contextmenu', 'viewerContextMenu'); - - // Text selection is disabled in Presentation Mode, thus it's not possible - // for the user to deselect text that is selected (e.g. with "Select all") - // when entering Presentation Mode, hence we remove any active selection. - window.getSelection().removeAllRanges(); - }, - - /** - * @private - */ - _exit: function PDFPresentationMode_exit() { - var page = this.pdfViewer.currentPageNumber; - this.container.classList.remove(ACTIVE_SELECTOR); - - // Ensure that the correct page is scrolled into view when exiting - // Presentation Mode, by waiting until fullscreen mode is disabled. - setTimeout(function exitPresentationModeTimeout() { - this.active = false; - this._removeFullscreenChangeListeners(); - this._notifyStateChange(); - - this.pdfViewer.currentScaleValue = this.args.previousScale; - this.pdfViewer.currentPageNumber = page; - this.args = null; - }.bind(this), 0); - - this._removeWindowListeners(); - this._hideControls(); - this._resetMouseScrollState(); - this.container.removeAttribute('contextmenu'); - this.contextMenuOpen = false; - - if (this.pdfThumbnailViewer) { - this.pdfThumbnailViewer.ensureThumbnailVisible(page); - } - }, - - /** - * @private - */ - _mouseDown: function PDFPresentationMode_mouseDown(evt) { - if (this.contextMenuOpen) { - this.contextMenuOpen = false; - evt.preventDefault(); - return; - } - if (evt.button === 0) { - // Enable clicking of links in presentation mode. Please note: - // Only links pointing to destinations in the current PDF document work. - var isInternalLink = (evt.target.href && - evt.target.classList.contains('internalLink')); - if (!isInternalLink) { - // Unless an internal link was clicked, advance one page. - evt.preventDefault(); - this.pdfViewer.currentPageNumber += (evt.shiftKey ? -1 : 1); - } - } - }, - - /** - * @private - */ - _contextMenu: function PDFPresentationMode_contextMenu() { - this.contextMenuOpen = true; - }, - - /** - * @private - */ - _showControls: function PDFPresentationMode_showControls() { - if (this.controlsTimeout) { - clearTimeout(this.controlsTimeout); - } else { - this.container.classList.add(CONTROLS_SELECTOR); - } - this.controlsTimeout = setTimeout(function showControlsTimeout() { - this.container.classList.remove(CONTROLS_SELECTOR); - delete this.controlsTimeout; - }.bind(this), DELAY_BEFORE_HIDING_CONTROLS); - }, - - /** - * @private - */ - _hideControls: function PDFPresentationMode_hideControls() { - if (!this.controlsTimeout) { - return; - } - clearTimeout(this.controlsTimeout); - this.container.classList.remove(CONTROLS_SELECTOR); - delete this.controlsTimeout; - }, - - /** - * Resets the properties used for tracking mouse scrolling events. - * @private - */ - _resetMouseScrollState: - function PDFPresentationMode_resetMouseScrollState() { - this.mouseScrollTimeStamp = 0; - this.mouseScrollDelta = 0; - }, - - /** - * @private - */ - _addWindowListeners: function PDFPresentationMode_addWindowListeners() { - this.showControlsBind = this._showControls.bind(this); - this.mouseDownBind = this._mouseDown.bind(this); - this.resetMouseScrollStateBind = this._resetMouseScrollState.bind(this); - this.contextMenuBind = this._contextMenu.bind(this); - - window.addEventListener('mousemove', this.showControlsBind); - window.addEventListener('mousedown', this.mouseDownBind); - window.addEventListener('keydown', this.resetMouseScrollStateBind); - window.addEventListener('contextmenu', this.contextMenuBind); - }, - - /** - * @private - */ - _removeWindowListeners: - function PDFPresentationMode_removeWindowListeners() { - window.removeEventListener('mousemove', this.showControlsBind); - window.removeEventListener('mousedown', this.mouseDownBind); - window.removeEventListener('keydown', this.resetMouseScrollStateBind); - window.removeEventListener('contextmenu', this.contextMenuBind); - - delete this.showControlsBind; - delete this.mouseDownBind; - delete this.resetMouseScrollStateBind; - delete this.contextMenuBind; - }, - - /** - * @private - */ - _fullscreenChange: function PDFPresentationMode_fullscreenChange() { - if (this.isFullscreen) { - this._enter(); - } else { - this._exit(); - } - }, - - /** - * @private - */ - _addFullscreenChangeListeners: - function PDFPresentationMode_addFullscreenChangeListeners() { - this.fullscreenChangeBind = this._fullscreenChange.bind(this); - - window.addEventListener('fullscreenchange', this.fullscreenChangeBind); - window.addEventListener('mozfullscreenchange', this.fullscreenChangeBind); - window.addEventListener('webkitfullscreenchange', - this.fullscreenChangeBind); - window.addEventListener('MSFullscreenChange', this.fullscreenChangeBind); - }, - - /** - * @private - */ - _removeFullscreenChangeListeners: - function PDFPresentationMode_removeFullscreenChangeListeners() { - window.removeEventListener('fullscreenchange', this.fullscreenChangeBind); - window.removeEventListener('mozfullscreenchange', - this.fullscreenChangeBind); - window.removeEventListener('webkitfullscreenchange', - this.fullscreenChangeBind); - window.removeEventListener('MSFullscreenChange', - this.fullscreenChangeBind); - - delete this.fullscreenChangeBind; - } - }; - - return PDFPresentationMode; -})(); - - - -var GrabToPan = (function GrabToPanClosure() { - /** - * Construct a GrabToPan instance for a given HTML element. - * @param options.element {Element} - * @param options.ignoreTarget {function} optional. See `ignoreTarget(node)` - * @param options.onActiveChanged {function(boolean)} optional. Called - * when grab-to-pan is (de)activated. The first argument is a boolean that - * shows whether grab-to-pan is activated. - */ - function GrabToPan(options) { - this.element = options.element; - this.document = options.element.ownerDocument; - if (typeof options.ignoreTarget === 'function') { - this.ignoreTarget = options.ignoreTarget; - } - this.onActiveChanged = options.onActiveChanged; - - // Bind the contexts to ensure that `this` always points to - // the GrabToPan instance. - this.activate = this.activate.bind(this); - this.deactivate = this.deactivate.bind(this); - this.toggle = this.toggle.bind(this); - this._onmousedown = this._onmousedown.bind(this); - this._onmousemove = this._onmousemove.bind(this); - this._endPan = this._endPan.bind(this); - - // This overlay will be inserted in the document when the mouse moves during - // a grab operation, to ensure that the cursor has the desired appearance. - var overlay = this.overlay = document.createElement('div'); - overlay.className = 'grab-to-pan-grabbing'; - } - GrabToPan.prototype = { - /** - * Class name of element which can be grabbed - */ - CSS_CLASS_GRAB: 'grab-to-pan-grab', - - /** - * Bind a mousedown event to the element to enable grab-detection. - */ - activate: function GrabToPan_activate() { - if (!this.active) { - this.active = true; - this.element.addEventListener('mousedown', this._onmousedown, true); - this.element.classList.add(this.CSS_CLASS_GRAB); - if (this.onActiveChanged) { - this.onActiveChanged(true); - } - } - }, - - /** - * Removes all events. Any pending pan session is immediately stopped. - */ - deactivate: function GrabToPan_deactivate() { - if (this.active) { - this.active = false; - this.element.removeEventListener('mousedown', this._onmousedown, true); - this._endPan(); - this.element.classList.remove(this.CSS_CLASS_GRAB); - if (this.onActiveChanged) { - this.onActiveChanged(false); - } - } - }, - - toggle: function GrabToPan_toggle() { - if (this.active) { - this.deactivate(); - } else { - this.activate(); - } - }, - - /** - * Whether to not pan if the target element is clicked. - * Override this method to change the default behaviour. - * - * @param node {Element} The target of the event - * @return {boolean} Whether to not react to the click event. - */ - ignoreTarget: function GrabToPan_ignoreTarget(node) { - // Use matchesSelector to check whether the clicked element - // is (a child of) an input element / link - return node[matchesSelector]( - 'a[href], a[href] *, input, textarea, button, button *, select, option' - ); - }, - - /** - * @private - */ - _onmousedown: function GrabToPan__onmousedown(event) { - if (event.button !== 0 || this.ignoreTarget(event.target)) { - return; - } - if (event.originalTarget) { - try { - /* jshint expr:true */ - event.originalTarget.tagName; - } catch (e) { - // Mozilla-specific: element is a scrollbar (XUL element) - return; - } - } - - this.scrollLeftStart = this.element.scrollLeft; - this.scrollTopStart = this.element.scrollTop; - this.clientXStart = event.clientX; - this.clientYStart = event.clientY; - this.document.addEventListener('mousemove', this._onmousemove, true); - this.document.addEventListener('mouseup', this._endPan, true); - // When a scroll event occurs before a mousemove, assume that the user - // dragged a scrollbar (necessary for Opera Presto, Safari and IE) - // (not needed for Chrome/Firefox) - this.element.addEventListener('scroll', this._endPan, true); - event.preventDefault(); - event.stopPropagation(); - this.document.documentElement.classList.add(this.CSS_CLASS_GRABBING); - - var focusedElement = document.activeElement; - if (focusedElement && !focusedElement.contains(event.target)) { - focusedElement.blur(); - } - }, - - /** - * @private - */ - _onmousemove: function GrabToPan__onmousemove(event) { - this.element.removeEventListener('scroll', this._endPan, true); - if (isLeftMouseReleased(event)) { - this._endPan(); - return; - } - var xDiff = event.clientX - this.clientXStart; - var yDiff = event.clientY - this.clientYStart; - this.element.scrollTop = this.scrollTopStart - yDiff; - this.element.scrollLeft = this.scrollLeftStart - xDiff; - if (!this.overlay.parentNode) { - document.body.appendChild(this.overlay); - } - }, - - /** - * @private - */ - _endPan: function GrabToPan__endPan() { - this.element.removeEventListener('scroll', this._endPan, true); - this.document.removeEventListener('mousemove', this._onmousemove, true); - this.document.removeEventListener('mouseup', this._endPan, true); - if (this.overlay.parentNode) { - this.overlay.parentNode.removeChild(this.overlay); - } - } - }; - - // Get the correct (vendor-prefixed) name of the matches method. - var matchesSelector; - ['webkitM', 'mozM', 'msM', 'oM', 'm'].some(function(prefix) { - var name = prefix + 'atches'; - if (name in document.documentElement) { - matchesSelector = name; - } - name += 'Selector'; - if (name in document.documentElement) { - matchesSelector = name; - } - return matchesSelector; // If found, then truthy, and [].some() ends. - }); - - // Browser sniffing because it's impossible to feature-detect - // whether event.which for onmousemove is reliable - var isNotIEorIsIE10plus = !document.documentMode || document.documentMode > 9; - var chrome = window.chrome; - var isChrome15OrOpera15plus = chrome && (chrome.webstore || chrome.app); - // ^ Chrome 15+ ^ Opera 15+ - var isSafari6plus = /Apple/.test(navigator.vendor) && - /Version\/([6-9]\d*|[1-5]\d+)/.test(navigator.userAgent); - - /** - * Whether the left mouse is not pressed. - * @param event {MouseEvent} - * @return {boolean} True if the left mouse button is not pressed. - * False if unsure or if the left mouse button is pressed. - */ - function isLeftMouseReleased(event) { - if ('buttons' in event && isNotIEorIsIE10plus) { - // http://www.w3.org/TR/DOM-Level-3-Events/#events-MouseEvent-buttons - // Firefox 15+ - // Internet Explorer 10+ - return !(event.buttons | 1); - } - if (isChrome15OrOpera15plus || isSafari6plus) { - // Chrome 14+ - // Opera 15+ - // Safari 6.0+ - return event.which === 0; - } - } - - return GrabToPan; -})(); - -var HandTool = { - initialize: function handToolInitialize(options) { - var toggleHandTool = options.toggleHandTool; - this.handTool = new GrabToPan({ - element: options.container, - onActiveChanged: function(isActive) { - if (!toggleHandTool) { - return; - } - if (isActive) { - toggleHandTool.title = 'Disable hand tool'; - toggleHandTool.firstElementChild.textContent = 'Disable hand tool'; - } else { - toggleHandTool.title = 'Enable hand tool'; - toggleHandTool.firstElementChild.textContent = 'Enable hand tool'; - } - } - }); - if (toggleHandTool) { - toggleHandTool.addEventListener('click', this.toggle.bind(this), false); - - window.addEventListener('localized', function (evt) { - Preferences.get('enableHandToolOnLoad').then(function resolved(value) { - if (value) { - this.handTool.activate(); - } - }.bind(this), function rejected(reason) {}); - }.bind(this)); - - window.addEventListener('presentationmodechanged', function (evt) { - if (evt.detail.switchInProgress) { - return; - } - if (evt.detail.active) { - this.enterPresentationMode(); - } else { - this.exitPresentationMode(); - } - }.bind(this)); - } - }, - - toggle: function handToolToggle() { - this.handTool.toggle(); - SecondaryToolbar.close(); - }, - - enterPresentationMode: function handToolEnterPresentationMode() { - if (this.handTool.active) { - this.wasActive = true; - this.handTool.deactivate(); - } - }, - - exitPresentationMode: function handToolExitPresentationMode() { - if (this.wasActive) { - this.wasActive = null; - this.handTool.activate(); - } - } -}; - - -var OverlayManager = { - overlays: {}, - active: null, - - /** - * @param {string} name The name of the overlay that is registered. This must - * be equal to the ID of the overlay's DOM element. - * @param {function} callerCloseMethod (optional) The method that, if present, - * will call OverlayManager.close from the Object - * registering the overlay. Access to this method is - * necessary in order to run cleanup code when e.g. - * the overlay is force closed. The default is null. - * @param {boolean} canForceClose (optional) Indicates if opening the overlay - * will close an active overlay. The default is false. - * @returns {Promise} A promise that is resolved when the overlay has been - * registered. - */ - register: function overlayManagerRegister(name, - callerCloseMethod, canForceClose) { - return new Promise(function (resolve) { - var element, container; - if (!name || !(element = document.getElementById(name)) || - !(container = element.parentNode)) { - throw new Error('Not enough parameters.'); - } else if (this.overlays[name]) { - throw new Error('The overlay is already registered.'); - } - this.overlays[name] = { element: element, - container: container, - callerCloseMethod: (callerCloseMethod || null), - canForceClose: (canForceClose || false) }; - resolve(); - }.bind(this)); - }, - - /** - * @param {string} name The name of the overlay that is unregistered. - * @returns {Promise} A promise that is resolved when the overlay has been - * unregistered. - */ - unregister: function overlayManagerUnregister(name) { - return new Promise(function (resolve) { - if (!this.overlays[name]) { - throw new Error('The overlay does not exist.'); - } else if (this.active === name) { - throw new Error('The overlay cannot be removed while it is active.'); - } - delete this.overlays[name]; - - resolve(); - }.bind(this)); - }, - - /** - * @param {string} name The name of the overlay that should be opened. - * @returns {Promise} A promise that is resolved when the overlay has been - * opened. - */ - open: function overlayManagerOpen(name) { - return new Promise(function (resolve) { - if (!this.overlays[name]) { - throw new Error('The overlay does not exist.'); - } else if (this.active) { - if (this.overlays[name].canForceClose) { - this._closeThroughCaller(); - } else if (this.active === name) { - throw new Error('The overlay is already active.'); - } else { - throw new Error('Another overlay is currently active.'); - } - } - this.active = name; - this.overlays[this.active].element.classList.remove('hidden'); - this.overlays[this.active].container.classList.remove('hidden'); - - window.addEventListener('keydown', this._keyDown); - resolve(); - }.bind(this)); - }, - - /** - * @param {string} name The name of the overlay that should be closed. - * @returns {Promise} A promise that is resolved when the overlay has been - * closed. - */ - close: function overlayManagerClose(name) { - return new Promise(function (resolve) { - if (!this.overlays[name]) { - throw new Error('The overlay does not exist.'); - } else if (!this.active) { - throw new Error('The overlay is currently not active.'); - } else if (this.active !== name) { - throw new Error('Another overlay is currently active.'); - } - this.overlays[this.active].container.classList.add('hidden'); - this.overlays[this.active].element.classList.add('hidden'); - this.active = null; - - window.removeEventListener('keydown', this._keyDown); - resolve(); - }.bind(this)); - }, - - /** - * @private - */ - _keyDown: function overlayManager_keyDown(evt) { - var self = OverlayManager; - if (self.active && evt.keyCode === 27) { // Esc key. - self._closeThroughCaller(); - evt.preventDefault(); - } - }, - - /** - * @private - */ - _closeThroughCaller: function overlayManager_closeThroughCaller() { - if (this.overlays[this.active].callerCloseMethod) { - this.overlays[this.active].callerCloseMethod(); - } - if (this.active) { - this.close(this.active); - } - } -}; - - -var PasswordPrompt = { - overlayName: null, - updatePassword: null, - reason: null, - passwordField: null, - passwordText: null, - passwordSubmit: null, - passwordCancel: null, - - initialize: function secondaryToolbarInitialize(options) { - this.overlayName = options.overlayName; - this.passwordField = options.passwordField; - this.passwordText = options.passwordText; - this.passwordSubmit = options.passwordSubmit; - this.passwordCancel = options.passwordCancel; - - // Attach the event listeners. - this.passwordSubmit.addEventListener('click', - this.verifyPassword.bind(this)); - - this.passwordCancel.addEventListener('click', this.close.bind(this)); - - this.passwordField.addEventListener('keydown', function (e) { - if (e.keyCode === 13) { // Enter key - this.verifyPassword(); - } - }.bind(this)); - - OverlayManager.register(this.overlayName, this.close.bind(this), true); - }, - - open: function passwordPromptOpen() { - OverlayManager.open(this.overlayName).then(function () { - this.passwordField.type = 'password'; - this.passwordField.focus(); - - var promptString = 'Enter the password to open this PDF file.'; - - if (this.reason === PDFJS.PasswordResponses.INCORRECT_PASSWORD) { - promptString = 'Invalid password. Please try again.'; - } - - this.passwordText.textContent = promptString; - }.bind(this)); - }, - - close: function passwordPromptClose() { - OverlayManager.close(this.overlayName).then(function () { - this.passwordField.value = ''; - this.passwordField.type = ''; - }.bind(this)); - }, - - verifyPassword: function passwordPromptVerifyPassword() { - var password = this.passwordField.value; - if (password && password.length > 0) { - this.close(); - return this.updatePassword(password); - } - } -}; - - -/** - * @typedef {Object} PDFDocumentPropertiesOptions - * @property {string} overlayName - Name/identifier for the overlay. - * @property {Object} fields - Names and elements of the overlay's fields. - * @property {HTMLButtonElement} closeButton - Button for closing the overlay. - */ - -/** - * @class - */ -var PDFDocumentProperties = (function PDFDocumentPropertiesClosure() { - /** - * @constructs PDFDocumentProperties - * @param {PDFDocumentPropertiesOptions} options - */ - function PDFDocumentProperties(options) { - this.fields = options.fields; - this.overlayName = options.overlayName; - - this.rawFileSize = 0; - this.url = null; - this.pdfDocument = null; - - // Bind the event listener for the Close button. - if (options.closeButton) { - options.closeButton.addEventListener('click', this.close.bind(this)); - } - - this.dataAvailablePromise = new Promise(function (resolve) { - this.resolveDataAvailable = resolve; - }.bind(this)); - - OverlayManager.register(this.overlayName, this.close.bind(this)); - } - - PDFDocumentProperties.prototype = { - /** - * Open the document properties overlay. - */ - open: function PDFDocumentProperties_open() { - Promise.all([OverlayManager.open(this.overlayName), - this.dataAvailablePromise]).then(function () { - this._getProperties(); - }.bind(this)); - }, - - /** - * Close the document properties overlay. - */ - close: function PDFDocumentProperties_close() { - OverlayManager.close(this.overlayName); - }, - - /** - * Set the file size of the PDF document. This method is used to - * update the file size in the document properties overlay once it - * is known so we do not have to wait until the entire file is loaded. - * - * @param {number} fileSize - The file size of the PDF document. - */ - setFileSize: function PDFDocumentProperties_setFileSize(fileSize) { - if (fileSize > 0) { - this.rawFileSize = fileSize; - } - }, - - /** - * Set a reference to the PDF document and the URL in order - * to populate the overlay fields with the document properties. - * Note that the overlay will contain no information if this method - * is not called. - * - * @param {Object} pdfDocument - A reference to the PDF document. - * @param {string} url - The URL of the document. - */ - setDocumentAndUrl: - function PDFDocumentProperties_setDocumentAndUrl(pdfDocument, url) { - this.pdfDocument = pdfDocument; - this.url = url; - this.resolveDataAvailable(); - }, - - /** - * @private - */ - _getProperties: function PDFDocumentProperties_getProperties() { - if (!OverlayManager.active) { - // If the dialog was closed before dataAvailablePromise was resolved, - // don't bother updating the properties. - return; - } - // Get the file size (if it hasn't already been set). - this.pdfDocument.getDownloadInfo().then(function(data) { - if (data.length === this.rawFileSize) { - return; - } - this.setFileSize(data.length); - this._updateUI(this.fields['fileSize'], this._parseFileSize()); - }.bind(this)); - - // Get the document properties. - this.pdfDocument.getMetadata().then(function(data) { - var content = { - 'fileName': getPDFFileNameFromURL(this.url), - 'fileSize': this._parseFileSize(), - 'title': data.info.Title, - 'author': data.info.Author, - 'subject': data.info.Subject, - 'keywords': data.info.Keywords, - 'creationDate': this._parseDate(data.info.CreationDate), - 'modificationDate': this._parseDate(data.info.ModDate), - 'creator': data.info.Creator, - 'producer': data.info.Producer, - 'version': data.info.PDFFormatVersion, - 'pageCount': this.pdfDocument.numPages - }; - - // Show the properties in the dialog. - for (var identifier in content) { - this._updateUI(this.fields[identifier], content[identifier]); - } - }.bind(this)); - }, - - /** - * @private - */ - _updateUI: function PDFDocumentProperties_updateUI(field, content) { - if (field && content !== undefined && content !== '') { - field.textContent = content; - } - }, - - /** - * @private - */ - _parseFileSize: function PDFDocumentProperties_parseFileSize() { - var fileSize = this.rawFileSize, kb = fileSize / 1024; - if (!kb) { - return; - } else if (kb < 1024) { - return kb + ' KB ' + size_b + ' bytes'; - } else { - return (kb / 1024) + ' MB ' + size_b + ' bytes'; - } - }, - - /** - * @private - */ - _parseDate: function PDFDocumentProperties_parseDate(inputDate) { - // This is implemented according to the PDF specification, but note that - // Adobe Reader doesn't handle changing the date to universal time - // and doesn't use the user's time zone (they're effectively ignoring - // the HH' and mm' parts of the date string). - var dateToParse = inputDate; - if (dateToParse === undefined) { - return ''; - } - - // Remove the D: prefix if it is available. - if (dateToParse.substring(0,2) === 'D:') { - dateToParse = dateToParse.substring(2); - } - - // Get all elements from the PDF date string. - // JavaScript's Date object expects the month to be between - // 0 and 11 instead of 1 and 12, so we're correcting for this. - var year = parseInt(dateToParse.substring(0,4), 10); - var month = parseInt(dateToParse.substring(4,6), 10) - 1; - var day = parseInt(dateToParse.substring(6,8), 10); - var hours = parseInt(dateToParse.substring(8,10), 10); - var minutes = parseInt(dateToParse.substring(10,12), 10); - var seconds = parseInt(dateToParse.substring(12,14), 10); - var utRel = dateToParse.substring(14,15); - var offsetHours = parseInt(dateToParse.substring(15,17), 10); - var offsetMinutes = parseInt(dateToParse.substring(18,20), 10); - - // As per spec, utRel = 'Z' means equal to universal time. - // The other cases ('-' and '+') have to be handled here. - if (utRel === '-') { - hours += offsetHours; - minutes += offsetMinutes; - } else if (utRel === '+') { - hours -= offsetHours; - minutes -= offsetMinutes; - } - - // Return the new date format from the user's locale. - var date = new Date(Date.UTC(year, month, day, hours, minutes, seconds)); - var dateString = date.toLocaleDateString(); - var timeString = date.toLocaleTimeString(); - return dateString + ', ' + timeString; - } - }; - - return PDFDocumentProperties; -})(); - - -var PresentationModeState = { - UNKNOWN: 0, - NORMAL: 1, - CHANGING: 2, - FULLSCREEN: 3, -}; - -var IGNORE_CURRENT_POSITION_ON_ZOOM = false; -var DEFAULT_CACHE_SIZE = 10; - - -var CLEANUP_TIMEOUT = 30000; - -var RenderingStates = { - INITIAL: 0, - RUNNING: 1, - PAUSED: 2, - FINISHED: 3 -}; - -/** - * Controls rendering of the views for pages and thumbnails. - * @class - */ -var PDFRenderingQueue = (function PDFRenderingQueueClosure() { - /** - * @constructs - */ - function PDFRenderingQueue() { - this.pdfViewer = null; - this.pdfThumbnailViewer = null; - this.onIdle = null; - - this.highestPriorityPage = null; - this.idleTimeout = null; - this.printing = false; - this.isThumbnailViewEnabled = false; - } - - PDFRenderingQueue.prototype = /** @lends PDFRenderingQueue.prototype */ { - /** - * @param {PDFViewer} pdfViewer - */ - setViewer: function PDFRenderingQueue_setViewer(pdfViewer) { - this.pdfViewer = pdfViewer; - }, - - /** - * @param {PDFThumbnailViewer} pdfThumbnailViewer - */ - setThumbnailViewer: - function PDFRenderingQueue_setThumbnailViewer(pdfThumbnailViewer) { - this.pdfThumbnailViewer = pdfThumbnailViewer; - }, - - /** - * @param {IRenderableView} view - * @returns {boolean} - */ - isHighestPriority: function PDFRenderingQueue_isHighestPriority(view) { - return this.highestPriorityPage === view.renderingId; - }, - - renderHighestPriority: function - PDFRenderingQueue_renderHighestPriority(currentlyVisiblePages) { - if (this.idleTimeout) { - clearTimeout(this.idleTimeout); - this.idleTimeout = null; - } - - // Pages have a higher priority than thumbnails, so check them first. - if (this.pdfViewer.forceRendering(currentlyVisiblePages)) { - return; - } - // No pages needed rendering so check thumbnails. - if (this.pdfThumbnailViewer && this.isThumbnailViewEnabled) { - if (this.pdfThumbnailViewer.forceRendering()) { - return; - } - } - - if (this.printing) { - // If printing is currently ongoing do not reschedule cleanup. - return; - } - - if (this.onIdle) { - this.idleTimeout = setTimeout(this.onIdle.bind(this), CLEANUP_TIMEOUT); - } - }, - - getHighestPriority: function - PDFRenderingQueue_getHighestPriority(visible, views, scrolledDown) { - // The state has changed figure out which page has the highest priority to - // render next (if any). - // Priority: - // 1 visible pages - // 2 if last scrolled down page after the visible pages - // 2 if last scrolled up page before the visible pages - var visibleViews = visible.views; - - var numVisible = visibleViews.length; - if (numVisible === 0) { - return false; - } - for (var i = 0; i < numVisible; ++i) { - var view = visibleViews[i].view; - if (!this.isViewFinished(view)) { - return view; - } - } - - // All the visible views have rendered, try to render next/previous pages. - if (scrolledDown) { - var nextPageIndex = visible.last.id; - // ID's start at 1 so no need to add 1. - if (views[nextPageIndex] && - !this.isViewFinished(views[nextPageIndex])) { - return views[nextPageIndex]; - } - } else { - var previousPageIndex = visible.first.id - 2; - if (views[previousPageIndex] && - !this.isViewFinished(views[previousPageIndex])) { - return views[previousPageIndex]; - } - } - // Everything that needs to be rendered has been. - return null; - }, - - /** - * @param {IRenderableView} view - * @returns {boolean} - */ - isViewFinished: function PDFRenderingQueue_isViewFinished(view) { - return view.renderingState === RenderingStates.FINISHED; - }, - - /** - * Render a page or thumbnail view. This calls the appropriate function - * based on the views state. If the view is already rendered it will return - * false. - * @param {IRenderableView} view - */ - renderView: function PDFRenderingQueue_renderView(view) { - var state = view.renderingState; - switch (state) { - case RenderingStates.FINISHED: - return false; - case RenderingStates.PAUSED: - this.highestPriorityPage = view.renderingId; - view.resume(); - break; - case RenderingStates.RUNNING: - this.highestPriorityPage = view.renderingId; - break; - case RenderingStates.INITIAL: - this.highestPriorityPage = view.renderingId; - var continueRendering = function () { - this.renderHighestPriority(); - }.bind(this); - view.draw().then(continueRendering, continueRendering); - break; - } - return true; - }, - }; - - return PDFRenderingQueue; -})(); - - -var TEXT_LAYER_RENDER_DELAY = 200; // ms - -/** - * @typedef {Object} PDFPageViewOptions - * @property {HTMLDivElement} container - The viewer element. - * @property {number} id - The page unique ID (normally its number). - * @property {number} scale - The page scale display. - * @property {PageViewport} defaultViewport - The page viewport. - * @property {PDFRenderingQueue} renderingQueue - The rendering queue object. - * @property {IPDFTextLayerFactory} textLayerFactory - * @property {IPDFAnnotationLayerFactory} annotationLayerFactory - */ - -/** - * @class - * @implements {IRenderableView} - */ -var PDFPageView = (function PDFPageViewClosure() { - /** - * @constructs PDFPageView - * @param {PDFPageViewOptions} options - */ - function PDFPageView(options) { - var container = options.container; - var id = options.id; - var scale = options.scale; - var defaultViewport = options.defaultViewport; - var renderingQueue = options.renderingQueue; - var textLayerFactory = options.textLayerFactory; - var annotationLayerFactory = options.annotationLayerFactory; - - this.id = id; - this.renderingId = 'page' + id; - - this.rotation = 0; - this.scale = scale || DEFAULT_SCALE; - this.viewport = defaultViewport; - this.pdfPageRotate = defaultViewport.rotation; - this.hasRestrictedScaling = false; - - this.renderingQueue = renderingQueue; - this.textLayerFactory = textLayerFactory; - this.annotationLayerFactory = annotationLayerFactory; - - this.renderingState = RenderingStates.INITIAL; - this.resume = null; - - this.onBeforeDraw = null; - this.onAfterDraw = null; - - this.textLayer = null; - - this.zoomLayer = null; - - this.annotationLayer = null; - - var div = document.createElement('div'); - div.id = 'pageContainer' + this.id; - div.className = 'page'; - div.style.width = Math.floor(this.viewport.width) + 'px'; - div.style.height = Math.floor(this.viewport.height) + 'px'; - div.setAttribute('data-page-number', this.id); - this.div = div; - - container.appendChild(div); - } - - PDFPageView.prototype = { - setPdfPage: function PDFPageView_setPdfPage(pdfPage) { - this.pdfPage = pdfPage; - this.pdfPageRotate = pdfPage.rotate; - var totalRotation = (this.rotation + this.pdfPageRotate) % 360; - this.viewport = pdfPage.getViewport(this.scale * CSS_UNITS, - totalRotation); - this.stats = pdfPage.stats; - this.reset(); - }, - - destroy: function PDFPageView_destroy() { - this.zoomLayer = null; - this.reset(); - if (this.pdfPage) { - this.pdfPage.cleanup(); - } - }, - - reset: function PDFPageView_reset(keepZoomLayer, keepAnnotations) { - if (this.renderTask) { - this.renderTask.cancel(); - } - this.resume = null; - this.renderingState = RenderingStates.INITIAL; - - var div = this.div; - div.style.width = Math.floor(this.viewport.width) + 'px'; - div.style.height = Math.floor(this.viewport.height) + 'px'; - - var childNodes = div.childNodes; - var currentZoomLayerNode = (keepZoomLayer && this.zoomLayer) || null; - var currentAnnotationNode = (keepAnnotations && this.annotationLayer && - this.annotationLayer.div) || null; - for (var i = childNodes.length - 1; i >= 0; i--) { - var node = childNodes[i]; - if (currentZoomLayerNode === node || currentAnnotationNode === node) { - continue; - } - div.removeChild(node); - } - div.removeAttribute('data-loaded'); - - if (currentAnnotationNode) { - // Hide annotationLayer until all elements are resized - // so they are not displayed on the already-resized page - this.annotationLayer.hide(); - } else { - this.annotationLayer = null; - } - - if (this.canvas && !currentZoomLayerNode) { - // Zeroing the width and height causes Firefox to release graphics - // resources immediately, which can greatly reduce memory consumption. - this.canvas.width = 0; - this.canvas.height = 0; - delete this.canvas; - } - - this.loadingIconDiv = document.createElement('div'); - this.loadingIconDiv.className = 'loadingIcon'; - div.appendChild(this.loadingIconDiv); - }, - - update: function PDFPageView_update(scale, rotation) { - this.scale = scale || this.scale; - - if (typeof rotation !== 'undefined') { - this.rotation = rotation; - } - - var totalRotation = (this.rotation + this.pdfPageRotate) % 360; - this.viewport = this.viewport.clone({ - scale: this.scale * CSS_UNITS, - rotation: totalRotation - }); - - var isScalingRestricted = false; - if (this.canvas && PDFJS.maxCanvasPixels > 0) { - var outputScale = this.outputScale; - var pixelsInViewport = this.viewport.width * this.viewport.height; - var maxScale = Math.sqrt(PDFJS.maxCanvasPixels / pixelsInViewport); - if (((Math.floor(this.viewport.width) * outputScale.sx) | 0) * - ((Math.floor(this.viewport.height) * outputScale.sy) | 0) > - PDFJS.maxCanvasPixels) { - isScalingRestricted = true; - } - } - - if (this.canvas) { - if (PDFJS.useOnlyCssZoom || - (this.hasRestrictedScaling && isScalingRestricted)) { - this.cssTransform(this.canvas, true); - - var event = document.createEvent('CustomEvent'); - event.initCustomEvent('pagerendered', true, true, { - pageNumber: this.id, - cssTransform: true, - }); - this.div.dispatchEvent(event); - - return; - } - if (!this.zoomLayer) { - this.zoomLayer = this.canvas.parentNode; - this.zoomLayer.style.position = 'absolute'; - } - } - if (this.zoomLayer) { - this.cssTransform(this.zoomLayer.firstChild); - } - this.reset(/* keepZoomLayer = */ true, /* keepAnnotations = */ true); - }, - - /** - * Called when moved in the parent's container. - */ - updatePosition: function PDFPageView_updatePosition() { - if (this.textLayer) { - this.textLayer.render(TEXT_LAYER_RENDER_DELAY); - } - }, - - cssTransform: function PDFPageView_transform(canvas, redrawAnnotations) { - var CustomStyle = PDFJS.CustomStyle; - - // Scale canvas, canvas wrapper, and page container. - var width = this.viewport.width; - var height = this.viewport.height; - var div = this.div; - canvas.style.width = canvas.parentNode.style.width = div.style.width = - Math.floor(width) + 'px'; - canvas.style.height = canvas.parentNode.style.height = div.style.height = - Math.floor(height) + 'px'; - // The canvas may have been originally rotated, rotate relative to that. - var relativeRotation = this.viewport.rotation - canvas._viewport.rotation; - var absRotation = Math.abs(relativeRotation); - var scaleX = 1, scaleY = 1; - if (absRotation === 90 || absRotation === 270) { - // Scale x and y because of the rotation. - scaleX = height / width; - scaleY = width / height; - } - var cssTransform = 'rotate(' + relativeRotation + 'deg) ' + - 'scale(' + scaleX + ',' + scaleY + ')'; - CustomStyle.setProp('transform', canvas, cssTransform); - - if (this.textLayer) { - // Rotating the text layer is more complicated since the divs inside the - // the text layer are rotated. - // TODO: This could probably be simplified by drawing the text layer in - // one orientation then rotating overall. - var textLayerViewport = this.textLayer.viewport; - var textRelativeRotation = this.viewport.rotation - - textLayerViewport.rotation; - var textAbsRotation = Math.abs(textRelativeRotation); - var scale = width / textLayerViewport.width; - if (textAbsRotation === 90 || textAbsRotation === 270) { - scale = width / textLayerViewport.height; - } - var textLayerDiv = this.textLayer.textLayerDiv; - var transX, transY; - switch (textAbsRotation) { - case 0: - transX = transY = 0; - break; - case 90: - transX = 0; - transY = '-' + textLayerDiv.style.height; - break; - case 180: - transX = '-' + textLayerDiv.style.width; - transY = '-' + textLayerDiv.style.height; - break; - case 270: - transX = '-' + textLayerDiv.style.width; - transY = 0; - break; - default: - console.error('Bad rotation value.'); - break; - } - CustomStyle.setProp('transform', textLayerDiv, - 'rotate(' + textAbsRotation + 'deg) ' + - 'scale(' + scale + ', ' + scale + ') ' + - 'translate(' + transX + ', ' + transY + ')'); - CustomStyle.setProp('transformOrigin', textLayerDiv, '0% 0%'); - } - - if (redrawAnnotations && this.annotationLayer) { - this.annotationLayer.render(this.viewport, 'display'); - } - }, - - get width() { - return this.viewport.width; - }, - - get height() { - return this.viewport.height; - }, - - getPagePoint: function PDFPageView_getPagePoint(x, y) { - return this.viewport.convertToPdfPoint(x, y); - }, - - draw: function PDFPageView_draw() { - if (this.renderingState !== RenderingStates.INITIAL) { - console.error('Must be in new state before drawing'); - } - - this.renderingState = RenderingStates.RUNNING; - - var pdfPage = this.pdfPage; - var viewport = this.viewport; - var div = this.div; - // Wrap the canvas so if it has a css transform for highdpi the overflow - // will be hidden in FF. - var canvasWrapper = document.createElement('div'); - canvasWrapper.style.width = div.style.width; - canvasWrapper.style.height = div.style.height; - canvasWrapper.classList.add('canvasWrapper'); - - var canvas = document.createElement('canvas'); - canvas.id = 'page' + this.id; - // Keep the canvas hidden until the first draw callback, or until drawing - // is complete when `!this.renderingQueue`, to prevent black flickering. - canvas.setAttribute('hidden', 'hidden'); - var isCanvasHidden = true; - - canvasWrapper.appendChild(canvas); - if (this.annotationLayer && this.annotationLayer.div) { - // annotationLayer needs to stay on top - div.insertBefore(canvasWrapper, this.annotationLayer.div); - } else { - div.appendChild(canvasWrapper); - } - this.canvas = canvas; - - canvas.mozOpaque = true; - var ctx = canvas.getContext('2d', {alpha: false}); - var outputScale = getOutputScale(ctx); - this.outputScale = outputScale; - - if (PDFJS.useOnlyCssZoom) { - var actualSizeViewport = viewport.clone({scale: CSS_UNITS}); - // Use a scale that will make the canvas be the original intended size - // of the page. - outputScale.sx *= actualSizeViewport.width / viewport.width; - outputScale.sy *= actualSizeViewport.height / viewport.height; - outputScale.scaled = true; - } - - if (PDFJS.maxCanvasPixels > 0) { - var pixelsInViewport = viewport.width * viewport.height; - var maxScale = Math.sqrt(PDFJS.maxCanvasPixels / pixelsInViewport); - if (outputScale.sx > maxScale || outputScale.sy > maxScale) { - outputScale.sx = maxScale; - outputScale.sy = maxScale; - outputScale.scaled = true; - this.hasRestrictedScaling = true; - } else { - this.hasRestrictedScaling = false; - } - } - - var sfx = approximateFraction(outputScale.sx); - var sfy = approximateFraction(outputScale.sy); - canvas.width = roundToDivide(viewport.width * outputScale.sx, sfx[0]); - canvas.height = roundToDivide(viewport.height * outputScale.sy, sfy[0]); - canvas.style.width = roundToDivide(viewport.width, sfx[1]) + 'px'; - canvas.style.height = roundToDivide(viewport.height, sfy[1]) + 'px'; - // Add the viewport so it's known what it was originally drawn with. - canvas._viewport = viewport; - - var textLayerDiv = null; - var textLayer = null; - if (this.textLayerFactory) { - textLayerDiv = document.createElement('div'); - textLayerDiv.className = 'textLayer'; - textLayerDiv.style.width = canvasWrapper.style.width; - textLayerDiv.style.height = canvasWrapper.style.height; - if (this.annotationLayer && this.annotationLayer.div) { - // annotationLayer needs to stay on top - div.insertBefore(textLayerDiv, this.annotationLayer.div); - } else { - div.appendChild(textLayerDiv); - } - - textLayer = this.textLayerFactory.createTextLayerBuilder(textLayerDiv, - this.id - 1, - this.viewport); - } - this.textLayer = textLayer; - - var resolveRenderPromise, rejectRenderPromise; - var promise = new Promise(function (resolve, reject) { - resolveRenderPromise = resolve; - rejectRenderPromise = reject; - }); - - // Rendering area - - var self = this; - function pageViewDrawCallback(error) { - // The renderTask may have been replaced by a new one, so only remove - // the reference to the renderTask if it matches the one that is - // triggering this callback. - if (renderTask === self.renderTask) { - self.renderTask = null; - } - - if (error === 'cancelled') { - rejectRenderPromise(error); - return; - } - - self.renderingState = RenderingStates.FINISHED; - - if (isCanvasHidden) { - self.canvas.removeAttribute('hidden'); - isCanvasHidden = false; - } - - if (self.loadingIconDiv) { - div.removeChild(self.loadingIconDiv); - delete self.loadingIconDiv; - } - - if (self.zoomLayer) { - // Zeroing the width and height causes Firefox to release graphics - // resources immediately, which can greatly reduce memory consumption. - var zoomLayerCanvas = self.zoomLayer.firstChild; - zoomLayerCanvas.width = 0; - zoomLayerCanvas.height = 0; - - div.removeChild(self.zoomLayer); - self.zoomLayer = null; - } - - self.error = error; - self.stats = pdfPage.stats; - if (self.onAfterDraw) { - self.onAfterDraw(); - } - var event = document.createEvent('CustomEvent'); - event.initCustomEvent('pagerendered', true, true, { - pageNumber: self.id, - cssTransform: false, - }); - div.dispatchEvent(event); - // This custom event is deprecated, and will be removed in the future, - // please use the |pagerendered| event instead. - var deprecatedEvent = document.createEvent('CustomEvent'); - deprecatedEvent.initCustomEvent('pagerender', true, true, { - pageNumber: pdfPage.pageNumber - }); - div.dispatchEvent(deprecatedEvent); - - if (!error) { - resolveRenderPromise(undefined); - } else { - rejectRenderPromise(error); - } - } - - var renderContinueCallback = null; - if (this.renderingQueue) { - renderContinueCallback = function renderContinueCallback(cont) { - if (!self.renderingQueue.isHighestPriority(self)) { - self.renderingState = RenderingStates.PAUSED; - self.resume = function resumeCallback() { - self.renderingState = RenderingStates.RUNNING; - cont(); - }; - return; - } - if (isCanvasHidden) { - self.canvas.removeAttribute('hidden'); - isCanvasHidden = false; - } - cont(); - }; - } - - var transform = !outputScale.scaled ? null : - [outputScale.sx, 0, 0, outputScale.sy, 0, 0]; - var renderContext = { - canvasContext: ctx, - transform: transform, - viewport: this.viewport, - // intent: 'default', // === 'display' - }; - var renderTask = this.renderTask = this.pdfPage.render(renderContext); - renderTask.onContinue = renderContinueCallback; - - this.renderTask.promise.then( - function pdfPageRenderCallback() { - pageViewDrawCallback(null); - if (textLayer) { - self.pdfPage.getTextContent({ normalizeWhitespace: true }).then( - function textContentResolved(textContent) { - textLayer.setTextContent(textContent); - textLayer.render(TEXT_LAYER_RENDER_DELAY); - } - ); - } - }, - function pdfPageRenderError(error) { - pageViewDrawCallback(error); - } - ); - - if (this.annotationLayerFactory) { - if (!this.annotationLayer) { - this.annotationLayer = this.annotationLayerFactory. - createAnnotationLayerBuilder(div, this.pdfPage); - } - this.annotationLayer.render(this.viewport, 'display'); - } - div.setAttribute('data-loaded', true); - - if (self.onBeforeDraw) { - self.onBeforeDraw(); - } - return promise; - }, - - beforePrint: function PDFPageView_beforePrint() { - var CustomStyle = PDFJS.CustomStyle; - var pdfPage = this.pdfPage; - - var viewport = pdfPage.getViewport(1); - // Use the same hack we use for high dpi displays for printing to get - // better output until bug 811002 is fixed in FF. - var PRINT_OUTPUT_SCALE = 2; - var canvas = document.createElement('canvas'); - - // The logical size of the canvas. - canvas.width = Math.floor(viewport.width) * PRINT_OUTPUT_SCALE; - canvas.height = Math.floor(viewport.height) * PRINT_OUTPUT_SCALE; - - // The rendered size of the canvas, relative to the size of canvasWrapper. - canvas.style.width = (PRINT_OUTPUT_SCALE * 100) + '%'; - canvas.style.height = (PRINT_OUTPUT_SCALE * 100) + '%'; - - var cssScale = 'scale(' + (1 / PRINT_OUTPUT_SCALE) + ', ' + - (1 / PRINT_OUTPUT_SCALE) + ')'; - CustomStyle.setProp('transform' , canvas, cssScale); - CustomStyle.setProp('transformOrigin' , canvas, '0% 0%'); - - var printContainer = document.getElementById('printContainer'); - var canvasWrapper = document.createElement('div'); - canvasWrapper.style.width = viewport.width + 'pt'; - canvasWrapper.style.height = viewport.height + 'pt'; - canvasWrapper.appendChild(canvas); - printContainer.appendChild(canvasWrapper); - - canvas.mozPrintCallback = function(obj) { - var ctx = obj.context; - - ctx.save(); - ctx.fillStyle = 'rgb(255, 255, 255)'; - ctx.fillRect(0, 0, canvas.width, canvas.height); - ctx.restore(); - // Used by the mozCurrentTransform polyfill in src/display/canvas.js. - ctx._transformMatrix = - [PRINT_OUTPUT_SCALE, 0, 0, PRINT_OUTPUT_SCALE, 0, 0]; - ctx.scale(PRINT_OUTPUT_SCALE, PRINT_OUTPUT_SCALE); - - var renderContext = { - canvasContext: ctx, - viewport: viewport, - intent: 'print' - }; - - pdfPage.render(renderContext).promise.then(function() { - // Tell the printEngine that rendering this canvas/page has finished. - obj.done(); - }, function(error) { - console.error(error); - // Tell the printEngine that rendering this canvas/page has failed. - // This will make the print proces stop. - if ('abort' in obj) { - obj.abort(); - } else { - obj.done(); - } - }); - }; - }, - }; - - return PDFPageView; -})(); - - -/** - * @typedef {Object} TextLayerBuilderOptions - * @property {HTMLDivElement} textLayerDiv - The text layer container. - * @property {number} pageIndex - The page index. - * @property {PageViewport} viewport - The viewport of the text layer. - * @property {PDFFindController} findController - */ - -/** - * TextLayerBuilder provides text-selection functionality for the PDF. - * It does this by creating overlay divs over the PDF text. These divs - * contain text that matches the PDF text they are overlaying. This object - * also provides a way to highlight text that is being searched for. - * @class - */ -var TextLayerBuilder = (function TextLayerBuilderClosure() { - function TextLayerBuilder(options) { - this.textLayerDiv = options.textLayerDiv; - this.renderingDone = false; - this.divContentDone = false; - this.pageIdx = options.pageIndex; - this.pageNumber = this.pageIdx + 1; - this.matches = []; - this.viewport = options.viewport; - this.textDivs = []; - this.findController = options.findController || null; - this.textLayerRenderTask = null; - this._bindMouse(); - } - - TextLayerBuilder.prototype = { - _finishRendering: function TextLayerBuilder_finishRendering() { - this.renderingDone = true; - - var endOfContent = document.createElement('div'); - endOfContent.className = 'endOfContent'; - this.textLayerDiv.appendChild(endOfContent); - - var event = document.createEvent('CustomEvent'); - event.initCustomEvent('textlayerrendered', true, true, { - pageNumber: this.pageNumber - }); - this.textLayerDiv.dispatchEvent(event); - }, - - /** - * Renders the text layer. - * @param {number} timeout (optional) if specified, the rendering waits - * for specified amount of ms. - */ - render: function TextLayerBuilder_render(timeout) { - if (!this.divContentDone || this.renderingDone) { - return; - } - - if (this.textLayerRenderTask) { - this.textLayerRenderTask.cancel(); - this.textLayerRenderTask = null; - } - - this.textDivs = []; - var textLayerFrag = document.createDocumentFragment(); - this.textLayerRenderTask = PDFJS.renderTextLayer({ - textContent: this.textContent, - container: textLayerFrag, - viewport: this.viewport, - textDivs: this.textDivs, - timeout: timeout - }); - this.textLayerRenderTask.promise.then(function () { - this.textLayerDiv.appendChild(textLayerFrag); - this._finishRendering(); - this.updateMatches(); - }.bind(this), function (reason) { - // canceled or failed to render text layer -- skipping errors - }); - }, - - setTextContent: function TextLayerBuilder_setTextContent(textContent) { - if (this.textLayerRenderTask) { - this.textLayerRenderTask.cancel(); - this.textLayerRenderTask = null; - } - this.textContent = textContent; - this.divContentDone = true; - }, - - convertMatches: function TextLayerBuilder_convertMatches(matches) { - var i = 0; - var iIndex = 0; - var bidiTexts = this.textContent.items; - var end = bidiTexts.length - 1; - var queryLen = (this.findController === null ? - 0 : this.findController.state.query.length); - var ret = []; - - for (var m = 0, len = matches.length; m < len; m++) { - // Calculate the start position. - var matchIdx = matches[m]; - - // Loop over the divIdxs. - while (i !== end && matchIdx >= (iIndex + bidiTexts[i].str.length)) { - iIndex += bidiTexts[i].str.length; - i++; - } - - if (i === bidiTexts.length) { - console.error('Could not find a matching mapping'); - } - - var match = { - begin: { - divIdx: i, - offset: matchIdx - iIndex - } - }; - - // Calculate the end position. - matchIdx += queryLen; - - // Somewhat the same array as above, but use > instead of >= to get - // the end position right. - while (i !== end && matchIdx > (iIndex + bidiTexts[i].str.length)) { - iIndex += bidiTexts[i].str.length; - i++; - } - - match.end = { - divIdx: i, - offset: matchIdx - iIndex - }; - ret.push(match); - } - - return ret; - }, - - renderMatches: function TextLayerBuilder_renderMatches(matches) { - // Early exit if there is nothing to render. - if (matches.length === 0) { - return; - } - - var bidiTexts = this.textContent.items; - var textDivs = this.textDivs; - var prevEnd = null; - var pageIdx = this.pageIdx; - var isSelectedPage = (this.findController === null ? - false : (pageIdx === this.findController.selected.pageIdx)); - var selectedMatchIdx = (this.findController === null ? - -1 : this.findController.selected.matchIdx); - var highlightAll = (this.findController === null ? - false : this.findController.state.highlightAll); - var infinity = { - divIdx: -1, - offset: undefined - }; - - function beginText(begin, className) { - var divIdx = begin.divIdx; - textDivs[divIdx].textContent = ''; - appendTextToDiv(divIdx, 0, begin.offset, className); - } - - function appendTextToDiv(divIdx, fromOffset, toOffset, className) { - var div = textDivs[divIdx]; - var content = bidiTexts[divIdx].str.substring(fromOffset, toOffset); - var node = document.createTextNode(content); - if (className) { - var span = document.createElement('span'); - span.className = className; - span.appendChild(node); - div.appendChild(span); - return; - } - div.appendChild(node); - } - - var i0 = selectedMatchIdx, i1 = i0 + 1; - if (highlightAll) { - i0 = 0; - i1 = matches.length; - } else if (!isSelectedPage) { - // Not highlighting all and this isn't the selected page, so do nothing. - return; - } - - for (var i = i0; i < i1; i++) { - var match = matches[i]; - var begin = match.begin; - var end = match.end; - var isSelected = (isSelectedPage && i === selectedMatchIdx); - var highlightSuffix = (isSelected ? ' selected' : ''); - - if (this.findController) { - this.findController.updateMatchPosition(pageIdx, i, textDivs, - begin.divIdx, end.divIdx); - } - - // Match inside new div. - if (!prevEnd || begin.divIdx !== prevEnd.divIdx) { - // If there was a previous div, then add the text at the end. - if (prevEnd !== null) { - appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset); - } - // Clear the divs and set the content until the starting point. - beginText(begin); - } else { - appendTextToDiv(prevEnd.divIdx, prevEnd.offset, begin.offset); - } - - if (begin.divIdx === end.divIdx) { - appendTextToDiv(begin.divIdx, begin.offset, end.offset, - 'highlight' + highlightSuffix); - } else { - appendTextToDiv(begin.divIdx, begin.offset, infinity.offset, - 'highlight begin' + highlightSuffix); - for (var n0 = begin.divIdx + 1, n1 = end.divIdx; n0 < n1; n0++) { - textDivs[n0].className = 'highlight middle' + highlightSuffix; - } - beginText(end, 'highlight end' + highlightSuffix); - } - prevEnd = end; - } - - if (prevEnd) { - appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset); - } - }, - - updateMatches: function TextLayerBuilder_updateMatches() { - // Only show matches when all rendering is done. - if (!this.renderingDone) { - return; - } - - // Clear all matches. - var matches = this.matches; - var textDivs = this.textDivs; - var bidiTexts = this.textContent.items; - var clearedUntilDivIdx = -1; - - // Clear all current matches. - for (var i = 0, len = matches.length; i < len; i++) { - var match = matches[i]; - var begin = Math.max(clearedUntilDivIdx, match.begin.divIdx); - for (var n = begin, end = match.end.divIdx; n <= end; n++) { - var div = textDivs[n]; - div.textContent = bidiTexts[n].str; - div.className = ''; - } - clearedUntilDivIdx = match.end.divIdx + 1; - } - - if (this.findController === null || !this.findController.active) { - return; - } - - // Convert the matches on the page controller into the match format - // used for the textLayer. - this.matches = this.convertMatches(this.findController === null ? - [] : (this.findController.pageMatches[this.pageIdx] || [])); - this.renderMatches(this.matches); - }, - - /** - * Fixes text selection: adds additional div where mouse was clicked. - * This reduces flickering of the content if mouse slowly dragged down/up. - * @private - */ - _bindMouse: function TextLayerBuilder_bindMouse() { - var div = this.textLayerDiv; - div.addEventListener('mousedown', function (e) { - var end = div.querySelector('.endOfContent'); - if (!end) { - return; - } - // On non-Firefox browsers, the selection will feel better if the height - // of the endOfContent div will be adjusted to start at mouse click - // location -- this will avoid flickering when selections moves up. - // However it does not work when selection started on empty space. - var adjustTop = e.target !== div; - adjustTop = adjustTop && window.getComputedStyle(end). - getPropertyValue('-moz-user-select') !== 'none'; - if (adjustTop) { - var divBounds = div.getBoundingClientRect(); - var r = Math.max(0, (e.pageY - divBounds.top) / divBounds.height); - end.style.top = (r * 100).toFixed(2) + '%'; - } - end.classList.add('active'); - }); - div.addEventListener('mouseup', function (e) { - var end = div.querySelector('.endOfContent'); - if (!end) { - return; - } - end.style.top = ''; - end.classList.remove('active'); - }); - }, - }; - return TextLayerBuilder; -})(); - -/** - * @constructor - * @implements IPDFTextLayerFactory - */ -function DefaultTextLayerFactory() {} -DefaultTextLayerFactory.prototype = { - /** - * @param {HTMLDivElement} textLayerDiv - * @param {number} pageIndex - * @param {PageViewport} viewport - * @returns {TextLayerBuilder} - */ - createTextLayerBuilder: function (textLayerDiv, pageIndex, viewport) { - return new TextLayerBuilder({ - textLayerDiv: textLayerDiv, - pageIndex: pageIndex, - viewport: viewport - }); - } -}; - - -/** - * @typedef {Object} AnnotationLayerBuilderOptions - * @property {HTMLDivElement} pageDiv - * @property {PDFPage} pdfPage - * @property {IPDFLinkService} linkService - */ - -/** - * @class - */ -var AnnotationLayerBuilder = (function AnnotationLayerBuilderClosure() { - /** - * @param {AnnotationLayerBuilderOptions} options - * @constructs AnnotationLayerBuilder - */ - function AnnotationLayerBuilder(options) { - this.pageDiv = options.pageDiv; - this.pdfPage = options.pdfPage; - this.linkService = options.linkService; - - this.div = null; - } - - AnnotationLayerBuilder.prototype = - /** @lends AnnotationLayerBuilder.prototype */ { - - /** - * @param {PageViewport} viewport - * @param {string} intent (default value is 'display') - */ - render: function AnnotationLayerBuilder_render(viewport, intent) { - var self = this; - var parameters = { - intent: (intent === undefined ? 'display' : intent), - }; - - this.pdfPage.getAnnotations(parameters).then(function (annotations) { - viewport = viewport.clone({ dontFlip: true }); - parameters = { - viewport: viewport, - div: self.div, - annotations: annotations, - page: self.pdfPage, - linkService: self.linkService - }; - - if (self.div) { - // If an annotationLayer already exists, refresh its children's - // transformation matrices. - PDFJS.AnnotationLayer.update(parameters); - } else { - // Create an annotation layer div and render the annotations - // if there is at least one annotation. - if (annotations.length === 0) { - return; - } - - self.div = document.createElement('div'); - self.div.className = 'annotationLayer'; - self.pageDiv.appendChild(self.div); - parameters.div = self.div; - - PDFJS.AnnotationLayer.render(parameters); - } - }); - }, - - hide: function AnnotationLayerBuilder_hide() { - if (!this.div) { - return; - } - this.div.setAttribute('hidden', 'true'); - } - }; - - return AnnotationLayerBuilder; -})(); - -/** - * @constructor - * @implements IPDFAnnotationLayerFactory - */ -function DefaultAnnotationLayerFactory() {} -DefaultAnnotationLayerFactory.prototype = { - /** - * @param {HTMLDivElement} pageDiv - * @param {PDFPage} pdfPage - * @returns {AnnotationLayerBuilder} - */ - createAnnotationLayerBuilder: function (pageDiv, pdfPage) { - return new AnnotationLayerBuilder({ - pageDiv: pageDiv, - pdfPage: pdfPage, - linkService: new SimpleLinkService(), - }); - } -}; - - -/** - * @typedef {Object} PDFViewerOptions - * @property {HTMLDivElement} container - The container for the viewer element. - * @property {HTMLDivElement} viewer - (optional) The viewer element. - * @property {IPDFLinkService} linkService - The navigation/linking service. - * @property {PDFRenderingQueue} renderingQueue - (optional) The rendering - * queue object. - * @property {boolean} removePageBorders - (optional) Removes the border shadow - * around the pages. The default is false. - */ - -/** - * Simple viewer control to display PDF content/pages. - * @class - * @implements {IRenderableView} - */ -var PDFViewer = (function pdfViewer() { - function PDFPageViewBuffer(size) { - var data = []; - this.push = function cachePush(view) { - var i = data.indexOf(view); - if (i >= 0) { - data.splice(i, 1); - } - data.push(view); - if (data.length > size) { - data.shift().destroy(); - } - }; - this.resize = function (newSize) { - size = newSize; - while (data.length > size) { - data.shift().destroy(); - } - }; - } - - function isSameScale(oldScale, newScale) { - if (newScale === oldScale) { - return true; - } - if (Math.abs(newScale - oldScale) < 1e-15) { - // Prevent unnecessary re-rendering of all pages when the scale - // changes only because of limited numerical precision. - return true; - } - return false; - } - - /** - * @constructs PDFViewer - * @param {PDFViewerOptions} options - */ - function PDFViewer(options) { - this.container = options.container; - this.viewer = options.viewer || options.container.firstElementChild; - this.linkService = options.linkService || new SimpleLinkService(); - this.removePageBorders = options.removePageBorders || false; - - this.defaultRenderingQueue = !options.renderingQueue; - if (this.defaultRenderingQueue) { - // Custom rendering queue is not specified, using default one - this.renderingQueue = new PDFRenderingQueue(); - this.renderingQueue.setViewer(this); - } else { - this.renderingQueue = options.renderingQueue; - } - - this.scroll = watchScroll(this.container, this._scrollUpdate.bind(this)); - this.updateInProgress = false; - this.presentationModeState = PresentationModeState.UNKNOWN; - this._resetView(); - - if (this.removePageBorders) { - this.viewer.classList.add('removePageBorders'); - } - } - - PDFViewer.prototype = /** @lends PDFViewer.prototype */{ - get pagesCount() { - return this._pages.length; - }, - - getPageView: function (index) { - return this._pages[index]; - }, - - get currentPageNumber() { - return this._currentPageNumber; - }, - - set currentPageNumber(val) { - if (!this.pdfDocument) { - this._currentPageNumber = val; - return; - } - - var event = document.createEvent('UIEvents'); - event.initUIEvent('pagechange', true, true, window, 0); - event.updateInProgress = this.updateInProgress; - - if (!(0 < val && val <= this.pagesCount)) { - event.pageNumber = this._currentPageNumber; - event.previousPageNumber = val; - this.container.dispatchEvent(event); - return; - } - - event.previousPageNumber = this._currentPageNumber; - this._currentPageNumber = val; - event.pageNumber = val; - this.container.dispatchEvent(event); - - // Check if the caller is `PDFViewer_update`, to avoid breaking scrolling. - if (this.updateInProgress) { - return; - } - this.scrollPageIntoView(val); - }, - - /** - * @returns {number} - */ - get currentScale() { - return this._currentScale !== UNKNOWN_SCALE ? this._currentScale : - DEFAULT_SCALE; - }, - - /** - * @param {number} val - Scale of the pages in percents. - */ - set currentScale(val) { - if (isNaN(val)) { - throw new Error('Invalid numeric scale'); - } - if (!this.pdfDocument) { - this._currentScale = val; - this._currentScaleValue = val !== UNKNOWN_SCALE ? val.toString() : null; - return; - } - this._setScale(val, false); - }, - - /** - * @returns {string} - */ - get currentScaleValue() { - return this._currentScaleValue; - }, - - /** - * @param val - The scale of the pages (in percent or predefined value). - */ - set currentScaleValue(val) { - if (!this.pdfDocument) { - this._currentScale = isNaN(val) ? UNKNOWN_SCALE : val; - this._currentScaleValue = val; - return; - } - this._setScale(val, false); - }, - - /** - * @returns {number} - */ - get pagesRotation() { - return this._pagesRotation; - }, - - /** - * @param {number} rotation - The rotation of the pages (0, 90, 180, 270). - */ - set pagesRotation(rotation) { - this._pagesRotation = rotation; - - for (var i = 0, l = this._pages.length; i < l; i++) { - var pageView = this._pages[i]; - pageView.update(pageView.scale, rotation); - } - - this._setScale(this._currentScaleValue, true); - - if (this.defaultRenderingQueue) { - this.update(); - } - }, - - /** - * @param pdfDocument {PDFDocument} - */ - setDocument: function (pdfDocument) { - if (this.pdfDocument) { - this._resetView(); - } - - this.pdfDocument = pdfDocument; - if (!pdfDocument) { - return; - } - - var pagesCount = pdfDocument.numPages; - var self = this; - - var resolvePagesPromise; - var pagesPromise = new Promise(function (resolve) { - resolvePagesPromise = resolve; - }); - this.pagesPromise = pagesPromise; - pagesPromise.then(function () { - var event = document.createEvent('CustomEvent'); - event.initCustomEvent('pagesloaded', true, true, { - pagesCount: pagesCount - }); - self.container.dispatchEvent(event); - }); - - var isOnePageRenderedResolved = false; - var resolveOnePageRendered = null; - var onePageRendered = new Promise(function (resolve) { - resolveOnePageRendered = resolve; - }); - this.onePageRendered = onePageRendered; - - var bindOnAfterAndBeforeDraw = function (pageView) { - pageView.onBeforeDraw = function pdfViewLoadOnBeforeDraw() { - // Add the page to the buffer at the start of drawing. That way it can - // be evicted from the buffer and destroyed even if we pause its - // rendering. - self._buffer.push(this); - }; - // when page is painted, using the image as thumbnail base - pageView.onAfterDraw = function pdfViewLoadOnAfterDraw() { - if (!isOnePageRenderedResolved) { - isOnePageRenderedResolved = true; - resolveOnePageRendered(); - } - }; - }; - - var firstPagePromise = pdfDocument.getPage(1); - this.firstPagePromise = firstPagePromise; - - // Fetch a single page so we can get a viewport that will be the default - // viewport for all pages - return firstPagePromise.then(function(pdfPage) { - var scale = this.currentScale; - var viewport = pdfPage.getViewport(scale * CSS_UNITS); - for (var pageNum = 1; pageNum <= pagesCount; ++pageNum) { - var textLayerFactory = null; - if (!PDFJS.disableTextLayer) { - textLayerFactory = this; - } - var pageView = new PDFPageView({ - container: this.viewer, - id: pageNum, - scale: scale, - defaultViewport: viewport.clone(), - renderingQueue: this.renderingQueue, - textLayerFactory: textLayerFactory, - annotationLayerFactory: this - }); - bindOnAfterAndBeforeDraw(pageView); - this._pages.push(pageView); - } - - var linkService = this.linkService; - - // Fetch all the pages since the viewport is needed before printing - // starts to create the correct size canvas. Wait until one page is - // rendered so we don't tie up too many resources early on. - onePageRendered.then(function () { - if (!PDFJS.disableAutoFetch) { - var getPagesLeft = pagesCount; - for (var pageNum = 1; pageNum <= pagesCount; ++pageNum) { - pdfDocument.getPage(pageNum).then(function (pageNum, pdfPage) { - var pageView = self._pages[pageNum - 1]; - if (!pageView.pdfPage) { - pageView.setPdfPage(pdfPage); - } - linkService.cachePageRef(pageNum, pdfPage.ref); - getPagesLeft--; - if (!getPagesLeft) { - resolvePagesPromise(); - } - }.bind(null, pageNum)); - } - } else { - // XXX: Printing is semi-broken with auto fetch disabled. - resolvePagesPromise(); - } - }); - - var event = document.createEvent('CustomEvent'); - event.initCustomEvent('pagesinit', true, true, null); - self.container.dispatchEvent(event); - - if (this.defaultRenderingQueue) { - this.update(); - } - - if (this.findController) { - this.findController.resolveFirstPage(); - } - }.bind(this)); - }, - - _resetView: function () { - this._pages = []; - this._currentPageNumber = 1; - this._currentScale = UNKNOWN_SCALE; - this._currentScaleValue = null; - this._buffer = new PDFPageViewBuffer(DEFAULT_CACHE_SIZE); - this._location = null; - this._pagesRotation = 0; - this._pagesRequests = []; - - var container = this.viewer; - while (container.hasChildNodes()) { - container.removeChild(container.lastChild); - } - }, - - _scrollUpdate: function PDFViewer_scrollUpdate() { - if (this.pagesCount === 0) { - return; - } - this.update(); - for (var i = 0, ii = this._pages.length; i < ii; i++) { - this._pages[i].updatePosition(); - } - }, - - _setScaleDispatchEvent: function pdfViewer_setScaleDispatchEvent( - newScale, newValue, preset) { - var event = document.createEvent('UIEvents'); - event.initUIEvent('scalechange', true, true, window, 0); - event.scale = newScale; - if (preset) { - event.presetValue = newValue; - } - this.container.dispatchEvent(event); - }, - - _setScaleUpdatePages: function pdfViewer_setScaleUpdatePages( - newScale, newValue, noScroll, preset) { - this._currentScaleValue = newValue; - - if (isSameScale(this._currentScale, newScale)) { - if (preset) { - this._setScaleDispatchEvent(newScale, newValue, true); - } - return; - } - - for (var i = 0, ii = this._pages.length; i < ii; i++) { - this._pages[i].update(newScale); - } - this._currentScale = newScale; - - if (!noScroll) { - var page = this._currentPageNumber, dest; - if (this._location && !IGNORE_CURRENT_POSITION_ON_ZOOM && - !(this.isInPresentationMode || this.isChangingPresentationMode)) { - page = this._location.pageNumber; - dest = [null, { name: 'XYZ' }, this._location.left, - this._location.top, null]; - } - this.scrollPageIntoView(page, dest); - } - - this._setScaleDispatchEvent(newScale, newValue, preset); - - if (this.defaultRenderingQueue) { - this.update(); - } - }, - - _setScale: function pdfViewer_setScale(value, noScroll) { - var scale = parseFloat(value); - - if (scale > 0) { - this._setScaleUpdatePages(scale, value, noScroll, false); - } else { - var currentPage = this._pages[this._currentPageNumber - 1]; - if (!currentPage) { - return; - } - var hPadding = (this.isInPresentationMode || this.removePageBorders) ? - 0 : SCROLLBAR_PADDING; - var vPadding = (this.isInPresentationMode || this.removePageBorders) ? - 0 : VERTICAL_PADDING; - var pageWidthScale = (this.container.clientWidth - hPadding) / - currentPage.width * currentPage.scale; - var pageHeightScale = (this.container.clientHeight - vPadding) / - currentPage.height * currentPage.scale; - switch (value) { - case 'page-actual': - scale = 1; - break; - case 'page-width': - scale = pageWidthScale; - break; - case 'page-height': - scale = pageHeightScale; - break; - case 'page-fit': - scale = Math.min(pageWidthScale, pageHeightScale); - break; - case 'auto': - var isLandscape = (currentPage.width > currentPage.height); - // For pages in landscape mode, fit the page height to the viewer - // *unless* the page would thus become too wide to fit horizontally. - var horizontalScale = isLandscape ? - Math.min(pageHeightScale, pageWidthScale) : pageWidthScale; - scale = Math.min(MAX_AUTO_SCALE, horizontalScale); - break; - default: - console.error('pdfViewSetScale: \'' + value + - '\' is an unknown zoom value.'); - return; - } - this._setScaleUpdatePages(scale, value, noScroll, true); - } - }, - - /** - * Scrolls page into view. - * @param {number} pageNumber - * @param {Array} dest - (optional) original PDF destination array: - * - */ - scrollPageIntoView: function PDFViewer_scrollPageIntoView(pageNumber, - dest) { - if (!this.pdfDocument) { - return; - } - - var pageView = this._pages[pageNumber - 1]; - - if (this.isInPresentationMode) { - if (this._currentPageNumber !== pageView.id) { - // Avoid breaking getVisiblePages in presentation mode. - this.currentPageNumber = pageView.id; - return; - } - dest = null; - // Fixes the case when PDF has different page sizes. - this._setScale(this._currentScaleValue, true); - } - if (!dest) { - scrollIntoView(pageView.div); - return; - } - - var x = 0, y = 0; - var width = 0, height = 0, widthScale, heightScale; - var changeOrientation = (pageView.rotation % 180 === 0 ? false : true); - var pageWidth = (changeOrientation ? pageView.height : pageView.width) / - pageView.scale / CSS_UNITS; - var pageHeight = (changeOrientation ? pageView.width : pageView.height) / - pageView.scale / CSS_UNITS; - var scale = 0; - switch (dest[1].name) { - case 'XYZ': - x = dest[2]; - y = dest[3]; - scale = dest[4]; - // If x and/or y coordinates are not supplied, default to - // _top_ left of the page (not the obvious bottom left, - // since aligning the bottom of the intended page with the - // top of the window is rarely helpful). - x = x !== null ? x : 0; - y = y !== null ? y : pageHeight; - break; - case 'Fit': - case 'FitB': - scale = 'page-fit'; - break; - case 'FitH': - case 'FitBH': - y = dest[2]; - scale = 'page-width'; - // According to the PDF spec, section 12.3.2.2, a `null` value in the - // parameter should maintain the position relative to the new page. - if (y === null && this._location) { - x = this._location.left; - y = this._location.top; - } - break; - case 'FitV': - case 'FitBV': - x = dest[2]; - width = pageWidth; - height = pageHeight; - scale = 'page-height'; - break; - case 'FitR': - x = dest[2]; - y = dest[3]; - width = dest[4] - x; - height = dest[5] - y; - var hPadding = this.removePageBorders ? 0 : SCROLLBAR_PADDING; - var vPadding = this.removePageBorders ? 0 : VERTICAL_PADDING; - - widthScale = (this.container.clientWidth - hPadding) / - width / CSS_UNITS; - heightScale = (this.container.clientHeight - vPadding) / - height / CSS_UNITS; - scale = Math.min(Math.abs(widthScale), Math.abs(heightScale)); - break; - default: - return; - } - - if (scale && scale !== this._currentScale) { - this.currentScaleValue = scale; - } else if (this._currentScale === UNKNOWN_SCALE) { - this.currentScaleValue = DEFAULT_SCALE_VALUE; - } - - if (scale === 'page-fit' && !dest[4]) { - scrollIntoView(pageView.div); - return; - } - - var boundingRect = [ - pageView.viewport.convertToViewportPoint(x, y), - pageView.viewport.convertToViewportPoint(x + width, y + height) - ]; - var left = Math.min(boundingRect[0][0], boundingRect[1][0]); - var top = Math.min(boundingRect[0][1], boundingRect[1][1]); - - scrollIntoView(pageView.div, { left: left, top: top }); - }, - - _updateLocation: function (firstPage) { - var currentScale = this._currentScale; - var currentScaleValue = this._currentScaleValue; - var normalizedScaleValue = - parseFloat(currentScaleValue) === currentScale ? - Math.round(currentScale * 10000) / 100 : currentScaleValue; - - var pageNumber = firstPage.id; - var pdfOpenParams = '#page=' + pageNumber; - pdfOpenParams += '&zoom=' + normalizedScaleValue; - var currentPageView = this._pages[pageNumber - 1]; - var container = this.container; - var topLeft = currentPageView.getPagePoint( - (container.scrollLeft - firstPage.x), - (container.scrollTop - firstPage.y)); - var intLeft = Math.round(topLeft[0]); - var intTop = Math.round(topLeft[1]); - pdfOpenParams += ',' + intLeft + ',' + intTop; - - this._location = { - pageNumber: pageNumber, - scale: normalizedScaleValue, - top: intTop, - left: intLeft, - pdfOpenParams: pdfOpenParams - }; - }, - - update: function PDFViewer_update() { - var visible = this._getVisiblePages(); - var visiblePages = visible.views; - if (visiblePages.length === 0) { - return; - } - - this.updateInProgress = true; - - var suggestedCacheSize = Math.max(DEFAULT_CACHE_SIZE, - 2 * visiblePages.length + 1); - this._buffer.resize(suggestedCacheSize); - - this.renderingQueue.renderHighestPriority(visible); - - var currentId = this._currentPageNumber; - var firstPage = visible.first; - - for (var i = 0, ii = visiblePages.length, stillFullyVisible = false; - i < ii; ++i) { - var page = visiblePages[i]; - - if (page.percent < 100) { - break; - } - if (page.id === currentId) { - stillFullyVisible = true; - break; - } - } - - if (!stillFullyVisible) { - currentId = visiblePages[0].id; - } - - if (!this.isInPresentationMode) { - this.currentPageNumber = currentId; - } - - this._updateLocation(firstPage); - - this.updateInProgress = false; - - var event = document.createEvent('UIEvents'); - event.initUIEvent('updateviewarea', true, true, window, 0); - event.location = this._location; - this.container.dispatchEvent(event); - }, - - containsElement: function (element) { - return this.container.contains(element); - }, - - focus: function () { - this.container.focus(); - }, - - get isInPresentationMode() { - return this.presentationModeState === PresentationModeState.FULLSCREEN; - }, - - get isChangingPresentationMode() { - return this.presentationModeState === PresentationModeState.CHANGING; - }, - - get isHorizontalScrollbarEnabled() { - return (this.isInPresentationMode ? - false : (this.container.scrollWidth > this.container.clientWidth)); - }, - - _getVisiblePages: function () { - if (!this.isInPresentationMode) { - return getVisibleElements(this.container, this._pages, true); - } else { - // The algorithm in getVisibleElements doesn't work in all browsers and - // configurations when presentation mode is active. - var visible = []; - var currentPage = this._pages[this._currentPageNumber - 1]; - visible.push({ id: currentPage.id, view: currentPage }); - return { first: currentPage, last: currentPage, views: visible }; - } - }, - - cleanup: function () { - for (var i = 0, ii = this._pages.length; i < ii; i++) { - if (this._pages[i] && - this._pages[i].renderingState !== RenderingStates.FINISHED) { - this._pages[i].reset(); - } - } - }, - - /** - * @param {PDFPageView} pageView - * @returns {PDFPage} - * @private - */ - _ensurePdfPageLoaded: function (pageView) { - if (pageView.pdfPage) { - return Promise.resolve(pageView.pdfPage); - } - var pageNumber = pageView.id; - if (this._pagesRequests[pageNumber]) { - return this._pagesRequests[pageNumber]; - } - var promise = this.pdfDocument.getPage(pageNumber).then( - function (pdfPage) { - pageView.setPdfPage(pdfPage); - this._pagesRequests[pageNumber] = null; - return pdfPage; - }.bind(this)); - this._pagesRequests[pageNumber] = promise; - return promise; - }, - - forceRendering: function (currentlyVisiblePages) { - var visiblePages = currentlyVisiblePages || this._getVisiblePages(); - var pageView = this.renderingQueue.getHighestPriority(visiblePages, - this._pages, - this.scroll.down); - if (pageView) { - this._ensurePdfPageLoaded(pageView).then(function () { - this.renderingQueue.renderView(pageView); - }.bind(this)); - return true; - } - return false; - }, - - getPageTextContent: function (pageIndex) { - return this.pdfDocument.getPage(pageIndex + 1).then(function (page) { - return page.getTextContent({ normalizeWhitespace: true }); - }); - }, - - /** - * @param {HTMLDivElement} textLayerDiv - * @param {number} pageIndex - * @param {PageViewport} viewport - * @returns {TextLayerBuilder} - */ - createTextLayerBuilder: function (textLayerDiv, pageIndex, viewport) { - return new TextLayerBuilder({ - textLayerDiv: textLayerDiv, - pageIndex: pageIndex, - viewport: viewport, - findController: this.isInPresentationMode ? null : this.findController - }); - }, - - /** - * @param {HTMLDivElement} pageDiv - * @param {PDFPage} pdfPage - * @returns {AnnotationLayerBuilder} - */ - createAnnotationLayerBuilder: function (pageDiv, pdfPage) { - return new AnnotationLayerBuilder({ - pageDiv: pageDiv, - pdfPage: pdfPage, - linkService: this.linkService - }); - }, - - setFindController: function (findController) { - this.findController = findController; - }, - }; - - return PDFViewer; -})(); - -var SimpleLinkService = (function SimpleLinkServiceClosure() { - function SimpleLinkService() {} - - SimpleLinkService.prototype = { - /** - * @returns {number} - */ - get page() { - return 0; - }, - /** - * @param {number} value - */ - set page(value) {}, - /** - * @param dest - The PDF destination object. - */ - navigateTo: function (dest) {}, - /** - * @param dest - The PDF destination object. - * @returns {string} The hyperlink to the PDF object. - */ - getDestinationHash: function (dest) { - return '#'; - }, - /** - * @param hash - The PDF parameters/hash. - * @returns {string} The hyperlink to the PDF object. - */ - getAnchorUrl: function (hash) { - return '#'; - }, - /** - * @param {string} hash - */ - setHash: function (hash) {}, - /** - * @param {string} action - */ - executeNamedAction: function (action) {}, - /** - * @param {number} pageNum - page number. - * @param {Object} pageRef - reference to the page. - */ - cachePageRef: function (pageNum, pageRef) {} - }; - return SimpleLinkService; -})(); - - -var THUMBNAIL_SCROLL_MARGIN = -19; - - -var THUMBNAIL_WIDTH = 98; // px -var THUMBNAIL_CANVAS_BORDER_WIDTH = 1; // px - -/** - * @typedef {Object} PDFThumbnailViewOptions - * @property {HTMLDivElement} container - The viewer element. - * @property {number} id - The thumbnail's unique ID (normally its number). - * @property {PageViewport} defaultViewport - The page viewport. - * @property {IPDFLinkService} linkService - The navigation/linking service. - * @property {PDFRenderingQueue} renderingQueue - The rendering queue object. - */ - -/** - * @class - * @implements {IRenderableView} - */ -var PDFThumbnailView = (function PDFThumbnailViewClosure() { - function getTempCanvas(width, height) { - var tempCanvas = PDFThumbnailView.tempImageCache; - if (!tempCanvas) { - tempCanvas = document.createElement('canvas'); - PDFThumbnailView.tempImageCache = tempCanvas; - } - tempCanvas.width = width; - tempCanvas.height = height; - - // Since this is a temporary canvas, we need to fill the canvas with a white - // background ourselves. |_getPageDrawContext| uses CSS rules for this. - tempCanvas.mozOpaque = true; - var ctx = tempCanvas.getContext('2d', {alpha: false}); - ctx.save(); - ctx.fillStyle = 'rgb(255, 255, 255)'; - ctx.fillRect(0, 0, width, height); - ctx.restore(); - return tempCanvas; - } - - /** - * @constructs PDFThumbnailView - * @param {PDFThumbnailViewOptions} options - */ - function PDFThumbnailView(options) { - var container = options.container; - var id = options.id; - var defaultViewport = options.defaultViewport; - var linkService = options.linkService; - var renderingQueue = options.renderingQueue; - - this.id = id; - this.renderingId = 'thumbnail' + id; - - this.pdfPage = null; - this.rotation = 0; - this.viewport = defaultViewport; - this.pdfPageRotate = defaultViewport.rotation; - - this.linkService = linkService; - this.renderingQueue = renderingQueue; - - this.hasImage = false; - this.resume = null; - this.renderingState = RenderingStates.INITIAL; - - this.pageWidth = this.viewport.width; - this.pageHeight = this.viewport.height; - this.pageRatio = this.pageWidth / this.pageHeight; - - this.canvasWidth = THUMBNAIL_WIDTH; - this.canvasHeight = (this.canvasWidth / this.pageRatio) | 0; - this.scale = this.canvasWidth / this.pageWidth; - - var anchor = document.createElement('a'); - anchor.href = linkService.getAnchorUrl('#page=' + id); - anchor.title = 'Page ' + id; - anchor.onclick = function stopNavigation() { - linkService.page = id; - return false; - }; - - var div = document.createElement('div'); - div.id = 'thumbnailContainer' + id; - div.className = 'thumbnail'; - this.div = div; - - if (id === 1) { - // Highlight the thumbnail of the first page when no page number is - // specified (or exists in cache) when the document is loaded. - div.classList.add('selected'); - } - - var ring = document.createElement('div'); - ring.className = 'thumbnailSelectionRing'; - var borderAdjustment = 2 * THUMBNAIL_CANVAS_BORDER_WIDTH; - ring.style.width = this.canvasWidth + borderAdjustment + 'px'; - ring.style.height = this.canvasHeight + borderAdjustment + 'px'; - this.ring = ring; - - div.appendChild(ring); - anchor.appendChild(div); - container.appendChild(anchor); - } - - PDFThumbnailView.prototype = { - setPdfPage: function PDFThumbnailView_setPdfPage(pdfPage) { - this.pdfPage = pdfPage; - this.pdfPageRotate = pdfPage.rotate; - var totalRotation = (this.rotation + this.pdfPageRotate) % 360; - this.viewport = pdfPage.getViewport(1, totalRotation); - this.reset(); - }, - - reset: function PDFThumbnailView_reset() { - if (this.renderTask) { - this.renderTask.cancel(); - } - this.hasImage = false; - this.resume = null; - this.renderingState = RenderingStates.INITIAL; - - this.pageWidth = this.viewport.width; - this.pageHeight = this.viewport.height; - this.pageRatio = this.pageWidth / this.pageHeight; - - this.canvasHeight = (this.canvasWidth / this.pageRatio) | 0; - this.scale = (this.canvasWidth / this.pageWidth); - - this.div.removeAttribute('data-loaded'); - var ring = this.ring; - var childNodes = ring.childNodes; - for (var i = childNodes.length - 1; i >= 0; i--) { - ring.removeChild(childNodes[i]); - } - var borderAdjustment = 2 * THUMBNAIL_CANVAS_BORDER_WIDTH; - ring.style.width = this.canvasWidth + borderAdjustment + 'px'; - ring.style.height = this.canvasHeight + borderAdjustment + 'px'; - - if (this.canvas) { - // Zeroing the width and height causes Firefox to release graphics - // resources immediately, which can greatly reduce memory consumption. - this.canvas.width = 0; - this.canvas.height = 0; - delete this.canvas; - } - if (this.image) { - this.image.removeAttribute('src'); - delete this.image; - } - }, - - update: function PDFThumbnailView_update(rotation) { - if (typeof rotation !== 'undefined') { - this.rotation = rotation; - } - var totalRotation = (this.rotation + this.pdfPageRotate) % 360; - this.viewport = this.viewport.clone({ - scale: 1, - rotation: totalRotation - }); - this.reset(); - }, - - /** - * @private - */ - _getPageDrawContext: - function PDFThumbnailView_getPageDrawContext(noCtxScale) { - var canvas = document.createElement('canvas'); - this.canvas = canvas; - - canvas.mozOpaque = true; - var ctx = canvas.getContext('2d', {alpha: false}); - var outputScale = getOutputScale(ctx); - - canvas.width = (this.canvasWidth * outputScale.sx) | 0; - canvas.height = (this.canvasHeight * outputScale.sy) | 0; - canvas.style.width = this.canvasWidth + 'px'; - canvas.style.height = this.canvasHeight + 'px'; - - if (!noCtxScale && outputScale.scaled) { - ctx.scale(outputScale.sx, outputScale.sy); - } - - var image = document.createElement('img'); - this.image = image; - - image.id = this.renderingId; - image.className = 'thumbnailImage'; - image.setAttribute('aria-label', 'Thumbnail of Page ' + this.id); - - image.style.width = canvas.style.width; - image.style.height = canvas.style.height; - - return ctx; - }, - - /** - * @private - */ - _convertCanvasToImage: function PDFThumbnailView_convertCanvasToImage() { - if (!this.canvas) { - return; - } - this.image.src = this.canvas.toDataURL(); - - this.div.setAttribute('data-loaded', true); - this.ring.appendChild(this.image); - - // Zeroing the width and height causes Firefox to release graphics - // resources immediately, which can greatly reduce memory consumption. - this.canvas.width = 0; - this.canvas.height = 0; - delete this.canvas; - }, - - draw: function PDFThumbnailView_draw() { - if (this.renderingState !== RenderingStates.INITIAL) { - console.error('Must be in new state before drawing'); - } - if (this.hasImage) { - return Promise.resolve(undefined); - } - this.hasImage = true; - this.renderingState = RenderingStates.RUNNING; - - var resolveRenderPromise, rejectRenderPromise; - var promise = new Promise(function (resolve, reject) { - resolveRenderPromise = resolve; - rejectRenderPromise = reject; - }); - - var self = this; - function thumbnailDrawCallback(error) { - // The renderTask may have been replaced by a new one, so only remove - // the reference to the renderTask if it matches the one that is - // triggering this callback. - if (renderTask === self.renderTask) { - self.renderTask = null; - } - if (error === 'cancelled') { - rejectRenderPromise(error); - return; - } - self.renderingState = RenderingStates.FINISHED; - self._convertCanvasToImage(); - - if (!error) { - resolveRenderPromise(undefined); - } else { - rejectRenderPromise(error); - } - } - - var ctx = this._getPageDrawContext(); - var drawViewport = this.viewport.clone({ scale: this.scale }); - var renderContinueCallback = function renderContinueCallback(cont) { - if (!self.renderingQueue.isHighestPriority(self)) { - self.renderingState = RenderingStates.PAUSED; - self.resume = function resumeCallback() { - self.renderingState = RenderingStates.RUNNING; - cont(); - }; - return; - } - cont(); - }; - - var renderContext = { - canvasContext: ctx, - viewport: drawViewport - }; - var renderTask = this.renderTask = this.pdfPage.render(renderContext); - renderTask.onContinue = renderContinueCallback; - - renderTask.promise.then( - function pdfPageRenderCallback() { - thumbnailDrawCallback(null); - }, - function pdfPageRenderError(error) { - thumbnailDrawCallback(error); - } - ); - return promise; - }, - - setImage: function PDFThumbnailView_setImage(pageView) { - var img = pageView.canvas; - if (this.hasImage || !img) { - return; - } - if (!this.pdfPage) { - this.setPdfPage(pageView.pdfPage); - } - this.hasImage = true; - this.renderingState = RenderingStates.FINISHED; - - var ctx = this._getPageDrawContext(true); - var canvas = ctx.canvas; - - if (img.width <= 2 * canvas.width) { - ctx.drawImage(img, 0, 0, img.width, img.height, - 0, 0, canvas.width, canvas.height); - this._convertCanvasToImage(); - return; - } - // drawImage does an awful job of rescaling the image, doing it gradually. - var MAX_NUM_SCALING_STEPS = 3; - var reducedWidth = canvas.width << MAX_NUM_SCALING_STEPS; - var reducedHeight = canvas.height << MAX_NUM_SCALING_STEPS; - var reducedImage = getTempCanvas(reducedWidth, reducedHeight); - var reducedImageCtx = reducedImage.getContext('2d'); - - while (reducedWidth > img.width || reducedHeight > img.height) { - reducedWidth >>= 1; - reducedHeight >>= 1; - } - reducedImageCtx.drawImage(img, 0, 0, img.width, img.height, - 0, 0, reducedWidth, reducedHeight); - while (reducedWidth > 2 * canvas.width) { - reducedImageCtx.drawImage(reducedImage, - 0, 0, reducedWidth, reducedHeight, - 0, 0, reducedWidth >> 1, reducedHeight >> 1); - reducedWidth >>= 1; - reducedHeight >>= 1; - } - ctx.drawImage(reducedImage, 0, 0, reducedWidth, reducedHeight, - 0, 0, canvas.width, canvas.height); - this._convertCanvasToImage(); - } - }; - - return PDFThumbnailView; -})(); - -PDFThumbnailView.tempImageCache = null; - - -/** - * @typedef {Object} PDFThumbnailViewerOptions - * @property {HTMLDivElement} container - The container for the thumbnail - * elements. - * @property {IPDFLinkService} linkService - The navigation/linking service. - * @property {PDFRenderingQueue} renderingQueue - The rendering queue object. - */ - -/** - * Simple viewer control to display thumbnails for pages. - * @class - * @implements {IRenderableView} - */ -var PDFThumbnailViewer = (function PDFThumbnailViewerClosure() { - /** - * @constructs PDFThumbnailViewer - * @param {PDFThumbnailViewerOptions} options - */ - function PDFThumbnailViewer(options) { - this.container = options.container; - this.renderingQueue = options.renderingQueue; - this.linkService = options.linkService; - - this.scroll = watchScroll(this.container, this._scrollUpdated.bind(this)); - this._resetView(); - } - - PDFThumbnailViewer.prototype = { - /** - * @private - */ - _scrollUpdated: function PDFThumbnailViewer_scrollUpdated() { - this.renderingQueue.renderHighestPriority(); - }, - - getThumbnail: function PDFThumbnailViewer_getThumbnail(index) { - return this.thumbnails[index]; - }, - - /** - * @private - */ - _getVisibleThumbs: function PDFThumbnailViewer_getVisibleThumbs() { - return getVisibleElements(this.container, this.thumbnails); - }, - - scrollThumbnailIntoView: - function PDFThumbnailViewer_scrollThumbnailIntoView(page) { - var selected = document.querySelector('.thumbnail.selected'); - if (selected) { - selected.classList.remove('selected'); - } - var thumbnail = document.getElementById('thumbnailContainer' + page); - if (thumbnail) { - thumbnail.classList.add('selected'); - } - var visibleThumbs = this._getVisibleThumbs(); - var numVisibleThumbs = visibleThumbs.views.length; - - // If the thumbnail isn't currently visible, scroll it into view. - if (numVisibleThumbs > 0) { - var first = visibleThumbs.first.id; - // Account for only one thumbnail being visible. - var last = (numVisibleThumbs > 1 ? visibleThumbs.last.id : first); - if (page <= first || page >= last) { - scrollIntoView(thumbnail, { top: THUMBNAIL_SCROLL_MARGIN }); - } - } - }, - - get pagesRotation() { - return this._pagesRotation; - }, - - set pagesRotation(rotation) { - this._pagesRotation = rotation; - for (var i = 0, l = this.thumbnails.length; i < l; i++) { - var thumb = this.thumbnails[i]; - thumb.update(rotation); - } - }, - - cleanup: function PDFThumbnailViewer_cleanup() { - var tempCanvas = PDFThumbnailView.tempImageCache; - if (tempCanvas) { - // Zeroing the width and height causes Firefox to release graphics - // resources immediately, which can greatly reduce memory consumption. - tempCanvas.width = 0; - tempCanvas.height = 0; - } - PDFThumbnailView.tempImageCache = null; - }, - - /** - * @private - */ - _resetView: function PDFThumbnailViewer_resetView() { - this.thumbnails = []; - this._pagesRotation = 0; - this._pagesRequests = []; - }, - - setDocument: function PDFThumbnailViewer_setDocument(pdfDocument) { - if (this.pdfDocument) { - // cleanup of the elements and views - var thumbsView = this.container; - while (thumbsView.hasChildNodes()) { - thumbsView.removeChild(thumbsView.lastChild); - } - this._resetView(); - } - - this.pdfDocument = pdfDocument; - if (!pdfDocument) { - return Promise.resolve(); - } - - return pdfDocument.getPage(1).then(function (firstPage) { - var pagesCount = pdfDocument.numPages; - var viewport = firstPage.getViewport(1.0); - for (var pageNum = 1; pageNum <= pagesCount; ++pageNum) { - var thumbnail = new PDFThumbnailView({ - container: this.container, - id: pageNum, - defaultViewport: viewport.clone(), - linkService: this.linkService, - renderingQueue: this.renderingQueue - }); - this.thumbnails.push(thumbnail); - } - }.bind(this)); - }, - - /** - * @param {PDFPageView} pageView - * @returns {PDFPage} - * @private - */ - _ensurePdfPageLoaded: - function PDFThumbnailViewer_ensurePdfPageLoaded(thumbView) { - if (thumbView.pdfPage) { - return Promise.resolve(thumbView.pdfPage); - } - var pageNumber = thumbView.id; - if (this._pagesRequests[pageNumber]) { - return this._pagesRequests[pageNumber]; - } - var promise = this.pdfDocument.getPage(pageNumber).then( - function (pdfPage) { - thumbView.setPdfPage(pdfPage); - this._pagesRequests[pageNumber] = null; - return pdfPage; - }.bind(this)); - this._pagesRequests[pageNumber] = promise; - return promise; - }, - - ensureThumbnailVisible: - function PDFThumbnailViewer_ensureThumbnailVisible(page) { - // Ensure that the thumbnail of the current page is visible - // when switching from another view. - scrollIntoView(document.getElementById('thumbnailContainer' + page)); - }, - - forceRendering: function () { - var visibleThumbs = this._getVisibleThumbs(); - var thumbView = this.renderingQueue.getHighestPriority(visibleThumbs, - this.thumbnails, - this.scroll.down); - if (thumbView) { - this._ensurePdfPageLoaded(thumbView).then(function () { - this.renderingQueue.renderView(thumbView); - }.bind(this)); - return true; - } - return false; - } - }; - - return PDFThumbnailViewer; -})(); - - -/** - * @typedef {Object} PDFOutlineViewOptions - * @property {HTMLDivElement} container - The viewer element. - * @property {Array} outline - An array of outline objects. - * @property {IPDFLinkService} linkService - The navigation/linking service. - */ - -/** - * @class - */ -var PDFOutlineView = (function PDFOutlineViewClosure() { - /** - * @constructs PDFOutlineView - * @param {PDFOutlineViewOptions} options - */ - function PDFOutlineView(options) { - this.container = options.container; - this.outline = options.outline; - this.linkService = options.linkService; - this.lastToggleIsShow = true; - } - - PDFOutlineView.prototype = { - reset: function PDFOutlineView_reset() { - var container = this.container; - while (container.firstChild) { - container.removeChild(container.firstChild); - } - this.lastToggleIsShow = true; - }, - - /** - * @private - */ - _dispatchEvent: function PDFOutlineView_dispatchEvent(outlineCount) { - var event = document.createEvent('CustomEvent'); - event.initCustomEvent('outlineloaded', true, true, { - outlineCount: outlineCount - }); - this.container.dispatchEvent(event); - }, - - /** - * @private - */ - _bindLink: function PDFOutlineView_bindLink(element, item) { - if (item.url) { - PDFJS.addLinkAttributes(element, { url: item.url }); - return; - } - var linkService = this.linkService; - element.href = linkService.getDestinationHash(item.dest); - element.onclick = function goToDestination(e) { - linkService.navigateTo(item.dest); - return false; - }; - }, - - /** - * Prepend a button before an outline item which allows the user to toggle - * the visibility of all outline items at that level. - * - * @private - */ - _addToggleButton: function PDFOutlineView_addToggleButton(div) { - var toggler = document.createElement('div'); - toggler.className = 'outlineItemToggler'; - toggler.onclick = function(event) { - event.stopPropagation(); - toggler.classList.toggle('outlineItemsHidden'); - - if (event.shiftKey) { - var shouldShowAll = !toggler.classList.contains('outlineItemsHidden'); - this._toggleOutlineItem(div, shouldShowAll); - } - }.bind(this); - div.insertBefore(toggler, div.firstChild); - }, - - /** - * Toggle the visibility of the subtree of an outline item. - * - * @param {Element} root - the root of the outline (sub)tree. - * @param {boolean} state - whether to show the outline (sub)tree. If false, - * the outline subtree rooted at |root| will be collapsed. - * - * @private - */ - _toggleOutlineItem: function PDFOutlineView_toggleOutlineItem(root, show) { - this.lastToggleIsShow = show; - var togglers = root.querySelectorAll('.outlineItemToggler'); - for (var i = 0, ii = togglers.length; i < ii; ++i) { - togglers[i].classList[show ? 'remove' : 'add']('outlineItemsHidden'); - } - }, - - /** - * Collapse or expand all subtrees of the outline. - */ - toggleOutlineTree: function PDFOutlineView_toggleOutlineTree() { - this._toggleOutlineItem(this.container, !this.lastToggleIsShow); - }, - - render: function PDFOutlineView_render() { - var outline = this.outline; - var outlineCount = 0; - - this.reset(); - - if (!outline) { - this._dispatchEvent(outlineCount); - return; - } - - var fragment = document.createDocumentFragment(); - var queue = [{ parent: fragment, items: this.outline }]; - var hasAnyNesting = false; - while (queue.length > 0) { - var levelData = queue.shift(); - for (var i = 0, len = levelData.items.length; i < len; i++) { - var item = levelData.items[i]; - var div = document.createElement('div'); - div.className = 'outlineItem'; - var element = document.createElement('a'); - this._bindLink(element, item); - element.textContent = PDFJS.removeNullCharacters(item.title); - div.appendChild(element); - - if (item.items.length > 0) { - hasAnyNesting = true; - this._addToggleButton(div); - - var itemsDiv = document.createElement('div'); - itemsDiv.className = 'outlineItems'; - div.appendChild(itemsDiv); - queue.push({ parent: itemsDiv, items: item.items }); - } - - levelData.parent.appendChild(div); - outlineCount++; - } - } - if (hasAnyNesting) { - this.container.classList.add('outlineWithDeepNesting'); - } - - this.container.appendChild(fragment); - - this._dispatchEvent(outlineCount); - } - }; - - return PDFOutlineView; -})(); - - -/** - * @typedef {Object} PDFAttachmentViewOptions - * @property {HTMLDivElement} container - The viewer element. - * @property {Array} attachments - An array of attachment objects. - * @property {DownloadManager} downloadManager - The download manager. - */ - -/** - * @class - */ -var PDFAttachmentView = (function PDFAttachmentViewClosure() { - /** - * @constructs PDFAttachmentView - * @param {PDFAttachmentViewOptions} options - */ - function PDFAttachmentView(options) { - this.container = options.container; - this.attachments = options.attachments; - this.downloadManager = options.downloadManager; - } - - PDFAttachmentView.prototype = { - reset: function PDFAttachmentView_reset() { - var container = this.container; - while (container.firstChild) { - container.removeChild(container.firstChild); - } - }, - - /** - * @private - */ - _dispatchEvent: function PDFAttachmentView_dispatchEvent(attachmentsCount) { - var event = document.createEvent('CustomEvent'); - event.initCustomEvent('attachmentsloaded', true, true, { - attachmentsCount: attachmentsCount - }); - this.container.dispatchEvent(event); - }, - - /** - * @private - */ - _bindLink: function PDFAttachmentView_bindLink(button, content, filename) { - button.onclick = function downloadFile(e) { - this.downloadManager.downloadData(content, filename, ''); - return false; - }.bind(this); - }, - - render: function PDFAttachmentView_render() { - var attachments = this.attachments; - var attachmentsCount = 0; - - this.reset(); - - if (!attachments) { - this._dispatchEvent(attachmentsCount); - return; - } - - var names = Object.keys(attachments).sort(function(a, b) { - return a.toLowerCase().localeCompare(b.toLowerCase()); - }); - attachmentsCount = names.length; - - for (var i = 0; i < attachmentsCount; i++) { - var item = attachments[names[i]]; - var filename = getFileName(item.filename); - var div = document.createElement('div'); - div.className = 'attachmentsItem'; - var button = document.createElement('button'); - this._bindLink(button, item.content, filename); - button.textContent = PDFJS.removeNullCharacters(filename); - div.appendChild(button); - this.container.appendChild(div); - } - - this._dispatchEvent(attachmentsCount); - } - }; - - return PDFAttachmentView; -})(); - - -var PDFViewerApplication = { - initialBookmark: document.location.hash.substring(1), - initialDestination: null, - initialized: false, - fellback: false, - pdfDocument: null, - pdfLoadingTask: null, - sidebarOpen: false, - printing: false, - /** @type {PDFViewer} */ - pdfViewer: null, - /** @type {PDFThumbnailViewer} */ - pdfThumbnailViewer: null, - /** @type {PDFRenderingQueue} */ - pdfRenderingQueue: null, - /** @type {PDFPresentationMode} */ - pdfPresentationMode: null, - /** @type {PDFDocumentProperties} */ - pdfDocumentProperties: null, - /** @type {PDFLinkService} */ - pdfLinkService: null, - /** @type {PDFHistory} */ - pdfHistory: null, - pageRotation: 0, - isInitialViewSet: false, - animationStartedPromise: null, - preferenceSidebarViewOnLoad: SidebarView.NONE, - preferencePdfBugEnabled: false, - preferenceShowPreviousViewOnLoad: true, - preferenceDefaultZoomValue: '', - isViewerEmbedded: (window.parent !== window), - url: '', - - // called once when the document is loaded - initialize: function pdfViewInitialize() { - var pdfRenderingQueue = new PDFRenderingQueue(); - pdfRenderingQueue.onIdle = this.cleanup.bind(this); - this.pdfRenderingQueue = pdfRenderingQueue; - - var pdfLinkService = new PDFLinkService(); - this.pdfLinkService = pdfLinkService; - - var container = document.getElementById('viewerContainer'); - var viewer = document.getElementById('viewer'); - this.pdfViewer = new PDFViewer({ - container: container, - viewer: viewer, - renderingQueue: pdfRenderingQueue, - linkService: pdfLinkService - }); - pdfRenderingQueue.setViewer(this.pdfViewer); - pdfLinkService.setViewer(this.pdfViewer); - - var thumbnailContainer = document.getElementById('thumbnailView'); - this.pdfThumbnailViewer = new PDFThumbnailViewer({ - container: thumbnailContainer, - renderingQueue: pdfRenderingQueue, - linkService: pdfLinkService - }); - pdfRenderingQueue.setThumbnailViewer(this.pdfThumbnailViewer); - - Preferences.initialize(); - - this.pdfHistory = new PDFHistory({ - linkService: pdfLinkService - }); - pdfLinkService.setHistory(this.pdfHistory); - - this.findController = new PDFFindController({ - pdfViewer: this.pdfViewer, - integratedFind: this.supportsIntegratedFind - }); - this.pdfViewer.setFindController(this.findController); - - this.findBar = new PDFFindBar({ - bar: document.getElementById('findbar'), - toggleButton: document.getElementById('viewFind'), - findField: document.getElementById('findInput'), - highlightAllCheckbox: document.getElementById('findHighlightAll'), - caseSensitiveCheckbox: document.getElementById('findMatchCase'), - findMsg: document.getElementById('findMsg'), - findResultsCount: document.getElementById('findResultsCount'), - findStatusIcon: document.getElementById('findStatusIcon'), - findPreviousButton: document.getElementById('findPrevious'), - findNextButton: document.getElementById('findNext'), - findController: this.findController - }); - - this.findController.setFindBar(this.findBar); - - HandTool.initialize({ - container: container, - toggleHandTool: document.getElementById('toggleHandTool') - }); - - this.pdfDocumentProperties = new PDFDocumentProperties({ - overlayName: 'documentPropertiesOverlay', - closeButton: document.getElementById('documentPropertiesClose'), - fields: { - 'fileName': document.getElementById('fileNameField'), - 'fileSize': document.getElementById('fileSizeField'), - 'title': document.getElementById('titleField'), - 'author': document.getElementById('authorField'), - 'subject': document.getElementById('subjectField'), - 'keywords': document.getElementById('keywordsField'), - 'creationDate': document.getElementById('creationDateField'), - 'modificationDate': document.getElementById('modificationDateField'), - 'creator': document.getElementById('creatorField'), - 'producer': document.getElementById('producerField'), - 'version': document.getElementById('versionField'), - 'pageCount': document.getElementById('pageCountField') - } - }); - - SecondaryToolbar.initialize({ - toolbar: document.getElementById('secondaryToolbar'), - toggleButton: document.getElementById('secondaryToolbarToggle'), - presentationModeButton: - document.getElementById('secondaryPresentationMode'), - openFile: document.getElementById('secondaryOpenFile'), - print: document.getElementById('secondaryPrint'), - download: document.getElementById('secondaryDownload'), - viewBookmark: document.getElementById('secondaryViewBookmark'), - firstPage: document.getElementById('firstPage'), - lastPage: document.getElementById('lastPage'), - pageRotateCw: document.getElementById('pageRotateCw'), - pageRotateCcw: document.getElementById('pageRotateCcw'), - documentPropertiesButton: document.getElementById('documentProperties') - }); - - if (this.supportsFullscreen) { - var toolbar = SecondaryToolbar; - this.pdfPresentationMode = new PDFPresentationMode({ - container: container, - viewer: viewer, - pdfViewer: this.pdfViewer, - pdfThumbnailViewer: this.pdfThumbnailViewer, - contextMenuItems: [ - { element: document.getElementById('contextFirstPage'), - handler: toolbar.firstPageClick.bind(toolbar) }, - { element: document.getElementById('contextLastPage'), - handler: toolbar.lastPageClick.bind(toolbar) }, - { element: document.getElementById('contextPageRotateCw'), - handler: toolbar.pageRotateCwClick.bind(toolbar) }, - { element: document.getElementById('contextPageRotateCcw'), - handler: toolbar.pageRotateCcwClick.bind(toolbar) } - ] - }); - } - - PasswordPrompt.initialize({ - overlayName: 'passwordOverlay', - passwordField: document.getElementById('password'), - passwordText: document.getElementById('passwordText'), - passwordSubmit: document.getElementById('passwordSubmit'), - passwordCancel: document.getElementById('passwordCancel') - }); - - var self = this; - var initializedPromise = Promise.all([ - Preferences.get('enableWebGL').then(function resolved(value) { - PDFJS.disableWebGL = !value; - }), - Preferences.get('sidebarViewOnLoad').then(function resolved(value) { - self.preferenceSidebarViewOnLoad = value; - }), - Preferences.get('pdfBugEnabled').then(function resolved(value) { - self.preferencePdfBugEnabled = value; - }), - Preferences.get('showPreviousViewOnLoad').then(function resolved(value) { - self.preferenceShowPreviousViewOnLoad = value; - }), - Preferences.get('defaultZoomValue').then(function resolved(value) { - self.preferenceDefaultZoomValue = value; - }), - Preferences.get('disableTextLayer').then(function resolved(value) { - if (PDFJS.disableTextLayer === true) { - return; - } - PDFJS.disableTextLayer = value; - }), - Preferences.get('disableRange').then(function resolved(value) { - if (PDFJS.disableRange === true) { - return; - } - PDFJS.disableRange = value; - }), - Preferences.get('disableStream').then(function resolved(value) { - if (PDFJS.disableStream === true) { - return; - } - PDFJS.disableStream = value; - }), - Preferences.get('disableAutoFetch').then(function resolved(value) { - PDFJS.disableAutoFetch = value; - }), - Preferences.get('disableFontFace').then(function resolved(value) { - if (PDFJS.disableFontFace === true) { - return; - } - PDFJS.disableFontFace = value; - }), - Preferences.get('useOnlyCssZoom').then(function resolved(value) { - PDFJS.useOnlyCssZoom = value; - }), - Preferences.get('externalLinkTarget').then(function resolved(value) { - if (PDFJS.isExternalLinkTargetSet()) { - return; - } - PDFJS.externalLinkTarget = value; - }), - // TODO move more preferences and other async stuff here - ]).catch(function (reason) { }); - - return initializedPromise.then(function () { - if (self.isViewerEmbedded && !PDFJS.isExternalLinkTargetSet()) { - // Prevent external links from "replacing" the viewer, - // when it's embedded in e.g. an iframe or an object. - PDFJS.externalLinkTarget = PDFJS.LinkTarget.TOP; - } - - self.initialized = true; - }); - }, - - zoomIn: function pdfViewZoomIn(ticks) { - var newScale = this.pdfViewer.currentScale; - do { - newScale = (newScale * DEFAULT_SCALE_DELTA).toFixed(2); - newScale = Math.ceil(newScale * 10) / 10; - newScale = Math.min(MAX_SCALE, newScale); - } while (--ticks > 0 && newScale < MAX_SCALE); - this.pdfViewer.currentScaleValue = newScale; - }, - - zoomOut: function pdfViewZoomOut(ticks) { - var newScale = this.pdfViewer.currentScale; - do { - newScale = (newScale / DEFAULT_SCALE_DELTA).toFixed(2); - newScale = Math.floor(newScale * 10) / 10; - newScale = Math.max(MIN_SCALE, newScale); - } while (--ticks > 0 && newScale > MIN_SCALE); - this.pdfViewer.currentScaleValue = newScale; - }, - - get pagesCount() { - return this.pdfDocument.numPages; - }, - - set page(val) { - this.pdfLinkService.page = val; - }, - - get page() { // TODO remove - return this.pdfLinkService.page; - }, - - get supportsPrinting() { - var canvas = document.createElement('canvas'); - var value = 'mozPrintCallback' in canvas; - - return PDFJS.shadow(this, 'supportsPrinting', value); - }, - - get supportsFullscreen() { - var doc = document.documentElement; - var support = !!(doc.requestFullscreen || doc.mozRequestFullScreen || - doc.webkitRequestFullScreen || doc.msRequestFullscreen); - - if (document.fullscreenEnabled === false || - document.mozFullScreenEnabled === false || - document.webkitFullscreenEnabled === false || - document.msFullscreenEnabled === false) { - support = false; - } - if (support && PDFJS.disableFullscreen === true) { - support = false; - } - - return PDFJS.shadow(this, 'supportsFullscreen', support); - }, - - get supportsIntegratedFind() { - var support = false; - - return PDFJS.shadow(this, 'supportsIntegratedFind', support); - }, - - get supportsDocumentFonts() { - var support = true; - - return PDFJS.shadow(this, 'supportsDocumentFonts', support); - }, - - get supportsDocumentColors() { - var support = true; - - return PDFJS.shadow(this, 'supportsDocumentColors', support); - }, - - get loadingBar() { - var bar = new ProgressBar('#loadingBar', {}); - - return PDFJS.shadow(this, 'loadingBar', bar); - }, - - get supportedMouseWheelZoomModifierKeys() { - var support = { - ctrlKey: true, - metaKey: true, - }; - - return PDFJS.shadow(this, 'supportedMouseWheelZoomModifierKeys', support); - }, - - - setTitleUsingUrl: function pdfViewSetTitleUsingUrl(url) { - this.url = url; - try { - this.setTitle(decodeURIComponent(getFileName(url)) || url); - } catch (e) { - // decodeURIComponent may throw URIError, - // fall back to using the unprocessed url in that case - this.setTitle(url); - } - }, - - setTitle: function pdfViewSetTitle(title) { - if (this.isViewerEmbedded) { - // Embedded PDF viewers should not be changing their parent page's title. - return; - } - document.title = title; - }, - - /** - * Closes opened PDF document. - * @returns {Promise} - Returns the promise, which is resolved when all - * destruction is completed. - */ - close: function pdfViewClose() { - var errorWrapper = document.getElementById('errorWrapper'); - errorWrapper.setAttribute('hidden', 'true'); - - if (!this.pdfLoadingTask) { - return Promise.resolve(); - } - - var promise = this.pdfLoadingTask.destroy(); - this.pdfLoadingTask = null; - - if (this.pdfDocument) { - this.pdfDocument = null; - - this.pdfThumbnailViewer.setDocument(null); - this.pdfViewer.setDocument(null); - this.pdfLinkService.setDocument(null, null); - } - - if (typeof PDFBug !== 'undefined') { - PDFBug.cleanup(); - } - return promise; - }, - - /** - * Opens PDF document specified by URL or array with additional arguments. - * @param {string|TypedArray|ArrayBuffer} file - PDF location or binary data. - * @param {Object} args - (optional) Additional arguments for the getDocument - * call, e.g. HTTP headers ('httpHeaders') or - * alternative data transport ('range'). - * @returns {Promise} - Returns the promise, which is resolved when document - * is opened. - */ - open: function pdfViewOpen(file, args) { - var scale = 0; - if (arguments.length > 2 || typeof args === 'number') { - console.warn('Call of open() with obsolete signature.'); - if (typeof args === 'number') { - scale = args; // scale argument was found - } - args = arguments[4] || null; - if (arguments[3] && typeof arguments[3] === 'object') { - // The pdfDataRangeTransport argument is present. - args = Object.create(args); - args.range = arguments[3]; - } - if (typeof arguments[2] === 'string') { - // The password argument is present. - args = Object.create(args); - args.password = arguments[2]; - } - } - - if (this.pdfLoadingTask) { - // We need to destroy already opened document. - return this.close().then(function () { - // Reload the preferences if a document was previously opened. - Preferences.reload(); - // ... and repeat the open() call. - return this.open(file, args); - }.bind(this)); - } - - var parameters = Object.create(null); - if (typeof file === 'string') { // URL - this.setTitleUsingUrl(file); - parameters.url = file; - } else if (file && 'byteLength' in file) { // ArrayBuffer - parameters.data = file; - } else if (file.url && file.originalUrl) { - this.setTitleUsingUrl(file.originalUrl); - parameters.url = file.url; - } - if (args) { - for (var prop in args) { - parameters[prop] = args[prop]; - } - } - - var self = this; - self.downloadComplete = false; - - var loadingTask = PDFJS.getDocument(parameters); - this.pdfLoadingTask = loadingTask; - - loadingTask.onPassword = function passwordNeeded(updatePassword, reason) { - PasswordPrompt.updatePassword = updatePassword; - PasswordPrompt.reason = reason; - PasswordPrompt.open(); - }; - - loadingTask.onProgress = function getDocumentProgress(progressData) { - self.progress(progressData.loaded / progressData.total); - }; - - // Listen for unsupported features to trigger the fallback UI. - loadingTask.onUnsupportedFeature = this.fallback.bind(this); - - var result = loadingTask.promise.then( - function getDocumentCallback(pdfDocument) { - self.load(pdfDocument, scale); - }, - function getDocumentError(exception) { - var message = exception && exception.message; - var loadingErrorMessage = 'An error occurred while loading the PDF.'; - - if (exception instanceof PDFJS.InvalidPDFException) { - // change error message also for other builds - loadingErrorMessage = 'Invalid or corrupted PDF file.'; - } else if (exception instanceof PDFJS.MissingPDFException) { - // special message for missing PDF's - loadingErrorMessage = 'Missing PDF file.'; - } else if (exception instanceof PDFJS.UnexpectedResponseException) { - loadingErrorMessage = 'Unexpected server response.'; - } - - var moreInfo = { - message: message - }; - self.error(loadingErrorMessage, moreInfo); - - throw new Error(loadingErrorMessage); - } - ); - - if (args && args.length) { - PDFViewerApplication.pdfDocumentProperties.setFileSize(args.length); - } - return result; - }, - - download: function pdfViewDownload() { - function downloadByUrl() { - downloadManager.downloadUrl(url, filename); - } - - var url = this.url.split('#')[0]; - var filename = getPDFFileNameFromURL(url); - var downloadManager = new DownloadManager(); - downloadManager.onerror = function (err) { - // This error won't really be helpful because it's likely the - // fallback won't work either (or is already open). - PDFViewerApplication.error('PDF failed to download.'); - }; - - if (!this.pdfDocument) { // the PDF is not ready yet - downloadByUrl(); - return; - } - - if (!this.downloadComplete) { // the PDF is still downloading - downloadByUrl(); - return; - } - - this.pdfDocument.getData().then( - function getDataSuccess(data) { - var blob = PDFJS.createBlob(data, 'application/pdf'); - downloadManager.download(blob, url, filename); - }, - downloadByUrl // Error occurred try downloading with just the url. - ).then(null, downloadByUrl); - }, - - fallback: function pdfViewFallback(featureId) { - }, - - /** - * Show the error box. - * @param {String} message A message that is human readable. - * @param {Object} moreInfo (optional) Further information about the error - * that is more technical. Should have a 'message' - * and optionally a 'stack' property. - */ - error: function pdfViewError(message, moreInfo) { - var moreInfoText = 'PDF.js v' + (PDFJS.version || '?') + '(build: ' + (PDFJS.build || '?') + ')\n'; - if (moreInfo) { - moreInfoText += 'Message: ' + moreInfo.message - if (moreInfo.stack) { - moreInfoText += '\nStack: ' + moreInfo.stack; - } else { - if (moreInfo.filename) { - moreInfoText += '\nFile: ' + moreInfo.filename; - } - if (moreInfo.lineNumber) { - moreInfoText += '\nLine: ' + moreInfo.lineNumber; - } - } - } - - var errorWrapper = document.getElementById('errorWrapper'); - errorWrapper.removeAttribute('hidden'); - - var errorMessage = document.getElementById('errorMessage'); - errorMessage.textContent = message; - - var closeButton = document.getElementById('errorClose'); - closeButton.onclick = function() { - errorWrapper.setAttribute('hidden', 'true'); - }; - - var errorMoreInfo = document.getElementById('errorMoreInfo'); - var moreInfoButton = document.getElementById('errorShowMore'); - var lessInfoButton = document.getElementById('errorShowLess'); - moreInfoButton.onclick = function() { - errorMoreInfo.removeAttribute('hidden'); - moreInfoButton.setAttribute('hidden', 'true'); - lessInfoButton.removeAttribute('hidden'); - errorMoreInfo.style.height = errorMoreInfo.scrollHeight + 'px'; - }; - lessInfoButton.onclick = function() { - errorMoreInfo.setAttribute('hidden', 'true'); - moreInfoButton.removeAttribute('hidden'); - lessInfoButton.setAttribute('hidden', 'true'); - }; - moreInfoButton.oncontextmenu = noContextMenuHandler; - lessInfoButton.oncontextmenu = noContextMenuHandler; - closeButton.oncontextmenu = noContextMenuHandler; - moreInfoButton.removeAttribute('hidden'); - lessInfoButton.setAttribute('hidden', 'true'); - errorMoreInfo.value = moreInfoText; - }, - - progress: function pdfViewProgress(level) { - var percent = Math.round(level * 100); - // When we transition from full request to range requests, it's possible - // that we discard some of the loaded data. This can cause the loading - // bar to move backwards. So prevent this by only updating the bar if it - // increases. - if (percent > this.loadingBar.percent || isNaN(percent)) { - this.loadingBar.percent = percent; - - // When disableAutoFetch is enabled, it's not uncommon for the entire file - // to never be fetched (depends on e.g. the file structure). In this case - // the loading bar will not be completely filled, nor will it be hidden. - // To prevent displaying a partially filled loading bar permanently, we - // hide it when no data has been loaded during a certain amount of time. - if (PDFJS.disableAutoFetch && percent) { - if (this.disableAutoFetchLoadingBarTimeout) { - clearTimeout(this.disableAutoFetchLoadingBarTimeout); - this.disableAutoFetchLoadingBarTimeout = null; - } - this.loadingBar.show(); - - this.disableAutoFetchLoadingBarTimeout = setTimeout(function () { - this.loadingBar.hide(); - this.disableAutoFetchLoadingBarTimeout = null; - }.bind(this), DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT); - } - } - }, - - load: function pdfViewLoad(pdfDocument, scale) { - var self = this; - scale = scale || UNKNOWN_SCALE; - - this.findController.reset(); - - this.pdfDocument = pdfDocument; - - this.pdfDocumentProperties.setDocumentAndUrl(pdfDocument, this.url); - - var downloadedPromise = pdfDocument.getDownloadInfo().then(function() { - self.downloadComplete = true; - self.loadingBar.hide(); - }); - - var pagesCount = pdfDocument.numPages; - document.getElementById('numPages').textContent = 'of ' + pagesCount; - document.getElementById('pageNumber').max = pagesCount; - - var id = this.documentFingerprint = pdfDocument.fingerprint; - var store = this.store = new ViewHistory(id); - - var baseDocumentUrl = null; - this.pdfLinkService.setDocument(pdfDocument, baseDocumentUrl); - - var pdfViewer = this.pdfViewer; - pdfViewer.currentScale = scale; - pdfViewer.setDocument(pdfDocument); - var firstPagePromise = pdfViewer.firstPagePromise; - var pagesPromise = pdfViewer.pagesPromise; - var onePageRendered = pdfViewer.onePageRendered; - - this.pageRotation = 0; - this.isInitialViewSet = false; - - this.pdfThumbnailViewer.setDocument(pdfDocument); - - firstPagePromise.then(function(pdfPage) { - downloadedPromise.then(function () { - var event = document.createEvent('CustomEvent'); - event.initCustomEvent('documentload', true, true, {}); - window.dispatchEvent(event); - }); - - self.loadingBar.setWidth(document.getElementById('viewer')); - - if (!PDFJS.disableHistory && !self.isViewerEmbedded) { - // The browsing history is only enabled when the viewer is standalone, - // i.e. not when it is embedded in a web page. - if (!self.preferenceShowPreviousViewOnLoad) { - self.pdfHistory.clearHistoryState(); - } - self.pdfHistory.initialize(self.documentFingerprint); - - if (self.pdfHistory.initialDestination) { - self.initialDestination = self.pdfHistory.initialDestination; - } else if (self.pdfHistory.initialBookmark) { - self.initialBookmark = self.pdfHistory.initialBookmark; - } - } - - var initialParams = { - destination: self.initialDestination, - bookmark: self.initialBookmark, - hash: null, - }; - - store.initializedPromise.then(function resolved() { - var storedHash = null; - if (self.preferenceShowPreviousViewOnLoad && - store.get('exists', false)) { - var pageNum = store.get('page', '1'); - var zoom = self.preferenceDefaultZoomValue || - store.get('zoom', DEFAULT_SCALE_VALUE); - var left = store.get('scrollLeft', '0'); - var top = store.get('scrollTop', '0'); - - storedHash = 'page=' + pageNum + '&zoom=' + zoom + ',' + - left + ',' + top; - } else if (self.preferenceDefaultZoomValue) { - storedHash = 'page=1&zoom=' + self.preferenceDefaultZoomValue; - } - self.setInitialView(storedHash, scale); - - initialParams.hash = storedHash; - - // Make all navigation keys work on document load, - // unless the viewer is embedded in a web page. - if (!self.isViewerEmbedded) { - self.pdfViewer.focus(); - } - }, function rejected(reason) { - console.error(reason); - self.setInitialView(null, scale); - }); - - // For documents with different page sizes, - // ensure that the correct location becomes visible on load. - pagesPromise.then(function resolved() { - if (!initialParams.destination && !initialParams.bookmark && - !initialParams.hash) { - return; - } - if (self.hasEqualPageSizes) { - return; - } - self.initialDestination = initialParams.destination; - self.initialBookmark = initialParams.bookmark; - - self.pdfViewer.currentScaleValue = self.pdfViewer.currentScaleValue; - self.setInitialView(initialParams.hash, scale); - }); - }); - - pagesPromise.then(function() { - if (self.supportsPrinting) { - pdfDocument.getJavaScript().then(function(javaScript) { - if (javaScript.length) { - console.warn('Warning: JavaScript is not supported'); - self.fallback(PDFJS.UNSUPPORTED_FEATURES.javaScript); - } - // Hack to support auto printing. - var regex = /\bprint\s*\(/; - for (var i = 0, ii = javaScript.length; i < ii; i++) { - var js = javaScript[i]; - if (js && regex.test(js)) { - setTimeout(function() { - window.print(); - }); - return; - } - } - }); - } - }); - - // outline depends on pagesRefMap - var promises = [pagesPromise, this.animationStartedPromise]; - Promise.all(promises).then(function() { - pdfDocument.getOutline().then(function(outline) { - var container = document.getElementById('outlineView'); - self.outline = new PDFOutlineView({ - container: container, - outline: outline, - linkService: self.pdfLinkService - }); - self.outline.render(); - document.getElementById('viewOutline').disabled = !outline; - - if (!outline && !container.classList.contains('hidden')) { - self.switchSidebarView('thumbs'); - } - if (outline && - self.preferenceSidebarViewOnLoad === SidebarView.OUTLINE) { - self.switchSidebarView('outline', true); - } - }); - pdfDocument.getAttachments().then(function(attachments) { - var container = document.getElementById('attachmentsView'); - self.attachments = new PDFAttachmentView({ - container: container, - attachments: attachments, - downloadManager: new DownloadManager() - }); - self.attachments.render(); - document.getElementById('viewAttachments').disabled = !attachments; - - if (!attachments && !container.classList.contains('hidden')) { - self.switchSidebarView('thumbs'); - } - if (attachments && - self.preferenceSidebarViewOnLoad === SidebarView.ATTACHMENTS) { - self.switchSidebarView('attachments', true); - } - }); - }); - - if (self.preferenceSidebarViewOnLoad === SidebarView.THUMBS) { - Promise.all([firstPagePromise, onePageRendered]).then(function () { - self.switchSidebarView('thumbs', true); - }); - } - - pdfDocument.getMetadata().then(function(data) { - var info = data.info, metadata = data.metadata; - self.documentInfo = info; - self.metadata = metadata; - - // Provides some basic debug information - console.log('PDF ' + pdfDocument.fingerprint + ' [' + - info.PDFFormatVersion + ' ' + (info.Producer || '-').trim() + - ' / ' + (info.Creator || '-').trim() + ']' + - ' (PDF.js: ' + (PDFJS.version || '-') + - (!PDFJS.disableWebGL ? ' [WebGL]' : '') + ')'); - - var pdfTitle; - if (metadata && metadata.has('dc:title')) { - var title = metadata.get('dc:title'); - // Ghostscript sometimes return 'Untitled', sets the title to 'Untitled' - if (title !== 'Untitled') { - pdfTitle = title; - } - } - - if (!pdfTitle && info && info['Title']) { - pdfTitle = info['Title']; - } - - if (pdfTitle) { - self.setTitle(pdfTitle + ' - ' + document.title); - } - - if (info.IsAcroFormPresent) { - console.warn('Warning: AcroForm/XFA is not supported'); - self.fallback(PDFJS.UNSUPPORTED_FEATURES.forms); - } - - }); - }, - - setInitialView: function pdfViewSetInitialView(storedHash, scale) { - this.isInitialViewSet = true; - - // When opening a new file, when one is already loaded in the viewer, - // ensure that the 'pageNumber' element displays the correct value. - document.getElementById('pageNumber').value = - this.pdfViewer.currentPageNumber; - - if (this.initialDestination) { - this.pdfLinkService.navigateTo(this.initialDestination); - this.initialDestination = null; - } else if (this.initialBookmark) { - this.pdfLinkService.setHash(this.initialBookmark); - this.pdfHistory.push({ hash: this.initialBookmark }, true); - this.initialBookmark = null; - } else if (storedHash) { - this.pdfLinkService.setHash(storedHash); - } else if (scale) { - this.pdfViewer.currentScaleValue = scale; - this.page = 1; - } - - if (!this.pdfViewer.currentScaleValue) { - // Scale was not initialized: invalid bookmark or scale was not specified. - // Setting the default one. - this.pdfViewer.currentScaleValue = DEFAULT_SCALE_VALUE; - } - }, - - cleanup: function pdfViewCleanup() { - if (!this.pdfDocument) { - return; // run cleanup when document is loaded - } - this.pdfViewer.cleanup(); - this.pdfThumbnailViewer.cleanup(); - this.pdfDocument.cleanup(); - }, - - forceRendering: function pdfViewForceRendering() { - this.pdfRenderingQueue.printing = this.printing; - this.pdfRenderingQueue.isThumbnailViewEnabled = this.sidebarOpen; - this.pdfRenderingQueue.renderHighestPriority(); - }, - - refreshThumbnailViewer: function pdfViewRefreshThumbnailViewer() { - var pdfViewer = this.pdfViewer; - var thumbnailViewer = this.pdfThumbnailViewer; - - // set thumbnail images of rendered pages - var pagesCount = pdfViewer.pagesCount; - for (var pageIndex = 0; pageIndex < pagesCount; pageIndex++) { - var pageView = pdfViewer.getPageView(pageIndex); - if (pageView && pageView.renderingState === RenderingStates.FINISHED) { - var thumbnailView = thumbnailViewer.getThumbnail(pageIndex); - thumbnailView.setImage(pageView); - } - } - - thumbnailViewer.scrollThumbnailIntoView(this.page); - }, - - switchSidebarView: function pdfViewSwitchSidebarView(view, openSidebar) { - if (openSidebar && !this.sidebarOpen) { - document.getElementById('sidebarToggle').click(); - } - var thumbsView = document.getElementById('thumbnailView'); - var outlineView = document.getElementById('outlineView'); - var attachmentsView = document.getElementById('attachmentsView'); - - var thumbsButton = document.getElementById('viewThumbnail'); - var outlineButton = document.getElementById('viewOutline'); - var attachmentsButton = document.getElementById('viewAttachments'); - - switch (view) { - case 'thumbs': - var wasAnotherViewVisible = thumbsView.classList.contains('hidden'); - - thumbsButton.classList.add('toggled'); - outlineButton.classList.remove('toggled'); - attachmentsButton.classList.remove('toggled'); - thumbsView.classList.remove('hidden'); - outlineView.classList.add('hidden'); - attachmentsView.classList.add('hidden'); - - this.forceRendering(); - - if (wasAnotherViewVisible) { - this.pdfThumbnailViewer.ensureThumbnailVisible(this.page); - } - break; - - case 'outline': - if (outlineButton.disabled) { - return; - } - thumbsButton.classList.remove('toggled'); - outlineButton.classList.add('toggled'); - attachmentsButton.classList.remove('toggled'); - thumbsView.classList.add('hidden'); - outlineView.classList.remove('hidden'); - attachmentsView.classList.add('hidden'); - break; - - case 'attachments': - if (attachmentsButton.disabled) { - return; - } - thumbsButton.classList.remove('toggled'); - outlineButton.classList.remove('toggled'); - attachmentsButton.classList.add('toggled'); - thumbsView.classList.add('hidden'); - outlineView.classList.add('hidden'); - attachmentsView.classList.remove('hidden'); - break; - } - }, - - beforePrint: function pdfViewSetupBeforePrint() { - if (!this.supportsPrinting) { - var printMessage = 'Warning: Printing is not fully supported by this browser.'; - this.error(printMessage); - return; - } - - var alertNotReady = false; - var i, ii; - if (!this.pdfDocument || !this.pagesCount) { - alertNotReady = true; - } else { - for (i = 0, ii = this.pagesCount; i < ii; ++i) { - if (!this.pdfViewer.getPageView(i).pdfPage) { - alertNotReady = true; - break; - } - } - } - if (alertNotReady) { - var notReadyMessage = 'Warning: The PDF is not fully loaded for printing.'; - window.alert(notReadyMessage); - return; - } - - this.printing = true; - this.forceRendering(); - - var body = document.querySelector('body'); - body.setAttribute('data-mozPrintCallback', true); - - if (!this.hasEqualPageSizes) { - console.warn('Not all pages have the same size. The printed result ' + - 'may be incorrect!'); - } - - // Insert a @page + size rule to make sure that the page size is correctly - // set. Note that we assume that all pages have the same size, because - // variable-size pages are not supported yet (at least in Chrome & Firefox). - // TODO(robwu): Use named pages when size calculation bugs get resolved - // (e.g. https://crbug.com/355116) AND when support for named pages is - // added (http://www.w3.org/TR/css3-page/#using-named-pages). - // In browsers where @page + size is not supported (such as Firefox, - // https://bugzil.la/851441), the next stylesheet will be ignored and the - // user has to select the correct paper size in the UI if wanted. - this.pageStyleSheet = document.createElement('style'); - var pageSize = this.pdfViewer.getPageView(0).pdfPage.getViewport(1); - this.pageStyleSheet.textContent = - // "size: " is what we need. But also add "A4" because - // Firefox incorrectly reports support for the other value. - '@supports ((size:A4) and (size:1pt 1pt)) {' + - '@page { size: ' + pageSize.width + 'pt ' + pageSize.height + 'pt;}' + - // The canvas and each ancestor node must have a height of 100% to make - // sure that each canvas is printed on exactly one page. - '#printContainer {height:100%}' + - '#printContainer > div {width:100% !important;height:100% !important;}' + - '}'; - body.appendChild(this.pageStyleSheet); - - for (i = 0, ii = this.pagesCount; i < ii; ++i) { - this.pdfViewer.getPageView(i).beforePrint(); - } - - }, - - // Whether all pages of the PDF have the same width and height. - get hasEqualPageSizes() { - var firstPage = this.pdfViewer.getPageView(0); - for (var i = 1, ii = this.pagesCount; i < ii; ++i) { - var pageView = this.pdfViewer.getPageView(i); - if (pageView.width !== firstPage.width || - pageView.height !== firstPage.height) { - return false; - } - } - return true; - }, - - afterPrint: function pdfViewSetupAfterPrint() { - var div = document.getElementById('printContainer'); - while (div.hasChildNodes()) { - div.removeChild(div.lastChild); - } - - if (this.pageStyleSheet && this.pageStyleSheet.parentNode) { - this.pageStyleSheet.parentNode.removeChild(this.pageStyleSheet); - this.pageStyleSheet = null; - } - - this.printing = false; - this.forceRendering(); - }, - - rotatePages: function pdfViewRotatePages(delta) { - var pageNumber = this.page; - this.pageRotation = (this.pageRotation + 360 + delta) % 360; - this.pdfViewer.pagesRotation = this.pageRotation; - this.pdfThumbnailViewer.pagesRotation = this.pageRotation; - - this.forceRendering(); - - this.pdfViewer.scrollPageIntoView(pageNumber); - }, - - requestPresentationMode: function pdfViewRequestPresentationMode() { - if (!this.pdfPresentationMode) { - return; - } - this.pdfPresentationMode.request(); - }, - - /** - * @param {number} delta - The delta value from the mouse event. - */ - scrollPresentationMode: function pdfViewScrollPresentationMode(delta) { - if (!this.pdfPresentationMode) { - return; - } - this.pdfPresentationMode.mouseScroll(delta); - } -}; -window.PDFView = PDFViewerApplication; // obsolete name, using it as an alias - - -var HOSTED_VIEWER_ORIGINS = ['null', - 'http://mozilla.github.io', 'https://mozilla.github.io']; -function validateFileURL(file) { - try { - var viewerOrigin = new URL(window.location.href).origin || 'null'; - if (HOSTED_VIEWER_ORIGINS.indexOf(viewerOrigin) >= 0) { - // Hosted or local viewer, allow for any file locations - return; - } - var fileOrigin = new URL(file, window.location.href).origin; - // Removing of the following line will not guarantee that the viewer will - // start accepting URLs from foreign origin -- CORS headers on the remote - // server must be properly configured. - if (fileOrigin !== viewerOrigin) { - throw new Error('file origin does not match viewer\'s'); - } - } catch (e) { - var message = e && e.message; - var loadingErrorMessage = 'An error occurred while loading the PDF.'; - - var moreInfo = { - message: message - }; - PDFViewerApplication.error(loadingErrorMessage, moreInfo); - throw e; - } -} - -function webViewerLoad(evt) { - configure(PDFJS); - PDFViewerApplication.initialize().then(webViewerInitialized); -} - -function webViewerInitialized() { - var queryString = document.location.search.substring(1); - var params = parseQueryString(queryString); - var file = 'file' in params ? params.file : DEFAULT_URL; - validateFileURL(file); - - var fileInput = document.createElement('input'); - fileInput.id = 'fileInput'; - fileInput.className = 'fileInput'; - fileInput.setAttribute('type', 'file'); - fileInput.oncontextmenu = noContextMenuHandler; - document.body.appendChild(fileInput); - - if (!window.File || !window.FileReader || !window.FileList || !window.Blob) { - document.getElementById('openFile').setAttribute('hidden', 'true'); - document.getElementById('secondaryOpenFile').setAttribute('hidden', 'true'); - } else { - document.getElementById('fileInput').value = null; - } - - var locale = PDFJS.locale || navigator.language; - - if (PDFViewerApplication.preferencePdfBugEnabled) { - // Special debugging flags in the hash section of the URL. - var hash = document.location.hash.substring(1); - var hashParams = parseQueryString(hash); - - if ('disableworker' in hashParams) { - PDFJS.disableWorker = (hashParams['disableworker'] === 'true'); - } - if ('disablerange' in hashParams) { - PDFJS.disableRange = (hashParams['disablerange'] === 'true'); - } - if ('disablestream' in hashParams) { - PDFJS.disableStream = (hashParams['disablestream'] === 'true'); - } - if ('disableautofetch' in hashParams) { - PDFJS.disableAutoFetch = (hashParams['disableautofetch'] === 'true'); - } - if ('disablefontface' in hashParams) { - PDFJS.disableFontFace = (hashParams['disablefontface'] === 'true'); - } - if ('disablehistory' in hashParams) { - PDFJS.disableHistory = (hashParams['disablehistory'] === 'true'); - } - if ('webgl' in hashParams) { - PDFJS.disableWebGL = (hashParams['webgl'] !== 'true'); - } - if ('useonlycsszoom' in hashParams) { - PDFJS.useOnlyCssZoom = (hashParams['useonlycsszoom'] === 'true'); - } - if ('verbosity' in hashParams) { - PDFJS.verbosity = hashParams['verbosity'] | 0; - } - if ('ignorecurrentpositiononzoom' in hashParams) { - IGNORE_CURRENT_POSITION_ON_ZOOM = - (hashParams['ignorecurrentpositiononzoom'] === 'true'); - } - if ('locale' in hashParams) { - locale = hashParams['locale']; - } - if ('textlayer' in hashParams) { - switch (hashParams['textlayer']) { - case 'off': - PDFJS.disableTextLayer = true; - break; - case 'visible': - case 'shadow': - case 'hover': - var viewer = document.getElementById('viewer'); - viewer.classList.add('textLayer-' + hashParams['textlayer']); - break; - } - } - if ('pdfbug' in hashParams) { - PDFJS.pdfBug = true; - var pdfBug = hashParams['pdfbug']; - var enabled = pdfBug.split(','); - PDFBug.enable(enabled); - PDFBug.init(); - } - } - - if (!PDFViewerApplication.supportsPrinting) { - document.getElementById('print').classList.add('hidden'); - document.getElementById('secondaryPrint').classList.add('hidden'); - } - - if (!PDFViewerApplication.supportsFullscreen) { - document.getElementById('presentationMode').classList.add('hidden'); - document.getElementById('secondaryPresentationMode'). - classList.add('hidden'); - } - - if (PDFViewerApplication.supportsIntegratedFind) { - document.getElementById('viewFind').classList.add('hidden'); - } - - // Suppress context menus for some controls - document.getElementById('scaleSelect').oncontextmenu = noContextMenuHandler; - - var mainContainer = document.getElementById('mainContainer'); - var outerContainer = document.getElementById('outerContainer'); - mainContainer.addEventListener('transitionend', function(e) { - if (e.target === mainContainer) { - var event = document.createEvent('UIEvents'); - event.initUIEvent('resize', false, false, window, 0); - window.dispatchEvent(event); - outerContainer.classList.remove('sidebarMoving'); - } - }, true); - - document.getElementById('sidebarToggle').addEventListener('click', - function() { - this.classList.toggle('toggled'); - outerContainer.classList.add('sidebarMoving'); - outerContainer.classList.toggle('sidebarOpen'); - PDFViewerApplication.sidebarOpen = - outerContainer.classList.contains('sidebarOpen'); - if (PDFViewerApplication.sidebarOpen) { - PDFViewerApplication.refreshThumbnailViewer(); - } - PDFViewerApplication.forceRendering(); - }); - - document.getElementById('viewThumbnail').addEventListener('click', - function() { - PDFViewerApplication.switchSidebarView('thumbs'); - }); - - document.getElementById('viewOutline').addEventListener('click', - function() { - PDFViewerApplication.switchSidebarView('outline'); - }); - - document.getElementById('viewOutline').addEventListener('dblclick', - function() { - PDFViewerApplication.outline.toggleOutlineTree(); - }); - - document.getElementById('viewAttachments').addEventListener('click', - function() { - PDFViewerApplication.switchSidebarView('attachments'); - }); - - document.getElementById('previous').addEventListener('click', - function() { - PDFViewerApplication.page--; - }); - - document.getElementById('next').addEventListener('click', - function() { - PDFViewerApplication.page++; - }); - - document.getElementById('zoomIn').addEventListener('click', - function() { - PDFViewerApplication.zoomIn(); - }); - - document.getElementById('zoomOut').addEventListener('click', - function() { - PDFViewerApplication.zoomOut(); - }); - - document.getElementById('pageNumber').addEventListener('click', function() { - this.select(); - }); - - document.getElementById('pageNumber').addEventListener('change', function() { - // Handle the user inputting a floating point number. - PDFViewerApplication.page = (this.value | 0); - - if (this.value !== (this.value | 0).toString()) { - this.value = PDFViewerApplication.page; - } - }); - - document.getElementById('scaleSelect').addEventListener('change', function() { - if (this.value === 'custom') { - return; - } - PDFViewerApplication.pdfViewer.currentScaleValue = this.value; - }); - - document.getElementById('presentationMode').addEventListener('click', - SecondaryToolbar.presentationModeClick.bind(SecondaryToolbar)); - - document.getElementById('openFile').addEventListener('click', - SecondaryToolbar.openFileClick.bind(SecondaryToolbar)); - - document.getElementById('print').addEventListener('click', - SecondaryToolbar.printClick.bind(SecondaryToolbar)); - - document.getElementById('download').addEventListener('click', - SecondaryToolbar.downloadClick.bind(SecondaryToolbar)); - - - if (file && file.lastIndexOf('file:', 0) === 0) { - // file:-scheme. Load the contents in the main thread because QtWebKit - // cannot load file:-URLs in a Web Worker. file:-URLs are usually loaded - // very quickly, so there is no need to set up progress event listeners. - PDFViewerApplication.setTitleUsingUrl(file); - var xhr = new XMLHttpRequest(); - xhr.onload = function() { - PDFViewerApplication.open(new Uint8Array(xhr.response)); - }; - try { - xhr.open('GET', file); - xhr.responseType = 'arraybuffer'; - xhr.send(); - } catch (e) { - PDFViewerApplication.error('An error occurred while loading the PDF.', e); - } - return; - } - - if (file) { - PDFViewerApplication.open(file); - } -} - -document.addEventListener('DOMContentLoaded', webViewerLoad, true); - -document.addEventListener('pagerendered', function (e) { - var pageNumber = e.detail.pageNumber; - var pageIndex = pageNumber - 1; - var pageView = PDFViewerApplication.pdfViewer.getPageView(pageIndex); - - if (PDFViewerApplication.sidebarOpen) { - var thumbnailView = PDFViewerApplication.pdfThumbnailViewer. - getThumbnail(pageIndex); - thumbnailView.setImage(pageView); - } - - if (PDFJS.pdfBug && Stats.enabled && pageView.stats) { - Stats.add(pageNumber, pageView.stats); - } - - if (pageView.error) { - PDFViewerApplication.error('An error occurred while rendering the page.', pageView.error); - } - - // If the page is still visible when it has finished rendering, - // ensure that the page number input loading indicator is hidden. - if (pageNumber === PDFViewerApplication.page) { - var pageNumberInput = document.getElementById('pageNumber'); - pageNumberInput.classList.remove(PAGE_NUMBER_LOADING_INDICATOR); - } - -}, true); - -document.addEventListener('textlayerrendered', function (e) { - var pageIndex = e.detail.pageNumber - 1; - var pageView = PDFViewerApplication.pdfViewer.getPageView(pageIndex); - -}, true); - -document.addEventListener('pagemode', function (evt) { - if (!PDFViewerApplication.initialized) { - return; - } - // Handle the 'pagemode' hash parameter, see also `PDFLinkService_setHash`. - var mode = evt.detail.mode; - switch (mode) { - case 'bookmarks': - // Note: Our code calls this property 'outline', even though the - // Open Parameter specification calls it 'bookmarks'. - mode = 'outline'; - /* falls through */ - case 'thumbs': - case 'attachments': - PDFViewerApplication.switchSidebarView(mode, true); - break; - case 'none': - if (PDFViewerApplication.sidebarOpen) { - document.getElementById('sidebarToggle').click(); - } - break; - } -}, true); - -document.addEventListener('namedaction', function (e) { - if (!PDFViewerApplication.initialized) { - return; - } - // Processing couple of named actions that might be useful. - // See also PDFLinkService.executeNamedAction - var action = e.detail.action; - switch (action) { - case 'GoToPage': - document.getElementById('pageNumber').focus(); - break; - - case 'Find': - if (!PDFViewerApplication.supportsIntegratedFind) { - PDFViewerApplication.findBar.toggle(); - } - break; - } -}, true); - -window.addEventListener('presentationmodechanged', function (e) { - var active = e.detail.active; - var switchInProgress = e.detail.switchInProgress; - PDFViewerApplication.pdfViewer.presentationModeState = - switchInProgress ? PresentationModeState.CHANGING : - active ? PresentationModeState.FULLSCREEN : PresentationModeState.NORMAL; -}); - -window.addEventListener('updateviewarea', function (evt) { - if (!PDFViewerApplication.initialized) { - return; - } - var location = evt.location; - - PDFViewerApplication.store.initializedPromise.then(function() { - PDFViewerApplication.store.setMultiple({ - 'exists': true, - 'page': location.pageNumber, - 'zoom': location.scale, - 'scrollLeft': location.left, - 'scrollTop': location.top - }).catch(function() { - // unable to write to storage - }); - }); - var href = - PDFViewerApplication.pdfLinkService.getAnchorUrl(location.pdfOpenParams); - document.getElementById('viewBookmark').href = href; - document.getElementById('secondaryViewBookmark').href = href; - - // Update the current bookmark in the browsing history. - PDFViewerApplication.pdfHistory.updateCurrentBookmark(location.pdfOpenParams, - location.pageNumber); - - // Show/hide the loading indicator in the page number input element. - var pageNumberInput = document.getElementById('pageNumber'); - var currentPage = - PDFViewerApplication.pdfViewer.getPageView(PDFViewerApplication.page - 1); - - if (currentPage.renderingState === RenderingStates.FINISHED) { - pageNumberInput.classList.remove(PAGE_NUMBER_LOADING_INDICATOR); - } else { - pageNumberInput.classList.add(PAGE_NUMBER_LOADING_INDICATOR); - } -}, true); - -window.addEventListener('resize', function webViewerResize(evt) { - if (PDFViewerApplication.initialized) { - var currentScaleValue = PDFViewerApplication.pdfViewer.currentScaleValue; - if (currentScaleValue === 'auto' || - currentScaleValue === 'page-fit' || - currentScaleValue === 'page-width') { - // Note: the scale is constant for 'page-actual'. - PDFViewerApplication.pdfViewer.currentScaleValue = currentScaleValue; - } else if (!currentScaleValue) { - // Normally this shouldn't happen, but if the scale wasn't initialized - // we set it to the default value in order to prevent any issues. - // (E.g. the document being rendered with the wrong scale on load.) - PDFViewerApplication.pdfViewer.currentScaleValue = DEFAULT_SCALE_VALUE; - } - PDFViewerApplication.pdfViewer.update(); - } - - // Set the 'max-height' CSS property of the secondary toolbar. - SecondaryToolbar.setMaxHeight(document.getElementById('viewerContainer')); -}); - -window.addEventListener('hashchange', function webViewerHashchange(evt) { - if (PDFViewerApplication.pdfHistory.isHashChangeUnlocked) { - var hash = document.location.hash.substring(1); - if (!hash) { - return; - } - if (!PDFViewerApplication.isInitialViewSet) { - PDFViewerApplication.initialBookmark = hash; - } else { - PDFViewerApplication.pdfLinkService.setHash(hash); - } - } -}); - -window.addEventListener('change', function webViewerChange(evt) { - var files = evt.target.files; - if (!files || files.length === 0) { - return; - } - var file = files[0]; - - if (!PDFJS.disableCreateObjectURL && - typeof URL !== 'undefined' && URL.createObjectURL) { - PDFViewerApplication.open(URL.createObjectURL(file)); - } else { - // Read the local file into a Uint8Array. - var fileReader = new FileReader(); - fileReader.onload = function webViewerChangeFileReaderOnload(evt) { - var buffer = evt.target.result; - var uint8Array = new Uint8Array(buffer); - PDFViewerApplication.open(uint8Array); - }; - fileReader.readAsArrayBuffer(file); - } - - PDFViewerApplication.setTitleUsingUrl(file.name); - - // URL does not reflect proper document location - hiding some icons. - document.getElementById('viewBookmark').setAttribute('hidden', 'true'); - document.getElementById('secondaryViewBookmark'). - setAttribute('hidden', 'true'); - document.getElementById('download').setAttribute('hidden', 'true'); - document.getElementById('secondaryDownload').setAttribute('hidden', 'true'); -}, true); - -function selectScaleOption(value) { - var options = document.getElementById('scaleSelect').options; - var predefinedValueFound = false; - for (var i = 0, ii = options.length; i < ii; i++) { - var option = options[i]; - if (option.value !== value) { - option.selected = false; - continue; - } - option.selected = true; - predefinedValueFound = true; - } - return predefinedValueFound; -} - -window.addEventListener('localized', function localized(evt) { -// document.getElementsByTagName('html')[0].dir = mozL10n.getDirection(); - - PDFViewerApplication.animationStartedPromise.then(function() { - // Adjust the width of the zoom box to fit the content. - // Note: If the window is narrow enough that the zoom box is not visible, - // we temporarily show it to be able to adjust its width. - var container = document.getElementById('scaleSelectContainer'); - if (container.clientWidth === 0) { - container.setAttribute('style', 'display: inherit;'); - } - if (container.clientWidth > 0) { - var select = document.getElementById('scaleSelect'); - select.setAttribute('style', 'min-width: inherit;'); - var width = select.clientWidth + SCALE_SELECT_CONTAINER_PADDING; - select.setAttribute('style', 'min-width: ' + - (width + SCALE_SELECT_PADDING) + 'px;'); - container.setAttribute('style', 'min-width: ' + width + 'px; ' + - 'max-width: ' + width + 'px;'); - } - - // Set the 'max-height' CSS property of the secondary toolbar. - SecondaryToolbar.setMaxHeight(document.getElementById('viewerContainer')); - }); -}, true); - -window.addEventListener('scalechange', function scalechange(evt) { - document.getElementById('zoomOut').disabled = (evt.scale === MIN_SCALE); - document.getElementById('zoomIn').disabled = (evt.scale === MAX_SCALE); - - // Update the 'scaleSelect' DOM element. - var predefinedValueFound = selectScaleOption(evt.presetValue || - '' + evt.scale); - if (!predefinedValueFound) { - var customScaleOption = document.getElementById('customScaleOption'); - var customScale = Math.round(evt.scale * 10000) / 100; - customScaleOption.textContent = customScale + '%'; - customScaleOption.selected = true; - } - if (!PDFViewerApplication.initialized) { - return; - } - PDFViewerApplication.pdfViewer.update(); -}, true); - -window.addEventListener('pagechange', function pagechange(evt) { - var page = evt.pageNumber; - if (evt.previousPageNumber !== page) { - document.getElementById('pageNumber').value = page; - if (PDFViewerApplication.sidebarOpen) { - PDFViewerApplication.pdfThumbnailViewer.scrollThumbnailIntoView(page); - } - } - var numPages = PDFViewerApplication.pagesCount; - - document.getElementById('previous').disabled = (page <= 1); - document.getElementById('next').disabled = (page >= numPages); - - document.getElementById('firstPage').disabled = (page <= 1); - document.getElementById('lastPage').disabled = (page >= numPages); - - // we need to update stats - if (PDFJS.pdfBug && Stats.enabled) { - var pageView = PDFViewerApplication.pdfViewer.getPageView(page - 1); - if (pageView.stats) { - Stats.add(page, pageView.stats); - } - } -}, true); - -function handleMouseWheel(evt) { - var MOUSE_WHEEL_DELTA_FACTOR = 40; - var ticks = (evt.type === 'DOMMouseScroll') ? -evt.detail : - evt.wheelDelta / MOUSE_WHEEL_DELTA_FACTOR; - var direction = (ticks < 0) ? 'zoomOut' : 'zoomIn'; - - var pdfViewer = PDFViewerApplication.pdfViewer; - if (pdfViewer.isInPresentationMode) { - evt.preventDefault(); - PDFViewerApplication.scrollPresentationMode(ticks * - MOUSE_WHEEL_DELTA_FACTOR); - } else if (evt.ctrlKey || evt.metaKey) { - var support = PDFViewerApplication.supportedMouseWheelZoomModifierKeys; - if ((evt.ctrlKey && !support.ctrlKey) || - (evt.metaKey && !support.metaKey)) { - return; - } - // Only zoom the pages, not the entire viewer. - evt.preventDefault(); - - var previousScale = pdfViewer.currentScale; - - PDFViewerApplication[direction](Math.abs(ticks)); - - var currentScale = pdfViewer.currentScale; - if (previousScale !== currentScale) { - // After scaling the page via zoomIn/zoomOut, the position of the upper- - // left corner is restored. When the mouse wheel is used, the position - // under the cursor should be restored instead. - var scaleCorrectionFactor = currentScale / previousScale - 1; - var rect = pdfViewer.container.getBoundingClientRect(); - var dx = evt.clientX - rect.left; - var dy = evt.clientY - rect.top; - pdfViewer.container.scrollLeft += dx * scaleCorrectionFactor; - pdfViewer.container.scrollTop += dy * scaleCorrectionFactor; - } - } -} - -window.addEventListener('DOMMouseScroll', handleMouseWheel); -window.addEventListener('mousewheel', handleMouseWheel); - -window.addEventListener('click', function click(evt) { - if (SecondaryToolbar.opened && - PDFViewerApplication.pdfViewer.containsElement(evt.target)) { - SecondaryToolbar.close(); - } -}, false); - -window.addEventListener('keydown', function keydown(evt) { - if (OverlayManager.active) { - return; - } - - var handled = false; - var cmd = (evt.ctrlKey ? 1 : 0) | - (evt.altKey ? 2 : 0) | - (evt.shiftKey ? 4 : 0) | - (evt.metaKey ? 8 : 0); - - var pdfViewer = PDFViewerApplication.pdfViewer; - var isViewerInPresentationMode = pdfViewer && pdfViewer.isInPresentationMode; - - // First, handle the key bindings that are independent whether an input - // control is selected or not. - if (cmd === 1 || cmd === 8 || cmd === 5 || cmd === 12) { - // either CTRL or META key with optional SHIFT. - switch (evt.keyCode) { - case 70: // f - if (!PDFViewerApplication.supportsIntegratedFind) { - PDFViewerApplication.findBar.open(); - handled = true; - } - break; - case 71: // g - if (!PDFViewerApplication.supportsIntegratedFind) { - PDFViewerApplication.findBar.dispatchEvent('again', - cmd === 5 || cmd === 12); - handled = true; - } - break; - case 61: // FF/Mac '=' - case 107: // FF '+' and '=' - case 187: // Chrome '+' - case 171: // FF with German keyboard - if (!isViewerInPresentationMode) { - PDFViewerApplication.zoomIn(); - } - handled = true; - break; - case 173: // FF/Mac '-' - case 109: // FF '-' - case 189: // Chrome '-' - if (!isViewerInPresentationMode) { - PDFViewerApplication.zoomOut(); - } - handled = true; - break; - case 48: // '0' - case 96: // '0' on Numpad of Swedish keyboard - if (!isViewerInPresentationMode) { - // keeping it unhandled (to restore page zoom to 100%) - setTimeout(function () { - // ... and resetting the scale after browser adjusts its scale - pdfViewer.currentScaleValue = DEFAULT_SCALE_VALUE; - }); - handled = false; - } - break; - } - } - - // CTRL or META without shift - if (cmd === 1 || cmd === 8) { - switch (evt.keyCode) { - case 83: // s - PDFViewerApplication.download(); - handled = true; - break; - } - } - - // CTRL+ALT or Option+Command - if (cmd === 3 || cmd === 10) { - switch (evt.keyCode) { - case 80: // p - PDFViewerApplication.requestPresentationMode(); - handled = true; - break; - case 71: // g - // focuses input#pageNumber field - document.getElementById('pageNumber').select(); - handled = true; - break; - } - } - - if (handled) { - evt.preventDefault(); - return; - } - - // Some shortcuts should not get handled if a control/input element - // is selected. - var curElement = document.activeElement || document.querySelector(':focus'); - var curElementTagName = curElement && curElement.tagName.toUpperCase(); - if (curElementTagName === 'INPUT' || - curElementTagName === 'TEXTAREA' || - curElementTagName === 'SELECT') { - // Make sure that the secondary toolbar is closed when Escape is pressed. - if (evt.keyCode !== 27) { // 'Esc' - return; - } - } - var ensureViewerFocused = false; - - if (cmd === 0) { // no control key pressed at all. - switch (evt.keyCode) { - case 38: // up arrow - case 33: // pg up - case 8: // backspace - if (!isViewerInPresentationMode && - pdfViewer.currentScaleValue !== 'page-fit') { - break; - } - /* in presentation mode */ - /* falls through */ - case 37: // left arrow - // horizontal scrolling using arrow keys - if (pdfViewer.isHorizontalScrollbarEnabled) { - break; - } - /* falls through */ - case 75: // 'k' - case 80: // 'p' - PDFViewerApplication.page--; - handled = true; - break; - case 27: // esc key - if (SecondaryToolbar.opened) { - SecondaryToolbar.close(); - handled = true; - } - if (!PDFViewerApplication.supportsIntegratedFind && - PDFViewerApplication.findBar.opened) { - PDFViewerApplication.findBar.close(); - handled = true; - } - break; - case 40: // down arrow - case 34: // pg down - case 32: // spacebar - if (!isViewerInPresentationMode && - pdfViewer.currentScaleValue !== 'page-fit') { - break; - } - /* falls through */ - case 39: // right arrow - // horizontal scrolling using arrow keys - if (pdfViewer.isHorizontalScrollbarEnabled) { - break; - } - /* falls through */ - case 74: // 'j' - case 78: // 'n' - PDFViewerApplication.page++; - handled = true; - break; - - case 36: // home - if (isViewerInPresentationMode || PDFViewerApplication.page > 1) { - PDFViewerApplication.page = 1; - handled = true; - ensureViewerFocused = true; - } - break; - case 35: // end - if (isViewerInPresentationMode || (PDFViewerApplication.pdfDocument && - PDFViewerApplication.page < PDFViewerApplication.pagesCount)) { - PDFViewerApplication.page = PDFViewerApplication.pagesCount; - handled = true; - ensureViewerFocused = true; - } - break; - - case 72: // 'h' - if (!isViewerInPresentationMode) { - HandTool.toggle(); - } - break; - case 82: // 'r' - PDFViewerApplication.rotatePages(90); - break; - } - } - - if (cmd === 4) { // shift-key - switch (evt.keyCode) { - case 32: // spacebar - if (!isViewerInPresentationMode && - pdfViewer.currentScaleValue !== 'page-fit') { - break; - } - PDFViewerApplication.page--; - handled = true; - break; - - case 82: // 'r' - PDFViewerApplication.rotatePages(-90); - break; - } - } - - if (!handled && !isViewerInPresentationMode) { - // 33=Page Up 34=Page Down 35=End 36=Home - // 37=Left 38=Up 39=Right 40=Down - // 32=Spacebar - if ((evt.keyCode >= 33 && evt.keyCode <= 40) || - (evt.keyCode === 32 && curElementTagName !== 'BUTTON')) { - ensureViewerFocused = true; - } - } - - if (cmd === 2) { // alt-key - switch (evt.keyCode) { - case 37: // left arrow - if (isViewerInPresentationMode) { - PDFViewerApplication.pdfHistory.back(); - handled = true; - } - break; - case 39: // right arrow - if (isViewerInPresentationMode) { - PDFViewerApplication.pdfHistory.forward(); - handled = true; - } - break; - } - } - - if (ensureViewerFocused && !pdfViewer.containsElement(curElement)) { - // The page container is not focused, but a page navigation key has been - // pressed. Change the focus to the viewer container to make sure that - // navigation by keyboard works as expected. - pdfViewer.focus(); - } - - if (handled) { - evt.preventDefault(); - } -}); - -window.addEventListener('beforeprint', function beforePrint(evt) { - PDFViewerApplication.beforePrint(); -}); - -window.addEventListener('afterprint', function afterPrint(evt) { - PDFViewerApplication.afterPrint(); -}); - -(function animationStartedClosure() { - // The offsetParent is not set until the pdf.js iframe or object is visible. - // Waiting for first animation. - PDFViewerApplication.animationStartedPromise = new Promise( - function (resolve) { - window.requestAnimationFrame(resolve); - }); -})(); - diff --git a/public/plugins/simplemde-1.10.1/simplemde.min.css b/public/plugins/simplemde-1.10.1/simplemde.min.css deleted file mode 100644 index bc07d4379..000000000 --- a/public/plugins/simplemde-1.10.1/simplemde.min.css +++ /dev/null @@ -1,7 +0,0 @@ -/** - * simplemde v1.10.1 - * Copyright Next Step Webs, Inc. - * @link https://github.com/NextStepWebs/simplemde-markdown-editor - * @license MIT - */ -.CodeMirror{color:#000}.CodeMirror-lines{padding:4px 0}.CodeMirror pre{padding:0 4px}.CodeMirror-gutter-filler,.CodeMirror-scrollbar-filler{background-color:#fff}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid #000;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{width:auto;border:0;background:#7e7}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-animate-fat-cursor{width:auto;border:0;-webkit-animation:blink 1.06s steps(1) infinite;-moz-animation:blink 1.06s steps(1) infinite;animation:blink 1.06s steps(1) infinite;background-color:#7e7}@-moz-keyframes blink{50%{background-color:transparent}}@-webkit-keyframes blink{50%{background-color:transparent}}@keyframes blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-ruler{border-left:1px solid #ccc;position:absolute}.cm-s-default .cm-header{color:#00f}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-variable-3{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta,.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-invalidchar,.cm-s-default .cm-error{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0f0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#f22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:#fff}.CodeMirror-scroll{overflow:scroll!important;margin-bottom:-30px;margin-right:-30px;padding-bottom:30px;height:100%;outline:0;position:relative}.CodeMirror-sizer{position:relative;border-right:30px solid transparent}.CodeMirror-gutter-filler,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-vscrollbar{position:absolute;z-index:6;display:none}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-30px}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:0 0!important;border:none!important;-webkit-user-select:none;-moz-user-select:none;user-select:none}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror,.CodeMirror-scroll{min-height:300px}.CodeMirror pre{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;border-width:0;background:0 0;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent}.CodeMirror-wrap pre{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;left:0;right:0;top:0;bottom:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;overflow:auto}.CodeMirror-code{outline:0}.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber,.CodeMirror-scroll,.CodeMirror-sizer{-moz-box-sizing:content-box;box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-cursor{position:absolute}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}.CodeMirror-focused div.CodeMirror-cursors,div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected,.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background:#ffa;background:rgba(255,255,0,.4)}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:''}span.CodeMirror-selectedtext{background:0 0}.CodeMirror{height:auto;border:1px solid #ddd;border-bottom-left-radius:4px;border-bottom-right-radius:4px;padding:10px;font:inherit;z-index:1}.CodeMirror-fullscreen{background:#fff;position:fixed!important;top:50px;left:0;right:0;bottom:0;height:auto;z-index:9}.CodeMirror-sided{width:50%!important}.editor-toolbar{position:relative;opacity:.6;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;padding:0 10px;border-top:1px solid #bbb;border-left:1px solid #bbb;border-right:1px solid #bbb;border-top-left-radius:4px;border-top-right-radius:4px}.editor-toolbar:after,.editor-toolbar:before{display:block;content:' ';height:1px}.editor-toolbar:before{margin-bottom:8px}.editor-toolbar:after{margin-top:8px}.editor-toolbar:hover,.editor-wrapper input.title:focus,.editor-wrapper input.title:hover{opacity:.8}.editor-toolbar.fullscreen{width:100%;height:50px;overflow-x:auto;overflow-y:hidden;white-space:nowrap;padding-top:10px;padding-bottom:10px;box-sizing:border-box;background:#fff;border:0;position:fixed;top:0;left:0;opacity:1;z-index:9}.editor-toolbar.fullscreen::before{width:20px;height:50px;background:-moz-linear-gradient(left,rgba(255,255,255,1) 0,rgba(255,255,255,0) 100%);background:-webkit-gradient(linear,left top,right top,color-stop(0,rgba(255,255,255,1)),color-stop(100%,rgba(255,255,255,0)));background:-webkit-linear-gradient(left,rgba(255,255,255,1) 0,rgba(255,255,255,0) 100%);background:-o-linear-gradient(left,rgba(255,255,255,1) 0,rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left,rgba(255,255,255,1) 0,rgba(255,255,255,0) 100%);background:linear-gradient(to right,rgba(255,255,255,1) 0,rgba(255,255,255,0) 100%);position:fixed;top:0;left:0;margin:0;padding:0}.editor-toolbar.fullscreen::after{width:20px;height:50px;background:-moz-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,1) 100%);background:-webkit-gradient(linear,left top,right top,color-stop(0,rgba(255,255,255,0)),color-stop(100%,rgba(255,255,255,1)));background:-webkit-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,1) 100%);background:-o-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,1) 100%);background:-ms-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,1) 100%);background:linear-gradient(to right,rgba(255,255,255,0) 0,rgba(255,255,255,1) 100%);position:fixed;top:0;right:0;margin:0;padding:0}.editor-toolbar a{display:inline-block;text-align:center;text-decoration:none!important;color:#2c3e50!important;width:30px;height:30px;margin:0;border:1px solid transparent;border-radius:3px;cursor:pointer}.editor-toolbar a.active,.editor-toolbar a:hover{background:#fcfcfc;border-color:#95a5a6}.editor-toolbar a:before{line-height:30px}.editor-toolbar i.separator{display:inline-block;width:0;border-left:1px solid #d9d9d9;border-right:1px solid #fff;color:transparent;text-indent:-10px;margin:0 6px}.editor-toolbar a.fa-header-x:after{font-family:Arial,"Helvetica Neue",Helvetica,sans-serif;font-size:65%;vertical-align:text-bottom;position:relative;top:2px}.editor-toolbar a.fa-header-1:after{content:"1"}.editor-toolbar a.fa-header-2:after{content:"2"}.editor-toolbar a.fa-header-3:after{content:"3"}.editor-toolbar a.fa-header-bigger:after{content:"▲"}.editor-toolbar a.fa-header-smaller:after{content:"▼"}.editor-toolbar.disabled-for-preview a:not(.no-disable){pointer-events:none;background:#fff;border-color:transparent;text-shadow:inherit}@media only screen and (max-width:700px){.editor-toolbar a.no-mobile{display:none}}.editor-statusbar{padding:8px 10px;font-size:12px;color:#959694;text-align:right}.editor-statusbar span{display:inline-block;min-width:4em;margin-left:1em}.editor-preview,.editor-preview-side{padding:10px;background:#fafafa;overflow:auto;display:none;box-sizing:border-box}.editor-statusbar .lines:before{content:'lines: '}.editor-statusbar .words:before{content:'words: '}.editor-statusbar .characters:before{content:'characters: '}.editor-preview{position:absolute;width:100%;height:100%;top:0;left:0;z-index:7}.editor-preview-side{position:fixed;bottom:0;width:50%;top:50px;right:0;z-index:9;border:1px solid #ddd}.editor-preview-active,.editor-preview-active-side{display:block}.editor-preview-side>p,.editor-preview>p{margin-top:0}.editor-preview pre,.editor-preview-side pre{background:#eee;margin-bottom:10px}.editor-preview table td,.editor-preview table th,.editor-preview-side table td,.editor-preview-side table th{border:1px solid #ddd;padding:5px}.CodeMirror .CodeMirror-code .cm-tag{color:#63a35c}.CodeMirror .CodeMirror-code .cm-attribute{color:#795da3}.CodeMirror .CodeMirror-code .cm-string{color:#183691}.CodeMirror .CodeMirror-selected{background:#d9d9d9}.CodeMirror .CodeMirror-code .cm-header-1{font-size:200%;line-height:200%}.CodeMirror .CodeMirror-code .cm-header-2{font-size:160%;line-height:160%}.CodeMirror .CodeMirror-code .cm-header-3{font-size:125%;line-height:125%}.CodeMirror .CodeMirror-code .cm-header-4{font-size:110%;line-height:110%}.CodeMirror .CodeMirror-code .cm-comment{background:rgba(0,0,0,.05);border-radius:2px}.CodeMirror .CodeMirror-code .cm-link{color:#7f8c8d}.CodeMirror .CodeMirror-code .cm-url{color:#aab2b3}.CodeMirror .CodeMirror-code .cm-strikethrough{text-decoration:line-through}.CodeMirror .CodeMirror-placeholder{opacity:.5}.CodeMirror .cm-spell-error:not(.cm-url):not(.cm-comment):not(.cm-tag):not(.cm-word){background:rgba(255,0,0,.15)} \ No newline at end of file diff --git a/public/plugins/simplemde-1.10.1/simplemde.min.js b/public/plugins/simplemde-1.10.1/simplemde.min.js deleted file mode 100644 index 89bee7f35..000000000 --- a/public/plugins/simplemde-1.10.1/simplemde.min.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * simplemde v1.10.1 - * Copyright Next Step Webs, Inc. - * @link https://github.com/NextStepWebs/simplemde-markdown-editor - * @license MIT - */ -!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var t;t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,t.SimpleMDE=e()}}(function(){var e;return function t(e,n,r){function i(l,a){if(!n[l]){if(!e[l]){var s="function"==typeof require&&require;if(!a&&s)return s(l,!0);if(o)return o(l,!0);var c=new Error("Cannot find module '"+l+"'");throw c.code="MODULE_NOT_FOUND",c}var u=n[l]={exports:{}};e[l][0].call(u.exports,function(t){var n=e[l][1][t];return i(n?n:t)},u,u.exports,t,e,n,r)}return n[l].exports}for(var o="function"==typeof require&&require,l=0;lo;o++)for(var a=this.compoundRules[o],s=0,c=a.length;c>s;s++)this.compoundRuleCodes[a[s]]=[];"ONLYINCOMPOUND"in this.flags&&(this.compoundRuleCodes[this.flags.ONLYINCOMPOUND]=[]),this.dictionaryTable=this._parseDIC(n);for(var o in this.compoundRuleCodes)0==this.compoundRuleCodes[o].length&&delete this.compoundRuleCodes[o];for(var o=0,l=this.compoundRules.length;l>o;o++){for(var u=this.compoundRules[o],d="",s=0,c=u.length;c>s;s++){var h=u[s];d+=h in this.compoundRuleCodes?"("+this.compoundRuleCodes[h].join("|")+")":h}this.compoundRules[o]=new RegExp(d,"i")}}return this};o.prototype={load:function(e){for(var t in e)this[t]=e[t];return this},_readFile:function(e,t){t||(t="ISO8859-1");var n=new XMLHttpRequest;return n.open("GET",e,!1),n.overrideMimeType&&n.overrideMimeType("text/plain; charset="+t),n.send(null),n.responseText},_parseAFF:function(e){var t={};e=this._removeAffixComments(e);for(var n=e.split("\n"),r=0,i=n.length;i>r;r++){var o=n[r],l=o.split(/\s+/),a=l[0];if("PFX"==a||"SFX"==a){for(var s=l[1],c=l[2],u=parseInt(l[3],10),d=[],h=r+1,f=r+1+u;f>h;h++){var o=n[h],p=o.split(/\s+/),m=p[2],g=p[3].split("/"),v=g[0];"0"===v&&(v="");var y=this.parseRuleCodes(g[1]),x=p[4],b={};b.add=v,y.length>0&&(b.continuationClasses=y),"."!==x&&("SFX"===a?b.match=new RegExp(x+"$"):b.match=new RegExp("^"+x)),"0"!=m&&("SFX"===a?b.remove=new RegExp(m+"$"):b.remove=m),d.push(b)}t[s]={type:a,combineable:"Y"==c,entries:d},r+=u}else if("COMPOUNDRULE"===a){for(var u=parseInt(l[1],10),h=r+1,f=r+1+u;f>h;h++){var o=n[h],p=o.split(/\s+/);this.compoundRules.push(p[1])}r+=u}else if("REP"===a){var p=o.split(/\s+/);3===p.length&&this.replacementTable.push([p[1],p[2]])}else this.flags[a]=l[1]}return t},_removeAffixComments:function(e){return e=e.replace(/#.*$/gm,""),e=e.replace(/^\s\s*/m,"").replace(/\s\s*$/m,""),e=e.replace(/\n{2,}/g,"\n"),e=e.replace(/^\s\s*/,"").replace(/\s\s*$/,"")},_parseDIC:function(e){function t(e,t){e in r&&"object"==typeof r[e]||(r[e]=[]),r[e].push(t)}e=this._removeDicComments(e);for(var n=e.split("\n"),r={},i=1,o=n.length;o>i;i++){var l=n[i],a=l.split("/",2),s=a[0];if(a.length>1){var c=this.parseRuleCodes(a[1]);"NEEDAFFIX"in this.flags&&-1!=c.indexOf(this.flags.NEEDAFFIX)||t(s,c);for(var u=0,d=c.length;d>u;u++){var h=c[u],f=this.rules[h];if(f)for(var p=this._applyRule(s,f),m=0,g=p.length;g>m;m++){var v=p[m];if(t(v,[]),f.combineable)for(var y=u+1;d>y;y++){var x=c[y],b=this.rules[x];if(b&&b.combineable&&f.type!=b.type)for(var w=this._applyRule(v,b),k=0,C=w.length;C>k;k++){var S=w[k];t(S,[])}}}h in this.compoundRuleCodes&&this.compoundRuleCodes[h].push(s)}}else t(s.trim(),[])}return r},_removeDicComments:function(e){return e=e.replace(/^\t.*$/gm,"")},parseRuleCodes:function(e){if(!e)return[];if(!("FLAG"in this.flags))return e.split("");if("long"===this.flags.FLAG){for(var t=[],n=0,r=e.length;r>n;n+=2)t.push(e.substr(n,2));return t}return"num"===this.flags.FLAG?textCode.split(","):void 0},_applyRule:function(e,t){for(var n=t.entries,r=[],i=0,o=n.length;o>i;i++){var l=n[i];if(!l.match||e.match(l.match)){var a=e;if(l.remove&&(a=a.replace(l.remove,"")),"SFX"===t.type?a+=l.add:a=l.add+a,r.push(a),"continuationClasses"in l)for(var s=0,c=l.continuationClasses.length;c>s;s++){var u=this.rules[l.continuationClasses[s]];u&&(r=r.concat(this._applyRule(a,u)))}}}return r},check:function(e){var t=e.replace(/^\s\s*/,"").replace(/\s\s*$/,"");if(this.checkExact(t))return!0;if(t.toUpperCase()===t){var n=t[0]+t.substring(1).toLowerCase();if(this.hasFlag(n,"KEEPCASE"))return!1;if(this.checkExact(n))return!0}var r=t.toLowerCase();if(r!==t){if(this.hasFlag(r,"KEEPCASE"))return!1;if(this.checkExact(r))return!0}return!1},checkExact:function(e){var t=this.dictionaryTable[e];if("undefined"==typeof t){if("COMPOUNDMIN"in this.flags&&e.length>=this.flags.COMPOUNDMIN)for(var n=0,r=this.compoundRules.length;r>n;n++)if(e.match(this.compoundRules[n]))return!0;return!1}for(var n=0,r=t.length;r>n;n++)if(!this.hasFlag(e,"ONLYINCOMPOUND",t[n]))return!0;return!1},hasFlag:function(e,t,n){if(t in this.flags){if("undefined"==typeof n)var n=Array.prototype.concat.apply([],this.dictionaryTable[e]);if(n&&-1!==n.indexOf(this.flags[t]))return!0}return!1},alphabet:"",suggest:function(e,t){function n(e){for(var t=[],n=0,r=e.length;r>n;n++){for(var i=e[n],o=[],l=0,a=i.length+1;a>l;l++)o.push([i.substring(0,l),i.substring(l,i.length)]);for(var s=[],l=0,a=o.length;a>l;l++){var u=o[l];u[1]&&s.push(u[0]+u[1].substring(1))}for(var d=[],l=0,a=o.length;a>l;l++){var u=o[l];u[1].length>1&&d.push(u[0]+u[1][1]+u[1][0]+u[1].substring(2))}for(var h=[],l=0,a=o.length;a>l;l++){var u=o[l];if(u[1])for(var f=0,p=c.alphabet.length;p>f;f++)h.push(u[0]+c.alphabet[f]+u[1].substring(1))}for(var m=[],l=0,a=o.length;a>l;l++){var u=o[l];if(u[1])for(var f=0,p=c.alphabet.length;p>f;f++)h.push(u[0]+c.alphabet[f]+u[1])}t=t.concat(s),t=t.concat(d),t=t.concat(h),t=t.concat(m)}return t}function r(e){for(var t=[],n=0;nu;u++)a[u]in s?s[a[u]]+=1:s[a[u]]=1;var h=[];for(var u in s)h.push([u,s[u]]);h.sort(i).reverse();for(var f=[],u=0,d=Math.min(t,h.length);d>u;u++)c.hasFlag(h[u][0],"NOSUGGEST")||f.push(h[u][0]);return f}if(t||(t=5),this.check(e))return[];for(var o=0,l=this.replacementTable.length;l>o;o++){var a=this.replacementTable[o];if(-1!==e.indexOf(a[0])){var s=e.replace(a[0],a[1]);if(this.check(s))return[s]}}var c=this;return c.alphabet="abcdefghijklmnopqrstuvwxyz",i(e)}},i("undefined"!=typeof o?o:window.Typo)}).call(e,void 0,void 0,void 0,void 0,function(e){t.exports=e})}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],3:[function(t,n,r){!function(i){"object"==typeof r&&"object"==typeof n?i(t("../../lib/codemirror")):"function"==typeof e&&e.amd?e(["../../lib/codemirror"],i):i(CodeMirror)}(function(e){"use strict";function t(e){var t=e.getWrapperElement();e.state.fullScreenRestore={scrollTop:window.pageYOffset,scrollLeft:window.pageXOffset,width:t.style.width,height:t.style.height},t.style.width="",t.style.height="auto",t.className+=" CodeMirror-fullscreen",document.documentElement.style.overflow="hidden",e.refresh()}function n(e){var t=e.getWrapperElement();t.className=t.className.replace(/\s*CodeMirror-fullscreen\b/,""),document.documentElement.style.overflow="";var n=e.state.fullScreenRestore;t.style.width=n.width,t.style.height=n.height,window.scrollTo(n.scrollLeft,n.scrollTop),e.refresh()}e.defineOption("fullScreen",!1,function(r,i,o){o==e.Init&&(o=!1),!o!=!i&&(i?t(r):n(r))})})},{"../../lib/codemirror":7}],4:[function(t,n,r){!function(i){"object"==typeof r&&"object"==typeof n?i(t("../../lib/codemirror")):"function"==typeof e&&e.amd?e(["../../lib/codemirror"],i):i(CodeMirror)}(function(e){function t(e){e.state.placeholder&&(e.state.placeholder.parentNode.removeChild(e.state.placeholder),e.state.placeholder=null)}function n(e){t(e);var n=e.state.placeholder=document.createElement("pre");n.style.cssText="height: 0; overflow: visible",n.className="CodeMirror-placeholder";var r=e.getOption("placeholder");"string"==typeof r&&(r=document.createTextNode(r)),n.appendChild(r),e.display.lineSpace.insertBefore(n,e.display.lineSpace.firstChild)}function r(e){o(e)&&n(e)}function i(e){var r=e.getWrapperElement(),i=o(e);r.className=r.className.replace(" CodeMirror-empty","")+(i?" CodeMirror-empty":""),i?n(e):t(e)}function o(e){return 1===e.lineCount()&&""===e.getLine(0)}e.defineOption("placeholder","",function(n,o,l){var a=l&&l!=e.Init;if(o&&!a)n.on("blur",r),n.on("change",i),n.on("swapDoc",i),i(n);else if(!o&&a){n.off("blur",r),n.off("change",i),n.off("swapDoc",i),t(n);var s=n.getWrapperElement();s.className=s.className.replace(" CodeMirror-empty","")}o&&!n.hasFocus()&&r(n)})})},{"../../lib/codemirror":7}],5:[function(t,n,r){!function(i){"object"==typeof r&&"object"==typeof n?i(t("../../lib/codemirror")):"function"==typeof e&&e.amd?e(["../../lib/codemirror"],i):i(CodeMirror)}(function(e){"use strict";var t=/^(\s*)(>[> ]*|[*+-]\s|(\d+)([.)]))(\s*)/,n=/^(\s*)(>[> ]*|[*+-]|(\d+)[.)])(\s*)$/,r=/[*+-]\s/;e.commands.newlineAndIndentContinueMarkdownList=function(i){if(i.getOption("disableInput"))return e.Pass;for(var o=i.listSelections(),l=[],a=0;a")>=0?f[2]:parseInt(f[3],10)+1+f[4];l[a]="\n"+p+g+m}}i.replaceSelections(l)}})},{"../../lib/codemirror":7}],6:[function(t,n,r){!function(i){"object"==typeof r&&"object"==typeof n?i(t("../../lib/codemirror")):"function"==typeof e&&e.amd?e(["../../lib/codemirror"],i):i(CodeMirror)}(function(e){"use strict";e.overlayMode=function(t,n,r){return{startState:function(){return{base:e.startState(t),overlay:e.startState(n),basePos:0,baseCur:null,overlayPos:0,overlayCur:null,streamSeen:null}},copyState:function(r){return{base:e.copyState(t,r.base),overlay:e.copyState(n,r.overlay),basePos:r.basePos,baseCur:null,overlayPos:r.overlayPos,overlayCur:null}},token:function(e,i){return(e!=i.streamSeen||Math.min(i.basePos,i.overlayPos)bo&&setTimeout(function(){s.display.input.reset(!0)},20),_t(this),Xi(),bt(this),this.curOp.forceUpdate=!0,Yr(this,i),r.autofocus&&!Ao||s.hasFocus()?setTimeout(zi(vn,this),20):yn(this);for(var u in el)el.hasOwnProperty(u)&&el[u](this,r[u],tl);k(this),r.finishInit&&r.finishInit(this);for(var d=0;dbo&&(r.gutters.style.zIndex=-1,r.scroller.style.paddingRight=0),wo||go&&Ao||(r.scroller.draggable=!0),e&&(e.appendChild?e.appendChild(r.wrapper):e(r.wrapper)),r.viewFrom=r.viewTo=t.first,r.reportedViewFrom=r.reportedViewTo=t.first,r.view=[],r.renderedView=null,r.externalMeasured=null,r.viewOffset=0,r.lastWrapHeight=r.lastWrapWidth=0,r.updateLineNumbers=null,r.nativeBarWidth=r.barHeight=r.barWidth=0,r.scrollbarsClipped=!1,r.lineNumWidth=r.lineNumInnerWidth=r.lineNumChars=null,r.alignWidgets=!1,r.cachedCharWidth=r.cachedTextHeight=r.cachedPaddingH=null,r.maxLine=null,r.maxLineLength=0,r.maxLineChanged=!1,r.wheelDX=r.wheelDY=r.wheelStartX=r.wheelStartY=null,r.shift=!1,r.selForContextMenu=null,r.activeTouch=null,n.init(r)}function n(t){t.doc.mode=e.getMode(t.options,t.doc.modeOption),r(t)}function r(e){e.doc.iter(function(e){e.stateAfter&&(e.stateAfter=null),e.styles&&(e.styles=null)}),e.doc.frontier=e.doc.first,Re(e,100),e.state.modeGen++,e.curOp&&Dt(e)}function i(e){e.options.lineWrapping?(Zl(e.display.wrapper,"CodeMirror-wrap"),e.display.sizer.style.minWidth="",e.display.sizerWidth=null):(Yl(e.display.wrapper,"CodeMirror-wrap"),h(e)),l(e),Dt(e),at(e),setTimeout(function(){y(e)},100)}function o(e){var t=yt(e.display),n=e.options.lineWrapping,r=n&&Math.max(5,e.display.scroller.clientWidth/xt(e.display)-3);return function(i){if(kr(e.doc,i))return 0;var o=0;if(i.widgets)for(var l=0;lt.maxLineLength&&(t.maxLineLength=n,t.maxLine=e)})}function f(e){var t=Ii(e.gutters,"CodeMirror-linenumbers");-1==t&&e.lineNumbers?e.gutters=e.gutters.concat(["CodeMirror-linenumbers"]):t>-1&&!e.lineNumbers&&(e.gutters=e.gutters.slice(0),e.gutters.splice(t,1))}function p(e){var t=e.display,n=t.gutters.offsetWidth,r=Math.round(e.doc.height+Ue(e.display));return{clientHeight:t.scroller.clientHeight,viewHeight:t.wrapper.clientHeight,scrollWidth:t.scroller.scrollWidth,clientWidth:t.scroller.clientWidth,viewWidth:t.wrapper.clientWidth,barLeft:e.options.fixedGutter?n:0,docHeight:r,scrollHeight:r+$e(e)+t.barHeight,nativeBarWidth:t.nativeBarWidth,gutterWidth:n}}function m(e,t,n){this.cm=n;var r=this.vert=_i("div",[_i("div",null,null,"min-width: 1px")],"CodeMirror-vscrollbar"),i=this.horiz=_i("div",[_i("div",null,null,"height: 100%; min-height: 1px")],"CodeMirror-hscrollbar");e(r),e(i),Al(r,"scroll",function(){r.clientHeight&&t(r.scrollTop,"vertical")}),Al(i,"scroll",function(){i.clientWidth&&t(i.scrollLeft,"horizontal")}),this.checkedZeroWidth=!1,xo&&8>bo&&(this.horiz.style.minHeight=this.vert.style.minWidth="18px")}function g(){}function v(t){t.display.scrollbars&&(t.display.scrollbars.clear(),t.display.scrollbars.addClass&&Yl(t.display.wrapper,t.display.scrollbars.addClass)),t.display.scrollbars=new e.scrollbarModel[t.options.scrollbarStyle](function(e){t.display.wrapper.insertBefore(e,t.display.scrollbarFiller),Al(e,"mousedown",function(){t.state.focused&&setTimeout(function(){t.display.input.focus()},0)}),e.setAttribute("cm-not-content","true")},function(e,n){"horizontal"==n?on(t,e):rn(t,e)},t),t.display.scrollbars.addClass&&Zl(t.display.wrapper,t.display.scrollbars.addClass)}function y(e,t){t||(t=p(e));var n=e.display.barWidth,r=e.display.barHeight;x(e,t);for(var i=0;4>i&&n!=e.display.barWidth||r!=e.display.barHeight;i++)n!=e.display.barWidth&&e.options.lineWrapping&&H(e),x(e,p(e)),n=e.display.barWidth,r=e.display.barHeight}function x(e,t){var n=e.display,r=n.scrollbars.update(t);n.sizer.style.paddingRight=(n.barWidth=r.right)+"px",n.sizer.style.paddingBottom=(n.barHeight=r.bottom)+"px",n.heightForcer.style.borderBottom=r.bottom+"px solid transparent",r.right&&r.bottom?(n.scrollbarFiller.style.display="block",n.scrollbarFiller.style.height=r.bottom+"px",n.scrollbarFiller.style.width=r.right+"px"):n.scrollbarFiller.style.display="",r.bottom&&e.options.coverGutterNextToScrollbar&&e.options.fixedGutter?(n.gutterFiller.style.display="block",n.gutterFiller.style.height=r.bottom+"px",n.gutterFiller.style.width=t.gutterWidth+"px"):n.gutterFiller.style.display=""}function b(e,t,n){var r=n&&null!=n.top?Math.max(0,n.top):e.scroller.scrollTop;r=Math.floor(r-qe(e));var i=n&&null!=n.bottom?n.bottom:r+e.wrapper.clientHeight,o=ni(t,r),l=ni(t,i);if(n&&n.ensure){var a=n.ensure.from.line,s=n.ensure.to.line;o>a?(o=a,l=ni(t,ri(Zr(t,a))+e.wrapper.clientHeight)):Math.min(s,t.lastLine())>=l&&(o=ni(t,ri(Zr(t,s))-e.wrapper.clientHeight),l=s)}return{from:o,to:Math.max(l,o+1)}}function w(e){var t=e.display,n=t.view;if(t.alignWidgets||t.gutters.firstChild&&e.options.fixedGutter){for(var r=S(t)-t.scroller.scrollLeft+e.doc.scrollLeft,i=t.gutters.offsetWidth,o=r+"px",l=0;l=n.viewFrom&&t.visible.to<=n.viewTo&&(null==n.updateLineNumbers||n.updateLineNumbers>=n.viewTo)&&n.renderedView==n.view&&0==jt(e))return!1;k(e)&&(Ft(e),t.dims=I(e));var i=r.first+r.size,o=Math.max(t.visible.from-e.options.viewportMargin,r.first),l=Math.min(i,t.visible.to+e.options.viewportMargin);n.viewFroml&&n.viewTo-l<20&&(l=Math.min(i,n.viewTo)),Po&&(o=br(e.doc,o),l=wr(e.doc,l));var a=o!=n.viewFrom||l!=n.viewTo||n.lastWrapHeight!=t.wrapperHeight||n.lastWrapWidth!=t.wrapperWidth;Bt(e,o,l),n.viewOffset=ri(Zr(e.doc,n.viewFrom)),e.display.mover.style.top=n.viewOffset+"px";var s=jt(e);if(!a&&0==s&&!t.force&&n.renderedView==n.view&&(null==n.updateLineNumbers||n.updateLineNumbers>=n.viewTo))return!1;var c=Gi();return s>4&&(n.lineDiv.style.display="none"),E(e,n.updateLineNumbers,t.dims),s>4&&(n.lineDiv.style.display=""),n.renderedView=n.view,c&&Gi()!=c&&c.offsetHeight&&c.focus(),qi(n.cursorDiv),qi(n.selectionDiv),n.gutters.style.height=n.sizer.style.minHeight=0,a&&(n.lastWrapHeight=t.wrapperHeight,n.lastWrapWidth=t.wrapperWidth,Re(e,400)),n.updateLineNumbers=null,!0}function N(e,t){for(var n=t.viewport,r=!0;(r&&e.options.lineWrapping&&t.oldDisplayWidth!=Ve(e)||(n&&null!=n.top&&(n={top:Math.min(e.doc.height+Ue(e.display)-Ke(e),n.top)}),t.visible=b(e.display,e.doc,n),!(t.visible.from>=e.display.viewFrom&&t.visible.to<=e.display.viewTo)))&&M(e,t);r=!1){H(e);var i=p(e);Ee(e),O(e,i),y(e,i)}t.signal(e,"update",e),e.display.viewFrom==e.display.reportedViewFrom&&e.display.viewTo==e.display.reportedViewTo||(t.signal(e,"viewportChange",e,e.display.viewFrom,e.display.viewTo),e.display.reportedViewFrom=e.display.viewFrom,e.display.reportedViewTo=e.display.viewTo)}function A(e,t){var n=new L(e,t);if(M(e,n)){H(e),N(e,n);var r=p(e);Ee(e),O(e,r),y(e,r),n.finish()}}function O(e,t){e.display.sizer.style.minHeight=t.docHeight+"px",e.display.heightForcer.style.top=t.docHeight+"px",e.display.gutters.style.height=Math.max(t.docHeight+e.display.barHeight+$e(e),t.clientHeight)+"px"}function H(e){for(var t=e.display,n=t.lineDiv.offsetTop,r=0;rbo){var l=o.node.offsetTop+o.node.offsetHeight;i=l-n,n=l}else{var a=o.node.getBoundingClientRect();i=a.bottom-a.top}var s=o.line.height-i;if(2>i&&(i=yt(t)),(s>.001||-.001>s)&&(ei(o.line,i),W(o.line),o.rest))for(var c=0;c=t&&d.lineNumber;d.changes&&(Ii(d.changes,"gutter")>-1&&(h=!1),D(e,d,c,n)),h&&(qi(d.lineNumber),d.lineNumber.appendChild(document.createTextNode(C(e.options,c)))),a=d.node.nextSibling}else{var f=q(e,d,c,n);l.insertBefore(f,a)}c+=d.size}for(;a;)a=r(a)}function D(e,t,n,r){for(var i=0;ibo&&(e.node.style.zIndex=2)),e.node}function F(e){var t=e.bgClass?e.bgClass+" "+(e.line.bgClass||""):e.line.bgClass;if(t&&(t+=" CodeMirror-linebackground"),e.background)t?e.background.className=t:(e.background.parentNode.removeChild(e.background),e.background=null);else if(t){var n=P(e);e.background=n.insertBefore(_i("div",null,t),n.firstChild)}}function z(e,t){var n=e.display.externalMeasured;return n&&n.line==t.line?(e.display.externalMeasured=null,t.measure=n.measure,n.built):zr(e,t)}function R(e,t){var n=t.text.className,r=z(e,t);t.text==t.node&&(t.node=r.pre),t.text.parentNode.replaceChild(r.pre,t.text),t.text=r.pre,r.bgClass!=t.bgClass||r.textClass!=t.textClass?(t.bgClass=r.bgClass,t.textClass=r.textClass,B(t)):n&&(t.text.className=n)}function B(e){F(e),e.line.wrapClass?P(e).className=e.line.wrapClass:e.node!=e.text&&(e.node.className="");var t=e.textClass?e.textClass+" "+(e.line.textClass||""):e.line.textClass;e.text.className=t||""}function j(e,t,n,r){if(t.gutter&&(t.node.removeChild(t.gutter),t.gutter=null),t.gutterBackground&&(t.node.removeChild(t.gutterBackground),t.gutterBackground=null),t.line.gutterClass){var i=P(t);t.gutterBackground=_i("div",null,"CodeMirror-gutter-background "+t.line.gutterClass,"left: "+(e.options.fixedGutter?r.fixedPos:-r.gutterTotalWidth)+"px; width: "+r.gutterTotalWidth+"px"),i.insertBefore(t.gutterBackground,t.text)}var o=t.line.gutterMarkers;if(e.options.lineNumbers||o){var i=P(t),l=t.gutter=_i("div",null,"CodeMirror-gutter-wrapper","left: "+(e.options.fixedGutter?r.fixedPos:-r.gutterTotalWidth)+"px");if(e.display.input.setUneditable(l),i.insertBefore(l,t.text),t.line.gutterClass&&(l.className+=" "+t.line.gutterClass),!e.options.lineNumbers||o&&o["CodeMirror-linenumbers"]||(t.lineNumber=l.appendChild(_i("div",C(e.options,n),"CodeMirror-linenumber CodeMirror-gutter-elt","left: "+r.gutterLeft["CodeMirror-linenumbers"]+"px; width: "+e.display.lineNumInnerWidth+"px"))),o)for(var a=0;a1)if(Ro&&Ro.join("\n")==t){if(r.ranges.length%Ro.length==0){s=[];for(var c=0;c=0;c--){var u=r.ranges[c],d=u.from(),h=u.to();u.empty()&&(n&&n>0?d=Fo(d.line,d.ch-n):e.state.overwrite&&!l&&(h=Fo(h.line,Math.min(Zr(o,h.line).text.length,h.ch+Wi(a).length))));var f=e.curOp.updateInput,p={from:d,to:h,text:s?s[c%s.length]:a,origin:i||(l?"paste":e.state.cutIncoming?"cut":"+input")};Tn(e.doc,p),Si(e,"inputRead",e,p)}t&&!l&&J(e,t),zn(e),e.curOp.updateInput=f,e.curOp.typing=!0,e.state.pasteIncoming=e.state.cutIncoming=!1}function Q(e,t){var n=e.clipboardData&&e.clipboardData.getData("text/plain");return n?(e.preventDefault(),t.isReadOnly()||t.options.disableInput||At(t,function(){Z(t,n,0,null,"paste")}),!0):void 0}function J(e,t){if(e.options.electricChars&&e.options.smartIndent)for(var n=e.doc.sel,r=n.ranges.length-1;r>=0;r--){var i=n.ranges[r];if(!(i.head.ch>100||r&&n.ranges[r-1].head.line==i.head.line)){var o=e.getModeAt(i.head),l=!1;if(o.electricChars){for(var a=0;a-1){l=Bn(e,i.head.line,"smart");break}}else o.electricInput&&o.electricInput.test(Zr(e.doc,i.head.line).text.slice(0,i.head.ch))&&(l=Bn(e,i.head.line,"smart"));l&&Si(e,"electricInput",e,i.head.line)}}}function ee(e){for(var t=[],n=[],r=0;ri?c.map:u[i],l=0;li?e.line:e.rest[i]),d=o[l]+r;return(0>r||a!=t)&&(d=o[l+(r?1:0)]),Fo(s,d)}}}var i=e.text.firstChild,o=!1;if(!t||!Vl(i,t))return le(Fo(ti(e.line),0),!0);if(t==i&&(o=!0,t=i.childNodes[n],n=0,!t)){var l=e.rest?Wi(e.rest):e.line;return le(Fo(ti(l),l.text.length),o)}var a=3==t.nodeType?t:null,s=t;for(a||1!=t.childNodes.length||3!=t.firstChild.nodeType||(a=t.firstChild,n&&(n=a.nodeValue.length));s.parentNode!=i;)s=s.parentNode;var c=e.measure,u=c.maps,d=r(a,s,n);if(d)return le(d,o);for(var h=s.nextSibling,f=a?a.nodeValue.length-n:0;h;h=h.nextSibling){if(d=r(h,h.firstChild,0))return le(Fo(d.line,d.ch-f),o);f+=h.textContent.length}for(var p=s.previousSibling,f=n;p;p=p.previousSibling){if(d=r(p,p.firstChild,-1))return le(Fo(d.line,d.ch+f),o);f+=h.textContent.length}}function ce(e,t,n,r,i){function o(e){return function(t){return t.id==e}}function l(t){if(1==t.nodeType){var n=t.getAttribute("cm-text");if(null!=n)return""==n&&(n=t.textContent.replace(/\u200b/g,"")),void(a+=n);var u,d=t.getAttribute("cm-marker");if(d){var h=e.findMarks(Fo(r,0),Fo(i+1,0),o(+d));return void(h.length&&(u=h[0].find())&&(a+=Qr(e.doc,u.from,u.to).join(c)))}if("false"==t.getAttribute("contenteditable"))return;for(var f=0;f=0){var l=X(o.from(),i.from()),a=K(o.to(),i.to()),s=o.empty()?i.from()==i.head:o.from()==o.head;t>=r&&--t,e.splice(--r,2,new de(s?a:l,s?l:a))}}return new ue(e,t)}function fe(e,t){return new ue([new de(e,t||e)],0)}function pe(e,t){return Math.max(e.first,Math.min(t,e.first+e.size-1))}function me(e,t){if(t.linen?Fo(n,Zr(e,n).text.length):ge(t,Zr(e,t.line).text.length)}function ge(e,t){var n=e.ch;return null==n||n>t?Fo(e.line,t):0>n?Fo(e.line,0):e}function ve(e,t){return t>=e.first&&t=t.ch:a.to>t.ch))){if(i&&(Wl(s,"beforeCursorEnter"),s.explicitlyCleared)){if(o.markedSpans){--l;continue}break}if(!s.atomic)continue;if(n){var c,u=s.find(0>r?1:-1);if((0>r?s.inclusiveRight:s.inclusiveLeft)&&(u=Ie(e,u,-r,u&&u.line==t.line?o:null)),u&&u.line==t.line&&(c=zo(u,n))&&(0>r?0>c:c>0))return He(e,u,t,r,i)}var d=s.find(0>r?-1:1);return(0>r?s.inclusiveLeft:s.inclusiveRight)&&(d=Ie(e,d,r,d.line==t.line?o:null)),d?He(e,d,t,r,i):null}}return t}function We(e,t,n,r,i){var o=r||1,l=He(e,t,n,o,i)||!i&&He(e,t,n,o,!0)||He(e,t,n,-o,i)||!i&&He(e,t,n,-o,!0);return l?l:(e.cantEdit=!0,Fo(e.first,0))}function Ie(e,t,n,r){return 0>n&&0==t.ch?t.line>e.first?me(e,Fo(t.line-1)):null:n>0&&t.ch==(r||Zr(e,t.line)).text.length?t.line=e.display.viewTo||a.to().linet&&(t=0),t=Math.round(t),r=Math.round(r),a.appendChild(_i("div",null,"CodeMirror-selected","position: absolute; left: "+e+"px; top: "+t+"px; width: "+(null==n?u-e:n)+"px; height: "+(r-t)+"px"))}function i(t,n,i){function o(n,r){return ht(e,Fo(t,n),"div",d,r)}var a,s,d=Zr(l,t),h=d.text.length;return eo(ii(d),n||0,null==i?h:i,function(e,t,l){var d,f,p,m=o(e,"left");if(e==t)d=m,f=p=m.left;else{if(d=o(t-1,"right"),"rtl"==l){var g=m;m=d,d=g}f=m.left,p=d.right}null==n&&0==e&&(f=c),d.top-m.top>3&&(r(f,m.top,null,m.bottom),f=c,m.bottoms.bottom||d.bottom==s.bottom&&d.right>s.right)&&(s=d),c+1>f&&(f=c),r(f,d.top,p-f,d.bottom)}),{start:a,end:s}}var o=e.display,l=e.doc,a=document.createDocumentFragment(),s=Ge(e.display),c=s.left,u=Math.max(o.sizerWidth,Ve(e)-o.sizer.offsetLeft)-s.right,d=t.from(),h=t.to();if(d.line==h.line)i(d.line,d.ch,h.ch);else{var f=Zr(l,d.line),p=Zr(l,h.line),m=yr(f)==yr(p),g=i(d.line,d.ch,m?f.text.length+1:null).end,v=i(h.line,m?0:null,h.ch).start;m&&(g.top0?t.blinker=setInterval(function(){t.cursorDiv.style.visibility=(n=!n)?"":"hidden"},e.options.cursorBlinkRate):e.options.cursorBlinkRate<0&&(t.cursorDiv.style.visibility="hidden")}}function Re(e,t){e.doc.mode.startState&&e.doc.frontier=e.display.viewTo)){var n=+new Date+e.options.workTime,r=al(t.mode,_e(e,t.frontier)),i=[];t.iter(t.frontier,Math.min(t.first+t.size,e.display.viewTo+500),function(o){if(t.frontier>=e.display.viewFrom){var l=o.styles,a=o.text.length>e.options.maxHighlightLength,s=Er(e,o,a?al(t.mode,r):r,!0);o.styles=s.styles;var c=o.styleClasses,u=s.classes;u?o.styleClasses=u:c&&(o.styleClasses=null);for(var d=!l||l.length!=o.styles.length||c!=u&&(!c||!u||c.bgClass!=u.bgClass||c.textClass!=u.textClass),h=0;!d&&hn?(Re(e,e.options.workDelay),!0):void 0}),i.length&&At(e,function(){for(var t=0;tl;--a){if(a<=o.first)return o.first;var s=Zr(o,a-1);if(s.stateAfter&&(!n||a<=o.frontier))return a;var c=Rl(s.text,null,e.options.tabSize);(null==i||r>c)&&(i=a-1,r=c)}return i}function _e(e,t,n){var r=e.doc,i=e.display;if(!r.mode.startState)return!0;var o=je(e,t,n),l=o>r.first&&Zr(r,o-1).stateAfter;return l=l?al(r.mode,l):sl(r.mode),r.iter(o,t,function(n){Pr(e,n.text,l);var a=o==t-1||o%5==0||o>=i.viewFrom&&o2&&o.push((s.bottom+c.top)/2-n.top)}}o.push(n.bottom-n.top)}}function Ye(e,t,n){if(e.line==t)return{map:e.measure.map,cache:e.measure.cache};for(var r=0;rn)return{map:e.measure.maps[r],cache:e.measure.caches[r],before:!0}}function Ze(e,t){t=yr(t);var n=ti(t),r=e.display.externalMeasured=new It(e.doc,t,n);r.lineN=n;var i=r.built=zr(e,r);return r.text=i.pre,Ui(e.display.lineMeasure,i.pre),r}function Qe(e,t,n,r){return tt(e,et(e,t),n,r)}function Je(e,t){if(t>=e.display.viewFrom&&t=n.lineN&&tt?(i=0,o=1,l="left"):c>t?(i=t-s,o=i+1):(a==e.length-3||t==c&&e[a+3]>t)&&(o=c-s,i=o-1,t>=c&&(l="right")),null!=i){if(r=e[a+2],s==c&&n==(r.insertLeft?"left":"right")&&(l=n),"left"==n&&0==i)for(;a&&e[a-2]==e[a-3]&&e[a-1].insertLeft;)r=e[(a-=3)+2],l="left";if("right"==n&&i==c-s)for(;au;u++){for(;a&&ji(t.line.text.charAt(o.coverStart+a));)--a;for(;o.coverStart+sbo&&0==a&&s==o.coverEnd-o.coverStart)i=l.parentNode.getBoundingClientRect();else if(xo&&e.options.lineWrapping){var d=ql(l,a,s).getClientRects();i=d.length?d["right"==r?d.length-1:0]:qo}else i=ql(l,a,s).getBoundingClientRect()||qo;if(i.left||i.right||0==a)break;s=a,a-=1,c="right"}xo&&11>bo&&(i=it(e.display.measure,i))}else{a>0&&(c=r="right");var d;i=e.options.lineWrapping&&(d=l.getClientRects()).length>1?d["right"==r?d.length-1:0]:l.getBoundingClientRect()}if(xo&&9>bo&&!a&&(!i||!i.left&&!i.right)){var h=l.parentNode.getClientRects()[0];i=h?{left:h.left,right:h.left+xt(e.display),top:h.top,bottom:h.bottom}:qo}for(var f=i.top-t.rect.top,p=i.bottom-t.rect.top,m=(f+p)/2,g=t.view.measure.heights,u=0;un.from?l(e-1):l(e,r)}r=r||Zr(e.doc,t.line),i||(i=et(e,r));var s=ii(r),c=t.ch;if(!s)return l(c);var u=co(s,c),d=a(c,u);return null!=oa&&(d.other=a(c,oa)),d}function pt(e,t){var n=0,t=me(e.doc,t);e.options.lineWrapping||(n=xt(e.display)*t.ch);var r=Zr(e.doc,t.line),i=ri(r)+qe(e.display);return{left:n,right:n,top:i,bottom:i+r.height}}function mt(e,t,n,r){var i=Fo(e,t);return i.xRel=r,n&&(i.outside=!0),i}function gt(e,t,n){var r=e.doc;if(n+=e.display.viewOffset,0>n)return mt(r.first,0,!0,-1);var i=ni(r,n),o=r.first+r.size-1;if(i>o)return mt(r.first+r.size-1,Zr(r,o).text.length,!0,1);0>t&&(t=0);for(var l=Zr(r,i);;){var a=vt(e,l,i,t,n),s=gr(l),c=s&&s.find(0,!0);if(!s||!(a.ch>c.from.ch||a.ch==c.from.ch&&a.xRel>0))return a;i=ti(l=c.to.line)}}function vt(e,t,n,r,i){function o(r){var i=ft(e,Fo(n,r),"line",t,c);return a=!0,l>i.bottom?i.left-s:lg)return mt(n,f,v,1);for(;;){if(u?f==h||f==ho(t,h,1):1>=f-h){for(var y=p>r||g-r>=r-p?h:f,x=r-(y==h?p:g);ji(t.text.charAt(y));)++y;var b=mt(n,y,y==h?m:v,-1>x?-1:x>1?1:0);return b}var w=Math.ceil(d/2),k=h+w;if(u){k=h;for(var C=0;w>C;++C)k=ho(t,k,1)}var S=o(k);S>r?(f=k,g=S,(v=a)&&(g+=1e3),d=w):(h=k,p=S,m=a,d-=w)}}function yt(e){if(null!=e.cachedTextHeight)return e.cachedTextHeight;if(null==Bo){Bo=_i("pre");for(var t=0;49>t;++t)Bo.appendChild(document.createTextNode("x")),Bo.appendChild(_i("br"));Bo.appendChild(document.createTextNode("x"))}Ui(e.measure,Bo);var n=Bo.offsetHeight/50;return n>3&&(e.cachedTextHeight=n),qi(e.measure),n||1}function xt(e){if(null!=e.cachedCharWidth)return e.cachedCharWidth;var t=_i("span","xxxxxxxxxx"),n=_i("pre",[t]);Ui(e.measure,n);var r=t.getBoundingClientRect(),i=(r.right-r.left)/10;return i>2&&(e.cachedCharWidth=i),i||10}function bt(e){e.curOp={cm:e,viewChanged:!1,startHeight:e.doc.height,forceUpdate:!1,updateInput:null,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,focus:!1,id:++Go},Uo?Uo.ops.push(e.curOp):e.curOp.ownsGroup=Uo={ops:[e.curOp],delayedCallbacks:[]}}function wt(e){var t=e.delayedCallbacks,n=0;do{for(;n=n.viewTo)||n.maxLineChanged&&t.options.lineWrapping,e.update=e.mustUpdate&&new L(t,e.mustUpdate&&{top:e.scrollTop,ensure:e.scrollToPos},e.forceUpdate)}function Lt(e){e.updatedDisplay=e.mustUpdate&&M(e.cm,e.update)}function Tt(e){var t=e.cm,n=t.display;e.updatedDisplay&&H(t),e.barMeasure=p(t),n.maxLineChanged&&!t.options.lineWrapping&&(e.adjustWidthTo=Qe(t,n.maxLine,n.maxLine.text.length).left+3,t.display.sizerWidth=e.adjustWidthTo,e.barMeasure.scrollWidth=Math.max(n.scroller.clientWidth,n.sizer.offsetLeft+e.adjustWidthTo+$e(t)+t.display.barWidth),e.maxScrollLeft=Math.max(0,n.sizer.offsetLeft+e.adjustWidthTo-Ve(t))),(e.updatedDisplay||e.selectionChanged)&&(e.preparedSelection=n.input.prepareSelection())}function Mt(e){var t=e.cm;null!=e.adjustWidthTo&&(t.display.sizer.style.minWidth=e.adjustWidthTo+"px",e.maxScrollLefto;o=r){var l=new It(e.doc,Zr(e.doc,o),o);r=o+l.size,i.push(l)}return i}function Dt(e,t,n,r){null==t&&(t=e.doc.first),null==n&&(n=e.doc.first+e.doc.size),r||(r=0);var i=e.display;if(r&&nt)&&(i.updateLineNumbers=t),e.curOp.viewChanged=!0,t>=i.viewTo)Po&&br(e.doc,t)i.viewFrom?Ft(e):(i.viewFrom+=r,i.viewTo+=r);else if(t<=i.viewFrom&&n>=i.viewTo)Ft(e);else if(t<=i.viewFrom){var o=Rt(e,n,n+r,1);o?(i.view=i.view.slice(o.index),i.viewFrom=o.lineN,i.viewTo+=r):Ft(e)}else if(n>=i.viewTo){var o=Rt(e,t,t,-1);o?(i.view=i.view.slice(0,o.index),i.viewTo=o.lineN):Ft(e)}else{var l=Rt(e,t,t,-1),a=Rt(e,n,n+r,1);l&&a?(i.view=i.view.slice(0,l.index).concat(Et(e,l.lineN,a.lineN)).concat(i.view.slice(a.index)),i.viewTo+=r):Ft(e)}var s=i.externalMeasured;s&&(n=i.lineN&&t=r.viewTo)){var o=r.view[zt(e,t)];if(null!=o.node){var l=o.changes||(o.changes=[]);-1==Ii(l,n)&&l.push(n)}}}function Ft(e){e.display.viewFrom=e.display.viewTo=e.doc.first,e.display.view=[],e.display.viewOffset=0}function zt(e,t){if(t>=e.display.viewTo)return null;if(t-=e.display.viewFrom,0>t)return null;for(var n=e.display.view,r=0;rt)return r}function Rt(e,t,n,r){var i,o=zt(e,t),l=e.display.view;if(!Po||n==e.doc.first+e.doc.size)return{index:o,lineN:n};for(var a=0,s=e.display.viewFrom;o>a;a++)s+=l[a].size;if(s!=t){if(r>0){if(o==l.length-1)return null;i=s+l[o].size-t,o++}else i=s-t;t+=i,n+=i}for(;br(e.doc,n)!=n;){if(o==(0>r?0:l.length-1))return null;n+=r*l[o-(0>r?1:0)].size,o+=r}return{index:o,lineN:n}}function Bt(e,t,n){var r=e.display,i=r.view;0==i.length||t>=r.viewTo||n<=r.viewFrom?(r.view=Et(e,t,n),r.viewFrom=t):(r.viewFrom>t?r.view=Et(e,t,r.viewFrom).concat(r.view):r.viewFromn&&(r.view=r.view.slice(0,zt(e,n)))),r.viewTo=n}function jt(e){for(var t=e.display.view,n=0,r=0;r400}var i=e.display;Al(i.scroller,"mousedown",Ot(e,Vt)),xo&&11>bo?Al(i.scroller,"dblclick",Ot(e,function(t){if(!Ti(e,t)){var n=$t(e,t);if(n&&!Qt(e,t)&&!Gt(e.display,t)){Tl(t);var r=e.findWordAt(n);be(e.doc,r.anchor,r.head)}}})):Al(i.scroller,"dblclick",function(t){Ti(e,t)||Tl(t)}),Eo||Al(i.scroller,"contextmenu",function(t){xn(e,t)});var o,l={end:0};Al(i.scroller,"touchstart",function(t){if(!Ti(e,t)&&!n(t)){clearTimeout(o);var r=+new Date;i.activeTouch={start:r,moved:!1,prev:r-l.end<=300?l:null},1==t.touches.length&&(i.activeTouch.left=t.touches[0].pageX,i.activeTouch.top=t.touches[0].pageY)}}),Al(i.scroller,"touchmove",function(){i.activeTouch&&(i.activeTouch.moved=!0)}),Al(i.scroller,"touchend",function(n){var o=i.activeTouch;if(o&&!Gt(i,n)&&null!=o.left&&!o.moved&&new Date-o.start<300){var l,a=e.coordsChar(i.activeTouch,"page");l=!o.prev||r(o,o.prev)?new de(a,a):!o.prev.prev||r(o,o.prev.prev)?e.findWordAt(a):new de(Fo(a.line,0),me(e.doc,Fo(a.line+1,0))),e.setSelection(l.anchor,l.head),e.focus(),Tl(n)}t()}),Al(i.scroller,"touchcancel",t),Al(i.scroller,"scroll",function(){i.scroller.clientHeight&&(rn(e,i.scroller.scrollTop),on(e,i.scroller.scrollLeft,!0),Wl(e,"scroll",e))}),Al(i.scroller,"mousewheel",function(t){ln(e,t)}),Al(i.scroller,"DOMMouseScroll",function(t){ln(e,t)}),Al(i.wrapper,"scroll",function(){i.wrapper.scrollTop=i.wrapper.scrollLeft=0}),i.dragFunctions={enter:function(t){Ti(e,t)||Nl(t)},over:function(t){Ti(e,t)||(tn(e,t),Nl(t))},start:function(t){en(e,t)},drop:Ot(e,Jt),leave:function(){nn(e)}};var a=i.input.getField();Al(a,"keyup",function(t){pn.call(e,t)}),Al(a,"keydown",Ot(e,hn)),Al(a,"keypress",Ot(e,mn)),Al(a,"focus",zi(vn,e)),Al(a,"blur",zi(yn,e))}function qt(t,n,r){var i=r&&r!=e.Init;if(!n!=!i){var o=t.display.dragFunctions,l=n?Al:Hl;l(t.display.scroller,"dragstart",o.start),l(t.display.scroller,"dragenter",o.enter),l(t.display.scroller,"dragover",o.over),l(t.display.scroller,"dragleave",o.leave),l(t.display.scroller,"drop",o.drop)}}function Ut(e){var t=e.display;t.lastWrapHeight==t.wrapper.clientHeight&&t.lastWrapWidth==t.wrapper.clientWidth||(t.cachedCharWidth=t.cachedTextHeight=t.cachedPaddingH=null,t.scrollbarsClipped=!1,e.setSize())}function Gt(e,t){for(var n=wi(t);n!=e.wrapper;n=n.parentNode)if(!n||1==n.nodeType&&"true"==n.getAttribute("cm-ignore-events")||n.parentNode==e.sizer&&n!=e.mover)return!0}function $t(e,t,n,r){var i=e.display;if(!n&&"true"==wi(t).getAttribute("cm-not-content"))return null;var o,l,a=i.lineSpace.getBoundingClientRect();try{o=t.clientX-a.left,l=t.clientY-a.top}catch(t){return null}var s,c=gt(e,o,l);if(r&&1==c.xRel&&(s=Zr(e.doc,c.line).text).length==c.ch){var u=Rl(s,s.length,e.options.tabSize)-s.length;c=Fo(c.line,Math.max(0,Math.round((o-Ge(e.display).left)/xt(e.display))-u))}return c}function Vt(e){var t=this,n=t.display;if(!(Ti(t,e)||n.activeTouch&&n.input.supportsTouch())){if(n.shift=e.shiftKey,Gt(n,e))return void(wo||(n.scroller.draggable=!1,setTimeout(function(){n.scroller.draggable=!0},100)));if(!Qt(t,e)){var r=$t(t,e);switch(window.focus(),ki(e)){case 1:t.state.selectingText?t.state.selectingText(e):r?Kt(t,e,r):wi(e)==n.scroller&&Tl(e);break;case 2:wo&&(t.state.lastMiddleDown=+new Date),r&&be(t.doc,r),setTimeout(function(){n.input.focus()},20),Tl(e);break;case 3:Eo?xn(t,e):gn(t)}}}}function Kt(e,t,n){xo?setTimeout(zi(Y,e),0):e.curOp.focus=Gi();var r,i=+new Date;_o&&_o.time>i-400&&0==zo(_o.pos,n)?r="triple":jo&&jo.time>i-400&&0==zo(jo.pos,n)?(r="double",_o={time:i,pos:n}):(r="single",jo={time:i,pos:n});var o,l=e.doc.sel,a=Oo?t.metaKey:t.ctrlKey;e.options.dragDrop&&Jl&&!e.isReadOnly()&&"single"==r&&(o=l.contains(n))>-1&&(zo((o=l.ranges[o]).from(),n)<0||n.xRel>0)&&(zo(o.to(),n)>0||n.xRel<0)?Xt(e,t,n,a):Yt(e,t,n,r,a)}function Xt(e,t,n,r){var i=e.display,o=+new Date,l=Ot(e,function(a){wo&&(i.scroller.draggable=!1),e.state.draggingText=!1,Hl(document,"mouseup",l),Hl(i.scroller,"drop",l),Math.abs(t.clientX-a.clientX)+Math.abs(t.clientY-a.clientY)<10&&(Tl(a),!r&&+new Date-200=p;p++){var v=Zr(c,p).text,y=Bl(v,s,o);s==f?i.push(new de(Fo(p,y),Fo(p,y))):v.length>y&&i.push(new de(Fo(p,y),Fo(p,Bl(v,f,o))))}i.length||i.push(new de(n,n)),Te(c,he(h.ranges.slice(0,d).concat(i),d),{origin:"*mouse",scroll:!1}),e.scrollIntoView(t)}else{var x=u,b=x.anchor,w=t;if("single"!=r){if("double"==r)var k=e.findWordAt(t);else var k=new de(Fo(t.line,0),me(c,Fo(t.line+1,0)));zo(k.anchor,b)>0?(w=k.head,b=X(x.from(),k.anchor)):(w=k.anchor,b=K(x.to(),k.head))}var i=h.ranges.slice(0);i[d]=new de(me(c,b),w),Te(c,he(i,d),Fl)}}function l(t){var n=++y,i=$t(e,t,!0,"rect"==r);if(i)if(0!=zo(i,g)){e.curOp.focus=Gi(),o(i);var a=b(s,c);(i.line>=a.to||i.linev.bottom?20:0;u&&setTimeout(Ot(e,function(){y==n&&(s.scroller.scrollTop+=u,l(t))}),50)}}function a(t){e.state.selectingText=!1,y=1/0,Tl(t),s.input.focus(),Hl(document,"mousemove",x),Hl(document,"mouseup",w),c.history.lastSelOrigin=null}var s=e.display,c=e.doc;Tl(t);var u,d,h=c.sel,f=h.ranges;if(i&&!t.shiftKey?(d=c.sel.contains(n),u=d>-1?f[d]:new de(n,n)):(u=c.sel.primary(),d=c.sel.primIndex),t.altKey)r="rect",i||(u=new de(n,n)),n=$t(e,t,!0,!0),d=-1;else if("double"==r){var p=e.findWordAt(n);u=e.display.shift||c.extend?xe(c,u,p.anchor,p.head):p}else if("triple"==r){var m=new de(Fo(n.line,0),me(c,Fo(n.line+1,0)));u=e.display.shift||c.extend?xe(c,u,m.anchor,m.head):m}else u=xe(c,u,n);i?-1==d?(d=f.length,Te(c,he(f.concat([u]),d),{scroll:!1,origin:"*mouse"})):f.length>1&&f[d].empty()&&"single"==r&&!t.shiftKey?(Te(c,he(f.slice(0,d).concat(f.slice(d+1)),0),{scroll:!1,origin:"*mouse"}),h=c.sel):ke(c,d,u,Fl):(d=0,Te(c,new ue([u],0),Fl),h=c.sel);var g=n,v=s.wrapper.getBoundingClientRect(),y=0,x=Ot(e,function(e){ki(e)?l(e):a(e)}),w=Ot(e,a);e.state.selectingText=w,Al(document,"mousemove",x),Al(document,"mouseup",w)}function Zt(e,t,n,r){try{var i=t.clientX,o=t.clientY}catch(t){return!1}if(i>=Math.floor(e.display.gutters.getBoundingClientRect().right))return!1;r&&Tl(t);var l=e.display,a=l.lineDiv.getBoundingClientRect(); -if(o>a.bottom||!Ni(e,n))return bi(t);o-=a.top-l.viewOffset;for(var s=0;s=i){var u=ni(e.doc,o),d=e.options.gutters[s];return Wl(e,n,e,u,d,t),bi(t)}}}function Qt(e,t){return Zt(e,t,"gutterClick",!0)}function Jt(e){var t=this;if(nn(t),!Ti(t,e)&&!Gt(t.display,e)){Tl(e),xo&&($o=+new Date);var n=$t(t,e,!0),r=e.dataTransfer.files;if(n&&!t.isReadOnly())if(r&&r.length&&window.FileReader&&window.File)for(var i=r.length,o=Array(i),l=0,a=function(e,r){if(!t.options.allowDropFileTypes||-1!=Ii(t.options.allowDropFileTypes,e.type)){var a=new FileReader;a.onload=Ot(t,function(){var e=a.result;if(/[\x00-\x08\x0e-\x1f]{2}/.test(e)&&(e=""),o[r]=e,++l==i){n=me(t.doc,n);var s={from:n,to:n,text:t.doc.splitLines(o.join(t.doc.lineSeparator())),origin:"paste"};Tn(t.doc,s),Le(t.doc,fe(n,Qo(s)))}}),a.readAsText(e)}},s=0;i>s;++s)a(r[s],s);else{if(t.state.draggingText&&t.doc.sel.contains(n)>-1)return t.state.draggingText(e),void setTimeout(function(){t.display.input.focus()},20);try{var o=e.dataTransfer.getData("Text");if(o){if(t.state.draggingText&&!(Oo?e.altKey:e.ctrlKey))var c=t.listSelections();if(Me(t.doc,fe(n,n)),c)for(var s=0;sl.clientWidth,s=l.scrollHeight>l.clientHeight;if(r&&a||i&&s){if(i&&Oo&&wo)e:for(var c=t.target,u=o.view;c!=l;c=c.parentNode)for(var d=0;dh?f=Math.max(0,f+h-50):p=Math.min(e.doc.height,p+h+50),A(e,{top:f,bottom:p})}20>Vo&&(null==o.wheelStartX?(o.wheelStartX=l.scrollLeft,o.wheelStartY=l.scrollTop,o.wheelDX=r,o.wheelDY=i,setTimeout(function(){if(null!=o.wheelStartX){var e=l.scrollLeft-o.wheelStartX,t=l.scrollTop-o.wheelStartY,n=t&&o.wheelDY&&t/o.wheelDY||e&&o.wheelDX&&e/o.wheelDX;o.wheelStartX=o.wheelStartY=null,n&&(Ko=(Ko*Vo+n)/(Vo+1),++Vo)}},200)):(o.wheelDX+=r,o.wheelDY+=i))}}function an(e,t,n){if("string"==typeof t&&(t=cl[t],!t))return!1;e.display.input.ensurePolled();var r=e.display.shift,i=!1;try{e.isReadOnly()&&(e.state.suppressEdits=!0),n&&(e.display.shift=!1),i=t(e)!=Dl}finally{e.display.shift=r,e.state.suppressEdits=!1}return i}function sn(e,t,n){for(var r=0;rbo&&27==e.keyCode&&(e.returnValue=!1);var n=e.keyCode;t.display.shift=16==n||e.shiftKey;var r=un(t,e);So&&(Zo=r?n:null,!r&&88==n&&!na&&(Oo?e.metaKey:e.ctrlKey)&&t.replaceSelection("",null,"cut")),18!=n||/\bCodeMirror-crosshair\b/.test(t.display.lineDiv.className)||fn(t)}}function fn(e){function t(e){18!=e.keyCode&&e.altKey||(Yl(n,"CodeMirror-crosshair"),Hl(document,"keyup",t),Hl(document,"mouseover",t))}var n=e.display.lineDiv;Zl(n,"CodeMirror-crosshair"),Al(document,"keyup",t),Al(document,"mouseover",t)}function pn(e){16==e.keyCode&&(this.doc.sel.shift=!1),Ti(this,e)}function mn(e){var t=this;if(!(Gt(t.display,e)||Ti(t,e)||e.ctrlKey&&!e.altKey||Oo&&e.metaKey)){var n=e.keyCode,r=e.charCode;if(So&&n==Zo)return Zo=null,void Tl(e);if(!So||e.which&&!(e.which<10)||!un(t,e)){var i=String.fromCharCode(null==r?n:r);dn(t,e,i)||t.display.input.onKeyPress(e)}}}function gn(e){e.state.delayingBlurEvent=!0,setTimeout(function(){e.state.delayingBlurEvent&&(e.state.delayingBlurEvent=!1,yn(e))},100)}function vn(e){e.state.delayingBlurEvent&&(e.state.delayingBlurEvent=!1),"nocursor"!=e.options.readOnly&&(e.state.focused||(Wl(e,"focus",e),e.state.focused=!0,Zl(e.display.wrapper,"CodeMirror-focused"),e.curOp||e.display.selForContextMenu==e.doc.sel||(e.display.input.reset(),wo&&setTimeout(function(){e.display.input.reset(!0)},20)),e.display.input.receivedFocus()),ze(e))}function yn(e){e.state.delayingBlurEvent||(e.state.focused&&(Wl(e,"blur",e),e.state.focused=!1,Yl(e.display.wrapper,"CodeMirror-focused")),clearInterval(e.display.blinker),setTimeout(function(){e.state.focused||(e.display.shift=!1)},150))}function xn(e,t){Gt(e.display,t)||bn(e,t)||Ti(e,t,"contextmenu")||e.display.input.onContextMenu(t)}function bn(e,t){return Ni(e,"gutterContextMenu")?Zt(e,t,"gutterContextMenu",!1):!1}function wn(e,t){if(zo(e,t.from)<0)return e;if(zo(e,t.to)<=0)return Qo(t);var n=e.line+t.text.length-(t.to.line-t.from.line)-1,r=e.ch;return e.line==t.to.line&&(r+=Qo(t).ch-t.to.ch),Fo(n,r)}function kn(e,t){for(var n=[],r=0;r=0;--i)Mn(e,{from:r[i].from,to:r[i].to,text:i?[""]:t.text});else Mn(e,t)}}function Mn(e,t){if(1!=t.text.length||""!=t.text[0]||0!=zo(t.from,t.to)){var n=kn(e,t);ci(e,t,n,e.cm?e.cm.curOp.id:NaN),On(e,t,n,or(e,t));var r=[];Xr(e,function(e,n){n||-1!=Ii(r,e.history)||(xi(e.history,t),r.push(e.history)),On(e,t,null,or(e,t))})}}function Nn(e,t,n){if(!e.cm||!e.cm.state.suppressEdits){for(var r,i=e.history,o=e.sel,l="undo"==t?i.done:i.undone,a="undo"==t?i.undone:i.done,s=0;s=0;--s){var d=r.changes[s];if(d.origin=t,u&&!Ln(e,d,!1))return void(l.length=0);c.push(li(e,d));var h=s?kn(e,d):Wi(l);On(e,d,h,ar(e,d)),!s&&e.cm&&e.cm.scrollIntoView({from:d.from,to:Qo(d)});var f=[];Xr(e,function(e,t){t||-1!=Ii(f,e.history)||(xi(e.history,d),f.push(e.history)),On(e,d,null,ar(e,d))})}}}}function An(e,t){if(0!=t&&(e.first+=t,e.sel=new ue(Ei(e.sel.ranges,function(e){return new de(Fo(e.anchor.line+t,e.anchor.ch),Fo(e.head.line+t,e.head.ch))}),e.sel.primIndex),e.cm)){Dt(e.cm,e.first,e.first-t,t);for(var n=e.cm.display,r=n.viewFrom;re.lastLine())){if(t.from.lineo&&(t={from:t.from,to:Fo(o,Zr(e,o).text.length),text:[t.text[0]],origin:t.origin}),t.removed=Qr(e,t.from,t.to),n||(n=kn(e,t)),e.cm?Hn(e.cm,t,r):$r(e,t,r),Me(e,n,Pl)}}function Hn(e,t,n){var r=e.doc,i=e.display,l=t.from,a=t.to,s=!1,c=l.line;e.options.lineWrapping||(c=ti(yr(Zr(r,l.line))),r.iter(c,a.line+1,function(e){return e==i.maxLine?(s=!0,!0):void 0})),r.sel.contains(t.from,t.to)>-1&&Mi(e),$r(r,t,n,o(e)),e.options.lineWrapping||(r.iter(c,l.line+t.text.length,function(e){var t=d(e);t>i.maxLineLength&&(i.maxLine=e,i.maxLineLength=t,i.maxLineChanged=!0,s=!1)}),s&&(e.curOp.updateMaxLine=!0)),r.frontier=Math.min(r.frontier,l.line),Re(e,400);var u=t.text.length-(a.line-l.line)-1;t.full?Dt(e):l.line!=a.line||1!=t.text.length||Gr(e.doc,t)?Dt(e,l.line,a.line+1,u):Pt(e,l.line,"text");var h=Ni(e,"changes"),f=Ni(e,"change");if(f||h){var p={from:l,to:a,text:t.text,removed:t.removed,origin:t.origin};f&&Si(e,"change",e,p),h&&(e.curOp.changeObjs||(e.curOp.changeObjs=[])).push(p)}e.display.selForContextMenu=null}function Wn(e,t,n,r,i){if(r||(r=n),zo(r,n)<0){var o=r;r=n,n=o}"string"==typeof t&&(t=e.splitLines(t)),Tn(e,{from:n,to:r,text:t,origin:i})}function In(e,t){if(!Ti(e,"scrollCursorIntoView")){var n=e.display,r=n.sizer.getBoundingClientRect(),i=null;if(t.top+r.top<0?i=!0:t.bottom+r.top>(window.innerHeight||document.documentElement.clientHeight)&&(i=!1),null!=i&&!Mo){var o=_i("div","​",null,"position: absolute; top: "+(t.top-n.viewOffset-qe(e.display))+"px; height: "+(t.bottom-t.top+$e(e)+n.barHeight)+"px; left: "+t.left+"px; width: 2px;");e.display.lineSpace.appendChild(o),o.scrollIntoView(i),e.display.lineSpace.removeChild(o)}}}function En(e,t,n,r){null==r&&(r=0);for(var i=0;5>i;i++){var o=!1,l=ft(e,t),a=n&&n!=t?ft(e,n):l,s=Pn(e,Math.min(l.left,a.left),Math.min(l.top,a.top)-r,Math.max(l.left,a.left),Math.max(l.bottom,a.bottom)+r),c=e.doc.scrollTop,u=e.doc.scrollLeft;if(null!=s.scrollTop&&(rn(e,s.scrollTop),Math.abs(e.doc.scrollTop-c)>1&&(o=!0)),null!=s.scrollLeft&&(on(e,s.scrollLeft),Math.abs(e.doc.scrollLeft-u)>1&&(o=!0)),!o)break}return l}function Dn(e,t,n,r,i){var o=Pn(e,t,n,r,i);null!=o.scrollTop&&rn(e,o.scrollTop),null!=o.scrollLeft&&on(e,o.scrollLeft)}function Pn(e,t,n,r,i){var o=e.display,l=yt(e.display);0>n&&(n=0);var a=e.curOp&&null!=e.curOp.scrollTop?e.curOp.scrollTop:o.scroller.scrollTop,s=Ke(e),c={};i-n>s&&(i=n+s);var u=e.doc.height+Ue(o),d=l>n,h=i>u-l;if(a>n)c.scrollTop=d?0:n;else if(i>a+s){var f=Math.min(n,(h?u:i)-s);f!=a&&(c.scrollTop=f)}var p=e.curOp&&null!=e.curOp.scrollLeft?e.curOp.scrollLeft:o.scroller.scrollLeft,m=Ve(e)-(e.options.fixedGutter?o.gutters.offsetWidth:0),g=r-t>m;return g&&(r=t+m),10>t?c.scrollLeft=0:p>t?c.scrollLeft=Math.max(0,t-(g?0:10)):r>m+p-3&&(c.scrollLeft=r+(g?0:10)-m),c}function Fn(e,t,n){null==t&&null==n||Rn(e),null!=t&&(e.curOp.scrollLeft=(null==e.curOp.scrollLeft?e.doc.scrollLeft:e.curOp.scrollLeft)+t),null!=n&&(e.curOp.scrollTop=(null==e.curOp.scrollTop?e.doc.scrollTop:e.curOp.scrollTop)+n)}function zn(e){Rn(e);var t=e.getCursor(),n=t,r=t;e.options.lineWrapping||(n=t.ch?Fo(t.line,t.ch-1):t,r=Fo(t.line,t.ch+1)),e.curOp.scrollToPos={from:n,to:r,margin:e.options.cursorScrollMargin,isCursor:!0}}function Rn(e){var t=e.curOp.scrollToPos;if(t){e.curOp.scrollToPos=null;var n=pt(e,t.from),r=pt(e,t.to),i=Pn(e,Math.min(n.left,r.left),Math.min(n.top,r.top)-t.margin,Math.max(n.right,r.right),Math.max(n.bottom,r.bottom)+t.margin);e.scrollTo(i.scrollLeft,i.scrollTop)}}function Bn(e,t,n,r){var i,o=e.doc;null==n&&(n="add"),"smart"==n&&(o.mode.indent?i=_e(e,t):n="prev");var l=e.options.tabSize,a=Zr(o,t),s=Rl(a.text,null,l);a.stateAfter&&(a.stateAfter=null);var c,u=a.text.match(/^\s*/)[0];if(r||/\S/.test(a.text)){if("smart"==n&&(c=o.mode.indent(i,a.text.slice(u.length),a.text),c==Dl||c>150)){if(!r)return;n="prev"}}else c=0,n="not";"prev"==n?c=t>o.first?Rl(Zr(o,t-1).text,null,l):0:"add"==n?c=s+e.options.indentUnit:"subtract"==n?c=s-e.options.indentUnit:"number"==typeof n&&(c=s+n),c=Math.max(0,c);var d="",h=0;if(e.options.indentWithTabs)for(var f=Math.floor(c/l);f;--f)h+=l,d+=" ";if(c>h&&(d+=Hi(c-h)),d!=u)return Wn(o,d,Fo(t,0),Fo(t,u.length),"+input"),a.stateAfter=null,!0;for(var f=0;f=0;t--)Wn(e.doc,"",r[t].from,r[t].to,"+delete");zn(e)})}function qn(e,t,n,r,i){function o(){var t=a+n;return t=e.first+e.size?!1:(a=t,u=Zr(e,t))}function l(e){var t=(i?ho:fo)(u,s,n,!0);if(null==t){if(e||!o())return!1;s=i?(0>n?io:ro)(u):0>n?u.text.length:0}else s=t;return!0}var a=t.line,s=t.ch,c=n,u=Zr(e,a);if("char"==r)l();else if("column"==r)l(!0);else if("word"==r||"group"==r)for(var d=null,h="group"==r,f=e.cm&&e.cm.getHelper(t,"wordChars"),p=!0;!(0>n)||l(!p);p=!1){var m=u.text.charAt(s)||"\n",g=Ri(m,f)?"w":h&&"\n"==m?"n":!h||/\s/.test(m)?null:"p";if(!h||p||g||(g="s"),d&&d!=g){0>n&&(n=1,l());break}if(g&&(d=g),n>0&&!l(!p))break}var v=We(e,Fo(a,s),t,c,!0);return zo(t,v)||(v.hitSide=!0),v}function Un(e,t,n,r){var i,o=e.doc,l=t.left;if("page"==r){var a=Math.min(e.display.wrapper.clientHeight,window.innerHeight||document.documentElement.clientHeight);i=t.top+n*(a-(0>n?1.5:.5)*yt(e.display))}else"line"==r&&(i=n>0?t.bottom+3:t.top-3);for(;;){var s=gt(e,l,i);if(!s.outside)break;if(0>n?0>=i:i>=o.height){s.hitSide=!0;break}i+=5*n}return s}function Gn(t,n,r,i){e.defaults[t]=n,r&&(el[t]=i?function(e,t,n){n!=tl&&r(e,t,n)}:r)}function $n(e){for(var t,n,r,i,o=e.split(/-(?!$)/),e=o[o.length-1],l=0;l0||0==l&&o.clearWhenEmpty!==!1)return o;if(o.replacedWith&&(o.collapsed=!0,o.widgetNode=_i("span",[o.replacedWith],"CodeMirror-widget"),r.handleMouseEvents||o.widgetNode.setAttribute("cm-ignore-events","true"),r.insertLeft&&(o.widgetNode.insertLeft=!0)),o.collapsed){if(vr(e,t.line,t,n,o)||t.line!=n.line&&vr(e,n.line,t,n,o))throw new Error("Inserting collapsed marker partially overlapping an existing one");Po=!0}o.addToHistory&&ci(e,{from:t,to:n,origin:"markText"},e.sel,NaN);var a,s=t.line,c=e.cm;if(e.iter(s,n.line+1,function(e){c&&o.collapsed&&!c.options.lineWrapping&&yr(e)==c.display.maxLine&&(a=!0),o.collapsed&&s!=t.line&&ei(e,0),nr(e,new Jn(o,s==t.line?t.ch:null,s==n.line?n.ch:null)),++s}),o.collapsed&&e.iter(t.line,n.line+1,function(t){kr(e,t)&&ei(t,0)}),o.clearOnEnter&&Al(o,"beforeCursorEnter",function(){o.clear()}),o.readOnly&&(Do=!0,(e.history.done.length||e.history.undone.length)&&e.clearHistory()),o.collapsed&&(o.id=++ml,o.atomic=!0),c){if(a&&(c.curOp.updateMaxLine=!0),o.collapsed)Dt(c,t.line,n.line+1);else if(o.className||o.title||o.startStyle||o.endStyle||o.css)for(var u=t.line;u<=n.line;u++)Pt(c,u,"text");o.atomic&&Ae(c.doc),Si(c,"markerAdded",c,o)}return o}function Xn(e,t,n,r,i){r=Fi(r),r.shared=!1;var o=[Kn(e,t,n,r,i)],l=o[0],a=r.widgetNode;return Xr(e,function(e){a&&(r.widgetNode=a.cloneNode(!0)),o.push(Kn(e,me(e,t),me(e,n),r,i));for(var s=0;s=t:o.to>t);(r||(r=[])).push(new Jn(l,o.from,s?null:o.to))}}return r}function ir(e,t,n){if(e)for(var r,i=0;i=t:o.to>t);if(a||o.from==t&&"bookmark"==l.type&&(!n||o.marker.insertLeft)){var s=null==o.from||(l.inclusiveLeft?o.from<=t:o.from0&&a)for(var d=0;dd;++d)p.push(m);p.push(s)}return p}function lr(e){for(var t=0;t0)){var u=[s,1],d=zo(c.from,a.from),h=zo(c.to,a.to);(0>d||!l.inclusiveLeft&&!d)&&u.push({from:c.from,to:a.from}),(h>0||!l.inclusiveRight&&!h)&&u.push({from:a.to,to:c.to}),i.splice.apply(i,u),s+=u.length-1}}return i}function cr(e){var t=e.markedSpans;if(t){for(var n=0;n=0&&0>=d||0>=u&&d>=0)&&(0>=u&&(zo(c.to,n)>0||s.marker.inclusiveRight&&i.inclusiveLeft)||u>=0&&(zo(c.from,r)<0||s.marker.inclusiveLeft&&i.inclusiveRight)))return!0}}}function yr(e){for(var t;t=mr(e);)e=t.find(-1,!0).line;return e}function xr(e){for(var t,n;t=gr(e);)e=t.find(1,!0).line,(n||(n=[])).push(e);return n}function br(e,t){var n=Zr(e,t),r=yr(n);return n==r?t:ti(r)}function wr(e,t){if(t>e.lastLine())return t;var n,r=Zr(e,t);if(!kr(e,r))return t;for(;n=gr(r);)r=n.find(1,!0).line;return ti(r)+1}function kr(e,t){var n=Po&&t.markedSpans;if(n)for(var r,i=0;io;o++){i&&(i[0]=e.innerMode(t,r).mode);var l=t.token(n,r);if(n.pos>n.start)return l}throw new Error("Mode "+t.name+" failed to advance stream.")}function Wr(e,t,n,r){function i(e){return{start:d.start,end:d.pos,string:d.current(),type:o||null,state:e?al(l.mode,u):u}}var o,l=e.doc,a=l.mode;t=me(l,t);var s,c=Zr(l,t.line),u=_e(e,t.line,n),d=new pl(c.text,e.options.tabSize);for(r&&(s=[]);(r||d.pose.options.maxHighlightLength?(a=!1,l&&Pr(e,t,r,d.pos),d.pos=t.length,s=null):s=Ar(Hr(n,d,r,h),o),h){var f=h[0].name;f&&(s="m-"+(s?f+" "+s:f))}if(!a||u!=s){for(;cc;){var r=i[s];r>e&&i.splice(s,1,e,i[s+1],r),s+=2,c=Math.min(e,r)}if(t)if(a.opaque)i.splice(n,s-n,e,"cm-overlay "+t),s=n+2;else for(;s>n;n+=2){var o=i[n+1];i[n+1]=(o?o+" ":"")+"cm-overlay "+t}},o)}return{styles:i,classes:o.bgClass||o.textClass?o:null}}function Dr(e,t,n){if(!t.styles||t.styles[0]!=e.state.modeGen){var r=_e(e,ti(t)),i=Er(e,t,t.text.length>e.options.maxHighlightLength?al(e.doc.mode,r):r);t.stateAfter=r,t.styles=i.styles,i.classes?t.styleClasses=i.classes:t.styleClasses&&(t.styleClasses=null),n===e.doc.frontier&&e.doc.frontier++}return t.styles}function Pr(e,t,n,r){var i=e.doc.mode,o=new pl(t,e.options.tabSize);for(o.start=o.pos=r||0,""==t&&Or(i,n);!o.eol();)Hr(i,o,n),o.start=o.pos}function Fr(e,t){if(!e||/^\s*$/.test(e))return null;var n=t.addModeClass?wl:bl;return n[e]||(n[e]=e.replace(/\S+/g,"cm-$&"))}function zr(e,t){var n=_i("span",null,null,wo?"padding-right: .1px":null),r={pre:_i("pre",[n],"CodeMirror-line"),content:n,col:0,pos:0,cm:e,splitSpaces:(xo||wo)&&e.getOption("lineWrapping")};t.measure={};for(var i=0;i<=(t.rest?t.rest.length:0);i++){var o,l=i?t.rest[i-1]:t.line;r.pos=0,r.addToken=Br,Qi(e.display.measure)&&(o=ii(l))&&(r.addToken=_r(r.addToken,o)),r.map=[];var a=t!=e.display.externalMeasured&&ti(l);Ur(l,r,Dr(e,l,a)),l.styleClasses&&(l.styleClasses.bgClass&&(r.bgClass=Vi(l.styleClasses.bgClass,r.bgClass||"")),l.styleClasses.textClass&&(r.textClass=Vi(l.styleClasses.textClass,r.textClass||""))),0==r.map.length&&r.map.push(0,0,r.content.appendChild(Zi(e.display.measure))),0==i?(t.measure.map=r.map,t.measure.cache={}):((t.measure.maps||(t.measure.maps=[])).push(r.map),(t.measure.caches||(t.measure.caches=[])).push({}))}return wo&&/\bcm-tab\b/.test(r.content.lastChild.className)&&(r.content.className="cm-tab-wrap-hack"),Wl(e,"renderLine",e,t.line,r.pre),r.pre.className&&(r.textClass=Vi(r.pre.className,r.textClass||"")),r}function Rr(e){var t=_i("span","•","cm-invalidchar");return t.title="\\u"+e.charCodeAt(0).toString(16),t.setAttribute("aria-label",t.title),t}function Br(e,t,n,r,i,o,l){if(t){var a=e.splitSpaces?t.replace(/ {3,}/g,jr):t,s=e.cm.state.specialChars,c=!1;if(s.test(t))for(var u=document.createDocumentFragment(),d=0;;){s.lastIndex=d;var h=s.exec(t),f=h?h.index-d:t.length-d;if(f){var p=document.createTextNode(a.slice(d,d+f));xo&&9>bo?u.appendChild(_i("span",[p])):u.appendChild(p),e.map.push(e.pos,e.pos+f,p),e.col+=f,e.pos+=f}if(!h)break;if(d+=f+1," "==h[0]){var m=e.cm.options.tabSize,g=m-e.col%m,p=u.appendChild(_i("span",Hi(g),"cm-tab"));p.setAttribute("role","presentation"),p.setAttribute("cm-text"," "),e.col+=g}else if("\r"==h[0]||"\n"==h[0]){var p=u.appendChild(_i("span","\r"==h[0]?"␍":"␤","cm-invalidchar"));p.setAttribute("cm-text",h[0]),e.col+=1}else{var p=e.cm.options.specialCharPlaceholder(h[0]);p.setAttribute("cm-text",h[0]),xo&&9>bo?u.appendChild(_i("span",[p])):u.appendChild(p),e.col+=1}e.map.push(e.pos,e.pos+1,p),e.pos++}else{e.col+=t.length;var u=document.createTextNode(a);e.map.push(e.pos,e.pos+t.length,u),xo&&9>bo&&(c=!0),e.pos+=t.length}if(n||r||i||c||l){var v=n||"";r&&(v+=r),i&&(v+=i);var y=_i("span",[u],v,l);return o&&(y.title=o),e.content.appendChild(y)}e.content.appendChild(u)}}function jr(e){for(var t=" ",n=0;nc&&h.from<=c)break}if(h.to>=u)return e(n,r,i,o,l,a,s);e(n,r.slice(0,h.to-c),i,o,null,a,s),o=null,r=r.slice(h.to-c),c=h.to}}}function qr(e,t,n,r){var i=!r&&n.widgetNode;i&&e.map.push(e.pos,e.pos+t,i),!r&&e.cm.display.input.needsContentAttribute&&(i||(i=e.content.appendChild(document.createElement("span"))),i.setAttribute("cm-marker",n.id)),i&&(e.cm.display.input.setUneditable(i),e.content.appendChild(i)),e.pos+=t}function Ur(e,t,n){var r=e.markedSpans,i=e.text,o=0;if(r)for(var l,a,s,c,u,d,h,f=i.length,p=0,m=1,g="",v=0;;){if(v==p){s=c=u=d=a="",h=null,v=1/0;for(var y,x=[],b=0;bp||k.collapsed&&w.to==p&&w.from==p)?(null!=w.to&&w.to!=p&&v>w.to&&(v=w.to,c=""),k.className&&(s+=" "+k.className),k.css&&(a=(a?a+";":"")+k.css),k.startStyle&&w.from==p&&(u+=" "+k.startStyle),k.endStyle&&w.to==v&&(y||(y=[])).push(k.endStyle,w.to),k.title&&!d&&(d=k.title),k.collapsed&&(!h||fr(h.marker,k)<0)&&(h=w)):w.from>p&&v>w.from&&(v=w.from)}if(y)for(var b=0;b=f)break;for(var C=Math.min(f,v);;){if(g){var S=p+g.length;if(!h){var L=S>C?g.slice(0,C-p):g;t.addToken(t,L,l?l+s:s,u,p+L.length==v?c:"",d,a)}if(S>=C){g=g.slice(C-p),p=C;break}p=S,u=""}g=i.slice(o,o=n[m++]),l=Fr(n[m++],t.cm.options)}}else for(var m=1;mn;++n)o.push(new xl(c[n],i(n),r));return o}var a=t.from,s=t.to,c=t.text,u=Zr(e,a.line),d=Zr(e,s.line),h=Wi(c),f=i(c.length-1),p=s.line-a.line;if(t.full)e.insert(0,l(0,c.length)),e.remove(c.length,e.size-c.length);else if(Gr(e,t)){var m=l(0,c.length-1);o(d,d.text,f),p&&e.remove(a.line,p),m.length&&e.insert(a.line,m)}else if(u==d)if(1==c.length)o(u,u.text.slice(0,a.ch)+h+u.text.slice(s.ch),f);else{var m=l(1,c.length-1);m.push(new xl(h+u.text.slice(s.ch),f,r)),o(u,u.text.slice(0,a.ch)+c[0],i(0)),e.insert(a.line+1,m)}else if(1==c.length)o(u,u.text.slice(0,a.ch)+c[0]+d.text.slice(s.ch),i(0)),e.remove(a.line+1,p);else{o(u,u.text.slice(0,a.ch)+c[0],i(0)),o(d,h+d.text.slice(s.ch),f);var m=l(1,c.length-1);p>1&&e.remove(a.line+1,p-1),e.insert(a.line+1,m)}Si(e,"change",e,t)}function Vr(e){this.lines=e,this.parent=null;for(var t=0,n=0;tt||t>=e.size)throw new Error("There is no line "+(t+e.first)+" in the document.");for(var n=e;!n.lines;)for(var r=0;;++r){var i=n.children[r],o=i.chunkSize();if(o>t){n=i;break}t-=o}return n.lines[t]}function Qr(e,t,n){var r=[],i=t.line;return e.iter(t.line,n.line+1,function(e){var o=e.text;i==n.line&&(o=o.slice(0,n.ch)),i==t.line&&(o=o.slice(t.ch)),r.push(o),++i}),r}function Jr(e,t,n){var r=[];return e.iter(t,n,function(e){r.push(e.text)}),r}function ei(e,t){var n=t-e.height;if(n)for(var r=e;r;r=r.parent)r.height+=n}function ti(e){if(null==e.parent)return null;for(var t=e.parent,n=Ii(t.lines,e),r=t.parent;r;t=r,r=r.parent)for(var i=0;r.children[i]!=t;++i)n+=r.children[i].chunkSize();return n+t.first}function ni(e,t){var n=e.first;e:do{for(var r=0;rt){e=i;continue e}t-=o,n+=i.chunkSize()}return n}while(!e.lines);for(var r=0;rt)break;t-=a}return n+r}function ri(e){e=yr(e);for(var t=0,n=e.parent,r=0;r1&&!e.done[e.done.length-2].ranges?(e.done.pop(),Wi(e.done)):void 0}function ci(e,t,n,r){var i=e.history;i.undone.length=0;var o,l=+new Date;if((i.lastOp==r||i.lastOrigin==t.origin&&t.origin&&("+"==t.origin.charAt(0)&&e.cm&&i.lastModTime>l-e.cm.options.historyEventDelay||"*"==t.origin.charAt(0)))&&(o=si(i,i.lastOp==r))){var a=Wi(o.changes);0==zo(t.from,t.to)&&0==zo(t.from,a.to)?a.to=Qo(t):o.changes.push(li(e,t))}else{var s=Wi(i.done);for(s&&s.ranges||hi(e.sel,i.done),o={changes:[li(e,t)],generation:i.generation},i.done.push(o);i.done.length>i.undoDepth;)i.done.shift(),i.done[0].ranges||i.done.shift()}i.done.push(n),i.generation=++i.maxGeneration,i.lastModTime=i.lastSelTime=l,i.lastOp=i.lastSelOp=r,i.lastOrigin=i.lastSelOrigin=t.origin,a||Wl(e,"historyAdded")}function ui(e,t,n,r){var i=t.charAt(0);return"*"==i||"+"==i&&n.ranges.length==r.ranges.length&&n.somethingSelected()==r.somethingSelected()&&new Date-e.history.lastSelTime<=(e.cm?e.cm.options.historyEventDelay:500)}function di(e,t,n,r){var i=e.history,o=r&&r.origin;n==i.lastSelOp||o&&i.lastSelOrigin==o&&(i.lastModTime==i.lastSelTime&&i.lastOrigin==o||ui(e,o,Wi(i.done),t))?i.done[i.done.length-1]=t:hi(t,i.done),i.lastSelTime=+new Date,i.lastSelOrigin=o,i.lastSelOp=n,r&&r.clearRedo!==!1&&ai(i.undone)}function hi(e,t){var n=Wi(t);n&&n.ranges&&n.equals(e)||t.push(e)}function fi(e,t,n,r){var i=t["spans_"+e.id],o=0;e.iter(Math.max(e.first,n),Math.min(e.first+e.size,r),function(n){n.markedSpans&&((i||(i=t["spans_"+e.id]={}))[o]=n.markedSpans),++o})}function pi(e){if(!e)return null;for(var t,n=0;n-1&&(Wi(a)[d]=u[d],delete u[d])}}}return i}function vi(e,t,n,r){n0?r.slice():Ol:r||Ol}function Si(e,t){function n(e){return function(){e.apply(null,o)}}var r=Ci(e,t,!1);if(r.length){var i,o=Array.prototype.slice.call(arguments,2);Uo?i=Uo.delayedCallbacks:Il?i=Il:(i=Il=[],setTimeout(Li,0));for(var l=0;l0}function Ai(e){e.prototype.on=function(e,t){Al(this,e,t)},e.prototype.off=function(e,t){Hl(this,e,t)}}function Oi(){this.id=null}function Hi(e){for(;jl.length<=e;)jl.push(Wi(jl)+" ");return jl[e]}function Wi(e){return e[e.length-1]}function Ii(e,t){for(var n=0;n-1&&Gl(e)?!0:t.test(e):Gl(e)}function Bi(e){for(var t in e)if(e.hasOwnProperty(t)&&e[t])return!1;return!0}function ji(e){return e.charCodeAt(0)>=768&&$l.test(e)}function _i(e,t,n,r){var i=document.createElement(e);if(n&&(i.className=n),r&&(i.style.cssText=r),"string"==typeof t)i.appendChild(document.createTextNode(t));else if(t)for(var o=0;o0;--t)e.removeChild(e.firstChild);return e}function Ui(e,t){return qi(e).appendChild(t)}function Gi(){for(var e=document.activeElement;e&&e.root&&e.root.activeElement;)e=e.root.activeElement;return e}function $i(e){return new RegExp("(^|\\s)"+e+"(?:$|\\s)\\s*")}function Vi(e,t){for(var n=e.split(" "),r=0;r2&&!(xo&&8>bo))}var n=Kl?_i("span","​"):_i("span"," ",null,"display: inline-block; width: 1px; margin-right: -1px");return n.setAttribute("cm-text",""),n}function Qi(e){if(null!=Xl)return Xl;var t=Ui(e,document.createTextNode("AخA")),n=ql(t,0,1).getBoundingClientRect();if(!n||n.left==n.right)return!1;var r=ql(t,1,2).getBoundingClientRect();return Xl=r.right-n.right<3}function Ji(e){if(null!=ra)return ra;var t=Ui(e,_i("span","x")),n=t.getBoundingClientRect(),r=ql(t,0,1).getBoundingClientRect();return ra=Math.abs(n.left-r.left)>1}function eo(e,t,n,r){if(!e)return r(t,n,"ltr");for(var i=!1,o=0;ot||t==n&&l.to==t)&&(r(Math.max(l.from,t),Math.min(l.to,n),1==l.level?"rtl":"ltr"),i=!0)}i||r(t,n,"ltr")}function to(e){return e.level%2?e.to:e.from}function no(e){return e.level%2?e.from:e.to}function ro(e){var t=ii(e);return t?to(t[0]):0}function io(e){var t=ii(e);return t?no(Wi(t)):e.text.length}function oo(e,t){var n=Zr(e.doc,t),r=yr(n);r!=n&&(t=ti(r));var i=ii(r),o=i?i[0].level%2?io(r):ro(r):0;return Fo(t,o)}function lo(e,t){for(var n,r=Zr(e.doc,t);n=gr(r);)r=n.find(1,!0).line,t=null;var i=ii(r),o=i?i[0].level%2?ro(r):io(r):r.text.length;return Fo(null==t?ti(r):t,o)}function ao(e,t){var n=oo(e,t.line),r=Zr(e.doc,n.line),i=ii(r);if(!i||0==i[0].level){var o=Math.max(0,r.text.search(/\S/)),l=t.line==n.line&&t.ch<=o&&t.ch;return Fo(n.line,l?0:o)}return n}function so(e,t,n){var r=e[0].level;return t==r?!0:n==r?!1:n>t}function co(e,t){oa=null;for(var n,r=0;rt)return r;if(i.from==t||i.to==t){if(null!=n)return so(e,i.level,e[n].level)?(i.from!=i.to&&(oa=n),r):(i.from!=i.to&&(oa=r),n);n=r}}return n}function uo(e,t,n,r){if(!r)return t+n;do t+=n;while(t>0&&ji(e.text.charAt(t)));return t}function ho(e,t,n,r){var i=ii(e);if(!i)return fo(e,t,n,r);for(var o=co(i,t),l=i[o],a=uo(e,t,l.level%2?-n:n,r);;){if(a>l.from&&a0==l.level%2?l.to:l.from);if(l=i[o+=n],!l)return null;a=n>0==l.level%2?uo(e,l.to,-1,r):uo(e,l.from,1,r)}}function fo(e,t,n,r){var i=t+n;if(r)for(;i>0&&ji(e.text.charAt(i));)i+=n;return 0>i||i>e.text.length?null:i}var po=navigator.userAgent,mo=navigator.platform,go=/gecko\/\d/i.test(po),vo=/MSIE \d/.test(po),yo=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(po),xo=vo||yo,bo=xo&&(vo?document.documentMode||6:yo[1]),wo=/WebKit\//.test(po),ko=wo&&/Qt\/\d+\.\d+/.test(po),Co=/Chrome\//.test(po),So=/Opera\//.test(po),Lo=/Apple Computer/.test(navigator.vendor),To=/Mac OS X 1\d\D([8-9]|\d\d)\D/.test(po),Mo=/PhantomJS/.test(po),No=/AppleWebKit/.test(po)&&/Mobile\/\w+/.test(po),Ao=No||/Android|webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(po),Oo=No||/Mac/.test(mo),Ho=/win/i.test(mo),Wo=So&&po.match(/Version\/(\d*\.\d*)/);Wo&&(Wo=Number(Wo[1])),Wo&&Wo>=15&&(So=!1,wo=!0);var Io=Oo&&(ko||So&&(null==Wo||12.11>Wo)),Eo=go||xo&&bo>=9,Do=!1,Po=!1;m.prototype=Fi({update:function(e){var t=e.scrollWidth>e.clientWidth+1,n=e.scrollHeight>e.clientHeight+1,r=e.nativeBarWidth;if(n){this.vert.style.display="block",this.vert.style.bottom=t?r+"px":"0";var i=e.viewHeight-(t?r:0);this.vert.firstChild.style.height=Math.max(0,e.scrollHeight-e.clientHeight+i)+"px"}else this.vert.style.display="",this.vert.firstChild.style.height="0";if(t){this.horiz.style.display="block",this.horiz.style.right=n?r+"px":"0",this.horiz.style.left=e.barLeft+"px";var o=e.viewWidth-e.barLeft-(n?r:0);this.horiz.firstChild.style.width=e.scrollWidth-e.clientWidth+o+"px"}else this.horiz.style.display="",this.horiz.firstChild.style.width="0";return!this.checkedZeroWidth&&e.clientHeight>0&&(0==r&&this.zeroWidthHack(),this.checkedZeroWidth=!0),{right:n?r:0,bottom:t?r:0}},setScrollLeft:function(e){this.horiz.scrollLeft!=e&&(this.horiz.scrollLeft=e),this.disableHoriz&&this.enableZeroWidthBar(this.horiz,this.disableHoriz)},setScrollTop:function(e){this.vert.scrollTop!=e&&(this.vert.scrollTop=e),this.disableVert&&this.enableZeroWidthBar(this.vert,this.disableVert)},zeroWidthHack:function(){var e=Oo&&!To?"12px":"18px";this.horiz.style.height=this.vert.style.width=e,this.horiz.style.pointerEvents=this.vert.style.pointerEvents="none",this.disableHoriz=new Oi,this.disableVert=new Oi},enableZeroWidthBar:function(e,t){function n(){var r=e.getBoundingClientRect(),i=document.elementFromPoint(r.left+1,r.bottom-1);i!=e?e.style.pointerEvents="none":t.set(1e3,n)}e.style.pointerEvents="auto",t.set(1e3,n)},clear:function(){var e=this.horiz.parentNode;e.removeChild(this.horiz),e.removeChild(this.vert)}},m.prototype),g.prototype=Fi({update:function(){return{bottom:0,right:0}},setScrollLeft:function(){},setScrollTop:function(){},clear:function(){}},g.prototype),e.scrollbarModel={"native":m,"null":g},L.prototype.signal=function(e,t){Ni(e,t)&&this.events.push(arguments)},L.prototype.finish=function(){for(var e=0;e=9&&n.hasSelection&&(n.hasSelection=null),n.poll()}),Al(o,"paste",function(e){Ti(r,e)||Q(e,r)||(r.state.pasteIncoming=!0,n.fastPoll())}),Al(o,"cut",t),Al(o,"copy",t),Al(e.scroller,"paste",function(t){Gt(e,t)||Ti(r,t)||(r.state.pasteIncoming=!0,n.focus())}),Al(e.lineSpace,"selectstart",function(t){Gt(e,t)||Tl(t)}),Al(o,"compositionstart",function(){var e=r.getCursor("from");n.composing&&n.composing.range.clear(),n.composing={start:e,range:r.markText(e,r.getCursor("to"),{className:"CodeMirror-composing"})}}),Al(o,"compositionend",function(){n.composing&&(n.poll(),n.composing.range.clear(),n.composing=null)})},prepareSelection:function(){var e=this.cm,t=e.display,n=e.doc,r=De(e);if(e.options.moveInputWithCursor){var i=ft(e,n.sel.primary().head,"div"),o=t.wrapper.getBoundingClientRect(),l=t.lineDiv.getBoundingClientRect();r.teTop=Math.max(0,Math.min(t.wrapper.clientHeight-10,i.top+l.top-o.top)),r.teLeft=Math.max(0,Math.min(t.wrapper.clientWidth-10,i.left+l.left-o.left))}return r},showSelection:function(e){var t=this.cm,n=t.display;Ui(n.cursorDiv,e.cursors),Ui(n.selectionDiv,e.selection),null!=e.teTop&&(this.wrapper.style.top=e.teTop+"px",this.wrapper.style.left=e.teLeft+"px")},reset:function(e){if(!this.contextMenuPending){var t,n,r=this.cm,i=r.doc;if(r.somethingSelected()){this.prevInput="";var o=i.sel.primary();t=na&&(o.to().line-o.from().line>100||(n=r.getSelection()).length>1e3);var l=t?"-":n||r.getSelection();this.textarea.value=l,r.state.focused&&_l(this.textarea),xo&&bo>=9&&(this.hasSelection=l)}else e||(this.prevInput=this.textarea.value="",xo&&bo>=9&&(this.hasSelection=null));this.inaccurateSelection=t}},getField:function(){return this.textarea},supportsTouch:function(){return!1},focus:function(){if("nocursor"!=this.cm.options.readOnly&&(!Ao||Gi()!=this.textarea))try{this.textarea.focus()}catch(e){}},blur:function(){this.textarea.blur()},resetPosition:function(){this.wrapper.style.top=this.wrapper.style.left=0},receivedFocus:function(){this.slowPoll()},slowPoll:function(){var e=this;e.pollingFast||e.polling.set(this.cm.options.pollInterval,function(){e.poll(),e.cm.state.focused&&e.slowPoll()})},fastPoll:function(){function e(){var r=n.poll();r||t?(n.pollingFast=!1,n.slowPoll()):(t=!0,n.polling.set(60,e))}var t=!1,n=this;n.pollingFast=!0,n.polling.set(20,e)},poll:function(){var e=this.cm,t=this.textarea,n=this.prevInput;if(this.contextMenuPending||!e.state.focused||ta(t)&&!n&&!this.composing||e.isReadOnly()||e.options.disableInput||e.state.keySeq)return!1;var r=t.value;if(r==n&&!e.somethingSelected())return!1;if(xo&&bo>=9&&this.hasSelection===r||Oo&&/[\uf700-\uf7ff]/.test(r))return e.display.input.reset(),!1;if(e.doc.sel==e.display.selForContextMenu){var i=r.charCodeAt(0);if(8203!=i||n||(n="​"),8666==i)return this.reset(),this.cm.execCommand("undo")}for(var o=0,l=Math.min(n.length,r.length);l>o&&n.charCodeAt(o)==r.charCodeAt(o);)++o;var a=this;return At(e,function(){Z(e,r.slice(o),n.length-o,null,a.composing?"*compose":null),r.length>1e3||r.indexOf("\n")>-1?t.value=a.prevInput="":a.prevInput=r,a.composing&&(a.composing.range.clear(),a.composing.range=e.markText(a.composing.start,e.getCursor("to"),{className:"CodeMirror-composing"}))}),!0},ensurePolled:function(){this.pollingFast&&this.poll()&&(this.pollingFast=!1)},onKeyPress:function(){xo&&bo>=9&&(this.hasSelection=null),this.fastPoll()},onContextMenu:function(e){function t(){if(null!=l.selectionStart){var e=i.somethingSelected(),t="​"+(e?l.value:"");l.value="⇚",l.value=t,r.prevInput=e?"":"​",l.selectionStart=1,l.selectionEnd=t.length,o.selForContextMenu=i.doc.sel}}function n(){if(r.contextMenuPending=!1,r.wrapper.style.cssText=d,l.style.cssText=u,xo&&9>bo&&o.scrollbars.setScrollTop(o.scroller.scrollTop=s),null!=l.selectionStart){(!xo||xo&&9>bo)&&t();var e=0,n=function(){o.selForContextMenu==i.doc.sel&&0==l.selectionStart&&l.selectionEnd>0&&"​"==r.prevInput?Ot(i,cl.selectAll)(i):e++<10?o.detectingSelectAll=setTimeout(n,500):o.input.reset()};o.detectingSelectAll=setTimeout(n,200)}}var r=this,i=r.cm,o=i.display,l=r.textarea,a=$t(i,e),s=o.scroller.scrollTop;if(a&&!So){var c=i.options.resetSelectionOnContextMenu;c&&-1==i.doc.sel.contains(a)&&Ot(i,Te)(i.doc,fe(a),Pl);var u=l.style.cssText,d=r.wrapper.style.cssText;r.wrapper.style.cssText="position: absolute";var h=r.wrapper.getBoundingClientRect();if(l.style.cssText="position: absolute; width: 30px; height: 30px; top: "+(e.clientY-h.top-5)+"px; left: "+(e.clientX-h.left-5)+"px; z-index: 1000; background: "+(xo?"rgba(255, 255, 255, .05)":"transparent")+"; outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);",wo)var f=window.scrollY;if(o.input.focus(),wo&&window.scrollTo(null,f),o.input.reset(),i.somethingSelected()||(l.value=r.prevInput=" "),r.contextMenuPending=!0,o.selForContextMenu=i.doc.sel,clearTimeout(o.detectingSelectAll),xo&&bo>=9&&t(),Eo){Nl(e);var p=function(){Hl(window,"mouseup",p),setTimeout(n,20)};Al(window,"mouseup",p)}else setTimeout(n,50)}},readOnlyChanged:function(e){e||this.reset()},setUneditable:Di,needsContentAttribute:!1},ne.prototype),ie.prototype=Fi({init:function(e){function t(e){if(!Ti(r,e)){if(r.somethingSelected())Ro=r.getSelections(),"cut"==e.type&&r.replaceSelection("",null,"cut");else{if(!r.options.lineWiseCopyCut)return;var t=ee(r);Ro=t.text,"cut"==e.type&&r.operation(function(){r.setSelections(t.ranges,0,Pl),r.replaceSelection("",null,"cut")})}if(e.clipboardData&&!No)e.preventDefault(),e.clipboardData.clearData(),e.clipboardData.setData("text/plain",Ro.join("\n"));else{var n=re(),i=n.firstChild;r.display.lineSpace.insertBefore(n,r.display.lineSpace.firstChild),i.value=Ro.join("\n");var o=document.activeElement;_l(i),setTimeout(function(){r.display.lineSpace.removeChild(n),o.focus()},50)}}}var n=this,r=n.cm,i=n.div=e.lineDiv;te(i),Al(i,"paste",function(e){Ti(r,e)||Q(e,r)}),Al(i,"compositionstart",function(e){var t=e.data;if(n.composing={sel:r.doc.sel,data:t,startData:t},t){var i=r.doc.sel.primary(),o=r.getLine(i.head.line),l=o.indexOf(t,Math.max(0,i.head.ch-t.length));l>-1&&l<=i.head.ch&&(n.composing.sel=fe(Fo(i.head.line,l),Fo(i.head.line,l+t.length)))}}),Al(i,"compositionupdate",function(e){n.composing.data=e.data}),Al(i,"compositionend",function(e){var t=n.composing;t&&(e.data==t.startData||/\u200b/.test(e.data)||(t.data=e.data),setTimeout(function(){t.handled||n.applyComposition(t),n.composing==t&&(n.composing=null)},50))}),Al(i,"touchstart",function(){n.forceCompositionEnd()}),Al(i,"input",function(){n.composing||!r.isReadOnly()&&n.pollContent()||At(n.cm,function(){Dt(r)})}),Al(i,"copy",t),Al(i,"cut",t)},prepareSelection:function(){var e=De(this.cm,!1);return e.focus=this.cm.state.focused,e},showSelection:function(e){e&&this.cm.display.view.length&&(e.focus&&this.showPrimarySelection(),this.showMultipleSelections(e))},showPrimarySelection:function(){var e=window.getSelection(),t=this.cm.doc.sel.primary(),n=ae(this.cm,e.anchorNode,e.anchorOffset),r=ae(this.cm,e.focusNode,e.focusOffset);if(!n||n.bad||!r||r.bad||0!=zo(X(n,r),t.from())||0!=zo(K(n,r),t.to())){var i=oe(this.cm,t.from()),o=oe(this.cm,t.to());if(i||o){var l=this.cm.display.view,a=e.rangeCount&&e.getRangeAt(0);if(i){if(!o){var s=l[l.length-1].measure,c=s.maps?s.maps[s.maps.length-1]:s.map;o={node:c[c.length-1],offset:c[c.length-2]-c[c.length-3]}}}else i={node:l[0].measure.map[2],offset:0};try{var u=ql(i.node,i.offset,o.offset,o.node)}catch(d){}u&&(!go&&this.cm.state.focused?(e.collapse(i.node,i.offset),u.collapsed||e.addRange(u)):(e.removeAllRanges(),e.addRange(u)),a&&null==e.anchorNode?e.addRange(a):go&&this.startGracePeriod()),this.rememberSelection()}}},startGracePeriod:function(){var e=this;clearTimeout(this.gracePeriod),this.gracePeriod=setTimeout(function(){e.gracePeriod=!1,e.selectionChanged()&&e.cm.operation(function(){e.cm.curOp.selectionChanged=!0})},20)},showMultipleSelections:function(e){Ui(this.cm.display.cursorDiv,e.cursors),Ui(this.cm.display.selectionDiv,e.selection)},rememberSelection:function(){var e=window.getSelection();this.lastAnchorNode=e.anchorNode,this.lastAnchorOffset=e.anchorOffset,this.lastFocusNode=e.focusNode,this.lastFocusOffset=e.focusOffset},selectionInEditor:function(){var e=window.getSelection();if(!e.rangeCount)return!1;var t=e.getRangeAt(0).commonAncestorContainer;return Vl(this.div,t)},focus:function(){"nocursor"!=this.cm.options.readOnly&&this.div.focus()},blur:function(){this.div.blur()},getField:function(){return this.div},supportsTouch:function(){return!0},receivedFocus:function(){function e(){t.cm.state.focused&&(t.pollSelection(),t.polling.set(t.cm.options.pollInterval,e))}var t=this;this.selectionInEditor()?this.pollSelection():At(this.cm,function(){t.cm.curOp.selectionChanged=!0}),this.polling.set(this.cm.options.pollInterval,e)},selectionChanged:function(){var e=window.getSelection();return e.anchorNode!=this.lastAnchorNode||e.anchorOffset!=this.lastAnchorOffset||e.focusNode!=this.lastFocusNode||e.focusOffset!=this.lastFocusOffset},pollSelection:function(){if(!this.composing&&!this.gracePeriod&&this.selectionChanged()){var e=window.getSelection(),t=this.cm;this.rememberSelection();var n=ae(t,e.anchorNode,e.anchorOffset),r=ae(t,e.focusNode,e.focusOffset);n&&r&&At(t,function(){Te(t.doc,fe(n,r),Pl),(n.bad||r.bad)&&(t.curOp.selectionChanged=!0)})}},pollContent:function(){var e=this.cm,t=e.display,n=e.doc.sel.primary(),r=n.from(),i=n.to();if(r.linet.viewTo-1)return!1;var o;if(r.line==t.viewFrom||0==(o=zt(e,r.line)))var l=ti(t.view[0].line),a=t.view[0].node;else var l=ti(t.view[o].line),a=t.view[o-1].node.nextSibling;var s=zt(e,i.line);if(s==t.view.length-1)var c=t.viewTo-1,u=t.lineDiv.lastChild;else var c=ti(t.view[s+1].line)-1,u=t.view[s+1].node.previousSibling;for(var d=e.doc.splitLines(ce(e,a,u,l,c)),h=Qr(e.doc,Fo(l,0),Fo(c,Zr(e.doc,c).text.length));d.length>1&&h.length>1;)if(Wi(d)==Wi(h))d.pop(),h.pop(),c--;else{if(d[0]!=h[0])break;d.shift(),h.shift(),l++}for(var f=0,p=0,m=d[0],g=h[0],v=Math.min(m.length,g.length);v>f&&m.charCodeAt(f)==g.charCodeAt(f);)++f;for(var y=Wi(d),x=Wi(h),b=Math.min(y.length-(1==d.length?f:0),x.length-(1==h.length?f:0));b>p&&y.charCodeAt(y.length-p-1)==x.charCodeAt(x.length-p-1);)++p;d[d.length-1]=y.slice(0,y.length-p),d[0]=d[0].slice(f);var w=Fo(l,f),k=Fo(c,h.length?Wi(h).length-p:0);return d.length>1||d[0]||zo(w,k)?(Wn(e.doc,d,w,k,"+input"),!0):void 0},ensurePolled:function(){this.forceCompositionEnd()},reset:function(){this.forceCompositionEnd()},forceCompositionEnd:function(){this.composing&&!this.composing.handled&&(this.applyComposition(this.composing),this.composing.handled=!0,this.div.blur(),this.div.focus())},applyComposition:function(e){this.cm.isReadOnly()?Ot(this.cm,Dt)(this.cm):e.data&&e.data!=e.startData&&Ot(this.cm,Z)(this.cm,e.data,0,e.sel)},setUneditable:function(e){e.contentEditable="false"},onKeyPress:function(e){e.preventDefault(),this.cm.isReadOnly()||Ot(this.cm,Z)(this.cm,String.fromCharCode(null==e.charCode?e.keyCode:e.charCode),0)},readOnlyChanged:function(e){this.div.contentEditable=String("nocursor"!=e)},onContextMenu:Di,resetPosition:Di,needsContentAttribute:!0},ie.prototype),e.inputStyles={textarea:ne,contenteditable:ie},ue.prototype={primary:function(){return this.ranges[this.primIndex]},equals:function(e){if(e==this)return!0;if(e.primIndex!=this.primIndex||e.ranges.length!=this.ranges.length)return!1;for(var t=0;t=0&&zo(e,r.to())<=0)return n}return-1}},de.prototype={from:function(){return X(this.anchor,this.head)},to:function(){return K(this.anchor,this.head)},empty:function(){return this.head.line==this.anchor.line&&this.head.ch==this.anchor.ch}};var Bo,jo,_o,qo={left:0,right:0,top:0,bottom:0},Uo=null,Go=0,$o=0,Vo=0,Ko=null;xo?Ko=-.53:go?Ko=15:Co?Ko=-.7:Lo&&(Ko=-1/3);var Xo=function(e){var t=e.wheelDeltaX,n=e.wheelDeltaY;return null==t&&e.detail&&e.axis==e.HORIZONTAL_AXIS&&(t=e.detail),null==n&&e.detail&&e.axis==e.VERTICAL_AXIS?n=e.detail:null==n&&(n=e.wheelDelta),{x:t,y:n}};e.wheelEventPixels=function(e){var t=Xo(e);return t.x*=Ko,t.y*=Ko,t};var Yo=new Oi,Zo=null,Qo=e.changeEnd=function(e){return e.text?Fo(e.from.line+e.text.length-1,Wi(e.text).length+(1==e.text.length?e.from.ch:0)):e.to};e.prototype={constructor:e,focus:function(){window.focus(),this.display.input.focus()},setOption:function(e,t){var n=this.options,r=n[e];n[e]==t&&"mode"!=e||(n[e]=t,el.hasOwnProperty(e)&&Ot(this,el[e])(this,t,r))},getOption:function(e){return this.options[e]},getDoc:function(){return this.doc},addKeyMap:function(e,t){this.state.keyMaps[t?"push":"unshift"](Vn(e))},removeKeyMap:function(e){for(var t=this.state.keyMaps,n=0;nn&&(Bn(this,i.head.line,e,!0),n=i.head.line,r==this.doc.sel.primIndex&&zn(this));else{var o=i.from(),l=i.to(),a=Math.max(n,o.line);n=Math.min(this.lastLine(),l.line-(l.ch?0:1))+1;for(var s=a;n>s;++s)Bn(this,s,e);var c=this.doc.sel.ranges;0==o.ch&&t.length==c.length&&c[r].from().ch>0&&ke(this.doc,r,new de(o,c[r].to()),Pl)}}}),getTokenAt:function(e,t){return Wr(this,e,t)},getLineTokens:function(e,t){return Wr(this,Fo(e),t,!0)},getTokenTypeAt:function(e){e=me(this.doc,e);var t,n=Dr(this,Zr(this.doc,e.line)),r=0,i=(n.length-1)/2,o=e.ch;if(0==o)t=n[2];else for(;;){var l=r+i>>1;if((l?n[2*l-1]:0)>=o)i=l;else{if(!(n[2*l+1]a?t:0==a?null:t.slice(0,a-1)},getModeAt:function(t){var n=this.doc.mode;return n.innerMode?e.innerMode(n,this.getTokenAt(t).state).mode:n},getHelper:function(e,t){return this.getHelpers(e,t)[0]},getHelpers:function(e,t){var n=[];if(!ll.hasOwnProperty(t))return n;var r=ll[t],i=this.getModeAt(e);if("string"==typeof i[t])r[i[t]]&&n.push(r[i[t]]);else if(i[t])for(var o=0;oi&&(e=i,r=!0),n=Zr(this.doc,e)}else n=e;return ut(this,n,{top:0,left:0},t||"page").top+(r?this.doc.height-ri(n):0)},defaultTextHeight:function(){return yt(this.display)},defaultCharWidth:function(){return xt(this.display)},setGutterMarker:Ht(function(e,t,n){return jn(this.doc,e,"gutter",function(e){var r=e.gutterMarkers||(e.gutterMarkers={});return r[t]=n,!n&&Bi(r)&&(e.gutterMarkers=null),!0})}),clearGutter:Ht(function(e){var t=this,n=t.doc,r=n.first;n.iter(function(n){n.gutterMarkers&&n.gutterMarkers[e]&&(n.gutterMarkers[e]=null,Pt(t,r,"gutter"),Bi(n.gutterMarkers)&&(n.gutterMarkers=null)),++r})}),lineInfo:function(e){if("number"==typeof e){if(!ve(this.doc,e))return null;var t=e;if(e=Zr(this.doc,e),!e)return null}else{var t=ti(e);if(null==t)return null}return{line:t,handle:e,text:e.text,gutterMarkers:e.gutterMarkers,textClass:e.textClass,bgClass:e.bgClass,wrapClass:e.wrapClass,widgets:e.widgets}},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(e,t,n,r,i){var o=this.display;e=ft(this,me(this.doc,e));var l=e.bottom,a=e.left;if(t.style.position="absolute",t.setAttribute("cm-ignore-events","true"),this.display.input.setUneditable(t),o.sizer.appendChild(t),"over"==r)l=e.top;else if("above"==r||"near"==r){var s=Math.max(o.wrapper.clientHeight,this.doc.height),c=Math.max(o.sizer.clientWidth,o.lineSpace.clientWidth);("above"==r||e.bottom+t.offsetHeight>s)&&e.top>t.offsetHeight?l=e.top-t.offsetHeight:e.bottom+t.offsetHeight<=s&&(l=e.bottom),a+t.offsetWidth>c&&(a=c-t.offsetWidth)}t.style.top=l+"px",t.style.left=t.style.right="","right"==i?(a=o.sizer.clientWidth-t.offsetWidth,t.style.right="0px"):("left"==i?a=0:"middle"==i&&(a=(o.sizer.clientWidth-t.offsetWidth)/2),t.style.left=a+"px"),n&&Dn(this,a,l,a+t.offsetWidth,l+t.offsetHeight)},triggerOnKeyDown:Ht(hn),triggerOnKeyPress:Ht(mn),triggerOnKeyUp:pn,execCommand:function(e){return cl.hasOwnProperty(e)?cl[e].call(null,this):void 0},triggerElectric:Ht(function(e){J(this,e)}),findPosH:function(e,t,n,r){var i=1;0>t&&(i=-1,t=-t);for(var o=0,l=me(this.doc,e);t>o&&(l=qn(this.doc,l,i,n,r),!l.hitSide);++o);return l},moveH:Ht(function(e,t){var n=this;n.extendSelectionsBy(function(r){return n.display.shift||n.doc.extend||r.empty()?qn(n.doc,r.head,e,t,n.options.rtlMoveVisually):0>e?r.from():r.to(); -},zl)}),deleteH:Ht(function(e,t){var n=this.doc.sel,r=this.doc;n.somethingSelected()?r.replaceSelection("",null,"+delete"):_n(this,function(n){var i=qn(r,n.head,e,t,!1);return 0>e?{from:i,to:n.head}:{from:n.head,to:i}})}),findPosV:function(e,t,n,r){var i=1,o=r;0>t&&(i=-1,t=-t);for(var l=0,a=me(this.doc,e);t>l;++l){var s=ft(this,a,"div");if(null==o?o=s.left:s.left=o,a=Un(this,s,i,n),a.hitSide)break}return a},moveV:Ht(function(e,t){var n=this,r=this.doc,i=[],o=!n.display.shift&&!r.extend&&r.sel.somethingSelected();if(r.extendSelectionsBy(function(l){if(o)return 0>e?l.from():l.to();var a=ft(n,l.head,"div");null!=l.goalColumn&&(a.left=l.goalColumn),i.push(a.left);var s=Un(n,a,e,t);return"page"==t&&l==r.sel.primary()&&Fn(n,null,ht(n,s,"div").top-a.top),s},zl),i.length)for(var l=0;l0&&a(n.charAt(r-1));)--r;for(;i.5)&&l(this),Wl(this,"refresh",this)}),swapDoc:Ht(function(e){var t=this.doc;return t.cm=null,Yr(this,e),at(this),this.display.input.reset(),this.scrollTo(e.scrollLeft,e.scrollTop),this.curOp.forceScroll=!0,Si(this,"swapDoc",this,t),t}),getInputField:function(){return this.display.input.getField()},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}},Ai(e);var Jo=e.defaults={},el=e.optionHandlers={},tl=e.Init={toString:function(){return"CodeMirror.Init"}};Gn("value","",function(e,t){e.setValue(t)},!0),Gn("mode",null,function(e,t){e.doc.modeOption=t,n(e)},!0),Gn("indentUnit",2,n,!0),Gn("indentWithTabs",!1),Gn("smartIndent",!0),Gn("tabSize",4,function(e){r(e),at(e),Dt(e)},!0),Gn("lineSeparator",null,function(e,t){if(e.doc.lineSep=t,t){var n=[],r=e.doc.first;e.doc.iter(function(e){for(var i=0;;){var o=e.text.indexOf(t,i);if(-1==o)break;i=o+t.length,n.push(Fo(r,o))}r++});for(var i=n.length-1;i>=0;i--)Wn(e.doc,t,n[i],Fo(n[i].line,n[i].ch+t.length))}}),Gn("specialChars",/[\t\u0000-\u0019\u00ad\u200b-\u200f\u2028\u2029\ufeff]/g,function(t,n,r){t.state.specialChars=new RegExp(n.source+(n.test(" ")?"":"| "),"g"),r!=e.Init&&t.refresh()}),Gn("specialCharPlaceholder",Rr,function(e){e.refresh()},!0),Gn("electricChars",!0),Gn("inputStyle",Ao?"contenteditable":"textarea",function(){throw new Error("inputStyle can not (yet) be changed in a running editor")},!0),Gn("rtlMoveVisually",!Ho),Gn("wholeLineUpdateBefore",!0),Gn("theme","default",function(e){a(e),s(e)},!0),Gn("keyMap","default",function(t,n,r){var i=Vn(n),o=r!=e.Init&&Vn(r);o&&o.detach&&o.detach(t,i),i.attach&&i.attach(t,o||null)}),Gn("extraKeys",null),Gn("lineWrapping",!1,i,!0),Gn("gutters",[],function(e){f(e.options),s(e)},!0),Gn("fixedGutter",!0,function(e,t){e.display.gutters.style.left=t?S(e.display)+"px":"0",e.refresh()},!0),Gn("coverGutterNextToScrollbar",!1,function(e){y(e)},!0),Gn("scrollbarStyle","native",function(e){v(e),y(e),e.display.scrollbars.setScrollTop(e.doc.scrollTop),e.display.scrollbars.setScrollLeft(e.doc.scrollLeft)},!0),Gn("lineNumbers",!1,function(e){f(e.options),s(e)},!0),Gn("firstLineNumber",1,s,!0),Gn("lineNumberFormatter",function(e){return e},s,!0),Gn("showCursorWhenSelecting",!1,Ee,!0),Gn("resetSelectionOnContextMenu",!0),Gn("lineWiseCopyCut",!0),Gn("readOnly",!1,function(e,t){"nocursor"==t?(yn(e),e.display.input.blur(),e.display.disabled=!0):e.display.disabled=!1,e.display.input.readOnlyChanged(t)}),Gn("disableInput",!1,function(e,t){t||e.display.input.reset()},!0),Gn("dragDrop",!0,qt),Gn("allowDropFileTypes",null),Gn("cursorBlinkRate",530),Gn("cursorScrollMargin",0),Gn("cursorHeight",1,Ee,!0),Gn("singleCursorHeightPerLine",!0,Ee,!0),Gn("workTime",100),Gn("workDelay",100),Gn("flattenSpans",!0,r,!0),Gn("addModeClass",!1,r,!0),Gn("pollInterval",100),Gn("undoDepth",200,function(e,t){e.doc.history.undoDepth=t}),Gn("historyEventDelay",1250),Gn("viewportMargin",10,function(e){e.refresh()},!0),Gn("maxHighlightLength",1e4,r,!0),Gn("moveInputWithCursor",!0,function(e,t){t||e.display.input.resetPosition()}),Gn("tabindex",null,function(e,t){e.display.input.getField().tabIndex=t||""}),Gn("autofocus",null);var nl=e.modes={},rl=e.mimeModes={};e.defineMode=function(t,n){e.defaults.mode||"null"==t||(e.defaults.mode=t),arguments.length>2&&(n.dependencies=Array.prototype.slice.call(arguments,2)),nl[t]=n},e.defineMIME=function(e,t){rl[e]=t},e.resolveMode=function(t){if("string"==typeof t&&rl.hasOwnProperty(t))t=rl[t];else if(t&&"string"==typeof t.name&&rl.hasOwnProperty(t.name)){var n=rl[t.name];"string"==typeof n&&(n={name:n}),t=Pi(n,t),t.name=n.name}else if("string"==typeof t&&/^[\w\-]+\/[\w\-]+\+xml$/.test(t))return e.resolveMode("application/xml");return"string"==typeof t?{name:t}:t||{name:"null"}},e.getMode=function(t,n){var n=e.resolveMode(n),r=nl[n.name];if(!r)return e.getMode(t,"text/plain");var i=r(t,n);if(il.hasOwnProperty(n.name)){var o=il[n.name];for(var l in o)o.hasOwnProperty(l)&&(i.hasOwnProperty(l)&&(i["_"+l]=i[l]),i[l]=o[l])}if(i.name=n.name,n.helperType&&(i.helperType=n.helperType),n.modeProps)for(var l in n.modeProps)i[l]=n.modeProps[l];return i},e.defineMode("null",function(){return{token:function(e){e.skipToEnd()}}}),e.defineMIME("text/plain","null");var il=e.modeExtensions={};e.extendMode=function(e,t){var n=il.hasOwnProperty(e)?il[e]:il[e]={};Fi(t,n)},e.defineExtension=function(t,n){e.prototype[t]=n},e.defineDocExtension=function(e,t){Cl.prototype[e]=t},e.defineOption=Gn;var ol=[];e.defineInitHook=function(e){ol.push(e)};var ll=e.helpers={};e.registerHelper=function(t,n,r){ll.hasOwnProperty(t)||(ll[t]=e[t]={_global:[]}),ll[t][n]=r},e.registerGlobalHelper=function(t,n,r,i){e.registerHelper(t,n,i),ll[t]._global.push({pred:r,val:i})};var al=e.copyState=function(e,t){if(t===!0)return t;if(e.copyState)return e.copyState(t);var n={};for(var r in t){var i=t[r];i instanceof Array&&(i=i.concat([])),n[r]=i}return n},sl=e.startState=function(e,t,n){return e.startState?e.startState(t,n):!0};e.innerMode=function(e,t){for(;e.innerMode;){var n=e.innerMode(t);if(!n||n.mode==e)break;t=n.state,e=n.mode}return n||{mode:e,state:t}};var cl=e.commands={selectAll:function(e){e.setSelection(Fo(e.firstLine(),0),Fo(e.lastLine()),Pl)},singleSelection:function(e){e.setSelection(e.getCursor("anchor"),e.getCursor("head"),Pl)},killLine:function(e){_n(e,function(t){if(t.empty()){var n=Zr(e.doc,t.head.line).text.length;return t.head.ch==n&&t.head.line0)i=new Fo(i.line,i.ch+1),e.replaceRange(o.charAt(i.ch-1)+o.charAt(i.ch-2),Fo(i.line,i.ch-2),i,"+transpose");else if(i.line>e.doc.first){var l=Zr(e.doc,i.line-1).text;l&&e.replaceRange(o.charAt(0)+e.doc.lineSeparator()+l.charAt(l.length-1),Fo(i.line-1,l.length-1),Fo(i.line,1),"+transpose")}n.push(new de(i,i))}e.setSelections(n)})},newlineAndIndent:function(e){At(e,function(){for(var t=e.listSelections().length,n=0;t>n;n++){var r=e.listSelections()[n];e.replaceRange(e.doc.lineSeparator(),r.anchor,r.head,"+input"),e.indentLine(r.from().line+1,null,!0)}zn(e)})},toggleOverwrite:function(e){e.toggleOverwrite()}},ul=e.keyMap={};ul.basic={Left:"goCharLeft",Right:"goCharRight",Up:"goLineUp",Down:"goLineDown",End:"goLineEnd",Home:"goLineStartSmart",PageUp:"goPageUp",PageDown:"goPageDown",Delete:"delCharAfter",Backspace:"delCharBefore","Shift-Backspace":"delCharBefore",Tab:"defaultTab","Shift-Tab":"indentAuto",Enter:"newlineAndIndent",Insert:"toggleOverwrite",Esc:"singleSelection"},ul.pcDefault={"Ctrl-A":"selectAll","Ctrl-D":"deleteLine","Ctrl-Z":"undo","Shift-Ctrl-Z":"redo","Ctrl-Y":"redo","Ctrl-Home":"goDocStart","Ctrl-End":"goDocEnd","Ctrl-Up":"goLineUp","Ctrl-Down":"goLineDown","Ctrl-Left":"goGroupLeft","Ctrl-Right":"goGroupRight","Alt-Left":"goLineStart","Alt-Right":"goLineEnd","Ctrl-Backspace":"delGroupBefore","Ctrl-Delete":"delGroupAfter","Ctrl-S":"save","Ctrl-F":"find","Ctrl-G":"findNext","Shift-Ctrl-G":"findPrev","Shift-Ctrl-F":"replace","Shift-Ctrl-R":"replaceAll","Ctrl-[":"indentLess","Ctrl-]":"indentMore","Ctrl-U":"undoSelection","Shift-Ctrl-U":"redoSelection","Alt-U":"redoSelection",fallthrough:"basic"},ul.emacsy={"Ctrl-F":"goCharRight","Ctrl-B":"goCharLeft","Ctrl-P":"goLineUp","Ctrl-N":"goLineDown","Alt-F":"goWordRight","Alt-B":"goWordLeft","Ctrl-A":"goLineStart","Ctrl-E":"goLineEnd","Ctrl-V":"goPageDown","Shift-Ctrl-V":"goPageUp","Ctrl-D":"delCharAfter","Ctrl-H":"delCharBefore","Alt-D":"delWordAfter","Alt-Backspace":"delWordBefore","Ctrl-K":"killLine","Ctrl-T":"transposeChars"},ul.macDefault={"Cmd-A":"selectAll","Cmd-D":"deleteLine","Cmd-Z":"undo","Shift-Cmd-Z":"redo","Cmd-Y":"redo","Cmd-Home":"goDocStart","Cmd-Up":"goDocStart","Cmd-End":"goDocEnd","Cmd-Down":"goDocEnd","Alt-Left":"goGroupLeft","Alt-Right":"goGroupRight","Cmd-Left":"goLineLeft","Cmd-Right":"goLineRight","Alt-Backspace":"delGroupBefore","Ctrl-Alt-Backspace":"delGroupAfter","Alt-Delete":"delGroupAfter","Cmd-S":"save","Cmd-F":"find","Cmd-G":"findNext","Shift-Cmd-G":"findPrev","Cmd-Alt-F":"replace","Shift-Cmd-Alt-F":"replaceAll","Cmd-[":"indentLess","Cmd-]":"indentMore","Cmd-Backspace":"delWrappedLineLeft","Cmd-Delete":"delWrappedLineRight","Cmd-U":"undoSelection","Shift-Cmd-U":"redoSelection","Ctrl-Up":"goDocStart","Ctrl-Down":"goDocEnd",fallthrough:["basic","emacsy"]},ul["default"]=Oo?ul.macDefault:ul.pcDefault,e.normalizeKeyMap=function(e){var t={};for(var n in e)if(e.hasOwnProperty(n)){var r=e[n];if(/^(name|fallthrough|(de|at)tach)$/.test(n))continue;if("..."==r){delete e[n];continue}for(var i=Ei(n.split(" "),$n),o=0;o=this.string.length},sol:function(){return this.pos==this.lineStart},peek:function(){return this.string.charAt(this.pos)||void 0},next:function(){return this.post},eatSpace:function(){for(var e=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e},skipToEnd:function(){this.pos=this.string.length},skipTo:function(e){var t=this.string.indexOf(e,this.pos);return t>-1?(this.pos=t,!0):void 0},backUp:function(e){this.pos-=e},column:function(){return this.lastColumnPos0?null:(r&&t!==!1&&(this.pos+=r[0].length),r)}var i=function(e){return n?e.toLowerCase():e},o=this.string.substr(this.pos,e.length);return i(o)==i(e)?(t!==!1&&(this.pos+=e.length),!0):void 0},current:function(){return this.string.slice(this.start,this.pos)},hideFirstChars:function(e,t){this.lineStart+=e;try{return t()}finally{this.lineStart-=e}}};var ml=0,gl=e.TextMarker=function(e,t){this.lines=[],this.type=t,this.doc=e,this.id=++ml};Ai(gl),gl.prototype.clear=function(){if(!this.explicitlyCleared){var e=this.doc.cm,t=e&&!e.curOp;if(t&&bt(e),Ni(this,"clear")){var n=this.find();n&&Si(this,"clear",n.from,n.to)}for(var r=null,i=null,o=0;oe.display.maxLineLength&&(e.display.maxLine=s,e.display.maxLineLength=c,e.display.maxLineChanged=!0)}null!=r&&e&&this.collapsed&&Dt(e,r,i+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,e&&Ae(e.doc)),e&&Si(e,"markerCleared",e,this),t&&kt(e),this.parent&&this.parent.clear()}},gl.prototype.find=function(e,t){null==e&&"bookmark"==this.type&&(e=1);for(var n,r,i=0;in;++n){var i=this.lines[n];this.height-=i.height,Nr(i),Si(i,"delete")}this.lines.splice(e,t)},collapse:function(e){e.push.apply(e,this.lines)},insertInner:function(e,t,n){this.height+=n,this.lines=this.lines.slice(0,e).concat(t).concat(this.lines.slice(e));for(var r=0;re;++e)if(n(this.lines[e]))return!0}},Kr.prototype={chunkSize:function(){return this.size},removeInner:function(e,t){this.size-=t;for(var n=0;ne){var o=Math.min(t,i-e),l=r.height;if(r.removeInner(e,o),this.height-=l-r.height,i==o&&(this.children.splice(n--,1),r.parent=null),0==(t-=o))break;e=0}else e-=i}if(this.size-t<25&&(this.children.length>1||!(this.children[0]instanceof Vr))){var a=[];this.collapse(a),this.children=[new Vr(a)],this.children[0].parent=this}},collapse:function(e){for(var t=0;t=e){if(i.insertInner(e,t,n),i.lines&&i.lines.length>50){for(;i.lines.length>50;){var l=i.lines.splice(i.lines.length-25,25),a=new Vr(l);i.height-=a.height,this.children.splice(r+1,0,a),a.parent=this}this.maybeSpill()}break}e-=o}},maybeSpill:function(){if(!(this.children.length<=10)){var e=this;do{var t=e.children.splice(e.children.length-5,5),n=new Kr(t);if(e.parent){e.size-=n.size,e.height-=n.height;var r=Ii(e.parent.children,e);e.parent.children.splice(r+1,0,n)}else{var i=new Kr(e.children);i.parent=e,e.children=[i,n],e=i}n.parent=e.parent}while(e.children.length>10);e.parent.maybeSpill()}},iterN:function(e,t,n){for(var r=0;re){var l=Math.min(t,o-e);if(i.iterN(e,l,n))return!0;if(0==(t-=l))break;e=0}else e-=o}}};var kl=0,Cl=e.Doc=function(e,t,n,r){if(!(this instanceof Cl))return new Cl(e,t,n,r);null==n&&(n=0),Kr.call(this,[new Vr([new xl("",null)])]),this.first=n,this.scrollTop=this.scrollLeft=0,this.cantEdit=!1,this.cleanGeneration=1,this.frontier=n;var i=Fo(n,0);this.sel=fe(i),this.history=new oi(null),this.id=++kl,this.modeOption=t,this.lineSep=r,this.extend=!1,"string"==typeof e&&(e=this.splitLines(e)),$r(this,{from:i,to:i,text:e}),Te(this,fe(i),Pl)};Cl.prototype=Pi(Kr.prototype,{constructor:Cl,iter:function(e,t,n){n?this.iterN(e-this.first,t-e,n):this.iterN(this.first,this.first+this.size,e)},insert:function(e,t){for(var n=0,r=0;r=0;o--)Tn(this,r[o]);a?Le(this,a):this.cm&&zn(this.cm)}),undo:Wt(function(){Nn(this,"undo")}),redo:Wt(function(){Nn(this,"redo")}),undoSelection:Wt(function(){Nn(this,"undo",!0)}),redoSelection:Wt(function(){Nn(this,"redo",!0)}),setExtending:function(e){this.extend=e},getExtending:function(){return this.extend},historySize:function(){for(var e=this.history,t=0,n=0,r=0;r=e.ch)&&t.push(i.marker.parent||i.marker)}return t},findMarks:function(e,t,n){e=me(this,e),t=me(this,t);var r=[],i=e.line;return this.iter(e.line,t.line+1,function(o){var l=o.markedSpans;if(l)for(var a=0;as.to||null==s.from&&i!=e.line||null!=s.from&&i==t.line&&s.from>t.ch||n&&!n(s.marker)||r.push(s.marker.parent||s.marker)}++i}),r},getAllMarks:function(){var e=[];return this.iter(function(t){var n=t.markedSpans;if(n)for(var r=0;re?(t=e,!0):(e-=i,void++n)}),me(this,Fo(n,t))},indexFromPos:function(e){e=me(this,e);var t=e.ch;return e.linet&&(t=e.from),null!=e.to&&e.toa||a>=t)return l+(t-o);l+=a-o,l+=n-l%n,o=a+1}},Bl=e.findColumn=function(e,t,n){for(var r=0,i=0;;){var o=e.indexOf(" ",r);-1==o&&(o=e.length);var l=o-r;if(o==e.length||i+l>=t)return r+Math.min(l,t-i);if(i+=o-r,i+=n-i%n,r=o+1,i>=t)return r}},jl=[""],_l=function(e){e.select()};No?_l=function(e){e.selectionStart=0,e.selectionEnd=e.value.length}:xo&&(_l=function(e){try{e.select()}catch(t){}});var ql,Ul=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,Gl=e.isWordChar=function(e){return/\w/.test(e)||e>"€"&&(e.toUpperCase()!=e.toLowerCase()||Ul.test(e))},$l=/[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/;ql=document.createRange?function(e,t,n,r){var i=document.createRange();return i.setEnd(r||e,n),i.setStart(e,t),i}:function(e,t,n){var r=document.body.createTextRange();try{r.moveToElementText(e.parentNode)}catch(i){return r}return r.collapse(!0),r.moveEnd("character",n),r.moveStart("character",t),r};var Vl=e.contains=function(e,t){if(3==t.nodeType&&(t=t.parentNode),e.contains)return e.contains(t);do if(11==t.nodeType&&(t=t.host),t==e)return!0;while(t=t.parentNode)};xo&&11>bo&&(Gi=function(){try{return document.activeElement}catch(e){return document.body}});var Kl,Xl,Yl=e.rmClass=function(e,t){var n=e.className,r=$i(t).exec(n);if(r){var i=n.slice(r.index+r[0].length);e.className=n.slice(0,r.index)+(i?r[1]+i:"")}},Zl=e.addClass=function(e,t){var n=e.className;$i(t).test(n)||(e.className+=(n?" ":"")+t)},Ql=!1,Jl=function(){if(xo&&9>bo)return!1;var e=_i("div");return"draggable"in e||"dragDrop"in e}(),ea=e.splitLines=3!="\n\nb".split(/\n/).length?function(e){for(var t=0,n=[],r=e.length;r>=t;){var i=e.indexOf("\n",t);-1==i&&(i=e.length);var o=e.slice(t,"\r"==e.charAt(i-1)?i-1:i),l=o.indexOf("\r");-1!=l?(n.push(o.slice(0,l)),t+=l+1):(n.push(o),t=i+1)}return n}:function(e){return e.split(/\r\n?|\n/)},ta=window.getSelection?function(e){try{return e.selectionStart!=e.selectionEnd}catch(t){return!1}}:function(e){try{var t=e.ownerDocument.selection.createRange()}catch(n){}return t&&t.parentElement()==e?0!=t.compareEndPoints("StartToEnd",t):!1},na=function(){var e=_i("div");return"oncopy"in e?!0:(e.setAttribute("oncopy","return;"),"function"==typeof e.oncopy)}(),ra=null,ia=e.keyNames={3:"Enter",8:"Backspace",9:"Tab",13:"Enter",16:"Shift",17:"Ctrl",18:"Alt",19:"Pause",20:"CapsLock",27:"Esc",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"Left",38:"Up",39:"Right",40:"Down",44:"PrintScrn",45:"Insert",46:"Delete",59:";",61:"=",91:"Mod",92:"Mod",93:"Mod",106:"*",107:"=",109:"-",110:".",111:"/",127:"Delete",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'",63232:"Up",63233:"Down",63234:"Left",63235:"Right",63272:"Delete",63273:"Home",63275:"End",63276:"PageUp",63277:"PageDown",63302:"Insert"};!function(){for(var e=0;10>e;e++)ia[e+48]=ia[e+96]=String(e);for(var e=65;90>=e;e++)ia[e]=String.fromCharCode(e);for(var e=1;12>=e;e++)ia[e+111]=ia[e+63235]="F"+e}();var oa,la=function(){function e(e){return 247>=e?n.charAt(e):e>=1424&&1524>=e?"R":e>=1536&&1773>=e?r.charAt(e-1536):e>=1774&&2220>=e?"r":e>=8192&&8203>=e?"w":8204==e?"b":"L"}function t(e,t,n){this.level=e,this.from=t,this.to=n}var n="bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN",r="rrrrrrrrrrrr,rNNmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmrrrrrrrnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmNmmmm",i=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,o=/[stwN]/,l=/[LRr]/,a=/[Lb1n]/,s=/[1n]/,c="L";return function(n){if(!i.test(n))return!1;for(var r,u=n.length,d=[],h=0;u>h;++h)d.push(r=e(n.charCodeAt(h)));for(var h=0,f=c;u>h;++h){var r=d[h];"m"==r?d[h]=f:f=r}for(var h=0,p=c;u>h;++h){var r=d[h];"1"==r&&"r"==p?d[h]="n":l.test(r)&&(p=r,"r"==r&&(d[h]="R"))}for(var h=1,f=d[0];u-1>h;++h){var r=d[h];"+"==r&&"1"==f&&"1"==d[h+1]?d[h]="1":","!=r||f!=d[h+1]||"1"!=f&&"n"!=f||(d[h]=f),f=r}for(var h=0;u>h;++h){var r=d[h];if(","==r)d[h]="N";else if("%"==r){for(var m=h+1;u>m&&"%"==d[m];++m);for(var g=h&&"!"==d[h-1]||u>m&&"1"==d[m]?"1":"N",v=h;m>v;++v)d[v]=g;h=m-1}}for(var h=0,p=c;u>h;++h){var r=d[h];"L"==p&&"1"==r?d[h]="L":l.test(r)&&(p=r)}for(var h=0;u>h;++h)if(o.test(d[h])){for(var m=h+1;u>m&&o.test(d[m]);++m);for(var y="L"==(h?d[h-1]:c),x="L"==(u>m?d[m]:c),g=y||x?"L":"R",v=h;m>v;++v)d[v]=g;h=m-1}for(var b,w=[],h=0;u>h;)if(a.test(d[h])){var k=h;for(++h;u>h&&a.test(d[h]);++h);w.push(new t(0,k,h))}else{var C=h,S=w.length;for(++h;u>h&&"L"!=d[h];++h);for(var v=C;h>v;)if(s.test(d[v])){v>C&&w.splice(S,0,new t(1,C,v));var L=v;for(++v;h>v&&s.test(d[v]);++v);w.splice(S,0,new t(2,L,v)),C=v}else++v;h>C&&w.splice(S,0,new t(1,C,h))}return 1==w[0].level&&(b=n.match(/^\s+/))&&(w[0].from=b[0].length,w.unshift(new t(0,0,b[0].length))),1==Wi(w).level&&(b=n.match(/\s+$/))&&(Wi(w).to-=b[0].length,w.push(new t(0,u-b[0].length,u))),2==w[0].level&&w.unshift(new t(1,w[0].to,w[0].to)),w[0].level!=Wi(w).level&&w.push(new t(w[0].level,u,u)),w}}();return e.version="5.12.1",e})},{}],8:[function(t,n,r){!function(i){"object"==typeof r&&"object"==typeof n?i(t("../../lib/codemirror"),t("../markdown/markdown"),t("../../addon/mode/overlay")):"function"==typeof e&&e.amd?e(["../../lib/codemirror","../markdown/markdown","../../addon/mode/overlay"],i):i(CodeMirror)}(function(e){"use strict";var t=/^((?:(?:aaas?|about|acap|adiumxtra|af[ps]|aim|apt|attachment|aw|beshare|bitcoin|bolo|callto|cap|chrome(?:-extension)?|cid|coap|com-eventbrite-attendee|content|crid|cvs|data|dav|dict|dlna-(?:playcontainer|playsingle)|dns|doi|dtn|dvb|ed2k|facetime|feed|file|finger|fish|ftp|geo|gg|git|gizmoproject|go|gopher|gtalk|h323|hcp|https?|iax|icap|icon|im|imap|info|ipn|ipp|irc[6s]?|iris(?:\.beep|\.lwz|\.xpc|\.xpcs)?|itms|jar|javascript|jms|keyparc|lastfm|ldaps?|magnet|mailto|maps|market|message|mid|mms|ms-help|msnim|msrps?|mtqp|mumble|mupdate|mvn|news|nfs|nih?|nntp|notes|oid|opaquelocktoken|palm|paparazzi|platform|pop|pres|proxy|psyc|query|res(?:ource)?|rmi|rsync|rtmp|rtsp|secondlife|service|session|sftp|sgn|shttp|sieve|sips?|skype|sm[bs]|snmp|soap\.beeps?|soldat|spotify|ssh|steam|svn|tag|teamspeak|tel(?:net)?|tftp|things|thismessage|tip|tn3270|tv|udp|unreal|urn|ut2004|vemmi|ventrilo|view-source|webcal|wss?|wtai|wyciwyg|xcon(?:-userid)?|xfire|xmlrpc\.beeps?|xmpp|xri|ymsgr|z39\.50[rs]?):(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]|\([^\s()<>]*\))+(?:\([^\s()<>]*\)|[^\s`*!()\[\]{};:'".,<>?«»“”‘’]))/i;e.defineMode("gfm",function(n,r){function i(e){return e.code=!1,null}var o=0,l={startState:function(){return{code:!1,codeBlock:!1,ateSpace:!1}},copyState:function(e){return{code:e.code,codeBlock:e.codeBlock,ateSpace:e.ateSpace}},token:function(e,n){if(n.combineTokens=null,n.codeBlock)return e.match(/^```+/)?(n.codeBlock=!1,null):(e.skipToEnd(),null);if(e.sol()&&(n.code=!1),e.sol()&&e.match(/^```+/))return e.skipToEnd(),n.codeBlock=!0,null;if("`"===e.peek()){e.next();var i=e.pos;e.eatWhile("`");var l=1+e.pos-i;return n.code?l===o&&(n.code=!1):(o=l,n.code=!0),null}if(n.code)return e.next(),null;if(e.eatSpace())return n.ateSpace=!0,null;if((e.sol()||n.ateSpace)&&(n.ateSpace=!1,r.gitHubSpice!==!1)){if(e.match(/^(?:[a-zA-Z0-9\-_]+\/)?(?:[a-zA-Z0-9\-_]+@)?(?:[a-f0-9]{7,40}\b)/))return n.combineTokens=!0,"link";if(e.match(/^(?:[a-zA-Z0-9\-_]+\/)?(?:[a-zA-Z0-9\-_]+)?#[0-9]+\b/))return n.combineTokens=!0,"link"}return e.match(t)&&"]("!=e.string.slice(e.start-2,e.start)&&(0==e.start||/\W/.test(e.string.charAt(e.start-1)))?(n.combineTokens=!0,"link"):(e.next(),null)},blankLine:i},a={underscoresBreakWords:!1,taskLists:!0,fencedCodeBlocks:"```",strikethrough:!0};for(var s in r)a[s]=r[s];return a.name="markdown",e.overlayMode(e.getMode(n,a),l)},"markdown"),e.defineMIME("text/x-gfm","gfm")})},{"../../addon/mode/overlay":6,"../../lib/codemirror":7,"../markdown/markdown":9}],9:[function(t,n,r){!function(i){"object"==typeof r&&"object"==typeof n?i(t("../../lib/codemirror"),t("../xml/xml"),t("../meta")):"function"==typeof e&&e.amd?e(["../../lib/codemirror","../xml/xml","../meta"],i):i(CodeMirror)}(function(e){"use strict";e.defineMode("markdown",function(t,n){function r(n){if(e.findModeByName){var r=e.findModeByName(n);r&&(n=r.mime||r.mimes[0])}var i=e.getMode(t,n);return"null"==i.name?null:i}function i(e,t,n){return t.f=t.inline=n,n(e,t)}function o(e,t,n){return t.f=t.block=n,n(e,t)}function l(e){return!e||!/\S/.test(e.string)}function a(e){return e.linkTitle=!1,e.em=!1,e.strong=!1,e.strikethrough=!1,e.quote=0,e.indentedCode=!1,C&&e.f==c&&(e.f=p,e.block=s),e.trailingSpace=0,e.trailingSpaceNewLine=!1,e.prevLine=e.thisLine,e.thisLine=null,null}function s(e,t){var o=e.sol(),a=t.list!==!1,s=t.indentedCode;t.indentedCode=!1,a&&(t.indentationDiff>=0?(t.indentationDiff<4&&(t.indentation-=t.indentationDiff),t.list=null):t.indentation>0?t.list=null:t.list=!1);var c=null;if(t.indentationDiff>=4)return e.skipToEnd(),s||l(t.prevLine)?(t.indentation-=4,t.indentedCode=!0,S.code):null;if(e.eatSpace())return null;if((c=e.match(O))&&c[1].length<=6)return t.header=c[1].length,n.highlightFormatting&&(t.formatting="header"),t.f=t.inline,h(t);if(!(l(t.prevLine)||t.quote||a||s)&&(c=e.match(H)))return t.header="="==c[0].charAt(0)?1:2,n.highlightFormatting&&(t.formatting="header"),t.f=t.inline,h(t);if(e.eat(">"))return t.quote=o?1:t.quote+1,n.highlightFormatting&&(t.formatting="quote"),e.eatSpace(),h(t);if("["===e.peek())return i(e,t,y);if(e.match(T,!0))return t.hr=!0,S.hr;if((l(t.prevLine)||a)&&(e.match(M,!1)||e.match(N,!1))){var d=null;for(e.match(M,!0)?d="ul":(e.match(N,!0),d="ol"),t.indentation=e.column()+e.current().length,t.list=!0;t.listStack&&e.column()")>-1)&&(n.f=p,n.block=s,n.htmlState=null)}return r}function u(e,t){return t.fencedChars&&e.match(t.fencedChars,!1)?(t.localMode=t.localState=null,t.f=t.block=d,null):t.localMode?t.localMode.token(e,t.localState):(e.skipToEnd(),S.code)}function d(e,t){e.match(t.fencedChars),t.block=s,t.f=p,t.fencedChars=null,n.highlightFormatting&&(t.formatting="code-block"),t.code=1;var r=h(t);return t.code=0,r}function h(e){var t=[];if(e.formatting){t.push(S.formatting),"string"==typeof e.formatting&&(e.formatting=[e.formatting]);for(var r=0;r=e.quote?t.push(S.formatting+"-"+e.formatting[r]+"-"+e.quote):t.push("error"))}if(e.taskOpen)return t.push("meta"),t.length?t.join(" "):null;if(e.taskClosed)return t.push("property"),t.length?t.join(" "):null;if(e.linkHref?t.push(S.linkHref,"url"):(e.strong&&t.push(S.strong),e.em&&t.push(S.em),e.strikethrough&&t.push(S.strikethrough),e.linkText&&t.push(S.linkText),e.code&&t.push(S.code)),e.header&&t.push(S.header,S.header+"-"+e.header),e.quote&&(t.push(S.quote),!n.maxBlockquoteDepth||n.maxBlockquoteDepth>=e.quote?t.push(S.quote+"-"+e.quote):t.push(S.quote+"-"+n.maxBlockquoteDepth)),e.list!==!1){var i=(e.listStack.length-1)%3;i?1===i?t.push(S.list2):t.push(S.list3):t.push(S.list1)}return e.trailingSpaceNewLine?t.push("trailing-space-new-line"):e.trailingSpace&&t.push("trailing-space-"+(e.trailingSpace%2?"a":"b")),t.length?t.join(" "):null}function f(e,t){return e.match(W,!0)?h(t):void 0}function p(t,r){var i=r.text(t,r);if("undefined"!=typeof i)return i;if(r.list)return r.list=null,h(r);if(r.taskList){var l="x"!==t.match(A,!0)[1];return l?r.taskOpen=!0:r.taskClosed=!0,n.highlightFormatting&&(r.formatting="task"),r.taskList=!1,h(r)}if(r.taskOpen=!1,r.taskClosed=!1,r.header&&t.match(/^#+$/,!0))return n.highlightFormatting&&(r.formatting="header"),h(r);var a=t.sol(),s=t.next();if(r.linkTitle){r.linkTitle=!1;var u=s;"("===s&&(u=")"),u=(u+"").replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1");var d="^\\s*(?:[^"+u+"\\\\]+|\\\\\\\\|\\\\.)"+u;if(t.match(new RegExp(d),!0))return S.linkHref}if("`"===s){var f=r.formatting;n.highlightFormatting&&(r.formatting="code"),t.eatWhile("`");var p=t.current().length;if(0==r.code)return r.code=p,h(r);if(p==r.code){var v=h(r);return r.code=0,v}return r.formatting=f,h(r)}if(r.code)return h(r);if("\\"===s&&(t.next(),n.highlightFormatting)){var y=h(r),x=S.formatting+"-escape";return y?y+" "+x:x}if("!"===s&&t.match(/\[[^\]]*\] ?(?:\(|\[)/,!1))return t.match(/\[[^\]]*\]/),r.inline=r.f=g,S.image;if("["===s&&t.match(/.*\](\(.*\)| ?\[.*\])/,!1))return r.linkText=!0,n.highlightFormatting&&(r.formatting="link"),h(r);if("]"===s&&r.linkText&&t.match(/\(.*\)| ?\[.*\]/,!1)){n.highlightFormatting&&(r.formatting="link");var y=h(r);return r.linkText=!1,r.inline=r.f=g,y}if("<"===s&&t.match(/^(https?|ftps?):\/\/(?:[^\\>]|\\.)+>/,!1)){r.f=r.inline=m,n.highlightFormatting&&(r.formatting="link");var y=h(r);return y?y+=" ":y="",y+S.linkInline}if("<"===s&&t.match(/^[^> \\]+@(?:[^\\>]|\\.)+>/,!1)){r.f=r.inline=m,n.highlightFormatting&&(r.formatting="link");var y=h(r);return y?y+=" ":y="",y+S.linkEmail}if("<"===s&&t.match(/^(!--|\w)/,!1)){var b=t.string.indexOf(">",t.pos);if(-1!=b){var w=t.string.substring(t.start,b);/markdown\s*=\s*('|"){0,1}1('|"){0,1}/.test(w)&&(r.md_inside=!0)}return t.backUp(1),r.htmlState=e.startState(k),o(t,r,c)}if("<"===s&&t.match(/^\/\w*?>/))return r.md_inside=!1,"tag";var C=!1;if(!n.underscoresBreakWords&&"_"===s&&"_"!==t.peek()&&t.match(/(\w)/,!1)){var L=t.pos-2;if(L>=0){var T=t.string.charAt(L);"_"!==T&&T.match(/(\w)/,!1)&&(C=!0)}}if("*"===s||"_"===s&&!C)if(a&&" "===t.peek());else{if(r.strong===s&&t.eat(s)){n.highlightFormatting&&(r.formatting="strong");var v=h(r);return r.strong=!1,v}if(!r.strong&&t.eat(s))return r.strong=s,n.highlightFormatting&&(r.formatting="strong"),h(r);if(r.em===s){n.highlightFormatting&&(r.formatting="em");var v=h(r);return r.em=!1,v}if(!r.em)return r.em=s,n.highlightFormatting&&(r.formatting="em"),h(r)}else if(" "===s&&(t.eat("*")||t.eat("_"))){if(" "===t.peek())return h(r);t.backUp(1)}if(n.strikethrough)if("~"===s&&t.eatWhile(s)){if(r.strikethrough){n.highlightFormatting&&(r.formatting="strikethrough");var v=h(r);return r.strikethrough=!1,v}if(t.match(/^[^\s]/,!1))return r.strikethrough=!0,n.highlightFormatting&&(r.formatting="strikethrough"),h(r)}else if(" "===s&&t.match(/^~~/,!0)){if(" "===t.peek())return h(r);t.backUp(2)}return" "===s&&(t.match(/ +$/,!1)?r.trailingSpace++:r.trailingSpace&&(r.trailingSpaceNewLine=!0)),h(r)}function m(e,t){var r=e.next();if(">"===r){t.f=t.inline=p,n.highlightFormatting&&(t.formatting="link");var i=h(t);return i?i+=" ":i="",i+S.linkInline}return e.match(/^[^>]+/,!0),S.linkInline}function g(e,t){if(e.eatSpace())return null;var r=e.next();return"("===r||"["===r?(t.f=t.inline=v("("===r?")":"]"),n.highlightFormatting&&(t.formatting="link-string"),t.linkHref=!0,h(t)):"error"}function v(e){return function(t,r){var i=t.next();if(i===e){r.f=r.inline=p,n.highlightFormatting&&(r.formatting="link-string");var o=h(r);return r.linkHref=!1,o}return t.match(w(e),!0)&&t.backUp(1),r.linkHref=!0,h(r)}}function y(e,t){return e.match(/^([^\]\\]|\\.)*\]:/,!1)?(t.f=x,e.next(),n.highlightFormatting&&(t.formatting="link"),t.linkText=!0,h(t)):i(e,t,p)}function x(e,t){if(e.match(/^\]:/,!0)){t.f=t.inline=b,n.highlightFormatting&&(t.formatting="link");var r=h(t);return t.linkText=!1,r}return e.match(/^([^\]\\]|\\.)+/,!0),S.linkText}function b(e,t){return e.eatSpace()?null:(e.match(/^[^\s]+/,!0),void 0===e.peek()?t.linkTitle=!0:e.match(/^(?:\s+(?:"(?:[^"\\]|\\\\|\\.)+"|'(?:[^'\\]|\\\\|\\.)+'|\((?:[^)\\]|\\\\|\\.)+\)))?/,!0),t.f=t.inline=p,S.linkHref+" url")}function w(e){return E[e]||(e=(e+"").replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1"),E[e]=new RegExp("^(?:[^\\\\]|\\\\.)*?("+e+")")),E[e]}var k=e.getMode(t,"text/html"),C="null"==k.name;void 0===n.highlightFormatting&&(n.highlightFormatting=!1),void 0===n.maxBlockquoteDepth&&(n.maxBlockquoteDepth=0),void 0===n.underscoresBreakWords&&(n.underscoresBreakWords=!0),void 0===n.taskLists&&(n.taskLists=!1),void 0===n.strikethrough&&(n.strikethrough=!1),void 0===n.tokenTypeOverrides&&(n.tokenTypeOverrides={});var S={header:"header",code:"comment",quote:"quote",list1:"variable-2",list2:"variable-3",list3:"keyword",hr:"hr",image:"tag",formatting:"formatting",linkInline:"link",linkEmail:"link",linkText:"link",linkHref:"string",em:"em",strong:"strong",strikethrough:"strikethrough"};for(var L in S)S.hasOwnProperty(L)&&n.tokenTypeOverrides[L]&&(S[L]=n.tokenTypeOverrides[L]);var T=/^([*\-_])(?:\s*\1){2,}\s*$/,M=/^[*\-+]\s+/,N=/^[0-9]+([.)])\s+/,A=/^\[(x| )\](?=\s)/,O=n.allowAtxHeaderWithoutSpace?/^(#+)/:/^(#+)(?: |$)/,H=/^ *(?:\={1,}|-{1,})\s*$/,W=/^[^#!\[\]*_\\<>` "'(~]+/,I=new RegExp("^("+(n.fencedCodeBlocks===!0?"~~~+|```+":n.fencedCodeBlocks)+")[ \\t]*([\\w+#]*)"),E=[],D={startState:function(){return{f:s,prevLine:null,thisLine:null,block:s,htmlState:null,indentation:0,inline:p,text:f,formatting:!1,linkText:!1,linkHref:!1,linkTitle:!1,code:0,em:!1,strong:!1,header:0,hr:!1,taskList:!1,list:!1,listStack:[],quote:0,trailingSpace:0,trailingSpaceNewLine:!1,strikethrough:!1,fencedChars:null}},copyState:function(t){return{f:t.f,prevLine:t.prevLine,thisLine:t.thisLine,block:t.block,htmlState:t.htmlState&&e.copyState(k,t.htmlState),indentation:t.indentation,localMode:t.localMode,localState:t.localMode?e.copyState(t.localMode,t.localState):null,inline:t.inline,text:t.text,formatting:!1,linkTitle:t.linkTitle,code:t.code,em:t.em,strong:t.strong,strikethrough:t.strikethrough,header:t.header,hr:t.hr,taskList:t.taskList,list:t.list,listStack:t.listStack.slice(0),quote:t.quote,indentedCode:t.indentedCode,trailingSpace:t.trailingSpace,trailingSpaceNewLine:t.trailingSpaceNewLine,md_inside:t.md_inside,fencedChars:t.fencedChars}},token:function(e,t){if(t.formatting=!1,e!=t.thisLine){var n=t.header||t.hr;if(t.header=0,t.hr=!1,e.match(/^\s*$/,!0)||n){if(a(t),!n)return null;t.prevLine=null}t.prevLine=t.thisLine,t.thisLine=e,t.taskList=!1,t.trailingSpace=0,t.trailingSpaceNewLine=!1,t.f=t.block;var r=e.match(/^\s*/,!0)[0].replace(/\t/g," ").length;if(t.indentationDiff=Math.min(r-t.indentation,4),t.indentation=t.indentation+t.indentationDiff,r>0)return null}return t.f(e,t)},innerMode:function(e){return e.block==c?{state:e.htmlState,mode:k}:e.localState?{state:e.localState,mode:e.localMode}:{state:e,mode:D}},blankLine:a,getType:h,fold:"markdown"};return D},"xml"),e.defineMIME("text/x-markdown","markdown")})},{"../../lib/codemirror":7,"../meta":10,"../xml/xml":11}],10:[function(t,n,r){!function(i){"object"==typeof r&&"object"==typeof n?i(t("../lib/codemirror")):"function"==typeof e&&e.amd?e(["../lib/codemirror"],i):i(CodeMirror)}(function(e){"use strict";e.modeInfo=[{name:"APL",mime:"text/apl",mode:"apl",ext:["dyalog","apl"]},{name:"PGP",mimes:["application/pgp","application/pgp-keys","application/pgp-signature"],mode:"asciiarmor",ext:["pgp"]},{name:"ASN.1",mime:"text/x-ttcn-asn",mode:"asn.1",ext:["asn","asn1"]},{name:"Asterisk",mime:"text/x-asterisk",mode:"asterisk",file:/^extensions\.conf$/i},{name:"Brainfuck",mime:"text/x-brainfuck",mode:"brainfuck",ext:["b","bf"]},{name:"C",mime:"text/x-csrc",mode:"clike",ext:["c","h"]},{name:"C++",mime:"text/x-c++src",mode:"clike",ext:["cpp","c++","cc","cxx","hpp","h++","hh","hxx"],alias:["cpp"]},{name:"Cobol",mime:"text/x-cobol",mode:"cobol",ext:["cob","cpy"]},{name:"C#",mime:"text/x-csharp",mode:"clike",ext:["cs"],alias:["csharp"]},{name:"Clojure",mime:"text/x-clojure",mode:"clojure",ext:["clj","cljc","cljx"]},{name:"ClojureScript",mime:"text/x-clojurescript",mode:"clojure",ext:["cljs"]},{name:"Closure Stylesheets (GSS)",mime:"text/x-gss",mode:"css",ext:["gss"]},{name:"CMake",mime:"text/x-cmake",mode:"cmake",ext:["cmake","cmake.in"],file:/^CMakeLists.txt$/},{name:"CoffeeScript",mime:"text/x-coffeescript",mode:"coffeescript",ext:["coffee"],alias:["coffee","coffee-script"]},{name:"Common Lisp",mime:"text/x-common-lisp",mode:"commonlisp",ext:["cl","lisp","el"],alias:["lisp"]},{name:"Cypher",mime:"application/x-cypher-query",mode:"cypher",ext:["cyp","cypher"]},{name:"Cython",mime:"text/x-cython",mode:"python",ext:["pyx","pxd","pxi"]},{name:"Crystal",mime:"text/x-crystal",mode:"crystal",ext:["cr"]},{name:"CSS",mime:"text/css",mode:"css",ext:["css"]},{name:"CQL",mime:"text/x-cassandra",mode:"sql",ext:["cql"]},{name:"D",mime:"text/x-d",mode:"d",ext:["d"]},{name:"Dart",mimes:["application/dart","text/x-dart"],mode:"dart",ext:["dart"]},{name:"diff",mime:"text/x-diff",mode:"diff",ext:["diff","patch"]},{name:"Django",mime:"text/x-django",mode:"django"},{name:"Dockerfile",mime:"text/x-dockerfile",mode:"dockerfile",file:/^Dockerfile$/},{name:"DTD",mime:"application/xml-dtd",mode:"dtd",ext:["dtd"]},{name:"Dylan",mime:"text/x-dylan",mode:"dylan",ext:["dylan","dyl","intr"]},{name:"EBNF",mime:"text/x-ebnf",mode:"ebnf"},{name:"ECL",mime:"text/x-ecl",mode:"ecl",ext:["ecl"]},{name:"edn",mime:"application/edn",mode:"clojure",ext:["edn"]},{name:"Eiffel",mime:"text/x-eiffel",mode:"eiffel",ext:["e"]},{name:"Elm",mime:"text/x-elm",mode:"elm",ext:["elm"]},{name:"Embedded Javascript",mime:"application/x-ejs",mode:"htmlembedded",ext:["ejs"]},{name:"Embedded Ruby",mime:"application/x-erb",mode:"htmlembedded",ext:["erb"]},{name:"Erlang",mime:"text/x-erlang",mode:"erlang",ext:["erl"]},{name:"Factor",mime:"text/x-factor",mode:"factor",ext:["factor"]},{name:"FCL",mime:"text/x-fcl",mode:"fcl"},{name:"Forth",mime:"text/x-forth",mode:"forth",ext:["forth","fth","4th"]},{name:"Fortran",mime:"text/x-fortran",mode:"fortran",ext:["f","for","f77","f90"]},{name:"F#",mime:"text/x-fsharp",mode:"mllike",ext:["fs"],alias:["fsharp"]},{name:"Gas",mime:"text/x-gas",mode:"gas",ext:["s"]},{name:"Gherkin",mime:"text/x-feature",mode:"gherkin",ext:["feature"]},{name:"GitHub Flavored Markdown",mime:"text/x-gfm",mode:"gfm",file:/^(readme|contributing|history).md$/i},{name:"Go",mime:"text/x-go",mode:"go",ext:["go"]},{name:"Groovy",mime:"text/x-groovy",mode:"groovy",ext:["groovy","gradle"]},{name:"HAML",mime:"text/x-haml",mode:"haml",ext:["haml"]},{name:"Haskell",mime:"text/x-haskell",mode:"haskell",ext:["hs"]},{name:"Haskell (Literate)",mime:"text/x-literate-haskell",mode:"haskell-literate",ext:["lhs"]},{name:"Haxe",mime:"text/x-haxe",mode:"haxe",ext:["hx"]},{name:"HXML",mime:"text/x-hxml",mode:"haxe",ext:["hxml"]},{name:"ASP.NET",mime:"application/x-aspx",mode:"htmlembedded",ext:["aspx"],alias:["asp","aspx"]},{name:"HTML",mime:"text/html",mode:"htmlmixed",ext:["html","htm"],alias:["xhtml"]},{name:"HTTP",mime:"message/http",mode:"http"},{name:"IDL",mime:"text/x-idl",mode:"idl",ext:["pro"]},{name:"Jade",mime:"text/x-jade",mode:"jade",ext:["jade"]},{name:"Java",mime:"text/x-java",mode:"clike",ext:["java"]},{name:"Java Server Pages",mime:"application/x-jsp",mode:"htmlembedded",ext:["jsp"],alias:["jsp"]},{name:"JavaScript",mimes:["text/javascript","text/ecmascript","application/javascript","application/x-javascript","application/ecmascript"],mode:"javascript",ext:["js"],alias:["ecmascript","js","node"]},{name:"JSON",mimes:["application/json","application/x-json"],mode:"javascript",ext:["json","map"],alias:["json5"]},{name:"JSON-LD",mime:"application/ld+json",mode:"javascript",ext:["jsonld"],alias:["jsonld"]},{name:"JSX",mime:"text/jsx",mode:"jsx",ext:["jsx"]},{name:"Jinja2",mime:"null",mode:"jinja2"},{name:"Julia",mime:"text/x-julia",mode:"julia",ext:["jl"]},{name:"Kotlin",mime:"text/x-kotlin",mode:"clike",ext:["kt"]},{name:"LESS",mime:"text/x-less",mode:"css",ext:["less"]},{name:"LiveScript",mime:"text/x-livescript",mode:"livescript",ext:["ls"],alias:["ls"]},{name:"Lua",mime:"text/x-lua",mode:"lua",ext:["lua"]},{name:"Markdown",mime:"text/x-markdown",mode:"markdown",ext:["markdown","md","mkd"]},{name:"mIRC",mime:"text/mirc",mode:"mirc"},{name:"MariaDB SQL",mime:"text/x-mariadb",mode:"sql"},{name:"Mathematica",mime:"text/x-mathematica",mode:"mathematica",ext:["m","nb"]},{name:"Modelica",mime:"text/x-modelica",mode:"modelica",ext:["mo"]},{name:"MUMPS",mime:"text/x-mumps",mode:"mumps",ext:["mps"]},{name:"MS SQL",mime:"text/x-mssql",mode:"sql"},{name:"MySQL",mime:"text/x-mysql",mode:"sql"},{name:"Nginx",mime:"text/x-nginx-conf",mode:"nginx",file:/nginx.*\.conf$/i},{name:"NSIS",mime:"text/x-nsis",mode:"nsis",ext:["nsh","nsi"]},{name:"NTriples",mime:"text/n-triples",mode:"ntriples",ext:["nt"]},{name:"Objective C",mime:"text/x-objectivec",mode:"clike",ext:["m","mm"]},{name:"OCaml",mime:"text/x-ocaml",mode:"mllike",ext:["ml","mli","mll","mly"]},{name:"Octave",mime:"text/x-octave",mode:"octave",ext:["m"]},{name:"Oz",mime:"text/x-oz",mode:"oz",ext:["oz"]},{name:"Pascal",mime:"text/x-pascal",mode:"pascal",ext:["p","pas"]},{name:"PEG.js",mime:"null",mode:"pegjs",ext:["jsonld"]},{name:"Perl",mime:"text/x-perl",mode:"perl",ext:["pl","pm"]},{name:"PHP",mime:"application/x-httpd-php",mode:"php",ext:["php","php3","php4","php5","phtml"]},{name:"Pig",mime:"text/x-pig",mode:"pig",ext:["pig"]},{name:"Plain Text",mime:"text/plain",mode:"null",ext:["txt","text","conf","def","list","log"]},{name:"PLSQL",mime:"text/x-plsql",mode:"sql",ext:["pls"]},{name:"Properties files",mime:"text/x-properties",mode:"properties",ext:["properties","ini","in"],alias:["ini","properties"]},{name:"ProtoBuf",mime:"text/x-protobuf",mode:"protobuf",ext:["proto"]},{name:"Python",mime:"text/x-python",mode:"python",ext:["py","pyw"]},{name:"Puppet",mime:"text/x-puppet",mode:"puppet",ext:["pp"]},{name:"Q",mime:"text/x-q",mode:"q",ext:["q"]},{name:"R",mime:"text/x-rsrc",mode:"r",ext:["r"],alias:["rscript"]},{name:"reStructuredText",mime:"text/x-rst",mode:"rst",ext:["rst"],alias:["rst"]},{name:"RPM Changes",mime:"text/x-rpm-changes",mode:"rpm"},{name:"RPM Spec",mime:"text/x-rpm-spec",mode:"rpm",ext:["spec"]},{name:"Ruby",mime:"text/x-ruby",mode:"ruby",ext:["rb"],alias:["jruby","macruby","rake","rb","rbx"]},{name:"Rust",mime:"text/x-rustsrc",mode:"rust",ext:["rs"]},{name:"Sass",mime:"text/x-sass",mode:"sass",ext:["sass"]},{name:"Scala",mime:"text/x-scala",mode:"clike",ext:["scala"]},{name:"Scheme",mime:"text/x-scheme",mode:"scheme",ext:["scm","ss"]},{name:"SCSS",mime:"text/x-scss",mode:"css",ext:["scss"]},{name:"Shell",mime:"text/x-sh",mode:"shell",ext:["sh","ksh","bash"],alias:["bash","sh","zsh"],file:/^PKGBUILD$/},{name:"Sieve",mime:"application/sieve",mode:"sieve",ext:["siv","sieve"]},{name:"Slim",mimes:["text/x-slim","application/x-slim"],mode:"slim",ext:["slim"]},{name:"Smalltalk",mime:"text/x-stsrc",mode:"smalltalk",ext:["st"]},{name:"Smarty",mime:"text/x-smarty",mode:"smarty",ext:["tpl"]},{name:"Solr",mime:"text/x-solr",mode:"solr"},{name:"Soy",mime:"text/x-soy",mode:"soy",ext:["soy"],alias:["closure template"]},{name:"SPARQL",mime:"application/sparql-query",mode:"sparql",ext:["rq","sparql"],alias:["sparul"]},{name:"Spreadsheet",mime:"text/x-spreadsheet",mode:"spreadsheet",alias:["excel","formula"]},{name:"SQL",mime:"text/x-sql",mode:"sql",ext:["sql"]},{name:"Squirrel",mime:"text/x-squirrel",mode:"clike",ext:["nut"]},{name:"Swift",mime:"text/x-swift",mode:"swift",ext:["swift"]},{name:"sTeX",mime:"text/x-stex",mode:"stex"},{name:"LaTeX",mime:"text/x-latex",mode:"stex",ext:["text","ltx"],alias:["tex"]},{name:"SystemVerilog",mime:"text/x-systemverilog",mode:"verilog",ext:["v"]},{name:"Tcl",mime:"text/x-tcl",mode:"tcl",ext:["tcl"]},{name:"Textile",mime:"text/x-textile",mode:"textile",ext:["textile"]},{name:"TiddlyWiki ",mime:"text/x-tiddlywiki",mode:"tiddlywiki"},{name:"Tiki wiki",mime:"text/tiki",mode:"tiki"},{name:"TOML",mime:"text/x-toml",mode:"toml",ext:["toml"]},{name:"Tornado",mime:"text/x-tornado",mode:"tornado"},{name:"troff",mime:"text/troff",mode:"troff",ext:["1","2","3","4","5","6","7","8","9"]},{name:"TTCN",mime:"text/x-ttcn",mode:"ttcn",ext:["ttcn","ttcn3","ttcnpp"]},{name:"TTCN_CFG",mime:"text/x-ttcn-cfg",mode:"ttcn-cfg",ext:["cfg"]},{name:"Turtle",mime:"text/turtle",mode:"turtle",ext:["ttl"]},{name:"TypeScript",mime:"application/typescript",mode:"javascript",ext:["ts"],alias:["ts"]},{name:"Twig",mime:"text/x-twig",mode:"twig"},{name:"VB.NET",mime:"text/x-vb",mode:"vb",ext:["vb"]},{name:"VBScript",mime:"text/vbscript",mode:"vbscript",ext:["vbs"]},{name:"Velocity",mime:"text/velocity",mode:"velocity",ext:["vtl"]},{name:"Verilog",mime:"text/x-verilog",mode:"verilog", -ext:["v"]},{name:"VHDL",mime:"text/x-vhdl",mode:"vhdl",ext:["vhd","vhdl"]},{name:"XML",mimes:["application/xml","text/xml"],mode:"xml",ext:["xml","xsl","xsd"],alias:["rss","wsdl","xsd"]},{name:"XQuery",mime:"application/xquery",mode:"xquery",ext:["xy","xquery"]},{name:"YAML",mime:"text/x-yaml",mode:"yaml",ext:["yaml","yml"],alias:["yml"]},{name:"Z80",mime:"text/x-z80",mode:"z80",ext:["z80"]},{name:"mscgen",mime:"text/x-mscgen",mode:"mscgen",ext:["mscgen","mscin","msc"]},{name:"xu",mime:"text/x-xu",mode:"mscgen",ext:["xu"]},{name:"msgenny",mime:"text/x-msgenny",mode:"mscgen",ext:["msgenny"]}];for(var t=0;t-1&&t.substring(i+1,t.length);return o?e.findModeByExtension(o):void 0},e.findModeByName=function(t){t=t.toLowerCase();for(var n=0;n")):null:e.match("--")?n(s("comment","-->")):e.match("DOCTYPE",!0,!0)?(e.eatWhile(/[\w\._\-]/),n(c(1))):null:e.eat("?")?(e.eatWhile(/[\w\._\-]/),t.tokenize=s("meta","?>"),"meta"):(T=e.eat("/")?"closeTag":"openTag",t.tokenize=l,"tag bracket");if("&"==r){var i;return i=e.eat("#")?e.eat("x")?e.eatWhile(/[a-fA-F\d]/)&&e.eat(";"):e.eatWhile(/[\d]/)&&e.eat(";"):e.eatWhile(/[\w\.\-:]/)&&e.eat(";"),i?"atom":"error"}return e.eatWhile(/[^&<]/),null}function l(e,t){var n=e.next();if(">"==n||"/"==n&&e.eat(">"))return t.tokenize=o,T=">"==n?"endTag":"selfcloseTag","tag bracket";if("="==n)return T="equals",null;if("<"==n){t.tokenize=o,t.state=f,t.tagName=t.tagStart=null;var r=t.tokenize(e,t);return r?r+" tag error":"tag error"}return/[\'\"]/.test(n)?(t.tokenize=a(n),t.stringStartCol=e.column(),t.tokenize(e,t)):(e.match(/^[^\s\u00a0=<>\"\']*[^\s\u00a0=<>\"\'\/]/),"word")}function a(e){var t=function(t,n){for(;!t.eol();)if(t.next()==e){n.tokenize=l;break}return"string"};return t.isInAttribute=!0,t}function s(e,t){return function(n,r){for(;!n.eol();){if(n.match(t)){r.tokenize=o;break}n.next()}return e}}function c(e){return function(t,n){for(var r;null!=(r=t.next());){if("<"==r)return n.tokenize=c(e+1),n.tokenize(t,n);if(">"==r){if(1==e){n.tokenize=o;break}return n.tokenize=c(e-1),n.tokenize(t,n)}}return"meta"}}function u(e,t,n){this.prev=e.context,this.tagName=t,this.indent=e.indented,this.startOfLine=n,(C.doNotIndent.hasOwnProperty(t)||e.context&&e.context.noIndent)&&(this.noIndent=!0)}function d(e){e.context&&(e.context=e.context.prev)}function h(e,t){for(var n;;){if(!e.context)return;if(n=e.context.tagName,!C.contextGrabbers.hasOwnProperty(n)||!C.contextGrabbers[n].hasOwnProperty(t))return;d(e)}}function f(e,t,n){return"openTag"==e?(n.tagStart=t.column(),p):"closeTag"==e?m:f}function p(e,t,n){return"word"==e?(n.tagName=t.current(),M="tag",y):(M="error",p)}function m(e,t,n){if("word"==e){var r=t.current();return n.context&&n.context.tagName!=r&&C.implicitlyClosed.hasOwnProperty(n.context.tagName)&&d(n),n.context&&n.context.tagName==r||C.matchClosing===!1?(M="tag",g):(M="tag error",v)}return M="error",v}function g(e,t,n){return"endTag"!=e?(M="error",g):(d(n),f)}function v(e,t,n){return M="error",g(e,t,n)}function y(e,t,n){if("word"==e)return M="attribute",x;if("endTag"==e||"selfcloseTag"==e){var r=n.tagName,i=n.tagStart;return n.tagName=n.tagStart=null,"selfcloseTag"==e||C.autoSelfClosers.hasOwnProperty(r)?h(n,r):(h(n,r),n.context=new u(n,r,i==n.indented)),f}return M="error",y}function x(e,t,n){return"equals"==e?b:(C.allowMissing||(M="error"),y(e,t,n))}function b(e,t,n){return"string"==e?w:"word"==e&&C.allowUnquoted?(M="string",y):(M="error",y(e,t,n))}function w(e,t,n){return"string"==e?w:y(e,t,n)}var k=r.indentUnit,C={},S=i.htmlMode?t:n;for(var L in S)C[L]=S[L];for(var L in i)C[L]=i[L];var T,M;return o.isInText=!0,{startState:function(e){var t={tokenize:o,state:f,indented:e||0,tagName:null,tagStart:null,context:null};return null!=e&&(t.baseIndent=e),t},token:function(e,t){if(!t.tagName&&e.sol()&&(t.indented=e.indentation()),e.eatSpace())return null;T=null;var n=t.tokenize(e,t);return(n||T)&&"comment"!=n&&(M=null,t.state=t.state(T||n,e,t),M&&(n="error"==M?n+" error":M)),n},indent:function(t,n,r){var i=t.context;if(t.tokenize.isInAttribute)return t.tagStart==t.indented?t.stringStartCol+1:t.indented+k;if(i&&i.noIndent)return e.Pass;if(t.tokenize!=l&&t.tokenize!=o)return r?r.match(/^(\s*)/)[0].length:0;if(t.tagName)return C.multilineTagIndentPastTag!==!1?t.tagStart+t.tagName.length+2:t.tagStart+k*(C.multilineTagIndentFactor||1);if(C.alignCDATA&&/$/,blockCommentStart:"",configuration:C.htmlMode?"html":"xml",helperType:C.htmlMode?"html":"xml",skipAttribute:function(e){e.state==b&&(e.state=y)}}}),e.defineMIME("text/xml","xml"),e.defineMIME("application/xml","xml"),e.mimeModes.hasOwnProperty("text/html")||e.defineMIME("text/html",{name:"xml",htmlMode:!0})})},{"../../lib/codemirror":7}],12:[function(t,n,r){(function(t){(function(){function t(e){this.tokens=[],this.tokens.links={},this.options=e||h.defaults,this.rules=f.normal,this.options.gfm&&(this.options.tables?this.rules=f.tables:this.rules=f.gfm)}function i(e,t){if(this.options=t||h.defaults,this.links=e,this.rules=p.normal,this.renderer=this.options.renderer||new o,this.renderer.options=this.options,!this.links)throw new Error("Tokens array requires a `links` property.");this.options.gfm?this.options.breaks?this.rules=p.breaks:this.rules=p.gfm:this.options.pedantic&&(this.rules=p.pedantic)}function o(e){this.options=e||{}}function l(e){this.tokens=[],this.token=null,this.options=e||h.defaults,this.options.renderer=this.options.renderer||new o,this.renderer=this.options.renderer,this.renderer.options=this.options}function a(e,t){return e.replace(t?/&/g:/&(?!#?\w+;)/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function s(e){return e.replace(/&([#\w]+);/g,function(e,t){return t=t.toLowerCase(),"colon"===t?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):""})}function c(e,t){return e=e.source,t=t||"",function n(r,i){return r?(i=i.source||i,i=i.replace(/(^|[^\[])\^/g,"$1"),e=e.replace(r,i),n):new RegExp(e,t)}}function u(){}function d(e){for(var t,n,r=1;rAn error occured:

    "+a(u.message+"",!0)+"
    ";throw u}}var f={newline:/^\n+/,code:/^( {4}[^\n]+\n*)+/,fences:u,hr:/^( *[-*_]){3,} *(?:\n+|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *#* *(?:\n+|$)/,nptable:u,lheading:/^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/,blockquote:/^( *>[^\n]+(\n(?!def)[^\n]+)*\n*)+/,list:/^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:/^ *(?:comment *(?:\n|\s*$)|closed *(?:\n{2,}|\s*$)|closing *(?:\n{2,}|\s*$))/,def:/^ *\[([^\]]+)\]: *]+)>?(?: +["(]([^\n]+)[")])? *(?:\n+|$)/,table:u,paragraph:/^((?:[^\n]+\n?(?!hr|heading|lheading|blockquote|tag|def))+)\n*/,text:/^[^\n]+/};f.bullet=/(?:[*+-]|\d+\.)/,f.item=/^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/,f.item=c(f.item,"gm")(/bull/g,f.bullet)(),f.list=c(f.list)(/bull/g,f.bullet)("hr","\\n+(?=\\1?(?:[-*_] *){3,}(?:\\n+|$))")("def","\\n+(?="+f.def.source+")")(),f.blockquote=c(f.blockquote)("def",f.def)(),f._tag="(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:/|[^\\w\\s@]*@)\\b",f.html=c(f.html)("comment",//)("closed",/<(tag)[\s\S]+?<\/\1>/)("closing",/])*?>/)(/tag/g,f._tag)(),f.paragraph=c(f.paragraph)("hr",f.hr)("heading",f.heading)("lheading",f.lheading)("blockquote",f.blockquote)("tag","<"+f._tag)("def",f.def)(),f.normal=d({},f),f.gfm=d({},f.normal,{fences:/^ *(`{3,}|~{3,})[ \.]*(\S+)? *\n([\s\S]*?)\s*\1 *(?:\n+|$)/,paragraph:/^/,heading:/^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/}),f.gfm.paragraph=c(f.paragraph)("(?!","(?!"+f.gfm.fences.source.replace("\\1","\\2")+"|"+f.list.source.replace("\\1","\\3")+"|")(),f.tables=d({},f.gfm,{nptable:/^ *(\S.*\|.*)\n *([-:]+ *\|[-| :]*)\n((?:.*\|.*(?:\n|$))*)\n*/,table:/^ *\|(.+)\n *\|( *[-:]+[-| :]*)\n((?: *\|.*(?:\n|$))*)\n*/}),t.rules=f,t.lex=function(e,n){var r=new t(n);return r.lex(e)},t.prototype.lex=function(e){return e=e.replace(/\r\n|\r/g,"\n").replace(/\t/g," ").replace(/\u00a0/g," ").replace(/\u2424/g,"\n"),this.token(e,!0)},t.prototype.token=function(e,t,n){for(var r,i,o,l,a,s,c,u,d,e=e.replace(/^ +$/gm,"");e;)if((o=this.rules.newline.exec(e))&&(e=e.substring(o[0].length),o[0].length>1&&this.tokens.push({type:"space"})),o=this.rules.code.exec(e))e=e.substring(o[0].length),o=o[0].replace(/^ {4}/gm,""),this.tokens.push({type:"code",text:this.options.pedantic?o:o.replace(/\n+$/,"")});else if(o=this.rules.fences.exec(e))e=e.substring(o[0].length),this.tokens.push({type:"code",lang:o[2],text:o[3]||""});else if(o=this.rules.heading.exec(e))e=e.substring(o[0].length),this.tokens.push({type:"heading",depth:o[1].length,text:o[2]});else if(t&&(o=this.rules.nptable.exec(e))){for(e=e.substring(o[0].length),s={type:"table",header:o[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:o[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:o[3].replace(/\n$/,"").split("\n")},u=0;u ?/gm,""),this.token(o,t,!0),this.tokens.push({type:"blockquote_end"});else if(o=this.rules.list.exec(e)){for(e=e.substring(o[0].length),l=o[2],this.tokens.push({type:"list_start",ordered:l.length>1}),o=o[0].match(this.rules.item),r=!1,d=o.length,u=0;d>u;u++)s=o[u],c=s.length,s=s.replace(/^ *([*+-]|\d+\.) +/,""),~s.indexOf("\n ")&&(c-=s.length,s=this.options.pedantic?s.replace(/^ {1,4}/gm,""):s.replace(new RegExp("^ {1,"+c+"}","gm"),"")),this.options.smartLists&&u!==d-1&&(a=f.bullet.exec(o[u+1])[0],l===a||l.length>1&&a.length>1||(e=o.slice(u+1).join("\n")+e,u=d-1)),i=r||/\n\n(?!\s*$)/.test(s),u!==d-1&&(r="\n"===s.charAt(s.length-1),i||(i=r)),this.tokens.push({type:i?"loose_item_start":"list_item_start"}),this.token(s,!1,n),this.tokens.push({type:"list_item_end"});this.tokens.push({type:"list_end"})}else if(o=this.rules.html.exec(e))e=e.substring(o[0].length),this.tokens.push({type:this.options.sanitize?"paragraph":"html",pre:!this.options.sanitizer&&("pre"===o[1]||"script"===o[1]||"style"===o[1]),text:o[0]});else if(!n&&t&&(o=this.rules.def.exec(e)))e=e.substring(o[0].length),this.tokens.links[o[1].toLowerCase()]={href:o[2],title:o[3]};else if(t&&(o=this.rules.table.exec(e))){for(e=e.substring(o[0].length),s={type:"table",header:o[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:o[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:o[3].replace(/(?: *\| *)?\n$/,"").split("\n")},u=0;u])/,autolink:/^<([^ >]+(@|:\/)[^ >]+)>/,url:u,tag:/^|^<\/?\w+(?:"[^"]*"|'[^']*'|[^'">])*?>/,link:/^!?\[(inside)\]\(href\)/,reflink:/^!?\[(inside)\]\s*\[([^\]]*)\]/,nolink:/^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]/,strong:/^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/,em:/^\b_((?:[^_]|__)+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,code:/^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)/,br:/^ {2,}\n(?!\s*$)/,del:u,text:/^[\s\S]+?(?=[\\?(?:\s+['"]([\s\S]*?)['"])?\s*/,p.link=c(p.link)("inside",p._inside)("href",p._href)(),p.reflink=c(p.reflink)("inside",p._inside)(),p.normal=d({},p),p.pedantic=d({},p.normal,{strong:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,em:/^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/}),p.gfm=d({},p.normal,{escape:c(p.escape)("])","~|])")(),url:/^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/,del:/^~~(?=\S)([\s\S]*?\S)~~/,text:c(p.text)("]|","~]|")("|","|https?://|")()}),p.breaks=d({},p.gfm,{br:c(p.br)("{2,}","*")(),text:c(p.gfm.text)("{2,}","*")()}),i.rules=p,i.output=function(e,t,n){var r=new i(t,n);return r.output(e)},i.prototype.output=function(e){for(var t,n,r,i,o="";e;)if(i=this.rules.escape.exec(e))e=e.substring(i[0].length),o+=i[1];else if(i=this.rules.autolink.exec(e))e=e.substring(i[0].length),"@"===i[2]?(n=":"===i[1].charAt(6)?this.mangle(i[1].substring(7)):this.mangle(i[1]),r=this.mangle("mailto:")+n):(n=a(i[1]),r=n),o+=this.renderer.link(r,null,n);else if(this.inLink||!(i=this.rules.url.exec(e))){if(i=this.rules.tag.exec(e))!this.inLink&&/^
    /i.test(i[0])&&(this.inLink=!1),e=e.substring(i[0].length),o+=this.options.sanitize?this.options.sanitizer?this.options.sanitizer(i[0]):a(i[0]):i[0];else if(i=this.rules.link.exec(e))e=e.substring(i[0].length),this.inLink=!0,o+=this.outputLink(i,{href:i[2],title:i[3]}),this.inLink=!1;else if((i=this.rules.reflink.exec(e))||(i=this.rules.nolink.exec(e))){if(e=e.substring(i[0].length),t=(i[2]||i[1]).replace(/\s+/g," "),t=this.links[t.toLowerCase()],!t||!t.href){o+=i[0].charAt(0),e=i[0].substring(1)+e;continue}this.inLink=!0,o+=this.outputLink(i,t),this.inLink=!1}else if(i=this.rules.strong.exec(e))e=e.substring(i[0].length),o+=this.renderer.strong(this.output(i[2]||i[1]));else if(i=this.rules.em.exec(e))e=e.substring(i[0].length),o+=this.renderer.em(this.output(i[2]||i[1]));else if(i=this.rules.code.exec(e))e=e.substring(i[0].length),o+=this.renderer.codespan(a(i[2],!0));else if(i=this.rules.br.exec(e))e=e.substring(i[0].length),o+=this.renderer.br();else if(i=this.rules.del.exec(e))e=e.substring(i[0].length),o+=this.renderer.del(this.output(i[1]));else if(i=this.rules.text.exec(e))e=e.substring(i[0].length),o+=this.renderer.text(a(this.smartypants(i[0])));else if(e)throw new Error("Infinite loop on byte: "+e.charCodeAt(0))}else e=e.substring(i[0].length),n=a(i[1]),r=n,o+=this.renderer.link(r,null,n);return o},i.prototype.outputLink=function(e,t){var n=a(t.href),r=t.title?a(t.title):null;return"!"!==e[0].charAt(0)?this.renderer.link(n,r,this.output(e[1])):this.renderer.image(n,r,a(e[1]))},i.prototype.smartypants=function(e){return this.options.smartypants?e.replace(/---/g,"—").replace(/--/g,"–").replace(/(^|[-\u2014/(\[{"\s])'/g,"$1‘").replace(/'/g,"’").replace(/(^|[-\u2014/(\[{\u2018\s])"/g,"$1“").replace(/"/g,"”").replace(/\.{3}/g,"…"):e},i.prototype.mangle=function(e){if(!this.options.mangle)return e;for(var t,n="",r=e.length,i=0;r>i;i++)t=e.charCodeAt(i),Math.random()>.5&&(t="x"+t.toString(16)),n+="&#"+t+";";return n},o.prototype.code=function(e,t,n){if(this.options.highlight){var r=this.options.highlight(e,t);null!=r&&r!==e&&(n=!0,e=r)}return t?'
    '+(n?e:a(e,!0))+"\n
    \n":"
    "+(n?e:a(e,!0))+"\n
    "},o.prototype.blockquote=function(e){return"
    \n"+e+"
    \n"},o.prototype.html=function(e){return e},o.prototype.heading=function(e,t,n){return"'+e+"\n"},o.prototype.hr=function(){return this.options.xhtml?"
    \n":"
    \n"},o.prototype.list=function(e,t){var n=t?"ol":"ul";return"<"+n+">\n"+e+"\n"},o.prototype.listitem=function(e){return"
  5. "+e+"
  6. \n"},o.prototype.paragraph=function(e){return"

    "+e+"

    \n"},o.prototype.table=function(e,t){return"\n\n"+e+"\n\n"+t+"\n
    \n"},o.prototype.tablerow=function(e){return"\n"+e+"\n"},o.prototype.tablecell=function(e,t){var n=t.header?"th":"td",r=t.align?"<"+n+' style="text-align:'+t.align+'">':"<"+n+">";return r+e+"\n"},o.prototype.strong=function(e){return""+e+""},o.prototype.em=function(e){return""+e+""},o.prototype.codespan=function(e){return""+e+""},o.prototype.br=function(){return this.options.xhtml?"
    ":"
    "},o.prototype.del=function(e){return""+e+""},o.prototype.link=function(e,t,n){if(this.options.sanitize){try{var r=decodeURIComponent(s(e)).replace(/[^\w:]/g,"").toLowerCase()}catch(i){return""}if(0===r.indexOf("javascript:")||0===r.indexOf("vbscript:"))return""}var o='
    "},o.prototype.image=function(e,t,n){var r=''+n+'":">"},o.prototype.text=function(e){return e},l.parse=function(e,t,n){var r=new l(t,n);return r.parse(e)},l.prototype.parse=function(e){this.inline=new i(e.links,this.options,this.renderer),this.tokens=e.reverse();for(var t="";this.next();)t+=this.tok();return t},l.prototype.next=function(){return this.token=this.tokens.pop()},l.prototype.peek=function(){return this.tokens[this.tokens.length-1]||0},l.prototype.parseText=function(){for(var e=this.token.text;"text"===this.peek().type;)e+="\n"+this.next().text;return this.inline.output(e)},l.prototype.tok=function(){switch(this.token.type){case"space":return"";case"hr":return this.renderer.hr();case"heading":return this.renderer.heading(this.inline.output(this.token.text),this.token.depth,this.token.text);case"code":return this.renderer.code(this.token.text,this.token.lang,this.token.escaped);case"table":var e,t,n,r,i,o="",l="";for(n="",e=0;e=0&&(f=c.getLineHandle(o),!t(f));o--);var v,y,x,b,w=c.getTokenAt({line:o,ch:1}),k=n(w).fencedChars;t(c.getLineHandle(u.line))?(v="",y=u.line):t(c.getLineHandle(u.line-1))?(v="",y=u.line-1):(v=k+"\n",y=u.line),t(c.getLineHandle(d.line))?(x="",b=d.line,0===d.ch&&(b+=1)):0!==d.ch&&t(c.getLineHandle(d.line+1))?(x="",b=d.line+1):(x=k+"\n",b=d.line+1),0===d.ch&&(b-=1),c.operation(function(){c.replaceRange(x,{line:b,ch:0},{line:b+(x?0:1),ch:0}),c.replaceRange(v,{line:y,ch:0},{line:y+(v?0:1),ch:0})}),c.setSelection({line:y+(v?1:0),ch:0},{line:b+(v?1:-1),ch:0}),c.focus()}else{var C=u.line;if(t(c.getLineHandle(u.line))&&("fenced"===r(c,u.line+1)?(o=u.line,C=u.line+1):(l=u.line,C=u.line-1)),void 0===o)for(o=C;o>=0&&(f=c.getLineHandle(o),!t(f));o--);if(void 0===l)for(a=c.lineCount(),l=C;a>l&&(f=c.getLineHandle(l),!t(f));l++);c.operation(function(){c.replaceRange("",{line:o,ch:0},{line:o+1,ch:0}),c.replaceRange("",{line:l-1,ch:0},{line:l,ch:0})}),c.focus()}else if("indented"===p){if(u.line!==d.line||u.ch!==d.ch)o=u.line,l=d.line,0===d.ch&&l--;else{for(o=u.line;o>=0;o--)if(f=c.getLineHandle(o),!f.text.match(/^\s*$/)&&"indented"!==r(c,o,f)){o+=1;break}for(a=c.lineCount(),l=u.line;a>l;l++)if(f=c.getLineHandle(l),!f.text.match(/^\s*$/)&&"indented"!==r(c,l,f)){l-=1;break}}var S=c.getLineHandle(l+1),L=S&&c.getTokenAt({line:l+1,ch:S.text.length-1}),T=L&&n(L).indentedCode;T&&c.replaceRange("\n",{line:l+1,ch:0});for(var M=o;l>=M;M++)c.indentLine(M,"subtract");c.focus()}else{var N=u.line===d.line&&u.ch===d.ch&&0===u.ch,A=u.line!==d.line;N||A?i(c,u,d,s):O(c,!1,["`","`"])}}function f(e){var t=e.codemirror;W(t,"quote")}function p(e){var t=e.codemirror;H(t,"smaller")}function m(e){var t=e.codemirror;H(t,"bigger")}function g(e){var t=e.codemirror;H(t,void 0,1)}function v(e){var t=e.codemirror;H(t,void 0,2)}function y(e){var t=e.codemirror;H(t,void 0,3)}function x(e){var t=e.codemirror;W(t,"unordered-list")}function b(e){var t=e.codemirror;W(t,"ordered-list")}function w(e){var t=e.codemirror;E(t)}function k(e){var t=e.codemirror,n=a(t),r=e.options,i="http://";return r.promptURLs&&(i=prompt(r.promptTexts.link),!i)?!1:void O(t,n.link,r.insertTexts.link,i)}function C(e){var t=e.codemirror,n=a(t),r=e.options,i="http://";return r.promptURLs&&(i=prompt(r.promptTexts.image),!i)?!1:void O(t,n.image,r.insertTexts.image,i)}function S(e){var t=e.codemirror,n=a(t),r=e.options;O(t,n.table,r.insertTexts.table)}function L(e){var t=e.codemirror,n=a(t),r=e.options;O(t,n.image,r.insertTexts.horizontalRule)}function T(e){var t=e.codemirror;t.undo(),t.focus()}function M(e){var t=e.codemirror;t.redo(),t.focus()}function N(e){var t=e.codemirror,n=t.getWrapperElement(),r=n.nextSibling,i=e.toolbarElements["side-by-side"],o=!1;/editor-preview-active-side/.test(r.className)?(r.className=r.className.replace(/\s*editor-preview-active-side\s*/g,""),i.className=i.className.replace(/\s*active\s*/g,""),n.className=n.className.replace(/\s*CodeMirror-sided\s*/g," ")):(setTimeout(function(){t.getOption("fullScreen")||s(e),r.className+=" editor-preview-active-side"},1),i.className+=" active",n.className+=" CodeMirror-sided",o=!0);var l=n.lastChild;if(/editor-preview-active/.test(l.className)){l.className=l.className.replace(/\s*editor-preview-active\s*/g,"");var a=e.toolbarElements.preview,c=n.previousSibling;a.className=a.className.replace(/\s*active\s*/g,""),c.className=c.className.replace(/\s*disabled-for-preview*/g,"")}var u=function(){r.innerHTML=e.options.previewRender(e.value(),r)};t.sideBySideRenderingFunction||(t.sideBySideRenderingFunction=u),o?(r.innerHTML=e.options.previewRender(e.value(),r),t.on("update",t.sideBySideRenderingFunction)):t.off("update",t.sideBySideRenderingFunction)}function A(e){var t=e.codemirror,n=t.getWrapperElement(),r=n.previousSibling,i=e.options.toolbar?e.toolbarElements.preview:!1,o=n.lastChild;o&&/editor-preview/.test(o.className)||(o=document.createElement("div"),o.className="editor-preview",n.appendChild(o)),/editor-preview-active/.test(o.className)?(o.className=o.className.replace(/\s*editor-preview-active\s*/g,""),i&&(i.className=i.className.replace(/\s*active\s*/g,""),r.className=r.className.replace(/\s*disabled-for-preview*/g,""))):(setTimeout(function(){o.className+=" editor-preview-active"},1),i&&(i.className+=" active",r.className+=" disabled-for-preview")),o.innerHTML=e.options.previewRender(e.value(),o);var l=t.getWrapperElement().nextSibling;/editor-preview-active-side/.test(l.className)&&N(e)}function O(e,t,n,r){if(!/editor-preview-active/.test(e.getWrapperElement().lastChild.className)){var i,o=n[0],l=n[1],a=e.getCursor("start"),s=e.getCursor("end");r&&(l=l.replace("#url#",r)),t?(i=e.getLine(a.line),o=i.slice(0,a.ch),l=i.slice(a.ch),e.replaceRange(o+l,{line:a.line,ch:0})):(i=e.getSelection(),e.replaceSelection(o+i+l),a.ch+=o.length,a!==s&&(s.ch+=o.length)),e.setSelection(a,s),e.focus()}}function H(e,t,n){if(!/editor-preview-active/.test(e.getWrapperElement().lastChild.className)){ -for(var r=e.getCursor("start"),i=e.getCursor("end"),o=r.line;o<=i.line;o++)!function(r){var i=e.getLine(r),o=i.search(/[^#]/);i=void 0!==t?0>=o?"bigger"==t?"###### "+i:"# "+i:6==o&&"smaller"==t?i.substr(7):1==o&&"bigger"==t?i.substr(2):"bigger"==t?i.substr(1):"#"+i:1==n?0>=o?"# "+i:o==n?i.substr(o+1):"# "+i.substr(o+1):2==n?0>=o?"## "+i:o==n?i.substr(o+1):"## "+i.substr(o+1):0>=o?"### "+i:o==n?i.substr(o+1):"### "+i.substr(o+1),e.replaceRange(i,{line:r,ch:0},{line:r,ch:99999999999999})}(o);e.focus()}}function W(e,t){if(!/editor-preview-active/.test(e.getWrapperElement().lastChild.className)){for(var n=a(e),r=e.getCursor("start"),i=e.getCursor("end"),o={quote:/^(\s*)\>\s+/,"unordered-list":/^(\s*)(\*|\-|\+)\s+/,"ordered-list":/^(\s*)\d+\.\s+/},l={quote:"> ","unordered-list":"* ","ordered-list":"1. "},s=r.line;s<=i.line;s++)!function(r){var i=e.getLine(r);i=n[t]?i.replace(o[t],"$1"):l[t]+i,e.replaceRange(i,{line:r,ch:0},{line:r,ch:99999999999999})}(s);e.focus()}}function I(e,t,n,r){if(!/editor-preview-active/.test(e.codemirror.getWrapperElement().lastChild.className)){r="undefined"==typeof r?n:r;var i,o=e.codemirror,l=a(o),s=n,c=r,u=o.getCursor("start"),d=o.getCursor("end");l[t]?(i=o.getLine(u.line),s=i.slice(0,u.ch),c=i.slice(u.ch),"bold"==t?(s=s.replace(/(\*\*|__)(?![\s\S]*(\*\*|__))/,""),c=c.replace(/(\*\*|__)/,"")):"italic"==t?(s=s.replace(/(\*|_)(?![\s\S]*(\*|_))/,""),c=c.replace(/(\*|_)/,"")):"strikethrough"==t&&(s=s.replace(/(\*\*|~~)(?![\s\S]*(\*\*|~~))/,""),c=c.replace(/(\*\*|~~)/,"")),o.replaceRange(s+c,{line:u.line,ch:0},{line:u.line,ch:99999999999999}),"bold"==t||"strikethrough"==t?(u.ch-=2,u!==d&&(d.ch-=2)):"italic"==t&&(u.ch-=1,u!==d&&(d.ch-=1))):(i=o.getSelection(),"bold"==t?(i=i.split("**").join(""),i=i.split("__").join("")):"italic"==t?(i=i.split("*").join(""),i=i.split("_").join("")):"strikethrough"==t&&(i=i.split("~~").join("")),o.replaceSelection(s+i+c),u.ch+=n.length,d.ch=u.ch+i.length),o.setSelection(u,d),o.focus()}}function E(e){if(!/editor-preview-active/.test(e.getWrapperElement().lastChild.className))for(var t,n=e.getCursor("start"),r=e.getCursor("end"),i=n.line;i<=r.line;i++)t=e.getLine(i),t=t.replace(/^[ ]*([# ]+|\*|\-|[> ]+|[0-9]+(.|\)))[ ]*/,""),e.replaceRange(t,{line:i,ch:0},{line:i,ch:99999999999999})}function D(e,t){for(var n in t)t.hasOwnProperty(n)&&(t[n]instanceof Array?e[n]=t[n].concat(e[n]instanceof Array?e[n]:[]):null!==t[n]&&"object"==typeof t[n]&&t[n].constructor===Object?e[n]=D(e[n]||{},t[n]):e[n]=t[n]);return e}function P(e){for(var t=1;t=19968?n[i].length:1;return r}function z(e){e=e||{},e.parent=this;var t=!0;if(e.autoDownloadFontAwesome===!1&&(t=!1),e.autoDownloadFontAwesome!==!0)for(var n=document.styleSheets,r=0;r-1&&(t=!1);if(t){var i=document.createElement("link");i.rel="stylesheet",i.href="https://maxcdn.bootstrapcdn.com/font-awesome/latest/css/font-awesome.min.css",document.getElementsByTagName("head")[0].appendChild(i)}if(e.element)this.element=e.element;else if(null===e.element)return void console.log("SimpleMDE: Error. No element was found.");if(void 0===e.toolbar){e.toolbar=[];for(var o in K)K.hasOwnProperty(o)&&(-1!=o.indexOf("separator-")&&e.toolbar.push("|"),(K[o]["default"]===!0||e.showIcons&&e.showIcons.constructor===Array&&-1!=e.showIcons.indexOf(o))&&e.toolbar.push(o))}e.hasOwnProperty("status")||(e.status=["autosave","lines","words","cursor"]),e.previewRender||(e.previewRender=function(e){return this.parent.markdown(e)}),e.parsingConfig=P({highlightFormatting:!0},e.parsingConfig||{}),e.insertTexts=P({},X,e.insertTexts||{}),e.promptTexts=Y,e.blockStyles=P({},Z,e.blockStyles||{}),e.shortcuts=P({},U,e.shortcuts||{}),void 0!=e.autosave&&void 0!=e.autosave.unique_id&&""!=e.autosave.unique_id&&(e.autosave.uniqueId=e.autosave.unique_id),this.options=e,this.render(),!e.initialValue||this.options.autosave&&this.options.autosave.foundSavedValue===!0||this.value(e.initialValue)}function R(){if("object"!=typeof localStorage)return!1;try{localStorage.setItem("smde_localStorage",1),localStorage.removeItem("smde_localStorage")}catch(e){return!1}return!0}var B=e("codemirror");e("codemirror/addon/edit/continuelist.js"),e("./codemirror/tablist"),e("codemirror/addon/display/fullscreen.js"),e("codemirror/mode/markdown/markdown.js"),e("codemirror/addon/mode/overlay.js"),e("codemirror/addon/display/placeholder.js"),e("codemirror/mode/gfm/gfm.js"),e("codemirror/mode/xml/xml.js"),e("spell-checker");var j=e("marked"),_=/Mac/.test(navigator.platform),q={toggleBold:c,toggleItalic:u,drawLink:k,toggleHeadingSmaller:p,toggleHeadingBigger:m,drawImage:C,toggleBlockquote:f,toggleOrderedList:b,toggleUnorderedList:x,toggleCodeBlock:h,togglePreview:A,toggleStrikethrough:d,toggleHeading1:g,toggleHeading2:v,toggleHeading3:y,cleanBlock:w,drawTable:S,drawHorizontalRule:L,undo:T,redo:M,toggleSideBySide:N,toggleFullScreen:s},U={toggleBold:"Cmd-B",toggleItalic:"Cmd-I",drawLink:"Cmd-K",toggleHeadingSmaller:"Cmd-H",toggleHeadingBigger:"Shift-Cmd-H",cleanBlock:"Cmd-E",drawImage:"Cmd-Alt-I",toggleBlockquote:"Cmd-'",toggleOrderedList:"Cmd-Alt-L",toggleUnorderedList:"Cmd-L",toggleCodeBlock:"Cmd-Alt-C",togglePreview:"Cmd-P",toggleSideBySide:"F9",toggleFullScreen:"F11"},G=function(e){for(var t in q)if(q[t]===e)return t;return null},$=function(){var e=!1;return function(t){(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(t)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(t.substr(0,4)))&&(e=!0)}(navigator.userAgent||navigator.vendor||window.opera),e},V="",K={bold:{name:"bold",action:c,className:"fa fa-bold",title:"Bold","default":!0},italic:{name:"italic",action:u,className:"fa fa-italic",title:"Italic","default":!0},strikethrough:{name:"strikethrough",action:d,className:"fa fa-strikethrough",title:"Strikethrough"},heading:{name:"heading",action:p,className:"fa fa-header",title:"Heading","default":!0},"heading-smaller":{name:"heading-smaller",action:p,className:"fa fa-header fa-header-x fa-header-smaller",title:"Smaller Heading"},"heading-bigger":{name:"heading-bigger",action:m,className:"fa fa-header fa-header-x fa-header-bigger",title:"Bigger Heading"},"heading-1":{name:"heading-1",action:g,className:"fa fa-header fa-header-x fa-header-1",title:"Big Heading"},"heading-2":{name:"heading-2",action:v,className:"fa fa-header fa-header-x fa-header-2",title:"Medium Heading"},"heading-3":{name:"heading-3",action:y,className:"fa fa-header fa-header-x fa-header-3",title:"Small Heading"},"separator-1":{name:"separator-1"},code:{name:"code",action:h,className:"fa fa-code",title:"Code"},quote:{name:"quote",action:f,className:"fa fa-quote-left",title:"Quote","default":!0},"unordered-list":{name:"unordered-list",action:x,className:"fa fa-list-ul",title:"Generic List","default":!0},"ordered-list":{name:"ordered-list",action:b,className:"fa fa-list-ol",title:"Numbered List","default":!0},"clean-block":{name:"clean-block",action:w,className:"fa fa-eraser fa-clean-block",title:"Clean block"},"separator-2":{name:"separator-2"},link:{name:"link",action:k,className:"fa fa-link",title:"Create Link","default":!0},image:{name:"image",action:C,className:"fa fa-picture-o",title:"Insert Image","default":!0},table:{name:"table",action:S,className:"fa fa-table",title:"Insert Table"},"horizontal-rule":{name:"horizontal-rule",action:L,className:"fa fa-minus",title:"Insert Horizontal Line"},"separator-3":{name:"separator-3"},preview:{name:"preview",action:A,className:"fa fa-eye no-disable",title:"Toggle Preview","default":!0},"side-by-side":{name:"side-by-side",action:N,className:"fa fa-columns no-disable no-mobile",title:"Toggle Side by Side","default":!0},fullscreen:{name:"fullscreen",action:s,className:"fa fa-arrows-alt no-disable no-mobile",title:"Toggle Fullscreen","default":!0},"separator-4":{name:"separator-4"},guide:{name:"guide",action:"https://simplemde.com/markdown-guide",className:"fa fa-question-circle",title:"Markdown Guide","default":!0},"separator-5":{name:"separator-5"},undo:{name:"undo",action:T,className:"fa fa-undo no-disable",title:"Undo"},redo:{name:"redo",action:M,className:"fa fa-repeat no-disable",title:"Redo"}},X={link:["[","](#url#)"],image:["![","](#url#)"],table:["","\n\n| Column 1 | Column 2 | Column 3 |\n| -------- | -------- | -------- |\n| Text | Text | Text |\n\n"],horizontalRule:["","\n\n-----\n\n"]},Y={link:"URL for the link:",image:"URL of the image:"},Z={bold:"**",code:"```",italic:"*"};z.prototype.markdown=function(e){if(j){var t={};return this.options&&this.options.renderingConfig&&this.options.renderingConfig.singleLineBreaks===!1?t.breaks=!1:t.breaks=!0,this.options&&this.options.renderingConfig&&this.options.renderingConfig.codeSyntaxHighlighting===!0&&window.hljs&&(t.highlight=function(e){return window.hljs.highlightAuto(e).value}),j.setOptions(t),j(e)}},z.prototype.render=function(e){if(e||(e=this.element||document.getElementsByTagName("textarea")[0]),!this._rendered||this._rendered!==e){this.element=e;var t=this.options,n=this,i={};for(var o in t.shortcuts)null!==t.shortcuts[o]&&null!==q[o]&&!function(e){i[r(t.shortcuts[e])]=function(){q[e](n)}}(o);i.Enter="newlineAndIndentContinueMarkdownList",i.Tab="tabAndIndentMarkdownList",i["Shift-Tab"]="shiftTabAndUnindentMarkdownList",i.Esc=function(e){e.getOption("fullScreen")&&s(n)},document.addEventListener("keydown",function(e){e=e||window.event,27==e.keyCode&&n.codemirror.getOption("fullScreen")&&s(n)},!1);var l,a;if(t.spellChecker!==!1?(l="spell-checker",a=t.parsingConfig,a.name="gfm",a.gitHubSpice=!1):(l=t.parsingConfig,l.name="gfm",l.gitHubSpice=!1),this.codemirror=B.fromTextArea(e,{mode:l,backdrop:a,theme:"paper",tabSize:void 0!=t.tabSize?t.tabSize:2,indentUnit:void 0!=t.tabSize?t.tabSize:2,indentWithTabs:t.indentWithTabs!==!1,lineNumbers:!1,autofocus:t.autofocus===!0,extraKeys:i,lineWrapping:t.lineWrapping!==!1,allowDropFileTypes:["text/plain"],placeholder:t.placeholder||e.getAttribute("placeholder")||""}),t.forceSync===!0){var c=this.codemirror;c.on("change",function(){c.save()})}this.gui={},t.toolbar!==!1&&(this.gui.toolbar=this.createToolbar()),t.status!==!1&&(this.gui.statusbar=this.createStatusbar()),void 0!=t.autosave&&t.autosave.enabled===!0&&this.autosave(),this.gui.sideBySide=this.createSideBySide(),this._rendered=this.element}},z.prototype.autosave=function(){if(R()){var e=this;if(void 0==this.options.autosave.uniqueId||""==this.options.autosave.uniqueId)return void console.log("SimpleMDE: You must set a uniqueId to use the autosave feature");null!=e.element.form&&void 0!=e.element.form&&e.element.form.addEventListener("submit",function(){localStorage.removeItem("smde_"+e.options.autosave.uniqueId)}),this.options.autosave.loaded!==!0&&("string"==typeof localStorage.getItem("smde_"+this.options.autosave.uniqueId)&&""!=localStorage.getItem("smde_"+this.options.autosave.uniqueId)&&(this.codemirror.setValue(localStorage.getItem("smde_"+this.options.autosave.uniqueId)),this.options.autosave.foundSavedValue=!0),this.options.autosave.loaded=!0),localStorage.setItem("smde_"+this.options.autosave.uniqueId,e.value());var t=document.getElementById("autosaved");if(null!=t&&void 0!=t&&""!=t){var n=new Date,r=n.getHours(),i=n.getMinutes(),o="am",l=r;l>=12&&(l=r-12,o="pm"),0==l&&(l=12),i=10>i?"0"+i:i,t.innerHTML="Autosaved: "+l+":"+i+" "+o}this.autosaveTimeoutId=setTimeout(function(){e.autosave()},this.options.autosave.delay||1e4)}else console.log("SimpleMDE: localStorage not available, cannot autosave")},z.prototype.clearAutosavedValue=function(){if(R()){if(void 0==this.options.autosave||void 0==this.options.autosave.uniqueId||""==this.options.autosave.uniqueId)return void console.log("SimpleMDE: You must set a uniqueId to clear the autosave value");localStorage.removeItem("smde_"+this.options.autosave.uniqueId)}else console.log("SimpleMDE: localStorage not available, cannot autosave")},z.prototype.createSideBySide=function(){var e=this.codemirror,t=e.getWrapperElement(),n=t.nextSibling;n&&/editor-preview-side/.test(n.className)||(n=document.createElement("div"),n.className="editor-preview-side",t.parentNode.insertBefore(n,t.nextSibling));var r=!1,i=!1;return e.on("scroll",function(e){if(r)return void(r=!1);i=!0;var t=e.getScrollInfo().height-e.getScrollInfo().clientHeight,o=parseFloat(e.getScrollInfo().top)/t,l=(n.scrollHeight-n.clientHeight)*o;n.scrollTop=l}),n.onscroll=function(){if(i)return void(i=!1);r=!0;var t=n.scrollHeight-n.clientHeight,o=parseFloat(n.scrollTop)/t,l=(e.getScrollInfo().height-e.getScrollInfo().clientHeight)*o;e.scrollTo(0,l)},n},z.prototype.createToolbar=function(e){if(e=e||this.options.toolbar,e&&0!==e.length){var t;for(t=0;t

    Htqb$=AB&_8cm_# z_?pTQN@ENiTg_=uj@!JW6K`zZ`J)4Gbl&v=y%a6uOUq|pw_tYrt&)o-w=}CKMO`dws>Cqf|jO6=vt8f zfO-Um;2_`_7)fL2zP??%4-EX^sWT^n?kd?1U=#_`MHzu=1AEBKB5LNIi{h#kzh(afvEwU3$(^`Os+S=QyZLBUpv8=^}rT-?SvgLDSpn4 zsn~_Lp?)EZXdFZtultix#=(pMd>SBJNd^$J4`^_ogH{XrE1bYwz&_x8e!(Nfhp*`-&)u^WcU*OjzHIKC z)d-+Rjq4^)nHu`cwKrk*ik0YWSYGTJ_FRvOTH_5!k_ra>8holbriu*DZ>Mh$&b}1q zU%y&g`L%yWTkGUWZL#?6hjoBPjFp0M#6lXTwbY|)q_G3kE`>3vG@b-RnZftqI0QJr z1*k_&$BC{xVg6JcH)krE8tTwcAG`do58ra4A8`a^rQ>=?rL!0qPNA#2=Mj&K5Fj9k zC|_Gwtko<>hKd5lIH=Wrs7}Hz(5<_3i zWblWxgHK__DAO7*rc!K`~Tq*)bJGIcgF#*P-cW zFT8W0Z(!uELeWx%F%&WptE;==tu;5akCOuYilSx7)z6@RB*T*V+&w~&5Jcc!f(qkN z%klc5gLBbv^FuGJPmYfM#E&o^;cytmqJ5rRed%zexw~iGTaTM2=7w|vttzT&98#&P zL5q=hb~&U;wXxL^P#YbP6dZ&&Nk}9{2JXmYa($jhRTRYPquTID3L~j3hO)W) z*9yT5jno^J4%Di&6)KO{E~icixQ5AV*9w-*X0FW^@-FARR14~3UwGreo92!=MKi=I zfAv%8oSbCF9mo~Fqx!iu1nwT%)_^L{2j8nc03;ai69R;@AxM1s+iUZgbmqn&3J?j0 z)i%0+Fxly^J|vhB4lC=FjUyE@+WSYKt^tOIR<*O;^0RH(O#Xh`an#~OBau*Ry#DS( z4oJST<}}-NFHfa27)fXS_h>)y^9K?JMz@1GrEQRNWlR~hD-t;B&}(f75AZBdI=TS? z&iLw&U+C%`e3vq&iqo{V7Btn@z38t#B=WAFbEyCqB?^e@Rj)ztI1cKQ`4p%`S6|O} zY}@G!q5zRd^vc&CxN(tkfZ(`K79sT#abMqHesCoBT?B}mJ9Ic{P^SQR9+*eLChhpfMj!f*4mf3i>wsEWM4g=?Q{1`-0d}lgRsY(%U9)6yQWIv3W7+(fA4Y)PcGHxC zO<_9>l(LdR!H*q*R3IG~O_?Nz=P}qeL%KjQk`rJ+778lzT+4QEl4HwR!ujpm!Qb9< zS~{CuE(?YK))w3L4Sf5d7dH+dK+JFtPRH+od;(rE1z{DzZ5!NiKy4S)^*|k;F1SzG zCyJJ24qko;W_~ATn14(PA@T^&7!H47VS7vKf4|*3V<)!UD3zIgJwRi9CN^nP#J z&Mo~q5-A7iybH_n;JOr^%iyRt#Z=Mt>6TcqT#RNN92l|jdZ)mDcC~GOe6QG!3T%I2 z_p6y)b|9U}s$EB3;}T;infj`2yGRTs(KC?T`1q?^9(b&3pFFK?BQjnBTQV16)IJ3W zH^49>AVw(oO9}waA(-zF2k?rBIr}hQdl~baw;|&cwxR+i!a{xe(b4m<^}X%5V8%hrpXQ;l(Lg9nU>c>}K>%P}!1V-*MTT6CVbg&K z)+dj}d&Ogrb_U)+6+XRoEnEMiuf7I?D;&p#OTBudH!<{4+wrjX;NbAqo!ysK|96KI zl7|2mHz#oFlt(dS{Std}voM^Wg$$bqhFFlAE?UezXx0WWEtbHs?Srr=Fqr4kX*_`d zzrXLAHbd7I6>J9$QFGJwuD&I%=S3IHXnXwHA3WC?DyKm$+ z`Q@X3?&!Jy)%SY)Pz6Dt9KwQhpH`R0jQX7*n&g-bpq!hG1C;x%Q0GvF1Oi-e=P!nT zxBBWkvbjQAf6w4|_9h161&`GK^3U6MSGe6$H3ba1;OH_wf^K4fPy%Gf?lkZ<4elEZ zND9FeAy^M;feY_?{Dl`*UwN#?H0z>oKXJhL`cGf_6@Xveit!-=a!D2#30gAHp`|S+ zY?PndnLqi!5rN|dP=Sl?dg6XaTm^;vxVoGxf-ne(k~a0!j->uD<)@%*2~aYe^WdS4 zgH!h)#=#|bJ-PdcUyBRMt-uT5fkBiB6g`2S472uS=zCphwreOa;4%R!MA`5|&Je>m zN(6?fIzg=*a;g2POmfeA*>q=*T^I$Y6r2af%N9zHL3r*UjsOM@1ELcL0t!3`1HVbz z0z(#i==D8C^@w@#aSdHzU7r^Xm(##+MJW}AFadBT@=8TT8}~cF1%+cLQOqT7N_4&c zUu|t?H)!p8)(AzR2?Ii?7*Q=a$B3R%>HLBGFd|R}7l20vEXq-|(1QS$%ZF?(K$$XL zK?Et|GLgW9KsbaL69t^QU|tc-E_6d;czAuz^9nZe9JTU?YBv!O+_S~NKw$z7m>8&} z#{ioni2ybgwn_nB;kY0TJmL;cJoGDFFH{sT?!saAKsi0VEN3=^;N>?^j6v|g;U9nl zly2?hf-3LPoe01L*-N>a#Mr{gg}b+34C8Nv%4_DinZa!b%0-eMcG~K{pi@Ya!I?g9$NV2M9unm8!}>=7Mo=_n2|a+aFZ^Kr+~) zC!ncKJQM*c>2YjF1t>!g=jynEKtMsVm@rsP&Pn4Tn7eDtD8_oZ-!FLewweFCIY5X~ zrFWOm?)Fs3m)A~x7Q)8g24$e&6qLJTG#O~8-w(lov3dG;ivXn&-0XCr0(+C< zpi4!PF#%B-1p*!>482N}tCb~`?L`F`ExyaR3jtmka}Y%E57YrQKg0;Y6Bt4jTq-tE zQJ%`tf(TJJMm4y*a~K;y1yYF}J)C*{g0V4zL@@1x+XcAZq}uXa6gjKSGb(VfycHfj zI6-J^QS?PQ7_oAwf?#ex7reX`PEgty*Ki3)ES(-`08PuNF%>v{W;DwK2a)mv z6jkG@ASB80#{9(Pj!c#WpuMRhBT@>t4gu|lWT z@f9$tjIU`^jyE`sh2Sv(LjzpdI+VM~q}vC;LUW`M)QU@%Su#`2&Q zD1%fS2j$i>BO-UN-03tEY3uj$Y zOQbM5JtnpmU3Pp+M1wy%WsARz0$~6Vlp*{1uB@#g=WsZT!(~9)rhfoXSM^$<+IUj2 zx>_;S|86K0&w6&YFi`IIhk8|JdNulfJQU>vJFlwTVZ%IC)v;y6LTnOPop?1Ydh4EpO zSNI2#pTtc@@UO3i_>pPB1B2)>K9tfnHSd3CUxs9zbuC9IE|m1a6RA zjVQ<|et=oZ_}XH5NBQA)0a2BsUeGs1tx7GXO71%pJ!NFy=U!?wSP52@o0`%qp(xpa{~ePgyQ&<( k6>HHfnXgCzI$jO<{|aL>*51Day8r+H07*qoM6N<$f(jN3asU7T diff --git a/public/img/emoji/two_women_holding_hands.png b/public/img/emoji/two_women_holding_hands.png deleted file mode 100644 index 619646c4e02aa3887877851c1e462485a28e37b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7633 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�PmVR)L0n0L0 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 diff --git a/public/img/emoji/u6307.png b/public/img/emoji/u6307.png deleted file mode 100644 index 6557f5672fb8cd1be9303787f7c00eddf0cd6b83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4103 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 FV1iEbrSAX$ diff --git a/public/img/emoji/u6708.png b/public/img/emoji/u6708.png deleted file mode 100644 index e4dfe5aa7626af6907ffb8821282c33f354183d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3011 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 JPDHLkV1lM~5PARr diff --git a/public/img/emoji/u7121.png b/public/img/emoji/u7121.png deleted file mode 100644 index 25f694ed3ff0b8865f7fc69e5115d8e5f9488997..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3942 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 Al>h($ diff --git a/public/img/emoji/u7533.png b/public/img/emoji/u7533.png deleted file mode 100644 index fc4a9901b461cf3f8a95d3ea2b775885632f7923..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3048 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 diff --git a/public/img/emoji/u7a7a.png b/public/img/emoji/u7a7a.png deleted file mode 100644 index c05f5cff73ba4cce11c158826a30839149c8e50c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4180 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 c>n+a diff --git a/public/img/emoji/umbrella.png b/public/img/emoji/umbrella.png deleted file mode 100644 index 1db722fa661ea4e74fca2dc29e7972716843d812..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4745 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 diff --git a/public/img/emoji/vertical_traffic_light.png b/public/img/emoji/vertical_traffic_light.png deleted file mode 100644 index 7a5ba35f09d9a0f80fb46ee148d996f78ea1c953..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3422 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 diff --git a/public/img/emoji/vibration_mode.png b/public/img/emoji/vibration_mode.png deleted file mode 100644 index a716e96c6353cfcc026eaaf8517f207122c2cb06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3906 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 Ef_2=8MF0Q* diff --git a/public/img/emoji/video_game.png b/public/img/emoji/video_game.png deleted file mode 100644 index e265a3bd8cc5a0fae4063352bf7a122752edce1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4947 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 R0y6*r002ovPDHLkV1lSTP6z-1 diff --git a/public/img/emoji/violin.png b/public/img/emoji/violin.png deleted file mode 100644 index 69347b545862da2031ae2241679081a93d5402f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4915 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 diff --git a/public/img/emoji/virgo.png b/public/img/emoji/virgo.png deleted file mode 100644 index 72e1763f5739ada7bce3cc5519d0b4760e7f2875..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4869 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 diff --git a/public/img/emoji/volcano.png b/public/img/emoji/volcano.png deleted file mode 100644 index 9b434539b05655036d465500e296ccce84711ffe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6167 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 diff --git a/public/img/emoji/vs.png b/public/img/emoji/vs.png deleted file mode 100644 index 863638850e1e30e39cf82aa8cf9500e70468ec7f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3424 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 FV1h*+Ie!2E diff --git a/public/img/emoji/warning.png b/public/img/emoji/warning.png deleted file mode 100644 index db6f96f02bc38785fd73cda8c1fbf5c3b60085f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3173 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 diff --git a/public/img/emoji/water_buffalo.png b/public/img/emoji/water_buffalo.png deleted file mode 100644 index 3bcde3edd9536e4c4e298daec98e18f0f244b479..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4774 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 AX8-^I diff --git a/public/img/emoji/watermelon.png b/public/img/emoji/watermelon.png deleted file mode 100644 index fc212be784482c07bb3c49168c48784d6ef9e046..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5501 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 M07*qoM6N<$f^buv)Bpeg diff --git a/public/img/emoji/wavy_dash.png b/public/img/emoji/wavy_dash.png deleted file mode 100644 index 5a74e5c7aeb396f29a00aac7c28c365f3efbc4c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 696 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 UIrHsoE&u=k07*qoM6N<$f;JTJ_y7O^ diff --git a/public/img/emoji/waxing_gibbous_moon.png b/public/img/emoji/waxing_gibbous_moon.png deleted file mode 100644 index 54e7ec6711a57c8618df57e2e93fa3a3e365d348..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6357 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 Xq5&&%jtiQR00000NkvXXu0mjfLS-t$ diff --git a/public/img/emoji/wc.png b/public/img/emoji/wc.png deleted file mode 100644 index dfe84d2a73a115232d71c5ef6cee80d97270f39b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4088 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 diff --git a/public/img/emoji/wedding.png b/public/img/emoji/wedding.png deleted file mode 100644 index ead19d52cfb41c033796c39dfc8ba877d304df1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5847 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 KMNUMnLSTZ(#6JQ6 diff --git a/public/img/emoji/whale2.png b/public/img/emoji/whale2.png deleted file mode 100644 index 0ef4ea94f6dd4fb948602e56b2269c2d663d6f78..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5944 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 a!v6!%sUC*45I$J|0000gr0Sd%8zSz;b_8 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 XT-3NQ&cMa~00000NkvXXu0mjfz=&%Q diff --git a/public/img/emoji/white_circle.png b/public/img/emoji/white_circle.png deleted file mode 100644 index 3f648d1bd1f79f8ed62f11a1b5885ea5c098e1a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2477 zcmV;e2~zfnP)A7%6~}+~zIktEJa0VXv7I=k4ajL6+I-a{{zyFb%p1?l`?_7soj32zjANTn zRcd|Z8O!h8d;a&FbIjtp@&KrKdY3Hz&A;(rGNE2$|V#VMQ>gNWMCKowRjRsfU z%aflx{`%o{0ocE9%P%%>D;X9;e321C0{z6$D(??K#@>@$;WTAj7J^G>FFf}8pVkcE zzB{-5@`i20!eRqAVdJ5+jaLtyq4p1jz{KGcbGTeppPW7Wy*Cf93BcEP-1yrqH@C#^ zB!>$qBw`KGJJjEb5CK@!nA8w1e01*Hf1X-37wj&KKfh^bQKT7W2Lm)v`ZW~^S$VX@ zw`VjMU z@7w%X$;x3f#t3d~PwO9TeYuPp|Cmp$^#aKR=`kzpiZq{{Wv78MyH zL^48=G&aM9k!N<rSEQT0l0AKq(vF~-H+1R&FmO+NFC^B-#)`wRBu)8pN zV92zv$&<#=2P(WS6NEZs8>Go&V=-io9*DbQ48Vp5i#O#lDPm&k1w>!3U-=OBzA5wu zOucfR;!PVK>;pigh8`U>Qsl8Qbi$#__EL|P`Caex_Bs*+n>;B7jiESO!f zz4dcakr)6TVB%qu#=_2~A7}%RZK_$^mq9W}8UqOgczXEw_)!|}EG%OqDNYgSS?x6f zKw^+)5J`sOJ|PksxO+TvO9qpi7N1J&u(R}PM^Z&kRqR^p=D>Szc2MVJ!ZWfFg8eHBcBai4g!LS^`qqRYcdGMWh$i zH$y5-M3sIoOav|&MTfS8w!{vAdMC|@o@6Pa(xbDl?%1bdmL~!c=ZWn(ElH}L0N^i% z1eyVKyr69c(c_9q&j`C>Ma$|&l#0Wc2Pk|3Lj1)90B_C*+{EG{5}$NCqX&wN%n&5> zKqOej^xy(M-dqyEd7n@-U=g{Yh>0hP4J(}j5$#_^##CApAwp9;MS~C@?|cG)JK4mi zfrlAo_P971%Lk(GNeC0CUuY2VW86we4I20~aVHaIbf;X$XPM=glXXNIv216oKuUV^ zqS3PsNS0Z~$93GP1c1Zms#8r|7WJ-WY+)m26d5hrFB8OdCpFllPYD)rX;Pg!d@cb% zdG$jLeCF{r46jRZI0P9nO2sq{8dN_# z{eBOCncC993O<)9N1T{gN!~4>pM%8#5{sVgh*0J-J{6V@&eZy3*Yd%o={gQ)6Ktk? zA(;?F;&0i-qGTdh2+rbAXKA{8uy0{uRN)H6=?9muKD!V$ zm}4@=XTxihok`t@727p1$s7$9!mH1IaCyb*SSjb_`GaMeoZ}3FATmU}C{bM$TqGzs ziT4#D0fIA}qe+?hgU-vzc6OIekJJ~Rp8u#qjgx$g)UCPT8a;rOdk3wVA(D?dNsS8g zA1yw8q`pdv=Isj$kI&6I)HuPEuI?3K^xIpqCN&er-fr=WDNazsVQzNe@wYFm+9Oh7 z`Q4c(=Bia3j&n+Pf;(M;FyWd>@u8+-Eg(LiIK^=ss?1eqo+!Vo!ZqBO9QT4(XAaC( zDma|rD0Nc!y1r9UwpTqC@9@9?51$luj&cHr3bU1&1Hr4uy)}1A_hfSqZT#tmjW!v^ zxRr4oj*Om)p}Q1mH*`a$ImrwS9Oh5&*}{#CVkKIUA{Hxz zW_^Ob+gRU z`N~V~OU`tE%dhLsNQm3=g$d)q{6qGavqlDs6ow{h9qR`K__#Ev2hQKBuLQqex_GR* z`X$~PZ_R}KYR)W}U&-8)*^}L2j3aSc6t48SKvMLJ7=e}00000NkvXXu0mjfUQ32y diff --git a/public/img/emoji/white_flower.png b/public/img/emoji/white_flower.png deleted file mode 100644 index c0929d0dd9947a58766c19db54bef0c25edadff9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4391 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 diff --git a/public/img/emoji/white_large_square.png b/public/img/emoji/white_large_square.png deleted file mode 100644 index 60cb19a1371a7de1d486d120f9b050970237a3b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1411 zcmV-}1$_F6P)?e;2cV)icXxN+tE##!%W}J3uRj%`yWOs6)cyYb{r%?p`udLuz{SPI z@6~GcqZtK^28ee2&j;8z7(mBaNs@y0OzS2m~u>I01%A;^!FQ8 z1scM4$oB*_i%oGeirv40stxiM&sq>WtgKjffJqr!XqUXCoSTo zdkO&10yN=$5&&v78;dy*)fz|epQ#{nAZeC;EQVPucmx)}$g zz63ai52Dx7+#KG*D*@i?FaQ)ejd)ZIF6!3bX~r?N`4r(En~)6vZk%%+Y`|RHwfHNlLF<_4v2xUtE7b)}vEV?@K7TkX17)kmpO1Q*X z8UuL6-z@=>OS2-sl&))lXja@S8B$<`Bijo|5bVS48BmmTZO6V?CDar*Pl?P;b0muX)BW!Afp$%&iu_Op7djoX9$WnpV*Vj>5 zY-;Em`MVqtxO4*HKtq-a-~->@-r6%rf)o;;%0X2UL>@UGvH@Dj3seCf3RM*xsT^Qx zfzum4OLhzP+LyqSG==H`xG6*x3#W9?Mmt=cG|ZYcmMNwo_AWHJ@u?n^p-P1OcuKn~AL zmc@Gj_Cl9Ojq`ik!P9kGwQ@*bLlKU9B_J07o?7Q-pW$2}Y6LAkpJD`4#w{0sa4s zsW&)>7dUkrFq;v~1z@fmU=bteL2d~Nn9|;!k_RlR0!!BYPc{@@G7`+`NrppVskEHS zsgH~VryP})xO@gLkg^Ar#l0^#I9ok{L}~*7?bW!>*G*;j2WN4EkylL83fos~OQ_`H zruujINz>%0>|K-Z?wbYJ9+N(=b&s;&5TU&{=(Ku7*(L5}-&aUBM*P1O(9ZOl(jt}A zM*!dt3$PPx7c)z-(Q&vwtW)Au0EqY>=6gA)>!LOQlemt*d(hq-lu6BoNq>Z|N8OtnIC5lz+Y$dr42j$ RFNgpD002ovPDHLkV1i%be~|zH diff --git a/public/img/emoji/white_medium_small_square.png b/public/img/emoji/white_medium_small_square.png deleted file mode 100644 index 1a35981a321d7fab64dc2a4b562692b885393503..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3183 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 TNNp8n00000NkvXXu0mjfFDN5? diff --git a/public/img/emoji/wind_chime.png b/public/img/emoji/wind_chime.png deleted file mode 100644 index efacf5dd4be4decef0704614b26f8121bfc2a250..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3487 zcmV;Q4Pf$#P)45Ab^h*s>ult39f_1kQM4pdyC`Z)BB|PHDH3E$b{#Kj;RHckRB>B0MxDY=>ZESd zLiLZ@MbJ2PT_>p>TO}N~uvEkWk~FTY*lKLY6k=JHMM|Q?eHqU3=Dm0C>Aepb%6|&~ ziIAb>Gd#E$z6S#5JKtF^$cP9xvT*zsrMsJ12M->gS6+FAjvP5cciggP$qfa-sZ$ih zkwe-As%;+=g>dkO0)Tzuv5rfAGk(;YL+=#>ua!1;GbPtG0M3>tZjbMNswZ*#(F@5% z%iega;SL;ms~X=MUkz$o{~z%?dM>*AzVl!9wtu>pv9Iy#1_0+%M?T|z`l&OCo7#@n ztm!;3XJcn|?Z!4Qv!NNSo9ClxLn|6LEc7#*IuiA3J9kzsx#{Wntv6k=f9LW0XEgwf zZ8Pnyk3Aoo*ZTd2)k|7x*0v2h%jOOzJL9frMi|IbtH?OioDHIIn7Y1uk2$qp?_ z@!d@>nk){Ka)9FiLI8%%MkQlE87{H!evqf$Dkoo8Z56D9`>8BvZ?e@7ucx;j9l&o; zu4x}&Z~og?sup$ZtnHXLM9np9|MEKa=&EYOP)>BjrnA#^j_X1M0b(&{0^Agc1oU@j zr}1=eme}PWVrJ6VqbUB^s&oXp zAi;_W#J~Us7M%p207eo4 zA)*8)a1cNQHYp`bTLx`vaL_mAAel+YWTw_H4W}Lk&{L5Bu;rhxb?V!9$Lp)dZx2+dNo`5 zz*_p{-~VsL0bo#UhaF2LVhJa2#T+DU3u7U%0Z)K2K!gD2fB}Fwu>uhSNf1hHAsGkb z5{SMV022Y>qL4^92K<;ov6LgNR2)3Y1E@Rz7~|cRYr%3XvMkPBlh~*)@juysbyZoB z$3cL}h(Q8g2w0pT1i>PJ3t~hdDFK@Sr~Lr^1wx!LNDIt#4KiJa7&q5cWC%zYEzIEH z#;-li7#t8zjQijwSjIL$Q5*maKv58!kUpD>DT8{^bN)a`?*h&{)PzCr3@kAQokO zA`#ed>;RT+z_bi-##vY>0S+LA0AN5uFl~4c2q-1L{ao#;lklq!AViM9JEa8t0}c-RP17FpCi}4g?6`G7BNoOb8|8O!!Q4 zACe{t9!4$|`1E*=vRB5M=NyaaBZ2J-LGxo0lm8p?0|W@yLeRpFof z>6eVR-+TjK{p((f=*Qs=b1$Gp7-_>3E<8$M`}R@>0B$G%EX#&zno2E5>9FexfNk5h zb?@H2`_Vmn_H6q90kB}(5eV1cl-#~czeZ)6=V0@bI(sW z=NKIwg*va#>v09ZQ6U6sYHHBZ+KSH3PIPs3Vat{+Rl9cW+NuCSe_ua_hK5jETl?(( z{rexf<(6AkE?>UfMp%VY4m;fRTTP0 zk*ujgDwT@DrMbBoOO`A_JRbiduA!K?_5vY9mN7O{>KFhc<{-Va1(R=HK=JYfhF?F6 znnleKIEIWW1M2GPP+wnvD}V=PH2{`nH7nId&18En2y?pHqpk7flV^}#)CAMEAj1&M zV9~pYL_#y7c~&z(W%)W)0&6q?<(jV*1X!+(mMzOLcl}~;^$e208J_{laU9(nxU(97 zs;a8SWHPCZi2%?N0l)ymG+|gKxH_dTK#*6T0~!P!HnV;fSYBOS4cB#NDuAI*JMJR; z{vgi3_&Uaac@dm57^VS!wNlLJtY$zuo&JJKWSRlx_>a6EWQ!O${uZ*z`0<7m_~*8v zVMQxK&j*V>h~Ae{&RzznL8x}#ym>n{03S|*+S^QNVKRrX=))VG#`O82$ZUg0EC3h- z5$R5H)-ph6@z2hmKVRp8DBdH_GJpuMV=h|vc3~jVi^QB-G=Fj_Kqx24$n(DM!}GkM zSqnhhf(7?CH8tt@kK$fSxdL$0Kglh}`5fG_@P5w;ocZPt(f{lTT=>slVCsXx==Wf3Ch-*&D1(E8xNzY@&kHZS z;LoZMxa+RF{z^@9>-8|BOJAAN8V6DGk-IXE?3J;o3#@LfgIiw}g#w7mb3-%|pFMk4 z=YS))#$r73$Rqeo$-#pMAKbKQ)7O_RTL#_zeYlB<>N)2~G}pkWjU%(U6K(s~A>LRW z0YgNQ@zc}Oc=z3Raq{HJZ$J0kb5G6|0Ce2nua+KK5H%h15M+HYLb)tP#s@*5OCEZAdv)yp0TD?6sAvEfWBl&B?|xR% z{xfQOGh@6K89ATu{tr%K=tsRMoF7GOK^;22unRRynj!rVWznA3)PLulcW~;|sc#-V zdh{g#sAvGxdVB4C_ucn{HEY()D|dUk-MyOh7>3?Hk6(S~$ME|n5T9EEtFa1>QW1ub zLX?-Lk@2TbpVnLCXO!`W0ia?5U`o{1_CXcv-_ZNJ#>PfHv+J0jiRB1{fDq4AqwV)L zM&oWmCA-YJ#UMXKSPCGe)W+*Z2WQTl!E3L*_U|g`-HQ)NMQw#uj907r{$;hJ`?6kM zwzs!O#$TQFua2^1(d#WM<^Y^UrA~Swh^Ujszf1*sLxzbjH{8*Uuv+*tV@hA!0;iY#_?anVIg2#iDL=HSM+D|I$k@{Ugd! zF%0TU z>&q{{{0;zAJ^&vLh^YYCqybR?>}qIe*r>qZ3LL%I)U1f&U9m@Zc~AB9^n4y4A+!2s z=;oVmPAJbWSGrGy$aW&?R@wfj3W0}|*ZWZ+^6~!;S=FCUGcRQk)d2r6hojpsvx_2+-E(L!Syb$gK}H0t7G& zw5Vbr53bP%wGUPdRBuIFw6*}l4?*HsEp(-1L7`+zwrrD>D2kVJczDj)-I?kC?_#M^ z2WSL4Ac-FTi=Y22&rsU$n{WP^Gdn}hIkdAWw6}dufQR3c4G#}*@jUM<24wPz18syHAi(ki45qKI52aEmlXn8BR;vm4 zRg%s;Yh9@?1WFW_e}i+#s;-iKX5tuyLP3a;I^_*Pz_xAM_H=f3qEsvj0U~(;myy%b z$FrE#$yz-FD&VvGtZvqoghZA;78Vw;ef##^8-jpcyLJsFK+}iJd`0&6Xf3kO>@Fg* z*2j+R+jp!x0h>2(F2D5BOCus#t#wOFe+m<@|L5r7d0s-m*xtQgAfkZlhwDZFkL?e2 zbaZG@z~rUNm^^nLx367C{q`K{^YfUWcpr)s{Dle>2=`)LgPY-R>PB2HA&x@mo^DuD z$oFhQaZ4ZihKJBU_C<7eb_P8Bei^`-bt9nPxIa1Z)4#*V`67x+!`B)fDU=l8SE?vP z28tY1M;S!-MnK?cc#2@EOR&};<`~BYp?MEW)?t!Inp&-n#ojLTMdqn>B_M2sqY>56 z+uMuId>)0sgRj|@0+kC;Q4CL~IpLlyp92ax7-J>tvl~S0CXNt>5gJ-yLHn4gR#8*o z=(^^B(8b$-$?`tasG-aA(cyXM$>ovrG@RL^N5>e8xV`~$T z77l2Ha13<5*}zB3%czG5-R`-P}U)_Y?8$8IfpJN zIPHnTzC=WtNi=It!0w@;eWhyCkH|qAi<~3CxfQ^rB;En(Rz(LF8)TMCT!Rue0J08b z9N;)6zWVD@2tpJ)cm}!MyLayeaCXfJ&=!vb2|xyK9D?*=;fR2w7Ai6^Y!63HM{p`+lAplX-E3(Zw1x+di=^T_w<*6YNX-vVdkbt|o zf|Dx+mJ*;fj3OAr4u_aX)DA;w_wbwnBET907loVGoPYx(BVGNZbm#;sRB-4y}J0s(1?o_CC#u(ppx)iUKH|>LQc=JpjjD!=xwC5tQRd zga`@{6^QEiYQm!75v;G_<%6kpNrFvcU1jBhkcTwulS2rHIxH$&t}2ULHbUrYZ0an-1i^ovxP18}KBMUu zUwjdt#{Tr#XOF${i(h=V9yT{OK=QE3WgVb=1>1~35NrL}YUw1%6#|6hlH}I_gNDTd zIV@-fPX_ZQMrTI}gFQXx{`JE6x7K}8bi%~@AL#13bfa1sSq2ayM%{>92_3#hK8leC z!3WqC($2AZCYZTlk0tXvi;&WmuPKKLfz@TP7^UF1_4mE^FXQL-ZHQIjix)43e>gh& z@Ye3`OE)V^+pD3&Oc-N{9Ev4{;(|pPNJt1^S7wMLei!)2*N9w{w0w=gBr=f-Nyd+? zLvL4ETK@V}eR=-|csJN;-`V@nZRL{Z-!K=L@x3$9$uSriqia zJ!(YIK;oX`XaPl(CObHUnqYGQ965j#l&4W(@ZJ2o-cmxNzYp*ful)nf>wD z*bAPcAJ{nRTVzGlqX?0ZVJ)Ch$+kFI@N= zWVW#hXti%X@W5!G^$!X7nn!9NP^!cCeOHa*&MQ-s=;`jpKrUDDwdXTI^C8@nR_dKv z9RK~VCMG_>8rYie5juGA;9oxZhlats zNO0i5fsVG?BjkHtByW<7g#zTwGMnF41d!)Br4$?i9NT-B7!kD}0Z|ks8=inRRlw5H zl9`*I&q!!L0&2BdG?VsAm#Ubbo5wsWq3sB`ef#$E?5$Z$PEBEE z=BDfhb!|mJrBYd#xpgZcU}}0wa)NCu0^&IC^B@~D*_&W{P92Ew|6hT z@#v%Y%7Fvm{eFM_|B`?+XU+_sJ9q96*#B&NeEhld=g zR+fB0w$I<JJs^3V?xsXyW zmlMGI_U*&q;2?y6haY|ztP)Ys%BJgLvAD$b-e6*1;uWQH8;XEeUw!o_oXHQ*&CSUJ z%eHv|CIrYS5=nBB>63YXwOR!elz_L10z9r?KzDbyERF~nEA^O6`Q9Mq8Jl~!*qf7-+%unTeohNRuj-!tBS7xCn71!K7Rp`?D!_4mNNud6cUXwLWY1B zGLmxwH*el7e)7pD&jZ*v1aQ(i#&Z7Np+kp6#))K=QrX#|4CKner_7|DSVn}@&!P~N znW#gExP19?(k-rCyLN0tjRMDyAOFGIZ@>NhqeqWkef{;Xr@>Mw*E%-E`?&*1IG&7Pco21W1BK-EHHQl%Q`rrTz2K*lsCKU zB$!Gn*_gy}Il&um#qrvPB4x+R!}cy_!R5^gFd#6-YfA{dKoV#q&GXT(d%y2wZueJp zt2Com5n-x!Z|SddXS%2R{Qlqh&h)uGEvm}j=fm*#`uGO}{=tCgR0G^CVs5>avm)g} z3>S#7N?^oT=|iaiAk@6mNreNd?7;J@RQTn6_p$3PRnI9rPDv9K5!rnk>r}YDVEKS4 z$oaNlDyC>KML~>!6@Xk$QLp$`CXY*e%_sWn#POIYkDU1(o>f(STO08F^-@{V$H$H3 z9~DdHeYR|jsaQ;$fh%G>VimCha)be@sLLd%H~5y|n;u_txVrbPhJVsK{@2(f-(B;F z*4|b<;HOtgwCDHa_lK9tGnF3u&90I7{qc&}#LFY%rAl$Br8qK3Y1Ku<@4A+F&F@jV z?9-Ij|FcZldG@{Rw(LIHeY2lw|7`Xc*<)ponLT#)9NBYa&-u2ffbE-PU8%r-C{^v% zQEx=lW0BZlN)b`tO3cW6FvDw*>MEo(08s_Rf&gd$5KurJq&2iLj?V7Dk3Nq-@N?41 zz4%6oHZAG2Bb`cV%(^EU34gr$etq^gVt|Oqu1$QdRFS)j{e>>uS0Ji*OeG>3z7Tu* z2QW+5L3tp+rGSTEI07h(oC{z;A`qZHjz9D)?$yUgM}LX0rKB~3n@ng;By)|L-gVaf zd|6fX)Ef}Mx7JxcEw=24hE`)&ZNv;+22lyL1?mtn04FU~AF8DY zX#;=oXSf~TCq1|wSGS~7j^uEQ#*Dk~P@T`N{T|c7h*MxdfPdk7mJJMWf2B9NqA*+} z>K3Bvd_4PF%o!VzxDR{-frX7uPL!O54HCeV(B>q5&%6mce@r^tBAro^(H6C-^rz$F zY`XXn-Z&W(qLYOm9N?kSlENkN(iqzfQGY+td7r=xzaKO~(kT!*7TC#4gLi2Yti`U{ zgmj;VY<&PR6Btv1sCk7Ud1yYzkBZ0%n-HBS{G->>KM(&v8-65%7YhALh%UGT=|2x~ zQ-Cbo+q`*^qaX@U!wjvXQ0PW}^$oCN#5M-FWRT>6`CM-hk%<#AAvzIwz`S#Wua^3w z4e?Nn?J@K4eMINohUqy2k_ix#!*j|E$ScCtk)AV%&c6+|ehXxh*vH^?!#g$oDsa1q z_~V%noe2E)TlrkM$8IVN6^Z&RQTKd2>pG;m64J>Iyq+}hn>QqFWI42RVf+6We`9XXgkH7&dpr*u)r9C+@V5<9TG7ot@sdJUp}#;>HQ4?U z%;0;#&jE@A`rm{Bf_C_kc20J77x)8cT0k4FYem|+XP)81-x;NmSHg*H0RhYxuHoi# z)ozI9;cc~mDI3g^cY!tFYKX9~;~Rm838woh=K}84o)25W}CdWYl4Z1 z8p}p{=G6=O7F2>4q%z#j(I$uR-G#OZU95_}K@lOV>yRp0j_q7cF=^+XF_bIG+CSN#7hm}hPXit}ssRSD z!&P&Ap=yn(SZvWEk%1@%QqTkxh%K*d9p%5?`y>U|qAP}Xu6q|Zf97`>tjxiye+%A$ zSl-%0+PO+(+PS-mC1V+`ay|HG0SEZpfFqjUS^X5sCB0JGS8^;;Fi0dA8-Z^E9;`4k zp7N*Pcpj59DHq_<>n`J_+t*W=+7A1sz*s;)lQ%aF83CLBEMCDWM?XwES0721dxxQ7 zDVNeKGqzn5r1>_0=!ophU28ZiF3GvJY>}eHWCmCZxQ+qpp=f#JFL!WY|0Mlo;qn_U z;l|&6H*(-t&`iJ>@IHr81$>D4*Ey&F21J0Mq6K59PbZ8|wrHiE$QpXPBYJv^P%w~s zNEMX)5Cb^GX1QydA!Esy?pmW~-TpXR1M8v&*p=N}7{#V+VuOhU!u30}3BCr_Fma&8 z=4aj@HgM^OF5t$S&qnrbg(L;>khri_TrLzehYm3plE;E!_x6+rpO|I)t~#@GEz(qp ztWc>$3@t5l(fNI>Uo*h+ca(D@L_oEZt8{YD7&4ZOX=S&+5ZE4AS+oNB%I16<3sMlo z8pKGZ4p2G+g$lpkF~$CUb>4T?a&Fml8nSmQwCaE-hgGlwMj*{s`ncO6QeNBF;Gh1x z{nTbWL%mQg3S}dRf}c%!ZK}b`FOT!^kN0uKdk4AYBO`QmN6-xLnuNRqLqW)xGB)rJ z9?bxgDUS4PiA)E+4G>BbAf1CWWwudgXjM1A|EXmZ5AT3_0!DJMOtH)ZIA-P?!%GW* zg5&syhf-gO>u*1uo-RXwZ-fCFb;tBrlf!Q`7@ODlXp^bwga?1PpO>~x@yB;AXL!&; z+6rlOau*v+hzxO*o=xD)4agf{CR-4O2&FF);4yi{)*8I;yg^~fzyun~O{_B|GaeCiSrP^h{V z)u{v;4#M}yEoJmT!oBw$!Zkh1dxXu;&M?qpx#N}raL1XO1!$zOYhq!m5CMT|(Q;0; zz&Ri6;lm$Z!b>mLd3|>cuZlrI0}c>y$(S-Wpm59{V1$yG0InU0DhQ|s(xwXuh1z6}H@3I`7){Cr!Jy>Fzn5~UOiBTFo&Eh})wiUQSM3r*0rAr2j#1p+0& z5&1)hNdyQ61cfb-qZsFD;0VwTRYBB3;1vQt3bNQ0Fs0dalnO!=L1Z8jj4c?T zK?`Sr)HAK#qb^0AfCe)pAgbmLOC|-$ea(ogJwjs~gxua@QK)n~pb2IX17hLDmlFQ` zdowJp3TF;j3RV!ndq^Fms!Y~A_s<)YrYW~?tf2LL5fsT3as=AoNnr70Y{$ADpa9L3 z!)?dBL)D<(Ab8NgBAS~(Zg&t;6wWwX*tb3RDoLT-Wq8Nw9yA5J`0DSUNTCH?RxpX6 z4k$peEEIwIER>~ldkqgJ0Z~LjLjtJeyTB{zU10HTHb52(L#nDGq5xAZd3AZBs8jGE zVJ~RtNuevEp^7ALDIf|hxNN=Qna#q~j8drxV-w1IK42LfN?_VAeib5t4Od&neUZ5_ zW!XCn%T6~8E;Dp>2_i5x2|Kqr65zKkvgmXx@JcQffM9-yK~qH&ZL@(Akae*NNMD`y zJI`%dyi>gQ7&QoanS;*_w2BH~6bVrsj0}1<-f8*4pF0jtDd${n_??^EO<-|&01w^P zaog=S%n}NX6zU2s0fnJHIOiGzUf@6zuOLRi2?&6MpUvl{jG@iaf{YDtM;nJdkUsea zyRJURH%NR*ok6_^B&@W8ctRC`(GbZa3RAH5e8V~S2s1Th#ehd9Josb0Aul1d{V5zd zD{1IObHIdzkwU?}3)0!>2+VGuy9 z2KbIt6p^qM2=Jj281wX&h2A1?D8Snjn}G323c(y4+hW)g^kSHLMQ1#Kv4Lw&{s)Pdw!*91LK`|@*ayX6A?yWs)^(63h;z-&AzQld)t>(3W5Pg;2f?>cI3DHuE=^uJn5bdi@!u zESNG#(SQvrFGnN}d9rlwqXz!V|A1EA@QE9h_is=Jh7{}(UEYM)g1xT_k3J@R_d((6 ztCc^zP+=~BAz<@!G>DGWfjU839$)vk8PC*&-;=Qb(?I=1-WW-NnVnP2JiS-H{lPx} zZ*7;sm%+qgQnL$IE=Yp`0-_Xp;N!OlU;9tOx4$X;=!eSccf#t`%J7KNT?Ox9avEOW zCv4j)?0N+zCxzY$+;CGc$>iGxAI^<{??}kcH38oMH>>5Fbhn6 z`U(E#XUqHx%evjgQt4EIDHyPV*Z^-ADP=;e!-uYi9a~}RW})nbZO_At&xFa$hNk7S zD0IcpA4Ajy*MCYm_X1!nY%!I*e@MRaNC3~2LfH4DQ;yNY{)LPIm;`1|=FQP2Fgewr z_v6fjJrmb`#i&RFrazDe<&H8ng+(c zvW1<`?3Qo1F^8Y@__( zKMLo)TVY%wmHaU@!~l)Y6iU7Yz7BpyNhUq5Ln%A=`o}){pgs&74h$`TlQ1Cf1;K>! zZ9mjMduXE{8n*7DaOobg20>8Kb_DVjLxDU{1KUzAzY5my9w8_7f^i07pa2pH7|lDk*W8elHefM=(}w1?0w7F#hc)l;%EHypR~-^T zo8ap{Tlo(BXa?`LW;xF1dH^^GOlAyk`VS>Vq#GCpR$RW4Ac4LVJD+LKNxZY+a$?AYV~`lg5Vt1phW!4Ck3RdwqB z_a{as0|l>4p=-aT|Lyx9)1B+jPCi+#*^*yku}#5N4N_7h7NiK`K&(LivU%aqr-T@k z66SeAqf@l0XdT>~$4x8gxT8Mi8c*$%Z*Kex{i~4QC~zp86ZGaQAXEYKRnW}eU&nlR ztL{shY*}5_;fmK~8g9vADBEyv2^Uy{d|u}GOay3wRM1u?(1xNl@U!4%e5c&UJn5** zO8$kfJf-*i%b)18z*vAk3{0u2p3=V-2fBeJLH%V*_q`uv{S{}*$NC1%nOR@3-3C(; zq%7DXP?XRc$cL!B0>CR84C_qoife(^6<<@_Y{!7f!+!Tqck5q#=24!iJ7z++9}AiZ z@NdcI1*$+V&=2$hJu9kI|NRxLeeX)Sc1gcn7*&mACfJI}w?rYI=8ORVAHdNt!L>Tk z)qER1o%K34uD^VGpZ@q?|CBBJXPJfY3J)g2s?WaVpBNF5I8;Lq&==0DK=jYoa^`jC zn6+p2>)L8JXB5jOHnBiKkO)kaR{$F3_Y?@1uv&HBoSk9M?g`oQqgVWvuWVsAkU|@N zCcsaJRd4>rJ~AUB1}F#kASyr?5L+-GS{-iCH;V(dCr_193#PV2J?|N3)qS zTT2)}T$9&d9`k$u?_T!*U^@pLc%TW)0kr@hL|s+=+u~DWA`%57x`Ha<>k?25vOzwN z02sg#Vo)on0n`KhT&4h?zAZmD7>tO4QcyX-=O%y&kz6>y=kOf`_(o830r=a>fQ7#; z3P&gkF&L0{f!qKRAnn9l3%dK;+n{sB=TQ7WNQ zsYM{#Di+WO0)DgzwL(CPkdPp)L{qs%&^mS;Kd zkv`AN-P>3GzV)rO=FE}FT8kg&p|I1(PXzdh06!7n;B z9Y&v`a!HSOMkdg1RdMjxDa_8!V7z58ITE5;3jXP?6kxPMQ(+V~>y0+XCih`tYA+h) zoJ9y!y&nBL5yb#-Y&Xi4I0&2V4%@!W@9oF_LyuszmSMaTvJheO!F{FA-E{&ejkzca zQLa`|Ehm_mJBE5CM5Ch6tmyjw>G_3UORQ6lpX^cA>#GFGV@Zu|lOpkIan)zxa)_b}5M|uwx9`btgoCxTH?sRRRzpApklEptWKIs5JM(njAR*V=XdE&mNeenJ54P1$igX z7S+Zi#&$h~BMi6pN1mt1 z(=L+gG)k2Y`m0@(5?3=AWrbU%_+0=#zT*WLZ3JVLGH`Hq9%C(HD~E^z4I;og7{C}M z^&ss5%eOA0yS9#AwZi*#gw+;;qy@cl5!@wFij@@4Ai~>rya2}!M1Qz%HvGV3N1;>K zOkSa!5W;|mGgke~ws(SWCc3~N1#K@MaG?NK4r8G`gGR&L~2 zUtI*jK&cE_26X!dS#FRd-agjae*`f0syd*O=+AT-3T>D3C518z5Je;r*8`hl3t{Uq z+|zJP1Sl0C(gxbh!{mK*Q;W6r92;E*3t$N%a;-$}m^?bw)_?k{32%(r@7YhbxGYvE&(8K`Z2r{T=L4yNS91*Os z{9Hkkfwc;GuD?V?6>DwwBNO0({qgV5jqAAOqVFnxOo&1t)Y$Czihwv)Fb2r20W!cA z(3SiK!9#g&&Cn>ecAa-7%L%;N17bN>cc|^^+J_Trv2qPc7g-F4u(Af${73 z&1YJ2HdxJG-VHzw{<8vEKp99XLHh{iMALaGANC6QDUb>Xwp0zt@ug42ut+-oUqCEa8h^`hxI#$J^hDkA8jwANkb^XiEt+ z48IxbpvZc%76?F_4~Suuh~xEg_IHA03jGpT1e;8c*wX;s_d`p8W<&jjJLk7qfOs|b+>vJfamj=V*;Z?VzW&USl$pbj{G zAb#&?J9uWits#BCBG#8`t!P;J`+b0KdvR!Qj)fbGSX=8l$ojrr8Ky=w(sWA=aI-0# zAQ-x0sD>;CdJJZQRwOP6wRb`i`&L{{)Sju1{@@QxfCu-7Z(!n|ogUE`YbvyAz6!^& z&-o(ymXR7DGlbuMriP>YEml?*1&8+nA9`;Yd2W&Bo?vbqtU%T|kU11$cwx2!UIB7Y z1SKN)gHsX#U#^4@99H34??xtl`W<^ zfkbwBok?as(ng58J&^jS51%<~KQ0SfOAPUv9sHaG!_N>JN*lQ^h!R4wp%4c4={pi2 zj^lR`(L=q|yabazd-70tpd9N@?-~zYGuG1J1CK<$UM9)0C<1~3c{pqqFY6-(Y(}}? zm*@&%YpkS5+UI$Y3jNe>6TmvM15!eHz>}<>EooWMP@sVTfOgP?NHIc(+japV|7Tk3 z_qoU^FXtyln}M^e9CDg9U+^j=FqE`AExG5-m~G~#Es9t{UP$x2Ez&6yPMK^!1H*a& zGI{15V67*v03ypI6tq$xFtnE062XuK6%`Z4i=Y((ZJ`5_lnAxDy#Pey$VYM{+L$7zx0CKWf|*=uFnI5f4cA#tFd|5g-%C-d zB&d|juoQuuy#pmSM`1YQTB;+SF_aepkeZ~GN1*S(0mc|X?h+M{{?3;iOjs(aSSbme zy5u7-1xN@N@YXJ(U69T!1A>eRc7>ck+TcdtqQ?+HSe^Ct9@aJtnw<&E>_38~o8LuH ziV;_01QJ~Wfk`uQV+|~e1T|cr~X&=>k2c7ZVOney@x#YO9Ir6Lr6&R2)5`7Z5wPnz-K}ssn z?FIO+OZe8&J;44MEo2r}a%inx50#drNHq45&kF&JCoPdKNCUl`N%uVYe%}$#vAnc_ zn~M-pCwCvj!%w~y$4~w&_Uyd}L7>Fa)=B|p7!e>hOj1Rt)JCxii!iFO>$}iF7fN?w z(-hLPNHdgQgFK43ixcj^0hY(!so)>x7tNzdoXZVP99U5`jeX&R!DjUH%nDIYy2x<| zX+h>LF;lj zukPKH1xU2q!s>t|@+Jp*M#ziR`#G=9loIkA9P#t#&*R*=b10Qcn4Xp=;h|Ag=O<~YazvKtqW9Ri&CQGl9C8g`Hhj!+-&a*FJ9^691}0MT6ptg zPvWglz5@sL?*&ng9urz#To-%y`+YYT0u-r-Fbokzk%;oW?|lzv&YTfJ=H}*LG6Rzr zbwNA=8dw~vaDpm`dr{oJs0YLV-MIjluiI}-c7k8Yjd`{&Uq&$b$S^F*r9isF(pt*z zWjKEc;K!KTa}S<=|C2cNbB|$aVw9t}j-^}Ig%Cps7wGkR#m^<;K@cEG5=XEgFVALY zXXQEITCHKonZpzEE*Q2wMiFg`A^8IT=Nq9bH?z|dZTfne=?|~2XAhUFNjcD^>iIJZ zSlob&T5}9TrP_MM1b`uik=5Khyw&do-rIs_TTrF*wqDl2EbDc+;h);@1ESd|MO$}h+U9i z@18l_d+$NCTP=y)wQE;}NRih?q!~iG+wB&6dCu?2dU<∋Ig=?fGZogz@olG#U-b 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 diff --git a/public/img/emoji/womans_clothes.png b/public/img/emoji/womans_clothes.png deleted file mode 100644 index aa297c7b65e5cf94553a915cc300a8c6175403bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4075 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 diff --git a/public/img/emoji/womans_hat.png b/public/img/emoji/womans_hat.png deleted file mode 100644 index 4cb2e6a6934f102c624bf793303448a6b56c4660..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8101 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

    YDbw83jHy1DX%-#b+N9_w z&imh`W~;>K9@d6OQ;(IYxV_}48Q+{UO593%wI?G#;1owYDdBx<7}jq?1jOBY-MK7* z>F#Z`S2@7X_l$coe8m!r#%#v}*RSy=+88+ zZUb0dRxAr&zx39K31Az{r%mwF&8lSJnO~ms^~|;FY;L2|i*?d3{uX_!SDK&7Y@k#6 zrdfKrQ_Vq>*=U+pgTH(Oy3>_~4%y&IEY0ZA0T>W%?nZimd?z?zb^n=xn zGzOEr-UWlJck`wl?FbxZtE38aRk5soS(Hlh0CSJwCtDlfn%Oe9i-Q)= zuOISG7RpzQwEiBXW#0u#u3Tc^vypP!ZV=lD9#yQ4xIeTYE0|B{OWZSf4ecI;l%ytd zf>v!+-CR%}>SBQTeV}U}NVOQz9SAg#eJgnRCr8`)wGu${{v$}a+VkN518#RYLjV8( diff --git a/public/img/emoji/fu.png b/public/img/emoji/fu.png deleted file mode 100644 index 61a3fee8d764677e5e62fc6a0a6cdead0a5d7863..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4687 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 R?R)?L002ovPDHLkV1k-cp3wjR diff --git a/public/img/emoji/fuelpump.png b/public/img/emoji/fuelpump.png deleted file mode 100644 index 54c29aeb1db3ba1c39626e80e7929d07f7e874c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4296 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 UeDRgELjV8(07*qoM6N<$g7Mi4%m4rY diff --git a/public/img/emoji/full_moon_with_face.png b/public/img/emoji/full_moon_with_face.png deleted file mode 100644 index d42b3f0fbe5e176e9faff916357319234d3d51f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7165 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 diff --git a/public/img/emoji/game_die.png b/public/img/emoji/game_die.png deleted file mode 100644 index cff2bd8b7768d0df6764cb33c7d9d892b924685a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2956 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 c>n+a diff --git a/public/img/emoji/gem.png b/public/img/emoji/gem.png deleted file mode 100644 index 8a5d8dad5c3ab032d0d986be788d309fe55cf3ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4855 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 diff --git a/public/img/emoji/gemini.png b/public/img/emoji/gemini.png deleted file mode 100644 index d926f6e88e908cfbb7f7d116fdd50421826131d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4296 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 diff --git a/public/img/emoji/girl.png b/public/img/emoji/girl.png deleted file mode 100644 index ea4126941f726eeeee2eabe1d429d6a87619cfe3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6314 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 diff --git a/public/img/emoji/globe_with_meridians.png b/public/img/emoji/globe_with_meridians.png deleted file mode 100644 index b198646670cf4cf4d4d307ad92949cae4af0f100..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5837 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 p{Udx5+bHu3XT;{#r5fG diff --git a/public/img/emoji/goat.png b/public/img/emoji/goat.png deleted file mode 100644 index 4be9cf30404771e0d7ec6d6e0d8a63dc4096f11a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4889 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 Z{|6KiECfD=G8zB?002ovPDHLkV1hXMSrz~Q diff --git a/public/img/emoji/green_apple.png b/public/img/emoji/green_apple.png deleted file mode 100644 index 337205cd125385e16d1b67fe21e2568f207e3de8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6205 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 be}4WKG-wU&Tu{-L00000NkvXXu0mjfh5Q~c diff --git a/public/img/emoji/green_book.png b/public/img/emoji/green_book.png deleted file mode 100644 index e86651e5c5c372afaad34b4ba16f84be46acc9fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5090 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 Ef*Ns+Z~y=R diff --git a/public/img/emoji/green_heart.png b/public/img/emoji/green_heart.png deleted file mode 100644 index 7289cb8147c75c638ef01ce52fd777b166e2f661..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4432 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 Ugyjcy3;+NC07*qoM6N<$f{!dqN&o-= diff --git a/public/img/emoji/grey_question.png b/public/img/emoji/grey_question.png deleted file mode 100644 index fb97ba752fdc88e948c09be05f0358c007a80cca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1057 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 diff --git a/public/img/emoji/grin.png b/public/img/emoji/grin.png deleted file mode 100644 index 591cfcef8bb86b07f085e81b99e16bb261c40e15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5721 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 LNkvXXu0mjfgVFxK diff --git a/public/img/emoji/grinning.png b/public/img/emoji/grinning.png deleted file mode 100644 index 7e812b7ed45c5eaa63657c6feeb4a62202230f4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5550 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 diff --git a/public/img/emoji/guardsman.png b/public/img/emoji/guardsman.png deleted file mode 100644 index b67b335d68744d99bc23bb6b69b74f455e40987c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3587 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 JPDHLkV1haN$m#$9 diff --git a/public/img/emoji/guitar.png b/public/img/emoji/guitar.png deleted file mode 100644 index 2b7fa43c941d33a524665cbff0cd178be13b8680..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4382 zcmV+(5#jEMP)Nklhr=;(&6+hkXUv-Q?@~%VKO7E> z9W!?Hf{?auTu=S94)`?T=m8dvh4dxscw^fhVjU?A*jZhB z=+WJ~ckhWtqm2L~V-HZNO!Pv|v>Sc;M~VKw0}S5>kklbgErW8s=E6A zJ=N9LWl|V&3@9H^^>Iqp$cP^(|@oU)e~k*Q8G8 zcndtJ*zMN|A%cMIq7Pun#9(njarosK3$B@DDqi&V8gBZ^r>L(t*;>=ZN1LA}9yiKQ847&ZCQR0v3$VDkzFXUYxmL#T3nxN4lq;ihMUoTLHUw>}LDR>pM-w zxW)qCK}I7cfJK*h!jW+Pi!(1kI39qaCShc67<@Bkn|KQAC6S!SH5l?B}_Ir6gJp zQWjD%ToLxw)?4sD@9Aq#eZqo&Z`dA*%@rarO^96nmzrNHa=eA1=VvWgHs70Hb_PDE zkam}_@5l)Y{>i?9_T=ghy5-hkdnUNdFa9n!$liP}2j;5ckxQ&F{#bZ_D0}m)%a>p7 zFBnC<GXlb&SLAzc)}j@QL!}dmHq}rX0Fhlz?a5Z&dG43}18s>wt?`MTJUYW zv+0-7zP7~mL-4~i0H=?CD#^!N6cXfTD}=ld@_^3?8cgF{F*a9teYy5$X3k%Fb*OwI z{imvl_|ll(Vrm;Ycx&S?Vm-}?8$KG4uMg|{0xNuCbimK*{2T~)H2h9=5Zr6oV*?w+ zIZK!12~SbB{po4*mn_Sxm`u-!-4uIt@Re}5v5Pl1Zix3a={N34$k&GbjS+{N>+`b7 z3V0O@TET6HEQe($cr1J22t#7B5Lscrx^epaD_4dqr_z0Vj|HDZf(J(K8e zO5C_NEngY-cZP%zs@KWNfET75dhbA&wS*I6MHOazflcZqd~rc4QaDSy7Zg7025WYLbB&ZQ09+ISI6ce^ zdU1JN3Jz7Esh}wWfr{U2P$a>d#pgPESiQdk@5H%FZ3Sa5qowYBiX6RYfiaxyGT8F; zv#G9@*k@~{d>-JU2_WcUS+4)g_}f&01#cMy3RzA&E{B27Ww57-K*_viluWvU#sk}k z*t^kkt7zzhH=o*+Zf}jQJ0j(#i|X$1t)=3+q9E4=ec-k$gW#$FMKBnK$F1VFscfl+ z?5WEbJ?9#l4{jr@bf5;yIn}4~`Y)fQxpm;H7W`9WG^{6Jxez{AE>m(ntf?wsO-UGA zz@y^Q6f_}F00B7dfMM|D+d7WPOPR3ndg|VLiLhuv%eTh9-)_NgqN%n2t`kx|2rw)I zSR{nU?O~c-W2W1|rR5b&4fv_b%K^&-d@3HNicKhJ0_-X{>>#DV!!POBr(DkDC7w*7Rh66IDjMII|J@^3EU0^rya{Gc1@t!7=+gZxP(q`zrm+p3t8(Z3rlCP z;QE`{{@f2KRa$UPSV)tZ$E!bkl0-}Q@f3VfS{haXEEA$Efd;nnTf+(wrnQ0$O2ya z>9+}`5AdU#LcDmhji6IOqG8tr4m;RXkOm|Z(ANju-O!VOC_E{pOkI!(SR_PIB#Uc< zUhvulPDNlN(|IXD3NS$`nIL2ui9``5N(v|+Ps7;H(Xi!l=EV-7O_{-gf}7Fb{xJ*G zW9&PiGQCh`d_<)qYLL=XM5B`Ke(316+ygCL(ENK3knV&BPQ$-muuaeg3$va0y-skb z0##ZTfC&gdN+crlo;MJ7jr77>q3a~h({-F2wU&lA)-yL+gJbek>WXfrb<0nfYd?m) z%t2WKoHjx4fI&Q&vMRK6z^N9?tj0m7J{j6pfqiX6`^8&Z(2BEm>>9Kg4YHC^#I%Qv#0z zQl=zf!6*8ly#?wU;a~%@QDJa75EmXF~xfd-&Lp{9VE8F_&~3~hLW)u!v{Szfww zDsk8DrEc5rNJbXZaCkdYi@>Rl=Wyv~XnN}r=5hqh@svbE(d#N-${eJ5~mU6=&XNa@1a_5>Z-xkD>#`RMa|Anq&f&4P;{D=0vt{nwvEp*cW2}GRd!!RFs`pou ziuDo93$t&+7ufdUF4j^^O zoPgG06F?mH_9kiTAAp!HF{H#aA#N(na1Su5K&7ou=WBP|!Rb?{C@-%dO#mNC+0g~R z?dXU8m?WW_qzo9)VS-okz4A83<~tckE4=#JE0~7C&Ye4nCgQX=H}dL{ICuA6#+p-$ z`1|S-YEQMX=7!bWaK#i>SHOf^FjLUc16@hb;k{w^m6<54Z;3%?4-6zs^t5FI`Yq@w z*>GQ3JLNuw_Rc=Oao0CFdh8@^?Va>*f0n!4JGjOEKK;%0OzPjsZIMQ9`@-j$Ib$j| z3EczG)d!uuRyFBO!cK;VhHj4wA=Jy@*OOf=9#;gB0Qg-hPMd;Lg&YUe^qSnV!=y7Q zL9?@{5WZ5Wb7{mzJe8s$4o;hj-)7LLYlE91Ktm54Jqf!lSEqRCh?J`sCep}AN@>gx z;_D~k%*$%S?XZEW7$589?=9~f|+d~kw_Feq+py+@YC5gR22*f z{Rxl?U^$ionHHpFnxs{`xTN%aM-G~k|UjPMHigrPn5KDK?2Ae zkKGxDd&?bA9Dv-M%&D*goOXe#3KZo`5GWEUCAwh}O+s%BTDzd36^=%sUQ*WzH}=3$ zAOnHSm_PbwLy~`~ki;Jfb(#=seDH&aLa4|EAs_g>kmUrs4Kxje04X4CKthM!D75#$ zsctxth6ebs3GPThO9sTuR0A-FD(3lL5B=R)1~C7eaK!%<*k~cfIpLcjxGrB{4{G3Z zfZGXnJ17d6Kr+Q(_dBD|l7iEqH^Hx3;dvl71c8xp`Yfl;szbjA#yP?K;ZOkN`9k=U zo)W7NVwMBecwngyDzgBG0F6ul68eE|NOi(4%bTKb0O0J-pC^QKUZ3N0!Oio%eg4b| zIKT3Q@OWX03DY$gtw6a1MTd?QRO|3T2OI*#c{-8-fFXc$p@!B&aOcAQ`Fp}&{nzLJ Y3q9#Isf+;NNdN!<07*qoM6N<$f<;kV)&Kwi diff --git a/public/img/emoji/gun.png b/public/img/emoji/gun.png deleted file mode 100644 index c49dc52c6cbfea3614046401144b5e7cf5601aeb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3161 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 diff --git a/public/img/emoji/hammer.png b/public/img/emoji/hammer.png deleted file mode 100644 index 482b1c747d1a515e09863a24f34d7451b7ebf852..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3670 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 diff --git a/public/img/emoji/hamster.png b/public/img/emoji/hamster.png deleted file mode 100644 index addfd2e6b03d1742832fecc47990ec2da4374c34..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7221 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 Dgj9># diff --git a/public/img/emoji/hand.png b/public/img/emoji/hand.png deleted file mode 100644 index 5e45c25a56c6148a8122fb762179efbbf3cd2c62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4161 zcmV-H5Weq;P)45Ab;tkb+JVKEX4nJmV3`3Ng{%uW@B6}dk4Tf0Nw%cp?6X6oA2BHwZH!S2jy$O z_bc+ppSZhu|KZKQ_EQ63usnMA_MJO^Y5$Qsu>1Cdc=wUpgVB+pFMjOS;lBTO06uqk z)85}Wyz#D2?pxD~)UuiI_KjnkP+nU?zTAWU4TIRYX{0~Lv=ga)e9u_v3wK_Bvwz>U z2!LAlz|Y+HM>p=h>8V=}9s1_*#x0NCf7|G004SDvw�`P=)~lOrWv&y)kAB0DR`w zO=BB3_I-cbuANVB+`RS4PaPOOaLobu^@AIK@ut1IKY!rpQQmvxFb>>t=*EG8zAq9H z=W{&+K_&}f1&DwN2*WJGtX>BI<^IC&9=!AL_JemH#cl6Bx^-~<;9tCd3uUe;0L60Q z6W49qg3@3a`Tin?#zrtQGIZy=hl{0_P@^=100;;|1QTYEF=5Zh2xUh%jr`p3<}viH z@5A~{BiOuUY|q%h(9PEjfDg4qlzMx&=8Hv;W-t@NY>0AyUpX6wWkqaQYYyn0zUno;Uk~F{rZo6_Rxk=0GOy- z&5DiI1_XitU}h*%P8MC5cyi6GRBlm5CDoi01?1hi^RDG0A5u9K18HSy@jDQ{cBL{FJs;C5Z13>d&j!I zY)0ufRj4$B z6+xK*CeZoViqT3jNFb>|Ap)_l>H!lwS{4E9JuSlEEHObSMdvXJoRfIfMSwyQD5U}~ zg&4l*vC7mMqQRsX+I!XuVV~m&l*)-XP4s5@L=0;!;B2V1UXdCu4X0HV0R$Zw%^IB} z4FaVUX#))=LbpmQeltvl2;#c5kOI_Js-j{B@tb29)V}Ytf+9}UQJW5VQVvX_x=Von zWbq)}syhZ*>zvZ6)7E-1nn?;7T~bD;g)L2Br9q0@_W(ckR|v zAf!5l1~!Qi+obXnjN|wVM>h07uzN6n#Q;#tw8<2eF#x3+jfU26JsDFD!i;ZYA>s*; zR^Zl>q?xBA3EP0+%}0=pVWWD{)+)Wys6nSS!&!@{*+dlMJpLE^?4ix0zkSb5U;dN( z-uv_oyY{~@c5u(J-??|sKYr@K$gV390TgI127&Pc1P-*Q-igf_UYiL+AkZlQfJKna z1Q_cp+*2+U3!TE*IRUa^4!dsHx_$4i?Kk8Ky%6UB!0&OAIAYX(+)eOvN5<~hx?{`t z?)rs$K6m7U_wKpv-uJJ&{R2OL{hjyx>_=M@=SS|_JGAfePlSYuCJ23gi=>{6n-nC? z>ohaEuX9cuO2ebL>%$)z%&zH!7;ZN?01}rVJGue4edMEgQVhxWAQB5L3=rT%VD0~W z6~6!Qb+_!?z4Pn)?>f?392$TMG=u;JLcj`}uG?5Tar*4t0G_^_0LU0sHkkmF&NtWs zz4@Nf$nenKY&Pq?Zh^K)anSuG6bH&)c-HB&;S09rfW^|97Qe{05+`FuwqXKJ#4C%;n7LJ;SZA4n`<6EB`b;6#=n zFvBGY$XPJ35zB0_ukZftH|;Kk}z8dFqRV{@dX3_erG!OS55Kfh zfn6iuXvyo6Mvp*1koHd824*c7gi>z-!{z*u9e@FV`*sg(+qGls*Kay>s1THT048WF zXim?y#6OFN9{SFie}3ZRXIkPP22cf10Z_l}HNaWRHcmis3{nPw`|&g>^**KfPJ|_M z=ujj$*f@f-4lZh-*xQS3V;hD)cobj#t-ChAam)U9-FM5;qy6R4A+M z0<9UtV;fN(So`s?*o*aBx1lhy0ag(d6I5(5eeOJ-d+KTVkLM>IY>7YBC4OE+npdP5 zN^HxL1ZXXSS*f!tR|Id(L@dM#90W>fWC}%?d;z7QVXzLMvpJ~V9$3vDwiZG(yMXck zdI>*x?$vKRKH7d0KE7hzV4Sq%Coy0hm{tm>YPzAHy{k(0{~JGfOzf7 zFA75-G!SN3a$dMtfQaBHDv?Fw(hSC5Y>9v7`AbiZ&;Kcag~cTz(bX7;NUa%9H|sSd z%_cI51!WWnt}WyzIb#{1bfBP20AvF=qhZCtIg3v4Xhl#^Ks`cpW)_pjU&fP9JnbGi ze&I{w^UYJ~kypEF6QOz(oo`gDh#NJa5kY5i5bBzAy_F&;0s@1XfLsWK8i_9n7OvwR z0*Dk;;(%HWjrn<;KXVGl9)A)KKR@|5Prg?Db}GIqExTG1Ayp)H7GBhputd$7+CyS^Ru`(c@{4{^CLX^?5T(U z^W@B5c7=Z9YL3KYwjn2G=jKssc_eDqA@v40wor<@dw`XdQQXo+h#AP{0NtJsu%z{a z09Fj;08|^Wl?61a3z(mJ0~4>lf*-zoV)CIAvtLR*Kc7Ot)db)!%r{@2zEr7JW-lR1 zqd=-PNFv^|LMzY3?yk=R&?Y4%=oqIV&y569sUoS@e45oO^SJo>IUIj=98a8{`SM&N zxzJtpuR4I2r)%dXFU`Gp>B1YR&&?oeG+?6`RH=i!r}@o!An5}UpffQtsw-az!~_-w z)fQpaku>XwS^%2W1ypBdaBgw}FOE+=+sgazq~hm0p?|djSOD?(O#R;`UO$i7>1i}7 zbKX-)(u6G3K~a)=pW5QB^S4G=3pm$-u=E-SP$K~55c7bmBlX?g#fX`@qpyZ=ls znvF60!nuX74xgUT8eB5Ya zVQvPKr_bPp6O+-giOL^##EVG$wgUiA|G~uEzxU_WdkWdi`;5`(cNV$CAxL8AI0Tyj z#OwvH1R?NUrA?4Tak~vpqQ%|Ul!ciYoNqS2YZJdGF7_b2*PBf=YYUj4 zzKF@!&f$gAugeo>=KlP9<8%L%im!=?T`hkpS_iN&+rZSrr)D0o7JpD{L^qAi&tqV1 zKYEJ2$Yk@-K>($7I<}?`K)>Le2az-*#Ek}8=PIV&xQK~!Q+R1&>cTUxSHAM2*Zpm8 zAr1c;F0=ig{%eegasbu{;s|r90p^!r81(3h4 z6yA7!fB1p*y_tRMd-H?+g%E{&4*6{0qrou40UkgUN2t}BxKyd(-0XrqJym<;_{I9a zyfR&T4nQ;Y{2YMU&Y8a&0T6%!fD(WrfE)mm*T`=wWp}JC2K&}z&F{L2mt7=)_~Er zH^T{^!C>#fR(AC-$Dc={&x2^*gO9`jh}9N2f%*=->Y&JKs~hw00000 LNkvXXu0mjf!pO0h diff --git a/public/img/emoji/handbag.png b/public/img/emoji/handbag.png deleted file mode 100644 index d7adf04ddf2238ae16955df83d1d42819477e6eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5449 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 diff --git a/public/img/emoji/hankey.png b/public/img/emoji/hankey.png deleted file mode 100644 index 73a4dc840085c7f42c7464d827751348b58acfba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4754 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 KMNUMnLSTZLWm7Ex diff --git a/public/img/emoji/headphones.png b/public/img/emoji/headphones.png deleted file mode 100644 index ad83000e687632a3da46502187b0b72a675a56d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1910 zcmV-+2Z{KJP)kFsA%E`O;fB9#9F9JO>L7>3&O%u1X;Ggwq2H;e|P8JbG$jZnaO0`VV2!) zzw~+XPEPiIc%Jt??|o0sUeSECu&4?j8+fp5!z1_pbj7~auYSI7<*TcHxVD}tg6L~W z-<8^u{Bl#>jl?)XfQ`>ply+DC=Fo?3;DPlm+uW`imXgAuj-y;6K|q!?Nlta_J^dkW z!TlXyf4%$pTe?2Ua^}*?OlC2kIvQxAg}N|W{zTP~$E=HTMCMd&;7i|_ck0$MZ5HDh+J>$->>;bTFTJTxKD+i886MJn^{Pdsbl1HA_(aKps=u07|7q;l>zbvz5lumti8W0 z)&~4uZl% zB4Y&{22tm#m$xbzusUl=Mq&kglWT!2c>+>c(Q)LGLj%efaCr}XY$6q~#~(!Y>>6we zSYYHw$uh_V`a`~p!Y9jU$P7BN=VNmj)l z$2kO_9QiQBSn!O=0ldRR&`6adS8C-b$+57?GqfI=CG3&D=x0{p&b%>#uOe004AaPI(myU27#|W)gdI3QAv5MI5EG`u@wj@C2>bW0d4{b)wEtNIk1HfOarIw& zC_=D9mO~n7r;$NU)G46|1)x=ApnS?JFu!?nqfoT)?3z~fEzKa9mo<&Y00SGT09nSa z0`p)NfQ4XZEdL+5)alV4f5FQKo44}}J zDo}pfDb(1K(f1AyQvs0x5|964HuE{k`;2gvVRE?S(FE3b28?WJr3@zuO@ws`^1MbP zmyChX0$D)8(6|N^AjSMmOjuqMU{DJM_Ok#OVK|H|%8YmpR@j2*4Jb0W4g(Qh&ST^A zCJs6})P(|t-FoPnZvjSH8%`7o1N1rB#t&i$UbLMWjo+gmg^E2;{wqufIZX-rY3cQz zi?tQECe3#JY!w$1Dcgi=LFV!x%c$dn_>p)Elv&ur9$7#aEu=ZAk77`<0)mAUFJ2Z7 zl_7iTH+ORb!}O8fYQLBw zOE2dQ`@)DOho&mX{~tsas;cJWZiftirkx?Km`OK84p7iHJ^v{k^idq)WqLUma)2vn z0#sTbX2NioIR2RRthmD^w4sW~MwpfgXszxT@iO=!gD8B|*Q&l57i5wZK))qP?@2b$ zWjCn2KE(mH>p`vwX~NT4+Y|KU41iW_4_P(jt2`mgTnUJ0lEZ?JE*h8y$f5S-_c4bY zz5FBfehTz-elL*T?&UvXHO(~A&06ZCu{}){kgdtCmH516rsgmOnz#&zHBA+8zmw!F zXBglD=jrDRgMdQkrpbU^=kQMs(QkO3vkU_Y4o#B*?~KPNZ}2)NImaMrlp)WJ=>d%f z6QG$YsBdQel0XH&7a@XcJRqK_8HHg13IGaCaEXWYzA>kvHqKP^ ztC>3J7ipHe`7CpAIK$!S$SOBLy&@>m)S;d!gzllI@?ms96HqWTM+!}pxUWc?S6=9!N(u3KXL>A1JI2MhQVTCu>b%707*qoM6N<$g0TK_=l}o! diff --git a/public/img/emoji/hear_no_evil.png b/public/img/emoji/hear_no_evil.png deleted file mode 100644 index f97a1f9a0901f16e373e349e32bcbaf7c6c659de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6550 zcmV;H8ENK;P)gf)u=D!4?AB!&W_C|2PSj|fG|Dl3r$ zQ))^PNhy)2RVfow-XSVwA#x+Ez;f(0vpX|8=kY(jtH1pEb$|1pnPn=AMoUY3_tkty z_v?P|{oc|2{Y9Fl^!wZ_`aN%dP{1D)@cZ5Vpa6${Lrn-_U2t~)W{c!DOITYi%kHr( zQ6e-c(*-G$ahb}eWMKW`2agOti|i!nH_(3VY4E~x22OP?Yme)Q3q9A~;W(ntu`IGJ zLBjNrX{wY!5h#w6kswST4ddkdGN5mN|KTG~|4u4k_gQ_rJkPy0?^}EFzEksEi(JPd zB|QF<$fP&ZCmIQqBq@clq##VF*@|bHVe;)(oP74K`$q2holwB;9laafl7B-f@4l^+ zcU<4IA-I6xf^4=tyMu8Hql2`Kg2eodK~W^B6-uf%;%L4VeWlR||Mtg^jvn}JjRAmr z|Jy5_`A<}fUSB>3!EIx8dx`K2{pAQq3B-acMGz&71W7LXdKjPcEH~G*|6<*cfq)#7MG6gh7uPvkKljZ$ zJo9kxGYQIpd>-SF@1igIRZ1?cspa}QD*l(D=$qA?zcB^evUgYKYVUUJ=q+xj4&K>S z_TS%8@~FVVX+eF@VuFzRuZw#h!ojMZdS~uE5G%;nO7dJqKo5wO#w@?d!JtVZr6aw_YV$yrK{{+0;?Nq zvd=U0ZCeQe_zU8wZz)pP7aICmlPS9ZKax^XVyQ8bgJqHk!Vo6HGhsQnW;ePN4;-xF zE%zKro3x^>|I6K%-G1F0KJO&*(^q`V~*1qigS{q1YHe&7J6&HW`&%mopQ>GD%2g}Z-?VqT z_ks{`=ZE&b$@9HJW2QmDLPMpgj_1aQ@7T1i;!W2hD?i&frBZOP5F@+`0a#d@9GA2} zmKMZf6cFIAuC*oG&A@*#{Ru`&LXu)qN=eZ@)hNNWb{RunN~MBJaUyS~&ceGl6?_8KDk?h9}M_mU)x$u2^J`8+j_jtaL>*xu1s zqNg7}g2>Df-dNZOZ(CY;OI<@~TUUGzNGK9E2|N?2XbZ34E|q`@L!bRzJ3L8VA>Jjb zqeUqt=*P&=3d40CN@)3xGu}$JY&x}%?D^JEeqrjBNfeRY*-44*Qrc_~+0F-80Vm@E zpL)mnHCW)y`D%rF)^$*|Bd=V5ynK#ErvqxV0@i#6S;uL^)VA7r-?cQnEx3^7xF845 zag8yC_+F^@mdpKYMot?+mN3E7)`~?Jj4{f!wc<<24h!{wj!n0yRI8HXAq`hc)Ug)p zU*AQ3xrn~vMYmshN%^D{aR0N1Z}WXG=NEmlVHF!D@FBbt<>}y&NhAajAnM;EB% zR48cHX=?a5O&l3zAsxq~AdarP>HPDZRTZ#TRacJp(Y2i&WJ3YX*#)9vk>fzC71L~E zp3|GFp=tytwvf&6r!38xMcTw2gp~;i5==x)=H4hLOZeQ6`DtF7AHT9dBBRVb7zMhp zdS+r6)^{kVN0j&lN^&J?OwEy3%poB9LzBZlvR73=fB(SQK`PEDmkT^m3IQs$638dV z_b8PCH0^5GTWx_ep^1gj?}UB;CiBR1q6 zmLmxxWV0N#!g%MZ3c#RKBS{>DWD0daivTW2wG_-_V_iYKPPTR%j#*AmWCFB+5eWa$ zxWf`bX_;_>mRa1)mYV8NQDXjb$;k6AcLTE)o4DwbNx;#3)3NG%;aiA(T<7DUryDa5wb_nT)-T$ z;=;;l9|%d+8UKMWD6vrKB(G40F!{Dyup%XeL6fE@#_8y>V>CV6WL`3D2gjV_(ENN0 zbA`$%Y&ed^jt4iGC8hpV6%fR7vbVQNv8n()ml?`fQWD3|J_wfdNn{4(1$D3OqQOl= z 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 diff --git a/public/img/emoji/heart_decoration.png b/public/img/emoji/heart_decoration.png deleted file mode 100644 index b8be44db343839258d488353c30890df963d169b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3507 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 diff --git a/public/img/emoji/heart_eyes_cat.png b/public/img/emoji/heart_eyes_cat.png deleted file mode 100644 index eeba240e533783c92e0d221489e78c7f54586027..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6176 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 diff --git a/public/img/emoji/heartbeat.png b/public/img/emoji/heartbeat.png deleted file mode 100644 index b6628f6fa70ab24c6e83172221781e4a5077c481..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4052 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 diff --git a/public/img/emoji/hearts.png b/public/img/emoji/hearts.png deleted file mode 100644 index e894715385710c5382bd052ad9a501c1fe6be376..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2925 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 diff --git a/public/img/emoji/heavy_check_mark.png b/public/img/emoji/heavy_check_mark.png deleted file mode 100644 index d0f010b4a0a249bc19db54dbf88eedddd9a388ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 924 zcmV;N17rM&P)4Mr%kkKv{HVH-VR$qs_r-q1U;~rP;^hYUvkVF@F^aFMss3IK3ci(jS$+J& zRiGq#lTmzRXY@}LHWT?34l^nc?vH?y@NGu%Wr4^t62BJN&1(LuVL%uqIc(;)SH>$r zNks#r`77Eh0AYgUF^TsH<@4pBq_m0A{N<;x`0{C~kV(9#4ZSD>C7~0H<}W=K0wtv{ zMJkVHy7)Y zo8JovORDGh+TCs5ryI=oU0f0cMz8{&%WCZ>-ETdhK=tjzS&O*Ay%b9SI%>rUhq52Bt|LUQ+i@r(_qtXLydV}We~ z^N2}5|7onxMWA85L$g_%P{%aUBz+~P9O@sI1E`4;pP_|Qdj8M1j28oyDQqTl3%1ts zm=vURH#6_GtkEl&TQ{#41j`({ww|Oa%PkAgFfR(5UaVL;&~e2_z%VwZq8rU$u z&$NWB`E9Nt+mWf0Ucd~-b$_l+y=ci^vP~I`vnHTnoc(`!G3_$0BKzY;&vpwC{;&}e zaDxy+NRIFT-Fu#-L&9L93Vb6W!clbJR0@|L^jnaGB>`ygAA~*pEV6x#uOsP_;WQ6) z3_sEBJtU3F<3|%!KzO4|@4p{?$gpGp_2|?8_Dg?U4{FhMlT1k8r?S8}$f;T zMCk#Kat7{~Q9gQxuac(!tpC{~Co99SC8Ndt;Qz+51MzHbT2{FlZU^@Z$}?T@ZF4ph z|05sQIbn`T!Q1=#Z-jcvJK=wbgUE|q%%shZxk=<#Bv?W3dzHq~bwY;Q!4CN~c}XIN6hG%}@iYUOHGz-eVyM-o=XMoBARl_V`njxg HN@xNABZ6d@ diff --git a/public/img/emoji/heavy_dollar_sign.png b/public/img/emoji/heavy_dollar_sign.png deleted file mode 100644 index 5eddfc52b241b0acd24a80891f5fcdc72af35b9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1150 zcmV-^1cCdBP)ZX=cuLJ6hhHG~lIbm>#Llu$|uA>^rq z(x-37EfA-xQP-3N@DS&e?V3mZJn3y&-R)(s);RjcA z`Plu8>wvQ#lBDSt5n@yLG)F_CxsPXT$5Ht9^n)~LV*9+YUKu?hc*G>L=g!gjX&x)bSxi$&x?38rx4m{ zG4`K(U&vlK0McWFKZ6hw(;*_DKC0jGI*SI_(t*JzpgE^`rU&@4`YYnJ((E zj7NiDMon5IBsB5yo;v3i=m~XBzYF^{5J8%l0d>3wp1Uwpsz7_9h(rA~5KST?e7ybY z`31USUD7jA#Kyy?F{6McZG7Cr`77o7W$qRIB80)k!=F(=h)?y<-dga%MCWv0FGUFl zkNONmlN#pPd`0TtRk45$0Q*E$qcJn9oQa9A1U)}qmteiaVh zM0H#Wb6NAOp6Y8F6>+B!Y826>9Gg_SBy4I^03~!I*Djf!8(eCsTuSI>z5ovm?nDj+ zw39EuBYO&Bub{I#cVn5IUcgBdS|R)=y^eR^Pa5;o_vKQbeP9YT(!92;vK{?WV# zmwBdqDGb(BkT=O1?>%}VH$y|BJs}E|--=;j#%o7EzNvTcz5up%^y069A|=Wg3>Fp^ z21Du9)dOuW%9ekoyLvu7R7?@ftC4-}$bIMf`Hs_%X`t)c)-COc%B$6nw4*`J&1&_P zZbSh+Tf#e|{{%n@GtPkJ0aU0g6QD?G{0CeXz(h*{*wApI2Or)Y|BnIw1P_<69oM5! QV*mgE07*qoM6N<$f_dX1lmGw# diff --git a/public/img/emoji/heavy_exclamation_mark.png b/public/img/emoji/heavy_exclamation_mark.png deleted file mode 100644 index 4c560f5e3f46d3ec6361aebee9d689ef79525b71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1315 zcmV+;1>E|HP)G|pD%s^mt43P+7CPrHbgkdn6g@WKl5tkAWBp`7miHl)eiXiA( z`~g=kTxp=0#gGIB1Q#w`nMItg?yl~x?y9ct`nmU>^S!!_RR1kB)aicU?(XJ1yx;lG z`8Xzt^Gx8Jb0OeDz`5o^z=ePr{)cqG`1$XKXK&pNSFdtbywl<8>gqdFEugp6xp%G6 z{Lbvs6>#U&2*z7&faw;nKdyFIYb{^tbOCW%1oRFM(~W5_fpK9UHOrb*?VoA!7>rXY znRWr5(neK;Br6I|i2*ebjo#FEfmjqfjvYkKh9q2UO}&8e;bA9AU7fN1BM{x&Q(pov zj7B?KmoDu^@m#Remp}xP+4Ku|4$3DfZN$P><}hTZOF)t^sWtTiB@-<+37oB z1j-QBr(OU6?rW(C2oR?iU{&=r3jqpYJqnVYVH0#Eo1brIaT%)Wx*ZXx#U&yf4(qy` zMFOlSHeFOM%^4@-CfwCq>h<=r5KvatcA9StQ_x)Ccnl*sq+p#@ID91s0fWI{|8k?T zo5VFc!GI7Eh%vPvNS;Lkz76BY=9^A<9tRmmVuFP55Y_;)5P&3KUT&uV7>HvqNDl7a z%0~d;^39rp`4a><5CP0KvJ#N6RzkRplZb*8<7QR@l+s!Z1+tSwf#Y@E2zd$c5Y`hS zVH}49wHQ{1)pk~6aZhQxMq@`{O#Xm~h_Krk4)?Q4z{tJV6#EVhb0%Vd1CDQgA4XXv zU~w?$M(DW!KodRy2NI!;q^tydT`J|;PJkaFAOTU}?wbHvl>k6A)*~=$ASM$fqFF0T z0djAp5Rid0nS}6^@)VHFT2aDf$0PuX5Z3Z60cj%{2r&r(wN#ZccJh255JJ0l`H}G# z$gGF7mt_K!(q@_|N*7H{I0Ga^gzjK4=w+FJy5HYTSU(=o1|6v7o$o=JrGS6JAbHxx z1d|frAgm=xS(d;9srtjxQa45?7$3s~HBh^60c0rvpjX#_85LpQj_3jl7T(WVzz}{n zEUP~q8OO5R=KsvaTVXyS9>4b5;=A|n-+1!stIcyIV0C5XD}Vj+{h!@xHh=rV_3OW1 zzINp|Pww4&xVrMvO4b7Yc<0XCdw1{t~7v1hRKNai;pP60w z_2U;`d?VXE;L+{dZ{1p0c)M`FxjP(C$A~1%0`qe-+*nv-AO6)D9lZJaN3B0+m4L@L zZ+><@#vj$A(ap_nm%(sIS(a2)O<9gPI2f?e-6M=gx5K!8`#=9LX4MA!W%;%1#;5yr zO_d@Bm>B?I2pHEjK@iZFx-q^Ce2`57QkeNdm7H;!JQz1Xz$hiEnC1m9WtD(Z>B`sx zvw%1n$ti(xO3PUZ7`pGz2cy6^4gq6{5#G(J4G!VSfuHz-TyZm+lXrdg|{;j3p8vAOa(awmTcCemaJqK9Gjl z9fW>tcDZrs(zgQqa503J7tAoA21f32Bz;gxKR*}_AN^7)v%C$yX|}l7Y~GnE?5igG zT#yzN*z=@+j8b|OtLnoEi_hyi{Ln1yz|w4^aoMC9523QrsQ(M8$0xwWJb-h}g@6kI Z{{|GZ{4J_TySe}X002ovPDHLkV1lD?X|VtR diff --git a/public/img/emoji/heavy_minus_sign.png b/public/img/emoji/heavy_minus_sign.png deleted file mode 100644 index 4a33f905ab5ab4928907a8e36d7b9a998ea15e67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 176 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|e^#Gp`*Z=?jo0^((adGMC>1klFz@i?BG zsK5~6CfcJV5$d4L+GL?}|FFoLV+#+kEK`^pqwO|}sfn>P-^8~MBtMCX!9bT)r9sq( Q4QK#^r>mdKI;Vst0I(J;4*&oF diff --git a/public/img/emoji/heavy_multiplication_x.png b/public/img/emoji/heavy_multiplication_x.png deleted file mode 100644 index 13d666078656729c570e62e9bf287f74391b8d36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 591 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!4g~mwxc>kDUr0zuPfw4Rm)F?X zn46p1z`#ILQ-m6g@d&`?!X z<>TX1S67#ml+@PN1{%V}#RW73s6b9m&d|_MOG^uAK2Qx04-Zf;Pz%sNphZSTMnGLa zErNoAA|fKv($WwsgoTBHW{Qc4>FVn8^Ya6pp{%S7v=Qh+2?+_HEsBbYQc_Y13JO5S zEZG@+4d@r?k|4iehN65B1S1dy<^mZ&W=u**2Ll76vZsq z5f?dd_y6NXP2an?yWGA{d@0qvWyb@hASFSuC5HDND{U2jZpitA`JVSpLv!U>oxyGa zW#@d=9!;3&SjDt7Wy(F~tbX3OEo>>NA66aw=J7FdwLzp&jrgzGFq08ZZQ7#)?4nSckUMdK7;AUaZYMm5mUPhqq6|xI@HD6Wj z(tMd%w6)}buy*84K8Ly!X^b7UH~#l9$Tn~U_c2U25Lytp*|lqf5ATfojZ>7Kyx;V= z*7aiRIj^c|hB3eQurc_}Jp1TSqhLk0VBXtl-?z6(IF>5kh-W_{_2BP`>aOPZO{Rq} zA`6cj?TKmP3;FKKlFSs(ke{)SHML7X>VV=QsbxIJ`n?$#4oE#<7RmOOD~Qr^1o_a@ L)z4*}Q$iB}AJJ)2 diff --git a/public/img/emoji/helicopter.png b/public/img/emoji/helicopter.png deleted file mode 100644 index 8e82a0d587692e6210f28ac1e3f0015e27b2639b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4100 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 M07*qoM6N<$f@Id582|tP diff --git a/public/img/emoji/high_brightness.png b/public/img/emoji/high_brightness.png deleted file mode 100644 index ba9de7d409c008610ea2228074f7a8b03f732bd5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4060 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 Vi(81x50g?mprfI$Uao5M=08;I$?yOG diff --git a/public/img/emoji/high_heel.png b/public/img/emoji/high_heel.png deleted file mode 100644 index 525b6a0dd6947b98e1950c822b8448c2ecdc0c2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4557 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 diff --git a/public/img/emoji/hocho.png b/public/img/emoji/hocho.png deleted file mode 100644 index 3f05193c7230a1afb38e044581c795cae37f69e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2455 zcmV;I3263-P)ZWsZ%FO8gIYB03<9djK)hw z#?LZp)Tk?6x^$^ycH`~p)vK51=jSJGZth}dXD7bCz6!#kMT;aQWkgAAY^;K0RIf_wRoO5S-1(pa$H39kRcKw`wI#nlwQO_=$^)i-J(wqqZa`C(Go? zlcit3ekTFS$&3)bt6#r5L_iXItEE`h@dhYz&&=Rgn*g4y#XNX&>^%!azv?QnM8$f5@%;;cu0iA$Hx=KuekqvGeWQhgxxv> z=7rFP4cR2o3sg9?M2KL`AW>0KIW{I8_CY~Gzcp*tOxi}Zm57K4_6mB1P$0rkKDmAf z4-a2&S_nvl`xJz>3WBg);+m=uF7O2A2qsN<%WAVis0B~>y?OKIbaxdJ3=LdEh47*` z&@0q6bd~=wB>}{~BW60ErLlec_7VkeAP^?Ux^?Rkg8Hl<5WsarrYWlf40Hm70zhE) zr#G-nV%8hdcqT?wCA_`8{|#W~Tt=fQash-w8cqo9+O?x6sBln;(b+|M_UtJmMvTbA z;;EKtA;9%d=n$9~3BaeGk96+bS%wT5BC}@Ak_8JE6k$p2WJ(CA0B%TlMGOZvN~{bt zUhN^woh#Yd*>dR6A=$BGM+snfnG%9K2EySqvOn8m?j0!O^YZfK^5x4)mo8o6zi(oD z&EK@1059mDl$2C~Jp<0TT)lc#%FD~;_3PJi`}S=qDJh{hJQ+K7Y^aS{$H0LDf6U0p z_;}{b8F}*LiM)IFPAV%a<;|NnQdU-`JRv_nzkKS{sgb6Iux{PDf8M`;Um0CdQK2Bb zfB#-yy?Uh}T)1#SjvP7i1`s-%&iM57^yt&4PggvA_)y-yeM{r{Nf4BRpnF1YZf@m- z2@~Q>V?1KJEn@ryWB=a0dyIV@0KcY3P|OPoLTPEK?BBot!?bDB63t+I#{&lrlyhcp z-n=Q#pFfwEFJIDd&OARk`;_|n#fukm>((u~a^;E~K79B;@SFjLHGbm6iAhLoZ_b}T zFW0YMXY%7L>!QJw}#Y$ z&?|!uAcj~=B*@u0?X!$80}0ta+=zir*RRrc-M#}dZ` z$C}Ulz)x!;0KGi2TT~%2fBt;qcmiLVPMI=g6RX4Cy?X^qWV$tTL$#!rNA4`4;o@e? z&o)LH<m6dg)SFc|7hCQP=bm-7&nVFfDSW(g&^u~wzfiS8R zzsGxcKZUSLwK4L*LCh%Z5|<#c2|zH*vu{9H9Agtzr5G~w0+v_2lqoa%0Zz8ijwvZA zzbsw4^b=pM>U{&_owH4&nJ_KIvdH^bS&&zfZOkzG^yw1^Z@9|bz%4g+kt}^QmPQkZ zrRXiZ56|qkG0WhgY&1HH7B61>0kg}n;2S082Zja>ClG$BFkm%VvSi8o#Kgn^8#4`L z_tscX9Oe!*L9kk|2cSo=bn0RltXQ!^h7TV;%Ep9)dyj+B^pve$y;_0TvSo`7f}1a@ z9AeQWSb^s9xUVT8@UK<|3>c6;clO+8G?o>Edk$P~Q!7`l{pt_JB6aWQ7VNg@31r!0bgF4Y3s5`wJO5`L%f3;9D)CY=( z;-DDq*;e?gmcJm@SK%E(Io*Ek+O@)jiF_g0i1~m+T0OM$%QY-*G7SKz2^8WN6ci2+ zbHrLme~HAtN_!y~n4!!)q|+V80ixp(Z?u>%t31h{_|4r}qb8dU+X zKCF9#B?ujceHB1lH7K=p@34U4PcWJxAy7l85!CoI(by2}z5qU}8SP1rgB`gtCO=U;)V40+PEX55lsLhj!gfyU*n_gKK_nbd`ov7~cS3{2xxD V-TCDqTn7LE002ovPDHLkV1n18mRJA) diff --git a/public/img/emoji/honey_pot.png b/public/img/emoji/honey_pot.png deleted file mode 100644 index 73278898a4c568b23ac5bcd54b9de37d66aab1a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5830 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 QY5)KL07*qoM6N<$f~%6iw*UYD diff --git a/public/img/emoji/honeybee.png b/public/img/emoji/honeybee.png deleted file mode 100644 index f53733953afad79cb582a1e7edc8d847b8767f1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5851 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 lnFB$aS=DgvJ>i@I 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