DOSAR, Reportaje

Hai să ne jucăm serios!

March 8th, 2011, com 201 comentarii

Sema Parc”, zona Regie – Bucureşti. Două turnuri din sticlă şi oţel, pe numele lor „Riverview House” şi „Atrium House” contrastează puternic cu peisajul postindustrial al vechii fabrici de maşini „Semănătoarea” din dreapta râului Dâmboviţa.

Hai să ne jucăm serios!

Nu este chiar Silicon Valley, dar într-o zonă a Capitalei precum Grozăveşti, unde cel mai interesant punct atractiv e abia finalizatul pod suspendat al primarului Oprescu, cele două turnuleţe chiar par aduse dintr-un film sci-fi.

River Invest, dezvoltatorii parcului de afa­ceri Sema, au finalizat deja prima parte a proiectului imobiliar urmând ca în viitor să mai construiască în zonă patru clădiri şi spaţii rezidenţiale. Birourile turnurilor au fost deja închiriate în totalitate de firme ce activează în domenii diverse, de la asigurări şi arhitectură până la radiodifuziune şi electricitate. Dea­supra intrărilor cu uşi rulante ale modernelor structuri, prin pereţii de sticlă poţi vedea siluete umane care se mişcă printre mese, computere şi plante ornamentale exotice.

În Atrium House se află sediul studioului de jocuri pentru telefoane mobile Namco-Bandai Networks România. E vorba de o încăpere lumi­noasă imensă, cu multe rânduri de mese despărţite de câteva camere cu pereţi din sticlă. Într-un astfel de birou transparent am fost primiţi la o discuţie pe tema naturii organiza- ţionale a firmei de către Andrei Lopată, admin­istratorul companiei şi unul dintre pionierii industriei româneşti de jocuri. Ne întâmpină voios, e îmbrăcat casual, în blugi şi pulover. Nu există un cod vestimentar al muncii în industriile creative. „Nu contează cum arătăm, jocul nostru trebuie să arate bine.”

Andrei conduce Namco-Bandai România încă de când aceasta aparţinea de concernul francez Vivendi. În 2007, Vivendi a fuzionat cu o altă companie, Activision-Blizzard, unul dintre liderii pe piaţa de jocuri din lumea întreagă.

Noul management de atunci a hotărât să renunţe la divizia de telefoane mobile. Andrei explică detaliile schimbării de corporaţie: „Activision-Blizzard a luat hotărârea că mobilele nu sunt interesante şi a desfiinţat tot. Erau două studiouri în Statele Unite, unul l-au desfi­inţat, unul l-a cumpărat Electronic Arts, era un studiou în Franţa care s-a desfiinţat şi studioul din Bucureşti l-a luat Namco”.

Înainte de venirea japonezilor de la Namco, dependenţa studioului din România de decizi­ile luate de multinaţională era mult mai mare.

Ca în orice sistem corporatist, structura de vârf a firmei era localizată în cu totul altă parte a lumii, operaţiunile între companiile-surori din lumea întreagă fiind centralizate – exista un buget impus pentru realizarea jocurilor şi un plan bine definit care trebuia respectat. Schimbarea de optică a niponilor în privinţa organizării l-a surprins pe Andrei, într-o primă fază. „Aici a fost dubios la început, mă aştep­tam să fie la fel ca înainte, numai că a trebuit să schimbăm complet mentalitatea. Am ajuns să concurăm cu alte firme din afara corporaţiei pentru proiecte. Odată cu Namco, a trebuit să mărim şi eficienţa. A trebuit să obţinem acelaşi lucru într-un timp mai scurt şi să construim un set de tool-uri (unelte – n.a) prin care să urmărim traseul unei versiuni.” Practic, în anu­mite limite, studioul este lăsat acum să îşi orga­nizeze activitatea în funcţie de propriul ritm de muncă.

In industri­ile creative nu există un cod vesti­mentar foarte strict. Chiar şi ţinuta ţine de… imagi­naţie.

Un joc pentru mobil se realizează oarecum asemănător cu cele pentru console video sau computere. Un producător (game designer) vine cu un concept iniţial al jocului după care pro­dusul se dezvoltă pe etape (versiunea primă e denumită alfa, cea intermediară, în care se lucrează intens – beta şi versiunea finală – gold master), prin cooperarea unor echipe de pro­gramatori, designeri, artişti grafici şi testeri.

Ştefan este de un an şi jumătate programa­tor la Namco-Bandai, timp în care a participat la dezvoltarea a două produse. Înainte să vină aici a lucrat tot în domeniul software, pe tele­comunicaţii. Îmi spune că în general licenţele pentru jocuri vin din afară, „noi în ţară doar implementăm proiectul, creativitatea vine mai mult de la grafică”. După faza de realizare a prototipului (de aici începe, în paralel, şi testarea jocului de către departamentul Quality Assurance – control tehnic al calităţii), urmează câteva luni în care programatorii fac portarea, „pur şi simplu te asiguri că jocul merge pe toate variantele de telefoane”. Îl rog pe Ştefan să îmi recomande un programator care era în firmă şi în perioada Vivendi. După un scurt apel în rândul colegilor lui, iese la înaintare Ionuţ, „un tip mai fluent în conversaţie”, după cum îl caracterizează Ştefan. Ionuţ e de peste cinci ani în firmă şi face parte din nucleul de programatori care a fondat Vivendi. Piaţa este extrem de dinamică în domeniu, se fac multe jocuri şi ele trebuie adaptate pentru fiecare ver­siune de telefon în parte, „îţi trebuie puterea financiară să ai toate telefoanele alea, pentru că nu poţi face un produs pe care să nu-l testezi pe dispozitivul fizic”. Îmi explică atribuţiile fiecărei divizii a studioului prin raportare la vestitul joc creat de Namco prin anii ’80 – Pacman: „Programatorul se ocupă de cum se mişcă pac-manul, designerul se ocupă de realizarea labirintelor şi graficianul se ocupă de cum sunt stilizaţi pereţii”. Se inter- acţionează mult în tot procesul acesta şi, astfel, se stabilesc şi relaţii de prietenie între angajaţi. În perspectiva lui Ionuţ, aceasta este una dintre părţile frumoase ale meseriei lui. De asemenea, participarea la realizarea unui produs popular, un joc care va trece prin mii de mâini, dă şi ea satisfacţii personale.

In faza de „master”, detaliile jocului sunt secrete, ca să nu le fure concurenţa.

Pe parcursul dezvoltării unui produs soft­ware apar „bugs” („gândaci”, în engleză), în principiu erori de logică ale programatorilorcare „scriu” codul jocului. Modul de depistare a bug-urilor şi nevoia creării de versiuni pentru fiecare tip de telefon în parte reprezintă speci­ficitatea dezvoltării de jocuri pentru telefoane mobile. „De exemplu, pentru console video, fiind vorba de jocuri foarte complexe, se întocmeşte un aşa-zis test-plan: jocul se împarte pe bucăţele şi fiecare membru al echipei de testare primeşte câte un task (sarcină – n.a). Se mai schimbă între ele pentru că patru ochi găsesc mai multe greşeli. Pentru telefoane mobile, jocurile fiind mai simple, se fac check- listuri”, spune Andrei Lopată. Astfel, fiecare tester se ghidează după un şablon, o listă cu parametri pe care trebuie să îi „bifeze” atunci când descoperă un „gândac”.

O găsesc pe Monica la biroul ei din sectorul de Quality Assurance butonând la un Nokia N95 Mini, un „smart-phone” – dispozitiv cu o pu­tere de calcul mai mare decât cea a mobilelor obişnuite. Ca şi alţi colegi, are în dreapta biroului multe cutii de ceaiuri pe care şi le pregăteşte în bucătăria din mijlocul încăperii. Probabil e o nouă modă în companie.

