@banta/sdk 3.2.2 → 3.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../projects/sdk/src/lib/common/banta.service.ts","../../../projects/sdk/src/lib/common/timestamp.component.ts","../../../projects/sdk/src/lib/common/chat-backend.service.ts","../../../projects/sdk/src/lib/common/common.module.ts","../../../node_modules/tslib/tslib.es6.js","../../../projects/sdk/src/lib/emoji/emojis.ts","../../../projects/sdk/src/lib/emoji/emoji-selector-panel/emoji-selector-panel.component.ts","../../../projects/sdk/src/lib/emoji/emoji-selector-button.component.ts","../../../projects/sdk/src/lib/emoji/emoji.module.ts","../../../projects/sdk/src/lib/banta/banta.component.ts","../../../projects/sdk/src/lib/banta-logo.component.ts","../../../projects/sdk/src/lib/chat/chat-message/chat-message.component.ts","../../../projects/sdk/src/lib/chat/live-chat-message.component.ts","../../../projects/sdk/src/lib/chat/chat-view/chat-view.component.ts","../../../projects/sdk/src/lib/chat/banta-chat/banta-chat.component.ts","../../../projects/sdk/src/lib/chat/chat.module.ts","../../../projects/sdk/src/lib/live-message.component.ts","../../../projects/sdk/src/lib/comments/comment/comment.component.ts","../../../projects/sdk/src/lib/comments/comment-view/comment-view.component.ts","../../../projects/sdk/src/lib/comments/banta-comments/banta-comments.component.ts","../../../projects/sdk/src/lib/comments/live-comment.component.ts","../../../projects/sdk/src/lib/comments/comment-field/comment-field.component.ts","../../../projects/sdk/src/lib/comments/comments.module.ts","../../../projects/sdk/src/lib/banta-sdk.module.ts","../../../projects/sdk/src/lib/common/lazy-connection.ts"],"names":["BantaService","this","_userChanged","BehaviorSubject","Object","defineProperty","prototype","_user","user","next","Injectable","TimestampComponent","relative","tooltip","updateInterval","showAbsolute","ngOnDestroy","clearInterval","_value","v","update","_this","diff","Date","now","value","minute","hour","day","week","month","updateTime","months","Math","floor","weeks","days","hours","minutes","window","setInterval","Component","args","selector","template","Input","COMPONENTS","NgModule","declarations","imports","CommonModule","exports","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","n","op","TypeError","call","pop","length","push","create","__values","o","s","m","i","__read","r","ar","error","__spread","arguments","concat","EMOJIS","grinning","keywords","char","category","grimacing","grin","joy","smiley","smile","sweat_smile","laughing","innocent","wink","blush","slightly_smiling","upside_down","relaxed","yum","relieved","heart_eyes","kissing_heart","kissing","kissing_smiling_eyes","kissing_closed_eyes","stuck_out_tongue_winking_eye","stuck_out_tongue_closed_eyes","stuck_out_tongue","money_mouth","nerd","sunglasses","hugging","smirk","no_mouth","neutral_face","expressionless","unamused","rolling_eyes","thinking","flushed","disappointed","worried","angry","rage","pensive","confused","slightly_sad","white_frowning","persevere","confounded","tired_face","weary","triumph","open_mouth","scream","fearful","cold_sweat","hushed","frowning","anguished","cry","disappointed_relieved","sleepy","sweat","sob","dizzy_face","astonished","zipper_mouth","mask","thermometer_face","bandage_face","sleeping","zzz","hankey","smiling_imp","imp","japanese_ogre","japanese_goblin","skull","ghost","alien","robot","smiley_cat","smile_cat","joy_cat","heart_eyes_cat","smirk_cat","kissing_cat","scream_cat","crying_cat_face","pouting_cat","raised_hands","clap","wave","+1","minus1","facepunch","fist","ok_hand","hand","open_hands","muscle","pray","point_up","point_up_2","point_down","point_left","point_right","middle_finger","splayed_fingers","sign_of_horns","vulcan_salute","writing_hand","nail_care","lips","tongue","ear","nose","eye","eyes","bust_in_silhouette","busts_in_silhouette","speaking_head","baby","boy","girl","man","woman","person_with_blond_hair","older_man","older_woman","man_with_gua_pi_mao","man_with_turban","cop","construction_worker","guardsman","sleuth","santa","angel","princess","bride_with_veil","runner","walking","dancer","dancers","couple","two_men_holding_hands","two_women_holding_hands","bow","information_desk_person","no_good","ok_woman","raising_hand","person_with_pouting_face","person_frowning","haircut","massage","couple_with_heart","female_couple_with_heart","male_couple_with_heart","couplekiss","female_couplekiss","male_couplekiss","family","family_man_woman_girl","family_man_woman_girl_boy","family_man_woman_boys","family_man_woman_girls","family_women_boy","family_women_girl","family_women_girl_boy","family_women_boys","family_women_girls","family_men_boy","family_men_girl","family_men_girl_boy","family_men_boys","family_men_girls","womans_clothes","shirt","jeans","necktie","dress","bikini","kimono","lipstick","kiss","footprints","high_heel","sandal","boot","mans_shoe","athletic_shoe","womans_hat","tophat","helmet","mortar_board","crown","school_satchel","pouch","purse","handbag","briefcase","eyeglasses","dark_sunglasses","ring","closed_umbrella","dog","cat","mouse","hamster","rabbit","bear","panda_face","koala","tiger","lion_face","cow","pig","pig_nose","frog","octopus","monkey_face","see_no_evil","hear_no_evil","speak_no_evil","monkey","chicken","penguin","bird","baby_chick","hatching_chick","hatched_chick","wolf","boar","horse","unicorn_face","bee","bug","snail","beetle","ant","spider","scorpion","crab","snake","turtle","tropical_fish","fish","blowfish","dolphin","whale","whale2","crocodile","leopard","tiger2","water_buffalo","ox","cow2","dromedary_camel","camel","elephant","goat","ram","sheep","racehorse","pig2","rat","mouse2","rooster","turkey","dove_of_peace","dog2","poodle","cat2","rabbit2","chipmunk","feet","dragon","dragon_face","cactus","christmas_tree","evergreen_tree","deciduous_tree","palm_tree","seedling","herb","shamrock","four_leaf_clover","bamboo","tanabata_tree","leaves","fallen_leaf","maple_leaf","ear_of_rice","hibiscus","sunflower","rose","tulip","blossom","cherry_blossom","bouquet","mushroom","chestnut","jack_o_lantern","shell","spider_web","earth_americas","earth_africa","earth_asia","full_moon","waning_gibbous_moon","last_quarter_moon","waning_crescent_moon","new_moon","waxing_crescent_moon","first_quarter_moon","moon","new_moon_with_face","full_moon_with_face","first_quarter_moon_with_face","last_quarter_moon_with_face","sun_with_face","crescent_moon","star","star2","dizzy","sparkles","comet","sunny","white_sun_with_small_cloud","partly_sunny","white_sun_behind_cloud","white_sun_behind_cloud_with_rain","cloud","cloud_with_rain","thunder_cloud_and_rain","cloud_with_lightning","zap","fire","boom","snowflake","cloud_with_snow","snowman","snowman_with_snow","wind_blowing_face","dash","cloud_with_tornado","fog","umbrella_without_rain","umbrella","droplet","sweat_drops","ocean","green_apple","apple","pear","tangerine","lemon","banana","watermelon","grapes","strawberry","melon","cherries","peach","pineapple","tomato","eggplant","hot_pepper","corn","sweet_potato","honey_pot","bread","cheese_wedge","poultry_leg","meat_on_bone","fried_shrimp","egg","hamburger","fries","hot_dog","pizza","spaghetti","taco","burrito","ramen","stew","fish_cake","sushi","bento","curry","rice_ball","rice","rice_cracker","oden","dango","shaved_ice","ice_cream","icecream","cake","birthday","custard","candy","lollipop","chocolate_bar","popcorn","doughnut","cookie","beer","beers","wine_glass","cocktail","tropical_drink","bottle","sake","tea","coffee","baby_bottle","fork_and_knife","fork_and_knife_with_plate","soccer","basketball","football","baseball","tennis","volleyball","rugby_football","8ball","golf","golfer","table_tennis","badminton","ice_hockey","field_hockey","cricket","ski","skier","snowboarder","ice_skate","bow_and_arrow","fishing_pole_and_fish","rowboat","swimmer","surfer","bath","person_with_ball","weight_lifter","bicyclist","mountain_bicyclist","horse_racing","man_levitating","trophy","running_shirt_with_sash","sports_medal","military_medal","reminder_ribbon","rosette","ticket","admission_ticket","performing_arts","art","circus_tent","microphone","headphones","musical_score","musical_keyboard","saxophone","trumpet","guitar","violin","clapper","video_game","space_invader","dart","game_die","slot_machine","bowling","car","taxi","blue_car","bus","trolleybus","racing_car","police_car","ambulance","fire_engine","minibus","truck","articulated_lorry","tractor","racing_motorcycle","bike","rotating_light","oncoming_police_car","oncoming_bus","oncoming_automobile","oncoming_taxi","aerial_tramway","mountain_cableway","suspension_railway","railway_car","train","monorail","bullettrain_side","bullettrain_front","light_rail","mountain_railway","steam_locomotive","train2","metro","tram","station","helicopter","small_airplane","airplane","airplane_departure","airplane_arrival","boat","motor_boat","speedboat","ferry","passenger_ship","rocket","artificial_satellite","seat","anchor","construction","fuelpump","busstop","vertical_traffic_light","traffic_light","checkered_flag","ship","ferris_wheel","roller_coaster","carousel_horse","building_construction","foggy","tokyo_tower","factory","fountain","rice_scene","mountain","snow_capped_mountain","mount_fuji","volcano","japan","camping","tent","national_park","motorway","railway_track","sunrise","sunrise_over_mountains","desert","beach_with_umbrella","desert_island","city_sunrise","city_sunset","cityscape","night_with_stars","bridge_at_night","milky_way","stars","sparkler","fireworks","rainbow","buildings","european_castle","japanese_castle","stadium","statue_of_liberty","house","house_with_garden","derelict_house","office","department_store","post_office","european_post_office","hospital","bank","hotel","convenience_store","school","love_hotel","wedding","museum","church","mosque","synagogue","kaaba","shinto_shrine","watch","iphone","calling","computer","keyboard","desktop_computer","printer","three_button_mouse","trackball","joystick","compression","minidisc","floppy_disk","cd","dvd","vhs","camera","camera_with_flash","video_camera","movie_camera","film_projector","film_frames","telephone_receiver","phone","pager","fax","tv","radio","studio_microphone","level_slider","control_knobs","stopwatch","timer_clock","alarm_clock","mantelpiece_clock","hourglass_flowing_sand","hourglass","satellite","battery","electric_plug","bulb","flashlight","candle","wastebasket","oil_drum","money_with_wings","dollar","yen","euro","pound","moneybag","credit_card","gem","scales","wrench","hammer","hammer_and_pick","hammer_and_wrench","pick","nut_and_bolt","gear","chains","gun","bomb","hocho","dagger_knife","crossed_swords","shield","smoking","skull_and_crossbones","coffin","funeral_urn","amphora","crystal_ball","prayer_beads","barber","alembic","telescope","microscope","hole","pill","syringe","thermometer","bookmark","toilet","shower","bathtub","key","old_key","couch_and_lamp","sleeping_accommodation","bed","door","bellhop_bell","frame_with_picture","world_map","umbrella_on_ground","moyai","shopping_bags","balloon","flags","ribbon","gift","confetti_ball","tada","dolls","wind_chime","crossed_flags","izakaya_lantern","envelope","envelope_with_arrow","incoming_envelope","email","love_letter","postbox","mailbox_closed","mailbox","mailbox_with_mail","mailbox_with_no_mail","package","postal_horn","inbox_tray","outbox_tray","scroll","page_with_curl","bookmark_tabs","bar_chart","chart_with_upwards_trend","chart_with_downwards_trend","page_facing_up","date","calendar","spiral_calendar_pad","card_index","card_file_box","ballot_box_with_ballot","file_cabinet","clipboard","spiral_note_pad","file_folder","open_file_folder","card_index_dividers","rolled_up_newspaper","newspaper","notebook","closed_book","green_book","blue_book","orange_book","notebook_with_decorative_cover","ledger","books","book","link","paperclip","linked_paperclips","scissors","triangular_ruler","straight_ruler","pushpin","round_pushpin","triangular_flag_on_post","waving_white_flag","waving_black_flag","closed_lock_with_key","lock","unlock","lock_with_ink_pen","lower_left_ballpoint_pen","lower_left_fountain_pen","black_nib","memo","pencil2","lower_left_crayon","lower_left_paintbrush","mag","mag_right","heart","yellow_heart","green_heart","blue_heart","purple_heart","broken_heart","heavy_heart_exclamation_mark_ornament","two_hearts","revolving_hearts","heartbeat","heartpulse","sparkling_heart","cupid","gift_heart","heart_decoration","peace_symbol","latin_cross","star_and_crescent","om_symbol","wheel_of_dharma","star_of_david","six_pointed_star","menorah_with_nine_branches","yin_yang","orthodox_cross","place_of_worship","ophiuchus","aries","taurus","gemini","cancer","leo","virgo","libra","scorpius","sagittarius","capricorn","aquarius","pisces","id","atom_symbol","u7a7a","u5272","radioactive_sign","biohazard_sign","mobile_phone_off","vibration_mode","u6709","u7121","u7533","u55b6","u6708","eight_pointed_black_star","vs","accept","white_flower","ideograph_advantage","secret","congratulations","u5408","u6e80","u7981","a","b","ab","cl","o2","sos","no_entry","name_badge","no_entry_sign","x","anger","hotsprings","no_pedestrians","do_not_litter","no_bicycles","non-potable_water","underage","no_mobile_phones","exclamation","grey_exclamation","question","grey_question","bangbang","interrobang","100","low_brightness","high_brightness","trident","fleur_de_lis","part_alternation_mark","warning","children_crossing","beginner","recycle","u6307","chart","sparkle","eight_spoked_asterisk","negative_squared_cross_mark","white_check_mark","diamond_shape_with_a_dot_inside","cyclone","loop","globe_with_meridians","atm","sa","passport_control","customs","baggage_claim","left_luggage","wheelchair","no_smoking","wc","parking","potable_water","mens","womens","baby_symbol","restroom","put_litter_in_its_place","cinema","signal_strength","koko","ng","ok","up","cool","new","free","zero","one","two","three","four","five","six","seven","eight","nine","keycap_ten","keycap_star","1234","arrow_forward","double_vertical_bar","black_right_pointing_triangle_with_double_vertical_bar","black_square_for_stop","black_circle_for_record","black_right_pointing_double_triangle_with_vertical_bar","black_left_pointing_double_triangle_with_vertical_bar","fast_forward","rewind","twisted_rightwards_arrows","repeat","repeat_one","arrow_backward","arrow_up_small","arrow_down_small","arrow_double_up","arrow_double_down","arrow_right","arrow_left","arrow_up","arrow_down","arrow_upper_right","arrow_lower_right","arrow_lower_left","arrow_upper_left","arrow_up_down","left_right_arrow","arrows_counterclockwise","arrow_right_hook","leftwards_arrow_with_hook","arrow_heading_up","arrow_heading_down","hash","information_source","abc","abcd","capital_abcd","symbols","musical_note","notes","wavy_dash","curly_loop","heavy_check_mark","arrows_clockwise","heavy_plus_sign","heavy_minus_sign","heavy_division_sign","heavy_multiplication_x","heavy_dollar_sign","currency_exchange","copyright","registered","tm","end","back","on","top","soon","ballot_box_with_check","radio_button","white_circle","black_circle","red_circle","large_blue_circle","small_orange_diamond","small_blue_diamond","large_orange_diamond","large_blue_diamond","small_red_triangle","black_small_square","white_small_square","black_large_square","white_large_square","small_red_triangle_down","black_medium_square","white_medium_square","black_medium_small_square","white_medium_small_square","black_square_button","white_square_button","speaker","sound","loud_sound","mute","mega","loudspeaker","bell","no_bell","black_joker","mahjong","spades","clubs","hearts","diamonds","flower_playing_cards","thought_balloon","right_anger_bubble","speech_balloon","left_speech_bubble","clock1","clock2","clock3","clock4","clock5","clock6","clock7","clock8","clock9","clock10","clock11","clock12","clock130","clock230","clock330","clock430","clock530","clock630","clock730","clock830","clock930","clock1030","clock1130","clock1230","af","ax","al","dz","as","ad","ao","ai","aq","ag","am","aw","au","at","az","bs","bh","bd","bb","by","be","bz","bj","bm","bt","bo","bq","ba","bw","br","io","vg","bn","bg","bf","bi","cv","kh","cm","ca","ic","ky","cf","td","chile","cn","cx","cc","co","km","cg","drc","ck","cr","hr","cu","cw","cy","cz","dk","dj","dm","do","ec","eg","sv","gq","er","ee","et","eu","fk","fo","fj","fi","fr","gf","pf","tf","ga","gm","ge","de","gh","gi","gr","gl","gd","gp","gu","gt","gg","gn","gw","gy","ht","hn","hk","hu","is","in","indonesia","ir","iq","ie","im","il","it","ci","jm","jp","je","jo","kz","ke","ki","xk","kw","kg","la","lv","lb","ls","lr","ly","li","lt","lu","mo","mk","mg","mw","my","mv","ml","mt","mh","mq","mr","mu","yt","mx","fm","md","mc","mn","me","ms","ma","mz","mm","na","nr","np","nl","nc","nz","ni","ne","nigeria","nu","nf","mp","kp","no","om","pk","pw","ps","pa","pg","py","pe","ph","pn","pl","pt","pr","qa","re","ro","ru","rw","bl","sh","kn","lc","pm","vc","ws","sm","st","saudi_arabia","sn","rs","sc","sl","sg","sx","sk","si","sb","so","za","gs","kr","ss","es","lk","sd","sr","sz","se","ch","sy","tw","tj","tz","th","tl","tg","tk","to","tt","tn","tr","turkmenistan","tc","tuvalu","ug","ua","ae","gb","us","vi","uy","uz","vu","va","ve","vn","wf","eh","ye","zm","zw","octocat","shipit","bowtie","neckbeard","metal","fu","trollface","godmode","goberserk","finnadie","feelsgood","rage1","rage2","rage3","rage4","suspect","hurtrealbad","EmojiSelectorPanelComponent","sanitizer","activeCategory","searchResults","searchVisible","selected","Subject","_searchQuery","setTimeout","keys","filter","k","includes","map","splice","console","log","humanize","str","replace","toUpperCase","select","pairs","object","hideSearch","showSearch","ngOnInit","cats","categoryIcons","people","animals_and_nature","travel_and_places","activity","food_and_drink","objects","_b","_c","pair","emoji","name","icon","emojis","html","bypassSecurityTrustHtml","twemoji","parse","categories","DomSanitizer","Output","EmojiSelectorButtonComponent","_selected","showEmojiPanel","removeListener","panelElement","nativeElement","remove","ngAfterViewInit","document","querySelector","appendChild","removeEventListener","clickListener","resizeListener","place","pos","buttonElement","getBoundingClientRect","size","left","scrollX","width","innerWidth","assign","style","scrollY","height","max","show","ev","parent","target","isInDialog","matches","parentElement","addEventListener","insert","ViewChild","read","ElementRef","FormsModule","MatIconModule","MatButtonModule","MatFormFieldModule","MatInputModule","BantaComponent","banta","backend","matDialog","_subs","SubSink","auxOpen","auxTitle","auxMode","mobileFocus","newNotifications","chatLabel","commentsLabel","_signInSelected","pointOpen","pointSubChat","newPointSubMessage","genericAvatarUrl","add","userChanged","subscribe","currentUser","notificationsChanged","notifs","notifications","newNotification","notif","sendPointSubMessage","text","message","trim","sentAt","upvotes","send","_a","e_1","goToMessage","targetMessage","parentMessageId","getMessage","topicId","parentMessage","dir","viewType","getViewType","close","getSourceForThread","refreshMessage","firehose","jumpToMessage","pointUnfocus","unsubscribe","showAux","title","mode","showNotifications","_topicID","connectToTopic","getSourceForTopic","firehoseSource","pointSource","showSignIn","closeAux","endsWith","upvoteMessage","showProfile","profileUser","username","sendReport","alert","reportMessage","reportedMessage","ChatBackendService","MatDialog","static","HostBinding","ChatMessageComponent","_reported","_upvoted","_userSelected","avatarForUser","avatarUrl","upvote","report","selectUser","LiveChatMessageComponent","_message","originalId","watchMessage","ChatViewComponent","elementRef","_sourceSubs","messages","maxMessages","_source","slice","messageReceived","msg","messageSent","currentUserChanged","addMessage","shift","isScrolledToLatest","scrollToLatest","messageContainer","el","scrollTop","scrollHeight","offsetHeight","jumpTo","messageElement","scrollIntoView","behavior","flashMessage","flashedMessageId","mentionsMe","selectMessage","selectMessageUser","BantaChatComponent","signInLabel","sendLabel","permissionDeniedLabel","_permissionDeniedError","newMessage","identifier","setSourceFromTopicID","topicID","sendPermissionError","insertEmoji","onKeyDown","event","chatView","permissions","canChat","source","sendMessage","url","location","href","EmojiModule","LiveMessageComponent","CommentComponent","isNew","visible","showReplyAction","randomTime","random","CommentViewComponent","showEmptyState","allowReplies","menuMessage","maxVisibleMessages","newestLast","isViewingMore","isLoadingMore","hasMore","newMessages","olderMessages","messageIdentity","index","chatMessage","showNew","overflow","showMore","loadAfter","lastMessage","destination","bucket","unshift","type","BantaCommentsComponent","hashtags","hashtag","description","participants","replyLabel","sendingLabel","postCommentLabel","postReplyLabel","_editAvatarSelected","sending","expandError","selectedMessageVisible","addParticipant","forEach","find","showEditAvatar","_newMessageText","sendError","showPermissionDenied","canComment","newMessageText","onReplyKeyDown","insertReplyEmoji","replyMessage","indicateError","Error","undefined","unselectMessage","selectedMessage","selectedMessageThread","scrollToMessage","sendReply","submessages","updatedAt","block","inline","LiveCommentComponent","CommentFieldComponent","signInSelected","editAvatarSelected","placeholder","autocompleteVisible","autocompleteOptions","autoCompleteSelected","autocompleteEl","showAutoComplete","options","autocompleteContainerEl","activateAutoComplete","option","action","dismissAutoComplete","completionFunc","completionPrefix","autocomplete","replacement","textareaEl","selectionStart","stopPropagation","preventDefault","ctrlKey","startAutoComplete","prefix","startsWith","some","p","displayName","onBlur","TextFieldModule","MatMenuModule","MatProgressSpinnerModule","BantaCommonModule","BantaSdkModule","forRoot","ngModule","providers","CommentsModule","ChatModule","MatTooltipModule","MatDialogModule","BantaLogoComponent","Observable","observer","subject","subscription","start","stop","pipe","publish","refCount"],"mappings":"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","sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { UserAccount } from '@banta/common';\r\n\r\n@Injectable()\r\nexport class BantaService {\r\n private _userChanged = new BehaviorSubject<UserAccount>(null);\r\n private _user : UserAccount;\r\n \r\n get userChanged() : Observable<UserAccount> {\r\n return this._userChanged;\r\n }\r\n \r\n set user(user : UserAccount) {\r\n this._user = user;\r\n this._userChanged.next(user);\r\n }\r\n\r\n get user() {\r\n return this._user;\r\n }\r\n}","import { Component, Input } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: 'banta-timestamp',\r\n template: `\r\n <span *ngIf=\"showAbsolute\" [title]=\"value | date : 'short'\">\r\n {{value | date : 'shortDate'}}\r\n </span>\r\n <span *ngIf=\"!showAbsolute\" [title]=\"value | date : 'short'\">\r\n {{relative}}\r\n </span>\r\n `,\r\n styles: [``]\r\n})\r\nexport class TimestampComponent {\r\n private _value : number;\r\n relative = '';\r\n tooltip = '';\r\n\r\n private updateInterval = null;\r\n\r\n ngOnDestroy() {\r\n if (this.updateInterval)\r\n clearInterval(this.updateInterval);\r\n }\r\n\r\n @Input()\r\n get value() {\r\n return this._value;\r\n }\r\n\r\n showAbsolute = false;\r\n\r\n update() {\r\n \r\n let now = Date.now();\r\n let diff = now - this.value;\r\n let minute = 1000*60;\r\n let hour = minute * 60;\r\n let day = hour * 24;\r\n let week = day * 7;\r\n let month = day * 30;\r\n let year = day * 365;\r\n this.showAbsolute = false;\r\n let updateTime = 0;\r\n\r\n if (diff > year) {\r\n this.showAbsolute = true;\r\n this.relative = 'abs';\r\n return;\r\n }\r\n\r\n if (diff > month) {\r\n let months = Math.floor(diff / month);\r\n\r\n if (months === 1)\r\n this.relative = `${months} month ago`;\r\n else\r\n this.relative = `${months} months ago`;\r\n \r\n } else if (diff > week) {\r\n let weeks = Math.floor(diff / week);\r\n\r\n if (weeks === 1)\r\n this.relative = `${weeks} week ago`;\r\n else\r\n this.relative = `${weeks} weeks ago`;\r\n } else if (diff > day) {\r\n let days = Math.floor(diff / day);\r\n if (days === 1)\r\n this.relative = `${days} day ago`;\r\n else\r\n this.relative = `${days} days ago`;\r\n } else if (diff > hour) {\r\n let hours = Math.floor(diff / hour);\r\n if (hours === 1)\r\n this.relative = `${hours} hour ago`;\r\n else\r\n this.relative = `${hours} hours ago`;\r\n \r\n updateTime = 1000 * 60 * 30;\r\n } else if (diff > minute) {\r\n let minutes = Math.floor(diff / minute);\r\n if (minutes === 1)\r\n this.relative = `${minutes} minute ago`;\r\n else\r\n this.relative = `${minutes} minutes ago`;\r\n updateTime = 1000 * 45;\r\n } else if (diff > 30_000) {\r\n this.relative = `about a minute ago`;\r\n updateTime = 1000 * 60;\r\n } else {\r\n this.relative = `just now`;\r\n updateTime = 1000 * 30;\r\n }\r\n \r\n if (typeof window !== 'undefined') {\r\n clearInterval(this.updateInterval);\r\n if (updateTime > 0) {\r\n this.updateInterval = setInterval(() => this.update());\r\n }\r\n }\r\n }\r\n\r\n set value(v) {\r\n this._value = v;\r\n this.update();\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { ChatBackend, Notification, ChatSource, ChatMessage } from '@banta/common';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable()\r\nexport abstract class ChatBackendService implements ChatBackend {\r\n abstract getSourceForTopic(topicId : string) : Promise<ChatSource>;\r\n abstract getSourceForThread(topicId : string, messageId : string) : Promise<ChatSource>;\r\n abstract refreshMessage(message : ChatMessage): Promise<ChatMessage>;\r\n abstract getMessage(topicId : string, messageId : string): Promise<ChatMessage>;\r\n abstract getSubMessage(topicId : string, parentMessageId : string, messageId : string): Promise<ChatMessage>;\r\n abstract upvoteMessage(topicId : string, messageId : string, submessageId? : string): Promise<void>;\r\n abstract watchMessage(message : ChatMessage, handler : (message : ChatMessage) => void) : () => void;\r\n abstract modifyMessage?(message : ChatMessage) : Promise<void>;\r\n abstract get notificationsChanged() : Observable<Notification[]>;\r\n abstract get newNotification() : Observable<Notification>;\r\n}","import { NgModule } from '@angular/core';\r\nimport { TimestampComponent } from './timestamp.component';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nconst COMPONENTS = [\r\n TimestampComponent\r\n];\r\n\r\n@NgModule({\r\n declarations: COMPONENTS,\r\n imports: [\r\n CommonModule\r\n ],\r\n exports: COMPONENTS\r\n})\r\nexport class BantaCommonModule {\r\n}","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","export const EMOJIS = {\r\n \"grinning\": {\r\n \"keywords\": [\"face\", \"smile\", \"happy\", \"joy\", \":D\", \"grin\"],\r\n \"char\": \"😀\",\r\n \"category\": \"people\"\r\n },\r\n \"grimacing\": {\r\n \"keywords\": [\"face\", \"grimace\", \"teeth\"],\r\n \"char\": \"😬\",\r\n \"category\": \"people\"\r\n },\r\n \"grin\": {\r\n \"keywords\": [\"face\", \"happy\", \"smile\", \"joy\", \"kawaii\"],\r\n \"char\": \"😁\",\r\n \"category\": \"people\"\r\n },\r\n \"joy\": {\r\n \"keywords\": [\"face\", \"cry\", \"tears\", \"weep\", \"happy\", \"happytears\", \"haha\"],\r\n \"char\": \"😂\",\r\n \"category\": \"people\"\r\n },\r\n \"smiley\": {\r\n \"keywords\": [\"face\", \"happy\", \"joy\", \"haha\", \":D\", \":)\", \"smile\", \"funny\"],\r\n \"char\": \"😃\",\r\n \"category\": \"people\"\r\n },\r\n \"smile\": {\r\n \"keywords\": [\"face\", \"happy\", \"joy\", \"funny\", \"haha\", \"laugh\", \"like\", \":D\", \":)\"],\r\n \"char\": \"😄\",\r\n \"category\": \"people\"\r\n },\r\n \"sweat_smile\": {\r\n \"keywords\": [\"face\", \"hot\", \"happy\", \"laugh\", \"sweat\", \"smile\", \"relief\"],\r\n \"char\": \"😅\",\r\n \"category\": \"people\"\r\n },\r\n \"laughing\": {\r\n \"keywords\": [\"happy\", \"joy\", \"lol\", \"satisfied\", \"haha\", \"face\", \"glad\", \"XD\", \"laugh\"],\r\n \"char\": \"😆\",\r\n \"category\": \"people\"\r\n },\r\n \"innocent\": {\r\n \"keywords\": [\"face\", \"angel\", \"heaven\", \"halo\"],\r\n \"char\": \"😇\",\r\n \"category\": \"people\"\r\n },\r\n \"wink\": {\r\n \"keywords\": [\"face\", \"happy\", \"mischievous\", \"secret\", \";)\", \"smile\"],\r\n \"char\": \"😉\",\r\n \"category\": \"people\"\r\n },\r\n \"blush\": {\r\n \"keywords\": [\"face\", \"smile\", \"happy\", \"flushed\", \"crush\", \"embarrassed\", \"shy\", \"joy\"],\r\n \"char\": \"😊\",\r\n \"category\": \"people\"\r\n },\r\n \"slightly_smiling\": {\r\n \"keywords\": [\"face\", \"smile\"],\r\n \"char\": \"🙂\",\r\n \"category\": \"people\"\r\n },\r\n \"upside_down\": {\r\n \"keywords\": [\"face\", \"flipped\", \"silly\", \"smile\"],\r\n \"char\": \"🙃\",\r\n \"category\": \"people\"\r\n },\r\n \"relaxed\": {\r\n \"keywords\": [\"face\", \"blush\", \"massage\", \"happiness\"],\r\n \"char\": \"☺️\",\r\n \"category\": \"people\"\r\n },\r\n \"yum\": {\r\n \"keywords\": [\"happy\", \"joy\", \"tongue\", \"smile\", \"face\", \"silly\", \"yummy\", \"nom\"],\r\n \"char\": \"😋\",\r\n \"category\": \"people\"\r\n },\r\n \"relieved\": {\r\n \"keywords\": [\"face\", \"relaxed\", \"phew\", \"massage\", \"happiness\"],\r\n \"char\": \"😌\",\r\n \"category\": \"people\"\r\n },\r\n \"heart_eyes\": {\r\n \"keywords\": [\"face\", \"love\", \"like\", \"affection\", \"valentines\", \"infatuation\", \"crush\", \"heart\"],\r\n \"char\": \"😍\",\r\n \"category\": \"people\"\r\n },\r\n \"kissing_heart\": {\r\n \"keywords\": [\"face\", \"love\", \"like\", \"affection\", \"valentines\", \"infatuation\", \"kiss\"],\r\n \"char\": \"😘\",\r\n \"category\": \"people\"\r\n },\r\n \"kissing\": {\r\n \"keywords\": [\"love\", \"like\", \"face\", \"3\", \"valentines\", \"infatuation\", \"kiss\"],\r\n \"char\": \"😗\",\r\n \"category\": \"people\"\r\n },\r\n \"kissing_smiling_eyes\": {\r\n \"keywords\": [\"face\", \"affection\", \"valentines\", \"infatuation\", \"kiss\"],\r\n \"char\": \"😙\",\r\n \"category\": \"people\"\r\n },\r\n \"kissing_closed_eyes\": {\r\n \"keywords\": [\"face\", \"love\", \"like\", \"affection\", \"valentines\", \"infatuation\", \"kiss\"],\r\n \"char\": \"😚\",\r\n \"category\": \"people\"\r\n },\r\n \"stuck_out_tongue_winking_eye\": {\r\n \"keywords\": [\"face\", \"prank\", \"childish\", \"playful\", \"mischievous\", \"smile\", \"wink\", \"tongue\"],\r\n \"char\": \"😜\",\r\n \"category\": \"people\"\r\n },\r\n \"stuck_out_tongue_closed_eyes\": {\r\n \"keywords\": [\"face\", \"prank\", \"playful\", \"mischievous\", \"smile\", \"tongue\"],\r\n \"char\": \"😝\",\r\n \"category\": \"people\"\r\n },\r\n \"stuck_out_tongue\": {\r\n \"keywords\": [\"face\", \"prank\", \"childish\", \"playful\", \"mischievous\", \"smile\", \"tongue\"],\r\n \"char\": \"😛\",\r\n \"category\": \"people\"\r\n },\r\n \"money_mouth\": {\r\n \"keywords\": [\"face\", \"rich\", \"dollar\", \"money\"],\r\n \"char\": \"🤑\",\r\n \"category\": \"people\"\r\n },\r\n \"nerd\": {\r\n \"keywords\": [\"face\", \"nerdy\", \"geek\", \"dork\"],\r\n \"char\": \"🤓\",\r\n \"category\": \"people\"\r\n },\r\n \"sunglasses\": {\r\n \"keywords\": [\"face\", \"cool\", \"smile\", \"summer\", \"beach\", \"sunglass\"],\r\n \"char\": \"😎\",\r\n \"category\": \"people\"\r\n },\r\n \"hugging\": {\r\n \"keywords\": [\"face\", \"smile\", \"hug\"],\r\n \"char\": \"🤗\",\r\n \"category\": \"people\"\r\n },\r\n \"smirk\": {\r\n \"keywords\": [\"face\", \"smile\", \"mean\", \"prank\", \"smug\", \"sarcasm\"],\r\n \"char\": \"😏\",\r\n \"category\": \"people\"\r\n },\r\n \"no_mouth\": {\r\n \"keywords\": [\"face\", \"hellokitty\"],\r\n \"char\": \"😶\",\r\n \"category\": \"people\"\r\n },\r\n \"neutral_face\": {\r\n \"keywords\": [\"indifference\", \"meh\", \":|\", \"neutral\"],\r\n \"char\": \"😐\",\r\n \"category\": \"people\"\r\n },\r\n \"expressionless\": {\r\n \"keywords\": [\"face\", \"indifferent\", \"-_-\", \"meh\", \"deadpan\"],\r\n \"char\": \"😑\",\r\n \"category\": \"people\"\r\n },\r\n \"unamused\": {\r\n \"keywords\": [\"indifference\", \"bored\", \"straight face\", \"serious\", \"sarcasm\"],\r\n \"char\": \"😒\",\r\n \"category\": \"people\"\r\n },\r\n \"rolling_eyes\": {\r\n \"keywords\": [\"face\", \"eyeroll\", \"frustrated\"],\r\n \"char\": \"🙄\",\r\n \"category\": \"people\"\r\n },\r\n \"thinking\": {\r\n \"keywords\": [\"face\", \"hmmm\", \"think\", \"consider\"],\r\n \"char\": \"🤔\",\r\n \"category\": \"people\"\r\n },\r\n \"flushed\": {\r\n \"keywords\": [\"face\", \"blush\", \"shy\", \"flattered\"],\r\n \"char\": \"😳\",\r\n \"category\": \"people\"\r\n },\r\n \"disappointed\": {\r\n \"keywords\": [\"face\", \"sad\", \"upset\", \"depressed\", \":(\"],\r\n \"char\": \"😞\",\r\n \"category\": \"people\"\r\n },\r\n \"worried\": {\r\n \"keywords\": [\"face\", \"concern\", \"nervous\", \":(\"],\r\n \"char\": \"😟\",\r\n \"category\": \"people\"\r\n },\r\n \"angry\": {\r\n \"keywords\": [\"mad\", \"face\", \"annoyed\", \"frustrated\"],\r\n \"char\": \"😠\",\r\n \"category\": \"people\"\r\n },\r\n \"rage\": {\r\n \"keywords\": [\"angry\", \"mad\", \"hate\", \"despise\"],\r\n \"char\": \"😡\",\r\n \"category\": \"people\"\r\n },\r\n \"pensive\": {\r\n \"keywords\": [\"face\", \"sad\", \"depressed\", \"okay\", \"upset\"],\r\n \"char\": \"😔\",\r\n \"category\": \"people\"\r\n },\r\n \"confused\": {\r\n \"keywords\": [\"face\", \"indifference\", \"huh\", \"weird\", \"hmmm\", \":/\"],\r\n \"char\": \"😕\",\r\n \"category\": \"people\"\r\n },\r\n \"slightly_sad\": {\r\n \"keywords\": [\"face\", \"frowning\", \"disappointed\", \"sad\", \"upset\"],\r\n \"char\": \"🙁\",\r\n \"category\": \"people\"\r\n },\r\n \"white_frowning\": {\r\n \"keywords\": [\"face\", \"sad\", \"upset\", \"frown\"],\r\n \"char\": \"☹\",\r\n \"category\": \"people\"\r\n },\r\n \"persevere\": {\r\n \"keywords\": [\"face\", \"sick\", \"no\", \"upset\", \"oops\"],\r\n \"char\": \"😣\",\r\n \"category\": \"people\"\r\n },\r\n \"confounded\": {\r\n \"keywords\": [\"face\", \"confused\", \"sick\", \"unwell\", \"oops\", \":S\"],\r\n \"char\": \"😖\",\r\n \"category\": \"people\"\r\n },\r\n \"tired_face\": {\r\n \"keywords\": [\"sick\", \"whine\", \"upset\", \"frustrated\"],\r\n \"char\": \"😫\",\r\n \"category\": \"people\"\r\n },\r\n \"weary\": {\r\n \"keywords\": [\"face\", \"tired\", \"sleepy\", \"sad\", \"frustrated\", \"upset\"],\r\n \"char\": \"😩\",\r\n \"category\": \"people\"\r\n },\r\n \"triumph\": {\r\n \"keywords\": [\"face\", \"gas\", \"phew\", \"proud\", \"pride\"],\r\n \"char\": \"😤\",\r\n \"category\": \"people\"\r\n },\r\n \"open_mouth\": {\r\n \"keywords\": [\"face\", \"surprise\", \"impressed\", \"wow\", \"whoa\", \":O\"],\r\n \"char\": \"😮\",\r\n \"category\": \"people\"\r\n },\r\n \"scream\": {\r\n \"keywords\": [\"face\", \"munch\", \"scared\", \"omg\"],\r\n \"char\": \"😱\",\r\n \"category\": \"people\"\r\n },\r\n \"fearful\": {\r\n \"keywords\": [\"face\", \"scared\", \"terrified\", \"nervous\", \"oops\", \"huh\"],\r\n \"char\": \"😨\",\r\n \"category\": \"people\"\r\n },\r\n \"cold_sweat\": {\r\n \"keywords\": [\"face\", \"nervous\", \"sweat\"],\r\n \"char\": \"😰\",\r\n \"category\": \"people\"\r\n },\r\n \"hushed\": {\r\n \"keywords\": [\"face\", \"woo\", \"shh\"],\r\n \"char\": \"😯\",\r\n \"category\": \"people\"\r\n },\r\n \"frowning\": {\r\n \"keywords\": [\"face\", \"aw\", \"what\"],\r\n \"char\": \"😦\",\r\n \"category\": \"people\"\r\n },\r\n \"anguished\": {\r\n \"keywords\": [\"face\", \"stunned\", \"nervous\"],\r\n \"char\": \"😧\",\r\n \"category\": \"people\"\r\n },\r\n \"cry\": {\r\n \"keywords\": [\"face\", \"tears\", \"sad\", \"depressed\", \"upset\", \":'(\"],\r\n \"char\": \"😢\",\r\n \"category\": \"people\"\r\n },\r\n \"disappointed_relieved\": {\r\n \"keywords\": [\"face\", \"phew\", \"sweat\", \"nervous\"],\r\n \"char\": \"😥\",\r\n \"category\": \"people\"\r\n },\r\n \"sleepy\": {\r\n \"keywords\": [\"face\", \"tired\", \"rest\", \"nap\"],\r\n \"char\": \"😪\",\r\n \"category\": \"people\"\r\n },\r\n \"sweat\": {\r\n \"keywords\": [\"face\", \"hot\", \"sad\", \"tired\", \"exercise\"],\r\n \"char\": \"😓\",\r\n \"category\": \"people\"\r\n },\r\n \"sob\": {\r\n \"keywords\": [\"face\", \"cry\", \"tears\", \"sad\", \"upset\", \"depressed\"],\r\n \"char\": \"😭\",\r\n \"category\": \"people\"\r\n },\r\n \"dizzy_face\": {\r\n \"keywords\": [\"spent\", \"unconscious\", \"xox\", \"dizzy\"],\r\n \"char\": \"😵\",\r\n \"category\": \"people\"\r\n },\r\n \"astonished\": {\r\n \"keywords\": [\"face\", \"xox\", \"surprised\", \"poisoned\"],\r\n \"char\": \"😲\",\r\n \"category\": \"people\"\r\n },\r\n \"zipper_mouth\": {\r\n \"keywords\": [\"face\", \"sealed\", \"zipper\", \"secret\"],\r\n \"char\": \"🤐\",\r\n \"category\": \"people\"\r\n },\r\n \"mask\": {\r\n \"keywords\": [\"face\", \"sick\", \"ill\", \"disease\"],\r\n \"char\": \"😷\",\r\n \"category\": \"people\"\r\n },\r\n \"thermometer_face\": {\r\n \"keywords\": [\"sick\", \"temperature\", \"thermometer\", \"cold\"],\r\n \"char\": \"🤒\",\r\n \"category\": \"people\"\r\n },\r\n \"bandage_face\": {\r\n \"keywords\": [\"injured\", \"clumsy\", \"bandage\", \"hurt\"],\r\n \"char\": \"🤕\",\r\n \"category\": \"people\"\r\n },\r\n \"sleeping\": {\r\n \"keywords\": [\"face\", \"tired\", \"sleepy\", \"night\", \"zzz\"],\r\n \"char\": \"😴\",\r\n \"category\": \"people\"\r\n },\r\n \"zzz\": {\r\n \"keywords\": [\"sleepy\", \"tired\"],\r\n \"char\": \"💤\",\r\n \"category\": \"people\"\r\n },\r\n \"hankey\": {\r\n \"keywords\": [\"poop\", \"shitface\", \"fail\", \"turd\", \"shit\"],\r\n \"char\": \"💩\",\r\n \"category\": \"people\"\r\n },\r\n \"smiling_imp\": {\r\n \"keywords\": [\"devil\", \"horns\"],\r\n \"char\": \"😈\",\r\n \"category\": \"people\"\r\n },\r\n \"imp\": {\r\n \"keywords\": [\"devil\", \"angry\", \"horns\"],\r\n \"char\": \"👿\",\r\n \"category\": \"people\"\r\n },\r\n \"japanese_ogre\": {\r\n \"keywords\": [\"monster\", \"red\", \"mask\", \"halloween\", \"scary\", \"creepy\", \"devil\", \"demon\", \"japanese\", \"ogre\"],\r\n \"char\": \"👹\",\r\n \"category\": \"people\"\r\n },\r\n \"japanese_goblin\": {\r\n \"keywords\": [\"red\", \"evil\", \"mask\", \"monster\", \"scary\", \"creepy\", \"japanese\", \"goblin\"],\r\n \"char\": \"👺\",\r\n \"category\": \"people\"\r\n },\r\n \"skull\": {\r\n \"keywords\": [\"dead\", \"skeleton\", \"creepy\"],\r\n \"char\": \"💀\",\r\n \"category\": \"people\"\r\n },\r\n \"ghost\": {\r\n \"keywords\": [\"halloween\", \"spooky\", \"scary\"],\r\n \"char\": \"👻\",\r\n \"category\": \"people\"\r\n },\r\n \"alien\": {\r\n \"keywords\": [\"UFO\", \"paul\", \"weird\", \"outer_space\"],\r\n \"char\": \"👽\",\r\n \"category\": \"people\"\r\n },\r\n \"robot\": {\r\n \"keywords\": [\"computer\", \"machine\"],\r\n \"char\": \"🤖\",\r\n \"category\": \"people\"\r\n },\r\n \"smiley_cat\": {\r\n \"keywords\": [\"animal\", \"cats\", \"happy\", \"smile\"],\r\n \"char\": \"😺\",\r\n \"category\": \"people\"\r\n },\r\n \"smile_cat\": {\r\n \"keywords\": [\"animal\", \"cats\", \"smile\"],\r\n \"char\": \"😸\",\r\n \"category\": \"people\"\r\n },\r\n \"joy_cat\": {\r\n \"keywords\": [\"animal\", \"cats\", \"haha\", \"happy\", \"tears\"],\r\n \"char\": \"😹\",\r\n \"category\": \"people\"\r\n },\r\n \"heart_eyes_cat\": {\r\n \"keywords\": [\"animal\", \"love\", \"like\", \"affection\", \"cats\", \"valentines\", \"heart\"],\r\n \"char\": \"😻\",\r\n \"category\": \"people\"\r\n },\r\n \"smirk_cat\": {\r\n \"keywords\": [\"animal\", \"cats\", \"smirk\"],\r\n \"char\": \"😼\",\r\n \"category\": \"people\"\r\n },\r\n \"kissing_cat\": {\r\n \"keywords\": [\"animal\", \"cats\", \"kiss\"],\r\n \"char\": \"😽\",\r\n \"category\": \"people\"\r\n },\r\n \"scream_cat\": {\r\n \"keywords\": [\"animal\", \"cats\", \"munch\", \"scared\", \"scream\"],\r\n \"char\": \"🙀\",\r\n \"category\": \"people\"\r\n },\r\n \"crying_cat_face\": {\r\n \"keywords\": [\"animal\", \"tears\", \"weep\", \"sad\", \"cats\", \"upset\", \"cry\"],\r\n \"char\": \"😿\",\r\n \"category\": \"people\"\r\n },\r\n \"pouting_cat\": {\r\n \"keywords\": [\"animal\", \"cats\"],\r\n \"char\": \"😾\",\r\n \"category\": \"people\"\r\n },\r\n \"raised_hands\": {\r\n \"keywords\": [\"gesture\", \"hooray\", \"yea\", \"celebration\", \"hands\"],\r\n \"char\": \"🙌\",\r\n \"category\": \"people\"\r\n },\r\n \"clap\": {\r\n \"keywords\": [\"hands\", \"praise\", \"applause\", \"congrats\", \"yay\"],\r\n \"char\": \"👏\",\r\n \"category\": \"people\"\r\n },\r\n \"wave\": {\r\n \"keywords\": [\"hands\", \"gesture\", \"goodbye\", \"solong\", \"farewell\", \"hello\", \"palm\"],\r\n \"char\": \"👋\",\r\n \"category\": \"people\"\r\n },\r\n \"+1\": {\r\n \"keywords\": [\"thumbsup\", \"yes\", \"awesome\", \"good\", \"agree\", \"accept\", \"cool\", \"hand\", \"like\"],\r\n \"char\": \"👍\",\r\n \"category\": \"people\"\r\n },\r\n \"minus1\": { // TODO: should be \"-1\", fix TS bug\r\n \"keywords\": [\"thumbsdown\", \"no\", \"dislike\", \"hand\"],\r\n \"char\": \"👎\",\r\n \"category\": \"people\"\r\n },\r\n \"facepunch\": {\r\n \"keywords\": [\"angry\", \"violence\", \"fist\", \"hit\", \"attack\", \"hand\"],\r\n \"char\": \"👊\",\r\n \"category\": \"people\"\r\n },\r\n \"fist\": {\r\n \"keywords\": [\"fingers\", \"hand\", \"grasp\"],\r\n \"char\": \"✊\",\r\n \"category\": \"people\"\r\n },\r\n \"v\": {\r\n \"keywords\": [\"fingers\", \"ohyeah\", \"hand\", \"peace\", \"victory\", \"two\"],\r\n \"char\": \"✌️\",\r\n \"category\": \"people\"\r\n },\r\n \"ok_hand\": {\r\n \"keywords\": [\"fingers\", \"limbs\", \"perfect\", \"ok\"],\r\n \"char\": \"👌\",\r\n \"category\": \"people\"\r\n },\r\n \"hand\": {\r\n \"keywords\": [\"fingers\", \"stop\", \"highfive\", \"palm\", \"ban\", \"raised_hand\"],\r\n \"char\": \"✋\",\r\n \"category\": \"people\"\r\n },\r\n \"open_hands\": {\r\n \"keywords\": [\"fingers\", \"butterfly\", \"hands\", \"open\"],\r\n \"char\": \"👐\",\r\n \"category\": \"people\"\r\n },\r\n \"muscle\": {\r\n \"keywords\": [\"arm\", \"flex\", \"hand\", \"summer\", \"strong\", \"biceps\"],\r\n \"char\": \"💪\",\r\n \"category\": \"people\"\r\n },\r\n \"pray\": {\r\n \"keywords\": [\"please\", \"hope\", \"wish\", \"namaste\", \"highfive\"],\r\n \"char\": \"🙏\",\r\n \"category\": \"people\"\r\n },\r\n \"point_up\": {\r\n \"keywords\": [\"hand\", \"fingers\", \"direction\", \"up\"],\r\n \"char\": \"☝️\",\r\n \"category\": \"people\"\r\n },\r\n \"point_up_2\": {\r\n \"keywords\": [\"fingers\", \"hand\", \"direction\", \"up\"],\r\n \"char\": \"👆\",\r\n \"category\": \"people\"\r\n },\r\n \"point_down\": {\r\n \"keywords\": [\"fingers\", \"hand\", \"direction\", \"down\"],\r\n \"char\": \"👇\",\r\n \"category\": \"people\"\r\n },\r\n \"point_left\": {\r\n \"keywords\": [\"direction\", \"fingers\", \"hand\", \"left\"],\r\n \"char\": \"👈\",\r\n \"category\": \"people\"\r\n },\r\n \"point_right\": {\r\n \"keywords\": [\"fingers\", \"hand\", \"direction\", \"right\"],\r\n \"char\": \"👉\",\r\n \"category\": \"people\"\r\n },\r\n \"middle_finger\": {\r\n \"keywords\": [\"hand\", \"fingers\", \"rude\"],\r\n \"char\": \"🖕\",\r\n \"category\": \"people\"\r\n },\r\n \"splayed_fingers\": {\r\n \"keywords\": [\"hand\", \"fingers\", \"palm\"],\r\n \"char\": \"🖐\",\r\n \"category\": \"people\"\r\n },\r\n \"sign_of_horns\": {\r\n \"keywords\": [\"hand\", \"fingers\", \"evil_eye\", \"metal\", \"rock_on\"],\r\n \"char\": \"🤘\",\r\n \"category\": \"people\"\r\n },\r\n \"vulcan_salute\": {\r\n \"keywords\": [\"hand\", \"fingers\", \"spock\", \"star trek\"],\r\n \"char\": \"🖖\",\r\n \"category\": \"people\"\r\n },\r\n \"writing_hand\": {\r\n \"keywords\": [\"pen\", \"stationery\", \"write\"],\r\n \"char\": \"✍\",\r\n \"category\": \"people\"\r\n },\r\n \"nail_care\": {\r\n \"keywords\": [\"beauty\", \"manicure\", \"finger\", \"fashion\", \"nail\"],\r\n \"char\": \"💅\",\r\n \"category\": \"people\"\r\n },\r\n \"lips\": {\r\n \"keywords\": [\"mouth\", \"kiss\"],\r\n \"char\": \"👄\",\r\n \"category\": \"people\"\r\n },\r\n \"tongue\": {\r\n \"keywords\": [\"mouth\", \"playful\"],\r\n \"char\": \"👅\",\r\n \"category\": \"people\"\r\n },\r\n \"ear\": {\r\n \"keywords\": [\"face\", \"hear\", \"sound\", \"listen\"],\r\n \"char\": \"👂\",\r\n \"category\": \"people\"\r\n },\r\n \"nose\": {\r\n \"keywords\": [\"smell\", \"sniff\"],\r\n \"char\": \"👃\",\r\n \"category\": \"people\"\r\n },\r\n \"eye\": {\r\n \"keywords\": [\"face\", \"look\", \"see\", \"watch\", \"stare\"],\r\n \"char\": \"👁\",\r\n \"category\": \"people\"\r\n },\r\n \"eyes\": {\r\n \"keywords\": [\"look\", \"watch\", \"stalk\", \"peek\", \"see\"],\r\n \"char\": \"👀\",\r\n \"category\": \"people\"\r\n },\r\n \"bust_in_silhouette\": {\r\n \"keywords\": [\"user\", \"person\", \"human\"],\r\n \"char\": \"👤\",\r\n \"category\": \"people\"\r\n },\r\n \"busts_in_silhouette\": {\r\n \"keywords\": [\"user\", \"person\", \"human\", \"group\", \"team\"],\r\n \"char\": \"👥\",\r\n \"category\": \"people\"\r\n },\r\n \"speaking_head\": {\r\n \"keywords\": [\"user\", \"person\", \"human\"],\r\n \"char\": \"🗣\",\r\n \"category\": \"people\"\r\n },\r\n \"baby\": {\r\n \"keywords\": [\"child\", \"boy\", \"girl\", \"toddler\"],\r\n \"char\": \"👶\",\r\n \"category\": \"people\"\r\n },\r\n \"boy\": {\r\n \"keywords\": [\"man\", \"male\", \"guy\", \"teenager\"],\r\n \"char\": \"👦\",\r\n \"category\": \"people\"\r\n },\r\n \"girl\": {\r\n \"keywords\": [\"female\", \"woman\", \"teenager\"],\r\n \"char\": \"👧\",\r\n \"category\": \"people\"\r\n },\r\n \"man\": {\r\n \"keywords\": [\"mustache\", \"father\", \"dad\", \"guy\", \"classy\", \"sir\", \"moustache\"],\r\n \"char\": \"👨\",\r\n \"category\": \"people\"\r\n },\r\n \"woman\": {\r\n \"keywords\": [\"female\", \"girls\", \"lady\"],\r\n \"char\": \"👩\",\r\n \"category\": \"people\"\r\n },\r\n \"person_with_blond_hair\": {\r\n \"keywords\": [\"man\", \"male\", \"boy\", \"blonde\", \"guy\", \"person\"],\r\n \"char\": \"👱\",\r\n \"category\": \"people\"\r\n },\r\n \"older_man\": {\r\n \"keywords\": [\"human\", \"male\", \"men\", \"old\", \"elder\", \"senior\"],\r\n \"char\": \"👴\",\r\n \"category\": \"people\"\r\n },\r\n \"older_woman\": {\r\n \"keywords\": [\"human\", \"female\", \"women\", \"lady\", \"old\", \"elder\", \"senior\"],\r\n \"char\": \"👵\",\r\n \"category\": \"people\"\r\n },\r\n \"man_with_gua_pi_mao\": {\r\n \"keywords\": [\"male\", \"boy\", \"chinese\"],\r\n \"char\": \"👲\",\r\n \"category\": \"people\"\r\n },\r\n \"man_with_turban\": {\r\n \"keywords\": [\"male\", \"indian\", \"hinduism\", \"arabs\"],\r\n \"char\": \"👳\",\r\n \"category\": \"people\"\r\n },\r\n \"cop\": {\r\n \"keywords\": [\"man\", \"police\", \"law\", \"legal\", \"enforcement\", \"arrest\", \"911\"],\r\n \"char\": \"👮\",\r\n \"category\": \"people\"\r\n },\r\n \"construction_worker\": {\r\n \"keywords\": [\"male\", \"human\", \"wip\", \"guy\", \"build\", \"construction\", \"worker\", \"labor\"],\r\n \"char\": \"👷\",\r\n \"category\": \"people\"\r\n },\r\n \"guardsman\": {\r\n \"keywords\": [\"uk\", \"gb\", \"british\", \"male\", \"guy\", \"royal\"],\r\n \"char\": \"💂\",\r\n \"category\": \"people\"\r\n },\r\n \"sleuth\": {\r\n \"keywords\": [\"human\", \"spy\", \"detective\"],\r\n \"char\": \"🕵\",\r\n \"category\": \"people\"\r\n },\r\n \"santa\": {\r\n \"keywords\": [\"festival\", \"man\", \"male\", \"xmas\", \"father christmas\"],\r\n \"char\": \"🎅\",\r\n \"category\": \"people\"\r\n },\r\n \"angel\": {\r\n \"keywords\": [\"heaven\", \"wings\", \"halo\"],\r\n \"char\": \"👼\",\r\n \"category\": \"people\"\r\n },\r\n \"princess\": {\r\n \"keywords\": [\"girl\", \"woman\", \"female\", \"blond\", \"crown\", \"royal\", \"queen\"],\r\n \"char\": \"👸\",\r\n \"category\": \"people\"\r\n },\r\n \"bride_with_veil\": {\r\n \"keywords\": [\"couple\", \"marriage\", \"wedding\", \"woman\", \"bride\"],\r\n \"char\": \"👰\",\r\n \"category\": \"people\"\r\n },\r\n \"runner\": {\r\n \"keywords\": [\"man\", \"walking\", \"exercise\", \"race\", \"running\"],\r\n \"char\": \"🏃\",\r\n \"category\": \"people\"\r\n },\r\n \"walking\": {\r\n \"keywords\": [\"human\", \"feet\", \"steps\"],\r\n \"char\": \"🚶\",\r\n \"category\": \"people\"\r\n },\r\n \"dancer\": {\r\n \"keywords\": [\"female\", \"girl\", \"woman\", \"fun\"],\r\n \"char\": \"💃\",\r\n \"category\": \"people\"\r\n },\r\n \"dancers\": {\r\n \"keywords\": [\"female\", \"bunny\", \"women\", \"girls\"],\r\n \"char\": \"👯\",\r\n \"category\": \"people\"\r\n },\r\n \"couple\": {\r\n \"keywords\": [\"pair\", \"people\", \"human\", \"love\", \"date\", \"dating\", \"like\", \"affection\", \"valentines\", \"marriage\"],\r\n \"char\": \"👫\",\r\n \"category\": \"people\"\r\n },\r\n \"two_men_holding_hands\": {\r\n \"keywords\": [\"pair\", \"couple\", \"love\", \"like\", \"bromance\", \"friendship\", \"people\", \"human\"],\r\n \"char\": \"👬\",\r\n \"category\": \"people\"\r\n },\r\n \"two_women_holding_hands\": {\r\n \"keywords\": [\"pair\", \"friendship\", \"couple\", \"love\", \"like\", \"female\", \"people\", \"human\"],\r\n \"char\": \"👭\",\r\n \"category\": \"people\"\r\n },\r\n \"bow\": {\r\n \"keywords\": [\"man\", \"male\", \"boy\"],\r\n \"char\": \"🙇\",\r\n \"category\": \"people\"\r\n },\r\n \"information_desk_person\": {\r\n \"keywords\": [\"female\", \"girl\", \"woman\", \"human\", \"information\"],\r\n \"char\": \"💁\",\r\n \"category\": \"people\"\r\n },\r\n \"no_good\": {\r\n \"keywords\": [\"female\", \"girl\", \"woman\", \"nope\"],\r\n \"char\": \"🙅\",\r\n \"category\": \"people\"\r\n },\r\n \"ok_woman\": {\r\n \"keywords\": [\"women\", \"girl\", \"female\", \"pink\", \"human\", \"woman\"],\r\n \"char\": \"🙆\",\r\n \"category\": \"people\"\r\n },\r\n \"raising_hand\": {\r\n \"keywords\": [\"female\", \"girl\", \"woman\"],\r\n \"char\": \"🙋\",\r\n \"category\": \"people\"\r\n },\r\n \"person_with_pouting_face\": {\r\n \"keywords\": [\"female\", \"girl\", \"woman\"],\r\n \"char\": \"🙎\",\r\n \"category\": \"people\"\r\n },\r\n \"person_frowning\": {\r\n \"keywords\": [\"female\", \"girl\", \"woman\", \"sad\", \"depressed\", \"discouraged\", \"unhappy\"],\r\n \"char\": \"🙍\",\r\n \"category\": \"people\"\r\n },\r\n \"haircut\": {\r\n \"keywords\": [\"female\", \"girl\", \"woman\"],\r\n \"char\": \"💇\",\r\n \"category\": \"people\"\r\n },\r\n \"massage\": {\r\n \"keywords\": [\"female\", \"girl\", \"woman\", \"head\"],\r\n \"char\": \"💆\",\r\n \"category\": \"people\"\r\n },\r\n \"couple_with_heart\": {\r\n \"keywords\": [\"pair\", \"love\", \"like\", \"affection\", \"human\", \"dating\", \"valentines\", \"marriage\"],\r\n \"char\": \"💑\",\r\n \"category\": \"people\"\r\n },\r\n \"female_couple_with_heart\": {\r\n \"keywords\": [\"pair\", \"love\", \"like\", \"affection\", \"human\", \"dating\", \"valentines\", \"marriage\"],\r\n \"char\": \"👩‍❤️‍👩\",\r\n \"category\": \"people\"\r\n },\r\n \"male_couple_with_heart\": {\r\n \"keywords\": [\"pair\", \"love\", \"like\", \"affection\", \"human\", \"dating\", \"valentines\", \"marriage\"],\r\n \"char\": \"👨‍❤️‍👨\",\r\n \"category\": \"people\"\r\n },\r\n \"couplekiss\": {\r\n \"keywords\": [\"pair\", \"valentines\", \"love\", \"like\", \"dating\", \"marriage\"],\r\n \"char\": \"💏\",\r\n \"category\": \"people\"\r\n },\r\n \"female_couplekiss\": {\r\n \"keywords\": [\"pair\", \"valentines\", \"love\", \"like\", \"dating\", \"marriage\"],\r\n \"char\": \"👩‍❤️‍💋‍👩\",\r\n \"category\": \"people\"\r\n },\r\n \"male_couplekiss\": {\r\n \"keywords\": [\"pair\", \"valentines\", \"love\", \"like\", \"dating\", \"marriage\"],\r\n \"char\": \"👨‍❤️‍💋‍👨\",\r\n \"category\": \"people\"\r\n },\r\n \"family\": {\r\n \"keywords\": [\"home\", \"parents\", \"child\", \"mom\", \"dad\", \"father\", \"mother\", \"people\", \"human\"],\r\n \"char\": \"👪\",\r\n \"category\": \"people\"\r\n },\r\n \"family_man_woman_girl\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"child\"],\r\n \"char\": \"👨‍👩‍👧\",\r\n \"category\": \"people\"\r\n },\r\n \"family_man_woman_girl_boy\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"children\"],\r\n \"char\": \"👨‍👩‍👧‍👦\",\r\n \"category\": \"people\"\r\n },\r\n \"family_man_woman_boys\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"children\"],\r\n \"char\": \"👨‍👩‍👦‍👦\",\r\n \"category\": \"people\"\r\n },\r\n \"family_man_woman_girls\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"children\"],\r\n \"char\": \"👨‍👩‍👧‍👧\",\r\n \"category\": \"people\"\r\n },\r\n \"family_women_boy\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"children\"],\r\n \"char\": \"👩‍👩‍👦\",\r\n \"category\": \"people\"\r\n },\r\n \"family_women_girl\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"children\"],\r\n \"char\": \"👩‍👩‍👧\",\r\n \"category\": \"people\"\r\n },\r\n \"family_women_girl_boy\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"children\"],\r\n \"char\": \"👩‍👩‍👧‍👦\",\r\n \"category\": \"people\"\r\n },\r\n \"family_women_boys\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"children\"],\r\n \"char\": \"👩‍👩‍👦‍👦\",\r\n \"category\": \"people\"\r\n },\r\n \"family_women_girls\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"children\"],\r\n \"char\": \"👩‍👩‍👧‍👧\",\r\n \"category\": \"people\"\r\n },\r\n \"family_men_boy\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"children\"],\r\n \"char\": \"👨‍👨‍👦\",\r\n \"category\": \"people\"\r\n },\r\n \"family_men_girl\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"children\"],\r\n \"char\": \"👨‍👨‍👧\",\r\n \"category\": \"people\"\r\n },\r\n \"family_men_girl_boy\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"children\"],\r\n \"char\": \"👨‍👨‍👧‍👦\",\r\n \"category\": \"people\"\r\n },\r\n \"family_men_boys\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"children\"],\r\n \"char\": \"👨‍👨‍👦‍👦\",\r\n \"category\": \"people\"\r\n },\r\n \"family_men_girls\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"children\"],\r\n \"char\": \"👨‍👨‍👧‍👧\",\r\n \"category\": \"people\"\r\n },\r\n \"womans_clothes\": {\r\n \"keywords\": [\"fashion\", \"shopping\", \"female\"],\r\n \"char\": \"👚\",\r\n \"category\": \"people\"\r\n },\r\n \"shirt\": {\r\n \"keywords\": [\"fashion\", \"cloth\", \"casual\", \"tshirt\", \"tee\"],\r\n \"char\": \"👕\",\r\n \"category\": \"people\"\r\n },\r\n \"jeans\": {\r\n \"keywords\": [\"fashion\", \"shopping\"],\r\n \"char\": \"👖\",\r\n \"category\": \"people\"\r\n },\r\n \"necktie\": {\r\n \"keywords\": [\"shirt\", \"suitup\", \"formal\", \"fashion\", \"cloth\", \"business\"],\r\n \"char\": \"👔\",\r\n \"category\": \"people\"\r\n },\r\n \"dress\": {\r\n \"keywords\": [\"clothes\", \"fashion\", \"shopping\"],\r\n \"char\": \"👗\",\r\n \"category\": \"people\"\r\n },\r\n \"bikini\": {\r\n \"keywords\": [\"swimming\", \"female\", \"woman\", \"girl\", \"fashion\", \"beach\", \"summer\"],\r\n \"char\": \"👙\",\r\n \"category\": \"people\"\r\n },\r\n \"kimono\": {\r\n \"keywords\": [\"dress\", \"fashion\", \"women\", \"female\", \"japanese\"],\r\n \"char\": \"👘\",\r\n \"category\": \"people\"\r\n },\r\n \"lipstick\": {\r\n \"keywords\": [\"female\", \"girl\", \"fashion\", \"woman\"],\r\n \"char\": \"💄\",\r\n \"category\": \"people\"\r\n },\r\n \"kiss\": {\r\n \"keywords\": [\"face\", \"lips\", \"love\", \"like\", \"affection\", \"valentines\"],\r\n \"char\": \"💋\",\r\n \"category\": \"people\"\r\n },\r\n \"footprints\": {\r\n \"keywords\": [\"feet\", \"tracking\", \"walking\", \"beach\"],\r\n \"char\": \"👣\",\r\n \"category\": \"people\"\r\n },\r\n \"high_heel\": {\r\n \"keywords\": [\"fashion\", \"shoes\", \"female\", \"pumps\", \"stiletto\"],\r\n \"char\": \"👠\",\r\n \"category\": \"people\"\r\n },\r\n \"sandal\": {\r\n \"keywords\": [\"shoes\", \"fashion\", \"flip flops\"],\r\n \"char\": \"👡\",\r\n \"category\": \"people\"\r\n },\r\n \"boot\": {\r\n \"keywords\": [\"shoes\", \"fashion\"],\r\n \"char\": \"👢\",\r\n \"category\": \"people\"\r\n },\r\n \"mans_shoe\": {\r\n \"keywords\": [\"fashion\", \"male\"],\r\n \"char\": \"👞\",\r\n \"category\": \"people\"\r\n },\r\n \"athletic_shoe\": {\r\n \"keywords\": [\"shoes\", \"sports\", \"sneakers\"],\r\n \"char\": \"👟\",\r\n \"category\": \"people\"\r\n },\r\n \"womans_hat\": {\r\n \"keywords\": [\"fashion\", \"accessories\", \"female\", \"lady\", \"spring\"],\r\n \"char\": \"👒\",\r\n \"category\": \"people\"\r\n },\r\n \"tophat\": {\r\n \"keywords\": [\"magic\", \"gentleman\", \"classy\", \"circus\"],\r\n \"char\": \"🎩\",\r\n \"category\": \"people\"\r\n },\r\n \"helmet\": {\r\n \"keywords\": [\"construction\", \"build\"],\r\n \"char\": \"⛑\",\r\n \"category\": \"people\"\r\n },\r\n \"mortar_board\": {\r\n \"keywords\": [\"school\", \"college\", \"degree\", \"university\", \"graduation\", \"cap\", \"hat\", \"legal\", \"learn\", \"education\"],\r\n \"char\": \"🎓\",\r\n \"category\": \"people\"\r\n },\r\n \"crown\": {\r\n \"keywords\": [\"king\", \"kod\", \"leader\", \"royalty\", \"lord\"],\r\n \"char\": \"👑\",\r\n \"category\": \"people\"\r\n },\r\n \"school_satchel\": {\r\n \"keywords\": [\"student\", \"education\", \"bag\", \"backpack\"],\r\n \"char\": \"🎒\",\r\n \"category\": \"people\"\r\n },\r\n \"pouch\": {\r\n \"keywords\": [\"bag\", \"accessories\", \"shopping\"],\r\n \"char\": \"👝\",\r\n \"category\": \"people\"\r\n },\r\n \"purse\": {\r\n \"keywords\": [\"fashion\", \"accessories\", \"money\", \"sales\", \"shopping\"],\r\n \"char\": \"👛\",\r\n \"category\": \"people\"\r\n },\r\n \"handbag\": {\r\n \"keywords\": [\"fashion\", \"accessory\", \"accessories\", \"shopping\"],\r\n \"char\": \"👜\",\r\n \"category\": \"people\"\r\n },\r\n \"briefcase\": {\r\n \"keywords\": [\"business\", \"documents\", \"work\", \"law\", \"legal\"],\r\n \"char\": \"💼\",\r\n \"category\": \"people\"\r\n },\r\n \"eyeglasses\": {\r\n \"keywords\": [\"fashion\", \"accessories\", \"eyesight\", \"nerdy\", \"dork\", \"geek\"],\r\n \"char\": \"👓\",\r\n \"category\": \"people\"\r\n },\r\n \"dark_sunglasses\": {\r\n \"keywords\": [\"face\", \"cool\", \"accessories\"],\r\n \"char\": \"🕶\",\r\n \"category\": \"people\"\r\n },\r\n \"ring\": {\r\n \"keywords\": [\"wedding\", \"propose\", \"marriage\", \"valentines\", \"diamond\", \"fashion\", \"jewelry\", \"gem\", \"engagement\"],\r\n \"char\": \"💍\",\r\n \"category\": \"people\"\r\n },\r\n \"closed_umbrella\": {\r\n \"keywords\": [\"weather\", \"rain\", \"drizzle\"],\r\n \"char\": \"🌂\",\r\n \"category\": \"people\"\r\n },\r\n \"dog\": {\r\n \"keywords\": [\"animal\", \"friend\", \"nature\", \"woof\", \"puppy\", \"pet\", \"faithful\"],\r\n \"char\": \"🐶\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"cat\": {\r\n \"keywords\": [\"animal\", \"meow\", \"nature\", \"pet\", \"kitten\"],\r\n \"char\": \"🐱\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"mouse\": {\r\n \"keywords\": [\"animal\", \"nature\", \"cheese\", \"rodent\"],\r\n \"char\": \"🐭\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"hamster\": {\r\n \"keywords\": [\"animal\", \"nature\"],\r\n \"char\": \"🐹\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"rabbit\": {\r\n \"keywords\": [\"animal\", \"nature\", \"pet\", \"spring\", \"magic\", \"bunny\"],\r\n \"char\": \"🐰\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"bear\": {\r\n \"keywords\": [\"animal\", \"nature\", \"wild\"],\r\n \"char\": \"🐻\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"panda_face\": {\r\n \"keywords\": [\"animal\", \"nature\", \"panda\"],\r\n \"char\": \"🐼\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"koala\": {\r\n \"keywords\": [\"animal\", \"nature\"],\r\n \"char\": \"🐨\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"tiger\": {\r\n \"keywords\": [\"animal\", \"cat\", \"danger\", \"wild\", \"nature\", \"roar\"],\r\n \"char\": \"🐯\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"lion_face\": {\r\n \"keywords\": [\"animal\", \"nature\"],\r\n \"char\": \"🦁\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"cow\": {\r\n \"keywords\": [\"beef\", \"ox\", \"animal\", \"nature\", \"moo\", \"milk\"],\r\n \"char\": \"🐮\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"pig\": {\r\n \"keywords\": [\"animal\", \"oink\", \"nature\"],\r\n \"char\": \"🐷\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"pig_nose\": {\r\n \"keywords\": [\"animal\", \"oink\"],\r\n \"char\": \"🐽\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"frog\": {\r\n \"keywords\": [\"animal\", \"nature\", \"croak\", \"toad\"],\r\n \"char\": \"🐸\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"octopus\": {\r\n \"keywords\": [\"animal\", \"creature\", \"ocean\", \"sea\", \"nature\", \"beach\"],\r\n \"char\": \"🐙\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"monkey_face\": {\r\n \"keywords\": [\"animal\", \"nature\", \"circus\"],\r\n \"char\": \"🐵\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"see_no_evil\": {\r\n \"keywords\": [\"monkey\", \"animal\", \"nature\", \"haha\"],\r\n \"char\": \"🙈\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"hear_no_evil\": {\r\n \"keywords\": [\"animal\", \"monkey\", \"nature\"],\r\n \"char\": \"🙉\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"speak_no_evil\": {\r\n \"keywords\": [\"monkey\", \"animal\", \"nature\", \"omg\"],\r\n \"char\": \"🙊\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"monkey\": {\r\n \"keywords\": [\"animal\", \"nature\", \"banana\", \"circus\"],\r\n \"char\": \"🐒\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"chicken\": {\r\n \"keywords\": [\"animal\", \"cluck\", \"nature\", \"bird\"],\r\n \"char\": \"🐔\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"penguin\": {\r\n \"keywords\": [\"animal\", \"nature\"],\r\n \"char\": \"🐧\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"bird\": {\r\n \"keywords\": [\"animal\", \"nature\", \"fly\", \"tweet\", \"spring\"],\r\n \"char\": \"🐦\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"baby_chick\": {\r\n \"keywords\": [\"animal\", \"chicken\", \"bird\"],\r\n \"char\": \"🐤\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"hatching_chick\": {\r\n \"keywords\": [\"animal\", \"chicken\", \"egg\", \"born\", \"baby\", \"bird\"],\r\n \"char\": \"🐣\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"hatched_chick\": {\r\n \"keywords\": [\"animal\", \"chicken\", \"baby\", \"bird\"],\r\n \"char\": \"🐥\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"wolf\": {\r\n \"keywords\": [\"animal\", \"nature\", \"wild\"],\r\n \"char\": \"🐺\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"boar\": {\r\n \"keywords\": [\"animal\", \"nature\"],\r\n \"char\": \"🐗\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"horse\": {\r\n \"keywords\": [\"animal\", \"brown\", \"nature\"],\r\n \"char\": \"🐴\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"unicorn_face\": {\r\n \"keywords\": [\"animal\", \"nature\", \"mystical\"],\r\n \"char\": \"🦄\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"bee\": {\r\n \"keywords\": [\"animal\", \"insect\", \"nature\", \"bug\", \"spring\", \"honey\"],\r\n \"char\": \"🐝\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"bug\": {\r\n \"keywords\": [\"animal\", \"insect\", \"nature\", \"worm\"],\r\n \"char\": \"🐛\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"snail\": {\r\n \"keywords\": [\"slow\", \"animal\", \"shell\"],\r\n \"char\": \"🐌\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"beetle\": {\r\n \"keywords\": [\"animal\", \"insect\", \"nature\", \"ladybug\"],\r\n \"char\": \"🐞\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"ant\": {\r\n \"keywords\": [\"animal\", \"insect\", \"nature\", \"bug\"],\r\n \"char\": \"🐜\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"spider\": {\r\n \"keywords\": [\"animal\", \"arachnid\"],\r\n \"char\": \"🕷\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"scorpion\": {\r\n \"keywords\": [\"animal\", \"arachnid\"],\r\n \"char\": \"🦂\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"crab\": {\r\n \"keywords\": [\"animal\", \"crustacean\"],\r\n \"char\": \"🦀\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"snake\": {\r\n \"keywords\": [\"animal\", \"evil\", \"nature\", \"hiss\", \"python\"],\r\n \"char\": \"🐍\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"turtle\": {\r\n \"keywords\": [\"animal\", \"slow\", \"nature\", \"tortoise\"],\r\n \"char\": \"🐢\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"tropical_fish\": {\r\n \"keywords\": [\"animal\", \"swim\", \"ocean\", \"beach\", \"nemo\"],\r\n \"char\": \"🐠\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"fish\": {\r\n \"keywords\": [\"animal\", \"food\", \"nature\"],\r\n \"char\": \"🐟\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"blowfish\": {\r\n \"keywords\": [\"animal\", \"nature\", \"food\", \"sea\", \"ocean\"],\r\n \"char\": \"🐡\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"dolphin\": {\r\n \"keywords\": [\"animal\", \"nature\", \"fish\", \"sea\", \"ocean\", \"flipper\", \"fins\", \"beach\"],\r\n \"char\": \"🐬\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"whale\": {\r\n \"keywords\": [\"animal\", \"nature\", \"sea\", \"ocean\"],\r\n \"char\": \"🐳\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"whale2\": {\r\n \"keywords\": [\"animal\", \"nature\", \"sea\", \"ocean\"],\r\n \"char\": \"🐋\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"crocodile\": {\r\n \"keywords\": [\"animal\", \"nature\", \"reptile\", \"lizard\", \"alligator\"],\r\n \"char\": \"🐊\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"leopard\": {\r\n \"keywords\": [\"animal\", \"nature\"],\r\n \"char\": \"🐆\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"tiger2\": {\r\n \"keywords\": [\"animal\", \"nature\", \"roar\"],\r\n \"char\": \"🐅\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"water_buffalo\": {\r\n \"keywords\": [\"animal\", \"nature\", \"ox\", \"cow\"],\r\n \"char\": \"🐃\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"ox\": {\r\n \"keywords\": [\"animal\", \"cow\", \"beef\"],\r\n \"char\": \"🐂\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"cow2\": {\r\n \"keywords\": [\"beef\", \"ox\", \"animal\", \"nature\", \"moo\", \"milk\"],\r\n \"char\": \"🐄\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"dromedary_camel\": {\r\n \"keywords\": [\"animal\", \"hot\", \"desert\", \"hump\"],\r\n \"char\": \"🐪\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"camel\": {\r\n \"keywords\": [\"animal\", \"nature\", \"hot\", \"desert\", \"hump\"],\r\n \"char\": \"🐫\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"elephant\": {\r\n \"keywords\": [\"animal\", \"nature\", \"nose\", \"thailand\", \"circus\"],\r\n \"char\": \"🐘\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"goat\": {\r\n \"keywords\": [\"animal\", \"nature\"],\r\n \"char\": \"🐐\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"ram\": {\r\n \"keywords\": [\"animal\", \"sheep\", \"nature\"],\r\n \"char\": \"🐏\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"sheep\": {\r\n \"keywords\": [\"animal\", \"nature\", \"wool\", \"shipit\"],\r\n \"char\": \"🐑\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"racehorse\": {\r\n \"keywords\": [\"animal\", \"gamble\", \"luck\"],\r\n \"char\": \"🐎\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"pig2\": {\r\n \"keywords\": [\"animal\", \"nature\"],\r\n \"char\": \"🐖\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"rat\": {\r\n \"keywords\": [\"animal\", \"mouse\", \"rodent\"],\r\n \"char\": \"🐀\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"mouse2\": {\r\n \"keywords\": [\"animal\", \"nature\", \"rodent\"],\r\n \"char\": \"🐁\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"rooster\": {\r\n \"keywords\": [\"animal\", \"nature\", \"chicken\"],\r\n \"char\": \"🐓\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"turkey\": {\r\n \"keywords\": [\"animal\", \"bird\"],\r\n \"char\": \"🦃\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"dove_of_peace\": {\r\n \"keywords\": [\"animal\", \"bird\"],\r\n \"char\": \"🕊\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"dog2\": {\r\n \"keywords\": [\"animal\", \"nature\", \"friend\", \"doge\", \"pet\", \"faithful\"],\r\n \"char\": \"🐕\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"poodle\": {\r\n \"keywords\": [\"dog\", \"animal\", \"101\", \"nature\", \"pet\"],\r\n \"char\": \"🐩\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"cat2\": {\r\n \"keywords\": [\"animal\", \"meow\", \"pet\", \"cats\"],\r\n \"char\": \"🐈\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"rabbit2\": {\r\n \"keywords\": [\"animal\", \"nature\", \"pet\", \"magic\", \"spring\"],\r\n \"char\": \"🐇\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"chipmunk\": {\r\n \"keywords\": [\"animal\", \"nature\", \"rodent\", \"squirrel\"],\r\n \"char\": \"🐿\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"feet\": {\r\n \"keywords\": [\"animal\", \"tracking\", \"footprints\", \"dog\", \"cat\", \"pet\", \"paw_prints\"],\r\n \"char\": \"🐾\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"dragon\": {\r\n \"keywords\": [\"animal\", \"myth\", \"nature\", \"chinese\", \"green\"],\r\n \"char\": \"🐉\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"dragon_face\": {\r\n \"keywords\": [\"animal\", \"myth\", \"nature\", \"chinese\", \"green\"],\r\n \"char\": \"🐲\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"cactus\": {\r\n \"keywords\": [\"vegetable\", \"plant\", \"nature\"],\r\n \"char\": \"🌵\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"christmas_tree\": {\r\n \"keywords\": [\"festival\", \"vacation\", \"december\", \"xmas\", \"celebration\"],\r\n \"char\": \"🎄\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"evergreen_tree\": {\r\n \"keywords\": [\"plant\", \"nature\"],\r\n \"char\": \"🌲\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"deciduous_tree\": {\r\n \"keywords\": [\"plant\", \"nature\"],\r\n \"char\": \"🌳\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"palm_tree\": {\r\n \"keywords\": [\"plant\", \"vegetable\", \"nature\", \"summer\", \"beach\", \"mojito\", \"tropical\"],\r\n \"char\": \"🌴\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"seedling\": {\r\n \"keywords\": [\"plant\", \"nature\", \"grass\", \"lawn\", \"spring\"],\r\n \"char\": \"🌱\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"herb\": {\r\n \"keywords\": [\"vegetable\", \"plant\", \"medicine\", \"weed\", \"grass\", \"lawn\"],\r\n \"char\": \"🌿\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"shamrock\": {\r\n \"keywords\": [\"vegetable\", \"plant\", \"nature\", \"irish\", \"clover\"],\r\n \"char\": \"☘\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"four_leaf_clover\": {\r\n \"keywords\": [\"vegetable\", \"plant\", \"nature\", \"lucky\", \"irish\"],\r\n \"char\": \"🍀\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"bamboo\": {\r\n \"keywords\": [\"plant\", \"nature\", \"vegetable\", \"panda\", \"pine_decoration\"],\r\n \"char\": \"🎍\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"tanabata_tree\": {\r\n \"keywords\": [\"plant\", \"nature\", \"branch\", \"summer\"],\r\n \"char\": \"🎋\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"leaves\": {\r\n \"keywords\": [\"nature\", \"plant\", \"tree\", \"vegetable\", \"grass\", \"lawn\", \"spring\"],\r\n \"char\": \"🍃\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"fallen_leaf\": {\r\n \"keywords\": [\"nature\", \"plant\", \"vegetable\", \"leaves\"],\r\n \"char\": \"🍂\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"maple_leaf\": {\r\n \"keywords\": [\"nature\", \"plant\", \"vegetable\", \"canada\", \"fall\"],\r\n \"char\": \"🍁\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"ear_of_rice\": {\r\n \"keywords\": [\"nature\", \"plant\"],\r\n \"char\": \"🌾\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"hibiscus\": {\r\n \"keywords\": [\"plant\", \"vegetable\", \"flowers\", \"beach\"],\r\n \"char\": \"🌺\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"sunflower\": {\r\n \"keywords\": [\"nature\", \"plant\", \"fall\"],\r\n \"char\": \"🌻\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"rose\": {\r\n \"keywords\": [\"flowers\", \"valentines\", \"love\", \"spring\"],\r\n \"char\": \"🌹\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"tulip\": {\r\n \"keywords\": [\"flowers\", \"plant\", \"nature\", \"summer\", \"spring\"],\r\n \"char\": \"🌷\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"blossom\": {\r\n \"keywords\": [\"nature\", \"flowers\", \"yellow\"],\r\n \"char\": \"🌼\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"cherry_blossom\": {\r\n \"keywords\": [\"nature\", \"plant\", \"spring\", \"flower\"],\r\n \"char\": \"🌸\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"bouquet\": {\r\n \"keywords\": [\"flowers\", \"nature\", \"spring\"],\r\n \"char\": \"💐\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"mushroom\": {\r\n \"keywords\": [\"plant\", \"vegetable\"],\r\n \"char\": \"🍄\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"chestnut\": {\r\n \"keywords\": [\"food\", \"squirrel\"],\r\n \"char\": \"🌰\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"jack_o_lantern\": {\r\n \"keywords\": [\"halloween\", \"light\", \"pumpkin\", \"creepy\", \"fall\"],\r\n \"char\": \"🎃\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"shell\": {\r\n \"keywords\": [\"nature\", \"sea\", \"beach\"],\r\n \"char\": \"🐚\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"spider_web\": {\r\n \"keywords\": [\"animal\", \"insect\", \"arachnid\", \"silk\"],\r\n \"char\": \"🕸\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"earth_americas\": {\r\n \"keywords\": [\"globe\", \"world\", \"USA\", \"international\"],\r\n \"char\": \"🌎\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"earth_africa\": {\r\n \"keywords\": [\"globe\", \"world\", \"international\"],\r\n \"char\": \"🌍\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"earth_asia\": {\r\n \"keywords\": [\"globe\", \"world\", \"east\", \"international\"],\r\n \"char\": \"🌏\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"full_moon\": {\r\n \"keywords\": [\"nature\", \"yellow\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\"],\r\n \"char\": \"🌕\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"waning_gibbous_moon\": {\r\n \"keywords\": [\"nature\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\", \"waxing_gibbous_moon\"],\r\n \"char\": \"🌖\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"last_quarter_moon\": {\r\n \"keywords\": [\"nature\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\"],\r\n \"char\": \"🌗\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"waning_crescent_moon\": {\r\n \"keywords\": [\"nature\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\"],\r\n \"char\": \"🌘\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"new_moon\": {\r\n \"keywords\": [\"nature\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\"],\r\n \"char\": \"🌑\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"waxing_crescent_moon\": {\r\n \"keywords\": [\"nature\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\"],\r\n \"char\": \"🌒\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"first_quarter_moon\": {\r\n \"keywords\": [\"nature\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\"],\r\n \"char\": \"🌓\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"moon\": {\r\n \"keywords\": [\"nature\", \"night\", \"sky\", \"gray\", \"twilight\", \"planet\", \"space\", \"evening\", \"sleep\"],\r\n \"char\": \"🌔\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"new_moon_with_face\": {\r\n \"keywords\": [\"nature\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\"],\r\n \"char\": \"🌚\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"full_moon_with_face\": {\r\n \"keywords\": [\"nature\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\"],\r\n \"char\": \"🌝\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"first_quarter_moon_with_face\": {\r\n \"keywords\": [\"nature\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\"],\r\n \"char\": \"🌛\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"last_quarter_moon_with_face\": {\r\n \"keywords\": [\"nature\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\"],\r\n \"char\": \"🌜\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"sun_with_face\": {\r\n \"keywords\": [\"nature\", \"morning\", \"sky\"],\r\n \"char\": \"🌞\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"crescent_moon\": {\r\n \"keywords\": [\"night\", \"sleep\", \"sky\", \"evening\", \"magic\"],\r\n \"char\": \"🌙\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"star\": {\r\n \"keywords\": [\"night\", \"yellow\"],\r\n \"char\": \"⭐\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"star2\": {\r\n \"keywords\": [\"night\", \"sparkle\", \"awesome\", \"good\", \"magic\"],\r\n \"char\": \"🌟\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"dizzy\": {\r\n \"keywords\": [\"star\", \"sparkle\", \"shoot\", \"magic\"],\r\n \"char\": \"💫\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"sparkles\": {\r\n \"keywords\": [\"stars\", \"shine\", \"shiny\", \"cool\", \"awesome\", \"good\", \"magic\"],\r\n \"char\": \"✨\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"comet\": {\r\n \"keywords\": [\"space\"],\r\n \"char\": \"☄\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"sunny\": {\r\n \"keywords\": [\"weather\", \"nature\", \"brightness\", \"summer\", \"beach\", \"spring\"],\r\n \"char\": \"☀️\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"white_sun_with_small_cloud\": {\r\n \"keywords\": [\"weather\"],\r\n \"char\": \"🌤\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"partly_sunny\": {\r\n \"keywords\": [\"weather\", \"nature\", \"cloudy\", \"morning\", \"fall\", \"spring\"],\r\n \"char\": \"⛅\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"white_sun_behind_cloud\": {\r\n \"keywords\": [\"weather\"],\r\n \"char\": \"🌥\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"white_sun_behind_cloud_with_rain\": {\r\n \"keywords\": [\"weather\"],\r\n \"char\": \"🌦\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"cloud\": {\r\n \"keywords\": [\"weather\", \"sky\"],\r\n \"char\": \"☁️\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"cloud_with_rain\": {\r\n \"keywords\": [\"weather\"],\r\n \"char\": \"🌧\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"thunder_cloud_and_rain\": {\r\n \"keywords\": [\"weather\", \"lightning\"],\r\n \"char\": \"⛈\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"cloud_with_lightning\": {\r\n \"keywords\": [\"weather\", \"thunder\"],\r\n \"char\": \"🌩\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"zap\": {\r\n \"keywords\": [\"thunder\", \"weather\", \"lightning bolt\", \"fast\"],\r\n \"char\": \"⚡\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"fire\": {\r\n \"keywords\": [\"hot\", \"cook\", \"flame\"],\r\n \"char\": \"🔥\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"boom\": {\r\n \"keywords\": [\"bomb\", \"explode\", \"explosion\", \"collision\", \"blown\"],\r\n \"char\": \"💥\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"snowflake\": {\r\n \"keywords\": [\"winter\", \"season\", \"cold\", \"weather\", \"christmas\", \"xmas\"],\r\n \"char\": \"❄️\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"cloud_with_snow\": {\r\n \"keywords\": [\"weather\"],\r\n \"char\": \"🌨\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"snowman\": {\r\n \"keywords\": [\"winter\", \"season\", \"cold\", \"weather\", \"christmas\", \"xmas\", \"frozen\", \"without_snow\"],\r\n \"char\": \"⛄\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"snowman_with_snow\": {\r\n \"keywords\": [\"winter\", \"season\", \"cold\", \"weather\", \"christmas\", \"xmas\", \"frozen\"],\r\n \"char\": \"☃\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"wind_blowing_face\": {\r\n \"keywords\": [\"gust\", \"air\"],\r\n \"char\": \"🌬\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"dash\": {\r\n \"keywords\": [\"wind\", \"air\", \"fast\", \"shoo\", \"fart\", \"smoke\", \"puff\"],\r\n \"char\": \"💨\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"cloud_with_tornado\": {\r\n \"keywords\": [\"weather\", \"cyclone\", \"twister\"],\r\n \"char\": \"🌪\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"fog\": {\r\n \"keywords\": [\"weather\"],\r\n \"char\": \"🌫\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"umbrella_without_rain\": {\r\n \"keywords\": [\"weather\", \"spring\"],\r\n \"char\": \"☂\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"umbrella\": {\r\n \"keywords\": [\"rainy\", \"weather\", \"spring\"],\r\n \"char\": \"☔\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"droplet\": {\r\n \"keywords\": [\"water\", \"drip\", \"faucet\", \"spring\"],\r\n \"char\": \"💧\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"sweat_drops\": {\r\n \"keywords\": [\"water\", \"drip\", \"oops\"],\r\n \"char\": \"💦\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"ocean\": {\r\n \"keywords\": [\"sea\", \"water\", \"wave\", \"nature\", \"tsunami\", \"disaster\"],\r\n \"char\": \"🌊\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"green_apple\": {\r\n \"keywords\": [\"fruit\", \"nature\"],\r\n \"char\": \"🍏\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"apple\": {\r\n \"keywords\": [\"fruit\", \"mac\", \"school\"],\r\n \"char\": \"🍎\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"pear\": {\r\n \"keywords\": [\"fruit\", \"nature\", \"food\"],\r\n \"char\": \"🍐\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"tangerine\": {\r\n \"keywords\": [\"food\", \"fruit\", \"nature\", \"orange\"],\r\n \"char\": \"🍊\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"lemon\": {\r\n \"keywords\": [\"fruit\", \"nature\"],\r\n \"char\": \"🍋\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"banana\": {\r\n \"keywords\": [\"fruit\", \"food\", \"monkey\"],\r\n \"char\": \"🍌\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"watermelon\": {\r\n \"keywords\": [\"fruit\", \"food\", \"picnic\", \"summer\"],\r\n \"char\": \"🍉\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"grapes\": {\r\n \"keywords\": [\"fruit\", \"food\", \"wine\"],\r\n \"char\": \"🍇\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"strawberry\": {\r\n \"keywords\": [\"fruit\", \"food\", \"nature\"],\r\n \"char\": \"🍓\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"melon\": {\r\n \"keywords\": [\"fruit\", \"nature\", \"food\"],\r\n \"char\": \"🍈\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"cherries\": {\r\n \"keywords\": [\"food\", \"fruit\"],\r\n \"char\": \"🍒\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"peach\": {\r\n \"keywords\": [\"fruit\", \"nature\", \"food\"],\r\n \"char\": \"🍑\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"pineapple\": {\r\n \"keywords\": [\"fruit\", \"nature\", \"food\"],\r\n \"char\": \"🍍\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"tomato\": {\r\n \"keywords\": [\"fruit\", \"vegetable\", \"nature\", \"food\"],\r\n \"char\": \"🍅\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"eggplant\": {\r\n \"keywords\": [\"vegetable\", \"nature\", \"food\", \"aubergine\"],\r\n \"char\": \"🍆\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"hot_pepper\": {\r\n \"keywords\": [\"food\", \"spicy\", \"chilli\", \"chili\"],\r\n \"char\": \"🌶\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"corn\": {\r\n \"keywords\": [\"food\", \"vegetable\", \"plant\"],\r\n \"char\": \"🌽\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"sweet_potato\": {\r\n \"keywords\": [\"food\", \"nature\"],\r\n \"char\": \"🍠\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"honey_pot\": {\r\n \"keywords\": [\"bees\", \"sweet\", \"kitchen\"],\r\n \"char\": \"🍯\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"bread\": {\r\n \"keywords\": [\"food\", \"wheat\", \"breakfast\", \"toast\"],\r\n \"char\": \"🍞\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"cheese_wedge\": {\r\n \"keywords\": [\"food\", \"chadder\"],\r\n \"char\": \"🧀\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"poultry_leg\": {\r\n \"keywords\": [\"food\", \"meat\", \"drumstick\", \"bird\", \"chicken\", \"turkey\"],\r\n \"char\": \"🍗\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"meat_on_bone\": {\r\n \"keywords\": [\"good\", \"food\", \"drumstick\"],\r\n \"char\": \"🍖\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"fried_shrimp\": {\r\n \"keywords\": [\"food\", \"animal\", \"appetizer\", \"summer\"],\r\n \"char\": \"🍤\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"egg\": {\r\n \"keywords\": [\"food\", \"breakfast\", \"kitchen\"],\r\n \"char\": \"🍳\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"hamburger\": {\r\n \"keywords\": [\"meat\", \"fast food\", \"beef\", \"cheeseburger\", \"mcdonalds\", \"burger king\"],\r\n \"char\": \"🍔\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"fries\": {\r\n \"keywords\": [\"chips\", \"snack\", \"fast food\"],\r\n \"char\": \"🍟\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"hot_dog\": {\r\n \"keywords\": [\"food\", \"frankfurter\", \"hotdog\"],\r\n \"char\": \"🌭\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"pizza\": {\r\n \"keywords\": [\"food\", \"party\"],\r\n \"char\": \"🍕\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"spaghetti\": {\r\n \"keywords\": [\"food\", \"italian\", \"noodle\"],\r\n \"char\": \"🍝\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"taco\": {\r\n \"keywords\": [\"food\", \"mexican\"],\r\n \"char\": \"🌮\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"burrito\": {\r\n \"keywords\": [\"food\", \"mexican\"],\r\n \"char\": \"🌯\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"ramen\": {\r\n \"keywords\": [\"food\", \"japanese\", \"noodle\", \"chopsticks\"],\r\n \"char\": \"🍜\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"stew\": {\r\n \"keywords\": [\"food\", \"meat\", \"soup\"],\r\n \"char\": \"🍲\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"fish_cake\": {\r\n \"keywords\": [\"food\", \"japan\", \"sea\", \"beach\"],\r\n \"char\": \"🍥\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"sushi\": {\r\n \"keywords\": [\"food\", \"fish\", \"japanese\", \"rice\"],\r\n \"char\": \"🍣\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"bento\": {\r\n \"keywords\": [\"food\", \"japanese\", \"box\"],\r\n \"char\": \"🍱\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"curry\": {\r\n \"keywords\": [\"food\", \"spicy\", \"hot\", \"indian\"],\r\n \"char\": \"🍛\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"rice_ball\": {\r\n \"keywords\": [\"food\", \"japanese\"],\r\n \"char\": \"🍙\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"rice\": {\r\n \"keywords\": [\"food\", \"china\", \"asian\"],\r\n \"char\": \"🍚\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"rice_cracker\": {\r\n \"keywords\": [\"food\", \"japanese\"],\r\n \"char\": \"🍘\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"oden\": {\r\n \"keywords\": [\"food\", \"japanese\"],\r\n \"char\": \"🍢\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"dango\": {\r\n \"keywords\": [\"food\", \"dessert\", \"sweet\", \"japanese\", \"barbecue\", \"meat\"],\r\n \"char\": \"🍡\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"shaved_ice\": {\r\n \"keywords\": [\"hot\", \"dessert\", \"summer\"],\r\n \"char\": \"🍧\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"ice_cream\": {\r\n \"keywords\": [\"food\", \"hot\", \"dessert\"],\r\n \"char\": \"🍨\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"icecream\": {\r\n \"keywords\": [\"food\", \"hot\", \"dessert\", \"summer\"],\r\n \"char\": \"🍦\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"cake\": {\r\n \"keywords\": [\"food\", \"dessert\"],\r\n \"char\": \"🍰\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"birthday\": {\r\n \"keywords\": [\"food\", \"dessert\", \"cake\"],\r\n \"char\": \"🎂\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"custard\": {\r\n \"keywords\": [\"dessert\", \"food\"],\r\n \"char\": \"🍮\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"candy\": {\r\n \"keywords\": [\"snack\", \"dessert\", \"sweet\", \"lolly\"],\r\n \"char\": \"🍬\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"lollipop\": {\r\n \"keywords\": [\"food\", \"snack\", \"candy\", \"sweet\"],\r\n \"char\": \"🍭\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"chocolate_bar\": {\r\n \"keywords\": [\"food\", \"snack\", \"dessert\", \"sweet\"],\r\n \"char\": \"🍫\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"popcorn\": {\r\n \"keywords\": [\"food\", \"movie theater\", \"films\", \"snack\"],\r\n \"char\": \"🍿\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"doughnut\": {\r\n \"keywords\": [\"food\", \"dessert\", \"snack\", \"sweet\", \"donut\"],\r\n \"char\": \"🍩\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"cookie\": {\r\n \"keywords\": [\"food\", \"snack\", \"oreo\", \"chocolate\", \"sweet\", \"dessert\"],\r\n \"char\": \"🍪\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"beer\": {\r\n \"keywords\": [\"relax\", \"beverage\", \"drink\", \"drunk\", \"party\", \"pub\", \"summer\", \"alcohol\", \"booze\"],\r\n \"char\": \"🍺\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"beers\": {\r\n \"keywords\": [\"relax\", \"beverage\", \"drink\", \"drunk\", \"party\", \"pub\", \"summer\", \"alcohol\", \"booze\"],\r\n \"char\": \"🍻\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"wine_glass\": {\r\n \"keywords\": [\"drink\", \"beverage\", \"drunk\", \"alcohol\", \"booze\"],\r\n \"char\": \"🍷\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"cocktail\": {\r\n \"keywords\": [\"drink\", \"drunk\", \"alcohol\", \"beverage\", \"booze\", \"mojito\"],\r\n \"char\": \"🍸\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"tropical_drink\": {\r\n \"keywords\": [\"beverage\", \"cocktail\", \"summer\", \"beach\", \"alcohol\", \"booze\", \"mojito\"],\r\n \"char\": \"🍹\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"bottle\": {\r\n \"keywords\": [\"drink\", \"wine\", \"champagne\"],\r\n \"char\": \"🍾\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"sake\": {\r\n \"keywords\": [\"wine\", \"drink\", \"drunk\", \"beverage\", \"japanese\", \"alcohol\", \"booze\"],\r\n \"char\": \"🍶\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"tea\": {\r\n \"keywords\": [\"drink\", \"bowl\", \"breakfast\", \"green\", \"british\"],\r\n \"char\": \"🍵\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"coffee\": {\r\n \"keywords\": [\"beverage\", \"caffeine\", \"latte\", \"espresso\"],\r\n \"char\": \"☕\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"baby_bottle\": {\r\n \"keywords\": [\"food\", \"container\", \"milk\"],\r\n \"char\": \"🍼\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"fork_and_knife\": {\r\n \"keywords\": [\"cutlery\", \"kitchen\"],\r\n \"char\": \"🍴\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"fork_and_knife_with_plate\": {\r\n \"keywords\": [\"food\", \"eat\", \"meal\", \"lunch\", \"dinner\", \"restaurant\"],\r\n \"char\": \"🍽\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"soccer\": {\r\n \"keywords\": [\"sports\", \"football\"],\r\n \"char\": \"⚽\",\r\n \"category\": \"activity\"\r\n },\r\n \"basketball\": {\r\n \"keywords\": [\"sports\", \"balls\", \"NBA\"],\r\n \"char\": \"🏀\",\r\n \"category\": \"activity\"\r\n },\r\n \"football\": {\r\n \"keywords\": [\"sports\", \"balls\", \"NFL\"],\r\n \"char\": \"🏈\",\r\n \"category\": \"activity\"\r\n },\r\n \"baseball\": {\r\n \"keywords\": [\"sports\", \"balls\"],\r\n \"char\": \"⚾\",\r\n \"category\": \"activity\"\r\n },\r\n \"tennis\": {\r\n \"keywords\": [\"sports\", \"balls\", \"green\"],\r\n \"char\": \"🎾\",\r\n \"category\": \"activity\"\r\n },\r\n \"volleyball\": {\r\n \"keywords\": [\"sports\", \"balls\"],\r\n \"char\": \"🏐\",\r\n \"category\": \"activity\"\r\n },\r\n \"rugby_football\": {\r\n \"keywords\": [\"sports\", \"team\"],\r\n \"char\": \"🏉\",\r\n \"category\": \"activity\"\r\n },\r\n \"8ball\": {\r\n \"keywords\": [\"pool\", \"hobby\", \"game\", \"luck\", \"magic\"],\r\n \"char\": \"🎱\",\r\n \"category\": \"activity\"\r\n },\r\n \"golf\": {\r\n \"keywords\": [\"sports\", \"business\", \"flag\", \"hole\", \"summer\"],\r\n \"char\": \"⛳\",\r\n \"category\": \"activity\"\r\n },\r\n \"golfer\": {\r\n \"keywords\": [\"sports\", \"business\"],\r\n \"char\": \"🏌\",\r\n \"category\": \"activity\"\r\n },\r\n \"table_tennis\": {\r\n \"keywords\": [\"sports\", \"pingpong\"],\r\n \"char\": \"🏓\",\r\n \"category\": \"activity\"\r\n },\r\n \"badminton\": {\r\n \"keywords\": [\"sports\"],\r\n \"char\": \"🏸\",\r\n \"category\": \"activity\"\r\n },\r\n \"ice_hockey\": {\r\n \"keywords\": [\"sports\"],\r\n \"char\": \"🏒\",\r\n \"category\": \"activity\"\r\n },\r\n \"field_hockey\": {\r\n \"keywords\": [\"sports\"],\r\n \"char\": \"🏑\",\r\n \"category\": \"activity\"\r\n },\r\n \"cricket\": {\r\n \"keywords\": [\"sports\"],\r\n \"char\": \"🏏\",\r\n \"category\": \"activity\"\r\n },\r\n \"ski\": {\r\n \"keywords\": [\"sports\", \"winter\", \"cold\", \"snow\"],\r\n \"char\": \"🎿\",\r\n \"category\": \"activity\"\r\n },\r\n \"skier\": {\r\n \"keywords\": [\"sports\", \"winter\", \"snow\"],\r\n \"char\": \"⛷\",\r\n \"category\": \"activity\"\r\n },\r\n \"snowboarder\": {\r\n \"keywords\": [\"sports\", \"winter\"],\r\n \"char\": \"🏂\",\r\n \"category\": \"activity\"\r\n },\r\n \"ice_skate\": {\r\n \"keywords\": [\"sports\"],\r\n \"char\": \"⛸\",\r\n \"category\": \"activity\"\r\n },\r\n \"bow_and_arrow\": {\r\n \"keywords\": [\"sports\"],\r\n \"char\": \"🏹\",\r\n \"category\": \"activity\"\r\n },\r\n \"fishing_pole_and_fish\": {\r\n \"keywords\": [\"food\", \"hobby\", \"summer\"],\r\n \"char\": \"🎣\",\r\n \"category\": \"activity\"\r\n },\r\n \"rowboat\": {\r\n \"keywords\": [\"sports\", \"hobby\", \"water\", \"ship\"],\r\n \"char\": \"🚣\",\r\n \"category\": \"activity\"\r\n },\r\n \"swimmer\": {\r\n \"keywords\": [\"sports\", \"exercise\", \"human\", \"athlete\", \"water\", \"summer\"],\r\n \"char\": \"🏊\",\r\n \"category\": \"activity\"\r\n },\r\n \"surfer\": {\r\n \"keywords\": [\"sports\", \"ocean\", \"sea\", \"summer\", \"beach\"],\r\n \"char\": \"🏄\",\r\n \"category\": \"activity\"\r\n },\r\n \"bath\": {\r\n \"keywords\": [\"clean\", \"shower\", \"bathroom\"],\r\n \"char\": \"🛀\",\r\n \"category\": \"activity\"\r\n },\r\n \"person_with_ball\": {\r\n \"keywords\": [\"sports\", \"human\"],\r\n \"char\": \"⛹\",\r\n \"category\": \"activity\"\r\n },\r\n \"weight_lifter\": {\r\n \"keywords\": [\"sports\", \"training\", \"exercise\"],\r\n \"char\": \"🏋\",\r\n \"category\": \"activity\"\r\n },\r\n \"bicyclist\": {\r\n \"keywords\": [\"sports\", \"bike\", \"exercise\", \"hipster\"],\r\n \"char\": \"🚴\",\r\n \"category\": \"activity\"\r\n },\r\n \"mountain_bicyclist\": {\r\n \"keywords\": [\"transportation\", \"sports\", \"human\", \"race\", \"bike\"],\r\n \"char\": \"🚵\",\r\n \"category\": \"activity\"\r\n },\r\n \"horse_racing\": {\r\n \"keywords\": [\"animal\", \"betting\", \"competition\", \"gambling\", \"luck\"],\r\n \"char\": \"🏇\",\r\n \"category\": \"activity\"\r\n },\r\n \"man_levitating\": {\r\n \"keywords\": [\"suit\", \"business\", \"levitate\", \"hover\", \"jump\"],\r\n \"char\": \"🕴\",\r\n \"category\": \"activity\"\r\n },\r\n \"trophy\": {\r\n \"keywords\": [\"win\", \"award\", \"contest\", \"place\", \"ftw\", \"ceremony\"],\r\n \"char\": \"🏆\",\r\n \"category\": \"activity\"\r\n },\r\n \"running_shirt_with_sash\": {\r\n \"keywords\": [\"play\", \"pageant\"],\r\n \"char\": \"🎽\",\r\n \"category\": \"activity\"\r\n },\r\n \"sports_medal\": {\r\n \"keywords\": [\"award\", \"winning\"],\r\n \"char\": \"🏅\",\r\n \"category\": \"activity\"\r\n },\r\n \"military_medal\": {\r\n \"keywords\": [\"award\", \"winning\", \"army\"],\r\n \"char\": \"🎖\",\r\n \"category\": \"activity\"\r\n },\r\n \"reminder_ribbon\": {\r\n \"keywords\": [\"sports\", \"cause\", \"support\", \"awareness\"],\r\n \"char\": \"🎗\",\r\n \"category\": \"activity\"\r\n },\r\n \"rosette\": {\r\n \"keywords\": [\"flower\", \"decoration\", \"military\"],\r\n \"char\": \"🏵\",\r\n \"category\": \"activity\"\r\n },\r\n \"ticket\": {\r\n \"keywords\": [\"event\", \"concert\", \"pass\"],\r\n \"char\": \"🎫\",\r\n \"category\": \"activity\"\r\n },\r\n \"admission_ticket\": {\r\n \"keywords\": [\"sports\", \"concert\", \"entrance\"],\r\n \"char\": \"🎟\",\r\n \"category\": \"activity\"\r\n },\r\n \"performing_arts\": {\r\n \"keywords\": [\"acting\", \"theater\", \"drama\"],\r\n \"char\": \"🎭\",\r\n \"category\": \"activity\"\r\n },\r\n \"art\": {\r\n \"keywords\": [\"design\", \"paint\", \"draw\", \"colors\"],\r\n \"char\": \"🎨\",\r\n \"category\": \"activity\"\r\n },\r\n \"circus_tent\": {\r\n \"keywords\": [\"festival\", \"carnival\", \"party\"],\r\n \"char\": \"🎪\",\r\n \"category\": \"activity\"\r\n },\r\n \"microphone\": {\r\n \"keywords\": [\"sound\", \"music\", \"PA\"],\r\n \"char\": \"🎤\",\r\n \"category\": \"activity\"\r\n },\r\n \"headphones\": {\r\n \"keywords\": [\"music\", \"score\", \"gadgets\"],\r\n \"char\": \"🎧\",\r\n \"category\": \"activity\"\r\n },\r\n \"musical_score\": {\r\n \"keywords\": [\"treble\", \"clef\"],\r\n \"char\": \"🎼\",\r\n \"category\": \"activity\"\r\n },\r\n \"musical_keyboard\": {\r\n \"keywords\": [\"piano\", \"instrument\"],\r\n \"char\": \"🎹\",\r\n \"category\": \"activity\"\r\n },\r\n \"saxophone\": {\r\n \"keywords\": [\"music\", \"instrument\", \"jazz\", \"blues\"],\r\n \"char\": \"🎷\",\r\n \"category\": \"activity\"\r\n },\r\n \"trumpet\": {\r\n \"keywords\": [\"music\", \"brass\"],\r\n \"char\": \"🎺\",\r\n \"category\": \"activity\"\r\n },\r\n \"guitar\": {\r\n \"keywords\": [\"music\", \"instrument\"],\r\n \"char\": \"🎸\",\r\n \"category\": \"activity\"\r\n },\r\n \"violin\": {\r\n \"keywords\": [\"music\", \"instrument\", \"orchestra\", \"symphony\"],\r\n \"char\": \"🎻\",\r\n \"category\": \"activity\"\r\n },\r\n \"clapper\": {\r\n \"keywords\": [\"movie\", \"film\", \"record\"],\r\n \"char\": \"🎬\",\r\n \"category\": \"activity\"\r\n },\r\n \"video_game\": {\r\n \"keywords\": [\"play\", \"console\", \"PS4\", \"controller\"],\r\n \"char\": \"🎮\",\r\n \"category\": \"activity\"\r\n },\r\n \"space_invader\": {\r\n \"keywords\": [\"game\", \"arcade\", \"play\"],\r\n \"char\": \"👾\",\r\n \"category\": \"activity\"\r\n },\r\n \"dart\": {\r\n \"keywords\": [\"game\", \"play\", \"bar\"],\r\n \"char\": \"🎯\",\r\n \"category\": \"activity\"\r\n },\r\n \"game_die\": {\r\n \"keywords\": [\"dice\", \"random\", \"tabletop\", \"play\", \"luck\"],\r\n \"char\": \"🎲\",\r\n \"category\": \"activity\"\r\n },\r\n \"slot_machine\": {\r\n \"keywords\": [\"bet\", \"gamble\", \"vegas\", \"fruit machine\", \"luck\", \"casino\"],\r\n \"char\": \"🎰\",\r\n \"category\": \"activity\"\r\n },\r\n \"bowling\": {\r\n \"keywords\": [\"sports\", \"fun\", \"play\"],\r\n \"char\": \"🎳\",\r\n \"category\": \"activity\"\r\n },\r\n \"car\": {\r\n \"keywords\": [\"red\", \"transportation\", \"vehicle\"],\r\n \"char\": \"🚗\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"taxi\": {\r\n \"keywords\": [\"uber\", \"vehicle\", \"cars\", \"transportation\"],\r\n \"char\": \"🚕\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"blue_car\": {\r\n \"keywords\": [\"transportation\", \"vehicle\"],\r\n \"char\": \"🚙\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"bus\": {\r\n \"keywords\": [\"car\", \"vehicle\", \"transportation\"],\r\n \"char\": \"🚌\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"trolleybus\": {\r\n \"keywords\": [\"bart\", \"transportation\", \"vehicle\"],\r\n \"char\": \"🚎\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"racing_car\": {\r\n \"keywords\": [\"sports\", \"race\", \"fast\", \"formula\", \"f1\"],\r\n \"char\": \"🏎\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"police_car\": {\r\n \"keywords\": [\"vehicle\", \"cars\", \"transportation\", \"law\", \"legal\", \"enforcement\"],\r\n \"char\": \"🚓\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"ambulance\": {\r\n \"keywords\": [\"health\", \"911\", \"hospital\"],\r\n \"char\": \"🚑\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"fire_engine\": {\r\n \"keywords\": [\"transportation\", \"cars\", \"vehicle\"],\r\n \"char\": \"🚒\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"minibus\": {\r\n \"keywords\": [\"vehicle\", \"car\", \"transportation\"],\r\n \"char\": \"🚐\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"truck\": {\r\n \"keywords\": [\"cars\", \"transportation\"],\r\n \"char\": \"🚚\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"articulated_lorry\": {\r\n \"keywords\": [\"vehicle\", \"cars\", \"transportation\", \"express\"],\r\n \"char\": \"🚛\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"tractor\": {\r\n \"keywords\": [\"vehicle\", \"car\", \"farming\", \"agriculture\"],\r\n \"char\": \"🚜\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"racing_motorcycle\": {\r\n \"keywords\": [\"race\", \"sports\", \"fast\"],\r\n \"char\": \"🏍\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"bike\": {\r\n \"keywords\": [\"sports\", \"bicycle\", \"exercise\", \"hipster\"],\r\n \"char\": \"🚲\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"rotating_light\": {\r\n \"keywords\": [\"police\", \"ambulance\", \"911\", \"emergency\", \"alert\", \"error\", \"pinged\", \"law\", \"legal\"],\r\n \"char\": \"🚨\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"oncoming_police_car\": {\r\n \"keywords\": [\"vehicle\", \"law\", \"legal\", \"enforcement\", \"911\"],\r\n \"char\": \"🚔\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"oncoming_bus\": {\r\n \"keywords\": [\"vehicle\", \"transportation\"],\r\n \"char\": \"🚍\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"oncoming_automobile\": {\r\n \"keywords\": [\"car\", \"vehicle\", \"transportation\"],\r\n \"char\": \"🚘\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"oncoming_taxi\": {\r\n \"keywords\": [\"vehicle\", \"cars\", \"uber\"],\r\n \"char\": \"🚖\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"aerial_tramway\": {\r\n \"keywords\": [\"transportation\", \"vehicle\", \"ski\"],\r\n \"char\": \"🚡\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"mountain_cableway\": {\r\n \"keywords\": [\"transportation\", \"vehicle\", \"ski\"],\r\n \"char\": \"🚠\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"suspension_railway\": {\r\n \"keywords\": [\"vehicle\", \"transportation\"],\r\n \"char\": \"🚟\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"railway_car\": {\r\n \"keywords\": [\"transportation\", \"vehicle\"],\r\n \"char\": \"🚃\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"train\": {\r\n \"keywords\": [\"transportation\", \"vehicle\", \"carriage\", \"public\", \"travel\"],\r\n \"char\": \"🚋\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"monorail\": {\r\n \"keywords\": [\"transportation\", \"vehicle\"],\r\n \"char\": \"🚝\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"bullettrain_side\": {\r\n \"keywords\": [\"transportation\", \"vehicle\"],\r\n \"char\": \"🚄\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"bullettrain_front\": {\r\n \"keywords\": [\"transportation\", \"vehicle\", \"speed\", \"fast\", \"public\", \"travel\"],\r\n \"char\": \"🚅\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"light_rail\": {\r\n \"keywords\": [\"transportation\", \"vehicle\"],\r\n \"char\": \"🚈\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"mountain_railway\": {\r\n \"keywords\": [\"transportation\", \"vehicle\"],\r\n \"char\": \"🚞\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"steam_locomotive\": {\r\n \"keywords\": [\"transportation\", \"vehicle\", \"train\"],\r\n \"char\": \"🚂\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"train2\": {\r\n \"keywords\": [\"transportation\", \"vehicle\"],\r\n \"char\": \"🚆\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"metro\": {\r\n \"keywords\": [\"transportation\", \"blue-square\", \"mrt\", \"underground\", \"tube\"],\r\n \"char\": \"🚇\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"tram\": {\r\n \"keywords\": [\"transportation\", \"vehicle\"],\r\n \"char\": \"🚊\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"station\": {\r\n \"keywords\": [\"transportation\", \"vehicle\", \"public\"],\r\n \"char\": \"🚉\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"helicopter\": {\r\n \"keywords\": [\"transportation\", \"vehicle\", \"fly\"],\r\n \"char\": \"🚁\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"small_airplane\": {\r\n \"keywords\": [\"flight\", \"transportation\", \"fly\", \"vehicle\"],\r\n \"char\": \"🛩\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"airplane\": {\r\n \"keywords\": [\"vehicle\", \"transportation\", \"flight\", \"fly\"],\r\n \"char\": \"✈️\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"airplane_departure\": {\r\n \"keywords\": [\"airport\", \"flight\", \"landing\"],\r\n \"char\": \"🛫\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"airplane_arrival\": {\r\n \"keywords\": [\"airport\", \"flight\", \"boarding\"],\r\n \"char\": \"🛬\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"boat\": {\r\n \"keywords\": [\"ship\", \"summer\", \"transportation\", \"water\", \"sailing\", \"sailboat\"],\r\n \"char\": \"⛵\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"motor_boat\": {\r\n \"keywords\": [\"ship\"],\r\n \"char\": \"🛥\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"speedboat\": {\r\n \"keywords\": [\"ship\", \"transportation\", \"vehicle\", \"summer\"],\r\n \"char\": \"🚤\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"ferry\": {\r\n \"keywords\": [\"boat\", \"ship\", \"yacht\"],\r\n \"char\": \"⛴\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"passenger_ship\": {\r\n \"keywords\": [\"yacht\", \"cruise\", \"ferry\"],\r\n \"char\": \"🛳\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"rocket\": {\r\n \"keywords\": [\"launch\", \"ship\", \"staffmode\", \"NASA\", \"outer space\", \"outer_space\", \"fly\"],\r\n \"char\": \"🚀\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"artificial_satellite\": {\r\n \"keywords\": [\"communication\", \"gps\", \"orbit\", \"spaceflight\", \"NASA\", \"ISS\"],\r\n \"char\": \"🛰\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"seat\": {\r\n \"keywords\": [\"sit\", \"airplane\", \"transport\", \"bus\", \"flight\", \"fly\"],\r\n \"char\": \"💺\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"anchor\": {\r\n \"keywords\": [\"ship\", \"ferry\", \"sea\", \"boat\"],\r\n \"char\": \"⚓\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"construction\": {\r\n \"keywords\": [\"wip\", \"progress\", \"caution\", \"warning\"],\r\n \"char\": \"🚧\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"fuelpump\": {\r\n \"keywords\": [\"gas station\", \"petroleum\"],\r\n \"char\": \"⛽\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"busstop\": {\r\n \"keywords\": [\"transportation\", \"wait\"],\r\n \"char\": \"🚏\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"vertical_traffic_light\": {\r\n \"keywords\": [\"transportation\", \"driving\"],\r\n \"char\": \"🚦\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"traffic_light\": {\r\n \"keywords\": [\"transportation\", \"signal\"],\r\n \"char\": \"🚥\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"checkered_flag\": {\r\n \"keywords\": [\"contest\", \"finishline\", \"race\", \"gokart\"],\r\n \"char\": \"🏁\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"ship\": {\r\n \"keywords\": [\"transportation\", \"titanic\", \"deploy\"],\r\n \"char\": \"🚢\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"ferris_wheel\": {\r\n \"keywords\": [\"photo\", \"carnival\", \"londoneye\"],\r\n \"char\": \"🎡\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"roller_coaster\": {\r\n \"keywords\": [\"carnival\", \"playground\", \"photo\", \"fun\"],\r\n \"char\": \"🎢\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"carousel_horse\": {\r\n \"keywords\": [\"photo\", \"carnival\"],\r\n \"char\": \"🎠\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"building_construction\": {\r\n \"keywords\": [\"wip\", \"working\", \"progress\"],\r\n \"char\": \"🏗\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"foggy\": {\r\n \"keywords\": [\"photo\", \"mountain\"],\r\n \"char\": \"🌁\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"tokyo_tower\": {\r\n \"keywords\": [\"photo\", \"japanese\"],\r\n \"char\": \"🗼\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"factory\": {\r\n \"keywords\": [\"building\", \"industry\", \"pollution\", \"smoke\"],\r\n \"char\": \"🏭\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"fountain\": {\r\n \"keywords\": [\"photo\", \"summer\", \"water\", \"fresh\"],\r\n \"char\": \"⛲\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"rice_scene\": {\r\n \"keywords\": [\"photo\", \"japan\", \"asia\", \"tsukimi\"],\r\n \"char\": \"🎑\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"mountain\": {\r\n \"keywords\": [\"photo\", \"nature\", \"environment\"],\r\n \"char\": \"⛰\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"snow_capped_mountain\": {\r\n \"keywords\": [\"photo\", \"nature\", \"environment\", \"winter\", \"cold\"],\r\n \"char\": \"🏔\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"mount_fuji\": {\r\n \"keywords\": [\"photo\", \"mountain\", \"nature\", \"japanese\"],\r\n \"char\": \"🗻\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"volcano\": {\r\n \"keywords\": [\"photo\", \"nature\", \"disaster\"],\r\n \"char\": \"🌋\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"japan\": {\r\n \"keywords\": [\"nation\", \"country\", \"japanese\", \"asia\"],\r\n \"char\": \"🗾\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"camping\": {\r\n \"keywords\": [\"photo\", \"outdoors\", \"tent\"],\r\n \"char\": \"🏕\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"tent\": {\r\n \"keywords\": [\"photo\", \"camping\", \"outdoors\"],\r\n \"char\": \"⛺\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"national_park\": {\r\n \"keywords\": [\"photo\", \"environment\", \"nature\"],\r\n \"char\": \"🏞\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"motorway\": {\r\n \"keywords\": [\"road\", \"cupertino\", \"interstate\", \"highway\"],\r\n \"char\": \"🛣\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"railway_track\": {\r\n \"keywords\": [\"train\", \"transportation\"],\r\n \"char\": \"🛤\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"sunrise\": {\r\n \"keywords\": [\"morning\", \"view\", \"vacation\", \"photo\"],\r\n \"char\": \"🌅\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"sunrise_over_mountains\": {\r\n \"keywords\": [\"view\", \"vacation\", \"photo\"],\r\n \"char\": \"🌄\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"desert\": {\r\n \"keywords\": [\"photo\", \"warm\", \"saharah\"],\r\n \"char\": \"🏜\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"beach_with_umbrella\": {\r\n \"keywords\": [\"weather\", \"summer\", \"sunny\", \"sand\", \"mojito\"],\r\n \"char\": \"🏖\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"desert_island\": {\r\n \"keywords\": [\"photo\", \"tropical\", \"mojito\"],\r\n \"char\": \"🏝\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"city_sunrise\": {\r\n \"keywords\": [\"photo\", \"good morning\", \"dawn\"],\r\n \"char\": \"🌇\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"city_sunset\": {\r\n \"keywords\": [\"photo\", \"evening\", \"sky\", \"buildings\"],\r\n \"char\": \"🌆\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"cityscape\": {\r\n \"keywords\": [\"photo\", \"night life\", \"urban\"],\r\n \"char\": \"🏙\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"night_with_stars\": {\r\n \"keywords\": [\"evening\", \"city\", \"downtown\"],\r\n \"char\": \"🌃\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"bridge_at_night\": {\r\n \"keywords\": [\"photo\", \"sanfrancisco\"],\r\n \"char\": \"🌉\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"milky_way\": {\r\n \"keywords\": [\"photo\", \"space\", \"stars\"],\r\n \"char\": \"🌌\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"stars\": {\r\n \"keywords\": [\"night\", \"photo\"],\r\n \"char\": \"🌠\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"sparkler\": {\r\n \"keywords\": [\"stars\", \"night\", \"shine\"],\r\n \"char\": \"🎇\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"fireworks\": {\r\n \"keywords\": [\"photo\", \"festival\", \"carnival\", \"congratulations\"],\r\n \"char\": \"🎆\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"rainbow\": {\r\n \"keywords\": [\"nature\", \"happy\", \"unicorn\", \"photo\", \"sky\", \"spring\"],\r\n \"char\": \"🌈\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"buildings\": {\r\n \"keywords\": [\"houses\", \"photo\"],\r\n \"char\": \"🏘\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"european_castle\": {\r\n \"keywords\": [\"building\", \"royalty\", \"history\"],\r\n \"char\": \"🏰\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"japanese_castle\": {\r\n \"keywords\": [\"photo\", \"building\"],\r\n \"char\": \"🏯\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"stadium\": {\r\n \"keywords\": [\"photo\", \"place\", \"sports\", \"concert\", \"venue\"],\r\n \"char\": \"🏟\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"statue_of_liberty\": {\r\n \"keywords\": [\"american\", \"newyork\"],\r\n \"char\": \"🗽\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"house\": {\r\n \"keywords\": [\"building\", \"home\"],\r\n \"char\": \"🏠\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"house_with_garden\": {\r\n \"keywords\": [\"home\", \"plant\", \"nature\"],\r\n \"char\": \"🏡\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"derelict_house\": {\r\n \"keywords\": [\"abandon\", \"evict\", \"broken\", \"building\"],\r\n \"char\": \"🏚\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"office\": {\r\n \"keywords\": [\"building\", \"bureau\", \"work\"],\r\n \"char\": \"🏢\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"department_store\": {\r\n \"keywords\": [\"building\", \"shopping\", \"mall\"],\r\n \"char\": \"🏬\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"post_office\": {\r\n \"keywords\": [\"building\", \"email\", \"communication\"],\r\n \"char\": \"🏣\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"european_post_office\": {\r\n \"keywords\": [\"building\", \"email\"],\r\n \"char\": \"🏤\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"hospital\": {\r\n \"keywords\": [\"building\", \"health\", \"surgery\", \"doctor\"],\r\n \"char\": \"🏥\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"bank\": {\r\n \"keywords\": [\"building\", \"money\", \"sales\", \"cash\", \"business\", \"enterprise\"],\r\n \"char\": \"🏦\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"hotel\": {\r\n \"keywords\": [\"building\", \"accomodation\", \"checkin\"],\r\n \"char\": \"🏨\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"convenience_store\": {\r\n \"keywords\": [\"building\", \"shopping\", \"groceries\"],\r\n \"char\": \"🏪\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"school\": {\r\n \"keywords\": [\"building\", \"student\", \"education\", \"learn\", \"teach\"],\r\n \"char\": \"🏫\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"love_hotel\": {\r\n \"keywords\": [\"like\", \"affection\", \"dating\"],\r\n \"char\": \"🏩\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"wedding\": {\r\n \"keywords\": [\"love\", \"like\", \"affection\", \"couple\", \"marriage\", \"bride\", \"groom\"],\r\n \"char\": \"💒\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"museum\": {\r\n \"keywords\": [\"art\", \"culture\", \"history\"],\r\n \"char\": \"🏛\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"church\": {\r\n \"keywords\": [\"building\", \"religion\", \"christ\"],\r\n \"char\": \"⛪\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"mosque\": {\r\n \"keywords\": [\"islam\", \"worship\", \"minaret\"],\r\n \"char\": \"🕌\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"synagogue\": {\r\n \"keywords\": [\"judaism\", \"worship\", \"temple\", \"jewish\"],\r\n \"char\": \"🕍\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"kaaba\": {\r\n \"keywords\": [\"mecca\", \"mosque\", \"islam\"],\r\n \"char\": \"🕋\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"shinto_shrine\": {\r\n \"keywords\": [\"temple\", \"japan\", \"kyoto\"],\r\n \"char\": \"⛩\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"watch\": {\r\n \"keywords\": [\"time\", \"accessories\"],\r\n \"char\": \"⌚\",\r\n \"category\": \"objects\"\r\n },\r\n \"iphone\": {\r\n \"keywords\": [\"technology\", \"apple\", \"gadgets\", \"dial\"],\r\n \"char\": \"📱\",\r\n \"category\": \"objects\"\r\n },\r\n \"calling\": {\r\n \"keywords\": [\"iphone\", \"incoming\"],\r\n \"char\": \"📲\",\r\n \"category\": \"objects\"\r\n },\r\n \"computer\": {\r\n \"keywords\": [\"technology\", \"laptop\", \"screen\", \"display\", \"monitor\"],\r\n \"char\": \"💻\",\r\n \"category\": \"objects\"\r\n },\r\n \"keyboard\": {\r\n \"keywords\": [\"technology\", \"computer\", \"type\", \"input\", \"text\"],\r\n \"char\": \"⌨\",\r\n \"category\": \"objects\"\r\n },\r\n \"desktop_computer\": {\r\n \"keywords\": [\"technology\", \"computing\", \"screen\"],\r\n \"char\": \"🖥\",\r\n \"category\": \"objects\"\r\n },\r\n \"printer\": {\r\n \"keywords\": [\"paper\", \"ink\"],\r\n \"char\": \"🖨\",\r\n \"category\": \"objects\"\r\n },\r\n \"three_button_mouse\": {\r\n \"keywords\": [\"click\"],\r\n \"char\": \"🖱\",\r\n \"category\": \"objects\"\r\n },\r\n \"trackball\": {\r\n \"keywords\": [\"technology\", \"trackpad\"],\r\n \"char\": \"🖲\",\r\n \"category\": \"objects\"\r\n },\r\n \"joystick\": {\r\n \"keywords\": [\"game\", \"play\"],\r\n \"char\": \"🕹\",\r\n \"category\": \"objects\"\r\n },\r\n \"compression\": {\r\n \"keywords\": [\"tool\"],\r\n \"char\": \"🗜\",\r\n \"category\": \"objects\"\r\n },\r\n \"minidisc\": {\r\n \"keywords\": [\"technology\", \"record\", \"data\", \"disk\", \"90s\"],\r\n \"char\": \"💽\",\r\n \"category\": \"objects\"\r\n },\r\n \"floppy_disk\": {\r\n \"keywords\": [\"oldschool\", \"technology\", \"save\", \"90s\", \"80s\"],\r\n \"char\": \"💾\",\r\n \"category\": \"objects\"\r\n },\r\n \"cd\": {\r\n \"keywords\": [\"technology\", \"dvd\", \"disk\", \"disc\", \"90s\"],\r\n \"char\": \"💿\",\r\n \"category\": \"objects\"\r\n },\r\n \"dvd\": {\r\n \"keywords\": [\"cd\", \"disk\", \"disc\"],\r\n \"char\": \"📀\",\r\n \"category\": \"objects\"\r\n },\r\n \"vhs\": {\r\n \"keywords\": [\"record\", \"video\", \"oldschool\", \"90s\", \"80s\"],\r\n \"char\": \"📼\",\r\n \"category\": \"objects\"\r\n },\r\n \"camera\": {\r\n \"keywords\": [\"gadgets\", \"photography\"],\r\n \"char\": \"📷\",\r\n \"category\": \"objects\"\r\n },\r\n \"camera_with_flash\": {\r\n \"keywords\": [\"photography\", \"gadgets\"],\r\n \"char\": \"📸\",\r\n \"category\": \"objects\"\r\n },\r\n \"video_camera\": {\r\n \"keywords\": [\"film\", \"record\"],\r\n \"char\": \"📹\",\r\n \"category\": \"objects\"\r\n },\r\n \"movie_camera\": {\r\n \"keywords\": [\"film\", \"record\"],\r\n \"char\": \"🎥\",\r\n \"category\": \"objects\"\r\n },\r\n \"film_projector\": {\r\n \"keywords\": [\"video\", \"tape\", \"record\", \"movie\"],\r\n \"char\": \"📽\",\r\n \"category\": \"objects\"\r\n },\r\n \"film_frames\": {\r\n \"keywords\": [\"movie\"],\r\n \"char\": \"🎞\",\r\n \"category\": \"objects\"\r\n },\r\n \"telephone_receiver\": {\r\n \"keywords\": [\"technology\", \"communication\", \"dial\"],\r\n \"char\": \"📞\",\r\n \"category\": \"objects\"\r\n },\r\n \"phone\": {\r\n \"keywords\": [\"technology\", \"communication\", \"dial\", \"telephone\"],\r\n \"char\": \"☎️\",\r\n \"category\": \"objects\"\r\n },\r\n \"pager\": {\r\n \"keywords\": [\"bbcall\", \"oldschool\", \"90s\"],\r\n \"char\": \"📟\",\r\n \"category\": \"objects\"\r\n },\r\n \"fax\": {\r\n \"keywords\": [\"communication\", \"technology\"],\r\n \"char\": \"📠\",\r\n \"category\": \"objects\"\r\n },\r\n \"tv\": {\r\n \"keywords\": [\"technology\", \"program\", \"oldschool\", \"show\", \"television\"],\r\n \"char\": \"📺\",\r\n \"category\": \"objects\"\r\n },\r\n \"radio\": {\r\n \"keywords\": [\"communication\", \"music\", \"podcast\", \"program\"],\r\n \"char\": \"📻\",\r\n \"category\": \"objects\"\r\n },\r\n \"studio_microphone\": {\r\n \"keywords\": [\"singer\", \"recording\", \"artist\"],\r\n \"char\": \"🎙\",\r\n \"category\": \"objects\"\r\n },\r\n \"level_slider\": {\r\n \"keywords\": [\"scale\"],\r\n \"char\": \"🎚\",\r\n \"category\": \"objects\"\r\n },\r\n \"control_knobs\": {\r\n \"keywords\": [\"dial\"],\r\n \"char\": \"🎛\",\r\n \"category\": \"objects\"\r\n },\r\n \"stopwatch\": {\r\n \"keywords\": [\"time\", \"deadline\"],\r\n \"char\": \"⏱\",\r\n \"category\": \"objects\"\r\n },\r\n \"timer_clock\": {\r\n \"keywords\": [\"alarm\"],\r\n \"char\": \"⏲\",\r\n \"category\": \"objects\"\r\n },\r\n \"alarm_clock\": {\r\n \"keywords\": [\"time\", \"wake\"],\r\n \"char\": \"⏰\",\r\n \"category\": \"objects\"\r\n },\r\n \"mantelpiece_clock\": {\r\n \"keywords\": [\"time\"],\r\n \"char\": \"🕰\",\r\n \"category\": \"objects\"\r\n },\r\n \"hourglass_flowing_sand\": {\r\n \"keywords\": [\"oldschool\", \"time\", \"countdown\"],\r\n \"char\": \"⏳\",\r\n \"category\": \"objects\"\r\n },\r\n \"hourglass\": {\r\n \"keywords\": [\"time\", \"clock\", \"oldschool\", \"limit\", \"exam\", \"quiz\", \"test\"],\r\n \"char\": \"⌛\",\r\n \"category\": \"objects\"\r\n },\r\n \"satellite\": {\r\n \"keywords\": [\"communication\", \"future\", \"radio\", \"space\"],\r\n \"char\": \"📡\",\r\n \"category\": \"objects\"\r\n },\r\n \"battery\": {\r\n \"keywords\": [\"power\", \"energy\", \"sustain\"],\r\n \"char\": \"🔋\",\r\n \"category\": \"objects\"\r\n },\r\n \"electric_plug\": {\r\n \"keywords\": [\"charger\", \"power\"],\r\n \"char\": \"🔌\",\r\n \"category\": \"objects\"\r\n },\r\n \"bulb\": {\r\n \"keywords\": [\"light\", \"electricity\", \"idea\"],\r\n \"char\": \"💡\",\r\n \"category\": \"objects\"\r\n },\r\n \"flashlight\": {\r\n \"keywords\": [\"dark\", \"camping\", \"sight\", \"night\"],\r\n \"char\": \"🔦\",\r\n \"category\": \"objects\"\r\n },\r\n \"candle\": {\r\n \"keywords\": [\"fire\", \"wax\"],\r\n \"char\": \"🕯\",\r\n \"category\": \"objects\"\r\n },\r\n \"wastebasket\": {\r\n \"keywords\": [\"bin\", \"trash\", \"rubbish\", \"garbage\", \"toss\"],\r\n \"char\": \"🗑\",\r\n \"category\": \"objects\"\r\n },\r\n \"oil_drum\": {\r\n \"keywords\": [\"barrell\"],\r\n \"char\": \"🛢\",\r\n \"category\": \"objects\"\r\n },\r\n \"money_with_wings\": {\r\n \"keywords\": [\"dollar\", \"bills\", \"payment\", \"sale\"],\r\n \"char\": \"💸\",\r\n \"category\": \"objects\"\r\n },\r\n \"dollar\": {\r\n \"keywords\": [\"money\", \"sales\", \"bill\", \"currency\"],\r\n \"char\": \"💵\",\r\n \"category\": \"objects\"\r\n },\r\n \"yen\": {\r\n \"keywords\": [\"money\", \"sales\", \"japanese\", \"dollar\", \"currency\"],\r\n \"char\": \"💴\",\r\n \"category\": \"objects\"\r\n },\r\n \"euro\": {\r\n \"keywords\": [\"money\", \"sales\", \"dollar\", \"currency\"],\r\n \"char\": \"💶\",\r\n \"category\": \"objects\"\r\n },\r\n \"pound\": {\r\n \"keywords\": [\"british\", \"sterling\", \"money\", \"sales\", \"bills\", \"uk\", \"england\", \"currency\"],\r\n \"char\": \"💷\",\r\n \"category\": \"objects\"\r\n },\r\n \"moneybag\": {\r\n \"keywords\": [\"dollar\", \"payment\", \"coins\", \"sale\"],\r\n \"char\": \"💰\",\r\n \"category\": \"objects\"\r\n },\r\n \"credit_card\": {\r\n \"keywords\": [\"money\", \"sales\", \"dollar\", \"bill\", \"payment\", \"shopping\"],\r\n \"char\": \"💳\",\r\n \"category\": \"objects\"\r\n },\r\n \"gem\": {\r\n \"keywords\": [\"blue\", \"ruby\", \"diamond\", \"jewelry\"],\r\n \"char\": \"💎\",\r\n \"category\": \"objects\"\r\n },\r\n \"scales\": {\r\n \"keywords\": [\"law\", \"fairness\", \"weight\"],\r\n \"char\": \"⚖\",\r\n \"category\": \"objects\"\r\n },\r\n \"wrench\": {\r\n \"keywords\": [\"tools\", \"diy\", \"ikea\", \"fix\", \"maintainer\"],\r\n \"char\": \"🔧\",\r\n \"category\": \"objects\"\r\n },\r\n \"hammer\": {\r\n \"keywords\": [\"tools\", \"build\", \"create\"],\r\n \"char\": \"🔨\",\r\n \"category\": \"objects\"\r\n },\r\n \"hammer_and_pick\": {\r\n \"keywords\": [\"tools\", \"build\", \"create\"],\r\n \"char\": \"⚒\",\r\n \"category\": \"objects\"\r\n },\r\n \"hammer_and_wrench\": {\r\n \"keywords\": [\"tools\", \"build\", \"create\"],\r\n \"char\": \"🛠\",\r\n \"category\": \"objects\"\r\n },\r\n \"pick\": {\r\n \"keywords\": [\"tools\", \"dig\"],\r\n \"char\": \"⛏\",\r\n \"category\": \"objects\"\r\n },\r\n \"nut_and_bolt\": {\r\n \"keywords\": [\"handy\", \"tools\", \"fix\"],\r\n \"char\": \"🔩\",\r\n \"category\": \"objects\"\r\n },\r\n \"gear\": {\r\n \"keywords\": [\"cog\"],\r\n \"char\": \"⚙\",\r\n \"category\": \"objects\"\r\n },\r\n \"chains\": {\r\n \"keywords\": [\"lock\", \"arrest\"],\r\n \"char\": \"⛓\",\r\n \"category\": \"objects\"\r\n },\r\n \"gun\": {\r\n \"keywords\": [\"violence\", \"weapon\", \"pistol\", \"revolver\"],\r\n \"char\": \"🔫\",\r\n \"category\": \"objects\"\r\n },\r\n \"bomb\": {\r\n \"keywords\": [\"boom\", \"explode\", \"explosion\", \"terrorism\"],\r\n \"char\": \"💣\",\r\n \"category\": \"objects\"\r\n },\r\n \"hocho\": {\r\n \"keywords\": [\"knife\", \"blade\", \"cutlery\", \"kitchen\", \"weapon\"],\r\n \"char\": \"🔪\",\r\n \"category\": \"objects\"\r\n },\r\n \"dagger_knife\": {\r\n \"keywords\": [\"weapon\"],\r\n \"char\": \"🗡\",\r\n \"category\": \"objects\"\r\n },\r\n \"crossed_swords\": {\r\n \"keywords\": [\"weapon\"],\r\n \"char\": \"⚔\",\r\n \"category\": \"objects\"\r\n },\r\n \"shield\": {\r\n \"keywords\": [\"protection\", \"security\"],\r\n \"char\": \"🛡\",\r\n \"category\": \"objects\"\r\n },\r\n \"smoking\": {\r\n \"keywords\": [\"kills\", \"tobacco\", \"cigarette\", \"joint\", \"smoke\"],\r\n \"char\": \"🚬\",\r\n \"category\": \"objects\"\r\n },\r\n \"skull_and_crossbones\": {\r\n \"keywords\": [\"poison\", \"danger\", \"deadly\", \"scary\"],\r\n \"char\": \"☠\",\r\n \"category\": \"objects\"\r\n },\r\n \"coffin\": {\r\n \"keywords\": [\"vampire\", \"dead\", \"die\", \"death\", \"rip\", \"graveyard\", \"cemetery\"],\r\n \"char\": \"⚰\",\r\n \"category\": \"objects\"\r\n },\r\n \"funeral_urn\": {\r\n \"keywords\": [\"dead\", \"die\", \"death\", \"rip\", \"ashes\"],\r\n \"char\": \"⚱\",\r\n \"category\": \"objects\"\r\n },\r\n \"amphora\": {\r\n \"keywords\": [\"vase\", \"jar\"],\r\n \"char\": \"🏺\",\r\n \"category\": \"objects\"\r\n },\r\n \"crystal_ball\": {\r\n \"keywords\": [\"disco\", \"party\", \"magic\", \"circus\", \"fortune_teller\"],\r\n \"char\": \"🔮\",\r\n \"category\": \"objects\"\r\n },\r\n \"prayer_beads\": {\r\n \"keywords\": [\"dhikr\", \"religious\"],\r\n \"char\": \"📿\",\r\n \"category\": \"objects\"\r\n },\r\n \"barber\": {\r\n \"keywords\": [\"hair\", \"salon\", \"style\"],\r\n \"char\": \"💈\",\r\n \"category\": \"objects\"\r\n },\r\n \"alembic\": {\r\n \"keywords\": [\"distilling\", \"science\", \"experiment\"],\r\n \"char\": \"⚗\",\r\n \"category\": \"objects\"\r\n },\r\n \"telescope\": {\r\n \"keywords\": [\"stars\", \"space\", \"zoom\"],\r\n \"char\": \"🔭\",\r\n \"category\": \"objects\"\r\n },\r\n \"microscope\": {\r\n \"keywords\": [\"laboratory\", \"experiment\", \"zoomin\", \"science\", \"study\"],\r\n \"char\": \"🔬\",\r\n \"category\": \"objects\"\r\n },\r\n \"hole\": {\r\n \"keywords\": [\"embarrassing\"],\r\n \"char\": \"🕳\",\r\n \"category\": \"objects\"\r\n },\r\n \"pill\": {\r\n \"keywords\": [\"health\", \"medicine\", \"doctor\", \"pharmacy\", \"drug\"],\r\n \"char\": \"💊\",\r\n \"category\": \"objects\"\r\n },\r\n \"syringe\": {\r\n \"keywords\": [\"health\", \"hospital\", \"drugs\", \"blood\", \"medicine\", \"needle\", \"doctor\", \"nurse\"],\r\n \"char\": \"💉\",\r\n \"category\": \"objects\"\r\n },\r\n \"thermometer\": {\r\n \"keywords\": [\"weather\", \"temperature\", \"hot\", \"cold\"],\r\n \"char\": \"🌡\",\r\n \"category\": \"objects\"\r\n },\r\n \"label\": {\r\n \"keywords\": [\"sale\", \"tag\"],\r\n \"char\": \"🏷\",\r\n \"category\": \"objects\"\r\n },\r\n \"bookmark\": {\r\n \"keywords\": [\"favorite\", \"label\", \"save\"],\r\n \"char\": \"🔖\",\r\n \"category\": \"objects\"\r\n },\r\n \"toilet\": {\r\n \"keywords\": [\"restroom\", \"wc\", \"washroom\", \"bathroom\", \"potty\"],\r\n \"char\": \"🚽\",\r\n \"category\": \"objects\"\r\n },\r\n \"shower\": {\r\n \"keywords\": [\"clean\", \"water\", \"bathroom\"],\r\n \"char\": \"🚿\",\r\n \"category\": \"objects\"\r\n },\r\n \"bathtub\": {\r\n \"keywords\": [\"clean\", \"shower\", \"bathroom\"],\r\n \"char\": \"🛁\",\r\n \"category\": \"objects\"\r\n },\r\n \"key\": {\r\n \"keywords\": [\"lock\", \"door\", \"password\"],\r\n \"char\": \"🔑\",\r\n \"category\": \"objects\"\r\n },\r\n \"old_key\": {\r\n \"keywords\": [\"lock\", \"door\", \"password\"],\r\n \"char\": \"🗝\",\r\n \"category\": \"objects\"\r\n },\r\n \"couch_and_lamp\": {\r\n \"keywords\": [\"read\", \"chill\"],\r\n \"char\": \"🛋\",\r\n \"category\": \"objects\"\r\n },\r\n \"sleeping_accommodation\": {\r\n \"keywords\": [\"bed\", \"rest\"],\r\n \"char\": \"🛌\",\r\n \"category\": \"objects\"\r\n },\r\n \"bed\": {\r\n \"keywords\": [\"sleep\", \"rest\"],\r\n \"char\": \"🛏\",\r\n \"category\": \"objects\"\r\n },\r\n \"door\": {\r\n \"keywords\": [\"house\", \"entry\", \"exit\"],\r\n \"char\": \"🚪\",\r\n \"category\": \"objects\"\r\n },\r\n \"bellhop_bell\": {\r\n \"keywords\": [\"service\"],\r\n \"char\": \"🛎\",\r\n \"category\": \"objects\"\r\n },\r\n \"frame_with_picture\": {\r\n \"keywords\": [\"photography\"],\r\n \"char\": \"🖼\",\r\n \"category\": \"objects\"\r\n },\r\n \"world_map\": {\r\n \"keywords\": [\"location\", \"direction\"],\r\n \"char\": \"🗺\",\r\n \"category\": \"objects\"\r\n },\r\n \"umbrella_on_ground\": {\r\n \"keywords\": [\"weather\", \"summer\"],\r\n \"char\": \"⛱\",\r\n \"category\": \"objects\"\r\n },\r\n \"moyai\": {\r\n \"keywords\": [\"rock\", \"easter island\", \"moai\"],\r\n \"char\": \"🗿\",\r\n \"category\": \"objects\"\r\n },\r\n \"shopping_bags\": {\r\n \"keywords\": [\"mall\", \"buy\", \"purchase\"],\r\n \"char\": \"🛍\",\r\n \"category\": \"objects\"\r\n },\r\n \"balloon\": {\r\n \"keywords\": [\"party\", \"celebration\", \"birthday\", \"circus\"],\r\n \"char\": \"🎈\",\r\n \"category\": \"objects\"\r\n },\r\n \"flags\": {\r\n \"keywords\": [\"fish\", \"japanese\", \"koinobori\", \"carp\", \"banner\"],\r\n \"char\": \"🎏\",\r\n \"category\": \"objects\"\r\n },\r\n \"ribbon\": {\r\n \"keywords\": [\"decoration\", \"pink\", \"girl\", \"bowtie\"],\r\n \"char\": \"🎀\",\r\n \"category\": \"objects\"\r\n },\r\n \"gift\": {\r\n \"keywords\": [\"present\", \"birthday\", \"christmas\", \"xmas\"],\r\n \"char\": \"🎁\",\r\n \"category\": \"objects\"\r\n },\r\n \"confetti_ball\": {\r\n \"keywords\": [\"festival\", \"party\", \"birthday\", \"circus\"],\r\n \"char\": \"🎊\",\r\n \"category\": \"objects\"\r\n },\r\n \"tada\": {\r\n \"keywords\": [\"party\", \"contulations\", \"birthday\", \"magic\", \"circus\"],\r\n \"char\": \"🎉\",\r\n \"category\": \"objects\"\r\n },\r\n \"dolls\": {\r\n \"keywords\": [\"japanese\", \"toy\", \"kimono\"],\r\n \"char\": \"🎎\",\r\n \"category\": \"objects\"\r\n },\r\n \"wind_chime\": {\r\n \"keywords\": [\"nature\", \"ding\", \"spring\", \"bell\"],\r\n \"char\": \"🎐\",\r\n \"category\": \"objects\"\r\n },\r\n \"crossed_flags\": {\r\n \"keywords\": [\"japanese\", \"nation\", \"country\", \"border\"],\r\n \"char\": \"🎌\",\r\n \"category\": \"objects\"\r\n },\r\n \"izakaya_lantern\": {\r\n \"keywords\": [\"light\", \"paper\", \"halloween\", \"spooky\"],\r\n \"char\": \"🏮\",\r\n \"category\": \"objects\"\r\n },\r\n \"envelope\": {\r\n \"keywords\": [\"letter\", \"postal\", \"inbox\", \"communication\"],\r\n \"char\": \"✉️\",\r\n \"category\": \"objects\"\r\n },\r\n \"envelope_with_arrow\": {\r\n \"keywords\": [\"email\", \"communication\"],\r\n \"char\": \"📩\",\r\n \"category\": \"objects\"\r\n },\r\n \"incoming_envelope\": {\r\n \"keywords\": [\"email\", \"inbox\"],\r\n \"char\": \"📨\",\r\n \"category\": \"objects\"\r\n },\r\n \"email\": {\r\n \"keywords\": [\"communication\", \"inbox\"],\r\n \"char\": \"📧\",\r\n \"category\": \"objects\"\r\n },\r\n \"love_letter\": {\r\n \"keywords\": [\"email\", \"like\", \"affection\", \"envelope\", \"valentines\"],\r\n \"char\": \"💌\",\r\n \"category\": \"objects\"\r\n },\r\n \"postbox\": {\r\n \"keywords\": [\"email\", \"letter\", \"envelope\"],\r\n \"char\": \"📮\",\r\n \"category\": \"objects\"\r\n },\r\n \"mailbox_closed\": {\r\n \"keywords\": [\"email\", \"communication\", \"inbox\"],\r\n \"char\": \"📪\",\r\n \"category\": \"objects\"\r\n },\r\n \"mailbox\": {\r\n \"keywords\": [\"email\", \"inbox\", \"communication\"],\r\n \"char\": \"📫\",\r\n \"category\": \"objects\"\r\n },\r\n \"mailbox_with_mail\": {\r\n \"keywords\": [\"email\", \"inbox\", \"communication\"],\r\n \"char\": \"📬\",\r\n \"category\": \"objects\"\r\n },\r\n \"mailbox_with_no_mail\": {\r\n \"keywords\": [\"email\", \"inbox\"],\r\n \"char\": \"📭\",\r\n \"category\": \"objects\"\r\n },\r\n \"package\": {\r\n \"keywords\": [\"mail\", \"gift\", \"cardboard\", \"box\", \"moving\"],\r\n \"char\": \"📦\",\r\n \"category\": \"objects\"\r\n },\r\n \"postal_horn\": {\r\n \"keywords\": [\"instrument\", \"music\"],\r\n \"char\": \"📯\",\r\n \"category\": \"objects\"\r\n },\r\n \"inbox_tray\": {\r\n \"keywords\": [\"email\", \"documents\"],\r\n \"char\": \"📥\",\r\n \"category\": \"objects\"\r\n },\r\n \"outbox_tray\": {\r\n \"keywords\": [\"inbox\", \"email\"],\r\n \"char\": \"📤\",\r\n \"category\": \"objects\"\r\n },\r\n \"scroll\": {\r\n \"keywords\": [\"documents\", \"ancient\", \"history\", \"paper\"],\r\n \"char\": \"📜\",\r\n \"category\": \"objects\"\r\n },\r\n \"page_with_curl\": {\r\n \"keywords\": [\"documents\", \"office\", \"paper\"],\r\n \"char\": \"📃\",\r\n \"category\": \"objects\"\r\n },\r\n \"bookmark_tabs\": {\r\n \"keywords\": [\"favorite\", \"save\", \"order\", \"tidy\"],\r\n \"char\": \"📑\",\r\n \"category\": \"objects\"\r\n },\r\n \"bar_chart\": {\r\n \"keywords\": [\"graph\", \"presentation\", \"stats\"],\r\n \"char\": \"📊\",\r\n \"category\": \"objects\"\r\n },\r\n \"chart_with_upwards_trend\": {\r\n \"keywords\": [\"graph\", \"presentation\", \"stats\", \"recovery\", \"business\", \"economics\", \"money\", \"sales\", \"good\", \"success\"],\r\n \"char\": \"📈\",\r\n \"category\": \"objects\"\r\n },\r\n \"chart_with_downwards_trend\": {\r\n \"keywords\": [\"graph\", \"presentation\", \"stats\", \"recession\", \"business\", \"economics\", \"money\", \"sales\", \"bad\", \"failure\"],\r\n \"char\": \"📉\",\r\n \"category\": \"objects\"\r\n },\r\n \"page_facing_up\": {\r\n \"keywords\": [\"documents\", \"office\", \"paper\", \"information\"],\r\n \"char\": \"📄\",\r\n \"category\": \"objects\"\r\n },\r\n \"date\": {\r\n \"keywords\": [\"calendar\", \"schedule\"],\r\n \"char\": \"📅\",\r\n \"category\": \"objects\"\r\n },\r\n \"calendar\": {\r\n \"keywords\": [\"schedule\", \"date\", \"planning\"],\r\n \"char\": \"📆\",\r\n \"category\": \"objects\"\r\n },\r\n \"spiral_calendar_pad\": {\r\n \"keywords\": [\"date\", \"schedule\", \"planning\"],\r\n \"char\": \"🗓\",\r\n \"category\": \"objects\"\r\n },\r\n \"card_index\": {\r\n \"keywords\": [\"business\", \"stationery\"],\r\n \"char\": \"📇\",\r\n \"category\": \"objects\"\r\n },\r\n \"card_file_box\": {\r\n \"keywords\": [\"business\", \"stationery\"],\r\n \"char\": \"🗃\",\r\n \"category\": \"objects\"\r\n },\r\n \"ballot_box_with_ballot\": {\r\n \"keywords\": [\"election\", \"vote\"],\r\n \"char\": \"🗳\",\r\n \"category\": \"objects\"\r\n },\r\n \"file_cabinet\": {\r\n \"keywords\": [\"filing\", \"organizing\"],\r\n \"char\": \"🗄\",\r\n \"category\": \"objects\"\r\n },\r\n \"clipboard\": {\r\n \"keywords\": [\"stationery\", \"documents\"],\r\n \"char\": \"📋\",\r\n \"category\": \"objects\"\r\n },\r\n \"spiral_note_pad\": {\r\n \"keywords\": [\"memo\", \"stationery\"],\r\n \"char\": \"🗒\",\r\n \"category\": \"objects\"\r\n },\r\n \"file_folder\": {\r\n \"keywords\": [\"documents\", \"business\", \"office\"],\r\n \"char\": \"📁\",\r\n \"category\": \"objects\"\r\n },\r\n \"open_file_folder\": {\r\n \"keywords\": [\"documents\", \"load\"],\r\n \"char\": \"📂\",\r\n \"category\": \"objects\"\r\n },\r\n \"card_index_dividers\": {\r\n \"keywords\": [\"organizing\", \"business\", \"stationery\"],\r\n \"char\": \"🗂\",\r\n \"category\": \"objects\"\r\n },\r\n \"rolled_up_newspaper\": {\r\n \"keywords\": [\"press\", \"headline\"],\r\n \"char\": \"🗞\",\r\n \"category\": \"objects\"\r\n },\r\n \"newspaper\": {\r\n \"keywords\": [\"press\", \"headline\"],\r\n \"char\": \"📰\",\r\n \"category\": \"objects\"\r\n },\r\n \"notebook\": {\r\n \"keywords\": [\"stationery\", \"record\", \"notes\", \"paper\", \"study\"],\r\n \"char\": \"📓\",\r\n \"category\": \"objects\"\r\n },\r\n \"closed_book\": {\r\n \"keywords\": [\"read\", \"library\", \"knowledge\", \"textbook\", \"learn\"],\r\n \"char\": \"📕\",\r\n \"category\": \"objects\"\r\n },\r\n \"green_book\": {\r\n \"keywords\": [\"read\", \"library\", \"knowledge\", \"study\"],\r\n \"char\": \"📗\",\r\n \"category\": \"objects\"\r\n },\r\n \"blue_book\": {\r\n \"keywords\": [\"read\", \"library\", \"knowledge\", \"learn\", \"study\"],\r\n \"char\": \"📘\",\r\n \"category\": \"objects\"\r\n },\r\n \"orange_book\": {\r\n \"keywords\": [\"read\", \"library\", \"knowledge\", \"textbook\", \"study\"],\r\n \"char\": \"📙\",\r\n \"category\": \"objects\"\r\n },\r\n \"notebook_with_decorative_cover\": {\r\n \"keywords\": [\"classroom\", \"notes\", \"record\", \"paper\", \"study\"],\r\n \"char\": \"📔\",\r\n \"category\": \"objects\"\r\n },\r\n \"ledger\": {\r\n \"keywords\": [\"notes\", \"paper\"],\r\n \"char\": \"📒\",\r\n \"category\": \"objects\"\r\n },\r\n \"books\": {\r\n \"keywords\": [\"literature\", \"library\", \"study\"],\r\n \"char\": \"📚\",\r\n \"category\": \"objects\"\r\n },\r\n \"book\": {\r\n \"keywords\": [\"open_book\", \"read\", \"library\", \"knowledge\", \"literature\", \"learn\", \"study\"],\r\n \"char\": \"📖\",\r\n \"category\": \"objects\"\r\n },\r\n \"link\": {\r\n \"keywords\": [\"rings\", \"url\"],\r\n \"char\": \"🔗\",\r\n \"category\": \"objects\"\r\n },\r\n \"paperclip\": {\r\n \"keywords\": [\"documents\", \"stationery\"],\r\n \"char\": \"📎\",\r\n \"category\": \"objects\"\r\n },\r\n \"linked_paperclips\": {\r\n \"keywords\": [\"documents\", \"stationery\"],\r\n \"char\": \"🖇\",\r\n \"category\": \"objects\"\r\n },\r\n \"scissors\": {\r\n \"keywords\": [\"stationery\", \"cut\"],\r\n \"char\": \"✂️\",\r\n \"category\": \"objects\"\r\n },\r\n \"triangular_ruler\": {\r\n \"keywords\": [\"stationery\", \"math\", \"architect\", \"sketch\"],\r\n \"char\": \"📐\",\r\n \"category\": \"objects\"\r\n },\r\n \"straight_ruler\": {\r\n \"keywords\": [\"stationery\", \"calculate\", \"length\", \"math\", \"school\", \"drawing\", \"architect\", \"sketch\"],\r\n \"char\": \"📏\",\r\n \"category\": \"objects\"\r\n },\r\n \"pushpin\": {\r\n \"keywords\": [\"stationery\", \"mark\", \"here\"],\r\n \"char\": \"📌\",\r\n \"category\": \"objects\"\r\n },\r\n \"round_pushpin\": {\r\n \"keywords\": [\"stationery\", \"location\", \"map\", \"here\"],\r\n \"char\": \"📍\",\r\n \"category\": \"objects\"\r\n },\r\n \"triangular_flag_on_post\": {\r\n \"keywords\": [\"mark\", \"milestone\", \"place\"],\r\n \"char\": \"🚩\",\r\n \"category\": \"objects\"\r\n },\r\n \"waving_white_flag\": {\r\n \"keywords\": [\"losing\", \"loser\", \"lost\", \"surrender\", \"give up\", \"fail\"],\r\n \"char\": \"🏳\",\r\n \"category\": \"objects\"\r\n },\r\n \"waving_black_flag\": {\r\n \"keywords\": [\"pirate\"],\r\n \"char\": \"🏴\",\r\n \"category\": \"objects\"\r\n },\r\n \"closed_lock_with_key\": {\r\n \"keywords\": [\"security\", \"privacy\"],\r\n \"char\": \"🔐\",\r\n \"category\": \"objects\"\r\n },\r\n \"lock\": {\r\n \"keywords\": [\"security\", \"password\", \"padlock\"],\r\n \"char\": \"🔒\",\r\n \"category\": \"objects\"\r\n },\r\n \"unlock\": {\r\n \"keywords\": [\"privacy\", \"security\"],\r\n \"char\": \"🔓\",\r\n \"category\": \"objects\"\r\n },\r\n \"lock_with_ink_pen\": {\r\n \"keywords\": [\"security\", \"secret\"],\r\n \"char\": \"🔏\",\r\n \"category\": \"objects\"\r\n },\r\n \"lower_left_ballpoint_pen\": {\r\n \"keywords\": [\"stationery\", \"writing\", \"write\"],\r\n \"char\": \"🖊\",\r\n \"category\": \"objects\"\r\n },\r\n \"lower_left_fountain_pen\": {\r\n \"keywords\": [\"stationery\", \"writing\", \"write\"],\r\n \"char\": \"🖋\",\r\n \"category\": \"objects\"\r\n },\r\n \"black_nib\": {\r\n \"keywords\": [\"pen\", \"stationery\", \"writing\", \"write\"],\r\n \"char\": \"✒️\",\r\n \"category\": \"objects\"\r\n },\r\n \"memo\": {\r\n \"keywords\": [\"write\", \"documents\", \"stationery\", \"pencil\", \"paper\", \"writing\", \"legal\", \"exam\", \"quiz\", \"test\", \"study\"],\r\n \"char\": \"📝\",\r\n \"category\": \"objects\"\r\n },\r\n \"pencil2\": {\r\n \"keywords\": [\"stationery\", \"write\", \"paper\", \"writing\", \"school\", \"study\"],\r\n \"char\": \"✏️\",\r\n \"category\": \"objects\"\r\n },\r\n \"lower_left_crayon\": {\r\n \"keywords\": [\"drawing\", \"creativity\"],\r\n \"char\": \"🖍\",\r\n \"category\": \"objects\"\r\n },\r\n \"lower_left_paintbrush\": {\r\n \"keywords\": [\"drawing\", \"creativity\", \"art\"],\r\n \"char\": \"🖌\",\r\n \"category\": \"objects\"\r\n },\r\n \"mag\": {\r\n \"keywords\": [\"search\", \"zoom\", \"find\", \"detective\"],\r\n \"char\": \"🔍\",\r\n \"category\": \"objects\"\r\n },\r\n \"mag_right\": {\r\n \"keywords\": [\"search\", \"zoom\", \"find\", \"detective\"],\r\n \"char\": \"🔎\",\r\n \"category\": \"objects\"\r\n },\r\n \"heart\": {\r\n \"keywords\": [\"love\", \"like\", \"valentines\"],\r\n \"char\": \"❤️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"yellow_heart\": {\r\n \"keywords\": [\"love\", \"like\", \"affection\", \"valentines\"],\r\n \"char\": \"💛\",\r\n \"category\": \"symbols\"\r\n },\r\n \"green_heart\": {\r\n \"keywords\": [\"love\", \"like\", \"affection\", \"valentines\"],\r\n \"char\": \"💚\",\r\n \"category\": \"symbols\"\r\n },\r\n \"blue_heart\": {\r\n \"keywords\": [\"love\", \"like\", \"affection\", \"valentines\"],\r\n \"char\": \"💙\",\r\n \"category\": \"symbols\"\r\n },\r\n \"purple_heart\": {\r\n \"keywords\": [\"love\", \"like\", \"affection\", \"valentines\"],\r\n \"char\": \"💜\",\r\n \"category\": \"symbols\"\r\n },\r\n \"broken_heart\": {\r\n \"keywords\": [\"sad\", \"sorry\", \"break\", \"heart\", \"heartbreak\"],\r\n \"char\": \"💔\",\r\n \"category\": \"symbols\"\r\n },\r\n \"heavy_heart_exclamation_mark_ornament\": {\r\n \"keywords\": [\"decoration\", \"love\"],\r\n \"char\": \"❣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"two_hearts\": {\r\n \"keywords\": [\"love\", \"like\", \"affection\", \"valentines\", \"heart\"],\r\n \"char\": \"💕\",\r\n \"category\": \"symbols\"\r\n },\r\n \"revolving_hearts\": {\r\n \"keywords\": [\"love\", \"like\", \"affection\", \"valentines\"],\r\n \"char\": \"💞\",\r\n \"category\": \"symbols\"\r\n },\r\n \"heartbeat\": {\r\n \"keywords\": [\"love\", \"like\", \"affection\", \"valentines\", \"pink\", \"heart\"],\r\n \"char\": \"💓\",\r\n \"category\": \"symbols\"\r\n },\r\n \"heartpulse\": {\r\n \"keywords\": [\"like\", \"love\", \"affection\", \"valentines\", \"pink\"],\r\n \"char\": \"💗\",\r\n \"category\": \"symbols\"\r\n },\r\n \"sparkling_heart\": {\r\n \"keywords\": [\"love\", \"like\", \"affection\", \"valentines\"],\r\n \"char\": \"💖\",\r\n \"category\": \"symbols\"\r\n },\r\n \"cupid\": {\r\n \"keywords\": [\"love\", \"like\", \"heart\", \"affection\", \"valentines\"],\r\n \"char\": \"💘\",\r\n \"category\": \"symbols\"\r\n },\r\n \"gift_heart\": {\r\n \"keywords\": [\"love\", \"valentines\"],\r\n \"char\": \"💝\",\r\n \"category\": \"symbols\"\r\n },\r\n \"heart_decoration\": {\r\n \"keywords\": [\"purple-square\", \"love\", \"like\"],\r\n \"char\": \"💟\",\r\n \"category\": \"symbols\"\r\n },\r\n \"peace_symbol\": {\r\n \"keywords\": [\"hippie\"],\r\n \"char\": \"☮\",\r\n \"category\": \"symbols\"\r\n },\r\n \"latin_cross\": {\r\n \"keywords\": [\"christianity\"],\r\n \"char\": \"✝\",\r\n \"category\": \"symbols\"\r\n },\r\n \"star_and_crescent\": {\r\n \"keywords\": [\"islam\"],\r\n \"char\": \"☪\",\r\n \"category\": \"symbols\"\r\n },\r\n \"om_symbol\": {\r\n \"keywords\": [\"hinduism\", \"buddhism\", \"sikhism\", \"jainism\"],\r\n \"char\": \"🕉\",\r\n \"category\": \"symbols\"\r\n },\r\n \"wheel_of_dharma\": {\r\n \"keywords\": [\"hinduism\", \"buddhism\", \"sikhism\", \"jainism\"],\r\n \"char\": \"☸\",\r\n \"category\": \"symbols\"\r\n },\r\n \"star_of_david\": {\r\n \"keywords\": [\"judaism\"],\r\n \"char\": \"✡\",\r\n \"category\": \"symbols\"\r\n },\r\n \"six_pointed_star\": {\r\n \"keywords\": [\"purple-square\", \"religion\", \"jewish\", \"hexagram\"],\r\n \"char\": \"🔯\",\r\n \"category\": \"symbols\"\r\n },\r\n \"menorah_with_nine_branches\": {\r\n \"keywords\": [\"hanukkah\", \"candles\", \"jewish\"],\r\n \"char\": \"🕎\",\r\n \"category\": \"symbols\"\r\n },\r\n \"yin_yang\": {\r\n \"keywords\": [\"balance\"],\r\n \"char\": \"☯\",\r\n \"category\": \"symbols\"\r\n },\r\n \"orthodox_cross\": {\r\n \"keywords\": [\"suppedaneum\", \"religion\"],\r\n \"char\": \"☦\",\r\n \"category\": \"symbols\"\r\n },\r\n \"place_of_worship\": {\r\n \"keywords\": [\"religion\", \"church\", \"temple\", \"prayer\"],\r\n \"char\": \"🛐\",\r\n \"category\": \"symbols\"\r\n },\r\n \"ophiuchus\": {\r\n \"keywords\": [\"sign\", \"purple-square\", \"constellation\", \"astrology\"],\r\n \"char\": \"⛎\",\r\n \"category\": \"symbols\"\r\n },\r\n \"aries\": {\r\n \"keywords\": [\"sign\", \"purple-square\", \"zodiac\", \"astrology\"],\r\n \"char\": \"♈\",\r\n \"category\": \"symbols\"\r\n },\r\n \"taurus\": {\r\n \"keywords\": [\"purple-square\", \"sign\", \"zodiac\", \"astrology\"],\r\n \"char\": \"♉\",\r\n \"category\": \"symbols\"\r\n },\r\n \"gemini\": {\r\n \"keywords\": [\"sign\", \"zodiac\", \"purple-square\", \"astrology\"],\r\n \"char\": \"♊\",\r\n \"category\": \"symbols\"\r\n },\r\n \"cancer\": {\r\n \"keywords\": [\"sign\", \"zodiac\", \"purple-square\", \"astrology\"],\r\n \"char\": \"♋\",\r\n \"category\": \"symbols\"\r\n },\r\n \"leo\": {\r\n \"keywords\": [\"sign\", \"purple-square\", \"zodiac\", \"astrology\"],\r\n \"char\": \"♌\",\r\n \"category\": \"symbols\"\r\n },\r\n \"virgo\": {\r\n \"keywords\": [\"sign\", \"zodiac\", \"purple-square\", \"astrology\"],\r\n \"char\": \"♍\",\r\n \"category\": \"symbols\"\r\n },\r\n \"libra\": {\r\n \"keywords\": [\"sign\", \"purple-square\", \"zodiac\", \"astrology\"],\r\n \"char\": \"♎\",\r\n \"category\": \"symbols\"\r\n },\r\n \"scorpius\": {\r\n \"keywords\": [\"sign\", \"zodiac\", \"purple-square\", \"astrology\", \"scorpio\"],\r\n \"char\": \"♏\",\r\n \"category\": \"symbols\"\r\n },\r\n \"sagittarius\": {\r\n \"keywords\": [\"sign\", \"zodiac\", \"purple-square\", \"astrology\"],\r\n \"char\": \"♐\",\r\n \"category\": \"symbols\"\r\n },\r\n \"capricorn\": {\r\n \"keywords\": [\"sign\", \"zodiac\", \"purple-square\", \"astrology\"],\r\n \"char\": \"♑\",\r\n \"category\": \"symbols\"\r\n },\r\n \"aquarius\": {\r\n \"keywords\": [\"sign\", \"purple-square\", \"zodiac\", \"astrology\"],\r\n \"char\": \"♒\",\r\n \"category\": \"symbols\"\r\n },\r\n \"pisces\": {\r\n \"keywords\": [\"purple-square\", \"sign\", \"zodiac\", \"astrology\"],\r\n \"char\": \"♓\",\r\n \"category\": \"symbols\"\r\n },\r\n \"id\": {\r\n \"keywords\": [\"purple-square\", \"words\"],\r\n \"char\": \"🆔\",\r\n \"category\": \"symbols\"\r\n },\r\n \"atom_symbol\": {\r\n \"keywords\": [\"science\"],\r\n \"char\": \"⚛\",\r\n \"category\": \"symbols\"\r\n },\r\n \"u7a7a\": {\r\n \"keywords\": [\"kanji\", \"japanese\", \"chinese\", \"empty\", \"sky\", \"blue-square\"],\r\n \"char\": \"🈳\",\r\n \"category\": \"symbols\"\r\n },\r\n \"u5272\": {\r\n \"keywords\": [\"cut\", \"divide\", \"chinese\", \"kanji\", \"pink-square\"],\r\n \"char\": \"🈹\",\r\n \"category\": \"symbols\"\r\n },\r\n \"radioactive_sign\": {\r\n \"keywords\": [\"nuclear\", \"danger\"],\r\n \"char\": \"☢\",\r\n \"category\": \"symbols\"\r\n },\r\n \"biohazard_sign\": {\r\n \"keywords\": [\"danger\"],\r\n \"char\": \"☣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"mobile_phone_off\": {\r\n \"keywords\": [\"mute\", \"orange-square\", \"silence\", \"quiet\"],\r\n \"char\": \"📴\",\r\n \"category\": \"symbols\"\r\n },\r\n \"vibration_mode\": {\r\n \"keywords\": [\"orange-square\", \"phone\"],\r\n \"char\": \"📳\",\r\n \"category\": \"symbols\"\r\n },\r\n \"u6709\": {\r\n \"keywords\": [\"orange-square\", \"chinese\", \"have\", \"kanji\"],\r\n \"char\": \"🈶\",\r\n \"category\": \"symbols\"\r\n },\r\n \"u7121\": {\r\n \"keywords\": [\"nothing\", \"chinese\", \"kanji\", \"japanese\", \"orange-square\"],\r\n \"char\": \"🈚\",\r\n \"category\": \"symbols\"\r\n },\r\n \"u7533\": {\r\n \"keywords\": [\"chinese\", \"japanese\", \"kanji\", \"orange-square\"],\r\n \"char\": \"🈸\",\r\n \"category\": \"symbols\"\r\n },\r\n \"u55b6\": {\r\n \"keywords\": [\"japanese\", \"opening hours\", \"orange-square\"],\r\n \"char\": \"🈺\",\r\n \"category\": \"symbols\"\r\n },\r\n \"u6708\": {\r\n \"keywords\": [\"chinese\", \"month\", \"moon\", \"japanese\", \"orange-square\", \"kanji\"],\r\n \"char\": \"🈷️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"eight_pointed_black_star\": {\r\n \"keywords\": [\"orange-square\", \"shape\", \"polygon\"],\r\n \"char\": \"✴️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"vs\": {\r\n \"keywords\": [\"words\", \"orange-square\"],\r\n \"char\": \"🆚\",\r\n \"category\": \"symbols\"\r\n },\r\n \"accept\": {\r\n \"keywords\": [\"ok\", \"good\", \"chinese\", \"kanji\", \"agree\", \"yes\", \"orange-circle\"],\r\n \"char\": \"🉑\",\r\n \"category\": \"symbols\"\r\n },\r\n \"white_flower\": {\r\n \"keywords\": [\"japanese\", \"spring\"],\r\n \"char\": \"💮\",\r\n \"category\": \"symbols\"\r\n },\r\n \"ideograph_advantage\": {\r\n \"keywords\": [\"chinese\", \"kanji\", \"obtain\", \"get\", \"circle\"],\r\n \"char\": \"🉐\",\r\n \"category\": \"symbols\"\r\n },\r\n \"secret\": {\r\n \"keywords\": [\"privacy\", \"chinese\", \"sshh\", \"kanji\", \"red-circle\"],\r\n \"char\": \"㊙️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"congratulations\": {\r\n \"keywords\": [\"chinese\", \"kanji\", \"japanese\", \"red-circle\"],\r\n \"char\": \"㊗️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"u5408\": {\r\n \"keywords\": [\"japanese\", \"chinese\", \"join\", \"kanji\", \"red-square\"],\r\n \"char\": \"🈴\",\r\n \"category\": \"symbols\"\r\n },\r\n \"u6e80\": {\r\n \"keywords\": [\"full\", \"chinese\", \"japanese\", \"red-square\", \"kanji\"],\r\n \"char\": \"🈵\",\r\n \"category\": \"symbols\"\r\n },\r\n \"u7981\": {\r\n \"keywords\": [\"kanji\", \"japanese\", \"chinese\", \"forbidden\", \"limit\", \"restricted\", \"red-square\"],\r\n \"char\": \"🈲\",\r\n \"category\": \"symbols\"\r\n },\r\n \"a\": {\r\n \"keywords\": [\"red-square\", \"alphabet\", \"letter\"],\r\n \"char\": \"🅰️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"b\": {\r\n \"keywords\": [\"red-square\", \"alphabet\", \"letter\"],\r\n \"char\": \"🅱️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"ab\": {\r\n \"keywords\": [\"red-square\", \"alphabet\"],\r\n \"char\": \"🆎\",\r\n \"category\": \"symbols\"\r\n },\r\n \"cl\": {\r\n \"keywords\": [\"alphabet\", \"words\", \"red-square\"],\r\n \"char\": \"🆑\",\r\n \"category\": \"symbols\"\r\n },\r\n \"o2\": {\r\n \"keywords\": [\"alphabet\", \"red-square\", \"letter\"],\r\n \"char\": \"🅾️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"sos\": {\r\n \"keywords\": [\"help\", \"red-square\", \"words\", \"emergency\", \"911\"],\r\n \"char\": \"🆘\",\r\n \"category\": \"symbols\"\r\n },\r\n \"no_entry\": {\r\n \"keywords\": [\"limit\", \"security\", \"privacy\", \"bad\", \"denied\", \"stop\", \"circle\"],\r\n \"char\": \"⛔\",\r\n \"category\": \"symbols\"\r\n },\r\n \"name_badge\": {\r\n \"keywords\": [\"fire\", \"forbid\"],\r\n \"char\": \"📛\",\r\n \"category\": \"symbols\"\r\n },\r\n \"no_entry_sign\": {\r\n \"keywords\": [\"forbid\", \"stop\", \"limit\", \"denied\", \"disallow\", \"circle\"],\r\n \"char\": \"🚫\",\r\n \"category\": \"symbols\"\r\n },\r\n \"x\": {\r\n \"keywords\": [\"no\", \"delete\", \"remove\", \"cancel\"],\r\n \"char\": \"❌\",\r\n \"category\": \"symbols\"\r\n },\r\n \"o\": {\r\n \"keywords\": [\"circle\", \"round\"],\r\n \"char\": \"⭕\",\r\n \"category\": \"symbols\"\r\n },\r\n \"anger\": {\r\n \"keywords\": [\"angry\", \"mad\"],\r\n \"char\": \"💢\",\r\n \"category\": \"symbols\"\r\n },\r\n \"hotsprings\": {\r\n \"keywords\": [\"bath\", \"warm\", \"relax\"],\r\n \"char\": \"♨️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"no_pedestrians\": {\r\n \"keywords\": [\"rules\", \"crossing\", \"walking\", \"circle\"],\r\n \"char\": \"🚷\",\r\n \"category\": \"symbols\"\r\n },\r\n \"do_not_litter\": {\r\n \"keywords\": [\"trash\", \"bin\", \"garbage\", \"circle\"],\r\n \"char\": \"🚯\",\r\n \"category\": \"symbols\"\r\n },\r\n \"no_bicycles\": {\r\n \"keywords\": [\"cyclist\", \"prohibited\", \"circle\"],\r\n \"char\": \"🚳\",\r\n \"category\": \"symbols\"\r\n },\r\n \"non-potable_water\": {\r\n \"keywords\": [\"drink\", \"faucet\", \"tap\", \"circle\"],\r\n \"char\": \"🚱\",\r\n \"category\": \"symbols\"\r\n },\r\n \"underage\": {\r\n \"keywords\": [\"18\", \"drink\", \"pub\", \"night\", \"minor\", \"circle\"],\r\n \"char\": \"🔞\",\r\n \"category\": \"symbols\"\r\n },\r\n \"no_mobile_phones\": {\r\n \"keywords\": [\"iphone\", \"mute\", \"circle\"],\r\n \"char\": \"📵\",\r\n \"category\": \"symbols\"\r\n },\r\n \"exclamation\": {\r\n \"keywords\": [\"heavy_exclamation_mark\", \"danger\", \"surprise\", \"punctuation\", \"wow\", \"warning\"],\r\n \"char\": \"❗\",\r\n \"category\": \"symbols\"\r\n },\r\n \"grey_exclamation\": {\r\n \"keywords\": [\"surprise\", \"punctuation\", \"gray\", \"wow\", \"warning\"],\r\n \"char\": \"❕\",\r\n \"category\": \"symbols\"\r\n },\r\n \"question\": {\r\n \"keywords\": [\"doubt\", \"confused\"],\r\n \"char\": \"❓\",\r\n \"category\": \"symbols\"\r\n },\r\n \"grey_question\": {\r\n \"keywords\": [\"doubts\", \"gray\", \"huh\", \"confused\"],\r\n \"char\": \"❔\",\r\n \"category\": \"symbols\"\r\n },\r\n \"bangbang\": {\r\n \"keywords\": [\"exclamation\", \"surprise\"],\r\n \"char\": \"‼️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"interrobang\": {\r\n \"keywords\": [\"wat\", \"punctuation\", \"surprise\"],\r\n \"char\": \"⁉️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"100\": {\r\n \"keywords\": [\"score\", \"perfect\", \"numbers\", \"century\", \"exam\", \"quiz\", \"test\", \"pass\", \"hundred\"],\r\n \"char\": \"💯\",\r\n \"category\": \"symbols\"\r\n },\r\n \"low_brightness\": {\r\n \"keywords\": [\"sun\", \"afternoon\", \"warm\", \"summer\"],\r\n \"char\": \"🔅\",\r\n \"category\": \"symbols\"\r\n },\r\n \"high_brightness\": {\r\n \"keywords\": [\"sun\", \"light\"],\r\n \"char\": \"🔆\",\r\n \"category\": \"symbols\"\r\n },\r\n \"trident\": {\r\n \"keywords\": [\"weapon\", \"spear\"],\r\n \"char\": \"🔱\",\r\n \"category\": \"symbols\"\r\n },\r\n \"fleur_de_lis\": {\r\n \"keywords\": [\"decorative\", \"scout\"],\r\n \"char\": \"⚜\",\r\n \"category\": \"symbols\"\r\n },\r\n \"part_alternation_mark\": {\r\n \"keywords\": [\"graph\", \"presentation\", \"stats\", \"business\", \"economics\", \"bad\"],\r\n \"char\": \"〽️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"warning\": {\r\n \"keywords\": [\"exclamation\", \"wip\", \"alert\", \"error\", \"problem\", \"issue\"],\r\n \"char\": \"⚠️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"children_crossing\": {\r\n \"keywords\": [\"school\", \"warning\", \"danger\", \"sign\", \"driving\", \"yellow-diamond\"],\r\n \"char\": \"🚸\",\r\n \"category\": \"symbols\"\r\n },\r\n \"beginner\": {\r\n \"keywords\": [\"badge\", \"shield\"],\r\n \"char\": \"🔰\",\r\n \"category\": \"symbols\"\r\n },\r\n \"recycle\": {\r\n \"keywords\": [\"arrow\", \"environment\", \"garbage\", \"trash\"],\r\n \"char\": \"♻️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"u6307\": {\r\n \"keywords\": [\"chinese\", \"point\", \"green-square\", \"kanji\"],\r\n \"char\": \"🈯\",\r\n \"category\": \"symbols\"\r\n },\r\n \"chart\": {\r\n \"keywords\": [\"green-square\", \"graph\", \"presentation\", \"stats\"],\r\n \"char\": \"💹\",\r\n \"category\": \"symbols\"\r\n },\r\n \"sparkle\": {\r\n \"keywords\": [\"stars\", \"green-square\", \"awesome\", \"good\", \"fireworks\"],\r\n \"char\": \"❇️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"eight_spoked_asterisk\": {\r\n \"keywords\": [\"star\", \"sparkle\", \"green-square\"],\r\n \"char\": \"✳️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"negative_squared_cross_mark\": {\r\n \"keywords\": [\"x\", \"green-square\", \"no\", \"deny\"],\r\n \"char\": \"❎\",\r\n \"category\": \"symbols\"\r\n },\r\n \"white_check_mark\": {\r\n \"keywords\": [\"green-square\", \"ok\", \"agree\", \"vote\", \"election\", \"answer\"],\r\n \"char\": \"✅\",\r\n \"category\": \"symbols\"\r\n },\r\n \"diamond_shape_with_a_dot_inside\": {\r\n \"keywords\": [\"jewel\", \"blue\", \"gem\", \"crystal\", \"fancy\"],\r\n \"char\": \"💠\",\r\n \"category\": \"symbols\"\r\n },\r\n \"cyclone\": {\r\n \"keywords\": [\"weather\", \"swirl\", \"blue\", \"cloud\", \"vortex\", \"spiral\", \"whirlpool\", \"spin\"],\r\n \"char\": \"🌀\",\r\n \"category\": \"symbols\"\r\n },\r\n \"loop\": {\r\n \"keywords\": [\"tape\", \"cassette\"],\r\n \"char\": \"➿\",\r\n \"category\": \"symbols\"\r\n },\r\n \"globe_with_meridians\": {\r\n \"keywords\": [\"earth\", \"international\", \"world\", \"internet\", \"interweb\", \"i18n\"],\r\n \"char\": \"🌐\",\r\n \"category\": \"symbols\"\r\n },\r\n \"m\": {\r\n \"keywords\": [\"alphabet\", \"blue-circle\", \"letter\"],\r\n \"char\": \"Ⓜ️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"atm\": {\r\n \"keywords\": [\"money\", \"sales\", \"cash\", \"blue-square\", \"payment\", \"bank\"],\r\n \"char\": \"🏧\",\r\n \"category\": \"symbols\"\r\n },\r\n \"sa\": {\r\n \"keywords\": [\"japanese\", \"blue-square\", \"katakana\"],\r\n \"char\": \"🈂️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"passport_control\": {\r\n \"keywords\": [\"custom\", \"blue-square\"],\r\n \"char\": \"🛂\",\r\n \"category\": \"symbols\"\r\n },\r\n \"customs\": {\r\n \"keywords\": [\"passport\", \"border\", \"blue-square\"],\r\n \"char\": \"🛃\",\r\n \"category\": \"symbols\"\r\n },\r\n \"baggage_claim\": {\r\n \"keywords\": [\"blue-square\", \"airport\", \"transport\"],\r\n \"char\": \"🛄\",\r\n \"category\": \"symbols\"\r\n },\r\n \"left_luggage\": {\r\n \"keywords\": [\"blue-square\", \"travel\"],\r\n \"char\": \"🛅\",\r\n \"category\": \"symbols\"\r\n },\r\n \"wheelchair\": {\r\n \"keywords\": [\"blue-square\", \"disabled\", \"a11y\", \"accessibility\"],\r\n \"char\": \"♿\",\r\n \"category\": \"symbols\"\r\n },\r\n \"no_smoking\": {\r\n \"keywords\": [\"cigarette\", \"blue-square\", \"smell\", \"smoke\"],\r\n \"char\": \"🚭\",\r\n \"category\": \"symbols\"\r\n },\r\n \"wc\": {\r\n \"keywords\": [\"toilet\", \"restroom\", \"blue-square\"],\r\n \"char\": \"🚾\",\r\n \"category\": \"symbols\"\r\n },\r\n \"parking\": {\r\n \"keywords\": [\"cars\", \"blue-square\", \"alphabet\", \"letter\"],\r\n \"char\": \"🅿️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"potable_water\": {\r\n \"keywords\": [\"blue-square\", \"liquid\", \"restroom\", \"cleaning\", \"faucet\"],\r\n \"char\": \"🚰\",\r\n \"category\": \"symbols\"\r\n },\r\n \"mens\": {\r\n \"keywords\": [\"toilet\", \"restroom\", \"wc\", \"blue-square\", \"gender\", \"male\"],\r\n \"char\": \"🚹\",\r\n \"category\": \"symbols\"\r\n },\r\n \"womens\": {\r\n \"keywords\": [\"purple-square\", \"woman\", \"female\", \"toilet\", \"loo\", \"restroom\", \"gender\"],\r\n \"char\": \"🚺\",\r\n \"category\": \"symbols\"\r\n },\r\n \"baby_symbol\": {\r\n \"keywords\": [\"orange-square\", \"child\"],\r\n \"char\": \"🚼\",\r\n \"category\": \"symbols\"\r\n },\r\n \"restroom\": {\r\n \"keywords\": [\"blue-square\", \"toilet\", \"refresh\", \"wc\", \"gender\"],\r\n \"char\": \"🚻\",\r\n \"category\": \"symbols\"\r\n },\r\n \"put_litter_in_its_place\": {\r\n \"keywords\": [\"blue-square\", \"sign\", \"human\", \"info\"],\r\n \"char\": \"🚮\",\r\n \"category\": \"symbols\"\r\n },\r\n \"cinema\": {\r\n \"keywords\": [\"blue-square\", \"record\", \"film\", \"movie\", \"curtain\", \"stage\", \"theater\"],\r\n \"char\": \"🎦\",\r\n \"category\": \"symbols\"\r\n },\r\n \"signal_strength\": {\r\n \"keywords\": [\"blue-square\", \"reception\", \"phone\", \"internet\", \"connection\", \"wifi\", \"bluetooth\", \"bars\"],\r\n \"char\": \"📶\",\r\n \"category\": \"symbols\"\r\n },\r\n \"koko\": {\r\n \"keywords\": [\"blue-square\", \"here\", \"katakana\", \"japanese\", \"destination\"],\r\n \"char\": \"🈁\",\r\n \"category\": \"symbols\"\r\n },\r\n \"ng\": {\r\n \"keywords\": [\"blue-square\", \"words\", \"shape\", \"icon\"],\r\n \"char\": \"🆖\",\r\n \"category\": \"symbols\"\r\n },\r\n \"ok\": {\r\n \"keywords\": [\"good\", \"agree\", \"yes\", \"blue-square\"],\r\n \"char\": \"🆗\",\r\n \"category\": \"symbols\"\r\n },\r\n \"up\": {\r\n \"keywords\": [\"blue-square\", \"above\", \"high\"],\r\n \"char\": \"🆙\",\r\n \"category\": \"symbols\"\r\n },\r\n \"cool\": {\r\n \"keywords\": [\"words\", \"blue-square\"],\r\n \"char\": \"🆒\",\r\n \"category\": \"symbols\"\r\n },\r\n \"new\": {\r\n \"keywords\": [\"blue-square\", \"words\", \"start\"],\r\n \"char\": \"🆕\",\r\n \"category\": \"symbols\"\r\n },\r\n \"free\": {\r\n \"keywords\": [\"blue-square\", \"words\"],\r\n \"char\": \"🆓\",\r\n \"category\": \"symbols\"\r\n },\r\n \"zero\": {\r\n \"keywords\": [\"0\", \"numbers\", \"blue-square\", \"null\"],\r\n \"char\": \"0️⃣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"one\": {\r\n \"keywords\": [\"blue-square\", \"numbers\", \"1\"],\r\n \"char\": \"1️⃣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"two\": {\r\n \"keywords\": [\"numbers\", \"2\", \"prime\", \"blue-square\"],\r\n \"char\": \"2️⃣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"three\": {\r\n \"keywords\": [\"3\", \"numbers\", \"prime\", \"blue-square\"],\r\n \"char\": \"3️⃣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"four\": {\r\n \"keywords\": [\"4\", \"numbers\", \"blue-square\"],\r\n \"char\": \"4️⃣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"five\": {\r\n \"keywords\": [\"5\", \"numbers\", \"blue-square\", \"prime\"],\r\n \"char\": \"5️⃣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"six\": {\r\n \"keywords\": [\"6\", \"numbers\", \"blue-square\"],\r\n \"char\": \"6️⃣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"seven\": {\r\n \"keywords\": [\"7\", \"numbers\", \"blue-square\", \"prime\"],\r\n \"char\": \"7️⃣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"eight\": {\r\n \"keywords\": [\"8\", \"blue-square\", \"numbers\"],\r\n \"char\": \"8️⃣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"nine\": {\r\n \"keywords\": [\"blue-square\", \"numbers\", \"9\"],\r\n \"char\": \"9️⃣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"keycap_ten\": {\r\n \"keywords\": [\"numbers\", \"10\", \"blue-square\"],\r\n \"char\": \"🔟\",\r\n \"category\": \"symbols\"\r\n },\r\n \"keycap_star\": {\r\n \"keywords\": [\"asterisk\"],\r\n \"char\": \"*⃣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"1234\": {\r\n \"keywords\": [\"numbers\", \"blue-square\"],\r\n \"char\": \"🔢\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_forward\": {\r\n \"keywords\": [\"blue-square\", \"right\", \"direction\", \"play\"],\r\n \"char\": \"▶️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"double_vertical_bar\": {\r\n \"keywords\": [\"pause\", \"blue-square\"],\r\n \"char\": \"⏸\",\r\n \"category\": \"symbols\"\r\n },\r\n \"black_right_pointing_triangle_with_double_vertical_bar\": {\r\n \"keywords\": [\"forward\", \"next\", \"blue-square\"],\r\n \"char\": \"⏭\",\r\n \"category\": \"symbols\"\r\n },\r\n \"black_square_for_stop\": {\r\n \"keywords\": [\"blue-square\"],\r\n \"char\": \"⏹\",\r\n \"category\": \"symbols\"\r\n },\r\n \"black_circle_for_record\": {\r\n \"keywords\": [\"blue-square\"],\r\n \"char\": \"⏺\",\r\n \"category\": \"symbols\"\r\n },\r\n \"black_right_pointing_double_triangle_with_vertical_bar\": {\r\n \"keywords\": [\"blue-square\", \"play\", \"pause\"],\r\n \"char\": \"⏯\",\r\n \"category\": \"symbols\"\r\n },\r\n \"black_left_pointing_double_triangle_with_vertical_bar\": {\r\n \"keywords\": [\"backward\"],\r\n \"char\": \"⏮\",\r\n \"category\": \"symbols\"\r\n },\r\n \"fast_forward\": {\r\n \"keywords\": [\"blue-square\", \"play\", \"speed\", \"continue\"],\r\n \"char\": \"⏩\",\r\n \"category\": \"symbols\"\r\n },\r\n \"rewind\": {\r\n \"keywords\": [\"play\", \"blue-square\"],\r\n \"char\": \"⏪\",\r\n \"category\": \"symbols\"\r\n },\r\n \"twisted_rightwards_arrows\": {\r\n \"keywords\": [\"blue-square\", \"shuffle\", \"music\", \"random\"],\r\n \"char\": \"🔀\",\r\n \"category\": \"symbols\"\r\n },\r\n \"repeat\": {\r\n \"keywords\": [\"loop\", \"record\"],\r\n \"char\": \"🔁\",\r\n \"category\": \"symbols\"\r\n },\r\n \"repeat_one\": {\r\n \"keywords\": [\"blue-square\", \"loop\"],\r\n \"char\": \"🔂\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_backward\": {\r\n \"keywords\": [\"blue-square\", \"left\", \"direction\"],\r\n \"char\": \"◀️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_up_small\": {\r\n \"keywords\": [\"blue-square\", \"triangle\", \"direction\", \"point\", \"forward\", \"top\"],\r\n \"char\": \"🔼\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_down_small\": {\r\n \"keywords\": [\"blue-square\", \"direction\", \"bottom\"],\r\n \"char\": \"🔽\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_double_up\": {\r\n \"keywords\": [\"blue-square\", \"direction\", \"top\"],\r\n \"char\": \"⏫\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_double_down\": {\r\n \"keywords\": [\"blue-square\", \"direction\", \"bottom\"],\r\n \"char\": \"⏬\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_right\": {\r\n \"keywords\": [\"blue-square\", \"next\"],\r\n \"char\": \"➡️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_left\": {\r\n \"keywords\": [\"blue-square\", \"previous\", \"back\"],\r\n \"char\": \"⬅️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_up\": {\r\n \"keywords\": [\"blue-square\", \"continue\", \"top\", \"direction\"],\r\n \"char\": \"⬆️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_down\": {\r\n \"keywords\": [\"blue-square\", \"direction\", \"bottom\"],\r\n \"char\": \"⬇️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_upper_right\": {\r\n \"keywords\": [\"blue-square\", \"point\", \"direction\", \"diagonal\", \"northeast\"],\r\n \"char\": \"↗️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_lower_right\": {\r\n \"keywords\": [\"blue-square\", \"direction\", \"diagonal\", \"southeast\"],\r\n \"char\": \"↘️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_lower_left\": {\r\n \"keywords\": [\"blue-square\", \"direction\", \"diagonal\", \"southwest\"],\r\n \"char\": \"↙️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_upper_left\": {\r\n \"keywords\": [\"blue-square\", \"point\", \"direction\", \"diagonal\", \"northwest\"],\r\n \"char\": \"↖️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_up_down\": {\r\n \"keywords\": [\"blue-square\", \"direction\", \"way\", \"vertical\"],\r\n \"char\": \"↕️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"left_right_arrow\": {\r\n \"keywords\": [\"shape\", \"direction\", \"horizontal\", \"sideways\"],\r\n \"char\": \"↔️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrows_counterclockwise\": {\r\n \"keywords\": [\"blue-square\", \"sync\", \"cycle\"],\r\n \"char\": \"🔄\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_right_hook\": {\r\n \"keywords\": [\"blue-square\", \"return\", \"rotate\", \"direction\"],\r\n \"char\": \"↪️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"leftwards_arrow_with_hook\": {\r\n \"keywords\": [\"back\", \"return\", \"blue-square\", \"undo\", \"enter\"],\r\n \"char\": \"↩️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_heading_up\": {\r\n \"keywords\": [\"blue-square\", \"direction\", \"top\"],\r\n \"char\": \"⤴️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_heading_down\": {\r\n \"keywords\": [\"blue-square\", \"direction\", \"bottom\"],\r\n \"char\": \"⤵️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"hash\": {\r\n \"keywords\": [\"symbol\", \"blue-square\", \"twitter\"],\r\n \"char\": \"#️⃣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"information_source\": {\r\n \"keywords\": [\"blue-square\", \"alphabet\", \"letter\"],\r\n \"char\": \"ℹ️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"abc\": {\r\n \"keywords\": [\"blue-square\", \"alphabet\"],\r\n \"char\": \"🔤\",\r\n \"category\": \"symbols\"\r\n },\r\n \"abcd\": {\r\n \"keywords\": [\"blue-square\", \"alphabet\"],\r\n \"char\": \"🔡\",\r\n \"category\": \"symbols\"\r\n },\r\n \"capital_abcd\": {\r\n \"keywords\": [\"alphabet\", \"words\", \"blue-square\"],\r\n \"char\": \"🔠\",\r\n \"category\": \"symbols\"\r\n },\r\n \"symbols\": {\r\n \"keywords\": [\"blue-square\", \"music\", \"note\", \"ampersand\", \"percent\", \"glyphs\", \"characters\"],\r\n \"char\": \"🔣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"musical_note\": {\r\n \"keywords\": [\"score\", \"tone\", \"sound\"],\r\n \"char\": \"🎵\",\r\n \"category\": \"symbols\"\r\n },\r\n \"notes\": {\r\n \"keywords\": [\"music\", \"score\"],\r\n \"char\": \"🎶\",\r\n \"category\": \"symbols\"\r\n },\r\n \"wavy_dash\": {\r\n \"keywords\": [\"draw\", \"line\", \"moustache\", \"mustache\", \"squiggle\", \"scribble\"],\r\n \"char\": \"〰️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"curly_loop\": {\r\n \"keywords\": [\"scribble\", \"draw\", \"shape\", \"squiggle\"],\r\n \"char\": \"➰\",\r\n \"category\": \"symbols\"\r\n },\r\n \"heavy_check_mark\": {\r\n \"keywords\": [\"ok\", \"nike\", \"answer\", \"yes\", \"tick\"],\r\n \"char\": \"✔️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrows_clockwise\": {\r\n \"keywords\": [\"sync\", \"cycle\", \"round\", \"repeat\"],\r\n \"char\": \"🔃\",\r\n \"category\": \"symbols\"\r\n },\r\n \"heavy_plus_sign\": {\r\n \"keywords\": [\"math\", \"calculation\", \"addition\", \"more\", \"increase\"],\r\n \"char\": \"➕\",\r\n \"category\": \"symbols\"\r\n },\r\n \"heavy_minus_sign\": {\r\n \"keywords\": [\"math\", \"calculation\", \"subtract\", \"less\"],\r\n \"char\": \"➖\",\r\n \"category\": \"symbols\"\r\n },\r\n \"heavy_division_sign\": {\r\n \"keywords\": [\"divide\", \"math\", \"calculation\"],\r\n \"char\": \"➗\",\r\n \"category\": \"symbols\"\r\n },\r\n \"heavy_multiplication_x\": {\r\n \"keywords\": [\"math\", \"calculation\"],\r\n \"char\": \"✖️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"heavy_dollar_sign\": {\r\n \"keywords\": [\"money\", \"sales\", \"payment\", \"currency\", \"buck\"],\r\n \"char\": \"💲\",\r\n \"category\": \"symbols\"\r\n },\r\n \"currency_exchange\": {\r\n \"keywords\": [\"money\", \"sales\", \"dollar\", \"travel\"],\r\n \"char\": \"💱\",\r\n \"category\": \"symbols\"\r\n },\r\n \"copyright\": {\r\n \"keywords\": [\"ip\", \"license\", \"circle\", \"law\", \"legal\"],\r\n \"char\": \"©️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"registered\": {\r\n \"keywords\": [\"alphabet\", \"circle\"],\r\n \"char\": \"®️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"tm\": {\r\n \"keywords\": [\"trademark\", \"brand\", \"law\", \"legal\"],\r\n \"char\": \"™️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"end\": {\r\n \"keywords\": [\"words\", \"arrow\"],\r\n \"char\": \"🔚\",\r\n \"category\": \"symbols\"\r\n },\r\n \"back\": {\r\n \"keywords\": [\"arrow\", \"words\", \"return\"],\r\n \"char\": \"🔙\",\r\n \"category\": \"symbols\"\r\n },\r\n \"on\": {\r\n \"keywords\": [\"arrow\", \"words\"],\r\n \"char\": \"🔛\",\r\n \"category\": \"symbols\"\r\n },\r\n \"top\": {\r\n \"keywords\": [\"words\", \"blue-square\"],\r\n \"char\": \"🔝\",\r\n \"category\": \"symbols\"\r\n },\r\n \"soon\": {\r\n \"keywords\": [\"arrow\", \"words\"],\r\n \"char\": \"🔜\",\r\n \"category\": \"symbols\"\r\n },\r\n \"ballot_box_with_check\": {\r\n \"keywords\": [\"ok\", \"agree\", \"confirm\", \"black-square\", \"vote\", \"election\", \"yes\"],\r\n \"char\": \"☑️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"radio_button\": {\r\n \"keywords\": [\"input\", \"old\", \"music\", \"circle\"],\r\n \"char\": \"🔘\",\r\n \"category\": \"symbols\"\r\n },\r\n \"white_circle\": {\r\n \"keywords\": [\"shape\", \"round\"],\r\n \"char\": \"⚪\",\r\n \"category\": \"symbols\"\r\n },\r\n \"black_circle\": {\r\n \"keywords\": [\"shape\", \"button\", \"round\"],\r\n \"char\": \"⚫\",\r\n \"category\": \"symbols\"\r\n },\r\n \"red_circle\": {\r\n \"keywords\": [\"shape\", \"error\", \"danger\"],\r\n \"char\": \"🔴\",\r\n \"category\": \"symbols\"\r\n },\r\n \"large_blue_circle\": {\r\n \"keywords\": [\"shape\", \"icon\", \"button\"],\r\n \"char\": \"🔵\",\r\n \"category\": \"symbols\"\r\n },\r\n \"small_orange_diamond\": {\r\n \"keywords\": [\"shape\", \"jewel\", \"gem\"],\r\n \"char\": \"🔸\",\r\n \"category\": \"symbols\"\r\n },\r\n \"small_blue_diamond\": {\r\n \"keywords\": [\"shape\", \"jewel\", \"gem\"],\r\n \"char\": \"🔹\",\r\n \"category\": \"symbols\"\r\n },\r\n \"large_orange_diamond\": {\r\n \"keywords\": [\"shape\", \"jewel\", \"gem\"],\r\n \"char\": \"🔶\",\r\n \"category\": \"symbols\"\r\n },\r\n \"large_blue_diamond\": {\r\n \"keywords\": [\"shape\", \"jewel\", \"gem\"],\r\n \"char\": \"🔷\",\r\n \"category\": \"symbols\"\r\n },\r\n \"small_red_triangle\": {\r\n \"keywords\": [\"shape\", \"direction\", \"up\", \"top\"],\r\n \"char\": \"🔺\",\r\n \"category\": \"symbols\"\r\n },\r\n \"black_small_square\": {\r\n \"keywords\": [\"shape\", \"icon\"],\r\n \"char\": \"▪️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"white_small_square\": {\r\n \"keywords\": [\"shape\", \"icon\"],\r\n \"char\": \"▫️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"black_large_square\": {\r\n \"keywords\": [\"shape\", \"icon\", \"button\"],\r\n \"char\": \"⬛\",\r\n \"category\": \"symbols\"\r\n },\r\n \"white_large_square\": {\r\n \"keywords\": [\"shape\", \"icon\", \"stone\", \"button\"],\r\n \"char\": \"⬜\",\r\n \"category\": \"symbols\"\r\n },\r\n \"small_red_triangle_down\": {\r\n \"keywords\": [\"shape\", \"direction\", \"bottom\"],\r\n \"char\": \"🔻\",\r\n \"category\": \"symbols\"\r\n },\r\n \"black_medium_square\": {\r\n \"keywords\": [\"shape\", \"button\", \"icon\"],\r\n \"char\": \"◼️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"white_medium_square\": {\r\n \"keywords\": [\"shape\", \"stone\", \"icon\"],\r\n \"char\": \"◻️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"black_medium_small_square\": {\r\n \"keywords\": [\"icon\", \"shape\", \"button\"],\r\n \"char\": \"◾\",\r\n \"category\": \"symbols\"\r\n },\r\n \"white_medium_small_square\": {\r\n \"keywords\": [\"shape\", \"stone\", \"icon\", \"button\"],\r\n \"char\": \"◽\",\r\n \"category\": \"symbols\"\r\n },\r\n \"black_square_button\": {\r\n \"keywords\": [\"shape\", \"input\", \"frame\"],\r\n \"char\": \"🔲\",\r\n \"category\": \"symbols\"\r\n },\r\n \"white_square_button\": {\r\n \"keywords\": [\"shape\", \"input\"],\r\n \"char\": \"🔳\",\r\n \"category\": \"symbols\"\r\n },\r\n \"speaker\": {\r\n \"keywords\": [\"sound\", \"volume\", \"silence\", \"broadcast\"],\r\n \"char\": \"🔈\",\r\n \"category\": \"symbols\"\r\n },\r\n \"sound\": {\r\n \"keywords\": [\"volume\", \"speaker\", \"broadcast\"],\r\n \"char\": \"🔉\",\r\n \"category\": \"symbols\"\r\n },\r\n \"loud_sound\": {\r\n \"keywords\": [\"volume\", \"noise\", \"noisy\", \"speaker\", \"broadcast\"],\r\n \"char\": \"🔊\",\r\n \"category\": \"symbols\"\r\n },\r\n \"mute\": {\r\n \"keywords\": [\"sound\", \"volume\", \"silence\", \"quiet\"],\r\n \"char\": \"🔇\",\r\n \"category\": \"symbols\"\r\n },\r\n \"mega\": {\r\n \"keywords\": [\"sound\", \"speaker\", \"volume\"],\r\n \"char\": \"📣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"loudspeaker\": {\r\n \"keywords\": [\"volume\", \"sound\"],\r\n \"char\": \"📢\",\r\n \"category\": \"symbols\"\r\n },\r\n \"bell\": {\r\n \"keywords\": [\"sound\", \"notification\", \"christmas\", \"xmas\", \"chime\"],\r\n \"char\": \"🔔\",\r\n \"category\": \"symbols\"\r\n },\r\n \"no_bell\": {\r\n \"keywords\": [\"sound\", \"volume\", \"mute\", \"quiet\", \"silent\"],\r\n \"char\": \"🔕\",\r\n \"category\": \"symbols\"\r\n },\r\n \"black_joker\": {\r\n \"keywords\": [\"poker\", \"cards\", \"game\", \"play\", \"magic\"],\r\n \"char\": \"🃏\",\r\n \"category\": \"symbols\"\r\n },\r\n \"mahjong\": {\r\n \"keywords\": [\"game\", \"play\", \"chinese\", \"kanji\"],\r\n \"char\": \"🀄\",\r\n \"category\": \"symbols\"\r\n },\r\n \"spades\": {\r\n \"keywords\": [\"poker\", \"cards\", \"suits\", \"magic\"],\r\n \"char\": \"♠️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clubs\": {\r\n \"keywords\": [\"poker\", \"cards\", \"magic\", \"suits\"],\r\n \"char\": \"♣️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"hearts\": {\r\n \"keywords\": [\"poker\", \"cards\", \"magic\", \"suits\"],\r\n \"char\": \"♥️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"diamonds\": {\r\n \"keywords\": [\"poker\", \"cards\", \"magic\", \"suits\"],\r\n \"char\": \"♦️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"flower_playing_cards\": {\r\n \"keywords\": [\"game\", \"sunset\", \"red\"],\r\n \"char\": \"🎴\",\r\n \"category\": \"symbols\"\r\n },\r\n \"thought_balloon\": {\r\n \"keywords\": [\"bubble\", \"cloud\", \"speech\", \"thinking\"],\r\n \"char\": \"💭\",\r\n \"category\": \"symbols\"\r\n },\r\n \"right_anger_bubble\": {\r\n \"keywords\": [\"caption\", \"speech\", \"thinking\", \"mad\"],\r\n \"char\": \"🗯\",\r\n \"category\": \"symbols\"\r\n },\r\n \"speech_balloon\": {\r\n \"keywords\": [\"bubble\", \"words\", \"message\", \"talk\", \"chatting\"],\r\n \"char\": \"💬\",\r\n \"category\": \"symbols\"\r\n },\r\n \"left_speech_bubble\": {\r\n \"keywords\": [\"words\", \"message\", \"talk\", \"chatting\"],\r\n \"char\": \"🗨\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock1\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕐\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock2\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕑\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock3\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕒\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock4\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕓\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock5\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕔\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock6\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\", \"dawn\", \"dusk\"],\r\n \"char\": \"🕕\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock7\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕖\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock8\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕗\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock9\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕘\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock10\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕙\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock11\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕚\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock12\": {\r\n \"keywords\": [\"time\", \"noon\", \"midnight\", \"midday\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕛\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock130\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕜\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock230\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕝\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock330\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕞\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock430\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕟\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock530\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕠\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock630\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕡\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock730\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕢\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock830\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock930\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕤\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock1030\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕥\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock1130\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕦\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock1230\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕧\",\r\n \"category\": \"symbols\"\r\n },\r\n \"af\": {\r\n \"keywords\": [\"afghanistan\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇫\",\r\n \"category\": \"flags\"\r\n },\r\n \"ax\": {\r\n \"keywords\": [\"Åland\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇽\",\r\n \"category\": \"flags\"\r\n },\r\n \"al\": {\r\n \"keywords\": [\"albania\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇱\",\r\n \"category\": \"flags\"\r\n },\r\n \"dz\": {\r\n \"keywords\": [\"algeria\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇩🇿\",\r\n \"category\": \"flags\"\r\n },\r\n \"as\": {\r\n \"keywords\": [\"american\", \"samoa\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇸\",\r\n \"category\": \"flags\"\r\n },\r\n \"ad\": {\r\n \"keywords\": [\"andorra\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇩\",\r\n \"category\": \"flags\"\r\n },\r\n \"ao\": {\r\n \"keywords\": [\"angola\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇴\",\r\n \"category\": \"flags\"\r\n },\r\n \"ai\": {\r\n \"keywords\": [\"anguilla\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇮\",\r\n \"category\": \"flags\"\r\n },\r\n \"aq\": {\r\n \"keywords\": [\"antarctica\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇶\",\r\n \"category\": \"flags\"\r\n },\r\n \"ag\": {\r\n \"keywords\": [\"antigua\", \"barbuda\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇬\",\r\n \"category\": \"flags\"\r\n },\r\n \"ar\": {\r\n \"keywords\": [\"argentina\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"am\": {\r\n \"keywords\": [\"armenia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"aw\": {\r\n \"keywords\": [\"aruba\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇼\",\r\n \"category\": \"flags\"\r\n },\r\n \"au\": {\r\n \"keywords\": [\"australia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇺\",\r\n \"category\": \"flags\"\r\n },\r\n \"at\": {\r\n \"keywords\": [\"austria\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇹\",\r\n \"category\": \"flags\"\r\n },\r\n \"az\": {\r\n \"keywords\": [\"azerbaijan\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇿\",\r\n \"category\": \"flags\"\r\n },\r\n \"bs\": {\r\n \"keywords\": [\"bahamas\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇸\",\r\n \"category\": \"flags\"\r\n },\r\n \"bh\": {\r\n \"keywords\": [\"bahrain\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇭\",\r\n \"category\": \"flags\"\r\n },\r\n \"bd\": {\r\n \"keywords\": [\"bangladesh\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇩\",\r\n \"category\": \"flags\"\r\n },\r\n \"bb\": {\r\n \"keywords\": [\"barbados\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇧\",\r\n \"category\": \"flags\"\r\n },\r\n \"by\": {\r\n \"keywords\": [\"belarus\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇾\",\r\n \"category\": \"flags\"\r\n },\r\n \"be\": {\r\n \"keywords\": [\"belgium\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"bz\": {\r\n \"keywords\": [\"belize\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇿\",\r\n \"category\": \"flags\"\r\n },\r\n \"bj\": {\r\n \"keywords\": [\"benin\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇯\",\r\n \"category\": \"flags\"\r\n },\r\n \"bm\": {\r\n \"keywords\": [\"bermuda\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"bt\": {\r\n \"keywords\": [\"bhutan\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇹\",\r\n \"category\": \"flags\"\r\n },\r\n \"bo\": {\r\n \"keywords\": [\"bolivia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇴\",\r\n \"category\": \"flags\"\r\n },\r\n \"bq\": {\r\n \"keywords\": [\"bonaire\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇶\",\r\n \"category\": \"flags\"\r\n },\r\n \"ba\": {\r\n \"keywords\": [\"bosnia\", \"herzegovina\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇦\",\r\n \"category\": \"flags\"\r\n },\r\n \"bw\": {\r\n \"keywords\": [\"botswana\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇼\",\r\n \"category\": \"flags\"\r\n },\r\n \"br\": {\r\n \"keywords\": [\"brazil\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"io\": {\r\n \"keywords\": [\"british\", \"indian\", \"ocean\", \"territory\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇮🇴\",\r\n \"category\": \"flags\"\r\n },\r\n \"vg\": {\r\n \"keywords\": [\"british\", \"virgin\", \"islands\", \"bvi\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇻🇬\",\r\n \"category\": \"flags\"\r\n },\r\n \"bn\": {\r\n \"keywords\": [\"brunei\", \"darussalam\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇳\",\r\n \"category\": \"flags\"\r\n },\r\n \"bg\": {\r\n \"keywords\": [\"bulgaria\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇬\",\r\n \"category\": \"flags\"\r\n },\r\n \"bf\": {\r\n \"keywords\": [\"burkina\", \"faso\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇫\",\r\n \"category\": \"flags\"\r\n },\r\n \"bi\": {\r\n \"keywords\": [\"burundi\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇮\",\r\n \"category\": \"flags\"\r\n },\r\n \"cv\": {\r\n \"keywords\": [\"cabo\", \"verde\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇻\",\r\n \"category\": \"flags\"\r\n },\r\n \"kh\": {\r\n \"keywords\": [\"cambodia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇰🇭\",\r\n \"category\": \"flags\"\r\n },\r\n \"cm\": {\r\n \"keywords\": [\"cameroon\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"ca\": {\r\n \"keywords\": [\"canada\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇦\",\r\n \"category\": \"flags\"\r\n },\r\n \"ic\": {\r\n \"keywords\": [\"canary\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇮🇨\",\r\n \"category\": \"flags\"\r\n },\r\n \"ky\": {\r\n \"keywords\": [\"cayman\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇰🇾\",\r\n \"category\": \"flags\"\r\n },\r\n \"cf\": {\r\n \"keywords\": [\"central\", \"african\", \"republic\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇫\",\r\n \"category\": \"flags\"\r\n },\r\n \"td\": {\r\n \"keywords\": [\"chad\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇩\",\r\n \"category\": \"flags\"\r\n },\r\n \"chile\": {\r\n \"keywords\": [\"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇱\",\r\n \"category\": \"flags\"\r\n },\r\n \"cn\": {\r\n \"keywords\": [\"china\", \"chinese\", \"prc\", \"flag\", \"country\", \"nation\", \"banner\"],\r\n \"char\": \"🇨🇳\",\r\n \"category\": \"flags\"\r\n },\r\n \"cx\": {\r\n \"keywords\": [\"christmas\", \"island\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇽\",\r\n \"category\": \"flags\"\r\n },\r\n \"cc\": {\r\n \"keywords\": [\"cocos\", \"keeling\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇨\",\r\n \"category\": \"flags\"\r\n },\r\n \"co\": {\r\n \"keywords\": [\"colombia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇴\",\r\n \"category\": \"flags\"\r\n },\r\n \"km\": {\r\n \"keywords\": [\"comoros\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇰🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"cg\": {\r\n \"keywords\": [\"congo\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇬\",\r\n \"category\": \"flags\"\r\n },\r\n \"drc\": {\r\n \"keywords\": [\"congo\", \"democratic\", \"republic\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇩\",\r\n \"category\": \"flags\"\r\n },\r\n \"ck\": {\r\n \"keywords\": [\"cook\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇰\",\r\n \"category\": \"flags\"\r\n },\r\n \"cr\": {\r\n \"keywords\": [\"costa\", \"rica\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"hr\": {\r\n \"keywords\": [\"croatia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇭🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"cu\": {\r\n \"keywords\": [\"cuba\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇺\",\r\n \"category\": \"flags\"\r\n },\r\n \"cw\": {\r\n \"keywords\": [\"curaçao\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇼\",\r\n \"category\": \"flags\"\r\n },\r\n \"cy\": {\r\n \"keywords\": [\"cyprus\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇾\",\r\n \"category\": \"flags\"\r\n },\r\n \"cz\": {\r\n \"keywords\": [\"czech_republic\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇿\",\r\n \"category\": \"flags\"\r\n },\r\n \"dk\": {\r\n \"keywords\": [\"denmark\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇩🇰\",\r\n \"category\": \"flags\"\r\n },\r\n \"dj\": {\r\n \"keywords\": [\"djibouti\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇩🇯\",\r\n \"category\": \"flags\"\r\n },\r\n \"dm\": {\r\n \"keywords\": [\"dominica\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇩🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"do\": {\r\n \"keywords\": [\"dominican\", \"republic\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇩🇴\",\r\n \"category\": \"flags\"\r\n },\r\n \"ec\": {\r\n \"keywords\": [\"ecuador\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇪🇨\",\r\n \"category\": \"flags\"\r\n },\r\n \"eg\": {\r\n \"keywords\": [\"egypt\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇪🇬\",\r\n \"category\": \"flags\"\r\n },\r\n \"sv\": {\r\n \"keywords\": [\"el\", \"salvador\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇻\",\r\n \"category\": \"flags\"\r\n },\r\n \"gq\": {\r\n \"keywords\": [\"equatorial\", \"guinea\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇶\",\r\n \"category\": \"flags\"\r\n },\r\n \"er\": {\r\n \"keywords\": [\"eritrea\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇪🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"ee\": {\r\n \"keywords\": [\"estonia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇪🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"et\": {\r\n \"keywords\": [\"ethiopia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇪🇹\",\r\n \"category\": \"flags\"\r\n },\r\n \"eu\": {\r\n \"keywords\": [\"european\", \"union\", \"flag\", \"banner\"],\r\n \"char\": \"🇪🇺\",\r\n \"category\": \"flags\"\r\n },\r\n \"fk\": {\r\n \"keywords\": [\"falkland\", \"islands\", \"malvinas\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇫🇰\",\r\n \"category\": \"flags\"\r\n },\r\n \"fo\": {\r\n \"keywords\": [\"faroe\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇫🇴\",\r\n \"category\": \"flags\"\r\n },\r\n \"fj\": {\r\n \"keywords\": [\"fiji\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇫🇯\",\r\n \"category\": \"flags\"\r\n },\r\n \"fi\": {\r\n \"keywords\": [\"finland\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇫🇮\",\r\n \"category\": \"flags\"\r\n },\r\n \"fr\": {\r\n \"keywords\": [\"banner\", \"flag\", \"nation\", \"france\", \"french\", \"country\"],\r\n \"char\": \"🇫🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"gf\": {\r\n \"keywords\": [\"french\", \"guiana\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇫\",\r\n \"category\": \"flags\"\r\n },\r\n \"pf\": {\r\n \"keywords\": [\"french\", \"polynesia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇫\",\r\n \"category\": \"flags\"\r\n },\r\n \"tf\": {\r\n \"keywords\": [\"french\", \"southern\", \"territories\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇫\",\r\n \"category\": \"flags\"\r\n },\r\n \"ga\": {\r\n \"keywords\": [\"gabon\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇦\",\r\n \"category\": \"flags\"\r\n },\r\n \"gm\": {\r\n \"keywords\": [\"gambia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"ge\": {\r\n \"keywords\": [\"georgia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"de\": {\r\n \"keywords\": [\"german\", \"nation\", \"flag\", \"country\", \"banner\"],\r\n \"char\": \"🇩🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"gh\": {\r\n \"keywords\": [\"ghana\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇭\",\r\n \"category\": \"flags\"\r\n },\r\n \"gi\": {\r\n \"keywords\": [\"gibraltar\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇮\",\r\n \"category\": \"flags\"\r\n },\r\n \"gr\": {\r\n \"keywords\": [\"greece\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"gl\": {\r\n \"keywords\": [\"greenland\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇱\",\r\n \"category\": \"flags\"\r\n },\r\n \"gd\": {\r\n \"keywords\": [\"grenada\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇩\",\r\n \"category\": \"flags\"\r\n },\r\n \"gp\": {\r\n \"keywords\": [\"guadeloupe\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇵\",\r\n \"category\": \"flags\"\r\n },\r\n \"gu\": {\r\n \"keywords\": [\"guam\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇺\",\r\n \"category\": \"flags\"\r\n },\r\n \"gt\": {\r\n \"keywords\": [\"guatemala\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇹\",\r\n \"category\": \"flags\"\r\n },\r\n \"gg\": {\r\n \"keywords\": [\"guernsey\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇬\",\r\n \"category\": \"flags\"\r\n },\r\n \"gn\": {\r\n \"keywords\": [\"guinea\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇳\",\r\n \"category\": \"flags\"\r\n },\r\n \"gw\": {\r\n \"keywords\": [\"guinea\", \"bissau\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇼\",\r\n \"category\": \"flags\"\r\n },\r\n \"gy\": {\r\n \"keywords\": [\"guyana\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇾\",\r\n \"category\": \"flags\"\r\n },\r\n \"ht\": {\r\n \"keywords\": [\"haiti\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇭🇹\",\r\n \"category\": \"flags\"\r\n },\r\n \"hn\": {\r\n \"keywords\": [\"honduras\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇭🇳\",\r\n \"category\": \"flags\"\r\n },\r\n \"hk\": {\r\n \"keywords\": [\"hong\", \"kong\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇭🇰\",\r\n \"category\": \"flags\"\r\n },\r\n \"hu\": {\r\n \"keywords\": [\"hungary\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇭🇺\",\r\n \"category\": \"flags\"\r\n },\r\n \"is\": {\r\n \"keywords\": [\"iceland\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇮🇸\",\r\n \"category\": \"flags\"\r\n },\r\n \"in\": {\r\n \"keywords\": [\"india\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇮🇳\",\r\n \"category\": \"flags\"\r\n },\r\n \"indonesia\": {\r\n \"keywords\": [\"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇮🇩\",\r\n \"category\": \"flags\"\r\n },\r\n \"ir\": {\r\n \"keywords\": [\"iran,\", \"islamic\", \"republic\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇮🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"iq\": {\r\n \"keywords\": [\"iraq\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇮🇶\",\r\n \"category\": \"flags\"\r\n },\r\n \"ie\": {\r\n \"keywords\": [\"ireland\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇮🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"im\": {\r\n \"keywords\": [\"isle\", \"man\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇮🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"il\": {\r\n \"keywords\": [\"israel\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇮🇱\",\r\n \"category\": \"flags\"\r\n },\r\n \"it\": {\r\n \"keywords\": [\"italy\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇮🇹\",\r\n \"category\": \"flags\"\r\n },\r\n \"ci\": {\r\n \"keywords\": [\"ivory\", \"coast\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇮\",\r\n \"category\": \"flags\"\r\n },\r\n \"jm\": {\r\n \"keywords\": [\"jamaica\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇯🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"jp\": {\r\n \"keywords\": [\"japanese\", \"nation\", \"flag\", \"country\", \"banner\"],\r\n \"char\": \"🇯🇵\",\r\n \"category\": \"flags\"\r\n },\r\n \"je\": {\r\n \"keywords\": [\"jersey\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇯🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"jo\": {\r\n \"keywords\": [\"jordan\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇯🇴\",\r\n \"category\": \"flags\"\r\n },\r\n \"kz\": {\r\n \"keywords\": [\"kazakhstan\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇰🇿\",\r\n \"category\": \"flags\"\r\n },\r\n \"ke\": {\r\n \"keywords\": [\"kenya\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇰🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"ki\": {\r\n \"keywords\": [\"kiribati\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇰🇮\",\r\n \"category\": \"flags\"\r\n },\r\n \"xk\": {\r\n \"keywords\": [\"kosovo\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇽🇰\",\r\n \"category\": \"flags\"\r\n },\r\n \"kw\": {\r\n \"keywords\": [\"kuwait\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇰🇼\",\r\n \"category\": \"flags\"\r\n },\r\n \"kg\": {\r\n \"keywords\": [\"kyrgyzstan\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇰🇬\",\r\n \"category\": \"flags\"\r\n },\r\n \"la\": {\r\n \"keywords\": [\"lao\", \"democratic\", \"republic\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇱🇦\",\r\n \"category\": \"flags\"\r\n },\r\n \"lv\": {\r\n \"keywords\": [\"latvia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇱🇻\",\r\n \"category\": \"flags\"\r\n },\r\n \"lb\": {\r\n \"keywords\": [\"lebanon\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇱🇧\",\r\n \"category\": \"flags\"\r\n },\r\n \"ls\": {\r\n \"keywords\": [\"lesotho\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇱🇸\",\r\n \"category\": \"flags\"\r\n },\r\n \"lr\": {\r\n \"keywords\": [\"liberia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇱🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"ly\": {\r\n \"keywords\": [\"libya\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇱🇾\",\r\n \"category\": \"flags\"\r\n },\r\n \"li\": {\r\n \"keywords\": [\"liechtenstein\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇱🇮\",\r\n \"category\": \"flags\"\r\n },\r\n \"lt\": {\r\n \"keywords\": [\"lithuania\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇱🇹\",\r\n \"category\": \"flags\"\r\n },\r\n \"lu\": {\r\n \"keywords\": [\"luxembourg\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇱🇺\",\r\n \"category\": \"flags\"\r\n },\r\n \"mo\": {\r\n \"keywords\": [\"macao\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇴\",\r\n \"category\": \"flags\"\r\n },\r\n \"mk\": {\r\n \"keywords\": [\"macedonia,\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇰\",\r\n \"category\": \"flags\"\r\n },\r\n \"mg\": {\r\n \"keywords\": [\"madagascar\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇬\",\r\n \"category\": \"flags\"\r\n },\r\n \"mw\": {\r\n \"keywords\": [\"malawi\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇼\",\r\n \"category\": \"flags\"\r\n },\r\n \"my\": {\r\n \"keywords\": [\"malaysia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇾\",\r\n \"category\": \"flags\"\r\n },\r\n \"mv\": {\r\n \"keywords\": [\"maldives\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇻\",\r\n \"category\": \"flags\"\r\n },\r\n \"ml\": {\r\n \"keywords\": [\"mali\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇱\",\r\n \"category\": \"flags\"\r\n },\r\n \"mt\": {\r\n \"keywords\": [\"malta\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇹\",\r\n \"category\": \"flags\"\r\n },\r\n \"mh\": {\r\n \"keywords\": [\"marshall\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇭\",\r\n \"category\": \"flags\"\r\n },\r\n \"mq\": {\r\n \"keywords\": [\"martinique\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇶\",\r\n \"category\": \"flags\"\r\n },\r\n \"mr\": {\r\n \"keywords\": [\"mauritania\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"mu\": {\r\n \"keywords\": [\"mauritius\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇺\",\r\n \"category\": \"flags\"\r\n },\r\n \"yt\": {\r\n \"keywords\": [\"mayotte\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇾🇹\",\r\n \"category\": \"flags\"\r\n },\r\n \"mx\": {\r\n \"keywords\": [\"mexico\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇽\",\r\n \"category\": \"flags\"\r\n },\r\n \"fm\": {\r\n \"keywords\": [\"micronesia,\", \"federated\", \"states\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇫🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"md\": {\r\n \"keywords\": [\"moldova,\", \"republic\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇩\",\r\n \"category\": \"flags\"\r\n },\r\n \"mc\": {\r\n \"keywords\": [\"monaco\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇨\",\r\n \"category\": \"flags\"\r\n },\r\n \"mn\": {\r\n \"keywords\": [\"mongolia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇳\",\r\n \"category\": \"flags\"\r\n },\r\n \"me\": {\r\n \"keywords\": [\"montenegro\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"ms\": {\r\n \"keywords\": [\"montserrat\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇸\",\r\n \"category\": \"flags\"\r\n },\r\n \"ma\": {\r\n \"keywords\": [\"morocco\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇦\",\r\n \"category\": \"flags\"\r\n },\r\n \"mz\": {\r\n \"keywords\": [\"mozambique\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇿\",\r\n \"category\": \"flags\"\r\n },\r\n \"mm\": {\r\n \"keywords\": [\"myanmar\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"na\": {\r\n \"keywords\": [\"namibia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇳🇦\",\r\n \"category\": \"flags\"\r\n },\r\n \"nr\": {\r\n \"keywords\": [\"nauru\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇳🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"np\": {\r\n \"keywords\": [\"nepal\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇳🇵\",\r\n \"category\": \"flags\"\r\n },\r\n \"nl\": {\r\n \"keywords\": [\"netherlands\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇳🇱\",\r\n \"category\": \"flags\"\r\n },\r\n \"nc\": {\r\n \"keywords\": [\"new\", \"caledonia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇳🇨\",\r\n \"category\": \"flags\"\r\n },\r\n \"nz\": {\r\n \"keywords\": [\"new\", \"zealand\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇳🇿\",\r\n \"category\": \"flags\"\r\n },\r\n \"ni\": {\r\n \"keywords\": [\"nicaragua\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇳🇮\",\r\n \"category\": \"flags\"\r\n },\r\n \"ne\": {\r\n \"keywords\": [\"niger\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇳🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"nigeria\": {\r\n \"keywords\": [\"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇳🇬\",\r\n \"category\": \"flags\"\r\n },\r\n \"nu\": {\r\n \"keywords\": [\"niue\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇳🇺\",\r\n \"category\": \"flags\"\r\n },\r\n \"nf\": {\r\n \"keywords\": [\"norfolk\", \"island\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇳🇫\",\r\n \"category\": \"flags\"\r\n },\r\n \"mp\": {\r\n \"keywords\": [\"northern\", \"mariana\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇵\",\r\n \"category\": \"flags\"\r\n },\r\n \"kp\": {\r\n \"keywords\": [\"north\", \"korea\", \"nation\", \"flag\", \"country\", \"banner\"],\r\n \"char\": \"🇰🇵\",\r\n \"category\": \"flags\"\r\n },\r\n \"no\": {\r\n \"keywords\": [\"norway\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇳🇴\",\r\n \"category\": \"flags\"\r\n },\r\n \"om\": {\r\n \"keywords\": [\"oman\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇴🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"pk\": {\r\n \"keywords\": [\"pakistan\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇰\",\r\n \"category\": \"flags\"\r\n },\r\n \"pw\": {\r\n \"keywords\": [\"palau\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇼\",\r\n \"category\": \"flags\"\r\n },\r\n \"ps\": {\r\n \"keywords\": [\"palestine\", \"palestinian\", \"territories\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇸\",\r\n \"category\": \"flags\"\r\n },\r\n \"pa\": {\r\n \"keywords\": [\"panama\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇦\",\r\n \"category\": \"flags\"\r\n },\r\n \"pg\": {\r\n \"keywords\": [\"papua\", \"new\", \"guinea\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇬\",\r\n \"category\": \"flags\"\r\n },\r\n \"py\": {\r\n \"keywords\": [\"paraguay\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇾\",\r\n \"category\": \"flags\"\r\n },\r\n \"pe\": {\r\n \"keywords\": [\"peru\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"ph\": {\r\n \"keywords\": [\"philippines\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇭\",\r\n \"category\": \"flags\"\r\n },\r\n \"pn\": {\r\n \"keywords\": [\"pitcairn\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇳\",\r\n \"category\": \"flags\"\r\n },\r\n \"pl\": {\r\n \"keywords\": [\"poland\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇱\",\r\n \"category\": \"flags\"\r\n },\r\n \"pt\": {\r\n \"keywords\": [\"portugal\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇹\",\r\n \"category\": \"flags\"\r\n },\r\n \"pr\": {\r\n \"keywords\": [\"puerto\", \"rico\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"qa\": {\r\n \"keywords\": [\"qatar\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇶🇦\",\r\n \"category\": \"flags\"\r\n },\r\n \"re\": {\r\n \"keywords\": [\"réunion\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇷🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"ro\": {\r\n \"keywords\": [\"romania\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇷🇴\",\r\n \"category\": \"flags\"\r\n },\r\n \"ru\": {\r\n \"keywords\": [\"russian\", \"federation\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇷🇺\",\r\n \"category\": \"flags\"\r\n },\r\n \"rw\": {\r\n \"keywords\": [\"rwanda\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇷🇼\",\r\n \"category\": \"flags\"\r\n },\r\n \"bl\": {\r\n \"keywords\": [\"saint\", \"barthélemy\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇱\",\r\n \"category\": \"flags\"\r\n },\r\n \"sh\": {\r\n \"keywords\": [\"saint\", \"helena\", \"ascension\", \"tristan\", \"cunha\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇭\",\r\n \"category\": \"flags\"\r\n },\r\n \"kn\": {\r\n \"keywords\": [\"saint\", \"kitts\", \"nevis\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇰🇳\",\r\n \"category\": \"flags\"\r\n },\r\n \"lc\": {\r\n \"keywords\": [\"saint\", \"lucia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇱🇨\",\r\n \"category\": \"flags\"\r\n },\r\n \"pm\": {\r\n \"keywords\": [\"saint\", \"pierre\", \"miquelon\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"vc\": {\r\n \"keywords\": [\"saint\", \"vincent\", \"grenadines\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇻🇨\",\r\n \"category\": \"flags\"\r\n },\r\n \"ws\": {\r\n \"keywords\": [\"samoa\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇼🇸\",\r\n \"category\": \"flags\"\r\n },\r\n \"sm\": {\r\n \"keywords\": [\"san\", \"marino\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"st\": {\r\n \"keywords\": [\"sao\", \"tome\", \"principe\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇹\",\r\n \"category\": \"flags\"\r\n },\r\n \"saudi_arabia\": {\r\n \"keywords\": [\"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇦\",\r\n \"category\": \"flags\"\r\n },\r\n \"sn\": {\r\n \"keywords\": [\"senegal\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇳\",\r\n \"category\": \"flags\"\r\n },\r\n \"rs\": {\r\n \"keywords\": [\"serbia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇷🇸\",\r\n \"category\": \"flags\"\r\n },\r\n \"sc\": {\r\n \"keywords\": [\"seychelles\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇨\",\r\n \"category\": \"flags\"\r\n },\r\n \"sl\": {\r\n \"keywords\": [\"sierra\", \"leone\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇱\",\r\n \"category\": \"flags\"\r\n },\r\n \"sg\": {\r\n \"keywords\": [\"singapore\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇬\",\r\n \"category\": \"flags\"\r\n },\r\n \"sx\": {\r\n \"keywords\": [\"sint\", \"maarten\", \"dutch\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇽\",\r\n \"category\": \"flags\"\r\n },\r\n \"sk\": {\r\n \"keywords\": [\"slovakia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇰\",\r\n \"category\": \"flags\"\r\n },\r\n \"si\": {\r\n \"keywords\": [\"slovenia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇮\",\r\n \"category\": \"flags\"\r\n },\r\n \"sb\": {\r\n \"keywords\": [\"solomon\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇧\",\r\n \"category\": \"flags\"\r\n },\r\n \"so\": {\r\n \"keywords\": [\"somalia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇴\",\r\n \"category\": \"flags\"\r\n },\r\n \"za\": {\r\n \"keywords\": [\"south\", \"africa\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇿🇦\",\r\n \"category\": \"flags\"\r\n },\r\n \"gs\": {\r\n \"keywords\": [\"south\", \"georgia\", \"sandwich\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇸\",\r\n \"category\": \"flags\"\r\n },\r\n \"kr\": {\r\n \"keywords\": [\"south\", \"korea\", \"nation\", \"flag\", \"country\", \"banner\"],\r\n \"char\": \"🇰🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"ss\": {\r\n \"keywords\": [\"south\", \"sudan\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇸\",\r\n \"category\": \"flags\"\r\n },\r\n \"es\": {\r\n \"keywords\": [\"spain\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇪🇸\",\r\n \"category\": \"flags\"\r\n },\r\n \"lk\": {\r\n \"keywords\": [\"sri\", \"lanka\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇱🇰\",\r\n \"category\": \"flags\"\r\n },\r\n \"sd\": {\r\n \"keywords\": [\"sudan\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇩\",\r\n \"category\": \"flags\"\r\n },\r\n \"sr\": {\r\n \"keywords\": [\"suriname\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"sz\": {\r\n \"keywords\": [\"swaziland\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇿\",\r\n \"category\": \"flags\"\r\n },\r\n \"se\": {\r\n \"keywords\": [\"sweden\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"ch\": {\r\n \"keywords\": [\"switzerland\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇭\",\r\n \"category\": \"flags\"\r\n },\r\n \"sy\": {\r\n \"keywords\": [\"syrian\", \"arab\", \"republic\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇾\",\r\n \"category\": \"flags\"\r\n },\r\n \"tw\": {\r\n \"keywords\": [\"taiwan\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇼\",\r\n \"category\": \"flags\"\r\n },\r\n \"tj\": {\r\n \"keywords\": [\"tajikistan\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇯\",\r\n \"category\": \"flags\"\r\n },\r\n \"tz\": {\r\n \"keywords\": [\"tanzania,\", \"united\", \"republic\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇿\",\r\n \"category\": \"flags\"\r\n },\r\n \"th\": {\r\n \"keywords\": [\"thailand\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇭\",\r\n \"category\": \"flags\"\r\n },\r\n \"tl\": {\r\n \"keywords\": [\"timor\", \"leste\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇱\",\r\n \"category\": \"flags\"\r\n },\r\n \"tg\": {\r\n \"keywords\": [\"togo\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇬\",\r\n \"category\": \"flags\"\r\n },\r\n \"tk\": {\r\n \"keywords\": [\"tokelau\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇰\",\r\n \"category\": \"flags\"\r\n },\r\n \"to\": {\r\n \"keywords\": [\"tonga\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇴\",\r\n \"category\": \"flags\"\r\n },\r\n \"tt\": {\r\n \"keywords\": [\"trinidad\", \"tobago\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇹\",\r\n \"category\": \"flags\"\r\n },\r\n \"tn\": {\r\n \"keywords\": [\"tunisia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇳\",\r\n \"category\": \"flags\"\r\n },\r\n \"tr\": {\r\n \"keywords\": [\"turkey\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"turkmenistan\": {\r\n \"keywords\": [\"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"tc\": {\r\n \"keywords\": [\"turks\", \"caicos\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇨\",\r\n \"category\": \"flags\"\r\n },\r\n \"tuvalu\": {\r\n \"keywords\": [\"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇻\",\r\n \"category\": \"flags\"\r\n },\r\n \"ug\": {\r\n \"keywords\": [\"uganda\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇺🇬\",\r\n \"category\": \"flags\"\r\n },\r\n \"ua\": {\r\n \"keywords\": [\"ukraine\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇺🇦\",\r\n \"category\": \"flags\"\r\n },\r\n \"ae\": {\r\n \"keywords\": [\"united\", \"arab\", \"emirates\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"gb\": {\r\n \"keywords\": [\"united\", \"kingdom\", \"great\", \"britain\", \"northern\", \"ireland\", \"flag\", \"nation\", \"country\", \"banner\", \"british\", \"UK\", \"english\", \"england\", \"union jack\"],\r\n \"char\": \"🇬🇧\",\r\n \"category\": \"flags\"\r\n },\r\n \"us\": {\r\n \"keywords\": [\"united\", \"states\", \"america\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇺🇸\",\r\n \"category\": \"flags\"\r\n },\r\n \"vi\": {\r\n \"keywords\": [\"virgin\", \"islands\", \"us\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇻🇮\",\r\n \"category\": \"flags\"\r\n },\r\n \"uy\": {\r\n \"keywords\": [\"uruguay\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇺🇾\",\r\n \"category\": \"flags\"\r\n },\r\n \"uz\": {\r\n \"keywords\": [\"uzbekistan\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇺🇿\",\r\n \"category\": \"flags\"\r\n },\r\n \"vu\": {\r\n \"keywords\": [\"vanuatu\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇻🇺\",\r\n \"category\": \"flags\"\r\n },\r\n \"va\": {\r\n \"keywords\": [\"vatican\", \"city\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇻🇦\",\r\n \"category\": \"flags\"\r\n },\r\n \"ve\": {\r\n \"keywords\": [\"venezuela\", \"bolivarian\", \"republic\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇻🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"vn\": {\r\n \"keywords\": [\"viet\", \"nam\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇻🇳\",\r\n \"category\": \"flags\"\r\n },\r\n \"wf\": {\r\n \"keywords\": [\"wallis\", \"futuna\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇼🇫\",\r\n \"category\": \"flags\"\r\n },\r\n \"eh\": {\r\n \"keywords\": [\"western\", \"sahara\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇪🇭\",\r\n \"category\": \"flags\"\r\n },\r\n \"ye\": {\r\n \"keywords\": [\"yemen\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇾🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"zm\": {\r\n \"keywords\": [\"zambia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇿🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"zw\": {\r\n \"keywords\": [\"zimbabwe\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇿🇼\",\r\n \"category\": \"flags\"\r\n },\r\n \"octocat\": {\r\n \"keywords\": [\"animal\", \"octopus\", \"github\", \"custom_\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"shipit\": {\r\n \"keywords\": [\"squirrel\", \"detective\", \"animal\", \"sherlock\", \"inspector\", \"custom_\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"bowtie\": {\r\n \"keywords\": [\"face\", \"formal\", \"fashion\", \"suit\", \"classy\", \"magic\", \"circus\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"neckbeard\": {\r\n \"keywords\": [\"nerdy\", \"face\", \"custom_\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"metal\": {\r\n \"keywords\": [\"fingers\", \"rocknroll\", \"concert\", \"band\", \"custom_\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"fu\": {\r\n \"keywords\": [\"fuck\", \"finger\", \"dislike\", \"thumbsdown\", \"disapprove\", \"no\", \"custom_\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"trollface\": {\r\n \"keywords\": [\"internet\", \"meme\", \"custom_\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"godmode\": {\r\n \"keywords\": [\"doom\", \"oldschool\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"goberserk\": {\r\n \"keywords\": [\"doom\", \"rage\", \"bloody\", \"hurt\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"finnadie\": {\r\n \"keywords\": [\"doom\", \"oldschool\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"feelsgood\": {\r\n \"keywords\": [\"doom\", \"oldschool\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"rage1\": {\r\n \"keywords\": [\"angry\", \"mad\", \"hate\", \"despise\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"rage2\": {\r\n \"keywords\": [\"angry\", \"mad\", \"hate\", \"despise\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"rage3\": {\r\n \"keywords\": [\"angry\", \"mad\", \"hate\", \"despise\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"rage4\": {\r\n \"keywords\": [\"angry\", \"mad\", \"hate\", \"despise\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"suspect\": {\r\n \"keywords\": [\"mad\", \"custom_\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"hurtrealbad\": {\r\n \"keywords\": [\"mad\", \"injured\", \"doom\", \"oldschool\", \"custom_\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n }\r\n}","declare var twemoji: {\r\n parse(str: string, options?: { folder: string, ext: string }): string;\r\n}\r\n\r\nimport { Component, OnInit, Output } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { Subject } from 'rxjs';\r\n\r\ninterface Emoji {\r\n\tkeywords : string[];\r\n\tchar : string;\r\n\thtml? : SafeHtml;\r\n\tcategory : string;\r\n}\r\n\r\nimport { EMOJIS } from '../emojis';\r\n\r\n@Component({\r\n\tselector: 'emoji-selector-panel',\r\n\ttemplateUrl: './emoji-selector-panel.component.html',\r\n\tstyleUrls: ['./emoji-selector-panel.component.scss']\r\n})\r\nexport class EmojiSelectorPanelComponent implements OnInit {\r\n\r\n\tconstructor(\r\n\t\tprivate sanitizer : DomSanitizer\r\n\t) { }\r\n\r\n\tcategories : any[];\r\n\tactiveCategory : string = 'people';\r\n\tsearchResults : any[] = [];\r\n searchVisible = false;\r\n\t\r\n\t@Output()\r\n\tprivate selected : Subject<string> = new Subject();\r\n\r\n\tprivate _searchQuery : string;\r\n\r\n\tget searchQuery() {\r\n\t\treturn this._searchQuery;\r\n\t}\r\n\r\n\tset searchQuery(value) {\r\n\t\tthis._searchQuery = value;\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.searchResults = Object.keys(EMOJIS).filter(k => k.includes(value)).map(k => EMOJIS[k]);\r\n\t\t\tthis.searchResults.splice(50, this.searchResults.length);\r\n\t\t\tconsole.log(`looking for '${value}' => ${this.searchResults.length} results`);\r\n\t\t});\r\n\t}\r\n\r\n\thumanize(str : string) {\r\n\t\treturn str.replace(/(^| )[a-z]/g, k => k.toUpperCase()).replace(/_/g, ' ');\r\n\t}\r\n\r\n\tselect(char : string) {\r\n\t\tthis.selected.next(char);\r\n\t}\r\n\r\n\tpairs(object) {\r\n\t\treturn Object.keys(object).map(key => [key, object[key]]);\r\n\t}\r\n\r\n\thideSearch() {\r\n\t\t// because of the \"outside click detection\"\r\n setTimeout(() => {\r\n this.searchVisible = false;\r\n });\r\n\t}\r\n\t\r\n showSearch() {\r\n\t\t// because of the \"outside click detection\"\r\n setTimeout(() => {\r\n this.searchVisible = true;\r\n });\r\n }\r\n\r\n\tngOnInit() {\r\n\r\n\t\tlet cats = {};\r\n\t\tlet categoryIcons = {\r\n\t\t\tsymbols: 'warning',\r\n\t\t\tpeople: 'people',\r\n\t\t\tanimals_and_nature: 'nature',\r\n\t\t\ttravel_and_places: 'location_on',\r\n\t\t\tactivity: 'local_activity',\r\n\t\t\tfood_and_drink: 'restaurant',\r\n\t\t\tobjects: 'computer',\r\n\t\t\tflags: 'flag'\r\n\t\t};\r\n\t\tfor (let pair of this.pairs(EMOJIS)) {\r\n\t\t\tlet name = pair[0];\r\n\t\t\tlet emoji : Emoji = pair[1];\r\n\r\n\t\t\tif (!cats[emoji.category]) {\r\n\t\t\t\tcats[emoji.category] = {\r\n\t\t\t\t\tname: emoji.category,\r\n\t\t\t\t\ticon: categoryIcons[emoji.category] || 'code',\r\n\t\t\t\t\temojis: []\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\temoji.html = this.sanitizer.bypassSecurityTrustHtml(twemoji.parse(emoji.char || ''));\r\n\r\n\t\t\tcats[emoji.category].emojis.push(emoji);\r\n\t\t}\r\n\r\n\t\tthis.categories = this.pairs(cats).map(pair => pair[1]);\r\n\t}\r\n\r\n}\r\n","import { Component, ElementRef, Output, ViewChild } from '@angular/core';\r\nimport { Subject, Observable } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'emoji-selector-button',\r\n template: `\r\n <button #button type=\"button\" mat-icon-button (click)=\"show()\">\r\n <mat-icon>emoji_emotions</mat-icon>\r\n </button>\r\n <emoji-selector-panel \r\n #panel\r\n (selected)=\"insert($event)\"\r\n [class.visible]=\"showEmojiPanel\"\r\n ></emoji-selector-panel>\r\n `,\r\n styles: [`\r\n :host {\r\n display: block;\r\n position: relative;\r\n }\r\n\r\n emoji-selector-panel {\r\n position: absolute;\r\n /* bottom: 2.5em;\r\n right: 0; */\r\n opacity: 0;\r\n pointer-events: none;\r\n z-index: 10;\r\n }\r\n\r\n emoji-selector-panel.visible {\r\n pointer-events: initial;\r\n opacity: 1;\r\n }\r\n\r\n button {\r\n color: #666\r\n }\r\n\r\n /* :host.bottom-left emoji-selector-panel {\r\n right: auto;\r\n left: 0;\r\n }\r\n\r\n :host.top-right emoji-selector-panel {\r\n top: 2.4em;\r\n bottom: auto;\r\n }\r\n\r\n :host.top-left emoji-selector-panel {\r\n top: 2.4em;\r\n bottom: auto;\r\n left: 0;\r\n right: auto;\r\n } */\r\n `]\r\n})\r\nexport class EmojiSelectorButtonComponent {\r\n\r\n private _selected = new Subject<string>();\r\n private clickListener : any;\r\n private resizeListener : any;\r\n showEmojiPanel = false;\r\n\r\n @Output()\r\n get selected() : Observable<string> {\r\n return this._selected;\r\n }\r\n\r\n @ViewChild('panel', { read: ElementRef })\r\n panelElement : ElementRef<HTMLElement>;\r\n\r\n @ViewChild('button', { read: ElementRef })\r\n buttonElement : ElementRef<HTMLElement>;\r\n\r\n ngOnDestroy() {\r\n this.removeListener();\r\n this.panelElement.nativeElement.remove();\r\n }\r\n\r\n ngAfterViewInit() {\r\n let root = document.body.querySelector('[ng-version]') || document.body;\r\n root.appendChild(this.panelElement.nativeElement);\r\n }\r\n\r\n private removeListener() {\r\n document.removeEventListener('click', this.clickListener);\r\n window.removeEventListener('resize', this.resizeListener);\r\n }\r\n\r\n place() {\r\n let pos = this.buttonElement.nativeElement.getBoundingClientRect();\r\n let size = this.panelElement.nativeElement.getBoundingClientRect();\r\n let left = window.scrollX + pos.left + pos.width - size.width;\r\n if (left < 0)\r\n left = (window.scrollX + window.innerWidth) / 2 - size.width / 2;\r\n\r\n Object.assign(\r\n this.panelElement.nativeElement.style,\r\n {\r\n top: `${window.scrollY + pos.top + pos.height}px`,\r\n left: `${Math.max(0, left)}px`\r\n }\r\n );\r\n }\r\n\r\n show() {\r\n if (this.showEmojiPanel) {\r\n this.showEmojiPanel = false;\r\n return;\r\n }\r\n\r\n this.showEmojiPanel = true;\r\n this.place();\r\n\r\n setTimeout(() => {\r\n this.resizeListener = () => {\r\n if (!this.showEmojiPanel)\r\n return;\r\n this.place();\r\n };\r\n\r\n this.clickListener = (ev : MouseEvent) => {\r\n\r\n let parent = <HTMLElement> ev.target;\r\n let isInDialog = false;\r\n \r\n while (parent) {\r\n if (parent.matches('emoji-selector-panel'))\r\n isInDialog = true;\r\n\r\n parent = parent.parentElement;\r\n }\r\n\r\n if (isInDialog)\r\n return;\r\n\r\n this.showEmojiPanel = false;\r\n this.removeListener();\r\n };\r\n \r\n document.addEventListener('click', this.clickListener);\r\n window.addEventListener('resize', this.resizeListener);\r\n });\r\n }\r\n\r\n insert(str) {\r\n this._selected.next(str);\r\n }\r\n}","import { NgModule } from '@angular/core';\r\nimport { EmojiSelectorPanelComponent } from './emoji-selector-panel/emoji-selector-panel.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { EmojiSelectorButtonComponent } from './emoji-selector-button.component';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nconst COMPONENTS = [\r\n EmojiSelectorPanelComponent,\r\n EmojiSelectorButtonComponent\r\n];\r\n\r\n@NgModule({\r\n declarations: COMPONENTS,\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatFormFieldModule,\r\n MatInputModule\r\n ],\r\n exports: COMPONENTS\r\n})\r\nexport class EmojiModule {\r\n\r\n}","import { Component, Input, ViewChild, ElementRef, HostBinding } from \"@angular/core\";\r\nimport { NewMessageForm, ChatMessage, User, ChatSource, Notification } from '@banta/common';\r\nimport { Subject, BehaviorSubject, Observable } from 'rxjs';\r\nimport { SubSink } from 'subsink';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { BantaChatComponent } from '../chat';\r\nimport { BantaService } from '../common';\r\nimport { ChatBackendService } from \"../common\";\r\nimport { Output } from \"@angular/core\";\r\n\r\n/**\r\n * Unified chat and comments component\r\n */\r\n@Component({\r\n selector: `banta`,\r\n templateUrl: './banta.component.html',\r\n styleUrls: [ './banta.component.scss' ]\r\n})\r\nexport class BantaComponent {\r\n constructor(\r\n private banta : BantaService,\r\n private backend : ChatBackendService,\r\n private matDialog : MatDialog\r\n ) {\r\n }\r\n\r\n firehoseSource : ChatSource;\r\n pointSource : ChatSource;\r\n\r\n private _topicID : string;\r\n private _subs = new SubSink();\r\n\r\n auxOpen = false;\r\n auxTitle = 'Notifications';\r\n auxMode = 'notifications';\r\n\r\n ngOnInit() {\r\n this._subs.add(\r\n this.banta.userChanged.subscribe(user => this.currentUser = user),\r\n this.backend.notificationsChanged.subscribe(notifs => this.notifications = notifs),\r\n this.backend.newNotification.subscribe(notif => {\r\n this.newNotifications = true;\r\n })\r\n );\r\n }\r\n \r\n mobileFocus : string = null;\r\n\r\n async sendPointSubMessage() {\r\n let text = (this.newPointSubMessage.message || '').trim();\r\n this.newPointSubMessage.message = '';\r\n\r\n if (text === '')\r\n return;\r\n \r\n let message : ChatMessage = {\r\n user: null,\r\n sentAt: Date.now(),\r\n upvotes: 0,\r\n message: text\r\n };\r\n\r\n try {\r\n await this.pointSubChat.send(message);\r\n } catch (e) {\r\n console.error(`Failed to send point sub-message:`);\r\n console.error(e);\r\n }\r\n }\r\n\r\n @ViewChild('firehose', { static: true })\r\n firehose : BantaChatComponent;\r\n\r\n async goToMessage(message : ChatMessage) {\r\n\r\n let targetMessage = message;\r\n\r\n if (message.parentMessageId) {\r\n // jump to the parent message thread...\r\n\r\n let parentMessage = await this.backend.getMessage(message.topicId, message.parentMessageId);\r\n\r\n if (!parentMessage) {\r\n console.error(`Failed to look up parent message ${message.topicId}/${message.parentMessageId}`);\r\n console.error(`Original message was:`);\r\n console.dir(targetMessage);\r\n return;\r\n }\r\n\r\n message = parentMessage;\r\n }\r\n\r\n let viewType = this.getViewType(message);\r\n\r\n if (viewType === 'comment') {\r\n if (this.pointSubChat) {\r\n if (this.pointSubChat.close)\r\n this.pointSubChat.close();\r\n this.pointSubChat = null;\r\n }\r\n this.mobileFocus = 'points';\r\n this.pointOpen = message;\r\n this.pointSubChat = await this.backend.getSourceForThread(message.topicId, message.id);\r\n this.pointOpen = await this.backend.refreshMessage(message);\r\n this.newPointSubMessage = {};\r\n } else if (viewType === 'chat') {\r\n this.mobileFocus = 'firehose';\r\n this.firehose.jumpToMessage(message);\r\n }\r\n }\r\n\r\n notifications : Notification[];\r\n newNotifications = false;\r\n \r\n pointUnfocus() {\r\n this.pointOpen = null;\r\n if (this.pointSubChat) {\r\n if (this.pointSubChat.close)\r\n this.pointSubChat.close();\r\n this.pointSubChat = null;\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this._subs.unsubscribe();\r\n }\r\n\r\n showAux(title : string, mode : string) {\r\n this.auxOpen = true;\r\n this.auxTitle = title;\r\n this.auxMode = mode;\r\n this.mobileFocus = 'aux';\r\n }\r\n\r\n showNotifications() {\r\n this.showAux('Notifications', 'notifications');\r\n }\r\n\r\n @Input()\r\n get topicID() : string {\r\n return this._topicID;\r\n }\r\n\r\n @Input() chatLabel = 'Chat';\r\n @Input() commentsLabel = 'Comments';\r\n\r\n set topicID(value) {\r\n this._topicID = value;\r\n\r\n this.close();\r\n this.connectToTopic(this._topicID);\r\n }\r\n\r\n private async connectToTopic(id : string) {\r\n this.firehoseSource = await this.backend.getSourceForTopic(`${id}_firehose`);\r\n this.pointSource = await this.backend.getSourceForTopic(`${id}_thepoint`);\r\n }\r\n\r\n private _signInSelected = new Subject<void>();\r\n\r\n @Output()\r\n get signInSelected(): Observable<void> {\r\n return this._signInSelected;\r\n }\r\n\r\n showSignIn() {\r\n this._signInSelected.next();\r\n }\r\n\r\n close() {\r\n if (this.firehoseSource) {\r\n if (this.firehoseSource.close)\r\n this.firehoseSource.close();\r\n this.firehoseSource = null;\r\n }\r\n\r\n if (this.pointSource) {\r\n if (this.pointSource.close)\r\n this.pointSource.close();\r\n this.pointSource = null;\r\n }\r\n }\r\n\r\n @HostBinding('class.point-focus')\r\n get hasPoint() {\r\n return this.pointOpen != null;\r\n }\r\n\r\n pointOpen : ChatMessage = null;\r\n pointSubChat : ChatSource = null;\r\n\r\n closeAux() {\r\n this.auxOpen = false;\r\n this.mobileFocus = 'firehose';\r\n }\r\n\r\n getViewType(message : ChatMessage) {\r\n if (message.topicId.endsWith('_firehose'))\r\n return 'chat';\r\n else if (message.topicId.endsWith('_thepoint'))\r\n return 'comment';\r\n\r\n return 'comment';\r\n }\r\n\r\n async upvoteMessage(message : ChatMessage) {\r\n if (message.parentMessageId)\r\n await this.backend.upvoteMessage(message.topicId, message.parentMessageId, message.id);\r\n else\r\n await this.backend.upvoteMessage(message.topicId, message.id);\r\n //message.upvotes += 1;\r\n }\r\n\r\n showProfile(user : User) {\r\n this.profileUser = user;\r\n this.showAux(`@${user.username}'s Profile`, 'profile');\r\n }\r\n\r\n profileUser : User;\r\n \r\n reportedMessage : ChatMessage;\r\n\r\n sendReport(message : ChatMessage) {\r\n this.auxOpen = false;\r\n alert('would send report');\r\n }\r\n\r\n reportMessage(message : ChatMessage) {\r\n this.reportedMessage = message;\r\n this.showAux(`Report message from @${message.user.username}`, 'report');\r\n }\r\n\r\n currentUser : User;\r\n\r\n newPointSubMessage : NewMessageForm = {};\r\n\r\n genericAvatarUrl = 'https://gravatar.com/avatar/915c804e0be607a4ad766ddadea5c48a?s=512&d=https://codepen.io/assets/avatars/user-avatar-512x512-6e240cf350d2f1cc07c2bed234c3a3bb5f1b237023c204c782622e80d6b212ba.png';\r\n}","import { Component } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: 'banta-logo',\r\n template: `banta`,\r\n styles: [\r\n `\r\n :host {\r\n font-family: 'Odibee Sans', sans-serif;\r\n font-size: 40pt;\r\n }\r\n\r\n :host.small {\r\n font-size: 30pt;\r\n }\r\n `\r\n ]\r\n})\r\nexport class BantaLogoComponent {\r\n\r\n}","import { Component, Input, Output } from \"@angular/core\";\r\nimport { User, ChatMessage } from '@banta/common';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'banta-chat-message',\r\n templateUrl: './chat-message.component.html',\r\n styleUrls: ['./chat-message.component.scss']\r\n})\r\nexport class ChatMessageComponent {\r\n private _selected = new Subject<void>();\r\n private _reported = new Subject<void>();\r\n private _upvoted = new Subject<void>();\r\n private _userSelected = new Subject<User>();\r\n\r\n @Input()\r\n message : ChatMessage;\r\n \r\n @Output() \r\n get userSelected() {\r\n return this._userSelected;\r\n }\r\n\r\n @Output()\r\n get selected() {\r\n return this._selected;\r\n }\r\n\r\n @Output()\r\n get reported() {\r\n return this._reported;\r\n }\r\n\r\n @Output()\r\n get upvoted() {\r\n return this._upvoted;\r\n }\r\n\r\n avatarForUser(user : User) {\r\n if (user && user.avatarUrl) {\r\n let url = user.avatarUrl;\r\n return `url(${url})`;\r\n }\r\n\r\n return null;\r\n }\r\n \r\n upvote() {\r\n this._upvoted.next();\r\n }\r\n\r\n report() {\r\n this._reported.next();\r\n }\r\n\r\n select() {\r\n this._selected.next();\r\n }\r\n \r\n selectUser() {\r\n this._userSelected.next();\r\n }\r\n\r\n}","import { Component, Input, Output } from '@angular/core';\r\nimport { ChatMessage } from '@banta/common';\r\nimport { Subject, Observable } from 'rxjs';\r\nimport { ChatBackendService } from '../common';\r\n\r\n@Component({\r\n selector: 'banta-live-chat-message',\r\n template: `\r\n <banta-chat-message \r\n *ngIf=\"message\"\r\n [message]=\"message\"\r\n (upvoted)=\"upvote()\"\r\n (reported)=\"report()\"\r\n (selected)=\"select()\"\r\n ></banta-chat-message>\r\n `,\r\n styles: [``]\r\n})\r\nexport class LiveChatMessageComponent {\r\n constructor(\r\n private backend : ChatBackendService\r\n ) {\r\n\r\n }\r\n\r\n private _message : ChatMessage;\r\n private _upvoted = new Subject<void>();\r\n private _reported = new Subject<void>();\r\n private _selected = new Subject<void>();\r\n\r\n @Output()\r\n get upvoted() : Observable<void> {\r\n return this._upvoted;\r\n }\r\n \r\n @Output()\r\n get reported() : Observable<void> {\r\n return this._reported;\r\n }\r\n\r\n @Output()\r\n get selected() : Observable<void> {\r\n return this._selected;\r\n }\r\n \r\n @Input()\r\n get message() : ChatMessage {\r\n return this._message;\r\n }\r\n\r\n private unsubscribe : Function;\r\n\r\n set message(value) {\r\n let originalId = null;\r\n if (this._message)\r\n originalId = this._message.id;\r\n \r\n this._message = value;\r\n\r\n if (value && originalId === value.id) {\r\n return;\r\n }\r\n\r\n if (this.unsubscribe)\r\n this.unsubscribe();\r\n \r\n if (value) {\r\n this.unsubscribe = this.backend.watchMessage(value, message => this.message = message);\r\n }\r\n }\r\n\r\n report() {\r\n this._reported.next();\r\n }\r\n \r\n upvote() {\r\n this._upvoted.next();\r\n }\r\n\r\n select() {\r\n this._selected.next();\r\n }\r\n}","import { Component, Input, ViewChild, ElementRef, Output } from \"@angular/core\";\r\nimport { ChatSource, User, ChatMessage } from '@banta/common';\r\nimport { SubSink } from 'subsink';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'banta-chat-view',\r\n templateUrl: './chat-view.component.html',\r\n styleUrls: ['./chat-view.component.scss']\r\n})\r\nexport class ChatViewComponent {\r\n constructor(\r\n private elementRef : ElementRef<HTMLElement>\r\n ) {\r\n\r\n }\r\n\r\n private _sourceSubs = new SubSink();\r\n private _source : ChatSource;\r\n\r\n @Input()\r\n get source() {\r\n return this._source;\r\n }\r\n\r\n private _selected = new Subject<ChatMessage>();\r\n private _reported = new Subject<ChatMessage>();\r\n private _upvoted = new Subject<ChatMessage>();\r\n private _userSelected = new Subject<ChatMessage>();\r\n\r\n @Output()\r\n get selected() {\r\n return this._selected;\r\n }\r\n\r\n @Output()\r\n get userSelected() {\r\n return this._userSelected;\r\n }\r\n\r\n @Output()\r\n get reported() {\r\n return this._reported;\r\n }\r\n\r\n @Output()\r\n get upvoted() {\r\n return this._upvoted;\r\n }\r\n\r\n set source(value) {\r\n if (this._sourceSubs) {\r\n this._sourceSubs.unsubscribe();\r\n this._sourceSubs = null;\r\n }\r\n\r\n this._source = value;\r\n\r\n this.messages = [];\r\n\r\n if (value) {\r\n this._sourceSubs = new SubSink();\r\n this.messages = value.messages.slice();\r\n\r\n console.log(`Source set:`);\r\n console.dir(value);\r\n\r\n console.log(`Messages loaded:`);\r\n console.dir(this.messages); \r\n \r\n this._sourceSubs.add(\r\n this._source.messageReceived\r\n .subscribe(msg => this.messageReceived(msg)),\r\n this._source.messageSent\r\n .subscribe(msg => this.messageSent(msg))\r\n );\r\n\r\n \r\n if (this._source.currentUserChanged) {\r\n this._sourceSubs.add(\r\n this._source.currentUserChanged\r\n .subscribe(user => this.currentUser = user)\r\n );\r\n }\r\n }\r\n }\r\n\r\n messages : ChatMessage[] = [];\r\n currentUser : User;\r\n\r\n @ViewChild('messageContainer')\r\n messageContainer : ElementRef<HTMLElement>;\r\n\r\n @Input()\r\n maxMessages : number = 200;\r\n\r\n private addMessage(message : ChatMessage) {\r\n if (this.messages.length > this.maxMessages + 1) {\r\n while (this.messages.length > this.maxMessages)\r\n this.messages.shift();\r\n }\r\n\r\n this.messages.push(message);\r\n }\r\n\r\n private messageReceived(message : ChatMessage) {\r\n this.addMessage(message);\r\n\r\n if (this.isScrolledToLatest())\r\n setTimeout(() => this.scrollToLatest());\r\n }\r\n\r\n isScrolledToLatest() {\r\n if (!this.messageContainer)\r\n return false;\r\n\r\n let el = this.messageContainer.nativeElement;\r\n let currentScroll = el.scrollTop;\r\n let currentTotal = el.scrollHeight - el.offsetHeight;\r\n \r\n return currentScroll > currentTotal - 10;\r\n }\r\n\r\n private messageSent(message : ChatMessage) {\r\n this.addMessage(message);\r\n \r\n if (!this.messageContainer)\r\n return;\r\n\r\n setTimeout(() => this.scrollToLatest());\r\n }\r\n\r\n scrollToLatest() {\r\n if (!this.messageContainer)\r\n return;\r\n \r\n let el = this.messageContainer.nativeElement;\r\n el.scrollTop = el.scrollHeight;\r\n }\r\n\r\n jumpTo(message : ChatMessage) {\r\n let element = this.elementRef.nativeElement;\r\n let messageElement = element.querySelector(`banta-chat-message[data-id=\"${message.id}\"]`)\r\n\r\n if (!messageElement) {\r\n alert(`could not find message ${message.id}`);\r\n return;\r\n }\r\n\r\n messageElement.scrollIntoView({ behavior: 'smooth' });\r\n\r\n this.flashMessage(message);\r\n }\r\n\r\n flashMessage(message : ChatMessage) {\r\n if (!message)\r\n return;\r\n \r\n this.flashedMessageId = message.id;\r\n //setTimeout(() => this.flashedMessageId = null, 250);\r\n }\r\n\r\n flashedMessageId : string;\r\n\r\n\r\n mentionsMe(message : ChatMessage) {\r\n if (!this.currentUser)\r\n return false;\r\n\r\n if (message.message.includes(`@${this.currentUser.username}`))\r\n return true;\r\n \r\n return false;\r\n }\r\n \r\n upvoteMessage(message : ChatMessage) {\r\n this._upvoted.next(message);\r\n }\r\n\r\n reportMessage(message : ChatMessage) {\r\n this._reported.next(message);\r\n }\r\n\r\n selectMessage(message : ChatMessage) {\r\n this._selected.next(message);\r\n }\r\n\r\n selectMessageUser(message : ChatMessage) {\r\n this._userSelected.next(message);\r\n }\r\n\r\n avatarForUser(user : User) {\r\n if (user && user.avatarUrl) {\r\n let url = user.avatarUrl;\r\n return `url(${url})`;\r\n }\r\n\r\n return null;\r\n }\r\n}","import { Component, Input, Output, ElementRef, ViewChild } from \"@angular/core\";\r\nimport { Subject, Observable } from 'rxjs';\r\n\r\nimport { User, ChatSource, ChatMessage, NewMessageForm, UserAccount } from '@banta/common';\r\nimport { SubSink } from 'subsink';\r\nimport { ChatViewComponent } from '../chat-view/chat-view.component';\r\nimport { BantaService, ChatBackendService } from \"../../common\";\r\n\r\n/**\r\n * Chat component\r\n */\r\n@Component({\r\n selector: 'banta-chat',\r\n templateUrl: './banta-chat.component.html',\r\n styleUrls: ['./banta-chat.component.scss']\r\n})\r\nexport class BantaChatComponent {\r\n constructor(\r\n private banta : BantaService,\r\n private backend : ChatBackendService,\r\n private elementRef : ElementRef<HTMLElement>\r\n ) {\r\n }\r\n\r\n private _source : ChatSource;\r\n private _subs = new SubSink();\r\n user : UserAccount = null;\r\n\r\n ngOnInit() {\r\n this._subs.add(\r\n this.banta.userChanged.subscribe(user => this.user = user)\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this._subs.unsubscribe();\r\n }\r\n\r\n @Input()\r\n get source() : ChatSource {\r\n return this._source;\r\n }\r\n\r\n set source(value) {\r\n this._source = value;\r\n }\r\n\r\n @Input()\r\n get topicID() : string {\r\n return this._source.identifier;\r\n }\r\n\r\n set topicID(value) {\r\n this.setSourceFromTopicID(value);\r\n }\r\n\r\n private async setSourceFromTopicID(topicID : string) {\r\n if (this._source && this._source.close)\r\n this._source.close();\r\n this._source = null;\r\n this._source = await this.backend.getSourceForTopic(topicID);\r\n }\r\n\r\n @Input() signInLabel = 'Sign In';\r\n @Input() sendLabel = 'Send';\r\n @Input() permissionDeniedLabel = 'Send';\r\n\r\n private _selected = new Subject<ChatMessage>();\r\n private _reported = new Subject<ChatMessage>();\r\n private _upvoted = new Subject<ChatMessage>();\r\n private _userSelected = new Subject<ChatMessage>();\r\n private _signInSelected = new Subject<void>();\r\n private _permissionDeniedError = new Subject<void>();\r\n\r\n @Output()\r\n get signInSelected(): Observable<void> {\r\n return this._signInSelected;\r\n }\r\n\r\n @Output()\r\n get permissionDeniedError(): Observable<void> {\r\n return this._permissionDeniedError;\r\n }\r\n\r\n showEmojiPanel = false;\r\n\r\n showSignIn() {\r\n this._signInSelected.next();\r\n }\r\n\r\n sendPermissionError() {\r\n this._permissionDeniedError.next();\r\n }\r\n\r\n insertEmoji(emoji) {\r\n let message = this.newMessage.message || '';\r\n\r\n this.newMessage.message = message + emoji;\r\n }\r\n\r\n onKeyDown(event : KeyboardEvent) {\r\n // TODO\r\n }\r\n\r\n @ViewChild('chatView', { static: true })\r\n chatView : ChatViewComponent;\r\n\r\n jumpToMessage(message : ChatMessage) {\r\n if (this.chatView)\r\n this.chatView.jumpTo(message);\r\n }\r\n\r\n select(message : ChatMessage) {\r\n this._selected.next(message);\r\n }\r\n\r\n selectUser(message : ChatMessage) {\r\n this._userSelected.next(message);\r\n }\r\n \r\n report(message : ChatMessage) {\r\n this._reported.next(message);\r\n }\r\n \r\n upvote(message : ChatMessage) {\r\n this._upvoted.next(message);\r\n }\r\n\r\n @Output()\r\n get selected() {\r\n return this._selected;\r\n }\r\n\r\n @Output()\r\n get reported() {\r\n return this._reported;\r\n }\r\n\r\n @Output()\r\n get upvoted() {\r\n return this._upvoted;\r\n }\r\n\r\n @Output()\r\n get userSelected() {\r\n return this._userSelected;\r\n }\r\n\r\n get canChat() {\r\n if (!this.user)\r\n return false;\r\n \r\n if (!this.user.permissions)\r\n return true;\r\n \r\n if (!this.user.permissions.canChat)\r\n return true;\r\n \r\n return this.user.permissions?.canChat(this.source);\r\n }\r\n\r\n newMessage : NewMessageForm = {};\r\n\r\n async sendMessage() {\r\n if (!this.source)\r\n return;\r\n\r\n let text = (this.newMessage.message || '').trim();\r\n this.newMessage.message = '';\r\n\r\n if (text === '')\r\n return;\r\n\r\n let message : ChatMessage = { \r\n user: null,\r\n sentAt: Date.now(),\r\n upvotes: 0,\r\n url: location.href,\r\n message: text\r\n };\r\n\r\n try {\r\n await this.source.send(message);\r\n } catch (e) {\r\n console.error(`Failed to send message: `, message);\r\n console.error(e);\r\n }\r\n }\r\n}","import { NgModule } from \"@angular/core\";\r\nimport { ChatMessageComponent } from './chat-message/chat-message.component';\r\nimport { ChatViewComponent } from './chat-view/chat-view.component';\r\nimport { BantaChatComponent } from './banta-chat/banta-chat.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { EmojiModule } from '../emoji';\r\nimport { LiveChatMessageComponent } from './live-chat-message.component';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\nconst COMPONENTS = [\r\n ChatMessageComponent,\r\n LiveChatMessageComponent,\r\n ChatViewComponent,\r\n BantaChatComponent\r\n];\r\n\r\n@NgModule({\r\n declarations: COMPONENTS,\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n EmojiModule\r\n ],\r\n exports: COMPONENTS\r\n})\r\nexport class ChatModule {\r\n}","import { Component, Input, Output } from \"@angular/core\";\r\nimport { ChatMessage } from '@banta/common';\r\nimport { Subject, Observable } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'banta-live-message',\r\n template: `\r\n <ng-container *ngIf=\"message\">\r\n <banta-live-chat-message\r\n *ngIf=\"viewType === 'chat'\"\r\n [message]=\"message\"\r\n (upvoted)=\"upvote(message)\"\r\n (reported)=\"report(message)\"\r\n (selected)=\"select(message)\">\r\n </banta-live-chat-message>\r\n\r\n <banta-live-comment \r\n *ngIf=\"viewType === 'comment'\"\r\n [message]=\"message\"\r\n (upvoted)=\"upvote(message)\"\r\n (reported)=\"report(message)\"\r\n (selected)=\"select(message)\">\r\n </banta-live-comment>\r\n </ng-container>\r\n `,\r\n styles: [``]\r\n})\r\nexport class LiveMessageComponent {\r\n constructor() {\r\n\r\n }\r\n\r\n private _message : ChatMessage;\r\n private _upvoted = new Subject<void>();\r\n private _reported = new Subject<void>();\r\n private _selected = new Subject<void>();\r\n\r\n viewType : string;\r\n\r\n @Output() \r\n get upvoted(): Observable<void> {\r\n return this._upvoted;\r\n }\r\n\r\n @Output() \r\n get reported(): Observable<void> {\r\n return this._reported;\r\n }\r\n \r\n @Output() \r\n get selected(): Observable<void> {\r\n return this._selected;\r\n }\r\n\r\n @Input()\r\n get message() : ChatMessage {\r\n return this._message;\r\n }\r\n\r\n set message(value) {\r\n this._message = value;\r\n this.viewType = this.getViewType(value);\r\n }\r\n\r\n private getViewType(message : ChatMessage) {\r\n if (message.topicId.endsWith('_firehose'))\r\n return 'chat';\r\n else if (message.topicId.endsWith('_thepoint'))\r\n return 'comment';\r\n\r\n return 'comment';\r\n }\r\n\r\n upvote() {\r\n this._upvoted.next();\r\n }\r\n\r\n report() {\r\n this._reported.next();\r\n }\r\n\r\n select() {\r\n this._selected.next();\r\n }\r\n\r\n}","import { Component, Output, Input, HostBinding } from \"@angular/core\";\r\nimport { Subject } from 'rxjs';\r\nimport { ChatMessage, User } from '@banta/common';\r\n\r\n@Component({\r\n selector: 'banta-comment',\r\n templateUrl: './comment.component.html',\r\n styleUrls: ['./comment.component.scss']\r\n})\r\nexport class CommentComponent {\r\n private _reported = new Subject<void>();\r\n private _selected = new Subject<void>();\r\n private _upvoted = new Subject<void>();\r\n private _userSelected = new Subject<void>();\r\n \r\n ngOnInit() {\r\n let maxTime = 500;\r\n let minTime = 0;\r\n let randomTime = minTime + Math.random() * (maxTime - minTime);\r\n\r\n setTimeout(() => {\r\n this.isNew = true;\r\n this.visible = true;\r\n setTimeout(() => this.isNew = false, 1000);\r\n }, randomTime);\r\n }\r\n\r\n @HostBinding('class.new')\r\n isNew = false;\r\n\r\n @HostBinding('class.visible')\r\n visible = false;\r\n\r\n @Input()\r\n message : ChatMessage;\r\n\r\n @Input()\r\n showReplyAction = true;\r\n\r\n @Output()\r\n get userSelected() {\r\n return this._userSelected;\r\n }\r\n\r\n @Output()\r\n get reported() {\r\n return this._reported;\r\n }\r\n \r\n @Output()\r\n get upvoted() {\r\n return this._upvoted;\r\n }\r\n\r\n @Output()\r\n get selected() {\r\n return this._selected;\r\n }\r\n\r\n @HostBinding('attr.data-comment-id')\r\n get commentId() {\r\n return this.message?.id;\r\n }\r\n\r\n report() {\r\n this._reported.next();\r\n }\r\n \r\n upvote() {\r\n this._upvoted.next();\r\n }\r\n\r\n select() {\r\n this._selected.next();\r\n }\r\n\r\n selectUser() {\r\n return this._userSelected.next();\r\n }\r\n \r\n avatarForUser(user : User) {\r\n if (user && user.avatarUrl) {\r\n let url = user.avatarUrl;\r\n return `url(${url})`;\r\n }\r\n\r\n return null;\r\n }\r\n}","import { Component, Input, ViewChild, ElementRef, Output, HostBinding } from \"@angular/core\";\r\nimport { User, ChatMessage, ChatSource } from '@banta/common';\r\nimport { SubSink } from 'subsink';\r\nimport { Subject } from 'rxjs';\r\nimport { ChatBackendService } from \"../../common\";\r\n\r\n@Component({\r\n selector: 'banta-comment-view',\r\n templateUrl: './comment-view.component.html',\r\n styleUrls: ['./comment-view.component.scss']\r\n})\r\nexport class CommentViewComponent {\r\n constructor(\r\n private backend : ChatBackendService\r\n ) {\r\n\r\n }\r\n\r\n private _sourceSubs = new SubSink();\r\n private _source : ChatSource;\r\n private _selected = new Subject<ChatMessage>();\r\n private _upvoted = new Subject<ChatMessage>();\r\n private _reported = new Subject<ChatMessage>();\r\n private _userSelected = new Subject<ChatMessage>();\r\n\r\n @Input()\r\n showEmptyState = true;\r\n\r\n @Input() \r\n allowReplies = true;\r\n\r\n @Input()\r\n @HostBinding('class.fixed-height')\r\n fixedHeight : boolean;\r\n\r\n @Output()\r\n get selected() {\r\n return this._selected;\r\n }\r\n\r\n @Output()\r\n get userSelected() {\r\n return this._userSelected;\r\n }\r\n\r\n @Output()\r\n get reported() {\r\n return this._reported;\r\n }\r\n\r\n @Output()\r\n get upvoted() {\r\n return this._upvoted;\r\n }\r\n\r\n menuMessage : ChatMessage = null;\r\n messages : ChatMessage[] = [];\r\n currentUser : User;\r\n\r\n @Input()\r\n get source() {\r\n return this._source;\r\n }\r\n\r\n upvoteMessage(message : ChatMessage) {\r\n this._upvoted.next(message);\r\n }\r\n\r\n reportMessage(message : ChatMessage) {\r\n this._reported.next(message);\r\n }\r\n \r\n async selectMessage(message : ChatMessage) {\r\n this._selected.next(message);\r\n }\r\n\r\n selectMessageUser(message : ChatMessage) {\r\n this._userSelected.next(message);\r\n }\r\n\r\n set source(value) {\r\n if (this._sourceSubs) {\r\n this._sourceSubs.unsubscribe();\r\n this._sourceSubs = null;\r\n }\r\n this._source = value;\r\n\r\n if (value) {\r\n let messages = (value.messages || []).slice();\r\n this.messages = messages;\r\n this.olderMessages = messages.splice(this.maxVisibleMessages, messages.length);\r\n this.hasMore = this.olderMessages.length > 0;\r\n\r\n this._sourceSubs = new SubSink();\r\n this._sourceSubs.add(\r\n this._source.messageReceived\r\n .subscribe(msg => this.messageReceived(msg)),\r\n this._source.messageSent\r\n .subscribe(msg => this.messageSent(msg))\r\n );\r\n\r\n \r\n if (this._source.currentUserChanged) {\r\n this._sourceSubs.add(\r\n this._source.currentUserChanged.subscribe(user => this.currentUser = user)\r\n );\r\n }\r\n }\r\n }\r\n\r\n @Input()\r\n genericAvatarUrl : string;\r\n \r\n @ViewChild('messageContainer')\r\n messageContainer : ElementRef<HTMLElement>;\r\n\r\n @Input()\r\n maxMessages = 2000;\r\n\r\n @Input()\r\n maxVisibleMessages : number = 200;\r\n\r\n @Input()\r\n newestLast = false;\r\n\r\n isViewingMore = false;\r\n isLoadingMore = false;\r\n hasMore = false;\r\n\r\n newMessages : ChatMessage[] = [];\r\n olderMessages : ChatMessage[] = [];\r\n\r\n messageIdentity(index : number, chatMessage : ChatMessage) {\r\n return chatMessage.id;\r\n }\r\n\r\n async showNew() {\r\n this.isViewingMore = false;\r\n this.messages = this.newMessages.splice(0, this.newMessages.length).concat(this.messages);\r\n let overflow = this.messages.splice(this.maxVisibleMessages, this.messages.length);\r\n this.olderMessages = overflow.concat(this.olderMessages);\r\n this.olderMessages.splice(this.maxMessages - this.maxVisibleMessages, this.olderMessages.length);\r\n }\r\n\r\n async showMore() {\r\n this.isViewingMore = true;\r\n\r\n if (this.olderMessages.length > 0) {\r\n this.isLoadingMore = false;\r\n this.messages = this.messages.concat(this.olderMessages.splice(0, 50));\r\n } else {\r\n if (this.source.loadAfter) {\r\n this.isLoadingMore = true;\r\n \r\n let lastMessage = this.messages[this.messages.length - 1];\r\n let messages = await this.source.loadAfter(lastMessage, 100);\r\n this.messages = this.messages.concat(messages);\r\n this.isLoadingMore = false;\r\n if (messages.length === 0)\r\n this.hasMore = false;\r\n\r\n } else {\r\n this.hasMore = false;\r\n }\r\n }\r\n }\r\n\r\n private addMessage(message : ChatMessage) {\r\n let destination = this.messages;\r\n let bucket = this.olderMessages;\r\n\r\n if (this.isViewingMore) {\r\n destination = this.newMessages;\r\n bucket = null;\r\n }\r\n\r\n if (this.newestLast) {\r\n destination.push(message);\r\n let overflow = destination.splice(this.maxVisibleMessages, destination.length);\r\n bucket?.push(...overflow);\r\n } else {\r\n destination.unshift(message);\r\n let overflow = destination.splice(this.maxVisibleMessages, destination.length);\r\n bucket?.unshift(...overflow);\r\n }\r\n\r\n if (bucket?.length > 0)\r\n this.hasMore = true;\r\n }\r\n\r\n private messageReceived(message : ChatMessage) {\r\n this.addMessage(message);\r\n\r\n if (this.isScrolledToLatest())\r\n setTimeout(() => this.scrollToLatest());\r\n }\r\n\r\n isScrolledToLatest() {\r\n if (!this.messageContainer)\r\n return false;\r\n\r\n let el = this.messageContainer.nativeElement;\r\n let currentScroll = el.scrollTop;\r\n let currentTotal = el.scrollHeight - el.offsetHeight;\r\n \r\n return currentScroll > currentTotal - 10;\r\n }\r\n\r\n private messageSent(message : ChatMessage) {\r\n this.addMessage(message);\r\n \r\n if (!this.messageContainer)\r\n return;\r\n\r\n this.scrollToLatest();\r\n }\r\n\r\n scrollToLatest() {\r\n if (!this.messageContainer)\r\n return;\r\n \r\n let el = this.messageContainer.nativeElement;\r\n el.scrollTop = el.scrollHeight;\r\n }\r\n\r\n mentionsMe(message : ChatMessage) {\r\n if (!this.currentUser)\r\n return false;\r\n\r\n if (message.message.includes(`@${this.currentUser.username}`))\r\n return true;\r\n \r\n return false;\r\n }\r\n\r\n avatarForUser(user : User) {\r\n let url = this.genericAvatarUrl;\r\n\r\n if (user && user.avatarUrl)\r\n url = user.avatarUrl;\r\n \r\n return `url(${url})`;\r\n }\r\n}","import { Component, ElementRef, Input, Output } from '@angular/core';\r\nimport { User, ChatSource, ChatMessage, UserAccount } from '@banta/common';\r\nimport { HashTag } from '../comment-field/comment-field.component';\r\nimport { Subject, Observable } from 'rxjs';\r\nimport { SubSink } from 'subsink';\r\nimport { ChatBackendService } from '../../common';\r\nimport { BantaService } from '../../common';\r\n\r\n/**\r\n * Comments component\r\n */\r\n@Component({\r\n selector: 'banta-comments',\r\n templateUrl: './banta-comments.component.html',\r\n styleUrls: ['./banta-comments.component.scss']\r\n})\r\nexport class BantaCommentsComponent {\r\n constructor(\r\n private banta : BantaService,\r\n private backend : ChatBackendService,\r\n private elementRef : ElementRef<HTMLElement>\r\n ) {\r\n }\r\n\r\n private _upvoted = new Subject<ChatMessage>();\r\n private _reported = new Subject<ChatMessage>();\r\n private _selected = new Subject<ChatMessage>();\r\n private _userSelected = new Subject<ChatMessage>();\r\n private _source : ChatSource;\r\n\r\n private _subs = new SubSink();\r\n\r\n @Input() hashtags : HashTag[] = [\r\n { hashtag: 'error', description: 'Cause an error' },\r\n { hashtag: 'timeout', description: 'Cause a slow timeout error' },\r\n { hashtag: 'slow', description: 'Be slow when this message is posted' },\r\n ];\r\n\r\n @Input() participants : User[] = [];\r\n\r\n ngOnInit() {\r\n this._subs.add(\r\n this.banta.userChanged.subscribe(user => this.user = user)\r\n )\r\n }\r\n\r\n ngOnDestroy() {\r\n this._subs.unsubscribe();\r\n }\r\n\r\n @Input()\r\n get source() : ChatSource {\r\n return this._source;\r\n }\r\n\r\n set source(value) {\r\n this._source = value;\r\n }\r\n\r\n @Input() fixedHeight : boolean;\r\n @Input() maxMessages : number;\r\n @Input() maxVisibleMessages : number;\r\n @Input() genericAvatarUrl : string;\r\n\r\n @Input()\r\n get topicID() : string {\r\n return this._source.identifier;\r\n }\r\n\r\n set topicID(value) {\r\n this.setSourceFromTopicID(value);\r\n }\r\n\r\n private async setSourceFromTopicID(topicID : string) {\r\n if (this._source && this._source.close)\r\n this._source.close();\r\n this._source = null;\r\n this._source = await this.backend.getSourceForTopic(topicID);\r\n\r\n this._source.messageReceived.subscribe(m => this.addParticipant(m));\r\n this._source.messageSent.subscribe(m => this.addParticipant(m));\r\n this._source.messages.forEach(m => this.addParticipant(m));\r\n }\r\n\r\n private addParticipant(message : ChatMessage) {\r\n if (!message || !message.user || !message.user.id)\r\n return;\r\n\r\n let existing = this.participants.find(x => x.id === message.user.id);\r\n if (existing)\r\n return;\r\n this.participants.push(message.user);\r\n }\r\n\r\n showSignIn() {\r\n this._signInSelected.next();\r\n }\r\n\r\n showEditAvatar() {\r\n this._editAvatarSelected.next();\r\n }\r\n\r\n user : UserAccount;\r\n \r\n private _newMessageText : string;\r\n\r\n get newMessageText(): string {\r\n return this._newMessageText;\r\n }\r\n\r\n set newMessageText(value) {\r\n this._newMessageText = value;\r\n if (this._newMessageText === '' && this.sendError) \r\n setTimeout(() => this.sendError = null);\r\n }\r\n\r\n @Input() signInLabel = 'Sign In';\r\n @Input() sendLabel = 'Send';\r\n @Input() replyLabel = 'Reply'; \r\n @Input() sendingLabel = 'Sending';\r\n @Input() permissionDeniedLabel = 'Send';\r\n @Input() postCommentLabel = 'Post a comment';\r\n @Input() postReplyLabel = 'Post a reply';\r\n\r\n private _signInSelected = new Subject<void>();\r\n private _permissionDeniedError = new Subject<void>();\r\n private _editAvatarSelected = new Subject<void>();\r\n\r\n @Output()\r\n get signInSelected(): Observable<void> {\r\n return this._signInSelected;\r\n }\r\n\r\n @Output()\r\n get editAvatarSelected() {\r\n return this._editAvatarSelected;\r\n }\r\n\r\n @Output()\r\n get permissionDeniedError(): Observable<void> {\r\n return this._permissionDeniedError;\r\n }\r\n\r\n showPermissionDenied() {\r\n this._permissionDeniedError.next();\r\n }\r\n \r\n get canComment() {\r\n if (!this.user)\r\n return false;\r\n \r\n if (!this.user.permissions)\r\n return true;\r\n \r\n if (!this.user.permissions.canComment)\r\n return true;\r\n \r\n return this.user.permissions?.canComment(this.source);\r\n }\r\n\r\n @Output()\r\n get upvoted() {\r\n return this._upvoted;\r\n }\r\n \r\n @Output()\r\n get reported() {\r\n return this._reported;\r\n }\r\n\r\n @Output()\r\n get selected() {\r\n return this._selected;\r\n }\r\n @Output()\r\n get userSelected() {\r\n return this._userSelected;\r\n }\r\n\r\n onKeyDown(event : KeyboardEvent) {\r\n }\r\n\r\n insertEmoji(text : string) {\r\n this.newMessageText += text;\r\n }\r\n\r\n onReplyKeyDown(event : KeyboardEvent) {\r\n }\r\n\r\n insertReplyEmoji(text : string) {\r\n this.replyMessage += text;\r\n }\r\n\r\n sending = false;\r\n sendError : Error;\r\n expandError = false;\r\n\r\n indicateError(message : string) {\r\n this.sendError = new Error(message);\r\n setTimeout(() => {\r\n this.expandError = true;\r\n setTimeout(() => {\r\n this.expandError = false;\r\n }, 5*1000);\r\n });\r\n }\r\n\r\n async upvoteMessage(message : ChatMessage) {\r\n this._upvoted.next(message);\r\n await this.backend.upvoteMessage(message.topicId, message.parentMessageId ? message.parentMessageId : message.id, message.parentMessageId ? message.id : undefined);\r\n }\r\n\r\n reportMessage(message : ChatMessage) {\r\n this._reported.next(message);\r\n }\r\n\r\n selectedMessage : ChatMessage;\r\n selectedMessageThread : ChatSource;\r\n\r\n replyMessage : string;\r\n\r\n async unselectMessage() {\r\n let message = this.selectedMessage;\r\n \r\n this._selected.next(null);\r\n this.selectedMessage = null;\r\n if (this.selectedMessageThread) {\r\n if (this.selectedMessageThread.close)\r\n this.selectedMessageThread.close();\r\n this.selectedMessageThread = null;\r\n }\r\n\r\n if (message)\r\n setTimeout(() => this.scrollToMessage(message));\r\n }\r\n\r\n selectedMessageVisible = false;\r\n\r\n async selectMessage(message : ChatMessage) {\r\n this._selected.next(message);\r\n this.selectedMessage = message;\r\n setTimeout(() => this.selectedMessageVisible = true);\r\n setTimeout(async () => {\r\n this.selectedMessageThread = await this.backend.getSourceForThread(this.topicID, message.id);\r\n }, 250);\r\n }\r\n\r\n selectMessageUser(message : ChatMessage) {\r\n this._userSelected.next(message);\r\n }\r\n\r\n async sendReply() {\r\n await this.selectedMessageThread.send({\r\n message: this.replyMessage,\r\n parentMessageId: this.selectedMessage.id,\r\n upvotes: 0,\r\n user: this.user,\r\n submessages: [],\r\n topicId: this.topicID,\r\n sentAt: Date.now(),\r\n updatedAt: Date.now()\r\n })\r\n this.replyMessage = '';\r\n }\r\n\r\n scrollToMessage(message : ChatMessage) {\r\n let el = this.elementRef.nativeElement.querySelector(`[data-comment-id=\"${message.id}\"]`);\r\n if (!el)\r\n return;\r\n el.scrollIntoView({ block: 'center', inline: 'start' });\r\n }\r\n}","import { Component, Input, Output } from '@angular/core';\r\nimport { ChatMessage } from '@banta/common';\r\nimport { Subject, Observable } from 'rxjs';\r\nimport { ChatBackendService } from '../common';\r\n\r\n@Component({\r\n selector: 'banta-live-comment',\r\n template: `\r\n <banta-comment \r\n *ngIf=\"message\"\r\n [message]=\"message\"\r\n (upvoted)=\"upvote()\"\r\n (reported)=\"report()\"\r\n (selected)=\"select()\"\r\n ></banta-comment>\r\n `,\r\n styles: [``]\r\n})\r\nexport class LiveCommentComponent {\r\n constructor(\r\n private backend : ChatBackendService\r\n ) {\r\n\r\n }\r\n\r\n private _message : ChatMessage;\r\n private _upvoted = new Subject<void>();\r\n private _reported = new Subject<void>();\r\n private _selected = new Subject<void>();\r\n\r\n @Output()\r\n get upvoted() : Observable<void> {\r\n return this._upvoted;\r\n }\r\n \r\n @Output()\r\n get reported() : Observable<void> {\r\n return this._reported;\r\n }\r\n\r\n @Output()\r\n get selected() : Observable<void> {\r\n return this._selected;\r\n }\r\n \r\n @Input()\r\n get message() : ChatMessage {\r\n return this._message;\r\n }\r\n\r\n private unsubscribe : Function;\r\n\r\n set message(value) {\r\n let originalId = null;\r\n if (this._message)\r\n originalId = this._message.id;\r\n \r\n this._message = value;\r\n\r\n if (value && originalId === value.id) {\r\n return;\r\n }\r\n \r\n if (this.unsubscribe)\r\n this.unsubscribe();\r\n \r\n if (value) {\r\n this.unsubscribe = this.backend.watchMessage(value, message => this.message = message);\r\n }\r\n }\r\n\r\n report() {\r\n this._reported.next();\r\n }\r\n \r\n upvote() {\r\n this._upvoted.next();\r\n }\r\n\r\n select() {\r\n this._selected.next();\r\n }\r\n}","import { Component, ElementRef, Input, Output, ViewChild } from \"@angular/core\";\r\nimport { ChatMessage, ChatSource, User } from \"@banta/common\";\r\nimport { Observable, Subject } from \"rxjs\";\r\nimport { EMOJIS } from \"../../emoji\";\r\n\r\nexport interface AutoCompleteOption {\r\n label : string;\r\n action? : () => void;\r\n}\r\n\r\nexport interface HashTag {\r\n hashtag : string;\r\n description : string;\r\n}\r\n\r\n@Component({\r\n selector: 'banta-comment-field',\r\n templateUrl: './comment-field.component.html',\r\n styleUrls: ['./comment-field.component.scss']\r\n})\r\nexport class CommentFieldComponent {\r\n\r\n @Input() source : ChatSource;\r\n @Input() user : User;\r\n @Input() canComment = true;\r\n\r\n @Output() signInSelected = new Subject<void>();\r\n @Output() editAvatarSelected = new Subject<void>();\r\n\r\n sending = false;\r\n sendError : Error;\r\n expandError = false;\r\n text : string = '';\r\n @Input() sendLabel = 'Send';\r\n @Input() sendingLabel = 'Sending';\r\n @Input() label = 'Post a comment';\r\n @Input() permissionDeniedLabel = 'Unavailable'\r\n @Input() signInLabel = 'Sign In';\r\n @Input() placeholder = '';\r\n \r\n @ViewChild('autocomplete') autocompleteEl : ElementRef<HTMLElement>;\r\n @ViewChild('autocompleteContainer') autocompleteContainerEl : ElementRef<HTMLElement>;\r\n @ViewChild('textarea') textareaEl : ElementRef<HTMLTextAreaElement>;\r\n\r\n @Input() hashtags : HashTag[];\r\n @Input() participants : User[] = [];\r\n\r\n private _permissionDeniedError = new Subject<void>();\r\n\r\n @Output()\r\n get permissionDeniedError(): Observable<void> {\r\n return this._permissionDeniedError;\r\n }\r\n\r\n ngAfterViewInit() {\r\n let root = document.body.querySelector('[ng-version]') || document.body;\r\n root.appendChild(this.autocompleteEl.nativeElement);\r\n }\r\n\r\n showPermissionDenied() {\r\n this._permissionDeniedError.next();\r\n }\r\n\r\n showAutoComplete(options : AutoCompleteOption[]) {\r\n this.autoCompleteSelected = 0;\r\n this.autocompleteOptions = options;\r\n let pos = this.autocompleteContainerEl.nativeElement.getBoundingClientRect();\r\n let size = this.autocompleteEl.nativeElement.getBoundingClientRect();\r\n\r\n this.autocompleteEl.nativeElement.style.left = `${window.scrollX + pos.left}px`;\r\n this.autocompleteEl.nativeElement.style.top = `${window.scrollY + pos.top}px`;\r\n this.autocompleteEl.nativeElement.style.width = `${pos.width}px`;\r\n this.autocompleteVisible = true;\r\n }\r\n\r\n autocompleteVisible = false;\r\n autocompleteOptions : AutoCompleteOption[] = [];\r\n\r\n activateAutoComplete(option : AutoCompleteOption) {\r\n option.action();\r\n this.dismissAutoComplete();\r\n }\r\n\r\n dismissAutoComplete() {\r\n this.autocompleteVisible = false;\r\n this.completionFunc = null;\r\n this.completionPrefix = '';\r\n }\r\n\r\n indicateError(message : string) {\r\n this.sendError = new Error(message);\r\n setTimeout(() => {\r\n this.expandError = true;\r\n setTimeout(() => {\r\n this.expandError = false;\r\n }, 5*1000);\r\n });\r\n }\r\n\r\n completionFunc : (str : string) => AutoCompleteOption[];\r\n\r\n completionPrefix : string;\r\n autoCompleteSelected : number = 0;\r\n\r\n async autocomplete(replacement : string) {\r\n let el = this.textareaEl.nativeElement;\r\n this.text = this.text.slice(0, el.selectionStart - this.completionPrefix.length) + replacement + this.text.slice(el.selectionStart);\r\n }\r\n\r\n async insert(str : string) {\r\n let el = this.textareaEl.nativeElement;\r\n this.text = this.text.slice(0, el.selectionStart) + str + this.text.slice(el.selectionStart);\r\n }\r\n\r\n async onKeyDown(event : KeyboardEvent) {\r\n console.log(event.key);\r\n\r\n\r\n if (this.autocompleteVisible) {\r\n if (event.key === 'Escape') {\r\n this.dismissAutoComplete();\r\n return;\r\n }\r\n\r\n if (event.key === 'Shift') {\r\n return;\r\n }\r\n\r\n if (event.key === 'Enter') {\r\n this.activateAutoComplete(this.autocompleteOptions[this.autoCompleteSelected]);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n if (event.key === 'ArrowUp') {\r\n if (this.autoCompleteSelected === 0)\r\n this.autoCompleteSelected = this.autocompleteOptions.length - 1;\r\n else\r\n this.autoCompleteSelected = this.autoCompleteSelected - 1;\r\n event.stopPropagation();\r\n event.preventDefault();\r\n return;\r\n } else if (event.key === 'ArrowDown') {\r\n this.autoCompleteSelected = (this.autoCompleteSelected + 1) % this.autocompleteOptions.length;\r\n event.stopPropagation();\r\n event.preventDefault();\r\n return;\r\n }\r\n }\r\n\r\n if (event.key === 'Enter' && event.ctrlKey) {\r\n await this.sendMessage();\r\n return;\r\n }\r\n \r\n if (this.completionFunc) {\r\n if (event.key === 'Backspace') {\r\n this.completionPrefix = this.completionPrefix.slice(0, this.completionPrefix.length - 1);\r\n\r\n if (this.completionPrefix === '') {\r\n this.dismissAutoComplete();\r\n return;\r\n }\r\n } else if (event.key === ' ' || event.key.length > 1) {\r\n this.dismissAutoComplete();\r\n return;\r\n } else {\r\n this.completionPrefix += event.key;\r\n }\r\n\r\n this.showAutoComplete(this.completionFunc(this.completionPrefix));\r\n } else {\r\n if (event.key === ':') {\r\n this.startAutoComplete(event, prefix => {\r\n prefix = prefix.slice(1);\r\n\r\n // makes :-), :-( etc work (as they are \":)\" etc in the db)\r\n if (prefix.startsWith('-'))\r\n prefix = prefix.slice(1);\r\n \r\n return Object.keys(EMOJIS)\r\n .filter(k => k.includes(prefix) || EMOJIS[k].keywords.some(kw => kw.includes(prefix)))\r\n .map(k => ({\r\n label: `${EMOJIS[k].char} ${k}`,\r\n action: () => this.autocomplete(EMOJIS[k].char)\r\n }))\r\n .slice(0, 5)\r\n ;\r\n });\r\n } else if (event.key === '@') {\r\n this.startAutoComplete(event, prefix => {\r\n prefix = prefix.slice(1);\r\n return this.participants.filter(x => x.username.includes(prefix))\r\n .map(p => ({\r\n label: `@${p.username} -- ${p.displayName}`,\r\n action: () => this.autocomplete(`@${p.username}`)\r\n }))\r\n ;\r\n });\r\n } else if (event.key === '#') {\r\n this.startAutoComplete(event, prefix => {\r\n prefix = prefix.slice(1);\r\n \r\n return this.hashtags\r\n .filter(ht => ht.hashtag.includes(prefix))\r\n .map(ht => ({\r\n label: `#${ht.hashtag}${ht.description ? ` -- ${ht.description}` : ``}`,\r\n action: () => this.autocomplete(`#${ht.hashtag}`)\r\n }))\r\n .slice(0, 5)\r\n ;\r\n });\r\n }\r\n }\r\n }\r\n\r\n startAutoComplete(event : KeyboardEvent, completionFunc : (str : string) => AutoCompleteOption[]) {\r\n this.completionPrefix = event.key;\r\n this.completionFunc = completionFunc;\r\n this.showAutoComplete(this.completionFunc(this.completionPrefix));\r\n }\r\n\r\n onBlur() {\r\n setTimeout(() => this.dismissAutoComplete(), 250);\r\n }\r\n\r\n insertEmoji(text : string) {\r\n this.text += text;\r\n }\r\n\r\n showSignIn() {\r\n this.signInSelected.next();\r\n }\r\n\r\n showEditAvatar() {\r\n this.editAvatarSelected.next();\r\n }\r\n\r\n async sendMessage() {\r\n if (!this.source)\r\n return;\r\n \r\n this.sending = true;\r\n this.sendError = null;\r\n try {\r\n let text = (this.text || '').trim();\r\n\r\n if (text === '')\r\n return;\r\n\r\n let message : ChatMessage = {\r\n user: this.user,\r\n sentAt: Date.now(),\r\n url: location.href,\r\n upvotes: 0,\r\n message: text\r\n };\r\n\r\n try {\r\n await this.source.send(message);\r\n this.text = '';\r\n } catch (e) {\r\n this.indicateError(`Could not send: ${e.message}`);\r\n console.error(`Failed to send message: `, message);\r\n console.error(e);\r\n }\r\n } finally {\r\n this.sending = false;\r\n }\r\n }\r\n\r\n}","import { NgModule } from '@angular/core';\r\nimport { CommentComponent } from './comment/comment.component';\r\nimport { CommentViewComponent } from './comment-view/comment-view.component';\r\nimport { BantaCommentsComponent } from './banta-comments/banta-comments.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { BantaCommonModule } from '../common/common.module';\r\nimport { LiveCommentComponent } from './live-comment.component';\r\nimport { EmojiModule } from '../emoji';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { TextFieldModule } from '@angular/cdk/text-field';\r\nimport { CommentFieldComponent } from './comment-field/comment-field.component';\r\n\r\nconst COMPONENTS = [\r\n CommentComponent,\r\n CommentViewComponent,\r\n BantaCommentsComponent,\r\n LiveCommentComponent,\r\n CommentFieldComponent\r\n];\r\n\r\n@NgModule({\r\n declarations: COMPONENTS,\r\n imports: [\r\n CommonModule,\r\n TextFieldModule,\r\n FormsModule,\r\n MatIconModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatButtonModule,\r\n MatMenuModule,\r\n MatProgressSpinnerModule,\r\n BantaCommonModule,\r\n EmojiModule\r\n ],\r\n exports: COMPONENTS\r\n})\r\nexport class CommentsModule {\r\n}","import { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { BantaCommentsComponent, CommentsModule } from './comments';\r\nimport { BantaChatComponent, ChatModule } from './chat';\r\nimport { EmojiModule } from './emoji';\r\nimport { BantaComponent } from './banta/banta.component';\r\nimport { BantaLogoComponent } from './banta-logo.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { BantaCommonModule } from './common/common.module';\r\nimport { LiveMessageComponent } from './live-message.component';\r\nimport { MatButtonModule } from \"@angular/material/button\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\r\nimport { MatMenuModule } from \"@angular/material/menu\";\r\nimport { MatDialogModule } from \"@angular/material/dialog\";\r\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\r\nimport { MatInputModule } from \"@angular/material/input\";\r\nimport { MatProgressSpinnerModule } from \"@angular/material/progress-spinner\";\r\nimport { BantaService } from './common';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n BantaCommonModule,\r\n CommentsModule,\r\n ChatModule,\r\n EmojiModule,\r\n \r\n MatIconModule,\r\n MatButtonModule,\r\n MatTooltipModule,\r\n MatMenuModule,\r\n MatDialogModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatProgressSpinnerModule\r\n ],\r\n declarations: [\r\n BantaComponent,\r\n BantaLogoComponent,\r\n LiveMessageComponent\r\n ],\r\n exports: [\r\n BantaComponent,\r\n BantaLogoComponent,\r\n LiveMessageComponent,\r\n ChatModule,\r\n CommentsModule\r\n ]\r\n})\r\nexport class BantaSdkModule {\r\n static forRoot(): ModuleWithProviders<BantaSdkModule> {\r\n return {\r\n ngModule: BantaSdkModule,\r\n providers: [\r\n BantaService\r\n ]\r\n }\r\n }\r\n}","import { Subject, Observable, ConnectableObservable } from 'rxjs';\r\nimport { publish } from 'rxjs/operators';\r\n\r\nexport interface LazyConnectionOptions<T> {\r\n start : (subject : Subject<T>) => void;\r\n stop : () => void;\r\n}\r\n\r\nexport function lazyConnection<T>(options : LazyConnectionOptions<T>): Observable<T> {\r\n\r\n let obs = new Observable(observer => {\r\n let subject = new Subject<T>();\r\n let subscription = subject.subscribe(observer);\r\n\r\n options.start(subject);\r\n return () => {\r\n subscription.unsubscribe();\r\n options.stop();\r\n };\r\n });\r\n \r\n return (<ConnectableObservable<T>>obs.pipe(publish())).refCount();\r\n}"]}
1
+ {"version":3,"sources":["../../../projects/sdk/src/lib/common/banta.service.ts","../../../projects/sdk/src/lib/common/timestamp.component.ts","../../../projects/sdk/src/lib/common/chat-backend.service.ts","../../../projects/sdk/src/lib/common/common.module.ts","../../../node_modules/tslib/tslib.es6.js","../../../projects/sdk/src/lib/emoji/emojis.ts","../../../projects/sdk/src/lib/emoji/emoji-selector-panel/emoji-selector-panel.component.ts","../../../projects/sdk/src/lib/emoji/emoji-selector-button.component.ts","../../../projects/sdk/src/lib/emoji/emoji.module.ts","../../../projects/sdk/src/lib/banta/banta.component.ts","../../../projects/sdk/src/lib/banta-logo.component.ts","../../../projects/sdk/src/lib/chat/chat-message/chat-message.component.ts","../../../projects/sdk/src/lib/chat/live-chat-message.component.ts","../../../projects/sdk/src/lib/chat/chat-view/chat-view.component.ts","../../../projects/sdk/src/lib/chat/banta-chat/banta-chat.component.ts","../../../projects/sdk/src/lib/chat/chat.module.ts","../../../projects/sdk/src/lib/live-message.component.ts","../../../projects/sdk/src/lib/comments/comment/comment.component.ts","../../../projects/sdk/src/lib/comments/comment-view/comment-view.component.ts","../../../projects/sdk/src/lib/comments/banta-comments/banta-comments.component.ts","../../../projects/sdk/src/lib/comments/live-comment.component.ts","../../../projects/sdk/src/lib/comments/comment-field/comment-field.component.ts","../../../projects/sdk/src/lib/comments/comments.module.ts","../../../projects/sdk/src/lib/banta-sdk.module.ts","../../../projects/sdk/src/lib/common/lazy-connection.ts"],"names":["BantaService","this","_userChanged","BehaviorSubject","Object","defineProperty","prototype","_user","user","next","Injectable","TimestampComponent","relative","tooltip","updateInterval","showAbsolute","ngOnDestroy","clearInterval","_value","v","update","_this","diff","Date","now","value","minute","hour","day","week","month","updateTime","months","Math","floor","weeks","days","hours","minutes","window","setInterval","Component","args","selector","template","Input","COMPONENTS","NgModule","declarations","imports","CommonModule","exports","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","n","op","TypeError","call","pop","length","push","create","__values","o","s","m","i","__read","r","ar","error","__spread","arguments","concat","EMOJIS","grinning","keywords","char","category","grimacing","grin","joy","smiley","smile","sweat_smile","laughing","innocent","wink","blush","slightly_smiling","upside_down","relaxed","yum","relieved","heart_eyes","kissing_heart","kissing","kissing_smiling_eyes","kissing_closed_eyes","stuck_out_tongue_winking_eye","stuck_out_tongue_closed_eyes","stuck_out_tongue","money_mouth","nerd","sunglasses","hugging","smirk","no_mouth","neutral_face","expressionless","unamused","rolling_eyes","thinking","flushed","disappointed","worried","angry","rage","pensive","confused","slightly_sad","white_frowning","persevere","confounded","tired_face","weary","triumph","open_mouth","scream","fearful","cold_sweat","hushed","frowning","anguished","cry","disappointed_relieved","sleepy","sweat","sob","dizzy_face","astonished","zipper_mouth","mask","thermometer_face","bandage_face","sleeping","zzz","hankey","smiling_imp","imp","japanese_ogre","japanese_goblin","skull","ghost","alien","robot","smiley_cat","smile_cat","joy_cat","heart_eyes_cat","smirk_cat","kissing_cat","scream_cat","crying_cat_face","pouting_cat","raised_hands","clap","wave","+1","minus1","facepunch","fist","ok_hand","hand","open_hands","muscle","pray","point_up","point_up_2","point_down","point_left","point_right","middle_finger","splayed_fingers","sign_of_horns","vulcan_salute","writing_hand","nail_care","lips","tongue","ear","nose","eye","eyes","bust_in_silhouette","busts_in_silhouette","speaking_head","baby","boy","girl","man","woman","person_with_blond_hair","older_man","older_woman","man_with_gua_pi_mao","man_with_turban","cop","construction_worker","guardsman","sleuth","santa","angel","princess","bride_with_veil","runner","walking","dancer","dancers","couple","two_men_holding_hands","two_women_holding_hands","bow","information_desk_person","no_good","ok_woman","raising_hand","person_with_pouting_face","person_frowning","haircut","massage","couple_with_heart","female_couple_with_heart","male_couple_with_heart","couplekiss","female_couplekiss","male_couplekiss","family","family_man_woman_girl","family_man_woman_girl_boy","family_man_woman_boys","family_man_woman_girls","family_women_boy","family_women_girl","family_women_girl_boy","family_women_boys","family_women_girls","family_men_boy","family_men_girl","family_men_girl_boy","family_men_boys","family_men_girls","womans_clothes","shirt","jeans","necktie","dress","bikini","kimono","lipstick","kiss","footprints","high_heel","sandal","boot","mans_shoe","athletic_shoe","womans_hat","tophat","helmet","mortar_board","crown","school_satchel","pouch","purse","handbag","briefcase","eyeglasses","dark_sunglasses","ring","closed_umbrella","dog","cat","mouse","hamster","rabbit","bear","panda_face","koala","tiger","lion_face","cow","pig","pig_nose","frog","octopus","monkey_face","see_no_evil","hear_no_evil","speak_no_evil","monkey","chicken","penguin","bird","baby_chick","hatching_chick","hatched_chick","wolf","boar","horse","unicorn_face","bee","bug","snail","beetle","ant","spider","scorpion","crab","snake","turtle","tropical_fish","fish","blowfish","dolphin","whale","whale2","crocodile","leopard","tiger2","water_buffalo","ox","cow2","dromedary_camel","camel","elephant","goat","ram","sheep","racehorse","pig2","rat","mouse2","rooster","turkey","dove_of_peace","dog2","poodle","cat2","rabbit2","chipmunk","feet","dragon","dragon_face","cactus","christmas_tree","evergreen_tree","deciduous_tree","palm_tree","seedling","herb","shamrock","four_leaf_clover","bamboo","tanabata_tree","leaves","fallen_leaf","maple_leaf","ear_of_rice","hibiscus","sunflower","rose","tulip","blossom","cherry_blossom","bouquet","mushroom","chestnut","jack_o_lantern","shell","spider_web","earth_americas","earth_africa","earth_asia","full_moon","waning_gibbous_moon","last_quarter_moon","waning_crescent_moon","new_moon","waxing_crescent_moon","first_quarter_moon","moon","new_moon_with_face","full_moon_with_face","first_quarter_moon_with_face","last_quarter_moon_with_face","sun_with_face","crescent_moon","star","star2","dizzy","sparkles","comet","sunny","white_sun_with_small_cloud","partly_sunny","white_sun_behind_cloud","white_sun_behind_cloud_with_rain","cloud","cloud_with_rain","thunder_cloud_and_rain","cloud_with_lightning","zap","fire","boom","snowflake","cloud_with_snow","snowman","snowman_with_snow","wind_blowing_face","dash","cloud_with_tornado","fog","umbrella_without_rain","umbrella","droplet","sweat_drops","ocean","green_apple","apple","pear","tangerine","lemon","banana","watermelon","grapes","strawberry","melon","cherries","peach","pineapple","tomato","eggplant","hot_pepper","corn","sweet_potato","honey_pot","bread","cheese_wedge","poultry_leg","meat_on_bone","fried_shrimp","egg","hamburger","fries","hot_dog","pizza","spaghetti","taco","burrito","ramen","stew","fish_cake","sushi","bento","curry","rice_ball","rice","rice_cracker","oden","dango","shaved_ice","ice_cream","icecream","cake","birthday","custard","candy","lollipop","chocolate_bar","popcorn","doughnut","cookie","beer","beers","wine_glass","cocktail","tropical_drink","bottle","sake","tea","coffee","baby_bottle","fork_and_knife","fork_and_knife_with_plate","soccer","basketball","football","baseball","tennis","volleyball","rugby_football","8ball","golf","golfer","table_tennis","badminton","ice_hockey","field_hockey","cricket","ski","skier","snowboarder","ice_skate","bow_and_arrow","fishing_pole_and_fish","rowboat","swimmer","surfer","bath","person_with_ball","weight_lifter","bicyclist","mountain_bicyclist","horse_racing","man_levitating","trophy","running_shirt_with_sash","sports_medal","military_medal","reminder_ribbon","rosette","ticket","admission_ticket","performing_arts","art","circus_tent","microphone","headphones","musical_score","musical_keyboard","saxophone","trumpet","guitar","violin","clapper","video_game","space_invader","dart","game_die","slot_machine","bowling","car","taxi","blue_car","bus","trolleybus","racing_car","police_car","ambulance","fire_engine","minibus","truck","articulated_lorry","tractor","racing_motorcycle","bike","rotating_light","oncoming_police_car","oncoming_bus","oncoming_automobile","oncoming_taxi","aerial_tramway","mountain_cableway","suspension_railway","railway_car","train","monorail","bullettrain_side","bullettrain_front","light_rail","mountain_railway","steam_locomotive","train2","metro","tram","station","helicopter","small_airplane","airplane","airplane_departure","airplane_arrival","boat","motor_boat","speedboat","ferry","passenger_ship","rocket","artificial_satellite","seat","anchor","construction","fuelpump","busstop","vertical_traffic_light","traffic_light","checkered_flag","ship","ferris_wheel","roller_coaster","carousel_horse","building_construction","foggy","tokyo_tower","factory","fountain","rice_scene","mountain","snow_capped_mountain","mount_fuji","volcano","japan","camping","tent","national_park","motorway","railway_track","sunrise","sunrise_over_mountains","desert","beach_with_umbrella","desert_island","city_sunrise","city_sunset","cityscape","night_with_stars","bridge_at_night","milky_way","stars","sparkler","fireworks","rainbow","buildings","european_castle","japanese_castle","stadium","statue_of_liberty","house","house_with_garden","derelict_house","office","department_store","post_office","european_post_office","hospital","bank","hotel","convenience_store","school","love_hotel","wedding","museum","church","mosque","synagogue","kaaba","shinto_shrine","watch","iphone","calling","computer","keyboard","desktop_computer","printer","three_button_mouse","trackball","joystick","compression","minidisc","floppy_disk","cd","dvd","vhs","camera","camera_with_flash","video_camera","movie_camera","film_projector","film_frames","telephone_receiver","phone","pager","fax","tv","radio","studio_microphone","level_slider","control_knobs","stopwatch","timer_clock","alarm_clock","mantelpiece_clock","hourglass_flowing_sand","hourglass","satellite","battery","electric_plug","bulb","flashlight","candle","wastebasket","oil_drum","money_with_wings","dollar","yen","euro","pound","moneybag","credit_card","gem","scales","wrench","hammer","hammer_and_pick","hammer_and_wrench","pick","nut_and_bolt","gear","chains","gun","bomb","hocho","dagger_knife","crossed_swords","shield","smoking","skull_and_crossbones","coffin","funeral_urn","amphora","crystal_ball","prayer_beads","barber","alembic","telescope","microscope","hole","pill","syringe","thermometer","bookmark","toilet","shower","bathtub","key","old_key","couch_and_lamp","sleeping_accommodation","bed","door","bellhop_bell","frame_with_picture","world_map","umbrella_on_ground","moyai","shopping_bags","balloon","flags","ribbon","gift","confetti_ball","tada","dolls","wind_chime","crossed_flags","izakaya_lantern","envelope","envelope_with_arrow","incoming_envelope","email","love_letter","postbox","mailbox_closed","mailbox","mailbox_with_mail","mailbox_with_no_mail","package","postal_horn","inbox_tray","outbox_tray","scroll","page_with_curl","bookmark_tabs","bar_chart","chart_with_upwards_trend","chart_with_downwards_trend","page_facing_up","date","calendar","spiral_calendar_pad","card_index","card_file_box","ballot_box_with_ballot","file_cabinet","clipboard","spiral_note_pad","file_folder","open_file_folder","card_index_dividers","rolled_up_newspaper","newspaper","notebook","closed_book","green_book","blue_book","orange_book","notebook_with_decorative_cover","ledger","books","book","link","paperclip","linked_paperclips","scissors","triangular_ruler","straight_ruler","pushpin","round_pushpin","triangular_flag_on_post","waving_white_flag","waving_black_flag","closed_lock_with_key","lock","unlock","lock_with_ink_pen","lower_left_ballpoint_pen","lower_left_fountain_pen","black_nib","memo","pencil2","lower_left_crayon","lower_left_paintbrush","mag","mag_right","heart","yellow_heart","green_heart","blue_heart","purple_heart","broken_heart","heavy_heart_exclamation_mark_ornament","two_hearts","revolving_hearts","heartbeat","heartpulse","sparkling_heart","cupid","gift_heart","heart_decoration","peace_symbol","latin_cross","star_and_crescent","om_symbol","wheel_of_dharma","star_of_david","six_pointed_star","menorah_with_nine_branches","yin_yang","orthodox_cross","place_of_worship","ophiuchus","aries","taurus","gemini","cancer","leo","virgo","libra","scorpius","sagittarius","capricorn","aquarius","pisces","id","atom_symbol","u7a7a","u5272","radioactive_sign","biohazard_sign","mobile_phone_off","vibration_mode","u6709","u7121","u7533","u55b6","u6708","eight_pointed_black_star","vs","accept","white_flower","ideograph_advantage","secret","congratulations","u5408","u6e80","u7981","a","b","ab","cl","o2","sos","no_entry","name_badge","no_entry_sign","x","anger","hotsprings","no_pedestrians","do_not_litter","no_bicycles","non-potable_water","underage","no_mobile_phones","exclamation","grey_exclamation","question","grey_question","bangbang","interrobang","100","low_brightness","high_brightness","trident","fleur_de_lis","part_alternation_mark","warning","children_crossing","beginner","recycle","u6307","chart","sparkle","eight_spoked_asterisk","negative_squared_cross_mark","white_check_mark","diamond_shape_with_a_dot_inside","cyclone","loop","globe_with_meridians","atm","sa","passport_control","customs","baggage_claim","left_luggage","wheelchair","no_smoking","wc","parking","potable_water","mens","womens","baby_symbol","restroom","put_litter_in_its_place","cinema","signal_strength","koko","ng","ok","up","cool","new","free","zero","one","two","three","four","five","six","seven","eight","nine","keycap_ten","keycap_star","1234","arrow_forward","double_vertical_bar","black_right_pointing_triangle_with_double_vertical_bar","black_square_for_stop","black_circle_for_record","black_right_pointing_double_triangle_with_vertical_bar","black_left_pointing_double_triangle_with_vertical_bar","fast_forward","rewind","twisted_rightwards_arrows","repeat","repeat_one","arrow_backward","arrow_up_small","arrow_down_small","arrow_double_up","arrow_double_down","arrow_right","arrow_left","arrow_up","arrow_down","arrow_upper_right","arrow_lower_right","arrow_lower_left","arrow_upper_left","arrow_up_down","left_right_arrow","arrows_counterclockwise","arrow_right_hook","leftwards_arrow_with_hook","arrow_heading_up","arrow_heading_down","hash","information_source","abc","abcd","capital_abcd","symbols","musical_note","notes","wavy_dash","curly_loop","heavy_check_mark","arrows_clockwise","heavy_plus_sign","heavy_minus_sign","heavy_division_sign","heavy_multiplication_x","heavy_dollar_sign","currency_exchange","copyright","registered","tm","end","back","on","top","soon","ballot_box_with_check","radio_button","white_circle","black_circle","red_circle","large_blue_circle","small_orange_diamond","small_blue_diamond","large_orange_diamond","large_blue_diamond","small_red_triangle","black_small_square","white_small_square","black_large_square","white_large_square","small_red_triangle_down","black_medium_square","white_medium_square","black_medium_small_square","white_medium_small_square","black_square_button","white_square_button","speaker","sound","loud_sound","mute","mega","loudspeaker","bell","no_bell","black_joker","mahjong","spades","clubs","hearts","diamonds","flower_playing_cards","thought_balloon","right_anger_bubble","speech_balloon","left_speech_bubble","clock1","clock2","clock3","clock4","clock5","clock6","clock7","clock8","clock9","clock10","clock11","clock12","clock130","clock230","clock330","clock430","clock530","clock630","clock730","clock830","clock930","clock1030","clock1130","clock1230","af","ax","al","dz","as","ad","ao","ai","aq","ag","am","aw","au","at","az","bs","bh","bd","bb","by","be","bz","bj","bm","bt","bo","bq","ba","bw","br","io","vg","bn","bg","bf","bi","cv","kh","cm","ca","ic","ky","cf","td","chile","cn","cx","cc","co","km","cg","drc","ck","cr","hr","cu","cw","cy","cz","dk","dj","dm","do","ec","eg","sv","gq","er","ee","et","eu","fk","fo","fj","fi","fr","gf","pf","tf","ga","gm","ge","de","gh","gi","gr","gl","gd","gp","gu","gt","gg","gn","gw","gy","ht","hn","hk","hu","is","in","indonesia","ir","iq","ie","im","il","it","ci","jm","jp","je","jo","kz","ke","ki","xk","kw","kg","la","lv","lb","ls","lr","ly","li","lt","lu","mo","mk","mg","mw","my","mv","ml","mt","mh","mq","mr","mu","yt","mx","fm","md","mc","mn","me","ms","ma","mz","mm","na","nr","np","nl","nc","nz","ni","ne","nigeria","nu","nf","mp","kp","no","om","pk","pw","ps","pa","pg","py","pe","ph","pn","pl","pt","pr","qa","re","ro","ru","rw","bl","sh","kn","lc","pm","vc","ws","sm","st","saudi_arabia","sn","rs","sc","sl","sg","sx","sk","si","sb","so","za","gs","kr","ss","es","lk","sd","sr","sz","se","ch","sy","tw","tj","tz","th","tl","tg","tk","to","tt","tn","tr","turkmenistan","tc","tuvalu","ug","ua","ae","gb","us","vi","uy","uz","vu","va","ve","vn","wf","eh","ye","zm","zw","octocat","shipit","bowtie","neckbeard","metal","fu","trollface","godmode","goberserk","finnadie","feelsgood","rage1","rage2","rage3","rage4","suspect","hurtrealbad","EmojiSelectorPanelComponent","sanitizer","activeCategory","searchResults","searchVisible","selected","Subject","_searchQuery","setTimeout","keys","filter","k","includes","map","splice","console","log","humanize","str","replace","toUpperCase","select","pairs","object","hideSearch","showSearch","ngOnInit","cats","categoryIcons","people","animals_and_nature","travel_and_places","activity","food_and_drink","objects","_b","_c","pair","emoji","name","icon","emojis","html","bypassSecurityTrustHtml","twemoji","parse","categories","DomSanitizer","Output","EmojiSelectorButtonComponent","_selected","showEmojiPanel","removeListener","panelElement","nativeElement","remove","ngAfterViewInit","document","querySelector","appendChild","removeEventListener","clickListener","resizeListener","place","pos","buttonElement","getBoundingClientRect","size","left","scrollX","width","innerWidth","assign","style","scrollY","height","max","show","ev","parent","target","isInDialog","matches","parentElement","addEventListener","insert","ViewChild","read","ElementRef","FormsModule","MatIconModule","MatButtonModule","MatFormFieldModule","MatInputModule","BantaComponent","banta","backend","matDialog","_subs","Subscription","auxOpen","auxTitle","auxMode","mobileFocus","newNotifications","chatLabel","commentsLabel","_signInSelected","pointOpen","pointSubChat","newPointSubMessage","genericAvatarUrl","add","userChanged","subscribe","currentUser","notificationsChanged","notifs","notifications","newNotification","notif","sendPointSubMessage","text","message","trim","sentAt","upvotes","send","_a","e_1","goToMessage","targetMessage","parentMessageId","getMessage","topicId","parentMessage","dir","viewType","getViewType","close","getSourceForThread","refreshMessage","firehose","jumpToMessage","pointUnfocus","unsubscribe","showAux","title","mode","showNotifications","_topicID","connectToTopic","getSourceForTopic","firehoseSource","pointSource","showSignIn","closeAux","endsWith","upvoteMessage","showProfile","profileUser","username","sendReport","alert","reportMessage","reportedMessage","ChatBackendService","MatDialog","static","HostBinding","ChatMessageComponent","_reported","_upvoted","_userSelected","avatarForUser","avatarUrl","upvote","report","selectUser","LiveChatMessageComponent","_message","originalId","watchMessage","ChatViewComponent","elementRef","_sourceSubs","messages","maxMessages","_source","slice","messageReceived","msg","messageSent","currentUserChanged","addMessage","shift","isScrolledToLatest","scrollToLatest","messageContainer","el","scrollTop","scrollHeight","offsetHeight","jumpTo","messageElement","scrollIntoView","behavior","flashMessage","flashedMessageId","mentionsMe","selectMessage","selectMessageUser","BantaChatComponent","signInLabel","sendLabel","permissionDeniedLabel","_permissionDeniedError","newMessage","identifier","setSourceFromTopicID","topicID","sendPermissionError","insertEmoji","onKeyDown","event","chatView","permissions","canChat","source","sendMessage","url","location","href","EmojiModule","LiveMessageComponent","CommentComponent","_avatarSelected","_usernameSelected","isNew","visible","showReplyAction","randomTime","random","asObservable","selectUsername","selectAvatar","CommentViewComponent","showEmptyState","allowReplies","menuMessage","maxVisibleMessages","newestLast","isViewingMore","isLoadingMore","hasMore","newMessages","olderMessages","messageIdentity","index","chatMessage","showNew","overflow","showMore","loadAfter","lastMessage","destination","bucket","unshift","type","BantaCommentsComponent","hashtags","hashtag","description","participants","replyLabel","sendingLabel","postCommentLabel","postReplyLabel","_editAvatarSelected","sending","expandError","selectedMessageVisible","addParticipant","forEach","find","showEditAvatar","_newMessageText","sendError","showPermissionDenied","canComment","newMessageText","onReplyKeyDown","insertReplyEmoji","replyMessage","indicateError","Error","undefined","unselectMessage","selectedMessage","selectedMessageThread","scrollToMessage","sendReply","submessages","updatedAt","block","inline","LiveCommentComponent","CommentFieldComponent","signInSelected","editAvatarSelected","placeholder","autocompleteVisible","autocompleteOptions","autoCompleteSelected","autocompleteEl","showAutoComplete","options","autocompleteContainerEl","activateAutoComplete","option","action","dismissAutoComplete","completionFunc","completionPrefix","autocomplete","replacement","textareaEl","selectionStart","stopPropagation","preventDefault","ctrlKey","startAutoComplete","prefix","startsWith","some","p","displayName","onBlur","TextFieldModule","MatMenuModule","MatProgressSpinnerModule","BantaCommonModule","BantaSdkModule","forRoot","ngModule","providers","CommentsModule","ChatModule","MatTooltipModule","MatDialogModule","BantaLogoComponent","Observable","observer","subject","subscription","start","stop","pipe","publish","refCount"],"mappings":"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","sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { UserAccount } from '@banta/common';\r\n\r\n@Injectable()\r\nexport class BantaService {\r\n private _userChanged = new BehaviorSubject<UserAccount>(null);\r\n private _user : UserAccount;\r\n \r\n get userChanged() : Observable<UserAccount> {\r\n return this._userChanged;\r\n }\r\n \r\n set user(user : UserAccount) {\r\n this._user = user;\r\n this._userChanged.next(user);\r\n }\r\n\r\n get user() {\r\n return this._user;\r\n }\r\n}","import { Component, Input } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: 'banta-timestamp',\r\n template: `\r\n <span *ngIf=\"showAbsolute\" [title]=\"value | date : 'short'\">\r\n {{value | date : 'shortDate'}}\r\n </span>\r\n <span *ngIf=\"!showAbsolute\" [title]=\"value | date : 'short'\">\r\n {{relative}}\r\n </span>\r\n `,\r\n styles: [``]\r\n})\r\nexport class TimestampComponent {\r\n private _value : number;\r\n relative = '';\r\n tooltip = '';\r\n\r\n private updateInterval = null;\r\n\r\n ngOnDestroy() {\r\n if (this.updateInterval)\r\n clearInterval(this.updateInterval);\r\n }\r\n\r\n @Input()\r\n get value() {\r\n return this._value;\r\n }\r\n\r\n showAbsolute = false;\r\n\r\n update() {\r\n \r\n let now = Date.now();\r\n let diff = now - this.value;\r\n let minute = 1000*60;\r\n let hour = minute * 60;\r\n let day = hour * 24;\r\n let week = day * 7;\r\n let month = day * 30;\r\n let year = day * 365;\r\n this.showAbsolute = false;\r\n let updateTime = 0;\r\n\r\n if (diff > year) {\r\n this.showAbsolute = true;\r\n this.relative = 'abs';\r\n return;\r\n }\r\n\r\n if (diff > month) {\r\n let months = Math.floor(diff / month);\r\n\r\n if (months === 1)\r\n this.relative = `${months} month ago`;\r\n else\r\n this.relative = `${months} months ago`;\r\n \r\n } else if (diff > week) {\r\n let weeks = Math.floor(diff / week);\r\n\r\n if (weeks === 1)\r\n this.relative = `${weeks} week ago`;\r\n else\r\n this.relative = `${weeks} weeks ago`;\r\n } else if (diff > day) {\r\n let days = Math.floor(diff / day);\r\n if (days === 1)\r\n this.relative = `${days} day ago`;\r\n else\r\n this.relative = `${days} days ago`;\r\n } else if (diff > hour) {\r\n let hours = Math.floor(diff / hour);\r\n if (hours === 1)\r\n this.relative = `${hours} hour ago`;\r\n else\r\n this.relative = `${hours} hours ago`;\r\n \r\n updateTime = 1000 * 60 * 30;\r\n } else if (diff > minute) {\r\n let minutes = Math.floor(diff / minute);\r\n if (minutes === 1)\r\n this.relative = `${minutes} minute ago`;\r\n else\r\n this.relative = `${minutes} minutes ago`;\r\n updateTime = 1000 * 45;\r\n } else if (diff > 30_000) {\r\n this.relative = `about a minute ago`;\r\n updateTime = 1000 * 60;\r\n } else {\r\n this.relative = `just now`;\r\n updateTime = 1000 * 30;\r\n }\r\n \r\n if (typeof window !== 'undefined') {\r\n clearInterval(this.updateInterval);\r\n if (updateTime > 0) {\r\n this.updateInterval = setInterval(() => this.update());\r\n }\r\n }\r\n }\r\n\r\n set value(v) {\r\n this._value = v;\r\n this.update();\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { ChatBackend, Notification, ChatSource, ChatMessage } from '@banta/common';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable()\r\nexport abstract class ChatBackendService implements ChatBackend {\r\n abstract getSourceForTopic(topicId : string) : Promise<ChatSource>;\r\n abstract getSourceForThread(topicId : string, messageId : string) : Promise<ChatSource>;\r\n abstract refreshMessage(message : ChatMessage): Promise<ChatMessage>;\r\n abstract getMessage(topicId : string, messageId : string): Promise<ChatMessage>;\r\n abstract getSubMessage(topicId : string, parentMessageId : string, messageId : string): Promise<ChatMessage>;\r\n abstract upvoteMessage(topicId : string, messageId : string, submessageId? : string): Promise<void>;\r\n abstract watchMessage(message : ChatMessage, handler : (message : ChatMessage) => void) : () => void;\r\n abstract modifyMessage?(message : ChatMessage) : Promise<void>;\r\n abstract get notificationsChanged() : Observable<Notification[]>;\r\n abstract get newNotification() : Observable<Notification>;\r\n}","import { NgModule } from '@angular/core';\r\nimport { TimestampComponent } from './timestamp.component';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nconst COMPONENTS = [\r\n TimestampComponent\r\n];\r\n\r\n@NgModule({\r\n declarations: COMPONENTS,\r\n imports: [\r\n CommonModule\r\n ],\r\n exports: COMPONENTS\r\n})\r\nexport class BantaCommonModule {\r\n}","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","export const EMOJIS = {\r\n \"grinning\": {\r\n \"keywords\": [\"face\", \"smile\", \"happy\", \"joy\", \":D\", \"grin\"],\r\n \"char\": \"😀\",\r\n \"category\": \"people\"\r\n },\r\n \"grimacing\": {\r\n \"keywords\": [\"face\", \"grimace\", \"teeth\"],\r\n \"char\": \"😬\",\r\n \"category\": \"people\"\r\n },\r\n \"grin\": {\r\n \"keywords\": [\"face\", \"happy\", \"smile\", \"joy\", \"kawaii\"],\r\n \"char\": \"😁\",\r\n \"category\": \"people\"\r\n },\r\n \"joy\": {\r\n \"keywords\": [\"face\", \"cry\", \"tears\", \"weep\", \"happy\", \"happytears\", \"haha\"],\r\n \"char\": \"😂\",\r\n \"category\": \"people\"\r\n },\r\n \"smiley\": {\r\n \"keywords\": [\"face\", \"happy\", \"joy\", \"haha\", \":D\", \":)\", \"smile\", \"funny\"],\r\n \"char\": \"😃\",\r\n \"category\": \"people\"\r\n },\r\n \"smile\": {\r\n \"keywords\": [\"face\", \"happy\", \"joy\", \"funny\", \"haha\", \"laugh\", \"like\", \":D\", \":)\"],\r\n \"char\": \"😄\",\r\n \"category\": \"people\"\r\n },\r\n \"sweat_smile\": {\r\n \"keywords\": [\"face\", \"hot\", \"happy\", \"laugh\", \"sweat\", \"smile\", \"relief\"],\r\n \"char\": \"😅\",\r\n \"category\": \"people\"\r\n },\r\n \"laughing\": {\r\n \"keywords\": [\"happy\", \"joy\", \"lol\", \"satisfied\", \"haha\", \"face\", \"glad\", \"XD\", \"laugh\"],\r\n \"char\": \"😆\",\r\n \"category\": \"people\"\r\n },\r\n \"innocent\": {\r\n \"keywords\": [\"face\", \"angel\", \"heaven\", \"halo\"],\r\n \"char\": \"😇\",\r\n \"category\": \"people\"\r\n },\r\n \"wink\": {\r\n \"keywords\": [\"face\", \"happy\", \"mischievous\", \"secret\", \";)\", \"smile\"],\r\n \"char\": \"😉\",\r\n \"category\": \"people\"\r\n },\r\n \"blush\": {\r\n \"keywords\": [\"face\", \"smile\", \"happy\", \"flushed\", \"crush\", \"embarrassed\", \"shy\", \"joy\"],\r\n \"char\": \"😊\",\r\n \"category\": \"people\"\r\n },\r\n \"slightly_smiling\": {\r\n \"keywords\": [\"face\", \"smile\"],\r\n \"char\": \"🙂\",\r\n \"category\": \"people\"\r\n },\r\n \"upside_down\": {\r\n \"keywords\": [\"face\", \"flipped\", \"silly\", \"smile\"],\r\n \"char\": \"🙃\",\r\n \"category\": \"people\"\r\n },\r\n \"relaxed\": {\r\n \"keywords\": [\"face\", \"blush\", \"massage\", \"happiness\"],\r\n \"char\": \"☺️\",\r\n \"category\": \"people\"\r\n },\r\n \"yum\": {\r\n \"keywords\": [\"happy\", \"joy\", \"tongue\", \"smile\", \"face\", \"silly\", \"yummy\", \"nom\"],\r\n \"char\": \"😋\",\r\n \"category\": \"people\"\r\n },\r\n \"relieved\": {\r\n \"keywords\": [\"face\", \"relaxed\", \"phew\", \"massage\", \"happiness\"],\r\n \"char\": \"😌\",\r\n \"category\": \"people\"\r\n },\r\n \"heart_eyes\": {\r\n \"keywords\": [\"face\", \"love\", \"like\", \"affection\", \"valentines\", \"infatuation\", \"crush\", \"heart\"],\r\n \"char\": \"😍\",\r\n \"category\": \"people\"\r\n },\r\n \"kissing_heart\": {\r\n \"keywords\": [\"face\", \"love\", \"like\", \"affection\", \"valentines\", \"infatuation\", \"kiss\"],\r\n \"char\": \"😘\",\r\n \"category\": \"people\"\r\n },\r\n \"kissing\": {\r\n \"keywords\": [\"love\", \"like\", \"face\", \"3\", \"valentines\", \"infatuation\", \"kiss\"],\r\n \"char\": \"😗\",\r\n \"category\": \"people\"\r\n },\r\n \"kissing_smiling_eyes\": {\r\n \"keywords\": [\"face\", \"affection\", \"valentines\", \"infatuation\", \"kiss\"],\r\n \"char\": \"😙\",\r\n \"category\": \"people\"\r\n },\r\n \"kissing_closed_eyes\": {\r\n \"keywords\": [\"face\", \"love\", \"like\", \"affection\", \"valentines\", \"infatuation\", \"kiss\"],\r\n \"char\": \"😚\",\r\n \"category\": \"people\"\r\n },\r\n \"stuck_out_tongue_winking_eye\": {\r\n \"keywords\": [\"face\", \"prank\", \"childish\", \"playful\", \"mischievous\", \"smile\", \"wink\", \"tongue\"],\r\n \"char\": \"😜\",\r\n \"category\": \"people\"\r\n },\r\n \"stuck_out_tongue_closed_eyes\": {\r\n \"keywords\": [\"face\", \"prank\", \"playful\", \"mischievous\", \"smile\", \"tongue\"],\r\n \"char\": \"😝\",\r\n \"category\": \"people\"\r\n },\r\n \"stuck_out_tongue\": {\r\n \"keywords\": [\"face\", \"prank\", \"childish\", \"playful\", \"mischievous\", \"smile\", \"tongue\"],\r\n \"char\": \"😛\",\r\n \"category\": \"people\"\r\n },\r\n \"money_mouth\": {\r\n \"keywords\": [\"face\", \"rich\", \"dollar\", \"money\"],\r\n \"char\": \"🤑\",\r\n \"category\": \"people\"\r\n },\r\n \"nerd\": {\r\n \"keywords\": [\"face\", \"nerdy\", \"geek\", \"dork\"],\r\n \"char\": \"🤓\",\r\n \"category\": \"people\"\r\n },\r\n \"sunglasses\": {\r\n \"keywords\": [\"face\", \"cool\", \"smile\", \"summer\", \"beach\", \"sunglass\"],\r\n \"char\": \"😎\",\r\n \"category\": \"people\"\r\n },\r\n \"hugging\": {\r\n \"keywords\": [\"face\", \"smile\", \"hug\"],\r\n \"char\": \"🤗\",\r\n \"category\": \"people\"\r\n },\r\n \"smirk\": {\r\n \"keywords\": [\"face\", \"smile\", \"mean\", \"prank\", \"smug\", \"sarcasm\"],\r\n \"char\": \"😏\",\r\n \"category\": \"people\"\r\n },\r\n \"no_mouth\": {\r\n \"keywords\": [\"face\", \"hellokitty\"],\r\n \"char\": \"😶\",\r\n \"category\": \"people\"\r\n },\r\n \"neutral_face\": {\r\n \"keywords\": [\"indifference\", \"meh\", \":|\", \"neutral\"],\r\n \"char\": \"😐\",\r\n \"category\": \"people\"\r\n },\r\n \"expressionless\": {\r\n \"keywords\": [\"face\", \"indifferent\", \"-_-\", \"meh\", \"deadpan\"],\r\n \"char\": \"😑\",\r\n \"category\": \"people\"\r\n },\r\n \"unamused\": {\r\n \"keywords\": [\"indifference\", \"bored\", \"straight face\", \"serious\", \"sarcasm\"],\r\n \"char\": \"😒\",\r\n \"category\": \"people\"\r\n },\r\n \"rolling_eyes\": {\r\n \"keywords\": [\"face\", \"eyeroll\", \"frustrated\"],\r\n \"char\": \"🙄\",\r\n \"category\": \"people\"\r\n },\r\n \"thinking\": {\r\n \"keywords\": [\"face\", \"hmmm\", \"think\", \"consider\"],\r\n \"char\": \"🤔\",\r\n \"category\": \"people\"\r\n },\r\n \"flushed\": {\r\n \"keywords\": [\"face\", \"blush\", \"shy\", \"flattered\"],\r\n \"char\": \"😳\",\r\n \"category\": \"people\"\r\n },\r\n \"disappointed\": {\r\n \"keywords\": [\"face\", \"sad\", \"upset\", \"depressed\", \":(\"],\r\n \"char\": \"😞\",\r\n \"category\": \"people\"\r\n },\r\n \"worried\": {\r\n \"keywords\": [\"face\", \"concern\", \"nervous\", \":(\"],\r\n \"char\": \"😟\",\r\n \"category\": \"people\"\r\n },\r\n \"angry\": {\r\n \"keywords\": [\"mad\", \"face\", \"annoyed\", \"frustrated\"],\r\n \"char\": \"😠\",\r\n \"category\": \"people\"\r\n },\r\n \"rage\": {\r\n \"keywords\": [\"angry\", \"mad\", \"hate\", \"despise\"],\r\n \"char\": \"😡\",\r\n \"category\": \"people\"\r\n },\r\n \"pensive\": {\r\n \"keywords\": [\"face\", \"sad\", \"depressed\", \"okay\", \"upset\"],\r\n \"char\": \"😔\",\r\n \"category\": \"people\"\r\n },\r\n \"confused\": {\r\n \"keywords\": [\"face\", \"indifference\", \"huh\", \"weird\", \"hmmm\", \":/\"],\r\n \"char\": \"😕\",\r\n \"category\": \"people\"\r\n },\r\n \"slightly_sad\": {\r\n \"keywords\": [\"face\", \"frowning\", \"disappointed\", \"sad\", \"upset\"],\r\n \"char\": \"🙁\",\r\n \"category\": \"people\"\r\n },\r\n \"white_frowning\": {\r\n \"keywords\": [\"face\", \"sad\", \"upset\", \"frown\"],\r\n \"char\": \"☹\",\r\n \"category\": \"people\"\r\n },\r\n \"persevere\": {\r\n \"keywords\": [\"face\", \"sick\", \"no\", \"upset\", \"oops\"],\r\n \"char\": \"😣\",\r\n \"category\": \"people\"\r\n },\r\n \"confounded\": {\r\n \"keywords\": [\"face\", \"confused\", \"sick\", \"unwell\", \"oops\", \":S\"],\r\n \"char\": \"😖\",\r\n \"category\": \"people\"\r\n },\r\n \"tired_face\": {\r\n \"keywords\": [\"sick\", \"whine\", \"upset\", \"frustrated\"],\r\n \"char\": \"😫\",\r\n \"category\": \"people\"\r\n },\r\n \"weary\": {\r\n \"keywords\": [\"face\", \"tired\", \"sleepy\", \"sad\", \"frustrated\", \"upset\"],\r\n \"char\": \"😩\",\r\n \"category\": \"people\"\r\n },\r\n \"triumph\": {\r\n \"keywords\": [\"face\", \"gas\", \"phew\", \"proud\", \"pride\"],\r\n \"char\": \"😤\",\r\n \"category\": \"people\"\r\n },\r\n \"open_mouth\": {\r\n \"keywords\": [\"face\", \"surprise\", \"impressed\", \"wow\", \"whoa\", \":O\"],\r\n \"char\": \"😮\",\r\n \"category\": \"people\"\r\n },\r\n \"scream\": {\r\n \"keywords\": [\"face\", \"munch\", \"scared\", \"omg\"],\r\n \"char\": \"😱\",\r\n \"category\": \"people\"\r\n },\r\n \"fearful\": {\r\n \"keywords\": [\"face\", \"scared\", \"terrified\", \"nervous\", \"oops\", \"huh\"],\r\n \"char\": \"😨\",\r\n \"category\": \"people\"\r\n },\r\n \"cold_sweat\": {\r\n \"keywords\": [\"face\", \"nervous\", \"sweat\"],\r\n \"char\": \"😰\",\r\n \"category\": \"people\"\r\n },\r\n \"hushed\": {\r\n \"keywords\": [\"face\", \"woo\", \"shh\"],\r\n \"char\": \"😯\",\r\n \"category\": \"people\"\r\n },\r\n \"frowning\": {\r\n \"keywords\": [\"face\", \"aw\", \"what\"],\r\n \"char\": \"😦\",\r\n \"category\": \"people\"\r\n },\r\n \"anguished\": {\r\n \"keywords\": [\"face\", \"stunned\", \"nervous\"],\r\n \"char\": \"😧\",\r\n \"category\": \"people\"\r\n },\r\n \"cry\": {\r\n \"keywords\": [\"face\", \"tears\", \"sad\", \"depressed\", \"upset\", \":'(\"],\r\n \"char\": \"😢\",\r\n \"category\": \"people\"\r\n },\r\n \"disappointed_relieved\": {\r\n \"keywords\": [\"face\", \"phew\", \"sweat\", \"nervous\"],\r\n \"char\": \"😥\",\r\n \"category\": \"people\"\r\n },\r\n \"sleepy\": {\r\n \"keywords\": [\"face\", \"tired\", \"rest\", \"nap\"],\r\n \"char\": \"😪\",\r\n \"category\": \"people\"\r\n },\r\n \"sweat\": {\r\n \"keywords\": [\"face\", \"hot\", \"sad\", \"tired\", \"exercise\"],\r\n \"char\": \"😓\",\r\n \"category\": \"people\"\r\n },\r\n \"sob\": {\r\n \"keywords\": [\"face\", \"cry\", \"tears\", \"sad\", \"upset\", \"depressed\"],\r\n \"char\": \"😭\",\r\n \"category\": \"people\"\r\n },\r\n \"dizzy_face\": {\r\n \"keywords\": [\"spent\", \"unconscious\", \"xox\", \"dizzy\"],\r\n \"char\": \"😵\",\r\n \"category\": \"people\"\r\n },\r\n \"astonished\": {\r\n \"keywords\": [\"face\", \"xox\", \"surprised\", \"poisoned\"],\r\n \"char\": \"😲\",\r\n \"category\": \"people\"\r\n },\r\n \"zipper_mouth\": {\r\n \"keywords\": [\"face\", \"sealed\", \"zipper\", \"secret\"],\r\n \"char\": \"🤐\",\r\n \"category\": \"people\"\r\n },\r\n \"mask\": {\r\n \"keywords\": [\"face\", \"sick\", \"ill\", \"disease\"],\r\n \"char\": \"😷\",\r\n \"category\": \"people\"\r\n },\r\n \"thermometer_face\": {\r\n \"keywords\": [\"sick\", \"temperature\", \"thermometer\", \"cold\"],\r\n \"char\": \"🤒\",\r\n \"category\": \"people\"\r\n },\r\n \"bandage_face\": {\r\n \"keywords\": [\"injured\", \"clumsy\", \"bandage\", \"hurt\"],\r\n \"char\": \"🤕\",\r\n \"category\": \"people\"\r\n },\r\n \"sleeping\": {\r\n \"keywords\": [\"face\", \"tired\", \"sleepy\", \"night\", \"zzz\"],\r\n \"char\": \"😴\",\r\n \"category\": \"people\"\r\n },\r\n \"zzz\": {\r\n \"keywords\": [\"sleepy\", \"tired\"],\r\n \"char\": \"💤\",\r\n \"category\": \"people\"\r\n },\r\n \"hankey\": {\r\n \"keywords\": [\"poop\", \"shitface\", \"fail\", \"turd\", \"shit\"],\r\n \"char\": \"💩\",\r\n \"category\": \"people\"\r\n },\r\n \"smiling_imp\": {\r\n \"keywords\": [\"devil\", \"horns\"],\r\n \"char\": \"😈\",\r\n \"category\": \"people\"\r\n },\r\n \"imp\": {\r\n \"keywords\": [\"devil\", \"angry\", \"horns\"],\r\n \"char\": \"👿\",\r\n \"category\": \"people\"\r\n },\r\n \"japanese_ogre\": {\r\n \"keywords\": [\"monster\", \"red\", \"mask\", \"halloween\", \"scary\", \"creepy\", \"devil\", \"demon\", \"japanese\", \"ogre\"],\r\n \"char\": \"👹\",\r\n \"category\": \"people\"\r\n },\r\n \"japanese_goblin\": {\r\n \"keywords\": [\"red\", \"evil\", \"mask\", \"monster\", \"scary\", \"creepy\", \"japanese\", \"goblin\"],\r\n \"char\": \"👺\",\r\n \"category\": \"people\"\r\n },\r\n \"skull\": {\r\n \"keywords\": [\"dead\", \"skeleton\", \"creepy\"],\r\n \"char\": \"💀\",\r\n \"category\": \"people\"\r\n },\r\n \"ghost\": {\r\n \"keywords\": [\"halloween\", \"spooky\", \"scary\"],\r\n \"char\": \"👻\",\r\n \"category\": \"people\"\r\n },\r\n \"alien\": {\r\n \"keywords\": [\"UFO\", \"paul\", \"weird\", \"outer_space\"],\r\n \"char\": \"👽\",\r\n \"category\": \"people\"\r\n },\r\n \"robot\": {\r\n \"keywords\": [\"computer\", \"machine\"],\r\n \"char\": \"🤖\",\r\n \"category\": \"people\"\r\n },\r\n \"smiley_cat\": {\r\n \"keywords\": [\"animal\", \"cats\", \"happy\", \"smile\"],\r\n \"char\": \"😺\",\r\n \"category\": \"people\"\r\n },\r\n \"smile_cat\": {\r\n \"keywords\": [\"animal\", \"cats\", \"smile\"],\r\n \"char\": \"😸\",\r\n \"category\": \"people\"\r\n },\r\n \"joy_cat\": {\r\n \"keywords\": [\"animal\", \"cats\", \"haha\", \"happy\", \"tears\"],\r\n \"char\": \"😹\",\r\n \"category\": \"people\"\r\n },\r\n \"heart_eyes_cat\": {\r\n \"keywords\": [\"animal\", \"love\", \"like\", \"affection\", \"cats\", \"valentines\", \"heart\"],\r\n \"char\": \"😻\",\r\n \"category\": \"people\"\r\n },\r\n \"smirk_cat\": {\r\n \"keywords\": [\"animal\", \"cats\", \"smirk\"],\r\n \"char\": \"😼\",\r\n \"category\": \"people\"\r\n },\r\n \"kissing_cat\": {\r\n \"keywords\": [\"animal\", \"cats\", \"kiss\"],\r\n \"char\": \"😽\",\r\n \"category\": \"people\"\r\n },\r\n \"scream_cat\": {\r\n \"keywords\": [\"animal\", \"cats\", \"munch\", \"scared\", \"scream\"],\r\n \"char\": \"🙀\",\r\n \"category\": \"people\"\r\n },\r\n \"crying_cat_face\": {\r\n \"keywords\": [\"animal\", \"tears\", \"weep\", \"sad\", \"cats\", \"upset\", \"cry\"],\r\n \"char\": \"😿\",\r\n \"category\": \"people\"\r\n },\r\n \"pouting_cat\": {\r\n \"keywords\": [\"animal\", \"cats\"],\r\n \"char\": \"😾\",\r\n \"category\": \"people\"\r\n },\r\n \"raised_hands\": {\r\n \"keywords\": [\"gesture\", \"hooray\", \"yea\", \"celebration\", \"hands\"],\r\n \"char\": \"🙌\",\r\n \"category\": \"people\"\r\n },\r\n \"clap\": {\r\n \"keywords\": [\"hands\", \"praise\", \"applause\", \"congrats\", \"yay\"],\r\n \"char\": \"👏\",\r\n \"category\": \"people\"\r\n },\r\n \"wave\": {\r\n \"keywords\": [\"hands\", \"gesture\", \"goodbye\", \"solong\", \"farewell\", \"hello\", \"palm\"],\r\n \"char\": \"👋\",\r\n \"category\": \"people\"\r\n },\r\n \"+1\": {\r\n \"keywords\": [\"thumbsup\", \"yes\", \"awesome\", \"good\", \"agree\", \"accept\", \"cool\", \"hand\", \"like\"],\r\n \"char\": \"👍\",\r\n \"category\": \"people\"\r\n },\r\n \"minus1\": { // TODO: should be \"-1\", fix TS bug\r\n \"keywords\": [\"thumbsdown\", \"no\", \"dislike\", \"hand\"],\r\n \"char\": \"👎\",\r\n \"category\": \"people\"\r\n },\r\n \"facepunch\": {\r\n \"keywords\": [\"angry\", \"violence\", \"fist\", \"hit\", \"attack\", \"hand\"],\r\n \"char\": \"👊\",\r\n \"category\": \"people\"\r\n },\r\n \"fist\": {\r\n \"keywords\": [\"fingers\", \"hand\", \"grasp\"],\r\n \"char\": \"✊\",\r\n \"category\": \"people\"\r\n },\r\n \"v\": {\r\n \"keywords\": [\"fingers\", \"ohyeah\", \"hand\", \"peace\", \"victory\", \"two\"],\r\n \"char\": \"✌️\",\r\n \"category\": \"people\"\r\n },\r\n \"ok_hand\": {\r\n \"keywords\": [\"fingers\", \"limbs\", \"perfect\", \"ok\"],\r\n \"char\": \"👌\",\r\n \"category\": \"people\"\r\n },\r\n \"hand\": {\r\n \"keywords\": [\"fingers\", \"stop\", \"highfive\", \"palm\", \"ban\", \"raised_hand\"],\r\n \"char\": \"✋\",\r\n \"category\": \"people\"\r\n },\r\n \"open_hands\": {\r\n \"keywords\": [\"fingers\", \"butterfly\", \"hands\", \"open\"],\r\n \"char\": \"👐\",\r\n \"category\": \"people\"\r\n },\r\n \"muscle\": {\r\n \"keywords\": [\"arm\", \"flex\", \"hand\", \"summer\", \"strong\", \"biceps\"],\r\n \"char\": \"💪\",\r\n \"category\": \"people\"\r\n },\r\n \"pray\": {\r\n \"keywords\": [\"please\", \"hope\", \"wish\", \"namaste\", \"highfive\"],\r\n \"char\": \"🙏\",\r\n \"category\": \"people\"\r\n },\r\n \"point_up\": {\r\n \"keywords\": [\"hand\", \"fingers\", \"direction\", \"up\"],\r\n \"char\": \"☝️\",\r\n \"category\": \"people\"\r\n },\r\n \"point_up_2\": {\r\n \"keywords\": [\"fingers\", \"hand\", \"direction\", \"up\"],\r\n \"char\": \"👆\",\r\n \"category\": \"people\"\r\n },\r\n \"point_down\": {\r\n \"keywords\": [\"fingers\", \"hand\", \"direction\", \"down\"],\r\n \"char\": \"👇\",\r\n \"category\": \"people\"\r\n },\r\n \"point_left\": {\r\n \"keywords\": [\"direction\", \"fingers\", \"hand\", \"left\"],\r\n \"char\": \"👈\",\r\n \"category\": \"people\"\r\n },\r\n \"point_right\": {\r\n \"keywords\": [\"fingers\", \"hand\", \"direction\", \"right\"],\r\n \"char\": \"👉\",\r\n \"category\": \"people\"\r\n },\r\n \"middle_finger\": {\r\n \"keywords\": [\"hand\", \"fingers\", \"rude\"],\r\n \"char\": \"🖕\",\r\n \"category\": \"people\"\r\n },\r\n \"splayed_fingers\": {\r\n \"keywords\": [\"hand\", \"fingers\", \"palm\"],\r\n \"char\": \"🖐\",\r\n \"category\": \"people\"\r\n },\r\n \"sign_of_horns\": {\r\n \"keywords\": [\"hand\", \"fingers\", \"evil_eye\", \"metal\", \"rock_on\"],\r\n \"char\": \"🤘\",\r\n \"category\": \"people\"\r\n },\r\n \"vulcan_salute\": {\r\n \"keywords\": [\"hand\", \"fingers\", \"spock\", \"star trek\"],\r\n \"char\": \"🖖\",\r\n \"category\": \"people\"\r\n },\r\n \"writing_hand\": {\r\n \"keywords\": [\"pen\", \"stationery\", \"write\"],\r\n \"char\": \"✍\",\r\n \"category\": \"people\"\r\n },\r\n \"nail_care\": {\r\n \"keywords\": [\"beauty\", \"manicure\", \"finger\", \"fashion\", \"nail\"],\r\n \"char\": \"💅\",\r\n \"category\": \"people\"\r\n },\r\n \"lips\": {\r\n \"keywords\": [\"mouth\", \"kiss\"],\r\n \"char\": \"👄\",\r\n \"category\": \"people\"\r\n },\r\n \"tongue\": {\r\n \"keywords\": [\"mouth\", \"playful\"],\r\n \"char\": \"👅\",\r\n \"category\": \"people\"\r\n },\r\n \"ear\": {\r\n \"keywords\": [\"face\", \"hear\", \"sound\", \"listen\"],\r\n \"char\": \"👂\",\r\n \"category\": \"people\"\r\n },\r\n \"nose\": {\r\n \"keywords\": [\"smell\", \"sniff\"],\r\n \"char\": \"👃\",\r\n \"category\": \"people\"\r\n },\r\n \"eye\": {\r\n \"keywords\": [\"face\", \"look\", \"see\", \"watch\", \"stare\"],\r\n \"char\": \"👁\",\r\n \"category\": \"people\"\r\n },\r\n \"eyes\": {\r\n \"keywords\": [\"look\", \"watch\", \"stalk\", \"peek\", \"see\"],\r\n \"char\": \"👀\",\r\n \"category\": \"people\"\r\n },\r\n \"bust_in_silhouette\": {\r\n \"keywords\": [\"user\", \"person\", \"human\"],\r\n \"char\": \"👤\",\r\n \"category\": \"people\"\r\n },\r\n \"busts_in_silhouette\": {\r\n \"keywords\": [\"user\", \"person\", \"human\", \"group\", \"team\"],\r\n \"char\": \"👥\",\r\n \"category\": \"people\"\r\n },\r\n \"speaking_head\": {\r\n \"keywords\": [\"user\", \"person\", \"human\"],\r\n \"char\": \"🗣\",\r\n \"category\": \"people\"\r\n },\r\n \"baby\": {\r\n \"keywords\": [\"child\", \"boy\", \"girl\", \"toddler\"],\r\n \"char\": \"👶\",\r\n \"category\": \"people\"\r\n },\r\n \"boy\": {\r\n \"keywords\": [\"man\", \"male\", \"guy\", \"teenager\"],\r\n \"char\": \"👦\",\r\n \"category\": \"people\"\r\n },\r\n \"girl\": {\r\n \"keywords\": [\"female\", \"woman\", \"teenager\"],\r\n \"char\": \"👧\",\r\n \"category\": \"people\"\r\n },\r\n \"man\": {\r\n \"keywords\": [\"mustache\", \"father\", \"dad\", \"guy\", \"classy\", \"sir\", \"moustache\"],\r\n \"char\": \"👨\",\r\n \"category\": \"people\"\r\n },\r\n \"woman\": {\r\n \"keywords\": [\"female\", \"girls\", \"lady\"],\r\n \"char\": \"👩\",\r\n \"category\": \"people\"\r\n },\r\n \"person_with_blond_hair\": {\r\n \"keywords\": [\"man\", \"male\", \"boy\", \"blonde\", \"guy\", \"person\"],\r\n \"char\": \"👱\",\r\n \"category\": \"people\"\r\n },\r\n \"older_man\": {\r\n \"keywords\": [\"human\", \"male\", \"men\", \"old\", \"elder\", \"senior\"],\r\n \"char\": \"👴\",\r\n \"category\": \"people\"\r\n },\r\n \"older_woman\": {\r\n \"keywords\": [\"human\", \"female\", \"women\", \"lady\", \"old\", \"elder\", \"senior\"],\r\n \"char\": \"👵\",\r\n \"category\": \"people\"\r\n },\r\n \"man_with_gua_pi_mao\": {\r\n \"keywords\": [\"male\", \"boy\", \"chinese\"],\r\n \"char\": \"👲\",\r\n \"category\": \"people\"\r\n },\r\n \"man_with_turban\": {\r\n \"keywords\": [\"male\", \"indian\", \"hinduism\", \"arabs\"],\r\n \"char\": \"👳\",\r\n \"category\": \"people\"\r\n },\r\n \"cop\": {\r\n \"keywords\": [\"man\", \"police\", \"law\", \"legal\", \"enforcement\", \"arrest\", \"911\"],\r\n \"char\": \"👮\",\r\n \"category\": \"people\"\r\n },\r\n \"construction_worker\": {\r\n \"keywords\": [\"male\", \"human\", \"wip\", \"guy\", \"build\", \"construction\", \"worker\", \"labor\"],\r\n \"char\": \"👷\",\r\n \"category\": \"people\"\r\n },\r\n \"guardsman\": {\r\n \"keywords\": [\"uk\", \"gb\", \"british\", \"male\", \"guy\", \"royal\"],\r\n \"char\": \"💂\",\r\n \"category\": \"people\"\r\n },\r\n \"sleuth\": {\r\n \"keywords\": [\"human\", \"spy\", \"detective\"],\r\n \"char\": \"🕵\",\r\n \"category\": \"people\"\r\n },\r\n \"santa\": {\r\n \"keywords\": [\"festival\", \"man\", \"male\", \"xmas\", \"father christmas\"],\r\n \"char\": \"🎅\",\r\n \"category\": \"people\"\r\n },\r\n \"angel\": {\r\n \"keywords\": [\"heaven\", \"wings\", \"halo\"],\r\n \"char\": \"👼\",\r\n \"category\": \"people\"\r\n },\r\n \"princess\": {\r\n \"keywords\": [\"girl\", \"woman\", \"female\", \"blond\", \"crown\", \"royal\", \"queen\"],\r\n \"char\": \"👸\",\r\n \"category\": \"people\"\r\n },\r\n \"bride_with_veil\": {\r\n \"keywords\": [\"couple\", \"marriage\", \"wedding\", \"woman\", \"bride\"],\r\n \"char\": \"👰\",\r\n \"category\": \"people\"\r\n },\r\n \"runner\": {\r\n \"keywords\": [\"man\", \"walking\", \"exercise\", \"race\", \"running\"],\r\n \"char\": \"🏃\",\r\n \"category\": \"people\"\r\n },\r\n \"walking\": {\r\n \"keywords\": [\"human\", \"feet\", \"steps\"],\r\n \"char\": \"🚶\",\r\n \"category\": \"people\"\r\n },\r\n \"dancer\": {\r\n \"keywords\": [\"female\", \"girl\", \"woman\", \"fun\"],\r\n \"char\": \"💃\",\r\n \"category\": \"people\"\r\n },\r\n \"dancers\": {\r\n \"keywords\": [\"female\", \"bunny\", \"women\", \"girls\"],\r\n \"char\": \"👯\",\r\n \"category\": \"people\"\r\n },\r\n \"couple\": {\r\n \"keywords\": [\"pair\", \"people\", \"human\", \"love\", \"date\", \"dating\", \"like\", \"affection\", \"valentines\", \"marriage\"],\r\n \"char\": \"👫\",\r\n \"category\": \"people\"\r\n },\r\n \"two_men_holding_hands\": {\r\n \"keywords\": [\"pair\", \"couple\", \"love\", \"like\", \"bromance\", \"friendship\", \"people\", \"human\"],\r\n \"char\": \"👬\",\r\n \"category\": \"people\"\r\n },\r\n \"two_women_holding_hands\": {\r\n \"keywords\": [\"pair\", \"friendship\", \"couple\", \"love\", \"like\", \"female\", \"people\", \"human\"],\r\n \"char\": \"👭\",\r\n \"category\": \"people\"\r\n },\r\n \"bow\": {\r\n \"keywords\": [\"man\", \"male\", \"boy\"],\r\n \"char\": \"🙇\",\r\n \"category\": \"people\"\r\n },\r\n \"information_desk_person\": {\r\n \"keywords\": [\"female\", \"girl\", \"woman\", \"human\", \"information\"],\r\n \"char\": \"💁\",\r\n \"category\": \"people\"\r\n },\r\n \"no_good\": {\r\n \"keywords\": [\"female\", \"girl\", \"woman\", \"nope\"],\r\n \"char\": \"🙅\",\r\n \"category\": \"people\"\r\n },\r\n \"ok_woman\": {\r\n \"keywords\": [\"women\", \"girl\", \"female\", \"pink\", \"human\", \"woman\"],\r\n \"char\": \"🙆\",\r\n \"category\": \"people\"\r\n },\r\n \"raising_hand\": {\r\n \"keywords\": [\"female\", \"girl\", \"woman\"],\r\n \"char\": \"🙋\",\r\n \"category\": \"people\"\r\n },\r\n \"person_with_pouting_face\": {\r\n \"keywords\": [\"female\", \"girl\", \"woman\"],\r\n \"char\": \"🙎\",\r\n \"category\": \"people\"\r\n },\r\n \"person_frowning\": {\r\n \"keywords\": [\"female\", \"girl\", \"woman\", \"sad\", \"depressed\", \"discouraged\", \"unhappy\"],\r\n \"char\": \"🙍\",\r\n \"category\": \"people\"\r\n },\r\n \"haircut\": {\r\n \"keywords\": [\"female\", \"girl\", \"woman\"],\r\n \"char\": \"💇\",\r\n \"category\": \"people\"\r\n },\r\n \"massage\": {\r\n \"keywords\": [\"female\", \"girl\", \"woman\", \"head\"],\r\n \"char\": \"💆\",\r\n \"category\": \"people\"\r\n },\r\n \"couple_with_heart\": {\r\n \"keywords\": [\"pair\", \"love\", \"like\", \"affection\", \"human\", \"dating\", \"valentines\", \"marriage\"],\r\n \"char\": \"💑\",\r\n \"category\": \"people\"\r\n },\r\n \"female_couple_with_heart\": {\r\n \"keywords\": [\"pair\", \"love\", \"like\", \"affection\", \"human\", \"dating\", \"valentines\", \"marriage\"],\r\n \"char\": \"👩‍❤️‍👩\",\r\n \"category\": \"people\"\r\n },\r\n \"male_couple_with_heart\": {\r\n \"keywords\": [\"pair\", \"love\", \"like\", \"affection\", \"human\", \"dating\", \"valentines\", \"marriage\"],\r\n \"char\": \"👨‍❤️‍👨\",\r\n \"category\": \"people\"\r\n },\r\n \"couplekiss\": {\r\n \"keywords\": [\"pair\", \"valentines\", \"love\", \"like\", \"dating\", \"marriage\"],\r\n \"char\": \"💏\",\r\n \"category\": \"people\"\r\n },\r\n \"female_couplekiss\": {\r\n \"keywords\": [\"pair\", \"valentines\", \"love\", \"like\", \"dating\", \"marriage\"],\r\n \"char\": \"👩‍❤️‍💋‍👩\",\r\n \"category\": \"people\"\r\n },\r\n \"male_couplekiss\": {\r\n \"keywords\": [\"pair\", \"valentines\", \"love\", \"like\", \"dating\", \"marriage\"],\r\n \"char\": \"👨‍❤️‍💋‍👨\",\r\n \"category\": \"people\"\r\n },\r\n \"family\": {\r\n \"keywords\": [\"home\", \"parents\", \"child\", \"mom\", \"dad\", \"father\", \"mother\", \"people\", \"human\"],\r\n \"char\": \"👪\",\r\n \"category\": \"people\"\r\n },\r\n \"family_man_woman_girl\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"child\"],\r\n \"char\": \"👨‍👩‍👧\",\r\n \"category\": \"people\"\r\n },\r\n \"family_man_woman_girl_boy\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"children\"],\r\n \"char\": \"👨‍👩‍👧‍👦\",\r\n \"category\": \"people\"\r\n },\r\n \"family_man_woman_boys\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"children\"],\r\n \"char\": \"👨‍👩‍👦‍👦\",\r\n \"category\": \"people\"\r\n },\r\n \"family_man_woman_girls\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"children\"],\r\n \"char\": \"👨‍👩‍👧‍👧\",\r\n \"category\": \"people\"\r\n },\r\n \"family_women_boy\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"children\"],\r\n \"char\": \"👩‍👩‍👦\",\r\n \"category\": \"people\"\r\n },\r\n \"family_women_girl\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"children\"],\r\n \"char\": \"👩‍👩‍👧\",\r\n \"category\": \"people\"\r\n },\r\n \"family_women_girl_boy\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"children\"],\r\n \"char\": \"👩‍👩‍👧‍👦\",\r\n \"category\": \"people\"\r\n },\r\n \"family_women_boys\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"children\"],\r\n \"char\": \"👩‍👩‍👦‍👦\",\r\n \"category\": \"people\"\r\n },\r\n \"family_women_girls\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"children\"],\r\n \"char\": \"👩‍👩‍👧‍👧\",\r\n \"category\": \"people\"\r\n },\r\n \"family_men_boy\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"children\"],\r\n \"char\": \"👨‍👨‍👦\",\r\n \"category\": \"people\"\r\n },\r\n \"family_men_girl\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"children\"],\r\n \"char\": \"👨‍👨‍👧\",\r\n \"category\": \"people\"\r\n },\r\n \"family_men_girl_boy\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"children\"],\r\n \"char\": \"👨‍👨‍👧‍👦\",\r\n \"category\": \"people\"\r\n },\r\n \"family_men_boys\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"children\"],\r\n \"char\": \"👨‍👨‍👦‍👦\",\r\n \"category\": \"people\"\r\n },\r\n \"family_men_girls\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"children\"],\r\n \"char\": \"👨‍👨‍👧‍👧\",\r\n \"category\": \"people\"\r\n },\r\n \"womans_clothes\": {\r\n \"keywords\": [\"fashion\", \"shopping\", \"female\"],\r\n \"char\": \"👚\",\r\n \"category\": \"people\"\r\n },\r\n \"shirt\": {\r\n \"keywords\": [\"fashion\", \"cloth\", \"casual\", \"tshirt\", \"tee\"],\r\n \"char\": \"👕\",\r\n \"category\": \"people\"\r\n },\r\n \"jeans\": {\r\n \"keywords\": [\"fashion\", \"shopping\"],\r\n \"char\": \"👖\",\r\n \"category\": \"people\"\r\n },\r\n \"necktie\": {\r\n \"keywords\": [\"shirt\", \"suitup\", \"formal\", \"fashion\", \"cloth\", \"business\"],\r\n \"char\": \"👔\",\r\n \"category\": \"people\"\r\n },\r\n \"dress\": {\r\n \"keywords\": [\"clothes\", \"fashion\", \"shopping\"],\r\n \"char\": \"👗\",\r\n \"category\": \"people\"\r\n },\r\n \"bikini\": {\r\n \"keywords\": [\"swimming\", \"female\", \"woman\", \"girl\", \"fashion\", \"beach\", \"summer\"],\r\n \"char\": \"👙\",\r\n \"category\": \"people\"\r\n },\r\n \"kimono\": {\r\n \"keywords\": [\"dress\", \"fashion\", \"women\", \"female\", \"japanese\"],\r\n \"char\": \"👘\",\r\n \"category\": \"people\"\r\n },\r\n \"lipstick\": {\r\n \"keywords\": [\"female\", \"girl\", \"fashion\", \"woman\"],\r\n \"char\": \"💄\",\r\n \"category\": \"people\"\r\n },\r\n \"kiss\": {\r\n \"keywords\": [\"face\", \"lips\", \"love\", \"like\", \"affection\", \"valentines\"],\r\n \"char\": \"💋\",\r\n \"category\": \"people\"\r\n },\r\n \"footprints\": {\r\n \"keywords\": [\"feet\", \"tracking\", \"walking\", \"beach\"],\r\n \"char\": \"👣\",\r\n \"category\": \"people\"\r\n },\r\n \"high_heel\": {\r\n \"keywords\": [\"fashion\", \"shoes\", \"female\", \"pumps\", \"stiletto\"],\r\n \"char\": \"👠\",\r\n \"category\": \"people\"\r\n },\r\n \"sandal\": {\r\n \"keywords\": [\"shoes\", \"fashion\", \"flip flops\"],\r\n \"char\": \"👡\",\r\n \"category\": \"people\"\r\n },\r\n \"boot\": {\r\n \"keywords\": [\"shoes\", \"fashion\"],\r\n \"char\": \"👢\",\r\n \"category\": \"people\"\r\n },\r\n \"mans_shoe\": {\r\n \"keywords\": [\"fashion\", \"male\"],\r\n \"char\": \"👞\",\r\n \"category\": \"people\"\r\n },\r\n \"athletic_shoe\": {\r\n \"keywords\": [\"shoes\", \"sports\", \"sneakers\"],\r\n \"char\": \"👟\",\r\n \"category\": \"people\"\r\n },\r\n \"womans_hat\": {\r\n \"keywords\": [\"fashion\", \"accessories\", \"female\", \"lady\", \"spring\"],\r\n \"char\": \"👒\",\r\n \"category\": \"people\"\r\n },\r\n \"tophat\": {\r\n \"keywords\": [\"magic\", \"gentleman\", \"classy\", \"circus\"],\r\n \"char\": \"🎩\",\r\n \"category\": \"people\"\r\n },\r\n \"helmet\": {\r\n \"keywords\": [\"construction\", \"build\"],\r\n \"char\": \"⛑\",\r\n \"category\": \"people\"\r\n },\r\n \"mortar_board\": {\r\n \"keywords\": [\"school\", \"college\", \"degree\", \"university\", \"graduation\", \"cap\", \"hat\", \"legal\", \"learn\", \"education\"],\r\n \"char\": \"🎓\",\r\n \"category\": \"people\"\r\n },\r\n \"crown\": {\r\n \"keywords\": [\"king\", \"kod\", \"leader\", \"royalty\", \"lord\"],\r\n \"char\": \"👑\",\r\n \"category\": \"people\"\r\n },\r\n \"school_satchel\": {\r\n \"keywords\": [\"student\", \"education\", \"bag\", \"backpack\"],\r\n \"char\": \"🎒\",\r\n \"category\": \"people\"\r\n },\r\n \"pouch\": {\r\n \"keywords\": [\"bag\", \"accessories\", \"shopping\"],\r\n \"char\": \"👝\",\r\n \"category\": \"people\"\r\n },\r\n \"purse\": {\r\n \"keywords\": [\"fashion\", \"accessories\", \"money\", \"sales\", \"shopping\"],\r\n \"char\": \"👛\",\r\n \"category\": \"people\"\r\n },\r\n \"handbag\": {\r\n \"keywords\": [\"fashion\", \"accessory\", \"accessories\", \"shopping\"],\r\n \"char\": \"👜\",\r\n \"category\": \"people\"\r\n },\r\n \"briefcase\": {\r\n \"keywords\": [\"business\", \"documents\", \"work\", \"law\", \"legal\"],\r\n \"char\": \"💼\",\r\n \"category\": \"people\"\r\n },\r\n \"eyeglasses\": {\r\n \"keywords\": [\"fashion\", \"accessories\", \"eyesight\", \"nerdy\", \"dork\", \"geek\"],\r\n \"char\": \"👓\",\r\n \"category\": \"people\"\r\n },\r\n \"dark_sunglasses\": {\r\n \"keywords\": [\"face\", \"cool\", \"accessories\"],\r\n \"char\": \"🕶\",\r\n \"category\": \"people\"\r\n },\r\n \"ring\": {\r\n \"keywords\": [\"wedding\", \"propose\", \"marriage\", \"valentines\", \"diamond\", \"fashion\", \"jewelry\", \"gem\", \"engagement\"],\r\n \"char\": \"💍\",\r\n \"category\": \"people\"\r\n },\r\n \"closed_umbrella\": {\r\n \"keywords\": [\"weather\", \"rain\", \"drizzle\"],\r\n \"char\": \"🌂\",\r\n \"category\": \"people\"\r\n },\r\n \"dog\": {\r\n \"keywords\": [\"animal\", \"friend\", \"nature\", \"woof\", \"puppy\", \"pet\", \"faithful\"],\r\n \"char\": \"🐶\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"cat\": {\r\n \"keywords\": [\"animal\", \"meow\", \"nature\", \"pet\", \"kitten\"],\r\n \"char\": \"🐱\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"mouse\": {\r\n \"keywords\": [\"animal\", \"nature\", \"cheese\", \"rodent\"],\r\n \"char\": \"🐭\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"hamster\": {\r\n \"keywords\": [\"animal\", \"nature\"],\r\n \"char\": \"🐹\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"rabbit\": {\r\n \"keywords\": [\"animal\", \"nature\", \"pet\", \"spring\", \"magic\", \"bunny\"],\r\n \"char\": \"🐰\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"bear\": {\r\n \"keywords\": [\"animal\", \"nature\", \"wild\"],\r\n \"char\": \"🐻\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"panda_face\": {\r\n \"keywords\": [\"animal\", \"nature\", \"panda\"],\r\n \"char\": \"🐼\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"koala\": {\r\n \"keywords\": [\"animal\", \"nature\"],\r\n \"char\": \"🐨\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"tiger\": {\r\n \"keywords\": [\"animal\", \"cat\", \"danger\", \"wild\", \"nature\", \"roar\"],\r\n \"char\": \"🐯\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"lion_face\": {\r\n \"keywords\": [\"animal\", \"nature\"],\r\n \"char\": \"🦁\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"cow\": {\r\n \"keywords\": [\"beef\", \"ox\", \"animal\", \"nature\", \"moo\", \"milk\"],\r\n \"char\": \"🐮\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"pig\": {\r\n \"keywords\": [\"animal\", \"oink\", \"nature\"],\r\n \"char\": \"🐷\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"pig_nose\": {\r\n \"keywords\": [\"animal\", \"oink\"],\r\n \"char\": \"🐽\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"frog\": {\r\n \"keywords\": [\"animal\", \"nature\", \"croak\", \"toad\"],\r\n \"char\": \"🐸\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"octopus\": {\r\n \"keywords\": [\"animal\", \"creature\", \"ocean\", \"sea\", \"nature\", \"beach\"],\r\n \"char\": \"🐙\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"monkey_face\": {\r\n \"keywords\": [\"animal\", \"nature\", \"circus\"],\r\n \"char\": \"🐵\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"see_no_evil\": {\r\n \"keywords\": [\"monkey\", \"animal\", \"nature\", \"haha\"],\r\n \"char\": \"🙈\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"hear_no_evil\": {\r\n \"keywords\": [\"animal\", \"monkey\", \"nature\"],\r\n \"char\": \"🙉\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"speak_no_evil\": {\r\n \"keywords\": [\"monkey\", \"animal\", \"nature\", \"omg\"],\r\n \"char\": \"🙊\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"monkey\": {\r\n \"keywords\": [\"animal\", \"nature\", \"banana\", \"circus\"],\r\n \"char\": \"🐒\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"chicken\": {\r\n \"keywords\": [\"animal\", \"cluck\", \"nature\", \"bird\"],\r\n \"char\": \"🐔\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"penguin\": {\r\n \"keywords\": [\"animal\", \"nature\"],\r\n \"char\": \"🐧\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"bird\": {\r\n \"keywords\": [\"animal\", \"nature\", \"fly\", \"tweet\", \"spring\"],\r\n \"char\": \"🐦\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"baby_chick\": {\r\n \"keywords\": [\"animal\", \"chicken\", \"bird\"],\r\n \"char\": \"🐤\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"hatching_chick\": {\r\n \"keywords\": [\"animal\", \"chicken\", \"egg\", \"born\", \"baby\", \"bird\"],\r\n \"char\": \"🐣\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"hatched_chick\": {\r\n \"keywords\": [\"animal\", \"chicken\", \"baby\", \"bird\"],\r\n \"char\": \"🐥\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"wolf\": {\r\n \"keywords\": [\"animal\", \"nature\", \"wild\"],\r\n \"char\": \"🐺\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"boar\": {\r\n \"keywords\": [\"animal\", \"nature\"],\r\n \"char\": \"🐗\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"horse\": {\r\n \"keywords\": [\"animal\", \"brown\", \"nature\"],\r\n \"char\": \"🐴\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"unicorn_face\": {\r\n \"keywords\": [\"animal\", \"nature\", \"mystical\"],\r\n \"char\": \"🦄\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"bee\": {\r\n \"keywords\": [\"animal\", \"insect\", \"nature\", \"bug\", \"spring\", \"honey\"],\r\n \"char\": \"🐝\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"bug\": {\r\n \"keywords\": [\"animal\", \"insect\", \"nature\", \"worm\"],\r\n \"char\": \"🐛\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"snail\": {\r\n \"keywords\": [\"slow\", \"animal\", \"shell\"],\r\n \"char\": \"🐌\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"beetle\": {\r\n \"keywords\": [\"animal\", \"insect\", \"nature\", \"ladybug\"],\r\n \"char\": \"🐞\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"ant\": {\r\n \"keywords\": [\"animal\", \"insect\", \"nature\", \"bug\"],\r\n \"char\": \"🐜\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"spider\": {\r\n \"keywords\": [\"animal\", \"arachnid\"],\r\n \"char\": \"🕷\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"scorpion\": {\r\n \"keywords\": [\"animal\", \"arachnid\"],\r\n \"char\": \"🦂\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"crab\": {\r\n \"keywords\": [\"animal\", \"crustacean\"],\r\n \"char\": \"🦀\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"snake\": {\r\n \"keywords\": [\"animal\", \"evil\", \"nature\", \"hiss\", \"python\"],\r\n \"char\": \"🐍\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"turtle\": {\r\n \"keywords\": [\"animal\", \"slow\", \"nature\", \"tortoise\"],\r\n \"char\": \"🐢\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"tropical_fish\": {\r\n \"keywords\": [\"animal\", \"swim\", \"ocean\", \"beach\", \"nemo\"],\r\n \"char\": \"🐠\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"fish\": {\r\n \"keywords\": [\"animal\", \"food\", \"nature\"],\r\n \"char\": \"🐟\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"blowfish\": {\r\n \"keywords\": [\"animal\", \"nature\", \"food\", \"sea\", \"ocean\"],\r\n \"char\": \"🐡\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"dolphin\": {\r\n \"keywords\": [\"animal\", \"nature\", \"fish\", \"sea\", \"ocean\", \"flipper\", \"fins\", \"beach\"],\r\n \"char\": \"🐬\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"whale\": {\r\n \"keywords\": [\"animal\", \"nature\", \"sea\", \"ocean\"],\r\n \"char\": \"🐳\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"whale2\": {\r\n \"keywords\": [\"animal\", \"nature\", \"sea\", \"ocean\"],\r\n \"char\": \"🐋\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"crocodile\": {\r\n \"keywords\": [\"animal\", \"nature\", \"reptile\", \"lizard\", \"alligator\"],\r\n \"char\": \"🐊\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"leopard\": {\r\n \"keywords\": [\"animal\", \"nature\"],\r\n \"char\": \"🐆\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"tiger2\": {\r\n \"keywords\": [\"animal\", \"nature\", \"roar\"],\r\n \"char\": \"🐅\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"water_buffalo\": {\r\n \"keywords\": [\"animal\", \"nature\", \"ox\", \"cow\"],\r\n \"char\": \"🐃\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"ox\": {\r\n \"keywords\": [\"animal\", \"cow\", \"beef\"],\r\n \"char\": \"🐂\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"cow2\": {\r\n \"keywords\": [\"beef\", \"ox\", \"animal\", \"nature\", \"moo\", \"milk\"],\r\n \"char\": \"🐄\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"dromedary_camel\": {\r\n \"keywords\": [\"animal\", \"hot\", \"desert\", \"hump\"],\r\n \"char\": \"🐪\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"camel\": {\r\n \"keywords\": [\"animal\", \"nature\", \"hot\", \"desert\", \"hump\"],\r\n \"char\": \"🐫\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"elephant\": {\r\n \"keywords\": [\"animal\", \"nature\", \"nose\", \"thailand\", \"circus\"],\r\n \"char\": \"🐘\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"goat\": {\r\n \"keywords\": [\"animal\", \"nature\"],\r\n \"char\": \"🐐\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"ram\": {\r\n \"keywords\": [\"animal\", \"sheep\", \"nature\"],\r\n \"char\": \"🐏\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"sheep\": {\r\n \"keywords\": [\"animal\", \"nature\", \"wool\", \"shipit\"],\r\n \"char\": \"🐑\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"racehorse\": {\r\n \"keywords\": [\"animal\", \"gamble\", \"luck\"],\r\n \"char\": \"🐎\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"pig2\": {\r\n \"keywords\": [\"animal\", \"nature\"],\r\n \"char\": \"🐖\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"rat\": {\r\n \"keywords\": [\"animal\", \"mouse\", \"rodent\"],\r\n \"char\": \"🐀\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"mouse2\": {\r\n \"keywords\": [\"animal\", \"nature\", \"rodent\"],\r\n \"char\": \"🐁\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"rooster\": {\r\n \"keywords\": [\"animal\", \"nature\", \"chicken\"],\r\n \"char\": \"🐓\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"turkey\": {\r\n \"keywords\": [\"animal\", \"bird\"],\r\n \"char\": \"🦃\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"dove_of_peace\": {\r\n \"keywords\": [\"animal\", \"bird\"],\r\n \"char\": \"🕊\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"dog2\": {\r\n \"keywords\": [\"animal\", \"nature\", \"friend\", \"doge\", \"pet\", \"faithful\"],\r\n \"char\": \"🐕\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"poodle\": {\r\n \"keywords\": [\"dog\", \"animal\", \"101\", \"nature\", \"pet\"],\r\n \"char\": \"🐩\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"cat2\": {\r\n \"keywords\": [\"animal\", \"meow\", \"pet\", \"cats\"],\r\n \"char\": \"🐈\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"rabbit2\": {\r\n \"keywords\": [\"animal\", \"nature\", \"pet\", \"magic\", \"spring\"],\r\n \"char\": \"🐇\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"chipmunk\": {\r\n \"keywords\": [\"animal\", \"nature\", \"rodent\", \"squirrel\"],\r\n \"char\": \"🐿\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"feet\": {\r\n \"keywords\": [\"animal\", \"tracking\", \"footprints\", \"dog\", \"cat\", \"pet\", \"paw_prints\"],\r\n \"char\": \"🐾\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"dragon\": {\r\n \"keywords\": [\"animal\", \"myth\", \"nature\", \"chinese\", \"green\"],\r\n \"char\": \"🐉\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"dragon_face\": {\r\n \"keywords\": [\"animal\", \"myth\", \"nature\", \"chinese\", \"green\"],\r\n \"char\": \"🐲\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"cactus\": {\r\n \"keywords\": [\"vegetable\", \"plant\", \"nature\"],\r\n \"char\": \"🌵\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"christmas_tree\": {\r\n \"keywords\": [\"festival\", \"vacation\", \"december\", \"xmas\", \"celebration\"],\r\n \"char\": \"🎄\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"evergreen_tree\": {\r\n \"keywords\": [\"plant\", \"nature\"],\r\n \"char\": \"🌲\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"deciduous_tree\": {\r\n \"keywords\": [\"plant\", \"nature\"],\r\n \"char\": \"🌳\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"palm_tree\": {\r\n \"keywords\": [\"plant\", \"vegetable\", \"nature\", \"summer\", \"beach\", \"mojito\", \"tropical\"],\r\n \"char\": \"🌴\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"seedling\": {\r\n \"keywords\": [\"plant\", \"nature\", \"grass\", \"lawn\", \"spring\"],\r\n \"char\": \"🌱\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"herb\": {\r\n \"keywords\": [\"vegetable\", \"plant\", \"medicine\", \"weed\", \"grass\", \"lawn\"],\r\n \"char\": \"🌿\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"shamrock\": {\r\n \"keywords\": [\"vegetable\", \"plant\", \"nature\", \"irish\", \"clover\"],\r\n \"char\": \"☘\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"four_leaf_clover\": {\r\n \"keywords\": [\"vegetable\", \"plant\", \"nature\", \"lucky\", \"irish\"],\r\n \"char\": \"🍀\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"bamboo\": {\r\n \"keywords\": [\"plant\", \"nature\", \"vegetable\", \"panda\", \"pine_decoration\"],\r\n \"char\": \"🎍\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"tanabata_tree\": {\r\n \"keywords\": [\"plant\", \"nature\", \"branch\", \"summer\"],\r\n \"char\": \"🎋\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"leaves\": {\r\n \"keywords\": [\"nature\", \"plant\", \"tree\", \"vegetable\", \"grass\", \"lawn\", \"spring\"],\r\n \"char\": \"🍃\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"fallen_leaf\": {\r\n \"keywords\": [\"nature\", \"plant\", \"vegetable\", \"leaves\"],\r\n \"char\": \"🍂\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"maple_leaf\": {\r\n \"keywords\": [\"nature\", \"plant\", \"vegetable\", \"canada\", \"fall\"],\r\n \"char\": \"🍁\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"ear_of_rice\": {\r\n \"keywords\": [\"nature\", \"plant\"],\r\n \"char\": \"🌾\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"hibiscus\": {\r\n \"keywords\": [\"plant\", \"vegetable\", \"flowers\", \"beach\"],\r\n \"char\": \"🌺\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"sunflower\": {\r\n \"keywords\": [\"nature\", \"plant\", \"fall\"],\r\n \"char\": \"🌻\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"rose\": {\r\n \"keywords\": [\"flowers\", \"valentines\", \"love\", \"spring\"],\r\n \"char\": \"🌹\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"tulip\": {\r\n \"keywords\": [\"flowers\", \"plant\", \"nature\", \"summer\", \"spring\"],\r\n \"char\": \"🌷\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"blossom\": {\r\n \"keywords\": [\"nature\", \"flowers\", \"yellow\"],\r\n \"char\": \"🌼\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"cherry_blossom\": {\r\n \"keywords\": [\"nature\", \"plant\", \"spring\", \"flower\"],\r\n \"char\": \"🌸\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"bouquet\": {\r\n \"keywords\": [\"flowers\", \"nature\", \"spring\"],\r\n \"char\": \"💐\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"mushroom\": {\r\n \"keywords\": [\"plant\", \"vegetable\"],\r\n \"char\": \"🍄\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"chestnut\": {\r\n \"keywords\": [\"food\", \"squirrel\"],\r\n \"char\": \"🌰\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"jack_o_lantern\": {\r\n \"keywords\": [\"halloween\", \"light\", \"pumpkin\", \"creepy\", \"fall\"],\r\n \"char\": \"🎃\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"shell\": {\r\n \"keywords\": [\"nature\", \"sea\", \"beach\"],\r\n \"char\": \"🐚\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"spider_web\": {\r\n \"keywords\": [\"animal\", \"insect\", \"arachnid\", \"silk\"],\r\n \"char\": \"🕸\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"earth_americas\": {\r\n \"keywords\": [\"globe\", \"world\", \"USA\", \"international\"],\r\n \"char\": \"🌎\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"earth_africa\": {\r\n \"keywords\": [\"globe\", \"world\", \"international\"],\r\n \"char\": \"🌍\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"earth_asia\": {\r\n \"keywords\": [\"globe\", \"world\", \"east\", \"international\"],\r\n \"char\": \"🌏\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"full_moon\": {\r\n \"keywords\": [\"nature\", \"yellow\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\"],\r\n \"char\": \"🌕\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"waning_gibbous_moon\": {\r\n \"keywords\": [\"nature\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\", \"waxing_gibbous_moon\"],\r\n \"char\": \"🌖\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"last_quarter_moon\": {\r\n \"keywords\": [\"nature\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\"],\r\n \"char\": \"🌗\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"waning_crescent_moon\": {\r\n \"keywords\": [\"nature\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\"],\r\n \"char\": \"🌘\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"new_moon\": {\r\n \"keywords\": [\"nature\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\"],\r\n \"char\": \"🌑\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"waxing_crescent_moon\": {\r\n \"keywords\": [\"nature\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\"],\r\n \"char\": \"🌒\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"first_quarter_moon\": {\r\n \"keywords\": [\"nature\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\"],\r\n \"char\": \"🌓\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"moon\": {\r\n \"keywords\": [\"nature\", \"night\", \"sky\", \"gray\", \"twilight\", \"planet\", \"space\", \"evening\", \"sleep\"],\r\n \"char\": \"🌔\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"new_moon_with_face\": {\r\n \"keywords\": [\"nature\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\"],\r\n \"char\": \"🌚\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"full_moon_with_face\": {\r\n \"keywords\": [\"nature\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\"],\r\n \"char\": \"🌝\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"first_quarter_moon_with_face\": {\r\n \"keywords\": [\"nature\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\"],\r\n \"char\": \"🌛\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"last_quarter_moon_with_face\": {\r\n \"keywords\": [\"nature\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\"],\r\n \"char\": \"🌜\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"sun_with_face\": {\r\n \"keywords\": [\"nature\", \"morning\", \"sky\"],\r\n \"char\": \"🌞\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"crescent_moon\": {\r\n \"keywords\": [\"night\", \"sleep\", \"sky\", \"evening\", \"magic\"],\r\n \"char\": \"🌙\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"star\": {\r\n \"keywords\": [\"night\", \"yellow\"],\r\n \"char\": \"⭐\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"star2\": {\r\n \"keywords\": [\"night\", \"sparkle\", \"awesome\", \"good\", \"magic\"],\r\n \"char\": \"🌟\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"dizzy\": {\r\n \"keywords\": [\"star\", \"sparkle\", \"shoot\", \"magic\"],\r\n \"char\": \"💫\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"sparkles\": {\r\n \"keywords\": [\"stars\", \"shine\", \"shiny\", \"cool\", \"awesome\", \"good\", \"magic\"],\r\n \"char\": \"✨\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"comet\": {\r\n \"keywords\": [\"space\"],\r\n \"char\": \"☄\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"sunny\": {\r\n \"keywords\": [\"weather\", \"nature\", \"brightness\", \"summer\", \"beach\", \"spring\"],\r\n \"char\": \"☀️\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"white_sun_with_small_cloud\": {\r\n \"keywords\": [\"weather\"],\r\n \"char\": \"🌤\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"partly_sunny\": {\r\n \"keywords\": [\"weather\", \"nature\", \"cloudy\", \"morning\", \"fall\", \"spring\"],\r\n \"char\": \"⛅\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"white_sun_behind_cloud\": {\r\n \"keywords\": [\"weather\"],\r\n \"char\": \"🌥\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"white_sun_behind_cloud_with_rain\": {\r\n \"keywords\": [\"weather\"],\r\n \"char\": \"🌦\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"cloud\": {\r\n \"keywords\": [\"weather\", \"sky\"],\r\n \"char\": \"☁️\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"cloud_with_rain\": {\r\n \"keywords\": [\"weather\"],\r\n \"char\": \"🌧\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"thunder_cloud_and_rain\": {\r\n \"keywords\": [\"weather\", \"lightning\"],\r\n \"char\": \"⛈\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"cloud_with_lightning\": {\r\n \"keywords\": [\"weather\", \"thunder\"],\r\n \"char\": \"🌩\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"zap\": {\r\n \"keywords\": [\"thunder\", \"weather\", \"lightning bolt\", \"fast\"],\r\n \"char\": \"⚡\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"fire\": {\r\n \"keywords\": [\"hot\", \"cook\", \"flame\"],\r\n \"char\": \"🔥\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"boom\": {\r\n \"keywords\": [\"bomb\", \"explode\", \"explosion\", \"collision\", \"blown\"],\r\n \"char\": \"💥\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"snowflake\": {\r\n \"keywords\": [\"winter\", \"season\", \"cold\", \"weather\", \"christmas\", \"xmas\"],\r\n \"char\": \"❄️\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"cloud_with_snow\": {\r\n \"keywords\": [\"weather\"],\r\n \"char\": \"🌨\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"snowman\": {\r\n \"keywords\": [\"winter\", \"season\", \"cold\", \"weather\", \"christmas\", \"xmas\", \"frozen\", \"without_snow\"],\r\n \"char\": \"⛄\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"snowman_with_snow\": {\r\n \"keywords\": [\"winter\", \"season\", \"cold\", \"weather\", \"christmas\", \"xmas\", \"frozen\"],\r\n \"char\": \"☃\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"wind_blowing_face\": {\r\n \"keywords\": [\"gust\", \"air\"],\r\n \"char\": \"🌬\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"dash\": {\r\n \"keywords\": [\"wind\", \"air\", \"fast\", \"shoo\", \"fart\", \"smoke\", \"puff\"],\r\n \"char\": \"💨\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"cloud_with_tornado\": {\r\n \"keywords\": [\"weather\", \"cyclone\", \"twister\"],\r\n \"char\": \"🌪\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"fog\": {\r\n \"keywords\": [\"weather\"],\r\n \"char\": \"🌫\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"umbrella_without_rain\": {\r\n \"keywords\": [\"weather\", \"spring\"],\r\n \"char\": \"☂\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"umbrella\": {\r\n \"keywords\": [\"rainy\", \"weather\", \"spring\"],\r\n \"char\": \"☔\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"droplet\": {\r\n \"keywords\": [\"water\", \"drip\", \"faucet\", \"spring\"],\r\n \"char\": \"💧\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"sweat_drops\": {\r\n \"keywords\": [\"water\", \"drip\", \"oops\"],\r\n \"char\": \"💦\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"ocean\": {\r\n \"keywords\": [\"sea\", \"water\", \"wave\", \"nature\", \"tsunami\", \"disaster\"],\r\n \"char\": \"🌊\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"green_apple\": {\r\n \"keywords\": [\"fruit\", \"nature\"],\r\n \"char\": \"🍏\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"apple\": {\r\n \"keywords\": [\"fruit\", \"mac\", \"school\"],\r\n \"char\": \"🍎\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"pear\": {\r\n \"keywords\": [\"fruit\", \"nature\", \"food\"],\r\n \"char\": \"🍐\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"tangerine\": {\r\n \"keywords\": [\"food\", \"fruit\", \"nature\", \"orange\"],\r\n \"char\": \"🍊\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"lemon\": {\r\n \"keywords\": [\"fruit\", \"nature\"],\r\n \"char\": \"🍋\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"banana\": {\r\n \"keywords\": [\"fruit\", \"food\", \"monkey\"],\r\n \"char\": \"🍌\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"watermelon\": {\r\n \"keywords\": [\"fruit\", \"food\", \"picnic\", \"summer\"],\r\n \"char\": \"🍉\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"grapes\": {\r\n \"keywords\": [\"fruit\", \"food\", \"wine\"],\r\n \"char\": \"🍇\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"strawberry\": {\r\n \"keywords\": [\"fruit\", \"food\", \"nature\"],\r\n \"char\": \"🍓\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"melon\": {\r\n \"keywords\": [\"fruit\", \"nature\", \"food\"],\r\n \"char\": \"🍈\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"cherries\": {\r\n \"keywords\": [\"food\", \"fruit\"],\r\n \"char\": \"🍒\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"peach\": {\r\n \"keywords\": [\"fruit\", \"nature\", \"food\"],\r\n \"char\": \"🍑\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"pineapple\": {\r\n \"keywords\": [\"fruit\", \"nature\", \"food\"],\r\n \"char\": \"🍍\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"tomato\": {\r\n \"keywords\": [\"fruit\", \"vegetable\", \"nature\", \"food\"],\r\n \"char\": \"🍅\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"eggplant\": {\r\n \"keywords\": [\"vegetable\", \"nature\", \"food\", \"aubergine\"],\r\n \"char\": \"🍆\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"hot_pepper\": {\r\n \"keywords\": [\"food\", \"spicy\", \"chilli\", \"chili\"],\r\n \"char\": \"🌶\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"corn\": {\r\n \"keywords\": [\"food\", \"vegetable\", \"plant\"],\r\n \"char\": \"🌽\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"sweet_potato\": {\r\n \"keywords\": [\"food\", \"nature\"],\r\n \"char\": \"🍠\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"honey_pot\": {\r\n \"keywords\": [\"bees\", \"sweet\", \"kitchen\"],\r\n \"char\": \"🍯\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"bread\": {\r\n \"keywords\": [\"food\", \"wheat\", \"breakfast\", \"toast\"],\r\n \"char\": \"🍞\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"cheese_wedge\": {\r\n \"keywords\": [\"food\", \"chadder\"],\r\n \"char\": \"🧀\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"poultry_leg\": {\r\n \"keywords\": [\"food\", \"meat\", \"drumstick\", \"bird\", \"chicken\", \"turkey\"],\r\n \"char\": \"🍗\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"meat_on_bone\": {\r\n \"keywords\": [\"good\", \"food\", \"drumstick\"],\r\n \"char\": \"🍖\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"fried_shrimp\": {\r\n \"keywords\": [\"food\", \"animal\", \"appetizer\", \"summer\"],\r\n \"char\": \"🍤\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"egg\": {\r\n \"keywords\": [\"food\", \"breakfast\", \"kitchen\"],\r\n \"char\": \"🍳\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"hamburger\": {\r\n \"keywords\": [\"meat\", \"fast food\", \"beef\", \"cheeseburger\", \"mcdonalds\", \"burger king\"],\r\n \"char\": \"🍔\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"fries\": {\r\n \"keywords\": [\"chips\", \"snack\", \"fast food\"],\r\n \"char\": \"🍟\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"hot_dog\": {\r\n \"keywords\": [\"food\", \"frankfurter\", \"hotdog\"],\r\n \"char\": \"🌭\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"pizza\": {\r\n \"keywords\": [\"food\", \"party\"],\r\n \"char\": \"🍕\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"spaghetti\": {\r\n \"keywords\": [\"food\", \"italian\", \"noodle\"],\r\n \"char\": \"🍝\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"taco\": {\r\n \"keywords\": [\"food\", \"mexican\"],\r\n \"char\": \"🌮\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"burrito\": {\r\n \"keywords\": [\"food\", \"mexican\"],\r\n \"char\": \"🌯\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"ramen\": {\r\n \"keywords\": [\"food\", \"japanese\", \"noodle\", \"chopsticks\"],\r\n \"char\": \"🍜\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"stew\": {\r\n \"keywords\": [\"food\", \"meat\", \"soup\"],\r\n \"char\": \"🍲\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"fish_cake\": {\r\n \"keywords\": [\"food\", \"japan\", \"sea\", \"beach\"],\r\n \"char\": \"🍥\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"sushi\": {\r\n \"keywords\": [\"food\", \"fish\", \"japanese\", \"rice\"],\r\n \"char\": \"🍣\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"bento\": {\r\n \"keywords\": [\"food\", \"japanese\", \"box\"],\r\n \"char\": \"🍱\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"curry\": {\r\n \"keywords\": [\"food\", \"spicy\", \"hot\", \"indian\"],\r\n \"char\": \"🍛\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"rice_ball\": {\r\n \"keywords\": [\"food\", \"japanese\"],\r\n \"char\": \"🍙\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"rice\": {\r\n \"keywords\": [\"food\", \"china\", \"asian\"],\r\n \"char\": \"🍚\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"rice_cracker\": {\r\n \"keywords\": [\"food\", \"japanese\"],\r\n \"char\": \"🍘\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"oden\": {\r\n \"keywords\": [\"food\", \"japanese\"],\r\n \"char\": \"🍢\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"dango\": {\r\n \"keywords\": [\"food\", \"dessert\", \"sweet\", \"japanese\", \"barbecue\", \"meat\"],\r\n \"char\": \"🍡\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"shaved_ice\": {\r\n \"keywords\": [\"hot\", \"dessert\", \"summer\"],\r\n \"char\": \"🍧\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"ice_cream\": {\r\n \"keywords\": [\"food\", \"hot\", \"dessert\"],\r\n \"char\": \"🍨\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"icecream\": {\r\n \"keywords\": [\"food\", \"hot\", \"dessert\", \"summer\"],\r\n \"char\": \"🍦\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"cake\": {\r\n \"keywords\": [\"food\", \"dessert\"],\r\n \"char\": \"🍰\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"birthday\": {\r\n \"keywords\": [\"food\", \"dessert\", \"cake\"],\r\n \"char\": \"🎂\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"custard\": {\r\n \"keywords\": [\"dessert\", \"food\"],\r\n \"char\": \"🍮\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"candy\": {\r\n \"keywords\": [\"snack\", \"dessert\", \"sweet\", \"lolly\"],\r\n \"char\": \"🍬\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"lollipop\": {\r\n \"keywords\": [\"food\", \"snack\", \"candy\", \"sweet\"],\r\n \"char\": \"🍭\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"chocolate_bar\": {\r\n \"keywords\": [\"food\", \"snack\", \"dessert\", \"sweet\"],\r\n \"char\": \"🍫\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"popcorn\": {\r\n \"keywords\": [\"food\", \"movie theater\", \"films\", \"snack\"],\r\n \"char\": \"🍿\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"doughnut\": {\r\n \"keywords\": [\"food\", \"dessert\", \"snack\", \"sweet\", \"donut\"],\r\n \"char\": \"🍩\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"cookie\": {\r\n \"keywords\": [\"food\", \"snack\", \"oreo\", \"chocolate\", \"sweet\", \"dessert\"],\r\n \"char\": \"🍪\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"beer\": {\r\n \"keywords\": [\"relax\", \"beverage\", \"drink\", \"drunk\", \"party\", \"pub\", \"summer\", \"alcohol\", \"booze\"],\r\n \"char\": \"🍺\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"beers\": {\r\n \"keywords\": [\"relax\", \"beverage\", \"drink\", \"drunk\", \"party\", \"pub\", \"summer\", \"alcohol\", \"booze\"],\r\n \"char\": \"🍻\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"wine_glass\": {\r\n \"keywords\": [\"drink\", \"beverage\", \"drunk\", \"alcohol\", \"booze\"],\r\n \"char\": \"🍷\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"cocktail\": {\r\n \"keywords\": [\"drink\", \"drunk\", \"alcohol\", \"beverage\", \"booze\", \"mojito\"],\r\n \"char\": \"🍸\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"tropical_drink\": {\r\n \"keywords\": [\"beverage\", \"cocktail\", \"summer\", \"beach\", \"alcohol\", \"booze\", \"mojito\"],\r\n \"char\": \"🍹\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"bottle\": {\r\n \"keywords\": [\"drink\", \"wine\", \"champagne\"],\r\n \"char\": \"🍾\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"sake\": {\r\n \"keywords\": [\"wine\", \"drink\", \"drunk\", \"beverage\", \"japanese\", \"alcohol\", \"booze\"],\r\n \"char\": \"🍶\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"tea\": {\r\n \"keywords\": [\"drink\", \"bowl\", \"breakfast\", \"green\", \"british\"],\r\n \"char\": \"🍵\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"coffee\": {\r\n \"keywords\": [\"beverage\", \"caffeine\", \"latte\", \"espresso\"],\r\n \"char\": \"☕\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"baby_bottle\": {\r\n \"keywords\": [\"food\", \"container\", \"milk\"],\r\n \"char\": \"🍼\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"fork_and_knife\": {\r\n \"keywords\": [\"cutlery\", \"kitchen\"],\r\n \"char\": \"🍴\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"fork_and_knife_with_plate\": {\r\n \"keywords\": [\"food\", \"eat\", \"meal\", \"lunch\", \"dinner\", \"restaurant\"],\r\n \"char\": \"🍽\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"soccer\": {\r\n \"keywords\": [\"sports\", \"football\"],\r\n \"char\": \"⚽\",\r\n \"category\": \"activity\"\r\n },\r\n \"basketball\": {\r\n \"keywords\": [\"sports\", \"balls\", \"NBA\"],\r\n \"char\": \"🏀\",\r\n \"category\": \"activity\"\r\n },\r\n \"football\": {\r\n \"keywords\": [\"sports\", \"balls\", \"NFL\"],\r\n \"char\": \"🏈\",\r\n \"category\": \"activity\"\r\n },\r\n \"baseball\": {\r\n \"keywords\": [\"sports\", \"balls\"],\r\n \"char\": \"⚾\",\r\n \"category\": \"activity\"\r\n },\r\n \"tennis\": {\r\n \"keywords\": [\"sports\", \"balls\", \"green\"],\r\n \"char\": \"🎾\",\r\n \"category\": \"activity\"\r\n },\r\n \"volleyball\": {\r\n \"keywords\": [\"sports\", \"balls\"],\r\n \"char\": \"🏐\",\r\n \"category\": \"activity\"\r\n },\r\n \"rugby_football\": {\r\n \"keywords\": [\"sports\", \"team\"],\r\n \"char\": \"🏉\",\r\n \"category\": \"activity\"\r\n },\r\n \"8ball\": {\r\n \"keywords\": [\"pool\", \"hobby\", \"game\", \"luck\", \"magic\"],\r\n \"char\": \"🎱\",\r\n \"category\": \"activity\"\r\n },\r\n \"golf\": {\r\n \"keywords\": [\"sports\", \"business\", \"flag\", \"hole\", \"summer\"],\r\n \"char\": \"⛳\",\r\n \"category\": \"activity\"\r\n },\r\n \"golfer\": {\r\n \"keywords\": [\"sports\", \"business\"],\r\n \"char\": \"🏌\",\r\n \"category\": \"activity\"\r\n },\r\n \"table_tennis\": {\r\n \"keywords\": [\"sports\", \"pingpong\"],\r\n \"char\": \"🏓\",\r\n \"category\": \"activity\"\r\n },\r\n \"badminton\": {\r\n \"keywords\": [\"sports\"],\r\n \"char\": \"🏸\",\r\n \"category\": \"activity\"\r\n },\r\n \"ice_hockey\": {\r\n \"keywords\": [\"sports\"],\r\n \"char\": \"🏒\",\r\n \"category\": \"activity\"\r\n },\r\n \"field_hockey\": {\r\n \"keywords\": [\"sports\"],\r\n \"char\": \"🏑\",\r\n \"category\": \"activity\"\r\n },\r\n \"cricket\": {\r\n \"keywords\": [\"sports\"],\r\n \"char\": \"🏏\",\r\n \"category\": \"activity\"\r\n },\r\n \"ski\": {\r\n \"keywords\": [\"sports\", \"winter\", \"cold\", \"snow\"],\r\n \"char\": \"🎿\",\r\n \"category\": \"activity\"\r\n },\r\n \"skier\": {\r\n \"keywords\": [\"sports\", \"winter\", \"snow\"],\r\n \"char\": \"⛷\",\r\n \"category\": \"activity\"\r\n },\r\n \"snowboarder\": {\r\n \"keywords\": [\"sports\", \"winter\"],\r\n \"char\": \"🏂\",\r\n \"category\": \"activity\"\r\n },\r\n \"ice_skate\": {\r\n \"keywords\": [\"sports\"],\r\n \"char\": \"⛸\",\r\n \"category\": \"activity\"\r\n },\r\n \"bow_and_arrow\": {\r\n \"keywords\": [\"sports\"],\r\n \"char\": \"🏹\",\r\n \"category\": \"activity\"\r\n },\r\n \"fishing_pole_and_fish\": {\r\n \"keywords\": [\"food\", \"hobby\", \"summer\"],\r\n \"char\": \"🎣\",\r\n \"category\": \"activity\"\r\n },\r\n \"rowboat\": {\r\n \"keywords\": [\"sports\", \"hobby\", \"water\", \"ship\"],\r\n \"char\": \"🚣\",\r\n \"category\": \"activity\"\r\n },\r\n \"swimmer\": {\r\n \"keywords\": [\"sports\", \"exercise\", \"human\", \"athlete\", \"water\", \"summer\"],\r\n \"char\": \"🏊\",\r\n \"category\": \"activity\"\r\n },\r\n \"surfer\": {\r\n \"keywords\": [\"sports\", \"ocean\", \"sea\", \"summer\", \"beach\"],\r\n \"char\": \"🏄\",\r\n \"category\": \"activity\"\r\n },\r\n \"bath\": {\r\n \"keywords\": [\"clean\", \"shower\", \"bathroom\"],\r\n \"char\": \"🛀\",\r\n \"category\": \"activity\"\r\n },\r\n \"person_with_ball\": {\r\n \"keywords\": [\"sports\", \"human\"],\r\n \"char\": \"⛹\",\r\n \"category\": \"activity\"\r\n },\r\n \"weight_lifter\": {\r\n \"keywords\": [\"sports\", \"training\", \"exercise\"],\r\n \"char\": \"🏋\",\r\n \"category\": \"activity\"\r\n },\r\n \"bicyclist\": {\r\n \"keywords\": [\"sports\", \"bike\", \"exercise\", \"hipster\"],\r\n \"char\": \"🚴\",\r\n \"category\": \"activity\"\r\n },\r\n \"mountain_bicyclist\": {\r\n \"keywords\": [\"transportation\", \"sports\", \"human\", \"race\", \"bike\"],\r\n \"char\": \"🚵\",\r\n \"category\": \"activity\"\r\n },\r\n \"horse_racing\": {\r\n \"keywords\": [\"animal\", \"betting\", \"competition\", \"gambling\", \"luck\"],\r\n \"char\": \"🏇\",\r\n \"category\": \"activity\"\r\n },\r\n \"man_levitating\": {\r\n \"keywords\": [\"suit\", \"business\", \"levitate\", \"hover\", \"jump\"],\r\n \"char\": \"🕴\",\r\n \"category\": \"activity\"\r\n },\r\n \"trophy\": {\r\n \"keywords\": [\"win\", \"award\", \"contest\", \"place\", \"ftw\", \"ceremony\"],\r\n \"char\": \"🏆\",\r\n \"category\": \"activity\"\r\n },\r\n \"running_shirt_with_sash\": {\r\n \"keywords\": [\"play\", \"pageant\"],\r\n \"char\": \"🎽\",\r\n \"category\": \"activity\"\r\n },\r\n \"sports_medal\": {\r\n \"keywords\": [\"award\", \"winning\"],\r\n \"char\": \"🏅\",\r\n \"category\": \"activity\"\r\n },\r\n \"military_medal\": {\r\n \"keywords\": [\"award\", \"winning\", \"army\"],\r\n \"char\": \"🎖\",\r\n \"category\": \"activity\"\r\n },\r\n \"reminder_ribbon\": {\r\n \"keywords\": [\"sports\", \"cause\", \"support\", \"awareness\"],\r\n \"char\": \"🎗\",\r\n \"category\": \"activity\"\r\n },\r\n \"rosette\": {\r\n \"keywords\": [\"flower\", \"decoration\", \"military\"],\r\n \"char\": \"🏵\",\r\n \"category\": \"activity\"\r\n },\r\n \"ticket\": {\r\n \"keywords\": [\"event\", \"concert\", \"pass\"],\r\n \"char\": \"🎫\",\r\n \"category\": \"activity\"\r\n },\r\n \"admission_ticket\": {\r\n \"keywords\": [\"sports\", \"concert\", \"entrance\"],\r\n \"char\": \"🎟\",\r\n \"category\": \"activity\"\r\n },\r\n \"performing_arts\": {\r\n \"keywords\": [\"acting\", \"theater\", \"drama\"],\r\n \"char\": \"🎭\",\r\n \"category\": \"activity\"\r\n },\r\n \"art\": {\r\n \"keywords\": [\"design\", \"paint\", \"draw\", \"colors\"],\r\n \"char\": \"🎨\",\r\n \"category\": \"activity\"\r\n },\r\n \"circus_tent\": {\r\n \"keywords\": [\"festival\", \"carnival\", \"party\"],\r\n \"char\": \"🎪\",\r\n \"category\": \"activity\"\r\n },\r\n \"microphone\": {\r\n \"keywords\": [\"sound\", \"music\", \"PA\"],\r\n \"char\": \"🎤\",\r\n \"category\": \"activity\"\r\n },\r\n \"headphones\": {\r\n \"keywords\": [\"music\", \"score\", \"gadgets\"],\r\n \"char\": \"🎧\",\r\n \"category\": \"activity\"\r\n },\r\n \"musical_score\": {\r\n \"keywords\": [\"treble\", \"clef\"],\r\n \"char\": \"🎼\",\r\n \"category\": \"activity\"\r\n },\r\n \"musical_keyboard\": {\r\n \"keywords\": [\"piano\", \"instrument\"],\r\n \"char\": \"🎹\",\r\n \"category\": \"activity\"\r\n },\r\n \"saxophone\": {\r\n \"keywords\": [\"music\", \"instrument\", \"jazz\", \"blues\"],\r\n \"char\": \"🎷\",\r\n \"category\": \"activity\"\r\n },\r\n \"trumpet\": {\r\n \"keywords\": [\"music\", \"brass\"],\r\n \"char\": \"🎺\",\r\n \"category\": \"activity\"\r\n },\r\n \"guitar\": {\r\n \"keywords\": [\"music\", \"instrument\"],\r\n \"char\": \"🎸\",\r\n \"category\": \"activity\"\r\n },\r\n \"violin\": {\r\n \"keywords\": [\"music\", \"instrument\", \"orchestra\", \"symphony\"],\r\n \"char\": \"🎻\",\r\n \"category\": \"activity\"\r\n },\r\n \"clapper\": {\r\n \"keywords\": [\"movie\", \"film\", \"record\"],\r\n \"char\": \"🎬\",\r\n \"category\": \"activity\"\r\n },\r\n \"video_game\": {\r\n \"keywords\": [\"play\", \"console\", \"PS4\", \"controller\"],\r\n \"char\": \"🎮\",\r\n \"category\": \"activity\"\r\n },\r\n \"space_invader\": {\r\n \"keywords\": [\"game\", \"arcade\", \"play\"],\r\n \"char\": \"👾\",\r\n \"category\": \"activity\"\r\n },\r\n \"dart\": {\r\n \"keywords\": [\"game\", \"play\", \"bar\"],\r\n \"char\": \"🎯\",\r\n \"category\": \"activity\"\r\n },\r\n \"game_die\": {\r\n \"keywords\": [\"dice\", \"random\", \"tabletop\", \"play\", \"luck\"],\r\n \"char\": \"🎲\",\r\n \"category\": \"activity\"\r\n },\r\n \"slot_machine\": {\r\n \"keywords\": [\"bet\", \"gamble\", \"vegas\", \"fruit machine\", \"luck\", \"casino\"],\r\n \"char\": \"🎰\",\r\n \"category\": \"activity\"\r\n },\r\n \"bowling\": {\r\n \"keywords\": [\"sports\", \"fun\", \"play\"],\r\n \"char\": \"🎳\",\r\n \"category\": \"activity\"\r\n },\r\n \"car\": {\r\n \"keywords\": [\"red\", \"transportation\", \"vehicle\"],\r\n \"char\": \"🚗\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"taxi\": {\r\n \"keywords\": [\"uber\", \"vehicle\", \"cars\", \"transportation\"],\r\n \"char\": \"🚕\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"blue_car\": {\r\n \"keywords\": [\"transportation\", \"vehicle\"],\r\n \"char\": \"🚙\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"bus\": {\r\n \"keywords\": [\"car\", \"vehicle\", \"transportation\"],\r\n \"char\": \"🚌\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"trolleybus\": {\r\n \"keywords\": [\"bart\", \"transportation\", \"vehicle\"],\r\n \"char\": \"🚎\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"racing_car\": {\r\n \"keywords\": [\"sports\", \"race\", \"fast\", \"formula\", \"f1\"],\r\n \"char\": \"🏎\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"police_car\": {\r\n \"keywords\": [\"vehicle\", \"cars\", \"transportation\", \"law\", \"legal\", \"enforcement\"],\r\n \"char\": \"🚓\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"ambulance\": {\r\n \"keywords\": [\"health\", \"911\", \"hospital\"],\r\n \"char\": \"🚑\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"fire_engine\": {\r\n \"keywords\": [\"transportation\", \"cars\", \"vehicle\"],\r\n \"char\": \"🚒\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"minibus\": {\r\n \"keywords\": [\"vehicle\", \"car\", \"transportation\"],\r\n \"char\": \"🚐\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"truck\": {\r\n \"keywords\": [\"cars\", \"transportation\"],\r\n \"char\": \"🚚\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"articulated_lorry\": {\r\n \"keywords\": [\"vehicle\", \"cars\", \"transportation\", \"express\"],\r\n \"char\": \"🚛\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"tractor\": {\r\n \"keywords\": [\"vehicle\", \"car\", \"farming\", \"agriculture\"],\r\n \"char\": \"🚜\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"racing_motorcycle\": {\r\n \"keywords\": [\"race\", \"sports\", \"fast\"],\r\n \"char\": \"🏍\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"bike\": {\r\n \"keywords\": [\"sports\", \"bicycle\", \"exercise\", \"hipster\"],\r\n \"char\": \"🚲\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"rotating_light\": {\r\n \"keywords\": [\"police\", \"ambulance\", \"911\", \"emergency\", \"alert\", \"error\", \"pinged\", \"law\", \"legal\"],\r\n \"char\": \"🚨\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"oncoming_police_car\": {\r\n \"keywords\": [\"vehicle\", \"law\", \"legal\", \"enforcement\", \"911\"],\r\n \"char\": \"🚔\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"oncoming_bus\": {\r\n \"keywords\": [\"vehicle\", \"transportation\"],\r\n \"char\": \"🚍\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"oncoming_automobile\": {\r\n \"keywords\": [\"car\", \"vehicle\", \"transportation\"],\r\n \"char\": \"🚘\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"oncoming_taxi\": {\r\n \"keywords\": [\"vehicle\", \"cars\", \"uber\"],\r\n \"char\": \"🚖\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"aerial_tramway\": {\r\n \"keywords\": [\"transportation\", \"vehicle\", \"ski\"],\r\n \"char\": \"🚡\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"mountain_cableway\": {\r\n \"keywords\": [\"transportation\", \"vehicle\", \"ski\"],\r\n \"char\": \"🚠\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"suspension_railway\": {\r\n \"keywords\": [\"vehicle\", \"transportation\"],\r\n \"char\": \"🚟\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"railway_car\": {\r\n \"keywords\": [\"transportation\", \"vehicle\"],\r\n \"char\": \"🚃\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"train\": {\r\n \"keywords\": [\"transportation\", \"vehicle\", \"carriage\", \"public\", \"travel\"],\r\n \"char\": \"🚋\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"monorail\": {\r\n \"keywords\": [\"transportation\", \"vehicle\"],\r\n \"char\": \"🚝\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"bullettrain_side\": {\r\n \"keywords\": [\"transportation\", \"vehicle\"],\r\n \"char\": \"🚄\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"bullettrain_front\": {\r\n \"keywords\": [\"transportation\", \"vehicle\", \"speed\", \"fast\", \"public\", \"travel\"],\r\n \"char\": \"🚅\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"light_rail\": {\r\n \"keywords\": [\"transportation\", \"vehicle\"],\r\n \"char\": \"🚈\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"mountain_railway\": {\r\n \"keywords\": [\"transportation\", \"vehicle\"],\r\n \"char\": \"🚞\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"steam_locomotive\": {\r\n \"keywords\": [\"transportation\", \"vehicle\", \"train\"],\r\n \"char\": \"🚂\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"train2\": {\r\n \"keywords\": [\"transportation\", \"vehicle\"],\r\n \"char\": \"🚆\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"metro\": {\r\n \"keywords\": [\"transportation\", \"blue-square\", \"mrt\", \"underground\", \"tube\"],\r\n \"char\": \"🚇\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"tram\": {\r\n \"keywords\": [\"transportation\", \"vehicle\"],\r\n \"char\": \"🚊\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"station\": {\r\n \"keywords\": [\"transportation\", \"vehicle\", \"public\"],\r\n \"char\": \"🚉\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"helicopter\": {\r\n \"keywords\": [\"transportation\", \"vehicle\", \"fly\"],\r\n \"char\": \"🚁\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"small_airplane\": {\r\n \"keywords\": [\"flight\", \"transportation\", \"fly\", \"vehicle\"],\r\n \"char\": \"🛩\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"airplane\": {\r\n \"keywords\": [\"vehicle\", \"transportation\", \"flight\", \"fly\"],\r\n \"char\": \"✈️\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"airplane_departure\": {\r\n \"keywords\": [\"airport\", \"flight\", \"landing\"],\r\n \"char\": \"🛫\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"airplane_arrival\": {\r\n \"keywords\": [\"airport\", \"flight\", \"boarding\"],\r\n \"char\": \"🛬\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"boat\": {\r\n \"keywords\": [\"ship\", \"summer\", \"transportation\", \"water\", \"sailing\", \"sailboat\"],\r\n \"char\": \"⛵\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"motor_boat\": {\r\n \"keywords\": [\"ship\"],\r\n \"char\": \"🛥\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"speedboat\": {\r\n \"keywords\": [\"ship\", \"transportation\", \"vehicle\", \"summer\"],\r\n \"char\": \"🚤\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"ferry\": {\r\n \"keywords\": [\"boat\", \"ship\", \"yacht\"],\r\n \"char\": \"⛴\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"passenger_ship\": {\r\n \"keywords\": [\"yacht\", \"cruise\", \"ferry\"],\r\n \"char\": \"🛳\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"rocket\": {\r\n \"keywords\": [\"launch\", \"ship\", \"staffmode\", \"NASA\", \"outer space\", \"outer_space\", \"fly\"],\r\n \"char\": \"🚀\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"artificial_satellite\": {\r\n \"keywords\": [\"communication\", \"gps\", \"orbit\", \"spaceflight\", \"NASA\", \"ISS\"],\r\n \"char\": \"🛰\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"seat\": {\r\n \"keywords\": [\"sit\", \"airplane\", \"transport\", \"bus\", \"flight\", \"fly\"],\r\n \"char\": \"💺\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"anchor\": {\r\n \"keywords\": [\"ship\", \"ferry\", \"sea\", \"boat\"],\r\n \"char\": \"⚓\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"construction\": {\r\n \"keywords\": [\"wip\", \"progress\", \"caution\", \"warning\"],\r\n \"char\": \"🚧\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"fuelpump\": {\r\n \"keywords\": [\"gas station\", \"petroleum\"],\r\n \"char\": \"⛽\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"busstop\": {\r\n \"keywords\": [\"transportation\", \"wait\"],\r\n \"char\": \"🚏\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"vertical_traffic_light\": {\r\n \"keywords\": [\"transportation\", \"driving\"],\r\n \"char\": \"🚦\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"traffic_light\": {\r\n \"keywords\": [\"transportation\", \"signal\"],\r\n \"char\": \"🚥\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"checkered_flag\": {\r\n \"keywords\": [\"contest\", \"finishline\", \"race\", \"gokart\"],\r\n \"char\": \"🏁\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"ship\": {\r\n \"keywords\": [\"transportation\", \"titanic\", \"deploy\"],\r\n \"char\": \"🚢\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"ferris_wheel\": {\r\n \"keywords\": [\"photo\", \"carnival\", \"londoneye\"],\r\n \"char\": \"🎡\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"roller_coaster\": {\r\n \"keywords\": [\"carnival\", \"playground\", \"photo\", \"fun\"],\r\n \"char\": \"🎢\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"carousel_horse\": {\r\n \"keywords\": [\"photo\", \"carnival\"],\r\n \"char\": \"🎠\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"building_construction\": {\r\n \"keywords\": [\"wip\", \"working\", \"progress\"],\r\n \"char\": \"🏗\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"foggy\": {\r\n \"keywords\": [\"photo\", \"mountain\"],\r\n \"char\": \"🌁\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"tokyo_tower\": {\r\n \"keywords\": [\"photo\", \"japanese\"],\r\n \"char\": \"🗼\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"factory\": {\r\n \"keywords\": [\"building\", \"industry\", \"pollution\", \"smoke\"],\r\n \"char\": \"🏭\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"fountain\": {\r\n \"keywords\": [\"photo\", \"summer\", \"water\", \"fresh\"],\r\n \"char\": \"⛲\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"rice_scene\": {\r\n \"keywords\": [\"photo\", \"japan\", \"asia\", \"tsukimi\"],\r\n \"char\": \"🎑\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"mountain\": {\r\n \"keywords\": [\"photo\", \"nature\", \"environment\"],\r\n \"char\": \"⛰\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"snow_capped_mountain\": {\r\n \"keywords\": [\"photo\", \"nature\", \"environment\", \"winter\", \"cold\"],\r\n \"char\": \"🏔\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"mount_fuji\": {\r\n \"keywords\": [\"photo\", \"mountain\", \"nature\", \"japanese\"],\r\n \"char\": \"🗻\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"volcano\": {\r\n \"keywords\": [\"photo\", \"nature\", \"disaster\"],\r\n \"char\": \"🌋\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"japan\": {\r\n \"keywords\": [\"nation\", \"country\", \"japanese\", \"asia\"],\r\n \"char\": \"🗾\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"camping\": {\r\n \"keywords\": [\"photo\", \"outdoors\", \"tent\"],\r\n \"char\": \"🏕\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"tent\": {\r\n \"keywords\": [\"photo\", \"camping\", \"outdoors\"],\r\n \"char\": \"⛺\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"national_park\": {\r\n \"keywords\": [\"photo\", \"environment\", \"nature\"],\r\n \"char\": \"🏞\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"motorway\": {\r\n \"keywords\": [\"road\", \"cupertino\", \"interstate\", \"highway\"],\r\n \"char\": \"🛣\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"railway_track\": {\r\n \"keywords\": [\"train\", \"transportation\"],\r\n \"char\": \"🛤\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"sunrise\": {\r\n \"keywords\": [\"morning\", \"view\", \"vacation\", \"photo\"],\r\n \"char\": \"🌅\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"sunrise_over_mountains\": {\r\n \"keywords\": [\"view\", \"vacation\", \"photo\"],\r\n \"char\": \"🌄\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"desert\": {\r\n \"keywords\": [\"photo\", \"warm\", \"saharah\"],\r\n \"char\": \"🏜\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"beach_with_umbrella\": {\r\n \"keywords\": [\"weather\", \"summer\", \"sunny\", \"sand\", \"mojito\"],\r\n \"char\": \"🏖\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"desert_island\": {\r\n \"keywords\": [\"photo\", \"tropical\", \"mojito\"],\r\n \"char\": \"🏝\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"city_sunrise\": {\r\n \"keywords\": [\"photo\", \"good morning\", \"dawn\"],\r\n \"char\": \"🌇\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"city_sunset\": {\r\n \"keywords\": [\"photo\", \"evening\", \"sky\", \"buildings\"],\r\n \"char\": \"🌆\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"cityscape\": {\r\n \"keywords\": [\"photo\", \"night life\", \"urban\"],\r\n \"char\": \"🏙\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"night_with_stars\": {\r\n \"keywords\": [\"evening\", \"city\", \"downtown\"],\r\n \"char\": \"🌃\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"bridge_at_night\": {\r\n \"keywords\": [\"photo\", \"sanfrancisco\"],\r\n \"char\": \"🌉\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"milky_way\": {\r\n \"keywords\": [\"photo\", \"space\", \"stars\"],\r\n \"char\": \"🌌\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"stars\": {\r\n \"keywords\": [\"night\", \"photo\"],\r\n \"char\": \"🌠\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"sparkler\": {\r\n \"keywords\": [\"stars\", \"night\", \"shine\"],\r\n \"char\": \"🎇\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"fireworks\": {\r\n \"keywords\": [\"photo\", \"festival\", \"carnival\", \"congratulations\"],\r\n \"char\": \"🎆\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"rainbow\": {\r\n \"keywords\": [\"nature\", \"happy\", \"unicorn\", \"photo\", \"sky\", \"spring\"],\r\n \"char\": \"🌈\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"buildings\": {\r\n \"keywords\": [\"houses\", \"photo\"],\r\n \"char\": \"🏘\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"european_castle\": {\r\n \"keywords\": [\"building\", \"royalty\", \"history\"],\r\n \"char\": \"🏰\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"japanese_castle\": {\r\n \"keywords\": [\"photo\", \"building\"],\r\n \"char\": \"🏯\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"stadium\": {\r\n \"keywords\": [\"photo\", \"place\", \"sports\", \"concert\", \"venue\"],\r\n \"char\": \"🏟\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"statue_of_liberty\": {\r\n \"keywords\": [\"american\", \"newyork\"],\r\n \"char\": \"🗽\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"house\": {\r\n \"keywords\": [\"building\", \"home\"],\r\n \"char\": \"🏠\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"house_with_garden\": {\r\n \"keywords\": [\"home\", \"plant\", \"nature\"],\r\n \"char\": \"🏡\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"derelict_house\": {\r\n \"keywords\": [\"abandon\", \"evict\", \"broken\", \"building\"],\r\n \"char\": \"🏚\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"office\": {\r\n \"keywords\": [\"building\", \"bureau\", \"work\"],\r\n \"char\": \"🏢\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"department_store\": {\r\n \"keywords\": [\"building\", \"shopping\", \"mall\"],\r\n \"char\": \"🏬\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"post_office\": {\r\n \"keywords\": [\"building\", \"email\", \"communication\"],\r\n \"char\": \"🏣\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"european_post_office\": {\r\n \"keywords\": [\"building\", \"email\"],\r\n \"char\": \"🏤\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"hospital\": {\r\n \"keywords\": [\"building\", \"health\", \"surgery\", \"doctor\"],\r\n \"char\": \"🏥\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"bank\": {\r\n \"keywords\": [\"building\", \"money\", \"sales\", \"cash\", \"business\", \"enterprise\"],\r\n \"char\": \"🏦\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"hotel\": {\r\n \"keywords\": [\"building\", \"accomodation\", \"checkin\"],\r\n \"char\": \"🏨\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"convenience_store\": {\r\n \"keywords\": [\"building\", \"shopping\", \"groceries\"],\r\n \"char\": \"🏪\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"school\": {\r\n \"keywords\": [\"building\", \"student\", \"education\", \"learn\", \"teach\"],\r\n \"char\": \"🏫\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"love_hotel\": {\r\n \"keywords\": [\"like\", \"affection\", \"dating\"],\r\n \"char\": \"🏩\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"wedding\": {\r\n \"keywords\": [\"love\", \"like\", \"affection\", \"couple\", \"marriage\", \"bride\", \"groom\"],\r\n \"char\": \"💒\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"museum\": {\r\n \"keywords\": [\"art\", \"culture\", \"history\"],\r\n \"char\": \"🏛\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"church\": {\r\n \"keywords\": [\"building\", \"religion\", \"christ\"],\r\n \"char\": \"⛪\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"mosque\": {\r\n \"keywords\": [\"islam\", \"worship\", \"minaret\"],\r\n \"char\": \"🕌\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"synagogue\": {\r\n \"keywords\": [\"judaism\", \"worship\", \"temple\", \"jewish\"],\r\n \"char\": \"🕍\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"kaaba\": {\r\n \"keywords\": [\"mecca\", \"mosque\", \"islam\"],\r\n \"char\": \"🕋\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"shinto_shrine\": {\r\n \"keywords\": [\"temple\", \"japan\", \"kyoto\"],\r\n \"char\": \"⛩\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"watch\": {\r\n \"keywords\": [\"time\", \"accessories\"],\r\n \"char\": \"⌚\",\r\n \"category\": \"objects\"\r\n },\r\n \"iphone\": {\r\n \"keywords\": [\"technology\", \"apple\", \"gadgets\", \"dial\"],\r\n \"char\": \"📱\",\r\n \"category\": \"objects\"\r\n },\r\n \"calling\": {\r\n \"keywords\": [\"iphone\", \"incoming\"],\r\n \"char\": \"📲\",\r\n \"category\": \"objects\"\r\n },\r\n \"computer\": {\r\n \"keywords\": [\"technology\", \"laptop\", \"screen\", \"display\", \"monitor\"],\r\n \"char\": \"💻\",\r\n \"category\": \"objects\"\r\n },\r\n \"keyboard\": {\r\n \"keywords\": [\"technology\", \"computer\", \"type\", \"input\", \"text\"],\r\n \"char\": \"⌨\",\r\n \"category\": \"objects\"\r\n },\r\n \"desktop_computer\": {\r\n \"keywords\": [\"technology\", \"computing\", \"screen\"],\r\n \"char\": \"🖥\",\r\n \"category\": \"objects\"\r\n },\r\n \"printer\": {\r\n \"keywords\": [\"paper\", \"ink\"],\r\n \"char\": \"🖨\",\r\n \"category\": \"objects\"\r\n },\r\n \"three_button_mouse\": {\r\n \"keywords\": [\"click\"],\r\n \"char\": \"🖱\",\r\n \"category\": \"objects\"\r\n },\r\n \"trackball\": {\r\n \"keywords\": [\"technology\", \"trackpad\"],\r\n \"char\": \"🖲\",\r\n \"category\": \"objects\"\r\n },\r\n \"joystick\": {\r\n \"keywords\": [\"game\", \"play\"],\r\n \"char\": \"🕹\",\r\n \"category\": \"objects\"\r\n },\r\n \"compression\": {\r\n \"keywords\": [\"tool\"],\r\n \"char\": \"🗜\",\r\n \"category\": \"objects\"\r\n },\r\n \"minidisc\": {\r\n \"keywords\": [\"technology\", \"record\", \"data\", \"disk\", \"90s\"],\r\n \"char\": \"💽\",\r\n \"category\": \"objects\"\r\n },\r\n \"floppy_disk\": {\r\n \"keywords\": [\"oldschool\", \"technology\", \"save\", \"90s\", \"80s\"],\r\n \"char\": \"💾\",\r\n \"category\": \"objects\"\r\n },\r\n \"cd\": {\r\n \"keywords\": [\"technology\", \"dvd\", \"disk\", \"disc\", \"90s\"],\r\n \"char\": \"💿\",\r\n \"category\": \"objects\"\r\n },\r\n \"dvd\": {\r\n \"keywords\": [\"cd\", \"disk\", \"disc\"],\r\n \"char\": \"📀\",\r\n \"category\": \"objects\"\r\n },\r\n \"vhs\": {\r\n \"keywords\": [\"record\", \"video\", \"oldschool\", \"90s\", \"80s\"],\r\n \"char\": \"📼\",\r\n \"category\": \"objects\"\r\n },\r\n \"camera\": {\r\n \"keywords\": [\"gadgets\", \"photography\"],\r\n \"char\": \"📷\",\r\n \"category\": \"objects\"\r\n },\r\n \"camera_with_flash\": {\r\n \"keywords\": [\"photography\", \"gadgets\"],\r\n \"char\": \"📸\",\r\n \"category\": \"objects\"\r\n },\r\n \"video_camera\": {\r\n \"keywords\": [\"film\", \"record\"],\r\n \"char\": \"📹\",\r\n \"category\": \"objects\"\r\n },\r\n \"movie_camera\": {\r\n \"keywords\": [\"film\", \"record\"],\r\n \"char\": \"🎥\",\r\n \"category\": \"objects\"\r\n },\r\n \"film_projector\": {\r\n \"keywords\": [\"video\", \"tape\", \"record\", \"movie\"],\r\n \"char\": \"📽\",\r\n \"category\": \"objects\"\r\n },\r\n \"film_frames\": {\r\n \"keywords\": [\"movie\"],\r\n \"char\": \"🎞\",\r\n \"category\": \"objects\"\r\n },\r\n \"telephone_receiver\": {\r\n \"keywords\": [\"technology\", \"communication\", \"dial\"],\r\n \"char\": \"📞\",\r\n \"category\": \"objects\"\r\n },\r\n \"phone\": {\r\n \"keywords\": [\"technology\", \"communication\", \"dial\", \"telephone\"],\r\n \"char\": \"☎️\",\r\n \"category\": \"objects\"\r\n },\r\n \"pager\": {\r\n \"keywords\": [\"bbcall\", \"oldschool\", \"90s\"],\r\n \"char\": \"📟\",\r\n \"category\": \"objects\"\r\n },\r\n \"fax\": {\r\n \"keywords\": [\"communication\", \"technology\"],\r\n \"char\": \"📠\",\r\n \"category\": \"objects\"\r\n },\r\n \"tv\": {\r\n \"keywords\": [\"technology\", \"program\", \"oldschool\", \"show\", \"television\"],\r\n \"char\": \"📺\",\r\n \"category\": \"objects\"\r\n },\r\n \"radio\": {\r\n \"keywords\": [\"communication\", \"music\", \"podcast\", \"program\"],\r\n \"char\": \"📻\",\r\n \"category\": \"objects\"\r\n },\r\n \"studio_microphone\": {\r\n \"keywords\": [\"singer\", \"recording\", \"artist\"],\r\n \"char\": \"🎙\",\r\n \"category\": \"objects\"\r\n },\r\n \"level_slider\": {\r\n \"keywords\": [\"scale\"],\r\n \"char\": \"🎚\",\r\n \"category\": \"objects\"\r\n },\r\n \"control_knobs\": {\r\n \"keywords\": [\"dial\"],\r\n \"char\": \"🎛\",\r\n \"category\": \"objects\"\r\n },\r\n \"stopwatch\": {\r\n \"keywords\": [\"time\", \"deadline\"],\r\n \"char\": \"⏱\",\r\n \"category\": \"objects\"\r\n },\r\n \"timer_clock\": {\r\n \"keywords\": [\"alarm\"],\r\n \"char\": \"⏲\",\r\n \"category\": \"objects\"\r\n },\r\n \"alarm_clock\": {\r\n \"keywords\": [\"time\", \"wake\"],\r\n \"char\": \"⏰\",\r\n \"category\": \"objects\"\r\n },\r\n \"mantelpiece_clock\": {\r\n \"keywords\": [\"time\"],\r\n \"char\": \"🕰\",\r\n \"category\": \"objects\"\r\n },\r\n \"hourglass_flowing_sand\": {\r\n \"keywords\": [\"oldschool\", \"time\", \"countdown\"],\r\n \"char\": \"⏳\",\r\n \"category\": \"objects\"\r\n },\r\n \"hourglass\": {\r\n \"keywords\": [\"time\", \"clock\", \"oldschool\", \"limit\", \"exam\", \"quiz\", \"test\"],\r\n \"char\": \"⌛\",\r\n \"category\": \"objects\"\r\n },\r\n \"satellite\": {\r\n \"keywords\": [\"communication\", \"future\", \"radio\", \"space\"],\r\n \"char\": \"📡\",\r\n \"category\": \"objects\"\r\n },\r\n \"battery\": {\r\n \"keywords\": [\"power\", \"energy\", \"sustain\"],\r\n \"char\": \"🔋\",\r\n \"category\": \"objects\"\r\n },\r\n \"electric_plug\": {\r\n \"keywords\": [\"charger\", \"power\"],\r\n \"char\": \"🔌\",\r\n \"category\": \"objects\"\r\n },\r\n \"bulb\": {\r\n \"keywords\": [\"light\", \"electricity\", \"idea\"],\r\n \"char\": \"💡\",\r\n \"category\": \"objects\"\r\n },\r\n \"flashlight\": {\r\n \"keywords\": [\"dark\", \"camping\", \"sight\", \"night\"],\r\n \"char\": \"🔦\",\r\n \"category\": \"objects\"\r\n },\r\n \"candle\": {\r\n \"keywords\": [\"fire\", \"wax\"],\r\n \"char\": \"🕯\",\r\n \"category\": \"objects\"\r\n },\r\n \"wastebasket\": {\r\n \"keywords\": [\"bin\", \"trash\", \"rubbish\", \"garbage\", \"toss\"],\r\n \"char\": \"🗑\",\r\n \"category\": \"objects\"\r\n },\r\n \"oil_drum\": {\r\n \"keywords\": [\"barrell\"],\r\n \"char\": \"🛢\",\r\n \"category\": \"objects\"\r\n },\r\n \"money_with_wings\": {\r\n \"keywords\": [\"dollar\", \"bills\", \"payment\", \"sale\"],\r\n \"char\": \"💸\",\r\n \"category\": \"objects\"\r\n },\r\n \"dollar\": {\r\n \"keywords\": [\"money\", \"sales\", \"bill\", \"currency\"],\r\n \"char\": \"💵\",\r\n \"category\": \"objects\"\r\n },\r\n \"yen\": {\r\n \"keywords\": [\"money\", \"sales\", \"japanese\", \"dollar\", \"currency\"],\r\n \"char\": \"💴\",\r\n \"category\": \"objects\"\r\n },\r\n \"euro\": {\r\n \"keywords\": [\"money\", \"sales\", \"dollar\", \"currency\"],\r\n \"char\": \"💶\",\r\n \"category\": \"objects\"\r\n },\r\n \"pound\": {\r\n \"keywords\": [\"british\", \"sterling\", \"money\", \"sales\", \"bills\", \"uk\", \"england\", \"currency\"],\r\n \"char\": \"💷\",\r\n \"category\": \"objects\"\r\n },\r\n \"moneybag\": {\r\n \"keywords\": [\"dollar\", \"payment\", \"coins\", \"sale\"],\r\n \"char\": \"💰\",\r\n \"category\": \"objects\"\r\n },\r\n \"credit_card\": {\r\n \"keywords\": [\"money\", \"sales\", \"dollar\", \"bill\", \"payment\", \"shopping\"],\r\n \"char\": \"💳\",\r\n \"category\": \"objects\"\r\n },\r\n \"gem\": {\r\n \"keywords\": [\"blue\", \"ruby\", \"diamond\", \"jewelry\"],\r\n \"char\": \"💎\",\r\n \"category\": \"objects\"\r\n },\r\n \"scales\": {\r\n \"keywords\": [\"law\", \"fairness\", \"weight\"],\r\n \"char\": \"⚖\",\r\n \"category\": \"objects\"\r\n },\r\n \"wrench\": {\r\n \"keywords\": [\"tools\", \"diy\", \"ikea\", \"fix\", \"maintainer\"],\r\n \"char\": \"🔧\",\r\n \"category\": \"objects\"\r\n },\r\n \"hammer\": {\r\n \"keywords\": [\"tools\", \"build\", \"create\"],\r\n \"char\": \"🔨\",\r\n \"category\": \"objects\"\r\n },\r\n \"hammer_and_pick\": {\r\n \"keywords\": [\"tools\", \"build\", \"create\"],\r\n \"char\": \"⚒\",\r\n \"category\": \"objects\"\r\n },\r\n \"hammer_and_wrench\": {\r\n \"keywords\": [\"tools\", \"build\", \"create\"],\r\n \"char\": \"🛠\",\r\n \"category\": \"objects\"\r\n },\r\n \"pick\": {\r\n \"keywords\": [\"tools\", \"dig\"],\r\n \"char\": \"⛏\",\r\n \"category\": \"objects\"\r\n },\r\n \"nut_and_bolt\": {\r\n \"keywords\": [\"handy\", \"tools\", \"fix\"],\r\n \"char\": \"🔩\",\r\n \"category\": \"objects\"\r\n },\r\n \"gear\": {\r\n \"keywords\": [\"cog\"],\r\n \"char\": \"⚙\",\r\n \"category\": \"objects\"\r\n },\r\n \"chains\": {\r\n \"keywords\": [\"lock\", \"arrest\"],\r\n \"char\": \"⛓\",\r\n \"category\": \"objects\"\r\n },\r\n \"gun\": {\r\n \"keywords\": [\"violence\", \"weapon\", \"pistol\", \"revolver\"],\r\n \"char\": \"🔫\",\r\n \"category\": \"objects\"\r\n },\r\n \"bomb\": {\r\n \"keywords\": [\"boom\", \"explode\", \"explosion\", \"terrorism\"],\r\n \"char\": \"💣\",\r\n \"category\": \"objects\"\r\n },\r\n \"hocho\": {\r\n \"keywords\": [\"knife\", \"blade\", \"cutlery\", \"kitchen\", \"weapon\"],\r\n \"char\": \"🔪\",\r\n \"category\": \"objects\"\r\n },\r\n \"dagger_knife\": {\r\n \"keywords\": [\"weapon\"],\r\n \"char\": \"🗡\",\r\n \"category\": \"objects\"\r\n },\r\n \"crossed_swords\": {\r\n \"keywords\": [\"weapon\"],\r\n \"char\": \"⚔\",\r\n \"category\": \"objects\"\r\n },\r\n \"shield\": {\r\n \"keywords\": [\"protection\", \"security\"],\r\n \"char\": \"🛡\",\r\n \"category\": \"objects\"\r\n },\r\n \"smoking\": {\r\n \"keywords\": [\"kills\", \"tobacco\", \"cigarette\", \"joint\", \"smoke\"],\r\n \"char\": \"🚬\",\r\n \"category\": \"objects\"\r\n },\r\n \"skull_and_crossbones\": {\r\n \"keywords\": [\"poison\", \"danger\", \"deadly\", \"scary\"],\r\n \"char\": \"☠\",\r\n \"category\": \"objects\"\r\n },\r\n \"coffin\": {\r\n \"keywords\": [\"vampire\", \"dead\", \"die\", \"death\", \"rip\", \"graveyard\", \"cemetery\"],\r\n \"char\": \"⚰\",\r\n \"category\": \"objects\"\r\n },\r\n \"funeral_urn\": {\r\n \"keywords\": [\"dead\", \"die\", \"death\", \"rip\", \"ashes\"],\r\n \"char\": \"⚱\",\r\n \"category\": \"objects\"\r\n },\r\n \"amphora\": {\r\n \"keywords\": [\"vase\", \"jar\"],\r\n \"char\": \"🏺\",\r\n \"category\": \"objects\"\r\n },\r\n \"crystal_ball\": {\r\n \"keywords\": [\"disco\", \"party\", \"magic\", \"circus\", \"fortune_teller\"],\r\n \"char\": \"🔮\",\r\n \"category\": \"objects\"\r\n },\r\n \"prayer_beads\": {\r\n \"keywords\": [\"dhikr\", \"religious\"],\r\n \"char\": \"📿\",\r\n \"category\": \"objects\"\r\n },\r\n \"barber\": {\r\n \"keywords\": [\"hair\", \"salon\", \"style\"],\r\n \"char\": \"💈\",\r\n \"category\": \"objects\"\r\n },\r\n \"alembic\": {\r\n \"keywords\": [\"distilling\", \"science\", \"experiment\"],\r\n \"char\": \"⚗\",\r\n \"category\": \"objects\"\r\n },\r\n \"telescope\": {\r\n \"keywords\": [\"stars\", \"space\", \"zoom\"],\r\n \"char\": \"🔭\",\r\n \"category\": \"objects\"\r\n },\r\n \"microscope\": {\r\n \"keywords\": [\"laboratory\", \"experiment\", \"zoomin\", \"science\", \"study\"],\r\n \"char\": \"🔬\",\r\n \"category\": \"objects\"\r\n },\r\n \"hole\": {\r\n \"keywords\": [\"embarrassing\"],\r\n \"char\": \"🕳\",\r\n \"category\": \"objects\"\r\n },\r\n \"pill\": {\r\n \"keywords\": [\"health\", \"medicine\", \"doctor\", \"pharmacy\", \"drug\"],\r\n \"char\": \"💊\",\r\n \"category\": \"objects\"\r\n },\r\n \"syringe\": {\r\n \"keywords\": [\"health\", \"hospital\", \"drugs\", \"blood\", \"medicine\", \"needle\", \"doctor\", \"nurse\"],\r\n \"char\": \"💉\",\r\n \"category\": \"objects\"\r\n },\r\n \"thermometer\": {\r\n \"keywords\": [\"weather\", \"temperature\", \"hot\", \"cold\"],\r\n \"char\": \"🌡\",\r\n \"category\": \"objects\"\r\n },\r\n \"label\": {\r\n \"keywords\": [\"sale\", \"tag\"],\r\n \"char\": \"🏷\",\r\n \"category\": \"objects\"\r\n },\r\n \"bookmark\": {\r\n \"keywords\": [\"favorite\", \"label\", \"save\"],\r\n \"char\": \"🔖\",\r\n \"category\": \"objects\"\r\n },\r\n \"toilet\": {\r\n \"keywords\": [\"restroom\", \"wc\", \"washroom\", \"bathroom\", \"potty\"],\r\n \"char\": \"🚽\",\r\n \"category\": \"objects\"\r\n },\r\n \"shower\": {\r\n \"keywords\": [\"clean\", \"water\", \"bathroom\"],\r\n \"char\": \"🚿\",\r\n \"category\": \"objects\"\r\n },\r\n \"bathtub\": {\r\n \"keywords\": [\"clean\", \"shower\", \"bathroom\"],\r\n \"char\": \"🛁\",\r\n \"category\": \"objects\"\r\n },\r\n \"key\": {\r\n \"keywords\": [\"lock\", \"door\", \"password\"],\r\n \"char\": \"🔑\",\r\n \"category\": \"objects\"\r\n },\r\n \"old_key\": {\r\n \"keywords\": [\"lock\", \"door\", \"password\"],\r\n \"char\": \"🗝\",\r\n \"category\": \"objects\"\r\n },\r\n \"couch_and_lamp\": {\r\n \"keywords\": [\"read\", \"chill\"],\r\n \"char\": \"🛋\",\r\n \"category\": \"objects\"\r\n },\r\n \"sleeping_accommodation\": {\r\n \"keywords\": [\"bed\", \"rest\"],\r\n \"char\": \"🛌\",\r\n \"category\": \"objects\"\r\n },\r\n \"bed\": {\r\n \"keywords\": [\"sleep\", \"rest\"],\r\n \"char\": \"🛏\",\r\n \"category\": \"objects\"\r\n },\r\n \"door\": {\r\n \"keywords\": [\"house\", \"entry\", \"exit\"],\r\n \"char\": \"🚪\",\r\n \"category\": \"objects\"\r\n },\r\n \"bellhop_bell\": {\r\n \"keywords\": [\"service\"],\r\n \"char\": \"🛎\",\r\n \"category\": \"objects\"\r\n },\r\n \"frame_with_picture\": {\r\n \"keywords\": [\"photography\"],\r\n \"char\": \"🖼\",\r\n \"category\": \"objects\"\r\n },\r\n \"world_map\": {\r\n \"keywords\": [\"location\", \"direction\"],\r\n \"char\": \"🗺\",\r\n \"category\": \"objects\"\r\n },\r\n \"umbrella_on_ground\": {\r\n \"keywords\": [\"weather\", \"summer\"],\r\n \"char\": \"⛱\",\r\n \"category\": \"objects\"\r\n },\r\n \"moyai\": {\r\n \"keywords\": [\"rock\", \"easter island\", \"moai\"],\r\n \"char\": \"🗿\",\r\n \"category\": \"objects\"\r\n },\r\n \"shopping_bags\": {\r\n \"keywords\": [\"mall\", \"buy\", \"purchase\"],\r\n \"char\": \"🛍\",\r\n \"category\": \"objects\"\r\n },\r\n \"balloon\": {\r\n \"keywords\": [\"party\", \"celebration\", \"birthday\", \"circus\"],\r\n \"char\": \"🎈\",\r\n \"category\": \"objects\"\r\n },\r\n \"flags\": {\r\n \"keywords\": [\"fish\", \"japanese\", \"koinobori\", \"carp\", \"banner\"],\r\n \"char\": \"🎏\",\r\n \"category\": \"objects\"\r\n },\r\n \"ribbon\": {\r\n \"keywords\": [\"decoration\", \"pink\", \"girl\", \"bowtie\"],\r\n \"char\": \"🎀\",\r\n \"category\": \"objects\"\r\n },\r\n \"gift\": {\r\n \"keywords\": [\"present\", \"birthday\", \"christmas\", \"xmas\"],\r\n \"char\": \"🎁\",\r\n \"category\": \"objects\"\r\n },\r\n \"confetti_ball\": {\r\n \"keywords\": [\"festival\", \"party\", \"birthday\", \"circus\"],\r\n \"char\": \"🎊\",\r\n \"category\": \"objects\"\r\n },\r\n \"tada\": {\r\n \"keywords\": [\"party\", \"contulations\", \"birthday\", \"magic\", \"circus\"],\r\n \"char\": \"🎉\",\r\n \"category\": \"objects\"\r\n },\r\n \"dolls\": {\r\n \"keywords\": [\"japanese\", \"toy\", \"kimono\"],\r\n \"char\": \"🎎\",\r\n \"category\": \"objects\"\r\n },\r\n \"wind_chime\": {\r\n \"keywords\": [\"nature\", \"ding\", \"spring\", \"bell\"],\r\n \"char\": \"🎐\",\r\n \"category\": \"objects\"\r\n },\r\n \"crossed_flags\": {\r\n \"keywords\": [\"japanese\", \"nation\", \"country\", \"border\"],\r\n \"char\": \"🎌\",\r\n \"category\": \"objects\"\r\n },\r\n \"izakaya_lantern\": {\r\n \"keywords\": [\"light\", \"paper\", \"halloween\", \"spooky\"],\r\n \"char\": \"🏮\",\r\n \"category\": \"objects\"\r\n },\r\n \"envelope\": {\r\n \"keywords\": [\"letter\", \"postal\", \"inbox\", \"communication\"],\r\n \"char\": \"✉️\",\r\n \"category\": \"objects\"\r\n },\r\n \"envelope_with_arrow\": {\r\n \"keywords\": [\"email\", \"communication\"],\r\n \"char\": \"📩\",\r\n \"category\": \"objects\"\r\n },\r\n \"incoming_envelope\": {\r\n \"keywords\": [\"email\", \"inbox\"],\r\n \"char\": \"📨\",\r\n \"category\": \"objects\"\r\n },\r\n \"email\": {\r\n \"keywords\": [\"communication\", \"inbox\"],\r\n \"char\": \"📧\",\r\n \"category\": \"objects\"\r\n },\r\n \"love_letter\": {\r\n \"keywords\": [\"email\", \"like\", \"affection\", \"envelope\", \"valentines\"],\r\n \"char\": \"💌\",\r\n \"category\": \"objects\"\r\n },\r\n \"postbox\": {\r\n \"keywords\": [\"email\", \"letter\", \"envelope\"],\r\n \"char\": \"📮\",\r\n \"category\": \"objects\"\r\n },\r\n \"mailbox_closed\": {\r\n \"keywords\": [\"email\", \"communication\", \"inbox\"],\r\n \"char\": \"📪\",\r\n \"category\": \"objects\"\r\n },\r\n \"mailbox\": {\r\n \"keywords\": [\"email\", \"inbox\", \"communication\"],\r\n \"char\": \"📫\",\r\n \"category\": \"objects\"\r\n },\r\n \"mailbox_with_mail\": {\r\n \"keywords\": [\"email\", \"inbox\", \"communication\"],\r\n \"char\": \"📬\",\r\n \"category\": \"objects\"\r\n },\r\n \"mailbox_with_no_mail\": {\r\n \"keywords\": [\"email\", \"inbox\"],\r\n \"char\": \"📭\",\r\n \"category\": \"objects\"\r\n },\r\n \"package\": {\r\n \"keywords\": [\"mail\", \"gift\", \"cardboard\", \"box\", \"moving\"],\r\n \"char\": \"📦\",\r\n \"category\": \"objects\"\r\n },\r\n \"postal_horn\": {\r\n \"keywords\": [\"instrument\", \"music\"],\r\n \"char\": \"📯\",\r\n \"category\": \"objects\"\r\n },\r\n \"inbox_tray\": {\r\n \"keywords\": [\"email\", \"documents\"],\r\n \"char\": \"📥\",\r\n \"category\": \"objects\"\r\n },\r\n \"outbox_tray\": {\r\n \"keywords\": [\"inbox\", \"email\"],\r\n \"char\": \"📤\",\r\n \"category\": \"objects\"\r\n },\r\n \"scroll\": {\r\n \"keywords\": [\"documents\", \"ancient\", \"history\", \"paper\"],\r\n \"char\": \"📜\",\r\n \"category\": \"objects\"\r\n },\r\n \"page_with_curl\": {\r\n \"keywords\": [\"documents\", \"office\", \"paper\"],\r\n \"char\": \"📃\",\r\n \"category\": \"objects\"\r\n },\r\n \"bookmark_tabs\": {\r\n \"keywords\": [\"favorite\", \"save\", \"order\", \"tidy\"],\r\n \"char\": \"📑\",\r\n \"category\": \"objects\"\r\n },\r\n \"bar_chart\": {\r\n \"keywords\": [\"graph\", \"presentation\", \"stats\"],\r\n \"char\": \"📊\",\r\n \"category\": \"objects\"\r\n },\r\n \"chart_with_upwards_trend\": {\r\n \"keywords\": [\"graph\", \"presentation\", \"stats\", \"recovery\", \"business\", \"economics\", \"money\", \"sales\", \"good\", \"success\"],\r\n \"char\": \"📈\",\r\n \"category\": \"objects\"\r\n },\r\n \"chart_with_downwards_trend\": {\r\n \"keywords\": [\"graph\", \"presentation\", \"stats\", \"recession\", \"business\", \"economics\", \"money\", \"sales\", \"bad\", \"failure\"],\r\n \"char\": \"📉\",\r\n \"category\": \"objects\"\r\n },\r\n \"page_facing_up\": {\r\n \"keywords\": [\"documents\", \"office\", \"paper\", \"information\"],\r\n \"char\": \"📄\",\r\n \"category\": \"objects\"\r\n },\r\n \"date\": {\r\n \"keywords\": [\"calendar\", \"schedule\"],\r\n \"char\": \"📅\",\r\n \"category\": \"objects\"\r\n },\r\n \"calendar\": {\r\n \"keywords\": [\"schedule\", \"date\", \"planning\"],\r\n \"char\": \"📆\",\r\n \"category\": \"objects\"\r\n },\r\n \"spiral_calendar_pad\": {\r\n \"keywords\": [\"date\", \"schedule\", \"planning\"],\r\n \"char\": \"🗓\",\r\n \"category\": \"objects\"\r\n },\r\n \"card_index\": {\r\n \"keywords\": [\"business\", \"stationery\"],\r\n \"char\": \"📇\",\r\n \"category\": \"objects\"\r\n },\r\n \"card_file_box\": {\r\n \"keywords\": [\"business\", \"stationery\"],\r\n \"char\": \"🗃\",\r\n \"category\": \"objects\"\r\n },\r\n \"ballot_box_with_ballot\": {\r\n \"keywords\": [\"election\", \"vote\"],\r\n \"char\": \"🗳\",\r\n \"category\": \"objects\"\r\n },\r\n \"file_cabinet\": {\r\n \"keywords\": [\"filing\", \"organizing\"],\r\n \"char\": \"🗄\",\r\n \"category\": \"objects\"\r\n },\r\n \"clipboard\": {\r\n \"keywords\": [\"stationery\", \"documents\"],\r\n \"char\": \"📋\",\r\n \"category\": \"objects\"\r\n },\r\n \"spiral_note_pad\": {\r\n \"keywords\": [\"memo\", \"stationery\"],\r\n \"char\": \"🗒\",\r\n \"category\": \"objects\"\r\n },\r\n \"file_folder\": {\r\n \"keywords\": [\"documents\", \"business\", \"office\"],\r\n \"char\": \"📁\",\r\n \"category\": \"objects\"\r\n },\r\n \"open_file_folder\": {\r\n \"keywords\": [\"documents\", \"load\"],\r\n \"char\": \"📂\",\r\n \"category\": \"objects\"\r\n },\r\n \"card_index_dividers\": {\r\n \"keywords\": [\"organizing\", \"business\", \"stationery\"],\r\n \"char\": \"🗂\",\r\n \"category\": \"objects\"\r\n },\r\n \"rolled_up_newspaper\": {\r\n \"keywords\": [\"press\", \"headline\"],\r\n \"char\": \"🗞\",\r\n \"category\": \"objects\"\r\n },\r\n \"newspaper\": {\r\n \"keywords\": [\"press\", \"headline\"],\r\n \"char\": \"📰\",\r\n \"category\": \"objects\"\r\n },\r\n \"notebook\": {\r\n \"keywords\": [\"stationery\", \"record\", \"notes\", \"paper\", \"study\"],\r\n \"char\": \"📓\",\r\n \"category\": \"objects\"\r\n },\r\n \"closed_book\": {\r\n \"keywords\": [\"read\", \"library\", \"knowledge\", \"textbook\", \"learn\"],\r\n \"char\": \"📕\",\r\n \"category\": \"objects\"\r\n },\r\n \"green_book\": {\r\n \"keywords\": [\"read\", \"library\", \"knowledge\", \"study\"],\r\n \"char\": \"📗\",\r\n \"category\": \"objects\"\r\n },\r\n \"blue_book\": {\r\n \"keywords\": [\"read\", \"library\", \"knowledge\", \"learn\", \"study\"],\r\n \"char\": \"📘\",\r\n \"category\": \"objects\"\r\n },\r\n \"orange_book\": {\r\n \"keywords\": [\"read\", \"library\", \"knowledge\", \"textbook\", \"study\"],\r\n \"char\": \"📙\",\r\n \"category\": \"objects\"\r\n },\r\n \"notebook_with_decorative_cover\": {\r\n \"keywords\": [\"classroom\", \"notes\", \"record\", \"paper\", \"study\"],\r\n \"char\": \"📔\",\r\n \"category\": \"objects\"\r\n },\r\n \"ledger\": {\r\n \"keywords\": [\"notes\", \"paper\"],\r\n \"char\": \"📒\",\r\n \"category\": \"objects\"\r\n },\r\n \"books\": {\r\n \"keywords\": [\"literature\", \"library\", \"study\"],\r\n \"char\": \"📚\",\r\n \"category\": \"objects\"\r\n },\r\n \"book\": {\r\n \"keywords\": [\"open_book\", \"read\", \"library\", \"knowledge\", \"literature\", \"learn\", \"study\"],\r\n \"char\": \"📖\",\r\n \"category\": \"objects\"\r\n },\r\n \"link\": {\r\n \"keywords\": [\"rings\", \"url\"],\r\n \"char\": \"🔗\",\r\n \"category\": \"objects\"\r\n },\r\n \"paperclip\": {\r\n \"keywords\": [\"documents\", \"stationery\"],\r\n \"char\": \"📎\",\r\n \"category\": \"objects\"\r\n },\r\n \"linked_paperclips\": {\r\n \"keywords\": [\"documents\", \"stationery\"],\r\n \"char\": \"🖇\",\r\n \"category\": \"objects\"\r\n },\r\n \"scissors\": {\r\n \"keywords\": [\"stationery\", \"cut\"],\r\n \"char\": \"✂️\",\r\n \"category\": \"objects\"\r\n },\r\n \"triangular_ruler\": {\r\n \"keywords\": [\"stationery\", \"math\", \"architect\", \"sketch\"],\r\n \"char\": \"📐\",\r\n \"category\": \"objects\"\r\n },\r\n \"straight_ruler\": {\r\n \"keywords\": [\"stationery\", \"calculate\", \"length\", \"math\", \"school\", \"drawing\", \"architect\", \"sketch\"],\r\n \"char\": \"📏\",\r\n \"category\": \"objects\"\r\n },\r\n \"pushpin\": {\r\n \"keywords\": [\"stationery\", \"mark\", \"here\"],\r\n \"char\": \"📌\",\r\n \"category\": \"objects\"\r\n },\r\n \"round_pushpin\": {\r\n \"keywords\": [\"stationery\", \"location\", \"map\", \"here\"],\r\n \"char\": \"📍\",\r\n \"category\": \"objects\"\r\n },\r\n \"triangular_flag_on_post\": {\r\n \"keywords\": [\"mark\", \"milestone\", \"place\"],\r\n \"char\": \"🚩\",\r\n \"category\": \"objects\"\r\n },\r\n \"waving_white_flag\": {\r\n \"keywords\": [\"losing\", \"loser\", \"lost\", \"surrender\", \"give up\", \"fail\"],\r\n \"char\": \"🏳\",\r\n \"category\": \"objects\"\r\n },\r\n \"waving_black_flag\": {\r\n \"keywords\": [\"pirate\"],\r\n \"char\": \"🏴\",\r\n \"category\": \"objects\"\r\n },\r\n \"closed_lock_with_key\": {\r\n \"keywords\": [\"security\", \"privacy\"],\r\n \"char\": \"🔐\",\r\n \"category\": \"objects\"\r\n },\r\n \"lock\": {\r\n \"keywords\": [\"security\", \"password\", \"padlock\"],\r\n \"char\": \"🔒\",\r\n \"category\": \"objects\"\r\n },\r\n \"unlock\": {\r\n \"keywords\": [\"privacy\", \"security\"],\r\n \"char\": \"🔓\",\r\n \"category\": \"objects\"\r\n },\r\n \"lock_with_ink_pen\": {\r\n \"keywords\": [\"security\", \"secret\"],\r\n \"char\": \"🔏\",\r\n \"category\": \"objects\"\r\n },\r\n \"lower_left_ballpoint_pen\": {\r\n \"keywords\": [\"stationery\", \"writing\", \"write\"],\r\n \"char\": \"🖊\",\r\n \"category\": \"objects\"\r\n },\r\n \"lower_left_fountain_pen\": {\r\n \"keywords\": [\"stationery\", \"writing\", \"write\"],\r\n \"char\": \"🖋\",\r\n \"category\": \"objects\"\r\n },\r\n \"black_nib\": {\r\n \"keywords\": [\"pen\", \"stationery\", \"writing\", \"write\"],\r\n \"char\": \"✒️\",\r\n \"category\": \"objects\"\r\n },\r\n \"memo\": {\r\n \"keywords\": [\"write\", \"documents\", \"stationery\", \"pencil\", \"paper\", \"writing\", \"legal\", \"exam\", \"quiz\", \"test\", \"study\"],\r\n \"char\": \"📝\",\r\n \"category\": \"objects\"\r\n },\r\n \"pencil2\": {\r\n \"keywords\": [\"stationery\", \"write\", \"paper\", \"writing\", \"school\", \"study\"],\r\n \"char\": \"✏️\",\r\n \"category\": \"objects\"\r\n },\r\n \"lower_left_crayon\": {\r\n \"keywords\": [\"drawing\", \"creativity\"],\r\n \"char\": \"🖍\",\r\n \"category\": \"objects\"\r\n },\r\n \"lower_left_paintbrush\": {\r\n \"keywords\": [\"drawing\", \"creativity\", \"art\"],\r\n \"char\": \"🖌\",\r\n \"category\": \"objects\"\r\n },\r\n \"mag\": {\r\n \"keywords\": [\"search\", \"zoom\", \"find\", \"detective\"],\r\n \"char\": \"🔍\",\r\n \"category\": \"objects\"\r\n },\r\n \"mag_right\": {\r\n \"keywords\": [\"search\", \"zoom\", \"find\", \"detective\"],\r\n \"char\": \"🔎\",\r\n \"category\": \"objects\"\r\n },\r\n \"heart\": {\r\n \"keywords\": [\"love\", \"like\", \"valentines\"],\r\n \"char\": \"❤️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"yellow_heart\": {\r\n \"keywords\": [\"love\", \"like\", \"affection\", \"valentines\"],\r\n \"char\": \"💛\",\r\n \"category\": \"symbols\"\r\n },\r\n \"green_heart\": {\r\n \"keywords\": [\"love\", \"like\", \"affection\", \"valentines\"],\r\n \"char\": \"💚\",\r\n \"category\": \"symbols\"\r\n },\r\n \"blue_heart\": {\r\n \"keywords\": [\"love\", \"like\", \"affection\", \"valentines\"],\r\n \"char\": \"💙\",\r\n \"category\": \"symbols\"\r\n },\r\n \"purple_heart\": {\r\n \"keywords\": [\"love\", \"like\", \"affection\", \"valentines\"],\r\n \"char\": \"💜\",\r\n \"category\": \"symbols\"\r\n },\r\n \"broken_heart\": {\r\n \"keywords\": [\"sad\", \"sorry\", \"break\", \"heart\", \"heartbreak\"],\r\n \"char\": \"💔\",\r\n \"category\": \"symbols\"\r\n },\r\n \"heavy_heart_exclamation_mark_ornament\": {\r\n \"keywords\": [\"decoration\", \"love\"],\r\n \"char\": \"❣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"two_hearts\": {\r\n \"keywords\": [\"love\", \"like\", \"affection\", \"valentines\", \"heart\"],\r\n \"char\": \"💕\",\r\n \"category\": \"symbols\"\r\n },\r\n \"revolving_hearts\": {\r\n \"keywords\": [\"love\", \"like\", \"affection\", \"valentines\"],\r\n \"char\": \"💞\",\r\n \"category\": \"symbols\"\r\n },\r\n \"heartbeat\": {\r\n \"keywords\": [\"love\", \"like\", \"affection\", \"valentines\", \"pink\", \"heart\"],\r\n \"char\": \"💓\",\r\n \"category\": \"symbols\"\r\n },\r\n \"heartpulse\": {\r\n \"keywords\": [\"like\", \"love\", \"affection\", \"valentines\", \"pink\"],\r\n \"char\": \"💗\",\r\n \"category\": \"symbols\"\r\n },\r\n \"sparkling_heart\": {\r\n \"keywords\": [\"love\", \"like\", \"affection\", \"valentines\"],\r\n \"char\": \"💖\",\r\n \"category\": \"symbols\"\r\n },\r\n \"cupid\": {\r\n \"keywords\": [\"love\", \"like\", \"heart\", \"affection\", \"valentines\"],\r\n \"char\": \"💘\",\r\n \"category\": \"symbols\"\r\n },\r\n \"gift_heart\": {\r\n \"keywords\": [\"love\", \"valentines\"],\r\n \"char\": \"💝\",\r\n \"category\": \"symbols\"\r\n },\r\n \"heart_decoration\": {\r\n \"keywords\": [\"purple-square\", \"love\", \"like\"],\r\n \"char\": \"💟\",\r\n \"category\": \"symbols\"\r\n },\r\n \"peace_symbol\": {\r\n \"keywords\": [\"hippie\"],\r\n \"char\": \"☮\",\r\n \"category\": \"symbols\"\r\n },\r\n \"latin_cross\": {\r\n \"keywords\": [\"christianity\"],\r\n \"char\": \"✝\",\r\n \"category\": \"symbols\"\r\n },\r\n \"star_and_crescent\": {\r\n \"keywords\": [\"islam\"],\r\n \"char\": \"☪\",\r\n \"category\": \"symbols\"\r\n },\r\n \"om_symbol\": {\r\n \"keywords\": [\"hinduism\", \"buddhism\", \"sikhism\", \"jainism\"],\r\n \"char\": \"🕉\",\r\n \"category\": \"symbols\"\r\n },\r\n \"wheel_of_dharma\": {\r\n \"keywords\": [\"hinduism\", \"buddhism\", \"sikhism\", \"jainism\"],\r\n \"char\": \"☸\",\r\n \"category\": \"symbols\"\r\n },\r\n \"star_of_david\": {\r\n \"keywords\": [\"judaism\"],\r\n \"char\": \"✡\",\r\n \"category\": \"symbols\"\r\n },\r\n \"six_pointed_star\": {\r\n \"keywords\": [\"purple-square\", \"religion\", \"jewish\", \"hexagram\"],\r\n \"char\": \"🔯\",\r\n \"category\": \"symbols\"\r\n },\r\n \"menorah_with_nine_branches\": {\r\n \"keywords\": [\"hanukkah\", \"candles\", \"jewish\"],\r\n \"char\": \"🕎\",\r\n \"category\": \"symbols\"\r\n },\r\n \"yin_yang\": {\r\n \"keywords\": [\"balance\"],\r\n \"char\": \"☯\",\r\n \"category\": \"symbols\"\r\n },\r\n \"orthodox_cross\": {\r\n \"keywords\": [\"suppedaneum\", \"religion\"],\r\n \"char\": \"☦\",\r\n \"category\": \"symbols\"\r\n },\r\n \"place_of_worship\": {\r\n \"keywords\": [\"religion\", \"church\", \"temple\", \"prayer\"],\r\n \"char\": \"🛐\",\r\n \"category\": \"symbols\"\r\n },\r\n \"ophiuchus\": {\r\n \"keywords\": [\"sign\", \"purple-square\", \"constellation\", \"astrology\"],\r\n \"char\": \"⛎\",\r\n \"category\": \"symbols\"\r\n },\r\n \"aries\": {\r\n \"keywords\": [\"sign\", \"purple-square\", \"zodiac\", \"astrology\"],\r\n \"char\": \"♈\",\r\n \"category\": \"symbols\"\r\n },\r\n \"taurus\": {\r\n \"keywords\": [\"purple-square\", \"sign\", \"zodiac\", \"astrology\"],\r\n \"char\": \"♉\",\r\n \"category\": \"symbols\"\r\n },\r\n \"gemini\": {\r\n \"keywords\": [\"sign\", \"zodiac\", \"purple-square\", \"astrology\"],\r\n \"char\": \"♊\",\r\n \"category\": \"symbols\"\r\n },\r\n \"cancer\": {\r\n \"keywords\": [\"sign\", \"zodiac\", \"purple-square\", \"astrology\"],\r\n \"char\": \"♋\",\r\n \"category\": \"symbols\"\r\n },\r\n \"leo\": {\r\n \"keywords\": [\"sign\", \"purple-square\", \"zodiac\", \"astrology\"],\r\n \"char\": \"♌\",\r\n \"category\": \"symbols\"\r\n },\r\n \"virgo\": {\r\n \"keywords\": [\"sign\", \"zodiac\", \"purple-square\", \"astrology\"],\r\n \"char\": \"♍\",\r\n \"category\": \"symbols\"\r\n },\r\n \"libra\": {\r\n \"keywords\": [\"sign\", \"purple-square\", \"zodiac\", \"astrology\"],\r\n \"char\": \"♎\",\r\n \"category\": \"symbols\"\r\n },\r\n \"scorpius\": {\r\n \"keywords\": [\"sign\", \"zodiac\", \"purple-square\", \"astrology\", \"scorpio\"],\r\n \"char\": \"♏\",\r\n \"category\": \"symbols\"\r\n },\r\n \"sagittarius\": {\r\n \"keywords\": [\"sign\", \"zodiac\", \"purple-square\", \"astrology\"],\r\n \"char\": \"♐\",\r\n \"category\": \"symbols\"\r\n },\r\n \"capricorn\": {\r\n \"keywords\": [\"sign\", \"zodiac\", \"purple-square\", \"astrology\"],\r\n \"char\": \"♑\",\r\n \"category\": \"symbols\"\r\n },\r\n \"aquarius\": {\r\n \"keywords\": [\"sign\", \"purple-square\", \"zodiac\", \"astrology\"],\r\n \"char\": \"♒\",\r\n \"category\": \"symbols\"\r\n },\r\n \"pisces\": {\r\n \"keywords\": [\"purple-square\", \"sign\", \"zodiac\", \"astrology\"],\r\n \"char\": \"♓\",\r\n \"category\": \"symbols\"\r\n },\r\n \"id\": {\r\n \"keywords\": [\"purple-square\", \"words\"],\r\n \"char\": \"🆔\",\r\n \"category\": \"symbols\"\r\n },\r\n \"atom_symbol\": {\r\n \"keywords\": [\"science\"],\r\n \"char\": \"⚛\",\r\n \"category\": \"symbols\"\r\n },\r\n \"u7a7a\": {\r\n \"keywords\": [\"kanji\", \"japanese\", \"chinese\", \"empty\", \"sky\", \"blue-square\"],\r\n \"char\": \"🈳\",\r\n \"category\": \"symbols\"\r\n },\r\n \"u5272\": {\r\n \"keywords\": [\"cut\", \"divide\", \"chinese\", \"kanji\", \"pink-square\"],\r\n \"char\": \"🈹\",\r\n \"category\": \"symbols\"\r\n },\r\n \"radioactive_sign\": {\r\n \"keywords\": [\"nuclear\", \"danger\"],\r\n \"char\": \"☢\",\r\n \"category\": \"symbols\"\r\n },\r\n \"biohazard_sign\": {\r\n \"keywords\": [\"danger\"],\r\n \"char\": \"☣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"mobile_phone_off\": {\r\n \"keywords\": [\"mute\", \"orange-square\", \"silence\", \"quiet\"],\r\n \"char\": \"📴\",\r\n \"category\": \"symbols\"\r\n },\r\n \"vibration_mode\": {\r\n \"keywords\": [\"orange-square\", \"phone\"],\r\n \"char\": \"📳\",\r\n \"category\": \"symbols\"\r\n },\r\n \"u6709\": {\r\n \"keywords\": [\"orange-square\", \"chinese\", \"have\", \"kanji\"],\r\n \"char\": \"🈶\",\r\n \"category\": \"symbols\"\r\n },\r\n \"u7121\": {\r\n \"keywords\": [\"nothing\", \"chinese\", \"kanji\", \"japanese\", \"orange-square\"],\r\n \"char\": \"🈚\",\r\n \"category\": \"symbols\"\r\n },\r\n \"u7533\": {\r\n \"keywords\": [\"chinese\", \"japanese\", \"kanji\", \"orange-square\"],\r\n \"char\": \"🈸\",\r\n \"category\": \"symbols\"\r\n },\r\n \"u55b6\": {\r\n \"keywords\": [\"japanese\", \"opening hours\", \"orange-square\"],\r\n \"char\": \"🈺\",\r\n \"category\": \"symbols\"\r\n },\r\n \"u6708\": {\r\n \"keywords\": [\"chinese\", \"month\", \"moon\", \"japanese\", \"orange-square\", \"kanji\"],\r\n \"char\": \"🈷️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"eight_pointed_black_star\": {\r\n \"keywords\": [\"orange-square\", \"shape\", \"polygon\"],\r\n \"char\": \"✴️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"vs\": {\r\n \"keywords\": [\"words\", \"orange-square\"],\r\n \"char\": \"🆚\",\r\n \"category\": \"symbols\"\r\n },\r\n \"accept\": {\r\n \"keywords\": [\"ok\", \"good\", \"chinese\", \"kanji\", \"agree\", \"yes\", \"orange-circle\"],\r\n \"char\": \"🉑\",\r\n \"category\": \"symbols\"\r\n },\r\n \"white_flower\": {\r\n \"keywords\": [\"japanese\", \"spring\"],\r\n \"char\": \"💮\",\r\n \"category\": \"symbols\"\r\n },\r\n \"ideograph_advantage\": {\r\n \"keywords\": [\"chinese\", \"kanji\", \"obtain\", \"get\", \"circle\"],\r\n \"char\": \"🉐\",\r\n \"category\": \"symbols\"\r\n },\r\n \"secret\": {\r\n \"keywords\": [\"privacy\", \"chinese\", \"sshh\", \"kanji\", \"red-circle\"],\r\n \"char\": \"㊙️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"congratulations\": {\r\n \"keywords\": [\"chinese\", \"kanji\", \"japanese\", \"red-circle\"],\r\n \"char\": \"㊗️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"u5408\": {\r\n \"keywords\": [\"japanese\", \"chinese\", \"join\", \"kanji\", \"red-square\"],\r\n \"char\": \"🈴\",\r\n \"category\": \"symbols\"\r\n },\r\n \"u6e80\": {\r\n \"keywords\": [\"full\", \"chinese\", \"japanese\", \"red-square\", \"kanji\"],\r\n \"char\": \"🈵\",\r\n \"category\": \"symbols\"\r\n },\r\n \"u7981\": {\r\n \"keywords\": [\"kanji\", \"japanese\", \"chinese\", \"forbidden\", \"limit\", \"restricted\", \"red-square\"],\r\n \"char\": \"🈲\",\r\n \"category\": \"symbols\"\r\n },\r\n \"a\": {\r\n \"keywords\": [\"red-square\", \"alphabet\", \"letter\"],\r\n \"char\": \"🅰️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"b\": {\r\n \"keywords\": [\"red-square\", \"alphabet\", \"letter\"],\r\n \"char\": \"🅱️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"ab\": {\r\n \"keywords\": [\"red-square\", \"alphabet\"],\r\n \"char\": \"🆎\",\r\n \"category\": \"symbols\"\r\n },\r\n \"cl\": {\r\n \"keywords\": [\"alphabet\", \"words\", \"red-square\"],\r\n \"char\": \"🆑\",\r\n \"category\": \"symbols\"\r\n },\r\n \"o2\": {\r\n \"keywords\": [\"alphabet\", \"red-square\", \"letter\"],\r\n \"char\": \"🅾️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"sos\": {\r\n \"keywords\": [\"help\", \"red-square\", \"words\", \"emergency\", \"911\"],\r\n \"char\": \"🆘\",\r\n \"category\": \"symbols\"\r\n },\r\n \"no_entry\": {\r\n \"keywords\": [\"limit\", \"security\", \"privacy\", \"bad\", \"denied\", \"stop\", \"circle\"],\r\n \"char\": \"⛔\",\r\n \"category\": \"symbols\"\r\n },\r\n \"name_badge\": {\r\n \"keywords\": [\"fire\", \"forbid\"],\r\n \"char\": \"📛\",\r\n \"category\": \"symbols\"\r\n },\r\n \"no_entry_sign\": {\r\n \"keywords\": [\"forbid\", \"stop\", \"limit\", \"denied\", \"disallow\", \"circle\"],\r\n \"char\": \"🚫\",\r\n \"category\": \"symbols\"\r\n },\r\n \"x\": {\r\n \"keywords\": [\"no\", \"delete\", \"remove\", \"cancel\"],\r\n \"char\": \"❌\",\r\n \"category\": \"symbols\"\r\n },\r\n \"o\": {\r\n \"keywords\": [\"circle\", \"round\"],\r\n \"char\": \"⭕\",\r\n \"category\": \"symbols\"\r\n },\r\n \"anger\": {\r\n \"keywords\": [\"angry\", \"mad\"],\r\n \"char\": \"💢\",\r\n \"category\": \"symbols\"\r\n },\r\n \"hotsprings\": {\r\n \"keywords\": [\"bath\", \"warm\", \"relax\"],\r\n \"char\": \"♨️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"no_pedestrians\": {\r\n \"keywords\": [\"rules\", \"crossing\", \"walking\", \"circle\"],\r\n \"char\": \"🚷\",\r\n \"category\": \"symbols\"\r\n },\r\n \"do_not_litter\": {\r\n \"keywords\": [\"trash\", \"bin\", \"garbage\", \"circle\"],\r\n \"char\": \"🚯\",\r\n \"category\": \"symbols\"\r\n },\r\n \"no_bicycles\": {\r\n \"keywords\": [\"cyclist\", \"prohibited\", \"circle\"],\r\n \"char\": \"🚳\",\r\n \"category\": \"symbols\"\r\n },\r\n \"non-potable_water\": {\r\n \"keywords\": [\"drink\", \"faucet\", \"tap\", \"circle\"],\r\n \"char\": \"🚱\",\r\n \"category\": \"symbols\"\r\n },\r\n \"underage\": {\r\n \"keywords\": [\"18\", \"drink\", \"pub\", \"night\", \"minor\", \"circle\"],\r\n \"char\": \"🔞\",\r\n \"category\": \"symbols\"\r\n },\r\n \"no_mobile_phones\": {\r\n \"keywords\": [\"iphone\", \"mute\", \"circle\"],\r\n \"char\": \"📵\",\r\n \"category\": \"symbols\"\r\n },\r\n \"exclamation\": {\r\n \"keywords\": [\"heavy_exclamation_mark\", \"danger\", \"surprise\", \"punctuation\", \"wow\", \"warning\"],\r\n \"char\": \"❗\",\r\n \"category\": \"symbols\"\r\n },\r\n \"grey_exclamation\": {\r\n \"keywords\": [\"surprise\", \"punctuation\", \"gray\", \"wow\", \"warning\"],\r\n \"char\": \"❕\",\r\n \"category\": \"symbols\"\r\n },\r\n \"question\": {\r\n \"keywords\": [\"doubt\", \"confused\"],\r\n \"char\": \"❓\",\r\n \"category\": \"symbols\"\r\n },\r\n \"grey_question\": {\r\n \"keywords\": [\"doubts\", \"gray\", \"huh\", \"confused\"],\r\n \"char\": \"❔\",\r\n \"category\": \"symbols\"\r\n },\r\n \"bangbang\": {\r\n \"keywords\": [\"exclamation\", \"surprise\"],\r\n \"char\": \"‼️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"interrobang\": {\r\n \"keywords\": [\"wat\", \"punctuation\", \"surprise\"],\r\n \"char\": \"⁉️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"100\": {\r\n \"keywords\": [\"score\", \"perfect\", \"numbers\", \"century\", \"exam\", \"quiz\", \"test\", \"pass\", \"hundred\"],\r\n \"char\": \"💯\",\r\n \"category\": \"symbols\"\r\n },\r\n \"low_brightness\": {\r\n \"keywords\": [\"sun\", \"afternoon\", \"warm\", \"summer\"],\r\n \"char\": \"🔅\",\r\n \"category\": \"symbols\"\r\n },\r\n \"high_brightness\": {\r\n \"keywords\": [\"sun\", \"light\"],\r\n \"char\": \"🔆\",\r\n \"category\": \"symbols\"\r\n },\r\n \"trident\": {\r\n \"keywords\": [\"weapon\", \"spear\"],\r\n \"char\": \"🔱\",\r\n \"category\": \"symbols\"\r\n },\r\n \"fleur_de_lis\": {\r\n \"keywords\": [\"decorative\", \"scout\"],\r\n \"char\": \"⚜\",\r\n \"category\": \"symbols\"\r\n },\r\n \"part_alternation_mark\": {\r\n \"keywords\": [\"graph\", \"presentation\", \"stats\", \"business\", \"economics\", \"bad\"],\r\n \"char\": \"〽️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"warning\": {\r\n \"keywords\": [\"exclamation\", \"wip\", \"alert\", \"error\", \"problem\", \"issue\"],\r\n \"char\": \"⚠️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"children_crossing\": {\r\n \"keywords\": [\"school\", \"warning\", \"danger\", \"sign\", \"driving\", \"yellow-diamond\"],\r\n \"char\": \"🚸\",\r\n \"category\": \"symbols\"\r\n },\r\n \"beginner\": {\r\n \"keywords\": [\"badge\", \"shield\"],\r\n \"char\": \"🔰\",\r\n \"category\": \"symbols\"\r\n },\r\n \"recycle\": {\r\n \"keywords\": [\"arrow\", \"environment\", \"garbage\", \"trash\"],\r\n \"char\": \"♻️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"u6307\": {\r\n \"keywords\": [\"chinese\", \"point\", \"green-square\", \"kanji\"],\r\n \"char\": \"🈯\",\r\n \"category\": \"symbols\"\r\n },\r\n \"chart\": {\r\n \"keywords\": [\"green-square\", \"graph\", \"presentation\", \"stats\"],\r\n \"char\": \"💹\",\r\n \"category\": \"symbols\"\r\n },\r\n \"sparkle\": {\r\n \"keywords\": [\"stars\", \"green-square\", \"awesome\", \"good\", \"fireworks\"],\r\n \"char\": \"❇️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"eight_spoked_asterisk\": {\r\n \"keywords\": [\"star\", \"sparkle\", \"green-square\"],\r\n \"char\": \"✳️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"negative_squared_cross_mark\": {\r\n \"keywords\": [\"x\", \"green-square\", \"no\", \"deny\"],\r\n \"char\": \"❎\",\r\n \"category\": \"symbols\"\r\n },\r\n \"white_check_mark\": {\r\n \"keywords\": [\"green-square\", \"ok\", \"agree\", \"vote\", \"election\", \"answer\"],\r\n \"char\": \"✅\",\r\n \"category\": \"symbols\"\r\n },\r\n \"diamond_shape_with_a_dot_inside\": {\r\n \"keywords\": [\"jewel\", \"blue\", \"gem\", \"crystal\", \"fancy\"],\r\n \"char\": \"💠\",\r\n \"category\": \"symbols\"\r\n },\r\n \"cyclone\": {\r\n \"keywords\": [\"weather\", \"swirl\", \"blue\", \"cloud\", \"vortex\", \"spiral\", \"whirlpool\", \"spin\"],\r\n \"char\": \"🌀\",\r\n \"category\": \"symbols\"\r\n },\r\n \"loop\": {\r\n \"keywords\": [\"tape\", \"cassette\"],\r\n \"char\": \"➿\",\r\n \"category\": \"symbols\"\r\n },\r\n \"globe_with_meridians\": {\r\n \"keywords\": [\"earth\", \"international\", \"world\", \"internet\", \"interweb\", \"i18n\"],\r\n \"char\": \"🌐\",\r\n \"category\": \"symbols\"\r\n },\r\n \"m\": {\r\n \"keywords\": [\"alphabet\", \"blue-circle\", \"letter\"],\r\n \"char\": \"Ⓜ️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"atm\": {\r\n \"keywords\": [\"money\", \"sales\", \"cash\", \"blue-square\", \"payment\", \"bank\"],\r\n \"char\": \"🏧\",\r\n \"category\": \"symbols\"\r\n },\r\n \"sa\": {\r\n \"keywords\": [\"japanese\", \"blue-square\", \"katakana\"],\r\n \"char\": \"🈂️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"passport_control\": {\r\n \"keywords\": [\"custom\", \"blue-square\"],\r\n \"char\": \"🛂\",\r\n \"category\": \"symbols\"\r\n },\r\n \"customs\": {\r\n \"keywords\": [\"passport\", \"border\", \"blue-square\"],\r\n \"char\": \"🛃\",\r\n \"category\": \"symbols\"\r\n },\r\n \"baggage_claim\": {\r\n \"keywords\": [\"blue-square\", \"airport\", \"transport\"],\r\n \"char\": \"🛄\",\r\n \"category\": \"symbols\"\r\n },\r\n \"left_luggage\": {\r\n \"keywords\": [\"blue-square\", \"travel\"],\r\n \"char\": \"🛅\",\r\n \"category\": \"symbols\"\r\n },\r\n \"wheelchair\": {\r\n \"keywords\": [\"blue-square\", \"disabled\", \"a11y\", \"accessibility\"],\r\n \"char\": \"♿\",\r\n \"category\": \"symbols\"\r\n },\r\n \"no_smoking\": {\r\n \"keywords\": [\"cigarette\", \"blue-square\", \"smell\", \"smoke\"],\r\n \"char\": \"🚭\",\r\n \"category\": \"symbols\"\r\n },\r\n \"wc\": {\r\n \"keywords\": [\"toilet\", \"restroom\", \"blue-square\"],\r\n \"char\": \"🚾\",\r\n \"category\": \"symbols\"\r\n },\r\n \"parking\": {\r\n \"keywords\": [\"cars\", \"blue-square\", \"alphabet\", \"letter\"],\r\n \"char\": \"🅿️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"potable_water\": {\r\n \"keywords\": [\"blue-square\", \"liquid\", \"restroom\", \"cleaning\", \"faucet\"],\r\n \"char\": \"🚰\",\r\n \"category\": \"symbols\"\r\n },\r\n \"mens\": {\r\n \"keywords\": [\"toilet\", \"restroom\", \"wc\", \"blue-square\", \"gender\", \"male\"],\r\n \"char\": \"🚹\",\r\n \"category\": \"symbols\"\r\n },\r\n \"womens\": {\r\n \"keywords\": [\"purple-square\", \"woman\", \"female\", \"toilet\", \"loo\", \"restroom\", \"gender\"],\r\n \"char\": \"🚺\",\r\n \"category\": \"symbols\"\r\n },\r\n \"baby_symbol\": {\r\n \"keywords\": [\"orange-square\", \"child\"],\r\n \"char\": \"🚼\",\r\n \"category\": \"symbols\"\r\n },\r\n \"restroom\": {\r\n \"keywords\": [\"blue-square\", \"toilet\", \"refresh\", \"wc\", \"gender\"],\r\n \"char\": \"🚻\",\r\n \"category\": \"symbols\"\r\n },\r\n \"put_litter_in_its_place\": {\r\n \"keywords\": [\"blue-square\", \"sign\", \"human\", \"info\"],\r\n \"char\": \"🚮\",\r\n \"category\": \"symbols\"\r\n },\r\n \"cinema\": {\r\n \"keywords\": [\"blue-square\", \"record\", \"film\", \"movie\", \"curtain\", \"stage\", \"theater\"],\r\n \"char\": \"🎦\",\r\n \"category\": \"symbols\"\r\n },\r\n \"signal_strength\": {\r\n \"keywords\": [\"blue-square\", \"reception\", \"phone\", \"internet\", \"connection\", \"wifi\", \"bluetooth\", \"bars\"],\r\n \"char\": \"📶\",\r\n \"category\": \"symbols\"\r\n },\r\n \"koko\": {\r\n \"keywords\": [\"blue-square\", \"here\", \"katakana\", \"japanese\", \"destination\"],\r\n \"char\": \"🈁\",\r\n \"category\": \"symbols\"\r\n },\r\n \"ng\": {\r\n \"keywords\": [\"blue-square\", \"words\", \"shape\", \"icon\"],\r\n \"char\": \"🆖\",\r\n \"category\": \"symbols\"\r\n },\r\n \"ok\": {\r\n \"keywords\": [\"good\", \"agree\", \"yes\", \"blue-square\"],\r\n \"char\": \"🆗\",\r\n \"category\": \"symbols\"\r\n },\r\n \"up\": {\r\n \"keywords\": [\"blue-square\", \"above\", \"high\"],\r\n \"char\": \"🆙\",\r\n \"category\": \"symbols\"\r\n },\r\n \"cool\": {\r\n \"keywords\": [\"words\", \"blue-square\"],\r\n \"char\": \"🆒\",\r\n \"category\": \"symbols\"\r\n },\r\n \"new\": {\r\n \"keywords\": [\"blue-square\", \"words\", \"start\"],\r\n \"char\": \"🆕\",\r\n \"category\": \"symbols\"\r\n },\r\n \"free\": {\r\n \"keywords\": [\"blue-square\", \"words\"],\r\n \"char\": \"🆓\",\r\n \"category\": \"symbols\"\r\n },\r\n \"zero\": {\r\n \"keywords\": [\"0\", \"numbers\", \"blue-square\", \"null\"],\r\n \"char\": \"0️⃣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"one\": {\r\n \"keywords\": [\"blue-square\", \"numbers\", \"1\"],\r\n \"char\": \"1️⃣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"two\": {\r\n \"keywords\": [\"numbers\", \"2\", \"prime\", \"blue-square\"],\r\n \"char\": \"2️⃣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"three\": {\r\n \"keywords\": [\"3\", \"numbers\", \"prime\", \"blue-square\"],\r\n \"char\": \"3️⃣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"four\": {\r\n \"keywords\": [\"4\", \"numbers\", \"blue-square\"],\r\n \"char\": \"4️⃣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"five\": {\r\n \"keywords\": [\"5\", \"numbers\", \"blue-square\", \"prime\"],\r\n \"char\": \"5️⃣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"six\": {\r\n \"keywords\": [\"6\", \"numbers\", \"blue-square\"],\r\n \"char\": \"6️⃣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"seven\": {\r\n \"keywords\": [\"7\", \"numbers\", \"blue-square\", \"prime\"],\r\n \"char\": \"7️⃣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"eight\": {\r\n \"keywords\": [\"8\", \"blue-square\", \"numbers\"],\r\n \"char\": \"8️⃣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"nine\": {\r\n \"keywords\": [\"blue-square\", \"numbers\", \"9\"],\r\n \"char\": \"9️⃣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"keycap_ten\": {\r\n \"keywords\": [\"numbers\", \"10\", \"blue-square\"],\r\n \"char\": \"🔟\",\r\n \"category\": \"symbols\"\r\n },\r\n \"keycap_star\": {\r\n \"keywords\": [\"asterisk\"],\r\n \"char\": \"*⃣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"1234\": {\r\n \"keywords\": [\"numbers\", \"blue-square\"],\r\n \"char\": \"🔢\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_forward\": {\r\n \"keywords\": [\"blue-square\", \"right\", \"direction\", \"play\"],\r\n \"char\": \"▶️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"double_vertical_bar\": {\r\n \"keywords\": [\"pause\", \"blue-square\"],\r\n \"char\": \"⏸\",\r\n \"category\": \"symbols\"\r\n },\r\n \"black_right_pointing_triangle_with_double_vertical_bar\": {\r\n \"keywords\": [\"forward\", \"next\", \"blue-square\"],\r\n \"char\": \"⏭\",\r\n \"category\": \"symbols\"\r\n },\r\n \"black_square_for_stop\": {\r\n \"keywords\": [\"blue-square\"],\r\n \"char\": \"⏹\",\r\n \"category\": \"symbols\"\r\n },\r\n \"black_circle_for_record\": {\r\n \"keywords\": [\"blue-square\"],\r\n \"char\": \"⏺\",\r\n \"category\": \"symbols\"\r\n },\r\n \"black_right_pointing_double_triangle_with_vertical_bar\": {\r\n \"keywords\": [\"blue-square\", \"play\", \"pause\"],\r\n \"char\": \"⏯\",\r\n \"category\": \"symbols\"\r\n },\r\n \"black_left_pointing_double_triangle_with_vertical_bar\": {\r\n \"keywords\": [\"backward\"],\r\n \"char\": \"⏮\",\r\n \"category\": \"symbols\"\r\n },\r\n \"fast_forward\": {\r\n \"keywords\": [\"blue-square\", \"play\", \"speed\", \"continue\"],\r\n \"char\": \"⏩\",\r\n \"category\": \"symbols\"\r\n },\r\n \"rewind\": {\r\n \"keywords\": [\"play\", \"blue-square\"],\r\n \"char\": \"⏪\",\r\n \"category\": \"symbols\"\r\n },\r\n \"twisted_rightwards_arrows\": {\r\n \"keywords\": [\"blue-square\", \"shuffle\", \"music\", \"random\"],\r\n \"char\": \"🔀\",\r\n \"category\": \"symbols\"\r\n },\r\n \"repeat\": {\r\n \"keywords\": [\"loop\", \"record\"],\r\n \"char\": \"🔁\",\r\n \"category\": \"symbols\"\r\n },\r\n \"repeat_one\": {\r\n \"keywords\": [\"blue-square\", \"loop\"],\r\n \"char\": \"🔂\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_backward\": {\r\n \"keywords\": [\"blue-square\", \"left\", \"direction\"],\r\n \"char\": \"◀️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_up_small\": {\r\n \"keywords\": [\"blue-square\", \"triangle\", \"direction\", \"point\", \"forward\", \"top\"],\r\n \"char\": \"🔼\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_down_small\": {\r\n \"keywords\": [\"blue-square\", \"direction\", \"bottom\"],\r\n \"char\": \"🔽\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_double_up\": {\r\n \"keywords\": [\"blue-square\", \"direction\", \"top\"],\r\n \"char\": \"⏫\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_double_down\": {\r\n \"keywords\": [\"blue-square\", \"direction\", \"bottom\"],\r\n \"char\": \"⏬\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_right\": {\r\n \"keywords\": [\"blue-square\", \"next\"],\r\n \"char\": \"➡️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_left\": {\r\n \"keywords\": [\"blue-square\", \"previous\", \"back\"],\r\n \"char\": \"⬅️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_up\": {\r\n \"keywords\": [\"blue-square\", \"continue\", \"top\", \"direction\"],\r\n \"char\": \"⬆️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_down\": {\r\n \"keywords\": [\"blue-square\", \"direction\", \"bottom\"],\r\n \"char\": \"⬇️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_upper_right\": {\r\n \"keywords\": [\"blue-square\", \"point\", \"direction\", \"diagonal\", \"northeast\"],\r\n \"char\": \"↗️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_lower_right\": {\r\n \"keywords\": [\"blue-square\", \"direction\", \"diagonal\", \"southeast\"],\r\n \"char\": \"↘️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_lower_left\": {\r\n \"keywords\": [\"blue-square\", \"direction\", \"diagonal\", \"southwest\"],\r\n \"char\": \"↙️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_upper_left\": {\r\n \"keywords\": [\"blue-square\", \"point\", \"direction\", \"diagonal\", \"northwest\"],\r\n \"char\": \"↖️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_up_down\": {\r\n \"keywords\": [\"blue-square\", \"direction\", \"way\", \"vertical\"],\r\n \"char\": \"↕️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"left_right_arrow\": {\r\n \"keywords\": [\"shape\", \"direction\", \"horizontal\", \"sideways\"],\r\n \"char\": \"↔️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrows_counterclockwise\": {\r\n \"keywords\": [\"blue-square\", \"sync\", \"cycle\"],\r\n \"char\": \"🔄\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_right_hook\": {\r\n \"keywords\": [\"blue-square\", \"return\", \"rotate\", \"direction\"],\r\n \"char\": \"↪️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"leftwards_arrow_with_hook\": {\r\n \"keywords\": [\"back\", \"return\", \"blue-square\", \"undo\", \"enter\"],\r\n \"char\": \"↩️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_heading_up\": {\r\n \"keywords\": [\"blue-square\", \"direction\", \"top\"],\r\n \"char\": \"⤴️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_heading_down\": {\r\n \"keywords\": [\"blue-square\", \"direction\", \"bottom\"],\r\n \"char\": \"⤵️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"hash\": {\r\n \"keywords\": [\"symbol\", \"blue-square\", \"twitter\"],\r\n \"char\": \"#️⃣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"information_source\": {\r\n \"keywords\": [\"blue-square\", \"alphabet\", \"letter\"],\r\n \"char\": \"ℹ️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"abc\": {\r\n \"keywords\": [\"blue-square\", \"alphabet\"],\r\n \"char\": \"🔤\",\r\n \"category\": \"symbols\"\r\n },\r\n \"abcd\": {\r\n \"keywords\": [\"blue-square\", \"alphabet\"],\r\n \"char\": \"🔡\",\r\n \"category\": \"symbols\"\r\n },\r\n \"capital_abcd\": {\r\n \"keywords\": [\"alphabet\", \"words\", \"blue-square\"],\r\n \"char\": \"🔠\",\r\n \"category\": \"symbols\"\r\n },\r\n \"symbols\": {\r\n \"keywords\": [\"blue-square\", \"music\", \"note\", \"ampersand\", \"percent\", \"glyphs\", \"characters\"],\r\n \"char\": \"🔣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"musical_note\": {\r\n \"keywords\": [\"score\", \"tone\", \"sound\"],\r\n \"char\": \"🎵\",\r\n \"category\": \"symbols\"\r\n },\r\n \"notes\": {\r\n \"keywords\": [\"music\", \"score\"],\r\n \"char\": \"🎶\",\r\n \"category\": \"symbols\"\r\n },\r\n \"wavy_dash\": {\r\n \"keywords\": [\"draw\", \"line\", \"moustache\", \"mustache\", \"squiggle\", \"scribble\"],\r\n \"char\": \"〰️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"curly_loop\": {\r\n \"keywords\": [\"scribble\", \"draw\", \"shape\", \"squiggle\"],\r\n \"char\": \"➰\",\r\n \"category\": \"symbols\"\r\n },\r\n \"heavy_check_mark\": {\r\n \"keywords\": [\"ok\", \"nike\", \"answer\", \"yes\", \"tick\"],\r\n \"char\": \"✔️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrows_clockwise\": {\r\n \"keywords\": [\"sync\", \"cycle\", \"round\", \"repeat\"],\r\n \"char\": \"🔃\",\r\n \"category\": \"symbols\"\r\n },\r\n \"heavy_plus_sign\": {\r\n \"keywords\": [\"math\", \"calculation\", \"addition\", \"more\", \"increase\"],\r\n \"char\": \"➕\",\r\n \"category\": \"symbols\"\r\n },\r\n \"heavy_minus_sign\": {\r\n \"keywords\": [\"math\", \"calculation\", \"subtract\", \"less\"],\r\n \"char\": \"➖\",\r\n \"category\": \"symbols\"\r\n },\r\n \"heavy_division_sign\": {\r\n \"keywords\": [\"divide\", \"math\", \"calculation\"],\r\n \"char\": \"➗\",\r\n \"category\": \"symbols\"\r\n },\r\n \"heavy_multiplication_x\": {\r\n \"keywords\": [\"math\", \"calculation\"],\r\n \"char\": \"✖️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"heavy_dollar_sign\": {\r\n \"keywords\": [\"money\", \"sales\", \"payment\", \"currency\", \"buck\"],\r\n \"char\": \"💲\",\r\n \"category\": \"symbols\"\r\n },\r\n \"currency_exchange\": {\r\n \"keywords\": [\"money\", \"sales\", \"dollar\", \"travel\"],\r\n \"char\": \"💱\",\r\n \"category\": \"symbols\"\r\n },\r\n \"copyright\": {\r\n \"keywords\": [\"ip\", \"license\", \"circle\", \"law\", \"legal\"],\r\n \"char\": \"©️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"registered\": {\r\n \"keywords\": [\"alphabet\", \"circle\"],\r\n \"char\": \"®️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"tm\": {\r\n \"keywords\": [\"trademark\", \"brand\", \"law\", \"legal\"],\r\n \"char\": \"™️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"end\": {\r\n \"keywords\": [\"words\", \"arrow\"],\r\n \"char\": \"🔚\",\r\n \"category\": \"symbols\"\r\n },\r\n \"back\": {\r\n \"keywords\": [\"arrow\", \"words\", \"return\"],\r\n \"char\": \"🔙\",\r\n \"category\": \"symbols\"\r\n },\r\n \"on\": {\r\n \"keywords\": [\"arrow\", \"words\"],\r\n \"char\": \"🔛\",\r\n \"category\": \"symbols\"\r\n },\r\n \"top\": {\r\n \"keywords\": [\"words\", \"blue-square\"],\r\n \"char\": \"🔝\",\r\n \"category\": \"symbols\"\r\n },\r\n \"soon\": {\r\n \"keywords\": [\"arrow\", \"words\"],\r\n \"char\": \"🔜\",\r\n \"category\": \"symbols\"\r\n },\r\n \"ballot_box_with_check\": {\r\n \"keywords\": [\"ok\", \"agree\", \"confirm\", \"black-square\", \"vote\", \"election\", \"yes\"],\r\n \"char\": \"☑️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"radio_button\": {\r\n \"keywords\": [\"input\", \"old\", \"music\", \"circle\"],\r\n \"char\": \"🔘\",\r\n \"category\": \"symbols\"\r\n },\r\n \"white_circle\": {\r\n \"keywords\": [\"shape\", \"round\"],\r\n \"char\": \"⚪\",\r\n \"category\": \"symbols\"\r\n },\r\n \"black_circle\": {\r\n \"keywords\": [\"shape\", \"button\", \"round\"],\r\n \"char\": \"⚫\",\r\n \"category\": \"symbols\"\r\n },\r\n \"red_circle\": {\r\n \"keywords\": [\"shape\", \"error\", \"danger\"],\r\n \"char\": \"🔴\",\r\n \"category\": \"symbols\"\r\n },\r\n \"large_blue_circle\": {\r\n \"keywords\": [\"shape\", \"icon\", \"button\"],\r\n \"char\": \"🔵\",\r\n \"category\": \"symbols\"\r\n },\r\n \"small_orange_diamond\": {\r\n \"keywords\": [\"shape\", \"jewel\", \"gem\"],\r\n \"char\": \"🔸\",\r\n \"category\": \"symbols\"\r\n },\r\n \"small_blue_diamond\": {\r\n \"keywords\": [\"shape\", \"jewel\", \"gem\"],\r\n \"char\": \"🔹\",\r\n \"category\": \"symbols\"\r\n },\r\n \"large_orange_diamond\": {\r\n \"keywords\": [\"shape\", \"jewel\", \"gem\"],\r\n \"char\": \"🔶\",\r\n \"category\": \"symbols\"\r\n },\r\n \"large_blue_diamond\": {\r\n \"keywords\": [\"shape\", \"jewel\", \"gem\"],\r\n \"char\": \"🔷\",\r\n \"category\": \"symbols\"\r\n },\r\n \"small_red_triangle\": {\r\n \"keywords\": [\"shape\", \"direction\", \"up\", \"top\"],\r\n \"char\": \"🔺\",\r\n \"category\": \"symbols\"\r\n },\r\n \"black_small_square\": {\r\n \"keywords\": [\"shape\", \"icon\"],\r\n \"char\": \"▪️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"white_small_square\": {\r\n \"keywords\": [\"shape\", \"icon\"],\r\n \"char\": \"▫️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"black_large_square\": {\r\n \"keywords\": [\"shape\", \"icon\", \"button\"],\r\n \"char\": \"⬛\",\r\n \"category\": \"symbols\"\r\n },\r\n \"white_large_square\": {\r\n \"keywords\": [\"shape\", \"icon\", \"stone\", \"button\"],\r\n \"char\": \"⬜\",\r\n \"category\": \"symbols\"\r\n },\r\n \"small_red_triangle_down\": {\r\n \"keywords\": [\"shape\", \"direction\", \"bottom\"],\r\n \"char\": \"🔻\",\r\n \"category\": \"symbols\"\r\n },\r\n \"black_medium_square\": {\r\n \"keywords\": [\"shape\", \"button\", \"icon\"],\r\n \"char\": \"◼️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"white_medium_square\": {\r\n \"keywords\": [\"shape\", \"stone\", \"icon\"],\r\n \"char\": \"◻️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"black_medium_small_square\": {\r\n \"keywords\": [\"icon\", \"shape\", \"button\"],\r\n \"char\": \"◾\",\r\n \"category\": \"symbols\"\r\n },\r\n \"white_medium_small_square\": {\r\n \"keywords\": [\"shape\", \"stone\", \"icon\", \"button\"],\r\n \"char\": \"◽\",\r\n \"category\": \"symbols\"\r\n },\r\n \"black_square_button\": {\r\n \"keywords\": [\"shape\", \"input\", \"frame\"],\r\n \"char\": \"🔲\",\r\n \"category\": \"symbols\"\r\n },\r\n \"white_square_button\": {\r\n \"keywords\": [\"shape\", \"input\"],\r\n \"char\": \"🔳\",\r\n \"category\": \"symbols\"\r\n },\r\n \"speaker\": {\r\n \"keywords\": [\"sound\", \"volume\", \"silence\", \"broadcast\"],\r\n \"char\": \"🔈\",\r\n \"category\": \"symbols\"\r\n },\r\n \"sound\": {\r\n \"keywords\": [\"volume\", \"speaker\", \"broadcast\"],\r\n \"char\": \"🔉\",\r\n \"category\": \"symbols\"\r\n },\r\n \"loud_sound\": {\r\n \"keywords\": [\"volume\", \"noise\", \"noisy\", \"speaker\", \"broadcast\"],\r\n \"char\": \"🔊\",\r\n \"category\": \"symbols\"\r\n },\r\n \"mute\": {\r\n \"keywords\": [\"sound\", \"volume\", \"silence\", \"quiet\"],\r\n \"char\": \"🔇\",\r\n \"category\": \"symbols\"\r\n },\r\n \"mega\": {\r\n \"keywords\": [\"sound\", \"speaker\", \"volume\"],\r\n \"char\": \"📣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"loudspeaker\": {\r\n \"keywords\": [\"volume\", \"sound\"],\r\n \"char\": \"📢\",\r\n \"category\": \"symbols\"\r\n },\r\n \"bell\": {\r\n \"keywords\": [\"sound\", \"notification\", \"christmas\", \"xmas\", \"chime\"],\r\n \"char\": \"🔔\",\r\n \"category\": \"symbols\"\r\n },\r\n \"no_bell\": {\r\n \"keywords\": [\"sound\", \"volume\", \"mute\", \"quiet\", \"silent\"],\r\n \"char\": \"🔕\",\r\n \"category\": \"symbols\"\r\n },\r\n \"black_joker\": {\r\n \"keywords\": [\"poker\", \"cards\", \"game\", \"play\", \"magic\"],\r\n \"char\": \"🃏\",\r\n \"category\": \"symbols\"\r\n },\r\n \"mahjong\": {\r\n \"keywords\": [\"game\", \"play\", \"chinese\", \"kanji\"],\r\n \"char\": \"🀄\",\r\n \"category\": \"symbols\"\r\n },\r\n \"spades\": {\r\n \"keywords\": [\"poker\", \"cards\", \"suits\", \"magic\"],\r\n \"char\": \"♠️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clubs\": {\r\n \"keywords\": [\"poker\", \"cards\", \"magic\", \"suits\"],\r\n \"char\": \"♣️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"hearts\": {\r\n \"keywords\": [\"poker\", \"cards\", \"magic\", \"suits\"],\r\n \"char\": \"♥️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"diamonds\": {\r\n \"keywords\": [\"poker\", \"cards\", \"magic\", \"suits\"],\r\n \"char\": \"♦️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"flower_playing_cards\": {\r\n \"keywords\": [\"game\", \"sunset\", \"red\"],\r\n \"char\": \"🎴\",\r\n \"category\": \"symbols\"\r\n },\r\n \"thought_balloon\": {\r\n \"keywords\": [\"bubble\", \"cloud\", \"speech\", \"thinking\"],\r\n \"char\": \"💭\",\r\n \"category\": \"symbols\"\r\n },\r\n \"right_anger_bubble\": {\r\n \"keywords\": [\"caption\", \"speech\", \"thinking\", \"mad\"],\r\n \"char\": \"🗯\",\r\n \"category\": \"symbols\"\r\n },\r\n \"speech_balloon\": {\r\n \"keywords\": [\"bubble\", \"words\", \"message\", \"talk\", \"chatting\"],\r\n \"char\": \"💬\",\r\n \"category\": \"symbols\"\r\n },\r\n \"left_speech_bubble\": {\r\n \"keywords\": [\"words\", \"message\", \"talk\", \"chatting\"],\r\n \"char\": \"🗨\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock1\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕐\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock2\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕑\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock3\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕒\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock4\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕓\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock5\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕔\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock6\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\", \"dawn\", \"dusk\"],\r\n \"char\": \"🕕\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock7\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕖\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock8\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕗\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock9\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕘\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock10\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕙\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock11\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕚\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock12\": {\r\n \"keywords\": [\"time\", \"noon\", \"midnight\", \"midday\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕛\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock130\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕜\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock230\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕝\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock330\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕞\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock430\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕟\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock530\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕠\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock630\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕡\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock730\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕢\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock830\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock930\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕤\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock1030\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕥\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock1130\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕦\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock1230\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕧\",\r\n \"category\": \"symbols\"\r\n },\r\n \"af\": {\r\n \"keywords\": [\"afghanistan\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇫\",\r\n \"category\": \"flags\"\r\n },\r\n \"ax\": {\r\n \"keywords\": [\"Åland\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇽\",\r\n \"category\": \"flags\"\r\n },\r\n \"al\": {\r\n \"keywords\": [\"albania\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇱\",\r\n \"category\": \"flags\"\r\n },\r\n \"dz\": {\r\n \"keywords\": [\"algeria\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇩🇿\",\r\n \"category\": \"flags\"\r\n },\r\n \"as\": {\r\n \"keywords\": [\"american\", \"samoa\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇸\",\r\n \"category\": \"flags\"\r\n },\r\n \"ad\": {\r\n \"keywords\": [\"andorra\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇩\",\r\n \"category\": \"flags\"\r\n },\r\n \"ao\": {\r\n \"keywords\": [\"angola\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇴\",\r\n \"category\": \"flags\"\r\n },\r\n \"ai\": {\r\n \"keywords\": [\"anguilla\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇮\",\r\n \"category\": \"flags\"\r\n },\r\n \"aq\": {\r\n \"keywords\": [\"antarctica\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇶\",\r\n \"category\": \"flags\"\r\n },\r\n \"ag\": {\r\n \"keywords\": [\"antigua\", \"barbuda\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇬\",\r\n \"category\": \"flags\"\r\n },\r\n \"ar\": {\r\n \"keywords\": [\"argentina\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"am\": {\r\n \"keywords\": [\"armenia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"aw\": {\r\n \"keywords\": [\"aruba\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇼\",\r\n \"category\": \"flags\"\r\n },\r\n \"au\": {\r\n \"keywords\": [\"australia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇺\",\r\n \"category\": \"flags\"\r\n },\r\n \"at\": {\r\n \"keywords\": [\"austria\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇹\",\r\n \"category\": \"flags\"\r\n },\r\n \"az\": {\r\n \"keywords\": [\"azerbaijan\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇿\",\r\n \"category\": \"flags\"\r\n },\r\n \"bs\": {\r\n \"keywords\": [\"bahamas\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇸\",\r\n \"category\": \"flags\"\r\n },\r\n \"bh\": {\r\n \"keywords\": [\"bahrain\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇭\",\r\n \"category\": \"flags\"\r\n },\r\n \"bd\": {\r\n \"keywords\": [\"bangladesh\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇩\",\r\n \"category\": \"flags\"\r\n },\r\n \"bb\": {\r\n \"keywords\": [\"barbados\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇧\",\r\n \"category\": \"flags\"\r\n },\r\n \"by\": {\r\n \"keywords\": [\"belarus\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇾\",\r\n \"category\": \"flags\"\r\n },\r\n \"be\": {\r\n \"keywords\": [\"belgium\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"bz\": {\r\n \"keywords\": [\"belize\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇿\",\r\n \"category\": \"flags\"\r\n },\r\n \"bj\": {\r\n \"keywords\": [\"benin\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇯\",\r\n \"category\": \"flags\"\r\n },\r\n \"bm\": {\r\n \"keywords\": [\"bermuda\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"bt\": {\r\n \"keywords\": [\"bhutan\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇹\",\r\n \"category\": \"flags\"\r\n },\r\n \"bo\": {\r\n \"keywords\": [\"bolivia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇴\",\r\n \"category\": \"flags\"\r\n },\r\n \"bq\": {\r\n \"keywords\": [\"bonaire\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇶\",\r\n \"category\": \"flags\"\r\n },\r\n \"ba\": {\r\n \"keywords\": [\"bosnia\", \"herzegovina\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇦\",\r\n \"category\": \"flags\"\r\n },\r\n \"bw\": {\r\n \"keywords\": [\"botswana\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇼\",\r\n \"category\": \"flags\"\r\n },\r\n \"br\": {\r\n \"keywords\": [\"brazil\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"io\": {\r\n \"keywords\": [\"british\", \"indian\", \"ocean\", \"territory\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇮🇴\",\r\n \"category\": \"flags\"\r\n },\r\n \"vg\": {\r\n \"keywords\": [\"british\", \"virgin\", \"islands\", \"bvi\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇻🇬\",\r\n \"category\": \"flags\"\r\n },\r\n \"bn\": {\r\n \"keywords\": [\"brunei\", \"darussalam\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇳\",\r\n \"category\": \"flags\"\r\n },\r\n \"bg\": {\r\n \"keywords\": [\"bulgaria\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇬\",\r\n \"category\": \"flags\"\r\n },\r\n \"bf\": {\r\n \"keywords\": [\"burkina\", \"faso\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇫\",\r\n \"category\": \"flags\"\r\n },\r\n \"bi\": {\r\n \"keywords\": [\"burundi\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇮\",\r\n \"category\": \"flags\"\r\n },\r\n \"cv\": {\r\n \"keywords\": [\"cabo\", \"verde\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇻\",\r\n \"category\": \"flags\"\r\n },\r\n \"kh\": {\r\n \"keywords\": [\"cambodia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇰🇭\",\r\n \"category\": \"flags\"\r\n },\r\n \"cm\": {\r\n \"keywords\": [\"cameroon\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"ca\": {\r\n \"keywords\": [\"canada\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇦\",\r\n \"category\": \"flags\"\r\n },\r\n \"ic\": {\r\n \"keywords\": [\"canary\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇮🇨\",\r\n \"category\": \"flags\"\r\n },\r\n \"ky\": {\r\n \"keywords\": [\"cayman\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇰🇾\",\r\n \"category\": \"flags\"\r\n },\r\n \"cf\": {\r\n \"keywords\": [\"central\", \"african\", \"republic\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇫\",\r\n \"category\": \"flags\"\r\n },\r\n \"td\": {\r\n \"keywords\": [\"chad\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇩\",\r\n \"category\": \"flags\"\r\n },\r\n \"chile\": {\r\n \"keywords\": [\"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇱\",\r\n \"category\": \"flags\"\r\n },\r\n \"cn\": {\r\n \"keywords\": [\"china\", \"chinese\", \"prc\", \"flag\", \"country\", \"nation\", \"banner\"],\r\n \"char\": \"🇨🇳\",\r\n \"category\": \"flags\"\r\n },\r\n \"cx\": {\r\n \"keywords\": [\"christmas\", \"island\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇽\",\r\n \"category\": \"flags\"\r\n },\r\n \"cc\": {\r\n \"keywords\": [\"cocos\", \"keeling\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇨\",\r\n \"category\": \"flags\"\r\n },\r\n \"co\": {\r\n \"keywords\": [\"colombia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇴\",\r\n \"category\": \"flags\"\r\n },\r\n \"km\": {\r\n \"keywords\": [\"comoros\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇰🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"cg\": {\r\n \"keywords\": [\"congo\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇬\",\r\n \"category\": \"flags\"\r\n },\r\n \"drc\": {\r\n \"keywords\": [\"congo\", \"democratic\", \"republic\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇩\",\r\n \"category\": \"flags\"\r\n },\r\n \"ck\": {\r\n \"keywords\": [\"cook\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇰\",\r\n \"category\": \"flags\"\r\n },\r\n \"cr\": {\r\n \"keywords\": [\"costa\", \"rica\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"hr\": {\r\n \"keywords\": [\"croatia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇭🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"cu\": {\r\n \"keywords\": [\"cuba\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇺\",\r\n \"category\": \"flags\"\r\n },\r\n \"cw\": {\r\n \"keywords\": [\"curaçao\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇼\",\r\n \"category\": \"flags\"\r\n },\r\n \"cy\": {\r\n \"keywords\": [\"cyprus\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇾\",\r\n \"category\": \"flags\"\r\n },\r\n \"cz\": {\r\n \"keywords\": [\"czech_republic\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇿\",\r\n \"category\": \"flags\"\r\n },\r\n \"dk\": {\r\n \"keywords\": [\"denmark\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇩🇰\",\r\n \"category\": \"flags\"\r\n },\r\n \"dj\": {\r\n \"keywords\": [\"djibouti\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇩🇯\",\r\n \"category\": \"flags\"\r\n },\r\n \"dm\": {\r\n \"keywords\": [\"dominica\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇩🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"do\": {\r\n \"keywords\": [\"dominican\", \"republic\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇩🇴\",\r\n \"category\": \"flags\"\r\n },\r\n \"ec\": {\r\n \"keywords\": [\"ecuador\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇪🇨\",\r\n \"category\": \"flags\"\r\n },\r\n \"eg\": {\r\n \"keywords\": [\"egypt\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇪🇬\",\r\n \"category\": \"flags\"\r\n },\r\n \"sv\": {\r\n \"keywords\": [\"el\", \"salvador\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇻\",\r\n \"category\": \"flags\"\r\n },\r\n \"gq\": {\r\n \"keywords\": [\"equatorial\", \"guinea\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇶\",\r\n \"category\": \"flags\"\r\n },\r\n \"er\": {\r\n \"keywords\": [\"eritrea\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇪🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"ee\": {\r\n \"keywords\": [\"estonia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇪🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"et\": {\r\n \"keywords\": [\"ethiopia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇪🇹\",\r\n \"category\": \"flags\"\r\n },\r\n \"eu\": {\r\n \"keywords\": [\"european\", \"union\", \"flag\", \"banner\"],\r\n \"char\": \"🇪🇺\",\r\n \"category\": \"flags\"\r\n },\r\n \"fk\": {\r\n \"keywords\": [\"falkland\", \"islands\", \"malvinas\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇫🇰\",\r\n \"category\": \"flags\"\r\n },\r\n \"fo\": {\r\n \"keywords\": [\"faroe\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇫🇴\",\r\n \"category\": \"flags\"\r\n },\r\n \"fj\": {\r\n \"keywords\": [\"fiji\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇫🇯\",\r\n \"category\": \"flags\"\r\n },\r\n \"fi\": {\r\n \"keywords\": [\"finland\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇫🇮\",\r\n \"category\": \"flags\"\r\n },\r\n \"fr\": {\r\n \"keywords\": [\"banner\", \"flag\", \"nation\", \"france\", \"french\", \"country\"],\r\n \"char\": \"🇫🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"gf\": {\r\n \"keywords\": [\"french\", \"guiana\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇫\",\r\n \"category\": \"flags\"\r\n },\r\n \"pf\": {\r\n \"keywords\": [\"french\", \"polynesia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇫\",\r\n \"category\": \"flags\"\r\n },\r\n \"tf\": {\r\n \"keywords\": [\"french\", \"southern\", \"territories\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇫\",\r\n \"category\": \"flags\"\r\n },\r\n \"ga\": {\r\n \"keywords\": [\"gabon\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇦\",\r\n \"category\": \"flags\"\r\n },\r\n \"gm\": {\r\n \"keywords\": [\"gambia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"ge\": {\r\n \"keywords\": [\"georgia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"de\": {\r\n \"keywords\": [\"german\", \"nation\", \"flag\", \"country\", \"banner\"],\r\n \"char\": \"🇩🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"gh\": {\r\n \"keywords\": [\"ghana\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇭\",\r\n \"category\": \"flags\"\r\n },\r\n \"gi\": {\r\n \"keywords\": [\"gibraltar\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇮\",\r\n \"category\": \"flags\"\r\n },\r\n \"gr\": {\r\n \"keywords\": [\"greece\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"gl\": {\r\n \"keywords\": [\"greenland\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇱\",\r\n \"category\": \"flags\"\r\n },\r\n \"gd\": {\r\n \"keywords\": [\"grenada\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇩\",\r\n \"category\": \"flags\"\r\n },\r\n \"gp\": {\r\n \"keywords\": [\"guadeloupe\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇵\",\r\n \"category\": \"flags\"\r\n },\r\n \"gu\": {\r\n \"keywords\": [\"guam\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇺\",\r\n \"category\": \"flags\"\r\n },\r\n \"gt\": {\r\n \"keywords\": [\"guatemala\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇹\",\r\n \"category\": \"flags\"\r\n },\r\n \"gg\": {\r\n \"keywords\": [\"guernsey\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇬\",\r\n \"category\": \"flags\"\r\n },\r\n \"gn\": {\r\n \"keywords\": [\"guinea\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇳\",\r\n \"category\": \"flags\"\r\n },\r\n \"gw\": {\r\n \"keywords\": [\"guinea\", \"bissau\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇼\",\r\n \"category\": \"flags\"\r\n },\r\n \"gy\": {\r\n \"keywords\": [\"guyana\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇾\",\r\n \"category\": \"flags\"\r\n },\r\n \"ht\": {\r\n \"keywords\": [\"haiti\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇭🇹\",\r\n \"category\": \"flags\"\r\n },\r\n \"hn\": {\r\n \"keywords\": [\"honduras\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇭🇳\",\r\n \"category\": \"flags\"\r\n },\r\n \"hk\": {\r\n \"keywords\": [\"hong\", \"kong\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇭🇰\",\r\n \"category\": \"flags\"\r\n },\r\n \"hu\": {\r\n \"keywords\": [\"hungary\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇭🇺\",\r\n \"category\": \"flags\"\r\n },\r\n \"is\": {\r\n \"keywords\": [\"iceland\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇮🇸\",\r\n \"category\": \"flags\"\r\n },\r\n \"in\": {\r\n \"keywords\": [\"india\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇮🇳\",\r\n \"category\": \"flags\"\r\n },\r\n \"indonesia\": {\r\n \"keywords\": [\"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇮🇩\",\r\n \"category\": \"flags\"\r\n },\r\n \"ir\": {\r\n \"keywords\": [\"iran,\", \"islamic\", \"republic\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇮🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"iq\": {\r\n \"keywords\": [\"iraq\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇮🇶\",\r\n \"category\": \"flags\"\r\n },\r\n \"ie\": {\r\n \"keywords\": [\"ireland\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇮🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"im\": {\r\n \"keywords\": [\"isle\", \"man\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇮🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"il\": {\r\n \"keywords\": [\"israel\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇮🇱\",\r\n \"category\": \"flags\"\r\n },\r\n \"it\": {\r\n \"keywords\": [\"italy\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇮🇹\",\r\n \"category\": \"flags\"\r\n },\r\n \"ci\": {\r\n \"keywords\": [\"ivory\", \"coast\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇮\",\r\n \"category\": \"flags\"\r\n },\r\n \"jm\": {\r\n \"keywords\": [\"jamaica\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇯🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"jp\": {\r\n \"keywords\": [\"japanese\", \"nation\", \"flag\", \"country\", \"banner\"],\r\n \"char\": \"🇯🇵\",\r\n \"category\": \"flags\"\r\n },\r\n \"je\": {\r\n \"keywords\": [\"jersey\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇯🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"jo\": {\r\n \"keywords\": [\"jordan\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇯🇴\",\r\n \"category\": \"flags\"\r\n },\r\n \"kz\": {\r\n \"keywords\": [\"kazakhstan\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇰🇿\",\r\n \"category\": \"flags\"\r\n },\r\n \"ke\": {\r\n \"keywords\": [\"kenya\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇰🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"ki\": {\r\n \"keywords\": [\"kiribati\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇰🇮\",\r\n \"category\": \"flags\"\r\n },\r\n \"xk\": {\r\n \"keywords\": [\"kosovo\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇽🇰\",\r\n \"category\": \"flags\"\r\n },\r\n \"kw\": {\r\n \"keywords\": [\"kuwait\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇰🇼\",\r\n \"category\": \"flags\"\r\n },\r\n \"kg\": {\r\n \"keywords\": [\"kyrgyzstan\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇰🇬\",\r\n \"category\": \"flags\"\r\n },\r\n \"la\": {\r\n \"keywords\": [\"lao\", \"democratic\", \"republic\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇱🇦\",\r\n \"category\": \"flags\"\r\n },\r\n \"lv\": {\r\n \"keywords\": [\"latvia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇱🇻\",\r\n \"category\": \"flags\"\r\n },\r\n \"lb\": {\r\n \"keywords\": [\"lebanon\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇱🇧\",\r\n \"category\": \"flags\"\r\n },\r\n \"ls\": {\r\n \"keywords\": [\"lesotho\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇱🇸\",\r\n \"category\": \"flags\"\r\n },\r\n \"lr\": {\r\n \"keywords\": [\"liberia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇱🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"ly\": {\r\n \"keywords\": [\"libya\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇱🇾\",\r\n \"category\": \"flags\"\r\n },\r\n \"li\": {\r\n \"keywords\": [\"liechtenstein\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇱🇮\",\r\n \"category\": \"flags\"\r\n },\r\n \"lt\": {\r\n \"keywords\": [\"lithuania\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇱🇹\",\r\n \"category\": \"flags\"\r\n },\r\n \"lu\": {\r\n \"keywords\": [\"luxembourg\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇱🇺\",\r\n \"category\": \"flags\"\r\n },\r\n \"mo\": {\r\n \"keywords\": [\"macao\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇴\",\r\n \"category\": \"flags\"\r\n },\r\n \"mk\": {\r\n \"keywords\": [\"macedonia,\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇰\",\r\n \"category\": \"flags\"\r\n },\r\n \"mg\": {\r\n \"keywords\": [\"madagascar\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇬\",\r\n \"category\": \"flags\"\r\n },\r\n \"mw\": {\r\n \"keywords\": [\"malawi\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇼\",\r\n \"category\": \"flags\"\r\n },\r\n \"my\": {\r\n \"keywords\": [\"malaysia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇾\",\r\n \"category\": \"flags\"\r\n },\r\n \"mv\": {\r\n \"keywords\": [\"maldives\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇻\",\r\n \"category\": \"flags\"\r\n },\r\n \"ml\": {\r\n \"keywords\": [\"mali\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇱\",\r\n \"category\": \"flags\"\r\n },\r\n \"mt\": {\r\n \"keywords\": [\"malta\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇹\",\r\n \"category\": \"flags\"\r\n },\r\n \"mh\": {\r\n \"keywords\": [\"marshall\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇭\",\r\n \"category\": \"flags\"\r\n },\r\n \"mq\": {\r\n \"keywords\": [\"martinique\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇶\",\r\n \"category\": \"flags\"\r\n },\r\n \"mr\": {\r\n \"keywords\": [\"mauritania\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"mu\": {\r\n \"keywords\": [\"mauritius\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇺\",\r\n \"category\": \"flags\"\r\n },\r\n \"yt\": {\r\n \"keywords\": [\"mayotte\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇾🇹\",\r\n \"category\": \"flags\"\r\n },\r\n \"mx\": {\r\n \"keywords\": [\"mexico\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇽\",\r\n \"category\": \"flags\"\r\n },\r\n \"fm\": {\r\n \"keywords\": [\"micronesia,\", \"federated\", \"states\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇫🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"md\": {\r\n \"keywords\": [\"moldova,\", \"republic\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇩\",\r\n \"category\": \"flags\"\r\n },\r\n \"mc\": {\r\n \"keywords\": [\"monaco\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇨\",\r\n \"category\": \"flags\"\r\n },\r\n \"mn\": {\r\n \"keywords\": [\"mongolia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇳\",\r\n \"category\": \"flags\"\r\n },\r\n \"me\": {\r\n \"keywords\": [\"montenegro\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"ms\": {\r\n \"keywords\": [\"montserrat\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇸\",\r\n \"category\": \"flags\"\r\n },\r\n \"ma\": {\r\n \"keywords\": [\"morocco\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇦\",\r\n \"category\": \"flags\"\r\n },\r\n \"mz\": {\r\n \"keywords\": [\"mozambique\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇿\",\r\n \"category\": \"flags\"\r\n },\r\n \"mm\": {\r\n \"keywords\": [\"myanmar\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"na\": {\r\n \"keywords\": [\"namibia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇳🇦\",\r\n \"category\": \"flags\"\r\n },\r\n \"nr\": {\r\n \"keywords\": [\"nauru\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇳🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"np\": {\r\n \"keywords\": [\"nepal\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇳🇵\",\r\n \"category\": \"flags\"\r\n },\r\n \"nl\": {\r\n \"keywords\": [\"netherlands\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇳🇱\",\r\n \"category\": \"flags\"\r\n },\r\n \"nc\": {\r\n \"keywords\": [\"new\", \"caledonia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇳🇨\",\r\n \"category\": \"flags\"\r\n },\r\n \"nz\": {\r\n \"keywords\": [\"new\", \"zealand\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇳🇿\",\r\n \"category\": \"flags\"\r\n },\r\n \"ni\": {\r\n \"keywords\": [\"nicaragua\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇳🇮\",\r\n \"category\": \"flags\"\r\n },\r\n \"ne\": {\r\n \"keywords\": [\"niger\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇳🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"nigeria\": {\r\n \"keywords\": [\"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇳🇬\",\r\n \"category\": \"flags\"\r\n },\r\n \"nu\": {\r\n \"keywords\": [\"niue\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇳🇺\",\r\n \"category\": \"flags\"\r\n },\r\n \"nf\": {\r\n \"keywords\": [\"norfolk\", \"island\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇳🇫\",\r\n \"category\": \"flags\"\r\n },\r\n \"mp\": {\r\n \"keywords\": [\"northern\", \"mariana\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇵\",\r\n \"category\": \"flags\"\r\n },\r\n \"kp\": {\r\n \"keywords\": [\"north\", \"korea\", \"nation\", \"flag\", \"country\", \"banner\"],\r\n \"char\": \"🇰🇵\",\r\n \"category\": \"flags\"\r\n },\r\n \"no\": {\r\n \"keywords\": [\"norway\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇳🇴\",\r\n \"category\": \"flags\"\r\n },\r\n \"om\": {\r\n \"keywords\": [\"oman\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇴🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"pk\": {\r\n \"keywords\": [\"pakistan\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇰\",\r\n \"category\": \"flags\"\r\n },\r\n \"pw\": {\r\n \"keywords\": [\"palau\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇼\",\r\n \"category\": \"flags\"\r\n },\r\n \"ps\": {\r\n \"keywords\": [\"palestine\", \"palestinian\", \"territories\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇸\",\r\n \"category\": \"flags\"\r\n },\r\n \"pa\": {\r\n \"keywords\": [\"panama\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇦\",\r\n \"category\": \"flags\"\r\n },\r\n \"pg\": {\r\n \"keywords\": [\"papua\", \"new\", \"guinea\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇬\",\r\n \"category\": \"flags\"\r\n },\r\n \"py\": {\r\n \"keywords\": [\"paraguay\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇾\",\r\n \"category\": \"flags\"\r\n },\r\n \"pe\": {\r\n \"keywords\": [\"peru\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"ph\": {\r\n \"keywords\": [\"philippines\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇭\",\r\n \"category\": \"flags\"\r\n },\r\n \"pn\": {\r\n \"keywords\": [\"pitcairn\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇳\",\r\n \"category\": \"flags\"\r\n },\r\n \"pl\": {\r\n \"keywords\": [\"poland\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇱\",\r\n \"category\": \"flags\"\r\n },\r\n \"pt\": {\r\n \"keywords\": [\"portugal\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇹\",\r\n \"category\": \"flags\"\r\n },\r\n \"pr\": {\r\n \"keywords\": [\"puerto\", \"rico\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"qa\": {\r\n \"keywords\": [\"qatar\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇶🇦\",\r\n \"category\": \"flags\"\r\n },\r\n \"re\": {\r\n \"keywords\": [\"réunion\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇷🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"ro\": {\r\n \"keywords\": [\"romania\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇷🇴\",\r\n \"category\": \"flags\"\r\n },\r\n \"ru\": {\r\n \"keywords\": [\"russian\", \"federation\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇷🇺\",\r\n \"category\": \"flags\"\r\n },\r\n \"rw\": {\r\n \"keywords\": [\"rwanda\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇷🇼\",\r\n \"category\": \"flags\"\r\n },\r\n \"bl\": {\r\n \"keywords\": [\"saint\", \"barthélemy\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇱\",\r\n \"category\": \"flags\"\r\n },\r\n \"sh\": {\r\n \"keywords\": [\"saint\", \"helena\", \"ascension\", \"tristan\", \"cunha\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇭\",\r\n \"category\": \"flags\"\r\n },\r\n \"kn\": {\r\n \"keywords\": [\"saint\", \"kitts\", \"nevis\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇰🇳\",\r\n \"category\": \"flags\"\r\n },\r\n \"lc\": {\r\n \"keywords\": [\"saint\", \"lucia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇱🇨\",\r\n \"category\": \"flags\"\r\n },\r\n \"pm\": {\r\n \"keywords\": [\"saint\", \"pierre\", \"miquelon\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"vc\": {\r\n \"keywords\": [\"saint\", \"vincent\", \"grenadines\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇻🇨\",\r\n \"category\": \"flags\"\r\n },\r\n \"ws\": {\r\n \"keywords\": [\"samoa\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇼🇸\",\r\n \"category\": \"flags\"\r\n },\r\n \"sm\": {\r\n \"keywords\": [\"san\", \"marino\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"st\": {\r\n \"keywords\": [\"sao\", \"tome\", \"principe\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇹\",\r\n \"category\": \"flags\"\r\n },\r\n \"saudi_arabia\": {\r\n \"keywords\": [\"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇦\",\r\n \"category\": \"flags\"\r\n },\r\n \"sn\": {\r\n \"keywords\": [\"senegal\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇳\",\r\n \"category\": \"flags\"\r\n },\r\n \"rs\": {\r\n \"keywords\": [\"serbia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇷🇸\",\r\n \"category\": \"flags\"\r\n },\r\n \"sc\": {\r\n \"keywords\": [\"seychelles\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇨\",\r\n \"category\": \"flags\"\r\n },\r\n \"sl\": {\r\n \"keywords\": [\"sierra\", \"leone\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇱\",\r\n \"category\": \"flags\"\r\n },\r\n \"sg\": {\r\n \"keywords\": [\"singapore\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇬\",\r\n \"category\": \"flags\"\r\n },\r\n \"sx\": {\r\n \"keywords\": [\"sint\", \"maarten\", \"dutch\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇽\",\r\n \"category\": \"flags\"\r\n },\r\n \"sk\": {\r\n \"keywords\": [\"slovakia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇰\",\r\n \"category\": \"flags\"\r\n },\r\n \"si\": {\r\n \"keywords\": [\"slovenia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇮\",\r\n \"category\": \"flags\"\r\n },\r\n \"sb\": {\r\n \"keywords\": [\"solomon\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇧\",\r\n \"category\": \"flags\"\r\n },\r\n \"so\": {\r\n \"keywords\": [\"somalia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇴\",\r\n \"category\": \"flags\"\r\n },\r\n \"za\": {\r\n \"keywords\": [\"south\", \"africa\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇿🇦\",\r\n \"category\": \"flags\"\r\n },\r\n \"gs\": {\r\n \"keywords\": [\"south\", \"georgia\", \"sandwich\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇸\",\r\n \"category\": \"flags\"\r\n },\r\n \"kr\": {\r\n \"keywords\": [\"south\", \"korea\", \"nation\", \"flag\", \"country\", \"banner\"],\r\n \"char\": \"🇰🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"ss\": {\r\n \"keywords\": [\"south\", \"sudan\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇸\",\r\n \"category\": \"flags\"\r\n },\r\n \"es\": {\r\n \"keywords\": [\"spain\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇪🇸\",\r\n \"category\": \"flags\"\r\n },\r\n \"lk\": {\r\n \"keywords\": [\"sri\", \"lanka\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇱🇰\",\r\n \"category\": \"flags\"\r\n },\r\n \"sd\": {\r\n \"keywords\": [\"sudan\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇩\",\r\n \"category\": \"flags\"\r\n },\r\n \"sr\": {\r\n \"keywords\": [\"suriname\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"sz\": {\r\n \"keywords\": [\"swaziland\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇿\",\r\n \"category\": \"flags\"\r\n },\r\n \"se\": {\r\n \"keywords\": [\"sweden\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"ch\": {\r\n \"keywords\": [\"switzerland\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇭\",\r\n \"category\": \"flags\"\r\n },\r\n \"sy\": {\r\n \"keywords\": [\"syrian\", \"arab\", \"republic\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇾\",\r\n \"category\": \"flags\"\r\n },\r\n \"tw\": {\r\n \"keywords\": [\"taiwan\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇼\",\r\n \"category\": \"flags\"\r\n },\r\n \"tj\": {\r\n \"keywords\": [\"tajikistan\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇯\",\r\n \"category\": \"flags\"\r\n },\r\n \"tz\": {\r\n \"keywords\": [\"tanzania,\", \"united\", \"republic\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇿\",\r\n \"category\": \"flags\"\r\n },\r\n \"th\": {\r\n \"keywords\": [\"thailand\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇭\",\r\n \"category\": \"flags\"\r\n },\r\n \"tl\": {\r\n \"keywords\": [\"timor\", \"leste\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇱\",\r\n \"category\": \"flags\"\r\n },\r\n \"tg\": {\r\n \"keywords\": [\"togo\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇬\",\r\n \"category\": \"flags\"\r\n },\r\n \"tk\": {\r\n \"keywords\": [\"tokelau\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇰\",\r\n \"category\": \"flags\"\r\n },\r\n \"to\": {\r\n \"keywords\": [\"tonga\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇴\",\r\n \"category\": \"flags\"\r\n },\r\n \"tt\": {\r\n \"keywords\": [\"trinidad\", \"tobago\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇹\",\r\n \"category\": \"flags\"\r\n },\r\n \"tn\": {\r\n \"keywords\": [\"tunisia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇳\",\r\n \"category\": \"flags\"\r\n },\r\n \"tr\": {\r\n \"keywords\": [\"turkey\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"turkmenistan\": {\r\n \"keywords\": [\"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"tc\": {\r\n \"keywords\": [\"turks\", \"caicos\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇨\",\r\n \"category\": \"flags\"\r\n },\r\n \"tuvalu\": {\r\n \"keywords\": [\"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇻\",\r\n \"category\": \"flags\"\r\n },\r\n \"ug\": {\r\n \"keywords\": [\"uganda\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇺🇬\",\r\n \"category\": \"flags\"\r\n },\r\n \"ua\": {\r\n \"keywords\": [\"ukraine\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇺🇦\",\r\n \"category\": \"flags\"\r\n },\r\n \"ae\": {\r\n \"keywords\": [\"united\", \"arab\", \"emirates\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"gb\": {\r\n \"keywords\": [\"united\", \"kingdom\", \"great\", \"britain\", \"northern\", \"ireland\", \"flag\", \"nation\", \"country\", \"banner\", \"british\", \"UK\", \"english\", \"england\", \"union jack\"],\r\n \"char\": \"🇬🇧\",\r\n \"category\": \"flags\"\r\n },\r\n \"us\": {\r\n \"keywords\": [\"united\", \"states\", \"america\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇺🇸\",\r\n \"category\": \"flags\"\r\n },\r\n \"vi\": {\r\n \"keywords\": [\"virgin\", \"islands\", \"us\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇻🇮\",\r\n \"category\": \"flags\"\r\n },\r\n \"uy\": {\r\n \"keywords\": [\"uruguay\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇺🇾\",\r\n \"category\": \"flags\"\r\n },\r\n \"uz\": {\r\n \"keywords\": [\"uzbekistan\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇺🇿\",\r\n \"category\": \"flags\"\r\n },\r\n \"vu\": {\r\n \"keywords\": [\"vanuatu\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇻🇺\",\r\n \"category\": \"flags\"\r\n },\r\n \"va\": {\r\n \"keywords\": [\"vatican\", \"city\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇻🇦\",\r\n \"category\": \"flags\"\r\n },\r\n \"ve\": {\r\n \"keywords\": [\"venezuela\", \"bolivarian\", \"republic\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇻🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"vn\": {\r\n \"keywords\": [\"viet\", \"nam\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇻🇳\",\r\n \"category\": \"flags\"\r\n },\r\n \"wf\": {\r\n \"keywords\": [\"wallis\", \"futuna\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇼🇫\",\r\n \"category\": \"flags\"\r\n },\r\n \"eh\": {\r\n \"keywords\": [\"western\", \"sahara\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇪🇭\",\r\n \"category\": \"flags\"\r\n },\r\n \"ye\": {\r\n \"keywords\": [\"yemen\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇾🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"zm\": {\r\n \"keywords\": [\"zambia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇿🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"zw\": {\r\n \"keywords\": [\"zimbabwe\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇿🇼\",\r\n \"category\": \"flags\"\r\n },\r\n \"octocat\": {\r\n \"keywords\": [\"animal\", \"octopus\", \"github\", \"custom_\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"shipit\": {\r\n \"keywords\": [\"squirrel\", \"detective\", \"animal\", \"sherlock\", \"inspector\", \"custom_\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"bowtie\": {\r\n \"keywords\": [\"face\", \"formal\", \"fashion\", \"suit\", \"classy\", \"magic\", \"circus\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"neckbeard\": {\r\n \"keywords\": [\"nerdy\", \"face\", \"custom_\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"metal\": {\r\n \"keywords\": [\"fingers\", \"rocknroll\", \"concert\", \"band\", \"custom_\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"fu\": {\r\n \"keywords\": [\"fuck\", \"finger\", \"dislike\", \"thumbsdown\", \"disapprove\", \"no\", \"custom_\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"trollface\": {\r\n \"keywords\": [\"internet\", \"meme\", \"custom_\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"godmode\": {\r\n \"keywords\": [\"doom\", \"oldschool\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"goberserk\": {\r\n \"keywords\": [\"doom\", \"rage\", \"bloody\", \"hurt\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"finnadie\": {\r\n \"keywords\": [\"doom\", \"oldschool\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"feelsgood\": {\r\n \"keywords\": [\"doom\", \"oldschool\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"rage1\": {\r\n \"keywords\": [\"angry\", \"mad\", \"hate\", \"despise\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"rage2\": {\r\n \"keywords\": [\"angry\", \"mad\", \"hate\", \"despise\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"rage3\": {\r\n \"keywords\": [\"angry\", \"mad\", \"hate\", \"despise\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"rage4\": {\r\n \"keywords\": [\"angry\", \"mad\", \"hate\", \"despise\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"suspect\": {\r\n \"keywords\": [\"mad\", \"custom_\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"hurtrealbad\": {\r\n \"keywords\": [\"mad\", \"injured\", \"doom\", \"oldschool\", \"custom_\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n }\r\n}","declare var twemoji: {\r\n parse(str: string, options?: { folder: string, ext: string }): string;\r\n}\r\n\r\nimport { Component, OnInit, Output } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { Subject } from 'rxjs';\r\n\r\ninterface Emoji {\r\n\tkeywords : string[];\r\n\tchar : string;\r\n\thtml? : SafeHtml;\r\n\tcategory : string;\r\n}\r\n\r\nimport { EMOJIS } from '../emojis';\r\n\r\n@Component({\r\n\tselector: 'emoji-selector-panel',\r\n\ttemplateUrl: './emoji-selector-panel.component.html',\r\n\tstyleUrls: ['./emoji-selector-panel.component.scss']\r\n})\r\nexport class EmojiSelectorPanelComponent implements OnInit {\r\n\r\n\tconstructor(\r\n\t\tprivate sanitizer : DomSanitizer\r\n\t) { }\r\n\r\n\tcategories : any[];\r\n\tactiveCategory : string = 'people';\r\n\tsearchResults : any[] = [];\r\n searchVisible = false;\r\n\t\r\n\t@Output()\r\n\tprivate selected : Subject<string> = new Subject();\r\n\r\n\tprivate _searchQuery : string;\r\n\r\n\tget searchQuery() {\r\n\t\treturn this._searchQuery;\r\n\t}\r\n\r\n\tset searchQuery(value) {\r\n\t\tthis._searchQuery = value;\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.searchResults = Object.keys(EMOJIS).filter(k => k.includes(value)).map(k => EMOJIS[k]);\r\n\t\t\tthis.searchResults.splice(50, this.searchResults.length);\r\n\t\t\tconsole.log(`looking for '${value}' => ${this.searchResults.length} results`);\r\n\t\t});\r\n\t}\r\n\r\n\thumanize(str : string) {\r\n\t\treturn str.replace(/(^| )[a-z]/g, k => k.toUpperCase()).replace(/_/g, ' ');\r\n\t}\r\n\r\n\tselect(char : string) {\r\n\t\tthis.selected.next(char);\r\n\t}\r\n\r\n\tpairs(object) {\r\n\t\treturn Object.keys(object).map(key => [key, object[key]]);\r\n\t}\r\n\r\n\thideSearch() {\r\n\t\t// because of the \"outside click detection\"\r\n setTimeout(() => {\r\n this.searchVisible = false;\r\n });\r\n\t}\r\n\t\r\n showSearch() {\r\n\t\t// because of the \"outside click detection\"\r\n setTimeout(() => {\r\n this.searchVisible = true;\r\n });\r\n }\r\n\r\n\tngOnInit() {\r\n\r\n\t\tlet cats = {};\r\n\t\tlet categoryIcons = {\r\n\t\t\tsymbols: 'warning',\r\n\t\t\tpeople: 'people',\r\n\t\t\tanimals_and_nature: 'nature',\r\n\t\t\ttravel_and_places: 'location_on',\r\n\t\t\tactivity: 'local_activity',\r\n\t\t\tfood_and_drink: 'restaurant',\r\n\t\t\tobjects: 'computer',\r\n\t\t\tflags: 'flag'\r\n\t\t};\r\n\t\tfor (let pair of this.pairs(EMOJIS)) {\r\n\t\t\tlet name = pair[0];\r\n\t\t\tlet emoji : Emoji = pair[1];\r\n\r\n\t\t\tif (!cats[emoji.category]) {\r\n\t\t\t\tcats[emoji.category] = {\r\n\t\t\t\t\tname: emoji.category,\r\n\t\t\t\t\ticon: categoryIcons[emoji.category] || 'code',\r\n\t\t\t\t\temojis: []\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\temoji.html = this.sanitizer.bypassSecurityTrustHtml(twemoji.parse(emoji.char || ''));\r\n\r\n\t\t\tcats[emoji.category].emojis.push(emoji);\r\n\t\t}\r\n\r\n\t\tthis.categories = this.pairs(cats).map(pair => pair[1]);\r\n\t}\r\n\r\n}\r\n","import { Component, ElementRef, Output, ViewChild } from '@angular/core';\r\nimport { Subject, Observable } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'emoji-selector-button',\r\n template: `\r\n <button #button type=\"button\" mat-icon-button (click)=\"show()\">\r\n <mat-icon>emoji_emotions</mat-icon>\r\n </button>\r\n <emoji-selector-panel \r\n #panel\r\n (selected)=\"insert($event)\"\r\n [class.visible]=\"showEmojiPanel\"\r\n ></emoji-selector-panel>\r\n `,\r\n styles: [`\r\n :host {\r\n display: block;\r\n position: relative;\r\n }\r\n\r\n emoji-selector-panel {\r\n position: absolute;\r\n /* bottom: 2.5em;\r\n right: 0; */\r\n opacity: 0;\r\n pointer-events: none;\r\n z-index: 10;\r\n }\r\n\r\n emoji-selector-panel.visible {\r\n pointer-events: initial;\r\n opacity: 1;\r\n }\r\n\r\n button {\r\n color: #666\r\n }\r\n\r\n /* :host.bottom-left emoji-selector-panel {\r\n right: auto;\r\n left: 0;\r\n }\r\n\r\n :host.top-right emoji-selector-panel {\r\n top: 2.4em;\r\n bottom: auto;\r\n }\r\n\r\n :host.top-left emoji-selector-panel {\r\n top: 2.4em;\r\n bottom: auto;\r\n left: 0;\r\n right: auto;\r\n } */\r\n `]\r\n})\r\nexport class EmojiSelectorButtonComponent {\r\n\r\n private _selected = new Subject<string>();\r\n private clickListener : any;\r\n private resizeListener : any;\r\n showEmojiPanel = false;\r\n\r\n @Output()\r\n get selected() : Observable<string> {\r\n return this._selected;\r\n }\r\n\r\n @ViewChild('panel', { read: ElementRef })\r\n panelElement : ElementRef<HTMLElement>;\r\n\r\n @ViewChild('button', { read: ElementRef })\r\n buttonElement : ElementRef<HTMLElement>;\r\n\r\n ngOnDestroy() {\r\n this.removeListener();\r\n this.panelElement.nativeElement.remove();\r\n }\r\n\r\n ngAfterViewInit() {\r\n let root = document.body.querySelector('[ng-version]') || document.body;\r\n root.appendChild(this.panelElement.nativeElement);\r\n }\r\n\r\n private removeListener() {\r\n document.removeEventListener('click', this.clickListener);\r\n window.removeEventListener('resize', this.resizeListener);\r\n }\r\n\r\n place() {\r\n let pos = this.buttonElement.nativeElement.getBoundingClientRect();\r\n let size = this.panelElement.nativeElement.getBoundingClientRect();\r\n let left = window.scrollX + pos.left + pos.width - size.width;\r\n if (left < 0)\r\n left = (window.scrollX + window.innerWidth) / 2 - size.width / 2;\r\n\r\n Object.assign(\r\n this.panelElement.nativeElement.style,\r\n {\r\n top: `${window.scrollY + pos.top + pos.height}px`,\r\n left: `${Math.max(0, left)}px`\r\n }\r\n );\r\n }\r\n\r\n show() {\r\n if (this.showEmojiPanel) {\r\n this.showEmojiPanel = false;\r\n return;\r\n }\r\n\r\n this.showEmojiPanel = true;\r\n this.place();\r\n\r\n setTimeout(() => {\r\n this.resizeListener = () => {\r\n if (!this.showEmojiPanel)\r\n return;\r\n this.place();\r\n };\r\n\r\n this.clickListener = (ev : MouseEvent) => {\r\n\r\n let parent = <HTMLElement> ev.target;\r\n let isInDialog = false;\r\n \r\n while (parent) {\r\n if (parent.matches('emoji-selector-panel'))\r\n isInDialog = true;\r\n\r\n parent = parent.parentElement;\r\n }\r\n\r\n if (isInDialog)\r\n return;\r\n\r\n this.showEmojiPanel = false;\r\n this.removeListener();\r\n };\r\n \r\n document.addEventListener('click', this.clickListener);\r\n window.addEventListener('resize', this.resizeListener);\r\n });\r\n }\r\n\r\n insert(str) {\r\n this._selected.next(str);\r\n }\r\n}","import { NgModule } from '@angular/core';\r\nimport { EmojiSelectorPanelComponent } from './emoji-selector-panel/emoji-selector-panel.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { EmojiSelectorButtonComponent } from './emoji-selector-button.component';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nconst COMPONENTS = [\r\n EmojiSelectorPanelComponent,\r\n EmojiSelectorButtonComponent\r\n];\r\n\r\n@NgModule({\r\n declarations: COMPONENTS,\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatFormFieldModule,\r\n MatInputModule\r\n ],\r\n exports: COMPONENTS\r\n})\r\nexport class EmojiModule {\r\n\r\n}","import { Component, Input, ViewChild, ElementRef, HostBinding } from \"@angular/core\";\r\nimport { NewMessageForm, ChatMessage, User, ChatSource, Notification } from '@banta/common';\r\nimport { Subject, BehaviorSubject, Observable, Subscription } from 'rxjs';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { BantaChatComponent } from '../chat';\r\nimport { BantaService } from '../common';\r\nimport { ChatBackendService } from \"../common\";\r\nimport { Output } from \"@angular/core\";\r\n\r\n/**\r\n * Unified chat and comments component\r\n */\r\n@Component({\r\n selector: `banta`,\r\n templateUrl: './banta.component.html',\r\n styleUrls: [ './banta.component.scss' ]\r\n})\r\nexport class BantaComponent {\r\n constructor(\r\n private banta : BantaService,\r\n private backend : ChatBackendService,\r\n private matDialog : MatDialog\r\n ) {\r\n }\r\n\r\n firehoseSource : ChatSource;\r\n pointSource : ChatSource;\r\n\r\n private _topicID : string;\r\n private _subs = new Subscription();\r\n\r\n auxOpen = false;\r\n auxTitle = 'Notifications';\r\n auxMode = 'notifications';\r\n\r\n ngOnInit() {\r\n this._subs.add(this.banta.userChanged.subscribe(user => this.currentUser = user));\r\n this._subs.add(this.backend.notificationsChanged.subscribe(notifs => this.notifications = notifs));\r\n this._subs.add(this.backend.newNotification.subscribe(notif => {\r\n this.newNotifications = true;\r\n }));\r\n }\r\n \r\n mobileFocus : string = null;\r\n\r\n async sendPointSubMessage() {\r\n let text = (this.newPointSubMessage.message || '').trim();\r\n this.newPointSubMessage.message = '';\r\n\r\n if (text === '')\r\n return;\r\n \r\n let message : ChatMessage = {\r\n user: null,\r\n sentAt: Date.now(),\r\n upvotes: 0,\r\n message: text\r\n };\r\n\r\n try {\r\n await this.pointSubChat.send(message);\r\n } catch (e) {\r\n console.error(`Failed to send point sub-message:`);\r\n console.error(e);\r\n }\r\n }\r\n\r\n @ViewChild('firehose', { static: true })\r\n firehose : BantaChatComponent;\r\n\r\n async goToMessage(message : ChatMessage) {\r\n\r\n let targetMessage = message;\r\n\r\n if (message.parentMessageId) {\r\n // jump to the parent message thread...\r\n\r\n let parentMessage = await this.backend.getMessage(message.topicId, message.parentMessageId);\r\n\r\n if (!parentMessage) {\r\n console.error(`Failed to look up parent message ${message.topicId}/${message.parentMessageId}`);\r\n console.error(`Original message was:`);\r\n console.dir(targetMessage);\r\n return;\r\n }\r\n\r\n message = parentMessage;\r\n }\r\n\r\n let viewType = this.getViewType(message);\r\n\r\n if (viewType === 'comment') {\r\n if (this.pointSubChat) {\r\n if (this.pointSubChat.close)\r\n this.pointSubChat.close();\r\n this.pointSubChat = null;\r\n }\r\n this.mobileFocus = 'points';\r\n this.pointOpen = message;\r\n this.pointSubChat = await this.backend.getSourceForThread(message.topicId, message.id);\r\n this.pointOpen = await this.backend.refreshMessage(message);\r\n this.newPointSubMessage = {};\r\n } else if (viewType === 'chat') {\r\n this.mobileFocus = 'firehose';\r\n this.firehose.jumpToMessage(message);\r\n }\r\n }\r\n\r\n notifications : Notification[];\r\n newNotifications = false;\r\n \r\n pointUnfocus() {\r\n this.pointOpen = null;\r\n if (this.pointSubChat) {\r\n if (this.pointSubChat.close)\r\n this.pointSubChat.close();\r\n this.pointSubChat = null;\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this._subs.unsubscribe();\r\n }\r\n\r\n showAux(title : string, mode : string) {\r\n this.auxOpen = true;\r\n this.auxTitle = title;\r\n this.auxMode = mode;\r\n this.mobileFocus = 'aux';\r\n }\r\n\r\n showNotifications() {\r\n this.showAux('Notifications', 'notifications');\r\n }\r\n\r\n @Input()\r\n get topicID() : string {\r\n return this._topicID;\r\n }\r\n\r\n @Input() chatLabel = 'Chat';\r\n @Input() commentsLabel = 'Comments';\r\n\r\n set topicID(value) {\r\n this._topicID = value;\r\n\r\n this.close();\r\n this.connectToTopic(this._topicID);\r\n }\r\n\r\n private async connectToTopic(id : string) {\r\n this.firehoseSource = await this.backend.getSourceForTopic(`${id}_firehose`);\r\n this.pointSource = await this.backend.getSourceForTopic(`${id}_thepoint`);\r\n }\r\n\r\n private _signInSelected = new Subject<void>();\r\n\r\n @Output()\r\n get signInSelected(): Observable<void> {\r\n return this._signInSelected;\r\n }\r\n\r\n showSignIn() {\r\n this._signInSelected.next();\r\n }\r\n\r\n close() {\r\n if (this.firehoseSource) {\r\n if (this.firehoseSource.close)\r\n this.firehoseSource.close();\r\n this.firehoseSource = null;\r\n }\r\n\r\n if (this.pointSource) {\r\n if (this.pointSource.close)\r\n this.pointSource.close();\r\n this.pointSource = null;\r\n }\r\n }\r\n\r\n @HostBinding('class.point-focus')\r\n get hasPoint() {\r\n return this.pointOpen != null;\r\n }\r\n\r\n pointOpen : ChatMessage = null;\r\n pointSubChat : ChatSource = null;\r\n\r\n closeAux() {\r\n this.auxOpen = false;\r\n this.mobileFocus = 'firehose';\r\n }\r\n\r\n getViewType(message : ChatMessage) {\r\n if (message.topicId.endsWith('_firehose'))\r\n return 'chat';\r\n else if (message.topicId.endsWith('_thepoint'))\r\n return 'comment';\r\n\r\n return 'comment';\r\n }\r\n\r\n async upvoteMessage(message : ChatMessage) {\r\n if (message.parentMessageId)\r\n await this.backend.upvoteMessage(message.topicId, message.parentMessageId, message.id);\r\n else\r\n await this.backend.upvoteMessage(message.topicId, message.id);\r\n //message.upvotes += 1;\r\n }\r\n\r\n showProfile(user : User) {\r\n this.profileUser = user;\r\n this.showAux(`@${user.username}'s Profile`, 'profile');\r\n }\r\n\r\n profileUser : User;\r\n \r\n reportedMessage : ChatMessage;\r\n\r\n sendReport(message : ChatMessage) {\r\n this.auxOpen = false;\r\n alert('would send report');\r\n }\r\n\r\n reportMessage(message : ChatMessage) {\r\n this.reportedMessage = message;\r\n this.showAux(`Report message from @${message.user.username}`, 'report');\r\n }\r\n\r\n currentUser : User;\r\n\r\n newPointSubMessage : NewMessageForm = {};\r\n\r\n genericAvatarUrl = 'https://gravatar.com/avatar/915c804e0be607a4ad766ddadea5c48a?s=512&d=https://codepen.io/assets/avatars/user-avatar-512x512-6e240cf350d2f1cc07c2bed234c3a3bb5f1b237023c204c782622e80d6b212ba.png';\r\n}","import { Component } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: 'banta-logo',\r\n template: `banta`,\r\n styles: [\r\n `\r\n :host {\r\n font-family: 'Odibee Sans', sans-serif;\r\n font-size: 40pt;\r\n }\r\n\r\n :host.small {\r\n font-size: 30pt;\r\n }\r\n `\r\n ]\r\n})\r\nexport class BantaLogoComponent {\r\n\r\n}","import { Component, Input, Output } from \"@angular/core\";\r\nimport { User, ChatMessage } from '@banta/common';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'banta-chat-message',\r\n templateUrl: './chat-message.component.html',\r\n styleUrls: ['./chat-message.component.scss']\r\n})\r\nexport class ChatMessageComponent {\r\n private _selected = new Subject<void>();\r\n private _reported = new Subject<void>();\r\n private _upvoted = new Subject<void>();\r\n private _userSelected = new Subject<User>();\r\n\r\n @Input()\r\n message : ChatMessage;\r\n \r\n @Output() \r\n get userSelected() {\r\n return this._userSelected;\r\n }\r\n\r\n @Output()\r\n get selected() {\r\n return this._selected;\r\n }\r\n\r\n @Output()\r\n get reported() {\r\n return this._reported;\r\n }\r\n\r\n @Output()\r\n get upvoted() {\r\n return this._upvoted;\r\n }\r\n\r\n avatarForUser(user : User) {\r\n if (user && user.avatarUrl) {\r\n let url = user.avatarUrl;\r\n return `url(${url})`;\r\n }\r\n\r\n return null;\r\n }\r\n \r\n upvote() {\r\n this._upvoted.next();\r\n }\r\n\r\n report() {\r\n this._reported.next();\r\n }\r\n\r\n select() {\r\n this._selected.next();\r\n }\r\n \r\n selectUser() {\r\n this._userSelected.next();\r\n }\r\n\r\n}","import { Component, Input, Output } from '@angular/core';\r\nimport { ChatMessage } from '@banta/common';\r\nimport { Subject, Observable } from 'rxjs';\r\nimport { ChatBackendService } from '../common';\r\n\r\n@Component({\r\n selector: 'banta-live-chat-message',\r\n template: `\r\n <banta-chat-message \r\n *ngIf=\"message\"\r\n [message]=\"message\"\r\n (upvoted)=\"upvote()\"\r\n (reported)=\"report()\"\r\n (selected)=\"select()\"\r\n ></banta-chat-message>\r\n `,\r\n styles: [``]\r\n})\r\nexport class LiveChatMessageComponent {\r\n constructor(\r\n private backend : ChatBackendService\r\n ) {\r\n\r\n }\r\n\r\n private _message : ChatMessage;\r\n private _upvoted = new Subject<void>();\r\n private _reported = new Subject<void>();\r\n private _selected = new Subject<void>();\r\n\r\n @Output()\r\n get upvoted() : Observable<void> {\r\n return this._upvoted;\r\n }\r\n \r\n @Output()\r\n get reported() : Observable<void> {\r\n return this._reported;\r\n }\r\n\r\n @Output()\r\n get selected() : Observable<void> {\r\n return this._selected;\r\n }\r\n \r\n @Input()\r\n get message() : ChatMessage {\r\n return this._message;\r\n }\r\n\r\n private unsubscribe : Function;\r\n\r\n set message(value) {\r\n let originalId = null;\r\n if (this._message)\r\n originalId = this._message.id;\r\n \r\n this._message = value;\r\n\r\n if (value && originalId === value.id) {\r\n return;\r\n }\r\n\r\n if (this.unsubscribe)\r\n this.unsubscribe();\r\n \r\n if (value) {\r\n this.unsubscribe = this.backend.watchMessage(value, message => this.message = message);\r\n }\r\n }\r\n\r\n report() {\r\n this._reported.next();\r\n }\r\n \r\n upvote() {\r\n this._upvoted.next();\r\n }\r\n\r\n select() {\r\n this._selected.next();\r\n }\r\n}","import { Component, Input, ViewChild, ElementRef, Output } from \"@angular/core\";\r\nimport { ChatSource, User, ChatMessage } from '@banta/common';\r\nimport { Subject, Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'banta-chat-view',\r\n templateUrl: './chat-view.component.html',\r\n styleUrls: ['./chat-view.component.scss']\r\n})\r\nexport class ChatViewComponent {\r\n constructor(\r\n private elementRef : ElementRef<HTMLElement>\r\n ) {\r\n\r\n }\r\n\r\n private _sourceSubs = new Subscription();\r\n private _source : ChatSource;\r\n\r\n @Input()\r\n get source() {\r\n return this._source;\r\n }\r\n\r\n private _selected = new Subject<ChatMessage>();\r\n private _reported = new Subject<ChatMessage>();\r\n private _upvoted = new Subject<ChatMessage>();\r\n private _userSelected = new Subject<ChatMessage>();\r\n\r\n @Output()\r\n get selected() {\r\n return this._selected;\r\n }\r\n\r\n @Output()\r\n get userSelected() {\r\n return this._userSelected;\r\n }\r\n\r\n @Output()\r\n get reported() {\r\n return this._reported;\r\n }\r\n\r\n @Output()\r\n get upvoted() {\r\n return this._upvoted;\r\n }\r\n\r\n set source(value) {\r\n if (this._sourceSubs) {\r\n this._sourceSubs.unsubscribe();\r\n this._sourceSubs = null;\r\n }\r\n\r\n this._source = value;\r\n\r\n this.messages = [];\r\n\r\n if (value) {\r\n this._sourceSubs = new Subscription();\r\n this.messages = value.messages.slice();\r\n\r\n console.log(`Source set:`);\r\n console.dir(value);\r\n\r\n console.log(`Messages loaded:`);\r\n console.dir(this.messages); \r\n \r\n this._sourceSubs.add(this._source.messageReceived.subscribe(msg => this.messageReceived(msg)));\r\n this._sourceSubs.add(this._source.messageSent.subscribe(msg => this.messageSent(msg)));\r\n\r\n if (this._source.currentUserChanged) {\r\n this._sourceSubs.add(\r\n this._source.currentUserChanged\r\n .subscribe(user => this.currentUser = user)\r\n );\r\n }\r\n }\r\n }\r\n\r\n messages : ChatMessage[] = [];\r\n currentUser : User;\r\n\r\n @ViewChild('messageContainer')\r\n messageContainer : ElementRef<HTMLElement>;\r\n\r\n @Input()\r\n maxMessages : number = 200;\r\n\r\n private addMessage(message : ChatMessage) {\r\n if (this.messages.length > this.maxMessages + 1) {\r\n while (this.messages.length > this.maxMessages)\r\n this.messages.shift();\r\n }\r\n\r\n this.messages.push(message);\r\n }\r\n\r\n private messageReceived(message : ChatMessage) {\r\n this.addMessage(message);\r\n\r\n if (this.isScrolledToLatest())\r\n setTimeout(() => this.scrollToLatest());\r\n }\r\n\r\n isScrolledToLatest() {\r\n if (!this.messageContainer)\r\n return false;\r\n\r\n let el = this.messageContainer.nativeElement;\r\n let currentScroll = el.scrollTop;\r\n let currentTotal = el.scrollHeight - el.offsetHeight;\r\n \r\n return currentScroll > currentTotal - 10;\r\n }\r\n\r\n private messageSent(message : ChatMessage) {\r\n this.addMessage(message);\r\n \r\n if (!this.messageContainer)\r\n return;\r\n\r\n setTimeout(() => this.scrollToLatest());\r\n }\r\n\r\n scrollToLatest() {\r\n if (!this.messageContainer)\r\n return;\r\n \r\n let el = this.messageContainer.nativeElement;\r\n el.scrollTop = el.scrollHeight;\r\n }\r\n\r\n jumpTo(message : ChatMessage) {\r\n let element = this.elementRef.nativeElement;\r\n let messageElement = element.querySelector(`banta-chat-message[data-id=\"${message.id}\"]`)\r\n\r\n if (!messageElement) {\r\n alert(`could not find message ${message.id}`);\r\n return;\r\n }\r\n\r\n messageElement.scrollIntoView({ behavior: 'smooth' });\r\n\r\n this.flashMessage(message);\r\n }\r\n\r\n flashMessage(message : ChatMessage) {\r\n if (!message)\r\n return;\r\n \r\n this.flashedMessageId = message.id;\r\n //setTimeout(() => this.flashedMessageId = null, 250);\r\n }\r\n\r\n flashedMessageId : string;\r\n\r\n\r\n mentionsMe(message : ChatMessage) {\r\n if (!this.currentUser)\r\n return false;\r\n\r\n if (message.message.includes(`@${this.currentUser.username}`))\r\n return true;\r\n \r\n return false;\r\n }\r\n \r\n upvoteMessage(message : ChatMessage) {\r\n this._upvoted.next(message);\r\n }\r\n\r\n reportMessage(message : ChatMessage) {\r\n this._reported.next(message);\r\n }\r\n\r\n selectMessage(message : ChatMessage) {\r\n this._selected.next(message);\r\n }\r\n\r\n selectMessageUser(message : ChatMessage) {\r\n this._userSelected.next(message);\r\n }\r\n\r\n avatarForUser(user : User) {\r\n if (user && user.avatarUrl) {\r\n let url = user.avatarUrl;\r\n return `url(${url})`;\r\n }\r\n\r\n return null;\r\n }\r\n}","import { Component, Input, Output, ElementRef, ViewChild } from \"@angular/core\";\r\nimport { Subject, Observable, Subscription } from 'rxjs';\r\n\r\nimport { User, ChatSource, ChatMessage, NewMessageForm, UserAccount } from '@banta/common';\r\nimport { ChatViewComponent } from '../chat-view/chat-view.component';\r\nimport { BantaService, ChatBackendService } from \"../../common\";\r\n\r\n/**\r\n * Chat component\r\n */\r\n@Component({\r\n selector: 'banta-chat',\r\n templateUrl: './banta-chat.component.html',\r\n styleUrls: ['./banta-chat.component.scss']\r\n})\r\nexport class BantaChatComponent {\r\n constructor(\r\n private banta : BantaService,\r\n private backend : ChatBackendService,\r\n private elementRef : ElementRef<HTMLElement>\r\n ) {\r\n }\r\n\r\n private _source : ChatSource;\r\n private _subs = new Subscription();\r\n user : UserAccount = null;\r\n\r\n ngOnInit() {\r\n this._subs.add(this.banta.userChanged.subscribe(user => this.user = user));\r\n }\r\n\r\n ngOnDestroy() {\r\n this._subs.unsubscribe();\r\n }\r\n\r\n @Input()\r\n get source() : ChatSource {\r\n return this._source;\r\n }\r\n\r\n set source(value) {\r\n this._source = value;\r\n }\r\n\r\n @Input()\r\n get topicID() : string {\r\n return this._source.identifier;\r\n }\r\n\r\n set topicID(value) {\r\n this.setSourceFromTopicID(value);\r\n }\r\n\r\n private async setSourceFromTopicID(topicID : string) {\r\n if (this._source && this._source.close)\r\n this._source.close();\r\n this._source = null;\r\n this._source = await this.backend.getSourceForTopic(topicID);\r\n }\r\n\r\n @Input() signInLabel = 'Sign In';\r\n @Input() sendLabel = 'Send';\r\n @Input() permissionDeniedLabel = 'Send';\r\n\r\n private _selected = new Subject<ChatMessage>();\r\n private _reported = new Subject<ChatMessage>();\r\n private _upvoted = new Subject<ChatMessage>();\r\n private _userSelected = new Subject<ChatMessage>();\r\n private _signInSelected = new Subject<void>();\r\n private _permissionDeniedError = new Subject<void>();\r\n\r\n @Output()\r\n get signInSelected(): Observable<void> {\r\n return this._signInSelected;\r\n }\r\n\r\n @Output()\r\n get permissionDeniedError(): Observable<void> {\r\n return this._permissionDeniedError;\r\n }\r\n\r\n showEmojiPanel = false;\r\n\r\n showSignIn() {\r\n this._signInSelected.next();\r\n }\r\n\r\n sendPermissionError() {\r\n this._permissionDeniedError.next();\r\n }\r\n\r\n insertEmoji(emoji) {\r\n let message = this.newMessage.message || '';\r\n\r\n this.newMessage.message = message + emoji;\r\n }\r\n\r\n onKeyDown(event : KeyboardEvent) {\r\n // TODO\r\n }\r\n\r\n @ViewChild('chatView', { static: true })\r\n chatView : ChatViewComponent;\r\n\r\n jumpToMessage(message : ChatMessage) {\r\n if (this.chatView)\r\n this.chatView.jumpTo(message);\r\n }\r\n\r\n select(message : ChatMessage) {\r\n this._selected.next(message);\r\n }\r\n\r\n selectUser(message : ChatMessage) {\r\n this._userSelected.next(message);\r\n }\r\n \r\n report(message : ChatMessage) {\r\n this._reported.next(message);\r\n }\r\n \r\n upvote(message : ChatMessage) {\r\n this._upvoted.next(message);\r\n }\r\n\r\n @Output()\r\n get selected() {\r\n return this._selected;\r\n }\r\n\r\n @Output()\r\n get reported() {\r\n return this._reported;\r\n }\r\n\r\n @Output()\r\n get upvoted() {\r\n return this._upvoted;\r\n }\r\n\r\n @Output()\r\n get userSelected() {\r\n return this._userSelected;\r\n }\r\n\r\n get canChat() {\r\n if (!this.user)\r\n return false;\r\n \r\n if (!this.user.permissions)\r\n return true;\r\n \r\n if (!this.user.permissions.canChat)\r\n return true;\r\n \r\n return this.user.permissions?.canChat(this.source);\r\n }\r\n\r\n newMessage : NewMessageForm = {};\r\n\r\n async sendMessage() {\r\n if (!this.source)\r\n return;\r\n\r\n let text = (this.newMessage.message || '').trim();\r\n this.newMessage.message = '';\r\n\r\n if (text === '')\r\n return;\r\n\r\n let message : ChatMessage = { \r\n user: null,\r\n sentAt: Date.now(),\r\n upvotes: 0,\r\n url: location.href,\r\n message: text\r\n };\r\n\r\n try {\r\n await this.source.send(message);\r\n } catch (e) {\r\n console.error(`Failed to send message: `, message);\r\n console.error(e);\r\n }\r\n }\r\n}","import { NgModule } from \"@angular/core\";\r\nimport { ChatMessageComponent } from './chat-message/chat-message.component';\r\nimport { ChatViewComponent } from './chat-view/chat-view.component';\r\nimport { BantaChatComponent } from './banta-chat/banta-chat.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { EmojiModule } from '../emoji';\r\nimport { LiveChatMessageComponent } from './live-chat-message.component';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\nconst COMPONENTS = [\r\n ChatMessageComponent,\r\n LiveChatMessageComponent,\r\n ChatViewComponent,\r\n BantaChatComponent\r\n];\r\n\r\n@NgModule({\r\n declarations: COMPONENTS,\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n EmojiModule\r\n ],\r\n exports: COMPONENTS\r\n})\r\nexport class ChatModule {\r\n}","import { Component, Input, Output } from \"@angular/core\";\r\nimport { ChatMessage } from '@banta/common';\r\nimport { Subject, Observable } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'banta-live-message',\r\n template: `\r\n <ng-container *ngIf=\"message\">\r\n <banta-live-chat-message\r\n *ngIf=\"viewType === 'chat'\"\r\n [message]=\"message\"\r\n (upvoted)=\"upvote(message)\"\r\n (reported)=\"report(message)\"\r\n (selected)=\"select(message)\">\r\n </banta-live-chat-message>\r\n\r\n <banta-live-comment \r\n *ngIf=\"viewType === 'comment'\"\r\n [message]=\"message\"\r\n (upvoted)=\"upvote(message)\"\r\n (reported)=\"report(message)\"\r\n (selected)=\"select(message)\">\r\n </banta-live-comment>\r\n </ng-container>\r\n `,\r\n styles: [``]\r\n})\r\nexport class LiveMessageComponent {\r\n constructor() {\r\n\r\n }\r\n\r\n private _message : ChatMessage;\r\n private _upvoted = new Subject<void>();\r\n private _reported = new Subject<void>();\r\n private _selected = new Subject<void>();\r\n\r\n viewType : string;\r\n\r\n @Output() \r\n get upvoted(): Observable<void> {\r\n return this._upvoted;\r\n }\r\n\r\n @Output() \r\n get reported(): Observable<void> {\r\n return this._reported;\r\n }\r\n \r\n @Output() \r\n get selected(): Observable<void> {\r\n return this._selected;\r\n }\r\n\r\n @Input()\r\n get message() : ChatMessage {\r\n return this._message;\r\n }\r\n\r\n set message(value) {\r\n this._message = value;\r\n this.viewType = this.getViewType(value);\r\n }\r\n\r\n private getViewType(message : ChatMessage) {\r\n if (message.topicId.endsWith('_firehose'))\r\n return 'chat';\r\n else if (message.topicId.endsWith('_thepoint'))\r\n return 'comment';\r\n\r\n return 'comment';\r\n }\r\n\r\n upvote() {\r\n this._upvoted.next();\r\n }\r\n\r\n report() {\r\n this._reported.next();\r\n }\r\n\r\n select() {\r\n this._selected.next();\r\n }\r\n\r\n}","import { Component, Output, Input, HostBinding } from \"@angular/core\";\r\nimport { Subject } from 'rxjs';\r\nimport { ChatMessage, User } from '@banta/common';\r\n\r\n@Component({\r\n selector: 'banta-comment',\r\n templateUrl: './comment.component.html',\r\n styleUrls: ['./comment.component.scss']\r\n})\r\nexport class CommentComponent {\r\n private _reported = new Subject<void>();\r\n private _selected = new Subject<void>();\r\n private _upvoted = new Subject<void>();\r\n\r\n\tprivate _userSelected = new Subject<void>();\r\n\tprivate _avatarSelected = new Subject<User>();\r\n\tprivate _usernameSelected = new Subject<User>();\r\n \r\n ngOnInit() {\r\n let maxTime = 500;\r\n let minTime = 0;\r\n let randomTime = minTime + Math.random() * (maxTime - minTime);\r\n\r\n setTimeout(() => {\r\n this.isNew = true;\r\n this.visible = true;\r\n setTimeout(() => this.isNew = false, 1000);\r\n }, randomTime);\r\n }\r\n\r\n @HostBinding('class.new')\r\n isNew = false;\r\n\r\n @HostBinding('class.visible')\r\n visible = false;\r\n\r\n @Input()\r\n message : ChatMessage;\r\n\r\n @Input()\r\n showReplyAction = true;\r\n\r\n\t@Output()\r\n get userSelected() {\r\n return this._userSelected.asObservable();\r\n }\r\n\r\n @Output()\r\n get usernameSelected() {\r\n return this._usernameSelected.asObservable();\r\n }\r\n\r\n\t@Output()\r\n\tget avatarSelected() {\r\n\t\treturn this._avatarSelected.asObservable();\r\n\t}\r\n\r\n @Output()\r\n get reported() {\r\n return this._reported.asObservable();\r\n }\r\n \r\n\r\n @Output()\r\n get upvoted() {\r\n return this._upvoted.asObservable();\r\n }\r\n\r\n @Output()\r\n get selected() {\r\n return this._selected.asObservable();\r\n }\r\n\r\n @HostBinding('attr.data-comment-id')\r\n get commentId() {\r\n return this.message?.id;\r\n }\r\n\r\n report() {\r\n this._reported.next();\r\n }\r\n \r\n upvote() {\r\n this._upvoted.next();\r\n }\r\n\r\n select() {\r\n this._selected.next();\r\n }\r\n\r\n\tselectUser() {\r\n this._userSelected.next();\r\n }\r\n\r\n selectUsername(user: User) {\r\n this._usernameSelected.next(user);\r\n\t\tthis.selectUser();\r\n }\r\n\r\n\tselectAvatar(user: User) {\r\n\t\tthis._avatarSelected.next(user);\r\n\t\tthis.selectUser();\r\n\t}\r\n \r\n avatarForUser(user : User) {\r\n if (user && user.avatarUrl) {\r\n let url = user.avatarUrl;\r\n return `url(${url})`;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n}","import { Component, Input, ViewChild, ElementRef, Output, HostBinding } from \"@angular/core\";\r\nimport { User, ChatMessage, ChatSource } from '@banta/common';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { ChatBackendService } from \"../../common\";\r\n\r\n@Component({\r\n selector: 'banta-comment-view',\r\n templateUrl: './comment-view.component.html',\r\n styleUrls: ['./comment-view.component.scss']\r\n})\r\nexport class CommentViewComponent {\r\n constructor(\r\n private backend : ChatBackendService\r\n ) {\r\n\r\n }\r\n\r\n private _sourceSubs = new Subscription();\r\n private _source : ChatSource;\r\n private _selected = new Subject<ChatMessage>();\r\n private _upvoted = new Subject<ChatMessage>();\r\n private _reported = new Subject<ChatMessage>();\r\n private _userSelected = new Subject<ChatMessage>();\r\n private _usernameSelected = new Subject<User>();\r\n private _avatarSelected = new Subject<User>();\r\n\r\n @Input()\r\n showEmptyState = true;\r\n\r\n @Input() \r\n allowReplies = true;\r\n\r\n @Input()\r\n @HostBinding('class.fixed-height')\r\n fixedHeight : boolean;\r\n\r\n @Output()\r\n get selected() {\r\n return this._selected;\r\n }\r\n\r\n @Output()\r\n get userSelected() {\r\n return this._userSelected;\r\n }\r\n\r\n @Output()\r\n get reported() {\r\n return this._reported;\r\n }\r\n\r\n @Output()\r\n get upvoted() {\r\n return this._upvoted;\r\n }\r\n\r\n\t@Output()\r\n\tget usernameSelected() {\r\n\t\treturn this._usernameSelected;\r\n\t}\r\n\r\n\t@Output()\r\n\tget avatarSelected() {\r\n\t\treturn this._avatarSelected;\r\n\t}\r\n\r\n menuMessage : ChatMessage = null;\r\n messages : ChatMessage[] = [];\r\n currentUser : User;\r\n\r\n @Input()\r\n get source() {\r\n return this._source;\r\n }\r\n\r\n upvoteMessage(message : ChatMessage) {\r\n this._upvoted.next(message);\r\n }\r\n\r\n reportMessage(message : ChatMessage) {\r\n this._reported.next(message);\r\n }\r\n \r\n selectMessage(message : ChatMessage) {\r\n this._selected.next(message);\r\n }\r\n\r\n selectMessageUser(message : ChatMessage) {\r\n this._userSelected.next(message);\r\n }\r\n\r\n\tselectUsername(user: User) {\r\n\t\tthis._usernameSelected.next(user);\r\n\t}\r\n\r\n\tselectAvatar(user: User) {\r\n\t\tthis._avatarSelected.next(user);\r\n\t}\r\n\r\n set source(value) {\r\n if (this._sourceSubs) {\r\n this._sourceSubs.unsubscribe();\r\n this._sourceSubs = null;\r\n }\r\n this._source = value;\r\n\r\n if (value) {\r\n let messages = (value.messages || []).slice();\r\n this.messages = messages;\r\n this.olderMessages = messages.splice(this.maxVisibleMessages, messages.length);\r\n this.hasMore = this.olderMessages.length > 0;\r\n\r\n this._sourceSubs = new Subscription();\r\n this._sourceSubs.add(this._source.messageReceived.subscribe(msg => this.messageReceived(msg)));\r\n this._sourceSubs.add(this._source.messageSent.subscribe(msg => this.messageSent(msg)));\r\n\r\n if (this._source.currentUserChanged) {\r\n this._sourceSubs.add(\r\n this._source.currentUserChanged.subscribe(user => this.currentUser = user)\r\n );\r\n }\r\n }\r\n }\r\n\r\n @Input()\r\n genericAvatarUrl : string;\r\n \r\n @ViewChild('messageContainer')\r\n messageContainer : ElementRef<HTMLElement>;\r\n\r\n @Input()\r\n maxMessages = 2000;\r\n\r\n @Input()\r\n maxVisibleMessages : number = 200;\r\n\r\n @Input()\r\n newestLast = false;\r\n\r\n isViewingMore = false;\r\n isLoadingMore = false;\r\n hasMore = false;\r\n\r\n newMessages : ChatMessage[] = [];\r\n olderMessages : ChatMessage[] = [];\r\n\r\n messageIdentity(index : number, chatMessage : ChatMessage) {\r\n return chatMessage.id;\r\n }\r\n\r\n async showNew() {\r\n this.isViewingMore = false;\r\n this.messages = this.newMessages.splice(0, this.newMessages.length).concat(this.messages);\r\n let overflow = this.messages.splice(this.maxVisibleMessages, this.messages.length);\r\n this.olderMessages = overflow.concat(this.olderMessages);\r\n this.olderMessages.splice(this.maxMessages - this.maxVisibleMessages, this.olderMessages.length);\r\n }\r\n\r\n async showMore() {\r\n this.isViewingMore = true;\r\n\r\n if (this.olderMessages.length > 0) {\r\n this.isLoadingMore = false;\r\n this.messages = this.messages.concat(this.olderMessages.splice(0, 50));\r\n } else {\r\n if (this.source.loadAfter) {\r\n this.isLoadingMore = true;\r\n \r\n let lastMessage = this.messages[this.messages.length - 1];\r\n let messages = await this.source.loadAfter(lastMessage, 100);\r\n this.messages = this.messages.concat(messages);\r\n this.isLoadingMore = false;\r\n if (messages.length === 0)\r\n this.hasMore = false;\r\n\r\n } else {\r\n this.hasMore = false;\r\n }\r\n }\r\n }\r\n\r\n private addMessage(message : ChatMessage) {\r\n let destination = this.messages;\r\n let bucket = this.olderMessages;\r\n\r\n if (this.isViewingMore) {\r\n destination = this.newMessages;\r\n bucket = null;\r\n }\r\n\r\n if (this.newestLast) {\r\n destination.push(message);\r\n let overflow = destination.splice(this.maxVisibleMessages, destination.length);\r\n bucket?.push(...overflow);\r\n } else {\r\n destination.unshift(message);\r\n let overflow = destination.splice(this.maxVisibleMessages, destination.length);\r\n bucket?.unshift(...overflow);\r\n }\r\n\r\n if (bucket?.length > 0)\r\n this.hasMore = true;\r\n }\r\n\r\n private messageReceived(message : ChatMessage) {\r\n this.addMessage(message);\r\n\r\n if (this.isScrolledToLatest())\r\n setTimeout(() => this.scrollToLatest());\r\n }\r\n\r\n isScrolledToLatest() {\r\n if (!this.messageContainer)\r\n return false;\r\n\r\n let el = this.messageContainer.nativeElement;\r\n let currentScroll = el.scrollTop;\r\n let currentTotal = el.scrollHeight - el.offsetHeight;\r\n \r\n return currentScroll > currentTotal - 10;\r\n }\r\n\r\n private messageSent(message : ChatMessage) {\r\n this.addMessage(message);\r\n \r\n if (!this.messageContainer)\r\n return;\r\n\r\n this.scrollToLatest();\r\n }\r\n\r\n scrollToLatest() {\r\n if (!this.messageContainer)\r\n return;\r\n \r\n let el = this.messageContainer.nativeElement;\r\n el.scrollTop = el.scrollHeight;\r\n }\r\n\r\n mentionsMe(message : ChatMessage) {\r\n if (!this.currentUser)\r\n return false;\r\n\r\n if (message.message.includes(`@${this.currentUser.username}`))\r\n return true;\r\n \r\n return false;\r\n }\r\n\r\n avatarForUser(user : User) {\r\n let url = this.genericAvatarUrl;\r\n\r\n if (user && user.avatarUrl)\r\n url = user.avatarUrl;\r\n \r\n return `url(${url})`;\r\n }\r\n}","import { Component, ElementRef, Input, Output } from '@angular/core';\r\nimport { User, ChatSource, ChatMessage, UserAccount } from '@banta/common';\r\nimport { HashTag } from '../comment-field/comment-field.component';\r\nimport { Subject, Observable, Subscription } from 'rxjs';\r\nimport { ChatBackendService } from '../../common';\r\nimport { BantaService } from '../../common';\r\n\r\n/**\r\n * Comments component\r\n */\r\n@Component({\r\n selector: 'banta-comments',\r\n templateUrl: './banta-comments.component.html',\r\n styleUrls: ['./banta-comments.component.scss']\r\n})\r\nexport class BantaCommentsComponent {\r\n constructor(\r\n private banta : BantaService,\r\n private backend : ChatBackendService,\r\n private elementRef : ElementRef<HTMLElement>\r\n ) {\r\n }\r\n\r\n private _upvoted = new Subject<ChatMessage>();\r\n private _reported = new Subject<ChatMessage>();\r\n private _selected = new Subject<ChatMessage>();\r\n private _userSelected = new Subject<ChatMessage>();\r\n\r\n private _usernameSelected = new Subject<User>();\r\n private _avatarSelected = new Subject<User>();\r\n\r\n private _source: ChatSource;\r\n\r\n private _subs = new Subscription();\r\n\r\n @Input() hashtags : HashTag[] = [\r\n { hashtag: 'error', description: 'Cause an error' },\r\n { hashtag: 'timeout', description: 'Cause a slow timeout error' },\r\n { hashtag: 'slow', description: 'Be slow when this message is posted' },\r\n ];\r\n\r\n @Input() participants : User[] = [];\r\n\r\n ngOnInit() {\r\n this._subs.add(\r\n this.banta.userChanged.subscribe(user => this.user = user)\r\n )\r\n }\r\n\r\n ngOnDestroy() {\r\n this._subs.unsubscribe();\r\n }\r\n\r\n @Input()\r\n get source(): ChatSource {\r\n return this._source;\r\n }\r\n\r\n set source(value) {\r\n this._source = value;\r\n }\r\n\r\n @Input() fixedHeight : boolean;\r\n @Input() maxMessages : number;\r\n @Input() maxVisibleMessages : number;\r\n @Input() genericAvatarUrl : string;\r\n\r\n @Input()\r\n get topicID(): string {\r\n return this._source.identifier;\r\n }\r\n\r\n set topicID(value) {\r\n this.setSourceFromTopicID(value);\r\n }\r\n\r\n private async setSourceFromTopicID(topicID: string) {\r\n if (this._source && this._source.close)\r\n this._source.close();\r\n this._source = null;\r\n this._source = await this.backend.getSourceForTopic(topicID);\r\n\r\n this._source.messageReceived.subscribe(m => this.addParticipant(m));\r\n this._source.messageSent.subscribe(m => this.addParticipant(m));\r\n this._source.messages.forEach(m => this.addParticipant(m));\r\n }\r\n\r\n private addParticipant(message : ChatMessage) {\r\n if (!message || !message.user || !message.user.id)\r\n return;\r\n\r\n let existing = this.participants.find(x => x.id === message.user.id);\r\n if (existing)\r\n return;\r\n this.participants.push(message.user);\r\n }\r\n\r\n showSignIn() {\r\n this._signInSelected.next();\r\n }\r\n\r\n showEditAvatar() {\r\n this._editAvatarSelected.next();\r\n }\r\n\r\n user : UserAccount;\r\n \r\n private _newMessageText : string;\r\n\r\n get newMessageText(): string {\r\n return this._newMessageText;\r\n }\r\n\r\n set newMessageText(value) {\r\n this._newMessageText = value;\r\n if (this._newMessageText === '' && this.sendError) \r\n setTimeout(() => this.sendError = null);\r\n }\r\n\r\n @Input() signInLabel = 'Sign In';\r\n @Input() sendLabel = 'Send';\r\n @Input() replyLabel = 'Reply'; \r\n @Input() sendingLabel = 'Sending';\r\n @Input() permissionDeniedLabel = 'Send';\r\n @Input() postCommentLabel = 'Post a comment';\r\n @Input() postReplyLabel = 'Post a reply';\r\n\r\n private _signInSelected = new Subject<void>();\r\n private _permissionDeniedError = new Subject<void>();\r\n private _editAvatarSelected = new Subject<void>();\r\n\r\n @Output()\r\n get signInSelected(): Observable<void> {\r\n return this._signInSelected;\r\n }\r\n\r\n @Output()\r\n get editAvatarSelected() {\r\n return this._editAvatarSelected;\r\n }\r\n\r\n @Output()\r\n get permissionDeniedError(): Observable<void> {\r\n return this._permissionDeniedError;\r\n }\r\n\r\n showPermissionDenied() {\r\n this._permissionDeniedError.next();\r\n }\r\n\r\n get canComment() {\r\n if (!this.user)\r\n return false;\r\n \r\n if (!this.user.permissions)\r\n return true;\r\n \r\n if (!this.user.permissions.canComment)\r\n return true;\r\n \r\n return this.user.permissions?.canComment(this.source);\r\n }\r\n\r\n @Output()\r\n get upvoted() {\r\n return this._upvoted.asObservable();\r\n }\r\n\r\n @Output()\r\n get reported() {\r\n return this._reported.asObservable();\r\n }\r\n\r\n @Output()\r\n get selected() {\r\n return this._selected.asObservable();\r\n }\r\n @Output()\r\n get userSelected() {\r\n return this._userSelected.asObservable();\r\n }\r\n\r\n @Output()\r\n get usernameSelected() {\r\n return this._usernameSelected.asObservable();\r\n }\r\n\r\n @Output()\r\n get avatarSelected() {\r\n return this._avatarSelected.asObservable();\r\n }\r\n\r\n onKeyDown(event: KeyboardEvent) {\r\n }\r\n\r\n insertEmoji(text: string) {\r\n this.newMessageText += text;\r\n }\r\n\r\n onReplyKeyDown(event : KeyboardEvent) {\r\n }\r\n\r\n insertReplyEmoji(text : string) {\r\n this.replyMessage += text;\r\n }\r\n\r\n sending = false;\r\n sendError : Error;\r\n expandError = false;\r\n\r\n indicateError(message : string) {\r\n this.sendError = new Error(message);\r\n setTimeout(() => {\r\n this.expandError = true;\r\n setTimeout(() => {\r\n this.expandError = false;\r\n }, 5*1000);\r\n });\r\n }\r\n\r\n async upvoteMessage(message : ChatMessage) {\r\n this._upvoted.next(message);\r\n await this.backend.upvoteMessage(message.topicId, message.parentMessageId ? message.parentMessageId : message.id, message.parentMessageId ? message.id : undefined);\r\n }\r\n\r\n reportMessage(message: ChatMessage) {\r\n this._reported.next(message);\r\n }\r\n\r\n selectedMessage : ChatMessage;\r\n selectedMessageThread : ChatSource;\r\n\r\n replyMessage : string;\r\n\r\n async unselectMessage() {\r\n let message = this.selectedMessage;\r\n \r\n this._selected.next(null);\r\n this.selectedMessage = null;\r\n if (this.selectedMessageThread) {\r\n if (this.selectedMessageThread.close)\r\n this.selectedMessageThread.close();\r\n this.selectedMessageThread = null;\r\n }\r\n\r\n if (message)\r\n setTimeout(() => this.scrollToMessage(message));\r\n }\r\n\r\n selectedMessageVisible = false;\r\n\r\n async selectMessage(message : ChatMessage) {\r\n this._selected.next(message);\r\n this.selectedMessage = message;\r\n setTimeout(() => this.selectedMessageVisible = true);\r\n setTimeout(async () => {\r\n this.selectedMessageThread = await this.backend.getSourceForThread(this.topicID, message.id);\r\n }, 250);\r\n }\r\n\r\n selectMessageUser(message: ChatMessage) {\r\n this._userSelected.next(message);\r\n }\r\n\r\n selectUsername(user: User) {\r\n this._usernameSelected.next(user);\r\n }\r\n\r\n selectAvatar(user: User) {\r\n this._avatarSelected.next(user);\r\n }\r\n\r\n async sendReply() {\r\n await this.selectedMessageThread.send({\r\n message: this.replyMessage,\r\n parentMessageId: this.selectedMessage.id,\r\n upvotes: 0,\r\n user: this.user,\r\n submessages: [],\r\n topicId: this.topicID,\r\n sentAt: Date.now(),\r\n updatedAt: Date.now()\r\n })\r\n this.replyMessage = '';\r\n }\r\n\r\n scrollToMessage(message : ChatMessage) {\r\n let el = this.elementRef.nativeElement.querySelector(`[data-comment-id=\"${message.id}\"]`);\r\n if (!el)\r\n return;\r\n el.scrollIntoView({ block: 'center', inline: 'start' });\r\n }\r\n}","import { Component, Input, Output } from '@angular/core';\r\nimport { ChatMessage } from '@banta/common';\r\nimport { Subject, Observable } from 'rxjs';\r\nimport { ChatBackendService } from '../common';\r\n\r\n@Component({\r\n selector: 'banta-live-comment',\r\n template: `\r\n <banta-comment \r\n *ngIf=\"message\"\r\n [message]=\"message\"\r\n (upvoted)=\"upvote()\"\r\n (reported)=\"report()\"\r\n (selected)=\"select()\"\r\n ></banta-comment>\r\n `,\r\n styles: [``]\r\n})\r\nexport class LiveCommentComponent {\r\n constructor(\r\n private backend : ChatBackendService\r\n ) {\r\n\r\n }\r\n\r\n private _message : ChatMessage;\r\n private _upvoted = new Subject<void>();\r\n private _reported = new Subject<void>();\r\n private _selected = new Subject<void>();\r\n\r\n @Output()\r\n get upvoted() : Observable<void> {\r\n return this._upvoted;\r\n }\r\n \r\n @Output()\r\n get reported() : Observable<void> {\r\n return this._reported;\r\n }\r\n\r\n @Output()\r\n get selected() : Observable<void> {\r\n return this._selected;\r\n }\r\n \r\n @Input()\r\n get message() : ChatMessage {\r\n return this._message;\r\n }\r\n\r\n private unsubscribe : Function;\r\n\r\n set message(value) {\r\n let originalId = null;\r\n if (this._message)\r\n originalId = this._message.id;\r\n \r\n this._message = value;\r\n\r\n if (value && originalId === value.id) {\r\n return;\r\n }\r\n \r\n if (this.unsubscribe)\r\n this.unsubscribe();\r\n \r\n if (value) {\r\n this.unsubscribe = this.backend.watchMessage(value, message => this.message = message);\r\n }\r\n }\r\n\r\n report() {\r\n this._reported.next();\r\n }\r\n \r\n upvote() {\r\n this._upvoted.next();\r\n }\r\n\r\n select() {\r\n this._selected.next();\r\n }\r\n}","import { Component, ElementRef, Input, Output, ViewChild } from \"@angular/core\";\r\nimport { ChatMessage, ChatSource, User } from \"@banta/common\";\r\nimport { Observable, Subject } from \"rxjs\";\r\nimport { EMOJIS } from \"../../emoji\";\r\n\r\nexport interface AutoCompleteOption {\r\n label : string;\r\n action? : () => void;\r\n}\r\n\r\nexport interface HashTag {\r\n hashtag : string;\r\n description : string;\r\n}\r\n\r\n@Component({\r\n selector: 'banta-comment-field',\r\n templateUrl: './comment-field.component.html',\r\n styleUrls: ['./comment-field.component.scss']\r\n})\r\nexport class CommentFieldComponent {\r\n\r\n @Input() source : ChatSource;\r\n @Input() user : User;\r\n @Input() canComment = true;\r\n\r\n @Output() signInSelected = new Subject<void>();\r\n @Output() editAvatarSelected = new Subject<void>();\r\n\r\n sending = false;\r\n sendError : Error;\r\n expandError = false;\r\n text : string = '';\r\n @Input() sendLabel = 'Send';\r\n @Input() sendingLabel = 'Sending';\r\n @Input() label = 'Post a comment';\r\n @Input() permissionDeniedLabel = 'Unavailable'\r\n @Input() signInLabel = 'Sign In';\r\n @Input() placeholder = '';\r\n \r\n @ViewChild('autocomplete') autocompleteEl : ElementRef<HTMLElement>;\r\n @ViewChild('autocompleteContainer') autocompleteContainerEl : ElementRef<HTMLElement>;\r\n @ViewChild('textarea') textareaEl : ElementRef<HTMLTextAreaElement>;\r\n\r\n @Input() hashtags : HashTag[];\r\n @Input() participants : User[] = [];\r\n\r\n private _permissionDeniedError = new Subject<void>();\r\n\r\n @Output()\r\n get permissionDeniedError(): Observable<void> {\r\n return this._permissionDeniedError;\r\n }\r\n\r\n ngAfterViewInit() {\r\n let root = document.body.querySelector('[ng-version]') || document.body;\r\n root.appendChild(this.autocompleteEl.nativeElement);\r\n }\r\n\r\n showPermissionDenied() {\r\n this._permissionDeniedError.next();\r\n }\r\n\r\n showAutoComplete(options : AutoCompleteOption[]) {\r\n this.autoCompleteSelected = 0;\r\n this.autocompleteOptions = options;\r\n let pos = this.autocompleteContainerEl.nativeElement.getBoundingClientRect();\r\n let size = this.autocompleteEl.nativeElement.getBoundingClientRect();\r\n\r\n this.autocompleteEl.nativeElement.style.left = `${window.scrollX + pos.left}px`;\r\n this.autocompleteEl.nativeElement.style.top = `${window.scrollY + pos.top}px`;\r\n this.autocompleteEl.nativeElement.style.width = `${pos.width}px`;\r\n this.autocompleteVisible = true;\r\n }\r\n\r\n autocompleteVisible = false;\r\n autocompleteOptions : AutoCompleteOption[] = [];\r\n\r\n activateAutoComplete(option : AutoCompleteOption) {\r\n option.action();\r\n this.dismissAutoComplete();\r\n }\r\n\r\n dismissAutoComplete() {\r\n this.autocompleteVisible = false;\r\n this.completionFunc = null;\r\n this.completionPrefix = '';\r\n }\r\n\r\n indicateError(message : string) {\r\n this.sendError = new Error(message);\r\n setTimeout(() => {\r\n this.expandError = true;\r\n setTimeout(() => {\r\n this.expandError = false;\r\n }, 5*1000);\r\n });\r\n }\r\n\r\n completionFunc : (str : string) => AutoCompleteOption[];\r\n\r\n completionPrefix : string;\r\n autoCompleteSelected : number = 0;\r\n\r\n async autocomplete(replacement : string) {\r\n let el = this.textareaEl.nativeElement;\r\n this.text = this.text.slice(0, el.selectionStart - this.completionPrefix.length) + replacement + this.text.slice(el.selectionStart);\r\n }\r\n\r\n async insert(str : string) {\r\n let el = this.textareaEl.nativeElement;\r\n this.text = this.text.slice(0, el.selectionStart) + str + this.text.slice(el.selectionStart);\r\n }\r\n\r\n async onKeyDown(event : KeyboardEvent) {\r\n console.log(event.key);\r\n\r\n\r\n if (this.autocompleteVisible) {\r\n if (event.key === 'Escape') {\r\n this.dismissAutoComplete();\r\n return;\r\n }\r\n\r\n if (event.key === 'Shift') {\r\n return;\r\n }\r\n\r\n if (event.key === 'Enter') {\r\n this.activateAutoComplete(this.autocompleteOptions[this.autoCompleteSelected]);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n if (event.key === 'ArrowUp') {\r\n if (this.autoCompleteSelected === 0)\r\n this.autoCompleteSelected = this.autocompleteOptions.length - 1;\r\n else\r\n this.autoCompleteSelected = this.autoCompleteSelected - 1;\r\n event.stopPropagation();\r\n event.preventDefault();\r\n return;\r\n } else if (event.key === 'ArrowDown') {\r\n this.autoCompleteSelected = (this.autoCompleteSelected + 1) % this.autocompleteOptions.length;\r\n event.stopPropagation();\r\n event.preventDefault();\r\n return;\r\n }\r\n }\r\n\r\n if (event.key === 'Enter' && event.ctrlKey) {\r\n await this.sendMessage();\r\n return;\r\n }\r\n \r\n if (this.completionFunc) {\r\n if (event.key === 'Backspace') {\r\n this.completionPrefix = this.completionPrefix.slice(0, this.completionPrefix.length - 1);\r\n\r\n if (this.completionPrefix === '') {\r\n this.dismissAutoComplete();\r\n return;\r\n }\r\n } else if (event.key === ' ' || event.key.length > 1) {\r\n this.dismissAutoComplete();\r\n return;\r\n } else {\r\n this.completionPrefix += event.key;\r\n }\r\n\r\n this.showAutoComplete(this.completionFunc(this.completionPrefix));\r\n } else {\r\n if (event.key === ':') {\r\n this.startAutoComplete(event, prefix => {\r\n prefix = prefix.slice(1);\r\n\r\n // makes :-), :-( etc work (as they are \":)\" etc in the db)\r\n if (prefix.startsWith('-'))\r\n prefix = prefix.slice(1);\r\n \r\n return Object.keys(EMOJIS)\r\n .filter(k => k.includes(prefix) || EMOJIS[k].keywords.some(kw => kw.includes(prefix)))\r\n .map(k => ({\r\n label: `${EMOJIS[k].char} ${k}`,\r\n action: () => this.autocomplete(EMOJIS[k].char)\r\n }))\r\n .slice(0, 5)\r\n ;\r\n });\r\n } else if (event.key === '@') {\r\n this.startAutoComplete(event, prefix => {\r\n prefix = prefix.slice(1);\r\n return this.participants.filter(x => x.username.includes(prefix))\r\n .map(p => ({\r\n label: `@${p.username} -- ${p.displayName}`,\r\n action: () => this.autocomplete(`@${p.username}`)\r\n }))\r\n ;\r\n });\r\n } else if (event.key === '#') {\r\n this.startAutoComplete(event, prefix => {\r\n prefix = prefix.slice(1);\r\n \r\n return this.hashtags\r\n .filter(ht => ht.hashtag.includes(prefix))\r\n .map(ht => ({\r\n label: `#${ht.hashtag}${ht.description ? ` -- ${ht.description}` : ``}`,\r\n action: () => this.autocomplete(`#${ht.hashtag}`)\r\n }))\r\n .slice(0, 5)\r\n ;\r\n });\r\n }\r\n }\r\n }\r\n\r\n startAutoComplete(event : KeyboardEvent, completionFunc : (str : string) => AutoCompleteOption[]) {\r\n this.completionPrefix = event.key;\r\n this.completionFunc = completionFunc;\r\n this.showAutoComplete(this.completionFunc(this.completionPrefix));\r\n }\r\n\r\n onBlur() {\r\n setTimeout(() => this.dismissAutoComplete(), 250);\r\n }\r\n\r\n insertEmoji(text : string) {\r\n this.text += text;\r\n }\r\n\r\n showSignIn() {\r\n this.signInSelected.next();\r\n }\r\n\r\n showEditAvatar() {\r\n this.editAvatarSelected.next();\r\n }\r\n\r\n async sendMessage() {\r\n if (!this.source)\r\n return;\r\n \r\n this.sending = true;\r\n this.sendError = null;\r\n try {\r\n let text = (this.text || '').trim();\r\n\r\n if (text === '')\r\n return;\r\n\r\n let message : ChatMessage = {\r\n user: this.user,\r\n sentAt: Date.now(),\r\n url: location.href,\r\n upvotes: 0,\r\n message: text\r\n };\r\n\r\n try {\r\n await this.source.send(message);\r\n this.text = '';\r\n } catch (e) {\r\n this.indicateError(`Could not send: ${e.message}`);\r\n console.error(`Failed to send message: `, message);\r\n console.error(e);\r\n }\r\n } finally {\r\n this.sending = false;\r\n }\r\n }\r\n\r\n}","import { NgModule } from '@angular/core';\r\nimport { CommentComponent } from './comment/comment.component';\r\nimport { CommentViewComponent } from './comment-view/comment-view.component';\r\nimport { BantaCommentsComponent } from './banta-comments/banta-comments.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { BantaCommonModule } from '../common/common.module';\r\nimport { LiveCommentComponent } from './live-comment.component';\r\nimport { EmojiModule } from '../emoji';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { TextFieldModule } from '@angular/cdk/text-field';\r\nimport { CommentFieldComponent } from './comment-field/comment-field.component';\r\n\r\nconst COMPONENTS = [\r\n CommentComponent,\r\n CommentViewComponent,\r\n BantaCommentsComponent,\r\n LiveCommentComponent,\r\n CommentFieldComponent\r\n];\r\n\r\n@NgModule({\r\n declarations: COMPONENTS,\r\n imports: [\r\n CommonModule,\r\n TextFieldModule,\r\n FormsModule,\r\n MatIconModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatButtonModule,\r\n MatMenuModule,\r\n MatProgressSpinnerModule,\r\n BantaCommonModule,\r\n EmojiModule\r\n ],\r\n exports: COMPONENTS\r\n})\r\nexport class CommentsModule {\r\n}","import { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { BantaCommentsComponent, CommentsModule } from './comments';\r\nimport { BantaChatComponent, ChatModule } from './chat';\r\nimport { EmojiModule } from './emoji';\r\nimport { BantaComponent } from './banta/banta.component';\r\nimport { BantaLogoComponent } from './banta-logo.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { BantaCommonModule } from './common/common.module';\r\nimport { LiveMessageComponent } from './live-message.component';\r\nimport { MatButtonModule } from \"@angular/material/button\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\r\nimport { MatMenuModule } from \"@angular/material/menu\";\r\nimport { MatDialogModule } from \"@angular/material/dialog\";\r\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\r\nimport { MatInputModule } from \"@angular/material/input\";\r\nimport { MatProgressSpinnerModule } from \"@angular/material/progress-spinner\";\r\nimport { BantaService } from './common';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n BantaCommonModule,\r\n CommentsModule,\r\n ChatModule,\r\n EmojiModule,\r\n \r\n MatIconModule,\r\n MatButtonModule,\r\n MatTooltipModule,\r\n MatMenuModule,\r\n MatDialogModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatProgressSpinnerModule\r\n ],\r\n declarations: [\r\n BantaComponent,\r\n BantaLogoComponent,\r\n LiveMessageComponent\r\n ],\r\n exports: [\r\n BantaComponent,\r\n BantaLogoComponent,\r\n LiveMessageComponent,\r\n ChatModule,\r\n CommentsModule\r\n ]\r\n})\r\nexport class BantaSdkModule {\r\n static forRoot(): ModuleWithProviders<BantaSdkModule> {\r\n return {\r\n ngModule: BantaSdkModule,\r\n providers: [\r\n BantaService\r\n ]\r\n }\r\n }\r\n}","import { Subject, Observable, ConnectableObservable } from 'rxjs';\r\nimport { publish } from 'rxjs/operators';\r\n\r\nexport interface LazyConnectionOptions<T> {\r\n start : (subject : Subject<T>) => void;\r\n stop : () => void;\r\n}\r\n\r\nexport function lazyConnection<T>(options : LazyConnectionOptions<T>): Observable<T> {\r\n\r\n let obs = new Observable(observer => {\r\n let subject = new Subject<T>();\r\n let subscription = subject.subscribe(observer);\r\n\r\n options.start(subject);\r\n return () => {\r\n subscription.unsubscribe();\r\n options.stop();\r\n };\r\n });\r\n \r\n return (<ConnectableObservable<T>>obs.pipe(publish())).refCount();\r\n}"]}