{
  "key": "bench",
  "slug": "voimapunnerrus",
  "name": "VOIMA Voimapunnerrus",
  "version": "1.0.3",
  "sections": [
    {
      "id": "pika",
      "title": "Pika-aloitus voimapunnerrukseen",
      "where": "Voimapunnerruksen oma työtila",
      "intro": "VOIMA Voimapunnerrus 1.0.3 järjestää henkilökohtaisen maksimi- tai toistokilpailun sekä kaksiosaisen tapahtuman kummassa tahansa järjestyksessä.",
      "steps": [
        "Asenna oikea tuote ja kirjaudu. Avaa Voimapunnerrus. Harjoitukseen ei tarvita Companionia, kameraa tai internetjulkaisua.",
        "Luo tapahtuma nimellä ja päivällä. Valitse ensimmäinen laji ja tarvittaessa Kaksiosainen tapahtuma. Poista harjoituksen LIVE-valinta.",
        "Lisää nostajat, punnitukset, ikäluokat, LOT ja telineet. Maksimissa tarvitaan avauspaino; toistoissa tankopaino lasketaan punnituksesta.",
        "Lukitse punnitukset ja aloita osa. Tarkista nostovuoro, käytä oikeaa kelloa ja kirjaa tuomarin vahvistama suoritus.",
        "Päätä ensimmäinen osa. Valitse toiseen jatkavat, tarkista siirtyvät tiedot ja aloita toinen osa erikseen. Vie kummankin osan tulokset ja ota varmuuskopio."
      ],
      "effect": "Luonti, punnitus, lukitus, nostot ja osanvaihto tallentavat tietoja. Julkisen näytön avaus on katselua.",
      "result": "Yksi tai kaksi osaa on samassa työtilassa; osilla on omat tulokset.",
      "next": "Lue maksimin ja toistojen erilaiset kellot sekä vahvistusvaiheet.",
      "image": "bench-create",
      "note": "Kussakin osassa on yksi nostoryhmä. Joukkuekilpailua, yhteispisteitä, kerroinpisteitä tai ennätysten automaattista hyväksymistä ei ole. Tämä ei ole tavallisen voimanostopenkin työnkulku.",
      "covers": [
        "Yhden lajin kilpailu",
        "Kaksiosainen tapahtuma",
        "Maksimi → toistot",
        "Toistot → maksimi"
      ],
      "verification": "Molemmat osajärjestykset ajettu synteettisellä aineistolla",
      "caption": "Tapahtuman luonti ja kaksiosaisuuden valinnat.",
      "phase": "Ennen kilpailua"
    },
    {
      "id": "asennus",
      "title": "Asenna ja kirjaudu",
      "where": "Windows • ensikäynnistys",
      "intro": "Käyttö on maksutonta. Ohjelmistolisenssin aktivointia, käyttöaikarajaa tai laiterajaa ei ole. Kirjautuminen suojaa kilpailun muokkausta; kilpailijan mahdollinen kilpailulisenssi on eri asia.",
      "steps": [
        "Lataa oikean tuotteen Setup tai portable-ZIP powerliftingstream.fi-sivustolta. Tarkista versionumero ja sivun SHA-256. Setup asentaa ohjelman; portable-paketti puretaan kokonaan omaan kansioon.",
        "Käynnistä VOIMA-Voimapunnerrus.exe. Pythonia tai Node.js:ää ei asenneta erikseen. Säilytä ohjelman mukana tuleva _internal-kansio. Älä sekoita kolmen tuotteen asennuskansioita.",
        "Ensikäynnistyksessä valitse Kopioi salasana ja Jatka kirjautumiseen. Käytä ikkunan omaa ylläpitotunnusta, liitä salasana ja vaihda se ohjelman pyytämässä vaiheessa. Säilytä uudet tunnukset järjestäjän hallinnassa.",
        "Luo tarvitut toimitsijatunnukset käyttöönoton ohjeella. Kirjaudu omaan tehtävään sopivalla tunnuksella. Tarkista palvelinyhteys ja ohjelman versio ennen harjoituskilpailua."
      ],
      "effect": "Asennus luo tuotteen oman tietokansion, paikallisen HTTPS-varmenteen ja ylläpitotunnuksen. Kirjautuminen ei luo kilpailua.",
      "result": "Tietokansio on %LOCALAPPDATA%\\VOIMA\\Voimapunnerrus. Tavalliset portit: HTTPS 5010, Companion relay 8797.",
      "next": "Tee harjoituskilpailu ennen oikean tapahtuman perustamista.",
      "image": "bench-login",
      "note": "Kuvien testipalvelimilla voi olla tavallisesta asennuksesta poikkeava portti. Käytä oman käynnistimen näyttämää osoitetta. Paketteja ei ole allekirjoitettu kaupallisella koodin allekirjoitusvarmenteella; tarkista alkuperä ennen asentamista.",
      "covers": [
        "Setup / portable",
        "Ensikäynnistys",
        "Kirjautuminen ja salasanan vaihto",
        "Toimitsijatunnusten käyttöönotto"
      ],
      "verification": "Julkaistu paketti ja eristetty käyttöönotto tarkistettu",
      "caption": "Voimapunnerruksen kirjautuminen; tyhjät kirjautumiskentät.",
      "phase": "Ennen kilpailua"
    },
    {
      "id": "tapahtuma",
      "title": "Luo tai valitse tapahtuma",
      "where": "Kilpailutyötila / valitse tai luo",
      "intro": "Ensimmäiseksi valittu laji määrää kaksiosaisen tapahtuman aloituksen. Molemmille osille syntyy oma kirjanpito saman tapahtuman sisään.",
      "steps": [
        "Avaa Kilpailutyötila / valitse tai luo. Syötä nimi, päivä ja järjestäjä. Valitse maksimi tai toistot ensimmäiseksi lajiksi.",
        "Valitse Kaksiosainen tapahtuma, jos molemmat lajit kuuluvat päivään. Tarkista näkyvät toimintarajaukset ja kuittaa niitä koskeva ilmoitus.",
        "Valitse LIVE tarkoituksen mukaan. Luo kilpailu ja tarkista tapahtuman nimi sekä osien järjestys. Vanhaa erillistä kilpailua ei yhdistetä automaattisesti uudeksi kaksiosaiseksi tapahtumaksi.",
        "Tallennetun kilpailun valinta vaihtaa ohjattavaa työtilan osaa. Käynnissä olevasta osasta ei voi vaihtaa pois ennen sen päättämistä. Odottavaan toiseen osaan siirrytään osanvaihdolla."
      ],
      "effect": "Luonti ja tallennetun kilpailun valinta muuttavat työtilaa. Lomakkeen täyttö ei vielä tallenna. Lataa tallennettu tila / hylkää muokkaukset palauttaa palvelimen tallennetun version ja poistaa avoimet lomakemuokkaukset.",
      "result": "Tapahtuma näkyy nimellään ja sen osat ovat oikeassa järjestyksessä.",
      "next": "Lisää ensimmäisen osan nostajat ja punnitukset.",
      "image": "bench-create",
      "note": "Pidä kahden eri kilpailun nimet erottuvina. Sivulla näkyvä työtilan tai kilpailun versio on tallennusrevisio, ei ohjelmiston julkaisuversio 1.0.3.",
      "covers": [
        "Kilpailun luonti",
        "Tallennetun valinta",
        "Kaksiosaisuus",
        "Muokkausten hylkääminen"
      ],
      "verification": "Lähde ja luvun kuvattu näkymä tarkistettu; kaikkia toimintohaaroja ei ajettu",
      "caption": "Tapahtuman luonti ja kaksiosaisuuden valinnat.",
      "phase": "Ennen kilpailua"
    },
    {
      "id": "punnitus",
      "title": "Nostajat, sarjat ja punnitus",
      "where": "Voimapunnerruksen Punnitus",
      "intro": "Tiedot kirjataan valitun osan omaan osallistujaluetteloon. Maksimin ja toistojen painoluokat voivat erota samalla henkilöllä.",
      "steps": [
        "Syötä nimi, sukupuoli, syntymävuosi, ikäluokka, mitattu kehonpaino ja yksilöllinen LOT. Täytä tarvittaessa seura ja paikkakunta.",
        "Maksimikilpailussa syötä avauspaino. Ohjelman maksimin kuormitus alkaa 25 kilogrammasta ja käyttää 2,5 kg:n portaita. Tarkista urheilijan ilmoitus.",
        "Toistokilpailussa ohjelma laskee tankopainon: miehille kehonpainosta, naisille kahdesta kolmasosasta; pyöristys ylöspäin 2,5 kg:n portaaseen, ohjelman alueella 25–150 kg.",
        "Tallenna punnitus ja tarkista rivi. Korjaa-kohdassa tiedon korjaukselle annetaan peruste ennen punnitusten lukitsemista. Varmista henkilöt ja LOT ennen Merkitse valmiiksi / lukitse punnitukset -toimintoa."
      ],
      "effect": "Tallenna punnitus ja Korjaa kirjoittavat tietoja. Lukitus estää tavalliset punnitus- ja henkilömuutokset. Pelkkä laskettu tankopaino ei vielä ole suoritustulos.",
      "result": "Aino 62,4 kg nostaa harjoituksen toisto-osassa 42,5 kg; Eero 81,2 kg nostaa 82,5 kg. Sarjat lasketaan osan mukaan.",
      "next": "Tarkista telineet, lukitse punnitukset ja aloita osa.",
      "image": "bench-weighin",
      "note": "Ikäluokat ovat ohjelmassa avoin, 17, 20 sekä 50+…90+. Valitse tapahtumaan kuuluva luokka ja varmista järjestäjän säännöt; oppaan numerot kuvaavat ohjelman toimintaa.",
      "covers": [
        "Punnitus",
        "Ikäluokat",
        "Painoluokat",
        "Toistokuorman laskenta",
        "LOT",
        "Henkilötiedon korjaus"
      ],
      "verification": "Punnitukset ja molempien osien kuormat tarkistettu",
      "caption": "Voimapunnerruksen omat punnitus- ja sarjatiedot.",
      "phase": "Ennen kilpailua"
    },
    {
      "id": "telineet",
      "title": "Telinekorkeudet ja niiden siirtyminen",
      "where": "Punnitus • Muuta telinekorkeuksia",
      "intro": "Penkkiteline, turvaraudat, korokkeet ja käsilleanto seuraavat nostajaa. Aiemmin muistettu oletus tarkistetaan aina nykyisestä telineestä.",
      "steps": [
        "Täytä tarvittavat telinekentät punnituksessa ja tallenna. Varmista käytetty numerointi lavamiehistöltä.",
        "Kilpailun aikana avaa nostajan riviltä Muuta telinekorkeuksia. Tarkista henkilö ja tallenna oikeat uudet arvot ennen hänen nostovuoroaan.",
        "Osanvaihdossa tarkista, että valittujen nostajien telineet siirtyivät. Toisen osan punnitusta voi vielä korjata ennen sen lukitusta.",
        "Telineiden oletukset voivat säilyä seuraaviin kilpailuihin, mutta aiemman kilpailun tallennetut tiedot eivät muutu uudesta oletuksesta."
      ],
      "effect": "Telineiden tallennus muuttaa valitun nostajan teknisiä asetuksia. Se ei muuta kuormaa tai vahvista suoritusta.",
      "result": "Harjoituksen Aino säilyttää penkkitelineen 8 ja turvaraudat 5 myös toisto-osassa.",
      "next": "Tarkista telineet vielä aktiivisen noston yhteydessä.",
      "image": "bench-max-attempt",
      "note": "Päättyneen osan tietoja ei muokata normaalilla telinepäivityksellä. Fyysisiä telineitä ei käytetty testissä.",
      "covers": [
        "Telinekorkeudet",
        "Telineiden muutos",
        "Osanvaihdon telineet",
        "Muistetut oletukset"
      ],
      "verification": "Lähde ja luvun kuvattu näkymä tarkistettu; kaikkia toimintohaaroja ei ajettu",
      "caption": "Maksimin nostovuoro ja tuomion vahvistukseen liittyvät valinnat.",
      "phase": "Ennen kilpailua"
    },
    {
      "id": "lukitus",
      "title": "Lukitse punnitukset ja aloita osa",
      "where": "Merkitse valmiiksi / lukitse punnitukset",
      "intro": "Valmistelu, valmis, käynnissä ja päättynyt ovat erillisiä osan vaiheita.",
      "steps": [
        "Vertaa osallistujaluetteloa punnituspöytäkirjaan. Tarkista nimi, luokka, LOT, kuorma ja telineet. Korjaa tiedot ennen lukitusta.",
        "Valitse Merkitse valmiiksi / lukitse punnitukset ja vahvista. Tämä ei vielä aloita nostokelloa.",
        "Aloita kilpailu/osa ja vahvista. Ohjelma muodostaa ensimmäisen nostovuoron. Tarkista lavalla oleva henkilö, yritys ja kuorma.",
        "Älä vaihda tapahtumaa kesken osan. Jos tiedot ovat muuttuneet toisessa työpisteessä, lataa tallennettu tila ja tarkista uusin versio ennen uutta tallennusta."
      ],
      "effect": "Lukitus ja aloitus muuttavat osan vaihetta. Aloitus muodostaa nostokutsun; kellon käynnistys tehdään erikseen.",
      "result": "Nostovuorossa-lohko näyttää oikean ensimmäisen nostajan.",
      "next": "Käytä maksimiosan tai toisto-osan omaa kellomenettelyä.",
      "image": "bench-max",
      "note": "Molempien osien lukitus ja aloitus tehdään erikseen. Toiseen osaan siirtäminen ei käynnistä sitä automaattisesti.",
      "covers": [
        "Punnituksen lukitus",
        "Osan aloitus",
        "Nostovuoro",
        "Vanhentunut työtilaversio"
      ],
      "verification": "Lähde ja luvun kuvattu näkymä tarkistettu; kaikkia toimintohaaroja ei ajettu",
      "caption": "Maksimivoimapunnerruksen aktiivinen harjoitusosa.",
      "phase": "Kilpailun aikana ja viiteohje"
    },
    {
      "id": "maksimi",
      "title": "Maksimivoimapunnerruksen yksi yritys",
      "where": "Nostovuorossa • Maksimivoimapunnerrus",
      "intro": "Maksimiosassa on kolme yritystä. Kellon 60 sekuntia koskee aloitusasentoon valmistautumista; aika ei anna automaattista tuomiota.",
      "steps": [
        "Varmista aktiivisen nostajan nimi, yritys ja kuorma. Lastaajat tarkistavat telineen sekä levyt.",
        "Käynnistä kello sovitusta merkistä. Pysäytä kello erikseen ennen tuloksen vahvistamista. Sama nostokutsu voi käynnistää pääkellon vain kerran.",
        "Kirjaa tuomarin nimi ja tuomio: Hyväksytty, Hylätty / koko suoritus hylätty tai Väliin / ei aloitettu. Hylkäys ja väliin jääminen tarvitsevat perusteen.",
        "Valitse Vahvista tuomarin tulos ja tarkista vahvistus. Varmista tulostaulu. Kutsu seuraava nostaja erikseen, kun edellinen kutsu on ratkaistu."
      ],
      "effect": "Kellon komennot tallentavat aikaleimat. Vahvista tuomarin tulos kirjaa tuloksen ja vapauttaa aktiivisen kutsun. Pelkkä valikkovalinta ei tallenna tuomiota.",
      "result": "Harjoituksen Aino nosti hyväksytysti 50, 52,5 ja 55 kg; paras maksimiosa on 55 kg.",
      "next": "Vastaanota seuraavan yrityksen painoilmoitus oikeaan kenttään.",
      "image": "bench-max-attempt",
      "note": "Aika loppuu mutta tuomio odottaa nimettyä tuomaria ja kirjausta. Älä käytä voimanoston kolmen tuomarin valoja tämän osan erillisen vahvistuksen korvikkeena.",
      "covers": [
        "Maksimin kello",
        "Kolme yritystä",
        "Tuomion vahvistus",
        "Hylkäys ja väliin jättäminen"
      ],
      "verification": "Maksimiosan kaikki kolme yritystä kahdelle henkilölle ajettu",
      "caption": "Maksimin nostovuoro ja tuomion vahvistukseen liittyvät valinnat.",
      "phase": "Kilpailun aikana ja viiteohje"
    },
    {
      "id": "painot",
      "title": "Painoilmoitukset ja keskeyttäminen",
      "where": "Kilpailijat ja painoilmoitukset",
      "intro": "Painoilmoitus kohdistuu tulevaan maksimiyritykseen. Jo kutsutun aktiivisen yrityksen painoa ei vaihdeta.",
      "steps": [
        "Valitse oikea nostaja ja yritys. Syötä kuorma ja Ilmoita paino. Ensimmäistä painoa saa tässä toteutuksessa vain laskea ennen ryhmän aloittamista.",
        "Hyväksytyn noston jälkeen seuraavan kuorman vähimmäiskorotus on 2,5 kg. Hylätyn jälkeen vähimmäiskuorma on edellinen kuorma. Ohjelma luo vastaavan oletuspainon seuraavalle yritykselle.",
        "Avoin ilmoitusikkuna sulkeutuu seuraavassa vahvistetussa tuomiossa. Kolmannen yrityksen suljetun ilmoituksen jälkeen on enintään kaksi muutosta. Tanko ei saa keventyä kesken kierroksen.",
        "Keskeytä-toiminto tarvitsee perusteen. Jos henkilö on juuri nostovuorossa, ratkaise aktiivinen yritys ensin. Tarkista keskeyttäneen tila ja jäljelle jäänyt jono."
      ],
      "effect": "Hyväksytty painoilmoitus muuttaa tulevaa kuormaa. Keskeyttäminen merkitsee osallistujan keskeyttäneeksi. Tulostaulun katselu ei muuta kuormaa.",
      "result": "Nostojono käyttää sallittua kuormaa ja keskeytys näkyy tulostilassa.",
      "next": "Tarkista seuraava nostokutsu ennen kellon käyttöä.",
      "image": "bench-max-attempt",
      "note": "Tässä versiossa ei ole yleistä vahvistetun tuomion perumispainiketta. Säilytä virheestä kirjaus ja varmuuskopio; älä keksi korjausta muuttamalla muuta kilpailua. Kaikkia virhe- ja rajatilanteita ei ajettu ohjekokeessa.",
      "covers": [
        "Painoilmoitus",
        "Kolmannen yrityksen muutokset",
        "Keskeyttäminen",
        "Vahvistetun tuomion rajaus"
      ],
      "verification": "Lähde ja luvun kuvattu näkymä tarkistettu; kaikkia toimintohaaroja ei ajettu",
      "caption": "Maksimin nostovuoro ja tuomion vahvistukseen liittyvät valinnat.",
      "phase": "Kilpailun aikana ja viiteohje"
    },
    {
      "id": "osanvaihto",
      "title": "Siirry toiseen osaan",
      "where": "Kaksiosainen tapahtuma → osanvaihto",
      "intro": "Osanvaihto kopioi valittujen henkilöiden osallistumistiedot uuteen osaan. Tulokset ja kellot pysyvät erillisinä.",
      "steps": [
        "Vahvista kaikki ensimmäisen osan yritykset. Kun aktiivista kutsua tai keskeneräistä jonoa ei ole, päätä osa.",
        "Valitse toiseen osaan osallistuvat nostajat. Punnitus ja LOT siirtyvät. Jos toinen osa on maksimi, syötä jokaisen valitun nostajan avauspaino.",
        "Valitse Tallenna osanvaihto ja valmistele toinen osa. Vahvista siirtymä ja tarkista uuden osan nimi, sarjat, tankopainot ja telineet.",
        "Lisää tarvittaessa vain toiseen osaan osallistuvat henkilöt. Tee vielä tarvittavat punnituskorjaukset, lukitse toisen osan punnitukset ja aloita se erikseen.",
        "Toinen osa päätetään vasta sen omien suoritusten jälkeen. Ensimmäinen osa jää luettavaksi; koko tapahtuma on päättynyt, kun molemmat osat ovat valmiit."
      ],
      "effect": "Osanvaihto tallentaa toisen osan osallistujat ja aktiivisen osan. Se ei kopioi tuomioita, suorituskelloja tai ensimmäisen osan laitevaltuuksia.",
      "result": "Sama tapahtuma sisältää kaksi erillistä tulosluetteloa ilman yhteispisteitä.",
      "next": "Lataa tapahtuman välitallennus ja tarkista toinen osa ennen käynnistystä.",
      "image": "bench-part-transition",
      "note": "Molemmat järjestykset testattiin: maksimi → toistot sekä toistot → maksimi. Osanvaihdon tallennus tarkistettiin palvelimelta; selaimen vahvistusohjauksen häiriön vuoksi osa testikäskyistä tehtiin kirjautuneen testirajapinnan kautta.",
      "covers": [
        "Osanvaihto",
        "Osallistujien valinta",
        "Avaajat toisena olevaan maksimiin",
        "Aiemman osan säilyminen"
      ],
      "verification": "Molemmat järjestykset ja tuomioiden kopioitumattomuus varmennettu",
      "caption": "Ensimmäisen osan jälkeen toiseen osaan jatkavien valinta.",
      "phase": "Kilpailun aikana ja viiteohje"
    },
    {
      "id": "toistot",
      "title": "Toistoluonnos ja lopullinen tulos",
      "where": "Nostovuorossa • Toistovoimapunnerrus",
      "intro": "Toisto-osan pääkello näyttää kulunutta aikaa. Se ei ole maksimiosan minuutin valmistautumiskello.",
      "steps": [
        "Varmista laskettu kuorma, nostaja ja sarja. Käynnistä pääkello sovitusta merkistä ja käytä ylätaukoa tarvittaessa erillisenä kellona.",
        "Kirjaa Lasketut toistot yhteensä ja Hylätyt toistot, kukin vain kerran. Esimerkissä yhteensä 17 ja hylättyjä 2 antaa 15 hyväksyttyä toistoa.",
        "Jos tuomari hylkää koko suorituksen, merkitse sitä koskeva valinta. Tallenna toistoluonnos. Tarkista tallennetun luonnoksen luvut; alustavassa tulostaulussa tulos vielä odottaa.",
        "Pysäytä pääkello. Kirjaa tuomarin nimi ja luonnoksen kanssa sopiva tuomio sekä tarvittava peruste. Vahvista tuomarin tulos.",
        "Tarkista hyväksytty toistomäärä tuloksista ja kutsu seuraava nostaja. Älä laske yhtä hylättyä toistoa kahteen kertaan eri virhesyiden vuoksi."
      ],
      "effect": "Tallenna toistoluonnos tallentaa tarkastettavat luvut mutta ei julkaise lopullista suoritustulosta. Vahvista tuomarin tulos tekee lopullisen kirjauksen.",
      "result": "Harjoituksen 17 − 2 = 15 näkyy hyväksyttyinä toistoina vasta vahvistuksen jälkeen.",
      "next": "Tarkista seuraava kutsu ja lopuksi osan valmistuminen.",
      "image": "bench-reps-draft",
      "note": "Ylätauon päättyminen, toistoluvun syöttö ja pääkellon pysäyttäminen eivät yksin vahvista tulosta. Tässä kokeessa kyse oli simuloidusta kirjaamisesta, ei fyysisestä suorituksesta.",
      "covers": [
        "Toistojen pääkello",
        "Toistoluonnos",
        "Hylätyt toistot",
        "Koko suorituksen hylkäys",
        "Toistotuloksen vahvistus"
      ],
      "verification": "Luonnoksen erillisyys ja 15 toiston tulos varmennettu",
      "caption": "Toistoluonnos: 17 kirjattua ja 2 hylättyä toistoa, 15 hyväksyttävää ennen lopullista vahvistusta.",
      "phase": "Kilpailun aikana ja viiteohje"
    },
    {
      "id": "ylatauko",
      "title": "Ylätaukokello ja sen korjaus",
      "where": "Toisto-osa • Ylätauko / 5 s",
      "intro": "Ylätauko on erillinen viiden sekunnin laskuri. Se ei korvaa tuomarin harkintaa eikä muuta pääkellon kulunutta aikaa.",
      "steps": [
        "Valmiina ylätauko näyttää 5. Aloita ylätauko käynnistää laskennan 5…1. Ajan päätyttyä näyttö on --.",
        "Kun nosto jatkuu ennen päättymistä, Nosto jatkuu / valmiiksi palauttaa kellon valmiiseen 5:een. Se ei jatka vanhaa jäljellä olevaa aikaa.",
        "Päättyneen ylätauon palautus ja Korjaa ylätaukokello tarvitsevat erillisen vahvistuksen ja perusteen. Tarkista palvelimen kuittaus ennen uutta komentoa.",
        "Yhteyskatkossa -- ei yksin todista ajan päättymistä. Tarkista yhteys ja aktiivinen nostovuoro. Tuomio sekä toistomäärä kirjataan edelleen operaattorin vahvistuslomakkeella."
      ],
      "effect": "Ylätaukokomennot muuttavat vain kyseisen aktiivisen nostokutsun ylätaukokelloa. Ne eivät kirjaa hylättyä toistoa tai koko suorituksen tuomiota.",
      "result": "Toimitsija ja valtuutettu tuomari näkevät saman palvelimen ylätaukotilan.",
      "next": "Vahvista suoritustulos toistoluonnoksen ja tuomarin päätöksen perusteella.",
      "image": "bench-top-pause",
      "note": "Käynnistys ja normaali palautus testattiin. Päättyneen kellon korjauksen kaikki poikkeushaarat ja fyysisen Companion-laitteen viiveet jäivät tämän kokeen ulkopuolelle.",
      "covers": [
        "Ylätauko 5 s",
        "Normaali palautus",
        "Ylätauon korjaus",
        "Yhteyskatkon kellonäyttö"
      ],
      "verification": "Lähde ja luvun kuvattu näkymä tarkistettu; kaikkia toimintohaaroja ei ajettu",
      "caption": "Toisto-osan erillinen ylätaukokello ja sen ohjaimet.",
      "phase": "Kilpailun aikana ja viiteohje"
    },
    {
      "id": "tuomari",
      "title": "Erillinen tuomarivaltuutus ja Companion",
      "where": "SVRY-tuomarin valtuutus • Laiteparitus",
      "intro": "Toistotuomarin yksityinen kutsu on eri asia kuin julkinen tapahtuma-QR tai tavallinen urheilijan Companion-liitos.",
      "steps": [
        "Admin tai sihteeri tarkistaa toistokilpailun ja aktiivisen nostovuoron. Luo yksityinen tuomarikutsu ja näytä QR vain nimetylle tuomarille.",
        "Tuomari avaa kutsun Companionissa. Tarkista oikea kilpailu ja laite. Kutsu on lyhytaikainen ja luontihetken nostokutsuun sidottu; valmis valtuutus toimii saman osakilpailun myöhemmissä kutsuissa.",
        "Valtuutus antaa vain ylätaukokellon ohjauksen. Se ei anna oikeutta pääkelloon, toistomääriin, tuomioihin tai voimanoston toimintoihin.",
        "Peru tarpeeton kutsu tai laitevaltuutus hallinnassa. Osanvaihdon jälkeen tarkista uuden osan valtuudet erikseen. Urheilijan ja huoltajan tavallinen liittyminen on oman julkaistun tuloksen katselua."
      ],
      "effect": "Yksityisen kutsun luonti ja hyväksyminen myöntävät rajatun laitevaltuuden. Julkinen QR tai urheilijan nimi ei myönnä sitä.",
      "result": "Tuomarin kellotehtävä ja sihteerin tuloskirjaus pysyvät erillisinä.",
      "next": "Harjoittele ylätauko ennen tapahtumaa ja käytä operaattorin kirjausta varamenettelynä.",
      "image": "bench-judge-access",
      "note": "Fyysistä Android-paritusta ei tehty. Yleinen /fallback/judge.html on voimanoston varanäkymä; sitä ei käytetä tämän voimapunnerrustyötilan tuomion tai toistoluvun kirjaamiseen.",
      "covers": [
        "SVRY-tuomarikutsu",
        "Rajattu ylätaukovaltuus",
        "Urheilijan katseluliitos",
        "Osakohtaiset laiteoikeudet"
      ],
      "verification": "Lähde ja luvun kuvattu näkymä tarkistettu; kaikkia toimintohaaroja ei ajettu",
      "caption": "Yksityisen SVRY-tuomarikutsun hallinta ilman julkaistavia kutsusalaisuuksia.",
      "phase": "Kilpailun aikana ja viiteohje"
    },
    {
      "id": "naytto",
      "title": "Julkinen kilpailunäyttö",
      "where": "Avaa julkinen näyttö",
      "intro": "Julkinen näyttö esittää nostovuoron, jonon ja tulokset. Se ei sisällä yksityisiä tuomarikutsuja, laitetunnuksia tai julkaisuavaimia.",
      "steps": [
        "Avaa julkinen näyttö omaan ikkunaan ja siirrä se yleisön ruudulle. Tarkista nimi, päivä, laji, kuorma ja kello.",
        "Seuraa aktiivista osaa pitää ruudun mukana osanvaihdossa. Osapainikkeella katsoja voi tarkastella aiempaa osaa muuttamatta kilpailun ohjausta.",
        "Maksimin ruutu näyttää yrityspainot ja parhaan kilotuloksen. Toistojen ruutu näyttää hyväksytyn toistomäärän sekä paikalliset kellot.",
        "Tarkista ruudun yhteys ennen kelloon luottamista. Internetin julkinen tulossivu päivittyy harvemmin eikä ole tuomarointikellon korvike."
      ],
      "effect": "Näytön osavalinta ja koko näytön tila ovat katselua. Ne eivät vaihda operaattorin aktiivista osaa.",
      "result": "Yleisö näkee oikean lajin tulokset ilman hallintatietoja.",
      "next": "Tarkista osanvaihdossa sekä operaattorin että yleisön ruutu.",
      "image": "bench-display-max",
      "note": "Kuvakaappaus on aidosta julkaistusta ohjelmasta. Siinä mahdollisesti näkyvä järjestölogo ei tarkoita ohjelmiston virallista asemaa tai sovittua yhteistyötä.",
      "covers": [
        "Julkinen näyttö",
        "Aiemman osan katselu",
        "Aktiivisen osan seuranta",
        "Paikalliset kellot"
      ],
      "verification": "Lähde ja luvun kuvattu näkymä tarkistettu; kaikkia toimintohaaroja ei ajettu",
      "caption": "Voimapunnerruksen julkinen maksiminäyttö.",
      "phase": "Kilpailun aikana ja viiteohje"
    },
    {
      "id": "tallennus",
      "title": "Välitallennus, CSV ja palautettava työtila",
      "where": "Lataa tapahtuman välitallennus (JSON)",
      "intro": "Hyväksytty toiminto tallentaa työtilan automaattisesti. Tapahtuman välitallennus ja koko palautettava työtila ovat eri tiedostoja.",
      "steps": [
        "Lataa tapahtuman välitallennus ennen osanvaihtoa ja kilpailun lopuksi. Tarkista, että JSON sisältää saman tapahtuman molemmat osat ja niiden vaiheet.",
        "Välitallennus sisältää vain valitun tapahtuman kilpailuosat. Se ei sisällä muiden tapahtumien tietoja, käyttäjätunnuksia tai paritussalaisuuksia. Sille ei ole tässä versiossa automaattista tuontipainiketta.",
        "Lataa tulokset CSV-tiedostona valitusta osasta. Jos tarvitset molemmat osat, valitse päättyneet osat vuorollaan ja lataa kumpikin. Tarkista ääkköset, sarjat ja tulosyksikkö.",
        "Koko palautettava kilpailutyötila on tuotteen tietokansion data/strength-bench/workspace.json. Sen mukana säilyvät osat, valinta ja muutosloki. Varmista koko tietokansio palvelinten ollessa suljettuina."
      ],
      "effect": "JSON- ja CSV-lataus tekevät tarkistuskopioita eivätkä muuta kilpailua. Varmuuskopion palautus on erillinen hallittu ylläpitotoimi.",
      "result": "Kummankin osan tiedot ja viimeinen tallennettu tila ovat tarkistettavissa.",
      "next": "Vie mahdollinen liittopaketti, tarkista verkkotulokset ja arkistoi koko tietokansio.",
      "image": "bench-part-transition",
      "note": "Ohjekokeessa tarkistettiin molemmat osat sisältävä JSON sekä palvelimen uudelleen lukema pysyvä tila. Koko tietokansion palautusta toiselle koneelle tai sähkökatkosta toipumista ei testattu.",
      "covers": [
        "Automaattinen tallennus",
        "Tapahtuman JSON",
        "CSV-vienti",
        "workspace.json",
        "Muutosloki"
      ],
      "verification": "Lähde ja luvun kuvattu näkymä tarkistettu; kaikkia toimintohaaroja ei ajettu",
      "caption": "Ensimmäisen osan jälkeen toiseen osaan jatkavien valinta.",
      "phase": "Kilpailun jälkeen"
    },
    {
      "id": "liittovienti",
      "title": "Liittovienti ja arkistoesikatselu",
      "where": "Liittovienti ja arkistoesikatselu",
      "intro": "Voimapunnerruksen tulosvienti on tarkistettava siirtopaketti. Se ei ole varmistettu LiftLog-tuonti eikä virallinen SVRY-siirtomuoto.",
      "steps": [
        "Valitse Lataa kilpailulista ja oikea MB- tai RB-kilpailu. Tarkasta vientitiedot. Tarkista nimi, päivä, laji, osallistujat, sarjat ja tulosyksikkö.",
        "Lue huomautukset ja kuittaa, että olet tarkistanut kilpailun. Lataa CSV, XLSX, HTML tai ZIP. Avaa ladatut tiedostot; vienti käyttää lataushetken tilaa.",
        "Varmista järjestäjältä vastaanottaja ja hyväksytty tiedostomuoto ennen toimitusta. Ohjelma ei lähetä pakettia liitolle automaattisesti.",
        "Arkistoesikatseluun voi valita enintään 2 MiB:n julkisen HTML- tai CSV/TSV-tiedoston. Valitse oikea laji ja tarkista esikatselu. JSON-esikatselun lataus ei tuo henkilöitä kilpailuun."
      ],
      "effect": "Esikatselu ja vienti ovat katselua ja tiedostokopioita. Arkistoesikatselu ei muuta kilpailijoita.",
      "result": "Valitun osan tulokset ovat tarkistettavana siirtopakettina.",
      "next": "Arkistoi tarkistetut tiedostot ja julkaise verkkoon vain haluttu tapahtuma.",
      "image": "bench-exports",
      "note": "Voimanoston Sorsa-vientiä, kolmen tuomarin korjauspaneelia tai palautuspisteitä ei pidä olettaa voimapunnerrustyötilan toiminnoiksi.",
      "covers": [
        "Liittovienti MB / RB",
        "CSV / XLSX / HTML / ZIP",
        "Arkistoesikatselu"
      ],
      "verification": "Lähde ja luvun kuvattu näkymä tarkistettu; kaikkia toimintohaaroja ei ajettu",
      "caption": "Voimapunnerruksen tarkistettava vientipaketti.",
      "phase": "Kilpailun jälkeen"
    },
    {
      "id": "lahiverkko",
      "title": "Yksi kone ja lisälaitteet",
      "where": "Palvelin • selain • lähiverkko",
      "intro": "Yhdellä tietokoneella voidaan valmistella ja kirjata kilpailu ilman Companionia tai videolähetystä. Lisänäytöt ja puhelimet käyttävät samaa kilpailupalvelinta.",
      "steps": [
        "Avaa käynnistimen ilmoittama HTTPS-osoite. Toisella koneella osoite on esimerkiksi https://KISAKONE:5010/. KISAKONE korvataan oman palvelimen oikealla nimellä; käytä tarvittaessa varmenteeseen kuuluvaa LAN-IP-osoitetta.",
        "Liitä laitteet luotettuun samaan lähiverkkoon. Tarkista, että nimi löytyy ja varmenne vastaa osoitetta. Selvitä varmennevirhe järjestäjän kanssa; älä poista HTTPS-tarkistusta käytöstä.",
        "Palvelimet kuuntelevat 0.0.0.0-osoitteessa. Selain ei yhdistä siihen. HTTPS ja relay (8797) ovat eri palveluja: Companionin relay-osoitteeksi kopioidaan parituksen ilmoittama osoite.",
        "Avaa toinen näyttö selaimen omaksi ikkunaksi, siirrä se oikealle fyysiselle ruudulle ja tarkista nimi, kuorma, kello ja yhteys. Testaa ääni käyttäjän painalluksella ja sovi kuittaaja.",
        "Jos yhteys katkeaa, tarkista ensin palvelin, WLAN, osoite ja yksi häiriintynyt selain. Pidä paperinen varakirjaus. Palvelimen pysähtymistä ei korjata vaihtamalla näyttönäkymää."
      ],
      "effect": "Näytön avaaminen ja ikkunan siirto ovat katselua. Sallitut kellon, kuorman tai tuomion painikkeet muuttavat yhteistä kilpailutilaa.",
      "result": "Kaikki työpisteet näkevät saman kilpailun. Tavallinen localhost osoittaa kunkin laitteen itseensä.",
      "next": "Sovi työjako: yksi nimetty käyttäjä käynnistää nostokellon ja sihteeri varmistaa kirjaukset.",
      "image": "bench-display-max",
      "note": "Kokeessa kuunteluosoitteet ja TLS-yhteys saman tietokoneen LAN-liitännän kautta tarkistettiin. Erillistä fyysistä puhelinta, lisänäyttöä, WLAN-tukiasemaa tai äänilaitetta ei hyväksyntätestattu.",
      "covers": [
        "Yhden tietokoneen käyttö",
        "Lisänäytöt",
        "HTTPS ja LAN",
        "Relay",
        "Äänet ja yhteyskatko"
      ],
      "verification": "Lähde ja luvun kuvattu näkymä tarkistettu; kaikkia toimintohaaroja ei ajettu",
      "caption": "Voimapunnerruksen julkinen maksiminäyttö.",
      "phase": "Kilpailun aikana ja viiteohje"
    },
    {
      "id": "live",
      "title": "Julkaise tulokset internetiin",
      "where": "Julkaise tulokset internetiin • LIVE-julkaisuyhteys",
      "intro": "Uuden kilpailun Käytä LIVE-tulospalvelua -valinta on näissä versioissa oletuksena päällä. Varsinainen lähettäminen tarvitsee järjestäjän julkaisuyhteyden. Harjoituskilpailussa poista LIVE-valinta jo luotaessa.",
      "steps": [
        "Sivuston valtuutettu järjestelmäylläpitäjä muodostaa järjestäjän asennukselle yhteyden sivulla powerliftingstream.fi/admin/live.php toiminnolla Yhdistä järjestäjän VOIMA-asennus. Sivuston oikeus on erillinen paikallisesta admin-tunnuksesta.",
        "Avaa paikallisen ohjelman Julkaise tulokset internetiin ja LIVE-julkaisuyhteys. Käytä Yhdistä LIVE-tulospalveluun -toimintoa saamallasi yhteydellä. Älä näytä yhdistämistunnuksia yleisölle.",
        "Tarkista kilpailun nimi, päivä, julkaisulupa ja julkiseen aineistoon tulevat henkilöt. Esikatsele lähetettävät tiedot ennen julkaisua. Videon HTTPS-linkki on vapaaehtoinen eikä käynnistä videolähetystä.",
        "Varmista viimeinen onnistunut lähetys ja avaa ohjelman palauttama julkinen osoite. Osoite muodostuu vuodesta, kuukaudesta, päivästä ja kilpailun nimestä. Samannimisen tapahtuman varattu osoite voi saada lisätunnuksen.",
        "Julkaisun keskeytys: poista kilpailun LIVE-valinta ja varmista tallennus. Jo alkanut lähetys voi valmistua. Aiemmin julkaistut tulokset jäävät verkkoon; niiden poistosta huolehtii sivuston ylläpitäjä."
      ],
      "effect": "Esikatselu on katselua. Yhteyden tallennus ja LIVE-valinta muuttavat julkaisua. Nimi ja päivä voivat muodostaa uuden julkaisukohteen.",
      "result": "Muuttunut aineisto lähetetään enintään kerran 10 sekunnissa; yleisön verkkosivu tarkistaa päivityksiä aikaisintaan 30 sekunnin välein. Verkkokatko ei pysäytä paikallista kirjaamista.",
      "next": "Tarkista lopulliset tulokset sekä paikallisesti että julkiselta sivulta ja jaa vain todellinen tulososoite.",
      "image": "main-live",
      "note": "Kaksiosainen voimapunnerrus käyttää yhtä tapahtumasivua, jossa kummallakin osalla on omat tulokset. Vanhaa kilpailua ilman LIVE-valintaa ei julkaista automaattisesti. Ohjekuvien harjoituksia ei yhdistetty julkaisupalveluun.",
      "covers": [
        "LIVE-oletus",
        "Asennuksen julkaisuyhteys",
        "Esikatselu",
        "Verkkokatko ja uudelleenyritys",
        "Julkaisun keskeyttäminen",
        "Vanhojen kilpailujen toiminta"
      ],
      "verification": "Käyttöliittymä ja julkaisulähde tarkistettu; harjoitustietoja ei lähetetty verkkoon",
      "caption": "Tulospalvelu 1.0.29:n yhteinen LIVE-lomake. Avainkentät ovat tyhjiä eikä harjoitusta julkaista.",
      "phase": "Kilpailun aikana ja viiteohje"
    },
    {
      "id": "live-avain",
      "title": "Vanha kilpailuavain ja julkaisun lopullisuus",
      "where": "Julkaise tulokset internetiin • Kilpailukohtainen julkaisuavain",
      "intro": "Aiemmin muodostettu kilpailukohtainen julkaisuavain on edelleen vaihtoehto asennuksen julkaisuyhteydelle. Paikallisen kilpailun päättyminen, paikallinen julkaisutila ja verkkosivun päivitysten päättäminen ovat erillisiä toimintoja.",
      "steps": [
        "Valitse Julkaistava kilpailu. Tarkista, että vanhan avaimen kilpailun nimi ja päivä vastaavat valittua kilpailua. Syötä avain vain järjestäjän yksityisessä näkymässä.",
        "Esikatsele lähetettävät tiedot. Tarkista julkaistavat nimet, sarjat ja tulokset sekä mahdollinen videon HTTPS-linkki. Kuittaa julkaisulupa ja valitse Automaattinen verkkojulkaisu tarkoituksen mukaan.",
        "Tallenna verkkojulkaisu ja tarkista viimeinen onnistunut lähetys sekä todellinen julkinen sivu. Älä tallenna julkaisuavainta julkiseen ohjeeseen, kuvaan tai tulostiedostoon.",
        "Kun tulokset on tarkistettu, Merkitse verkkotulokset lopullisiksi lopettaa katsojan automaattipäivityksen. Myöhempi korjaus voidaan katsoa sivun Päivitä-painikkeella. Tämä valinta ei itsessään päätä paikallista kilpailua.",
        "Poista paikallinen julkaisuavain poistaa paikallisen yhteystiedon. Se ei tarkoita jo julkaistun verkkosivun poistamista. Tallenna ja varmista haluttu lähetystila erikseen."
      ],
      "effect": "Esikatselu on katselua. Tallennus muuttaa lähetysasetuksia, ja lopullisuusvalinta muuttaa yleisösivun päivityskäytäntöä.",
      "result": "Vanha avain toimii vain sille tarkoitetussa kilpailussa ja julkaisu on tarkistettu oikealta sivulta.",
      "next": "Varmista lopputulokset, arkistoi tiedostot ja sulje paikallinen palvelin erikseen.",
      "image": "main-live",
      "note": "Kuvan avainkentät ovat tyhjiä. Julkiseen palveluun lähettämistä ei tehty synteettisellä aineistolla.",
      "covers": [
        "Kilpailukohtainen julkaisuavain",
        "Videolinkki",
        "Julkaisulupa",
        "Verkkotulosten lopullisuus",
        "Paikallisen avaimen poisto"
      ],
      "verification": "Lomake ja lähde tarkistettu; ulkoista julkaisua ei tehty",
      "caption": "Tulospalvelu 1.0.29:n yhteinen LIVE-lomake. Avainkentät ovat tyhjiä eikä harjoitusta julkaista.",
      "phase": "Kilpailun aikana ja viiteohje"
    },
    {
      "id": "varmistus",
      "title": "Varmuuskopio ja hallittu lopetus",
      "where": "Asetukset • tiedostot • häiriötilanne",
      "intro": "Tallennus on palvelimella. Selainikkunan sulkeminen ei sammuta palvelinta eikä korvaa kilpailutietojen varmuuskopiota.",
      "steps": [
        "Tarkista viimeinen hyväksytty nosto, keskeneräiset ilmoitukset ja lopputulokset. Lataa tarvittavat tulostiedostot ja avaa ne ennen kilpailupaikalta poistumista.",
        "Lataa tapahtuman välitallennus (JSON) ja kummankin osan CSV. Tässä voimapunnerrustyötilassa ei ole tavallisen voimanoston Palautuspisteet-työkalua. Koko palautettava työtila on data/strength-bench/workspace.json.",
        "Asetusten Sammuta palvelin... tallentaa tilan ja sulkee VOIMA-palvelut hallitusti. Lue vahvistus, täytä pyydetty teksti ja vahvista vasta sovittuna ajankohtana. Yhteyden päättyminen on tämän jälkeen odotettua.",
        "Kun palvelimet ovat suljettuina, kopioi koko %LOCALAPPDATA%\\VOIMA\\Voimapunnerrus-tietokansio järjestäjän varmistuspaikkaan. Säilytä myös ohjelmaversio. Tietokansiossa on yksityisiä tunnuksia: se ei kuulu julkiseen tulospakettiin.",
        "Seuraavassa käynnistyksessä tarkista oikea kilpailutiedosto ja viimeinen tallentunut tilanne. Häiriöstä palautuessa vertaa paperikirjaukseen ennen jatkamista. Epäselvän tallennusvastauksen jälkeen lue tila ennen uutta yritystä."
      ],
      "effect": "Vienti tekee erillisen tiedoston. Palvelimen sammutus päättää yhteydet. Palautus voi korvata aktiivisen tilan, joten vertaile ensin ja säilytä nykyinen kopio.",
      "result": "Kilpailu on arkistoitu ja sitä voidaan jatkaa tai tarkastaa oikealla ohjelmaversiolla. Sovelluksen poistaminen ei itsessään poista tietokansiota.",
      "next": "Kirjaa käytetty versio ja varmuuskopion sijainti järjestäjän tapahtumamuistioon.",
      "image": "bench-part-transition",
      "note": "Palvelimen hallittua sammutusta, sähkökatkoa, tulostinta ja koko tietokansion palautusta toiselle koneelle ei tehty tässä ohjekokeessa.",
      "covers": [
        "Tietokansion varmuuskopio",
        "Sammuta palvelin",
        "Jatkaminen",
        "Tiedostojen säilyminen"
      ],
      "verification": "Lähde ja luvun kuvattu näkymä tarkistettu; kaikkia toimintohaaroja ei ajettu",
      "caption": "Ensimmäisen osan jälkeen toiseen osaan jatkavien valinta.",
      "phase": "Kilpailun jälkeen"
    }
  ],
  "accent": "#8A4A1F",
  "cover": "bench-display-max",
  "training": [
    "pika",
    "asennus",
    "tapahtuma",
    "punnitus",
    "lukitus",
    "maksimi",
    "painot",
    "osanvaihto",
    "toistot",
    "ylatauko",
    "tuomari",
    "tallennus",
    "liittovienti",
    "live",
    "varmistus"
  ],
  "date": "13.9.2026",
  "edition": "1",
  "disclaimer": "VOIMA on riippumaton ohjelmistokokonaisuus, ei IPF:n, SVNL:n tai SVRY:n virallinen ohjelmisto. Viittaukset eri järjestöihin eivät tarkoita sovittua yhteistyötä.",
  "limits": [
    "Kuvat ovat aitoja selainkuvia synteettisistä harjoituskilpailuista. Nimet, päivät ja yksiköt ovat esimerkkejä.",
    "Tulospalvelu ja Voimapunnerrus käynnistettiin julkaistuista Windows-paketeista erilliseen tietokansioon. Poliisivoimailun käyttökoe tehtiin saman julkaisun lähteestä erillisillä porteilla, koska tavalliset portit olivat koneella käytössä.",
    "Kuunteluosoite 0.0.0.0 ja TLS-yhteys palvelinkoneen LAN-liitännän kautta varmennettiin. Tämä ei ole erillisten fyysisten laitteiden tai koko tapahtuman hyväksyntätesti.",
    "Companion-puhelin, QR/viivakoodinlukija, erilliset tuomari- ja näyttölaitteet, kamerat, OBS, ääni, tulostin ja Microsoft Excelin Sorsa-vienti jäivät käytännön testin ulkopuolelle.",
    "Harjoituksia ei julkaistu LIVE-palveluun. Ulkoisia lisenssi-, ennätys-, video- ja arkistopalveluita, sähkökatkoa tai koko tietokansion palautusta toiselle koneelle ei hyväksyntätestattu.",
    "Voimapunnerruksen molemmat osajärjestykset suoritettiin loppuun. Tulospalvelussa ja poliisivoimailussa tarkistettiin esimerkkisuoritukset ja tulokset; kaikkien kilpailukierrosten ja poikkeustilanteiden loppuketjua ei ajettu."
  ],
  "source_provenance": "Julkaisu 13.9.2026: vastaavan tuotteen app-lähde ja julkaistut Windows-paketit; kuvien palvelintila ja tallennetut tarkistusvastaukset erillisessä dokumentointiaineistossa.",
  "url": "https://powerliftingstream.fi/ohjeet/voimapunnerrus/1.0.3/"
}