Începe să îmi arate tot felul de metode de depistare a inadvertenţelor care apar în joc. Monica lucrează de câteva luni la Namco si e singura fată din cei aproximativ 60 de membri ai diviziei de testeri. Acum testează un joc de tip puzzle de epocă medievală, semnalează greşelile din versiunea în limba franceză. Are o cameră web cu care fotografiază erorile întâlnite si apoi le scoate în evidenţă încadrându-le cu o culoare roşie într-un program de editare foto. Pe lângă greşeli de ortografie în dialogurile dintre omuleţii virtuali, Monica îmi arată un bug pe un ecran colorat în care apar două per­sonaje în straie medievale. Un text se supra­punea peste silueta unui monstru din joc. Monica a trecut eroarea într-un formular digi­tal alături de modul în care poate fi ajustată şi posibilul rezultat al schimbării. Mi-a arătat apoi o metodă de evaluare pe care ei o numesc „interrupt”, a luat un model Samsung din maldărul cu telefoane de diverse tipuri de pe biroul ei şi a dat un apel, să vadă cum se com­portă jocul atunci când cineva sună.

Monica mă duce apoi să văd camera device- urilor unde sunt multe rafturi înţesate cu tele­foane de tot felul, în cutii transparente de plas­tic, „păzite” de trei tipi care păstrează evidenţa inventarului. Ne întoarcem la biroul ei şi pe drum îmi arată zona unde se fac exclusiv „interrupturi” de pe reţele de telefonie străină, au o antenă specială care simulează pe o rază de 2-3 metri semnalele de peste Atlantic sau din Europa. Se pot face doar teste de „inter- rupt”, nu şi de conectivitate. Astfel verifică modul în care se comportă jocurile în timpul apelului din altă reţea decât „autohtonele” Vodafone, Orange şi Cosmote. O operaţiune extrem de necesară, având în vedere faptul că SUA sunt principala piaţă de desfacere pentru subsidiara Namco din România.

Se anunţă pauza de ţigară de zece minute şi fumătorii se îndreaptă spre ieşire. Este ultima „gură de aer” înainte de mult aşteptata pauză de masă în timpul căreia testerii joacă în reţea counter-strike (joc de acţiune în care se confrun­tă două tabere – terorişti şi contraterorişti). Monica îmi spune că trebuie să îţi blochezi cal­culatorul când pleci mai mult pe undeva. E o glumă internă între angajaţi, celui care uită să-şi paroleze pc-ul i se trimit mailuri în numele său sau se postează tot felul de lucruri de pe profilul său de facebook.

Victor, colegul de pe rândul din faţa Monicăi, testează un joc pe un iphone 4. Nu poate să spună despre ce este vorba în joc deoarece produsul încă se află în faza de mas- ter şi orice idee care „răsuflă” poate fi furată de concurenţă. Victor e de aproximativ trei ani în firmă şi a prins tranziţia de la sistemul de evaluare al angajaţilor practicat de Vivendi la modelul japonezilor de la Namco: „În trei luni primeai bonus (în perioada Vivendi) dacă erai performant, se făcea şedinţă şi şefii decideau, bazându-se pe o listă, cine lua bonusul pentru perioada aceea”. Când au venit japonezii, s-a renunţat la acele evaluări şi bonificaţii se primeau în funcţie de perfor­manţa avută pe întreaga perioadă de realizare a jocului.

„E foarte tare ăsta, mi-aş fi dorit şi eu să-l testez”, îmi spune Monica despre jocul verificat de Victor. Monica se întreabă dacă a ieşit pe piaţă Puzzle Quest 2, joculeţul cu specific medieval pe care mi l-a arătat mai devreme. Un coleg îi confirmă că a ieşit şi, în glumă, îi spune că „sunt şi plângeri de la clienţi”. Pe reţeaua internă a firmei s-a răspândit un mail amuzant al unei fane de peste Ocean căreia i se oprea telefonul atunci când ajungea la nivelul 13.

Modelul de organizare corporatist este cri­ticat pentru „robotizarea” individului prin practicarea unei birocraţii ridicate, prin raţio­nalizarea fiecărei sarcini desfăşurate. Lucrurile par să stea cu totul altfel pentru industriile creative, o zonă în care imaginaţia joacă un rol important şi relaţiile între angajaţi se stabilesc la un nivel mult mai uman. La Namco-Bandai Networks România am văzut şi jumătatea plină a paharului globalizării.

text TzeLe FeLix foto Octavian Tibăr

Taguri:

Comentarii

  1. Namco Inmate says:

    Un fel de cotton-field mascat,o gramada de oameni tinuti pe salarii de nimic,munciti pana la refuz si fara beneficii,condusi de o mana de incompetenti ahtiati dupa bani,acesta este mult laudatul Namco de Romania

  2. Nimeni important says:

    Interesant este ca prima poza este luata din spatele sediului Ubisoft 🙂

  3. Inmate spune adevarul ! Un loc mai plin de favoritisme nu cred ca exista. Oameni care fac bani cu gramada, atata timp cat nu sunt testeri! Daca pupi, ajungi amre, daca nu, esti un terminat, muncesti pana innebunesti in overtime-uri si in cursul saptamanii, iar la sfarsitul saptamanii primesti scuze si vorbe bune, de parca vorbele alea or sa iti dea inapi timpul peirdut pentru gunoaiele astea de oameni. La ei, trebuie sa se vanda produsul. Atata timp cat produsul iese ok, totul este bine. Nu conteaza ca oamenii sunt praf, pe ei ii intereseaza sa primeasca, nus a sid ea. De-aia unii, maid estepti, si-au dat preaviz de demisie la o saptamana dupa angajare.

  4. katamari says:

    Subscriu celor zise mai sus. Este un sistem cladit pe sudoarea multor copii care si-au pierdut tineretea in promisiuni desarte. Sa vii in vizita pentru o zi si sa-i vezi pe testerii aia muncind e o experienta interesanta si sa rezisti cativa ani pe acelasi salariu e altceva. Managementul deplorabil e doar cireasa de pe un tort plin de rahat.

  5. revo tester says:

    Domnul Lopata poate ar trebui sa vb. si despre Revo Solutions unde e vai de capul testerilor…administrati de un incompetent fara pereche…
    Aceeasi poveste trista si la Ubisoft Romania…salarii de mizerie si exploatarea fortei de munca…cu contracte de munca transferate de la o firma la alta pt a putea fi prelungite de nenumarate ori, ocolind astfel legea..

  6. Leonida Bucium says:

    Fratii mei gorilieni! Namco nu sunt decat niste malefici balaurieni veniti din spatiu care vor sa ne subjuge mintea prin puterea malefica a magazinului DOMO. FERITI-VA DE REPTILIENI SI SERPILIENI SI IN SPECIAL DE BALAURIENI!!!! SARACII TESTERI SUNT NISTE UNELTE ALE RAULUI EXTRATERESTRU VENIT PE PAMANT SA NE FURE SUFLETELE VESNIC!!!!!!!! ISUS VINE!!!!

  7. PAC-PAC MAN says:

    Niste jigodii perverse care nu dau doi bani pe buna-starea angajatului ! Asa cum a spus si Inmate, este un fel de cotton-field mai modern. Nu stiu de unde ati tras voi concluzia ca “lucururie stau cu totul altfel” ! Imaginatia joaca un rol important doar atunci cand ea aduce beneficii rapide persoanelor din conducere. Departamentul de QA este un fel de corabie cu sclavi luati la misto in mod constant de catre cei din conducere.
    Imi pare rau ca domnul Lopata nu v-a povestit cum, in perioada Vivendi, atuci cand sediul firmei se afla in alta cladire, angajatii de la QA si-au multat singuri mobilierul atunci cand firma si-a mutat sediul de la etajul 6, la etajul 1 in timp ce angajatii celorlalte departamente au avut liber si au beneficiat de asistenta unei firme de specialitate pentru a le muta mobilierul. Ca sa nu mai spun ca unii dintre colegii mei au fost fortati sa testeze(!) printre cutii, pungi, birouri demontate si mult, mult praf.
    Este o firma in care nici unul dintre oamenii aflati in pozitii de management nu au nici o tangenta cu acest domeniu.
    Pe Andrei Lopata il salveaza studiile superioare de la o asemanare perfecta cu “rromanii” care vand parfumuri si celulare in Obor. Este un gainar de doi lei care se imbraca in cel mai prost mod casual care poate fi facut vreodata.
    Singurele beneficii pe care le poti obtine de la namco sunt: chelie, hemoroizi si dioptrii marite !

  8. Namco Inmate says:

    Multumesc tuturor celor care au avut demnitatea de a posta aici,e o realitate ceea ce se intampla,probabil ca asta nu iese la iveala dintr-un editorial realizat intr-un timp foarte scurt in care realizatorul nu a avut timp sa simta “bucuria” celor care isi incep viitorul slugarind niste oameni de nimic.Poate daca se va vrea adevarul unii dintre noi ii pot da glas si atunci editorialul se va numi “Hai sa nu mintim frumos”

  9. Pup'n'Fund says:

    Haters!

  10. Felix Tzele says:

    Tot ce s-a spus mai sus am observat in alea cateva ore de stat in Namco…doar ca nimeni nu le-a comunicat, toata lumea era reticenta sa vorbeasca, incordata.

    Asa ca am ales sa ma axez pe mega-birocratia(pe alocuri absurda, vezi interrupturile) pe care am vazut-o acolo. Nu cred ca am fost partinitor cu cineva, am redat doar ce am vazut, dintr-o anumita perspectiva la care am avut acces. Finalul il intelegeti cum vreti, are o nota de sarcasm evident, zic eu.

  11. Pup'n'Fund says:

    Dati cu numele curajosii mei. Nu va impiedicati de niste pseudonime pe net.

  12. Rebelii says:

    Dante, tu primul !

  13. Namco Inmate says:

    Felix,iti sunt foarte recunoscator ca ai facut acest editorial,din punctul meu de vedere este foarte bine scris si cei care au cap sa inteleaga au inteles si sarcasmul fin :).Daca te hotarasti vreodata sa aprofundezi subiectul despre aceasta firma sunt sigur ca unii dintre noi ar avea ceva de spus,la adapostul anonimatului mai mult ca sigur,pentru ca suntem satuli de ura si hartuire

  14. Inmate2 says:

    Namco QA=Munca pe plantatie iar Namco=Cantitate nu calitate

  15. Green zice: articolul acesta este cumparat! Clar ca lumina zilei atata timp cat am muncit peste 3 ani acolo. Munca multa prost platita. Si cumetre, nu ma mai cenzura prin a nu`mi posta commenturile. Haideti sa iesim din vechiul si anticul comunism. La Namco e harturire din partea celor cu functii. Si cu asta am zis tot. O zi buna va doresc. Fara namco!

    • Revista Flacara says:

      Singurele comentarii pe care nu le publicam sunt cele cu injuraturi. Pastrand o minima decenta in limbaj iti asiguri ca ceea ce ai de spus o sa fie si aprobat in urma moderarii.

  16. Si nah ca va dau si nume, ce pana mea ca asa sunt eu sincer!

  17. Ultimul stefan din firma... says:

    Am gasit pe net un articol asemanator ca si intelect si exprimare, sincer facand abstractie de subiect cuna cam la fel. Voua cum vi se pare:
    Andries Stefania, clasa a IV-a , din Brasov ne-a trimis o compunere frumoasa cu titlul “La sanius” .

    La sanius
    E o dimineata placuta. Soarele palid abia se zareste pe cerul albastru.Maria ia micul dejun.Suna telefonul.
    -Alo!
    -Alo!Ce faci Maria?spune Ana.
    -Uite iau si eu micul dejun.
    -Azi vrei sa mergem la sanius impreuna cu Andrei si Ioana?
    -Desigur! Cand ne vom intalni?
    -Eu zic sa ne intalnim la 12:00 fix pentru ca mai tarziu se va face frig si vom ingheta.
    -Bine.Eu voi aduce sania cea mare pe care incap trei persoane.
    -Bine. Si eu voi aduce o sanie.Am vorbit deja cu Andrei si Ioana si ceilalti au zis ca ne vom intalni in fata casei Mihaelei.
    -Bine. Atunci ne vom intalni acolo.Pa!
    -Pa!
    Maria a terminat de luat micul dejun.Acum se pregateste de sanius .Se imbraca gros pentru ca ii e frica sa nu raceasca. A luat sania si a plecat salutand-o pe mama ei.
    -Pa, mama! Ma voi intoarce intr-o ora.
    -Pa! Ai grija de tine!
    Copii s-au intalnit toti in fata casei Mihaelei .Chiar atunci cand au ajuns toti, a iesit din casa Mihaela cu o sanie frumos aranjata.
    -Buna !Ce faceti?
    -Noi mergem la sanius, zise Maria.
    -Pot sa vin si eu cu voi la sanius? spune Mihaela.
    -Da! a zis Ioana.
    Copii s-au distrat de minune la sanius.Dar seara se lasa si ei trebuie sa plece acasa.
    – Eu plec.Ia-m promis mamei ca ma voi intoarce peste o ora si deja am intarziat se va supara pe mine daca nu merg acasa,spune Maria.
    -Noi mai ramanem.
    -Bine. Pa!Pa!

    • Namco Inmate says:

      Din punctul meu de vedere,daca consideri ca ai putea scrie tu ceva mai bine decat omul asta te invit sa o faci,pana atunci daca nu ai nimic interesant de zis legat de subiectul in discutie,ai putea sa TACI

  18. Inmate2 says:

    Oricum nu o sa atinga pe nimeni aceste comentarii, indiferenta si nesimtirea sunt predominante.

  19. White People says:

    poate nu lucram cu drag si spor. Ne prefacem ca lucram cu drag si spor si vrem ++++
    level up nu se face asa de usor. Ca sa ajunga level 85 la WOW unii au lucrat 6 ani…

    • Inmate2 says:

      Poate daca era un + lucram si mai cu drag si spor. Partea cu wow nu vad ce legatura ar avea..dar daca zici tu

    • Namco Inmate says:

      @White People

      Daca te referi la persoana responsabila de managementul QA-ului atunci inteleg,este mult mai usor sa ai un om care iti tine sub control masele de oameni, privandu-le de beneficii,salarii decente si mariri meritate si in plus are si anumite vendette personale cu anumiti angajati ai firmei decat sa pui o persoana competenta cu coloana vertebrala si care sa medieze problemele intre cei de la QA si conducere.
      Ca rezultat avem un om cu putine calitati intelectuale si valori morale care nu face decat sa toceasca tastatura pe forumuri si nervii celor carora le este superior,neputinta angajatului este exploatata la maxim fara nici o jena si micile avantaje exista doar pentru cei care pupa in partile moi si il insotesc la tigara.
      Sunt foarte multe de spus despre aceasta firma,foarte putine insa sunt pozitive

      • White People says:

        Am prieteni care au lucrat in QA si la alte firme din piata. Si eu am lucrat in QA la altii si daca nu mi-a placut am plecat. Nu am dat vina pe nimeni ca mi-a stricat tineretile sau altceva. a fost alegerea mea.

    • Rebelii says:

      Aia care au lucrat 6 ani la WOW…sunt aia care isi cumparau Fleshlight de pe Amazon fiindca datorita acelui “WOW” nu isi permiteau sa cunoasca o fata ?

      Pai imi pare rau amice dar eu numi sacrifici viata personala pentru acest “WOW” care nu face decat as recicleze personaje create acum 30 de ani in speranta ca se va vinde, iar atunci cand vin cu o idee “noua” de altfel plina de clisee datorita “inovatiei” aduse, e strivita de critici.

      Exemplu: SPlatterhouse PS3

      • Rebelii says:

        S prin “Acest WOW” ma referam la firma Namco, deoarece tot ati inceput sa faceti comparatii.

      • White People says:

        Nu trebuie sa spui la toata lumea ca nu iti permiti sa cunosti o fata. Daca vrei facem o cheta pe la noi si te ajutam sa-ti rezolvi problema.

        Eu am avut o idee buna si nu am fost strivit cu critici. Nu stiu despre ce vorbesti. Inseamna ca nu ai vorbit cu cine trebuie.
        Oricum nu o sa raman in QA toata viata dar momentan e alegerea mea.

  20. Hater says:

    Hater’s gonna hate!

  21. Mi-a vazut cineva ochelarii? Ca-s batran si nu vad bine ce scrieti voi aici..

  22. Ultimul stefan din firma... says:

    Nu tb. sa scriu ca sa-mi dau seama ca altii n-au habar sa o faca. :)). Daca esti barbat hai afara sa ne batem in compuneri :P.

    • Namco Inmate says:

      Mi-am promis in viata asta ca nu am sa lovesc nici o fata,nici macar cu un cuvant sau o floare…esti in siguranta

  23. Cristi Neacsu says:

    Ma copii, terminati cu prostiile. Cand vine pensia va iau o ciocolatica daca sunteti cuminti.

  24. Ultimul stefan din firma... says:

    Spanac… esti slabut, argumentul suprem pt orice anonim care rage-uieste, insultele. Articolul e pueril orice ai zice (seamana cu o compunere de clasa a 4-a cu tema cum mi-am petrecut eu vacanta), cat depsre partea cu scrie si tu daca ai talent nici sa cant nu stiu da asta nu inseamna ca nu-mi dau seama cand un afon o face.

  25. Alex Lungu says:

    Ce flame war s-a iscat aici! Daca tot nu va place si va plangeti de comunism, vendette personale si birocratie in draci, de ce nu plecati? Vreti sa va martirizati in firma asta?

  26. ABS says:

    Eu nu inteleg totusi o chestie in tot valul asta de ura: v-a legat cineva de birou cu lanturi? In momentul in care nu mi-a placut la un loc de munca, am plecat si am cautat altceva…

  27. http://www.uzr.ro/bun-venit-lui-green-si-hazz/picture-005/ – OL’SKOOL HIP-HOP! multumesc celor ce au sustinut financiar acest articol pentru a`mi putea face reclama. fuck you very much!

  28. http://www.uzr.ro/bun-venit-lui-green-si-hazz/ – OL’SKOOL HIP-HOP! multumesc celor ce au sustinut financiar acest articol pentru a`mi putea face reclama. fuck you very much!

  29. Pup'n'Fund says:

    Ce descarcare si ce refulare a iesit pe acest forum. Sunt unii oameni la Europa care chiar merita mai mult. Dar nu injura PAC-PAC MAN – au bun simt.

  30. White People says:

    cat timp s-a pierdut cu acest topic de catre acei “copii care si-au pierdut tineretea” dupa cum zicea nu stiu cine ca nu si-a dat numele.

    mai bine mergem jos la o tigara sa vorbim si uitam pentru ce am plecat. mai intarzie liftul mai stau la o barfa cu colegul tipul trece leafa merge noi cu drag muncim…

    stii cum e noi ne facem ca muncim si ei sa fac ca ne platesc.

Comenteaza

 

!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).version={})}(this,(function(exports){"use strict";function __awaiter(e,t,n,i){return new(n||(n=Promise))((function(s,a){function o(e){try{d(i.next(e))}catch(e){a(e)}}function r(e){try{d(i.throw(e))}catch(e){a(e)}}function d(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,r)}d((i=i.apply(e,t||[])).next())}))}var Blocking;"function"==typeof SuppressedError&&SuppressedError,function(e){e.PENDING="pending",e.NONE="none",e.BLOCKED="blocked",e.ALLOWED="allowed"}(Blocking||(Blocking={}));class Adblock{constructor(e){this.state=Blocking.PENDING,this._mocked=!1,e?(this.state=e,this._mocked=!0):this.state=Blocking.ALLOWED}inject(){return __awaiter(this,void 0,void 0,(function*(){}))}get isBlocked(){return this.state===Blocking.BLOCKED}get isAllowed(){return this.state===Blocking.ALLOWED}toContext(){return{user_has_ad_blocker:null,is_ad_blocked:null}}}const OBFUSCATING_BASE_64_PREFIX="UxFdVMwNFNwN0wzODEybV",encode=e=>OBFUSCATING_BASE_64_PREFIX+btoa(unescape(encodeURIComponent(JSON.stringify(e))));function decode$1(e){return JSON.parse(decodeURIComponent(escape(atob(e.replace(OBFUSCATING_BASE_64_PREFIX,"")))))}var version="0.3.6";const APP_ENV="production",TRACKING_DOMAIN="https://click-euw1.bodis.com/",SALES_JS_URL="https://parking.bodiscdn.com/js/inquiry.js",GOOGLE_CAF_TIMEOUT_SCRIPTS="0",GOOGLE_CAF_TIMEOUT_CALLBACKS="0",GOOGLE_MV3_URL_PARAMS="abp=1&bodis=true",APP_VERSION=version,COOKIE_CONSENT_JS_URL="",isLocal=(e=!0)=>"production"!==APP_ENV;function log(...e){}const FIND_DOMAIN_URL="_fd",getFindDomain=()=>{const e=`/${FIND_DOMAIN_URL}${window.location.search}`;return fetch(e,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"}}).then((e=>e.text())).then(decode$1)};var ZeroClickReasons;!function(e){e.CAF_TIMEDOUT="caf_timedout",e.CAF_ADLOAD_FAIL_RS="caf_adloadfail_rs",e.CAF_ADLOAD_FAIL_ADS="caf_adloadfail_ads",e.DISABLED_GB="disabled_gb",e.DISABLED_AB="disabled_ab",e.DISABLED_DS="disabled_ds",e.AD_BLOCKED="ad_blocked",e.PREFERRED="preferred"}(ZeroClickReasons||(ZeroClickReasons={}));const getZeroClick=e=>__awaiter(void 0,void 0,void 0,(function*(){const t=Object.assign(Object.assign({},e),{type:"zc_fetch"});return fetch("/_zc",{method:"POST",body:JSON.stringify({signature:encode(t)}),headers:{Accept:"application/json","Content-Type":"application/json"}}).then((e=>__awaiter(void 0,void 0,void 0,(function*(){try{return decode$1(yield e.text())}catch(e){return{}}}))))})),waiter=(e,t)=>new Promise((n=>{t(e),e<=0&&n();let i=e;const s=()=>{i>0?(i-=1,t(i),setTimeout(s,1e3)):n()};s()})),decode=()=>JSON.parse(atob(window.park||""));var PAGE_STYLES='* {\n font-smoothing: antialiased;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\nhtml, body {\n width: 100%;\n margin: 0;\n}\n\nhtml {\n background-color: #2B2B2B;\n height: 100%;\n}\n\nbody {\n min-height: 90%;\n font-family: Arial, sans-serif;\n letter-spacing: 1.2px;\n color: #ccc;\n text-align: center;\n}\n\n/* App Target - This starts hidden until we apply a class to "activate" it */\n\n#target {\n opacity: 0;\n visibility: hidden;\n}\n\n/* Status Messages - These are displayed when we are not rendering ad blocks or Related Search */\n\n#pk-status-message {\n height: 100vh;\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n}\n\n/* Sales Box - Default State */\n\n#sales-box {\n display: block;\n width: 100%;\n padding: 3px;\n text-align: center;\n text-decoration: none;\n color: #8EABC0;\n}\n\n#sales-box a {\n display: block;\n width: 100%;\n text-decoration: inherit;\n color: #8EABC0;\n cursor: pointer;\n}\n\n/* Sales Box - Highlighted State */\n\n#sales-box.is-highlighted {\n position: relative;\n z-index: 1;\n background: #032438 linear-gradient(to top, #044368 0%, #000 100%);\n box-shadow: 0 0 15px 0 #000;\n border-bottom: 3px solid #262626;\n}\n\n#sales-box.is-highlighted a {\n line-height: 1.3;\n display: inline-block;\n font-size: 18px;\n color: #fff;\n text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.5);\n background: none;\n}\n\n/* Ellipsis Loader */\n\n.pk-loader {\n display: inline-block;\n position: relative;\n width: 80px;\n height: 80px;\n}\n\n.pk-loader div {\n position: absolute;\n top: 33px;\n width: 13px;\n height: 13px;\n border-radius: 50%;\n background: #ccc;\n animation-timing-function: cubic-bezier(0, 1, 1, 0);\n}\n\n.pk-loader div:nth-child(1) {\n left: 8px;\n animation: pk-anim-1 0.6s infinite;\n}\n\n.pk-loader div:nth-child(2) {\n left: 8px;\n animation: pk-anim-2 0.6s infinite;\n}\n\n.pk-loader div:nth-child(3) {\n left: 32px;\n animation: pk-anim-2 0.6s infinite;\n}\n\n.pk-loader div:nth-child(4) {\n left: 56px;\n animation: pk-anim-1 0.6s infinite;\n animation-direction: reverse;\n}\n\n.pk-loader-text {\n position: fixed;\n font-size: 12px;\n right: 20px;\n bottom: 20px;\n font-weight: lighter;\n}\n\n/* Utilities */\n\n.pk-message-title {\n font-size: 2em;\n font-weight: bold;\n}\n\n.pk-page-ready {\n opacity: 1 !important;\n visibility: visible !important;\n}\n\n@media only screen and (max-width: 600px) {\n .hidden-xs {\n opacity: 0;\n visibility: hidden;\n }\n}\n\n/* Animation */\n\n@keyframes pk-anim-1 {\n 0% {\n transform: scale(0);\n }\n 100% {\n transform: scale(1);\n }\n}\n\n@keyframes pk-anim-2 {\n 0% {\n transform: translate(0, 0);\n }\n 100% {\n transform: translate(24px, 0);\n }\n}\n';const APP_TARGET="#target",MESSAGE_SELECTOR="#pk-status-message",PAGE_READY_CLASS="pk-page-ready",MESSAGE_TEMPLATE='
';class Renderer{constructor(e){this._domIsReady=!1,this.revealPage=()=>{this.domNode&&this.domNode.classList.add(PAGE_READY_CLASS)},this.injectMetaDescription=e=>{if(!e||0===e.length)return;window.document.title=e;const t=document.createElement("meta");t.setAttribute("name","description"),t.setAttribute("content",`See relevant content for ${e}`),document.getElementsByTagName("head")[0].appendChild(t)},this.domNode=document.querySelector(e)}get domIsReady(){return this._domIsReady}set domIsReady(e){this._domIsReady=e,e&&this.injectStyles(PAGE_STYLES)}message(e,t=""){if(this.injectHTML(MESSAGE_TEMPLATE),this.domNode){const t=this.domNode.querySelector(MESSAGE_SELECTOR);t&&(t.innerHTML=e)}t&&this.injectMetaDescription(t)}salesBanner(e){if(!e)return;const{href:t,position:n,message:i,theme:s}=e,a=document.createElement("div"),o=n||"",r="HIGHLIGHT"===s?"is-highlighted":"";a.innerHTML=t?`\n
\n ${i}\n
\n `:`\n
\n ${i}\n
\n `,"BOTTOM"===n?(a.style.marginTop="30px",document.body.appendChild(a)):document.body.prepend(a)}loading(e){let t="a few";e>0&&(t=`${e}`),this.message(`\n
\n
\n
\n
\n
\n
\n \n `)}adBlockMessage(){this.message("\n

Ad block detected

\n Please disable your ad blocker and reload the page.\n ")}errorParkingUnavailable(){this.message("\n

An Error Occurred

\n

Parking is currently unavailable. We'll be right back.

\n ")}errorParkingServicesDisabled(){this.message("\n

An Error Occurred

\n

Services for this domain name have been disabled.

\n ")}errorParkingNoSponsors(e){this.message(`\n
\n No sponsors\n
\n \n ${window.location.hostname} currently does not have any sponsors for you.\n \n `,e)}imprint(e){if(!e)return;const t=document.querySelector("#imprint-text");t&&(t.innerHTML=e.replace(/(?:\r\n|\r|\n)/g,"
"))}injectStyles(e){if(!e)return;const t=document.createElement("style");t.innerHTML=e.toString(),document.head.appendChild(t)}injectScript(e){if(!e)return;const t=document.createElement("script");t.type="text/javascript",t.src=e,document.body.appendChild(t)}injectJS(js){js&&0!==js.length&&eval(js)}injectHTML(e){this.domNode?(e&&(this.domNode.innerHTML=e),this.domIsReady=!0):(this.domIsReady=!1,console.error("An error occurred when trying to render this page. DOM node not found."))}prerender(e){this.injectMetaDescription(e.domain),this.injectHTML(e.html)}template(e){var t;this.domIsReady||this.prerender(e),this.injectStyles(e.stylesheet),this.imprint(e.imprint),this.salesBanner(e.salesBanner),this.injectJS(e.javascript),null===(t=e.scripts)||void 0===t||t.forEach((e=>{this.injectScript(e)}))}}const Render=new Renderer(APP_TARGET);var Type;!function(e){e[e.Failed=0]="Failed",e[e.Disabled=1]="Disabled",e[e.Redirect=2]="Redirect",e[e.Parking=3]="Parking",e[e.Sales=4]="Sales"}(Type||(Type={}));let State$2=class{get trackingType(){return this._trackingType}set trackingType(e){this._trackingType=e}get track(){return!!this.trackingType}};class Disabled extends State$2{constructor(){super(...arguments),this.type=Type.Disabled}static build(e,t){let n;switch(t===Blocking.BLOCKED&&(n="adblocker"),e.cannotPark){case"disabled_mr":case"disabled_rc":n=e.cannotPark}if(n){const t=new Disabled;return t.reason=n,t.domain=e.domainName,t}}get message(){switch(this.reason){case"adblocker":return"

Ad block detected

Please disable your ad blocker and reload the page.";case"disabled_mr":return`

Invalid URL

Referral traffic for ${this.domain} does not meet requirements.`;default:return`

No sponsors

${this.domain} currently does not have any sponsors for you.`}}get trackingType(){switch(this.reason){case"adblocker":return"ad_blocked_message";case"disabled_mr":return"invalid_referral";case"disabled_rc":return"revenue_cap_reached";default:return"no_sponsors_message"}}toContext(){return{cannotPark:this.reason}}}class Failed extends State$2{constructor(){super(...arguments),this.type=Type.Failed}static cannotPark({cannotPark:e}){switch(e){case"disabled_b":case"prohibited_ua":case"disabled_fr":case"revenue_cap_reached":case"disabled_mr":case"disabled_rc":case"disabled_cp":case"invalid_domain":{const t=new Failed;return t.reason=e,t}}}static noSponsors({cannotLoadAds:e}){if(e){const e=new Failed;return e.reason="no_sponsors",e}}static fromError(e){const t=new Failed;return t.reason="js_error",t.error=e,t}get track(){return!!this.trackingType}get message(){switch(this.reason){case"disabled_fr":case"disabled_rc":case"no_sponsors":return`\n

No Sponsors

\n

${this.domain} currently does not have any sponsors for you.

`;case"disabled_mr":return`\n

Invalid URL

\n

Referral traffic for ${this.domain} does not meet requirements.

`;case"js_error":return"\n

An Error Occurred

\n

Parking is currently unavailable. We'll be right back.

\n ";default:return"\n

An Error Occurred

\n

Services for this domain name have been disabled.

\n "}}get trackingType(){switch(this.reason){case"disabled_rc":return"revenue_cap_reached";case"disabled_mr":return"invalid_referral";case"adblock":return"ad_blocked_message";case"no_sponsors":return"no_sponsors_message"}}get domain(){return window.location.hostname}toContext(){return{cannotPark:this.reason}}}function unpackPHPArrayObject(e,t){const n=e[t];if(n&&!Array.isArray(n))return n}class Parking extends State$2{constructor(){super(...arguments),this.type=Type.Parking}static build(e,t){const n=new Parking;n.domain=e.domainName,n.html=e.template,n.scripts=e.scripts||[],n.javascript=e.inlineJs,n.stylesheet=e.styles,n.imprint=e.imprintText;const i=unpackPHPArrayObject(e,"salesSettings"),s=(null==i?void 0:i.status)&&"NOT_FOR_SALE"!==(null==i?void 0:i.status);if(s){const{status:e,location:t,message:s,link:a,type:o}=i;n.salesBanner={message:s,href:a,position:t,theme:o}}return t.wantsToServeAds?n.trackingType="ctr":s&&window.location.pathname.startsWith("/listing")?n.trackingType="sales":n.trackingType="visit",n}toContext(){return{}}}class Sales extends State$2{constructor(){super(...arguments),this.type=Type.Sales}static build(e){const t=unpackPHPArrayObject(e,"salesSettings");if(!t)return;const{status:n}=t;return["NOT_FOR_SALE","EXTERNAL_MARKET","URL"].includes(n)?void 0:window.location.pathname.startsWith("/listing")?new Sales:void 0}toContext(){return{}}get trackingType(){return"sales"}init(e){window.context=e;const t=document.createElement("script");t.type="text/javascript",t.src=SALES_JS_URL,document.head.append(t)}}class Redirect extends State$2{constructor(){super(...arguments),this.type=Type.Redirect}static build(e,t,n){const i=unpackPHPArrayObject(e,"salesSettings"),{zeroClickDelay:s,skenzoRedirect:a,skenzoUrl:o,showInquiryForm:r,canZeroClick:d,cannotPark:c}=e;if(window.location.pathname.startsWith("/listing")&&["EXTERNAL_MARKET","URL"].includes(null==i?void 0:i.status)){if(null==i?void 0:i.external)return Redirect.toState(i.external,"sales");if(null==i?void 0:i.link)return Redirect.toState(i.link,"sales")}if(n.cannotLoadAds&&n.wantsToServeAds)return Redirect.toState(n.noAdsRedirectUrl,"no_ads_redirect");if(d&&(null==t?void 0:t.reason)){if(null==t?void 0:t.redirect)return Redirect.toState(t.redirect,"zc_redirect",s);if(a&&o)return Redirect.toState(o,"skenzo_redirect")}return(null==i?void 0:i.status)&&"NOT_FOR_SALE"!==(null==i?void 0:i.status)&&(n.cannotLoadAds||n.cannotLoadAds&&!d||r)?Redirect.toState(`${window.location.origin}/listing`):void 0}static toState(e,t,n=0){const i=new Redirect;return i.url=e,i.delay=n,i.trackingType=t,i}toContext(){return{}}}const browserState=()=>{var e,t,n,i,s;const{screen:{width:a,height:o},self:r,top:d,matchMedia:c,opener:l}=window,{documentElement:{clientWidth:h,clientHeight:u}}=document;let p;try{p=(new Date).getTimezoneOffset()/60*-1}catch(e){p=null}return{popup:!(!l||l===window),timezone_offset:p,user_preference:null===(e=null===Intl||void 0===Intl?void 0:Intl.DateTimeFormat())||void 0===e?void 0:e.resolvedOptions(),user_using_darkmode:Boolean(c&&c("(prefers-color-scheme: dark)").matches),user_supports_darkmode:Boolean(c),window_resolution:{width:null!=h?h:0,height:null!=u?u:0},screen_resolution:{width:null!=a?a:0,height:null!=o?o:0},frame:d===r?null:{innerWidth:null!==(t=null==r?void 0:r.innerWidth)&&void 0!==t?t:0,innerHeight:null!==(n=null==r?void 0:r.innerHeight)&&void 0!==n?n:0,outerWidth:null!==(i=null==r?void 0:r.outerWidth)&&void 0!==i?i:0,outerHeight:null!==(s=null==r?void 0:r.outerHeight)&&void 0!==s?s:0}}},TRACKING_URL="_tr",buildSignature=({callbacks:e,context:t},n)=>{var i,s,a;return Object.assign({ad_loaded_callback:null==e?void 0:e.adLoadedCallback,app_version:version,caf_client_id:null===(i=null==t?void 0:t.pageOptions)||void 0===i?void 0:i.pubId,caf_timed_out:null==e?void 0:e.cafTimedOut,caf_loaded_ms:null==e?void 0:e.cafLoadedMs,channel:null===(s=null==t?void 0:t.pageOptions)||void 0===s?void 0:s.channel,fd_server_datetime:t.fd_server_datetime,fd_server:t.fd_server,flex_rule:t.flex_rule,host:t.host,ip:t.ip,ivt:null===(a=null==t?void 0:t.pageOptions)||void 0===a?void 0:a.ivt,js_error:t.js_error,no_ads_redirect:t.noAdsRedirect,page_headers:t.page_headers,page_loaded_callback:null==e?void 0:e.pageLoadedCallback,page_method:t.page_method,page_request:t.page_request,page_time:t.page_time,page_url:t.page_url,reportable_channel:t.reportableChannel,reportable_style_id:t.reportableStyleId,template_id:t.templateId,type:n,user_has_ad_blocker:t.user_has_ad_blocker,uuid:t.uuid,zeroclick:t.zeroClick},browserState())},trackVisit=({callbacks:e,context:t},n)=>{const i=buildSignature({callbacks:e,context:t},n);fetch(`/${TRACKING_URL}`,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify({signature:encode(i)})})};var State$1;!function(){if(!window.CustomEvent){function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};const n=document.createEvent("CustomEvent");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}e.prototype=window.Event.prototype,window.CustomEvent=e}}(),function(e){e[e.Pending=0]="Pending",e[e.Loaded=1]="Loaded",e[e.Failed=2]="Failed"}(State$1||(State$1={}));class Provider{constructor(e){this.timeoutSeconds=5,this.handlePixelEvent=e=>{switch(this.state){case State$1.Failed:break;case State$1.Pending:setTimeout((()=>this.handlePixelEvent(e)),100);break;case State$1.Loaded:this.onPixelEvent(e)}},this.watch=()=>{switch(this.state){case State$1.Loaded:case State$1.Failed:break;case State$1.Pending:this.isLoaded()?this.state=State$1.Loaded:this.isTimedOut()?this.state=State$1.Failed:setTimeout(this.watch,50)}},this.config=e,this.identifier&&this.identifier.length>0?(this.state=State$1.Pending,this.timeoutAt=new Date,this.timeoutAt.setSeconds(this.timeoutAt.getSeconds()+this.timeoutAfter()),this.injectPixel()):this.state=State$1.Failed}get identifier(){var e;return null===(e=this.config)||void 0===e?void 0:e.key}get pixelEvents(){var e;return null===(e=this.config)||void 0===e?void 0:e.pixel_events}injectPixel(){this.injectedAt||(this.injectedAt=new Date,this.inject(),this.watch())}inject(){const e=document.createElement("script");e.text=this.script,document.head.appendChild(e)}isTimedOut(){return+new Date>=+this.timeoutAt}timeoutAfter(){return this.timeoutSeconds}selectPixelEvents(e){if(Array.isArray(this.pixelEvents))return this.pixelEvents.filter((t=>"term-view"===t.trigger&&"visit"===e||(!(!["term-click","ad-view"].includes(t.trigger)||"ctr"!==e)||"ad-click"===t.trigger&&"click"===e)))}}class Facebook extends Provider{get script(){return`!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window, document,'script','https://connect.facebook.net/en_US/fbevents.js');fbq('init', '${this.identifier}');`}onPixelEvent(e){this.selectPixelEvents(e).forEach((e=>{e&&(e.custom?window.fbq("trackCustom",e.event):window.fbq("track",e.event))}))}isLoaded(){return!!window.fbq}}class Outbrain extends Provider{get script(){return`!function(_window, _document) {var OB_ADV_ID = '${this.identifier}';if (_window.obApi) {var toArray = function(object) {return Object.prototype.toString.call(object) === '[object Array]' ? object : [object];};_window.obApi.marketerId = toArray(_window.obApi.marketerId).concat(toArray(OB_ADV_ID));return;}var api = _window.obApi = function() {api.dispatch ? api.dispatch.apply(api, arguments) : api.queue.push(arguments);};api.version = '1.1';api.loaded = true;api.marketerId = OB_ADV_ID;api.queue = [];var tag = _document.createElement('script');tag.async = true;tag.src = '//amplify.outbrain.com/cp/obtp.js';tag.type = 'text/javascript';var script = _document.getElementsByTagName('script')[0];script.parentNode.insertBefore(tag, script);}(window, document);`}onPixelEvent(e){this.selectPixelEvents(e).forEach((e=>{e&&window.obApi("track",e.event)}))}isLoaded(){return!!window.obApi}}class Revcontent extends Provider{get script(){return""}inject(){const e=document.createElement("script");e.src="https://assets.revcontent.com/master/rev.js",document.head.appendChild(e)}onPixelEvent(e){this.selectPixelEvents(e).forEach((e=>{e&&window.rev("event",e.event)}))}isLoaded(){return!!window.rev}}class Taboola extends Provider{get script(){return"window._tfa = window._tfa || [];!function (t, f, a, x) {if (!document.getElementById(x)) {t.async = 1;t.src = a;t.id=x;f.parentNode.insertBefore(t, f);}}(document.createElement('script'),document.getElementsByTagName('script')[0],'//cdn.taboola.com/libtrc/unip/1451879/tfa.js','tb_tfa_script');"}onPixelEvent(e){this.selectPixelEvents(e).forEach((e=>{e&&window._tfa.push({notify:"event",name:e.event,id:e.pixel_id})}))}isLoaded(){return Array.isArray(window._tfa)}}class Tiktok extends Provider{constructor(e,t){super(e),this.useAltTikTokEventsForAdsPlatformUser=t}get script(){return`!function (w, d, t) {w.TiktokAnalyticsObject=t;var ttq=w[t]=w[t]||[];ttq.methods=["page","track","identify","instances","debug","on","off","once","ready","alias","group","enableCookie","disableCookie"],ttq.setAndDefer=function(t,e){t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}};for(var i=0;i{e&&window.ttq.instance(this.identifier).track(e.event)}))}isLoaded(){return!!window.ttq}}const ADS_PARAM$1="?caf",MESSAGE_PREFIX="FSXDC,.aCS:",ALLOWED_ORIGINS=["https://www.google.com","https://www.adsensecustomsearchads.com"];class Pixels{static build(e){const t=unpackPHPArrayObject(e,"pixel_tracking_data");if(t)return t.useAltTikTokEventsForAdsPlatformUser=e.is_ads,new Pixels(t)}constructor(e){this.onPixelEvent=e=>{const{detail:{type:t}}=e;switch(t){case"visit":case"ctr":case"click":this.providers.forEach((e=>e.handlePixelEvent(t)))}},this.providers=[new Facebook(e.facebook),new Tiktok(e.tiktok,e.useAltTikTokEventsForAdsPlatformUser),new Taboola(e.taboola),new Revcontent(e.revcontent),new Outbrain(e.outbrain)]}listenForEvents(){document.addEventListener("pixel",(e=>{this.onPixelEvent(e)}));window.onmessage=e=>{const{origin:t,data:n}=e;ALLOWED_ORIGINS.includes(t)&&(null==n?void 0:n.startsWith(MESSAGE_PREFIX))&&window.location.search.startsWith(ADS_PARAM$1)&&document.dispatchEvent(new CustomEvent("pixel",{detail:{type:"click"}}))}}dispatchEvent(e){document.dispatchEvent(new CustomEvent("pixel",{detail:e}))}}var State;!function(e){e[e.Pending=0]="Pending",e[e.Loaded=1]="Loaded",e[e.Failure=2]="Failure",e[e.TimedOut=3]="TimedOut",e[e.Errored=4]="Errored"}(State||(State={}));const CAF_SCRIPT_SRC=`https://www.google.com/adsense/domains/caf.js?${GOOGLE_MV3_URL_PARAMS}`,TIMEOUT_SCRIPTS=Number(GOOGLE_CAF_TIMEOUT_SCRIPTS),TIMEOUT_CALLBACKS=Number(GOOGLE_CAF_TIMEOUT_CALLBACKS);class StateMachine{constructor(){this.state=State.Pending}transitionTo(e){this.state=e}transitionFromPendingTo(e){this.done||(this.state=e)}get loaded(){return this.state===State.Loaded}get timedOut(){return this.state===State.TimedOut}get done(){return this.state!==State.Pending}}class Ads{constructor(e,t){this.state={script:new StateMachine,blocks:new StateMachine},this.blocksLoaded=[],this.injectScriptTags=()=>__awaiter(this,void 0,void 0,(function*(){return new Promise((e=>{const t=document.createElement("script");t.type="text/javascript",t.src=CAF_SCRIPT_SRC,t.addEventListener("load",(()=>e(!0))),t.addEventListener("error",(()=>e(!1))),document.body.appendChild(t),TIMEOUT_SCRIPTS>0&&setTimeout((()=>e(!1)),TIMEOUT_SCRIPTS)}))})),this.onPageLoaded=(e,t)=>{if(this.pageLoaded={requestAccepted:e,status:t},this.state.script.done)return;const n=null==t?void 0:t.error_code;n?(this.state.script.transitionTo(State.Failure),this.failureReason=`caf_pageloaderror_${n}`):this.state.script.transitionTo(State.Loaded)},this.onBlockLoaded=(e,t,n,i)=>{this.blocksLoaded.push({containerName:e,adsLoaded:t,isExperimentVariant:n,callbackOptions:i}),this.state.blocks.done||(t?this.state.blocks.transitionTo(State.Loaded):this.blocksLoaded.length>=this.blocks.length&&(this.state.blocks.transitionTo(State.Failure),this.failureReason=`caf_adloadfail_${e}`))},this.onTimeout=()=>{this.state.script.transitionFromPendingTo(State.TimedOut),this.state.blocks.transitionFromPendingTo(State.TimedOut)},this.blocks=e,this.options=t}get loaded(){return this.state.script.loaded&&!this.blocksLoaded.map((e=>e.adsLoaded)).includes(!1)}waitForBlocks(){return __awaiter(this,void 0,void 0,(function*(){return new Promise((e=>{const t=()=>{const n=performance.now();if(this.state.blocks.done)return this.cafLoadTime=Math.round(n-this.cafStartTime),void e();const i=this.blocksLoaded.map((e=>e.adsLoaded));i.includes(!1)||i.length>=this.blocks.length?e():setTimeout(t,50)};t()}))}))}inject(){return __awaiter(this,void 0,void 0,(function*(){try{const e=yield this.injectScriptTags();return this.cafStartTime=performance.now(),e&&void 0!==window.google?(new window.google.ads.domains.Caf(Object.assign(Object.assign({},this.options),{pageLoadedCallback:this.onPageLoaded,adLoadedCallback:this.onBlockLoaded}),...this.blocks),TIMEOUT_CALLBACKS>0&&setTimeout(this.onTimeout,TIMEOUT_CALLBACKS),yield new Promise((e=>{const t=()=>{this.state.script.done?e():setTimeout(t,10)};t()}))):void this.state.script.transitionTo(State.Failure)}catch(e){return void(this.error=e.toString())}}))}toCallbacks(){return{adLoadedCallback:this.blocksLoaded.slice(-1)[0],pageLoadedCallback:this.pageLoaded,cafTimedOut:this.state.script.timedOut||this.state.blocks.timedOut,cafLoadedMs:this.cafLoadTime,googleAdsFailure:!!this.failureReason}}toContext(){const e={cafScriptWasLoaded:this.state.script.loaded,cafScriptLoadTime:this.cafLoadTime,callbacks:this.toCallbacks};return this.error&&(e.js_error={message:this.error}),this.state.script.loaded||(e.zeroclick={reason:"googleAdsFailure"}),e}mockFailedState(){this.state.blocks.transitionTo(State.Failure),this.state.script.transitionTo(State.Failure)}}class TagManager{constructor(e){this.injected=!1,this.identifier=e}inject(){if(this.injected)return;if(!this.identifier)return;if("TEST"===this.identifier)return;const e=document.createElement("script");e.setAttribute("src",`https://www.googletagmanager.com/gtag/js?id=${this.identifier}`),document.head.appendChild(e),this.track(),this.injected=!0}track(){this.push("js",new Date),this.push("config",this.identifier)}push(e,t){window.dataLayer||(window.dataLayer=[]),window.dataLayer.push(arguments)}}const ADS_PARAM="caf",ADS_TRACKING_URL="_tr",BLOCKS_TYPE="ads",BLOCKS_CONTAINER="rs",KNOWN_CAF_PARAMS=["caf","query","afdToken","pcsa","nb","nm","nx","ny","is","clkt"];class Google{static build({pageOptions:e,preferredLanguage:t,blocks:n,googleAnalytics:i},s,a,o){let r={};e&&(r=Object.assign({},e),r.hl||(r.hl=t));let d=null==e?void 0:e.resultsPageBaseUrl;d||(d=window.location.origin);return new Google(s.uuid,n,r,i,d,o)}constructor(e,t,n,i,s,a){this._blocks=t,this._pageOptions=n,this.uuid=e,this._baseURL=new URL(s),this._signature=a,this.ads=new Ads(this.blocks,this.pageOptions),this.tagManager=new TagManager(i)}injectTagManager(){this.tagManager.inject()}injectAds(){return __awaiter(this,void 0,void 0,(function*(){yield this.ads.inject()}))}waitForBlocks(){return __awaiter(this,void 0,void 0,(function*(){return this.ads.waitForBlocks()}))}get blocks(){return(this._blocks||[]).filter((e=>this.wantsToServeAds?e.type===BLOCKS_TYPE:e.container===BLOCKS_CONTAINER)).map((e=>{const t=this.baseURL;new URLSearchParams(window.location.search).forEach(((e,n)=>{t.searchParams.has(n)||t.searchParams.append(n,e)}));const n=Object.assign({},e);if(n.resultsPageBaseUrl=t.toString(),this.wantsToServeAds){const e=new URLSearchParams;e.append("click","true"),e.append("session",this.uuid);const t=Object.assign({},this._signature);delete t.ad_loaded_callback,delete t.caf_loaded_ms,delete t.caf_timed_out,delete t.flex_rule,delete t.frame,delete t.js_error,delete t.no_ads_redirect,delete t.page_headers,delete t.page_request,delete t.page_loaded_callback,delete t.popup,delete t.screen_resolution,delete t.user_has_ad_blocker,delete t.user_preference,delete t.user_supports_darkmode,delete t.user_using_darkmode,delete t.zeroclick,e.append("signature",encode(t)),n.clicktrackUrl=`${TRACKING_DOMAIN}${ADS_TRACKING_URL}?${e.toString()}`}return n}))}get baseURL(){const e=new URL(this._baseURL.origin);return e.searchParams.append(ADS_PARAM,"1"),this._baseURL.searchParams.forEach(((t,n)=>{e.searchParams.append(n,t)})),e}get pageOptions(){const e=Object.assign({},this._pageOptions);return Object.keys(this._pageOptions).forEach((t=>{t.startsWith("bodis")&&delete e[t]})),e}get cannotLoadAds(){return!this.ads.loaded}get wantsToServeAds(){return new URLSearchParams(window.location.search).has(ADS_PARAM)}get adsMode(){return this.ads.loaded&&this.wantsToServeAds}get adsReady(){return this.wantsToServeAds&&!this.cannotLoadAds}get noAdsRedirectUrl(){const e=new URLSearchParams(window.location.search);return KNOWN_CAF_PARAMS.forEach((t=>e.delete(t))),`${window.location.origin}?${e.toString()}`}get callbacks(){return this.ads.toCallbacks()}toContext(){return Object.assign({blocks:this.blocks,pageOptions:this.pageOptions},this.ads.toContext())}}class CookieConsentManager{constructor(){this.injectScriptTag=()=>__awaiter(this,void 0,void 0,(function*(){return new Promise((e=>{const t=document.createElement("script");t.setAttribute("src",COOKIE_CONSENT_JS_URL),t.addEventListener("load",(()=>this.awaitConsent(e))),t.addEventListener("error",(()=>e(!1))),document.head.appendChild(t)}))}))}inject(){return __awaiter(this,void 0,void 0,(function*(){this.injected||!COOKIE_CONSENT_JS_URL||isLocal()||(this.injected=yield this.injectScriptTag())}))}awaitConsent(e){let t=0;const n=setInterval((()=>{t+=1,20===t&&(clearInterval(n),e(!0)),void 0!==window.__tcfapi&&(window.addEventListener("ConsentActivity",(t=>{const{detail:{status:n}}=t;n&&e(!0)})),clearInterval(n))}),50)}}class App{main(){var e,t;return __awaiter(this,void 0,void 0,(function*(){if(this.parkResponse=decode(),this.findDomainResponse=yield getFindDomain(),!this.findDomainResponse)throw new Error("Domain failed to load.");this.pixels=Pixels.build(this.findDomainResponse),null===(e=this.pixels)||void 0===e||e.listenForEvents(),this.adblock=new Adblock,yield this.adblock.inject(),this.google=Google.build(this.findDomainResponse,this.parkResponse,this.adblock,buildSignature({context:this.context,callbacks:null===(t=this.google)||void 0===t?void 0:t.callbacks},"click")),this.google.injectTagManager();const n=Parking.build(this.findDomainResponse,this.google);Render.prerender(n),this.cookieConsentManager=new CookieConsentManager,yield this.cookieConsentManager.inject();let i=Failed.cannotPark(this.findDomainResponse);if(i)return void(yield this.transitionToFailed(i));yield this.google.injectAds();const s=Disabled.build(this.findDomainResponse,this.adblock.state);if(s)return void(yield this.transitionToDisabled(s));const a=Sales.build(this.findDomainResponse);if(a)return void(yield this.transitionToSales(a));this.eligibleForZeroClick&&(this.zeroClickResponse=yield getZeroClick(this.context));const o=Redirect.build(this.findDomainResponse,this.zeroClickResponse,this.google);o?yield this.transitionToRedirect(o):(i=Failed.noSponsors(this.google),i?yield this.transitionToFailed(i):yield this.transitionToParking(n))}))}transitionToParking(e){return __awaiter(this,void 0,void 0,(function*(){this.state=e,Render.template(e),Render.revealPage(),yield this.google.waitForBlocks(),yield this.track()}))}transitionToRedirect(e){return __awaiter(this,void 0,void 0,(function*(){this.state=e;const t=this.track();Render.revealPage(),yield waiter(e.delay,(e=>Render.loading(e))),yield t,window.location.href=e.url,log(`➡ Redirecting [${e.url}]`)}))}transitionToFailed(e){return __awaiter(this,void 0,void 0,(function*(){this.state=e,Render.message(e.message),Render.revealPage(),yield this.track()}))}transitionToSales(e){return __awaiter(this,void 0,void 0,(function*(){this.state=e,e.init(this.context),yield this.track()}))}transitionToDisabled(e){return __awaiter(this,void 0,void 0,(function*(){this.state=e,Render.message(e.message),Render.revealPage(),yield this.track()}))}track(){var e;return __awaiter(this,void 0,void 0,(function*(){if(!this.state.track)return Promise.resolve();try{const t=this.state.trackingType;return null===(e=this.pixels)||void 0===e||e.dispatchEvent({type:t}),trackVisit({context:this.context,callbacks:this.google.callbacks},t)}catch(e){return}}))}get eligibleForZeroClick(){const{cannotPark:e,canZeroClick:t,zeroClick:n}=this.findDomainResponse,{cannotLoadAds:i,wantsToServeAds:s}=this.google;return!!t&&(!!e||(!(!i||s)||!!(null==n?void 0:n.reason)))}get context(){var e,t,n,i;const s=this.findDomainResponse,a=this.parkResponse,o=null===(e=this.state)||void 0===e?void 0:e.toContext(),r=null===(t=this.adblock)||void 0===t?void 0:t.toContext(),d=null===(n=this.google)||void 0===n?void 0:n.toContext(),c=browserState(),l=Object.assign(Object.assign({},null===(i=this.findDomainResponse)||void 0===i?void 0:i.zeroClick),this.zeroClickResponse);return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({app_version:APP_VERSION},s),a),r),d),o),c),{zeroClick:l})}init(){return __awaiter(this,void 0,void 0,(function*(){try{window.__parkour=this,yield this.main()}catch(e){console.error("app",e);const t=Failed.fromError(e);this.state=t,Render.message(t.message),Render.revealPage()}}))}}(new App).init(),exports.App=App}));